From f9136e0889d702558c0beca9f53c2eeed867fffe Mon Sep 17 00:00:00 2001 From: woodser Date: Fri, 1 Sep 2023 17:27:00 -0400 Subject: [PATCH] update dist --- dist/monero_wallet_full.wasm | Bin 5947842 -> 5947252 bytes dist/monero_wallet_keys.wasm | Bin 1168203 -> 1168396 bytes dist/monero_web_worker.js | 2 +- dist/monero_web_worker.js.map | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/monero_wallet_full.wasm b/dist/monero_wallet_full.wasm index ec6d9f01f533e41b40091f6fe7030ab300e51e23..2a5db786ab809bbc9f7ab0f73de7a77056aa9a67 100755 GIT binary patch delta 744184 zcma%j30zah_W#UeArO|JvLvYCMzDgYU9o%sFQkz-^c!@AD5NIIOh!6Kn_EwMx5s?^JB}62}AP|c%Cfq=8b!RCe&LIUG;v8ARn%aPYf_|I-kFCg+5(jz}#jZRlgu$mPueN5;}TdhhBp~ zZ7G(*FpwA#F=Aw3DX9cu8Rn$&a4#f=ZV2IG}fbrW$v z`2I5l1t4(`P?l0*aAJbRQY=B-W8X1ED&jKyLgiFf5t7m2aSQ$a*_B{#FrpL_8I0&- zFa}so49rp~5_5h1RUudg!xc+KVzC&B=}_S%!eZ`k{=wXj{!1glkT?*m79x}VjjAH1 zL!rt;0~O3O5`o<~Z9s^Miojra7!LG;U|h5eR1x=WKnRAp52)o_3Z@^-5uFn%2c`$c zKzk;@2TkBZh#&UBNDF2HMv<6Xr0DS%>?iAju~bH+Vu_T_Ea*Tmco=w&7>S|*LZ5?m zh0Y0lQ&;&rz(^#6il7vhfjlVF{*eSrM1EqB0v@Fa)Ik3MoF(uJ(1$Ay{1~+2UIdO0 z2SzD%1ej9^*jf|-<^uun0>=R#U^bXiAMj6be~kU0Cc-`v5w#A0*bDRmOzHz-h!f)vL5EaK zV^<`SOTe~JmqYhbm~9aPgTqWBu>^)mF|jBBcsxGtvHK_1t`$AlNP;Vc~ zOhHiYo1j4|@DMQ#DVeuCNGhR8157KSQO4B-MRHeyKH{Q+XZRu#jJ#;1z*KX!!Sf-P zabJhT(??NA9n3lAehvLWc-{(idqeoqkcV{960YWWWe;wn(%&r>`-@>te7(TAL?T}? zk;!4+U`jEP`anGRh}A?!YuFbdIkbmxqPYT;g^6k#jU*8j1vagG(hOhG3ox?&0VOlN<8 z8l%8QKh)F^D>QS1c|;J9_*)nN+(xXRr z?k`~@x=w<{cMA)Jc%UyFKusf}oq=)T#g+HyET;uvrvb{n(>(}_xc=SyFu+44fjmfEBFY2( z(U!ChCBkKO?;9XA1rlYY?!2Y@0B;xph9v`G?s@ki7P_)N+*heR&;Pe zz;xiHo&#x~t}r6R%~UV(0dJuT2AG>m4DTKa!>64IaYhT^hr)w%hyRH?9=?S85A$Q7 zm&niW7g%?wLsHMjoLDm$9Ekfwvxi15)1xc*Q4ep<)T6hK3WLyT_cAaetbSm9Va;dh;CPL@}M)y{9FrWa? zXoiaS!d~=+xv9$ToV91~UNBcteCp!a#FB=qL>Ir`8n7`-O+g<#GZl zd3)2eD}hBEI)<;15SS+^){6ro-wp-WjFb{DVLJnZ7fb|Fi7$8UEk75`1IU7}w&j#= zMB52;?;&hfV2MS@2u7soL`LHe`TM}K2fG&}_JQ#52X}{8+c!d-y;oQ6%U<#bST==M zU|=_eLaLC-#Ik6ysEfBuCY8%&GJn~hq%tnQms*W|z?102f~k=|Mh3_|;9eeqM|!<4 zr%pwu0=~JBs0J7)?2aH2^bX>>_4DR#Mfq?aMJu@Kn5eF>*`@u`vC;x%1sC&%K_VAd z9;4y@($|NZ5#3u2bdTDCX{c|39qE@u3|S|p7xyw+8bc|e@Cl{`KlFz za98?_q=xD**paFy_>S-;6ltmb^SaPh;sW1Rc57pO)vjGYdwZ_F@6t|maRZY>UImzj z5#h%5OA-h4R1xk-zrkGO+a*I0EatQ^UGV67L^7aFL^lPIdwa*)NuZ*0XaBCsSRemP z+@-Tj>hB|$C`I6LvOn}9N!BdlsZa!Z(@f(Xi0QYt+}ycexIDbG1j60i zStgX_avuTn7Fe*i%v<8ECElNTtAQ+oZ<#mj)a6pH-@DzFu#V%AX!igKY{N51Mh1~~ zlejV4u#ii8H`2X1g8VWRWn=OyWM1;Gp{O>AutU+oc%mDM_QVtYP_#Rq7>1%<@x(Y3 z?T9C)p{ORFn1`Y~Z(Ng# z6cxvl&xWGq@#OQNXkk2w5QKh_f(qlw&=gb?L{d`Fym*qDf(qivuoRRZPll%;KAxnd zpc(NbJq6{(lP^=yw0JTi1x<}7U!|bjc;fy?3Yr{G{+WVu;>p)3XhJ;sCIyX)CnHnP z*m&}73K|nnzDq%);>q_Q!khe%g0kYtk0~f4p8S-8p2v}&Q_zz*@=FSO6i0qdK@Z}{ zzXXNY6m&0+=u*(#IHFHMcjAa41>KG##uRijj+j!=^*Ca7r=Tlw#FBz8#*xGnbRmxX zAqAa}BS|UfTpY2cphL05mV)YHi9H4Fi6zM?XlE=LoPxH;l8;l+wpijwLF2uNGX+)0 z5?2b^97~3zpsHB%i9r7}1#OHae@sE^V#%Kb%4aEPbu9Tj1(n5;h!i(k8B4xMMa8jX zXeug-B`K+BSu9CSMN4DJuvD}pmJClt3u8%IDq0Xr(o<1kEcr4O&5I=?Qqinf@>MGB z{vW9*KbHJ670vZ0U#B8ImVA?nrpA(ysVFy=e4C1<#FFn)(d1b2eJYw1OMXa2IkDu& zROFr*OMXg46Jp8FsVF;^`~u=)$*-wsTrBxlDjFM0*iATIgli$ zq8kIr;8b+oGLU?nimnbMj#PAUAaSOm3j>KO6`dbQhNPm_f#j1^bZ#K|6fB`7e+0Ee zF7ejSdU z$B=&wN6%siI~+ZYA-dt{Nes~sM~`EOVK{meLyW@_$T1B^4`YaVIC>C6EW^?L7?L;~ z-HRcA7>+Jg+i-L%hS-Oro7}U3g9e_7A%7ZsY6IXAJov4b{YuAJfpN81hpZ z%8VgDr=h34$uDW>MsMe~%`~X=rgY z8JvdZN0X1!&@wG?q@jtC#F>V8Eperx8Co(V4c&2&PtwqB2l+G&J#vsgrlE%p@+S}% zMLtVIE2GHgY3P=NM5Li{q2!BnbkjkGrlT8NVO)s&fPLkbk73D-QC{bhO_=zD`H=4)RSp+UFo6(@~v+e4CDH9pt-owAVqtPe+#> zXorKa>8Qr-Ai8w4-9hx} zXq$r=($Q82F{Yzx2Qj6iEe>K%M;9E#l8(+hNMbtL>>z(gN1GfZDIINe5NkTx;2^ei zwBAAN>8RB~lGD*S2N|4>&N|4)>8Qm)9OmzeE*an=jEqu+5if0odkCG#_m9B`S1y=YE9|i{-lp z6j(QQxgx31){LAxt?bnqG90y}4)VjpXNVS8em5eF?B;|euBpz)j$I#a|B!QR`f$UCv@{B@`nbBsg1`lX4<#Q+KIMNW=yuSJ zpzA?nowG&x;@P4Cye)Za@($@%Yqhmdy}`Q1`Y?8dwb;5sT|KaR;57B4r29z|yWdT^ zlXNTTW|Dhu_ZvwI2V6_KnsgSXG3iRT3rXjb&Ly2qy56lNsj>g5q^6|fNe7b- zB<)LD;#lmcC3};$_1GsGhqG|afN^0LKZ^B#*!6Vcsl>f;S$Kwym(0hK!?G3P>ALyi zgR-JtXZyE^W|4#9@puPbjB^5-lg8@y^dGHj!S1bimv^yOBfcQML2i&-**^IR`N^)E z!nTo<@`WM$rKja}WE;Dcof)#6oW(hBwfG#79K~n7Z$oV*o+4U_&*I#GDWV%a&m=WU zujA86XME52o=iHCl;zsnf01LJW3FQkXiVR;;W^7O(^25ackqrGj_HoPin|~DjNJzZ z&lb%Vo$-AZ^epIsBG)$6Hd|EVyTH1}>t6RYUbzF;cuj&&HhlhDeLnCN!e<_QYWj^z zta4-}W+Y}NzO>x8+_7A?v{>r;9tlaIp%TZQRWw>C#DCcOQv(CGp2IK)n28J!=@FE z5>v71X0IYsiDQ{*p=q9pGp#lj8?&UbPp38A4o2ETSlaM8eK|7L&c zl3Y`QPBedTA;)N^yALN*N1O9OV{$|C{^a`PeaUsnwaI%0YPM*1^0`6h2JK9qB-xQ% zlRQzpss|PDEWRM2AYn;FF)qftoyGWgaCwgcygj)9^SC;BOY&ympCoAw+LT7Zs_GABrxmh7IIoC}00$&&@bq~x6BiOJ7`w)r0jY7DyP*yf)# zD02`kPe{&Aei{EFo~m(N^elb_SwRYMzPO$DKJY$?e;iMF$0v^ycqwNa-}U&h$zzgN zkgd`y@uQPRC2y5piqA^UOy262UX0I3erew-ZH|9oe-6)6@z3l{@mr-Q;-A`|*pCSv zKDIxy*OCJK(Eh-F-<~fn)vnOq*4(q-wI9ca;%{m0*l%iX+YiPU;}U!zz7SI-FKccA zdQo#pbJKo7bHlzzK+9pu3h;T&b->PPS~c!#_OqI+_T8_*LI9gJR{%V%IitC3Kc%^3 z-v!u4|8h*RlbVZw6_FE~3-;rh^Y$Gb+8xuh0(L}mRCCULSaa51(*ZlEX%X5T&@|f{ zHD~O3-c(hP=?0+v*!(=Yc#t7tI(|0?6R-Y?6j}#AhS%f1F%xf zN==P@g=V{b&1=k!OElZ4P))IBt9`kq+Fk)*ySbNXwg??A)oive(QLA>dfgB&)>H}D zBF#qoLd^zyc?WEPX1##T*Q~P_YAWqz9k6+twE{L*v&KG0<6doF*#VrbsQ_@MW|n4^ zy+BiLFYPe;d`%f(Gc>$rrG2`l)V`uayFASbz_NWfO^JP)rr2K60h_8R5<1M)EVob5 zEVCDPz$UvjO99N$Owuf|Pt+{7FYf?mYZd}_K{{Tuz&=hh-@dQ|Hbzq@2pz4NXCI}R z`^HpcY32Zy?USjQZO_omvKMw}_mY_@w0pti+n+PM-CYy($`fIJpD{B4e8N0srrRGg zdG>ii!`X7``Hz@sfIVOyGE?pMnOu882cdVE$%4?^%q06QCdZ!N0lUFW6tL^e1p756 z+s=2ut}^4@0A6OUFyri(m@)Pl9l#6BXu#I_pJztdTbV3-UI*+PlL=T0bC$`lH#0A7 z(>h?Mnddgz?iBOP*2FxuP3?f4WF7-{oH@ZfvK?a{+H&LFuSb8Bc>v&H<_L4&c8IxW zo7|z{0p>1X4NN0*$F`rjZOiF^)ibvMt7G;tH*K}d4cmkc*dFFOU>BsjnQOLP%vIaC z4%klSitV@?*DyPn%eL*zCEHj5Y%}*(<{~sKBGt?V+ZN`$ZA^!To0)TfjgH^MoV8Uk zEw)h|oOA_yxP=Af;FIbeGp_u6X3Oaov~EoOEDR^%p&m|eDo%ud^b4&VZ&hJs{1v)xw6Y_oNA(s|5Q z!0yM*WvXp+n9a6(9oo%iHUT!1nZ;Du3Yd+yyP$si0P~skf=r%SXPd!P+U^ML+--S% zI%)z*rqY7ZMQoJoyt@Ib}KHIDYs2w%4|0~2%XHV1nfrKB&O7s!>q7f@6c`{ zQv%r4xCueYX|_6F`d%A1NwPL>ify0ojqu5~ zgTa$*1vtmHI&PwEg6&v*wr#wv%zs@_Wzaa=+MqQ-wB?xaF}6do)Jy1cd`MWtGs8#Q z>I52HgfD6e@Jsb5w{6cWQX#Cz1^Br-%eE6JZ7aZOpgdJ)+O~Umibw%|qRy~w^H7ce z&tvsV>-hF175oO$mHL^r+QU;1JP*}Rt(!fRy+C=Oeqwc3c}N$e1^B-D@$UrPRX?(B z^zdwfX1CQ3t?Odj9cv>{ZmJ*ruGJ0oed}sZs|w(`uD)k2^H55Ga!q~Ly3!4#wy_og z>8kpUwb;W%$8kk{+gkJn<&yfAb=ez~i|U)!rEgF!sBc)8cvPGTlFzHJTNiqGW&ovC zea*Tc)|3CTeG2ed^;K)3hlzIIqP}9C=b_|4vu5=r>nsn2+U&IY;_pU(N`1ka@8O}6 zo7Cs6bN$=1294yi(&o8)a#!x1^9&eoOP)SD&@!dMLEnQFV)T${Um; z>SpU?59KnnI;=ipo#dgc^Dn@M)TgaE9!d-F98{mOP6W!U{70D%sGF=4JWR)dsZo8> zn(d(+2FiZ*3F~+dr2#1Q>f_dN9!ech_Nk9q$9gE#LUrn+)-eKw4z&h&YSl-qqbbEr zH-Uo3?o}VQW_jjpbbJBctv=MjuS4M8 zl-25;){6p#YJC+btJFKJ7X%75<0YV!t81+1J+1co7T_}Vc5CY!l$Gjj)^i>?t+XT;tuzPj8n{k)f`-<$0>h4htF0AQ=-OKTs$OPYX{{MpYAvyD zl^!HT)+LcG@6WN$2A=k_&UEX6_Yb`P!l%@CnstA7db(Uerdo5YQ$WIG>m+LqJSV~@ z!#fLSx#8Aglr@tUaTfeM=CY`qK*>J~AMjd)Gp!3m+q#d1pU`aWo`owFo5bV1GOSgi zd3YjunKX_pd%v+u79QiZK=dLh)BkzWv!pCI`(%lzw59K7;jsZnyIl0z(w*y6D$DSD znpD;OiBCh9CGRhO|DrJqZ%NvmgD6J)XM0KG4M#Z6| zMY44P(`Bu2jdP*@ZTLRlKMOZP`-Y@RiX}KtTtQ|?$4Xzi$z)k8o<%ObN5$rc&LaDh zo{~x8XXH}1CJCk0L!(Mjxwzab3qOK-7N(t)ie`q)5oh5uUK4SNEDM))%fe5RE_h{& zU&u~NE69DnyiU2&DY9{Xqu$>oex%qVItnePkfV5J$b#;h!D{opR(6}$J*A1<8<2$; ziI@1+CEf9B>byH?S5i~A6<*uCsTp@d=l2J!=(Zy%qst86EPT^13*Yu`@v9(DWE1fm zaSh7{=}a3%f7t-tgW%-<#dGC2dWru6R6n3U=R5tnr;K%JF>y zmpOaJRdMIu^=%&aYo|w#Jt1_iCpJm3!MH)f3m#@2S;+xc3zi;0sY3&SrYo=+@<;G3*%O`N1XmzbkHo7j@r)J-Ur0b6Pdxdm`xCFaKc0B(73JtF%8|swi8lg{bv@ekNY}$%r>UQa>ATl~ z#KtyFI#V_FC)RhU?MvL!wJxzXac|<{&RnUpSNAoEv)^8wSOFTYN-R$-ODs)X(LpA6 z&l%yKnFu#IiPI8yK!Tl`m@7P|Bu;|oF4>Z< zx4^<}xoW9(1LGCTCCf!1T(F!M7+NjoEN7wKY&j#;Pg_n|nxKBtazdydw;Zz^h58Z8 zVWED=a?sK!bg|!350o9!eU>^)tw7mh*)8zwvh1|%uvGW0vC!#%on_oqvu&2G0#mhR zi)FKAOW#c(ygdy;a<*)M(QWFxz5}(YZ)JxXe`04iE5hDW5zxnd3V~LD7l%y- zbYa+{ut}B$VL6rup0*1CogX#<&>~V8mTj3AHr{gIgVM!pZrC_LXNS#khmEn!3L9;? z=YeNKNQ@v0=9X9UV3%?3Q^{*iG|!4>}sqtgst^9`w!(yKc@1yJkM;K@WOEjHs>xTH^Oy zb;bNlb=iDYKwI3IA?C zy)UVbn=h)4nU8y5s`UlcQ9x(O&Z~}?TUCe6M?EMt^*PlcKwDI2RR_(@ssrXD9<&8S zpHVdcdP;R#wcp&Nsy81H&_+<}6rd+n`v8T5>j_nz`M9dqe5q5r-_kigrrHbeUf-jt zJ?6uz-R1_5Xu3T)q}oLr`yEv6G#^myFxPv~BCutnszyK?RNKw_Rol#UZ=m(6YC!8$ z`&3)ZwJP^!^Bxae2YT&QRRO$PwMVtlyi2vgywij326U%tJ)kwJ9jbNa?W#(1jR&m( zben1|pw+6asx{^tuj}s%FWdjZQHm~Q*Tt20bJs@LABDn zUR7$|A~dF(HtHYiR3(6}RaL5r&1+Oe=FJ|_YeDpC)iOX=sVY=U&E={k=1m@S6`*CR zMSzy7R;m`7SEv@4*L%=XmAe3!sOAGaOIEBZG#9Dnnb&$?I>*aZbIof6N_#q5qMB_k z^YG9Vv`96}+$`%jeG64H&7~e5nur#t3d}1!6q5NoKBU zhI!E|p0?BO9MyF5d`~NS*qy1$GZzBo^+3w9Qpb zFi-dJ(1Yw0Rkk^=k8p6KxtgA2C#%MrIbeEyke#F&W1i+|M#qt(8f~8X24$iu%bfcL zWr8ZxJmn2awkpFs*`p9W$c|UNG))4YR|hwGk{zddZp!gAqsPs$s%NH&9t!P#jOwXr zf`>v6vZGaxP1zm_Z8b{u$aLY2V9ruKG>sQ{+Rvz&s{5vKl+xz^^pKjNx@Q{e5kxzC zp}cDv{RZW^@{Z|EM|-BcZ5rj_p~u#z%3G!^4~3pcpD1sdGCUM|Y<;Y}VR{)u9acEF zQKm=A>!ue1iB1PSwmwu|Gd=fE=&|*I@~Y{XheD67_mx*nPdyasANQ1(O;0=&dXT-V zyl8stp-`SX$_u7PZ4`QNqs!%O<@w)@?3S|C^w86c+T*73tm!zuuDqdaFq@xvP@V?#vhs@ZlpY5uqj=tbp8K(l==C{LKqE03G*y=v<&1R~sGD31YL zM9wLXn$9YZ{BHhQl!pMlAZ=D2G@Vf%Fx~ZZOh5_+s9^H>B_nIyWl=fSJ zBg#Fd)|mG2qo?UZ%H5`Oo>p`zKd9VgIt!Fn{!iEM1InGI77r6m$qmXKrZWPig$56# z;r+@Q(`gS6U7G8a+dE7gyrUlH(-993HU19e2Gd~=g|449 z%Jrs00!8qDx@c}!t}`9;!-`mFaN`hfC8Oh=ewnh0ZjBA#Gs_J1PIHs$vo{{|1m;7}4h&NS9E#x&YA z%9LfwG-a6F^kU^&=u0D9qeov2ePO&3`rLRix_xw)qTwgNq0ay+t)UN%=R7Di{uA-J&Rp?&h#?U>+r2FzzkJ&Bjf}D&t1u2B@t!4qRufG_EnyLve+1 z6_DUI&{$?%X@uVnFs?9`7?&HD8J8NbMP2h>Y+TXfV$>qzg5Z|-7jk`4LpW1vcbvne zq<)C6bMsQ8Y)1`842KPe3% zR2#M!HXAk>stg+q8w~3VjZte2ucxmeY7G}T>@D}csPYcfGQ&zksbPho#87M~GAuXj z@mp$GVt9Q?ve>Z5u+T8ZFxoK6kY&g;ywE?_KhrvEA?x+=ffiL z0qaznqjIT*D%E}*)YkFW0+_d7dpX^Z5VGDXBca!B~NwBIz7=n z*4@PG#m6KWhL`#Wy8F7(ibuMKx{R(*^()qw(HPM^a!5ZznkQNqbxOBVx*)pBXQgyr z^cmSn}v_ zbuNe+uOFu$s~@8utskY&(!bQb&^^~Z(@lxGr@O1$DxDm4M@N5a<+kpY?xyaB?wanp zE+=YY)K%RT-PouxQI~a@Q5jJ!{trUhZl>-e+)lWa@F3)(?t<>Tu2t8dJFDBJYtc39 z9`!n-JEA+Jo7d@p?x41Td!NEtJJO4t|OQ_dz*!y3$Qm?IOepy zZ?N;>CkAlY0lyYS-?i{7bjA1@dzHP;USTh@m)MK!1@=7K%AR9e*k<+&dyGBJo?@HW zlk5rhID3>m!X9Q1vIp2kwt+pw?qm0}_3VPT>eyQN-pdw)>_X^k4@;$Awk`_E7cYEk zx0~I??qqkcHSBh_n%%-~W^;Tuu~n>arz+fJPIzl0`#SzNu{@mWyPBbbH5&-I=wI@GT9Ea_0Y)U&ul?PAYA6?Ldy=()T@?R?K=9cryTmv*R~>$#*u zZ85uuUC1tA3)y+>Ty_pSo88xQ7T0w|RJW;YE<1&t%uZry0_A&7VCi)#-!mJYe5R$&@<_Wrazo@(?S{xFTKb!z`C>TVM_$nGkW#cXvLy2VcA-}7 zjKSbTC6Oy4^Tk(#&uPyEpVbyYnKo?^n$q$a?P>TuSXf%MP1=)M*p6$D3-x2#Bih4I zKcqb<)DLJIwGG@~zUt=Qp{>#G32X}9uHB~Hs;$Rq2uj03rdN+3;bGbD}eMNNHe!*Q(%JGB$8S#A2U@h@2ry++8OQ znJ^@K$oL@#62=V~J7mm|(L5FnB@4T={uv zt7J^4ORKYmelNt1_Z2xFUkK zo*TR>aFNd@`FP1i-{L^p$~`-{3Rvr1<0TvAdtAF+d0@6@u0rj6?XHMzt|h@mfjhi5 zxe9{M`>u;v7+y=3yYhpVxt6-Nc3SKzOE~Yl(3LBh?<#c7kEc~8TT{*6at_iMe*Lc@B*I3sW*J#%$S0;DwpFP|+oj07|E|#>Rjwx=qz;3bg%B{ zM8E5y>w$}w?z`@}?z-Uq_Kxee>!$0v>#FOD>$2;j>%8l%s~LdPt|r$>*9q5g*HPCI z*J0No*Fo0-pf|YoyY{*2T(z#fu3fI3K-uA{acy-~ySBJCyQ*9p1@UE38(iyM>s*zt zwXW5!QfHBKiL<~t-MPRy2Yw|T@mSKoXebxoV=5B&U4OkE{d3% zP~xKB#UP#!=7ZPE>3dZ|Azmk6C;#uX8NoAvZ+h_b;BpV&f1?$-7J<|SuDS3%+vP5R zN4{%1d>19;xh6^IlY=MCA2eXw-&36T29FOOoiHk4Zp0eVIOpw;jwir|`@;!f{LKmD zo!QRPz_6Pi(ZSI*aSV``LS7l|eByZS7zMSbju(zBcs_HybY#La13m?~`vV8ue+HHY zE_(GYg)-dvIDD2>P9oE}vXQ}<=XQ;phR<^&$N!mI^KC|#ntfsK6VwB-;a_Pa5s2MT zKL+z}Cw&mgeeqo%@@yBE`(00Qraz1MZ)T~3xc%S7;SHSk_x>GZsCt_QRccI1)2WsGCOhI ze$s$k?N9sVZ3=}W7Wh;@&%-s`hM!}hx4S=^r45k`VF^FKr=l|-+SIo*fBJFfPq|IM z%me(dzkUMWtAEuRK1VrUyK0w`P@ zj=^-{@Ym05F6GMQjQ{g9&f_-yPh!}jwoa%7S_~HfC!0^X@;T-|VILK?;buP(n@6dL z;*=Au#8G2qkyoe|))l|B39NwdD6&pZ<>)&*s$bOkBmycZW(} zskz1do3BR!%;s_Cj1R(v!83@sSsadk(7>SERMe1fjnod@!i>!Uf(aN*wDb)F9+}w% z=W=5**GfyM?j;E2O0GKVAuiz7jY`GmxNf7rl;nJX9{jLxJASA z3MRyhR}Xtz%3T{BBCYp_SwnmP8x_o{$AsWwZs3?p-OkAvG5A8&(v#Fe;bOM+RSB^T zOSuoms=RLjAzY*wrRJI4?<#};7tYCJL&Pt-gBNf4_lH5;=CMW6*;AX4Vh?{C=8|vD z5q0Kvja!D#SBxA#5aWDqS@wIluA(VB49mueG}w=@b==Ddto&YX6ZGt_kRUl%KDIxf zQ6cKWXRH!Qxq^v9aRv8mqT1<)!ci{*YSY=1%b^wy)2i4ellR5g9gY+g-U0?LgcPfL zz}Fb85-1F~q#{GA3df3U`15!lXxazC9|wKUeVsE1^A$xocQHQ3&7Is8zBf+pho^E^ zC+Fbp+%Ho;Bbj3E(3EW4$o(yM0B+*)a=*m8xfi+p@g45Hsqf*dT-wxecprCjY7(yF z22HCKm-SHOaX#FA+&C?d$Msx(-hbdbWcp&fk=r!gI-nl25FWnr@Br4=#Nr;JFwj^O z?yI=v#YkD-9wHW-{3NPyDbq>bLj+C&(@@WSG((ARa(|rh9$w4k%*YbgV?`0yiBHG% z760Z-F@N)KvPAB?f^<^vKfTc_feV`%0$Jp}nPc#5eq@Qy-?)%jlgWA!-UR6O}4<_$cW|P;tItaWh7Uy zO)cSk8}4lH`lH%%=X_%IzCo<-#2`UAWEL!a`xP z5Gx)5Gcbit3JpgYJgT|dHObmhfxZ%u3Sp*zBJ|f@6umAIIs3Fy&X(SlvYD7&^Fpi; zqjr?b*fF$InN}VSo(|@uCPRuMEkE_BZ^#UWbmN;3NrSi#cb4K3?%K{!Qmo~Due=*7 z@=}y@%&u_qbSmHc+dKVypH5Y>Q(L6$Qq0zK|JhY6&mI6GWh26g;x5;J_YhyIK}n?# zdsD_P}^$$qRIXQ9rF{*b|PS z|J!?q;k(?YwS90AH>Nfk@^D%0yZ8xruC_lU_s}}6%adu ze6FH=Km6%;exYD>1`>G|SKZKC|14`P&AS3&Y+IfK!(ub|4oghmiM4_c0rx9V4pD>K z{f=EYfW0=K>)ROY+ffcTxG^I1jTYo}3ofTo^#*svs>WS}wB~XDK2)oI86bq5Fa@(d z_#=qS^R?7YPw2%01HwN>Kn?gH_6j%ND`3w%__|t#kM5jJ(bEHGpng7d?6lF3o zxA{~QclWfp@1;kY5&bY4gge0`O6Xz^p>Kn{! zvpdD|yBEk+T*H~+q;+aVZ1ZxApYdOe?wrgAW#cZq_Wgtee&l$6A8zv5LOhM@cWyN~ z8t`VOSl2q4-0aR{?OR{9XAfQ)0OpOlumN*i>xG`=N;uy*P}YSDzxZdoqvE%VA{=xe zJV5?NR6-=o;9K76X6e=)5`v-(3$Y553Y9Zhkxv6&Q7`5)4ux=v%QGN%DH^=Pctcg- zCtTyK^Oq6nOFF^`cOI@Bz`Fijh};QCMoc z6g&K>*VOnkSVVJajaN7}gX!>VKn&zYUq%A7dtTx6QAEPU4E*m3g8JeSio@L7&%&wo z9M4$ne`(u^w$A0#JL3Sp@UIfc0MYOHaN0@n(_Y+wRpjQ2_oY)KA)jOZouvL1ao+UJ_gtq5-?cxL4k_>W^S8STw~dsrF*e}qN` z@fW=CQJ)p-eAo?MEcYakXVei&zFCI*ld&TH^G=dbzOOg7NES-j<}19qHAc&a|5e?I z-v|GtL;p$M@Heo&U?y;wa7CTODAzy*RzEO2+Y0&a+<7Tm%!0thGIknbS$TfIH=Nfgkq1EN?3{M+`RPW0~ULS#%+=^B8Yu~7veo! z6efSWZEar*s|9chX=PV;aFRFHcAj79hbQ5el^^h4xj0Z2a$p({ucLEsJ94u7DLXz%AfJY8MuyTZuPP8gQXf@ zKKDT%FMf*xm*TPf*May`dDDKCgk8{}Vw?8!4T1PAoXI~5#7dEF1JA1bE);jexPZ@9;zWFlKcU1w zKqg97;a-yRnn1+?{x=m?N6ztKq!2g0BNP)Qj2D#3W@%_BN!i_P1uwQ~7GJHxUEY}v zrWPiIZrx?Db}I_nD0GrxGe#*_5`iOJm|ix6mxSR6&^kH{N8{W4kTATSYOUxBL*n_5 zyW+p#+m)qVG5jAo`$asKi$3BXcEhp3doc*XUok`oISkoeq}Ypj=HHzeet37>-LGjs z(-!U!jN>b(c87VEt%gGtIE9ga=X7)kzeZ<>}npi9sTj@rSo6` zZky{+2^=yMllV;x4v}2-Q$dva^^8*TaUUo2;#C^Zbt?a74cM@NU#!6q@0NT3YC-Zq zis@djGM0=%f~w$^GC61_7j{s4mvv@$(j654_nEzectsC5n?B*od*J_hV*r)>pa^UM zmlz#^W2E~+K$%*8Z3ONYS+YMo3Za1rHcafIS7im1XTK`bO;aB46N$ga)A|2I;u!xn zjld2v4OYzK*F}O0%;k?nfpxAXuvSx88@}*gn9QypR7Nt*Y=-OvAkPr*6@F&w=oeOvRPu^P@96lE-dNg}RV&#+;LgJM zTHri6;q~}>N+wKHDzf-9Uy8c%{~YM!#h>~Be0%~Q{~`Vd41izuAx`Dbt?Ao^AKX8I z6|oJ)bOj40O~w3|30RF=`0NDy=EB8azYM1z*gAa556+A9=EHY~NcapbX2@n=o*C({ zJ^ zcJR%OGJpPx8Jw&y-!dnpGq1?NUO`V4ijDLH4_3zQslJeBqj-akc6OTqXuIKO-f53xr z9xqP9^Zz$?(89yMD+&M2yG<;d`}w|B915M8t@y)G;pk8A8H9U+Z~`S?Upbr0&$i;< zz%P|H{1faxa&34l&gDbwcs8!8Ty2NM1mNLh{0XQLGZuma z5W!eTxYt*3>Q^KKoiYiR8=%a+!MLB?b29-k-S=bMzbC!Qpo5l$dnG{wS`CLXNT8|; zR~}yMBL3E2aWuc`W8CHA*0$Y0@Lp>xK~iFGK~d)(2rVwrQbu70yu`Fl*~8_K`q`1+ zvd4-J7fHUSf*%37?XF}uAL793#2O$_JtQEw>Qxz5<`Ejm%Qje}MKDK_r0@KE1kU0t)G}^N!!JYFmcefj(0n7zfN1^U;;OsYQqUEJs8yDs~vbiK!#eeGr&)mY#bz&7f)&o^aJ7stCmz_9F{z^D(gtzbkE*!3<3R7`y zdXLc1tr}b1Rtraopcbu!Q?i_D+(Botpz}8_3_s0zH5CZ{8$<9%NFVfI$x^Z~hjJFY zoox{Mq8-%Hk}yreosFB)%79t0IoN~Nj{%QhXA!I=tmp@gsLjvAMXcba8tR8oseU;o z7{jrX)*xNM5ZG|DACj~Ae7_;MCq(O+&#=a885Msoi+2wJ11;i9hG0e}xQrAS4+G4kjA`@ma_B{R9t$P0#R8@T5+H$H}Pbf?NV}Kl&60_kjO< z5G?%avdeRoCNK(4PQamoafs&@O%yKu-7Olw;#2rjrnbvJy0sHdGrzz3~|AH62QWg?~M@#Zb z?N`dS{smu(XioB$9o_dUjI9UWiBuK0`Gd2lf~_h!AOW3+(c-FUQN~QFYx<9-V?kV z+~nP%xVQJ>4`5bhBNPSv@S!;7?L{BJU0wS+(i1@p9J)*I)1lCSMkt#6p`iUragsiv z)rrb&L-8kKyq{O5K@4W_@o5kwIs6xCI36;_>@*zel_Q2-!WM7-Wg1pSv1KKVNHL$l z*|ZnAL=?3lw9rcWAT{gt6FnTZ(YI7SPs61ImsOUGfDJ&Wjb4!Z=-ETq{KCHCG=J$U z*xT3h%s+52?6^NZ*H;C#zy3y))`zrV&w(DSaZ@wbv?Cps&}^Gx@6Mz-p*SaIJEP8kjFz7@>>_6^p`pNYb~6o+9_ zK-R8raCe`bO+kvWm=Uo)eBoQtZoKbE>`x_k9f?&E3XX$Q@e&4rv=j$#* z`HxLrp}oCWF^kyo`Ce?kS~8bll+Z;>lbLtS1$YoGZ^oz-0>^^2gWs(@BSN1jT`vPmz^#AU@spr-#RBm zA#8*Kx%l60gev#_hUXEoT+SCRhbuw&E5?8Ey)*FQz$+1qxNV>6MNh_x622t^za8$m zb)(l1FyEsSRKndIBr*m=iGL>(|53(!fd`2dPxz^sI9~kVBRIe))bFbJ5kGbwz~6HC z`}1$#7kTk#_62vUG-lzi;F5taAB987coARyH=i%~n9=`-xbFaus`&cOojZ3o+1(^J zq=%GEB?*KiROwt06i}MIAfSi}DqwF&P^7mI;2=Us=p6#c(h22HFQFqvsx&Dt#kYxTua@Q%gCp_K|(#s04s(5@4fK-$<}X-UNcAjLrCvIb%@-lhjkjV=)p zGEwW^LmMYjOI3~5u*cy2#8$u1f22rIMO4LYevw$b$5b`4B!xvpj2oo15rteC1V()b z_1x%Jnm~RzfvX`RLGJ@KgJ~OA6HC6AW&Xw0Dk3^lQzMnT)T?@CSV;oewbmiZ{g~1L z@Dge)*>E4v1T^l^FpF9$ER~-XSkw%W?-xUr)Q2-1zBA0}+A$Qol4BJ*5X>OQ+FRwi zlcQ8rlztRD+1`q}-}Sc8*P|4F?VxVA=Tpaip~+O76%bEZ7vkfodkbG1`E9A^P5z_7 zZ~j3wM=OmOA#0SwZgozg;0n)~;qm{1g$Q62ml)-FjUFxwpJk)|#=+}ZNvtwX= ziX8)Xb_z`&1Lk%Q#Q?|8ijUCbAHkRxZ*Xn=5obk+VvENrb+NM2eo|)Geq3rZ1}esH zd3uT1$vS!**t7NI9H&H6<;|K8t;kgz<+-Pi&`MR`qd>OdK8c4@QMJaw&ZYgz>)(lB z%_M5!5fHI4w~E8dSVG0ql@MAwPVqzCHjTr%Z#^{|uSC+;jhZigG+xPw7FpmF!3`nY z23-s*lLay;9Ip)WcGq|gJ(sH(0qbW5nuYqizo48sN<3}Km8BfW#mZhvw{t;J-Q`!F zAY%-d7Dca4P~Ji%R!zWs8%&2Mpj(zwSRUS%Q1v`zkdM2pYebv#AT(G{wtSG0KL=C6 zDlL%e<;$#|$(MzEh$wd<{?QNj6)nhDvSLJ4W#eMas)m$p9P(^4QK^IShfI{^&zx9V z{;_dXf08V}*Cdo*WR~xr{I^opOj2S?ML8_d?iYS@qXepckH;EPG-4WF=B$ zyw)*ED=8!)F) z+J!l#r8(!ydSpOSDKn5W>nP=~)q?nu!AHEP$3`uY{+g?VmJa4I8O@dqrtKTG3iR4M zN}0%o%=olPvzZ`AWRZMK15(L@t3~w+#1WnloQkW##;`RXI;P z*K5J*5Y*(}X4GV0ff5>1GOd1hGd}vm<6BsuG*B*%UZAx1)N3BSvq08s_5!qhGHqL+ z#G#X~EGS!}t5mQ_3o(Z|gqkgs)p=#19Ealz(e0Dz{z9cbda&LiIS8*UDjkGL^v5Du zLd~C1!U}rnXIa8mKg%x96@g|u_4{6bTX3g;mPK@3j7(S1fW@+iP2z0{oms35^U#mq zrqH)8rE%#%_oH2l&4IqSn@+i~M)r`lL>8E`q@+MkIOQ^?EWf<6KWtlQY2(KD^WqpB)mnpAeJ7}?7iS9))4nHu>*izQi zboiRTR@a2&M24-Z=@9x7#3CK^#O`!HCF#6N(pgK=S#So&>B_4mxNb%N%O^q}QuQG* zb|{6*M%_^&;>@^#h~p2%jrDVXHi~R3l!&weNKwiWDqs!mPE{T#>|tQG8uf-iM6W5p z1je}$)Mka!O)Ai7*i7a}p(}ws*+_{imBT(oP9ZA?cz{mahlDR_73k}EoqA1W@u}mK zuKHf#h9A6`3IQ2PMAGrK1XqvwYwDq$7JaFewoPSmLXT2Bm4%}(cdb%3T1M@U(0}$T zqvt7J4LSF*IyebISRe$wSyaAI`BE*YYtXL!Mi6xmGOVzR&MMW04p_9{_E)4@3Gm&h^q^B}37nEKp1pmiTK=q}KbC2%2~V z4A@@506sw-=BkY;uUWK4uO3x`1bf;2D0u5pH0Y>O%JxeB^F&xprwyX}nV=JbPo6)I z2Pf~Sf>{Zfj_wcbhDi}rk48kWxSsQbE8x1sRBpMM8HjSau*rkIMF+i7+>$*sSDZnav|IjCg#GH1xQV z5c1C)%$~`wS^gy~Fa4426p#u}t-Vm|IIl<6`!UI=_K7m=zeq%}e;QGmIVOcw^kAB? zHOvug`Fm%{nr%7(he?}krAp3QwK1z7QgRNZ#V3`KY*nRFEl$p{^A+jx_2eK*X_L{8 z6{OMCH@u&sXHMfnuw(SnY2_de85zIfpni~g|E9bfoP)cIgyha6bm)a?h-1iZpSDQR z=8W>aa>uprj1r)*pZv_Vd-tp|0Q=()=ah*hdLkTT9{6l^CBq1fXGS;wiRmgHYhV%BG0AfD`KdXsUU^JWX!AphP`)Yh8bx~RNk zk)*ai6l>{?yAnv7E-A&KIW`=4q2*NcEHxIw68w(yf(CWxWhGp!#tWB~ zh{SJ{l)-70F$^My!{8Ijh}R%h%aH&rA!i#KfH-|g zywla^wlXV8IZUy+iO^~`4-KawPF6|zh4P1mq_Lc2%537>)>S8#9b@c_UCu(+TM4YI z!tO^>Q6gk)f1aXcNh|@n$YV+Di{L%BCca|a456A(ddR(h54~T3#Rg>aCT^5~jMKAS zxfPfW0SwJcMwyrBNHUAV+lk;xK@^z6YC`Ol-ygr*r?8jV?px$Ppi&6!OksZ7oT0w@ zP&%2y(v6W9?aYvSuG zxFr#|f3+Qf5uVp8*SzH`I4BXj4`?e zrhc!|uypo4JDE;}xz&RxIfM1owqCaZ5;8M`^%fLLoTL`bGAWb>byB@dhO^BqdLxrL z?PVhdWU_%YWqP%W)Ve3u?Xeh>&VE*v0c1%-tFll33#b!ysK%_`<7>&<{zee0)S;Qx z*jDVhpH*j-*m@@gOoO(3Wpx(8);a0wK1U>ti{n0YzdG2Be!yq33YN7_?6_;F&AGHN zs+VQ+*DO%V4x~0&5a!*f!QNIbxH{BiuPI=SaAU_%anNU<)Jj79@{EE*)KkEwX4rU6z?TqM6vZQp|2aT z2*-9MMJ>b)Biz5Z zfu3oM)p~IlecTuXWe1IE%zD}eXNTzhg%I093bzGPl_yygyS1L$Jjs%jiS)&jSg@n$ zuP51VWh50fK@V-9_DyAW3!5UlqC)CeK01&tHD#UHgC(x#o&sS2JGtfg=>ilr_!YMysA-6#+WA@C-}DuAo1Q#~7+19z?H;$7uRaJg(Dp zGj4|&_oo>b(Ne}W6pty?Sv)4wVDb2o7Kq0rI@pqRP;P??-;&00XIQ@IUG2FZM>4f|BNPuttDZ+&vTjU`2~I&muSOAn^^+Ol|j zHl!_!DF2JigT3_ZgBaXwj5+{2xH$qS?M1Gu&#}t>q01|Z1CCIuCS!-iA6S5nO93SSg z1&=9^y5fu2-x^B(GPs0a60u~A3k{~iiL4ym?#u?V!JMvSv0xhe4i@BIDtLzlvE#E{ z8{fe&E08?*%m^dz_b{S=Qt?MDgw^1hXH(ZM zSVlK#XczWE`At^49qc1FO62b7z*`_OhL12m38a9om`w}m#P>cy^n6zq6}^04gjoH| zBN%3|HYw@iB{ZxnYl;Q2zbnhIOw^Igk9M6>11aWx=Fqks7Rb1a_gOH%=yWfqy1mhigsXOZxR(f(Y z$6AO`(DsFNxjPFH6-f835$r18gN;#GKBqSC*9)a>A9)6>ma>adKW0yh{slgm(mzHg z%%-s)%dTDdF^XM7`X?;Ng3eSh0KK;~2%`F*fIV7BYlfjSvpxY?SWda0pu#I?`6sg5 z*rzOAbejTmqwIQ+5H$ak`9|lRLAO~Tz{fcGmW;8W=jcT!Bt$O`{*;}6;%0K`sb<(e z5aIW&ZnF$*@NPSf(F!aDum#NdjQ!xf$P$NL0$d!_Qk^O9b9N|bL9JNGT)aK&3$v=A z7VV1Xp)}Ji+)~$mt14NM5mS?ZSyE(9nkBW z3fa5>v1t7bE-q;ey0Y5w|F-EyU#l2a3r3HN$RHcy(b}=|c;os>T>lu&C~Urk@_NLk zy1e_cY^Ka0-}bZ+MgFh zRF6&J&1v)yc19WI>NymPkrn+wQ-*^KEHI87N;4*cX)jm z$Mk7FLhmNt-tUSRdHi((6P4BH{?uPj1Z2heOap2%Gn*w={aaF}k4X1l=SKswSt@Xx zrY1C-T?_iz1}=a#8oOb0Ar!bN>JvTnpJ~Sk7V_@TwnnV)H!}9uYj>w&U8ktYh_y9R z-N9ZW$SH$(*`P2Pq?HZQWst=kBo9jBV{Zhzp2=Ysm9ihA10 z`&DWMlIJB)%KB}Mx=yZ~$|iF%_El~~fBeKcStS0vfMP!gtw?#VhsV>*aqJUikSk_9 zP>9IodM+5qZIm(rM?_49z&sWoBqsy5dT}|s-HIRjNsSuiv5MLndlUOz+VvBUrmWsI zY;?SHNHi7Zu{uB;-^*ilfwirb&+4;Nesrvy4N|*{4d134`RrSJ;X$cn=7Wa^DeTOl8qnI~}I72)-Mf41GJ5C8X?z==VynNA%k-z?4P& zR{QUw-&M2~l42Ykui$%j1!w2Yj(6$fY3wW3-$Ff7G6HGXi13aThn}~HPa7J=4`E1&e5}ew0{Qcj`PNv70Qb=ekO~wj^YC3 z2pE348fFiqUUOJ&XhoLI!9s*Oz<4vNEzP@?=|_cgk@Zb_Fqfq|Zu$V3CeCcCev_)t z1LJtp)q5U`QL(AyFTi4$UdObYfe>9-&bXWlS(x%{@%BAl0^nJLg_-2Bl0XrvpBR6Z zLbr!6J~FQWcU~v9ps^8VHZ&KhJv~6_OL5`vqpA__{`6{Z zv)?*=$D_novLmWLT%*$7mJvuLJEH#MQppIU3i!gzJL?Pgn8+qCXOW`&=Poy^>H8rf z@qXO>F52RZdtBBs0$F2tCaw8`7>revD5U!uvjL)26!ZOKCZ3=ra;ZOOaCt`{_Z#j5X9?qt;MKZ$OZc6X=n0nT6=Ox?C&AjAdwaOQ>-C<7O z$CV-@kg7*tbM_tYYxcGnUTcgyzq#MLhd_+xstqi%TInJwZFjO+70=j|lA}y_Hhvq; zJ{0YyVH+Pab!wa0Q16e-8Wn$J7H&@3kIRsw;o`;9!eFxyPwA!oC?iA*1v!d-Tq+rX zRHEI^3Xe-ABalkYf-kl_W?E;sTQF~nIj#MAnk_)PO{%-qJ(oar0WW`uo|V>HMxZRT zTYiPfTtahbp1U7%x0zX)lX?4Nx-`jMAvvh&W`Q(!ySo~nT%Dy;W zWL8s-R?WxdFC)y+>f?8OLy?zpd=vg~eX@mCA7%Y$>~0p#`h-!Bx}nvS@9D~JHrRKF zFF0dW$3xZUQ2#wR4ECp4d)RfDgXHgJ>)6$3Di~Y=$NFsw6@9L}M0@vvkNAns?qlyN ztElyUFjj>$WIqcp_eX&PmO+Av2Kx$JAWmsZ_Cxi0o?0IOpEQ=b9boCo0oQ~B_%wFL zDOg51AmI76Z;*M$!Vyvke4uwYFV1~b{3CnQHSiafulSs*Ew$A8E~<8zb*#Nt@e9(t za4q@Y{=qt2(GU6wD{)0X;Ae8IlYGi>thDnmdyh>3o-y3=GQCqNy&dqW#Yb?Wy+_8h zv?|o#C>X{9>Rk;Q;KHNq5X%Xn;@zwp*^jZBktHWA@SU!NQt+jer@V2Dy=EUiN?JSs zK0lb&A7f1&hw=j9R--)374_{Da-2o?+S)+a3QTt$_7XBdv{(K%!h{7TlwO5pBE;{K z2(MU()pKO_$N&l*FQLv^gb;{sMH%|`1||+#8Ub$y{nLOQ$r z)KdkKO-V^2sV72y=BZm4#`NlOR$VsJ%yuwko?u6TeDy!c{1iYh^9L%Sap3qA{d-7S zAQ2N!fe=+n1OZHk2(N)7B9uNn#TG)J9(Ni%>R{K?r`eMVJ7K3a+5B5_oWb-zX`{@Y zJ`t`_XIP-fea2Z9&u#;m`c-;ZgqXUw?H<7*bmdY8hQPlTpF`IwizxOy>%cc#?cj7r zDjn&}d5F2jR=597SFa{#=3M#0N^>u;AB4fC9^8QCXVW}AIG6_h&Yp$=l3zgZFnaSM zTDO53USiLwz&k^~ni)hhFEM}ZY=Hx+AY*q-Anjl7?}x+w@k{I*$mH8yX0NiMWwi7% zi<21XzSJhe3ai<67EZS>Gl%WmDw_d``QrVdl=qr{IPy=q0y*>L>D2lPMAA#?^DFE$ zPOq;QvkF*jeTpHv$frZa>{VquRlmyGTdvzTms@Y1s+VF z|G`#Uw%Gs}$)md0SabApziX_b2VJchQPk!-OQkc{&{G@8`X_kv9rWCvXu)18`jb`T zyQ&)rkaSdVQu1{cgEUWHmm=|T*D+YrXsvkcpmW#RH|+dK>U@J$6`xcRpM=xm8|b0@ z5rO((+H#|8v6anYQ*O#)o8Lqx{iwTm?4Z#%k=OCf6m*NtFGoZgW|cj^(W^|w7E!Z% z>?I#}*Wdh(X53@5LuJhtElV+LHv5-Yvu2c8)%#T{%!~=31Anpl*7b^>UBiBWPTUNO zCcR3`GZZtx&xeNHXW<;~4mc@W5`w7kKC4r2s@()wsrvaK6JVw4!~9Hum8xF|G67bq zj&u@WCDTcO71Gg~7h}VfVbt~kBz@Ot$^%w|-;9Q5pEX}(1W~V8)ea`4QlzFYLMLk?ktD$$Yk_q}q@o@J_WqutKJO!y|2h5}-LRdj2_*-9DPRBpg8(NWz|;m z@k|hOZ*c(D_rcUwKdjnuc84NWO79SmCvaOjq#tgZD19z<@KK|%iGAy%j)!t4(xx`S zHuk1X9i!!J05Ez~k+mT;u&WWjb09vqumIbK!?9L@>S59rhwhgD9yJJIWSvhq)yR?B` z2~>L~t(bXKv>M(ZuxGko;_w^wz5#-d#{k7xLH7dHLjnGxLy)>VRBts{cY9^J^=V90 zIMSR`Vz z-Own%wymAEcuR>irgMl|%!;FF*N(tYDhyM*&@Z9t4)$k_l8_A$@kn!!o#E=cf48eR z`aBPyDG}FtJ?UTs`d?V^N<*B9V)s=pAY%3+DSP| zM`P7?0a-)hpa29&LqWxE2j~Z>MVwkQQEC$fbVG-d@Z4^pB$RJQeSn~u1XPQjQ7eE6J@SlNJ#voTB#r~Xb^X05V<>5!AgnGM9L45vdY;M!}hn7?sz$KVS0{Hlph;j_!!J6DJK#F zspwfX2K6a^R!vbhQAA6%9^PJVsiu0b2H%8ftkb2oYLf42Cfsr9r&EkGUacs=)KXR>qJ%jxJ3=%)f-KC2{w|qgZq->$DUr>|G?sihgDzWY|x4wWff1pDzsIkE#0Hm=RaV51BCSA)(e^E_U zPEnl~)ripFQjGYLiRan1Vdwn*i)ut**>plNL7}%UJ)8K9YkFl@Q{Fl`I>|*UQXt^sdtDmsT(KP(4s^ux`6}7c8 z(Y5Op^$Ufqu;*m#7yiUtaOISy@IF4k#|HcW1CREN9o4D(6jt8#d^`1dg^jaN>nX5? zEbe5Bq@!=36Gl_Pc3vs;CyS@H(DGrS%PmM>OX=;^fyy9S)?V$#rqni74hT=|{U zS3oLVci+bT$JU3CUWWxyqj%I0?9H#dqh4bxd}vp5R!4Ee<0%Rrgpn#9n z@c21AP6G=Kq+gs(A8i+?J1x!2A)ij0FtEKu&wh-qUO`#H%=AZd#XQ}4!!OqdmMUgHq{dJ z?9y0o`t;Y->U6vp_P7VsBuiZ+XOJZ3@|b%gm~LgM-{aV{Yh`4FYjkgQlL9-5_TQ^# zw5_=wM!_|rj~cHimt2c~P@hrQT`L*Rs6fUvfkJp)Tcq77|8{hp3G#!+*62;OmuRewAHI zhhPm`#|hbmKGAh)sNgCt(Cfq18ZlEXO?rVPb5bnXN2tEoq{Bz3HU&fYWd%!HZGmbmo=im*EVXD+4(Q1`dNtY7lfE0N zwz91&797V3flp|&0xsH$N8-bQ)H=n|mM_G2)MgYY!#c`L#TT!PmR~UNhofRx`)N_pbwznvUp&Z(k1TQxHM|CDL zo%f?!U*vJ+NA-Jpt{;v~8Fd_uq6%@uSqNHSjN{TI6m!~b;GyV6v}QG66veqJ$7XUp zS8V~?U}J)s$p)x&bu_E*`e>{=N2p+(i^;RNW8N_=e~T)# zdOouLE#|oJ0VONvT_#5O{}QWTv~MpkUU-5O$X{qC!bM~EQe>`L9;(bIa@9=Nf(dGE zR_<)5aLy@Rm3irN(X9^G)qD_X4=$5EBfQwa4|Pf{Btmdfjdld(8) ze$jv@6X!h>{iO*YRMKQMQJhYnos7NyK6SyPpBHLpbFiHMktkXfQrm8+A zIZL5p=8o_PsFhWVNLcV`jbOUJ+0Q|D-)U5uP#OuWn5ynqCQ;5b(8AfYY#O-An{;}b z`clyRYEl~FU&2ZNFGa1UqnF$$shQJ3$Cp#UcxMnDnXY<6R8)DqGlcF=S2KWbsx$+S ziPUa}nh?EWy9D+?#%nQxOELsK5x|~c6WFtOhI)hDWz@S{cob!QmS!XW-hfD6dDqfL zxk$!)mP{~rAHQd*%P#s+!F!fiKQJPu0T!l!@-gjdT(v$O|2#M-*zmFkVzL&s8Vz{q^l9$atd?5OA-@MbO51>JZTE7v_Tj-AU8ttFQ7R2>+$$FIRMd`kA7v zrBMsi`sgzl5VZI9G8UfM77pf49;jfQ#Tg{NV;8DtAzb-xk=hI_!?s0Wd+)feF9Oe| z{Kw^73|bfe=Uj;?E}b0$=CGm27xLkchQE#mYrGjXGw;Qf2 zE5IW6A^(+XAGOaoc(QASU3K0{wT+;5Y!zCu$W?KbdP?yHRRW!N$c4JoRlZPtN5O1) z`w9IOx_m&Xf!}2erRa^dYN#E~HB|5m310T8l$pzL@Yz;9*hFXK^^fqQI_MrcekGFA z-B-MQsQq9t=+|r0hl4G3*x&$~HP})Gei7-|V9PkFuwGrurrO|H+8M$H^Ge!(RQQab z&;O&wqWM4mN9_*SoNWW-829PP4H$+^G<1U`2>UiXL=eP;ivzj+8$pnwAUGsQaF&jc zoSXv8W+??78uuw{V;MSOMRJIt=rt(RQ^LTN6pUK1--h z`d&4hPJZjx2?RK{SCw$#8Yp{*I*Ol&)Q?l@PO#-?GEKq#&pXw(mGV2(I1VvQq!4Iu zeUjj2in$KiXK_X9IGNX=y6t0LcCFimsjBTAD@3)9J!(a_0J-iSwYp{sa6j7v0YP7y zu}A#@D=K}j8mG8@#fG`M?!(s4HmY=D7O%_(IVfN@uK@3vtq!Qy752L~9e=x0Rr>N5 zb)3%voFxPgJAk4OspHrYh;OEc2hz?%>MQK7i&77(xsJj*9{WLHQ_9*8K6wPJ=r!tl zL~V#&YU2?#Ri9}UkP`>MWOlgYg6j?CsG24`vKgzqGpNH+)$X^@?lDTZ zL`6qc9lY|1qaZ%NySn|VHc;60I+VG|JA$?xQ~NlUjPQt2500SwRcudE?s3%`Jh+bZ zZzs1K>HQ1zH;0xT2PK41;)I%GQi3O`=}Fa(J(xfzma4UA*h%$SlPGL)(}ReAKuRIt zFp9AW7cD-m1}Vx>SMYCY7v^_bNMVXL;tw2sTIlNCptkHHS}aRJ+E-goSl?@S>5FAF~X$>m(@o8=XKF3!d3>W2U5}2S0GlI zN<*)x@$6Cvg@QTibI z;vUFUAA0tum~iqxSIq*S*Wc5sd+IR1Y^R*8Mx=hOp8aUfiGI)1yuZ|1Ji8WlCw;v4 zvsCN8I>GzCCV_DGB@mA8-&dpAmLSvq`4~WO`O*~_rj$M}*aX2HbPAz{hdqW@QT>80 z?VoAL1MqzL)<$xz8}gGVf+D9EP|avLWExkz*@n>6yJN{%_>|EOOQ3lRb_4E^MU~x&u0Nc}+nwq<4Yly9y_O1~w1Rr!!9`^>6e*5t z;;*p0TI$UjBIX>6<5GGn8Y4OeUvMyXtEK%Z+~Anih_j0ti*pr{fwdON98R04GlwlF zsw)c+uHi%xvDDDYxpIS=Sb2QJbtIC~IL&OCC=VI~%sqPF%FEMuE04y!Sz+asl|Nm- zTlpJ|ZFdWj7B+A!U_)TuF3#s&?R-2NZlm5&YC9jzc<|ss1AT$rgb!?T@b;KY$-X?& z_n@OJ%Ak!e@8&%Sn-fM^qSK$H_P%wk)NrP)998z?*~ulFzTE!BR$unOfDJ}ic6#Zj zTxb1wH5Qon`ynsk-P^cz1V3WEje|F+asWT3ta163;~Io*rew<1HjsC5z>sof44()V zsDqP##E##ly-vOXEdEciyenUh+$lGfM^Hi>Z;epH78OWyV_{Slv)$rH6XJL!gl>!D zJ>Yki|Ln%pm#$lhsn4tt8b*}JYk4sBd2rWJ22-DXIOa9wCJ^IYu+4>8Xuu z^9*GkDG9tjx#TMd7%P1 z8q?(ifpQWv^Vw7aXAmXg>D@{^0Y?pCL{i&rM8e%hBwSwvUv%ID(Qp(XKrS{!i2|{@ zg|cd)f>RU%7txVQynLoi4wD&CASjI}4>~Q}I^tBtszAUhX(ugytz>q%^i58~SZ$+b zX}l`tP|q|jO;e7f@wRwPugryMN^WH?O;ePiKD{2rN1!62Dl|Nu|D;TCRm$KOg?rTS zD!d*R-b+<@Q+9F+O{l`(N)T#2q|H$zFC%scTggrZsiD5i8{X$)YiEW66JEb6c)AtT zxhfxxZ2qdsn?iQ-WHtV+&={_-#s?v?b#L+jz! zLHxqJlPTlt!A7@e2o0~tQ|LpyKr4%gPuP+oy1J7mQ(Ao_IJet;`Mf?)!*O*=eZGNR zkE8S)n7Pb3Wp_qMc6@N%!{$7odpekgn(*l|G;Rb#rq3Sp>JBad|f!n~j% zPh$^G(eZ{LI}3EGydfsJ+)9fO)nb=~h#Tl?MPEs+4HW$oeQWTSAu&H-@Fx|eH$^ta z6HY1`^K>PLvK#ZJ+LkkR@TNx^WA5a*(x2or6z^ZQ+Kd{;1L%cN2h8%=ro2!F))j&0 zLD3PI`V?=*PMoGspW@?u#20J5L~O*PWRoz9+oAYO3aWbYkn1RK#w>e*m$IupF zDY9u%3*JQeneMdU75SocBTnkosQxoN4%V|BpW(H^LXUffU&3SHv;1RFw)@ZWRD77y zlBatwOpo=)0vt{qTJq%Z>5z{yR3YpiHOOztV^HRrmLS%PsZ%Rn-}~ouX9#LHjApjN zO#hX3w~}S~w&v$i*3H(ktgdZ%^;#$-1UJJB5A;x}5dA7z<}dgZ;Wkj!7wOIbXZT04 z;h-&^L>kD#FKw_uE)i?X8}dHf8A@G72X&&EZTSst%pMOP3Jn;4Q<>vx{X8G5XzP%( z6^ws+XKb-bW4~Q&0qg*T$%imnrJ8LsnwfmtWcXtd8|USh`A8=T9Ca6|&Gf?T!Rzp0GTrL{@H|F%}}=Va?A5`u0uUACo8G zGStwqZ}A9ai>vNiU{3U54nzCIDLe;)P^(~2TX(_^e4g?<@$vwrtn37r4(sVbC*Bfn zwp+dpkOlk$wVRm`L-aOp2Id&IV@9-2n7Qe#}mb;`0xI`)Q4cTkzV%Tc_Ww1Q`(Htw!MXekG_dpEfM=!U#Y1KYy&nPCcmDTC_WvtH z_oFb*{{a8~TgwrcOE{&q!J~ldC1wc!2C)Axfb0J=Soc4n&i}@G=21o?u(t@U_1~E% zc;MLoB~1UHaP|KUnET&b4b^`fq+3P+(k+1BwEACJpTJn-(bgw!dj)y~OdsY6{|4Ir ze`_)&4T4H%ptHm-OGcns0>=L+OB*>351XKDVDOck^$`BP)D)w{0^z@f@jt>4?0;qk z^+>Cse`R0u7&{Y~SA;%fmr(70X6p7BYcJWQ|H>fhVXL7>*vb40dy#&;-y=5|$Th?!kNt@OKlG8sQdk_{)Jqx0{)vf$(*A z%k8%uFs@3FbF8N|LwIw@u^dCe4s567p2ejdbew~vcr8;Oe^ahHf)9{~3q#&PiUztZ(#d?ectN=ALZ#;zU1`L~L4 zmYyBKtHmr@SLB5=Uv&oU8e~@zASu+W=J9m{<&EG&pscH$!#{vbVO$RXGH4TUNw5zs zIiSJ4p2d|il3NtWSu;lASOfa zj_Yu_IvOolLk$YFS1EzOpJ^NS6tsnqjV}F+82IC14912Zma3_g=X; zM#Eb}_n0-7e;3p5l-;;dXfsZ$#{7I$+*)Ox;El8E{18F0Kk*JedHJSWA1`Y7sU@9} zH}&|`0#(URIGjwSV|5b4TqDNunhN_*Bn9|IhS90<7zp6ka(Qy-`beC!Azg;BFi1Qz z;HAo2Uq?^p^0}7Ne(3aVu6wx{M(|T7x+b-zD}(B5yf?Rxq=25bXqta1!a=#e*9xX% zdHhv2%BSSmW~Ep1d3ZEBNi}AVlV>*-s3)9R5=0-Z65)escs_*RTj+&}d^@`vN5z4# zqNp>8JDvCr*Ita4-zjG2E@AEu72{$NeLaaUQKq}9O~whl;XpOk$Icp>01_Wx$P|r2 z;B%Nh5K2n0rVu*dd}uZD{GrI#mz5LY5;vFS*9G#ofmASsCna3Bi0|xO;(VOm`f*5B zVj*`mj>C?}rz9h~JB7!?DNW2&9s<2Yjj0eSOrS1PdBY(2`4X%6+-6n)C(u<>c~Uu1 z8bS^Nm0&e)S%f#E8&mlS%!-54AkiwCLC;L*T`?_|Oy^PRUV9VDh-whxx;&kSDr~Zk zd0MYDlQ&l2C#d@@$aj9ByVS*sG%vw9*dlcICVD`69=|w`=K{hqXg(Np$RhR?@M%y;_FRBwuBU

z{ie85jeh?b<^U6fGl5{*w;0v_gEG&S3xuCV{g4C1!%P1~xZcEr4!HOWAw#MeEFO}+ zroJV1F@JNXX?oDK!h+6rD5p{G~yDp5#fNWq(8y8ZVqr60xy zs=5;0)1O{h$>(DfY^!j{-au)qcop{BLF%{)2dEA7%_^RcNAzlUneA#ui84P}%@eh( zc{W($JUC|ype*@yPqbaT>?^#6t426w`=kU@&KgkHtNSTsEhH1esmod}ZUwr!mVeA1 zIH>bFjP)kkyp9hQiC$TcL|HU;J^w+;aykFQaqSSuRb_LeJnkPMwXg!`&}Rd$BQ)@9 zHh}VPpt>8)4(Yy8)_%}NblPNB!A1y)v;mV#j_nVg3)OJ$P1wvcA(44;Gsf*4#cbh+ zv7>a`92QOu&Q+^I&RpP&U)+jHZcdaIq{|br;;wLB{&@?6#^LvjaK|kuX zgA0Ga0thGNW9;G@Q&c5HWH^);?}S_nLNX^SbVs=5WQb_S`m8e(3n>{};eMG@#9vZ& zy0l&VDMh#oXx-d5nBLmWdr{?ALu@SnA&n5dv4?--o~J%3CeFX_v#>!72!+d(C-?HE zX>(1Sy)JLKgOt)Z*V`#{91snCCx7668uN!@EFsrk9;;6N&I#>S;A<3FRZF6|yQ?)9 zs&OBhw~r5Iea-%(LHqeznDr75^7H{vrBw`g;wo6K`s|Q;$`Xp*Ec z$-raBcoybShvR&sAePA|F|Afo%agpOC07`kaq2Lt3bddn`OB6=HUwBi0I+Yzd917I zDR2{|9#tWV_6Qh^oA3qMD2R3r*1Z3TWdZO|`+z?C4ZG|in)@4nnH{pxy&;-G&CWpb zeTY6h!~YcJdmGl#!?gq&d=?jbt)zoz`5tAZYxX&wrh?x&^gHhegi_s$TweardUDO6 zRO4m_wlU#S%kA10*Cng5-flj?L%Jo3V*5o5SuSN>;+>KAm`i*Jcj2bI(T(C@5p|hw z^XsQVeyF)nPOgrg!xo@2e}aJVI3-(|CGxT~{H5H;2! z+Ed5tJR|0;ssqI?^1~?&K2<_Mf|$M(%0Jw9q@SVr*TFkv(R(+f+N}Q#9$RBaeS1}N zfsMnpkN6T5k(`m2{_{U%VtajrA`lopD&{sPJaMol^yE$K4*&z))u5izalt z563-c)smF$uCJ_GE2%5X9Hl%-{yy4%D51{yXq&M-=i4*`yU!mstr=w3b?tZzpuTqP zQskI&9$OHI&`gdACPh$c+M(YV=0KK9a2u#L4tag!tF6RaZ9kdUH-6g7$ZMaU%qzxU zo0xbwIo8JrGs!*7JbWNjhd(oD#09%$*Y8`LevoCJ@rP>IdeV+tG>uK<8=y4}Hec>7 zjA|NZs%>B!rc?V?-bpkxKx+;xz%K!sp)Ouoo?0JD#YKu)xSLNHj+~^r<&fJR7+GoA zbakc{2;6SRnL>0}&)J&h42|)oR|B=m)`7lpknK04qNLiPG&N95tS;|+6t|pk&#J}< z1AeQ=$^gM!2-Pk;ZkhELQ)j~HAT8D#b~!>_FpyG$v<}+&@5PP7SL66IbSOycB<>Yy z7_7yJdqp}1Yq+?2yq^RT5Y%_AD8S_mwn4Qlwek868Wy5Oa9nA=oaTgRalp?Og=m!` zcK~28Ck)yzvA9Z2i-p*G35A8igz981$W`ORG@-FCrk6vtcz)gva+du-4HZ@mJ7%PX zP=_`~YwGs7ubsyA4fmyxFs(5px37j_#7uYLu6Cc znFVh-(r8YEHbP!-0cV*xhj8I!U~me3R9*|g4m_Z|_9EaW$IENcK&L+_uSH=jq9V0e zV09WqY8i;@9;x+4%0D8tYM^EngkR{T)GSJi#0Q@mNZS5Q>b7Q?(HCkJZEtD$%hha6RS4YLO!S zs#q+UrE~|cNEjNYmE1mX^B~QO)5Ps1#c{}G3HirsagE?2h{T?CrN`By2eAfN+#C?HAe9qqmwff?1! zlKjh-G@0fn$*#GWB)i6^LTS0Pa3Pjv$h#F}OWn7Ql>Hv-W(AN6vOe*6crI9BM!kO) zhQ#h}`6^j<%YbC94?5m21v6#^RZ7vsB@|u7+k6_3qUCsQh&XkW5>qj4ahpjh78R~@ z7?>)HoSmx4YfKPoc7eRcq@vajNpmY|Q6lNeidsEndl#=r6JALZS3Jz9q&*92f3uSI zo!~!XUaQfPHm7OJwIvrE@N(4$ zKs5FR=$ATXpp?}#Ap`jir%M@{IDv&^Y9pXeo{_1&gVR|+71SWxm0kr?5*%d4Cn4}8 z`?Xfy)w`Mo`0P%aU0r)SWSiVeS;;^OCHOrb%03B~SaoV>gCcsT;o4yVr+}zMiZei8 zrJJxzbi9W41{-T?tx9bmZo$)}7Uv@_=lzeooHu_rHypb&J&2>V5A&B_KB4)u)83}! z;IihH96X_2QbxE|)zaoFXvzn5w1L`WQXYlr3J*@@H#$CMiv`Vg%^|T)t?0Md8s5P_qc6dBlLZs6O zi+XoMEgk*I46Pj=9SrPhYpG@*>d1UoaNxG_54#B>=m+!nrW+p005J) zSnOZ&MhhR~K{5P9I^t+>b8VKT5T=W;Fz;Q>38_>IE!*;|xYe3d@3|PRyDiY_LaOU18suOFcv|o^?-)oDi;FBwOWKy z=-S>=gLmU0l+qgC?W7M{Yn9Oj<63J|@MzRV`--iH*U9PW9clQ}p`6A6PFi8m-=IGE*RJQJtuJVS zp-byV2-Jb_W`~)9KTLYSn*c`vb!mS> z0hR+&B0$6RA0zRT~-k@%R4a0{wDCHGxFgqUwJ!Q=%bng`{x7_Kz@y0Fu zzvf;!l)Wi zW5W1r!W&vz=qBd$YZVs&35>S}AQ-Gq9XKU#qEl~Z!uIN&_S!2L>^1Fi$@o}0+8*2G zDDvxo#|UcBK|7cvy&IH*B6YZMvICqwUPtW>4E(r`S|U!-Ydc~~ zoNU8-5D89q!XRBhWxS>PH(TCssg3xJK7knV4P=cv@88urD(YpMntMKR?@y?5gltez&Xk0^}2I z-q$)=`uj=hu%Nhky$UpId}sjq^w4?>PR-~FcgFcWv;;dGX^5+Zy}QJ!1ct3DRcd36 zps0_uV89@%egyJ)k>0|?@jEWc zxD2M_JS8Z|Om8Vke>U2%; z08<67&f)3gYe2LQf2k$cTkCKHn>Rt-4RQpTzkc*{1e(9@1v$!@zmP7VBpohV5D>T@ zso_^B`A2&7E6D?W`xWTwBAW1(_Ay`L01EW$1!jG%1%-hKjKUdA(kvWP#WWFl z?4^JeW`$md3VEY4$Y`S!xXIHs2oGKTM(|4H-xH6kl-3g)_BN`wDy=hG zRM1oF3Iu!9w_5qy!gyXVL!kJmnXpb2Kp@cm!7(ONRHWMtMeS8mx@hHwfSz0628@HSD7YvNl!vH!A8dX3 z$fCnW0lsM*!wZfWy#2b1PBVK^&kJ3slIiNvl#GI`N%UxKf%pVB!#e4Y(c0fE z^8!ed7ref@GpzK2S8+=ZeM#D3OMhI)qwl9S12bCF%rV+|;Z1ndkJ>AMbWhypWgJzF zJ?nf8SQH&rp}A4UX}4J)3(fV3tW7n>Yf0iow?#&<1xZxN78waOKr>rp6D+P_coVU6 zY>`i~f+V_Oi%h2XbG0vlu0E5iC9vg5w8|ctL{%net+YNCeSQ)>;fRc<856X()B0F| zzr%76=rt@%6QL&{c^m8{zs+zRWt^DSunrY*8@!85tPn{P^0a>T_3M3&MXIq7)plj( zYg-kX-zSjM*wx;?FIkM__e)WK8(HbAC}J(t95~UrsSX2A2x==3+W-iPtBaXH>;6*S zeSWjo2iY?U1zDgUrf608K0o^eGHO|Iq!?E>l7`Q;=`i6>_oL~PFo*Bc(MejfpfRRg z$a5|cO&v_NCu?0m$)`-#ssKuNaI%(WMLKYC$H*~7>qg6_Xx#%Bo(?hoIBbFH(ZHEd zXpo)M;HR|2h}E{TXG&>{tmu7G0L3FCI1Z-hZ9+qFhO=rk?7Wf|T(^sU3PNbq-E&!t z3Q^vbsW_qI78!k-=B!XA!n|lka2h4V1z&pW_oKny%@DY=y#TeRH3hCX^WKu zF8Gno5VsDC3&Ci?9PPdT;yN(bcXPouP|K^eed+&j_8wqSTwmBYGrN253=7NBd&e${ zQNbD+6HQEFi!sF#OEkrpL=&SiHn3s`3rAxCdsnP$K?Ms|1bbKPU9orl-aE?z{*v$e zKhHmpVW-?Sx14*09vmXEqOSdTn#d`fm(jfLohT|)?i~hOyfT1LP?hKIWI#K z*MQ4Uq&BUPxYk9nUdAxUy1`bs77{NPL3m>|7)IDk z8aVCmY^JIDvs!p&SdV9esnL2&n+^2$dT_lPX!?5Si^kBV^?D0ViieBo<$BXXq@23} zDKqKh20i7=4cKb0JOk8Cn)XR&h^+wRt4K!e*X?9V~+ovb z^=AVzO?!);Wm2=v`m^NCCR?#$=PvG%yJ>2OGDdl}D(~0;w#$-fHr3Xx5Bck-o~KbSO}OIcAxPL-mfyvrvVF zQU$t~1x@A-V%cZ~0>J74jEh3$Hp$lct6#D)uk9^}LIYQ4n?$VKI@`eIAw%XOsT?J2 zgR*`DO%czKGGH;Do!e$Ajv~97nr=6h3TV4e4;3p|fw^Y_$!`f*n8S2*yI$S%?Zwr3 zJ7VWH*kKwTUL5K4AeO$+Prnl+RuuHDsInb$PQvDn#qz_Za98+XOk;>Dko&1mD@D+~n39|>^-J7F#QOjMJXqoie zE?v8~T-=SJ{kuwP9(mM4`&Xdm$W7}XC zYQG=KC_L%e)BPj5zaJ7vCROVZTaj8QZWannHGV9g_?My2m}jL8eV)NZPUyVCSK^&xb+CkTu!@iBU{835RZMl9BbkH5wvc`{AGTBCDyo|m zx)&#evBIxeK#PIyO?eh!9T#Qx!X1i1sd~{rYtIb72>(WL#P!h4>@QwV3yp9R7z5;< zhuvWweVAujFBeXuH+iOPm;9@K+WezTy9$te+rE5smJFq%ZvCEq*mN%RdQee~*t3jQ zc=}qLG|>V9*^+Arq~)$aQ@c)^$`k`9+;!D% z(zDa(jYm}Jj49f5Pc>haDgQpA=@oVf3#V&4<6_DBL0wLHXP|VrOl{Aa9?3%i@OjQO zLwIEuo-+;e9T#K{6g>g#Gn_{0Y#M&1(3tb4DLBh1Q(!75pcbGd>@PJ5#6G>(%Mt74 z7JyD1Q(;Xt$~_Y5NBav*ZqjqxnF7;C!r(3HqNy6U$--yTM(r+|;=W5-bkM1SlT(~i zvZyY>ahD|So-HhTmmuy69e2;fE?s;#<(-u2@07Ao+$GVIi>6kn{F6(jO3r$~+kBvk zY_JWwWZEVLtb|9JRuBL*GW@Q`uVjGNBR=d9wY_3`2|JgsuA0io37iIAH3f*@f3BJ~ z`aCcR?zP0OPPNYA2-9=$W>p_bxMnI}l%QC#0E4Rp7pRORp9mj1at-TvG}XIq@^=|+ z0F$L9hjz1~=uUVNupBKx{l_6gn@SK2pgfynn{*vpDV%2(-Z0e_frhT!z^=Ifk<3h= zd5l>Lw=9zt7(fXooD9NY+xF{C(;HcS?M!b!d(W4K-7&p%`Ddx0Hu0LXcE1L+Ib-fZ z_PK5|-7{rKLJ@RtTaYguC^YqQ*@R@-`37xVE$D8V-51QpTN?BL9PS%*Cye@*d`2+MuN(oWcUTI=>h2Z&)#CrGG{jZKEH$I{!)6B<79diq{e= z3$TGGnML?-a54W4HS516W$GX^ZR9rWwRpur@+&N4~Pt*HYVmP!vk6m@i)fA8sYe=#{wnHjAYpEF!z!2{ewy{1u%A7 z9tX3J>k$he@?U6R`O{WLVTF<~Ak;O&^_kb|}_T-ZMnbYS;fnYX;PHr@Xb@h?Iw>?>v3CTHys!Y$GO z3)4V;wp!Txm?*Zl7S>UMHC;z5^MUVVA1iB8_pCMC33DA{KJ?K*{XjLhxDM6{ZL{v& z>tub*&EZ`1z#q`DIEBN|314ZwO)sr1kRNmr+A}vQzo|i#GZw!f?Ph>}f9lQxaisr) zJFA7gH{G4p!RVZJXP@JziU<1un*ZNDSf1Nh4p9Qr8gWG+*Nue(DF$#X_3>n18iv#| zQ=$h828WF|_w8@|yx55UTdt#CtS>SbrR?p^A_9lh()A|>IORu(Q|0Tjs0)LH5?6b( zD3`ZT_@l+}r+#aqOWtgqTI}j=o9)BClDxMm{{!VZ0g;5LqhAalQHIMO3yiM&x$wvD zVRLRsyZu;TxqqC^Wds3z1rg{0Hbkuu7vrG%*Dm8i_kx1Fbc&q)S*SeTUH4R0YH4#P z?1?Idrx__3>5f0EWn3kh|Dl!z9;Jn+0zaz@#ovmLq13h>9u3t(NK zMz0ab$^hT9O(2W$PT|`A=Ydu#6QL9HB(dpcQd%JMkD7#FkZxV0Wo16s&jawj zyqp9>5~P&0>9#Y0m`7#zAS|>HPPFF&@ktmi)+%!3I_6?_7BBEkZ|Q?z76+Tpe!*6w5st3w49m_R@So>?w_1eBSSPVtpkW5JGC;qBm7o6Fx!}<|XOWtST!H@54S- zSrbr>?5Zq*4pnC3fDF+o8tZN`9Dp(WPiamxR@x%E7R@5?<6MOeAuWb2hKA{O4Et4v z?OWUGti55*ZohY-g)DTVI&+uy(aY-WOQia|1}o50P5Z8{KQ*h#${KF1a;E&5mAq+8 zO*R^b8Gf;tBx9*fEUST2>G84bR1rVw<7U)K>7=whlpM!G#LJ90c2=5X8&``NO{UQq zKH5?n)n}V^$RbeEBFG}@)BruRj(p?U3~(Q7<5?&Uq>sk4vMdt>2RdI#W8E>X!h+FX zFoh9v*2g#~`z@k1W zDZ{<=OMT4&dIcspVh=G274kzj{YL!J&#sCz)gmx4-tM4TAFyv=X8H012Hi{sC7uAl zP>+3PBQ$PnXIru;36JGgEC!FOx6&We##U^C$lL4-HdJrXr+uI%eEbDV#Z%kZ z)~vTw3_cn76&ni+vqfLAkJ(sp)&;1dO8}8If6dZ>L%HN@wpzIW3XfhZ3I#mt8#WBI zqg)$M<99z2-ecCBJ%3{b_5x?hxnRv%o4(aH4OMb1P=5DF=9*PaR@}R$KRKtI_4vB8_1EXW$oB9n8XRQsW4NR0)%Lx{ao&b4_gLA8Sw|04sfmz zf0+0K;8YgoCjMB&A6N0m1*B6QM?xey{ zeOrBh8qgKo&@%hJT%x$ zv$`=qd5TI~JAe&svD@27XS%UT3XGf4V&I{toRPnkXM<%tBL_k)ErO`%*ge9cIp6{_ zWB(|&Xzu$nNW}?T>+YIv7=Q398yRu?j6^$7u^9vQNSEv( z;z6=c(j#{WR1i*Q130Jg?ja_6HQKo%G)3s88|2=D{UtxCLm7=FUz**64R_Z`^tM1u zNKJHezAx48$!5t5IIUb($&U*)0eAt5*@o%p@jFZ8I!46)we-4kneM_u6>wEd+rJj6 z?6D?$`~jYRJRSc7GvpP8`eDbl^kT>5jTXB-(5qhT4-lOme=;9`pnhKI1H1@m+_g7*6m=&|7z|@q5sWdg!tAh@lJ%(yrrCaMmu(x+ z2RtxHf;IeoZ_53PdB9kv;4cjNR;t*SeF{3&yDuo-c1r8Z+GAzB?#m`Xv6TEbTkU$^ zx6}zQh4*KkFp=oek43mnP+$}xjy@O3)-0OXkJZPUgZ)5(H`DEY?BgIL5HH1984R-< z3;naO_Y+wF3DKW50Gp89pT#*ZxZ`4-C7dKw>RAagg`HVxP4U+}EmW`z%t+S3sugI^ z0PvSZHuLodvaT>YfP;%4Z5qhFa@P;fc26zx)zS*5Qsf{uIU?UT%n89P!?DTPjcFuv zkxX-?H0`u`CxGd2c!3xpM!HKif~jdD`f4_HOax~Gr;!D>9j<=G?5Fg)!snEe95{oG*eNy*e|2rDCRv{LqK;O2}S!hBIuVKr|r+Asur z#B4e@L@)dWl0l;$HdHUX@lX_gY=PM!jA5LD~3 z0M)cPYr9>w;}kLqa^E%@G>Un)M%K`;G5D%v5#Rkc4HJq(PnEt8Vn?08*PAX z^poU$IM<(9(~DfkG0vZei5xCN6IjlZs*Gcsz!Zfw$97sDM-Xzhl z<5_UXWpRzrucG+t;#x#Wa<~g-(9Lly_@^;%@qE>3y+KLhI^*=tJFq;0VhMK*8;HuE zA#cN2aaAa;YKp6IBJD0m3$#>mo9DO{4Jtn6fnNaLO`@vFXwp(~onmiNhPW=>q-XXf z9TCsBEkcwkAo7XptVP4;_Z3arjk|_XqWUaxKM)6` z<+iCaSct^7Si?=w9(LRavT<}Kdn%o@<)(q>!~PO7i@9)|ZB<$b2vIcP+r@0Ye4W#Q zH0DdeOIQlr^;Rrlvq9ZHU&F8XMv_8GL)`e@ym zrQkHMwVIc+=P1&&0`kfcN?F0OQCO=CHjpIk=%yl?k)2w!u%9jrAVHK!x4zrji#yR3n_|VF|%!mHWVRf+=t;~TjZAu(m`VOv&_NDlB z(TqHI;njF*z6;XBI7-TcH7m=vc$B3+I29oI(tQ`+ii3n*!>cr`o@ zF(2}GV>;-s>aW48Vf6DJyc!y(1<|j29IsA`S3^kM%i5X;$7vzYT@>$fIJo-)O8N)gmd|=J+7Pe!O}`4ff*` zUQ*(ImPl`H(a!Ll85Cg*BkQ_o?pD5d?{$L1!*lu|m;H)eqS}V&F6487S)i{J-7jQ4 zaRt0QC|}_6wk?iAYrA}8J{9LM*0Gf`)=AA{8NtuFIJL%ki5O?0w|)=-E>&D>1x_@p zg{2CGY^?7qj|M1Sw6{OC*jPV6egUNy9!_Thc ztfJo}fVJvf69E?!n5%+;F(K_FQcr-1o=kBku)NafhZA7pCe!H?tOhBkSQ%Gn4(m9% z2);}K%dedTQ$CYApJYEH)q#`X$I{4pk^yA;6r{?TROb|nGapooVicL5Qr1PB&L;d; z|1(NHR?$coPJt{Oj-BYf$CnmX_jIKOt}*2(zimh$j`wR+qJ*0KJvw-rt$|b>{xy#4 zV8!S=L`3YoL@CzLjakTR<&` zec)=L*mKOwYkct_gV6->2WPs1zCFikS+=|DdIG_(T5r^)N@EQHp(3!7R=G$)m&5hQ zQ{u?w0K9+TjYwzDfsvm=0q3FLc}zXevmmU7ap&0z%C2vzPBSmC_lh_>IV)0!A)qQ3 z*$R0GoN;=2MbLzSP+Vn5&YS`-L9utvg?h+{(0%I?b5_&cF*avm?@QJ0JAXzQpSi<$ zx^G#3>UNoJH!T=tw(hdMcLhp0DE(_(#b9GmJy8&kWM8x=C3iQNsM&Q^Be>Xp3e-~A z_m%Q#(w@^>*-&D|r5g$X0vZ@r*I95$&UdUcw8_;3+e-zmwfx_8Z`8aRhEn$%(Coto zX!J3^Ad_xqMBynGuXj@pTx;>AZx8r6)3qCHkVyXHO%@dSDh8eE;jk-pSYZ|$CF!PN z3vNPaM~3sqOIaQ1=1R$VKu(Ol#STfi>u$5T!X-T=-@P^1+l0F;NY3=3@E(=`T7MV& z(A+z07)kfoP-EfDGfwpOv8y-We-Zif9$J6Lg{obVd`;Sk8O85T%%Hn?2cub5h?RZ& zC`A{7?Ym>^T?lOBBcEFGuL4x_S6SYli)~@gbh^a@PT?P z_Gdg5KzO5V<)5-Wl2l-O@Jt+Z9HLe)SR~AE`@Deq=b~-l3#hrEv+{d|`nS{QSFFJx zRB6;6O?FfiW-r^Q)o@%0kYrJvQ9Dz7CBT;L&xS&qZ@-#Se6_UrN*F-d-yU&Xg{iUf zb+9YKQ!WTrN=;s~en4#A`5KxpcB~A9uga9@^1dfUyk%`5{0(@Eky~e*{FZ$!2anPn z4rN4Oh;Xv51mzYG&Jm!!SZ$BVS?0Bzml#FYfegdb$;kbkSC}*@OiS5i z@Pwgy1BlVk+}DmxE^sITVv0`n(U-ao06Uoe3sY9;P5_NjcsOt=7s@NsrAjA1w zIjKCQ&#oaH2u(l=&s2E0IITUe@M_}ML*?}&0JbRHWHseyjD7lp!$p(K*bQew3nMYo znbcF|eq|GbwIU-!$9hJ-OXdI7w%0oV$#{~_>z(C77+EBsZ6elCP zimdZ`!spRg!U9-tx;jMqVz37jiieP%fqrRks6{PI-eI(2QeoPCQQB!c63G1}IJDjk;{Bwd zwr;`vxMaAL96+uoI;*w)>&nRd_+Y4dXuUyX0{DoXSIhButUnwzA>8oK*22 z5A3<73Wkp%nt&oh*@He_COk>eXO2`V9So3Fp@XNQB==J{+(gU zUVoZCDafA+BY9ao4g8FH z09vUtAm8hjn@{~pBn@%caw5_9uzY7%E5wdHCf8@U>IUnF3-zAneHAP>qXy}M;|_=6#NL!A)~g2 zvhkXoKsX!-F!w);^`y7uc@>{05t_lyD;8@Rne`}rP=QC{0QQFpyra-nRNxf@Mpb|$ z?TT3er~H!kVg;`tmx{cdu61ekfgkl9QP+jWRpgQRZOn3E2`X3$AHS;<|YPUGYKX!1q#=hVA04}=ghp)&8PEDY60^$JOg zoa<2SXuO$6t)qEuj|?M-0*nS6q5?2_)1%P=8MGyq<4|W^6&^3Ci#OuP5F6TTO8C?e zK=lrVs?@zIhrQBEN~kMWhi%o?s#tbUZqV_%aw`25!(;SJ2%d{fD`R-PNP4}Vo;0Yw ztS4G4V;lV*|4IT&f2lfei4m(=gGT^U-AvXb z?*^0{kK=(=HFyU$uMqg9745{uGRMcueoT7{hsie(A>n0Bt~#%BkhoQLLb=jGC|6On zSP;rp^ldDU^jQ7BU4l>|qDxlmUE;pFgd$Fsbc#6ZuLD^pBkt?tCM2== za4^Lcs#V2>>1t`?x>_Iu;P_iVXl8JOmZ(GM<{P_e|lQ_?SF; z+X%Da4()FYGBt;8Hs+DF5swLKRdKwhUpYm1gEmJxMTn?OKSyws4X=Q1;fSqJ${k9R zwWZYfBVO0zMXKednZ2yXa>%fT1ywv?{K|0AFW?D}K!D8x$Zhbo-c3ahs*s_f$clak4`0 zP546NaV1=(%}ucTo9RXq9{xRIMLOFB0pNR-j@#gjeLLA5HNovwn2*9t-Vkmr@_}^= zvtrj0Np493F2h+6H({v|f#=r5NC0~{gBgf$6Q~)^*5lOU6CR2zrE94zvE`q^xGQW?itd6}x8;!vc%?pEnAyP>Av;hu%jAQfBOU9Rm z>%HARIxd_>e#$*vg~1x?SM1NjKI7hzW5inbaHwwnyDZsD1BB za_;5hc#pnyvd)jixcg8yM9Q=ipmJhHUoNnfZ_bBF#TNX#Tkx__;N5G%vvtr3 z?AZ%weM@j;y8XVuw-BcLa{d_V`8l?S(zg5MvFD%soF^bDtoH@LMJdC5kt44auZvSc zSnlt46uy?uf1wv1-kOWT|7vY7d`fG*@U^YEFv~yQnxpX4FZHq$zeL#^Xx*21wSi82 z$%91MPrlU4e($T2veyy&S}*(Kul2IizP6XW^=rNCGhgdvzxi5}P36AP3t#w+UijH> z^uphMV=p|ojb8XSZTOGI+p#VlH0~=NOc&emFN&=CS5p19sA@M2YRgmgXSKAI6x0sS z2Gh6g^fD*54W@n_c^l+D)={vPW9Vr|Y$b=uyA#S>Otm}dyk3`1d^nQc>crdV z*cTH-Q;&kb7qrz!e53=@10{6rtk*xcb8-EdG~heE{%zkC*PlsUy6E*U>cV3&Ckwjp z$S%eGccFCI4p^Fhci=^*lHPIj;Kg^dq6;sTN`*fBp{xE)6T0f(06ZufvNK-0u65^em2k8>c}451dk@(<0zn`5w;GUFw3 z%QkrzJD=?NRj=mcuX;7Fe?@2JQ{h6%2g6W2vI1fKFn#cwUg_T7Fg@4P_21xgw1LX^ zu-ExfkCHl<)7c)pl>f;zcsOuRVZ=R`8uoayqYpr z!_=?0{_SaaTGZEcw6|XLmEL;M-TR<0q#xaf3q+Yc;ufECy$`~~=TV=(c#04>o%?d( zV$!iM{~s5V2YtD4FyZ!SS27~c<)%sO3?38caOcyqQ6!h>c=t;Hel_v2&5%j8D2 zy=eLylZ!2_KetHcW7Qm|8rw^qYEXrN{8z*JkN{dbkk{~hZPt-Cz-o-uPuXD$ZM!g# z7f2p98O$!!+7qFe(qoj`Y=;xD@ll7I3MTR!%&$qS*A0P&3;xwDhw|mp#?)buvNv){ zh=QZ|@56Y1X_)QaFl?(OF1>>Hz}gbrvqB zhCxdakB=No4@dJq&gq>(xfd*5ct&Xhi;U&rxP z0o%;x2ygr_y-On4p-m@gwN!a*t|X9@ z#!lj$g?Yv#UPnfj%9HghA5BJ`&qvvQoh(|LLkm)QE%Ew7s{Z;_D*qHkeM~570p$?y zf;5$;@H(YG1-77WT3GR?cxgE_cnXTWkU)#3AR_|ZPvu*Y@!C{-;o<-2h1dH>FFffV zq*+L88d@+F9;P78TdCVLY|OcoK8;sF#=L3vMw_SW8Ou(`2LkwZI`55h+3nMLANVuW zox#r_Y0vrZdr{??JgRgH_0Fze+(OaWzs%GtcVB?yxik5%@}m`0KaICF&90$sccSr= zu)5ZzVZrCpi8TH#1~M+4SHN=aln%m?Lxa+xJ4HurOxK6^SUM(e4%ue$+99Pz89SYu zwzt$Sgqkh0c{%w?I>pWApM;%Lp$M=FOLnmxKno37xMMa02=EBHsDLtq7HhC7|Ej(5`rm#l23 zFmFTxy@13(8?9bWJ5jbRCrLUIsRrXIhy-NS2r>pQS4=8jsCPO{~ z^CIa{+Pa!I#Mc9PM4!d=*XT*VS)+gbqBVR7ii=(gee*Dyyq3R*^|^a3-;Ekm)^Wc& zPoVlOny_glErXLXbtj7|ZPlf9-S0|DG2DEPvC2qjnSU^WM z@V>BqXtohbyLm>`1&0tTS|s+iLMZXVJn?KA4c^G>cpcF@b!kb{4c31seOi+;xqM+ zYL}^Z>e5U;M7}?is%-{=yKif^86;7j?oQ!L$^=rat=ww3hq$0EkFn;8Zp9~Ab-yb= zI4)yHA5MF=@-+a(9hk+N;iGf2cp^+#n`d)x!%;w0clg`lLj$t;K-WaUsOe@fl68hn z*~SOS!5LCG?DO5RKy*-#FiY`9Y}ImT?ha7igLHO>-rVOq?7L9dPJI_@v=h`hjkfOu z$=yshcJlA=g-vs?0~{PvtmFbZjipqmGH+364l?A?-Wl}(cz>}ai zUv~i0aVniZ07d?I3d`f~`)4w+96@1T&`L%4g!$pex`T!JSre&G9{(6LIV+D>wul+3 zt;b68Kyl~kMINu`I|3Rgi&mw0uX5L%!aQM;(KMg;5Nsn{k$vcBK3ERi7!P7I$ff27 zc^Zr|?;Qk3c8KB+@$T3bmmT8WaE|477}WVPeQ_8w^fDzK#o@F=JEqh zg3uEd(MxaZWoIZx^;TJPc$mA;13v*5=ni%;!cBjKg@uD5ix%r>qbBy6_#?b#=_!Hv zX3^ptNsvE>CLBTM@3XBx!r^I|OZ$&vq;u)^QRvNcDCpR`Q_4@|FWIvFkpGWk$iIlD z9>YQ>@;nZ`Oe#%1&MzbTz!T79AEfmsz`o_s(G&WTD{~SAB#joGHaey6 z=5tT!N{5rDa7vX!&rV@CEj6K`(X*7^O--o2`DuO!N$a0^Hz~Gli*~GJ<24}Zq%-y{ ze)AbV)DK&{p5|0Z8n^_46n=A-w?cu-&i+S%XG#)_0*&WD5w}p~b36-E^UgW2Ao*lI zum4my5Bi)#?asej3>X57cBP~kF-WV=qnOKd`aBqddlX%O{Ez9=0$#R=qC*F4(QcOH z@q?i~DEiH!t<~(H=zfBtdt!pS<1>~NK#P+@cM34k4pM~+`Uo_>fSNK9f?22JsTV-| zF3zXGi#VRlTg&&Cw>ml(`#tT<9XEoI#%2>%DoOp&dD&60Y5aC zD&5fetadlvZH7J`$tBIu$K!^b`8sn$XTD4~!2sk?+nev^)IVTyNlq~#R^8P5M80L` z$SU39ZRF?KG~yPo>vADjn^v?3J5%Tr?n9SvaX+k;*SB~a%CC7_|FYk1>t8nJHa=-J zt-+6cAPc6Lu3nycTW6KjXw(*y@eX*Q<<#*GHj8wcdWSbOJ(0san^N{!?&%z2MNB#) z$jK9WeMe{6LhtIed~;W?rT1ObGKyx3p97S07Yj3&KDoy$86T=R6nXi8htbq~+)u_a zePPW|Z`yqi8^C3XErc9!nYtJ9Zhjz5(PDb6C~25ySTu0x?iO-?^C5%INyB^c5P96^ zS_QPuqp1!N4g2kG;hrw|D*rHRdAWskCJu|N#W&RdJ~oFOnsr}q@#*_|i=W*`hn#sv z;SV7ALIiq%A-@Mc^#Qi;i}VaXm1i1?%Mb;ET@XhgrZ7KH?3p;&F1pZPQL~49F&OOU z55c(2pmL8;>Jw`Ah-;Qja1@e7K2Hd@n`p)((8V0u{OCVsL1xLPi&^0H7;P+EPW2z_ zZS3+G-MWshKjzK-5#$c?18BTKAVb@^VNZDEZlV@X@U?5{&nLW`Z(0p)N6}O%Ufc%Q zv8}eJIe|1%TIy5ojiXzir#!`PW(_+r+f&jIVKR7{wm!x7eVT4R1r=CJ<)85et}x~| zgq0JPg$8X3^?JtJyTYVDFw7uK`UADybnY2il1GN;LW4l7p7WZX$OAti@Gs)*$cTfs z{N428xjkpFP~f|S1;a?Z%L{A;c{J(;=429GeSvwsm_lCiFH6{gBk+8$6GHa_6pN_< zYI<-VFZF@l{}P>cYAHQ_sdrk?D|Fg%N`J+VICy}A)c-Yj%Hfpvn)fozVOqgW`uGh# zY!wZCgZVgTzJfw_}^RQgCclM58Fl4B+10w}DXjGsgF zLRN-??HOdiT@rONDh~sXSoF;o`!DA8R;8C%k1H%6>-Q$Wb`1Ds4UGTZ0C_?b5s4DMl zc{-IDDi`nAVtys6ijeybs;FfFJy(^spl_|6l?v$XLC#7vidp9TAH|G$w-}>Y*$06s z->m3T&l|JysR&_-c$-+OEnSpwbIuuW>u@RDRhuYNwOVz2QYD4EyTFWFv%>D;?oK`E z=`>p6BKpF%+eP_Sayc8W>tcv0@`dAIB{>elaJ)Gkd|oB15bd0`ELd9UT{N%M zw}tsz7gI}j`)3VuSA;OP#9a}>oT~?r|B|Vx2Rb{MCU_`y@$P_!B1F3f9?I7sf1i5d zYi7}po{G?Mkf%P}2gSo2y6cH9KTbYgO4Bl%e8WP(gyFC=!1}B#>ICo?rpv05hE#&z zOOlsTw=D2O*8J~xxC0qC%u7HB`XMKz(J^$xOZgJUdhy;$oRE0J9ny`*e@HxdM*ny# zb@)041`smOX>WX49tHX+??I4j=7Xu1Lt}m3od!AsWh-f+V4yDh;F}QB%NIWfsD`gH zM85tHZSYmfT6OWxs%>_(ol^d)?8mLzbwfAne6si{Lf(t>Q-r*i=7*`jfFAfMLf-4{ zujulg$u94C>hc~Cay`S~4gh&C-5)D)2R-puI_YAcMcY==Do==gKL;qaFc@B{>8i8ycvuir)g2A=p$O24dLnQ)rOV4f#g}Dev$zx@5G!B)<@iE(PiN zs|O?h5V8d;KO$pT2xiDZY8Rppf8P)VnwA8b9fCCQzztOnBh8D@|7hIVlEOvfT88O` z&k94vBUC0_sRPlZV>mi+D~$|SYCvqTZ4Fnd$kKk>-AJXQgsyB}2HtF2s7D#BiyRtP z20bx_R+Ule`E02q=u;Teip>x}>_?HYtTGnT;DoZu0BILl%PCbY>)#D}9^NXX355)h zEi|{BQa9|3v%{3W#L61(6V|n`+7!Yn-GA*GZVM}~%#{qF1vKiR5>1aPC{g;|*@tM+ zerixr8S1?Mp0hY%0>n4vmkaX8x$Q87CHYwxY+93zjf6F%6Rj*8<*(;BY5^`hTnW+ajxjXoD&=u7OoDiGHmCnroxIHI&M1 z0qnmt(X?0CSlP_~xdP?#mORVy-I<%&CWLTsI zzq4w_4{B2S7$5=1JT~C711tDbek_JOk?zLoTT*_U@&_9AVJ)Siyf=g{q*V0`JQ*Tf zX+Q&o`o3fqNLKWco4dE43EnN%`?RT+5*Q5XQ{)v4<4Yu0N;VS^sE4(bopNHZy>Fk@ zRubfA3e6f`#hb?0QR<7EPTq*7b8kKs#Jc8IR9!aof#-#(lU2|j~>a5WQRw^*wu!o}D zgLRc;$?b{si-T;`gwvKT_ z407d9sNlZTln{AhP0IGE><`0DO3@T=-!-yuLM`3dP8hJUw#}NdM8fLK&-93<)DM&@ zZZOmVn<}he&_TC>g*De>H;p~#;z_?Xi_DUfJgHjq$ZV?CSXpN}o>u%>$1fLu*4dAg zYZ1WAH;-+FS|pTxHddxX|m}tRux+>l)kX z=E`t!aMigbHtLPEqovXlYW>*Hl}6z2`hSjI`-jT60!5riO(dTxKA zjDfh60BG+NVIsSot)2d$Oz#ym9wek`@>dxu!_RDqc+OpPFKm`iEJ0EN1XT7Ib{ zfao9kQt1vyu8mUyZE%v}YG^{OV z(MEdNR#}Y?UeOLr)D5z7YS0*n`4Dqx`8r0Rj4?qhb}*sDp>ekE*CrLuwJL zFyr`|TDmQ(qk`kZ7v$a<+{ANg*%{qGhN!dB7!S{NR=&W)>ffP>i8SFmki=oM_B-VX z*w3Y1lmO>f!O+QNf;qTH`CSxW97bI4f-P=2z~2?WxR>JX88|Q81CohA9<$~MrRaXg zMFK#|R@M}+Flp?saPivKv8&=OVPt!MucW~FQ27Ca#EuDLB`3Pz1*_z-KPnaBF}MCl zaE{06%8yD9W!g$-ZHYJhA>03iFMu7yoNmgl3XdmvYT``}-WVK4%&?y->Sb6#mY3_n z#%wc9{8@>^QrP#iQp=^_f{&i-0CJIAcXZ5tTl4P9dV`d0Lsdfz@+b@Cd&8T*-$1O4 zHGe4U!NvX33mx#1hV=p)dCIn?mr~ClEw$b6gZ{v8KwqVk3?tC~{qQl{=|(?Agnsnz zuS~h1PP=kzh$qb$gy9}xi%dXu zE<>-lXlEyywc&wiYU4!IwUmBKR9Y(H;Yd8R?M_s@Wat{t4pEZzr)x#hKZk-_I!d#K zD&w(|stp4@SYdlQOkpx=eltQjiS9j-q-3DQBS$KU>>diBhr62>HVl8##WpT7J z+R~if##tO79izC8gLp%ux!&A$#X_Gh zR8;3V4(sVTcI)W^hxPOvN?eGgIfs@n1W~`Lqr=hUMan9Vl$I!7d=rcXtsAlVM|=NDqn0Q$JW~F*lr>a)DN0#iRLb0? zD8*J(${M<`6s4>arK~L~rQ0&a%VUU9AijZb)x&3?EyLH zS;#sDfF60*JR>P=x#B4&FaUE@s7M`_EA`~rVU*o9EI>YIrL$ebdeXVYRjl9|>#k6~ zF;92E%A}&94;M~I#lZ$Jv9PU1S*JSmpkx>5-aoLL*gS5G_wwDTl$Q5*s>52sVDl}gwD1b@m{iQQ74VRrDRL5{h*!;a0Q zJ4op0FDOXN>eARu4qPayRH%WXe0FXI5lO^C_}_e<|A7Tnl&_*aBLbEDSH^b{rZ%nu zyRx6otWvsHvqzeMib}+AF`H2(25?qwO)~r1?c*nd9}}ZnPk)nCo7~6p&*dFZ%5cciN4QNz5^WM-b|$$OkG}OLM*)% zA*S4i6j-sk7Y*2~{AHeA&oSX9l(sfHFBv%fwFPQ|$+TpPQqg@JhvRf9JoIsNb&JwL zo{f0FFv6kKt%?<-X~9+{#AQ3onRP^s^49Bga4YuZk#udV(v9}V#ss6!bab7$X3_+@ z&cQ4tB`5(xYN?4``Zj>#yGc!{aJ)rPU=0sP0UTSL&Q|6~2W^A4VM}LAuw=ABv~o&4 z-~on28)-$BWTJiBmFpmm*Nkw#Y;LtS9U3tLnmXBL43AOs^`c(&%T;;gQp~l*{wuz zLLzHwJ$)Y1vfWB2>sH~6WES9p)@_jpi9rXudo-tC_9(&fF2#-#7zP+gW*u2Kz?^SK zNsJHlFjGJEJ!f*;tL%n;;KW{K92Uh7`;=pTIzUZQiaj8O4zs3*L>o@6_bXeV_wvfc zj(UYUu18=TK%Yq-3H?xyl;qk*6FHPSE-WajTBLLAcmAh-vvsA35DjJr^jU z;B0FgRLU{CD>QXFh#h=cRH^NuSD-m`VvCFQC}uoBf1eys{-(PJ!ST#221|0G^zT9| zQdm|ESGs)_ZtnXj;2MjRcQv5ItT<2l{2KExW;cKznsyCa`k-sfMb2tKD~1I7(%ft8 z54xCT8Esp5NO70ssX!~b&03M=2nO46v-=2iYr84*sFLYl?1~`V6&<#3g)unmML=|4 z*J6hP1Fmd-#}u>Vxq8hT$^u2wy${01 zzfChC*25h|_0JIk9jLDevRZnn9HG2BijOD{;Tq~tivXW;^kjXFP|Et9HFDL?!P#n- ztRZXzn8NJ4N})U$;R^274y3JG*hj@F8_N&Dq_r*MiDS&oHDgb^ITQG`>u?d_w zOs(!KT_JdExUU2nv5IF?ctffDx(65rXeW~%LMod{TOUFJJ)TZKRLU5x!l_@Ys0?<- zMJY{|H_d&7p&d_q$|8J4#zV!70Cn2T<0O>}3c%x_azSMbLst3FxJt@kNRU~Nl~F>E zRc&a!+QriHK&&UXr%I4vd?DaVy(^b>i?M6alP7TPJ#Eiqy0F0zpug=Dq~47Gb#L~(wR?!O47-kO4_%TA*Gfp*UAp)Ic;e0 zXKZGY*}BtLppW_*Ap}meb$O-i>uSmN%R~PHcOm>*9gl?Dul@`d`a|7yV9>c)Bp%oBYUX5B}(n7MniO~(o-FXX}PQ?dQ?vy8$8+7;Y@_+z&N_|DwYyV z)|b@$cafWNe%G@<`d!cd#~*t3@ZM@TUHU`yg|)`ZKh(-lMwjoUCc*D|WiRzNVMU7+ z9dTwexVIYboH^cAfG#m$#r*c3yAG*#skb^Er;iDJ;6#@}+xp-u(e4+0^mcpyrS`v++M4!NJBgLL;%{{t?2bO|r}n@xQf5Cj0R`!xa_1+2 z4gadY+Av^}3lIsPNB~kOlH&zrvp_W{oiZ0G(NgOG)ej|97yy7tG^OJJy(#?$sC{sH z{BQs|;Q@sYRCmiKx6-YFs*c=h9)w!6Y-0wgizIYGY@#aslx<%ns*>mf_YZ@->D~^r ziT)U@YD$4{RC)nNzOcbS`pqA#dc2e7HPWCR4Th+iLR8RTYAzSPy)lI_w(HIz=P>r^1!@NDO0Vg~Xf?w7b$KD(>1#&dFN7Ha z%{b+%Hbxa}yAJp{)4BAdjrUAym}Mc?2Ga0Bl*4u z%}NXMN^R+HgkAwKqT<01jbqs0pYkSicgeybNYUwTElgP!1d5A{saK^f{AJ$mH>x!1S`kx)?A*zv(Z_2wQ?XogfnuRtOl8YFB)c`#Cr|AoSAijFs)$F@;95T z`j!>R(AmO|764&R5%BL+1Rg1_F$&Px3n`A%XcQx_U{v5)*O#&;gBEf+J{e=Sk>pgh z3>f|LscO(i8zLR*vEtBq5)l3E0oN7laWSrXxJ+Rb0Er830LEgv;tYpPLGqTPnr-#{ zXih2?(gF`k?C0udV(>2wAor+xer`-Sk}5ENgtHZ@p_jMhkN(5iAIEsrX37AH-mf@Q z$IpC1C}w*kpfBzQy9NT17|TruZ^32&tGIcHXNyjfpoI#aqIQ*^TdC?20C!BCqWWWr zt)8OByXmcmErXMuc^1i2)jr`xp@`;J(iVy+M9Jb0v(9Dax_b0dASxwJRlk9$$myx- zT_~XT{)5E|mU9|NrF{MnJ)5q^7*=lcg_6YVFCH|Wp+-Ty`|}L74RqEyGt?Q#)nz88 z7NUU8R5uEp)_^p%j`-b>rUpaBc05gO?0WgA9ts5BklN*=R54v`ELhFo(^c3S?S>aD z22{uq`h_*GHa47huxrL)+tFRM%{pobRBSkN!C;&O=C}B9G0&Q)^$DSlQhY<|ktLaJ z>u0Nz1XgF$xoT7IHDYZ8wV{raIOc&TdN=ECU}t3*J!y0$_bOC4SM3xy$wdc8M@#U} z-jL}Mfj7OJh}S@kG>c-cUjwNPzQ6!u9ij(7>}yLAM0yy97fYAga`I1*>)y8GCA zEmD7ydZM8*KkO4oLFfb?(e#+K4^=Q_>pzqMC ztxMG=RDGG+z62W|=wyNADSMe3gpK>$GIhthy2X!Hs=cV&3T)*oDXnLC6?v*9S8#K6JvwW(?TZcSY=oJ%J>95wl|*QF=zm3|&=)VNgwm=^H3UfyW?~^{ zLLZN5O9Z&6pG?DJdH0uiP(MP5`e~USGUMd zoN474Lqkg0p>~1m%99sBXKmSDhmPpHrNDEu;hMJUpC>6(fhJ zS+4qn&;V?0;AMoIy^0Rxs-GGj1P9QpPb}?ieGjPbNl{qb@N&p=K=nXRrbF}S0eJ8R zM+-+KO26n4MlBZBZ7?zY29u`StodLQ9G^Opq|+Y%&rcl*05p%E>HHzJ8`!u{4yzGW z&Q*m)h$Q0tj7IQjTrJH2F0W|I4*P|yov>fPPkROZb6A~bn7abfmygc}lrRp#;zl1) zM*w}%^Qih5yO4TJt!g^x4C+l6x>rV$V`}xf*Q%mCnEp!E1aEO@At-`m9UqE6f*6P= zqHd@bOX4YCt7;xwPV%6w6{CV^{}e5l5-v4tPQ8y~dS%%zA6LUnIMp$o1wBi&eQ{PT zV}OO<-vw$_{46d|FM@21y#VHH8=blUp7AoZyr{;&He&EajB6I%y9mI%9X9_t`KLR2&xTcOVq!=3kbyp3b>(|s#DEyD> z>OlW(u3D&lUvPF9w@QE(*dvLgUKDae?GvzlyPvlA4AV9lwL1@trA~~8*jC)Y{E)L? zwA3H^fvUGa-wxV#+)@#PJB7mTU^lwxHnAs8R&V%~0TXx!bFB#E_rOwsymh&&jtyK2 zgms<*e+(rOxljH5@b+Rjt zIIJ@j?fM~rUl;)$Anwo7=0dd+!`cP#1-<>rrIxMieKpv`_E*JGi4W!d;1W*Vo~Tx^ zNBy3lSNGBNCu%HyLZ7OCVC_zPsvZ&9xjlO;%6bO&au*$brZ#ZhDGCX;_gVl{cP;@` z`#H+mNuNAdHX&dfbw~55z_QZbn#1&p3@iwaSLXBtH;&mjsKTspxqKfx* zF{83+6%x2+i3DZr`F-s9{a+$~7FB$S{9DEAawI)eBfZMMlV5*R{{Jxc9$-}*-Tyed z_i};Rnak2UTtE~%*s$xG*kVsF8a2fjyV2y$n^>@S#V8&%_7b~-?PAB?d+*qZ6?;Yh zpVP}JSR6qu&&VawF#h|n%Q2ToPkkJ1xmVzg~>!Ymec5TdrO!a12##taOp-oPeFY+Ybr%`=?5%uN_)goZCtloR(HdppQp@M+&+5#H;!m`X= z5{08Em2~PRuSBhM*1>~wi@>M_9uP@?RStYh12G+6qbg=)B*=3pdqeoO=Rg(~2j3dLkW@~{xD<6X)5jWg5HJrLDcB}y4_IP&4d z#;y1(fyTDM9>zk|Sg^_T;_oWkIDRg`e6S?%0kt?9RgWC0adv7Gz`lXK?$!WSQjuT> zHwkty!^5-;Vjp9ArU$XkASU2T{xfMJr*w}4K^V+_g3Rl6Fe?ILEd~b`UKO>m1%sdO( zvE3G8CMSPy3!tXet1!AA!6Z^-E# z9TH-wX!$@T+EdCe-^PsbG=Oc3MxA$F6GgMxP|H_~VGZ#9z!+8ym&_Pe5tk=1>~oaX zES8m5C#{|9Y?wEM95CU+>wd^R_5(+QpfG zNT=_^qK(v-9<+I=C4`1DVOO>~l@jcM6p=kD$y(r2uM{gL(SH*7<_@xLIW!|5s5NL? zDYhUmMdUA`LY@Uz(16lxqQu`sltJJH42l(Kv3^@(D@&QIof=p1)DT029SpbuKeO-3 zk1a6p>tB|AtS*J895u|(CMBtQGTkqW>F|O?0v5^&pbyy@5NC}NSrzp}1u`fokZN?r zu{!d zx8$Py=mQdr1G;&Kzg&~FxIAY4B+4q!hN~yuU6UZ;O_krx3M>_%hUALu8~44L1pu|O zl`xM1VTI_M659I<_f_7;+zs%m>M7?e0ChnWSsZ~E8YQs@CH_aQExU5R;*xX~U>6N( zsPjW*tf;v(t+KgN*H*^dzx@h;FZKy@-U^kjIS_e~W){``=%Xs^w&!t|lSk7_T{Y@o zmGyETbD^M>jjAy(oO7R4V;j^3@NnQ48bl?lv-{SwRdCR4p2_?v8(s)CFK`xKQV;_O zc9R-#w>8!|rUsT9uoW|3_$4`S)no@%_q5{$1$)$CS+KInu7h**82P@3OBz*w51T?J zb$AbF+A$i63qQUn*xaADsm5(ee~)Fj4_a1G$m;j8M;%J7TiQV}b=foUC}H)mPi=EH zuE%=Wq`&$UqliCUXv}`)N3I7M=?`EYlmvS1nJ(b%|;**uUe`#)w-Jq>Zb{~3lA z3}N=?81-c8^94&({&c2&0l#Bl0#AR%4yb__D_Q#*ibSI>=lRO*B+G<1e&11>^ctQ4 z8>>K=20>Z=$tVYV9bGC0--Ux)v*qe@2g&Fw&em<%1$gDJNwvOZ6@91JLpAC2S;`(f z5e`kypuyj=Y(R1mSF!!S#Z&}-tm*eG7z8dNDEm%RuLSMz#G78U%*M^nU@7lN*d3ni}>% zb)#KIb_u~-$%fqw?+EZrI5`bF0GaJs6EviCdsb2%;!{XLdb>S(9jN&q*)L&*p&+1@ zu=Prc=>WF3(wOP+4jI$|ne$LVrE3`u1=rxRJGS&@8h_?ZhV0uj9-7LOz{Y zmiioVbRHHBrs~^b83lBK@_Z_l?ZP%-cfQkwwE;9U{JX%0pbyfka8S{T#Rk(1I52_e zS}RM3D|rS8eY3m12C5brln~(*yRsE{d097B7TSl4-LP9@TUV;^FiSrWu6KIbzhxHV z4gM+ma)gx(v3*W0e_|)$K|g(YnMj)ciu-y!uPnvN#%&L{eM4DHE^0zhZl%7@gLrVD%vr}$Qc9N`Z z0u#MnxoVh^P*8)F;(lR~>WaK-zWxQ(EPq=~3yxR7>tWOkymj&Y*a%y?tSrq{*$hCT z_1AAJ8|WIya7z8i9_Y2xfgoy0`mr()UFG&;#RKP7iMF{wHC)Pl9Nh4RyJV`~pS6SnYEpk}xo2o=f0TTi z^a1Q^$Z@+4U;#jE3>v_y05!U40BefF%?|uIvNRvaz70Cz$oFv$BfLEF+zPLWdj_%! zplRO>WaY&HN3_MTxoCJ!nIoh9smwq`oNqaZHH|y&$Oqo@f&#F(yb3cJ(25TN6%7|o zgV{`230@t{60Cb2hS!At@cLPH2=nvE)?@7Y6ARs65aCa)hAJ_J@X#6>t<^*^d&2GY!Co>ci0&OR4*CYza$g#BkQs zc3Vd-JGI#C6+#!g25_f!1naF>XE*@Y&1w}LL{mmG5#%zzhK!|vFPC%t8oCh2;(F)Z zkr);Ac2$W0z`&1YzpGBWE1m$ZW;_Ag7}kp|Hl0w{=?hKf$T6&pno)(i2PHHhYYO&4 z)9;WgF2lwY_U-?%XKo+MW~d{4fQyd{qCS7HAa$!kZC}*-h;IJDssbq#H;(m(Bn9CP z8o0cuE}|CW*%058884mGEfr^Io+Rmu2~0W@%bI{z!m3Vgy9(@@+7XKl zxLQ^7#VpMaSpZH!&$gMeOLc9mYqR@gA{%P9C`1pUTOEt|N;?607(m~GwZ6rJc&8%Y zQgXAPmR?zI#=_$Z1M;G&mh?o?x)TbO7+J>*5RJzJ@Iz9M&u~zg1SQPQpc$~!%;Tk7 zQRZakncwV~KiO(E^?!mg#7tqi_4+cnQ;4J?qwL0P*B!h_ud%MUbAR4+Daz{|pwT{=vre zyWvMU;Xz51R^jsF@0lFO%V?5oR!yNywTybDE>d$2{KpSVaOGvb4C^|F^bJ;~8uloMQqH&q| z7n=g%Ud?$RVlFtpo(EFQWQ--EB5nPZ<@}vb@qcMoiXRz=h`7UH-{=pbIsa8;sEk+TD3MI zZmo}!MPrQs4Yc4NudoJ;AMO~Rouwxh0Q?{zNH@g*U6t| z++<^-%r}wlZDhd)LYSF39B%c6#TYN2$gVS!&0p}Z;hvvK79;b!iZL^fm&JTg&`@{K z$g-g_XI?`q-M1E@|7^ngGFux?X`9#&QS18+h71sAscak88mMlZaTuz+kEoQ%ezO;9 zn_`TojhU>v!|al1F!FMV_Kb1$2a1V7#AjJ4g>GgWW6a{CJ=EH2ZL>s~0h30);mVgn zFE+E?a;0qF!p_MhGJ7lQ<8dd!xSIf1AJKiw!62xQe|;Ldjrn`uFQUoV(hd}W|gh>(Vv+5zr_Xd zI^lr=av;-fqIm^Y0N(V=;Da$Z_>1n-cS7(fe_7362ucN28qQm3sqIp!@2BnuJ?qi3 z4-(5!a&zuMB@bewJx;9-V(ed0*#|6&CLLsc>al7Ql8Xk>_Jb@Aw$--|vbG?PnjB(F zz$yWW2sm?vT1GMB>dG^6HO9ah7AkfvN_3ntaFv-ZQ*n@yc7Qc{M?6k-mxQ#U&knOd z^-vu7Y|vWMfy3-2h~qs+7$BoSJ{^O+_B_p88B&7MwuQKZO<#Hp$MsgaxGf}r#HtW4 z%Sr$-U~O27n(gB-X-o_GfqDb|sBU4>KoDUn-uHBOo;!~HTfGlsm~<3XrCDq#s$8b> z2UL4TYzaDeq_(d|HQC5hh%t4NZE=4%)ejh-wj#8ohntZ#UIKo0o?<24=dBFH&!?x* z5s#?t&``e#mEt;5>5Gu2jiHo_5ZLaerx)30u<~e@#acrmxh#v-SNDPupIa=L^h+#J zT34+9y?n66qF3XqtY+29v=5REM9%pUX*;sR@6D@G&`mA-2=HEhdn+PD{MJ? z8foLtxS3K+EL?pd%$~V;`|!~JJcJW@yr~;X2LtO??!~%UB19EtI!es>pO*kc&41W; z2Ey#TTOa(at&$l<-Lu z5K7PexO3cP$OF}sc$co}@)b4_!o1(FvJY9>c46$c8Ur^6xgxLRTm|cWjDoJQ55x}W zH9AInL4u~}JE+Sw*1}U}--qn9^BSm-W8`(6b;5l8G1TB5U*_6 zJy?+0^y)ee|LIij2KxZIhu$~XGP9V&D8^YK8xk*+)BSH|#?3aqiTH%hcPi~c-M$I& zp!aUF&%Gp?KyLmzMOQ(Tt3z8^3vK1L`=BWC2W*nWXgR;U1(_RFrP8(ey)yYs?lCV? zHp06?p0FcgXt~Cb5_xnTLN4i@6;_*)tSW%y9YUBw1kZ&u9#U{WatKR#N(&3{pmlfH z1@zeDyXZ!^4!O%hY{}l>oe*m!So523j~NnTZIuw~wxL>mN_p-89QhvG2{y4)4g}AD zQXg(^51{oqEKJ^PE*fFtv}L5b@YO{ze!yRN8ky488i9qS_`r@oD9^N=ntGr0RF@ac z*8^hnDyOCwrNeWfGw-bj!mjcG)3KFId%!+-ZO~3K9z&_-#0H&0Z5Oi2l-x9^EFEeR z=|$d;ka-n39(2ir!9bKZ`6uDUUHT22!_Yth;TGYP^^iN|$0hLMA+CFb96h zwz{76wCqYRcrerbjgA<36um9H#)O8j3CMZQX41e?)qN@X=Nb&6A%v@h1R|5U>|qYP zzyy0pk6*BbU{+_mWPzTiOnMt&+>I~U6d%NsD`ecI509Z%FB~B>@D*m!8Y(l+8bU{3 zLA^4ZymMKwZKRjf-$-OJZ1bPm5pO1!tpzt%@-?f%E*-+L5EkQR45Kcup}gHst6#G? z_ltwLK9RCsvs&)`w}ru{T#+}dd-yGcVJm5IiMlmgN&08A#e2~G$wecj>uGPieOkEo#LHh|lT0eQkeo=dZ1reiCzD%-v zOHLgM7>qX-_Yn&~`TQs9>#qe`7$jgyTmAtFKP||%P>*p#NYfI2+CX|5fX80>kNf0? zM32ka=Sy9EwQ8{>ChK( z{i#!s#>D{6ad3cv!-9sxq0I2&kj^a&((**VSwY%DzyGml90?5i5>FiL!J3S={ay$P zA3^CMS}P#eyhF8yK>mCYs*P2kCA|L;qHeto(-wwdsp$(W(w%|&c3YEM9C%ygim=PY zh(5ZA2y2j1)7S%E?@?leHq2E@Y08e!{FRB$+z2gLwXXNnG%8gtqMk&0223gw|rF}Kxd_dMyC0@BfB z6o4l@9jD1?0Z-!~6MMSC8Cq29t=P|@Xpo{YSSrS;4K%lymf+)5qhZfr)>+jJi*f^f zT}rR*EE=z!FJ{TPbd+Yc(%?#?uU6G#9uSg7&LzOO3fhh}qNMuoKFur38P!(1_K#u^I$rZoU5%;cr52QF7V`EMP0cT4 zMu-0`q)(@ULh8uE%(pECg}r^7`u4=)yYZ{$?R>ANw)LNldGm8YIn`+DFRmL|7~RRc zDOA*}-kOhD6h-vW0_m%sTAVYtxAxn+g_`ZbTh+*(T&TRS^KSCXb9nxvdu@eVU(M_7 zEt=CbufxnP>1=Zbrf5%;zDHmajqMfSdQTm{<^G7@y8NA&9$YBhQ7ApWPvDpG|+v5R>Jil8SMx6{qB!FfM&kV36)m=aFae*D`c%p=R6SV56 zsT65#t?UrYZ{pQ+x_-h*e`<>K#4%}#Ru6l2))cL&N6OTrP(AN+R-CH2D^^&_jHF9X ztUu7)X|+lPByFbV1#&51rnXgxfF< z`tEq@SHWJFmd(c5;WEGRl2)E5XC0@mbFh)5QuZ92Pur>6T&*dXr%iJ)zAI?;Uz$_R z*-u^PX|-X!o;FYWPRVr!%-3LuLG;N2Efc81z=hgWpuJZv)Y^zM@oy#kP#pUSKdP`u z`vSQ}FVfQSPVL3odfeqM)+XYe2}`u^p`CcOM3bHf=PlJXsq+(P9qsSC0o)Sw)loEPEsk({4+MaBov5f5;cHraCiWC(R#6COf+R^!OO z;GDZ!>mYr;=oy#kSCevFO>qI-4FCn!*Bgsjo31n-MC6gbFL z>zcv}DO}Of4GtjI7T0b@xshcn(n0?)2wA9mGhd)m$nqK4_tdb_f7fasgZVzNR%(5}%^Iw*mea}2+7b-Z zpe=YfiuP>LepjCbQC8n#!OqrO<%@5Pff_|0dH& z%4!7B{RZBqk<`q`j=t1DJc?$8KMV1$GgY^V2kYDM4P{j?L5-3p?eTIs%dSu!M4 zAN+v{*{?6dEV>!jf%1@cJ92%PH&*@sm0LykN(`~f%m?d0-V|itZmKYWwlT}H>dW%) zS19qqRLbQiECagc?c-&@YIq88qw*6v?$Scue!@uHmB2%@p}?iYxMK#%QMN(lJPMJ% z^c2Wh%-FLi9H_aSjRUEik__n2`8#vO;wP~d*8cF1-GMsW#< zFKxCQM3r=)fL=+XuKTqR7~u`u4>RuVl(AoPgvlvyLO;-6i)^oHFDRQUX!w3Dl*9oo zz-E@8Oz{V_DnWPyaKJ)e=%H^{bcBjLfbBYs&L6}}8xCk+gu}iU(-z=fDf9FAJ^(v9~6u| zb(jJs4gboz$;l*V8m5u!;)bupZ+z-*Y(VBi^HC3=s;QHIxdwc2p%Ta^wPxwmX$V}K z7bh2-z_a3?13Oh;ojH1GFgT3PD@ z)!`2PIf7(n?I~Ieke9aYmB?{vN9)41HF(13bVpt$ko|;K33qi*n0M_?X#L1Iiv>Q0 z?w!>>P;+vr+BvO%K2UBsZ9k`N20moSd99ZE2rdcFV+(_X`MlONa64GHSPLZa(u~Qq zBg=@qA6?KUdCazfb3kDaFKAWObGg8hXg|}ylUm>C@fY&^7QiVLi0eWEe-I9;J}#0H z>xv+n{#Wrj)ccgS3Or5u(^`Yb%*aY=0^;Ji=^OCN6MQ8szvMO>LQ$I}!!5f9)yN7DsZAJ6aQnaW~%qp#T!0$31O~*jg&u+lb6-GQ!Mj;WXyH7Ed4LXk7x& z`@V(#x<%^_>Fih^>pYnQG6(R6h7WMvLF*pi^xHxDLo{wIReFeT+)f=HYJG9J`4HR1 zWD0zQiIGgT9%;Y8s(AGyBp#;AkHA@7b~+#9b=>l&;LtYGnWtK$nzNZ+Jk_e#fTkI{ zHiUAnABbsg{-}d^(DB$+pst2xinKsAR=zfePSVQIEtW#cK0+biEh z(abPgP>u0SKE%wQ5Ca}kfM^5o##1k0_T8UezSK(NQv4NI#R*jZ6}q-Rb$*32qdyIKrTqte z`sS4uz&5#D`8%TOQumL*eJAE35q65c2!s&~0ABN4?en0?#Svu2HN*v2a6h;g*_5jl zb4)LeKr^m~1?p2@9b2%!F%SQP#h;A|hLa1OPQdaArCvMf`1Tr?Vd>7NbOb?o?|@=vfn$oW|1 zC6(Yjqs!GLjjSE=NZySfsG#bF*v#9bVUk|a^bqe6Ko|A zUl?%YC(k`BB8;01ses*kzFBjU8+Jw`uNg^hIKJ{5k%ZWnP;}*I^W;jbRD@Ykf$BOA zC8>r68CMHOs!F%<`Bq@vZ#!Fg@WzTdR!C`PpsEj`t)Bb?KnU$#d=yxYDPBAdXqGKr zyrJ*>zl($1ex>5bW|B5GwowG*LD+~YGHz8M$f=5WoEW6`8vhmxd7s8JFx-PU@Abjt zOrbxvjFPQ`JkU zbUcI;DE!W$JQ0T^vAQP(;;X7rbC60HH_g&+7sz@jRBs6yx<|rjy0^d)T1E;&}_1 zw@W;acRw~+Dh2FihvdSo@(le(7XrF@?q#&+@QJpQ=p53Ohl40(!#2GZ8jJV|DHRhl=F z*M?>I2rU^nVb>OFqnye<{`9a6UnHN-D9f|twSNL{Ca*^m_zxbgqA!w>$iI<^a}#+n zc|DNG>&UBbIoEx)a{Qojg|za#Jw^|dCa_B_g4#(7`>InaM%pClHLC>tmj;EZ(@W4; z@99E0w4)O56uymxN|y|IPw^-P$X*3GJHj<>(y}6mP^P zED_h5`qbco>LVMabz^1dt1CXAQfN*7U-d;irPk!@)jicDrm7q@T~*zKyi3OwqZPII za;S_qH|IrZWNp4f-B*qF7V~Y8r3!bRW1|HX-9ASn-{%dzUpO?5+EM>fMSlsGfJMu608P;1NlbCbqhJu) zEUb(l{aKgarOJQD{6YicV!F|$`usC`Q;$19qdV&J-~j2nLY6@$DXT(%14IM)H{jjq zoES-O>G9=o z3tnBhONV3OIWvVyeh4o^yUOY_K-au=zUg-WhD;_i0hxuQ>r}AFsUPC_*^~GdM2;C; zNqr8tRj3+d&<7v!rZ^TSeFQS)03G`X2THm#@?)H=Fzb2$6F!{DlWc@yjLz_((f3P+ z(EU$%Q5;OcpW2b5;9% zaIJ4z@*i>6{l|pnRCZRZ4Kgo1H_S9wz(_wVgA=$&S@i{comDU5N4{V4$$9V6C#`vh z{5SPBybY9^-P`d0xD-!{OS6=Qc%w0Nx`!>wd9*F|VZNC|l!37Gklet~GN}lhZ2S=G zK^4E{QUAZKn}7e7mz16fIOYDxtJ2kPL5D0Q-|u)yeR0`nMdH*UMvx-A#nj|G9$Iyg zOhuf^yj1hnFJGqVVYoGok?>wAdRQoP`W56{NHg)izCfm$hTS*X@^{M$ma*-nk{p|XXIn#`t=9onoYxy4%%$b56Cr(l=i$7zPU_$`1hPi zUD_jYCe3ZnrS*2mkNkHCt5bjE-$AAK;zx|q4CnV9c$gKU^L}0UP2_<&@y{S>E_daI zlw=*gZBJS1{xd8V$8_gGVz6|f3|dxB{SmaHJCC8wHSFcd?X9s0aM4@o0D=x%?Af0IlE19{hoN<8NnjPyVR_3gYC?{1PaLHNWr& zu;g9*AKn?|g#OCsVwcVQm2bdZpa1d{_3?Ake?!w>)9=558JIKGq&n4~N7<>NTq|;E{TZRb(cqx~Kgw(w z(~)voGf#5x_dMv20emB*&n*V>8UXH%8OXnZPWZt<9)q(kU=aThTwVJ?ph_mt>Onlg zHo*gf53d_ja7ervgslM)AO`cj*aIF61_!j2!iVr7wiOQp^}l?iC3pyJ8NzSDnfKD6 zytck0yb}0f4+ym50RV!|_VrNS6|{YqVW{sqjUC3v;1WF?EY$$&Jsi|vHZ2(rYH$F( z7>;QKFJU9Fi)2&75uh8l(Z~^eD&|dzkr>o$YCIC_950OIpMwLijpFsN<24z@_gjZ~ z!E?ms6GbAZ`2}=A?RG^>UyJVaYBaVX1PC9)6Wlk38O!gHQnPv}Qf5xC=1)UgSM#x4 zx(93QGbIA({21O)o3R)QmU{?YWMoic3jZ1c@{|-D+u6{kr||e77yl0jM0&DEG@?7` z8z7s4FYOyC{EkZ1s9)zKiQRfc_s3#&jHSdsc$>N_lxS%ljS)6+ct%JE5OWW(3(4ti z{=~0WU~^Q+c56)%d~CVN>V?UQvBDo?1-c?`yZmA?>ye zIe`L}Iaf^JRr;PvHdVnA3oDhuxHCbCnj;pRqmhYw$ULH@_Bsb(NLUOSkKTFXoXjx? z)`_OH#C(`nfEWB+ywNJD?Lm5H%Up{gD~Xpka7O2a$pf+ZN$N;E-p4HDBtkLB$5UR5hQPl01Dt0-m2srtpb8G;|QJqz2<2q$B=f3t{?jMe4AVsrf{VCa&!# z@~F3k*G4wLNT$-niM)LLkmHzd2t5bZ80lz}z7ryQ+0J>`gFR!c^^OsO zR*+hH7M~8*WdAIF7~I|T**s3JX^Rm>-DdDe%0>d(W}hS5Mq}piE;y`T&jD580m&nX z?dddT84vNc>)DnV=qw;ah|vH=>jF|Z-0T7v1VVV=X%sKusR5meBJ9~d@VrlVU|+HLZ0C5`f|)FIScU}PZ#q3p)+L`vz6wwFlV$bCrmPpTZA6P z^~56HBuF;iCA*g1p8%lQ%|m6Ts*CwIA$fgjV#BS`u<1af|2F$-)nbqqC+W&!-W=y^ zg(bY9+2Xv8`Ii=Z=Cyd%6704sY5NlXUhHf{EV+H(X1sJWCb?wWE@`lF_c%8nfE^yQ zln0f}{bz<@BSXv#W0ZfqIh#5!<-zLRc zny|Y_!x6NN?xf-LchaeJ{+)f+{1{{Q{22YLoSHSMdr6xgwOY<27!r*+<^#GrvSJYZ zxtvGZkzg#y&z(t$qf~!7D<2@ySepL;;X~wuuoZZKL}Nw%gDuo{NSr@?wSqgEq+Sb* zRt-|+(zd}Hv)tJ>nQ0UA)0)e)`&VVYN%?6X%d`PzzR6}9WNOA=&Rr`oL^zZe-2_xvh zIvxnd;o3T|E2k-DJ)awT+6%T-u4P*w;m49M1w+J3>miugLjT#odt2_k38beRcu5bl z5hr22+K~BK+>oo*Mr@MXXx>KdR8BivZ-M|%8SUJf2`41g7hlZN7J-9J25w2ZO3VA< zIz*5H+4~J|`A8nZ$8GZ0KoC}!>9ei87cKM!C{4>pmQ~uuJE~U`;nmJFnAUCMFF-J? z-p+5RXPApEPF`-YCA#S&ZCWWTJgiQ09m+NM52rMRZ$lvmDi%a_ccQCvsq!w~BW_Zx zOCDj>hgShE0`D(P)IbKIr@}CGFgP{{+z;*IvDV445aA@YFoM7Xd++8yx8DG;7$ExZ z)P4_mV3_O{wC0`rP$)K}*(o{)n@KvvNNBjML|>DLKks1`R`pG|3w1JO54S_~w`dRlHEOHfx8XTXD^S@w|W?*3bk#kv*%uZ zR=PWDzMq%(%Js(lmiAO+ZyeHyvU&w*q#tm^ko5qF=R>4?U8)wf`5gY{e^2l$r;Y>~ z@T9dF*}t&2%6~eeO7&I+58w{mN*Ra1hosW(L;Ry?tRah~w!?x(TBNZz*aN8vlP2CU z_IA_vIBOgR85D+S+_L|r#uAGsZ{mYge%H)v-w}NM3p#s*&-b{UfpY?4y2QN^1+afeRhmLRyTS|Z{i8m=Qyvf z4)-FTc?gMd{5XV|t4P^Xw1hez8-w&Ieu1i=;HA_%h+Jc{#nG4(++96hzL3rQlM{Rr z4Bt{t@~gq)>J*+)aK3Xd+6dBfLFvw_5DXJL)o|#!wCEJ%xw*9W6o{l;dUgsLi1}3H zG*8SAPYEZM)Z(!kLA_3MANBG+8gm*A+u>Yz8kDzGmv248ldQQMEMPbPAb;{bi_U~f z_bdI1Fl@6mdS-hji5Q$7xRq8ggb_4vOPM6yw_LoC9li8g1WSV3#tFbW&W$X4Aa=ir7OO58E4`ZvR~mh zT-EwpK}-%K`&ItL7a`)Lrg;$H8Q4)V^lC8nj8$pE<9K3DNXA26(I|b-5WGrUD-OWvJGa(&iQ` zM)n*0d-xqReI#$a!TVc>TVkNuj;;v<=xoSurqjf1zM{$|Q}u`i<)+{A!w~?JR)Og+ z!#tq@X0&hlTiRe*rFWrz0F}$H*+g%4ly*RvKlg8(yM>)XZSWo`H>tcO0X!MCXzBL_ zLiF;#p!=V5n|Jli%854~;s21wvqagVzzYC5cr`8ImQ$DN(^Zx3>b!Q6sD! z9eK*zavAhfns8xT89=q3@nrW&lck3gGv?dn(*@2_Rz2tA)QwyUXhZ1R7yP;V-Ya`!n~?Q2IdvKM_B3bD;|kK$a#h3@;t1N^N1gE!S7$9(YZX{ z<5?J{($g^M_r9pdP_z@szSNb+3q3--OZO z{^97ck4p)su85A7{5@ivRlr@J^O#km46T#Ka9n0G$k1y!uVwXpRmW!NpG)?blqCS8rmLj4KyN4TY!& z5;{c)c>sCZg#mZFAK1lIBxc)1QDvsn+gkwX=%i-4=n=8NGsXitQ}@zt-OV2oYXOp6 zIy-}Y;i8VLQ=CygqJm^OotQjCqD1bIJ{Y@05 zYC%F*ckQ9%Mi%K=Xy$Lg&-4uvb~OWTA2wJ5sZ6U-<{@{81DRoz-n(W17FLAaGWj;A z^Y-D~ zF*ak{I6wW75)Fegk3#O+V~oReD;(}XUQ$McSOGatr$`YES@!5iQ4NWEB8AlS4u}#z zLr3~N3eWaZm_tN?@T}$#XT9sOh?O4gU zafN=4#XJQ3HCAMriPdFdpCV@BrXs>r*0MM;#Vb!)i>J%t%%?eVLTYQP78N(qlDJ|b z0ovM6i=oYTiN%Xw+%wln{pp~1(GraK<#r*{2ZN>r!=Lss0#Vc$v?kIRTg z(5lWTBbw%GRR=**B&1fgT3OLVeLbIsmle_!D6=dEXb@d3D^j79_$@&&MZLL-1}BQu z?vT7dZEBPg-^rwT<-}&GM(tEybdvXH%Hx%p)UAT(DsL}U5UJ|(>GW$w(M8^8R}@k& zTB?$0p_%$nsc?PjM%9Z%2Gfj6qQ1=ZcO@ZJqdz7IsT%z=Neq>$(YVTDV^B6TlJiXH z;nUDXvN8RJ^F?JW+4ze>64~CcDq0*NiEM9uXbCxc`V|73=XL z&8;db1i^*cfV`3mpeMkAQchLzmG;U42?hkR?nwBwnvhZA`d1SYmM2BXig>xh<&m!jKBb{Kg?97+J_=WK#X=;w*}Zts#C~_$%(4l&w65Jbl)E5yVFBjw>@<}3+ zqDJ2dHXd&VzhTT=QOM^aP8jf_P=0r=FMcco%~^1Ll;;82%#cI?QB14p>j&M9#ZKTI zY{rQNel8Rq-Wg2R2BK0}hE2a34#kIlUm`GScZ91)^s;jn+|tu04a8M-;1X(4O9@m{ zmeBMQN)(km0O0uGh9c-)i{VK}ZT_b1m$T^ynCaGu72%Dyduw-`K@2^ibsoTo=yrjo@CO-rXncpNhUM? zhA)AB?u8r#FBujnGvqYIK604?nu(va`@XV)E_eQ^%|w)Mp#%)gdTy+w9nC~Hcd7hr zL}M>1!76J1q`9co+^oI8{idsSW;{i$lPra5JwDNbTAA_eod-fKpf%A0@|$ka)#joY zKA*P`4nDD>VT0QOq>ryi{f1%;8@CWaX!dt4L<|HELt5YzJWYNdiZ`GH{5}$Y;PTf; zVw3xmG5*F`>hQ4$ZI<#frh{q3Zzw&DL&>on$|&eNE!5#z+|nk-zd1fV<659`b}KV( zxET{inG+bSDr8lv!{6cm-x&YF4$pYVr2Xf0#AhGMQI)uCH(mTqgIH;yc`R zXep{#FH6vU!dJqd*0mI^;`3jduNv0|+sy?gXEfHPTSp_HgMP>x1c98uwOff``7%5r zhlBL))(XeiC0g4`gcs{?h9PFg5j#8=7WOv1=CWq4-s|QAn$f1l2hRFmV*sHP?%En- zw1dXlibvCm)}ow?B=M>%Z+zV;PAyq5;dZNwa|W?8j^RY1Tq!XuaDAX@-{m$mT~& z+lX>(&OJC>SqKLpJDoS%;8+EcBJ3Mc(}qae`e23HxP!<1y6nR`d>9_zgDv z;dJO5P#l9O>0415YqQ(8LI!xc_^qg9$rv6C0D937+?V?fd3V$2--&5BbDw@EzQF$3 z;(K)SZ0htq7WWPs^u0)oz$=Cdjm$tez>{F!w6ntsu_v4d!>s1!*pPO1^=HXC(2sg^+p_?#>OhufV*yTb9q zzyrI)SjGbxKde?~5nSNw#B}S@aEM174ecx%D94?LJL8}M1623+uej+yI0lh!ufV>4;g-1XKMH? zDS&3YN`O1a?x-|}PIni>^H0HP;8WmX**pa=|0L#mZBnD9KyGb>d z!#tbT#6)}mO8<3FQAB!qjgO6pvB3+el2cI1{~xYLfv?Z6TTVrDxq*O# zG^?r-K{G0Px|8T7GzgSJdYS94VlS+MD>>A%muR5Ad_{lt5}zne=c``Wrri6jEm#gq z`iQ-SgLfM{YLp=VWKddLowbvNhms$!+Zobd+*j0{cDfL4DekAb;(Gx2)vpq$4#I$*Cwbb#xaG3L|J!Pt~i>B(U688o;}hlr5Rhgzb;9lCJ{ z0hsYK0zdOnu9jWyxXZ)ZCRsA&T|Um$k|FQ%z_BsbBukpSpMgTgDbd9p3>Gw-hJXf0 zp}&XVb9PX`P>@j5sPRyBz$Ga<&`B`*q+8rA?aU4IjaE8^CNAa^dU86hH~ z$7=FCl;jW?wE*yXAjXiS&q{K=@`|305R)yiYoeLMlKg1iND<-wT*Nr)(xuDbHZP1c zchRRKF|(&p*->UsG#Z7Tm`&YBiFNO%NwzPa_5^0x5vxD)as)JsVUX$SIFTK(4qyEN zi}BX`Tk6IzEJn>?Hv$SKr;gpO+h~y#F|A+0h6qN|ZUp9M0d9B)Z5s`i=m6?RGN{fD{w7z5U1@md{SR9xa=-ybIAIoU; zA7JR_(2GBChE1X1apFr9)?=Lc<%`CdU%qo3>OKFQ?vBG=b%Bz`gC(0ny~c}AWAN3! zO(YA4rJ7|mNJSfVQ5ShRK;u*KVSCAU0`~o5cLa!* z>Jvm!{(wdM19orrA$6G`YI~y|)+ELoBvvU**$1>?0;rS+baR4e3wE+Gi68t6(mmxek`FKfUyEAkwZ97cTn+(W=q;mG+WYpqS?2*CyM^+Gbc5fB&xVCiZr$Y zT{}TU(t=4~V^`4HNumWhnNJqKqoSdc!8z}s-IGP-$U-CMBS&u6TaB0xK0E49NF5GP z*FVJoHTyI@`V)h-h{{aC&bESDO%Ze98`v@xpPx(priu!(`QDB|d>oqZhsn&){9RK; z3HQa3#!)w_`6LYSn5K!4f6Z898c6ZQ)P5S+>K!y&UZ&B7X(AkVFQ=IeX*697uv~lN z2Nx~qj77v|h%y%7@2PF=_xz~V5#dfB&A=RZM%`zK>uB8PGsQ?puBUN1PX!?(u;VkY z6#7j4DOqQMh)SbUvq0t?pjNYlq)`4d3sp>`v{_~Y_9KgWt{**_1wqvTikJ;C##ov; zTl@$ai#7)Y*EFg*N6JW?ZRQBT3$ZljnguMFYZkC$uK5Llf8oWGH2E*lRvHlG{ss1X zC6%2gj)5Ao&IcI;ukiEV9T{^?y?NVYxu{moN0T?xIe9ri)&&@#+$l6{fvB$jJ(+ec z5b^5yoABc)TB#T2QS*h6*X(k7Ey9-IbHV~TI>ss$tblU*!GA%y#iC5$Ssv=B1R|## z%$!0U74hpRES~6>#iD-D!boFu-WFdFC56Fc>8`hSZxa5gNf8^%mA`pbJhWhLkrL2F;R{puhY-Pq8vx_{}qKhWb$hD%R`+YCi^V7k7@Hvva zMcC-#jb-ByZZ^Ml#bz{eGbL>iC9U|@EI9VTZnd9Mx0p=Pt}W*GDO=5! zMQ%0U>9Q5e=fx9xxD`9leTv+MMY*4vZ^PXa`hA-y^)G8CV;e?vKb?17)a@V{9?%Ed zMbE-3z>ltP7v7O?gmLTb^2s9~yy2SDwfwL);IV0kNVLDZ7Ra#^Gh+c&+=zWAV7 z`R;>eGw;jG0SY;UHk?VOX@_vOEY*P|A*ErdD7t+J=be*s4~cI=l0}TQH$*iKJzh<= zLbSirYK(jtt`q%w7<C>qBF|)m$kBNB@(FPpH8#}1RadSQVdfa@LDicr8hT|wE z`%h=p6X1|BWfz>p$u*yLp2T*PO1Dmm1DK0zPl31|NUu&oz%h{8oQ4Qy2i-pX?zn<8 zwi~P7w$*~R);WVp=1~WEIY57$!MLuZz_X&5*MezWzwTkIQ)%iQkErlq?6CVm3WDSV zG#1_zbtA*pAqIj9eIWHaix$tDH|;DOs}8IrtJ(0j8U_||9<4kl-Va0^60;E--#!Ir zK=$+E5_B;+=h4LjDDeU&=Wc3!0X*Lhns(t|K4SCR_vJ@Cx`5VaQ20gjBi_G=kC;Nc zE{Zll`xMWDequX4$$~oR40X8#u4)GjzGP0CO_$7$K6eT4^(X6Pj7$zyy$tC+kU^I* zT+?XXWi!jE%c6%oh?`tN6aS*oSI|U6Cch#o7M|4Rx1D&mZQfT=_%cemY8Kx4Ds%}e zXvI}*{zJ&)8q{TjspmEElP+0*E?IwzBLZB1Iz722z6mUp8ZJ{Mh_#=Ux?BedvYMt} zH%X8+*Z-x9&iA#VsAARySG!!@H(VV|U)3;~g-;|XtijdZbWd!<$&sw=(Fb zo9O=?bo1uFH1+PgO|5+kuUy$oKi-10W(VE6WiFWL+h%z+Z=(gHsoiam603>b5nWN& zZ+Ad0ETT>;>mpptysSh!gkJ7P+ShD@;*+cLhgXp72&^!*JnUBP8Y^n{*DFryH)fD$w z?B(!^9irz#c@U^ip;wP_;*X@(PcY`kDCLPLUuw1&mfbK&>tSsm*}Vw;ET&JmJ{N8x z?Z%&$f^9WXAL_jKL~u2#F!IQWFe?8*9#QCXtdnWZ8(Hgb(P?uomdR4Omn(jSB|-bw zpf*A3-M2A6n)_P(iOtP;BaY;Y3X?0;2ue+`2Sh9%RuGEFw0wPg5}6`5X7^A1#a>6v znVh=T{seSKx?=wlW(-`l8|s@;)J(NEKsQfR?cvhJ>}u6sEk1R>NrJ(nh>Jak&us*T z&KpkXfePGgg;@SS(!K+}isB15ySF7b$N>M?Yq6jKrMMV;N zhtP892~Ap*P%lUeMF@zH&;+Ce1f&zB_xH`*l7Qv!d+*1O?A_U!GkxaFnRC9QaQS9+ zgAxl>mp2Vcy8Q4I-83jr9ezwzjDqw4qY@SGNdxshpgus}0e5>46nPH5KoOAvQMA>l zG{h~V$)vR8q}rJjzJjEil$TM+0+SNuo%B;LAVR(;jJ`)j#w9OB{nMeCU=j0kX#@q~ zz6j7%@U-O{#0;_qo$v-)g+B@JkpenFif;i zYj6Jmc?CSdot0ZTq5_oOkW<0;bZ%&{V_u+=Dx04GWEHYNZ7Q?V$6<=a(I7+#m4xe= zle-N1o|j-EEdwoziZZG}>5J84ljLUj?Nu9)rp$M;#5yDT}1^ipr<*aFvUb z?R0%+~R^8{(s>)7MO4>LT=y8L=;{Y-EnM)Uvlxos&M`UFb6SJ{>73CZr-Kr_I z`*c;pkdTu}k#99PhE>9b31Ev&t3cS#?Dzy&ohw>4_*Lm&5T9TS@Y& zEujJN&i@!u*1k2A;J=NFI6_6^g}6Q*x|CJ}Ew`7xuc6cgEAdASB`R<^L=<5{u@uST zxTT5&6NRvv${>015lU*FSZ#9GE2=OUP0IGhEnAU#>OE7@D{mOMWEFUvYFf1OIg-@Q zuw!51fZ-qP)?Frl(dng3W)556>#_^JT+7c_US)NfdwPs+eaE=WJqut6%FR7D)=~T* zblY7=X#%m0T31N`+ghux@*z0zMRk=FTm^9BFnAJ3uBZHfz(LRK&8T{PB^ZoxD?CCu z6C^>riOtT-7tk0kkhI;=bmn|qce+XyKd1J|N}%yrJ>P7Ohut5nY>|hgSU5onUR%Sd z={pP;M7SRUzzvtn?-L%9!1OI|B8BmD4R?@q!$KYhN%9{tq&AhJp$mFJSK=*KxXYU@ ze$=(6wKUagpzMUv5?m6E|0AxG{Nz=kqAM`mbZ_;ydZYzePg>wG#!D?woxThEG*(8- z^J-IcB{>jmx7I}I8FLGsAkcfmYPyZfe>KMPQF_xEK8U6_QMSn=OAvQEMT46v*QGzG zUo#BM3(mGuvTWbbpl|yfg+CU&37mg;3p8E2Fd{en$CzjbiGrY0ZL-RM5j} zrE@KmFnNfPR)hpa(*BhdRfs4mwp2>U_sY=L0q|ww_Pqmu&drX@me^HnleHIapC%Hu zR$9rIVQ&0dLKw+yl-klnN4++R0SmiRz0mQ|Yl<(&RnFfOAsiM>#QGB7Rw-5SIS)m^ zuQEWw4yW*)0AcUM?=+Oeg5sLE&*<3{L>c1kDvhUegW(S7T@DMzjpM&G|&(ju>d>RYjTCd~r+wE`Fx;eQCuJaEs8 zB%`=H4_O^w$2Y;bRA4rWMF7tI-ffR9Vv{4Iy)uZSxW&Gq%#wE$*S;2Ey=cqWdX+sN z-h4|5(Du2>-{rpLI0rKDEoB*pUcyb=TQsbr0u>$;bsHv!P<$t)C+ySHIw@tP9~~Py zDVwmFsMK$1?bqp-&X|GY>3nBpGYT+q7z?EJUC@VxG1PTQbg;n;Gtc{7lvw{q4qyGJ zV`lvUOv{#1>8{E!@MKwC!MaSRysk=^`8MuPVPsd>RjH9s=y74>(d+>s*d!QZy*vsN zxJi3RZMrER;AFd@n^G0@3cD#KBBuL>={`;d&I4;@RYBehqjRc@^4 zUYL^5>0Z=ZxhhX^deEU#&jQtmxn{jaF^h%buVFN3X{l7o{z!?EX8@6MS*d6Yvciv) zUTO{?^NOW{AH$E8*Z@pZ*PS*R8l8e8)^f`D7%bdWt|c5o1CGKNbz??CFdY4et7v%2 z&?{0}&$yOW$8rM!wHM`= zv)F3`W`tus8+$?TZEkJx0gaF0A|R}wuRI+R77jP%$C)@VQ~VFKnYoMmtk0E1|KsQq zclR8HQl=X2Fn*y#Nwr>Rvw3n+6Y_Bd=bP>=$)y23(&>N*8qjAxP|8!s{z_%2Wr)Fp z-$SNG1O>!o!zY&*0x?BRjs;j-B zV*D_rjubT#zKX;==fm=HJL{fqS0~pudneMBQDE>_Qo?9ukKZ(F9FAe&ZlIiyo&hDrdX4H^C{0PUf`KeEM%k%x z<1}&3;ye|UuZGaGG0JChT7A;a$}MU8Sf!OEXHSv8BU7e4U(2oLpo z?oom3_?-J7@Mbu!${szIlTR_l$w{ubBfmsDyzP32qC}$3fa^@*A-w& z?#gpACih_0&+tNIr=ZNL#qD44zmUuE)H3J9-_+9V$>1!{fX4=XmuJGi(vK`E9+olm zjREG(NOGoj7`{;UBqcEAcTPxzTHJmN|4Qhube^kskUKcpQf(+XFKL}p*5Ik}EZwUH&2>!tdUd*7_ zDQLuhDWRvK)b#qI8UJ?DyfBdbJlS00*%Uha*(GQDYxmUom;Oekbee2^}iF$@en+B(L=Bw2&UZN1o>wW)c!lcq7ky- ze{_{=o#ji7%`-x7@?3L~YYMWp{r7D1JoU)C>8?ky4D6l^{^S|(*r0F!7y49jDwgoU zMt#She?u?8L+=)+chpHQ;NR$t2fY-~TX*Yk=y^oK`fX0Hz)3IgU+B3i=UxemntlGi zG<(VmGt;AArQhY*UUX*bLVW!%1H35PdH<5FC)Z%y51_k)J*{`2XIq#_Z2Es)cjo?= ze4N>Yc(QrOv$^lAUC2K*>c6f#ng1hOIxT9z^GOBwg25H~Px<_H-5KfOcX0R_%vnAh zCiSe#VxZvH3GvIjC?RjeFi-8C@LV|!`gDe3|F`9PTCt24crsdj)t%8f@#}?*!aW&1 z{2dwUIuqk0wF-){*jbFo|C{8+7KA8I zDF#(RDO^a!|7pla6yM~dJ#+^1QbD<9)_>&G)QtZzq>7a`#*@oXo=dK??lJ#V_jmr< zc6sie*H=IMoAoEwlff{a0gsJ7j{S!WgqFDXY^5E)44$n-$4>$4F1U6aR&>tMJKY^} zj$Y^Acrc#S=9IN66?|y+rHM7X zQ3^NqX0cHGcGeJg0%q7xJPyQH1*(pH3zT={z~v=le0#^im#J5CD8|CP>~kHyVw)^d zo=M*0tg(JT5lW{POO);q3uG@*f@>5jH5^QMx@9<@E3T7^TP`Mg+0B5_vn5JD-cWz6 z!VTdKn(uySACMST2XI=$>gssq;m7XQmMG7Sl=RCa_GF>U-M#4%d(VZ&&My~ z$`{ke-xtfoin=+beXmqAa4)=h*$~zhwd}T)N_XQ3LmaO8ZdMKW|7zSaG;5XevZsYd z{I3=s`M+9t)c;EhkN*1>?*4pZc|hNFNMQfcxG`%X?L|NTvQ~+Pna#De#ah#cw`QQQ*9pHMZpl}aw7GIl6+~W0nLM>VE{d=d2p<}U!nZ!fEqiwNeM*Q zMT8mmD*#Wud0GKL=_|oCDK$?s(w6ngI7rG{{HQdQcLs5@e<0=msC1KdI@ku~o2EGJmB-R)gP~|i{Acr$QE5RPpp7!JQrE+_b`3o&2R_i<{Ak zS(V#K3mtp%6#!&rJK*uVnZ#{s&*W8ZPHPT9n_&&@KcsvO8@J|%l`Zm`AR3Sm6bfN7 z9OIQa0^Ng))b5C~f~^jM+7PU{OfYSdAtny|Re6AK?5Og22+%LMix*tS0P~Rl;&NPI zV$jwUdpJ3cDxGkV5^xL!xt-q;y^RyvQpVM4Skm4uY7zIyZ*0%FCtG^lb;OW0Pczj$)t zzl!BjBi?W&30wVLtU9Jc4x}JJ(mytaTUW9emfRlQ@YEOO3}n${er3W z0Yh!-d|er(s*s0^J&D^;p%Li9b>*GV)tisIH73+Jfh@&AIbg&`-ESy8<%Ol_#x*7U zFXR+@qfiNr;}=(Y>VtzW(ff(DE@J$Gg^#o0wJG`4;I{H^0h!uL=hq18T?I1v6Dwbc zdKyjRTl9U}iog3_g}Ub20%*=nC85pL<$o6=(vw4B)(hVs+I)+?rY`-W_7}6QdAH zy`{9m>XCO#=@jvJzqnKZbDt-EK%njX!M$KMyR9sbp9NRb)#L~?a6lca)vxJlMiR)oiX}Z41*LWrVcavGcAnhocGixDVZ?arE7NTy}4!Gxu?Uc9BdE zlpV&4K|0hhhMFVk@&hH>m{SUdjmeMVf=HQ%Lq_Iddqn#FXpM$GRAz!s%p+Vxt)|x> zDRFWkv@^y;z$Rl7K&d7_g38Ql`sI<*)LiI?O#|rfP3i|yrN<)tgU3o!Xn(AD4F3NQ z@_z!Qzn`em6R74LqOYDPvye3CDGowg=)@HO!POI9Vzbre6tIhYb!N1v3~MFjMCY17Ya2Od%0p} zpMk~iYGDmwK9iUW_v*{PENOLYx3I$!ZfvIeu$N6I#@p3NRIZv7>7A?>j>DdZW0;k3 z4Tla^R!Y8omJ9>Mbf*pE7qx`%qth zRsi6PHVU&#w;es;sa8TU`ZLy8TH)BtSQp;sQ5yRmtJ_|UbuO{n8`G-ro_j6=EpW29 z)Lh^R+Dk2LETYt;S$6$ax?R6F$F7gU|A+7ler}3gpN8<=2v41E2L|nU8yh4&oZRml zJC(4rmaw$=#LlXL#av=%d%ZXQBo@cUG;zHl*r1LpP1;=p0MLS%NyFAqOnXtCSegc{ zEaCh{1p$mf5uz}Fm6s=!o*esW5cLUSaHkN+m^`*LWoj-e^ga(sD@_xF$~)r(0w=>* zbb?aHl*Uvr)7(=gyU16K;om*{Jg&p@16g@+?N9NLCzYn;FCtyJH49?QJd&rkdeR4& zNALh&XTa~-Nv9rvh(xkawjRch&5FUWA{rau%R;Dv>SvX3!? z28OaG(ERx+lyxc#+)*F>+=9bm)%D>w)G}u+1PY)GlU5+u;ss7{F48Muj5|^v6vp0= z3liwm{))l$XBg|^!@aUU<2h4AUn$J-SvUg%9We0V9l0wdpA7M*^O3BNC4c^5FZG#B z`?p1e!2m!T6&6Fu;qdD)JBnF-4sQ3?#~Adi3_7zOkW86W*eNU|eUm{k+&K!X!%c=d zlo-vLinp{@VPP~S8s$JP*P~hcls(uX^c<)lqLIav>h?J@LmU6w3erR8|Gz9SJKP%*-$+8)n{j= z$&MAttg>u`k9TNB`D1oIY{0S*yr>}qt9^@}Hez4n^{d7VPSBoGxuz@^I*qrRvcVwn zWi!m#m9(H4>&{E)Y3a-CqWoktO=*s7m($_qY#M*<^9o)kQ1&a%*XFPC zuZ}UVvIdeo0?M*ilI?W11^Y}MY+nk*n;>&A2}MMJv%hk zY)FnVgMTw~luZs;Vep`ATA=fCx;3kVRXd^$dp&Zc74siG&OsSR2N#31z)~=h#h8kAf#7-M;?-f}LqyT%DN0h@^ zNp%fXY|F~PaaM=6tV?h1_FX+u+XacL4vzOIrZ^=J!w~Si^3cz~gmFTminPm1_(J;{ zI!ByU!vstV1{fswxVX${Oc4WkIUmQe3V$x`Sa9evBR5}#V6GRAD4e^)XUr^o*4wf8 z%6I&rX(OWZcA3EcIv>Y+VGv1#+eOw+PaKRb^yO{2kJc7zL(KUZ?Lx@4NZFkPGKhoQ)YjA zcqFO`e5DP{T2(y+lOy~p?El(Ccnjo z@@HsARwIi1xC1nx7rA#LSgB4Zv;s9I)&%A+_AOSfp* z!<8U)5|4+e-x2!!gFCUZAq3P=f50Arre}BKG-*dCQJBY_1f7t#L1#MEdz%fzW5?U< zO}5a;EdU`QXvX=G#Zz*4HH1-5~rz@z8pix~xWdyNqEIwd}j1!nsfPuF4fwNaN zjhc63QK0xiH&KMS-FOiko4R2x1&vnqc&B9BV+G;^BfLl5*?YcOTTk*6B@U8{>BDze zFKLM5*LSd{fK*ry@Io9tN7Uw{9w^6gn%sl6F~aVnGN~6U2Kuh{B+n-A_t^U|cWr|ws zqNl2^CeEDaN+6Qyt_GM_tWApADbJI*VAdgO`4J0E$wb}US>kx;D&#!9SUVJJonmcP ztR>ye`$AFDJj9CCy;zIzc8cQNg3c(`e8n0yhvGhF)8#+%Y179n#PUae7?#V+bmC*M zlh4T3hm8YhP-Y(%XAxV;A|T53VN2whM$*pM0%=fR4BnZvs4uIE#|iOpX#Frs<$G9V z-Y*fvSt2-Zp*KHawGn0NCp@NO&nIjG#Mq9vK4T#ga5Fyr9INO|a(s@RavYr4u#&jv zdi*(yh?{AQ19qQlF&C2_074#tEee}QwZ33KM&HA(|B^Kb z2Qe>yv#%l9X_AO_qlrJ~BzXb*e#t&S5srV!I@=Kspe>kBCfkL`6i$jIUXQlrYP^x2|;Vt+QO4s@NR)&Vq2hna!fp->_hq z-roBLd+UAo-YSw8k0z2A+gp)b!j>|NS`T3FBKevDDE@tl{+5LpkvN&QUH~87?py3f zvncypHYE8zc0BJGODr}`G@B@oD7Y6dIEOF<9}?3`?ClnO7CWIa#=>_(&g9ObPY1Gi z5SuxWRo3v`xf6=^0XaG~km-T<{kYpY8BQ}}Oikc7lRM6sMO9N6*^r?~g3Nh_Jjuxv zmI&@{ZkzgDInLB|`Z|^ErRCL3!4-~|hUXQ&CS!l*3b5dToJdLQh8}VWp`icCZSA~# zmy>qX*p>=oN@K1T!4Tru5^(L8IG9xg-`Qm_J0LHN=Z=Vhmpg=g2|4`M zA*>PrYigDcG^E)Wc_eF z+l?qYCNN#TMr282jpe5XnlQ9V6n&V+IwQNE(^xN&T(A-T)a`aHJH0khB>#3I8)p*D zK?ULFy42cVjhVW+xCLHcXwuUV}vB;uKZ_at6PttO~v* zPi3o|QKHG7j-7iut!N9d#m?#M4Wx0TvnJKH%f=Mlh{;z*E*Zzmz#${u#XDfs2NgJR z6Zt22eel%{pXmjUs0y({n%7e41{?>Bv!~&ar2*z}^FFYjEz{8e8z?e7vQG(^S#gee zm+BkNt2J2yZ-fK-@)9oHef*#{@j+eWUtnw0*}JKu^$gZY!kYK}Ojbs|2dstO<`Bn? znP6aCZ;eTPH!?09b}$2Dq$Drgs)22gYI%Wtj9lH|?ORA~>XfWO*VC+3oK`(yRH0r; zg_7s6cYQWm{CorxPhHLjCc)C@^c+^fIK!+?CpCiwd+*{dZ@D*#N*U}fw8u+lvN6^_ zc3Jh^vc4oYl+v!02&M81nUCXSCL1E*8nfFx_MSJ7F-g*Q(EfRt9=k}Jk8|NJN}tab zV~wo8fYksHPyYq%6@WnOSil;K1o4V*_D;IxpZi>8 zsfVrylL{-=Jvv|Xq4IMnXqm_`Aj^~COV53OIg4jVKW2Gytnu9UYgtG?ntFZjNniW9 z?-}2-Z9cqpN6Y%75sqFzFhvS|5)afVC-ds-1`W2LoYQFHa`2`1==-k zpn%4)=V`QE&AN$x&5?0WvuQPJWF40-Ru)-5L51I7-bSxsVUX6=TEm8;QMRsO3w=Bb zCP~X!98FvcMq?c9TFYVsoIP~m`CJ~aWff4vvJTb)qRIXaNGQ{2mjmaB?R3)tk=aw~ zx{kdT4MS2t><6(fFWn|MxAN3jMUUpMW3TY4MXhJO`LoiH+R4;6uc~i)ec1LSer=1P z`X2{|I3j+;j_GrDhgGktpPvFjalAPcf)mL?85_WyjHfLdAnx5r){PkP<7vW1@pgP8 zdxX2$Bb!(gD^GjWOC*lSg#XFCM9W;P2kU*5u+h+KfwdVUH`+k%$Q zqGMY`oah`j5ph=JxZ+&naniSnDEd|rWyDst8Rj5Owy{_+Ej_nkBfUb?w_!0HLz}i? zH&{%@?JSAg@>k!^%JSzs+gYM1%NXa|m^+LJp#8f*a0{uqtUi_BfpL~bwRhmCw4L7F zfuNnatfurdeK*?yXOMA>=DubMrOiJ<#QJA7Vtdec%1$g@`)TGL_EO0>Ph&$)sy_D7 zCUS>W1#nQQsg3-lGcY6=3DsK;>n_a5}aCeN!Kcn9k z(fdDRi``F-pIKi^!4w>L)%{d)FYAUYkhHz5oduSBBJ8R&tmQAPgXq}#67Sd_enBIr z(v4rRFs9P9ec+&OP|iNKM8sJv;(W57CCf*b((3)9Yai~1$PKS+^2Db8IFHT8V93m8 z%|x0XM4FrVV3@P$r32tDp3=7mKz=NhKIn?GPQ>~0pop{Kpon8Q#10AqoA^h^=|kuP zz~1;DVZB7~Pa-(=2tW7Ur0u`5(IR+14_?&%D3e?R%s9pnD^t!km^My62KEV_+K)jD zi2l2G41)vD&V?+9Y9Ghc&!YCn!OBmfZ;rEi*dKm8&caJ?=aO51+CaeKk83wzK6~JT zWpxgmmmPp_U7RnvXm(P5V?jt>>NnQC-Z3k1tevAOhW8tUPu>9A=O*Mns*5N%T(?X> z%}a-U22Gec@JVf0BRvD1|eGAwZqS3C2M!QkK zekeZM)||oASVSk!uohyP88OY0&NA*lhR(9iBIOg2^66Q&Tg*BhW#8|thj~Lh+A)o0 zon_(F_8hAxA`byf^c0$Tj_nbzBgE^+=P@NxY2|rv&toa^f@{8v6dwm&5cB1y3u3lv_AhAxQwHGOokG?K0{U7vvFnYbw{Bt{AEcC$f}-#@W}LkZ+h*2>3~+oeh5eGARAl3u;VqUED$ z^wBMBWd~{EE#!wGC06l$&*!(EuHRy7MC;{>cFMXfTDb5w8;zCcn>#ozjHN|)Ty6O? zkCT2^L}_$abi&xXY_Q+S;8=UsdQ+qk6~uXlFPu%;{s3x(xE%Ftb_}JX$NW`VlOJH<{I%z^AxpR_o)f zxM=DEcI};*+8ziVtC+f&zp1F!dYY)Ju{=;!XZ!HP z`8=`XO-+TrqYc#0rdGjYp-pW8b}1JAh2Qb3LS?U445Nm2H4JUt*{;?Aq!IDQHOk|U zEbZ~A?nKhV`w+g?{2Bok z)6_3J%1(pA)ewA}fp7Bf^Jr7J`iaOkLTwDj{mTgTlZq~r_vx^N#u@}klb8C(UrgR- zalap2DT}1tb%1`p+0v9UzYjIhvCv3A>JzDQkg(WC-mU1DNc9qg>zOSo)u4h9)sI?t zh=xKBJiJnBL1M9GldQ0c5~=h37Tx-Kw8~ z)OToA8y$*Ki|gBRECJjugV5jW+X{VAJyzxVqMh;Z)JW)>4v$sa@G2j}mjq~rdP6hR z=++FywVM&zqtBN{sL$qCO$y@42K@?b`sgp?P1HJ0jq#8cB_0r`R_1ZC+ zQvDQ#x*4YmP1>6!5aBT?CDkG&Pp*GTi6xyBYJ3&{f|BRQU&X&hS4(1%y1vs2Y!ytTDOtUK#Z)fDvC#P%GnYK!RFLKDmij zC#Wq9XSM~?tQxS1jx395aF806#he;UGs~*a1C<$ZGiemo;U=AVP7?eQ@t~uitXfG@ z4xt=SA&lcT+j*NPvb_3|9}g398XnTQygCq4#FORK?*KqEw1V0Z^R1u)CT}+RR#d}L z-uQ}YWMua3gI>MLL&yVE#NxK|5K_bQSGS6)ZoJ?J4f6cUl>#ZXb~Phq{$PU3%LV`! zQ!4=?B6IQy(v=7SWTZ4IE`mBmovW)!M(&*1QBX}~G z)z$h5c^2*@a29+il#!?5FMpOM~9?38K#148hV^hh9@XYsR6iWU|^DQ!XtTGinFrC#%&1AA>tlN0xHpFhHPP zNeY0!fk<5ia^zi_q^s90g?GWg;AKPu^*3YTiQ`_B{|W$g=Qsv5#P*Srx-8!dpv%<_ zg+Nfy?=N+|UF2_t?zaN|mg$a}$KR&8-*Wj|n)@w>zvZ~!fUxDIuXDdG=5N{Vw@kb> z@S?99tIcZ_A`mNEH93__=PtUV+((V{0{2@Xe>>`ayU5@2meJG3*syjudN)yHyxCoR z#Xzd%WyQza%N#RWs^=v0u$6x5P9GX{ql_K+K3E4=QnSNqCCA~`Sd3!!1?$Gos>##f zrro7w!#j?@75Mhz=!kKzseLM@ZO6z$5%~&SMpwVkpGp06`7=FjLs58)Cy=(hhJ7uK zetk_X*`#>V^8b*uq$laJB6?+X@1lH2fBgkoG5O_d+pVdL839CXrM2g zZPzdD0sOS0KhC1e_88m1#_ga++1Fw&=!MY3GU=&4y`XKd)=J~^)o8~D9n?Gh%d9C= z-Ov@XSq#el>T0~a;e6?<@-MC3FRN*I9ze0C&amo#<_d>B8y#)(RrrF*r@;r*m+)A3 zKuyBq@&T-8`BeTO7P)-K)PrC&P}<#x)QGsXK+-kod7>;(utG_kg>n{<7mX~3G1IP zoT5L*cMK<8;*B+TWsp7;jRhavsZ0I1bYFbep$6wACkuQ(PTZY_YjWrraNoq!q(beZ zcp7dQ2Q>{tvYxsTWkH#7Zt>GcN-e-Q;HNhauLIdPLe-fPfDT+Gd5-Gnzo9B*{zy(W zj;cBGGe4)9fPPGkicXu8&vh8`A-(4u0xsV8!>FD~grORA8wMUz$H^IH(sn9A;i!?M z?vrqxg|qWGF78j0)cbZk_c`hvS7ASMr5g1eq=e9qD`bs&&o}tfl@)S`HqGsnIhuu$m&Z}YO2{kbYkJ07x>OsWX zd;yHSF#d_YLX|K)n89Dnp0jercFLB7}a^ObN8PIrF9u?xUAhQUCku@?iLs z0M47KNZA&qEs*L^y$2Xh^XbF`&#GSTH4(#(^aK zk=g@s2R%aE?`ZoY^uTcH{1_b0eERXRs>_9E=*eSsYT$4yKgOGisrDG5fV1d{+7B^9 zpCb7f>iAT>j<@E|@HUCYK11&hr^C!)tWj%;|V26)8!il zPz=|m(EwSShQL6B_AUayHX!P6r)iTxyN1_gM#Py!*Nj>-#HnV| z+?h~@3Aqe&AeUB>%UNx5Z%pqYq*=5usesB`v``sdqNT%9OPXrYVgQ-WFZc@Jw1zWk z+bmjL>8G{c+N%;u+rkIg52uwr+8jLEShaz8Z8cq2VhBsJ6ap{f=aO`kE@hp6d zFz^8S5w8znq2_u2Q1|^pH}}O6reNZ4B1SL1e`nHYU+wj{f(Oo2&`-4Tt9)n*e5Rjq z1&Vl%XTDmNgdzgt zQXzCEP_sKe4byINM^ebTHa{^(Xg84g#7GVItJi5+l=d>TsP9B+^>_=t6s?t$3m#JU zXsseN0wzXlAA#<(Xsr_7D#d8u@krt#2}r*YRPT<#LbYNsxGqtdI4zeJmeMZcutF0{ zYfw*!(>{?;%%*osXtk^(1(sV$IBKHBCA8e?CosCP@1ezapnZi}gI>e^1JN#&!6)1! zizgHx9ty>Wt<Y>Qi%SChow>BxoJw$LAfx611h<1R=4URs#@PXJ8gU ztuC8PlY`E@fy2w0PXn4z;ktxs>EAUpQ|DWyW1#8_-^ER+?JHV&H0_{QwCUU*_=MY~ z*BaNGWh?2wma9&!Cs(jjT3gtc#LTR2bR?G7R&l%Za}~7uIG>fQsNFLygvZKH>BE4^ z&HSEW^kESMBjD=`3|;LMBn;0gVe+k~utY5^V!ai5JZO{A2B_q!-*Y1@sK4=7bv?CC z)IvNlrWl`#fmg&Bny8h;BDf?GUAdl)C2CQjPKwY?fg-9piK9*2MoJ^xU#UqL9qIH< zk``Zfs7ZuLU}unBc}{wj>FZfz~j_?x%R=;mH6kPLOS&q401I@+9Mc$Jp`kl2K42lHA%WtfMIgA3|l zNHTn5eQ~oPBm^-4B*5ov-u}+JSH#Pv4s|iRpt)LC>wx)6SLfVpn+Bv?fFpyblIsTjM~&-q9y<#cZlL8pJQ zTPLfhRLM+Rr%Iueco@mLRzsa)>M)fCKkzTZaVLeQP3m#?Qjh7dMB=!rSKSB z<0Q`+tl{TT=T9H}yy*OC#ms`dh3|;>ogrYN3?3#5{>0Tm;+0F!0L%yNa0#V{fDQHF zA~hYT5FBxk3)&FVg%N?6bh@c#eixc^m86m!YT8o4%Zs~KM?K?Y{@cWL*Ermo(^Z+t z{mVJn!JkWU;2t>+vW5RP@!tX|SN3EIrE+9STUW%}Uk~6hO(>f)lE)q!Y?dgQ%TI#Q zeGM(6>2XPD;tv=S8;Wr2u)xT?E=JngKQS=HqCWNI*QPOlQ$j9p#HwGcK(bm;(+yI` zee7`^cpxfyi6-M`9S>YZ3_kH}T!?eLad}kqIB#7ZRVbdPi01Wk#yC;c<&Fx>H><0I8Laj5GNS@gyaB%scYW0j z0>>o5uns>F#>bqqIXt*-a2qG+L&E7AKF+??_@Ky>_^5!Nhy+7{pdfx86?8Ew6AXnS zRQ$XsLUCZMB;7Y49kuzbwocJnc?<1(%ddq$jGvQB7)x+m0_aKAZmT`4Unu;bK9?kEtQ82gC$A`fJAEa!k-Wh@qSyTxvAcPG^(BUF*eNm?X;RvH-XgZ7Tj_W z_gKv-xJ9RFP+4u&UJFz>C2zP52W($2ApU;RUQ5KfI={Wv00Ppxv3J z8FK;WOk`<7?4}*CFO8&G9nd_xX;TO7JxC&2zoi9Htv573>(=vD?xWIx#i-5OS}>w$ zZ)y>AqLbza8wia{TtwvG-@u|OK9(xutgW}Fw&oZ!mq@|$B`*MUZBb6lj@#7vO{~vT z=({(y65#dryeW!MMBo0Fn|{OpYtm=l5~LG4YK@*Nb9zTD^|^rhot_IA``pJp12rqn zd>fnXD$09X)0N$P(ZuMIFy`bG>i51DN;Nubevte&?yN0{N7do?qKv2NaJ1>_XcKRB z6K{1N)LiYN4Mt9ryJ$=BsM{6W&jae&75hIFO1f$dD}a!xn%oSFl_43U%)q%3_)ieT zYQ#Vt3+E6SV+ZUDhRwv*a9LTU8yJnPG^m?s#=LjXO`E%+74pg4UE?k24zkck-NB{b zq%qym_q$2&fm%H1E;`U1$B$aQgK9mXPVZ=+I@2ckqfkD4(8@SM4kP7VEgU*NW#83m zBHp|2YSn|%&3Z-Wth2ipJa2Uht$0_P;LN8gcQXpHTY z{vH^&O|iQhl=+PgevHFS4wdbL(?vE->!W>a%;7T%&a3Sd*;ng?;(yH_6X@5z+E-S=Qb@S5 zQRrqf*cs(bcJ%9~WlGXjhwW2z8Hi|&A_ARU-k{IWml>4tnU(-!@!g+kpMW{4^SKtq zn+?g@QTBp3Bbcsgfwbpy91thbmtTNkgs$%w+IJ8HeexxG{v>7M(dLQ;oaCd4lW!x4XCeGqil0{`z`>QzguiL>umaQ!g5VJc}-FImEPQXWS{p{V{^ zPzq>(t~YoKZ+zepype~Sh_@i(7vsy9F`l`bxB+D`Cd1R4yCl4Dt`azNDI(%5iC+u` zs8JLMYm6T@Z(br=)gOcDlH>RO8niF2(ygzw(zqfI`xr`>DwgT%^!C)<1eiTeMYhZy09inx>sOvXGi?^Ibe;D;#${3=>*qkqqS4B1z zsuL0hef|(^OWP=UC^-MgG+-#2bS-5K)k?vs`+=d_mwddvGE6I7@sL;@-HVnOP=_Sl z(3Jb577}IfoU5GYIg@&bGKOh^-uavj;BOm;p|F{BX&4rlM`RkVeTMRVJsjtxYqVpy z)(+hlHUg7+8!a7yS(OTidNI@;u_LuO$%W@1QVgyW>1L~nc6u~gi#6oRacbh8$-JNk^*ERy_lP41?^ zPGcr${s5hsJ^`|eUnzHjc1(T%4-g5#_2^8Rc2|B9M>kK%;W+aFroFN}P9y!KT+zP( z042`G@Ph7EY>S{OlM@fxn6UmSFgksmOfk{iy5U_(ovd|z9=```}~iLmdKl|eTn05(jT?}B?HGq z&fIyyYwr|qnp;t+GP&@Gl}45~E3{^cmJ8jSfm5{vpA7DR6?-4)C## z1@$WeS2D#ho3vVzcZLCL7tizbGz`J%^wM-KmS^3sFe;e(OxH?=ZcK2WLcr_0cr-K< zcE7CYIFoLqr_*ujokAfqgjlNW46Rhq_z*WvwZ~$SyDXmIjPf(0K>zsW3^5GNGqEkA zt!6@EnL~qSYOhJ>=+I0p2{&NoSz3I{bG~jL4@Ctqs1riKbQIczc})xsKmjp8!U_1) z)mVbB(7kX(_d?aD;pha{iO;iJ$h;3EbnC!*h@M8v=4mzj5RaehaJn^y zku=vBLYDcOzxgOmG#F%I^RYi|B7MGQPdSEzwK^83D{M_rw={CS5E(x}ksnbfgt!Nr z4-YW&KL&o9LljS|xz-kb5Jnj9C3c>7Qw zCxZA4K{!3#49+{7qPB=fy)9Zo+40bV#%{puIF6Ee2w<$)@)Q+AHBf1MRi& zNZN^3&*nyyAta~R%Ykr3K*u4dd5S&Sb~gbnYy`s^hZ=(B-302E!YYO=3=yGj)HfFz z*TN8vJ69fwucz2U@UW!X6DfU{7UaJ?2~8?Nz69O)^R#}K*0}ycv^~t{5eggn`w4jA z>@0{WI?T#PkF5N<-+qcRtIhNlLuu}xjaz)<8Bey2s6PWP}DB*;*AZ7tL zJHbGpdxdY9IOv?92e5PVF|~lMA+pbu9fHnK7x}{NPV!^7ir~Tp&QkAmmL+$y2tB%h zm%5`oa#0!xb6A6ke7Gr?n085Fd&?i39%b0_+b%XhjLhJ~`%)nb;X^E8g?Z zfNdX^eiqC6UaEaoE0hPTPTh@;ziUUNL5|Ajz%$YE)^$T^+<9$u+$lJ3;m0TEUsR*O zs&ABvId>{>)Vu(;5UT;KrR|jb#MY6<7bq5D7qzP8aevL%Ea2GUj-FrE@(XQQ-G~D{ z9vPgkF{uTd>B^KSiIr$cg$WJ)1BL4?XRhjRvh#FspYktiO#`=;bA!0Zz(IB z_Vg=Xw5LZn`VX2hzg)#qx{}Uc)#58p_80c-vNJiir*}tt(ViaRyz^I5y=z)Tic4Yn zI{XWvc7p%8SPh?_^I$gE1G59iWWcKYL3H-wc`n5%x5fIDWg>jai{aUeMR@9q;X@ZD zMDlrhb?ysfHI&foF&Pv&3 ztHH%{W>N`ib;=eD)~m}yoR(J8xKp-R`tBhFu&Zg;L#P<6Hd5{G)_AJ;2r>h_4C-!8 zaP)ZuX(WHsjy15;y2n}t^J*jPn_wFLWP+Vcn}gsInSUh zaek_=EmF#znqb3)=6!88^mk6**DB*-d!WVP_Vc9&H~_7qHy?m2+)Le-T0eEX|5STR zvZ66KYca$cM)}tuNKKn*Z6?pG{elNPY2Rf1%a7>fakFJ=jxA8yGWCe9EXYcdjgu`U z*}kAxWm_E7u=>chF4`J*Hy&`#+ck7rwgrc-aZO(j#uPsD`3K*E23w*t74JR-^I5%y zS{u-mYpAEemKX8V6z9_z{Uj&5h2Q*o80)vXLZP`IMF-l{bo3)Ga=g@AG9-^u?-rB0 z{v1FPjJ7ZU^e;8q%0L16pwX5fJ)|c_TQ_jFT}-wikRttVvduJM(_X1kN}1qP`J_{3 z;%I2G9hLmImgB|YQamrPH)VWmuNX7Dfd#R3X$<%3l~l%Vr@VI)TR94SY??uuMzX)H z5;XEE``fCRw{fL^U}L%XfLPu3w3 zw$T;0;Giq+(L52p*csRHS)gs0Bxf3Ef4|t?^j@%Sw)rT8!r&ny&R1;aXcJFuBCJcdr3Jx3Q77@i-l2N7`E8I{#^;Ey<~W zCnHVuDBF9;VonrB@m|`7N4;EbqH0#>$+2cR1qWk9lcDn&#((0#0g}6Lxo6Z1A4W7q zusiT~;cI)JqeQfAgk<=Yg;5_hFvRSI!Tb}T-#?MV9Oq*&45gvzakfUNfA)KkA@p{f zt&Kbm->cTQ`|CNJk>`Ka{OWXOvs9Oo6XF%cxy|eqjhyCc{M?_*(29n(Oz&MH`0*TP zKQ$_eemb{Zgq@q??9;-nu6{bVNrdOQ;%+X5xQ~AnVe4FRvwn1ub%@{vuBbKQF+gYf zkhIym9!{7mYWgM7k?FCWXl@zX`;Hz7Hj^ap#?{4w>OnN;k4V)qsjTh1Ebse2oP7y+ zO;`7K?n!bpCpTyBlSJl(2qFk#o(@$*Yiz64s?v#86>ZEaJ&x zV;&$&ZM7aG&uwd~fo?M@<6Um0wDZv)Y^#qY4~bU)2I?`eEYUGg4N9e9F=~5`)QWgHIgkP@;kNZW!bF0ErR!DeeRe1gq2_L(* zYC_5anJ~91Ja3+a$5n;rCP{eF;wl}THeJHcRfVseEaBM(90p8k)Yzf~2}`Y-H#JVe z7gvQ}FOL)?JFzN!%Rdrcx~NKD@*hihK~;EWsf3R`QZ*sFSSDmth0iUL@KsgeS+^uS zsVY40x`dZ6tkR*R0tqiP;IG+%kQ@Gik}k@Gys8B<&q;VzRe0fP317ePB4q{pd_kK{ z)xW2n^Hs;@sV8Jga@7*a$0R(VDm?#?gcmQcK5V4UF*&6g7af%LQ8h*@VpWD)iEXiJ zmLt@w?B1aGL^CrBJ#b4g&20jLd6le9)Sr+kwy8QAc86(A)gE}5nyCn4vY)Ts|;nS+Zv$je2$7RV?8ZJne3D>K_lhPzSw<^4RgM?>Rg_o_9 z@U_VXu3Z0Xq(MW^{UYIWlMTFjzb$ZO+)4>6CxZ`8T|ucG)aB00B(#u>oP%|dbFqZw z8aeIfE{r5o1d#Q73C^@-z1m*wkYwjy7@ zhT8L{Nm$u@(mSY(9*tJtw=bSzD^NC3CSIR!BitR;K4VuUNZ672RR*yrUcxh~!souI zDbU2Ks_?>c2~VmDFMT56<@2i4pYT}1#}-yiDE?a}V4Re0`w3143oo>U~^ z$yMPAwFI%M5}scbo^nOP4^)L0Uy|@Gw6>GF0}NeBs83C3 z|4;3#`YX#|$@+SDsC9p5)y*_ED_`bJsaiw!c?q9Z6`pWb!pr7V>0xf3gkP@;&pRRE zxmDqdk4yO2%&H03kI00zRpA8(C46pGcxH}-$5n+F?33`K*;P8ac8`RgGvH%ij(zSf znUGzzKtiU3r&fip|6Rft{}+6#geO*o7jKsE(pj%|2rP$QxJf1y{3`+QX&WT`NL6_D zItkCH3Qt@s;j5~`<9?Cwq^j`L6*Zd#VIP$zz1kx*d~TU6P?%(8Z>TON=w$`H2?jL9 zs=o>5QHgh;L*3LF%@UW$YxhM-n7_OI7&daT1)uv#uRlyWG%10A1Ve*hF=UIGNE4=XO0CCX-0 z>1KABgkPT_5j~D`VehHSU9Oi%XzmOHvlhGuRGe~O!ZKzUsJM4u^?ha4J@Ou`rnn^D zmT9YO`M-J}`Ae@$*fd-IFZ&^X-ZdkC_9dBCHr=Sd>;vR4Ixk@b(`Eh2<|dLnD3GPf zCNfUSUhSpZ7-#3Hv21QD*H2)>~G5 zWVeKt!W$LD!!&Au`VNi?5|%&B_|`iE(D$t0Z8fLMv;#7~Mh+jVeO$9QN?7W&i}cY7 zpHFdW&Fvf7l{{Da^ir;`H_9cgmU$N2%GLN36ftv!geB0pPt{>c@(Ls8^(7KoJk=PT zw9nMu6nDwn!KG+{OgJ~y=+>q8(JfF|`5EVC%d~8x5LBS9yoV2&HbX+!Pc^3Z2u$$A z^iGt}WLw@`BX9CJ35_%ID(B*iii`iLA=X;a6xkaP08z1b(qjqDn^Li!=6|mG)5&|@ zy_Cd9}mn*NSeU*$tqw2LcWNP7LV}uTVE!Nu=3ClG~C=c9?^^;g&6iLjN$(gny?+izg z^0N}QYO=9*3eFf=^G`@{k}d1;5o#|A{X%tgS$tF`lqDMZuOBw@C*?@+^+aQY3XS1h zzehrkBpT~^VGw!W^63jHl^mRNzsuANTbUxGO#U_rO)<*gvRr&M?)G|(!K~$OmWk7B zMT(6gWg8^4bdqd_ZEPZRYvE!-2>wDL^+0{+K_=+;d48{cf%EMT->cEE4O{)a8qO>8hoY)1N2rHFc`*NbwWBf* z5hEh2`)=uwY$U2#96CoGf$vBfq# zPmD2MOcJ^n*J&e<=ji@lg?6r5lb^oUod zKo*%CuMY7q!E6XMGv!q!Aj?1gpm@D9oi%6a;NN5^p%&xRzV4;s{sKjuEV~@3BwA}u zDbo~<8VD<|%SU~DUCN%y_L6PgIjtEid-0R%^621v;Gs-U5dHbe<-lL^t!RSL`I$Bb zzo^8PJLA4gKS%LNst=Xs0D})macD~4O;s1bpe*UE`}>9fDF3$1m}OK%<9-6ypIm6G zW${&+xZbE`<#b?`xtAnpE}3Si{p`!~Z8^)&N^qQ!GiWAqEw&i zzQ@{QjoMuBz`2E{8l*pgp6k|rR`Cpl>G{gc;CTCS?nx3L*HeoBXI@c_PQMne2dkl z0Ux+~P|ZESW6MQ>4$4*|qtkuS>w8A8Y3yFr&1avx@JaytY~u-n0~zu@O4+N59Qvxwn+DI9hWMsF-d^}?ZtaFZq+RDV$7oyc-k z=|SBOsh=ou&IDHvZQKGyHq;1N1C<|AtC?l(aTIV^9T=7G{!03RQ{h1JAVxM_7X*8I zrLc9)Vb$3L4-YerYmqwmYe^&~&Qp1z#_ex$2 z#l*P!S@)jA9h>shnZn+x{yxR#sU7(gR&k3TZ!*Ci6pB`^#%=DFJhhwSe#P>S7lrn4 zuSs=JL&~w7^x&XCYS7*%K-pH8Ojo_5Jrb26&?&-SFhNh}pH-j2?YMFA8-7mBaZiq^ zSUU6neXsE8dGux`jXAG=3Q6Xb^SB6@gbP+vPgv`lE~tZT>N<#6U8$~Pg1S!FNtfQH z3Dy%AaFE6dc$lwVq~%wFLMX1ZZWl;94FkyX<8=NsZqS}l*=aQjj~Zvxddf3-0pmyg zXSHiJZ-70glNZ(PP}|1MZErjZF5w1l8^vB059^f6>PX>v^ROhxKQgyL#duVq>2>UJ3FxsF3!&Ycg`Pb{_Vus+n~y1G5O;A~iJJG-WKHH2uu z_FKdY%(eaI_piUY1jDm?u zXLwf-s?^FyDz4H`Ncxe8t_9UffYthgl5HqOL6Q z<(8u`{uKIT&P`z`WCzD`&F`u`+%l)5)uNMOddeQUazT6F0A%Kd!Rw3wL{ar3^n8vt zeRQy97`e^1_kiy1;39RkDc|aKPi_qzje$zE zSBV;_V)L7Hv_w5)dTw3yml|qv+Tkv~*O^|pYac56 z;e8*LKs2fp886emQZ-#@5I)4+)lORdQ2l_NgVm(@rN#gd#2qVtqz*B`A4c3`b%m0p zPzm?)rIuyr#3e5o4e!S?T%Nz6q%w7&IZFu>!5+QSTQRHa6I@E8!)fo@SF?5lb~9Bt z2}z~_Pu16y8#gKbG5Dj*r|Rns;Xg#&k|({zu@o?gx%4dv%lrZgyO8>v zpvL8DmT8amVL6DrYuv(c;eWzWhhfJHb-KwqFPcp^&6>A^H3!c*OZEDM2AJ6Upj10d ztiO`&K_$IdBgz^PQjG>FEIN9LE6|roV9lxUUW;F;i)?u3fbj#qz>Obp$Yb53FmHQ@ zCv7nJZM(GcrF)L72{`;3X4V5+^*b~B0FPWVyNd=homfY_Db9=>W{H3n#by>lna<1y zuO4>t)%wtx^)uDVKqrJQfPK4AyN*H=K!o#xU3#d4u)(nx7CYelE%RuUD;pCga*Lc& zyF+G#`Mwm93ARLJ^KoOHn9WuR!7qe$upKJBO~c*TCQNFmJ8SF(oA@D4RqAC~#=+%~*m})8S=wueZy=Gg}s1_Lz6eV45tWJyxCAFqV-T&jlj$}=^)A$ zB3HZ_uA%hu7x^?(Ws8(DI6!3Vin1qg&WJ=t;T+1XtEo34}6(!e`9+9J&0_jSv&hN zI8-@9^Qy5J2&nc~W2g9mK%sZ+49$By8t8Fx7VtY8{h5dn;Sj*yR`w}Sc&p|^!vk0# ztnH=;uwDpTdO3h~G|v$3F}x5*uY*Qy16e&N-F_X&en1Pi0$Ckc&8R^v0*WHdf>@AH z#kSWudCx=StgnNZv*W(G%(9(Ei!2*yc@X;uu~AIHY$JvcZZW^8eaA~`B$&W+z-{DJ4uh7hKs(FY+ItX1S0%Bt5rC2VYijX8$r z5FmR|Nl0ZSCjIwG($9 zyZ%ZJ52Yo=M+^GU2l~Ih4hrzG`9k{#Dc@jI|6Fxo3+y zBaAw6t0?L;3_dbxW*D0)?6m^J*>QJ?oHM2YL+^q!5P^)ttF!tBI8Pw%`@0QrVs*Af zenk^Ke>=5{V(mb-Q)r!+nTmG( zFPXlp%i1YWG1yv+Fqait=#t_{Y%d;XmkVCP&w#9d(JxaAkV&@ zABvO_^V%$`1m0}OqMZ(Sz(tAMH9^DMQ(UuvFdE)ERHeB0?9Ix=CX{=>IXu_QaP4V* z-bgfEY;D^FYqd?@L>pEtGJYs}+$0Gx>8mD&>pOfcj&|7iKqT{mfNKyUkgYk{?LN zx4Ze!!shIDgAB7U<^eL1I0+$!(cq0hyg(yEx-?NB9MfemJ)w2AiPBrJ!LGLg4TNd= zn<84WdhRy^f#(HpYnthPLpOd{6c$A3TOpI z_C3_J73;(=xxnu@!nIZC*TGTTewy8i^*5DTOIoq_Opw)dZNu6*F1{RKxj-}9u)!b@ zWo=jxP^(W{)(}GYE^UEa5No(C3x&*VVOyk~v}Uwr>rCdq9pRH9oV@DA1kiY$^>Fyx zQNK^Q?O9lzhjx~!=8kZzsf?}A8Uq`FFDa4<;V)mHgpCg0q1NqL(-zarLdjj+o~*$Q zc^LZL5h5gGr|dlHuRq-5s-HFMv-Y|OlP6okjC+3iL)zFLJNR!p+MY$$wlxhR_3y@w zUfCMIfu2xM2iCz|R)CssoAqM)ssoFJ4q4V~ETG+bTa(w3Fjoeud9_KDD5{d+RdK5i z2Xc=3O*t0LuT+l3e|6|zqw)8vLnC|FnC}R0zYv|~!$07L&dlY@m!FDn)L{uEN7x=C3}<8TwqbL&0p&FO zhJ?-)M*Ozv5xmCBs)XMYW7PDzs1Oq%MmV$!<2Z=Kc44pEMlr4ntKRb8qX?sMvCAB6 zBbju}*kxKO;*d6Eb#kj8uq44UQn4FLTBD&7F!jT!Q7!AE1h7QuE zijis1T@Ki3YS4`}i!}NmE3ns_cMY|)e_{Od>hlf8&C=c#(X1@vXl6GSs~MSri^T|I zT*WWAr|!l&eSjulVTgM4KkQ_C!V=u1M~UB}J!1kr(Ifl^#BS7q&#!Fym05BO^+XvE zpRTBLHI44hg2ozci_LAcEq-BI9BtErgM%wZ{*`H|(oL)nF>iKmIAw*p3<-06C97No z@{7c;|E?8?jeL8sa4+m;=*5;JKp*T~vBf+0U|;cTg3OAe+qFPpngO+O%QZUC1Kjc* za_-5(p*I}W6X&Np^l?wtzNXyPUIsr0PwEa8{2X?z#j-FKmmEUHi(2($)jTYfn;K_T zD(=Zbz`I&{vG7n?i?>mWb44wX`r}=mhhX$|55@$$7NNNHaDsZHSf&^!0>uuZ+!V->(1WbX6@(MLs$L#8nKi+ zJtUN3-ez3rYwzmKqUf8q*?eUe#EUR^SMCQ2MSVYd=QH*bU4Do4Q}P=BPcjUe(T7b? z{t7fomDoxReV5IkkK;o^<`f@sr@r$dx=?gq=H_$8LwNVJujFL}H$-6 zcijg&%&d;f+GPbA8$^QikrIM@&WkhNBh{g1u(x&=y=mFd=l+BmC0H0L{W z4XXJi+pAoGz)*bAR9lvHgzs|5Oo~TaR|`Ov=}6 zyK+6IYQN0GSfKk{S4f~!3c>`DpqPBihg3WdKGtUrW5a9Ba(bC&=T;N=1-Jx%#q`b( zGJZMW7cC>705__H5Oo{Q>Z_@4lG~mD8VXSw_VQkuF`U)HHLZ0xn}kVkJA#!ew_8wH z@3y|wwzZQQatw4z-;x|CdSkL6o)jd3(xC83I1;kyr*Bv*@YR=FJH1a{i^4e#pW^*4 zRAVjV$LSzAxv>XgCeXmf5bV*^n6b4!FMQWK78lC zJBBTS*_$*sF8RNj8yAx_H=b*l8>buQ#_5K+aq+**jprKX#_5K+ak^n{oNkyKryJ(R z>4v#+`YYzfa}9Ijbep+x9dIrFO=J}1}8B}Z^OGzF4`IlAQ9z^dog4e?(tGIAD3F)XD zX*7W1@CEk6I2NQ_Z$!J+`hH2K@sJper@--Su(H8vj`u-7S~{NXa$J_A!t!=t0((1R z(*r}U4w19I#`aryAzWtr4GEl1);|-Np8{*GzbC@{`Xq%+Vtt`wGHMb;p-GfJi8aOJ z?j%TilE^zzKAI-7_IUd-5xXpzmL{?=NTssGBZsagLddm`0wx1x=1|kgC~$&4oQwm; zNg6YmH4R-eO-gKBbGo6>8hbX#Ev$~w0uKDbWho42 za6JJ!j~!X@8*1fvuM^tn?Et8NoTN6>aL&F#A5CL5w4-qF=my$ft%8Bj9rPSZp2k`P z?OW-uE4rN}!4&2zvb+>=`6A1MX)MCEsL8>}gXj%?@ z!?~E;eKd5gTx65yq9c1~(_E~|v-He7;j2g{jKPcCZ(1v+zv~qnN)tQfFl|yUh zV_ol~EAzoe<u~y^6BvcNKmt>=0c2Z5_Mh(YH^PKvyeqQ+;GuPLz#tXv|}M~ehzso!o=^R zE{kL}pDzMVA4fA5vDeV(sYR@V=(pcumZ033MoaO82&noJ@C`Y%a)~T?d5J7pz62$g zQjMjuAgrZQc%wmI+Vhq>e}{^STv!| z(&|%g1`&1~)AX=1j;I{+u;p?DK3Fb0@WXNpR1uXg$H?EM@D=O>-%^CJv5Dg={l)uQ zCez#%EYc4wqnD`kS!Jc*>%ADEfjYvCXC=_)oFh_+xAd*m}22BV_n)R)eVoN?MK`h_K9q9&}ysUe#(S4%u` zbG4i(wgxC1Hoo|S8aY@C#p5FFUjtlLI)5$GJSIc@?4c*Y>$0GO;cMA3VVm;T zT8wl8jr=Rn}EBiIbst6&qJHj1StXSN~n58jiTw@xr4!l_z{bwCeOD@e{#|A?61Ja=dG;$2z@RM!nX9(|bYt*R$%%wVPD59(*ty zZFkzh#$hEL+JHlnm0UNn4v^({--rdjoDOfqWSX z2<7n&`gsRxJ4P#apx_qLGEwj1J+F}=w zAleSif?&6dMrGkv<}n@5Vpd_&Ec}+G_0)W6h-Dl#|U?8UQa!>*C62+#l>5^sPR~VJ#iD2I-6r_tEN7P7bSXWaA=S zdl*^vgX`F0joQy{3s3agK^9XntUx0)%O^C5o=>mq>Ui~}h)^}=pv2J02Qf9b*3<5T za%!&Q6@^_7VTO-WpF^w*ET~fs;hcMtOozc5o}?v*Sy!hd3rO`$3(a~Q!|A|b=4rJY zVe=H_HZ&)r5G8f{F|Y_{Dfbv_qU8TW&c|5~=M5RI`gSKw)JMnJWMv{85;wBIwM;In zsXUwqg%UPK*$4+$ois*uuZ1|%zFh3V1d2ET6!8b`I>DwnB|GDof%sT_4VqcS#Cv5oa~UWo?H%Hqd_KtN=<&iu9*FdF*=ycCYb6 zoBGpRr&*Heto8b7>~j&s%i}Ej+N7>3uBB(-|J28-o^s#WlG{e=1kvGhtiA#rPg8UE z0P;Q0RAry1)F{#F3WbuoLZ4(DqOM2}L3&+E>+aKxUUY$LiS_5%5TKRZr`W2Q)b&qL zhisbpCo9FH)iV}jIj#zco$zoY&j82ir)MnIH%puW0IN6z;3qiIEb`80$;ugb*%7yR zNJR|xRHx3E0D) z{p=+S!d7~5i8WM_ZX9GR#zAJQ1L+r-FTH=6iBJm3mswwJpXi*WvTtywWdf=(7vO*b zTl&fa3Tkjb?X3&gL8uiwU18rScU@@D7*}5ele$+li&XJ7T412(Gd#F{NB_y&vqzc|n_O}2VZ zs;Qai&`lQdKl{;nuAFtEfvOe)ZS1cL*;p6b6222hE=+3=EC4~|K(kzxh{$vsqU_`c zwe(z0F%BJKDQIMnN^lgXk>4G58rNU%Qa>=P*GF8kV9D7Y*(>2SwZ#B`;6 z5{)eakvT=_MQjQ#h1=X?jm+a}g_(tT{2mz8Dfig-j;F4?p_^Hu|Wj_B8eZb9Fg?*i}CbH8(5W92M0LI5G0as7~Zx%;IIz1(~#}7*|{AIiNb! zdURAMxs+gQUAayTO4v%7?TXBnUxEwDbPDyi7lEGOL1!%&($ zCMtry`kM)7CkcPE7Cx!cFOy|lHOLU*S{vemV&VHI?{D0i|4Lz{>>|`EUX(&(Vh8nm z2>#~=B|ij-oJ08!SuJg?xudj~mu`rKutAot_J~98%to5- zSiQ@@Dx-ygE?R4v{sj180c{kIJUae_oiMx|un8y*Fu`h30<6kfbQxLd2@IsY-(qG;^>J~kRdaaBKqovDZT;?6& zHB344O88f9%S0##C=|f!Aq_V1l{H^DBFyv)N6QO@V}|2fdH0F)h*a-#g>XSy{QpHU z3J<|o_ELBdmftXiM~9ZWhdT;3(&eQmcRf_M(O)MJ!1&v3868)6L(pHvo=4yWQOllp zQP$ri{Wmz_NVMn6{FgxRU{GVI=-Uo^;HBVSm~;nTN3??Y(xMfQ3TEroRy-1DiYAX;p35WC;2^q=AMfa&_04H(<=j%FVzNqeF zFDVAY;mTy05`#bDKraMiC<>2-z?kA*S$G$E1ka&eJwL2)T-EbulTK@$xO-HA_sc4F z{Z|!Ma3PgdST8$qMZpo{sta$6b9cBaUjVKt(-nhwnI5?E380(*apSE6cQ+1$UX}4p zI1DObKDN;_K@aMf8?O(M>vK0AU2R2{ho#gccJ!;UknHt2^qM=bqh_5A!@;&3eg{Hb z^>cP#>e&?M&V5ZMtjX@&!Gw$VB_2E)yw+h4{tFI7BRu&C^zWJ{{|{`^`g-v&(_!e` zV0G-JMPB@@#6t(*6^VYda9t^QOgk+cc*t5};s2PN1SV;s@1(y}t^*4+W_-VdwE|4x z680L$8Ufyz$@xlWk$7pw+(!}gG({gLG!_3-Bb-~)&F^FUy?M1S7M z?V%$)+*=uz^l8fR=RX2<=mER~hHXLs{}hiq0sPm1hw|bK9JeDpt5q&UaW8R-HU{!m zsQYdp9|s2>Uk70Z?omMy|HL6H%Ceg}1@kdD>SqV@dcjz(aMA1l6*;j|<+>AR6X9LY zVmV5d5dNLZLr2jaGrBW9gbRQB?V>pb_z zd-Dh$shnRxA4i~D$7pf{9}i!z9yNI+xYXF1DD#j8)#PDrbI!Pi)(>qE+Srmtb87Md zb<#~j!6H;RIkg4Q(63ZZl)$&f!9&rn(DGGvgDJlj_jEj3D%NiINUVk&8WPESpv@hT zXmcO6t;M4p{&vv|srZ+=zLfO9$%SUr;x#K+ZAHIbS&?emNe^ntO5AIstLvz-cpRgC zwNY0Z71TEBDt@J|`gQmfH0mA2MWmyyQL^-)D13g=5=x5V*+_h+E^mp%S#@RN#=598 zfzH(B-5}1a5zV_Pr4Q-bXxW*D*i}IkY&2H&=G< zpynt2g|PB(>q`mN~vE5U|tX<)RTe{PQbmqr_!V`&_t6V3S!v_8EBC_@t2x8y$qHIHkFw8ONz zC9vaO#ASk#lwedrAnt9YO|5tbK_N<8VNso;I<0vxFtuY^gKp2IKU(u9c$By1Z5;2f zcLkf;whbR<8fV?q2Ke1ZNUY@1j=zQh?A@-CkXR{Hm$1)ttY8q5EjnLbK}f9hVSAal zqCFPZQ7UfFOVG`$9f0}{k@^~60SdD9HU64&wqTRY2&Qf7h;jUtdUfQFpx)8>bs&y% z8umI*gJ15jPQ0~g3VqaxKf$AKXWkKrcv)v)r!#c2GYC*QJ@3q$;%)hx+?Tp_;ogCQ z7j=NbtA}*;Brd*87Bq%S2{iU&7ru{Ab(1R2z~4BiIE1@HdJ5L7D>m|Jn$nfmLc{4@ zWy2+1Wy5#hkPXMY$s72eQ7iTm3gd7M1yZ9153+Ot6DGUj?+dq_H9{l435$?Q4+i7q zjceDFZ(=SEl5;nVQUZ1BCP~6i-6Tmk*p2s;0|}CVZ|{yQ6X^5qyqnwewNlum=p`n) z(x(BV6Ww_=kc7M4B}wq=AxXk7J&^TsQz)l6TdYo@9@OipeGvKg zPw=Wc$i5dEwo;>BSYg}g<6h|aMoR33+Mdz+UVMy#gqTTUc6lYCT!Bny|EEbk<(ieBh-Hj7-2o7zlFixNJVdf zubEBmZ}ZM-(PDQHgobd(BmNb)1zq_3ZT{v$9GWm zJ&JyZ-$tK&`|wu()u-voOOlU1jp)N$JD!^AYk5HFeXy9a5X?qCs=bSWfLp0|c_ykV zf0xI;T9w2>^Iujaa8Qr;(D)u2`5yn^WmgwecGZ=hzK5aOLoR(~Uu*USfp}C-J^Jz% zHBSYFGRtm5WeH^2P0v6Gy3?<`pTqlO>!!ZEr((*U-w!J%hnn;QyO%&;_TvHez-V;w z3;XKOl3m}Acfk&O)Q`sjJB<7g3o42BeaPQN5x@Sj$eaCvw{mE3e|+Nsn$aIT+J)!V z^Zj{@0@4xGK@A2AGG*;A9zri!|2U`}Wtq$l^z3VA54!XPk2g)X z4)~J4Wm1xyNpD{taomP*SLY`l9p&MVdL@Hh&!I;{kR^w@euXhOO~dgpAIlQEl1%gJ z2h$x$qv-HgypvM0m-tX#1D78j&{}Ifl=l;I?V@9%UB1|S7Ph1r-|&8p=~skKM2VZW%JE@Fg?faw;9LHQz4DZ(<47!x zv(#g1q@PPg3>!$%Mq<)e(Z-Q{S%rM&(p>8E1D^z$;H4klLdNk2(jMq@gs(x0P&Ko`;QF}$(;FJ^x#+7aw0hx`x99>b>_f}?C) zpaX5CQqoU+hxv%m_ei2%Kl7okN!x1aJ1#j}PPBnRfZInDITrZiBwZhiVK_-1ap?9@ zsvidq`6zXbLyJdgcpTRqj+!htX=@yhb~tIWT&J6HJXE>Xm^LhS@uSdqj8>+#Z9Gpl zImVr+9ON3~xndHQkRefx0;ofR*nQT|68LPB6aqETA5ZZ@aD~RzX#E4`Lg5o3QAnqD z6M2>-Ev=AF&Xc&15p|hloCN1i;)`WroCJ~DJW;0pmnVB)5AG+Y z88{XEOR}UBJCh||a#_GfI-XmqA>3?Oa0^Ds3%Cjd_1gkW>S_9O0gkqJtYHiJDU*`m zNk+ zJ12(S%x=3cTzC35~!oMoU}Ve?50J@i;Z%a8?Y z?X7SBf^moG(#X{yK8vYzHUAiI@2=s~VDf!^4WH#ODb_O4I%+LnWWwE?wvNXttD)+5 z6gGUHt>YTXj9v$+NiscO$M1j%yZsyZ=3MEoZX3J%lP*)nbm-*0~4Va~!)=e9L?%|x}%tk)l;bI_ymA!b&UZXLa z_#hl|u5SWXy-Xgdd@$Jm?^Agqu9;t?;)Gu2rE9_*O`{HJK#P|VV*~4{j25JUeVHr_ih0nTL|A?J00 zn8*uvB9`qAp$N1Bbz;j}s%J%W#Wd53u3VyYJRB0-!%eh@x%$yxR_yt;*5MhL3{?8; zcN`YilFxSZx0ohvmqmWt4$({kwada(tR?#$K-Imz7zWR2RzL1`*0?~{cszLx6j z;Y;v1um|gK20h!uM?xU~pS_R_&!G8xae$mb=6%?&S1D>A?_!w&X_=iqR)m3p5h;c! zVIQyFs&K219$#qIOYQYV>93l4JU`$l6J|L4I{_ojAx4!e>e@a~qRZryE#}tRH5)QA zB{P^x%(#K29NsnTi6YDngiRxyRYGc@RPG=r{Xm*M3>=jGp!0%xw%k@Zb=!||nN7p? zOB6A6Kaa3~aKfL`T6<}9U_bW+rZ~Hw|K$4o5s;t=p65b62SsW$b9PPm7d`+nRPqCN zphwg3njy6F0ROClySa9Qq7L%z;s$k$Z!h~|v#!J^Z;#4u> z5K!NPOO$*_qQ0GnuoPxe%fmPkPNlfRJh9@AHl8d;aD1Lf1CH=zrWNy#LV~@5CLZPQ z;gEUxDA39ZYIKY@^e*(kB6JpaJNPT3d47M4Hw&B{tJkO;D+Av-S<-PdcMEl*O^j>y z;-=&3F`ThylRttEqyJ5g19zRJe&TVA#vSKBDgWFhQ!aSk34eJ&U8PPg_WT6;PcA=! zN2e2fr~}ABBN`!g@zE2ILgY}$$$t-mJUTY1oGEc~{Pv_IK)X-k6t5%jzk}YIP8@-Sx22Gdp2DJ>KuR9OxhJV@9tdC#EziTAoK1h`$@ACaJSijW zbQ;Id{dD*=*vwn>@HF=K3Tk-S?pz8t6ABdVrYR?^n9vX%>HvCC$|id42<@0`rv=NykW@}IWlFQn3Qybk&ha$feK z<#}*z5NVy4rDvX(rPrUArSs17@7OhAfCu+b>o3UI?}}c&o<8`Khj}J$xL^li)t>4Y znS49a_Xe{Fr+?*>CB(kC_{zsXy0!OD4BI(+@h51?bLw;fvh&%r{sQC#zan4~AL(bs zoxZp#a@4O^mXsG^L-Kjk{~D?rm3ib)W#yyuC#g_8j*;aeAEy*8rnwh+tRp7%t{pWv z-^iD4T*P|6NUoRU2S;9#%kCrNZOkPU-AJp%;}{*e1hVrR^|*}rgtF~rOypcTc$t3) z(RgG5Zve0C?-k%}4Q(sn?Ucd^R93*pSL{r9HchyKNxx2quJG?16Jqte3Dn^#7_b#I z{HmOSX;wTdnWi=0{CN!m`R5 zoUQNQA$*J z7Spo_d?CnOaxpN-OgJ_`wi0qE0r{CkpOrwAxSg(-@F|dI4*LuI=XTok7oU%cU;i5w zU;mA!{Vgj_{~Po63{K`tc}*8tv%8*SqTEKc11P?f&qWEJhoGd#X#7KG zi=rO!PJFVvSUe|Q%7}5w>IqN6SS+7n@}=uf zz#~nkuxf686!H&91(E&_FGYY_`0{B--#_I66#JCx!8U&y86c%-YJDuOIUzN6G$NZk zrQ)ajEy^qB?Pz>C@1<;tm8vQ(GCE>;5aRcwIanAqc*c`GcZ-Nu=&6)w?4~o%cm&(6 zgt?>I?LopHK`1<;xOSmpH1ErGAlIk?j>X`h-G!fd#&;Xmud) z;`UlY|35u&u7Njy(SZDot7o+4YDu60_FAnzNuIcAhz~&~gy1t-;zFSMFA7M2B~w@! zItWh<;&_Dnkr%;u!h%7}-?QLw<2G6psig#lDxHv9gfE{$mr%FgZbfDgSKXKv!4=9n z$|=}Eiv|1iwu4r4EIK77L1<0eLpVD=C>$&~EXm}g;l3MbxQ?^4+-10vlQANMxH{Dy zIbm>s-#D-(1fdHe4S(R1NcLK06+&#NVO!!Y?l83y%RnmNV2z+pFtli*xY(g6P9l~o zq&RBZs{h>r-=hp#wS&O7%m0CTyj1YWcYLy;Lat<9kf~Zuwt=zL(YjqNW%xEf{2>rsQFx1uB;&{2yg35N&QH$2j^oP~cTkB=Q*ku~E4F+Jac0j7cJljNY3tFaWqm`v*(lfaJ8>52?`I1{m}+^sIpv;3%$zCz0s@z%635tte6)qculrorZFjUT=t*IZIzP z)V{cb5(|(h~6K(O8SYeROC^Cm*E-%`{&q=XY*~HW1UgnKlVnPid~bXWrlh1YMKjo7G_SZF4PBXc39W zN!r(3>kiIYZ2@$)gx+eQ4S+V!mKNG;cze=9djpuYV@tWO=Cl-zQejH~k5S`R+E2>! zVoGnN)li=OLg!m)xZF2^Z$LPT&E(Qr`yGttzSbD6LsYMg7KF3gn{Bj-qPqwh->E96 zmg>?Xgr2|MA%=3RHFBcaZM7m$&9UuJFoBk|)BYonSj?CpUy9N-cxbe?(zORBwKTBG zGI>g^J7_(Xf53=FL-~7c2hCr&Dio_D;AsG)FIY~_dZGf=7}#uKv6le|eS_j?Z5Vz1 zns!zxbE6Z-pgP;XqvnjM8q`r6gR83R9kq`ujtwtPQ;*lREYJi?C#@|WJv(76lj(;} z+B-gf*y|ouFpoVB!`C`#3(b-SWYGA|+RVU*LH@dGWPB-O)K_f{*Y|RRmt7OkQl;Tb zyN1{ zPQR%|!I_Gw8z{pwin|@u#mc&CPQqgy^zr?zu|2f!#moAh*eKKKW>0WBPbjdL)*8U~ zdujE3p14&6xA&-!qna(xXjw0<5Lps?YoFjz)EjGW8%4jRjl(1LEiBt@)a-4nboAqG z?U{L-(De5)lxF;U4W#Xg?$zJQ0+sEl83Y;_x|$z`uR9w-g98mw%u=QF3vu z2j`OXXFqK+V4r@d&BM0+=R>puiFtpmStmrv3w!ii@#LoBoYh9cn zP61O0b+EP{X5e|Oz?kAw>w`lk$n&va7iLO*xe6Cn1i$2j7DW&<;>{Cq192)hhHW-qWtDkD0 z322wkBy`GW7>uRFKiBF)PNILVb;Ybt`&^5|8t@pTeO&iQZ8*7+0$y)%AkmYuVRU@3 zHryTw-#P6J`I20xmP52?kT%odaBa(Bsy7%TaD=)H)*AWjuN`jJ9`V}Sh5EF&dn;Vn z3d6f6%^nQYmQC4%wJ_goWC?YLkX`%{@x9R!qIgsJVDL4wDBugN9tN`O7g``5gTBBL z&7$RBXg49;Nc>Xk>a|layWpt1$+~CLl`oMqo1TBE4Mdg!Lx4+XTYngW8F$~d*F(A^ zKp&=2wV~QD5Yx#+wP-x7L$zbCZ4AaO=|v0X7cxiT=S8t(JB8baDT3d2fL96FLyA+x zT_@>AMljiyM^0k5+F2etxq)h0is<0i==WVJ{92nH_yRV^p$@{yAwEys)nMUlaKQJP z;IL`dFl`8~1fLDlyiEPl&Hfl_oc$CGwSv8lZYQ(0ZG$k?%KH z4(asXH=si4)=}SRi%gNb1=A_MXR-+#1umydLh(h6TZq4#t5^&*;7u0$vbb(2g(fI( z(CY6r4%zXJ@3hT=Fm9>d*gh|XgBy6#mG7}lkge88q-W3vBei;B8^;7XFQi+|SgaeyB+7DJswb>p-q_T&EYqYK`S zf!HmJCD^AmBo%jxidFm2u90mgMIvF9A@JL{W1;=`wns&59;}Vj*Qn@nATgJ z62MWIHd)`Ap!t{}{P}XCHd4ufZR__CyM#V;ccd2+wNlezYw0BIOM9p*d^8ove;h5D zs;xKevUZ)OZ81S2_+q*?8)Rzs3@s1qY0ylqC#Yq{Ozh^3R{ta|5uO#TD`#nKoJ{BG zYBDzOIjd!X_C8|AT8AvuIyssTHUX2Q(C~#?Fr8TjDpW}QQ^16srpYPV2Ge9~)8$$Z z#e6_ybEMRFYWP@Jtkg10X!L_$K$Tut-&?Kqbuh;X;|hgZX23Y?5O&57R^gRWjnWN@k*Q9NTmm~z8Jvn2esiibL>8-HG^tW*+DH8o%;04!lw(lHQj9=`-+F z`Aa~)@GW@lp#;dv3I$*frTwXWAWOsvFN1Ubepw<_0CqloSt3`IfQs)0TZvNfKK;SV z64OM9Yb7rM(yL+oKLQX%EiY>G9g|Dk;ge(Fm3r_;c2RqZHF@`vHUg69{@;1{(SI&$ zo$!0-WiU2}sr)i1**&UP08aZbeOsW#DEFGso>tA_mbCyV?GHLvpfxegvU*+7)|kLU zSg+!k4nK(_qJ>J=fNMA;?W4)puoFsX|25#JTzYX$JA_4cVrQT~y=Yz|oXj`0R!VUb z^8PORO-M>+-O!?ZOPYvNirXvKVd9)sPAT6-bCAuCRywbzxi__WN}h>^eFSB6OIoxu zy?qOte=fz{(g+W~LitE71g6?Tj|EfjlO>t;@Ohq4Wp?!#);=>8)u1oUAK;Na1` z?jYAT>UKwa!{K2QoI&L^5b}6?St`%2!m#Zjow%b#_#HP{mQ?D%3B;FYvLJG&6D=QI zy$j`j>E%TI?`rRWsBgKeHFU}HwCso64uZu8cd?was8*4r_#YQxXm-=WBJBv=(GI$& zt;3aodLOJ;8TGi2WB7CH`1?3pk%!*)J~eo)ZO#8f+MCDMbhU5e&dHn{agNB|2bp7z zxiycwTAf>+N3A|jN3E8QPe&0!N)UuQ2!bFg=D+UM-Z zx8L{k{NCRm*;)I#uXU}p*Is+=eeN~UscG$+;w#T~E$~?{r08zlXeP(RcD-@orYHJ6 z;|a{enuw9A{f5(!>w%f(Io;T4@~G)f*0VQIOzuVK9i$QOdxXlen_uNDyHKjA!tX{= zfT0w7Q-o29fz8e>anRJ>JIKddFI8U^d3&v-=94c5tM?tJ?2w;1RSbr`meI>1Ndj1mMT&j+(%? z$zBuKiz4r#g-^(O?_S_xQyT|XPXBf&e*g0qMm=lo(dfc;s2yA?Yjg^8tk0b+xOX73Rj)BonOlde%c{fuC4GzaS7m z;Vv5CrUcYN@@Tl5(%oFJMHpyz{UGeBO4<*KYu{+&NYaT`J zp2{wC{1kdBub~lY;iYJ3l0NlP+PfE8uxgm;QA{&l?xj2)8E@lpDBLmc8o0_)*@=;t+c@AWpErTFPQMvF~LXa*!UKSYwno01CV@*DMi(^AycH6_1jv?5ozDn2TQ*1ohh4=T} z6w1G%-K}Y%Jlw`PP{tk8_Kwj5UnMf=_eke>0@vIM#Dhn{&pL(r`YBJr(J{_Xc|YhD zJnj(n(cE0^8s8jWv~3e;-;(A{n!8)?bmPZL{t~KZE$+tj+Fd9XE4r5~N+dkuA6b-e zboY;F+B$${S(F;{AEA`;L1-ZS-&i7l6yCWbng`JF`bsFqL*1*dd}6-hMbRso2hz{} zxCa+$gTK-jnQP&>sygcD=w$>*7gS0xzhG z7iS7Q`!a0`QHEkPPNzuaC-3T&0!^jX4V5j8@($`Q;u0A!Yn2CQ1Srp=X?-C;d9O{u z3c*gOt6jQG;58MlJW}{oOCaUG8_{-#SKyO0yl)3j`lXSgna?hvO^uW<(R8#AL@~x- z&1oeE`t1~D1b$G?Q1htRwlOGA8Pp0cB!-6B(CCD=@1bgjnH*nG=O^Ut@lo9Bj+=}w43 z3E%rh(Tv7QbMSK-E3G`|gdr!%^ip}dmY&|<4n^&!m8BhCri34S{i%P1;^C7vMPwuY zlDz48;-)vso+QxBTA9XPU2z`Y(T%3c`{vtTyqbRppZneL6q>YBIO>0m452@Q6xBSz zmuyS$Vk-$!nwYDxVZlL5YxA`*8nMJX6u%1w1S@ZwA9SPn7Ug9s-RCW{F*16BNHC>V zf?~()ig5yuuZ44itMRA{S&p$|1f%+5o$^hL5qMc$JncakKP`n1;kad5MU61zJY)b~ zc3a?Sb@AL=0#BrkAvc*TV}8BMz)@Z!37{3U_s)x~qm z1@5Ser=Jyg+8OmyJ>!#=0vxm$S-1HR{nE2$&XN(H~FyiP`wj|;rC zE?#g{;01N@xMG24*Tt)g1fE(K&)qL@b3(bOi`4Wby-0iH>=l-p^L27mR3Py3x_I19 zfft>ZmHLdR)FZ352{gAZJ7>G+v+WheYvk9LA3n{Fn67G|_Sg4hqrDs|yncn#e#c3ghv{IBNDgGE#A+%VVe|8|U z7*9ekv{F>~K|XG!gpaIF5s`Av8f7VpqI8bH)9T_ivjm=47f(zQcywL7Xu7~F%IfG> zO%-_K;<|>E1YyV{uhz;d$mKh&(HvLN&#jfF81hN2l~(xv&TTEOpt!Zt8dcnEi$C_cZBz#JlF0Fq%>xfti1k_2$Hy9V4h! zXY`v-!w;GU;0t>A4fl7=vHI$-{d+1?&5Qi0{ZHn2>hqGnFAeRb z_9uYRqxoAJ_8@DxEs}=pYu=D9^ioRLR*!8gtWFZmmFPf_UTyIk=mBZ{mEK+( zcu*9k48-I=sKC#SDD%*fxqqX`R|RjI=Qch zf6XH)v?TOwKc#6?bXcOxW+=}J#ro;)uKCd(=)xS;PgzQT_E*++8jbZN>uEU{Gi&Cf zRh}1$a~$>aGI5S0y3Xfo%Gc&3o2y%?sd;8^vG5T6^q68n&&s&RlmQ+op4QY}G{x6_ zHS)W85O%;?IzZV5M|1yIT{XZ5-x>UCuf$62oA|b%CQm5g0p;EG-?4t9^~FNB&` zxw1Po__A$(_hjtkN8!&aU!i51^1Sl1c@`$-g#@>ti%(g6&4=YONR5_+IWGdPSv11+ ztcT>{OqBeB;)@bl@`5tOyb3*Vym}Mw2L|6LuB9jXv(jHw2AcoS%Wj!0yFG)HZI*P` zE^_l9-U`h6vJzmv(@SnV_Uy~b%jQfy`WhMi$5&AFYe{>_nZ!7(sk8sW#%7EG`HBzO=n^0Lt1K)(o z3SH%u*P-(1TTto$hT>~ZdFT?d{&*X|G5xpU5yW#O9;Q+&oto!??Ls<42AEUvWVya( z?|tk0BY6x~-h)fe)l7Ov_Ylow9=(*^7eh`4D-q^w**wza!T3%_BVc^MKl7f_!h#s+ z$l;&md1gBKcx13A8VEBQ2>zD$$}^*xjOkIUnQZsIa+n_Z#zGQBoL z2{CWbQ=BveDWX9VDdrAQUa}yHo)}_@#L!Neu|tkXtPDRntz-4Xaz9XpnaB2iXjv+c z=@`u@>vaxw`nPfsza9Jh;_GTlTmR9l^8Z-*u?1Xi@h0{rc)&x!eQlyE56z3oI=KhDVdt?Ntn~pc z|5$NA<-Jdo&rJKW@;_1Po8Wmp^r`Yz19slv%?Tpb0rG;A^wH3PlpAI9nvsY7V566Z zG^Ete@cmmv*FICCy6o`hh5q^3M+p7|;WjgA;nvxvCU73WJBnAjReA!E4YP2N(n~{? zSaU8GE$0m?O`oIfp6VwzYD|Ym%epL3w%s4bc=WgY<$72aJXF(Y$QR1H=4pO%EpLxu zXw5fUD7UD6lzDd;?fcaiy`8yqahMWnp5Q~;!S-_~?MuaqGFg z;YY&Z5z29t-KmLR!crP9MNoi)A*CU*(Osy!^pYdfkpIZHlmS7=`_*wbfJWYSG`2B+R(AJ_s!)j^ua2;5#IdxF>88^64fZ*9Om^r1}>X1pU}%%;D!o%iHc&BM=`YDXSC7@ z{_kF+@iiPv{~4`3j&H0Dqm>X0S11{+bijwAC06Mq_sBCt@rhWx{+7}=_~#|^i`*`W zRU-T5o8e&evM#`~Mfy7Y`DUz}*F?hwq9h8?R^VI1U8}qk^dv8dtb=F7;$C~mdyKNu zJvR)4&rIW#?&?@yUis5k^Qz?~^u%m1%UER#x^@c3A{U$J{#d1#I!33~-bsaBn1jYC zzn~+2_c*1UdzIC?nC_3mojFY}$0%xrWsaClmw#8c}!D&#wWP2-PCRIzS7n;QQ76T!3$jtTYS1uLU!xM^zwA& zL(h$F5%shb%9#$=da>KIeHe#We+HV%VmBI*;NFNHo1uIbFd6s0R(}Ye($!`iKlbs` zu+d2a>naS>LaRvcUGew#yW=XpJ2aP+AiujV;I05@8etfM_;s3pGn9Qxr8H_L8rRsH zq|H}SypyjBw17;>iekQxhWyipuX-0;5oo65=3kcF#0vsV5nSs2QNJcsT5Rj>?KmrN ztii#`DP@A~lYdg6Ri|mxMkSEOeXP@c5{?T)$!VIuQ+dZ+SR(n+M+Ka(^ACOENbjL=}w+p-&D@So| zind95&K3dZ>GV^d>$&kR-y{s_S%ViSm}_6OLGlyV2{=je;SsjwDX;kyuN7#tE}n!h zNff$I&T0Wy;9iKL`BE1T$#V!pQK|9E--hP{jT(A7?Ys&2TWGX|MrOL8=1L8G#ES$g zmI^ejR9;QmQa!=N0#4M)a|PKuE>)m4bZr^#TLDIGagC@+5okG$SfMEN%h%2ePn#?7 zLdhu$*!0#*>O_^njqP2zth=1>5~OseL`ltbdt<=@dN>v zosi`e`#t#L7RL#^K&Kau)#)(;&erKAKRD$pAB1q#PZ9ig%@0Co#Btj^pXeF^$Lst@ ze*}L>ihDOISgH62Y{E-R{(3L07QCwCba|yR%&qiR2$_7<6z}T-F2#>s+(nE!5_h2R zszCFP(|Ze)k9d&LzPG}jCjW)XOKwS5^px{23R0#Xbsa|?M7#~V89Tv@dfe+XfAP$g zpBKDj>@yI4f*oHf+1`~U0xzLcIk=+}esf;tZ@+hL zOLy1dtLzp&xG|zJQY0FGRM7KE{-F|X!iW2?hHtuMAHmM@0~)4y9THrJkjC%?SqTpa zFiFpcx1d!V`-k*nddu`v3iOgF%NOM0WAY~K z7C8vc-zw1Df0Ecn*7IomG2Bd4g6d6znyw4%leZ!|w&4(ZYeom@HuuTfAV`VFD8sA{ zbBo)cN6!9J;L&>ILn8H%>@0znAN_|57^Po8^%^0O;=M|6i;l|tAC)ConIX`eqw-Fs zXXxZ~0jKHY<1(+J`0iVs#h12JkP`kW^=Liyq9ytTR4o+bnj4uJ#y)Efv4(`FUpkCrU^7&rc^Oi zCnqHcxVl(mi~J@!t4jR>coycN-*{j|nCKTUFTl<=PdDsHvAdP8eM%;Zc%{X%+)^g$ zdimo8ULf@_Hby*epYK&d18#&n3odV*AY~TQnZJ==Qk=#l>xIS;9P5X@~# zT=75LWRk^fPJcinPNBWetr6U+!?Kj`3I(6oI|3~^EHaBhrnUphe4p}L0?pUC_a(RV zhCm&XYfic@g$u6;I9Vr;qJ0PO)=8-lXsk{yza+^i7X(~+NEWKsbZ4Q8%5Gljtn8`h z1g{v2eefHxyi7)SoDy)JjE-UaNNZ3O1}tC=46|$~D^CbY`k{X)lNoxMI8NwUKPI?I zy4*yW_4p$Kjn>n~4HE@eeo(*_2W8f4l8|-&^zbR!FAPNoWnL5ZNq)|50q5%cXJ_er z-}s%vkang*ho-Mo7#Pc%qD8BAFYyAueNY(kJt0lj{A>ag^KW-lQ{GH;pT;SE%i5)NN z^yQMB{)a%z4#%2=8Ezkc=_&MQ6BXyI^k;_ z?>l2n7rSRYDP@8)4ZW&F;n(<#t4e6tx(Me?2mDS&cSo(CY8(SAn{bQ^SC#*S z74B(b#pbK}ddygy!Z{8Ezj*LVcsh-$#IMpDw6ao}*@VYr$!=zd8b8R84f^mJa=4C; zUxR1#2Hn1k*U|l+NqepZW^XAO1O@z$hoOB#I9p|Zz_SFrHOvp-7LCz zQ+WsJ47{aG$AGYsTgpKEi~L*Z=ewjXdUEk<1x4K`x3)v zZ!6Dwt=PlfvdOo-1|zBA1ig6_CY}x za(o)ll*T>c-LRSXEJ}|NwWo5QQNdtAOcq2l)2(sv59W{*s3YNj(S@rk~zr}#vdKdW=M32GUgs;@Sp*DdPXm_57FqR#ip z&lQ$JDFQDX+PP1?6LSQbE&09o;Zw9cTc(<{T9{Jx2xX!;yz?9aji+G^)OXGIddhtm zQ;vI5*vr@VGiZXk~=@7M-`N|7Ldy?+-~IHdYJGAd8I+=k9LzIxTFXK5s5O zLD!q8Ljr`irSL>yJv@l$sKZ#$3G`7@HBQ&cdNN4$GgY3@hp7?f5)18{Vd_!G`M)?!{aTW-fF{T>|IB-= zR;Hr=N2c8Bnf%%#*TQ?IkF>49f=B4kc8$EPp}rC7*RpihqDF+b=osW2;1?Gu2Kf1N z1X&)Kt{X|6rkft89?eug_tk!Wx%9y}wG|C-rVcib$Dq*Lf$iyDGu7WbyBCGG#U`oE zo2%_j)3aV}u8uOHPqO1#(;)YSy)Yf&r5vn#*}tXwqQ1`u=1J(@PwWqi>9^tgeO@*% z>_sC&THDFmO1&!g`NTx5{;kzsCi5gcwPkIP+H^OW+Q|;8PgY4A)kAC{Dsr>Co$61a zZPg*jMRZ#=7>j!9G1*c(rb2%0)uwo1+B&Ks^n?g!eb8QQVKPsteQC84>m=Dd@DIcQ zdat9p);u**ZW^m~Qk!uZVOft(YCxl;$p1M`nG!mwpVP2n_h7xy@x+d3(Xj)1`BguP z8}2`l3OcK^;1T`g5%p^udVic-y0j|)nuOPODp%d*~zgL+6WU_Yzcr8cqUgxh9@M%UDkoUs zuSC90OS-9%ji%ZDA^#`3sT0kM^u1tbqrzZg+^ntL)c}(@MU+_-dGu66ol6v=JHUfX zJDUa4<2}`o;KhE}s9aP~o`_%!wdKCCc{H-8%Bvu*<$rVNa!{oPjWwq?3 zwlRsJhx2`daIxBR4Ff3Q@s1JZ36WH}-~1IRebhPb6C=ZYXkRn686E4RD(3B?hN|S- zSN#a*evh&v7@!8ymVwAA;T9t60=PF&eIGrZgP%lmjxCzBjw&TSsfM^O zisV&RzQEdh1y8EH%+1v&)ki&+q6Z5@I?i-{Dr@*tYLpq{xs#t!!_9mBv1U1sIo{yk zz^k9OaDf{Z@F|DIeXl?EaJqKVKY+rXRi~S)o7EjL{@_`)CnjL@d`^Aad_=)ekY4lY zR0C6E8uYySe4`1y{aV*)yK-se^J>eH3B5(#UlZx4FRz2X81AN;D)A}3{hmWa?kq?G z!mAThpu3X?zz^boR&-YJKXg`!f8wlXy&QDJX}M^@7^jQ#9!bl>LJG8oac4&M<^{R)jk$CteM;TKC2j{i6Dz^PN^WNL@{x zUk;0)A%oQ6w#UUx1AblM1%{=&_R@%-IzBq>ub4*Ev6tmBPh8B(-Wu&YghhLYH^PsO zh2zbGu?8XEWJS1*VUDw**xH=G#`h24i)eLoda6-%}_1&W+;uYw0N0@e60=&VM`$slR1>a z2lNbRIaflp{L4Bq>>ChI!;;IyN)A==0i6O`%31uC>BLee(ZR$#!QlgX1GJiwP_3{; zC#HO>E2c0pi8;x9KsSJvbU0KiIpoaacOagEC4q?*9IE64Isml9LMZNW=J9)-7|q07 z=H&4Ku79m~d#F~l&6!6hv2r`iiOfmj1AP8k{w5GNIP>@e6xnxQ%EWRGRqz4+el343 z^10TT$N%WWLMG-gCzlU!>T8*fP^~<}na3Y>VlERCn3E_J7vqYThH7aT!7uJiDHBh^ z>|kOUhsyZ?Z@yN&FjOm8=*;6!Ix&Tb+04n|104BU(p;#{apv)75Kq98z{GgwB=7+~ zd@YqiwTkJ^JpQ5+qnTLBQOfuL@4c2hIaDj18COq@3Sjt59d^?yJ%bYktJQJejpAXT53!aH7(K<1OiNzeHgb#4GYlWpD zn()4hJdVx!jJOk++uAK>%W(zb?ZW$XkOd5i^-9ma)Btl>~J z6XD<1GB<>1!r{%turWF@mx+Z;EaF4XDwJVXh$h_HB9Fs#qJxR4%t;f(bljDU5KXwW zMIOHd@d(T*OswWm4Iki{*5a0iXu?%3^7xfbOkiRGa|-zYue6pjKSUF5YLUm`Ix(7w zDa=Xb13b`L=`36jyQGzii2l$7zgohxJD6C;p>jUJnX4si4%Xsxoq6O2k}WAr%;r!I z9}=^IwbVaR=iFO;wPVUZoRDoy5w`Fc)!@Vm`p(r6pbo(#k4yVhT5qY$;`8 z8i&&P0LPY=at_3^I&la$kb7Y%WMU16qL~Q)l~!>QNuPA)ksC-h=Q6R7Lq+0n2p4iB zNJ~57%p*6DY;iC#l|yNKfR{?EI1q%^-kC>kAoswM!o+G0)$jp6Dy?vLke0mLnMZCQ z*^SbQpj7!UF1gf`yB*+W6$iPK{ksA|JMd z0c}~T*F<<9mdt3@DJa+}$VoW`F(rCneQd1}L&?+BCX_x=4RYy-ES;LB2C~j2*1>pw z2)PJu9Iw+P^&KWmnxyu7*fJ$~K!_*%rePiV?SSA=X9hTf&J5^RB(iX-d8g(W8~6TX z)hHL4MvG2|X-I;)5;tIHOOV!3Wy?;%u0nrziu!*m^!cq2WgIn_T1)q#^6uICzc24F z_s0UMV)B6hrM&O8?i7r5OPaR%ZwkDFQh4YXW>D}iWM|<#RO*g4P@BMa@8P0#7W(YO z|KEjvEg3cP{pqR&{j6V1uT?^#g-H*t28DZKmaTQ6 z8~?adutuuY94>Bj_}Tu72mh8`PJKvi`oGQnCMf44rDF1z-k%?RvL1 zu1ghyQQlzt%~2uDIzl)ix~;NAa(J{ItfLYU!zIpnGZ_mcKVseY#~@0u~GM3^!Ym zC5xAHnNNxG6b~`!T1%s0v(%;mIxOa5^F%NY7-r8>yTh|zG)o=8d2Kvfee{1TMs5tm zu>Ms7=9#%S!z*kr*)}7MaTK*#9ZE5j4 zn~{I`T^ejrAHgDJ1GcDJ8^`qHiHF*GFR_FeLS^;7#7uzbeiWXk26SHHiA{=oa^bn?^zn*IkI9kWkst>p!QqU zrRIcwbh4pu5N*=Jo}}K})X%sc@w4kb2agoIK1zMpBO#ujQ`^+2rnQ=T>$+wxf~dJ~ zKi@f+9^bBBYO&Q@Zw5twv;M?o+4KjS-^8N!e$YZ|lJ!+SJc#zRW)F86VH*Bo75l`= z)n+&BPsoKpB3>UB~!L)Z(dtc9azQVUXbf@}$ z!v~^VogGmajNXq0j1}mAPz~zheAWCf?_oVU=g75! zgqA^55Ve^zD(A_WjHmd9;MuJD%YNTMHBeiIELy$Msjlx{jD^`eaJOXZ=aiAJJ$b*~ zq>NZ8S~S*`KXwg7$8(=Us{Nq`KkI`->N_UmLyea`)bEuxpC;|CRdmiOsF1Z76E{!} zgHpRSGHc7IU2!d%EZ9Q$=fQ}cD3a}0SSMLpQmpQ!&im9KoOK?a>`nXX%ADV)21mLI zhgX_+Eo83Yw&6>eZ`;K~)N;QX{Lpog?dfg-S^wUTehm8au>0$n+c^Ig)-bll_&-8> zqaX30;HzER(c81ouNqpQde<%i*P80u-!!VIR-XQ$^342yt2{CP@0DlPe^Ys|WCvGN zt~{+1{@cn!4Gzh>CMwI6|8JEAAFcmQWl0c~#Z~qHq0VB77d`i)@=T$BtURSr#kXV& zk2V)C3qI5G3o$2&-RC0*@{%Hc8ag8JZ0FOeBkJqs;#*n1N6}qwO3C``nCgxHw5vqT z#0!B&9ajhO{{zR>Rv2kga~#h^K7}9fe~p%(P=|Cr*pC|_EqR{UXam0-95Q4)xV1Xl zwQ_8+N2i|c7WimM;S)t)jfCb`UGWxesVBXDpmKsV0TSj&{97 zIVfMECFOyp?6qpVb-6dtqM5(tzL0Tl5pLY^?1q^&jC%`&RU`*}=^O<~p|6G; zJpC+!e@+f~0(%z#p$|`^8!MW|omP99^A!pojxMRgr}4FsMj>a^H~7Z=a0Z>c*pTat z`pUq{gF;cH%+pDnz0&=){AB#Ny^z)v@0pwan!aW#5AibBYMce>)+p*$rjEqY%~@q? zgnPb%PB*PZM|&qRUr?)Af1JDHQSXvZDO&8#`dU>z?RusUFDxpInu)Jw(X_D`c>PJ3 zYOctjerMG%zr2L8CM>Rnm#-&H>0=7)R|BA{xfN=ydslN9O1B!N%SDE+t)BHB#lMkV z%^fk4LoDx!pEt6%6-9}43GswGrut*z?pf9N1?9o8X|Y>VdNaUOpF+>6!!Rp;;yE?S zGid^DW*%)kr*`p+or0VkYKELxL{1v!0C*@TC0JulZ4%&)(yEoJkiV9QR6jmnD^>Aw zm~dYGvt2b3vEqTj>y(qrnd`isLK)Jk7#4RM867dhKd==Z82E%ZLtdIqer!7@_K7Eq ztD<KYu|Dd7?&| z)2G6GxStm2N(~~4K70Xpbt1CJRO|X?n&RTf_bmqMJ1(e!Z8M>Pl*(ADxSyuFXppkI zq$*hoJ0)IF)s`GamNm=geB`sCt;}|wpJmn>yJ93!hl^@h{R%0cj5=h+&P*58#%=Q^ zL5p$DR#R7cGFxmk#PewWMO7VHF`4tobgXI5-vq95<+@;MX8{fvE zqDX}8e_n(2P(Q6s>d4Dbz%Pi4tR=;l>`LYz;zXd41&0&jhex(t`gcy|Mp}78ZA^17 zslJ098}Y-iOmXh3=en#+;19*h0e~MAnrQ_8rr7iEC9d@JtIKDg2nXvf6P}&Iy7qYb?6Mj>G7kPZ{r6F<4C+@_U4W>Q zY?@A}@1e0>zoa<$_iz`QXw1SdX_Fs*Ji~Xc6EwDm@gwP{B_il5FEbtmBf+HIC9fJb zEglw5QD-1U5S%F{I8$VnD@7I;S<=|9r-61-OM*(vKR#AhR^o7SKwZ#=tCQ? zs7>1}%C}i3o2+O1h%(g@j(PHF37_Jn_B*C+n z_4C|#UMjCI=Zy#P@KrSuvk&ir;GKfJ;psR{k5sD7+NZg4uiug+&MkASr?DldS!>~Z zM8kZrX2qCF3W;=|di~3J$iQd1 zA@3mrpXr7IF2H63@`3PU-qBe;`mHH&F?FEmAt64~h0s{vP@6p3$$1r8u`b!Ej%0}| zjxJdyV$#Se)z@Vb;XON-ZxcyaFr_xyYe53QiE9yH`Pebzc__1GKCr!y}B+vmZnszP5ipLQW#BF zkU~%__a*QOf1+36p%mgp6zY8o*T0!l!E%AP{)X|cC~*jJ6ndvhZRXeAr5!^lw=i;W zL6zDS3&$dQE=TVnqSIZV)}AizC@$HaY*wO;P=njx+WrQ2@NL!4^FDL2pnMH< zhXS>2c5QTLUC-IsENxq0tN)i_yBA4ecc2th4W%#dKxrMbw@CJPjP78xhV}7AX8k=t zEn5wZZ0dLyFSVApK^}P*8@m<|J_4kmDK zFcaEH(pCS!gvlXHREP8sB-oCqd6v#qHcgiaf_%QVshLf-?X zJsuEBWAYhE-p6QbPoNbnUnbGE?vOC{ip1Im37(J`2bfMW`4W@QN%Cn%dwKy~%);j- z+Q$PD!Qe4Z1zB5i-dX1QwE7Ep*UgaW-GG|U%5=a^h6 z$-{x#t{LR{oX9n4+Xb8Dx?wv@9sD5F!UsaX`9Ua!$u}f<6r)ENEo1pAiIxDh+%zQS zQGW|0y7_`U*#h!uCf}0esf=D^bS?}3Ez!$BE!Bp^DSD|sB%bmEIi)_xbC`Tvk{2?1 zm(fxdz9Z55Ky7yoiDZs(SK8jPK)%MXoy2mskk156mIe@-&E$KM+@L;$?i=J2oXCA? z8w#7{fnl3Tdm2D!D_{z?Lg+Y?qv?YHdm{?-htMdOn{Hz_XY&$II9&fZ8S)v8S=}1ZneW2<3Rg zc9@1Wg3yP6DW?&HrZRb=ByR$0n`Dp=aUzqXtw{icCL6XX^jjc=z5`6V10i&f$qABN z2-G&kASZAlQ=~1b5rn21wj!FWKxiyrI-x*lGLxrC@+n4ps6Y>}e4<2q2SQ@HAu)+k zR7haTNmshcdOs)U^qOCIvxg z9FrGH@)SldFuIH7Qzcpf)UwEs7)yhKA@O8Wkmm)1ypzd`C3yj(cNiVR!b>E252z*0 zkk~;Vgh1lWAdnsWHjicUQb}ITs9z}1d=~ygqW;0S$YqAaXpXT=+CGELl5W_x)9z5n z=K-dmFbIue@^VQI4S~=KgS?FsSs`sd!Dh)YY|(Tg3_=G1Q@d~oZDq1Uk~@Y%Xr)1Z z&>Oau(l!A$%PPZ`M_0okbPh14?Lg>0lUGZ!76x=CqxTrilxQ+g%Nj$XW=13w{$}or zk>K88?pn!xIUML8jNWE6OQOqxTCxp=YO*zhgm(nULz;p7H1fCOIzbe$mbZg8}w^)$bSo%uxpi{=XEA;kmS8UZ5s{pHMVV(wl>Wmw8^kl z(xes;8UvV)w}8-9Cg)0WDNx&HgM5W;o29K+a|r!q*e=t&mJpf&n69*hPz95>Nb)sC zpKb;85~Fz%eXa#0wi*%_$^Fpt(~IpOG%yN6bK60vgvkdac|N1J89l~mkwj~NS`Hc#M`=iVNW9S&y zJZ4A~vF(_&{Ro?-#IPNp;~gPi1en@(g3x{@AD83~9UyeVAn#+_327S-o8_coE2Jx( zAaoWm_2~?uy-Y5ZI8Ht zqq`U_lW00n%UMHWCs`kbgjZ*f-+vV39ZWta$^T;XPe$_@JulG>KrQ8l#C8hr0tx#g zAP?^X@-`-4kmPR|-NoouMlVWq4^Z1BLn4oDm!z%rqmZvKY+GnzSIEZ#rjo7@`isez zCHW*!+ZBVnnQd33t!EbqT{UdEG`AasrURzS-5|7y$(52^3DkDYAa7*bHEDacD}=5a zwhffg9YTu%)BWxc%3<;iNj7x@`c@C1>lv+*=)2wQfsNo-yy;TW%Gm82O-p*%n|oHu z@O}>0a5#hR^{@wzjNgQC(hhb$YY7}KPZYjIEs;;E^^+t%iJLAh$s&q=lENox`bip2 ztY>`Ky;*H!qlPJtGZt%{3E8dI7hB|wWy9-HpSgA~b8)3~#;@;*i`xANShvMR1s7K$ zs&FV3A@q<#sZ_?X-Ek#kE#R1UWXw`m%#yk>%VkW&Q znzKM^Tybb-PkRI%?~ROYWBCU{o=SV7zD2wGE3I4E7ER&(@rLNt3-xW3Vaua=eNf+K z0H!N_AhdEY1;vt zWrAT_N9{BSHR}hVUo;41GdW(8M*_7?G{{+On<#BZVY5s!Y-_3SV-V`nA3_r!gU}i# zPnP5aptb~qoXNHXX}biQWr|^2O)n0B&_E4Ba|b|Z6_ck*@_a^bGrE#d?Ci-mtp=zi z(U8Cb=#N9=obEIuNY?ir(Z82SW5<+JIQ=g|Gl*;6JlH7kFgi;LhLbjzy+ich@^9|bqdhis4 zZULqjo`%qTCNGfWm!1T=l+hGM7fLi8s3p~qz)tkfK*H-Okl%j>6f;^kaX_EX6qq`WL#pqIr?g481!;qNCwm+n;^)rxP zX4sNw;&YIX1xzK+L5P@~F3Bf>+LjyS8EjiFZ9Sib&^79Z%WO9Zi zR|2&;4DvL#Ii&5`=ODDwuuY|m7a+74Fx`IvLQ|N$N|H^_1AXg7pb3nwmgu`cEt!VI zWXgRJ5?M@cFbL#HOkN|&4PO8{l+lTdu9fI8pq4B{A|4xrLn5EaVK0F^fyvnahU;$R zi$H&7bUdT$B>Edr+n1+K#|xS#Q|lsL#uge{>Lp;$Mc)I3{Dw4VIq_)V9GO zk7e5iX}buUWusvmLod7np(kE~(41Ew6wBmIlAHq6mTQnlvn^NJ?!so-Y}jJx{Z}FM z`pXbn@hXHyG5Ie^UdgD>Ye1tJ-6B!TE0D-DBp%T4*C6o;VA{mw`<+4FD#?E_+T?Yh z_ZZzK(co7hvE7iUp;50x;y-|?kjZzMj1f^>E(aKmdIRVkMt4ZG{cE_$orc71wqfOX zj`2HemR*Lenl8Tq`7*%N`%MV_&Ex_}?)N%`b{phdY}+kuvtYCAF>E*K{+kfG37DRL z3qn;)-Ydz2-hfb{LB7GZLTOtDn`NJ2yG{+>hLGo*5PI)z2wh|Heo6j-(RGYgGI~Iw zIY2E%hQw70dj}HgTOfb+4#-!Sd{C0VW^^Z`ml-`I(cM5ThYg7e>hvxoTD=W&^t&Km zVsf!0k7o23qZb)HBGD5-ZAT4>3v4?oZ9U$B{4v8;PICrBJ`pfg42IBoCYMO^RiL)x z2KgM@j!WA!??UK=VLMAJ-hiB1A)yJ$!pVcSJ%y8xTz zl3^>R=l>1)$3K8j^1mT;n8_8AJP)YtvOzw?w#(9X2R6$U!*-C~`w&8}{R=|NKZH;b zldnp$1E{UiARk~`rL_6|8$#C%+kX1$BM5yAm^OX{p?yrgF3Fo2ZTvCNLPl>$H0VP} zR2dR`Df(kb`~aBtGIbT^~7B--vHNc?R`6ws7UAQ1m4 zhS6T10^P~zZHe~%7#DfRkl4YtJJL22Hp^YZmQVLSg?trYdhRm_ZD(?gB)|9xgzg#S zZEU+IZGXUKxo_CElK)T$d3*|?!9yXG$K(f+JOrpM+BLGwIE%;XqJ9>M4iMspb*Ezts?mRLh#6LtIo5-o>WH!^vQB*!p% zl+g{0j+N+fpq6ol1U8@_28r&UgPbr7U+n8CnSp5xTms#=Zj7Hr|N6j&0+m z?ddO|Ji)MK)ABDNlnR(?zJyQ~lj9}%0Z`jSgS?h)6Q%9#VGx>R*w)a-uOPGrFx4Lp zp-d)EmSpRf5K1t}tJ#(yZJ)ztnPS*h(ca+@+6I_HMnGsKlc!2@_*X!GWYodvG>QHK z)RJgOV9V7JkT}fb4qt=3g2~e*x$|(K;~8Df=nRQY1Zp8eBAu>%4T*9l_x}duWlTPPnLt-i0W=Y#^*etURTN(}i7V@ut4WaaJA+(su$&#D_)HcT; zFJjvqY4iOCLURpUDt-AKggydH8@_|kLMG3X* zizV9Udq^xXBxck6|3D%MFjX>n7L(H?`39rU{s?p?qe~_F!VkE}KMaW^w*4V(OJTDt zGi*fle}cUGe<1YkPY{~H=vs+h25QMNBqq>Hzd_=uUqDXz4dn4m&X(kb zjNWDRcShGq^gdAApN2#n+y0ccw|<5Edc!u3HjIRPCSbBeLuf3Mb0oRJZxGsGkjJoX zgR~8W&9c$3#nPT=2yF#S!J{BFn#r3aIcy|^at(3}+j6Dt=aKfNPgY-sQ%Co~)o|G9 zgNwd`6Q>U@mQQpa9DCR{yA-uJHbv8eQE=`h%5a+)dvj|Fhcgb;m!7vRZlu-k)Tj%C zNxH|*!6#1lT{cd1_g$VL9)A@S2c<#KGl|2y=m5fAsT{sNfgZ%zgF+oRu^#l4z=+`gdXzr6)?MrWrs`Ex|L3i zwl@wcaK*{58>dLbp^mY*7kQk_PMJ)RD@tMAC?zt=1dg(WqhJ^l-n>C2t|-NIqm+p# zwgMw(e{sYD8L`Y2v9xZ)3VBJpjfk7+`7!p!O)6Y*%In0T_fUkCJO;VTL)SK}b`F<{y_4npggj4@Iyw3*SyaX_;f#j4DV291^O=|e6REqwuQc{F_zhpLb* z!&5n&$Kedx5C`{kA&2!xqlm-KN28ceoR3BcpE%vqr6P)6zsvZ zn!Xs1oTtbzaX6jB8T1#2b0mJ5!}&67pMb`rNN}8u$0;nhIoBRAvXoK%n#(xsyykK~ zab~ZAPn_3WDWd4tT*W8OYp%hGenU7AOD6SiF`r#XLasqBhsbEkQvgujD;S36m zw+BC2&0%Ll%3){bqW{2&Gjp+gqGyg9(z8a=No zE|B3494?lew>exX@i82(kzogi2wdUxgwofPsVw5I=wm>v{)L6e{^?}y#ZxUwg;P%=@8>-WJ<6{nKG$e0?bP%!~Agq z%mow+z+AkX9Q?m*Ih7>XTYFY6M-G$8ZwjPqmQz>!_l#QsY%_f{#oiJFktR-oY6@jf zfoeLH;mj+W38m2#IMv?DglX(kky6$ar1Zm7d$74=1^$aCo`GS7l=#VTq)3+1(R zCUW`lEaWnlVqx%1SPhK?%7hU$<^&*mV-`5-Y;ZEE%WP=o(vaD>&;p9bnP)M_SVcJq zo6A;H`D}Y@uS&-DuONFeF05uXJ(euW=Zj=fK1ssZEpNi5$-4a0X>_I8WkdI9w>h{__wnk(?g$?7>|sI6QB&2lua*bGT%b zg{Q_KwL&AcO19K&Zz|tGh17Aby-~j!21Vy*>{^7fV#Jay(Ht%<^VLQ686t6Paf$2` zA|Z(kvIwWR-ykP59!=I1*_%(j~w&u5hDvZT*`+9QCem#@r|V(+L|`jHLbP#nLgUuHrDZWEjgpUmL)zS^X7?%GBX zin~72TiYbe(;%HILf7V7w9O)PE8b1}ON7>rchk0r&@P1XL@0iuo3>SiVo*%m+E{7nfq*k~lYQzV>?&@K+WVw4Rn_tP*3Z99r0jSqiB zX$7^)K_e$`uCKXc6;UAKCS*iu2Wlm{Xiqu0}wZ~mMBr+2Fz*{>k zLYX(+wPH~gx3;-!N7`6dx7Hj>J+z~uRJOxjKNU=C0ik ziKe4Cszj&|)|+fKlD~`R0(X*AtmZ>jly=L=y1_dHo`)8_6O=?gWJgiiB738kP<@u7 zn%#zK1MNt)uXcw+M!a)?ytEXKlEa5}QQBQYUz>f~SF34bUDaA!hR{94rKcC$o4!%W zTv4^wM`;ggMHmNKbQC9+QS70OisJga0HK&DYn)xXdcs2+&6tsawYSY&zPq4@8?}Bh zmoJ~>(CNkY2(JPTqqg}iu{Zt{3V-3g#tE%)`#rSZqqxOLJmjN|kFu_8t<4|pt4$DT zu0$wagtpH1(xplI%=BZFUrHE4RhPMq6CNjbb!KrlFmU%M#%iIGo7g4Eiz6 z9{gDfhxO()mBY^FHH}Z4&1*WJIGb08h@yWjX7Y*iYcU5W`giv+BO8g?pumg3NvFtg zo23Y+b2x)u<8U^I9Td&se92kH;UXD6#NkrOH~oQd1&33pEr)9)=M4_WtrKa*a5#~} z8MK_ksS+>dutSF3mLZ%YIqf-|&tV6>#o=PfiREya3}-IQmbKmPb0m@iN?z z!$};@pm#W&Ch@Tx&XnPm9L|-T5)M~M+-o_)(U`N3vg*v?cn)XKU=AlsJdVR@GQ66@ znUZq?VZU62t>eu2ZG2n2I-^QAh}$9SxF=q2B^v=u!#U93x>m2RZTEA0077{Wp?KGvilYym74#+bs<Xae3(10D7bPl~X-lnSshuQXru%Je$eXWTpK@(_b`n zr9IML@I0)00$V3KYb;o=V#AJz3Q-fg7*mWDYcw(O zeP+(RK$7qJt@qbkFNS-j_t~@C>?t(ER}1$s(|t;~%gi*k4RDv6;VHuX&~*2LTg%)j z>hhp{lWlY}#}QUj1fCujq1{m!tW(0X!|horJd?+pF?n=wgM-_*im(j2DvB;N-H{vN zJ|^6&shx0V?2>8T5$^G(dxmh&5bo8qTex%0@aw{zXS#J4+*{2wj|+FP89rFJPnhmm z!u^w(X0LFUo8jfc{m^vtO>k%KmUXq?zf>o>Sb_O@J1I^CLFcrrWlO)&8RTjbaxf*Il{e~KHKbw zuDKQNio8oJ^XBe_g_;VT%B9qGlOuwTZFUrZvYM9fXaI7nFyGN|ST+ozR9>Ra`G;>R zeB#Qz2sKFrV?3PlYQM;5(jFqn5J?5WVXT0oqCD+L1dI!aAT#MwxJ=HiQD~;CZ`u>k z4vK^#%uKkaBB3@e!N~X?;TcY?4F+S`7KihB5rB;+>Z#uWW?TG?JFvnc(+M(4m}GH^ zXLMoxK_qp0N$u4Nqdg)`wy@w+3obkYY+AJVa}w;lIU=<`C+Wtd3wC1(Sg2bAG%Fc> zV+_)+1X(G~g11F-w>k!>_hG1PL)-ayKe>T?fS{@Cg>8<}iZCyAe!HXAKTYu%bMT-- z!2&geTJ3P0RTtxBhZocI&bZ19ODyfYno3J7WjP+pC5>R6#;C9D5vIt*`_FL}X%nTY z^&hKIq4;UcOohFc0vcZ6sI)XGjkPQ*aC~7~0ShrBs3fRaIQSiDJFBFTCfwfK>F9>% zz&G!7q=>d(+385FXuGt5lC;b5rn28PX_up|((A|FL9vzq40rYsI~;z%Ru)IX;p=bA zkPaVzW1e()Bjj)(qU`=g&Qam8`NMRraKIGA#^b^PV|i<(1K>K}ReO(PsjxqIY_B6# zy{%IAM>bp!-RF2Zx=cLmjc1J?c@K;g57)zR9&Gi%hK-_?`O?kqp>3#OrZtF4_Bl%M zK*aq0j^4^G*Wddc?<#nzY48EZBfN7pxCo^Eg?JiLJrRyD(E*+Iv@ z%rjN4i3hK%U8vtQC7gN|J3bXzjuhiSdO(+pt29MUM*s0mL#eD`YA`iBbOB>w zF>Sk4G{GA#$~ffUk5{Dnr$MvnST;^!7_%DANOwoPnbR7pxc7s|hpld!!a0A)ksz9O zcA729_GbzvgkmQJg;lH-F`hJZLr^63IqVoKQvP<>5mn=13YKn&Q3(mnt>!6Oj1wgt zG1uNpN2=@_Szh)L$1U5$RPA_cy4lC41GW9EZWyJF4QWPsUp0tQR@3mO8ZL32D|IZf zNE2TkV{|}a6!DOr$Ff{zDmv<=St#~wqfkv4X7MyYR&&A8)Ja#5JCdZCU0I08UAe=? zBERNCJIC50D>^I<6O~7#>XefOYfbNc?}!w=9{0T?%7*pve~ynIUHje<0q&Xg2S;6N zVLaYk8J?REMnjvV))0jZ`oSR{Rk|_V7Ew{3Z0Q<1p5WR0gToo#S}9zy=0mT>qwN#9pGQR~%QB-)Q(%N2IceW?pqfMYt-{ zqJ2Q(u~)R;TnDc@iWOzMYsPiQeHEs_Cf!7qnY8RCcEL zX4H}kw;ZB9Ki&b=HIwSzb<9_`<5f-Yyl2v%cO8!fi4rjZq3vvgeH`ffi zJ^@D5U5P&Wc9`)!;`+r`-ym!Q&+*rrDc9(@zrFzWfIbP(n=98`YXkIAigJUR2I(2X zVBY2+Jq99-lR^4DG_a(a-dlv$)AXj*h3Q;l4;Bi}uy)Fqzzf7vf=>UJ0>Sk=LL)W( zC|=rqK3E@tP?Pa28`wNyGEtVhzZ5PgCfU=aa$G$~a7P$Ad7Q2jAg8-M+jS9+X} z05>7P!87Qo2>lrpGbcjlXwIex{T=ucBlU5}vNlrpSK-~R>r?P~hUuT-bBJLSh*ogD z4n8Nj{t-UiqV)4hKBYvXSNXV@tUr#=v}jQb#a7p|lrglTy6ymk-&UPts_b?Oa~v58YpQ1V^9oqC{x*z{PvzH*Od#p=oRmiQT79bivNF`Q2h z84?Gi*QQ;@wlVV5bZ3k++Nma63RLl1sA~CiGgcOu5U00}*%Bdw%au4TzW0^5Xt6N0 zC4S=kL*>KcbRKaxUPP8Du~FiCNfDGY;?~CLsc6_wae56j%%_IlOF_?GjhACEDPI2o z!(~s`l3G>ULhS+$k2|7#dkquZ_;FuBo?gjULF;2rD|- zk|KVZi65u?knOp(YjiCU6gR478YBE>-pMxnyQvuqnUN}_mL&Ao~|RdW<9+>hHq>= z)P}CFsE-wKkM`Erh2X4Q`0kKziXNqGp~MvI!9rS`f-xK()G z#Ea1=kwbIBV$LM}lBz$8%&i(=e)4HX1O252a=~Ed+ko--bQt2a@F84oB+n)jm`ypL zo8pXea%X^cm*N}hOEHg!8tR14YmM}RY8CV7RK(=D8Z|~m$`ZbB6Iz~}uI03G?XQhr>&w$QsMwmo2Rc~Sj#`U6+XR(hh+cj{beS`M_GR~MKh_Ar1{ zVdV1(*i#o|9kx3lxF8rlAJQStD^MgeW|$fAxH3Y(j)HAYq(eC;OjmmuNCmC+7IsmI zF?D(yJ-k6>HV6RSwW+A<|0tqE8@)-eyPeFCWdXWT?DWQs>2zM(Fe>j3`*S6&ylph` zH>K9}0*BAD7TA`y7=Ga7dD`>O>V&ash-}bQZEr*%q+VvD!N&9SL$trLv1VsJYpX{^ zTs2b&Yul9=aiMEPTb(KDPsgb+O@9$Aj5tHD7g`33w&|d%rTtW~(#uL|fT73!&j>Q~ z=qQ;ZPEhPw#7}z&{Mjo2Dh$GkG68SFFi=2|gXt-YZv42u zvFEQTf`C_zOZWng8o%M|#P>430md@)R16EctqQBEPm5x%n#N+AsLediI7N($u)p2N zA7Rw?3B7ng;lWd0wJjKu1xAVKj8k&J22kb$6)H1B7N997JWj8i9PDUiL7d2gh>T)c zzyjmGnIdNa&>(2&yVDz&4$`3ZdSvJ(q)QhyDLFYgv9Jnj6u4%z2Y{-3bV{h`9rnLq zPbmJOkg|%C`jYs$iXW|`e{V$_X)sCSIV zW-9$DK=7QTF>{H?bJdJ-NsqgplH4lwtbSJd+!ak;RHdSF8RM?#xQuaEv`%`aVi7_DnJtrT z6&`QnzNpCmij~#`YAKXmjn$`d9rf|b0djQGSE&agNXfTE()mvMCZ#6jHL*qL=bFO` zrvw?Qw36)ai&YHt{&#x#G_atp)PGfcDrKmwzUx|N9BuaOgjhTxK*R6g8Txr$aeimJ zio5FRs^9wUrv&;5tdk~f3UN@Ul?j0sRhvd{K7-@V<@(_nV7SV1(t5%w&z{3r`o9Fl z3N7GX}7%CtzwixV#dXlK>Ful*!6M7HQ)C21^`ssH^fSsnN_ka(Q$4NGjZ3jQt$S7Pj4D7C!W)5D#g>E*O%F0OH|k>S^d1881HE!^zhwHR7Ddd;*L{vE9SA39z3squFg!L zQd{$IW&P>@ zk&S+RS?@)UX8OcX#+^C=bn=cptn0UK;49M+D{gfjR{z0+fTdwv!t5 z)4O8AwI2iUsDfxeY=zIKDg97bA)V@{$15A@Q9pfr7};aR`Wp)drQ4#awurvzulG}S zY9gR8SB#V~kOU@GKHg%UDm5zw|P&rGbZ(+UuMW2t1`Z7q)h#+XOq_l4-J6(S^ zX47KNC`YAh%M!%9A#TnVfNu%-QsN!-6NeHw?)d=YTt(g60hhz8xJ}9Vw%%DS&!xd{ z>rtvF=@|qz$N{-8h?TSin{b^zciO zb0d|#3kvC5*W*Kgk0{yH_dWefJg{~4J>ZfX>G${a{mMn!@xK0@dS@C<`9ObBy%|6| z4ktvA^+SELx-*c{KGY-V_=kG5=wKWJ%idPU6{nK98-%nk8bwB(=X3{q8q^G=@Y#Lik?2bv4hgqTIx_qY^!8S z`&93)Y_1$???^Ftm!`OW`&6H=*!Lv>LZ~$SNb68q_&Lz9tqCRuW@#^&tz2LQ+Rg;( z|3heK>YfBpF78Exvk>Ssa3Q=#tsxVdhSRGelLeW?L(XBLp;YG!taYf)zwiYxN z?NOkbzNa@v>un*NS~40HjHm0P^+;u-%RWZ$07yYyGIb~PCkAJN1YJ*aGC{^Kaoxzo z(y`x-09^MW<*&w}G%!og295PF3#+G)BF16c-E*an)31O$n?j{|4I}8CuK_9Co@zcu zwThwj!X37qU+dLH73_BLy}WMT@xo`%cysz)0rvQ7rW{ADFDj5DQ2qtbeO6q;idC;@ew&LOsXI1 zw*t%oMO%kmN!i_u2r8&m(?;1#>w444sd`K6c0X{bR|f`1P`zpBTLwKbO`jEhB|-`( zeLY<=0m{&v#~hR~-aCZ~M&cRq&eQcR-UobeMxZ^_NNAr@9 z#Z!Q1kp>0XXG&knO!#ni!Y4BN%Z&8ROg#W;R?O6EiO@i^xS%S!Lij@HAhBAiAn0z|q>s~4fdBXoL^-WW9nFV>qN z@X5s@(DlJ$-KK;Uhk$sL*g>YE$j7Iy_>%Hta9zq@qIa_%3iMx3eKWn=QrToY%yQ$` z*dSUlDF$ax)G|HV{#^pfE~USg>9Nk^ z2~KO0T1Pt=EU-G0`tJzbQ#jG&VrsKo->2>mrt5?JVq6K|>Qhv(abt%;kX<%3tbwZHIeM>=q#fOKuWozczQkQlm_+sH{>ivz-3TAn^nQO3JguK})u zwW6)lU$TgFWv5{%Ldzpft@aM^ocZg)S>8?O_vqmixIsTAP#|Na6>qFP?z4iroDT@5 z5b`M+hmQ1$_l{ex}#JL*{ z+t%J8F;cQovadq20ZJ|jJO%AQQ()O=ex#!hzz*9<=UaQfL_K!vd;UjPfwtwT)tINJ z7|Q?lG(;V4rPQu9mda719{cqf*cko1t3{DdA&!qVlv1cag7h@y0G8)$>U}_Og9P0# z`oQM%0UYwu-3l?mML-nSP~RebzWP(XOFgK+swjWb8^t&zA!S_EJSLLn73;OC2%;@c zn-oL~@pBdN@ugzje6P_I(Ml~dU^aH60v&>J+W14dvqF$2#gW|(>0N|S(I#d`K4T)K z(RistPLWwzSnR(lyK$&VEZsPy`w2# z2&Y|R4+ERR?aaptvCm|w+RoW-;d})bfE-tfWJv8)z3nnbiNcA z*J)SCclt|;GLGIk3e z1%MW|7-8vgp&**V((!(uC(LPv0lFWcFU|pRT|x`b0h_x(_s+?pBF^hA(E0A?^<7HU zD#N2J+IbKdcB4_n`Dz94S=G)Z7>%f`sD3!TdqEFDfg>;I-S9bfK~IY`vo!v97OMTD z9OGU;>gTLD^jrLjrob}buhGdzp>|hM{sTxJ zF`V#rxTe?8G9O6>LL6SL0>2TVpIy_Ft05=2hjIR3t1{!KUuf+${d5nJR4#o3f_uU2 zM5JI(tNUC+fK$^(QkR=L5C7i@hu#FfzniAt1cburK^+0J?M=i|I7^+`;y}Nl)L= zUjQImbO+^}qBD1}?oZO+cd&xTQ`B8xCueEcUA;-RO(?3zwM{USCs%dYm9fKu=l5=m37EnWK;7$E%)eNGhZ>mXD-ZIsXZdYR& z%GdOP##-QPT&=M>?Ft?o#Yyb+O&2WeiAjdz1HMArB6YUu?DGjt1&|Do6S!BWze;Z3#a(G48c#KIDksiENdjkea+@K60$ zMLilUXg>!v`b*FE5Q46*f9us0Okdwen9L>g)g%24bp6I7?56b_l9^2bxT&wOOy!(w zlfs@>B(7yL&$JCuVo+`*xS44hl=3X>qH@D!wX$L*=2we`(^{O-qAl8m2&cf&HiNyT z;rom0hK<8m76J zd;?e`D95!4U`Oqj=85G^Lmudne#Y(@q4FNpZE6{BIftY{0Z3u5&xR|ytp>u5>TuT`r$H6#L`o$W@vlT_f0SP%GW-wDZ#HpAj{ zWreVA7Ik=mdF*d6Rs_2MoX?qDg^@88f36%cQf z@*i%8fiy=PY+2w$YaG_Tm=%H2kJef5AiS9bJq@8N0`c=Cx}h`iXi_L+9qf}6apXgz z2}*nP31ijllSBXzM-i|{1Z0Z%I8 zhz^s{(T$8fP{ai!hn}ljq$l7f7hVxxQhKken5@@{HRM&}N z!wmLvvL@ACdmWxxmMx2|(lVr3?PT$Ov&V96go570(an+7L#f<}eSeGYIa!8%gczU% zihZkYC{2uIEp0c810X*>63bo#G2A$gH5OI99mg6%aWf~5apBz-hf>#jO07i~UTqX= z2ihL5-6CrZ*3a+au0U;!sIe~P)U-!ahLZ(ZHwe4rb89eeK{U0g=3hg-R6=DnSVwPn zZz(mNwHFn98qXT2_ixb3c*cbPKs*z;@b!4M2%|MMfz_~26%B7nsb7O=DM>I#L1WCNkvnxDwlN6nBNy^2?c3=Ij~4R1vk!kU0>U6VzKhHR|Ks*8qv zUlR?PLVwm|&j56HNn(*u<$XO#`Zg!APb+)An}#3o52dcj%%Q@z>|4p^(2YrE(?mhh zwOGTL`{fl|R8C&y%RX3FNHn+>OH{Ve^jcUXBVCtkq4!uw*>%__G2a1oz@iX1m|D?6 zA6${ZgsR|nc7HlKlv>nf&vv|SlX^U!BM5q5T1FzIo=!hNnOLX{;KE6)ub@+##rmkj zjN*z-f_+g450VM=qvQ~stjk)ej}j=N9_#mN1}cKm!lQ&ZZzDtPip1aTWX8gycH=Hy zFFOz{Uc|&kf?&A>g#e%nO3oj6O{_nP6Xm%#jK8eX+&iK^nI4J7m9bOx*e>n2!(siRt@QQG6-QDBmL$54I>`v}a})Kqqo#x`LA5gBJsf>Cw` zKUQP+5?}GB?e?Kb??ldv%M~J@rQ!#=P0Ns^MEqEdZ}YvypGYT}`7Il=uH@T{1%wye zI{~qz_<_)Fk*_f#Q5H5j60gZNV}21iyAd^2{8)^?Hsk%$SxQB1<3&Z;W^EbSNK!sg zmU9N_e$TYYbRR{26Dv|=x*K)o2Q*6jSdDY2?)wL_QNf=hnHahZGg-khq{tILR^zK& zU*oTJezLS-?qv7nFdI4dz6XdGKUQNrxKm$klS2_a%AKrSB=a&db|XdkE}87s20vrv z5wmUYx|3Zpla)e~wXwEtXmm!@AY2(COsb>z+^yaJ?$ett3 znIlNVn)7`IF6viDYeQw9Ms}0^I$>6kcLujNa>WnqCoOdtx9}vnXHIUnURFar%oZHq4judqg1a8rvew`6hZs6-mRwnii+ zv_er^D6JJ6hEG8&Ac$MYXw6<0n>432YhuYd_ffY3O4x&upy*$1?#bDWieFYbN!4ilt*m?Rbg}ldYMGTbZu*9ocL}oq++& zKpjLwpH*Zv9`jAFe${S#hiVyZOa&Wr_-~|60 zIm+AqwG>4tE#%;ZWuS$Yk07L5*qLoYr+Rn6wCtmgyRZ&^Vt5KH#>m1*S`oo@*M%+^ z@@QF?MYDPI+i)ru0QFoU)JhjoOgEMSwe4==vyX;%V;%7+?#7zB$Hped#v3XOoiH}g zNU({q@z&;0Tz8hy^U~s@qJ`S*DnlfO$Kv$qgh3O+WK*svl%0Um%9w#o)K5^1R?fSe&#(z9R=}#BY;47<$at1%P}!XHEOY96p=cu%eDSid zcBqa2IyZ|lC(&e4{{AfM8@?CUY`or12P+m8USfXTSF%3s(SiU1MKj*A;NRKj{t3Fo%N2GAE_+YTlvYz|?VsLZt$k$78)s zXEeN%1(~V5H%qh}pBhB4(G^bhUS@+pcFcX5z1`tI(+C+fZbFKaqY`xv2fegG#d+^z z5`;n~5gY7TyBL0O=KHW0P|>nJEHz%#KMIh18modDc|+aIBksf8(%*e>wyvdwzHAIW zEBaz%=TT{27L8JF^mUgq`oE=AN)%9v>+ycbryQgss~D$I{aH=qUeVv3`>X%vt`sMT z+{!D=A~;&M0qhAB(rEw+%b|A%uv8z>hq1^{%LZVt=Fr{&>?A(lyvkDLIk~jrO}XJ3t5#Ek;es`OJb>a9%^RHqh1Au%$Op!t2-)8|XRn^OgD8 z^g5e>ect{J);s9{R!g#%S5q$sV8>36M}udx$KwOf8Y+5&T^lfVVMS`(2={n2fZqp| zscpthkH-tTjy~E{@c4~op41Mcp6~I9tTR0xAT-7#Vs9}#z`KV!z6ApH6wzDkMM&0f zzQu&nK$CQq;wwgLIc&5}p~2|@966Mgj@kX5)}#YseosvYvi1lZI*_Hv#qq63`p?Bt z@jNE>T@HOW5ZMpYgMr9?81^<<2Rx*`|84e6#K~ZzmAME5+)PSm1SIG6-$8~9dhQ+U ziP7}gJ1jaTWAC3{^8T*3(WYYMML2OXX`}6UpK{{z=y2-Otbq^J9m62XdWUrpI8DkR zrU$OUaA`$~GYktqi=G<U4GamS7#*%k&4i-`OA#ARFPOfMR-5J83MNr50K!U+P=}4D+z8|s%__PwA4K&#NEcg(#)n9b(LlFBLNc)JzB^`5@goSIXDAr4? zCr_nbVm)o8mp;OAx`F0=#G2xB>?77#&)9nt57A4A&z#V9*3OBigJE-l;ywn{E~2MD zW(D9c1%84}w1V1y!sK03)3^B(jLAW|{t0&03X1tuuFF?HWvOyq?of>ji)r4cavSG= z3LeGxbn#O*4xhoFu_0p4fBX#nT}siPvuJ;el%KZB>I~FY(G#D8>{>#fe$GC}=kDih zC}7kFU$CC&`GGI6;)FIUt+F aA_AAkIaMRligZTLDv4Txj374*SSRCti450!o1 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 z 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 wHWs+Xu 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%0Aj_PWMX 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 K;q72|$o~NEiL(9x delta 744571 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�G>x>fVr0Ig@+@rWI@&F<6Ag%2J#BHFPUF1;q_@N8(UZUu( za#Prn`*oFnv)(G6+m%oKpT6Uiy!1O>!~XA3!-5>T`yH>rtsC+@q3PY^7#PR*Arby{ zrU%{Rup(l$=xEtA&oC<2T{fcIb-Hsvow{R)5R0li7*jB-1B!hW=!9`uxJ!k;GkCm5CT=-^MEVIfzG z8p;@ z_m<6$sW04&3+YsExjA-3{Q5wjpJj>fBe!HHCnom&49JHiLEh@iyISFAK)y`vf5y7t zA#MLzRvcGXRi5dnAR9N)yY-U;+#b0r`PSezaK^8s_o4dzWPfv}Mk%nqMzC+y?B#9z z#2lgv5U@!}(y~o#9UXq>)r9H|j&`Nn4I4yQ3i`>V*qz<}{pEqetOYc=zg$a~;0!1I zWyWwny4_z6!)wc@{y;jMfGQ7=D}~N9x@v7ke(ZNS8<(@V?${U?aCm3L0GMEA8jD^m z8vuT`l~M-C72z9}H$d*GKUUVHhof}&$#NMQ`I{V|Pj$fyIHIx_N7;*`EQdRL5lxGS z%5LO2P}bu#fd4@GvSzF0=|H(a01@08EN=(xio<1*_WdDyBS+dF@@4&27S1S=;>XJ6 zDQgHs?M^yA7I``jmA^rrUNa9nKrGdN^;)un}?-4f38CDc4sUUQ^BcbS(1L9wk4Ak3_}MvZ9~n0YG)= z(`Zz%cr?1XkF~R|`r`Izc_&=r5)F}SAs&4HV(|? z1UZeDv(=uSrJ7^q3KTE_RKt53>+}RpQ-bjX0-VTabUOu;Go_D{OIwytlo93sFuj{3 zuY%)8(q#DywR@MT+ho~HUQ^^i{Rh^nEBu9}-4yu?4g7%?PL+p)l>|@2{2WJLPLr#; zCB<2TLuriJ00Iut?BE1m=J*7g!B5EU}34?uYEDh|@xZ0Hx`T|G}fb}8x5vl>NY08iI&Ro zUNo|qqchd3SWBinrH&g(3&D%u)9(v0SzgoTh4LtDSyx;H?cywTS|o=$?WxLWRG_45 zZUI(TvdkD<7_w=R94XA2K z2xr16$E|D#!r4SP(Z|JdykId>#iw!bQ&|E|F^<|V0S|(~WQptpnRR@LENUiL@|MV6 z8e72QE##CWvs)9WSrXKOiE26LIbkVsn`h(CiZ5nh81ibm0JU2L=LrFBga;F!rY^>bba`4`x9rA zBdF~-g2uDLMQ+D%ZI3kIJY)hTuaWDkg)&fxZH6bgl_*r%YB?PN!D1_9S}RwmFo!8= z$tc7&>`{oFBSlRJgAclaQTlQKL6%_D}ZgarW$@kfArOGN4HaGS2s`SK6SrS|FrVzD7sW^2IQHt%!V&wU#SWBJwOer?7Cn$5P z98gmfURv7^^+!4S_J7J3+tjx=m6boq%aiA3*)dKXW|SXYDExPHQvaX&Q(5_-z>!WW zP0c`Qw%PdD#frT@H`|bXiq{k@V$)E~I{|swj-oy98GGK-YO91TvX9}tZQR1P*g&08 zKYv}~bAS8iv%F1pcU#+(kFc^@C5)|pv}^~Bt%iyw@45e{W9N7sKRx=Iu}dv1w`>TPMq&ZfrklsdYT5PqM8W={yTClIo;Ru`E<^Emdd7J?*pS&ER=M zByEP1@fzekzh_cmTSvBOMDAN{fHPTUzi{RHg6m8|tLRPzaJC`$&W6u!_Wb8r{-D4t zYfld$C)-Q15iV^-PE3KbTWzGh8#&l+kgZczTwMGNE-7pqN^#OkMk%(*^VZq|YpF}0 zEA>hkAG9kiE9LMgT_v!vuSy7IYF#_hHi&O<4-!}10vz>3jG z*5^ufM=5p6&Oj-)iSednzpj3!6q|BaIkv0cv0{4yO0(Sw+qhW!ckTZveT@?WMeMLm z*pVoI1G~|-(Xy7${(s76t7DySt^Ezov#@;$+nCU#9X2Yu&T9h6y|Iy8J~Fcn2Rkdh zZqIx}ZI;hY%vk&9@;hy?ZmP9TFsQV68-SS2-!7>}*mK_EIqOce=7hH~CU2-Zd12l! zIeBmYKb^eITZ73v#R?_^72Z9oH7+knL^=OY`5d)3-|YgDIT5C!JTu7ur~E(vPx*h; z^2sRg$4Q?Z8+tlYZzmBty~~E0J3KGAKyI+g1$HCv?oUPJL?ISi-dvV9DDX{~ibg~m zR+u%`)++khp7X8^>YNBQ?^@(#26LNSp%i=Gdn(j<)|^Sm$!y|ws2;m*_1|YX{Q{vw ztFi()Z@|OGM!M9=p7R0A=}Xgh%if_}4A0;L3FgbVFf8WQfut0Bk%zoUV*>>F%V3PU zaXk)l8WS}}ULNrq6lV6e$z>~J?2%f3i#_s0RSmf9&_}twfomP?w!Y)^ zXb)#+WzNtQ&ANzvw#@lFGqu|%dl!kmU+td@*yo^t+lWoW z^u+3Y6lUiHA7a&_TY=W0uA^j*jn_t9xPPtL0%89F0rkknaU~q+s35>@3EI zR5nG9gqGhjMGiyKmnAQ0VhZYcOnXw~C-C82eE_!g*Os;ivB1Meq_Yt=tF(^X4$E%3 zxy}mi@!V0~hbkOKchlpszo3C1anr+cXgPkRBNoF^>e-cK0~X=9$q`3;9ZbyUIFgxp z99)C&2mbl94$GxlpLJ2*Xn!s`ZLr2r?3p>5pLGd#l~DjN)Fm^2S2C0O&A7%8Oam;X z`)bZw1{}dIu>UT>givb=I0-5|hQJXX!1!sZd`zB-qr8WX$rfC2GUT}20R7y598N_q z>G5%x{g+Xr6S4{4dYzDE0Vd!%C*(SCy}oclZh;ftkteY#Sw^i+0++aFDIQ+OlTOOv z!s?5({v-x7kJ94n1km-9Sbim(rY9$1gV{%Msj!xAr4gxe5^_YI!jfk7MSH{&zN9HS zP|KDygHFi^fN+Kup2Dhg9~GQ}d1N0oJFJMe^)_CpGkfNP#x(x2Y&4`Xie#ScOE1f< zzdR%a3-v%T8;!bpu+2CaUut2NaWJMD(FYdO+rfC!sMV1YizD%S zUg^APPL}*5!aTgqlJ^Po!zpufIUnkFMR0)+^u?=kBLP0x1I*QHP`$9qPSnj(+M9m4 zCilUn+SP0FbjNczVBMU$Z3_)xeu9EA&oU`n{!$IjQ?F}$Dbn7My@ipxsc!o!jQ%R$ z02;^8!W;6hcyhZbR}CAvyQHhSJ$5TPnn&N=1gT`x*qicc(0Q9%vVZJCU9pqxs>w!U zJRv9(&8@j*YY)z-MB?m;aStxc)FFnA*0|QP;1-tQ!uB|7yShS{&cV1djt*|av4gWN zl(S8Ur?s6;?R?f4n6raW468fIw8Ga1i#p?uxY?EF*S7rjkL)CrIj+GW>Uw>R3Hsn@ z2j~rkOPTuH4f+f!XmQ zpIo%OA@8==IZw@*>-fPWU?O5&wGO5$4`2OW0%V83=RpE%8raNQL>M;3>GxM~ckj zEJT5mE3E%R^Z4!>Twa+`Cnrz-TbOr_zI!H%y4`U~Ig0pHC4$yJgK;H~K0E{e_~(6b z{$Wrm*rze$A8qo%KNe=wANkxt$h!cQ{6ozOcqKgx@NwEQnpyz&!aQ<${uyxgEA{xs zLf7YVX_u@devI5nsY&0xkOOJebGb8$3okhAnlCu)b}!`a!qh9Y=Y`x2AA?`YHNv05 zkcbgym(^kH4a!lQh_1(h4|pjL#8};Z37XHOHm~H~G9R+tPJNVxGaT8NvG8HZcq}n! zYw_X<-FYS7!>FAu1c$U9BxHD?*9P1mnnV-ld@Tyc$wah!t9RtLn00gab&i|GPDW87kDV9)-5TMTp9&UTAo zTVz^yB#3_Gj*?eti@RD90WdOul*0`EymL5^-907FkAgg6W?|D|qesjJC+sumU=XKe zeS>{yfM?7UjLpBEF(Y7c9d3+a`+JLxpK14$BHv3kr(POS`!x#n;*I#iD<(mheVQ^t5P2PfIxl?7IZ zS;Qi%gnQ6;`^2=+tg|@!0yN}mS-+U?Fp^XJFgEWjS$_Y=*>}c8aeaR?vxUBl(m`NZ z#5M&i6gz7)cCjQH6Ki6cT~kbqi9jr+f$s3tv$jE=NF5}-us{9fWp(xoL(^wcH+OE zw^);(m`RhoQTy6pGNDX|%n!3sN;krQmd;p$rDa8k?A4?Z}L|<+Jz4Q?WVu1a9 z)d9x%ssr5Ws}At2FKS$}I=Px!Va;k7VEQatg^zkEpkwTH|Ox%+)zs$SyDGupeq%e4V2G(ZC)0)nA;7V7A%-6;i$qP`i>6 zpnkX|Km{&)Bfglrg{B$B8oJ{bd=Nx?i&1ROsIXBqV!nI=#Z|5g^ni*|n!7J~lEMGe-47}LAfjANp-k}CSwQr21~uTr{H(W16F9>nW?bx`~f8XFXa-&zp-q`Q!r> z9feihNkvf@^A2ia7Sr&_CA0d8p@sU1*aDx-Pp8jXh(Dp*2U`FHZ_~XNVk_76YAkQ- zF3=lUa=}b8eO#l#Q`VY>W@RaJe6nnF{ z=??7tGJ)DdJpg zD^SmT+TIEPm`pEQiNpL0tHU0#(E}-s68#x;uc~nJVG;w6T|!(i*DqK<2I8_5!w zG-iM#gYc_*;fgOXkOAzt$(|)fGYGdduoEMW5{AYq%c`g>$mj>awLw$_Z5we6Hg9Yj zfWvJ^+S*2JfO&n~MvMf4tkqVX*H&$T4%gEVc6mv&+k#f?CGU3PIDYXqN^2+j^D(n1 zr=8diB-Nq4*b4Zqb9=ER45hQ%iv#q>H70NKcKX;}^s&Fgx`dF!cgWO19EH{}9MMjB`qhrir;Mk6fshuFTB3e5UY%KAc_q??ja7Fo?Qt|t}|du7X) z;sD^JDl>z9DDo=|a6k1MDrJ81HJr8oWS3$ z6k5S8{ak5ig>35&&V2M7#YTsI=B`E$z;$@c zZTu@oDliG2G-kYHkCo}yN9H*Ztw z1gR(G_Z4+^Yk}U-*i!0p&&!{pjJ6%9bw9Bi3r^KPyJqjQTBpLC?JkAT%j}xJ=+xj; zG<-|VmNdMF-Zr^ku(JzbAKe8m(p(46=48ZFofX*rPq!D0Oouu93YOy z;fh}0icKnlRUzv%-pjaLPOlz)2yPA0-veH1Y090c5AdEeRvIcgW$G;;)q$OYOs0{ET()<20|I3TaNKZ`7=-{GIdNdHO$1bWt)4^>D=Oe16b1=!X?ZGI73>p`Sg=C;|t zfZ087dG-qspl<6*Mu~b3+ket;s3?Zk{U#m-OY+z6 zVyN!aZAW1iZTKA+dlr58UF@V=ztsuhX}XLSjXvjbHWec&54#UFpSL*%JEerCj252* zMq>UDKUei2;9v^r@*kky7b#$jcu;)^2Bwf6k5M1i{nHASWBwEusV~956jIH<)R#a0 zB|I5_bZzwb}Z<6Ta`P#);)#x!Y(1R%* zOWE=&!fQG*3H#jgkSEc>Y2d}*(T8bbEw?gd00LT7 zRNQE~xF0ogiQ)+770ey5v2{NolK)g-f#gKd6P0EqiqD;s9PzrT^|c+G8oV_+Ler*c9O0ngR9?1FOtPNE%6l( zW&>ua^vc;+5XF+QOh^SO2y>zRR`-#K85jmaF=%5%)ET^G6JrBg%r^uG+iqD+q7%mg zYZ;}WYIJrEw%|c}I|nk|Tk@GJhTsrZySbuSJKYaKOw@Rmi{^^E`B*KrpDTtE%@YM} zf}dGyeU~#&oB|1`{e011`;If~sP1x1@VNP+7dB+-e6bgn;q83vf=SdQMI45Qt5Q@k zCFvTH&b&zxFGIjdH&*qd=c!_K{sgG)W}}BCbOGSseG?oV0bJ0?+L*Ipm1F*mZ|H|K zu>}$etV{zzD58gHVnfZ_)7~^TPK`&}A{|ilo_HVm2hA3c^9WqoL z{X+&yexzv`n3h9yE&~v@i8?O?dOS?C7m7^-ay4q}oSFNHsrukdTZSJ&Zh_dIEEMah zP0!!y!nCyrg&M3m_|TDZd)9Wh{JBV6!r3Pu@D*loP*_v{+RYo%+B&xG^!pN(IDEAf z+xRI>TdMYE#Zr)+xM@_d6odeW`ZK}#Jf)mW_2tD(boDWD%h1(z)P9-B0&~KgvFh&$ z*h_4cIp(>k1tYvyD18nn0A#QFn}i%MFM6>|oDE)g%5n%4_vqttta=fdRzNCxN?)!} z8~JsGwFjvy#5TIjmp(WO8?vZ@JAGuYx03Hl=)_8>=}Pf?`4Bw7I>M`y1@=Ft5e{e( z^46UGu3Bpr1j-th#K=NGsqd*^C7?WyUawS1M(tHlyiZ7ih>h zgt=i&=%=0HMiBd2IrwBJ4b1_4ilv!3P${S)MK!!D&Jn%&D`8Z41>Ak(HHr^4$rbB) z0~ktkKbH$ETH#Wd(Uy|-d$ppYx#)c=b%{5?!E=an4{Ey`nL9@A5|=tTfs``OK5R}S zxt!4d#TSOr^b`8({IxKO9pcfNw0pp9pQK@XP)8gk?h!wh4qHgQjRS6a1K^eCHo zFzfWB$it8B?FABhNpJV6ljN}v)H0s<{g}=Yi@cwyv2Rl21M0N&JOJ4XVLJ|p_4$|C zbhMr?6Vy%~z=YnSHwVPUxLa^gtnc^oA0{)}B`!Ro(!fc$9x)M1^e+L)r0?{y40DL5K0h3fgg4 z?C!8QR%KdsEV%DEcv6NQ0T=MzGUy061a!8~F)_k#a(?+W=M;NT>Uc zfujdbKc<4thhx|)n`lfPObGYsS{`WJeiDw0d*H8o>bRJW3Hv2qT#fpJ3Lw%>&PSXy zRiqtNfbUBvm0b`}z5vxMBl8JN>Ju7t0%I6YsVA^}IJkG>pB+QYJBNxOR&Z=U46T!> zWfMiR%S-BW5|yn+{x7k%_K7|0(nq4C0IGFL?Clxr9HB|{V-*CI&l+R=Q%;EuDi0oR z)eh$BWko>ei|ElQVAE+?Xxgm_9h2QA8Ki}AeZ$79Z$T@=+E zW8*K1VVd15ylLGAoj1$rb?ze21U1ceO1~rqm!?EJdT+3Ba{vy#tbVrTvN*=!{wxoc08(Riq0qb_H|ll;JlaE=e?{EJG6M4EZ0dDY{Elh1 zU}k25s=XNp(yn5|=hO46Vv

Da*3ulu;=?sFYTCC74*WLX$1xj%Hqi?c)-ixrVx@ zkbj{lvR<_>RC^U$XzkU4LbX@-3W1d7T&C}@i{J2zH(HKf7w2($HBjLt8hjI&?q6{V z>HbY|2A{5{3`dPbomKS+&tvq+25nnsGI(k8m56q?p zDpZ~OZ`~H_@n`DNlev6v{)k3(7|6LJ+VXo1w7t7~O?rGs)bS;HdeGh7*J-z{54fgD zV57!?y=|xSqra**3Pjj$=tTRjWx2`P>zYD&ggl^tdX>+xEDyIDUo;q<8??DG^ zRleA2kT}mqcuEiNiS77}4e5C8a9`?nUu^DH;tLNYaH4j|6){kajVN5FrT4LYOQ`U^ zXf{2y{}%zzcSg}l1U%o;@_{&s_q;Tuy&J5`RD%KogG)Kvp?~XQo(iy*!c>l{^xC{K|L~lg@niShY_P1s+T?4&Xql zF(Vvd5qi0fh82POte~Yu;B&6h!6K+sYgY(nTPkQ4=t|EX zi{2>cTr3VoSc%caVpIJ(e-J%;dYsoNh^`fjllfwJPE_@ErLj*$4<`Kb!eh()C*oUP zlQ_hCFYsX*hv}#T9EC8-u_M3oFo}o z)8H(X2XfTlcpUQR_|c#KuJ(2;Saf_X^ELY2SsmqUXSJ3>XVmh5`WU2oz_v;3vYGZ8 zqy?~ted8jr=#7V6Bo@8VL6C-;$^$53FX4bzSvbXt-}h;rAO+~x>oL4)Eboddoe-oj za0zx*q_(g{b*&;Ps5G{Uv>%RMZK_Iv81=xaQe7}sDOJ_3WmlD0ki;uh(Zd~7$5k4R z1(@$D1#nL++gzo2fTa!8!(Hl9X8%}0YuzQ}L`n9LzH><2P^z=crQsgZX!{FwLHYqz zCG^ZgstqE*@s8DzVxtD{m_T`+l7#K^&QnTJ^8@t{!||k@UXq|$xxAAwUbvY*W@R%C z@R!>1EA~?8*7}~b-ybWKMRI`T2Q1e8Yk$qJBaVTR8JNTG0gu`^=&wC}^r2CCAn znj0ksO3tB3CIJTBt`e_=%v!<>t=Yw@OwgC_N%&egz?6C{P>Mh|btb7H8&Z@>9nx1O z3@K$Q#hE0gZp<`cWTz=ONJ73B*biB78%*z88WSYd$5__}NhWSSon#M-lB-K_y{j0p zY8)xgss^FCh(4d9XeaKzy{r=Kr<#}Ol@^Ss5T}f6D(D2sXK_fdmXG*Tq5OB zpVfD#Takd<2Nc&(>griq2WZiH=f%u=PXbdd=VkD7oq z+?igEBUC=U!V1FpbX9=(tSL6iGy1Nnx}XV7f#A=ReKV;x|H7F#p8!`Hp6zd-&znhM zVb6;%*~m6F?2u_XehP(PI&n2~jcl+XVW4Sb(*PItE}RdwmWfBq73}vcy4eg{YAq?v zfqfA8uKEAyo~eeCj*9^k@H+dx&Lq|f@hj z0Deh&Gv)v>63rmScMywQB@k21sNf)NV3(J49v9S;+yd3ixIsNysMY+{LWBO5(v;h5vXXYo;ueLCS8qA9~(DqLxZ)OX%v)V$hd?F2lg}zfuDXdz0K$%+DQMPH& z%EbIt9c%HS&|;QQT1x=?S;}cCxr5n1-BRtLeJizxQLWS-_G*Q$J*GHzc}dG!VGZ6; z@TUOE7Zm-e^o_oF+hrRlsj@$nW`kkx)LN}0uC-dnmey(=r(3HOIFwH zEJ517HsD=gvTSQ@udTJcwrbgBZBaI3GSz4Y67Za&+ku=vr?_@NI7PI*-TzpivcrQ> zs+{N29#gqs8ilu45&Bo{rLkb?FSeIz+Q9)#K%U#(6etB4sZIy!2f*0O4$`Nn`9cRN z!oLz^0(2bAm5%E%WFFEHi25Y;=qN43>b~u$erWE5wZ22Ycfy`4qU26eP5$q6%ISm^ zd`Y)E0Tt!YfM_hsE6b^9eCU;B`!D$iYzVgSVVc%O8VZ4>q>FS1HQnlp5vNi>H_3~I zo9QN1_r?A%i-}N1-0VvCKaJ`pwQ*-|^C}7k#e-M{6s#BGET_7GgY@1B;eh3WV2OHR zQh?aiQFX+bKp#Jono|pxDpjfT=UA7?mRX-m9hs}x_3ly-A5+a@+e2E-@fYjTiZ$A5 zmJ?q{qq!=R!_9X!gN-->53U;feiHTmQkny;{>v|=XSm$|N*W1{x_2+wWD{vsFR78! zbmZU0>Grv_yX`4d9&e9DvrVBPA&ONhmEA%H!#D{u^mLprP*o?2C8A9d7PQGX{XV z9ib7vL9V>8kq!<3ie78szLlWAKkq`gX*>~Vw_tM(c+A#h$EZ`Ta zBELthb2fk0h0I<@jW=(ouev_Pizk2ap@I(RLsYP*3&VVS2S{C3jn|?LZz|{90M~Kq89Yq&nIu&gQMO`d1Z89r{(pQtqQvnPbK% zskZim9in=4{vG^Jp`FMpGQHH%`rDegCL1}|ypZ}{{z1^o_8 z`hhzBF7?I+S^2xv&^6tzw#LTfjj;NxUpS%-55iZd7YpP$TE(vIM+5(DU0&{hud1j$ z%Lx=yb}twW{FjVjZ4(Kv8C}Wj%kqnPMjFG(cTbLY(lO4f6ZdCVA$s1L+|5K_T zg*6W<`>ymGthqmEF02(v67iR` zgX6dPQ~y!!zLqL6(h7#5w#P~#{47ZP-)TKb8z%{l@MF?5L0jD;Si<6@lN^rT zSRBSlA)My#6HXNPK<7rC$4g=SDMY92BX%qk!p_j8@lrHDUPFJqs_UgXk+_@<1+q9b zrCcCOnIQel9kx`Nh}s}vn&Tn;J*IEsLFy+^M!fU|HuKwfsixl~p$uC?c?|+xVUy4c z1=MVkbVGM>XBihsLnlk=03DYpQhiPSNl(gH)RVW{Cl~bg_ z`~{?*sDu0lAqi4dZCW@~BF$ekcDH<)Ag$%V$~sO1+C*UBjB(J67hh6zmNwJC-EsMr zanmIY2gWWwQR-PH5%A2=_!IJX1lZU@J=x_YjZFfYxIs^nq?S-! zhtH78b9o-8{WF-{N**(%fu*@T$Ik?vjHA^v@ok*tIKYp99``d>Pg0V(v%v{ zngOz*cyeMm%0)P>WeFCn`^QDaSYE~|!cHofC;bHE)M|cZg>M$0J^c)Ta!}SJF2N zq`iIDafoh|7>d`32Ldeunf0jJCWGd=bRrh3eW(U8t_z@`ae}^>lopv>opf7X6PVD{_&t zxh`CU4~~%SVs*{s#Znx1oz^Y})E%I6i=|wr6alOTP&*{Hcv`#!OI$+xmOub1qIXNA zNdHPpsX}F?2nUSG@3ItN2^>0lsmjG=EJXt+sd^?@mJif9Q|eN&b&k`z<&vmNg_qPe zx|pdlfv+>sle1)8hRaK8vkYJFqa(PpyIt%g+;Bz&oTM6Vp453q4IOzbmwbbsI-Ady zigs{J2B=p$b#7zS7(L+U_}OwyZvp+bTwVQT%heeyT&}kGVL6(5PBm7jEp}Rg77<1P zce)ZpAG$#$E1e0cWJzuGcUVr!e43mENZW2%lO+w{L89H(NzE|9YeVeZ==*h& zQ8R9LoO3QV0$lhy;BA)DDNb{}_u{5D8K`B|H3 z>IT$(jn;3Fe&$mU{Awd!C+(+B8^Km?qg@*T>-hTaMu?SJS zgwo>?NNY3D)&Yv&3^+MMS(~LHJWVG*3#vXvEiB+U(OnB(=Fu4om~RWU%4QYk(BN#8 zjlV`0vr%?U@)q##E8zNvml->WwxH}A(r?9=2T0nAmnSF%cl_TMXwO!>{7Ch-;pI)3 zTcu(A!t-=!8|ryQMYsie>a!g$kI=a7xLZxn+1(}b*@3%jGlfM{EJm zGj`G!yHM*YI>K&Kx6*Um@=M3l54%zA4w}9jtt8!sX;iAg&rT(24@#e;v^}V5Hyzl6 zw@Y%U$zBv*OW*88%`55bUcB5$AKBds`e`5Tj??^oxVuFz`*F9HBKG6Mi5F z(3#vkgtCYZbQmwwZc*G}*84^D>M)vFXrX{3D7=|w9zo&PwCxBAL*;lBcSq=pqqr-f zW4PmKGQB*CPbXZZLB}w()imQ6fG%?t+2!GOD~05t@CjO+hr+W@(y=_$i+I$>QPXAm z@i<;?q$})h73uSF_m=+1N6{&JXmLL3or$xo1*m8}MHS%fN!nC^vRCLb?)Y&tsM`s= zJVc{U;N=#2d;*^)e;fW0<*V3{$%#vPbcbj^_6?=^VtE z=eRfL(mMRE{hs|+RWYU1rR*bC4`K;C(^)?+q4(z`U$6bn){Ma0D*EFDboiV?&I8{~ zr610NzT-^&c`zbt$m4=kQ*8~b=qDGT$(c%1FTmC@mCjtikSEjo3*f}3QvHjNYp2qv zi|WJFi|WHu7o{e6SmhGX>RJlBq~49ZBsIdr)tA(gCoicb9WJYPp_hUGk%;&*7^KrQ z@iOR02^;xI7d9DiHu&dc#OKiE%Lu9$lY@cYCG8c=Mm+mnc{a+vVio;kHlnXcp5B-Z zEUvBjWW{W-n1eAnH1>)Vp`QwstN9dFX;l;Qbux>yj&`=*o2|#%X&vQ^LVJ$`uZo18+#p^mkntyi(Q; zXg1>LzzwO13m&-ugrS@`2e;*GRP`pBeof&wr3S3Hoser8ep7nKl~JV_xXB z9Wk4UH}&Z+wxIN)x_bM?dUN6fU-LwclI}PD+!A+3isgWtwD+)Xn<(U-G!A5R<2{IK z1$3ERHj@6n)Bq@{@qMY8VShLSY$x{5P1tXlcpqwU?CFIMppV%@mmWx7zK@+iq_K1? zy{36A%e7g0BRnRThtdq6JvdKbeWb1YUW@nJ9!jHYysL{Tz@c#-$uU$9JK>_LVqRNq zpzsQQpyr#t0}&qvga7B`r>qRft0?wC#F@wn za9uB!y74Q+)H4P?ws0B}=J`1axUwS%Z`A~acyNTcj=^o2^KDGMvIFTQb*%@|uUZeJ z*HAc)nE}SB9=$fIYVG5H&bSqk_fsi`|AF^kP@^r^uh~^_))5>0a5ME%TI8L*2w$0EQ^O${)BTru+GCgZN8KF z;C>s(Y2WGOPR^T3A01L3?b6A0_(=xpJKEV3?52+{(_Sxg`j3b^22Qq1EEI<(Tlpb$ zY%X@P7k|>9%#*`CEY0oYAMj6hqnh@ zq5QXC-H<@A#b zaD+f&pe)#~6GCJ=Y7r=hTA%WiT3`0H%nX!2)Dj~W*jo!D z^C|*W8m z3`@-FwR@ayNmX}_k0*rS9d9HqMIC|uQ@RaVZmLm;h zjsrV*EKH8%-dXhFGOTzn?aBO=&XfL#kVkOuG9N{t%pEF$6^+2^f1T4?PE86 z+E5muQybY(j)y$>uA%G?Rg_O7`7a3Ca~lDQ-cxd8`38V#bQ8IU#wq@~hxzVP-h90( zJ_hi5Se`YPzt&)ZyMH2war|m0Du}J_Mjt&4cGS5o=4q&}K~FEd4H6Z#l=J!H;bitQ z1Y2&kl5KGU!Sd)+xjpCf7M*&vUSm!VN3{oh4BwzLqOU;)tJl-l(2G@@KHJ5U@_Y@O zEnGXm7bK8&?d2%_4grh<4!Xm|&$6gJMhioOdq?>lR1j4<$#5izrPiHf6F)100^Wsr zBOH|xD_o?6d`-CqjUz>eG!-oRXn8&IrCPRhmWOdpO97+{Ryvt))W_;H=qjJa!8VJ- zXL5ZW5=yh~0JbAEv%CB^chut91B->Oa6RQvHtAfTttYkXDUZdbINVdti)eP z!|zASy_`tZHk)yV;|sfoFys=(C8(?dJ6h{#VB?EX21dbgnmq?v_i2bPCBS3*2#-ygDI4-GLpqG1-O;7wy!%acFk1V=hENnT1p@$z#T zJ_Wx#C&@C#(rS_%M&Imi?v{L5+r~0xGN6s0WuU?*$dPQEEcddEOpsG~AT(jR+=Qdp z8L}^ZpD1^*#e8XnJS{z*f#-?Tf41CCk7qiJW!-GK5l5S6p=insxdUeS-VC_~^_z`p zJ7!rm8zaRjjgE=H>jksa_x`i-em1f9R7mnK^l+wpn7kgl`|@)FXu%A*owYsOsO?du z_K48la5~cx_~4Dd>Z|x}j{F-xFM^Drp1#1KIMi8>A6JEjhk7c`)d$0Okb!}X@YbJ3 zT+p_p`wtzWoaRNCIIFoZ%Z|)D?3!8ah1cfE&z!Sht}$|h%+-gO?4l7|Imn$}%$Em1 zj{Y)5{+fRePNPKQ2@_hHj>YbRNpfQZa~2TZ(cKi;&u0_6(+cnW!3VM|=is}Uos#j7 z0jXGqRO*;22f>$OM5-L9eeaK>FMs(X5o1=WoC^m#|*gA5SnUF5hBV^5_*kLq3&zfk^4I}YjKttH+qlv|-n z^CH;|2i?0bk`pkh8;j8YLl(ngxj*M}1S)WdyVme#kdgjcB8Tw{BZzZzaC5tBGZ3Sj zz?gb=iVLT55UTAmN;FF{K-~X30575jVdCNf5TQyfq&^XLun6KB1Y>|}qWV~fVP$Kf zI+XrMotMh~N+Q@#b?#vYQctu9$E@+Jcp)RA^s^8Cs<= zslscW59Nk<_Te-C37<lY zuMvt0rBt|NNCT9@Mp$D@uoSJ53pwtg zB|i&`3yjxghwMe2?SyI+vR3ZG&7s(}GU4LAj$JJ4*2yC|#|05(zH3f2Y@gmloj1q^ z9PaA70icmjyEe#f-lsX?0f%h_;gW3<4)jQ+UZ*MMPBn?5p4!{dcEQh=nr@W)0LW4{ zf_~1RD;oibNfBl@Dmb7IrL=>31JKf#O?Wyj!t6oA4&rIkLwbXDY6L95>kjJM(Oh;r zIl}D4Zapb+vs_aK!}^-q2@!Brd4#uBt5t|Gn8NW9 z@T0_YwU{?~9>J&MBFug?<*>e;i~m2${!N{;WwSOe!W=+PvSm+-I-;*nSFAP@q4eEOgPv32o4HS^4 zcc9E;dMv{>5UV$ounp+;H67h159RXdc%FU$rEQnjSy!xAk6lhq?hxd$N#40RxmkbB zGr%caefHkX37N>*Ta>F(UQQ@4=fbuWTPaav(@9JZ9_dMa5ydY80IVA~Tl~a^#v`a}8*v zoVyY7IW^)6f|MM|k*ie&31T6js@pih(98DzTzZoux2={4utqnTmWH=R*}xrpq!o@) zpIo_>{spt~BCkfTDo_aErSOkW_FIMCvM(;>0msj>-?xxV1{c>w)@?Y%-@`p>;0r_hPc}WN4pnz>`r*py{UB&FO zL6q+IbvTkEkJnBPs6<)xH2R=?kl(AJYiEN!YHy5iES2v|+|==_@;xY5CDeea2Fd#S zkle7NCBiX{gIi$vLf{pnP3kE@I6Vr01BS_grqxHB6-BGAJ0O2r5J46DGL1tn*&mjT z*vfSd%gy8qLldG(SjeKi}e9I*bvngDik0qPL8b^s#75lnP3T|FXC=Vu+K;YZ~p_<8Wh48i%)~;&!ZiuA&dS^r%ywI zNu|%v$R%#iPnU+eNI0YZfQs&n8tQ_!p2fI!(#5ktVN-3%ygksHx}1|0*GG{U4dZ_p zWCk+$NFi<)0&c822ZrKrs&Zcb+4q_ikmKDQy{+n|s~VsK2HRID{k$B{Pj)2ZH?Gb2 z%m4};5bQxQ7v#PCdIuFwv{xe>&r@9|t|zViM(GXS>9fmnGi@?sd9v=x-K?wgq>85- zMJ=w~W~MN~)*dyh$7%M`k&E&l{95ZMU{iSVEslq!e`^{+Yp=<#_`(2M=VJ0gaGfB% zW#(1cjpwI2Ry=~saO0XLvh=+UcHC}Jp`$QIYu-!0-2mxKrj#3?lBx9mbEO*HxB;Yr zk>8Z-Xy>w%!|AnEp)^bO#7$ z2erGS-pyxs+iCY5`Fkj@>fA;5PtfP=l1wqyOMw}^+Id(0(TKPp*CTz(7A!+wx?ne~ z;YAB0DZ01EXiWy_J@=`>gM^Xk_TA z@Mi}vun19a#P$q(dOdNKlgBvaBa4mEAF`N0E)yAhPs*Q1~1T1-$BhoJ_> z1@*=Ow7_9OB7ZHCo=h>diWrQb9i7a4_qe|r3xC|_T44$E-5ob(a)9VuXjopzmun2%aQorv^ zA_?PgM77yRz}x}q{!z|0WEv3P75IqZbK&5oYD(AAnf9mQi;T_7x^j(EZooLZmsgte z7X~gIWaBKCFPy=X@!I-myaHgGfv4kRbEFA?JQ6|9j zrN3O1&$VX+B<32Mrnu8X7o`{Gq^+PtY4am-z$Aw~T_`BY{N5(yTs7REzNn&P1YEK& z-@)U`=I41MtT&iHcgNXeZrRk;Vsur4{{`7-IIz2^9e=Q5mP!G8Bl3?ZKk<2yR>1bG zs;R0`ueDP&z4cf2VJdS2lqLKIJ6he%RNInhRH}18e~BTAH{}H? zY%^UARIIybnDVtn5S4#pA8I?p)SfRCDgn?@HY<@dJj4_Ul*;grC9DR}z(4T?9hzWj zPkrhuekzjSAM2=#t7#-ZzjQKHEO8=$5@M9voVKFp|FaX<=Ay1f38wB~D3cOQ!!buH z-aDr#7VCf*Mz}o9#4dixraHK|gaVi{sP}aBZh`e-A|5gla&@|?HlwQc)ZY=bE2O2V zA@xZF=KEh$Ff>YO&+j%?nu5YgQ*hSWl`3KXpIv#8Y^u$=WF)os?MUtKFY3jT9-%Dy z*RF=0R|VHyl{<8=Qisl4J9MP6V&N|Y(2^9?k83`=GJJ`ZrY2354e;S8ZmM+VE?CUX z{@cnlwH10a7L)$6Qtg*4nECb`b@21}mHOQ@^#fKgn+?BMf1j)L`$DDPm#x3&eX8U! z9-%aRM0vyj9y~(fVv{e;Z4DGTD-zsJ=n_OXN~A-rl>o2__gZ7!W<*+-pjI2jiAzjg zYVvcbQ1q}k8cEc@4e;kW8r4P-+46!{xFrWtdbFuEPQq!NExv7)|6s{D2PX6_0!kS8bzp7nTp-ADVoD&Ue^7K6 zr5~I`)R_wIs*D5FuILH?T|%e3VpndkyzQ!p9CZuy_|-E1GsU422e$fig>hg7pQE_S zfi(p472chpN=yIlSPN}}?f-$^`2R6JD}G~xRQKeq02RSmKK<%H`yYx471|zE!T@Y9 ztCMrfIyr{EN^Q#wF{s}Eni>l3k1kH35&e}e{5FG?+sOUz1V!{!YUt-gGQ9~UoY4Mi zDft=*iXpYS+f3DQJfz()WfEQ8X8Ms5jX@pRi*-9d`JZ(Rs6u%I01eLQiZlMjU1j13!=Y+pzMIu`qz(u zw`sKCN05m*G%&|h+aVTlgA8CRgw@FjN=@<~s5I5?WFT6lwgT25*W_b5Vk`@Sp(#7{ z!L$ggBH&QYJ5~jHIaDCO7K4%T!ax znnTLmfl6&M3|1QP_nT1BE>l}LszvTLHDpyBAFO-}1~6=h(gi+p&U;Mx(9?@Jq3-Hy zpwRD?MxbbezE^yGG7LVdJ`IxqwE?qWGu~&A@CtgH2VOp&!c(iH$!4jv00M(#P{H@0 z$_wei_aIRVsn!olGdO`&2qkl=`Y=q-L$)L{KxTwHf{!ZqvB4l})f|U1PI_S(9iG@k zrNfq>|HY?3XU<>@)G%i8ilv8 zWo~{w#ET9$0kig;fGNMReE-LPs2x8;qaqRdt^oMb$`Er?Em40d{v7=ltNco*#wwd3 zk4yo%;};sr>D?Om%Be`9C|0p(*F)oK<#lu7u#7wDZJf2Z%H;M=HEpxB7^j%He-`wo zj&p)MamEm!gsN2pU%pYO&-fr`x;jDW<8q;N8`!Z8@woCfh@8o${T0gQ%aq zVx-P_AdFEulM8kF5#bja#w)e3KZaZ|mF^EOnimhoW)3ZjM;`%}S1y>o1$WtSlF|-N zchfJLJ}KQg&`Tg!(Illm|GEh^zhwHtbP={nD+j5qykGW40*Pb4=!Nr?HCd^zeh=0B zK-@o=3sLbAW?e`Z5|rD1iyM~nlZVRSc(N6ar#1PXaD2;(D`P5CW~2{d(EP5H zZ1!tuu#!z`6#@bpe#;4^&9Bj0@N^`YNX+EhPtrJF&dMmG>3!a z_B1673Y@2DN_}pZrA9jV5x&@#Sw$Po>^IlILVp+>Uot5N=K>-fFHzlmeM;3GEdLi% z#jtcUP_ZMx@5F@=nI?gs8_jzo?3m)iZ?vPN+ltXA(+KZul(U0%MUA=vox&v%5U2F_U3FgAy3^5oSpvycw3lT z1xh+3k19O?y}kSw65*6SyNO>&WwJu4?*i2ZQ(N7%j<1luS)t@IDOa7fW-FB@)owjzW&ML4{?`ZHUrI!6|YkhYyU$MF|^mdsd@y~hdIMPeU zk;cZcfYyb3{6GV<>;%sg?Ck%Vm!2cnq2gB+5-#iLU2DY;A{}qAm5-#*!fGv(Z}57` z&4Lt`O+{JC_u3OqK+{~Y1B@hVuu_YSlzzFkmtHGe#`zwK{TmPwTDx`=%D+~vCYjbM z831Hsc&HCuS*!G-`CUxC_+FX6+P7Ct3j8<+?e7&BrzVO0w zgVp&A&Ub2X@tIT?8Il0>Pd6xa++SD=0aTGI2FhM@I*a0{mPn;m8;k_ z2^?_5`Z*0m$y~&zrG$-&3Bo>9jE;8f^#=(3|IUcCfbvk0-6Ly7G0B^hVD~s6tACeE zqeh#QI<+5L%Z+PT)}>t5Zy(3ns2_Svt2Pr&y{D<0FsJjFN(rHHE?Gw&qmJ#@D^{gm1;5ciMJvu9=WhYD~^Je8THhO?XnQgZK5hl^Z9C!ueVEA#1 z;s{rRixyyy;~WwYys;?NYaizZ376ch3=1B*t0q5TUc<`A4sAdi9@D4UN)Ug=$ucM# z^?(nlk`9J%@)qSPpB6;B#_HWP8W=?i+#K7{(XGl{G&QZbmIwdXR)uri<`&mt$8pTT zet|v+T~Uf2?8@Q&z5saNN%^DsVbp8860bdJM8L8BlVNjyza88Eku7zeZrg;Set{%C zWQVer&$iZ0kvo+pzWelLRT|5y%yLJSQ|zrsqGYEs94v#1Z8zsA8~F!duaE2e=woaR zZ1@BRJP(9C~sO?BQd~cWXHOy}8x4Q>c6l;NS>kOp8 z>%l>CCjGHnS>EV0XK=IOc#Za7e>k1Ujs`DrbYi~%4!F5y#0jXfo2%4kkK*N}8oro8 zN;P-ERD`ot?2Iz4iE>Y?x-jTp__&ao?^PP|hj^;n)!@$OS#c*cV>?B6Z~mqgd-@gv ztynQLjOAsx<_5zx*BNS#se^WG93xdVI!2Rj6cX(DC?i4%IJIKiOMN!b93uz`mX-UI z6CAhB^49_78M}@=q-Z%XETax9SK;;3>05S_oUdrhev?nW(il-`yXPzY-4cRSTOlYJGb)*w`Ye@> zp7ZRqCvs@mnziNTS489x<{ATG=d*G!>S<5=Qfnja?zjYfc+XLAoft+0yufumKdzBA8`!IjpGH_GWh&h61cvHLpFq#5m1k5VAZUh`Z2JZV z;CY2UL4A&(sFK!=I`j?nq7!G7m;5%E?gx2@{If`;orZqdd8~sy`J7Wic+yiwrqY6j z5BB(q?w*6%aCJkPK0LUw`1QDIHS$f%d)Jw1ihrgQy#7;Y{fs4a0LSHdJ4Uwgn(J>cLg%!J6eAQ2=$3TF*@67 z^y~_Bk$XwFswCMii&6Vd867?Q*dMhqpUrsVgPhjfSbb0W;hHiSqE2j2xIo6-;2g=R zP#Miih+?z5Al_32FLm)f3+PO;OAnJP@v230fD)HP>%b(YkLmYp=iLRbNX!mQW zc3OTb&bLhp_M&08l*W{EQyKY>*Yx=8U@;j%Vnp%WrP5tK7qcm(coq${@VM?^d4Q$Jqz(_1rr={IKTw8QYjcHflE#$+40Uwm`4H>0 zlo~%&+GU|6Qc-Uh!S4>kME3$Tz0gzmHGtiArJXRX}FzJLHNUQ(=#;1H>5gNXHuY^&rVk~kA zWfd!J>`x;k6EF&lB#Ae}1IhSAX^TM&d;*>{nc(MJ3wOCsFr>q}|xbM?bF&y`xb zv{epZWox`pKkoKI{W$4`G7PP8FO{Bv`mbIpnU0v`8dm(~MZ=#f!Bp=RRt{O%Ua3_j zzf$|Khg~wM_!X+zM9OQWm*;VgAxv$h+-Mpg%ny|DS{aWSsQCt>$0q9fMj6FVTS7

R5J%>q^FE3`-DSmI!)lYrQ4~zQ7S(G*&eYr}gn_|1rqM^8!(l!T zKj!S3x=w9xnR^UA#-?U}oc+E?gO54+8nV&HoH>EN0XH=9m&OV7=1l7&u2#pL6&CC8 zjx_MFa{z6qbT$nxrBN2gWE&lLI;I|deHOBIGew_rCTH^tk-v8j#CnuxU&gcTC=eRh zjTznJ8%L_C^xjV)bn%^+)Z&C0u|{ zdl2fC+rux!{5@5-2Z3;W+f(9hPazlQZck6^pKnpkv(6fH^C@Qwy}Eq=>S*ODXGZWC zy&kGK+IBYLPhKZC` ztN3Z!FifFyY{KvMTfuedlPuRI_)F~2@-NK{w$!5ZC#uJ#r(soy7a0LI$XpSDFgF%# zP8A}lOC+TDZ*VF|uS1KEX4^ZgHQHWkw4J|o4?6xvFUC=9Q9FjJWG)5(l|_hHJLeI< zV?K4JwwT6nWpRvS9DGh{DLLTTJ``M)-gK@?HHVvCID?rrQ^$0^2h-w`Gad3G&f&IwY6dzMP0^dbK^Q6O)=pbxfs`~OflvPMTCje;1j4o%(+6@c!;>b z51X%mLFU-#%uUS_>?7Vq3Zjx(M4G*j;Y%a{2TxeppTm z_={48%V;})v6Dk|rP;(SG58XP4O><2kz6?L%Uvr2|5s2|{lml&?pbBZVf zpYWKe=5ZwuW2Pfd{!p506{&Q$O+?ZztBALkaPlQOgJK%YXSigj&QaCP#l#rJtmHh4 zsf`UySj%uJ^z6~QI#M>wUDa0WIl_#DIe!|0Sv)JS4N>BMG2 z38o|y8^2yYjR&8W;e{WcE~aM!Me`2J4N@;QNX@z3oVj?a=R<=t`K{v2vT2GlLpYE4 z>9UnhM2O^&Rs6IaPt_ttvV8+T?Wc}GA{AS64+IJJ`Wk|t@Du!I*5PpQFwG1T3BeaQ zp*WvDj}$2(Bi_NopW7g#QHr(j9g47v4C}Oas40F!=J4BnEA7-R3N_RakCJFT{({&L!9NBswjg7JSP)#9H^)EPh4G1I7ju*k4aLf^!Eniwon zttHcFG19E_r_oOQ;)um>$l78pXF2~>B#%9J3{Ye2F*0>>Ffs)rMv0B7-mzz$GnLXV zIXUJh24A9mifQaM4HeyM%r^)!#~=v4VKHaTpW-w2=AeAj*h4NJd-i;kiO~@r2EHm_ zxQv1(zs|2i0Qzvv>HjRScKYYQVu87(RDNjlAGp{7`(E7UGNG z3VxV#nHpiZ*-!ApN<>aaO&1v6a9OX3hhE4CCT{uVJ(On^DfU8sIzpczuYDTB7ifRD zh)?3a>-gio3+@Qx55K|)x3UrbDw`NLJ5Z{AeJ>^b2W(Hl77GId4hD~yZBqeP~?f|C~01Wr0Z^TE9d+#4Mq z+#AqQ$443Mj}kA~H>+8ehTa>MM@<}}SJ23n;jkh0ip+MZXZuS3496yUGPv%G7N>)0 z@UK|R?4pd9;c+*wMoe|^3H*Yr!YTs9rZ|{}J(zve#o*Xz+>yc%Mx`*%>58}%w z&N-v4?~I{;pL1^PJe@B~1=%9-xMfLZ0`h zGYL0et^d>cT;OFJT#`;z7xAt~6Gioqr1`@^J1Dz|O#r;=K3Za0GZ?ifIyWi4hEm<3 z&)^bpBP*`MvV0%Xl4fLKx^ZNR1NGO2WQ3UB^J>#N084?d@-iZf62btvl4^<1Ea}J( zH)~JTjNUj3zNW;zy-I6}NG&s~70X~bVplXda4DXgA& zs)kWGJGXlJ^$v}#CmI;*4J+!T)%8So>-^zG6cpD`^*aPzHP$cb7?IG_um;8!6_?5N z@prBsS)zl*I;S>mFU_stnpt0jT7%J4?k+89D3YVs=VgQ&pG0!tcaiRDwUQlCWeyPRx%vcddGHBRo6EsnvDs%s7+jL&hM$PtGu*137Ky=D7ul-69-gExQY z=He#T))wMIpzG20;-L^648{sSt?2fc4zByUhy|9^y^}#>{tu1Ev2#A4%vi)vV0Z=P zG<9@~EXP}jp-k3bchRt0MdP|3GRv+rS7~(f9`uLZ`im+BVKG16n8+6Lj zlZv{;x1qkdtwSlOg{X-m4H@rY<=m!)NKJYtFUf;h&#VN8&!bVe?PKC_Tu@$E5|v2Z zkGJV%o#F1{N4Ftl)K1FjDSA8R*H$Nz9q)$0>5r{zMLh+Fyx-7M?0_@OJH14$RDey*fqk)R<5E%wD*|~@DKzy@>%14zM{wJ#LMj`1q(-XL8lH z|MV8k;hVLjw$GoZ zO()USR=zHQCXR;#VpeDI5FAy;bQUjC(37ICbvf>(d_mN=U>EI4aT^VJ0crDn({>IJ zk5ke!qM@GY^@tOv_XLO|GqFJ3+(CsDQ$^85Qc()`4q*!#* z^~w4P_5iTamNe@4di4YwUu;(E7SR|1uzTHttY@j<7BOA#n`@BKa2-dpeQ~t>Y4Nyq zns3_VXOK3@H|@oNNGtG7JMt{>`}AWz74)O7kBbIos?a?Hd~)=qHcuM~K|$Eg$fKOW zqQK{yXPz~(sAf~v6MhMgJ?WcZEiN)M1Q$Fx&(-l>5n^#qG>vg5iABsf9pMlMP$CJfl!eQRD6tH}TN5yxKe|=;-kXhmD*)!fNoG;+>Fa%Mg)5P44GK!Eowz zzvyTP6IF&+;@a*if1+j<#Ois5lLA;or+XQa)+r!jD%~E6v$tl=p!CMh_;>&ia7rGi3deX>1hOK@N^EA z-p-kU2pQovz!+~>QSe5oEymo(I}iIG6!Av$R5vY|9TF+|A@K-TlmC!tV!Spq7uwdL z1N_JFe$PXqg@I%K+|vw9#GNw(B2}iQeMS4f%`~pBXkpZ(8uEJ2RyA;{S|r4m7h+v+ z&j@e?WLS*&&{!fl`iZzK^Go19i|>m=Txxgs)mulV9XegVnYr=7jtHe#(SUwnq-oP= zLO;{2q~^Hg{UEQ=wdjXMtA-v7SJ5?W8nB^HggC7FbouqQJmeEo;!1j|iFLITvC?i)50*d?@e4^Gn`@9R=dflnS=hxmy#^HUPmiS%(P0Pr(l)$BQjA>nZOis?gW^dlMde zQ#@DSOUD2{PGQBG3jbl*G6CwIhd+1(78Q!e6O7zG6Sf#luNR7h)}HKs(x{7DA{r|I zD1%1PisoAjMP18>uHOn_szr3Vj&F$;mM!$cTO!-KE`%DKv87VGEg|8qt#64xE#}36 zaWF;9q#q}VbYqBxq5=w=tc$eMH`R+nEbYOQO&OF*KW(xQur~fUSv0{BSv{7jf4 zhT$iADr`=Zaaji9i=OF}ivUMcA(yLfO~p+)pM)dY4Ne#aWa4rG*Zb2%x+M~64m~Xz zo6|eq6}MWZxiY4UBR0zd3Y!J>YX!CCpO2~kEKv&q5+?A|aQb2v^vDls-z<@gYX6vp zM$D(=_e2xxSRAt`N5da}Pb6Sj^XhvTmm_Gwdr(F`#2vonA_13=OBOqe* z@vIkQx(I};p)>C*6hwX?QY_0|4L%TCIW*hnUje;DNppn6PoFuW9}~WG4z%a#G zKJ$8$O4o`SoFVojQ9ERLE_x6u{v_u|usVBqQRQpAPBf%RAEDKwXv8|vAbNIir_2!Z z#7L{x3143HL|ZlnpAyB*=ZXdy#=r(skHNMXj?w6&m?gHV(79eTrGoV$ z*_ih9rLsQ2!+CB*OSm^d^F$`L*|PBC+x)xciJLLxO6H*h!)V()edHaTr$%1A`8P81 z2F(}mp!4AiM2?a?s&+oI=(Vh?fmlta*)>{^k~~K@h+f>Q_TOOo*uMaBXD`Jq6uEI8 zWV0ag%ygmD@0~V^Ixj555LiRS3;oAp`;DSDomz}B(`2>ChQxVjwHm+^_-P8Q zUae%!nbi;)h+tg`Q_CW{xl}X_ToEo1-Vid2rk08*NR*FCl{DLemyl+cOI2x2)~M3@ ztWl*+;GYq+niH41POb47*gt-y26o2U8ywi>YyWm&-}S#9)4xF?FhgXl7cmBTe1`Ee z>tPGNKyR!UDStbP*RRJYo=QjY<6Bt#*SfCX?`y?(GrqnNzQee!L6^VAEH#SqH~0_U zNRM8(lv?rCaAjQvM`gojN?I!0P&wVb z)r4myrABTQwSy+xl3?_5bh5GTCe!Y%P@duMfO~1uL;E`}2Ekev7Do%Nie8BB z&=g({+e9gh+Fi@UO-hq-YhY|V4>SvSRmqZpt>S6Hgyz+{nnWH)ebjB!hH+lZ%*EOu z1nWQd(ib<;1!shr7GykUs3McLW3B)juCd6PbkBB7k7e}2c9Csxk?Qv1?II7zsoaiv zvxp*hU{?;`u%!!1n{$WB2&Yd;dM~Uz%~&JV>hVmcdU17jBN3iF7IBj1q`{8Kfe`07R!R7?-g^_{$4a~_c1~^>hl(Kn)C?M z*>$%{<372rzxAGHW|d|F%CQa)p&w_7grH!hnv{L7RFf0mD`h9DTuHYMzqOQcsKWKD-R_`I%} zQMC`ySzJ{IJ?y}4)rHHul^&L~2RGqh5G>m(@}X)p--nSnj2_m13iY2a_UZaZ`97FP zw^QVgBFkV3#mLy6c!HU7TeM82jVCdM?D$c{8hI2Or#NH^MeP@@Ib%+B83)V%gZo8F z3y&&M1^1ftrttJg5#m9Q*g=c-o1}oMVBdaa9V)6ozjjh;g-LbvG%}HG7xvJIEUQBw zfh93$2aK;3rnQC2{C2$nT()2Snx#R$KIw-t(WX+w+=6&rP*?^+6!wCx1j_XUKTE zHAePSLZ^l_^~<69&mmmWNH_N3EhCJuIAe7exVwF_?01$+Tf_B?9m# z;cPUCfYAfN7_0*vTT>D2o|7|dxIJ&8HN)Y>n{vf85D8$((H0P+ug->KW>R$3$$W>v0<NT1^uo zZ;~lP%$vs)N!~wZ+Hqr~(vD+7$G};c&FmCygkc!m)d6(Rav<6#!c#;*4`7^GrRcP3LfUEnCNSsGV>M-bhCwM7AoYyW4bs+AGVHH}x*vOF8D;FC zpHG`8t$5c_DemlS)QQnHJ5VW>k)poworwYJ>!_|;@9&!~6MV7Lz$jx5?XEOoN7ZdT zBkD6f8=n!i!weza&=>D=GlIU{;=_R2E~iBV@wNK|7zXG_Z@3dxiSzDR8BZG>kc zXzV+KsITXq)p`E(SrJ#?XiXCjZ&e`~Rnr>(s!!NCwPXz%|EmZwguJri%={J0(8+Z0 zS13)B$$n1#Wa&TM&f#9C$y9a@)8}M5ssDui#!s$#zlja39##G>I(xeVD^MveBlKA$ zD9c1%UD=FrQ*a)*nMrfci`roN1;^L4J+d@;yTU4(e3 zWa#*&Exe2MWiEBSC~Cy!+cP*^KfHQ@L@4Y){+1la3};ea7h}0i`&YD#v+J9Xlr}^p8=Rnef&Io5 z>Ni9eHE#^TE}YtQL@*`yiUN1b1XaCNiA~53TmkkUac4okXy{vVuW=THcYdvTb^79d z5ylzE=8Kkw^yk_=(%-7D&Qyc?=C_P%;NFo_+c(BeWQ_k3O|kL}TZedRK2)^g8lD*{ z+8eDS>&RO3E3`;i!-r^06np#STW3hOVKu5jOL~m3>Phpy47e|^Fy1ObaJ?k zt3UACz?J{TDsG}s+jBKn)bz)d+iN(wN?dI}-aNj31dh?`YfkTOp>S^v26u^!fST^! z7u+%ea^W*NJ;G#h^hGMAABYd6zQdabQm2vn5O{v1Xl?XMQE1{YkYM9TyhLPg-YWt2Y(2agiZFbemNGHnMcc@Z~SbmKSuMw_-D8Mz+1 zvD=`oWqdMPv@&)m{oA0gTO!AZ4n|j0o9-GTvXZfRn5d6zrE##+jfw{q4A1B(V|07O ziZLceR9Lt&Mm!d?432wtVd!DdUbfPUV?|SL^M_+io4%^HlF_Yd@|)0c{%^XC6L-g% zwl{UxAH{Ji#))Q#CUk6^=!AXE>^DSKENbOyy%&{owNJkx-k{9(xDT-;G48oW=mHE& z90KdC6=o^6M_mod4C#cZSsu@#KxldaXfoo_UJ*SJ|M0CV&|=Tfkt=X&LNgs#u>-vg zlNp3rkfU0XM}qjA3^H{0Tdu;Uf6+x(MQh9`lgs2^8=XA!Nj!D8NC#Kf$0Ac;ll(V+ zjIHTwCKUvN<4L8OX-uo^TDsK$>` znY@%RwIS^& zJJVi^#)p7>xd94T`d}g;21G)4Tk7jgP|T33rxF+`i9F|Y|sy*?mvjM zYThf1xx9~QdAQ6$g@?jbg*751@9=eski0?gB7Op~q32K=ee_L)jL`QWqp9f!;$2)p zBITUT;oT=hvn*r7!k~bI_m$MahZG#nx)FISw4P zswS^BBDJRvtI3AlywWQ|%<<^KR!`p$FjtLA8%!(iDI0gxUT47!tJ9qsMtQ8u8(}WR zIFA~N(=cXxgkr|U4iEs%t$^7I`p#vC^!hI1VUKJyy11>L^2-fsF{?C5ytwrdV0mw`8w%t$;$~{7Z(#B-=N?vEMGn(JSWss{EO8 z{w?>~(+cRMIln?oTn(ufTTYnL>KiS0cogUB@$u_5{HyWW)e2~1jVij)lwLXnukp6= za&7Yyd_iG#Y$d{G<6xUjj8{}En@x;kO?7{pO>Tl5XxbMsjm7E)caNdc1d~8jDB(qP zR#oO3uN}_lcuW<{06R`B^-Yx3ed*w}#}&}HME?#iO_WbFN2DjIA=NQSrnUD>Rop6% zKIGQCt2W_yO>*O?ILW_?(j<8cS5Yk)RcxZh$^IE&cgdg^lO;T4-NqNgLjq@5uUwP= zTI-A9GXbt2lHy;!T7Iujksj+ya=6zZwwbb1{qw`((vgZ%Wem4xUMgBWmcB{#Cl{Mt zyuRfuC{hga>U1K@F_T8BXncQ~bo!bzz2>h1k6caFxjM8e>8u6=>@sz#=CCxQ31ca} zrhk*KW2Q0mJ+El5S%qj{RZ~957)eQ2bZndMFAA?Upm?of<9w}R3K=WY^)dZ(x~z?( zC?OgCgaF}Q;2M?bYb^PgzLer?m`peq+rO~a+B(xzjLOwFQ+Dwk6JE1d0j)OYSLlUJ zB$pCl5aCi`81XKsJvNb8*PvSRNh_x3@;cJjz)^Tz1BZ7$#Y~TEd_Qz3mKnU^nH-3N z?AbK$ylL63{9Zq;E0u@-?z*xAl+lEG(!0&6I_G2H7;QFizhbvL4l#!@-E9TSKn-z$FA7A z2Mso(gQ>JgdgBl!OQg1|>9;Y1sAeRV?qK@y%p=Tx__pne1elLyqS1 zwyg5+_wfC5d_F7~VSwBZ4m@n|Jm9uP9H*_;LMGF!=Fo*_(C5u%gRBdl_xxq0=YhXG z;(6dNEBMP6_^4A0$+f=GLOy|?vZ=BM<+ViHuu<4jK8c^NTgs>L6Fp5nK!vSjZ_6q= z)JoRFnTn{^P+yNwht{&CWtQuO*0Lk+(k!RtZDcbPe58$RkX(x6E>KrF5PPs#i3imw zZopz{+*Y=ToDqg|UhadXh@II&#?Y{~vMwt8sIBZ#|A^-k?oEZ~feS15JaA!U@JwzY zlc;q&nWPu#UOR{DMLyS#i*!wCClQ-r27T0C-hv(D^X-9wIn=m=oNSpzUv)sUSJC+n z@*Z@mXGdu0vt0Qd<%5=ZV)cTKqB%CFcTE8)=2GTV{cRAv34Wv{Q)L=w z4x;ldWLHXg2akPP%I-9hA@yQYOWBRi8jr18$$RLTX|k^M-EdmjN;al1r^(iqRj!NE z^Ss6S^zfQ+!oJ-j=+%2-i)55m0 zGp(5+1=4LLvXkW_*Ucp|!eXBr3hqszh3&DM`TR_*;#Sh^nX-lbBTi4F1MSmds8a_F zoLgtfSL{D9uV+wtM_G$1XW{!*ba|G%LbvA0!m2%pFVLFBCKP*FEN2;5?8d+Gu!oz& z57IjI>hu>4XPcT0bj;(98V&;YNVJ$#!}gJ@)P-l z72d$TSIO5g1@ndGA%13aV@zY=?`mddz4WVQ75kiEudNa+z_+adSMR?AKyKv)zIMwD7A2V?4;P%7hFnsE##o)2+k zls|O)m|p+G)$3(fvnpu1djm((YJM$~jMb0HL}+!You|w&Tu|%9X|Q9peq2e%rxKq3 z`da#I48vjH(C?$z0~WKf@PWQwxU=vEcTg#p6)Lb|O#?$($at$NI@Q9Lo@8|iZv1SU8Gd7o42MiUPy zD{q&LU_G!;=|_@-n@I0sa%D)p_}AQzKHhP zJ{HlwP15T$&+T^EH_Htc>+B6wwnaV%d37~Kt4IB}%0{Ua3?0<%&xpI2f--{LTPkX_ zFWagwZkbc~`I>6(ws3NaDyhGdqr(Pk?M zW}=wKue7zF731Vet1cQOJeWN9qv7G`PQ<)Y$JkqAlGYPVF! zAf5F!_78n`w~6OeYxC8cxbtP+$$q3 zG`*4b3N5l|gIp~I7AUwbeuk9GET`xWO}4J~-WLf1vcoaLq95v;s>!5wr}oA{!dpF4 zLk(PBc8#l-c`fMPcU7Bxr%?dz1PHsyr0T1+an4P00Ml;zP2hmG9%k2yf#|w{vv3Me)=#}xFuIom6qYS z&T8Q91V$NDT&MV}ad zMO}fuQtqq{*c{YJ9USH+rFU0|YS&#Rt9h3@!K1`8D?-oitlvP-3XZk& zbAe8ePq!yakf^lx2NiK#syJ9&s0Y+h0>tgSQJhfpI%Gsl^AUJ{Z55FOl)(V?`dNX6ET%w ziMT~)o9?&BOqkgQ-tyNt^=pOKsCq6I$D0>iOv1*C+pOBwpQKfg$PU+f>0|bx z+hkIg8)X6?$8VePnqSAlSqh?|^tQhyh8ie;-e!_>RZvW2x~(U8{del$^9Bl>-P51C zhkEMNtYNW-}?{O8w}1yUffq8i2@9cD_6m`E_0BXNZV9d>O*GLJyMMLz&|RnULgliUdR0!4S{fVWJ-^ zv!3tSFr671soZHlyu-v0*UNMX&1(01X|f_^L%lOf-~{_|_w@?sb*G6-6z<->Q|FQ$ zcgoCm=MTrIqTL>iYT#6bCr=052v8kp+S_C`S49u#EtSViL2pynbWG}6Czz~DrX5y! z(C|QS8D|V>{@i7~ORlwe*H+Ab&CO)Zw+PQbZ?2=F{tYTD>AH`!9>zm&3g(2s{y1gg zo)ku(aZd`dx{l56#_zF&E-Y{{xs<-O7y4oRUt^*)*4i@G+~L0ucY)s3rawQ0J; zXa}zbM%LC*r!Oi!s9S7CU4aL6^{PUhhjT1koJIF7+jE}@i*5g+Jyl?ln@HLB1B>UV z`~Ch{gzgzjqwbfJ7)vP+NUtxP`mXN-vL3$~`+&UJ;5|j)UYlFR)F=$>?|7T<91ao} zu$HzvE-S-ga37f-JwMQ`IvK0)kUKUuS`vCi0N;GqhvyQ)1bzf?N}J0Fp)e7lV0 zP$D&bRI1aLw?1kTsvdgjC&lQaN2Lp!H2ofv^Wv81E)5Z}h^>-ktq4}UL>Z6!f8FPC z?5)k9mmZgyxl1e8WsPza;@Vin8~U)eAb8o1X1>g_>2cY-Ou<_?44(HitT;o1}N5Q;6J0-!hwHDvCu)+qgX$zmc0_=7dOS4 z`LCT6&m9;l8&KIGd6-H4$zcBuULGu;hui71&+0O5+_N&p7<5P71=p^M?Ukav?OB=G z(jX}2yNY0wGIYRqLeN!t&qySXF4XNg(=2ezU1hzhsx<3ek*o(q>YltaQG#{sY5D@c z%AC!0RFyeB6x-vcX4}(VwmlSw(;hJx0q=(* zS)Vm)S4oNJ7j$Ff6EFBn*Y{q~eQmbBARE>5%qY6x(q(D@E4%@bF%C#vgbY*DP{zMZ z)4NK!_g}gf)w}yV4pm4bIC7A(Ft=%udj(eW2ydTrVc7b%zs7J_0?>y_!Q{XY_7Ozq}1&yHJcN!Naf1UN==Ws zzC8Swvx#YT<1StGwm_dvXvn`!Lg;!r&8PqNAEQ_PtqY;NS4~35k3EdgbW>lIc?R(n zTX^)9E3f_&edX!@n52)PuXHg6J8X1_Kx{)?PD6wAHPVf8Z>?NcEZsp5ye8jfv2^A& z+0JOQV%XNN!((+~D94Yj-U)-s#~w%duPd28?R67_C@wRTE_>cTBptOIVv(TD5A^x=cZir61`1~87-E;ZZquqD;H%_~b1}Y7*F_NbZg}RwPi9R1{ z+9zPFxiCf8EsjxPJgGwqEQ65Yk$!%dX_Tp=S`C*Cedq5YFZJE?cm8mHqL}CJ>_z{8 zC~B=0JwnmC@rb`3I%@uYa)dwn=a10Qe{#fMqhEdAb);$ju3~)Y25zN0%^&GsQ{_nA zz^#<6q)|6Ec&2;N=R0_&ySXo`s+q*)8YQc%RlugvGP$cs*<~tScglQAY7n^k(Zy-6YIsWGtmUZ4WxHRf7yGwEL}k7_qHmWLINesUol9 ztrlZtM z5U8c#q~Aw@rj0#j1|1F58sY43jUeqoOEtqo=mE484no82T088G|D}Tvh#nqn zY8x9>2>wC0P=2tMVf`YHdd^OZr%!{mR+hJ2XM?p8#J8chLp8VK(EX^u?K3nsO#7ev z3_Tosy-Q?plq|x+9jW^-{JB~wj>Ha7!BE!qzH{?C^@!xq5 zt+>{Eh~Pcc%XPe(R@YjKLSZp?Yfgx48k`Y{^&eDlw|g{fT8!>JzK|1Mi{`_Ab(u09FT-lfbfA?JvBGBI2|g^ezfv?;^jlAB@wk>s>UJ zR>zr~-4v2e#%T?_>M(DB{Ef$fkLqgnE}BSvYM2JSDt%-Pt+6tE=@OsahS+B)#9W6W zGJJ+QQ1y7NzBJgC*~aTQr0C~R^mBX7DZ)GaOb=>;fOkRy&2OlM(7W+k7nb?#T4Z^L zF2$ReOEs`=g4WjT_<(Rl9!?cg>E#3yx>P$qNYHNM0?#MFO=Ky>C;AoWf}6-QmP~lG zn`aiNO1S8PPflWBB(s5ZC6y(a%4Vdxt|Vy%%KxY!MRWTf-SIcBM}tx|b+Y1bU60zQ zDN*>pa6JmHsY>{7xE>|bfts3fmo)s3*j@5}?RwP1beJYU{Jp!;$A9N;w1Td2HzK$j z^>TfhsRakRF1`l`bwmxg^L_aZd^*xTfSdCvy88q8r42tvg&#mqI7Rb5z|q>-XK2R< zas>b0^P#*OW|YMr%Cs7!Y-1rXiSe%E;wTu(@IVJYlpnAfP%sDn{%_GAbKu-Ri?Tj~ zkNhX};79T{6ua;v**bOjIj@TihrBip#j!<_Y;#d_(FfFEt{lm~OXkW^HQo#K`1pGw zc&3Np#^77#$;5>5%{?J(jdyy3UY{plN9fbb^JH@MZ=?8Ju|Dkd_PQF(m-8%^kLbGv z@Wh)!zb}9%*$Jw>P~Hp$Y2ZTHCe?Iw9nGxk8Di-H=@Gb9ckM!T>cX-JXJpXrj773` z7)Pa;$&nAUXy^p!%Sg}3jP62Z6)92VIF%Mis~5qWdre)f)JmcBb-7Hpu8W|f<nWcpgm{17U6We$cNLsnEE|k zeo^y!kg8hizNB>uMmz=ekkeK3yFOt4OPcbbnlUCm5fLZ60Rldt=$B2sRx?w(m-VS@ z#LHR>WBFvBR4m+PMBIb@+*9TLm;I|ud_`-dVitI;gXPx#JQD?*Tm=!-$p*JzyC*0) zj+5Jw$9E@>+vGuw3aX*{IQUITi*z-1?%dcC}a%ftU| zQWzAa&WwwXr=I`TC)t_**1X0ZRo~^}R>?K3Dl)3KbncDU7jHTp=&pH>09@N{2%R9l z;Rs{+*@9MaSem`~s#e>ugs5hG@T#Vc>y7N8afr?nc=XLs<3Cz$*B?E!e_Nmhh-q4^ zV}qqXZYsp3upkDrmO3gy3vSiCXU|kJ!sOJZ!DHeh$#$EjtcT5SLnR;3twT+fC_Sdy zlUgFZdz-Gst{H0LgDQBJqnmoF=7^`%p{IY<&NrZPtTnDDMH>ryYNA7Uwe%FX$vTheVxAgL_p$;`+3vmo95B_d)~SrD`Kg zxfGhz8P^AI*Hp~?mv7fnjTL_teOJ7({B}jFts_imRK!Gti`uTNJG3_pTCMy?w7OqY zXCM~d|5s$%*ZaRpCc5%~reY|S-F2fB>er_#3h`96xev;?E-BhQsFR|@J;*hU?!QO# zUX|A$av`bl-NRn_i0BxgXaGeLWxd-*sD)IgqTA0Cs#p;Os41m ziU=+YhrX5|%5`k-z^B6=rJC<)4w_f2{ldgP*7)!p;tjf+G+T0wKh`qvGSsLo9!Kc$8lORK*TgwH*t zd0nFoLC8(t#AVE-qfeP+nP*Z{ehLHoBLmd>{-%|m%An4_mrjfiw70XUVfG_({_QYJ z8lZ-mb3j!Bk0uPzR=JMvgSR=ZoPA@zd=HC;rWLZ4?d;ijdiV3dL_80#z)@|O0W0Jv z{A3@H_u6NMXT;;yfxbNuhW-5ma*$;-#r-7f<1lO9Ply*Viu(M7RZamF{Ul!t9v_$q z47@=}Kg;n^>ui~^>A`%JUaTk_PappbO}vcCf5y?%LzHk(K8l~$4#Gsgou(YbLDYj( z{}|})F zEjV6@dQ|N~XkrMi;S<@o)`p^v;>7h7YJ60-N?kDBcX?&FU1E7Pg@zuLrz|D70ba)9 zH2TP6@)3M@^q8tK>}bzsHWt2A20I?u7iwQcM?4$VN4HMySh* zT60z)GsD8ao+DUYE85N(D11!H#;3=GJT}CZVVQ=(3y7v@LFrK3Er)0}C zP*qsn?o^DiQe#U|tpyL9!a4CzDD<>^13!~b%cT}v0$V9xiNDkwS9W3F3=@60dkX;? z(vT68}u0^fR(~+QLfTIyRc?m_pB;K^;qI>KQo%KS^h?3VfHk@(&^^ot4dP z_@45XRZGJ2hO@}KgDTG=?+)AsizD9CsN`2TX1`NUl)Kx5IE?7Y58hhrj&~{WoSfS1 zVsiv^u{qx3i263igbUVe-Z+g^~Z%xJcAUB|q2 zu^;Z67qB@0o%Ual!>p4&rAPjdSwTl4MP&fx6t_>JxqrwEnC3VCAseR7w1NB1x_cU# zlpg3YV!{G^AQtY>}m4BdZG zb_x3+1k!mkdkqvAS3HR>#pugziTr z`Nk3mE)1|@AqG;I<1kq+%g0dY6PMAgcWLZp2#8RGBDYywPFLopulEbD1Bq|I2zmzaUT}14-cl$u;x+pU`%p#+P1BF6usFY zuIA*k+D)WAgZb|5swTlVeJ4Tds4&WS8?hLi?`st-=GA>sGimBzlbBaRyVvCS4ElMn zrUy8}1qJnIA^e0|S-Io!tCf|%CxMy)dOWKyf_a*%^Bz6}t_(|ci2v4}`sA}`wL~>X zcvSU>=U7;p)$iFf@k1@am`J#l-W3^EkM29_8a#)U_xsf4In6I7*{jcK0=q_^Kc~Hq zpGTh8H0%p~_`KHMlExNJ-U9ZuYhrE1<8q73@-MBq#b!M%6vD9b?=tM4(_uD%QY-(P+AEWvK%-dDA1 za0j|(3GTuYyu=bwST<6*L5GRLGWzm0@at*{d|i8uZ_*zAy4DfDuCHF#W^=d~UZ>N4 z@-?qU%47L2*XZZ-^)-6dP{j<_S))%J`d?lAHP~!gqk9Kzv1fhljjlKDMwae-hE=sN z^ckE+(cXiq1=m};e>_}YFP<3=ZT4@M?oW@n0ZkSmgAyY{Ocz{?rRyx?Q$}j{dx;*z zL?1p1>ka&tjzYWedufz5oA%wIjV+pnv$!c^wH7+*Q;l`V-%vf1?&%GCA;xC)ao4B1 zT7mp`j52BkVws`Eg#SazV#%LC``*yJv7~$!Bq%Z!I&qaInC3LMKxgee1<3Vx>;4;B zkYK!WjM1t|NB@2+z9;=SK)aVM05SCO1Z{yadV`se1K)(l!fKlSCVUj|xZzEmo`Hqh zhxVfltkFX(^vvziDb#UsBNh8PhwjVKzQyV$J6G!gJ?*tzZ5);>AP+9WJ)9&V-8 zhBiIA6>vR;-fyL~wERYUTcMySbfFc{c9zmwYa{UUUTbXt$Wg70*1SeZJ>kApz}S$9 za4e&H+rX#e9eSgUmfYrDhp3}#??x8HA+`3e9e~?zma&KZ$!NB0^X8+m@1o8Z?{A~E zv>p8+o*uf~kQalwZPAR=bWd9}<23DStF^OSqQrJu>o9h$ABAASqA?BWnv_Zd>!pN- z@WIwY4dJ{pwjFwLir#OB&-c=%cKCcR^=z*-vrmc0499hmW7}(Oy=64>E8`fKak0HB zBfbO5I8Gfppp4`6We2Su&~vPVau$f{h)&NSXGg6qZs>WnBUF}=RLno8=;My?Bsoea zJE~Gb^H9nU)HF}KsRkAbxFeAl3JB813xx>${7GZ;K-c{=KMz{UDLRm+K2LP2!dg1D za#U1J;N2#=Ngyu4dKxS=ULTAWpytPvBDLE<`lqEf3|jPQi7YcIS<{l!pfIc0%Uir! zIYKK#VTSKJ6y`fMuy_fL&_MsG^qHo0?#*@^zlcv1&ZtbLN!OreUx03V4TH#dDNqd&&6>8u8e*x${ z^y9I}_zA$jvbX(Lg4L>__5{gr1T|t`SMI`cA7bsX3o@NL%+<+2-JD>inzQO|Ie1@BmP@U^O65xX+G-OrMW9{j+ScW+ad$# z%$&>^x@E3*h~BPWKbG=q+9drxTFbMZZB7}T({7^jNkOsHGb}KUvgZWF(4cuRQ7pC7 z%y3&H%3hNYN0oy*MADIY+9T1G8}|f+2V?L13;nm89+;2maFnaX0$xLHb?siLZMT5U zUR$9}b9G&!HMUwmuT7Sn2}$(WCt3{VK~a#KN=2V&ohW#@R+6;U2CIa1h}G%2R=|d9 z1p={Cu)?)wx%L^#a-pn?R@0Y1!aru_YOOA+oA#+@vsh-kNzexXHK=Z5R8y7vn$NiRFrHRcN~0iAFcPAELn>R3T1 zR%<^Qb?h+L;d$UXsKZxKn5!t3Q0x$DxmN3L_IQUtcl&xB&k+|2M&VLS>Q`>9(MTC# zc&pss9D`F5UMvOZ+pY)JYH>qO;x%%JZ!K_8q&S2k&Pg|9z!|6D8X zzX%CmHu|B>8vbr_J+!$~R(|mFk3IL|W6$+=jp)(&wU>>jKh}0`SI_;_b9AEp&fox$+|j~=uKEFKUN!2hyn_xx@(Ewky*`Q09> z(Fkv^;4SAW!*BX8_5iWgHE2OMVZjmOB@2;t1Z`i~Ew4IfS$s&(q6#`pnTxtLsm(=1 z9YzKCy@dDt&w{^nq=~g#lf$nBzCbT5>ee)jOSluM0b#UYQMdbs@Ry76d~1t`2Mv1u zg*K19{K#X2UwCTJz)k@H{I0@XYCeC1e>VJ;1GeJ#1^x{T2sp>TwfSv8z$L&py49ofrQH_x;`c8f5AAjB#zy0vX zdH5e!*B8GJUBUR z(jEo)82*?*kK>P#&*@J9eiDCNbEP}&DZu^l$N#vz0r-8I>E>x(bDFfg+v+4{g#Sa? z_s3OHeDCkQpn{;HUIhgO6$KR)6%`W|l9cYo%-Qq=Erc6Qx;Q6a8DS!f8fEo$JVMosR9px_oNw z$?A7oJ=k}($Ph11H{VW zPdA8NT3Fp)t3z4RwThf||IXTn*~_eRmHu4b(otEX)RyTeXChJGT96YN`!)x%+kLC9 z<$TEQ$2^KbIs*J`ne=5%lY89a;AwHZQj98|y|pN!DK%m4lEI!Mqez z&|AqXAS0fP=c>ku_b0gp6IRtjBqgx173vfUYwIYbobOFisfxW^VV&=wF3yEGaz}5x zrSYG)n{O4korv@T3|>TP0`GG}Bq~SbUGsL^aW_>c0_+kXE#wBUwx7GB!Aa=)x#w`a9N>{r#OaLSknx<-MuLPnI#3aYHf6xbeT73RxsR$0T@$seu$3O22S zz~(Z`A?p@lvg2*+!9!Lr1y%qVQ3`9;U@o0*!yG?ZEdxnS6D1vTB4?LQ(j0VJEK(CX z*V%>r@soA@1{$b36@x(+rx?f!vG>wS@S@6~GSvS7Gi5&N$0IFJ?T~yS%8QWZAvMCb zF_At2^2JC?kd`6^LzaYuQz78$W)>!2RaojXa%aPc6L(#+26x1X(dDb1`^p~hxrwQFWM>KCJ#YfyhJ z(mK@+$x~5&7%2tG*hDImem&%mAf+KaiWCf45|Yx)U#ycwGa(>Snu&7zW+t+hU#uIH z1C}$c=d|Y4vdqKQrHVKk;s%qaVkMfj9=5Jf#FD!%u4XAU*42tQ%^;3u&6>E?Ag*F5 zN35#^x{GckiZyBC7K6B)B^^~=rgYWOwY>hQ^_EE)pIIJad|IKeMwzIZx7J#xnUv}4 z(Ot-jc+~IK8K#LePrZ9~QZ|hrdg%RA`IgwNGoYh>qGcQheHM74ELM5UI<+fRuT@3< zy?C!WYY$U@!hUAyB-Ov!TdC)dvR5xr4;Rk&{9*k_Ic{v|)kz#Tdi<##H^%oCku<4j z@|*%IlxIRmIZfCYgT4V}S}obC9uO&v*Z+wY-$mhl;wfw{MovUFwANX?^wu?_z7KdJ zA1}6`-a62f!!zowJx%?nMSgws7Uck!37#mEm7K5+GG+3b6INzcI&_n_aQR)|J6*>6 z=q?*zA`v`MA}?&Pt~P~H$aVch{Yd0QSQL_Te^I99m#TG0?hbiGd6|zJ8xziFp0-{R z(JuDYqfG!L#7|TYVT&3OZ3Tb2(HbD4Jv%^nn}wXn*g^RN^=NZpq7Xb$Av^i6b+a=3 zEvm?WFi$^YeP0ZJlE3agdk}_yu&C!Xm_?pN$L`@P&RQpk={I_a@PA6h82#r!M?4Kc z8uWSKiSpR5=d2SH|Bb51Kal&Jw{{l(_XOzvgHZMgRQ(6C$Y%Jj;wzf1HsOEjP~pEx z#Tfk;LU-Fg^u^$birJY9)~U*hYEwlrpK#IYDSH3dFx`C=%HhLBwQ#oTlG6KIE?K>W z_ZdOLyEAekqxXEsH17p4QK(|j`z_W{qW4viWhC>vY`vnayI(R~4Qn)@W^i@*~VvA?fcrzwqZRYfs;LMyJ|2h%tm57ymB zp&T_@RHJ-1_U1lpYOB>#oS%&4dH-1*B9t{_L@51`6B$FPg-i>j2zKgKOg;0xu8u?S zSWzvLuey%TRo1LWh#pEh^l9LU(%9Q=7>5jgpv}5Nc>i^r@ScR6$ml(8yzadgCKA9C zC9oYgt=mIrN&c&f+Aq}-gFI*g-6TBc<95Dh8Gq=Ob*2b%RHzy?67oV-U(J6o+d7Fr zmQT_Hse`@(JW&NZ=Y&X7cn@dWG|^k9!bB*qASW`05;a*5#UJ`;@I=w<#SS)c5mTUw z8u`%Qu!Kpo0AB^{T@ApOkk40 z6D6^&U6fJ!tcy*Z(+8%D2;z_v86$|Ap+`^&6Vc#_qS*`GY+_FTu8P|CQ-MM56NP@N z>j&^yp$9?_pEtwC}y0ZXfZJK}yhj zfhY2^vDrOsn*nX#nEq-L%1)u-|0SZ zrtZE4CW65e1+!#N+xA{`sLoJDb+bB2Ik-)@bz5JXC(CrTt!3^_R!>&l+lD7A6YR@a z`2yPrAq)S@wpf`>JyA(JNeYa{2^)B#YS!8ZVdiq5zP9;dGMVldVeY)|&M=dq(6xECaO%@*~%X0wQX09EqDem3Qqb}^BQOqN2#EBqFOdj8VJiu-&^ME-qWGa08f;`iU!e2 zUci4GWE&zne@nb@ABCLA=)Ms$&3!#=G^?0q7Btv4R+*vU3q-YKmOR*YOYz=mq3%5c z>ICpa2`p;}yay)m4~N(mif#YpMZ)`C$cc>Jr3Br3Ic&IqCvr((_XOG=8b^nwbXC@V z8OIsqMJPwq?d#`u*u{MbZw%C?$SaHWINJ!nMA(;>u)tveg>c(2+d&cM6H7&$w^WQV zPWMDT&IIT!;E61WEIP>cm9i~=sLI;MnP`+RL!5hl=;wC8rIg=2!nRrrX7A;Cm~ns< zfhQ_rhel$+i}}Tow(VjposvY9+g1pOG0IHnw6S!7J{vqyHv2Bv#*`o}D}|_ikaa4Q z>1bJ$e2=aC0M8+V) zll34&ppODi6vZ}%s1q(v6;<+mA=+Uh;X&PdE%asJiOSfCaquql4&!YBVjvGbB)n%L zCo+2XU#)xhfj$U4QP66(e1dI^GT+lxSrMMuQs?`$6y19n)cN3v^4Y#nc+cdgLTww= zwyzQ1HzFr8dXHbLdvAk@MDRq3?De~Bo0I`MsfyYUP^m%gvyKj0r~A3>>XOIfCfO#b zTSBTHWC|eJ;EA$XNf;KT^Ll?!Vmq&F31=YE4hG36hdm-7VJu-Px+sKaPPJ_j1GF_wI1fPH-nsjuy7PRP zuz)ABJj(15wwJZplW?5y+U@76Y z?rifz_R(})o60ss*t)RrX|}#fQ;t5SHzf$=7#JXmVUJ8hQ|kG4%9KmxMd_j`eUTFx z`*9CsT0fS;M7fG7XICTDneOp~s20j5++(}0T>Tt@NbARFl!KlWkf0}7^mOH@wr;v@ ztnfZJeW$bTb?y4N<)?DI5FzSs7m2=0-mL~vb^6B&bRflLc7 z6GqxpOdA_(vu#lpLdMggTKhqk4e~OSBbqn$ciYu7oL{lw>|Pna&olKfJx~sLMwkj= zbL<$nGX9v|<|~4n{HzG_KNVsOG8Z~6$Xw|2!4u`PUmP}Z`P!t4JhE7~nYL@n02Xi3 zy$7P~oF%F`XR&~23}6MHO=RqWh-XnQs9aldvb3CI@Czt}7wM(0J)Y0iV7F9A`0hoFR%fzHcwtX+ZH57>(LkWh^v5a1y9t< z`otpQY(6@3yIH2(OK|-7n5`-+4t3vIUU9ZNgOGHg@kqWlu<6Xj5-TMKBTNWff!WqXOu( zD6^n10#8(gZ=~BMC{wCc6@_rW1e=?1Uzw-74?{WdRn`5g?B2y#_LlAZ!Nsm&ZJU)|dU(62*1ne_4e}C{BN{mMQZPTg)HYSzxOqQc z57QZC|JQ{n%IU_ z_M!gx5kHQ*ug0J%QU3Ct9%T^9a*;4Ev!oP6S;ezcw1J$tQ$*PnIgv5SLddkPEQX0< z6;sUW)~I`Vn=119fc05xyQu8tpTDnr4@KGi17X_z12%LW7G4dP*J*ckrWUL7NW~c4 z7elAHPlmn}JW(lYNVUyS7M}BmLX^ZqA4bEJ#$SL;I~RyUIsPMoiDzl+=`yQ?zrNnK zM2ykP9}D-P$cc>Z@uS0S_hqo*0-ngFgiTDdO;`NKsj_mOorW`M#s7>?bpOTBmx3oM zWz~-&##G+&s7<{Qd-7A^J{via(Y?G&cW;3{20T#=%Y59nN_jBqJBaAiu25CcOld|r zBDb->+i{O@-ZLGCY$d3JrFu{yD2IF|tc9?dPavoezU~Pd6Mgc+Zeeu*aw20;?pzNl z7bYy=i7cE&Zm_+iJVfvfWONpskGxhbCnB#$B8uVHH)xkfm3#ECd{B=1TwtQu(v1i! zop0KRD^2C3@!Ky%STm3l8N-U%tA|wt6Y=1Q;@Re>ZF`l~bXgU(UrogZc~lwtuC2Ad z+p%t~{IN{!LUZ1idXV{mG=V2-VjZ7FkbC&BXKhPGkb}M!K~{csXOKD2QP9*kGW2=i ziSpQYo7CytsEVR_-z;r9{aUVj4?{U}pQske7Cr~>$^5D3Y+noSe82EM1v!ziiz2_# zy%)lS44z14k8M`B#d=lLzKik=@}LTIQGJ%L+oo>Sd_gwatxT_p-|9hT08#;-sDl0R zf-;V#7jc(R8OO8Vi6CD^PGk%+=71igKlJh7iQ?IFTWsQo$6{3^eb0|>vGo=1vnzG? ztpK!uCu(6`wqnV<9OPrR+TIub=l>x5H-3Mo|9a@OA&P;%5j;^N>-DnjZE>hQC`9c$ zDbye@Lm5xJ`MPZnjNwf$W3?-t^i7o>r3cDUKMGS(Ea4S&QY+7VMZ5F1>W~PsFLEMd zCsjkH1z7|WwJN5TIWzUnTi{QkS}Kob+MTx!)w=go=##(`C9#Y=cyHu|dD<~y)z8BF zFyur=@8ytb-Ya3EQpHrVmRHq-yVozGS_lh%&2~v#pFyPU$uTGg9u|K&UzRhG>%-nLy=ybrC@y%$2A0iGy> zQn%IUkd;E5{OZ=WE@G=Ad~9H^CD`^>*0$UNjk#vr55=t25J9|xW&j&0nf zZb(I{sFnY?3%iWcMVp#*?=8?bfhTHWrq7fv8vL2IAze5tynl?G$ml)tobFwQUItGj zvxj%vM)gt7L?FspEyU&LJ4qc;?8JWN*cNJb+iI0)7DBG=P<6nUf+s3v-*ZG0#?Nw_ zuUT1mD=vs=4mAsiF&fK7JsJ!2KH!ObF0$!g*q&0>eX=Uc=10D;y)8Q9$R*u<8}u11 zqFx4jr3~&H_~&J|>tZPST@miLT)xwN8FUm5wYnZAD!>y}u(My;9#MW3vRoA+%YS_B z*SPJZY;P3@Q8i*?M|5r-q(cxUsQ~-`DxH;{*$2308f;` zcJ8-{M>ncfk#ieAx8G(K&42y6?%#rPD-uyF>r#Q{7qHP4wiU{A!qIK|Gf+M^*!vZ> z2b5nSLx=m_WN&?ITdzFjS59&^;5*xdiPTp!Z(`cw(KI@n4nmm- z7r)8_anzm!$ZkK=sXh#w%(i}K^BkNEl?^pyBs)?oo=zi~1Lc`WL<#Iicv2peXn=|y z1txO8)k%68`F((Cj|3O9p$E{@*=+6s+fwCe*KDAar(NrB`MUX5fGfdTUxYddNDbgE zl8ch49FddZ=l0pm|LbYjEY`Wwwp3|;7-}fZ@5^#3ZKIV(N%ujPi3gXd4{}i^GWJ0o zWVic3eJ;NdvSo;3InpPHY6Wt7l$7L2D6d3%0EwQjrVF49x* z@HFdx$mY!lSJ`UBypQOh*9&(>F9Jwp>Bu|}*@l=cE_~`C+eZQ%*GUJb1L)!+z%DM# ztr|ZYCh;-Vwr*lVw~SAmUZ3x7uJmHgSCaXVAld15>3&+U)<5#_`#0-DH{9|5$6zj#Eu zHcaTML#qI*Bpy`BemDwfGQW5f_tX@t$Ghp!V3ZR)1T=vysRgu*KVOUcUkdcT?mDy* zuoB`yCG6AR&@8W>{Mc`{-lAuVdgxd$l-+v@tb0$^?HGDClaD_J^NQUr79E=kTpID9 zH1=2>hPt|!i$urT)9lb6HgEQAovlHsmIS#rAoZwHK|H8}efI}UC-HNCXpKD9TZaar z9PcTh7`x+u?%~fK*Ba^Y(xDZA6%!9CW*^l9TFH;r9bPiPMH&Ig zNcPb`SX<9D+MI=piBM?K6rfHa@t{KX?muvm#1H*rTPL7D4Ai0SD8~;HQ1tj2CGcm@ z;PO$~KiBx{&0d5U@<*LFmQvwjnN!Kl!=wr!iio=W)AD8LyH+y@or=fkQ=&z@e=B1x(*$ z7J5Ow%h_$14$T29fp|~?zW=7QH07dpZ)ELo9a;%kGx4BiR(lE1@NF&X@2r0W>A*OY zLufcaARI>(ZE+m>D8K0 z#RE7Zk6`xSRWvYx`L(LSw2?~P_|j0087-hOEbKo7Q@|4cQ!h5Aj?s~2K;;q-%4O-- zfDGY<*D&Zx2k#uKL)!og3=z=45Z1j7{xf)Jn>Ny3<8*8eaH+(DQd#^BYT^VJsT7jW zw%tM#-@9Q85iVXBuUD%>6%XKuJSMRJZo)+h_q(NS?#`h)HVwE$;z5b8$Z~+G^|MrY znwZyXC+ff|fSQO0HL)5KkRhziBwtlpc;qe}8G~}*B!LW^#JW4lLrk?i)Ja|>mcTt> zIyMKmD&j$u(-Np>;ZCwx0tvj%SqtX($$GUAlw+odY8aW0a)4|8R2S)ANY1c~PO>-K z)KRWcc8bZ6YXe$_Dmlc1a#&g?8Hc9`{$?ixs9?8->)2M{+K30Wu?82kH;ucy%EJZp zR)h{sL^=6x0ZnExodK=q>78ZuP_}BC4y^&KhImj7D{})hl{dJ_>LX~4kvcRC<)nKA zG>JubL9jtH_@iCqwPM6yoUUW5f%BUouzoX`Yd5qgp9go-q8${aW3zzEAs&QI@IVMr zyud?VAsY6{y*jiNurRBDhB5yhfEIJPhpgU|4YldeLcj`$2Nkfao`A}{q^GR@?yy(Z zp)M$g+XXb71@;28h)4I5)$6K>4jozqSU&Nfe3sc8&<0lATNXciJ~LBCI-^`mJgAnH zdjc848$D(9*Q|rlIy4;Rz*zzsIE!`fgU%}Dp?zfak&3bR>DV0Liiiglv7Ejz+sgLz zm2WAV`78J9NDq{ohzC(lGdYEo_f=AhJp}{DJ#0n_(Mqf<&rZ^YrX;<3+s{LedzQR|I6!l`D&}Mx;>eLets%Mpcur2du z;05&9Tpb#Pa`-#}#n21{G@C^al*R3pVe@rl5l|V#gECmsARyCt&LH_cVRT=-4s8T1 zd4Ygpc?jVqNrT!mMs=m8(76q`Aj#u*7958qP(Rt&tYR3LD*`38zwJNz|GJQHL$4RvUtlT zcPTDZ)R%7(Sov^Syf@>XXcUJ9$>-h4bRNX?0t|aHNWP0XkCLabk4MPv;;MU@Fy726 zN642Hxc_n;-k$}Ilzpj=cpa?`I-*tDvuq3hW!SX<*AYZ%+g4_6xch!NlKe&k|OO+(%>geQtu#>#AlkM zC4o*-3Uue1&C>Ib4}aAxEdkyMub{CxPErEW0N8lwbF=gv%DerXq>_DR=`QG(`kExK zu}(dtnD5NebNkV3Z@QmEXY1X^$}5x?R5DhfJ>|a+aO*KJY|7yHh4U9A4EGNTziZNf zK|^qN35xE)qsNR588?1H=){P-r$yc~{TC^spq7=6mHm~gPQPTFaj+9(<;MrmXuSy5 z!&SV&{vgT~NF8DjE|p1k9OZf>BB~yZ{qTf}AsPNL5~|yC)?iXXdVk59=`A%v|BtaA3kj8f9YJmH0u$7jGE^a=n;=<`NqF3usuE9> z!a^s?;)4Y>P^a^@iE=m7aH=|Vov7OW#^m9(x;$&03%hwbw%_D2s~=8Xw0ilXwTmBG zvFx6E6yKk#284Bh|Llvz$q?=iqw4ThN-zNLSQWk?bnUtw=;QtZI_HS-CTm znd%~C|14IY^CN8E6uB>ZI!vxt*6~v;X|jB98TG`<^`a*NkrPqNwbzvOa9 zDG`{lOQWE_-KFY%ofycx;I|LbUi4jGRDElH2kv*EMe(q?0 zKelF;?8#!SvUp#)6-sTPRG~~{491dqXE1({4S?~1NHRXXF$g&YLvnwV2O|wZqF_iC zfN~%b5!s_)hPq3vvrV3*^vHJ*(kuEjOY^7mnXUK=y7Q%Q{`#tXe2{s22RQ6qD|WIwo%0Ow~ZPQ1bYhIJ@+u z@XE8WA3v8n(5(aRskxwBkjtKomJ`ew+gN?H96XXnO4@wqNX7gg+dKBfkf@FxZ%k^fd-#3UV6xJ?z9RxhHN1U7m$2 zm01lq+`d+h8xLQ0kY*j|AZ@AaAo=kQ(zdTVNGZQ`kh+(4kb)sUHqRuzf%4J49i%rx z%~ChWUi9iH-2kq#qJuOaHhx9j6t?nydH4v5H0y;sTTb)0eWWF9-~F=Zz!Jcd5adcE zZAy~t0r0Eb(Yg8T+Wm6ghVs`3y1nh@j}P;F^=?P$learcJ$K?eC2u)N9S(Pp@{ndA z760rkwN*MxnFpLD3zwv~k@o^F47%RndmxQJ<}CGH&Kg@95wHF>CcPvn&PAQ45ey!rCuUFjg^vP~Qm zBkI|Jc=;}K!G~-?yc~#TJsU4SYO3D0Kz;@naL+D~1KbE-&tRgnCwpd92$)TC~73%+ow|?$S2}pqsQ%UO$=~ z9)n&xPs~TTO||dxs@Ng7qn@^Fwz0n!%9E7ecfz37HrON;`nmxcj`PY*2;&XaErk@t z<}8xmQ^tM|swh*Y5A#isAGnJm`RFw|^%SkELHTYRncg;-BpvP9g$7yB>-?Jpxwm;B zZF<@H;`B0PI}T&73qzE@g9;zHGt+NYKjytu{!4jnKJj%ImXavnGccHX7DOS$zoCba zk8&hJ_}HDzYO_ydp^0+$h|vacr2*`+!$q0_aET$dLN(q`46xPX*>9?-lgdR`{#yc4%BQTgQ7xtz)wp9F?yD%{mH(lrm!#G^W2om|!Z)Sjv`p!#){n^F4-d+og}xX(Q8C-URohp+onQEo(xPx!FGINx@*fJ zEO~UpY({B=N1Wb7=DT0Pt( z*zf{RS~siIc?!JFD| zCr|&ON74j+6Y-!XcIGV%Zwc@Dw&vaUxbR;2=bhfOpwoso8u}dYL^OrOfQc66Ca+)CDvMI&t z1WD$H?k&3iB-pTkC$hA# zfY0UKN&tzfEa)mf^EuAKl^-UB<6~S4Bm?tIW4d9%6R+kIyKR)dzl8wTcK_ zkP{hupdK>f>ByJ~BaJGikzM;z77zS}{wJ!H@i|{zJz#C3H#`4{9@^T zga7)qd``^Q8EwM-SJ&@!-vFKF-U59Sc%mkDbDw-zIbdzMAw=!xYnVaajB-R_+aR|~ z%l6#D+U<%@|FKUhaKH-uMotumjP6iqn{d=k92YCGLRsGhHwgS}17% zmk|#tW1m+lp`56cKM=F`=MEwiSL8(h6G}%t6hCK#0-gw=9F#v+u4J4$sUp6yO73J< zj-6F5kf}$b3h0Ym1qScHA5ylO9}j68-EWE7L;j{;8=#pYIPTe~W1 zu@gp2*#U z^*@BKQ@s;(m`pmxFM|WQgeL3-< za`xp3xW`?<(4G!T!neWzq^@yO{A-oH_PO~m3fSi}_rTOe=zTT zN&Zfp9X>cpbwBb>_ifN=jgNueIapwvgIVv(>e=CTRn~qpjWNiZP>v}0%irz%g#6uC zaB`?bDUH#ij2!JMT$aFTIg$u2i3BgYw(`P+pghEN|~#t#tZLnA}2C>51XKS4}(4u zJW(WzX_H4O-g8w^8Ov!?FV5mZb>}rumkEZW8H&1ZD9H;7Qy+^vU_ z6yYk#020Y8$_1e$@e~&=l%@BGP+p6?GnDY@dMG6@5e1$oip9CvcPaglr;23mXYQIWc4Dtq)Bl2Dw>~{PjT(@?&?-G5~*MYj~UJ_<^m8ysbRk6yRh%$sX_q1OZ zi+NSFi1N>w0%Dx0?z8kLgQ2&8C$h|9gL~WYM%VrP-rn{X#f974`*fe#0JahjqMWwU zZY;XDT|8Qs!F{~!-cHI&iJdL{KM-@L|F}82|M>e|@fe1{B(M~3`(b5_N>ou5kM^<8 z6vwoEae5@Vu{fyA71hdFS%0*?jyLqzX2@^zh4*gAiHxl;jn}>V&%+54c%m{^HNY;; zY}^;9mU-4dyPNQSbRlGF-&a9jx=3J3S&6^mz1H8Z9?uUi7T!A|C;A`nOLXsE3Gfb{ z2;Kwi;&|@9REVm0PN2P;@O~l@GSzzx^ySM025lb(?>W3-m|cD0_WE++y#P6p(R*|FmX+?D@k|ng|gpDQO|EB>o?Lq1W)@#jzsH~ zcYz{S3IFRJxYNI1vhF_k1 z;d4tvL*T!eM~B#B#rkwzBm6H&xzm3obkrYoMUn#>)!>P$S^aqX%ZhuywL+B6GbY%7 z66>yH9b{_nS3sYVDljQ5c_MnhoaauopA<)kTMrBGk0B>A_I}=a-Fpp86o4lxU?r36 zs}=9fs;HI+h1oX<@8i;R?du-m@Rqy$3() zD&>MF%4LP&_8p4%233^Eqa*Bp3-8%a=-zYFafo7HK(=niUQgFKcjB;{tnpA4%C!-wl zlz`%0+8GESjm6Edi|=LheOgE61C>lXD48Wi0olxRqU>WutJY@f&>FxRhzB*W`g;M* z;VxGDd;z`nj1HAi&U{utGg*cW&_-Tlv-cFx$2RHECcx^52i37!8PMR}cDs{k|G_LB z8Huw0a{}rA92?+3`{Q|(LmPq2=XGp0aM7Cu7LON3!)h2$jn9WM5YS*2 zbRVGUEapDDc<|EuMID(3R0{DROzHc9tm3)%+tt@rmTb|XwSbiq55nFPgK_oW%1_1E z)$d*J&e5@fD0^)cSg)5tDA|8~)5@QiU8_$llt51!ue_4lC z1J+DDsF^jz*#lfdUvZVX;W-@-7Cg`H%_hvX*C=-~e#_OX#i1Mo98u6KZ0I~hlfk3s zVMLT^=DkhF<^q>WJSdf=%tthJJa4{TeVjO%>CigBs)+|xv#NMN6M0L#7WkieIy4mJ zxK{-ft7jpg1uT7`T|9Xl@tTe-2P&6%P%g_^L`c48k$tZS_0R1(v<&nuqNU`O{{SVppo2TslAi1TK9$yjX^ndhk%B%kVHW9d3>T~byR^4EdVTs zco5FlmjPPCN|&iia{Ze+vK6RG;z5q3UzEYaFxW9S>$w5@)(OwQcp_ac+*O|`Vp9#cl2t(D9i7PYB$8(BxWDQWo#Dj`i(HbB_c=Z~% zS30=#Lmg^CIq)L^4g81=UWX1&Wb!(7&vpA)hvonlM?47AHWgO!K1!;JysJbXrs)TqDu5{J|8P03gYvWY*sSfo*Ib@fBV#`kh6kC3p z+WX$6Ix-)qWa2^Ss7J9kIq&9MAGJ>x6FmJh9a{rjEAgOK*76vvMlzqr)lNORTSq3K z9Lfa}1C=V-lIbc04pXQg#Ld5&<0lhg#B-2gUS9}M_N#>B_4#!%qOW) zyzNQ5`p!nv7dkW?<>b8ridJO++Q@SWrwp7WG=s+jnP#ujXHcU zg8ZaXK#V~qLq|NFpoT%83Z5vHJ^i9xeD0+}72y*u)i2sR3->#I(A`^5ZX+Jl#;$IG z`(W;yV^@C!e6&iqzj5$R_bxx`?h~N*08ixcBlCO7E`9`jPnEUrqy&S!73GNH`~bJ} zUGa0t%i5`w(@%Po(TA{E5D&^?Pvs&?nZKWl{#33a_Ew816Oj`cJIViNJ<2AS2m((O z^fQ~Z&3?CXDx0p#s`&HUwE4O47u|g|^yS2Z%GnnT?ko9U3@1{`82Q!+_n#iV(|rMS z+8FsmUj&}0i0yvW&XkM%;3GoRzK>c}D9KZRi75Oa!0lunPEDVBP22pEkD{(RlPZB} zARg4f{@jizGkM2+%p~Q0bL+1DR0@G#0Blk`8aDNM|^f$Zy0s5nm4=lFdFBY(8qmE4i zE{}Ln9((CSgiy!7_|SeyKyUq{LnV}}{}s?`_QS`32J?#_W9w87`QM(=p`j@IHwmbJ z6Z8E95oGe|pWqgQGMVzu>ey`H(#{Di<xM%L%%(w5d-zCC%`n+DR9@tjm zL9Og!DZ;@k$Di463Fxv5Iy9l#RSLT(pkZu02egzgq)a*Ngk931g@6?i4=Q4B?Lj}g zT;T`z*t?3k4#CrH zU*c|?(s}Ft)3Le0`Ck)Q|7*z*0L3XexW?AfS;!@*3hc)w{H2~6 zq^Yu6{_J0N^@Zvs{ee@LLlyK@#Dl8XcPD9EAHdI_wErT`4QBZX|3CZQ>AwLw?c5+3 z`X=y1P3+n!``5}dGMfenQTua)FoV1f<%pb$K)3T=x%}*D`y*mpS_Y!38f6H|S%ZYB zEVi)`L)gG~HrmgtCoqFWklXwP#Mnt?&}l(7!9)dkq6+r&zxH*?&o!1ILgW(IS?b(V zlHAyhCVM}={)~Nz2xV~q0BR_C0JjkjYGaq1>@$=V9)`NwI47Vy6NsL$r9D^L#uuN} z&WRr!D#Go9oX8k%4P;ulg|JhnV(QpG=j`G!o}gi(S|%TN-tH?R^cW7A8euy0X~cul z*qUZ^Rvv$~89Tjlw)anv@V*W?k!bKX@*$aYP=?}4sG@^3OsazE{|tXZT9(!I16HJ+EudBHq}a_ zLF^IAZfI75Lv?rz3%_9>u2@Mmh;vx_4f`lXTw)L-#2Z?O5NrR{)@vf`aMOO52yvor z9RK3urhT}wGBOR~0+jDVSI#%Aj6_~=6NgmAL^bqU*U6tnJAM_9zvoV(t_wCh1}Uhx z$-1L7mS}cNQp9-%aRnqZLvtyVNSKt)AM zRKw~!I>hH{AG%wJ+OINygS;H&h?ZxDx*d>H`A?l3>%=PibsDOwtIP}KBzi3bl*AUf zI_QFDldEHqIJmrdj|g%Gaw21p?&uFK$SRnyQ2&4|)0v-}Lwx=?QI%Emb#4yz9?cwj zu|#!W27LwbpbECv9qxQ1D-=~8($QW-ebXvS^FjNnosGgm%I37{1(u1RgD44JA<=7%l zyPuf_nc7=>p!cWM0rJ0(`FJ|4N{oq+Y3nT;iuJQwx?scF!;j#y1^QN zy<&txuNdah$1w!|NMS-Bhp#xfv&`198Nj6z52Bn-?)I^%eH`M~?l8W+uR}ezDwv~J zYXCGjR#XdS0X`VvLO#>Sp`K}siqoNafaMVn%41vlIRZN8%*EtKOO6=#(dPb+fh^n8 zj?d!ucXU=(b|b23+d?*byuag2UmCn}RM*}ENuJ+XItEj9s;Mvi9HUvSuj3)bK+!zi zKqim%b953LOFn9)vlRmzHsxiFJjMq&Ms=bk-x%MSRcGVX<=LB~x^2KKSLD#LK;JUL zP^M*b$}n5%l3kQ-PFY zFg9a^Lwr#B2UXO5r_VOXJyv3;ulQxC+pey~y#Gjt`eUv41A352fD{l9Dq!12A;>8H z)hNd#F(>w|5<#v*PGlSuzhpf~XXpdL6X7|9v7;S#DSKC%Dl6xYjdt`DBXr+`y88;~ zONj@SviHZpeKG%Kj6;3Z#&xxD|K>w?y3d488zC>~v%wQ(vuz=cEy_7(w-h02-$!*S zl;kon5g8|jy8Y%-!{?53%n(7!Yfx1k$U;CWi3e4(FUKRuXntzE!&?mG;k6>j9OOjC zJ_=l?2N?u?FnFS1HZjy8o_EVoMTP9)P>1;4d0MLOyd3I0;z4=rg^7+KE)D+-b-U!` zv!3sr=oo2IUNSuJusG9jM{Zd!(3G#id$NyN#7m*WCpjMLPJ2`g6cP1jhq^s;bVv%@ zJ;|{}+3Z>%*1jtf%I1VQcu(5A3LX)=pf?tpq->A-1Qmm5ln@kwY3_k$S*ZPu*4*HurSw z5Z1g?c4eQQiWO&_>3+JcT6X$W>;Vtz)?id8Q+RH^nSFUW7FP!q)smaZ880xgbEjkP zR$k$c9w=UPHhyLz{Qr1`Kb6@HQhfDc5HJ9a|$g-4W%OKsNPEthe%MnF6SbZ*;_e8vGGKJln4VjUN1(@|?6^J|J7s9aUV1EhUf%`4C%4F@m?X@pu~ zWN)@+lsuGeZHgV-i#EC{LxmVr7|RYe#Re#?Blbso{C=!M4I1tlqa!c z@T&|&xIvYRau{k(MskdQaP>pW)~+5sR^*HD;i;5|Q*VD$Axi;GK|1BJV(7J-UZIelGUc+0<+I!bZ*E-pb`eJ#3ePC!(Be zPe=Oyunp7iosT`!kM`Vy!!3&01mrDh*&TTs`?xuFhSEVpgLIVz z5zRyO`A9@1;NwwVpz`IwE<{;d9An0@(KV5M`rcj@c?M(7qb<@Rw(fH5C}r4dNyW}z zj`d{wFUR^TVfg@}`A$Q5F}r>_)>}~}7*xe5FJZ&4sKb>5me52E$d|H3S7HY#wJHoM zpD`AE1Au9&HmEdT@lY*eKV4C$MhI9HYBv;wuXJu_^aMOqDX3euY1to2Llz>aHCe!#q~HFjXv$5C8| zD~NRDPxNNdUs>08c@pIu$efWju#a0~S9QpMXe0CeFP1q!g(BM!BztYZCpOnn*V8ci zz)jFav9-23EYj0JW%iaLPW+4GOU2lO_}6O)HX?CGW8vl$*dM4OO8X94e{P3wrj}Ry6!t*Anz{?~p$aj(+t}#o0;}d5Y zzv2fEn13HGr^Vqjl?(Afr@8np)GU*9559X9kFQFuWM5v3^9FKh4rhGfdI|wCssj%u;8VO6hBoDsGvid7oqN{m?A^ zRF3~TfG=VGmSK`!7~>=juQp4|ahpX(IMdnW>zG>`#v(G@Jn@FB{eYiA3tnYwuE+M= zuw#>x^jei!TJ)ev`VB#MAA;{?q7kp5pKhTc`9ZK$g+o$bC+Q%puB$dlU!m{r!A+X` zXPc$|Xn6X1lN2)7EUf@P3A&)+W@%x9N$Sa>FcLKp?ySG)vA1Vj2wm<$;?% zt4&hjMYA*q0lohfrr2j@De;m?8tG=1#>_EGk(1#VUn9%8&q>;c?tAoCv$XV8lhi%f zB>g=MqdMG4x`fGacP-Ad7oqR2!eAEC6tv3gBeY_fS?cvKz7jgrN%{t@d)4eD{gY~v z5|?2Z(f@@QmjnAGY3W;-Y3S6BXvAAD!|(`<+hLTU3wq5Y{d&kGjX;OnFl}}qnAhQB zGXh$=)GQ^V7qT~CREiN<6sBPd40z6SlHxH5PJe2a?C6CgbpIphk)D2-zD`b35~h0Q z6qED|l6#U#T8EbB!^Y?rP11$e%#s;%?By(z6o-lN1m^6$51FLSm}Gk(e`tzXnt!iJ zVz6QFbzI7u5$pgY!g!t}uUS&3*jV)jK$Hc4mEeUGEtE}=r*A7-fui(u3)v$T1! zSsI9&b)APHO*Km&BiKf?J`b(!1A`!Ga_huD)hV>@r~o`JiP%q&%4=!c=FzD1{OzK##WPH>U}F@eK=#8*o&P5km?LKCO>|lwHjO8M>jM6i%}L_um_KMF*P5j@nB+UEOi~zdQQ`PNt)G+h zA3FEs5R=pabMfsT&C;wk^9Jc(4Bu~Pr1fr-lnR5XxINkpBhVw>Bwg7fN#8$)RfmZ` z2*cSO9rX?t%3*Xw4=j!~Gtu){9OvQqO?1%bp-xgOMj*Bl9fgK$xEr6EL#Jk8?tXxJ zQ&Y`SDyB!@WV5sy({0EuteS7I*@R$T+{L!u!qxW=u#tqhdTFm&%Ei}pA4Nw#hdQ$l zo23Tq3Qumw;(?DMG&BacXum|qy@!UzARdoiX6ftSu-eht_kceZZI&irjhNA{Aavp| z#F2>^bQ$e%fqw2dlk|SBNs2}XRij>UEv|kSp{F06W|o%0;fRX}_85YWL+_y>+cDys zy1?)#ll0_RH0TQ)RM7htI4Si(C!$e3F%45Na~Af29rXU-JhQYb)=4@aj$Hwr+ZUT> z7o;7S@=s%WKY`%>A6<6>Z&TU+4Sbz*B9b}dG0QweqReE-7$w@%Onycm1yG9`-)@tBJW34(Q~6 zMY1IYosj=b{C1z;3a$!nuhZzx&;6>NYl}%=&rNAr>MyWM0h>?KBn1sHKv7y<+>;pe ze-wL^NeE`R@B6-j@a@E4BdB$6ofO>M71M*@F7fs>$j1672A@$RFW!7AH$2_pkzTgg zir>;1{8aD6piWpbAy%}*=XF0}w9QG$F_XO%)mK12ttZ32^2Rt+I$*bRS=^^IT}3^iE>1_C-$S z?EC%xVVUiT!TQ08=1O%FW7%_LyFfBpjej3s(&V!4vV^@8W67mUGw3%iO++H4#O^a- zw}wRf8NEhFbSpV!IcN%UIb4+(%UNqFm~VcHfqzFnQs*B=oI6vl;O&2)s(rPD;B#%( z&~D}Qgdih!9SvPSLQCenVPaCONX;t@_dQ6Swmb1CeyPY0Tc1h@7IZTv178)#uXE;c za=b%}n?@!EtL3o4KR{&IB`KCYB`ctjk3+c zgrMX3grLi}iNQB4P@7SE^WSs(6%;VC@1r0nv??+9{5C%(Nu2QvSyf=9p~}x9c_qjE zMTHfU5`uU2Ij3VnN-$lBHWMiq@#vDrJ+y#n_>zNq*01-<|Ci#(W)eS_v z#%{y!FPIcmmQOeBPYgQahyri=ApkcH^!`Wj|3>)a4YBOy5|lIx4*0?DvYuhDdior zJzqZ|7)$GPOqU7q{LGtKS!DuO+|Rrp2+f^Ly9BE8!t**p{)WYyUF9xdJk&TL*e*N0 z3j4#tk!fPd8Q-MWHnmj?Mrj@{PZP^twU*Ym6-x@zZDLC!Ccwven0TRILhv5E)E^^* zbNDJfZN7yA^%m2`*WpiTV!85%QeAe;{U`>#Et6^_uOtnY3w5(TESxr$z4;M$G()=g z$X@F~>84}6Q9dzVxntrmcC2+&mdg`@F+&oA5!?}nfj=bK0lR`=^w5M%L3mD;*H%OkU{zT7 z##nO7nWqzjRvj^?KyTWbnxinW0PcrHUn0*{KpA8F7CW)B=dq6`1b-hPtH3;AjO^d5 zx40~eL_3%jKc`27D~UnF(ab>R*_`p=(Zt|Z_1NnPNx@eD{uW1_cWqMr#BlwMvHXoE zQ2OJNScc-87x+zE%H*vjZ-7|eYJP}X9hQ74F*sQjtMr!?RTnMU_hh@IV39!{cK>O9 zSrQgb7t3Bb&wjr`j{+xZT3yqEUZ2%vw!#3w?&-krB?Ohkbzg#KkG=^(yRdh!^P=hxf*MTtE zY?2VXO88Mod9wGvqJv_*Q%>7Y!oSkRiYBCl`P0Wrq)aHA#9(Y(LHcBZ&6ukH!i1nU z8RrR=vI~XIUDR!w5ZncJFAJH`8)ZXeIvp(Yi0^4&cHxi`6&b!z*)Qx9{*p9sdJn$e{Ck6c( z=o?kpUm|KI;8n-y>%+g($8x3o_#4tkK1EsOGa>!j>cpThJLf~z_q*0%rdmUnLt!yr zMup;+iNOw8ul~-2pap&Z(WZoU65%}N%gEk6+`5|%+dYa6PYfoYz3gE8uo&(u4!&I|1tZu>kTFE;RMpoM4BD7T zD{;dX{(J)1T8$9q_m@h+M z>~2b1pSE6GXzPa zFyqbOIWVkvGkTZ-E<>ny7%>iPnGkG2Nq?Y$lTh#@8d~E0Uj-9_K}7uolAbrQ-8Vq! z1N~8|Uh;XBsqU9kew8d|xTg^+XzTt{Mr$CxCUN;xCaFQApTWBrbLXe&6aCfcA^S9M zt7^)c6chr#9A5tc-_68DnQ`!SV^YwX`@i7oA+D!oo@)5;Jp1OXsm#7leXC-uXcqO% z?}oo4>bRrFq3IEGkh{5{@)~~`!HS?kG~#~ zz_=|x1FYBdo`%?j`{wfhFMSe%#nYup+*DE9JsdFAy)VMh9rRz%<;57X_DkgF_Lkaw zcCR>j1&=dkFE+`G!z*%knbTIUwQIjgjsMpolNyghiP+IG5LkX`8DfM?gn01Kht3^%YGDMzcpF{hp@x z(=gT^klzfFg2y7yu3_!n0Q)pr?FR})y#7V>)X?eP6|#w_-sHw+<<!D;(6@HL8 zmMi{iR8GhoiP&v08Ml{~3l0RqaE9wB%MSMZp(tO`T&7baW@O+G33Ie_Qc#Bx{{W&< z47da<=b-C|xz>RgZA@4(ORVU9^IUqRryA+=gkT7ntBk_Q1px6KfN6&y6+(NJqa~TB zwAg*g@F$qD1Yb<1$Q~8<$EW!7j-;T=+vW=4b6H|#8nkLFBXPkEu)ly(32=8KO#-ez z-`5(7=gu(yq+y>!3(MK&$peW&Uy9deqfxs|^urukVK5r*YDie*OlY*k`#!R_Bh z@DzHJEvXfGDk)gvL{TSEk+9P|pqA+cPS{VXE#b(lvE=lRLVKfD{2MNg-p*o{Hgv5K zevnm+e98phn%b0FsTdW%54A@g2D#MKU7A(or@!vzBNkky;fz_YA)LG*na7~PUa-?i zJ}VJ5CDzPrd_Te;1A=`{n}L)`4DK%{NYfw^SUah+TmDg<>pTxP_pD%QaEk#9{;(hq za6$*M^1K9DMM7L(Ix%=mUVTa5r+t1w9_!RpMG|Zjn4J2zWOQX+5X={dXT?jgdeF)f z`Dk(BRp_l^{_-0Vr|nvuycK559!t(y=xGU_5i;$ym_Vjo1HtgIuvYe1&NQ96Nn~L> zd#qC3Xfx-CwcTjFcdO@f9?`$(Ia=?X=n;&(?Z}Bz-=^)d>rlS2Z!Y$?&+ERmWVdq$ z_8K>@-I+bsE6szOUveSq$v!=YO#eK4saX{sn~`BOjGu*4EU4aDkDY_UP&LLeGmlo(X5dU>bk?C|!(lClHE?ME z6}=T(tkDvWr5?*X+#4`mz;CI~*Iqjfku`5DU&67lyr;wouZGR?#{2?l_(QXe!=*WY{^Nv8cx--bQ})d-xRgML@2r!Oq3xC?B^g8+% zJx9$}T2?={cI<{&frO;Zmv0H5eLq$=;qCC)`>~S^qI(~`eC^)+o|pam`oN`If*1dN zz1i!xypH}w&(G=ed5;%7-tkx)-n=PxTmHAbjQ&Np{dbdfuD=^KDOx1jIl8`k6pi%X z&EC^&ea^6pje?S0yFA>zF<&(8*8ksMdXMBBapjr}%RFz;`h9yD2b&bg`GP-RkZ_@jg91W`p44zd-=tevIlifrCu)3aBD1W z>gDj*$FUppTuHsU=9T$zr)pFGWeIcn+xAoDe-g`)^6HdGp6R=$w@d%;r%CJcIPaHw zd4|i^j)4V1=SImv-6N@&*IwwQZaLh9vAPxfek^S_ttRwxkEoiR1)d-jEw zI{4}7)PK9y74}Ws)XTe@-`y$G^}h(UY`yCn!eyVta;EG{{djDNja{?+dsm~IN(FU) zj4r2nH1%@banrm>|6gXE7hU*YX1z2y`eJnIqX)&H7OeZD6Xji!g4KV`L*)1%>TeY{B9Yk-mO3TL4~ z>g77;yZ*hgpcQQ!Z|n16EaGpUzX z|L_E3{%hr=S^W6c{H?K^xp$;~`oWPFoihKcXv?}ha4IbC)08XGr)gq8KhC6eXFuW1 zf7@+XoIW^U5#rT{U{u`Eta#{ zk<^d(faP@)=AO+R7g8_(Hypp41Tr1!(Udpds;?%o!wl@cA- z?~=}mIsYOfesv~oYEH`c|M){cQ?x6HE(&=R@F?sN{h^=edJ(USdPHC6ivEyLbnRB} zi*f(OCk?$N!@1h2qXgHVgE}aG=Jwd?GzlMvwRgp;rhgzyj-a@kN~|5fE7mHZT$G4z z$eiOpXDR>8njB6P^V+F(6`(l$*$35c6wx4#WzlKb9j$;C#C!`u`d4-2<`5Qim$( z!|Ox+nDg3Dbv3@*BO0on=lUKE{%a^VCx=JBjP*`EW01vNW5SkS#VY4myNa>TXGn$f zjNCbbhHkv)e@0#V+2PoY33vD_DUmZG12@X`KcnB8_uA-<+|<}38oi0Z@UnQO;f@)i6q{fguW+G*PUe~*^+nttbW zetn>Rw_Y2lgVr5AqJcVj?(EU!KLhnjNHyVGy1j0~3Qo6n)u`LGAvS#%D-dQr9c!No zm??U_K0;YXV57?PA&t9xL?iTwo;`Y9v*7icZx5@ViIq(qsv%R(M^Pi#W zhhLwKHMqS}1d>#U7~}eQx0Jj#USD_gi^eftf6oIv2L5Nf*{P%4q37$P{OG1`{IEwfz$2cAdYEEI7^KkDu)+_q8&kob&kbY3IzRZc{oULo6xTUu2q{Hl8anoWAy@wDH^1rN8yw9KksKjgN#W8Qz>Z zep{*>yPE%x96Pj$4EvaNk9$ONOz=F>V^SnXljy!&;kL~2ys6qg;D+nkj%$%4n5?1i z;zk2x${Noe-kBxdIdzopG`y~Dzn0fVnX2(Lk7$(Xo@aPGacvYg4=ohAVYN=90silq zPPja5mo0v0!7rEZH^IsB$jUsU&W+9RN182%ij`@fA!AVYkLZIU;hJpm!nx$CbPfy3fSG6-O*`FEj_N2;uEUlT%4zdz7;6^J$4_nR*yXS}(O(}lTMv&#ZVpa}bX=jbb$Hisy zW#+H>7hK!jh)&o{ET0rKHGdsu1w2}bnPi^(mu;v17M)+Sx-~-Ai!3v=H22*jkv>)D z+UCI97X0(Hv@fS!ed1KOY8A|a$9?WSdC3g^zC($rhiXzRX++D%qdS^$Z?`FE$u`=} zNj7uOZ<0OSl3HGZJ!!I?-%{Db1TW(KGww?oYFXVZe!ErR;#T_76t;giBrzCi!)T02 zcz)X^2Pv0U`;r7XX$|y6eJ@M4t}x2-;6wS%$}c1aUz_GfyM_aFu+xBptp4oXZvn+} zz}*DRV4$Z-zE-y{p1!mdiANc$Pxw>Lcyc`2VokO%k^8Ge zXGSdWdS7v(RT2wBJsLTQWOZl1rPt`lO-Apd)s2JPQIrOs3behZm6T+;y+s1`V(!If^))p{OhXulM`4cER!77-ytKGKW1Oc?tL<~ z&%DAfQ9C}0POqi29ON)bN>JM3eJ6U1w0%604Tf`Gv~Zkua}Xr6-HR5|9@b&Bw^il~ zP&McrIt)!=izA7_R~e$sDC>L_hz@ncbbbLqUMBcj(U!@wV01pI*f^UbY#tq0i`HcK z*%f|#o=&2jqBpIQ<@nonuvM=2AZrNJEwhq!JK|JybKzZPAG8;z+U^Y-UnSK8{m>5)Ix9Sy> z{L+Q>*BFEL44=pgBtt9{AJuPd=BQ_htOzVd8&daK7@S_r0{U?FzA6aeG}`cd+A8K$ zV}33$Gm&X=1VbU2P7YWiON6@LOV^ zU}beXIvp&Brm=)fu}PLh(?e%;)~ot^j!Lojy05Msnb@Pt+V$gY-5pTi3C zT^md31`88{v;_NzBKr-}-+(iB^8fu7*~2H2;{_YEV$U_=DcbcOMc%I#3V-xD4@33k z{y9X5&WuF6rBr}HW6xDnXof6E&Me(o?LjE_22TCp_;C0g63jSUEbAx zq9ygaE`oemE+4j-Bn+2!v}i9(zD7#Xw(nn1TSUm5;PnoW@GvjD;{6?;B6-60=b#)H zSc-BDSU)=F@LoAvegNCi@@|oK7B+oW1qic1{gv%+tMNmS@j|S@T27 zl`FQ891OTcS7RXTH;$_X^On>~Sj;-vjZ{frY`mS^761VuwzZ6M|f`9q-ryne3FP-8Qzm$WCvNrL_e7 zp5QJZsuECL_8Y9>XLP`d$Gb`tmr>sj%u-Q4|FSOg)N-n*U{c!PfY5y9}uFZ z-+^s8<4qBJJJ4bodX+?hj|=6&fc1`XMv~)=ugMzLEfmk*yl=XsAO~WZZ@9aw*@S|{ zin{;X&^zHXv)7O7`V}JA$9$PFUcM2wm}Q&ɝh9o64pmY2fix~v%!x^J@Z0DKc2 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 Ygv~iB8mBPvV5b>5A;<;yBxp_fA0@~B?*IS* diff --git a/dist/monero_wallet_keys.wasm b/dist/monero_wallet_keys.wasm index d1d1b096e1b8ab68b446a964ade0b5bcb730707e..b177ecf49210eaa880ec3dd2215921e0f1fbf4ac 100755 GIT binary patch delta 286337 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�#MlD+Ium8$^C+aVvl;=ggo050Z3%5!x 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¥^Q~!jf}+c@(ux#3bi? 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�!`3t8sEeyOihDpM_BR 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 delta 284846 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

-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%0A)dalxAd4aoA?fvA5C45?h^u_>sFb$OQ3n+}< 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 QgWVrwK%Sf=06)L~1sOpvIRF3v diff --git a/dist/monero_web_worker.js b/dist/monero_web_worker.js index ab414575c..845e1ce9d 100644 --- a/dist/monero_web_worker.js +++ b/dist/monero_web_worker.js @@ -1,3 +1,3 @@ /*! For license information please see monero_web_worker.js.LICENSE.txt */ -(()=>{var e={65096:(e,t,r)=>{"use strict";var i=r(47153),n=r(83610),a=r(47531),o=r(74022),s=r(35035),u=r(1516),c=r(71743),l=r(3978),h=r(42889);e.exports=v,v.prototype.validate=function(e,t){var r;if("string"==typeof e){if(!(r=this.getSchema(e)))throw new Error('no schema with key or ref "'+e+'"')}else{var i=this._addSchema(e);r=i.validate||this._compile(i)}var n=r(t);return!0!==r.$async&&(this.errors=r.errors),n},v.prototype.compile=function(e,t){var r=this._addSchema(e,void 0,t);return r.validate||this._compile(r)},v.prototype.addSchema=function(e,t,r,i){if(Array.isArray(e)){for(var a=0;a{"use strict";var t=e.exports=function(){this._cache={}};t.prototype.put=function(e,t){this._cache[e]=t},t.prototype.get=function(e){return this._cache[e]},t.prototype.del=function(e){delete this._cache[e]},t.prototype.clear=function(){this._cache={}}},42931:(e,t,r)=>{"use strict";var i=r(87802).MissingRef;e.exports=function e(t,r,n){var a=this;if("function"!=typeof this._opts.loadSchema)throw new Error("options.loadSchema should be a function");"function"==typeof r&&(n=r,r=void 0);var o=s(t).then((function(){var e=a._addSchema(t,void 0,r);return e.validate||u(e)}));return n&&o.then((function(e){n(null,e)}),n),o;function s(t){var r=t.$schema;return r&&!a.getSchema(r)?e.call(a,{$ref:r},!0):Promise.resolve()}function u(e){try{return a._compile(e)}catch(t){if(t instanceof i)return function(t){var i=t.missingSchema;if(c(i))throw new Error("Schema "+i+" is loaded but "+t.missingRef+" cannot be resolved");var n=a._loadingSchemas[i];return n||(n=a._loadingSchemas[i]=a._opts.loadSchema(i)).then(o,o),n.then((function(e){if(!c(i))return s(e).then((function(){c(i)||a.addSchema(e,i,void 0,r)}))})).then((function(){return u(e)}));function o(){delete a._loadingSchemas[i]}function c(e){return a._refs[e]||a._schemas[e]}}(t);throw t}}}},87802:(e,t,r)=>{"use strict";var i=r(83610);function n(e,t,r){this.message=r||n.message(e,t),this.missingRef=i.url(e,t),this.missingSchema=i.normalizeId(i.fullPath(this.missingRef))}function a(e){return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}e.exports={Validation:a((function(e){this.message="validation failed",this.errors=e,this.ajv=this.validation=!0})),MissingRef:a(n)},n.message=function(e,t){return"can't resolve reference "+t+" from id "+e}},1516:(e,t,r)=>{"use strict";var i=r(42889),n=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,a=[0,31,28,31,30,31,30,31,31,30,31,30,31],o=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,s=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,u=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,c=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,l=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,h=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,p=/^(?:\/(?:[^~/]|~0|~1)*)*$/,d=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,f=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;function m(e){return e="full"==e?"full":"fast",i.copy(m[e])}function g(e){var t=e.match(n);if(!t)return!1;var r=+t[1],i=+t[2],o=+t[3];return i>=1&&i<=12&&o>=1&&o<=(2==i&&function(e){return e%4==0&&(e%100!=0||e%400==0)}(r)?29:a[i])}function v(e,t){var r=e.match(o);if(!r)return!1;var i=r[1],n=r[2],a=r[3],s=r[5];return(i<=23&&n<=59&&a<=59||23==i&&59==n&&60==a)&&(!t||s)}e.exports=m,m.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":c,url:l,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:s,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:h,"json-pointer":p,"json-pointer-uri-fragment":d,"relative-json-pointer":f},m.full={date:g,time:v,"date-time":function(e){var t=e.split(y);return 2==t.length&&g(t[0])&&v(t[1],!0)},uri:function(e){return _.test(e)&&u.test(e)},"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":c,url:l,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:s,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:h,"json-pointer":p,"json-pointer-uri-fragment":d,"relative-json-pointer":f};var y=/t|\s/i,_=/\/|:/,b=/[^\\]\\Z/;function w(e){if(b.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}},47153:(e,t,r)=>{"use strict";var i=r(83610),n=r(42889),a=r(87802),o=r(35035),s=r(19508),u=n.ucs2length,c=r(64063),l=a.Validation;function h(e,t,r){var i=d.call(this,e,t,r);return i>=0?{index:i,compiling:!0}:(i=this._compilations.length,this._compilations[i]={schema:e,root:t,baseId:r},{index:i,compiling:!1})}function p(e,t,r){var i=d.call(this,e,t,r);i>=0&&this._compilations.splice(i,1)}function d(e,t,r){for(var i=0;i{"use strict";var i=r(60540),n=r(64063),a=r(42889),o=r(74022),s=r(49461);function u(e,t,r){var i=this._refs[r];if("string"==typeof i){if(!this._refs[i])return u.call(this,e,t,i);i=this._refs[i]}if((i=i||this._schemas[r])instanceof o)return f(i.schema,this._opts.inlineRefs)?i.schema:i.validate||this._compile(i);var n,a,s,l=c.call(this,t,r);return l&&(n=l.schema,t=l.root,s=l.baseId),n instanceof o?a=n.validate||e.call(this,n.schema,t,void 0,s):void 0!==n&&(a=f(n,this._opts.inlineRefs)?n:e.call(this,n,t,void 0,s)),a}function c(e,t){var r=i.parse(t),n=y(r),a=v(this._getId(e.schema));if(0===Object.keys(e.schema).length||n!==a){var s=b(n),u=this._refs[s];if("string"==typeof u)return l.call(this,e,u,r);if(u instanceof o)u.validate||this._compile(u),e=u;else{if(!((u=this._schemas[s])instanceof o))return;if(u.validate||this._compile(u),s==b(t))return{schema:u,root:e,baseId:a};e=u}if(!e.schema)return;a=v(this._getId(e.schema))}return p.call(this,r,a,e.schema,e)}function l(e,t,r){var i=c.call(this,e,t);if(i){var n=i.schema,a=i.baseId;e=i.root;var o=this._getId(n);return o&&(a=w(a,o)),p.call(this,r,a,n,e)}}e.exports=u,u.normalizeId=b,u.fullPath=v,u.url=w,u.ids=function(e){var t=b(this._getId(e)),r={"":t},o={"":v(t,!1)},u={},c=this;return s(e,{allKeys:!0},(function(e,t,s,l,h,p,d){if(""!==t){var f=c._getId(e),m=r[l],g=o[l]+"/"+h;if(void 0!==d&&(g+="/"+("number"==typeof d?d:a.escapeFragment(d))),"string"==typeof f){f=m=b(m?i.resolve(m,f):f);var v=c._refs[f];if("string"==typeof v&&(v=c._refs[v]),v&&v.schema){if(!n(e,v.schema))throw new Error('id "'+f+'" resolves to more than one schema')}else if(f!=b(g))if("#"==f[0]){if(u[f]&&!n(e,u[f]))throw new Error('id "'+f+'" resolves to more than one schema');u[f]=e}else c._refs[f]=g}r[t]=m,o[t]=g}})),u},u.inlineRef=f,u.schema=c;var h=a.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function p(e,t,r,i){if(e.fragment=e.fragment||"","/"==e.fragment.slice(0,1)){for(var n=e.fragment.split("/"),o=1;o{"use strict";var i=r(66674),n=r(42889).toHash;e.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],t=["type","$comment"];return e.all=n(t),e.types=n(["number","integer","string","array","object","boolean","null"]),e.forEach((function(r){r.rules=r.rules.map((function(r){var n;if("object"==typeof r){var a=Object.keys(r)[0];n=r[a],r=a,n.forEach((function(r){t.push(r),e.all[r]=!0}))}return t.push(r),e.all[r]={keyword:r,code:i[r],implements:n}})),e.all.$comment={keyword:"$comment",code:i.$comment},r.type&&(e.types[r.type]=r)})),e.keywords=n(t.concat(["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"])),e.custom={},e}},74022:(e,t,r)=>{"use strict";var i=r(42889);e.exports=function(e){i.copy(e,this)}},4442:e=>{"use strict";e.exports=function(e){for(var t,r=0,i=e.length,n=0;n=55296&&t<=56319&&n{"use strict";function i(e,t,r,i){var n=i?" !== ":" === ",a=i?" || ":" && ",o=i?"!":"",s=i?"":"!";switch(e){case"null":return t+n+"null";case"array":return o+"Array.isArray("+t+")";case"object":return"("+o+t+a+"typeof "+t+n+'"object"'+a+s+"Array.isArray("+t+"))";case"integer":return"(typeof "+t+n+'"number"'+a+s+"("+t+" % 1)"+a+t+n+t+(r?a+o+"isFinite("+t+")":"")+")";case"number":return"(typeof "+t+n+'"'+e+'"'+(r?a+o+"isFinite("+t+")":"")+")";default:return"typeof "+t+n+'"'+e+'"'}}e.exports={copy:function(e,t){for(var r in t=t||{},e)t[r]=e[r];return t},checkDataType:i,checkDataTypes:function(e,t,r){if(1===e.length)return i(e[0],t,r,!0);var n="",o=a(e);for(var s in o.array&&o.object&&(n=o.null?"(":"(!"+t+" || ",n+="typeof "+t+' !== "object")',delete o.null,delete o.array,delete o.object),o.number&&delete o.integer,o)n+=(n?" && ":"")+i(s,t,r,!0);return n},coerceToTypes:function(e,t){if(Array.isArray(t)){for(var r=[],i=0;i=t)throw new Error("Cannot access property/index "+i+" levels up, current level is "+t);return r[t-i]}if(i>t)throw new Error("Cannot access data "+i+" levels up, current level is "+t);if(a="data"+(t-i||""),!n)return a}for(var s=a,c=n.split("/"),l=0;l{"use strict";var t=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];e.exports=function(e,r){for(var i=0;i{"use strict";var i=r(6680);e.exports={$id:"https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:i.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:i.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}},18210:e=>{"use strict";e.exports=function(e,t,r){var i,n=" ",a=e.level,o=e.dataLevel,s=e.schema[t],u=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,h="data"+(o||""),p=e.opts.$data&&s&&s.$data;p?(n+=" var schema"+a+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",i="schema"+a):i=s;var d="maximum"==t,f=d?"exclusiveMaximum":"exclusiveMinimum",m=e.schema[f],g=e.opts.$data&&m&&m.$data,v=d?"<":">",y=d?">":"<",_=void 0;if(!p&&"number"!=typeof s&&void 0!==s)throw new Error(t+" must be number");if(!g&&void 0!==m&&"number"!=typeof m&&"boolean"!=typeof m)throw new Error(f+" must be number or boolean");if(g){var b,w=e.util.getData(m.$data,o,e.dataPathArr),E="exclusive"+a,k="exclType"+a,S="exclIsNumber"+a,x="' + "+(N="op"+a)+" + '";n+=" var schemaExcl"+a+" = "+w+"; ",n+=" var "+E+"; var "+k+" = typeof "+(w="schemaExcl"+a)+"; if ("+k+" != 'boolean' && "+k+" != 'undefined' && "+k+" != 'number') { ",_=f,(b=b||[]).push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(_||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: {} ",!1!==e.opts.messages&&(n+=" , message: '"+f+" should be boolean' "),e.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var j=n;n=b.pop(),!e.compositeRule&&l?e.async?n+=" throw new ValidationError(["+j+"]); ":n+=" validate.errors = ["+j+"]; return false; ":n+=" var err = "+j+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else if ( ",p&&(n+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),n+=" "+k+" == 'number' ? ( ("+E+" = "+i+" === undefined || "+w+" "+v+"= "+i+") ? "+h+" "+y+"= "+w+" : "+h+" "+y+" "+i+" ) : ( ("+E+" = "+w+" === true) ? "+h+" "+y+"= "+i+" : "+h+" "+y+" "+i+" ) || "+h+" !== "+h+") { var op"+a+" = "+E+" ? '"+v+"' : '"+v+"='; ",void 0===s&&(_=f,c=e.errSchemaPath+"/"+f,i=w,p=g)}else if(x=v,(S="number"==typeof m)&&p){var N="'"+x+"'";n+=" if ( ",p&&(n+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),n+=" ( "+i+" === undefined || "+m+" "+v+"= "+i+" ? "+h+" "+y+"= "+m+" : "+h+" "+y+" "+i+" ) || "+h+" !== "+h+") { "}else S&&void 0===s?(E=!0,_=f,c=e.errSchemaPath+"/"+f,i=m,y+="="):(S&&(i=Math[d?"min":"max"](m,s)),m===(!S||i)?(E=!0,_=f,c=e.errSchemaPath+"/"+f,y+="="):(E=!1,x+="=")),N="'"+x+"'",n+=" if ( ",p&&(n+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),n+=" "+h+" "+y+" "+i+" || "+h+" !== "+h+") { ";return _=_||t,(b=b||[]).push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(_||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { comparison: "+N+", limit: "+i+", exclusive: "+E+" } ",!1!==e.opts.messages&&(n+=" , message: 'should be "+x+" ",n+=p?"' + "+i:i+"'"),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+u:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",j=n,n=b.pop(),!e.compositeRule&&l?e.async?n+=" throw new ValidationError(["+j+"]); ":n+=" validate.errors = ["+j+"]; return false; ":n+=" var err = "+j+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",l&&(n+=" else { "),n}},33038:e=>{"use strict";e.exports=function(e,t,r){var i,n=" ",a=e.level,o=e.dataLevel,s=e.schema[t],u=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,h="data"+(o||""),p=e.opts.$data&&s&&s.$data;if(p?(n+=" var schema"+a+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",i="schema"+a):i=s,!p&&"number"!=typeof s)throw new Error(t+" must be number");n+="if ( ",p&&(n+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),n+=" "+h+".length "+("maxItems"==t?">":"<")+" "+i+") { ";var d=t,f=f||[];f.push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(d||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+i+" } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT have ",n+="maxItems"==t?"more":"fewer",n+=" than ",n+=p?"' + "+i+" + '":""+s,n+=" items' "),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+u:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=f.pop(),!e.compositeRule&&l?e.async?n+=" throw new ValidationError(["+m+"]); ":n+=" validate.errors = ["+m+"]; return false; ":n+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",l&&(n+=" else { "),n}},80425:e=>{"use strict";e.exports=function(e,t,r){var i,n=" ",a=e.level,o=e.dataLevel,s=e.schema[t],u=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,h="data"+(o||""),p=e.opts.$data&&s&&s.$data;if(p?(n+=" var schema"+a+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",i="schema"+a):i=s,!p&&"number"!=typeof s)throw new Error(t+" must be number");var d="maxLength"==t?">":"<";n+="if ( ",p&&(n+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),!1===e.opts.unicode?n+=" "+h+".length ":n+=" ucs2length("+h+") ",n+=" "+d+" "+i+") { ";var f=t,m=m||[];m.push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(f||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+i+" } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT be ",n+="maxLength"==t?"longer":"shorter",n+=" than ",n+=p?"' + "+i+" + '":""+s,n+=" characters' "),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+u:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var g=n;return n=m.pop(),!e.compositeRule&&l?e.async?n+=" throw new ValidationError(["+g+"]); ":n+=" validate.errors = ["+g+"]; return false; ":n+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",l&&(n+=" else { "),n}},78204:e=>{"use strict";e.exports=function(e,t,r){var i,n=" ",a=e.level,o=e.dataLevel,s=e.schema[t],u=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,h="data"+(o||""),p=e.opts.$data&&s&&s.$data;if(p?(n+=" var schema"+a+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",i="schema"+a):i=s,!p&&"number"!=typeof s)throw new Error(t+" must be number");n+="if ( ",p&&(n+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),n+=" Object.keys("+h+").length "+("maxProperties"==t?">":"<")+" "+i+") { ";var d=t,f=f||[];f.push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(d||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+i+" } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT have ",n+="maxProperties"==t?"more":"fewer",n+=" than ",n+=p?"' + "+i+" + '":""+s,n+=" properties' "),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+u:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=f.pop(),!e.compositeRule&&l?e.async?n+=" throw new ValidationError(["+m+"]); ":n+=" validate.errors = ["+m+"]; return false; ":n+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",l&&(n+=" else { "),n}},42988:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.schema[t],a=e.schemaPath+e.util.getProperty(t),o=e.errSchemaPath+"/"+t,s=!e.opts.allErrors,u=e.util.copy(e),c="";u.level++;var l="valid"+u.level,h=u.baseId,p=!0,d=n;if(d)for(var f,m=-1,g=d.length-1;m0||!1===f:e.util.schemaHasRules(f,e.RULES.all))&&(p=!1,u.schema=f,u.schemaPath=a+"["+m+"]",u.errSchemaPath=o+"/"+m,i+=" "+e.validate(u)+" ",u.baseId=h,s&&(i+=" if ("+l+") { ",c+="}"));return s&&(i+=p?" if (true) { ":" "+c.slice(0,-1)+" "),i}},39996:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="valid"+n,p="errs__"+n,d=e.util.copy(e),f="";d.level++;var m="valid"+d.level,g=o.every((function(t){return e.opts.strictKeywords?"object"==typeof t&&Object.keys(t).length>0||!1===t:e.util.schemaHasRules(t,e.RULES.all)}));if(g){var v=d.baseId;i+=" var "+p+" = errors; var "+h+" = false; ";var y=e.compositeRule;e.compositeRule=d.compositeRule=!0;var _=o;if(_)for(var b,w=-1,E=_.length-1;w{"use strict";e.exports=function(e,t,r){var i=" ",n=e.schema[t],a=e.errSchemaPath+"/"+t,o=(e.opts.allErrors,e.util.toQuotedString(n));return!0===e.opts.$comment?i+=" console.log("+o+");":"function"==typeof e.opts.$comment&&(i+=" self._opts.$comment("+o+", "+e.util.toQuotedString(a)+", validate.root.schema);"),i}},25306:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="valid"+n,p=e.opts.$data&&o&&o.$data;p&&(i+=" var schema"+n+" = "+e.util.getData(o.$data,a,e.dataPathArr)+"; "),p||(i+=" var schema"+n+" = validate.schema"+s+";"),i+="var "+h+" = equal("+l+", schema"+n+"); if (!"+h+") { ";var d=d||[];d.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { allowedValue: schema"+n+" } ",!1!==e.opts.messages&&(i+=" , message: 'should be equal to constant' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ";var f=i;return i=d.pop(),!e.compositeRule&&c?e.async?i+=" throw new ValidationError(["+f+"]); ":i+=" validate.errors = ["+f+"]; return false; ":i+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" }",c&&(i+=" else { "),i}},2840:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="valid"+n,p="errs__"+n,d=e.util.copy(e);d.level++;var f="valid"+d.level,m="i"+n,g=d.dataLevel=e.dataLevel+1,v="data"+g,y=e.baseId,_=e.opts.strictKeywords?"object"==typeof o&&Object.keys(o).length>0||!1===o:e.util.schemaHasRules(o,e.RULES.all);if(i+="var "+p+" = errors;var "+h+";",_){var b=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.schema=o,d.schemaPath=s,d.errSchemaPath=u,i+=" var "+f+" = false; for (var "+m+" = 0; "+m+" < "+l+".length; "+m+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);var w=l+"["+m+"]";d.dataPathArr[g]=m;var E=e.validate(d);d.baseId=y,e.util.varOccurences(E,v)<2?i+=" "+e.util.varReplace(E,v,w)+" ":i+=" var "+v+" = "+w+"; "+E+" ",i+=" if ("+f+") break; } ",e.compositeRule=d.compositeRule=b,i+=" if (!"+f+") {"}else i+=" if ("+l+".length == 0) {";var k=k||[];k.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'should contain a valid item' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ";var S=i;return i=k.pop(),!e.compositeRule&&c?e.async?i+=" throw new ValidationError(["+S+"]); ":i+=" validate.errors = ["+S+"]; return false; ":i+=" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } else { ",_&&(i+=" errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; } "),e.opts.allErrors&&(i+=" } "),i}},14165:e=>{"use strict";e.exports=function(e,t,r){var i,n,a=" ",o=e.level,s=e.dataLevel,u=e.schema[t],c=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,p="data"+(s||""),d="valid"+o,f="errs__"+o,m=e.opts.$data&&u&&u.$data;m?(a+=" var schema"+o+" = "+e.util.getData(u.$data,s,e.dataPathArr)+"; ",n="schema"+o):n=u;var g,v,y,_,b,w=this,E="definition"+o,k=w.definition,S="";if(m&&k.$data){b="keywordValidate"+o;var x=k.validateSchema;a+=" var "+E+" = RULES.custom['"+t+"'].definition; var "+b+" = "+E+".validate;"}else{if(!(_=e.useCustomRule(w,u,e.schema,e)))return;n="validate.schema"+c,b=_.code,g=k.compile,v=k.inline,y=k.macro}var j=b+".errors",N="i"+o,M="ruleErr"+o,I=k.async;if(I&&!e.async)throw new Error("async keyword in sync schema");if(v||y||(a+=j+" = null;"),a+="var "+f+" = errors;var "+d+";",m&&k.$data&&(S+="}",a+=" if ("+n+" === undefined) { "+d+" = true; } else { ",x&&(S+="}",a+=" "+d+" = "+E+".validateSchema("+n+"); if ("+d+") { ")),v)k.statements?a+=" "+_.validate+" ":a+=" "+d+" = "+_.validate+"; ";else if(y){var A=e.util.copy(e);S="",A.level++;var T="valid"+A.level;A.schema=_.validate,A.schemaPath="";var R=e.compositeRule;e.compositeRule=A.compositeRule=!0;var P=e.validate(A).replace(/validate\.schema/g,b);e.compositeRule=A.compositeRule=R,a+=" "+P}else{(z=z||[]).push(a),a="",a+=" "+b+".call( ",e.opts.passContext?a+="this":a+="self",g||!1===k.schema?a+=" , "+p+" ":a+=" , "+n+" , "+p+" , validate.schema"+e.schemaPath+" ",a+=" , (dataPath || '')",'""'!=e.errorPath&&(a+=" + "+e.errorPath);var O=s?"data"+(s-1||""):"parentData",B=s?e.dataPathArr[s]:"parentDataProperty",C=a+=" , "+O+" , "+B+" , rootData ) ";a=z.pop(),!1===k.errors?(a+=" "+d+" = ",I&&(a+="await "),a+=C+"; "):a+=I?" var "+(j="customErrors"+o)+" = null; try { "+d+" = await "+C+"; } catch (e) { "+d+" = false; if (e instanceof ValidationError) "+j+" = e.errors; else throw e; } ":" "+j+" = null; "+d+" = "+C+"; "}if(k.modifying&&(a+=" if ("+O+") "+p+" = "+O+"["+B+"];"),a+=""+S,k.valid)h&&(a+=" if (true) { ");else{var z;a+=" if ( ",void 0===k.valid?(a+=" !",a+=y?""+T:""+d):a+=" "+!k.valid+" ",a+=") { ",i=w.keyword,(z=z||[]).push(a),a="",(z=z||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: '"+(i||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { keyword: '"+w.keyword+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should pass \""+w.keyword+"\" keyword validation' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),a+=" } "):a+=" {} ";var F=a;a=z.pop(),!e.compositeRule&&h?e.async?a+=" throw new ValidationError(["+F+"]); ":a+=" validate.errors = ["+F+"]; return false; ":a+=" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var D=a;a=z.pop(),v?k.errors?"full"!=k.errors&&(a+=" for (var "+N+"="+f+"; "+N+"{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="errs__"+n,p=e.util.copy(e),d="";p.level++;var f="valid"+p.level,m={},g={},v=e.opts.ownProperties;for(w in o)if("__proto__"!=w){var y=o[w],_=Array.isArray(y)?g:m;_[w]=y}i+="var "+h+" = errors;";var b=e.errorPath;for(var w in i+="var missing"+n+";",g)if((_=g[w]).length){if(i+=" if ( "+l+e.util.getProperty(w)+" !== undefined ",v&&(i+=" && Object.prototype.hasOwnProperty.call("+l+", '"+e.util.escapeQuotes(w)+"') "),c){i+=" && ( ";var E=_;if(E)for(var k=-1,S=E.length-1;k0||!1===y:e.util.schemaHasRules(y,e.RULES.all))&&(i+=" "+f+" = true; if ( "+l+e.util.getProperty(w)+" !== undefined ",v&&(i+=" && Object.prototype.hasOwnProperty.call("+l+", '"+e.util.escapeQuotes(w)+"') "),i+=") { ",p.schema=y,p.schemaPath=s+e.util.getProperty(w),p.errSchemaPath=u+"/"+e.util.escapeFragment(w),i+=" "+e.validate(p)+" ",p.baseId=B,i+=" } ",c&&(i+=" if ("+f+") { ",d+="}"));return c&&(i+=" "+d+" if ("+h+" == errors) {"),i}},31740:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="valid"+n,p=e.opts.$data&&o&&o.$data;p&&(i+=" var schema"+n+" = "+e.util.getData(o.$data,a,e.dataPathArr)+"; ");var d="i"+n,f="schema"+n;p||(i+=" var "+f+" = validate.schema"+s+";"),i+="var "+h+";",p&&(i+=" if (schema"+n+" === undefined) "+h+" = true; else if (!Array.isArray(schema"+n+")) "+h+" = false; else {"),i+=h+" = false;for (var "+d+"=0; "+d+"<"+f+".length; "+d+"++) if (equal("+l+", "+f+"["+d+"])) { "+h+" = true; break; }",p&&(i+=" } "),i+=" if (!"+h+") { ";var m=m||[];m.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { allowedValues: schema"+n+" } ",!1!==e.opts.messages&&(i+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ";var g=i;return i=m.pop(),!e.compositeRule&&c?e.async?i+=" throw new ValidationError(["+g+"]); ":i+=" validate.errors = ["+g+"]; return false; ":i+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" }",c&&(i+=" else { "),i}},39014:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||"");if(!1===e.opts.format)return c&&(i+=" if (true) { "),i;var h,p=e.opts.$data&&o&&o.$data;p?(i+=" var schema"+n+" = "+e.util.getData(o.$data,a,e.dataPathArr)+"; ",h="schema"+n):h=o;var d=e.opts.unknownFormats,f=Array.isArray(d);if(p)i+=" var "+(m="format"+n)+" = formats["+h+"]; var "+(g="isObject"+n)+" = typeof "+m+" == 'object' && !("+m+" instanceof RegExp) && "+m+".validate; var "+(v="formatType"+n)+" = "+g+" && "+m+".type || 'string'; if ("+g+") { ",e.async&&(i+=" var async"+n+" = "+m+".async; "),i+=" "+m+" = "+m+".validate; } if ( ",p&&(i+=" ("+h+" !== undefined && typeof "+h+" != 'string') || "),i+=" (","ignore"!=d&&(i+=" ("+h+" && !"+m+" ",f&&(i+=" && self._opts.unknownFormats.indexOf("+h+") == -1 "),i+=") || "),i+=" ("+m+" && "+v+" == '"+r+"' && !(typeof "+m+" == 'function' ? ",e.async?i+=" (async"+n+" ? await "+m+"("+l+") : "+m+"("+l+")) ":i+=" "+m+"("+l+") ",i+=" : "+m+".test("+l+"))))) {";else{var m;if(!(m=e.formats[o])){if("ignore"==d)return e.logger.warn('unknown format "'+o+'" ignored in schema at path "'+e.errSchemaPath+'"'),c&&(i+=" if (true) { "),i;if(f&&d.indexOf(o)>=0)return c&&(i+=" if (true) { "),i;throw new Error('unknown format "'+o+'" is used in schema at path "'+e.errSchemaPath+'"')}var g,v=(g="object"==typeof m&&!(m instanceof RegExp)&&m.validate)&&m.type||"string";if(g){var y=!0===m.async;m=m.validate}if(v!=r)return c&&(i+=" if (true) { "),i;if(y){if(!e.async)throw new Error("async format in sync schema");i+=" if (!(await "+(_="formats"+e.util.getProperty(o)+".validate")+"("+l+"))) { "}else{i+=" if (! ";var _="formats"+e.util.getProperty(o);g&&(_+=".validate"),i+="function"==typeof m?" "+_+"("+l+") ":" "+_+".test("+l+") ",i+=") { "}}var b=b||[];b.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { format: ",i+=p?""+h:""+e.util.toQuotedString(o),i+=" } ",!1!==e.opts.messages&&(i+=" , message: 'should match format \"",i+=p?"' + "+h+" + '":""+e.util.escapeQuotes(o),i+="\"' "),e.opts.verbose&&(i+=" , schema: ",i+=p?"validate.schema"+s:""+e.util.toQuotedString(o),i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ";var w=i;return i=b.pop(),!e.compositeRule&&c?e.async?i+=" throw new ValidationError(["+w+"]); ":i+=" validate.errors = ["+w+"]; return false; ":i+=" var err = "+w+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } ",c&&(i+=" else { "),i}},17231:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="valid"+n,p="errs__"+n,d=e.util.copy(e);d.level++;var f="valid"+d.level,m=e.schema.then,g=e.schema.else,v=void 0!==m&&(e.opts.strictKeywords?"object"==typeof m&&Object.keys(m).length>0||!1===m:e.util.schemaHasRules(m,e.RULES.all)),y=void 0!==g&&(e.opts.strictKeywords?"object"==typeof g&&Object.keys(g).length>0||!1===g:e.util.schemaHasRules(g,e.RULES.all)),_=d.baseId;if(v||y){var b;d.createErrors=!1,d.schema=o,d.schemaPath=s,d.errSchemaPath=u,i+=" var "+p+" = errors; var "+h+" = true; ";var w=e.compositeRule;e.compositeRule=d.compositeRule=!0,i+=" "+e.validate(d)+" ",d.baseId=_,d.createErrors=!0,i+=" errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; } ",e.compositeRule=d.compositeRule=w,v?(i+=" if ("+f+") { ",d.schema=e.schema.then,d.schemaPath=e.schemaPath+".then",d.errSchemaPath=e.errSchemaPath+"/then",i+=" "+e.validate(d)+" ",d.baseId=_,i+=" "+h+" = "+f+"; ",v&&y?i+=" var "+(b="ifClause"+n)+" = 'then'; ":b="'then'",i+=" } ",y&&(i+=" else { ")):i+=" if (!"+f+") { ",y&&(d.schema=e.schema.else,d.schemaPath=e.schemaPath+".else",d.errSchemaPath=e.errSchemaPath+"/else",i+=" "+e.validate(d)+" ",d.baseId=_,i+=" "+h+" = "+f+"; ",v&&y?i+=" var "+(b="ifClause"+n)+" = 'else'; ":b="'else'",i+=" } "),i+=" if (!"+h+") { var err = ",!1!==e.createErrors?(i+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { failingKeyword: "+b+" } ",!1!==e.opts.messages&&(i+=" , message: 'should match \"' + "+b+" + '\" schema' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ",i+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&c&&(e.async?i+=" throw new ValidationError(vErrors); ":i+=" validate.errors = vErrors; return false; "),i+=" } ",c&&(i+=" else { ")}else c&&(i+=" if (true) { ");return i}},66674:(e,t,r)=>{"use strict";e.exports={$ref:r(62392),allOf:r(42988),anyOf:r(39996),$comment:r(57812),const:r(25306),contains:r(2840),dependencies:r(66659),enum:r(31740),format:r(39014),if:r(17231),items:r(37482),maximum:r(18210),minimum:r(18210),maxItems:r(33038),minItems:r(33038),maxLength:r(80425),minLength:r(80425),maxProperties:r(78204),minProperties:r(78204),multipleOf:r(43673),not:r(28528),oneOf:r(59709),pattern:r(49614),properties:r(81175),propertyNames:r(58441),required:r(71287),uniqueItems:r(3603),validate:r(19508)}},37482:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="valid"+n,p="errs__"+n,d=e.util.copy(e),f="";d.level++;var m="valid"+d.level,g="i"+n,v=d.dataLevel=e.dataLevel+1,y="data"+v,_=e.baseId;if(i+="var "+p+" = errors;var "+h+";",Array.isArray(o)){var b=e.schema.additionalItems;if(!1===b){i+=" "+h+" = "+l+".length <= "+o.length+"; ";var w=u;u=e.errSchemaPath+"/additionalItems",i+=" if (!"+h+") { ";var E=E||[];E.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+o.length+" } ",!1!==e.opts.messages&&(i+=" , message: 'should NOT have more than "+o.length+" items' "),e.opts.verbose&&(i+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ";var k=i;i=E.pop(),!e.compositeRule&&c?e.async?i+=" throw new ValidationError(["+k+"]); ":i+=" validate.errors = ["+k+"]; return false; ":i+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } ",u=w,c&&(f+="}",i+=" else { ")}var S=o;if(S)for(var x,j=-1,N=S.length-1;j0||!1===x:e.util.schemaHasRules(x,e.RULES.all)){i+=" "+m+" = true; if ("+l+".length > "+j+") { ";var M=l+"["+j+"]";d.schema=x,d.schemaPath=s+"["+j+"]",d.errSchemaPath=u+"/"+j,d.errorPath=e.util.getPathExpr(e.errorPath,j,e.opts.jsonPointers,!0),d.dataPathArr[v]=j;var I=e.validate(d);d.baseId=_,e.util.varOccurences(I,y)<2?i+=" "+e.util.varReplace(I,y,M)+" ":i+=" var "+y+" = "+M+"; "+I+" ",i+=" } ",c&&(i+=" if ("+m+") { ",f+="}")}"object"==typeof b&&(e.opts.strictKeywords?"object"==typeof b&&Object.keys(b).length>0||!1===b:e.util.schemaHasRules(b,e.RULES.all))&&(d.schema=b,d.schemaPath=e.schemaPath+".additionalItems",d.errSchemaPath=e.errSchemaPath+"/additionalItems",i+=" "+m+" = true; if ("+l+".length > "+o.length+") { for (var "+g+" = "+o.length+"; "+g+" < "+l+".length; "+g+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,g,e.opts.jsonPointers,!0),M=l+"["+g+"]",d.dataPathArr[v]=g,I=e.validate(d),d.baseId=_,e.util.varOccurences(I,y)<2?i+=" "+e.util.varReplace(I,y,M)+" ":i+=" var "+y+" = "+M+"; "+I+" ",c&&(i+=" if (!"+m+") break; "),i+=" } } ",c&&(i+=" if ("+m+") { ",f+="}"))}else(e.opts.strictKeywords?"object"==typeof o&&Object.keys(o).length>0||!1===o:e.util.schemaHasRules(o,e.RULES.all))&&(d.schema=o,d.schemaPath=s,d.errSchemaPath=u,i+=" for (var "+g+" = 0; "+g+" < "+l+".length; "+g+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,g,e.opts.jsonPointers,!0),M=l+"["+g+"]",d.dataPathArr[v]=g,I=e.validate(d),d.baseId=_,e.util.varOccurences(I,y)<2?i+=" "+e.util.varReplace(I,y,M)+" ":i+=" var "+y+" = "+M+"; "+I+" ",c&&(i+=" if (!"+m+") break; "),i+=" }");return c&&(i+=" "+f+" if ("+p+" == errors) {"),i}},43673:e=>{"use strict";e.exports=function(e,t,r){var i,n=" ",a=e.level,o=e.dataLevel,s=e.schema[t],u=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,h="data"+(o||""),p=e.opts.$data&&s&&s.$data;if(p?(n+=" var schema"+a+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",i="schema"+a):i=s,!p&&"number"!=typeof s)throw new Error(t+" must be number");n+="var division"+a+";if (",p&&(n+=" "+i+" !== undefined && ( typeof "+i+" != 'number' || "),n+=" (division"+a+" = "+h+" / "+i+", ",e.opts.multipleOfPrecision?n+=" Math.abs(Math.round(division"+a+") - division"+a+") > 1e-"+e.opts.multipleOfPrecision+" ":n+=" division"+a+" !== parseInt(division"+a+") ",n+=" ) ",p&&(n+=" ) "),n+=" ) { ";var d=d||[];d.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { multipleOf: "+i+" } ",!1!==e.opts.messages&&(n+=" , message: 'should be multiple of ",n+=p?"' + "+i:i+"'"),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+u:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var f=n;return n=d.pop(),!e.compositeRule&&l?e.async?n+=" throw new ValidationError(["+f+"]); ":n+=" validate.errors = ["+f+"]; return false; ":n+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",l&&(n+=" else { "),n}},28528:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="errs__"+n,p=e.util.copy(e);p.level++;var d="valid"+p.level;if(e.opts.strictKeywords?"object"==typeof o&&Object.keys(o).length>0||!1===o:e.util.schemaHasRules(o,e.RULES.all)){p.schema=o,p.schemaPath=s,p.errSchemaPath=u,i+=" var "+h+" = errors; ";var f,m=e.compositeRule;e.compositeRule=p.compositeRule=!0,p.createErrors=!1,p.opts.allErrors&&(f=p.opts.allErrors,p.opts.allErrors=!1),i+=" "+e.validate(p)+" ",p.createErrors=!0,f&&(p.opts.allErrors=f),e.compositeRule=p.compositeRule=m,i+=" if ("+d+") { ";var g=g||[];g.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'should NOT be valid' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ";var v=i;i=g.pop(),!e.compositeRule&&c?e.async?i+=" throw new ValidationError(["+v+"]); ":i+=" validate.errors = ["+v+"]; return false; ":i+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } else { errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } ",e.opts.allErrors&&(i+=" } ")}else i+=" var err = ",!1!==e.createErrors?(i+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'should NOT be valid' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ",i+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(i+=" if (false) { ");return i}},59709:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="valid"+n,p="errs__"+n,d=e.util.copy(e),f="";d.level++;var m="valid"+d.level,g=d.baseId,v="prevValid"+n,y="passingSchemas"+n;i+="var "+p+" = errors , "+v+" = false , "+h+" = false , "+y+" = null; ";var _=e.compositeRule;e.compositeRule=d.compositeRule=!0;var b=o;if(b)for(var w,E=-1,k=b.length-1;E0||!1===w:e.util.schemaHasRules(w,e.RULES.all))?(d.schema=w,d.schemaPath=s+"["+E+"]",d.errSchemaPath=u+"/"+E,i+=" "+e.validate(d)+" ",d.baseId=g):i+=" var "+m+" = true; ",E&&(i+=" if ("+m+" && "+v+") { "+h+" = false; "+y+" = ["+y+", "+E+"]; } else { ",f+="}"),i+=" if ("+m+") { "+h+" = "+v+" = true; "+y+" = "+E+"; }";return e.compositeRule=d.compositeRule=_,i+=f+"if (!"+h+") { var err = ",!1!==e.createErrors?(i+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { passingSchemas: "+y+" } ",!1!==e.opts.messages&&(i+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ",i+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&c&&(e.async?i+=" throw new ValidationError(vErrors); ":i+=" validate.errors = vErrors; return false; "),i+="} else { errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; }",e.opts.allErrors&&(i+=" } "),i}},49614:e=>{"use strict";e.exports=function(e,t,r){var i,n=" ",a=e.level,o=e.dataLevel,s=e.schema[t],u=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,h="data"+(o||""),p=e.opts.$data&&s&&s.$data;p?(n+=" var schema"+a+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",i="schema"+a):i=s,n+="if ( ",p&&(n+=" ("+i+" !== undefined && typeof "+i+" != 'string') || "),n+=" !"+(p?"(new RegExp("+i+"))":e.usePattern(s))+".test("+h+") ) { ";var d=d||[];d.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { pattern: ",n+=p?""+i:""+e.util.toQuotedString(s),n+=" } ",!1!==e.opts.messages&&(n+=" , message: 'should match pattern \"",n+=p?"' + "+i+" + '":""+e.util.escapeQuotes(s),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+u:""+e.util.toQuotedString(s),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var f=n;return n=d.pop(),!e.compositeRule&&l?e.async?n+=" throw new ValidationError(["+f+"]); ":n+=" validate.errors = ["+f+"]; return false; ":n+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",l&&(n+=" else { "),n}},81175:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="errs__"+n,p=e.util.copy(e),d="";p.level++;var f="valid"+p.level,m="key"+n,g="idx"+n,v=p.dataLevel=e.dataLevel+1,y="data"+v,_="dataProperties"+n,b=Object.keys(o||{}).filter(P),w=e.schema.patternProperties||{},E=Object.keys(w).filter(P),k=e.schema.additionalProperties,S=b.length||E.length,x=!1===k,j="object"==typeof k&&Object.keys(k).length,N=e.opts.removeAdditional,M=x||j||N,I=e.opts.ownProperties,A=e.baseId,T=e.schema.required;if(T&&(!e.opts.$data||!T.$data)&&T.length8)i+=" || validate.schema"+s+".hasOwnProperty("+m+") ";else{var O=b;if(O)for(var B=-1,C=O.length-1;B0||!1===X:e.util.schemaHasRules(X,e.RULES.all)){var Y=e.util.getProperty($),ee=(W=l+Y,J&&void 0!==X.default);if(p.schema=X,p.schemaPath=s+Y,p.errSchemaPath=u+"/"+e.util.escapeFragment($),p.errorPath=e.util.getPath(e.errorPath,$,e.opts.jsonPointers),p.dataPathArr[v]=e.util.toQuotedString($),Z=e.validate(p),p.baseId=A,e.util.varOccurences(Z,y)<2){Z=e.util.varReplace(Z,y,W);var te=W}else te=y,i+=" var "+y+" = "+W+"; ";if(ee)i+=" "+Z+" ";else{if(R&&R[$]){i+=" if ( "+te+" === undefined ",I&&(i+=" || ! Object.prototype.hasOwnProperty.call("+l+", '"+e.util.escapeQuotes($)+"') "),i+=") { "+f+" = false; ",q=e.errorPath,U=u;var re,ie=e.util.escapeQuotes($);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(q,$,e.opts.jsonPointers)),u=e.errSchemaPath+"/required",(re=re||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { missingProperty: '"+ie+"' } ",!1!==e.opts.messages&&(i+=" , message: '",e.opts._errorDataPathProperty?i+="is a required property":i+="should have required property \\'"+ie+"\\'",i+="' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ",H=i,i=re.pop(),!e.compositeRule&&c?e.async?i+=" throw new ValidationError(["+H+"]); ":i+=" validate.errors = ["+H+"]; return false; ":i+=" var err = "+H+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u=U,e.errorPath=q,i+=" } else { "}else c?(i+=" if ( "+te+" === undefined ",I&&(i+=" || ! Object.prototype.hasOwnProperty.call("+l+", '"+e.util.escapeQuotes($)+"') "),i+=") { "+f+" = true; } else { "):(i+=" if ("+te+" !== undefined ",I&&(i+=" && Object.prototype.hasOwnProperty.call("+l+", '"+e.util.escapeQuotes($)+"') "),i+=" ) { ");i+=" "+Z+" } "}}c&&(i+=" if ("+f+") { ",d+="}")}}if(E.length){var ne=E;if(ne)for(var ae,oe=-1,se=ne.length-1;oe0||!1===X:e.util.schemaHasRules(X,e.RULES.all))&&(p.schema=X,p.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(ae),p.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(ae),i+=I?" "+_+" = "+_+" || Object.keys("+l+"); for (var "+g+"=0; "+g+"<"+_+".length; "+g+"++) { var "+m+" = "+_+"["+g+"]; ":" for (var "+m+" in "+l+") { ",i+=" if ("+e.usePattern(ae)+".test("+m+")) { ",p.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers),W=l+"["+m+"]",p.dataPathArr[v]=m,Z=e.validate(p),p.baseId=A,e.util.varOccurences(Z,y)<2?i+=" "+e.util.varReplace(Z,y,W)+" ":i+=" var "+y+" = "+W+"; "+Z+" ",c&&(i+=" if (!"+f+") break; "),i+=" } ",c&&(i+=" else "+f+" = true; "),i+=" } ",c&&(i+=" if ("+f+") { ",d+="}"))}return c&&(i+=" "+d+" if ("+h+" == errors) {"),i}},58441:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="errs__"+n,p=e.util.copy(e);p.level++;var d="valid"+p.level;if(i+="var "+h+" = errors;",e.opts.strictKeywords?"object"==typeof o&&Object.keys(o).length>0||!1===o:e.util.schemaHasRules(o,e.RULES.all)){p.schema=o,p.schemaPath=s,p.errSchemaPath=u;var f="key"+n,m="idx"+n,g="i"+n,v="' + "+f+" + '",y="data"+(p.dataLevel=e.dataLevel+1),_="dataProperties"+n,b=e.opts.ownProperties,w=e.baseId;b&&(i+=" var "+_+" = undefined; "),i+=b?" "+_+" = "+_+" || Object.keys("+l+"); for (var "+m+"=0; "+m+"<"+_+".length; "+m+"++) { var "+f+" = "+_+"["+m+"]; ":" for (var "+f+" in "+l+") { ",i+=" var startErrs"+n+" = errors; ";var E=f,k=e.compositeRule;e.compositeRule=p.compositeRule=!0;var S=e.validate(p);p.baseId=w,e.util.varOccurences(S,y)<2?i+=" "+e.util.varReplace(S,y,E)+" ":i+=" var "+y+" = "+E+"; "+S+" ",e.compositeRule=p.compositeRule=k,i+=" if (!"+d+") { for (var "+g+"=startErrs"+n+"; "+g+"{"use strict";e.exports=function(e,t,r){var i,n,a=" ",o=e.level,s=e.dataLevel,u=e.schema[t],c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,h="data"+(s||""),p="valid"+o;if("#"==u||"#/"==u)e.isRoot?(i=e.async,n="validate"):(i=!0===e.root.schema.$async,n="root.refVal[0]");else{var d=e.resolveRef(e.baseId,u,e.isRoot);if(void 0===d){var f=e.MissingRefError.message(e.baseId,u);if("fail"==e.opts.missingRefs){e.logger.error(f),(y=y||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { ref: '"+e.util.escapeQuotes(u)+"' } ",!1!==e.opts.messages&&(a+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(u)+"' "),e.opts.verbose&&(a+=" , schema: "+e.util.toQuotedString(u)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var m=a;a=y.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+m+"]); ":a+=" validate.errors = ["+m+"]; return false; ":a+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l&&(a+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs)throw new e.MissingRefError(e.baseId,u,f);e.logger.warn(f),l&&(a+=" if (true) { ")}}else if(d.inline){var g=e.util.copy(e);g.level++;var v="valid"+g.level;g.schema=d.schema,g.schemaPath="",g.errSchemaPath=u,a+=" "+e.validate(g).replace(/validate\.schema/g,d.code)+" ",l&&(a+=" if ("+v+") { ")}else i=!0===d.$async||e.async&&!1!==d.$async,n=d.code}if(n){var y;(y=y||[]).push(a),a="",e.opts.passContext?a+=" "+n+".call(this, ":a+=" "+n+"( ",a+=" "+h+", (dataPath || '')",'""'!=e.errorPath&&(a+=" + "+e.errorPath);var _=a+=" , "+(s?"data"+(s-1||""):"parentData")+" , "+(s?e.dataPathArr[s]:"parentDataProperty")+", rootData) ";if(a=y.pop(),i){if(!e.async)throw new Error("async schema referenced by sync schema");l&&(a+=" var "+p+"; "),a+=" try { await "+_+"; ",l&&(a+=" "+p+" = true; "),a+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",l&&(a+=" "+p+" = false; "),a+=" } ",l&&(a+=" if ("+p+") { ")}else a+=" if (!"+_+") { if (vErrors === null) vErrors = "+n+".errors; else vErrors = vErrors.concat("+n+".errors); errors = vErrors.length; } ",l&&(a+=" else { ")}return a}},71287:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="valid"+n,p=e.opts.$data&&o&&o.$data;p&&(i+=" var schema"+n+" = "+e.util.getData(o.$data,a,e.dataPathArr)+"; ");var d="schema"+n;if(!p)if(o.length0||!1===_:e.util.schemaHasRules(_,e.RULES.all))||(f[f.length]=g)}}else f=o;if(p||f.length){var b=e.errorPath,w=p||f.length>=e.opts.loopRequired,E=e.opts.ownProperties;if(c)if(i+=" var missing"+n+"; ",w){p||(i+=" var "+d+" = validate.schema"+s+"; ");var k="' + "+(I="schema"+n+"["+(N="i"+n)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(b,I,e.opts.jsonPointers)),i+=" var "+h+" = true; ",p&&(i+=" if (schema"+n+" === undefined) "+h+" = true; else if (!Array.isArray(schema"+n+")) "+h+" = false; else {"),i+=" for (var "+N+" = 0; "+N+" < "+d+".length; "+N+"++) { "+h+" = "+l+"["+d+"["+N+"]] !== undefined ",E&&(i+=" && Object.prototype.hasOwnProperty.call("+l+", "+d+"["+N+"]) "),i+="; if (!"+h+") break; } ",p&&(i+=" } "),i+=" if (!"+h+") { ",(x=x||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { missingProperty: '"+k+"' } ",!1!==e.opts.messages&&(i+=" , message: '",e.opts._errorDataPathProperty?i+="is a required property":i+="should have required property \\'"+k+"\\'",i+="' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ";var S=i;i=x.pop(),!e.compositeRule&&c?e.async?i+=" throw new ValidationError(["+S+"]); ":i+=" validate.errors = ["+S+"]; return false; ":i+=" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } else { "}else{i+=" if ( ";var x,j=f;if(j)for(var N=-1,M=j.length-1;N{"use strict";e.exports=function(e,t,r){var i,n=" ",a=e.level,o=e.dataLevel,s=e.schema[t],u=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,h="data"+(o||""),p="valid"+a,d=e.opts.$data&&s&&s.$data;if(d?(n+=" var schema"+a+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",i="schema"+a):i=s,(s||d)&&!1!==e.opts.uniqueItems){d&&(n+=" var "+p+"; if ("+i+" === false || "+i+" === undefined) "+p+" = true; else if (typeof "+i+" != 'boolean') "+p+" = false; else { "),n+=" var i = "+h+".length , "+p+" = true , j; if (i > 1) { ";var f=e.schema.items&&e.schema.items.type,m=Array.isArray(f);if(!f||"object"==f||"array"==f||m&&(f.indexOf("object")>=0||f.indexOf("array")>=0))n+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+h+"[i], "+h+"[j])) { "+p+" = false; break outer; } } } ";else{n+=" var itemIndices = {}, item; for (;i--;) { var item = "+h+"[i]; ";var g="checkDataType"+(m?"s":"");n+=" if ("+e.util[g](f,"item",e.opts.strictNumbers,!0)+") continue; ",m&&(n+=" if (typeof item == 'string') item = '\"' + item; "),n+=" if (typeof itemIndices[item] == 'number') { "+p+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}n+=" } ",d&&(n+=" } "),n+=" if (!"+p+") { ";var v=v||[];v.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+u:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var y=n;n=v.pop(),!e.compositeRule&&l?e.async?n+=" throw new ValidationError(["+y+"]); ":n+=" validate.errors = ["+y+"]; return false; ":n+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",l&&(n+=" else { ")}else l&&(n+=" if (true) { ");return n}},19508:e=>{"use strict";e.exports=function(e,t,r){var i="",n=!0===e.schema.$async,a=e.util.schemaHasRulesExcept(e.schema,e.RULES.all,"$ref"),o=e.self._getId(e.schema);if(e.opts.strictKeywords){var s=e.util.schemaUnknownRules(e.schema,e.RULES.keywords);if(s){var u="unknown keyword: "+s;if("log"!==e.opts.strictKeywords)throw new Error(u);e.logger.warn(u)}}if(e.isTop&&(i+=" var validate = ",n&&(e.async=!0,i+="async "),i+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",o&&(e.opts.sourceCode||e.opts.processCode)&&(i+=" /*# sourceURL="+o+" */ ")),"boolean"==typeof e.schema||!a&&!e.schema.$ref){t="false schema";var c=e.level,l=e.dataLevel,h=e.schema[t],p=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,f=!e.opts.allErrors,m="data"+(l||""),g="valid"+c;if(!1===e.schema){e.isTop?f=!0:i+=" var "+g+" = false; ",(W=W||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'false schema' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'boolean schema is false' "),e.opts.verbose&&(i+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ";var v=i;i=W.pop(),!e.compositeRule&&f?e.async?i+=" throw new ValidationError(["+v+"]); ":i+=" validate.errors = ["+v+"]; return false; ":i+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else e.isTop?i+=n?" return data; ":" validate.errors = null; return true; ":i+=" var "+g+" = true; ";return e.isTop&&(i+=" }; return validate; "),i}if(e.isTop){var y=e.isTop;if(c=e.level=0,l=e.dataLevel=0,m="data",e.rootId=e.resolve.fullPath(e.self._getId(e.root.schema)),e.baseId=e.baseId||e.rootId,delete e.isTop,e.dataPathArr=[""],void 0!==e.schema.default&&e.opts.useDefaults&&e.opts.strictDefaults){var _="default is ignored in the schema root";if("log"!==e.opts.strictDefaults)throw new Error(_);e.logger.warn(_)}i+=" var vErrors = null; ",i+=" var errors = 0; ",i+=" if (rootData === undefined) rootData = data; "}else{if(c=e.level,m="data"+((l=e.dataLevel)||""),o&&(e.baseId=e.resolve.url(e.baseId,o)),n&&!e.async)throw new Error("async schema in sync schema");i+=" var errs_"+c+" = errors;"}g="valid"+c,f=!e.opts.allErrors;var b="",w="",E=e.schema.type,k=Array.isArray(E);if(E&&e.opts.nullable&&!0===e.schema.nullable&&(k?-1==E.indexOf("null")&&(E=E.concat("null")):"null"!=E&&(E=[E,"null"],k=!0)),k&&1==E.length&&(E=E[0],k=!1),e.schema.$ref&&a){if("fail"==e.opts.extendRefs)throw new Error('$ref: validation keywords used in schema at path "'+e.errSchemaPath+'" (see option extendRefs)');!0!==e.opts.extendRefs&&(a=!1,e.logger.warn('$ref: keywords ignored in schema at path "'+e.errSchemaPath+'"'))}if(e.schema.$comment&&e.opts.$comment&&(i+=" "+e.RULES.all.$comment.code(e,"$comment")),E){if(e.opts.coerceTypes)var S=e.util.coerceToTypes(e.opts.coerceTypes,E);var x=e.RULES.types[E];if(S||k||!0===x||x&&!Q(x)){p=e.schemaPath+".type",d=e.errSchemaPath+"/type",p=e.schemaPath+".type",d=e.errSchemaPath+"/type";var j=k?"checkDataTypes":"checkDataType";if(i+=" if ("+e.util[j](E,m,e.opts.strictNumbers,!0)+") { ",S){var N="dataType"+c,M="coerced"+c;i+=" var "+N+" = typeof "+m+"; var "+M+" = undefined; ","array"==e.opts.coerceTypes&&(i+=" if ("+N+" == 'object' && Array.isArray("+m+") && "+m+".length == 1) { "+m+" = "+m+"[0]; "+N+" = typeof "+m+"; if ("+e.util.checkDataType(e.schema.type,m,e.opts.strictNumbers)+") "+M+" = "+m+"; } "),i+=" if ("+M+" !== undefined) ; ";var I=S;if(I)for(var A,T=-1,R=I.length-1;T{"use strict";var i=/^[a-z_$][a-z0-9_$-]*$/i,n=r(14165),a=r(61128);e.exports={add:function(e,t){var r=this.RULES;if(r.keywords[e])throw new Error("Keyword "+e+" is already defined");if(!i.test(e))throw new Error("Keyword "+e+" is not a valid identifier");if(t){this.validateKeyword(t,!0);var a=t.type;if(Array.isArray(a))for(var o=0;o{"use strict";const i=t;i.bignum=r(4590),i.define=r(22500).define,i.base=r(71979),i.constants=r(36826),i.decoders=r(78307),i.encoders=r(56579)},22500:(e,t,r)=>{"use strict";const i=r(56579),n=r(78307),a=r(35717);function o(e,t){this.name=e,this.body=t,this.decoders={},this.encoders={}}t.define=function(e,t){return new o(e,t)},o.prototype._createNamed=function(e){const t=this.name;function r(e){this._initNamed(e,t)}return a(r,e),r.prototype._initNamed=function(t,r){e.call(this,t,r)},new r(this)},o.prototype._getDecoder=function(e){return e=e||"der",this.decoders.hasOwnProperty(e)||(this.decoders[e]=this._createNamed(n[e])),this.decoders[e]},o.prototype.decode=function(e,t,r){return this._getDecoder(t).decode(e,r)},o.prototype._getEncoder=function(e){return e=e||"der",this.encoders.hasOwnProperty(e)||(this.encoders[e]=this._createNamed(i[e])),this.encoders[e]},o.prototype.encode=function(e,t,r){return this._getEncoder(t).encode(e,r)}},36625:(e,t,r)=>{"use strict";const i=r(35717),n=r(98465).b,a=r(2399).Buffer;function o(e,t){n.call(this,t),a.isBuffer(e)?(this.base=e,this.offset=0,this.length=e.length):this.error("Input not Buffer")}function s(e,t){if(Array.isArray(e))this.length=0,this.value=e.map((function(e){return s.isEncoderBuffer(e)||(e=new s(e,t)),this.length+=e.length,e}),this);else if("number"==typeof e){if(!(0<=e&&e<=255))return t.error("non-byte EncoderBuffer value");this.value=e,this.length=1}else if("string"==typeof e)this.value=e,this.length=a.byteLength(e);else{if(!a.isBuffer(e))return t.error("Unsupported type: "+typeof e);this.value=e,this.length=e.length}}i(o,n),t.C=o,o.isDecoderBuffer=function(e){return e instanceof o||"object"==typeof e&&a.isBuffer(e.base)&&"DecoderBuffer"===e.constructor.name&&"number"==typeof e.offset&&"number"==typeof e.length&&"function"==typeof e.save&&"function"==typeof e.restore&&"function"==typeof e.isEmpty&&"function"==typeof e.readUInt8&&"function"==typeof e.skip&&"function"==typeof e.raw},o.prototype.save=function(){return{offset:this.offset,reporter:n.prototype.save.call(this)}},o.prototype.restore=function(e){const t=new o(this.base);return t.offset=e.offset,t.length=this.offset,this.offset=e.offset,n.prototype.restore.call(this,e.reporter),t},o.prototype.isEmpty=function(){return this.offset===this.length},o.prototype.readUInt8=function(e){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(e||"DecoderBuffer overrun")},o.prototype.skip=function(e,t){if(!(this.offset+e<=this.length))return this.error(t||"DecoderBuffer overrun");const r=new o(this.base);return r._reporterState=this._reporterState,r.offset=this.offset,r.length=this.offset+e,this.offset+=e,r},o.prototype.raw=function(e){return this.base.slice(e?e.offset:this.offset,this.length)},t.R=s,s.isEncoderBuffer=function(e){return e instanceof s||"object"==typeof e&&"EncoderBuffer"===e.constructor.name&&"number"==typeof e.length&&"function"==typeof e.join},s.prototype.join=function(e,t){return e||(e=a.alloc(this.length)),t||(t=0),0===this.length||(Array.isArray(this.value)?this.value.forEach((function(r){r.join(e,t),t+=r.length})):("number"==typeof this.value?e[t]=this.value:"string"==typeof this.value?e.write(this.value,t):a.isBuffer(this.value)&&this.value.copy(e,t),t+=this.length)),e}},71979:(e,t,r)=>{"use strict";const i=t;i.Reporter=r(98465).b,i.DecoderBuffer=r(36625).C,i.EncoderBuffer=r(36625).R,i.Node=r(41949)},41949:(e,t,r)=>{"use strict";const i=r(98465).b,n=r(36625).R,a=r(36625).C,o=r(79746),s=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],u=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(s);function c(e,t,r){const i={};this._baseState=i,i.name=r,i.enc=e,i.parent=t||null,i.children=null,i.tag=null,i.args=null,i.reverseArgs=null,i.choice=null,i.optional=!1,i.any=!1,i.obj=!1,i.use=null,i.useDecoder=null,i.key=null,i.default=null,i.explicit=null,i.implicit=null,i.contains=null,i.parent||(i.children=[],this._wrap())}e.exports=c;const l=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];c.prototype.clone=function(){const e=this._baseState,t={};l.forEach((function(r){t[r]=e[r]}));const r=new this.constructor(t.parent);return r._baseState=t,r},c.prototype._wrap=function(){const e=this._baseState;u.forEach((function(t){this[t]=function(){const r=new this.constructor(this);return e.children.push(r),r[t].apply(r,arguments)}}),this)},c.prototype._init=function(e){const t=this._baseState;o(null===t.parent),e.call(this),t.children=t.children.filter((function(e){return e._baseState.parent===this}),this),o.equal(t.children.length,1,"Root node can have only one child")},c.prototype._useArgs=function(e){const t=this._baseState,r=e.filter((function(e){return e instanceof this.constructor}),this);e=e.filter((function(e){return!(e instanceof this.constructor)}),this),0!==r.length&&(o(null===t.children),t.children=r,r.forEach((function(e){e._baseState.parent=this}),this)),0!==e.length&&(o(null===t.args),t.args=e,t.reverseArgs=e.map((function(e){if("object"!=typeof e||e.constructor!==Object)return e;const t={};return Object.keys(e).forEach((function(r){r==(0|r)&&(r|=0);const i=e[r];t[i]=r})),t})))},["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"].forEach((function(e){c.prototype[e]=function(){const t=this._baseState;throw new Error(e+" not implemented for encoding: "+t.enc)}})),s.forEach((function(e){c.prototype[e]=function(){const t=this._baseState,r=Array.prototype.slice.call(arguments);return o(null===t.tag),t.tag=e,this._useArgs(r),this}})),c.prototype.use=function(e){o(e);const t=this._baseState;return o(null===t.use),t.use=e,this},c.prototype.optional=function(){return this._baseState.optional=!0,this},c.prototype.def=function(e){const t=this._baseState;return o(null===t.default),t.default=e,t.optional=!0,this},c.prototype.explicit=function(e){const t=this._baseState;return o(null===t.explicit&&null===t.implicit),t.explicit=e,this},c.prototype.implicit=function(e){const t=this._baseState;return o(null===t.explicit&&null===t.implicit),t.implicit=e,this},c.prototype.obj=function(){const e=this._baseState,t=Array.prototype.slice.call(arguments);return e.obj=!0,0!==t.length&&this._useArgs(t),this},c.prototype.key=function(e){const t=this._baseState;return o(null===t.key),t.key=e,this},c.prototype.any=function(){return this._baseState.any=!0,this},c.prototype.choice=function(e){const t=this._baseState;return o(null===t.choice),t.choice=e,this._useArgs(Object.keys(e).map((function(t){return e[t]}))),this},c.prototype.contains=function(e){const t=this._baseState;return o(null===t.use),t.contains=e,this},c.prototype._decode=function(e,t){const r=this._baseState;if(null===r.parent)return e.wrapResult(r.children[0]._decode(e,t));let i,n=r.default,o=!0,s=null;if(null!==r.key&&(s=e.enterKey(r.key)),r.optional){let i=null;if(null!==r.explicit?i=r.explicit:null!==r.implicit?i=r.implicit:null!==r.tag&&(i=r.tag),null!==i||r.any){if(o=this._peekTag(e,i,r.any),e.isError(o))return o}else{const i=e.save();try{null===r.choice?this._decodeGeneric(r.tag,e,t):this._decodeChoice(e,t),o=!0}catch(e){o=!1}e.restore(i)}}if(r.obj&&o&&(i=e.enterObject()),o){if(null!==r.explicit){const t=this._decodeTag(e,r.explicit);if(e.isError(t))return t;e=t}const i=e.offset;if(null===r.use&&null===r.choice){let t;r.any&&(t=e.save());const i=this._decodeTag(e,null!==r.implicit?r.implicit:r.tag,r.any);if(e.isError(i))return i;r.any?n=e.raw(t):e=i}if(t&&t.track&&null!==r.tag&&t.track(e.path(),i,e.length,"tagged"),t&&t.track&&null!==r.tag&&t.track(e.path(),e.offset,e.length,"content"),r.any||(n=null===r.choice?this._decodeGeneric(r.tag,e,t):this._decodeChoice(e,t)),e.isError(n))return n;if(r.any||null!==r.choice||null===r.children||r.children.forEach((function(r){r._decode(e,t)})),r.contains&&("octstr"===r.tag||"bitstr"===r.tag)){const i=new a(n);n=this._getUse(r.contains,e._reporterState.obj)._decode(i,t)}}return r.obj&&o&&(n=e.leaveObject(i)),null===r.key||null===n&&!0!==o?null!==s&&e.exitKey(s):e.leaveKey(s,r.key,n),n},c.prototype._decodeGeneric=function(e,t,r){const i=this._baseState;return"seq"===e||"set"===e?null:"seqof"===e||"setof"===e?this._decodeList(t,e,i.args[0],r):/str$/.test(e)?this._decodeStr(t,e,r):"objid"===e&&i.args?this._decodeObjid(t,i.args[0],i.args[1],r):"objid"===e?this._decodeObjid(t,null,null,r):"gentime"===e||"utctime"===e?this._decodeTime(t,e,r):"null_"===e?this._decodeNull(t,r):"bool"===e?this._decodeBool(t,r):"objDesc"===e?this._decodeStr(t,e,r):"int"===e||"enum"===e?this._decodeInt(t,i.args&&i.args[0],r):null!==i.use?this._getUse(i.use,t._reporterState.obj)._decode(t,r):t.error("unknown tag: "+e)},c.prototype._getUse=function(e,t){const r=this._baseState;return r.useDecoder=this._use(e,t),o(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},c.prototype._decodeChoice=function(e,t){const r=this._baseState;let i=null,n=!1;return Object.keys(r.choice).some((function(a){const o=e.save(),s=r.choice[a];try{const r=s._decode(e,t);if(e.isError(r))return!1;i={type:a,value:r},n=!0}catch(t){return e.restore(o),!1}return!0}),this),n?i:e.error("Choice not matched")},c.prototype._createEncoderBuffer=function(e){return new n(e,this.reporter)},c.prototype._encode=function(e,t,r){const i=this._baseState;if(null!==i.default&&i.default===e)return;const n=this._encodeValue(e,t,r);return void 0===n||this._skipDefault(n,t,r)?void 0:n},c.prototype._encodeValue=function(e,t,r){const n=this._baseState;if(null===n.parent)return n.children[0]._encode(e,t||new i);let a=null;if(this.reporter=t,n.optional&&void 0===e){if(null===n.default)return;e=n.default}let o=null,s=!1;if(n.any)a=this._createEncoderBuffer(e);else if(n.choice)a=this._encodeChoice(e,t);else if(n.contains)o=this._getUse(n.contains,r)._encode(e,t),s=!0;else if(n.children)o=n.children.map((function(r){if("null_"===r._baseState.tag)return r._encode(null,t,e);if(null===r._baseState.key)return t.error("Child should have a key");const i=t.enterKey(r._baseState.key);if("object"!=typeof e)return t.error("Child expected, but input is not object");const n=r._encode(e[r._baseState.key],t,e);return t.leaveKey(i),n}),this).filter((function(e){return e})),o=this._createEncoderBuffer(o);else if("seqof"===n.tag||"setof"===n.tag){if(!n.args||1!==n.args.length)return t.error("Too many args for : "+n.tag);if(!Array.isArray(e))return t.error("seqof/setof, but data is not Array");const r=this.clone();r._baseState.implicit=null,o=this._createEncoderBuffer(e.map((function(r){const i=this._baseState;return this._getUse(i.args[0],e)._encode(r,t)}),r))}else null!==n.use?a=this._getUse(n.use,r)._encode(e,t):(o=this._encodePrimitive(n.tag,e),s=!0);if(!n.any&&null===n.choice){const e=null!==n.implicit?n.implicit:n.tag,r=null===n.implicit?"universal":"context";null===e?null===n.use&&t.error("Tag could be omitted only for .use()"):null===n.use&&(a=this._encodeComposite(e,s,r,o))}return null!==n.explicit&&(a=this._encodeComposite(n.explicit,!1,"context",a)),a},c.prototype._encodeChoice=function(e,t){const r=this._baseState,i=r.choice[e.type];return i||o(!1,e.type+" not found in "+JSON.stringify(Object.keys(r.choice))),i._encode(e.value,t)},c.prototype._encodePrimitive=function(e,t){const r=this._baseState;if(/str$/.test(e))return this._encodeStr(t,e);if("objid"===e&&r.args)return this._encodeObjid(t,r.reverseArgs[0],r.args[1]);if("objid"===e)return this._encodeObjid(t,null,null);if("gentime"===e||"utctime"===e)return this._encodeTime(t,e);if("null_"===e)return this._encodeNull();if("int"===e||"enum"===e)return this._encodeInt(t,r.args&&r.reverseArgs[0]);if("bool"===e)return this._encodeBool(t);if("objDesc"===e)return this._encodeStr(t,e);throw new Error("Unsupported tag: "+e)},c.prototype._isNumstr=function(e){return/^[0-9 ]*$/.test(e)},c.prototype._isPrintstr=function(e){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(e)}},98465:(e,t,r)=>{"use strict";const i=r(35717);function n(e){this._reporterState={obj:null,path:[],options:e||{},errors:[]}}function a(e,t){this.path=e,this.rethrow(t)}t.b=n,n.prototype.isError=function(e){return e instanceof a},n.prototype.save=function(){const e=this._reporterState;return{obj:e.obj,pathLen:e.path.length}},n.prototype.restore=function(e){const t=this._reporterState;t.obj=e.obj,t.path=t.path.slice(0,e.pathLen)},n.prototype.enterKey=function(e){return this._reporterState.path.push(e)},n.prototype.exitKey=function(e){const t=this._reporterState;t.path=t.path.slice(0,e-1)},n.prototype.leaveKey=function(e,t,r){const i=this._reporterState;this.exitKey(e),null!==i.obj&&(i.obj[t]=r)},n.prototype.path=function(){return this._reporterState.path.join("/")},n.prototype.enterObject=function(){const e=this._reporterState,t=e.obj;return e.obj={},t},n.prototype.leaveObject=function(e){const t=this._reporterState,r=t.obj;return t.obj=e,r},n.prototype.error=function(e){let t;const r=this._reporterState,i=e instanceof a;if(t=i?e:new a(r.path.map((function(e){return"["+JSON.stringify(e)+"]"})).join(""),e.message||e,e.stack),!r.options.partial)throw t;return i||r.errors.push(t),t},n.prototype.wrapResult=function(e){const t=this._reporterState;return t.options.partial?{result:this.isError(e)?null:e,errors:t.errors}:e},i(a,Error),a.prototype.rethrow=function(e){if(this.message=e+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,a),!this.stack)try{throw new Error(this.message)}catch(e){this.stack=e.stack}return this}},70160:(e,t)=>{"use strict";function r(e){const t={};return Object.keys(e).forEach((function(r){(0|r)==r&&(r|=0);const i=e[r];t[i]=r})),t}t.tagClass={0:"universal",1:"application",2:"context",3:"private"},t.tagClassByName=r(t.tagClass),t.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},t.tagByName=r(t.tag)},36826:(e,t,r)=>{"use strict";const i=t;i._reverse=function(e){const t={};return Object.keys(e).forEach((function(r){(0|r)==r&&(r|=0);const i=e[r];t[i]=r})),t},i.der=r(70160)},41671:(e,t,r)=>{"use strict";const i=r(35717),n=r(4590),a=r(36625).C,o=r(41949),s=r(70160);function u(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new c,this.tree._init(e.body)}function c(e){o.call(this,"der",e)}function l(e,t){let r=e.readUInt8(t);if(e.isError(r))return r;const i=s.tagClass[r>>6],n=0==(32&r);if(31==(31&r)){let i=r;for(r=0;128==(128&i);){if(i=e.readUInt8(t),e.isError(i))return i;r<<=7,r|=127&i}}else r&=31;return{cls:i,primitive:n,tag:r,tagStr:s.tag[r]}}function h(e,t,r){let i=e.readUInt8(r);if(e.isError(i))return i;if(!t&&128===i)return null;if(0==(128&i))return i;const n=127&i;if(n>4)return e.error("length octect is too long");i=0;for(let t=0;t{"use strict";const i=t;i.der=r(41671),i.pem=r(59631)},59631:(e,t,r)=>{"use strict";const i=r(35717),n=r(2399).Buffer,a=r(41671);function o(e){a.call(this,e),this.enc="pem"}i(o,a),e.exports=o,o.prototype.decode=function(e,t){const r=e.toString().split(/[\r\n]+/g),i=t.label.toUpperCase(),o=/^-----(BEGIN|END) ([^-]+)-----$/;let s=-1,u=-1;for(let e=0;e{"use strict";const i=r(35717),n=r(2399).Buffer,a=r(41949),o=r(70160);function s(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new u,this.tree._init(e.body)}function u(e){a.call(this,"der",e)}function c(e){return e<10?"0"+e:e}e.exports=s,s.prototype.encode=function(e,t){return this.tree._encode(e,t).join()},i(u,a),u.prototype._encodeComposite=function(e,t,r,i){const a=function(e,t,r,i){let n;if("seqof"===e?e="seq":"setof"===e&&(e="set"),o.tagByName.hasOwnProperty(e))n=o.tagByName[e];else{if("number"!=typeof e||(0|e)!==e)return i.error("Unknown tag: "+e);n=e}return n>=31?i.error("Multi-octet tag encoding unsupported"):(t||(n|=32),n|=o.tagClassByName[r||"universal"]<<6,n)}(e,t,r,this.reporter);if(i.length<128){const e=n.alloc(2);return e[0]=a,e[1]=i.length,this._createEncoderBuffer([e,i])}let s=1;for(let e=i.length;e>=256;e>>=8)s++;const u=n.alloc(2+s);u[0]=a,u[1]=128|s;for(let e=1+s,t=i.length;t>0;e--,t>>=8)u[e]=255&t;return this._createEncoderBuffer([u,i])},u.prototype._encodeStr=function(e,t){if("bitstr"===t)return this._createEncoderBuffer([0|e.unused,e.data]);if("bmpstr"===t){const t=n.alloc(2*e.length);for(let r=0;r=40)return this.reporter.error("Second objid identifier OOB");e.splice(0,2,40*e[0]+e[1])}let i=0;for(let t=0;t=128;r>>=7)i++}const a=n.alloc(i);let o=a.length-1;for(let t=e.length-1;t>=0;t--){let r=e[t];for(a[o--]=127&r;(r>>=7)>0;)a[o--]=128|127&r}return this._createEncoderBuffer(a)},u.prototype._encodeTime=function(e,t){let r;const i=new Date(e);return"gentime"===t?r=[c(i.getUTCFullYear()),c(i.getUTCMonth()+1),c(i.getUTCDate()),c(i.getUTCHours()),c(i.getUTCMinutes()),c(i.getUTCSeconds()),"Z"].join(""):"utctime"===t?r=[c(i.getUTCFullYear()%100),c(i.getUTCMonth()+1),c(i.getUTCDate()),c(i.getUTCHours()),c(i.getUTCMinutes()),c(i.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+t+" time is not supported yet"),this._encodeStr(r,"octstr")},u.prototype._encodeNull=function(){return this._createEncoderBuffer("")},u.prototype._encodeInt=function(e,t){if("string"==typeof e){if(!t)return this.reporter.error("String int or enum given, but no values map");if(!t.hasOwnProperty(e))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(e));e=t[e]}if("number"!=typeof e&&!n.isBuffer(e)){const t=e.toArray();!e.sign&&128&t[0]&&t.unshift(0),e=n.from(t)}if(n.isBuffer(e)){let t=e.length;0===e.length&&t++;const r=n.alloc(t);return e.copy(r),0===e.length&&(r[0]=0),this._createEncoderBuffer(r)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);let r=1;for(let t=e;t>=256;t>>=8)r++;const i=new Array(r);for(let t=i.length-1;t>=0;t--)i[t]=255&e,e>>=8;return 128&i[0]&&i.unshift(0),this._createEncoderBuffer(n.from(i))},u.prototype._encodeBool=function(e){return this._createEncoderBuffer(e?255:0)},u.prototype._use=function(e,t){return"function"==typeof e&&(e=e(t)),e._getEncoder("der").tree},u.prototype._skipDefault=function(e,t,r){const i=this._baseState;let n;if(null===i.default)return!1;const a=e.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i.default,t,r).join()),a.length!==i.defaultBuffer.length)return!1;for(n=0;n{"use strict";const i=t;i.der=r(66984),i.pem=r(2883)},2883:(e,t,r)=>{"use strict";const i=r(35717),n=r(66984);function a(e){n.call(this,e),this.enc="pem"}i(a,n),e.exports=a,a.prototype.encode=function(e,t){const r=n.prototype.encode.call(this,e).toString("base64"),i=["-----BEGIN "+t.label+"-----"];for(let e=0;e=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function u(e,t,r){var i=s(e,r);return r-1>=t&&(i|=s(e,r-1)<<4),i}function c(e,t,r,i){for(var n=0,a=Math.min(e.length,r),o=t;o=49?s-49+10:s>=17?s-17+10:s}return n}a.isBN=function(e){return e instanceof a||null!==e&&"object"==typeof e&&e.constructor.wordSize===a.wordSize&&Array.isArray(e.words)},a.max=function(e,t){return e.cmp(t)>0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)o=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)n=u(e,t,i)<=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;this.strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,o=a%i,s=Math.min(a,a-o)+r,u=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],o=n*a,s=67108863&o,u=o/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&u,p=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=p;d++){var f=c-d|0;l+=(o=(n=0|e.words[f])*(a=0|t.words[d])+h)/67108864|0,h=67108863&o}r.words[c]=0|h,u=0|l}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}a.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,a=0,o=0;o>>24-n&16777215)||o!==this.length-1?l[6-u.length]+u+r:u+r,(n+=2)>=26&&(n-=26,o--)}for(0!==a&&(r=a.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var c=h[e],d=p[e];r="";var f=this.clone();for(f.negative=0;!f.isZero();){var m=f.modn(d).toString(e);r=(f=f.idivn(d)).isZero()?m+r:l[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(e,t){return i(void 0!==o),this.toArrayLike(o,e,t)},a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},a.prototype.toArrayLike=function(e,t,r){var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0"),this.strip();var o,s,u="le"===t,c=new e(a),l=this.clone();if(u){for(s=0;!l.isZero();s++)o=l.andln(255),l.iushrn(8),c[s]=o;for(;s=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==a&&o>26,this.words[o]=67108863&t;if(0===a&&o>>13,d=0|o[1],f=8191&d,m=d>>>13,g=0|o[2],v=8191&g,y=g>>>13,_=0|o[3],b=8191&_,w=_>>>13,E=0|o[4],k=8191&E,S=E>>>13,x=0|o[5],j=8191&x,N=x>>>13,M=0|o[6],I=8191&M,A=M>>>13,T=0|o[7],R=8191&T,P=T>>>13,O=0|o[8],B=8191&O,C=O>>>13,z=0|o[9],F=8191&z,D=z>>>13,q=0|s[0],L=8191&q,U=q>>>13,H=0|s[1],K=8191&H,W=H>>>13,Z=0|s[2],J=8191&Z,V=Z>>>13,$=0|s[3],G=8191&$,Q=$>>>13,X=0|s[4],Y=8191&X,ee=X>>>13,te=0|s[5],re=8191&te,ie=te>>>13,ne=0|s[6],ae=8191&ne,oe=ne>>>13,se=0|s[7],ue=8191&se,ce=se>>>13,le=0|s[8],he=8191&le,pe=le>>>13,de=0|s[9],fe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ge=(c+(i=Math.imul(h,L))|0)+((8191&(n=(n=Math.imul(h,U))+Math.imul(p,L)|0))<<13)|0;c=((a=Math.imul(p,U))+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(f,L),n=(n=Math.imul(f,U))+Math.imul(m,L)|0,a=Math.imul(m,U);var ve=(c+(i=i+Math.imul(h,K)|0)|0)+((8191&(n=(n=n+Math.imul(h,W)|0)+Math.imul(p,K)|0))<<13)|0;c=((a=a+Math.imul(p,W)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(v,L),n=(n=Math.imul(v,U))+Math.imul(y,L)|0,a=Math.imul(y,U),i=i+Math.imul(f,K)|0,n=(n=n+Math.imul(f,W)|0)+Math.imul(m,K)|0,a=a+Math.imul(m,W)|0;var ye=(c+(i=i+Math.imul(h,J)|0)|0)+((8191&(n=(n=n+Math.imul(h,V)|0)+Math.imul(p,J)|0))<<13)|0;c=((a=a+Math.imul(p,V)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(b,L),n=(n=Math.imul(b,U))+Math.imul(w,L)|0,a=Math.imul(w,U),i=i+Math.imul(v,K)|0,n=(n=n+Math.imul(v,W)|0)+Math.imul(y,K)|0,a=a+Math.imul(y,W)|0,i=i+Math.imul(f,J)|0,n=(n=n+Math.imul(f,V)|0)+Math.imul(m,J)|0,a=a+Math.imul(m,V)|0;var _e=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(n=(n=n+Math.imul(h,Q)|0)+Math.imul(p,G)|0))<<13)|0;c=((a=a+Math.imul(p,Q)|0)+(n>>>13)|0)+(_e>>>26)|0,_e&=67108863,i=Math.imul(k,L),n=(n=Math.imul(k,U))+Math.imul(S,L)|0,a=Math.imul(S,U),i=i+Math.imul(b,K)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(w,K)|0,a=a+Math.imul(w,W)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,V)|0)+Math.imul(y,J)|0,a=a+Math.imul(y,V)|0,i=i+Math.imul(f,G)|0,n=(n=n+Math.imul(f,Q)|0)+Math.imul(m,G)|0,a=a+Math.imul(m,Q)|0;var be=(c+(i=i+Math.imul(h,Y)|0)|0)+((8191&(n=(n=n+Math.imul(h,ee)|0)+Math.imul(p,Y)|0))<<13)|0;c=((a=a+Math.imul(p,ee)|0)+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(j,L),n=(n=Math.imul(j,U))+Math.imul(N,L)|0,a=Math.imul(N,U),i=i+Math.imul(k,K)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(S,K)|0,a=a+Math.imul(S,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,V)|0)+Math.imul(w,J)|0,a=a+Math.imul(w,V)|0,i=i+Math.imul(v,G)|0,n=(n=n+Math.imul(v,Q)|0)+Math.imul(y,G)|0,a=a+Math.imul(y,Q)|0,i=i+Math.imul(f,Y)|0,n=(n=n+Math.imul(f,ee)|0)+Math.imul(m,Y)|0,a=a+Math.imul(m,ee)|0;var we=(c+(i=i+Math.imul(h,re)|0)|0)+((8191&(n=(n=n+Math.imul(h,ie)|0)+Math.imul(p,re)|0))<<13)|0;c=((a=a+Math.imul(p,ie)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(I,L),n=(n=Math.imul(I,U))+Math.imul(A,L)|0,a=Math.imul(A,U),i=i+Math.imul(j,K)|0,n=(n=n+Math.imul(j,W)|0)+Math.imul(N,K)|0,a=a+Math.imul(N,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,V)|0)+Math.imul(S,J)|0,a=a+Math.imul(S,V)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,Q)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,Q)|0,i=i+Math.imul(v,Y)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(y,Y)|0,a=a+Math.imul(y,ee)|0,i=i+Math.imul(f,re)|0,n=(n=n+Math.imul(f,ie)|0)+Math.imul(m,re)|0,a=a+Math.imul(m,ie)|0;var Ee=(c+(i=i+Math.imul(h,ae)|0)|0)+((8191&(n=(n=n+Math.imul(h,oe)|0)+Math.imul(p,ae)|0))<<13)|0;c=((a=a+Math.imul(p,oe)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(R,L),n=(n=Math.imul(R,U))+Math.imul(P,L)|0,a=Math.imul(P,U),i=i+Math.imul(I,K)|0,n=(n=n+Math.imul(I,W)|0)+Math.imul(A,K)|0,a=a+Math.imul(A,W)|0,i=i+Math.imul(j,J)|0,n=(n=n+Math.imul(j,V)|0)+Math.imul(N,J)|0,a=a+Math.imul(N,V)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,Q)|0)+Math.imul(S,G)|0,a=a+Math.imul(S,Q)|0,i=i+Math.imul(b,Y)|0,n=(n=n+Math.imul(b,ee)|0)+Math.imul(w,Y)|0,a=a+Math.imul(w,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(y,re)|0,a=a+Math.imul(y,ie)|0,i=i+Math.imul(f,ae)|0,n=(n=n+Math.imul(f,oe)|0)+Math.imul(m,ae)|0,a=a+Math.imul(m,oe)|0;var ke=(c+(i=i+Math.imul(h,ue)|0)|0)+((8191&(n=(n=n+Math.imul(h,ce)|0)+Math.imul(p,ue)|0))<<13)|0;c=((a=a+Math.imul(p,ce)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(B,L),n=(n=Math.imul(B,U))+Math.imul(C,L)|0,a=Math.imul(C,U),i=i+Math.imul(R,K)|0,n=(n=n+Math.imul(R,W)|0)+Math.imul(P,K)|0,a=a+Math.imul(P,W)|0,i=i+Math.imul(I,J)|0,n=(n=n+Math.imul(I,V)|0)+Math.imul(A,J)|0,a=a+Math.imul(A,V)|0,i=i+Math.imul(j,G)|0,n=(n=n+Math.imul(j,Q)|0)+Math.imul(N,G)|0,a=a+Math.imul(N,Q)|0,i=i+Math.imul(k,Y)|0,n=(n=n+Math.imul(k,ee)|0)+Math.imul(S,Y)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(b,re)|0,n=(n=n+Math.imul(b,ie)|0)+Math.imul(w,re)|0,a=a+Math.imul(w,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,oe)|0)+Math.imul(y,ae)|0,a=a+Math.imul(y,oe)|0,i=i+Math.imul(f,ue)|0,n=(n=n+Math.imul(f,ce)|0)+Math.imul(m,ue)|0,a=a+Math.imul(m,ce)|0;var Se=(c+(i=i+Math.imul(h,he)|0)|0)+((8191&(n=(n=n+Math.imul(h,pe)|0)+Math.imul(p,he)|0))<<13)|0;c=((a=a+Math.imul(p,pe)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(F,L),n=(n=Math.imul(F,U))+Math.imul(D,L)|0,a=Math.imul(D,U),i=i+Math.imul(B,K)|0,n=(n=n+Math.imul(B,W)|0)+Math.imul(C,K)|0,a=a+Math.imul(C,W)|0,i=i+Math.imul(R,J)|0,n=(n=n+Math.imul(R,V)|0)+Math.imul(P,J)|0,a=a+Math.imul(P,V)|0,i=i+Math.imul(I,G)|0,n=(n=n+Math.imul(I,Q)|0)+Math.imul(A,G)|0,a=a+Math.imul(A,Q)|0,i=i+Math.imul(j,Y)|0,n=(n=n+Math.imul(j,ee)|0)+Math.imul(N,Y)|0,a=a+Math.imul(N,ee)|0,i=i+Math.imul(k,re)|0,n=(n=n+Math.imul(k,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(b,ae)|0,n=(n=n+Math.imul(b,oe)|0)+Math.imul(w,ae)|0,a=a+Math.imul(w,oe)|0,i=i+Math.imul(v,ue)|0,n=(n=n+Math.imul(v,ce)|0)+Math.imul(y,ue)|0,a=a+Math.imul(y,ce)|0,i=i+Math.imul(f,he)|0,n=(n=n+Math.imul(f,pe)|0)+Math.imul(m,he)|0,a=a+Math.imul(m,pe)|0;var xe=(c+(i=i+Math.imul(h,fe)|0)|0)+((8191&(n=(n=n+Math.imul(h,me)|0)+Math.imul(p,fe)|0))<<13)|0;c=((a=a+Math.imul(p,me)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(F,K),n=(n=Math.imul(F,W))+Math.imul(D,K)|0,a=Math.imul(D,W),i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,V)|0)+Math.imul(C,J)|0,a=a+Math.imul(C,V)|0,i=i+Math.imul(R,G)|0,n=(n=n+Math.imul(R,Q)|0)+Math.imul(P,G)|0,a=a+Math.imul(P,Q)|0,i=i+Math.imul(I,Y)|0,n=(n=n+Math.imul(I,ee)|0)+Math.imul(A,Y)|0,a=a+Math.imul(A,ee)|0,i=i+Math.imul(j,re)|0,n=(n=n+Math.imul(j,ie)|0)+Math.imul(N,re)|0,a=a+Math.imul(N,ie)|0,i=i+Math.imul(k,ae)|0,n=(n=n+Math.imul(k,oe)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,oe)|0,i=i+Math.imul(b,ue)|0,n=(n=n+Math.imul(b,ce)|0)+Math.imul(w,ue)|0,a=a+Math.imul(w,ce)|0,i=i+Math.imul(v,he)|0,n=(n=n+Math.imul(v,pe)|0)+Math.imul(y,he)|0,a=a+Math.imul(y,pe)|0;var je=(c+(i=i+Math.imul(f,fe)|0)|0)+((8191&(n=(n=n+Math.imul(f,me)|0)+Math.imul(m,fe)|0))<<13)|0;c=((a=a+Math.imul(m,me)|0)+(n>>>13)|0)+(je>>>26)|0,je&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,V))+Math.imul(D,J)|0,a=Math.imul(D,V),i=i+Math.imul(B,G)|0,n=(n=n+Math.imul(B,Q)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,Q)|0,i=i+Math.imul(R,Y)|0,n=(n=n+Math.imul(R,ee)|0)+Math.imul(P,Y)|0,a=a+Math.imul(P,ee)|0,i=i+Math.imul(I,re)|0,n=(n=n+Math.imul(I,ie)|0)+Math.imul(A,re)|0,a=a+Math.imul(A,ie)|0,i=i+Math.imul(j,ae)|0,n=(n=n+Math.imul(j,oe)|0)+Math.imul(N,ae)|0,a=a+Math.imul(N,oe)|0,i=i+Math.imul(k,ue)|0,n=(n=n+Math.imul(k,ce)|0)+Math.imul(S,ue)|0,a=a+Math.imul(S,ce)|0,i=i+Math.imul(b,he)|0,n=(n=n+Math.imul(b,pe)|0)+Math.imul(w,he)|0,a=a+Math.imul(w,pe)|0;var Ne=(c+(i=i+Math.imul(v,fe)|0)|0)+((8191&(n=(n=n+Math.imul(v,me)|0)+Math.imul(y,fe)|0))<<13)|0;c=((a=a+Math.imul(y,me)|0)+(n>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,i=Math.imul(F,G),n=(n=Math.imul(F,Q))+Math.imul(D,G)|0,a=Math.imul(D,Q),i=i+Math.imul(B,Y)|0,n=(n=n+Math.imul(B,ee)|0)+Math.imul(C,Y)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(R,re)|0,n=(n=n+Math.imul(R,ie)|0)+Math.imul(P,re)|0,a=a+Math.imul(P,ie)|0,i=i+Math.imul(I,ae)|0,n=(n=n+Math.imul(I,oe)|0)+Math.imul(A,ae)|0,a=a+Math.imul(A,oe)|0,i=i+Math.imul(j,ue)|0,n=(n=n+Math.imul(j,ce)|0)+Math.imul(N,ue)|0,a=a+Math.imul(N,ce)|0,i=i+Math.imul(k,he)|0,n=(n=n+Math.imul(k,pe)|0)+Math.imul(S,he)|0,a=a+Math.imul(S,pe)|0;var Me=(c+(i=i+Math.imul(b,fe)|0)|0)+((8191&(n=(n=n+Math.imul(b,me)|0)+Math.imul(w,fe)|0))<<13)|0;c=((a=a+Math.imul(w,me)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(F,Y),n=(n=Math.imul(F,ee))+Math.imul(D,Y)|0,a=Math.imul(D,ee),i=i+Math.imul(B,re)|0,n=(n=n+Math.imul(B,ie)|0)+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(R,ae)|0,n=(n=n+Math.imul(R,oe)|0)+Math.imul(P,ae)|0,a=a+Math.imul(P,oe)|0,i=i+Math.imul(I,ue)|0,n=(n=n+Math.imul(I,ce)|0)+Math.imul(A,ue)|0,a=a+Math.imul(A,ce)|0,i=i+Math.imul(j,he)|0,n=(n=n+Math.imul(j,pe)|0)+Math.imul(N,he)|0,a=a+Math.imul(N,pe)|0;var Ie=(c+(i=i+Math.imul(k,fe)|0)|0)+((8191&(n=(n=n+Math.imul(k,me)|0)+Math.imul(S,fe)|0))<<13)|0;c=((a=a+Math.imul(S,me)|0)+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(F,re),n=(n=Math.imul(F,ie))+Math.imul(D,re)|0,a=Math.imul(D,ie),i=i+Math.imul(B,ae)|0,n=(n=n+Math.imul(B,oe)|0)+Math.imul(C,ae)|0,a=a+Math.imul(C,oe)|0,i=i+Math.imul(R,ue)|0,n=(n=n+Math.imul(R,ce)|0)+Math.imul(P,ue)|0,a=a+Math.imul(P,ce)|0,i=i+Math.imul(I,he)|0,n=(n=n+Math.imul(I,pe)|0)+Math.imul(A,he)|0,a=a+Math.imul(A,pe)|0;var Ae=(c+(i=i+Math.imul(j,fe)|0)|0)+((8191&(n=(n=n+Math.imul(j,me)|0)+Math.imul(N,fe)|0))<<13)|0;c=((a=a+Math.imul(N,me)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(F,ae),n=(n=Math.imul(F,oe))+Math.imul(D,ae)|0,a=Math.imul(D,oe),i=i+Math.imul(B,ue)|0,n=(n=n+Math.imul(B,ce)|0)+Math.imul(C,ue)|0,a=a+Math.imul(C,ce)|0,i=i+Math.imul(R,he)|0,n=(n=n+Math.imul(R,pe)|0)+Math.imul(P,he)|0,a=a+Math.imul(P,pe)|0;var Te=(c+(i=i+Math.imul(I,fe)|0)|0)+((8191&(n=(n=n+Math.imul(I,me)|0)+Math.imul(A,fe)|0))<<13)|0;c=((a=a+Math.imul(A,me)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(F,ue),n=(n=Math.imul(F,ce))+Math.imul(D,ue)|0,a=Math.imul(D,ce),i=i+Math.imul(B,he)|0,n=(n=n+Math.imul(B,pe)|0)+Math.imul(C,he)|0,a=a+Math.imul(C,pe)|0;var Re=(c+(i=i+Math.imul(R,fe)|0)|0)+((8191&(n=(n=n+Math.imul(R,me)|0)+Math.imul(P,fe)|0))<<13)|0;c=((a=a+Math.imul(P,me)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(F,he),n=(n=Math.imul(F,pe))+Math.imul(D,he)|0,a=Math.imul(D,pe);var Pe=(c+(i=i+Math.imul(B,fe)|0)|0)+((8191&(n=(n=n+Math.imul(B,me)|0)+Math.imul(C,fe)|0))<<13)|0;c=((a=a+Math.imul(C,me)|0)+(n>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var Oe=(c+(i=Math.imul(F,fe))|0)+((8191&(n=(n=Math.imul(F,me))+Math.imul(D,fe)|0))<<13)|0;return c=((a=Math.imul(D,me))+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ve,u[2]=ye,u[3]=_e,u[4]=be,u[5]=we,u[6]=Ee,u[7]=ke,u[8]=Se,u[9]=xe,u[10]=je,u[11]=Ne,u[12]=Me,u[13]=Ie,u[14]=Ae,u[15]=Te,u[16]=Re,u[17]=Pe,u[18]=Oe,0!==c&&(u[19]=c,r.length++),r};function m(e,t,r){return(new g).mulp(e,t,r)}function g(e,t){this.x=e,this.y=t}Math.imul||(f=d),a.prototype.mulTo=function(e,t){var r,i=this.length+e.length;return r=10===this.length&&10===e.length?f(this,e,t):i<63?d(this,e,t):i<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,i=o,o=n}return 0!==i?r.words[a]=i:r.length--,r.strip()}(this,e,t):m(this,e,t),r},g.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},g.prototype.permute=function(e,t,r,i,n,a){for(var o=0;o>>=1)n++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*t;o>=26,t+=n/67108864|0,t+=a>>>26,this.words[r]=67108863&a}return 0!==t&&(this.words[r]=t,this.length++),this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n}return t}(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,o=Math.min((e-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,c=0;c=0&&(0!==l||c>=n);c--){var h=0|this.words[c];this.words[c]=l<<26-a|h>>>a,l=h&s}return u&&0!==l&&(u.words[u.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===s)return this.strip();for(i(-1===s),s=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,o=0|n.words[n.length-1];0!=(r=26-this._countBits(o))&&(n=n.ushln(r),i.iushln(r),o=0|n.words[n.length-1]);var s,u=i.length-n.length;if("mod"!==t){(s=new a(null)).length=u+1,s.words=new Array(s.length);for(var c=0;c=0;h--){var p=67108864*(0|i.words[n.length+h])+(0|i.words[n.length+h-1]);for(p=Math.min(p/o|0,67108863),i._ishlnsubmul(n,p,h);0!==i.negative;)p--,i.negative=0,i._ishlnsubmul(n,1,h),i.isZero()||(i.negative^=1);s&&(s.words[h]=p)}return s&&s.strip(),i.strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(n=s.div.neg()),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:n,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modn(e.words[0]))}:this._wordDiv(e,t);var n,o,s},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modn=function(e){i(e<=67108863);for(var t=(1<<26)%e,r=0,n=this.length-1;n>=0;n--)r=(t*r+(0|this.words[n]))%e;return r},a.prototype.idivn=function(e){i(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*t;this.words[r]=n/e|0,t=n%e}return this.strip()},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new a(1),o=new a(0),s=new a(0),u=new a(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var l=r.clone(),h=t.clone();!t.isZero();){for(var p=0,d=1;0==(t.words[0]&d)&&p<26;++p,d<<=1);if(p>0)for(t.iushrn(p);p-- >0;)(n.isOdd()||o.isOdd())&&(n.iadd(l),o.isub(h)),n.iushrn(1),o.iushrn(1);for(var f=0,m=1;0==(r.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(r.iushrn(f);f-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(l),u.isub(h)),s.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(s),o.isub(u)):(r.isub(t),s.isub(n),u.isub(o))}return{a:s,b:u,gcd:r.iushln(c)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,o=new a(1),s=new a(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,l=1;0==(t.words[0]&l)&&c<26;++c,l<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);for(var h=0,p=1;0==(r.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s)):(r.isub(t),s.isub(o))}return(n=0===t.cmpn(1)?o:s).cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new k(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var v={k256:null,p224:null,p192:null,p25519:null};function y(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function _(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function E(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(e){if("string"==typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function S(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},y.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},y.prototype.split=function(e,t){e.iushrn(this.n,0,t)},y.prototype.imulK=function(e){return e.imul(this.k)},n(_,y),_.prototype.split=function(e,t){for(var r=4194303,i=Math.min(e.length,9),n=0;n>>22,a=o}a>>>=22,e.words[n-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},_.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(v[e])return v[e];var t;if("k256"===e)t=new _;else if("p224"===e)t=new b;else if("p192"===e)t=new w;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new E}return v[e]=t,t},k.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},k.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),o=0;!n.isZero()&&0===n.andln(1);)o++,n.iushrn(1);i(!n.isZero());var s=new a(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new a(2*l*l).toRed(this);0!==this.pow(l,c).cmp(u);)l.redIAdd(u);for(var h=this.pow(l,n),p=this.pow(e,n.addn(1).iushrn(1)),d=this.pow(e,n),f=o;0!==d.cmp(s);){for(var m=d,g=0;0!==m.cmp(s);g++)m=m.redSqr();i(g=0;i--){for(var c=t.words[i],l=u-1;l>=0;l--){var h=c>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==h||0!==o?(o<<=1,o|=h,(4==++s||0===i&&0===l)&&(n=this.mul(n,r[o]),s=0,o=0)):s=0}u=26}return n},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new S(e)},n(S,k),S.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},S.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},S.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},S.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=r.nmd(e),this)},83407:e=>{e.exports={newInvalidAsn1Error:function(e){var t=new Error;return t.name="InvalidAsn1Error",t.message=e||"",t}}},20279:(e,t,r)=>{var i=r(83407),n=r(34478),a=r(24578),o=r(3609);for(var s in e.exports={Reader:a,Writer:o},n)n.hasOwnProperty(s)&&(e.exports[s]=n[s]);for(var u in i)i.hasOwnProperty(u)&&(e.exports[u]=i[u])},24578:(e,t,r)=>{var i=r(69282),n=r(2399).Buffer,a=r(34478),o=r(83407).newInvalidAsn1Error;function s(e){if(!e||!n.isBuffer(e))throw new TypeError("data must be a node Buffer");this._buf=e,this._size=e.length,this._len=0,this._offset=0}Object.defineProperty(s.prototype,"length",{enumerable:!0,get:function(){return this._len}}),Object.defineProperty(s.prototype,"offset",{enumerable:!0,get:function(){return this._offset}}),Object.defineProperty(s.prototype,"remain",{get:function(){return this._size-this._offset}}),Object.defineProperty(s.prototype,"buffer",{get:function(){return this._buf.slice(this._offset)}}),s.prototype.readByte=function(e){if(this._size-this._offset<1)return null;var t=255&this._buf[this._offset];return e||(this._offset+=1),t},s.prototype.peek=function(){return this.readByte(!0)},s.prototype.readLength=function(e){if(void 0===e&&(e=this._offset),e>=this._size)return null;var t=255&this._buf[e++];if(null===t)return null;if(128==(128&t)){if(0==(t&=127))throw o("Indefinite length not supported");if(t>4)throw o("encoding too long");if(this._size-ethis._size-i)return null;if(this._offset=i,0===this.length)return t?n.alloc(0):"";var s=this._buf.slice(this._offset,this._offset+this.length);return this._offset+=this.length,t?s:s.toString("utf8")},s.prototype.readOID=function(e){e||(e=a.OID);var t=this.readString(e,!0);if(null===t)return null;for(var r=[],i=0,n=0;n>0),r.join(".")},s.prototype._readTag=function(e){i.ok(void 0!==e);var t=this.peek();if(null===t)return null;if(t!==e)throw o("Expected 0x"+e.toString(16)+": got 0x"+t.toString(16));var r=this.readLength(this._offset+1);if(null===r)return null;if(this.length>4)throw o("Integer too long: "+this.length);if(this.length>this._size-r)return null;this._offset=r;for(var n=this._buf[this._offset],a=0,s=0;s>0},e.exports=s},34478:e=>{e.exports={EOC:0,Boolean:1,Integer:2,BitString:3,OctetString:4,Null:5,OID:6,ObjectDescriptor:7,External:8,Real:9,Enumeration:10,PDV:11,Utf8String:12,RelativeOID:13,Sequence:16,Set:17,NumericString:18,PrintableString:19,T61String:20,VideotexString:21,IA5String:22,UTCTime:23,GeneralizedTime:24,GraphicString:25,VisibleString:26,GeneralString:28,UniversalString:29,CharacterString:30,BMPString:31,Constructor:32,Context:128}},3609:(e,t,r)=>{var i=r(69282),n=r(2399).Buffer,a=r(34478),o=r(83407).newInvalidAsn1Error,s={size:1024,growthFactor:8};function u(e){var t,r;t=s,r=e||{},i.ok(t),i.equal(typeof t,"object"),i.ok(r),i.equal(typeof r,"object"),Object.getOwnPropertyNames(t).forEach((function(e){if(!r[e]){var i=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(r,e,i)}})),e=r,this._buf=n.alloc(e.size||1024),this._size=this._buf.length,this._offset=0,this._options=e,this._seq=[]}Object.defineProperty(u.prototype,"buffer",{get:function(){if(this._seq.length)throw o(this._seq.length+" unended sequence(s)");return this._buf.slice(0,this._offset)}}),u.prototype.writeByte=function(e){if("number"!=typeof e)throw new TypeError("argument must be a Number");this._ensure(1),this._buf[this._offset++]=e},u.prototype.writeInt=function(e,t){if("number"!=typeof e)throw new TypeError("argument must be a Number");"number"!=typeof t&&(t=a.Integer);for(var r=4;(0==(4286578688&e)||-8388608==(4286578688&e))&&r>1;)r--,e<<=8;if(r>4)throw o("BER ints cannot be > 0xffffffff");for(this._ensure(2+r),this._buf[this._offset++]=t,this._buf[this._offset++]=r;r-- >0;)this._buf[this._offset++]=(4278190080&e)>>>24,e<<=8},u.prototype.writeNull=function(){this.writeByte(a.Null),this.writeByte(0)},u.prototype.writeEnumeration=function(e,t){if("number"!=typeof e)throw new TypeError("argument must be a Number");return"number"!=typeof t&&(t=a.Enumeration),this.writeInt(e,t)},u.prototype.writeBoolean=function(e,t){if("boolean"!=typeof e)throw new TypeError("argument must be a Boolean");"number"!=typeof t&&(t=a.Boolean),this._ensure(3),this._buf[this._offset++]=t,this._buf[this._offset++]=1,this._buf[this._offset++]=e?255:0},u.prototype.writeString=function(e,t){if("string"!=typeof e)throw new TypeError("argument must be a string (was: "+typeof e+")");"number"!=typeof t&&(t=a.OctetString);var r=n.byteLength(e);this.writeByte(t),this.writeLength(r),r&&(this._ensure(r),this._buf.write(e,this._offset),this._offset+=r)},u.prototype.writeBuffer=function(e,t){if("number"!=typeof t)throw new TypeError("tag must be a number");if(!n.isBuffer(e))throw new TypeError("argument must be a buffer");this.writeByte(t),this.writeLength(e.length),this._ensure(e.length),e.copy(this._buf,this._offset,0,e.length),this._offset+=e.length},u.prototype.writeStringArray=function(e){if(!e instanceof Array)throw new TypeError("argument must be an Array[String]");var t=this;e.forEach((function(e){t.writeString(e)}))},u.prototype.writeOID=function(e,t){if("string"!=typeof e)throw new TypeError("argument must be a string");if("number"!=typeof t&&(t=a.OID),!/^([0-9]+\.){3,}[0-9]+$/.test(e))throw new Error("argument is not a valid OID string");var r=e.split("."),i=[];i.push(40*parseInt(r[0],10)+parseInt(r[1],10)),r.slice(2).forEach((function(e){!function(e,t){t<128?e.push(t):t<16384?(e.push(t>>>7|128),e.push(127&t)):t<2097152?(e.push(t>>>14|128),e.push(255&(t>>>7|128)),e.push(127&t)):t<268435456?(e.push(t>>>21|128),e.push(255&(t>>>14|128)),e.push(255&(t>>>7|128)),e.push(127&t)):(e.push(255&(t>>>28|128)),e.push(255&(t>>>21|128)),e.push(255&(t>>>14|128)),e.push(255&(t>>>7|128)),e.push(127&t))}(i,parseInt(e,10))}));var n=this;this._ensure(2+i.length),this.writeByte(t),this.writeLength(i.length),i.forEach((function(e){n.writeByte(e)}))},u.prototype.writeLength=function(e){if("number"!=typeof e)throw new TypeError("argument must be a Number");if(this._ensure(4),e<=127)this._buf[this._offset++]=e;else if(e<=255)this._buf[this._offset++]=129,this._buf[this._offset++]=e;else if(e<=65535)this._buf[this._offset++]=130,this._buf[this._offset++]=e>>8,this._buf[this._offset++]=e;else{if(!(e<=16777215))throw o("Length too long (> 4 bytes)");this._buf[this._offset++]=131,this._buf[this._offset++]=e>>16,this._buf[this._offset++]=e>>8,this._buf[this._offset++]=e}},u.prototype.startSequence=function(e){"number"!=typeof e&&(e=a.Sequence|a.Constructor),this.writeByte(e),this._seq.push(this._offset),this._ensure(3),this._offset+=3},u.prototype.endSequence=function(){var e=this._seq.pop(),t=e+3,r=this._offset-t;if(r<=127)this._shift(t,r,-2),this._buf[e]=r;else if(r<=255)this._shift(t,r,-1),this._buf[e]=129,this._buf[e+1]=r;else if(r<=65535)this._buf[e]=130,this._buf[e+1]=r>>8,this._buf[e+2]=r;else{if(!(r<=16777215))throw o("Sequence too long");this._shift(t,r,1),this._buf[e]=131,this._buf[e+1]=r>>16,this._buf[e+2]=r>>8,this._buf[e+3]=r}},u.prototype._shift=function(e,t,r){i.ok(void 0!==e),i.ok(void 0!==t),i.ok(r),this._buf.copy(this._buf,e+r,e,e+t),this._offset+=r},u.prototype._ensure=function(e){if(i.ok(e),this._size-this._offset{var i=r(20279);e.exports={Ber:i,BerReader:i.Reader,BerWriter:i.Writer}},6144:(e,t,r)=>{var i=r(48764).Buffer,n=r(34155),a=r(69282),o=r(42830).Stream,s=r(89539),u=/^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;function c(e){return e.charAt(0).toUpperCase()+e.slice(1)}function l(e,t,r,i,n){throw new a.AssertionError({message:s.format("%s (%s) is required",e,t),actual:void 0===n?typeof i:n(i),expected:t,operator:r||"===",stackStartFunction:l.caller})}function h(e){return Object.prototype.toString.call(e).slice(8,-1)}function p(){}var d={bool:{check:function(e){return"boolean"==typeof e}},func:{check:function(e){return"function"==typeof e}},string:{check:function(e){return"string"==typeof e}},object:{check:function(e){return"object"==typeof e&&null!==e}},number:{check:function(e){return"number"==typeof e&&!isNaN(e)}},finite:{check:function(e){return"number"==typeof e&&!isNaN(e)&&isFinite(e)}},buffer:{check:function(e){return i.isBuffer(e)},operator:"Buffer.isBuffer"},array:{check:function(e){return Array.isArray(e)},operator:"Array.isArray"},stream:{check:function(e){return e instanceof o},operator:"instanceof",actual:h},date:{check:function(e){return e instanceof Date},operator:"instanceof",actual:h},regexp:{check:function(e){return e instanceof RegExp},operator:"instanceof",actual:h},uuid:{check:function(e){return"string"==typeof e&&u.test(e)},operator:"isUUID"}};e.exports=function e(t){var r,i=Object.keys(d);return r=n.env.NODE_NDEBUG?p:function(e,t){e||l(t,"true",e)},i.forEach((function(e){if(t)r[e]=p;else{var i=d[e];r[e]=function(t,r){i.check(t)||l(r,e,i.operator,t,i.actual)}}})),i.forEach((function(e){var i="optional"+c(e);if(t)r[i]=p;else{var n=d[e];r[i]=function(t,r){null!=t&&(n.check(t)||l(r,e,n.operator,t,n.actual))}}})),i.forEach((function(e){var i="arrayOf"+c(e);if(t)r[i]=p;else{var n=d[e],a="["+e+"]";r[i]=function(e,t){var r;for(Array.isArray(e)||l(t,a,n.operator,e,n.actual),r=0;r{"use strict";var i=r(34155);function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}var a,o,s=r(62136).codes,u=s.ERR_AMBIGUOUS_ARGUMENT,c=s.ERR_INVALID_ARG_TYPE,l=s.ERR_INVALID_ARG_VALUE,h=s.ERR_INVALID_RETURN_VALUE,p=s.ERR_MISSING_ARGS,d=r(25961),f=r(89539).inspect,m=r(89539).types,g=m.isPromise,v=m.isRegExp,y=Object.assign?Object.assign:r(8091).assign,_=Object.is?Object.is:r(20609);function b(){var e=r(19158);a=e.isDeepEqual,o=e.isDeepStrictEqual}new Map;var w=!1,E=e.exports=j,k={};function S(e){if(e.message instanceof Error)throw e.message;throw new d(e)}function x(e,t,r,i){if(!r){var n=!1;if(0===t)n=!0,i="No value argument passed to `assert.ok()`";else if(i instanceof Error)throw i;var a=new d({actual:r,expected:!0,message:i,operator:"==",stackStartFn:e});throw a.generatedMessage=n,a}}function j(){for(var e=arguments.length,t=new Array(e),r=0;r1?r-1:0),n=1;n1?r-1:0),n=1;n1?r-1:0),n=1;n1?r-1:0),n=1;n{"use strict";var i=r(34155);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){for(var r=0;re.length)&&(r=e.length),e.substring(r-t.length,r)===t}var v="",y="",_="",b="",w={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"};function E(e){var t=Object.keys(e),r=Object.create(Object.getPrototypeOf(e));return t.forEach((function(t){r[t]=e[t]})),Object.defineProperty(r,"message",{value:e.message}),r}function k(e){return f(e,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}var S=function(e){function t(e){var r;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),"object"!==d(e)||null===e)throw new m("options","Object",e);var n=e.message,a=e.operator,u=e.stackStartFn,c=e.actual,l=e.expected,h=Error.stackTraceLimit;if(Error.stackTraceLimit=0,null!=n)r=o(this,p(t).call(this,String(n)));else if(i.stderr&&i.stderr.isTTY&&(i.stderr&&i.stderr.getColorDepth&&1!==i.stderr.getColorDepth()?(v="",y="",b="",_=""):(v="",y="",b="",_="")),"object"===d(c)&&null!==c&&"object"===d(l)&&null!==l&&"stack"in c&&c instanceof Error&&"stack"in l&&l instanceof Error&&(c=E(c),l=E(l)),"deepStrictEqual"===a||"strictEqual"===a)r=o(this,p(t).call(this,function(e,t,r){var n="",a="",o=0,s="",u=!1,c=k(e),l=c.split("\n"),h=k(t).split("\n"),p=0,f="";if("strictEqual"===r&&"object"===d(e)&&"object"===d(t)&&null!==e&&null!==t&&(r="strictEqualObject"),1===l.length&&1===h.length&&l[0]!==h[0]){var m=l[0].length+h[0].length;if(m<=10){if(!("object"===d(e)&&null!==e||"object"===d(t)&&null!==t||0===e&&0===t))return"".concat(w[r],"\n\n")+"".concat(l[0]," !== ").concat(h[0],"\n")}else if("strictEqualObject"!==r&&m<(i.stderr&&i.stderr.isTTY?i.stderr.columns:80)){for(;l[0][p]===h[0][p];)p++;p>2&&(f="\n ".concat(function(e,t){if(t=Math.floor(t),0==e.length||0==t)return"";var r=e.length*t;for(t=Math.floor(Math.log(t)/Math.log(2));t;)e+=e,t--;return e+e.substring(0,r-e.length)}(" ",p),"^"),p=0)}}for(var E=l[l.length-1],S=h[h.length-1];E===S&&(p++<2?s="\n ".concat(E).concat(s):n=E,l.pop(),h.pop(),0!==l.length&&0!==h.length);)E=l[l.length-1],S=h[h.length-1];var x=Math.max(l.length,h.length);if(0===x){var j=c.split("\n");if(j.length>30)for(j[26]="".concat(v,"...").concat(b);j.length>27;)j.pop();return"".concat(w.notIdentical,"\n\n").concat(j.join("\n"),"\n")}p>3&&(s="\n".concat(v,"...").concat(b).concat(s),u=!0),""!==n&&(s="\n ".concat(n).concat(s),n="");var N=0,M=w[r]+"\n".concat(y,"+ actual").concat(b," ").concat(_,"- expected").concat(b),I=" ".concat(v,"...").concat(b," Lines skipped");for(p=0;p1&&p>2&&(A>4?(a+="\n".concat(v,"...").concat(b),u=!0):A>3&&(a+="\n ".concat(h[p-2]),N++),a+="\n ".concat(h[p-1]),N++),o=p,n+="\n".concat(_,"-").concat(b," ").concat(h[p]),N++;else if(h.length1&&p>2&&(A>4?(a+="\n".concat(v,"...").concat(b),u=!0):A>3&&(a+="\n ".concat(l[p-2]),N++),a+="\n ".concat(l[p-1]),N++),o=p,a+="\n".concat(y,"+").concat(b," ").concat(l[p]),N++;else{var T=h[p],R=l[p],P=R!==T&&(!g(R,",")||R.slice(0,-1)!==T);P&&g(T,",")&&T.slice(0,-1)===R&&(P=!1,R+=","),P?(A>1&&p>2&&(A>4?(a+="\n".concat(v,"...").concat(b),u=!0):A>3&&(a+="\n ".concat(l[p-2]),N++),a+="\n ".concat(l[p-1]),N++),o=p,a+="\n".concat(y,"+").concat(b," ").concat(R),n+="\n".concat(_,"-").concat(b," ").concat(T),N+=2):(a+=n,n="",1!==A&&0!==p||(a+="\n ".concat(R),N++))}if(N>20&&p30)for(S[26]="".concat(v,"...").concat(b);S.length>27;)S.pop();r=1===S.length?o(this,p(t).call(this,"".concat(f," ").concat(S[0]))):o(this,p(t).call(this,"".concat(f,"\n\n").concat(S.join("\n"),"\n")))}else{var x=k(c),j="",N=w[a];"notDeepEqual"===a||"notEqual"===a?(x="".concat(w[a],"\n\n").concat(x)).length>1024&&(x="".concat(x.slice(0,1021),"...")):(j="".concat(k(l)),x.length>512&&(x="".concat(x.slice(0,509),"...")),j.length>512&&(j="".concat(j.slice(0,509),"...")),"deepEqual"===a||"equal"===a?x="".concat(N,"\n\n").concat(x,"\n\nshould equal\n\n"):j=" ".concat(a," ").concat(j)),r=o(this,p(t).call(this,"".concat(x).concat(j)))}return Error.stackTraceLimit=h,r.generatedMessage=!n,Object.defineProperty(s(r),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),r.code="ERR_ASSERTION",r.actual=c,r.expected=l,r.operator=a,Error.captureStackTrace&&Error.captureStackTrace(s(r),u),r.stack,r.name="AssertionError",o(r)}var r,u;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&h(e,t)}(t,e),r=t,u=[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:f.custom,value:function(e,t){return f(this,function(e){for(var t=1;t{"use strict";function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function n(e){return n=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},n(e)}function a(e,t){return a=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},a(e,t)}var o,s,u={};function c(e,t,r){r||(r=Error);var o=function(r){function o(r,a,s){var u;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,o),u=function(e,t){return!t||"object"!==i(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}(this,n(o).call(this,function(e,r,i){return"string"==typeof t?t:t(e,r,i)}(r,a,s))),u.code=e,u}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&a(e,t)}(o,r),o}(r);u[e]=o}function l(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map((function(e){return String(e)})),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:2===r?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}return"of ".concat(t," ").concat(String(e))}c("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError),c("ERR_INVALID_ARG_TYPE",(function(e,t,n){var a,s,u,c,h;if(void 0===o&&(o=r(69282)),o("string"==typeof e,"'name' must be a string"),"string"==typeof t&&(s="not ",t.substr(0,s.length)===s)?(a="must not be",t=t.replace(/^not /,"")):a="must be",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e," argument"))u="The ".concat(e," ").concat(a," ").concat(l(t,"type"));else{var p=("number"!=typeof h&&(h=0),h+".".length>(c=e).length||-1===c.indexOf(".",h)?"argument":"property");u='The "'.concat(e,'" ').concat(p," ").concat(a," ").concat(l(t,"type"))}return u+". Received type ".concat(i(n))}),TypeError),c("ERR_INVALID_ARG_VALUE",(function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"is invalid";void 0===s&&(s=r(89539));var n=s.inspect(t);return n.length>128&&(n="".concat(n.slice(0,128),"...")),"The argument '".concat(e,"' ").concat(i,". Received ").concat(n)}),TypeError,RangeError),c("ERR_INVALID_RETURN_VALUE",(function(e,t,r){var n;return n=r&&r.constructor&&r.constructor.name?"instance of ".concat(r.constructor.name):"type ".concat(i(r)),"Expected ".concat(e,' to be returned from the "').concat(t,'"')+" function but got ".concat(n,".")}),TypeError),c("ERR_MISSING_ARGS",(function(){for(var e=arguments.length,t=new Array(e),i=0;i0,"At least one arg needs to be specified");var n="The ",a=t.length;switch(t=t.map((function(e){return'"'.concat(e,'"')})),a){case 1:n+="".concat(t[0]," argument");break;case 2:n+="".concat(t[0]," and ").concat(t[1]," arguments");break;default:n+=t.slice(0,a-1).join(", "),n+=", and ".concat(t[a-1]," arguments")}return"".concat(n," must be specified")}),TypeError),e.exports.codes=u},19158:(e,t,r)=>{"use strict";function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=[],i=!0,n=!1,a=void 0;try{for(var o,s=e[Symbol.iterator]();!(i=(o=s.next()).done)&&(r.push(o.value),!t||r.length!==t);i=!0);}catch(e){n=!0,a=e}finally{try{i||null==s.return||s.return()}finally{if(n)throw a}}return r}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}var a=void 0!==/a/g.flags,o=function(e){var t=[];return e.forEach((function(e){return t.push(e)})),t},s=function(e){var t=[];return e.forEach((function(e,r){return t.push([r,e])})),t},u=Object.is?Object.is:r(20609),c=Object.getOwnPropertySymbols?Object.getOwnPropertySymbols:function(){return[]},l=Number.isNaN?Number.isNaN:r(20360);function h(e){return e.call.bind(e)}var p=h(Object.prototype.hasOwnProperty),d=h(Object.prototype.propertyIsEnumerable),f=h(Object.prototype.toString),m=r(89539).types,g=m.isAnyArrayBuffer,v=m.isArrayBufferView,y=m.isDate,_=m.isMap,b=m.isRegExp,w=m.isSet,E=m.isNativeError,k=m.isBoxedPrimitive,S=m.isNumberObject,x=m.isStringObject,j=m.isBooleanObject,N=m.isBigIntObject,M=m.isSymbolObject,I=m.isFloat32Array,A=m.isFloat64Array;function T(e){if(0===e.length||e.length>10)return!0;for(var t=0;t57)return!0}return 10===e.length&&e>=Math.pow(2,32)}function R(e){return Object.keys(e).filter(T).concat(c(e).filter(Object.prototype.propertyIsEnumerable.bind(e)))}function P(e,t){if(e===t)return 0;for(var r=e.length,i=t.length,n=0,a=Math.min(r,i);n-1&&e%1==0&&e<=9007199254740991}function R(e){return null!=e&&T(e.length)&&!function(e){if(!s(e))return!1;var t=A(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}(e)}var P={};function O(){}function B(e){return function(){if(null!==e){var t=e;e=null,t.apply(this,arguments)}}}var C="function"==typeof Symbol&&Symbol.iterator;function z(e){return null!=e&&"object"==typeof e}function F(e){return z(e)&&"[object Arguments]"==A(e)}var D=Object.prototype,q=D.hasOwnProperty,L=D.propertyIsEnumerable,U=F(function(){return arguments}())?F:function(e){return z(e)&&q.call(e,"callee")&&!L.call(e,"callee")},H=Array.isArray;var K="object"==typeof t&&t&&!t.nodeType&&t,W=K&&e&&!e.nodeType&&e,Z=W&&W.exports===K?E.Buffer:void 0,J=(Z?Z.isBuffer:void 0)||function(){return!1},V=/^(?:0|[1-9]\d*)$/;function $(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&V.test(e))&&e>-1&&e%1==0&&e2&&(i=n(arguments,1)),t){var c={};Ae(a,(function(e,t){c[t]=e})),c[e]=i,s=!0,u=Object.create(null),r(t,c)}else a[e]=i,f(e)}));o++;var c=y(t[t.length-1]);t.length>1?c(a,i):c(i)}}(e,t)}))}function d(){if(0===c.length&&0===o)return r(null,a);for(;c.length&&o=0&&r.push(i)})),r}Ae(e,(function(t,r){if(!H(t))return p(r,[t]),void l.push(r);var i=t.slice(0,t.length-1),n=i.length;if(0===n)return p(r,t),void l.push(r);h[r]=n,Ne(i,(function(a){if(!e[a])throw new Error("async.auto task `"+r+"` has a non-existent dependency `"+a+"` in "+i.join(", "));var o,s,c;s=function(){0==--n&&p(r,t)},(c=u[o=a])||(c=u[o]=[]),c.push(s)}))})),function(){for(var e=0;l.length;)e++,Ne(m(l.pop()),(function(e){0==--h[e]&&l.push(e)}));if(e!==i)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}(),d()};function Oe(e,t){for(var r=-1,i=null==e?0:e.length,n=Array(i);++r=i?e:function(e,t,r){var i=-1,n=e.length;t<0&&(t=-t>n?0:n+t),(r=r>n?n:r)<0&&(r+=n),n=t>r?0:r-t>>>0,t>>>=0;for(var a=Array(n);++i-1;);return r}(n,a),function(e,t){for(var r=e.length;r--&&Re(t,e[r],0)>-1;);return r}(n,a)+1).join("")}var et=/^(?:async\s+)?(function)?\s*[^\(]*\(\s*([^\)]*)\)/m,tt=/,/,rt=/(=.+)?(\s*)$/,it=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;function nt(e,t){var r={};Ae(e,(function(e,t){var i,n=v(e),a=!n&&1===e.length||n&&0===e.length;if(H(e))i=e.slice(0,-1),e=e[e.length-1],r[t]=i.concat(i.length>0?o:e);else if(a)r[t]=e;else{if(i=function(e){return(e=(e=(e=e.toString().replace(it,"")).match(et)[2].replace(" ",""))?e.split(tt):[]).map((function(e){return Ye(e.replace(rt,""))}))}(e),0===e.length&&!n&&0===i.length)throw new Error("autoInject task functions require explicit parameters.");n||i.pop(),r[t]=i.concat(o)}function o(t,r){var n=Oe(i,(function(e){return t[e]}));n.push(r),y(e).apply(null,n)}})),Pe(r,t)}function at(){this.head=this.tail=null,this.length=0}function ot(e,t){e.length=1,e.head=e.tail=t}function st(e,t,r){if(null==t)t=1;else if(0===t)throw new Error("Concurrency must not be zero");var i=y(e),n=0,a=[],o=!1;function s(e,t,r){if(null!=r&&"function"!=typeof r)throw new Error("task callback must be a function");if(l.started=!0,H(e)||(e=[e]),0===e.length&&l.idle())return p((function(){l.drain()}));for(var i=0,n=e.length;i0&&a.splice(s,1),o.callback.apply(o,arguments),null!=t&&l.error(t,o.data)}n<=l.concurrency-l.buffer&&l.unsaturated(),l.idle()&&l.drain(),l.process()}}var c=!1,l={_tasks:new at,concurrency:t,payload:r,saturated:O,unsaturated:O,buffer:t/4,empty:O,drain:O,error:O,started:!1,paused:!1,push:function(e,t){s(e,!1,t)},kill:function(){l.drain=O,l._tasks.empty()},unshift:function(e,t){s(e,!0,t)},remove:function(e){l._tasks.remove(e)},process:function(){if(!c){for(c=!0;!l.paused&&n2&&(a=n(arguments,1)),i[t]=a,r(e)}))}),(function(e){r(e,i)}))}function nr(e,t){ir(ye,e,t)}function ar(e,t,r){ir(de(t),e,r)}var or=function(e,t){var r=y(e);return st((function(e,t){r(e[0],t)}),t,1)},sr=function(e,t){var r=or(e,t);return r.push=function(e,t,i){if(null==i&&(i=O),"function"!=typeof i)throw new Error("task callback must be a function");if(r.started=!0,H(e)||(e=[e]),0===e.length)return p((function(){r.drain()}));t=t||0;for(var n=r._tasks.head;n&&t>=n.priority;)n=n.next;for(var a=0,o=e.length;ai?1:0}we(e,(function(e,t){i(e,(function(r,i){if(r)return t(r);t(null,{value:e,criteria:i})}))}),(function(e,t){if(e)return r(e);r(null,Oe(t.sort(n),Dt("value")))}))}function Sr(e,t,r){var i=y(e);return o((function(n,a){var o,s=!1;n.push((function(){s||(a.apply(null,arguments),clearTimeout(o))})),o=setTimeout((function(){var t=e.name||"anonymous",i=new Error('Callback function "'+t+'" timed out.');i.code="ETIMEDOUT",r&&(i.info=r),s=!0,a(i)}),t),i.apply(null,n)}))}var xr=Math.ceil,jr=Math.max;function Nr(e,t,r,i){var n=y(r);Se(function(e,t,r,i){for(var n=-1,a=jr(xr((t-e)/(r||1)),0),o=Array(a);a--;)o[i?a:++n]=e,e+=r;return o}(0,e,1),t,n,i)}var Mr=me(Nr,1/0),Ir=me(Nr,1);function Ar(e,t,r,i){arguments.length<=3&&(i=r,r=t,t=H(e)?[]:{}),i=B(i||O);var n=y(r);ye(e,(function(e,r,i){n(t,e,r,i)}),(function(e){i(e,t)}))}function Tr(e,t){var r,i=null;t=t||O,Pt(e,(function(e,t){y(e)((function(e,a){r=arguments.length>2?n(arguments,1):a,i=e,t(!e)}))}),(function(){t(i,r)}))}function Rr(e){return function(){return(e.unmemoized||e).apply(null,arguments)}}function Pr(e,t,r){r=pe(r||O);var i=y(t);if(!e())return r(null);var a=function(t){if(t)return r(t);if(e())return i(a);var o=n(arguments,1);r.apply(null,[null].concat(o))};i(a)}function Or(e,t,r){Pr((function(){return!e.apply(this,arguments)}),t,r)}var Br=function(e,t){if(t=B(t||O),!H(e))return t(new Error("First argument to waterfall must be an array of functions"));if(!e.length)return t();var r=0;function i(t){var i=y(e[r++]);t.push(pe(a)),i.apply(null,t)}function a(a){if(a||r===e.length)return t.apply(null,arguments);i(n(arguments,1))}i([])},Cr={apply:a,applyEach:Ee,applyEachSeries:je,asyncify:d,auto:Pe,autoInject:nt,cargo:ut,compose:pt,concat:mt,concatLimit:ft,concatSeries:gt,constant:vt,detect:wt,detectLimit:Et,detectSeries:kt,dir:xt,doDuring:jt,doUntil:Mt,doWhilst:Nt,during:It,each:Tt,eachLimit:Rt,eachOf:ye,eachOfLimit:fe,eachOfSeries:ct,eachSeries:Pt,ensureAsync:Ot,every:Ct,everyLimit:zt,everySeries:Ft,filter:Ht,filterLimit:Kt,filterSeries:Wt,forever:Zt,groupBy:Vt,groupByLimit:Jt,groupBySeries:$t,log:Gt,map:we,mapLimit:Se,mapSeries:xe,mapValues:Xt,mapValuesLimit:Qt,mapValuesSeries:Yt,memoize:tr,nextTick:rr,parallel:nr,parallelLimit:ar,priorityQueue:sr,queue:or,race:ur,reduce:lt,reduceRight:cr,reflect:lr,reflectAll:hr,reject:dr,rejectLimit:fr,rejectSeries:mr,retry:vr,retryable:yr,seq:ht,series:_r,setImmediate:p,some:br,someLimit:wr,someSeries:Er,sortBy:kr,timeout:Sr,times:Mr,timesLimit:Nr,timesSeries:Ir,transform:Ar,tryEach:Tr,unmemoize:Rr,until:Or,waterfall:Br,whilst:Pr,all:Ct,allLimit:zt,allSeries:Ft,any:br,anyLimit:wr,anySeries:Er,find:wt,findLimit:Et,findSeries:kt,forEach:Tt,forEachSeries:Pt,forEachLimit:Rt,forEachOf:ye,forEachOfSeries:ct,forEachOfLimit:fe,inject:lt,foldl:lt,foldr:cr,select:Ht,selectLimit:Kt,selectSeries:Wt,wrapSync:d};t.default=Cr,t.apply=a,t.applyEach=Ee,t.applyEachSeries=je,t.asyncify=d,t.auto=Pe,t.autoInject=nt,t.cargo=ut,t.compose=pt,t.concat=mt,t.concatLimit=ft,t.concatSeries=gt,t.constant=vt,t.detect=wt,t.detectLimit=Et,t.detectSeries=kt,t.dir=xt,t.doDuring=jt,t.doUntil=Mt,t.doWhilst=Nt,t.during=It,t.each=Tt,t.eachLimit=Rt,t.eachOf=ye,t.eachOfLimit=fe,t.eachOfSeries=ct,t.eachSeries=Pt,t.ensureAsync=Ot,t.every=Ct,t.everyLimit=zt,t.everySeries=Ft,t.filter=Ht,t.filterLimit=Kt,t.filterSeries=Wt,t.forever=Zt,t.groupBy=Vt,t.groupByLimit=Jt,t.groupBySeries=$t,t.log=Gt,t.map=we,t.mapLimit=Se,t.mapSeries=xe,t.mapValues=Xt,t.mapValuesLimit=Qt,t.mapValuesSeries=Yt,t.memoize=tr,t.nextTick=rr,t.parallel=nr,t.parallelLimit=ar,t.priorityQueue=sr,t.queue=or,t.race=ur,t.reduce=lt,t.reduceRight=cr,t.reflect=lr,t.reflectAll=hr,t.reject=dr,t.rejectLimit=fr,t.rejectSeries=mr,t.retry=vr,t.retryable=yr,t.seq=ht,t.series=_r,t.setImmediate=p,t.some=br,t.someLimit=wr,t.someSeries=Er,t.sortBy=kr,t.timeout=Sr,t.times=Mr,t.timesLimit=Nr,t.timesSeries=Ir,t.transform=Ar,t.tryEach=Tr,t.unmemoize=Rr,t.until=Or,t.waterfall=Br,t.whilst=Pr,t.all=Ct,t.allLimit=zt,t.allSeries=Ft,t.any=br,t.anyLimit=wr,t.anySeries=Er,t.find=wt,t.findLimit=Et,t.findSeries=kt,t.forEach=Tt,t.forEachSeries=Pt,t.forEachLimit=Rt,t.forEachOf=ye,t.forEachOfSeries=ct,t.forEachOfLimit=fe,t.inject=lt,t.foldl=lt,t.foldr=cr,t.select=Ht,t.selectLimit=Kt,t.selectSeries=Wt,t.wrapSync=d,Object.defineProperty(t,"__esModule",{value:!0})}(t)},17555:(e,t,r)=>{var i=r(55835),n=r(8575).parse,a=["acl","location","logging","notification","partNumber","policy","requestPayment","torrent","uploadId","uploads","versionId","versioning","versions","website"];function o(e){return"AWS "+e.key+":"+u(e)}function s(e){return i.createHmac("sha1",e.secret).update(e.message).digest("base64")}function u(e){return e.message=c(e),s(e)}function c(e){var t=e.amazonHeaders||"";return t&&(t+="\n"),[e.verb,e.md5,e.contentType,e.date?e.date.toUTCString():"",t+e.resource].join("\n")}function l(e){return"GET\n\n\n"+e.date+"\n"+e.resource}e.exports=o,e.exports.authorization=o,e.exports.hmacSha1=s,e.exports.sign=u,e.exports.signQuery=function(e){return e.message=l(e),s(e)},e.exports.stringToSign=c,e.exports.queryStringToSign=l,e.exports.canonicalizeHeaders=function(e){for(var t=[],r=Object.keys(e),i=0,n=r.length;i{var i=r(48764).Buffer,n=t,a=r(8575),o=r(17673),s=r(55835),u=r(59864)(1e3);function c(e,t,r){return s.createHmac("sha256",e).update(t,"utf8").digest(r)}function l(e,t){return s.createHash("sha256").update(e,"utf8").digest(t)}function h(e){return e.replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function p(e){return h(encodeURIComponent(e))}var d={authorization:!0,connection:!0,"x-amzn-trace-id":!0,"user-agent":!0,expect:!0,"presigned-expires":!0,range:!0};function f(e,t){"string"==typeof e&&(e=a.parse(e));var r=e.headers=e.headers||{},i=(!this.service||!this.region)&&this.matchHost(e.hostname||e.host||r.Host||r.host);this.request=e,this.credentials=t||this.defaultCredentials(),this.service=e.service||i[0]||"",this.region=e.region||i[1]||"us-east-1","email"===this.service&&(this.service="ses"),!e.method&&e.body&&(e.method="POST"),r.Host||r.host||(r.Host=e.hostname||e.host||this.createHost(),e.port&&(r.Host+=":"+e.port)),e.hostname||e.host||(e.hostname=r.Host||r.host),this.isCodeCommitGit="codecommit"===this.service&&"GIT"===e.method,this.extraHeadersToIgnore=e.extraHeadersToIgnore||Object.create(null),this.extraHeadersToInclude=e.extraHeadersToInclude||Object.create(null)}f.prototype.matchHost=function(e){var t=((e||"").match(/([^\.]+)\.(?:([^\.]*)\.)?amazonaws\.com(\.cn)?$/)||[]).slice(1,3);if("es"!==t[1]&&"aoss"!==t[1]||(t=t.reverse()),"s3"==t[1])t[0]="s3",t[1]="us-east-1";else for(var r=0;r<2;r++)if(/^s3-/.test(t[r])){t[1]=t[r].slice(3),t[0]="s3";break}return t},f.prototype.isSingleRegion=function(){return["s3","sdb"].indexOf(this.service)>=0&&"us-east-1"===this.region||["cloudfront","ls","route53","iam","importexport","sts"].indexOf(this.service)>=0},f.prototype.createHost=function(){var e=this.isSingleRegion()?"":"."+this.region;return("ses"===this.service?"email":this.service)+e+".amazonaws.com"},f.prototype.prepareRequest=function(){this.parsePath();var e,t=this.request,r=t.headers;t.signQuery?(this.parsedPath.query=e=this.parsedPath.query||{},this.credentials.sessionToken&&(e["X-Amz-Security-Token"]=this.credentials.sessionToken),"s3"!==this.service||e["X-Amz-Expires"]||(e["X-Amz-Expires"]=86400),e["X-Amz-Date"]?this.datetime=e["X-Amz-Date"]:e["X-Amz-Date"]=this.getDateTime(),e["X-Amz-Algorithm"]="AWS4-HMAC-SHA256",e["X-Amz-Credential"]=this.credentials.accessKeyId+"/"+this.credentialString(),e["X-Amz-SignedHeaders"]=this.signedHeaders()):(t.doNotModifyHeaders||this.isCodeCommitGit||(!t.body||r["Content-Type"]||r["content-type"]||(r["Content-Type"]="application/x-www-form-urlencoded; charset=utf-8"),!t.body||r["Content-Length"]||r["content-length"]||(r["Content-Length"]=i.byteLength(t.body)),!this.credentials.sessionToken||r["X-Amz-Security-Token"]||r["x-amz-security-token"]||(r["X-Amz-Security-Token"]=this.credentials.sessionToken),"s3"!==this.service||r["X-Amz-Content-Sha256"]||r["x-amz-content-sha256"]||(r["X-Amz-Content-Sha256"]=l(this.request.body||"","hex")),r["X-Amz-Date"]||r["x-amz-date"]?this.datetime=r["X-Amz-Date"]||r["x-amz-date"]:r["X-Amz-Date"]=this.getDateTime()),delete r.Authorization,delete r.authorization)},f.prototype.sign=function(){return this.parsedPath||this.prepareRequest(),this.request.signQuery?this.parsedPath.query["X-Amz-Signature"]=this.signature():this.request.headers.Authorization=this.authHeader(),this.request.path=this.formatPath(),this.request},f.prototype.getDateTime=function(){if(!this.datetime){var e=this.request.headers,t=new Date(e.Date||e.date||new Date);this.datetime=t.toISOString().replace(/[:\-]|\.\d{3}/g,""),this.isCodeCommitGit&&(this.datetime=this.datetime.slice(0,-1))}return this.datetime},f.prototype.getDate=function(){return this.getDateTime().substr(0,8)},f.prototype.authHeader=function(){return["AWS4-HMAC-SHA256 Credential="+this.credentials.accessKeyId+"/"+this.credentialString(),"SignedHeaders="+this.signedHeaders(),"Signature="+this.signature()].join(", ")},f.prototype.signature=function(){var e,t,r,i=this.getDate(),n=[this.credentials.secretAccessKey,i,this.region,this.service].join(),a=u.get(n);return a||(e=c("AWS4"+this.credentials.secretAccessKey,i),t=c(e,this.region),r=c(t,this.service),a=c(r,"aws4_request"),u.set(n,a)),c(a,this.stringToSign(),"hex")},f.prototype.stringToSign=function(){return["AWS4-HMAC-SHA256",this.getDateTime(),this.credentialString(),l(this.canonicalString(),"hex")].join("\n")},f.prototype.canonicalString=function(){this.parsedPath||this.prepareRequest();var e,t=this.parsedPath.path,r=this.parsedPath.query,i=this.request.headers,n="",a="s3"!==this.service,o="s3"===this.service||this.request.doNotEncodePath,s="s3"===this.service,u="s3"===this.service;if(e="s3"===this.service&&this.request.signQuery?"UNSIGNED-PAYLOAD":this.isCodeCommitGit?"":i["X-Amz-Content-Sha256"]||i["x-amz-content-sha256"]||l(this.request.body||"","hex"),r){var c=Object.keys(r).reduce((function(e,t){return t?(e[p(t)]=Array.isArray(r[t])&&u?r[t][0]:r[t],e):e}),{}),h=[];Object.keys(c).sort().forEach((function(e){Array.isArray(c[e])?c[e].map(p).sort().forEach((function(t){h.push(e+"="+t)})):h.push(e+"="+p(c[e]))})),n=h.join("&")}return"/"!==t&&(a&&(t=t.replace(/\/{2,}/g,"/")),"/"!==(t=t.split("/").reduce((function(e,t){return a&&".."===t?e.pop():a&&"."===t||(o&&(t=decodeURIComponent(t.replace(/\+/g," "))),e.push(p(t))),e}),[]).join("/"))[0]&&(t="/"+t),s&&(t=t.replace(/%2F/g,"/"))),[this.request.method||"GET",t,n,this.canonicalHeaders()+"\n",this.signedHeaders(),e].join("\n")},f.prototype.canonicalHeaders=function(){var e=this.request.headers;return Object.keys(e).filter((function(e){return null==d[e.toLowerCase()]})).sort((function(e,t){return e.toLowerCase()=0&&(r=o.parse(e.slice(t+1)),e=e.slice(0,t)),this.parsedPath={path:e,query:r}},f.prototype.formatPath=function(){var e=this.parsedPath.path,t=this.parsedPath.query;return t?(null!=t[""]&&delete t[""],e+"?"+h(o.stringify(t))):e},n.RequestSigner=f,n.sign=function(e,t){return new f(e,t).sign()}},59864:e=>{function t(e){this.capacity=0|e,this.map=Object.create(null),this.list=new r}function r(){this.firstNode=null,this.lastNode=null}function i(e,t){this.key=e,this.val=t,this.prev=null,this.next=null}e.exports=function(e){return new t(e)},t.prototype.get=function(e){var t=this.map[e];if(null!=t)return this.used(t),t.val},t.prototype.set=function(e,t){var r=this.map[e];if(null!=r)r.val=t;else{if(this.capacity||this.prune(),!this.capacity)return!1;r=new i(e,t),this.map[e]=r,this.capacity--}return this.used(r),!0},t.prototype.used=function(e){this.list.moveToFront(e)},t.prototype.prune=function(){var e=this.list.pop();null!=e&&(delete this.map[e.key],this.capacity++)},r.prototype.moveToFront=function(e){this.firstNode!=e&&(this.remove(e),null==this.firstNode?(this.firstNode=e,this.lastNode=e,e.prev=null,e.next=null):(e.prev=null,e.next=this.firstNode,e.next.prev=e,this.firstNode=e))},r.prototype.pop=function(){var e=this.lastNode;return null!=e&&this.remove(e),e},r.prototype.remove=function(e){this.firstNode==e?this.firstNode=e.next:null!=e.prev&&(e.prev.next=e.next),this.lastNode==e?this.lastNode=e.prev:null!=e.next&&(e.next.prev=e.prev)}},9478:(e,t,r)=>{var i,n=r(34155),a=r(48764).Buffer,o=(i=(i="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0)||"/index.js",function(e){var t,o,s=void 0!==(e=e||{})?e:{};s.ready=new Promise((function(e,r){t=e,o=r}));var u,c,l,h,p,d,f=Object.assign({},s),m=[],g="./this.program",v=(e,t)=>{throw t},y="object"==typeof window,_="function"==typeof importScripts,b="object"==typeof n&&"object"==typeof n.versions&&"string"==typeof n.versions.node,w="";b?(w=_?r(26470).dirname(w)+"/":"//",d=()=>{p||(h=r(76614),p=r(26470))},u=function(e,t){return d(),e=p.normalize(e),h.readFileSync(e,t?void 0:"utf8")},l=e=>{var t=u(e,!0);return t.buffer||(t=new Uint8Array(t)),t},c=(e,t,r)=>{d(),e=p.normalize(e),h.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},n.argv.length>1&&(g=n.argv[1].replace(/\\/g,"/")),m=n.argv.slice(2),n.on("unhandledRejection",(function(e){throw e})),v=(e,t)=>{if(le())throw n.exitCode=e,t;var r;(r=t)instanceof Er||k("exiting due to exception: "+r),n.exit(e)},s.inspect=function(){return"[Emscripten Module object]"}):(y||_)&&(_?w=self.location.href:"undefined"!=typeof document&&document.currentScript&&(w=document.currentScript.src),i&&(w=i),w=0!==w.indexOf("blob:")?w.substr(0,w.replace(/[?#].*/,"").lastIndexOf("/")+1):"",u=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},_&&(l=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),c=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var E=s.print||console.log.bind(console),k=s.printErr||console.warn.bind(console);function S(e){return e<128?[e]:[e%128|128,e>>7]}Object.assign(s,f),f=null,s.arguments&&(m=s.arguments),s.thisProgram&&(g=s.thisProgram),s.quit&&(v=s.quit);var x,j,N=[],M=0,I=e=>{M=e},A=()=>M;s.wasmBinary&&(j=s.wasmBinary);var T,R=s.noExitRuntime||!0;"object"!=typeof WebAssembly&&_e("no native wasm support detected");var P,O=!1;function B(e,t){e||_e(t)}var C="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function z(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&C)return C.decode(e.subarray(t,n));for(var a="";t>10,56320|1023&c)}}else a+=String.fromCharCode((31&o)<<6|s)}else a+=String.fromCharCode(o)}return a}function F(e,t){return e?z(K,e,t):""}function D(e,t,r,i){if(!(i>0))return 0;for(var n=r,a=r+i-1,o=0;o=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++o)),s<=127){if(r>=a)break;t[r++]=s}else if(s<=2047){if(r+1>=a)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=a)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=a)break;t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-n}function q(e,t,r){return D(e,K,t,r)}function L(e){for(var t=0,r=0;r=55296&&i<=57343&&(i=65536+((1023&i)<<10)|1023&e.charCodeAt(++r)),i<=127?++t:t+=i<=2047?2:i<=65535?3:4}return t}var U,H,K,W,Z,J,V,$,G,Q="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function X(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&Z[i];)++i;if((r=i<<1)-e>32&&Q)return Q.decode(K.subarray(e,r));for(var a="",o=0;!(o>=t/2);++o){var s=W[e+2*o>>1];if(0==s)break;a+=String.fromCharCode(s)}return a}function Y(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,a=0;a>1]=o,t+=2}return W[t>>1]=0,t-i}function ee(e){return 2*e.length}function te(e,t){for(var r=0,i="";!(r>=t/4);){var n=J[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var a=n-65536;i+=String.fromCharCode(55296|a>>10,56320|1023&a)}else i+=String.fromCharCode(n)}return i}function re(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,a=0;a=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a)),J[t>>2]=o,(t+=4)+4>n)break}return J[t>>2]=0,t-i}function ie(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}function ne(e){var t=L(e)+1,r=jt(t);return r&&D(e,H,r,t),r}function ae(e){U=e,s.HEAP8=H=new Int8Array(e),s.HEAP16=W=new Int16Array(e),s.HEAP32=J=new Int32Array(e),s.HEAPU8=K=new Uint8Array(e),s.HEAPU16=Z=new Uint16Array(e),s.HEAPU32=V=new Uint32Array(e),s.HEAPF32=$=new Float32Array(e),s.HEAPF64=G=new Float64Array(e)}s.INITIAL_MEMORY;var oe,se=[],ue=[],ce=[];function le(){return R}var he,pe,de,fe=0,me=null,ge=null;function ve(e){fe++,s.monitorRunDependencies&&s.monitorRunDependencies(fe)}function ye(e){if(fe--,s.monitorRunDependencies&&s.monitorRunDependencies(fe),0==fe&&(null!==me&&(clearInterval(me),me=null),ge)){var t=ge;ge=null,t()}}function _e(e){s.onAbort&&s.onAbort(e),k(e="Aborted("+e+")"),O=!0,P=1,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw o(t),t}function be(e){return e.startsWith("data:application/octet-stream;base64,")}function we(e){return e.startsWith("file://")}function Ee(e){try{if(e==he&&j)return new Uint8Array(j);if(l)return l(e);throw"both async and sync fetching of the wasm failed"}catch(e){_e(e)}}function ke(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var r=t.func;"number"==typeof r?void 0===t.arg?Ft.call(null,r):(i=t.arg,Bt.apply(null,[r,i])):r(void 0===t.arg?null:t.arg)}else t(s)}var i}function Se(e,t){oe.set(e,t)}be(he="monero_wallet_full.wasm")||(he=function(e){return s.locateFile?s.locateFile(e,w):w+e}(he));var xe=[];function je(e){e.add_ref()}var Ne=0;function Me(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){V[this.ptr+4>>2]=e},this.get_type=function(){return V[this.ptr+4>>2]},this.set_destructor=function(e){V[this.ptr+8>>2]=e},this.get_destructor=function(){return V[this.ptr+8>>2]},this.set_refcount=function(e){J[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,H[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=H[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,H[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=H[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=J[this.ptr>>2];J[this.ptr>>2]=e+1},this.release_ref=function(){var e=J[this.ptr>>2];return J[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){V[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return V[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Pt(this.get_type()))return V[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}function Ie(e){return St(new Me(e).ptr)}function Ae(e){if(e.release_ref()&&!e.get_rethrown()){var t=e.get_destructor();t&&(r=e.excPtr,Ot.apply(null,[t,r])),Ie(e.excPtr)}var r}var Te=0;function Re(){var e=xe.pop();e||_e("no exception to throw");var t=e.excPtr;throw e.get_rethrown()||(xe.push(e),e.set_rethrown(!0),e.set_caught(!1),Ne++),Te=t,t}var Pe={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=Pe.isAbs(e),r="/"===e.substr(-1);return(e=Pe.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=Pe.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=Pe.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return Pe.normalize(e.join("/"))},join2:(e,t)=>Pe.normalize(e+"/"+t)},Oe={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:ze.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=Pe.isAbs(i)}return(t?"/":"")+(e=Pe.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=Oe.resolve(e).substr(1),t=Oe.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),a=Math.min(i.length,n.length),o=a,s=0;s0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=wt(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(E(z(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(E(z(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(k(z(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(k(z(e.output,0)),e.output=[])}}};var Ce={ops_table:null,mount:function(e){return Ce.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(ze.isBlkdev(r)||ze.isFIFO(r))throw new ze.ErrnoError(63);Ce.ops_table||(Ce.ops_table={dir:{node:{getattr:Ce.node_ops.getattr,setattr:Ce.node_ops.setattr,lookup:Ce.node_ops.lookup,mknod:Ce.node_ops.mknod,rename:Ce.node_ops.rename,unlink:Ce.node_ops.unlink,rmdir:Ce.node_ops.rmdir,readdir:Ce.node_ops.readdir,symlink:Ce.node_ops.symlink},stream:{llseek:Ce.stream_ops.llseek}},file:{node:{getattr:Ce.node_ops.getattr,setattr:Ce.node_ops.setattr},stream:{llseek:Ce.stream_ops.llseek,read:Ce.stream_ops.read,write:Ce.stream_ops.write,allocate:Ce.stream_ops.allocate,mmap:Ce.stream_ops.mmap,msync:Ce.stream_ops.msync}},link:{node:{getattr:Ce.node_ops.getattr,setattr:Ce.node_ops.setattr,readlink:Ce.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Ce.node_ops.getattr,setattr:Ce.node_ops.setattr},stream:ze.chrdev_stream_ops}});var n=ze.createNode(e,t,r,i);return ze.isDir(n.mode)?(n.node_ops=Ce.ops_table.dir.node,n.stream_ops=Ce.ops_table.dir.stream,n.contents={}):ze.isFile(n.mode)?(n.node_ops=Ce.ops_table.file.node,n.stream_ops=Ce.ops_table.file.stream,n.usedBytes=0,n.contents=null):ze.isLink(n.mode)?(n.node_ops=Ce.ops_table.link.node,n.stream_ops=Ce.ops_table.link.stream):ze.isChrdev(n.mode)&&(n.node_ops=Ce.ops_table.chrdev.node,n.stream_ops=Ce.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=ze.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,ze.isDir(e.mode)?t.size=4096:ze.isFile(e.mode)?t.size=e.usedBytes:ze.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&Ce.resizeFileStorage(e,t.size)},lookup:function(e,t){throw ze.genericErrors[44]},mknod:function(e,t,r,i){return Ce.createNode(e,t,r,i)},rename:function(e,t,r){if(ze.isDir(e.mode)){var i;try{i=ze.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new ze.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=ze.lookupNode(e,t);for(var i in r.contents)throw new ze.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=Ce.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!ze.isLink(e.mode))throw new ze.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var a=e.node.contents;if(n>=e.node.usedBytes)return 0;var o=Math.min(e.node.usedBytes-n,i);if(o>8&&a.subarray)t.set(a.subarray(n,n+o),r);else for(var s=0;s0||i+r{if(!(e=Oe.resolve(ze.cwd(),e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new ze.ErrnoError(32);for(var r=Pe.normalizeArray(e.split("/").filter((e=>!!e)),!1),i=ze.root,n="/",a=0;a40)throw new ze.ErrnoError(32)}}return{path:n,node:i}},getPath:e=>{for(var t;;){if(ze.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%ze.nameTable.length},hashAddNode:e=>{var t=ze.hashName(e.parent.id,e.name);e.name_next=ze.nameTable[t],ze.nameTable[t]=e},hashRemoveNode:e=>{var t=ze.hashName(e.parent.id,e.name);if(ze.nameTable[t]===e)ze.nameTable[t]=e.name_next;else for(var r=ze.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=ze.mayLookup(e);if(r)throw new ze.ErrnoError(r,e);for(var i=ze.hashName(e.id,t),n=ze.nameTable[i];n;n=n.name_next){var a=n.name;if(n.parent.id===e.id&&a===t)return n}return ze.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new ze.FSNode(e,t,r,i);return ze.hashAddNode(n),n},destroyNode:e=>{ze.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=ze.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>ze.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>ze.nodePermissions(e,"x")||(e.node_ops.lookup?0:2),mayCreate:(e,t)=>{try{return ze.lookupNode(e,t),20}catch(e){}return ze.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=ze.lookupNode(e,t)}catch(e){return e.errno}var n=ze.nodePermissions(e,"wx");if(n)return n;if(r){if(!ze.isDir(i.mode))return 54;if(ze.isRoot(i)||ze.getPath(i)===ze.cwd())return 10}else if(ze.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?ze.isLink(e.mode)?32:ze.isDir(e.mode)&&("r"!==ze.flagsToPermissionString(t)||512&t)?31:ze.nodePermissions(e,ze.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,t=ze.MAX_OPEN_FDS)=>{for(var r=e;r<=t;r++)if(!ze.streams[r])return r;throw new ze.ErrnoError(33)},getStream:e=>ze.streams[e],createStream:(e,t,r)=>{ze.FSStream||(ze.FSStream=function(){this.shared={}},ze.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get function(){return this.shared.position},set:function(e){this.shared.position=e}}}),e=Object.assign(new ze.FSStream,e);var i=ze.nextfd(t,r);return e.fd=i,ze.streams[i]=e,e},closeStream:e=>{ze.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=ze.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new ze.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{ze.devices[e]={stream_ops:t}},getDevice:e=>ze.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),ze.syncFSRequests++,ze.syncFSRequests>1&&k("warning: "+ze.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=ze.getMounts(ze.root.mount),i=0;function n(e){return ze.syncFSRequests--,t(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return a(null);t.type.syncfs(t,e,a)}))},mount:(e,t,r)=>{var i,n="/"===r,a=!r;if(n&&ze.root)throw new ze.ErrnoError(10);if(!n&&!a){var o=ze.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,ze.isMountpoint(i))throw new ze.ErrnoError(10);if(!ze.isDir(i.mode))throw new ze.ErrnoError(54)}var s={type:e,opts:t,mountpoint:r,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,n?ze.root=u:i&&(i.mounted=s,i.mount&&i.mount.mounts.push(s)),u},unmount:e=>{var t=ze.lookupPath(e,{follow_mount:!1});if(!ze.isMountpoint(t.node))throw new ze.ErrnoError(28);var r=t.node,i=r.mounted,n=ze.getMounts(i);Object.keys(ze.nameTable).forEach((e=>{for(var t=ze.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&ze.destroyNode(t),t=r}})),r.mounted=null;var a=r.mount.mounts.indexOf(i);r.mount.mounts.splice(a,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=ze.lookupPath(e,{parent:!0}).node,n=Pe.basename(e);if(!n||"."===n||".."===n)throw new ze.ErrnoError(28);var a=ze.mayCreate(i,n);if(a)throw new ze.ErrnoError(a);if(!i.node_ops.mknod)throw new ze.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,ze.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,ze.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,ze.mknod(e,t,r)),symlink:(e,t)=>{if(!Oe.resolve(e))throw new ze.ErrnoError(44);var r=ze.lookupPath(t,{parent:!0}).node;if(!r)throw new ze.ErrnoError(44);var i=Pe.basename(t),n=ze.mayCreate(r,i);if(n)throw new ze.ErrnoError(n);if(!r.node_ops.symlink)throw new ze.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=Pe.dirname(e),a=Pe.dirname(t),o=Pe.basename(e),s=Pe.basename(t);if(r=ze.lookupPath(e,{parent:!0}).node,i=ze.lookupPath(t,{parent:!0}).node,!r||!i)throw new ze.ErrnoError(44);if(r.mount!==i.mount)throw new ze.ErrnoError(75);var u,c=ze.lookupNode(r,o),l=Oe.relative(e,a);if("."!==l.charAt(0))throw new ze.ErrnoError(28);if("."!==(l=Oe.relative(t,n)).charAt(0))throw new ze.ErrnoError(55);try{u=ze.lookupNode(i,s)}catch(e){}if(c!==u){var h=ze.isDir(c.mode),p=ze.mayDelete(r,o,h);if(p)throw new ze.ErrnoError(p);if(p=u?ze.mayDelete(i,s,h):ze.mayCreate(i,s))throw new ze.ErrnoError(p);if(!r.node_ops.rename)throw new ze.ErrnoError(63);if(ze.isMountpoint(c)||u&&ze.isMountpoint(u))throw new ze.ErrnoError(10);if(i!==r&&(p=ze.nodePermissions(r,"w")))throw new ze.ErrnoError(p);ze.hashRemoveNode(c);try{r.node_ops.rename(c,i,s)}catch(e){throw e}finally{ze.hashAddNode(c)}}},rmdir:e=>{var t=ze.lookupPath(e,{parent:!0}).node,r=Pe.basename(e),i=ze.lookupNode(t,r),n=ze.mayDelete(t,r,!0);if(n)throw new ze.ErrnoError(n);if(!t.node_ops.rmdir)throw new ze.ErrnoError(63);if(ze.isMountpoint(i))throw new ze.ErrnoError(10);t.node_ops.rmdir(t,r),ze.destroyNode(i)},readdir:e=>{var t=ze.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new ze.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=ze.lookupPath(e,{parent:!0}).node;if(!t)throw new ze.ErrnoError(44);var r=Pe.basename(e),i=ze.lookupNode(t,r),n=ze.mayDelete(t,r,!1);if(n)throw new ze.ErrnoError(n);if(!t.node_ops.unlink)throw new ze.ErrnoError(63);if(ze.isMountpoint(i))throw new ze.ErrnoError(10);t.node_ops.unlink(t,r),ze.destroyNode(i)},readlink:e=>{var t=ze.lookupPath(e).node;if(!t)throw new ze.ErrnoError(44);if(!t.node_ops.readlink)throw new ze.ErrnoError(28);return Oe.resolve(ze.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=ze.lookupPath(e,{follow:!t}).node;if(!r)throw new ze.ErrnoError(44);if(!r.node_ops.getattr)throw new ze.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>ze.stat(e,!0),chmod:(e,t,r)=>{var i;if(!(i="string"==typeof e?ze.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new ze.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{ze.chmod(e,t,!0)},fchmod:(e,t)=>{var r=ze.getStream(e);if(!r)throw new ze.ErrnoError(8);ze.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;if(!(n="string"==typeof e?ze.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new ze.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{ze.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=ze.getStream(e);if(!i)throw new ze.ErrnoError(8);ze.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new ze.ErrnoError(28);var r;if(!(r="string"==typeof e?ze.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new ze.ErrnoError(63);if(ze.isDir(r.mode))throw new ze.ErrnoError(31);if(!ze.isFile(r.mode))throw new ze.ErrnoError(28);var i=ze.nodePermissions(r,"w");if(i)throw new ze.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=ze.getStream(e);if(!r)throw new ze.ErrnoError(8);if(0==(2097155&r.flags))throw new ze.ErrnoError(28);ze.truncate(r.node,t)},utime:(e,t,r)=>{var i=ze.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,t,r)=>{if(""===e)throw new ze.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?ze.modeStringToFlags(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=Pe.normalize(e);try{i=ze.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var n=!1;if(64&t)if(i){if(128&t)throw new ze.ErrnoError(20)}else i=ze.mknod(e,r,0),n=!0;if(!i)throw new ze.ErrnoError(44);if(ze.isChrdev(i.mode)&&(t&=-513),65536&t&&!ze.isDir(i.mode))throw new ze.ErrnoError(54);if(!n){var a=ze.mayOpen(i,t);if(a)throw new ze.ErrnoError(a)}512&t&&!n&&ze.truncate(i,0),t&=-131713;var o=ze.createStream({node:i,path:ze.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!s.logReadFiles||1&t||(ze.readFiles||(ze.readFiles={}),e in ze.readFiles||(ze.readFiles[e]=1)),o},close:e=>{if(ze.isClosed(e))throw new ze.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{ze.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(ze.isClosed(e))throw new ze.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new ze.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new ze.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new ze.ErrnoError(28);if(ze.isClosed(e))throw new ze.ErrnoError(8);if(1==(2097155&e.flags))throw new ze.ErrnoError(8);if(ze.isDir(e.node.mode))throw new ze.ErrnoError(31);if(!e.stream_ops.read)throw new ze.ErrnoError(28);var a=void 0!==n;if(a){if(!e.seekable)throw new ze.ErrnoError(70)}else n=e.position;var o=e.stream_ops.read(e,t,r,i,n);return a||(e.position+=o),o},write:(e,t,r,i,n,a)=>{if(i<0||n<0)throw new ze.ErrnoError(28);if(ze.isClosed(e))throw new ze.ErrnoError(8);if(0==(2097155&e.flags))throw new ze.ErrnoError(8);if(ze.isDir(e.node.mode))throw new ze.ErrnoError(31);if(!e.stream_ops.write)throw new ze.ErrnoError(28);e.seekable&&1024&e.flags&&ze.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new ze.ErrnoError(70)}else n=e.position;var s=e.stream_ops.write(e,t,r,i,n,a);return o||(e.position+=s),s},allocate:(e,t,r)=>{if(ze.isClosed(e))throw new ze.ErrnoError(8);if(t<0||r<=0)throw new ze.ErrnoError(28);if(0==(2097155&e.flags))throw new ze.ErrnoError(8);if(!ze.isFile(e.node.mode)&&!ze.isDir(e.node.mode))throw new ze.ErrnoError(43);if(!e.stream_ops.allocate)throw new ze.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n,a)=>{if(0!=(2&n)&&0==(2&a)&&2!=(2097155&e.flags))throw new ze.ErrnoError(2);if(1==(2097155&e.flags))throw new ze.ErrnoError(2);if(!e.stream_ops.mmap)throw new ze.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n,a)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new ze.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:(e,t={})=>{if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=ze.open(e,t.flags),n=ze.stat(e).size,a=new Uint8Array(n);return ze.read(i,a,0,n,0),"utf8"===t.encoding?r=z(a,0):"binary"===t.encoding&&(r=a),ze.close(i),r},writeFile:(e,t,r={})=>{r.flags=r.flags||577;var i=ze.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(L(t)+1),a=D(t,n,0,n.length);ze.write(i,n,0,a,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");ze.write(i,t,0,t.byteLength,void 0,r.canOwn)}ze.close(i)},cwd:()=>ze.currentPath,chdir:e=>{var t=ze.lookupPath(e,{follow:!0});if(null===t.node)throw new ze.ErrnoError(44);if(!ze.isDir(t.node.mode))throw new ze.ErrnoError(54);var r=ze.nodePermissions(t.node,"x");if(r)throw new ze.ErrnoError(r);ze.currentPath=t.path},createDefaultDirectories:()=>{ze.mkdir("/tmp"),ze.mkdir("/home"),ze.mkdir("/home/web_user")},createDefaultDevices:()=>{ze.mkdir("/dev"),ze.registerDevice(ze.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),ze.mkdev("/dev/null",ze.makedev(1,3)),Be.register(ze.makedev(5,0),Be.default_tty_ops),Be.register(ze.makedev(6,0),Be.default_tty1_ops),ze.mkdev("/dev/tty",ze.makedev(5,0)),ze.mkdev("/dev/tty1",ze.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(b)try{var t=r(55835);return function(){return t.randomBytes(1)[0]}}catch(e){}return function(){_e("randomDevice")}}();ze.createDevice("/dev","random",e),ze.createDevice("/dev","urandom",e),ze.mkdir("/dev/shm"),ze.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{ze.mkdir("/proc");var e=ze.mkdir("/proc/self");ze.mkdir("/proc/self/fd"),ze.mount({mount:()=>{var t=ze.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=ze.getStream(r);if(!i)throw new ze.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{s.stdin?ze.createDevice("/dev","stdin",s.stdin):ze.symlink("/dev/tty","/dev/stdin"),s.stdout?ze.createDevice("/dev","stdout",null,s.stdout):ze.symlink("/dev/tty","/dev/stdout"),s.stderr?ze.createDevice("/dev","stderr",null,s.stderr):ze.symlink("/dev/tty1","/dev/stderr"),ze.open("/dev/stdin",0),ze.open("/dev/stdout",1),ze.open("/dev/stderr",1)},ensureErrnoError:()=>{ze.ErrnoError||(ze.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},ze.ErrnoError.prototype=new Error,ze.ErrnoError.prototype.constructor=ze.ErrnoError,[44].forEach((e=>{ze.genericErrors[e]=new ze.ErrnoError(e),ze.genericErrors[e].stack=""})))},staticInit:()=>{ze.ensureErrnoError(),ze.nameTable=new Array(4096),ze.mount(Ce,{},"/"),ze.createDefaultDirectories(),ze.createDefaultDevices(),ze.createSpecialDirectories(),ze.filesystems={MEMFS:Ce}},init:(e,t,r)=>{ze.init.initialized=!0,ze.ensureErrnoError(),s.stdin=e||s.stdin,s.stdout=t||s.stdout,s.stderr=r||s.stderr,ze.createStandardStreams()},quit:()=>{ze.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=ze.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=ze.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=ze.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=Pe.basename(e),i=ze.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:ze.getPath(e);for(var n=t.split("/").reverse();n.length;){var a=n.pop();if(a){var o=Pe.join2(e,a);try{ze.mkdir(o)}catch(e){}e=o}}return o},createFile:(e,t,r,i,n)=>{var a=Pe.join2("string"==typeof e?e:ze.getPath(e),t),o=ze.getMode(i,n);return ze.create(a,o)},createDataFile:(e,t,r,i,n,a)=>{var o=t;e&&(e="string"==typeof e?e:ze.getPath(e),o=t?Pe.join2(e,t):e);var s=ze.getMode(i,n),u=ze.create(o,s);if(r){if("string"==typeof r){for(var c=new Array(r.length),l=0,h=r.length;l{var n=Pe.join2("string"==typeof e?e:ze.getPath(e),t),a=ze.getMode(!!r,!!i);ze.createDevice.major||(ze.createDevice.major=64);var o=ze.makedev(ze.createDevice.major++,0);return ze.registerDevice(o,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,a)=>{for(var o=0,s=0;s{for(var o=0;o{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!u)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=wt(u(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new ze.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,a=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,o=1048576;n||(o=i);var s=this;s.setDataGetter((e=>{var t=e*o,n=(e+1)*o-1;if(n=Math.min(n,i-1),void 0===s.chunks[e]&&(s.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==o&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):wt(n.responseText||"",!0)})(t,n)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!a&&i||(o=i=1,i=this.getter(0).length,o=i,E("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=o,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!_)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new a;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:o}}else s={isDevice:!1,url:r};var u=ze.createFile(e,t,s,i,n);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};return Object.keys(u.stream_ops).forEach((e=>{var t=u.stream_ops[e];c[e]=function(){return ze.forceLoadFile(u),t.apply(null,arguments)}})),c.read=(e,t,r,i,n)=>{ze.forceLoadFile(u);var a=e.node.contents;if(n>=a.length)return 0;var o=Math.min(a.length-n,i);if(a.slice)for(var s=0;s{var h=t?Oe.resolve(Pe.join2(e,t)):e;function p(r){function c(r){l&&l(),s||ze.createDataFile(e,t,r,i,n,u),a&&a(),ye()}Browser.handledByPreloadPlugin(r,h,c,(()=>{o&&o(),ye()}))||c(r)}ve(),"string"==typeof r?function(e,t,r,i){var n="al "+e;c(e,(function(t){B(t,'Loading data file "'+e+'" failed (no arrayBuffer).'),p(new Uint8Array(t)),n&&ye()}),(function(t){if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&ve()}(r,0,o):p(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=ze.indexedDB();try{var n=i.open(ze.DB_NAME(),ze.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{E("creating db"),n.result.createObjectStore(ze.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([ze.DB_STORE_NAME],"readwrite"),a=i.objectStore(ze.DB_STORE_NAME),o=0,s=0,u=e.length;function c(){0==s?t():r()}e.forEach((e=>{var t=a.put(ze.analyzePath(e).object.contents,e);t.onsuccess=()=>{++o+s==u&&c()},t.onerror=()=>{s++,o+s==u&&c()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=ze.indexedDB();try{var n=i.open(ze.DB_NAME(),ze.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var a=i.transaction([ze.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var o=a.objectStore(ze.DB_STORE_NAME),s=0,u=0,c=e.length;function l(){0==u?t():r()}e.forEach((e=>{var t=o.get(e);t.onsuccess=()=>{ze.analyzePath(e).exists&&ze.unlink(e),ze.createDataFile(Pe.dirname(e),Pe.basename(e),t.result,!0,!0,!0),++s+u==c&&l()},t.onerror=()=>{u++,s+u==c&&l()}})),a.onerror=r},n.onerror=r}},Fe={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(Pe.isAbs(t))return t;var i;if(-100===e)i=ze.cwd();else{var n=ze.getStream(e);if(!n)throw new ze.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new ze.ErrnoError(44);return i}return Pe.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&Pe.normalize(t)!==Pe.normalize(ze.getPath(e.node)))return-54;throw e}return J[r>>2]=i.dev,J[r+4>>2]=0,J[r+8>>2]=i.ino,J[r+12>>2]=i.mode,J[r+16>>2]=i.nlink,J[r+20>>2]=i.uid,J[r+24>>2]=i.gid,J[r+28>>2]=i.rdev,J[r+32>>2]=0,de=[i.size>>>0,(pe=i.size,+Math.abs(pe)>=1?pe>0?(0|Math.min(+Math.floor(pe/4294967296),4294967295))>>>0:~~+Math.ceil((pe-+(~~pe>>>0))/4294967296)>>>0:0)],J[r+40>>2]=de[0],J[r+44>>2]=de[1],J[r+48>>2]=4096,J[r+52>>2]=i.blocks,J[r+56>>2]=i.atime.getTime()/1e3|0,J[r+60>>2]=0,J[r+64>>2]=i.mtime.getTime()/1e3|0,J[r+68>>2]=0,J[r+72>>2]=i.ctime.getTime()/1e3|0,J[r+76>>2]=0,de=[i.ino>>>0,(pe=i.ino,+Math.abs(pe)>=1?pe>0?(0|Math.min(+Math.floor(pe/4294967296),4294967295))>>>0:~~+Math.ceil((pe-+(~~pe>>>0))/4294967296)>>>0:0)],J[r+80>>2]=de[0],J[r+84>>2]=de[1],0},doMsync:function(e,t,r,i,n){var a=K.slice(e,e+r);ze.msync(t,a,n,r,i)},varargs:void 0,get:function(){return Fe.varargs+=4,J[Fe.varargs-4>>2]},getStr:function(e){return F(e)},getStreamFromFD:function(e){var t=ze.getStream(e);if(!t)throw new ze.ErrnoError(8);return t}};function De(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var qe=void 0;function Le(e){for(var t="",r=e;K[r];)t+=qe[K[r++]];return t}var Ue={},He={},Ke={};function We(e,t){var r,i=(r=function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))},function(e){if(void 0===e)return"_unknown";(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0)}(t),function(){return r.apply(this,arguments)});return i.prototype=Object.create(e.prototype),i.prototype.constructor=i,i.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},i}var Ze=void 0;function Je(e){throw new Ze(e)}var Ve=void 0;function $e(e){throw new Ve(e)}function Ge(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||Je('type "'+i+'" must have a positive integer typeid pointer'),He.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Je("Cannot register type '"+i+"' twice")}if(He[e]=t,delete Ke[e],Ue.hasOwnProperty(e)){var n=Ue[e];delete Ue[e],n.forEach((e=>e()))}}var Qe=[],Xe=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Ye(e){e>4&&0==--Xe[e].refcount&&(Xe[e]=void 0,Qe.push(e))}var et=e=>(e||Je("Cannot use deleted val. handle = "+e),Xe[e].value),tt=e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=Qe.length?Qe.pop():Xe.length;return Xe[t]={refcount:1,value:e},t}};function rt(e){return this.fromWireType(V[e>>2])}function it(e,t){switch(t){case 2:return function(e){return this.fromWireType($[e>>2])};case 3:return function(e){return this.fromWireType(G[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function nt(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function at(e){try{return e()}catch(e){_e(e)}}var ot={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(e){var t=ot.callStackNameToId[e];return void 0===t&&(t=ot.callStackId++,ot.callStackNameToId[e]=t,ot.callStackIdToName[t]=e),t},instrumentWasmExports:function(e){var t={};for(var r in e)!function(r){var i=e[r];t[r]="function"==typeof i?function(){ot.exportCallStack.push(r);try{return i.apply(null,arguments)}finally{if(!O){var e=ot.exportCallStack.pop();B(e===r),ot.maybeStopUnwind()}}}:i}(r);return t},maybeStopUnwind:function(){ot.currData&&ot.state===ot.State.Unwinding&&0===ot.exportCallStack.length&&(ot.state=ot.State.Normal,at(s._asyncify_stop_unwind),"undefined"!=typeof Fibers&&Fibers.trampoline())},whenDone:function(){return new Promise(((e,t)=>{ot.asyncPromiseHandlers={resolve:e,reject:t}}))},allocateData:function(){var e=jt(12+ot.StackSize);return ot.setDataHeader(e,e+12,ot.StackSize),ot.setDataRewindFunc(e),e},setDataHeader:function(e,t,r){J[e>>2]=t,J[e+4>>2]=t+r},setDataRewindFunc:function(e){var t=ot.exportCallStack[0],r=ot.getCallStackId(t);J[e+8>>2]=r},getDataRewindFunc:function(e){var t=J[e+8>>2],r=ot.callStackIdToName[t];return s.asm[r]},doRewind:function(e){return ot.getDataRewindFunc(e)()},handleSleep:function(e){if(!O){if(ot.state===ot.State.Normal){var t=!1,r=!1;e((e=>{if(!O&&(ot.handleSleepReturnValue=e||0,t=!0,r)){ot.state=ot.State.Rewinding,at((()=>s._asyncify_start_rewind(ot.currData))),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.resume();var i,n=!1;try{i=ot.doRewind(ot.currData)}catch(e){i=e,n=!0}var a=!1;if(!ot.currData){var o=ot.asyncPromiseHandlers;o&&(ot.asyncPromiseHandlers=null,(n?o.reject:o.resolve)(i),a=!0)}if(n&&!a)throw i}})),r=!0,t||(ot.state=ot.State.Unwinding,ot.currData=ot.allocateData(),at((()=>s._asyncify_start_unwind(ot.currData))),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.pause())}else ot.state===ot.State.Rewinding?(ot.state=ot.State.Normal,at(s._asyncify_stop_rewind),St(ot.currData),ot.currData=null,ot.sleepCallbacks.forEach((e=>function(e,t){if(!O)if(t)e();else try{e()}catch(e){!function(e){if(e instanceof Er||"unwind"==e)return P;v(1,e)}(e)}}(e)))):_e("invalid state: "+ot.state);return ot.handleSleepReturnValue}},handleAsync:function(e){return ot.handleSleep((t=>{e().then(t)}))}};function st(e,t,r){return function(e,t,r){var i=s["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)}(e,t,r)}var ut,ct=void 0;function lt(e){var t=Nt(e),r=Le(t);return St(t),r}function ht(e,t,r){switch(t){case 0:return r?function(e){return H[e]}:function(e){return K[e]};case 1:return r?function(e){return W[e>>1]}:function(e){return Z[e>>1]};case 2:return r?function(e){return J[e>>2]}:function(e){return V[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function pt(e,t){var r=He[e];return void 0===r&&Je(t+" has unknown type "+lt(e)),r}function dt(e){try{return T.grow(e-U.byteLength+65535>>>16),ae(T.buffer),1}catch(e){}}ut=b?()=>{var e=n.hrtime();return 1e3*e[0]+e[1]/1e6}:()=>performance.now();var ft={};function mt(){if(!mt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:g||"./this.program"};for(var t in ft)void 0===ft[t]?delete e[t]:e[t]=ft[t];var r=[];for(var t in e)r.push(t+"="+e[t]);mt.strings=r}return mt.strings}function gt(e,t,r,i){for(var n=0,a=0;a>2],s=V[t+4>>2];t+=8;var u=ze.write(e,H,o,s,i);if(u<0)return-1;n+=u}return n}function vt(e){return e%4==0&&(e%100!=0||e%400==0)}var yt=[31,29,31,30,31,30,31,31,30,31,30,31],_t=[31,28,31,30,31,30,31,31,30,31,30,31];var bt=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=ze.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i};function wt(e,t,r){var i=r>0?r:L(e)+1,n=new Array(i),a=D(e,n,0,n.length);return t&&(n.length=a),n}Object.defineProperties(bt.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return ze.isDir(this.mode)}},isDevice:{get:function(){return ze.isChrdev(this.mode)}}}),ze.FSNode=bt,ze.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);qe=e}(),Ze=s.BindingError=We(Error,"BindingError"),Ve=s.InternalError=We(Error,"InternalError"),s.count_emval_handles=function(){for(var e=0,t=5;t>1]=2,0;case 16:case 8:default:return-28;case 9:return 28,J[xt()>>2]=28,-1}}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},qa:function(e){try{return Fe.getStreamFromFD(e),0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},bb:function(e,t,r){try{var i=4294967296*r+(t>>>0);return ze.ftruncate(e,i),0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},wa:function(e,t,r){Fe.varargs=r;try{var i=Fe.getStreamFromFD(e);switch(t){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:return i.tty?0:-59;case 21519:if(!i.tty)return-59;var n=Fe.get();return J[n>>2]=0,0;case 21520:return i.tty?-28:-59;case 21531:return n=Fe.get(),ze.ioctl(i,t,n);default:_e("bad ioctl syscall "+t)}}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},ma:function(e,t,r){try{return t=Fe.getStr(t),t=Fe.calculateAt(e,t),"/"===(t=Pe.normalize(t))[t.length-1]&&(t=t.substr(0,t.length-1)),ze.mkdir(t,r,0),0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},W:function(e,t,r,i){Fe.varargs=i;try{t=Fe.getStr(t),t=Fe.calculateAt(e,t);var n=i?Fe.get():0;return ze.open(t,r,n).fd}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},ha:function(e,t,r,i){try{return t=Fe.getStr(t),i=Fe.getStr(i),t=Fe.calculateAt(e,t),i=Fe.calculateAt(r,i),ze.rename(t,i),0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},pa:function(e,t){try{return e=Fe.getStr(e),Fe.doStat(ze.stat,e,t)}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},cb:function(e,t,r,i,n){},ya:function(e,t,r,i,n){var a=De(r);Ge(e,{name:t=Le(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=H;else if(2===r)i=W;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=J}return this.fromWireType(i[e>>a])},destructorFunction:null})},xa:function(e,t){Ge(e,{name:t=Le(t),fromWireType:function(e){var t=et(e);return Ye(e),t},toWireType:function(e,t){return tt(t)},argPackAdvance:8,readValueFromPointer:rt,destructorFunction:null})},Z:function(e,t,r){var i=De(r);Ge(e,{name:t=Le(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:it(t,i),destructorFunction:null})},t:function(e,t,r,i,n,a){var o=function(e,t){for(var r=[],i=0;i>2)+i]);return r}(t,r);e=Le(e),n=function(e,t){e=Le(e);var r,i,n,a=(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),st(r,i,n)});return"function"!=typeof a&&Je("unknown function pointer with signature "+e+": "+t),a}(i,n),function(e,t,r){s.hasOwnProperty(e)?((void 0===r||void 0!==s[e].overloadTable&&void 0!==s[e].overloadTable[r])&&Je("Cannot register public name '"+e+"' twice"),function(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Je("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}(s,e,e),s.hasOwnProperty(r)&&Je("Cannot register multiple overloads of a function with the same number of arguments ("+r+")!"),s[e].overloadTable[r]=t):(s[e]=t,void 0!==r&&(s[e].numArguments=r))}(e,(function(){!function(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||He[t]||(Ke[t]?Ke[t].forEach(e):(r.push(t),i[t]=!0))})),new ct(e+": "+r.map(lt).join([", "]))}("Cannot call "+e+" due to unbound types",o)}),t-1),function(r,i,o){function u(i){var o=function(r){var i=[r[0],null].concat(r.slice(1));return function(e,t,r){s.hasOwnProperty(e)||$e("Replacing nonexistant public symbol"),void 0!==s[e].overloadTable&&void 0!==r?s[e].overloadTable[r]=t:(s[e]=t,s[e].argCount=r)}(e,function(e,t,r,i,n){var a=t.length;a<2&&Je("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,s=!1,u=1;u{He.hasOwnProperty(e)?c[t]=He[e]:(l.push(e),Ue.hasOwnProperty(e)||(Ue[e]=[]),Ue[e].push((()=>{c[t]=He[e],++h===l.length&&u(c)})))})),0===l.length&&u(c)}([],o)},z:function(e,t,r,i,n){t=Le(t),-1===n&&(n=4294967295);var a=De(r),o=e=>e;if(0===i){var s=32-8*r;o=e=>e<>>s}var u=t.includes("unsigned");Ge(e,{name:t,fromWireType:o,toWireType:u?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:ht(t,a,0!==i),destructorFunction:null})},v:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=V,r=t[e>>=2],n=t[e+1];return new i(U,n,r)}Ge(e,{name:r=Le(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},Y:function(e,t){var r="std::string"===(t=Le(t));Ge(e,{name:t,fromWireType:function(e){var t,i=V[e>>2];if(r)for(var n=e+4,a=0;a<=i;++a){var o=e+4+a;if(a==i||0==K[o]){var s=F(n,o-n);void 0===t?t=s:(t+=String.fromCharCode(0),t+=s),n=o+1}}else{var u=new Array(i);for(a=0;aL(t):()=>t.length)(),a=jt(4+n+1);if(V[a>>2]=n,r&&i)q(t,a+4,n+1);else if(i)for(var o=0;o255&&(St(a),Je("String has UTF-16 code units that do not fit in 8 bits")),K[a+4+o]=s}else for(o=0;oZ,s=1):4===t&&(i=te,n=re,o=ie,a=()=>V,s=2),Ge(e,{name:r,fromWireType:function(e){for(var r,n=V[e>>2],o=a(),u=e+4,c=0;c<=n;++c){var l=e+4+c*t;if(c==n||0==o[l>>s]){var h=i(u,l-u);void 0===r?r=h:(r+=String.fromCharCode(0),r+=h),u=l+t}}return St(e),r},toWireType:function(e,i){"string"!=typeof i&&Je("Cannot pass non-string to C++ string type "+r);var a=o(i),u=jt(4+a+t);return V[u>>2]=a>>s,n(i,u+4,a+t),null!==e&&e.push(St,u),u},argPackAdvance:8,readValueFromPointer:rt,destructorFunction:function(e){St(e)}})},za:function(e,t){Ge(e,{isVoid:!0,name:t=Le(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},K:function(){return Date.now()},ra:function(){return!0},ia:function(e,t){q(g,e,t)},Da:function(e,t,r,i){e=et(e);for(var n=function(e,t){for(var r=new Array(e),i=0;i>2)+i],"parameter "+i);return r}(t,r),a=new Array(t),o=0;o4&&(Xe[e].refcount+=1)},Ba:function(e,t){var r=(e=pt(e,"_emval_take_value")).readValueFromPointer(t);return tt(r)},sa:function(e,t){var r=new Date(1e3*J[e>>2]);J[t>>2]=r.getUTCSeconds(),J[t+4>>2]=r.getUTCMinutes(),J[t+8>>2]=r.getUTCHours(),J[t+12>>2]=r.getUTCDate(),J[t+16>>2]=r.getUTCMonth(),J[t+20>>2]=r.getUTCFullYear()-1900,J[t+24>>2]=r.getUTCDay();var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/864e5|0;J[t+28>>2]=n},ta:function(e){var t=new Date(J[e+20>>2]+1900,J[e+16>>2],J[e+12>>2],J[e+8>>2],J[e+4>>2],J[e>>2],0),r=J[e+32>>2],i=t.getTimezoneOffset(),n=new Date(t.getFullYear(),0,1),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),o=n.getTimezoneOffset(),s=Math.min(o,a);if(r<0)J[e+32>>2]=Number(a!=o&&s==i);else if(r>0!=(s==i)){var u=Math.max(o,a),c=r>0?s:u;t.setTime(t.getTime()+6e4*(c-i))}J[e+24>>2]=t.getDay();var l=(t.getTime()-n.getTime())/864e5|0;return J[e+28>>2]=l,J[e>>2]=t.getSeconds(),J[e+4>>2]=t.getMinutes(),J[e+8>>2]=t.getHours(),J[e+12>>2]=t.getDate(),J[e+16>>2]=t.getMonth(),t.getTime()/1e3|0},ja:function(e,t,r,i,n,a,o,s){try{var u=ze.getStream(n);if(!u)return-8;var c=ze.mmap(u,e,t,a,r,i),l=c.ptr;return J[o>>2]=c.allocated,l}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},ka:function(e,t,r,i){try{return Fe.doMsync(e,ze.getStream(i),t,r,0),0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},la:function(e,t,r,i,n,a){try{var o=ze.getStream(n);o&&(2&r&&Fe.doMsync(e,o,t,i,a),ze.munmap(o))}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},ua:function e(t,r,i){e.called||(e.called=!0,function(e,t,r){var i=(new Date).getFullYear(),n=new Date(i,0,1),a=new Date(i,6,1),o=n.getTimezoneOffset(),s=a.getTimezoneOffset(),u=Math.max(o,s);function c(e){var t=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return t?t[1]:"GMT"}J[e>>2]=60*u,J[t>>2]=Number(o!=s);var l=c(n),h=c(a),p=ne(l),d=ne(h);s>2]=p,J[r+4>>2]=d):(J[r>>2]=d,J[r+4>>2]=p)}(t,r,i))},B:function(){_e("")},ga:function(){return 2147483648},J:ut,fa:function(e){var t,r=K.length,i=2147483648;if((e>>>=0)>i)return!1;for(var n=1;n<=4;n*=2){var a=r*(1+.2/n);if(a=Math.min(a,e+100663296),dt(Math.min(i,(t=Math.max(e,a))+(65536-t%65536)%65536)))return!0}return!1},na:function(e,t){var r=0;return mt().forEach((function(i,n){var a=t+r;J[e+4*n>>2]=a,function(e,t,r){for(var i=0;i>0]=e.charCodeAt(i);H[t>>0]=0}(i,a),r+=i.length+1})),0},oa:function(e,t){var r=mt();J[e>>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),J[t>>2]=i,0},Q:function(e){!function(e,t){P=e,Sr(e)}(e)},G:function(e){try{var t=Fe.getStreamFromFD(e);return ze.close(t),0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return e.errno}},$a:function(e,t,r,i,n,a){try{var o=gt(Fe.getStreamFromFD(e),t,r,i);return J[a>>2]=o,0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return e.errno}},X:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,a=0;a>2],s=V[t+4>>2];t+=8;var u=ze.read(e,H,o,s,undefined);if(u<0)return-1;if(n+=u,u>2]=n,0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return e.errno}},ab:function(e,t,r,i,n){try{var a=Fe.getStreamFromFD(e),o=4294967296*r+(t>>>0),s=9007199254740992;return o<=-s||o>=s?61:(ze.llseek(a,o,i),de=[a.position>>>0,(pe=a.position,+Math.abs(pe)>=1?pe>0?(0|Math.min(+Math.floor(pe/4294967296),4294967295))>>>0:~~+Math.ceil((pe-+(~~pe>>>0))/4294967296)>>>0:0)],J[n>>2]=de[0],J[n+4>>2]=de[1],a.getdents&&0===o&&0===i&&(a.getdents=null),0)}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return e.errno}},L:function(e,t,r,i){try{var n=gt(Fe.getStreamFromFD(e),t,r);return J[i>>2]=n,0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return e.errno}},a:function(){return A()},R:function(e,t,r,i){var n=At();try{return yr(e,t,r,i)}catch(e){if(Tt(n),e!==e+0)throw e;It(1,0)}},S:function(e,t,r,i){var n=At();try{return vr(e,t,r,i)}catch(e){if(Tt(n),e!==e+0)throw e;It(1,0)}},u:function(e){var t=At();try{return _r(e)}catch(e){if(Tt(t),e!==e+0)throw e;It(1,0)}},i:function(e,t){var r=At();try{return Ot(e,t)}catch(e){if(Tt(r),e!==e+0)throw e;It(1,0)}},d:function(e,t,r){var i=At();try{return Ct(e,t,r)}catch(e){if(Tt(i),e!==e+0)throw e;It(1,0)}},p:function(e,t,r,i){var n=At();try{return Ht(e,t,r,i)}catch(e){if(Tt(n),e!==e+0)throw e;It(1,0)}},n:function(e,t,r,i,n){var a=At();try{return Kt(e,t,r,i,n)}catch(e){if(Tt(a),e!==e+0)throw e;It(1,0)}},T:function(e,t,r,i,n,a){var o=At();try{return gr(e,t,r,i,n,a)}catch(e){if(Tt(o),e!==e+0)throw e;It(1,0)}},E:function(e,t,r,i,n,a){var o=At();try{return Yt(e,t,r,i,n,a)}catch(e){if(Tt(o),e!==e+0)throw e;It(1,0)}},x:function(e,t,r,i,n,a,o){var s=At();try{return hr(e,t,r,i,n,a,o)}catch(e){if(Tt(s),e!==e+0)throw e;It(1,0)}},O:function(e,t,r,i,n,a,o,s){var u=At();try{return nr(e,t,r,i,n,a,o,s)}catch(e){if(Tt(u),e!==e+0)throw e;It(1,0)}},Ha:function(e,t,r,i,n,a,o,s,u,c){var l=At();try{return lr(e,t,r,i,n,a,o,s,u,c)}catch(e){if(Tt(l),e!==e+0)throw e;It(1,0)}},I:function(e,t,r,i,n,a,o,s,u,c,l,h){var p=At();try{return br(e,t,r,i,n,a,o,s,u,c,l,h)}catch(e){if(Tt(p),e!==e+0)throw e;It(1,0)}},Ya:function(e,t,r,i,n,a,o){var s=At();try{return mr(e,t,r,i,n,a,o)}catch(e){if(Tt(s),e!==e+0)throw e;It(1,0)}},nb:function(e,t,r,i,n,a,o,s){var u=At();try{return or(e,t,r,i,n,a,o,s)}catch(e){if(Tt(u),e!==e+0)throw e;It(1,0)}},ob:function(e,t,r,i,n,a,o){var s=At();try{return ar(e,t,r,i,n,a,o)}catch(e){if(Tt(s),e!==e+0)throw e;It(1,0)}},lb:function(e,t,r,i){var n=At();try{return qt(e,t,r,i)}catch(e){if(Tt(n),e!==e+0)throw e;It(1,0)}},_a:function(e){var t=At();try{return fr(e)}catch(e){if(Tt(t),e!==e+0)throw e;It(1,0)}},qb:function(e,t){var r=At();try{return Lt(e,t)}catch(e){if(Tt(r),e!==e+0)throw e;It(1,0)}},fb:function(e,t,r){var i=At();try{return $t(e,t,r)}catch(e){if(Tt(i),e!==e+0)throw e;It(1,0)}},eb:function(e,t,r,i){var n=At();try{return Gt(e,t,r,i)}catch(e){if(Tt(n),e!==e+0)throw e;It(1,0)}},gb:function(e,t,r,i,n){var a=At();try{return Jt(e,t,r,i,n)}catch(e){if(Tt(a),e!==e+0)throw e;It(1,0)}},hb:function(e,t,r,i,n,a){var o=At();try{return cr(e,t,r,i,n,a)}catch(e){if(Tt(o),e!==e+0)throw e;It(1,0)}},l:function(e){var t=At();try{Ft(e)}catch(e){if(Tt(t),e!==e+0)throw e;It(1,0)}},s:function(e,t){var r=At();try{Bt(e,t)}catch(e){if(Tt(r),e!==e+0)throw e;It(1,0)}},h:function(e,t,r){var i=At();try{zt(e,t,r)}catch(e){if(Tt(i),e!==e+0)throw e;It(1,0)}},j:function(e,t,r,i){var n=At();try{Ut(e,t,r,i)}catch(e){if(Tt(n),e!==e+0)throw e;It(1,0)}},w:function(e,t,r,i,n){var a=At();try{Zt(e,t,r,i,n)}catch(e){if(Tt(a),e!==e+0)throw e;It(1,0)}},C:function(e,t,r,i,n,a){var o=At();try{Dt(e,t,r,i,n,a)}catch(e){if(Tt(o),e!==e+0)throw e;It(1,0)}},N:function(e,t,r,i,n,a,o){var s=At();try{Qt(e,t,r,i,n,a,o)}catch(e){if(Tt(s),e!==e+0)throw e;It(1,0)}},A:function(e,t,r,i,n,a,o,s){var u=At();try{dr(e,t,r,i,n,a,o,s)}catch(e){if(Tt(u),e!==e+0)throw e;It(1,0)}},Ia:function(e,t,r,i,n,a,o,s,u){var c=At();try{ir(e,t,r,i,n,a,o,s,u)}catch(e){if(Tt(c),e!==e+0)throw e;It(1,0)}},F:function(e,t,r,i,n,a,o,s,u,c,l){var h=At();try{pr(e,t,r,i,n,a,o,s,u,c,l)}catch(e){if(Tt(h),e!==e+0)throw e;It(1,0)}},H:function(e,t,r,i,n,a,o,s,u,c,l,h,p,d,f,m){var g=At();try{wr(e,t,r,i,n,a,o,s,u,c,l,h,p,d,f,m)}catch(e){if(Tt(g),e!==e+0)throw e;It(1,0)}},db:function(e,t,r,i,n,a,o){var s=At();try{Xt(e,t,r,i,n,a,o)}catch(e){if(Tt(s),e!==e+0)throw e;It(1,0)}},kb:function(e,t,r,i,n,a,o,s,u,c,l,h,p,d){var f=At();try{ur(e,t,r,i,n,a,o,s,u,c,l,h,p,d)}catch(e){if(Tt(f),e!==e+0)throw e;It(1,0)}},jb:function(e,t,r,i,n){var a=At();try{Vt(e,t,r,i,n)}catch(e){if(Tt(a),e!==e+0)throw e;It(1,0)}},Za:function(e,t,r,i,n,a,o){var s=At();try{rr(e,t,r,i,n,a,o)}catch(e){if(Tt(s),e!==e+0)throw e;It(1,0)}},rb:function(e,t,r,i,n,a,o,s,u){var c=At();try{Wt(e,t,r,i,n,a,o,s,u)}catch(e){if(Tt(c),e!==e+0)throw e;It(1,0)}},mb:function(e,t,r,i,n,a,o,s){var u=At();try{sr(e,t,r,i,n,a,o,s)}catch(e){if(Tt(u),e!==e+0)throw e;It(1,0)}},pb:function(e,t,r,i,n){var a=At();try{er(e,t,r,i,n)}catch(e){if(Tt(a),e!==e+0)throw e;It(1,0)}},ib:function(e,t,r,i,n,a,o,s,u,c){var l=At();try{tr(e,t,r,i,n,a,o,s,u,c)}catch(e){if(Tt(l),e!==e+0)throw e;It(1,0)}},sb:function(e,t,i,n,a,o,u,c){const l=r(32142),h=l.HttpClient,p=l.LibraryUtils,d=l.GenUtils;return ot.handleSleep((function(r){p.loadFullModule().then((c=>{let l=o,f=u,m=new Uint8Array(f);for(let e=0;e{let t=e.body;t instanceof Uint8Array||(console.error("resp is not uint8array"),console.error(t));let i=t.length*t.BYTES_PER_ELEMENT,n=s._malloc(i);new Uint8Array(s.HEAPU8.buffer,n,i).set(new Uint8Array(t.buffer,t.byteOffset,i));let a={code:e.statusCode,message:e.statusText,headers:e.headers,bodyPtr:n,bodyLength:t.length},o=JSON.stringify(a),u=s.lengthBytesUTF8(o)+1,c=s._malloc(u);s.stringToUTF8(o,c,u),g=!0,r(c)})).catch((e=>{if(g)throw console.error("Error caught in JS after previously calling wakeUp(): "+e),new Error("Error caught in JS after previously calling wakeUp(): "+e);let t=e.message?e.message:""+e;t=JSON.stringify({error:t});let i=s.lengthBytesUTF8(t)+1,n=s._malloc(i);s.stringToUTF8(t,n,i),g=!0,r(n)}))})).catch((e=>{throw new Error("Could not load full wasm module")}))}))},tb:function(e,t,i,n,a,o,u){const c=r(32142),l=c.HttpClient,h=c.LibraryUtils,p=c.GenUtils;return ot.handleSleep((function(r){let u=!1;l.request({method:F(a),uri:F(e),username:F(t),password:F(i),body:F(o),resolveWithFullResponse:!0,rejectUnauthorized:h.isRejectUnauthorized(F(n)),requestApi:p.isFirefox()?"xhr":"fetch"}).then((e=>{let t={code:e.statusCode,message:e.statusText,body:e.body,headers:e.headers},i=JSON.stringify(t),n=s.lengthBytesUTF8(i)+1,a=s._malloc(n);s.stringToUTF8(i,a,n),u=!0,r(a)})).catch((e=>{if(u)throw console.error("Error caught in JS after previously calling wakeUp(): "+e),new Error("Error caught in JS after previously calling wakeUp(): "+e);let t=e.message?e.message:""+e;t=JSON.stringify({error:t});let i=s.lengthBytesUTF8(t)+1,n=s._malloc(i);s.stringToUTF8(t,n,i),u=!0,r(n)}))}))},q:function(e){return e},va:function(e){Sr(e)},Ga:function(){k("missing function: rx_slow_hash"),_e(-1)},D:function(e){I(e)},ub:function(e,t,r,i){return function(e,t,r,i){var n=J[i+40>>2],a={tm_sec:J[i>>2],tm_min:J[i+4>>2],tm_hour:J[i+8>>2],tm_mday:J[i+12>>2],tm_mon:J[i+16>>2],tm_year:J[i+20>>2],tm_wday:J[i+24>>2],tm_yday:J[i+28>>2],tm_isdst:J[i+32>>2],tm_gmtoff:J[i+36>>2],tm_zone:n?F(n):""},o=F(r),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)o=o.replace(new RegExp(u,"g"),s[u]);var c=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],l=["January","February","March","April","May","June","July","August","September","October","November","December"];function h(e,t,r){for(var i="number"==typeof e?e.toString():e||"";i.length0?1:0}var i;return 0===(i=r(e.getFullYear()-t.getFullYear()))&&0===(i=r(e.getMonth()-t.getMonth()))&&(i=r(e.getDate()-t.getDate())),i}function f(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function m(e){var t=function(e,t){for(var r=new Date(e.getTime());t>0;){var i=vt(r.getFullYear()),n=r.getMonth(),a=(i?yt:_t)[n];if(!(t>a-r.getDate()))return r.setDate(r.getDate()+t),r;t-=a-r.getDate()+1,r.setDate(1),n<11?r.setMonth(n+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1))}return r}(new Date(e.tm_year+1900,0,1),e.tm_yday),r=new Date(t.getFullYear(),0,4),i=new Date(t.getFullYear()+1,0,4),n=f(r),a=f(i);return d(n,t)<=0?d(a,t)<=0?t.getFullYear()+1:t.getFullYear():t.getFullYear()-1}var g={"%a":function(e){return c[e.tm_wday].substring(0,3)},"%A":function(e){return c[e.tm_wday]},"%b":function(e){return l[e.tm_mon].substring(0,3)},"%B":function(e){return l[e.tm_mon]},"%C":function(e){return p((e.tm_year+1900)/100|0,2)},"%d":function(e){return p(e.tm_mday,2)},"%e":function(e){return h(e.tm_mday,2," ")},"%g":function(e){return m(e).toString().substring(2)},"%G":function(e){return m(e)},"%H":function(e){return p(e.tm_hour,2)},"%I":function(e){var t=e.tm_hour;return 0==t?t=12:t>12&&(t-=12),p(t,2)},"%j":function(e){return p(e.tm_mday+function(e,t){for(var r=0,i=0;i<=t;r+=e[i++]);return r}(vt(e.tm_year+1900)?yt:_t,e.tm_mon-1),3)},"%m":function(e){return p(e.tm_mon+1,2)},"%M":function(e){return p(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return p(e.tm_sec,2)},"%t":function(){return"\t"},"%u":function(e){return e.tm_wday||7},"%U":function(e){var t=e.tm_yday+7-e.tm_wday;return p(Math.floor(t/7),2)},"%V":function(e){var t=Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7);if((e.tm_wday+371-e.tm_yday-2)%7<=2&&t++,t){if(53==t){var r=(e.tm_wday+371-e.tm_yday)%7;4==r||3==r&&vt(e.tm_year)||(t=1)}}else{t=52;var i=(e.tm_wday+7-e.tm_yday-1)%7;(4==i||5==i&&vt(e.tm_year%400-1))&&t++}return p(t,2)},"%w":function(e){return e.tm_wday},"%W":function(e){var t=e.tm_yday+7-(e.tm_wday+6)%7;return p(Math.floor(t/7),2)},"%y":function(e){return(e.tm_year+1900).toString().substring(2)},"%Y":function(e){return e.tm_year+1900},"%z":function(e){var t=e.tm_gmtoff,r=t>=0;return t=(t=Math.abs(t)/60)/60*100+t%60,(r?"+":"-")+String("0000"+t).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var u in o=o.replace(/%%/g,"\0\0"),g)o.includes(u)&&(o=o.replace(new RegExp(u,"g"),g[u](a)));var v=wt(o=o.replace(/\0\0/g,"%"),!1);return v.length>t?0:(function(e,t){H.set(e,t)}(v,e),v.length-1)}(e,t,r,i)},Aa:function(){k("missing function: v4_generate_JIT_code"),_e(-1)}},St=(function(){var e={a:kt};function t(e,t){var r,i=e.exports;i=ot.instrumentWasmExports(i),s.asm=i,ae((T=s.asm.vb).buffer),oe=s.asm.yb,r=s.asm.wb,ue.unshift(r),ye()}function r(e){t(e.instance)}function i(t){return function(){if(!j&&(y||_)){if("function"==typeof fetch&&!we(he))return fetch(he,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+he+"'";return e.arrayBuffer()})).catch((function(){return Ee(he)}));if(c)return new Promise((function(e,t){c(he,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Ee(he)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){k("failed to asynchronously prepare wasm: "+e),_e(e)}))}if(ve(),s.instantiateWasm)try{var n=s.instantiateWasm(e,t);return ot.instrumentWasmExports(n)}catch(e){return k("Module.instantiateWasm callback failed with error: "+e),!1}(j||"function"!=typeof WebAssembly.instantiateStreaming||be(he)||we(he)||"function"!=typeof fetch?i(r):fetch(he,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(r,(function(e){return k("wasm streaming compile failed: "+e),k("falling back to ArrayBuffer instantiation"),i(r)}))}))).catch(o)}(),s.___wasm_call_ctors=function(){return(s.___wasm_call_ctors=s.asm.wb).apply(null,arguments)},s._free=function(){return(St=s._free=s.asm.xb).apply(null,arguments)}),xt=(s.__ZN5boost13serialization16singleton_module8get_lockEv=function(){return(s.__ZN5boost13serialization16singleton_module8get_lockEv=s.asm.zb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet210pending_txEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet210pending_txEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Ab).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11transactionEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11transactionEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Bb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Cb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Db).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote8txin_genEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote8txin_genEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Eb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote14txin_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote14txin_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Fb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto4hashEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto4hashEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Gb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote18txin_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote18txin_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Hb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15txout_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15txout_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Ib).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Jb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto10public_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto10public_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Kb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11txin_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11txin_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Lb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Mb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9key_imageEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9key_imageEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Nb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Ob).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote6tx_outEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote6tx_outEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Pb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Qb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Rb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote12txout_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote12txout_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Sb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_tagged_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_tagged_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Tb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto8view_tagEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto8view_tagEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Ub).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Vb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Wb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Xb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9signatureEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9signatureEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Yb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct10rctSigBaseEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct10rctSigBaseEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Zb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm._b).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct3keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct3keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.$b).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.ac).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9ecdhTupleEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9ecdhTupleEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.bc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14rctSigPrunableEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14rctSigPrunableEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.cc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.dc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct8rangeSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct8rangeSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.ec).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct7boroSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct7boroSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.fc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.gc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct11BulletproofEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct11BulletproofEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.hc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.ic).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct15BulletproofPlusEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct15BulletproofPlusEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.jc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.kc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5mgSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5mgSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.lc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.mc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.nc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5clsagEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5clsagEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.oc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote20tx_destination_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote20tx_destination_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.pc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote22account_public_addressEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote22account_public_addressEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.qc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24listImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24listImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.rc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.sc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.tc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet220tx_construction_dataEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet220tx_construction_dataEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.uc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.vc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15tx_source_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15tx_source_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.wc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.xc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24pairIyN3rct5ctkeyEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24pairIyN3rct5ctkeyEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.yc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5ctkeyEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5ctkeyEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.zc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14multisig_kLRkiEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14multisig_kLRkiEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Ac).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Bc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9RCTConfigEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9RCTConfigEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Cc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Dc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Ec).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Fc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet212multisig_sigEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet212multisig_sigEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Gc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct6rctSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct6rctSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Hc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Ic).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Jc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct12multisig_outEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct12multisig_outEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Kc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet210pending_txEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet210pending_txEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Lc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Mc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Nc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Oc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Pc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Qc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Rc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Sc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Tc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Uc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Vc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Wc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Xc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Yc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Zc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm._c).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.$c).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ad).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.bd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.cd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.dd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ed).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.fd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.gd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.hd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.id).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.jd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.kd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ld).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.md).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.nd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.od).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.pd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.qd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.rd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.sd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.td).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ud).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.vd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.wd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.xd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.yd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.zd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ad).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Bd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24listImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24listImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Cd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Dd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ed).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220tx_construction_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220tx_construction_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Fd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Gd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15tx_source_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15tx_source_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Hd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Id).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN3rct5ctkeyEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN3rct5ctkeyEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Jd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5ctkeyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5ctkeyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Kd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14multisig_kLRkiEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14multisig_kLRkiEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ld).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Md).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9RCTConfigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9RCTConfigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Nd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Od).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Pd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Qd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet212multisig_sigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet212multisig_sigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Rd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct6rctSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct6rctSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Sd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Td).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ud).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct12multisig_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct12multisig_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Vd).apply(null,arguments)},s.___errno_location=function(){return(xt=s.___errno_location=s.asm.Wd).apply(null,arguments)}),jt=s._malloc=function(){return(jt=s._malloc=s.asm.Xd).apply(null,arguments)},Nt=(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Yd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Zd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm._d).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.$d).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ae).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.be).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ce).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.de).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ee).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.fe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ge).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.he).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ie).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.je).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ke).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.le).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.me).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ne).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.oe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.pe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.qe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.re).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.se).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.te).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ue).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ve).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.we).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.xe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ye).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ze).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ae).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Be).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ce).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.De).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ee).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Fe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ge).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.He).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ie).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Je).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ke).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Le).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Me).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ne).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Oe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Pe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Qe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Re).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Se).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Te).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ue).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ve).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.We).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Xe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ye).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ze).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm._e).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.$e).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.af).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.bf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.cf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.df).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ef).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ff).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.gf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.hf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.jf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.kf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.lf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.mf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.nf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.of).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.pf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.qf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.rf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.sf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.tf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.uf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.vf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.wf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.xf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.yf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.zf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Af).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Bf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Cf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Df).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ef).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ff).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Gf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Hf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.If).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Jf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Kf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Lf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Mf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Nf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Of).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Pf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Qf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Rf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Sf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Tf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Uf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Vf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Wf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Xf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Yf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Zf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm._f).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.$f).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ag).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.bg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.cg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.dg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.eg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.fg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.gg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.hg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ig).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.jg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.kg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.lg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.mg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ng).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.og).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.pg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.qg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.rg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.sg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.tg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215unsigned_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215unsigned_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ug).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet220tx_construction_dataENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet220tx_construction_dataENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.vg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairImNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairImNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.wg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213signed_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213signed_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.xg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet210pending_txENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet210pending_txENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.yg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.zg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215multisig_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215multisig_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ag).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet219reserve_proof_entryENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet219reserve_proof_entryENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Bg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet219reserve_proof_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet219reserve_proof_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Cg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9signatureENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9signatureENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Dg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25tupleIJyyNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25tupleIJyyNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Eg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Fg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Gg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Hg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ig).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms9file_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms9file_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Jg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9chacha_ivEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9chacha_ivEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Kg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms13message_storeEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms13message_storeEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Lg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms17authorized_signerENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms17authorized_signerENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Mg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms17authorized_signerEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms17authorized_signerEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ng).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms7messageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms7messageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Og).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms7messageEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms7messageEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Pg).apply(null,arguments)},s.___getTypeName=function(){return(Nt=s.___getTypeName=s.asm.Qg).apply(null,arguments)}),Mt=(s.___embind_register_native_and_builtin_types=function(){return(s.___embind_register_native_and_builtin_types=s.asm.Rg).apply(null,arguments)},s._emscripten_builtin_memalign=function(){return(Mt=s._emscripten_builtin_memalign=s.asm.Sg).apply(null,arguments)}),It=s._setThrew=function(){return(It=s._setThrew=s.asm.Tg).apply(null,arguments)},At=s.stackSave=function(){return(At=s.stackSave=s.asm.Ug).apply(null,arguments)},Tt=s.stackRestore=function(){return(Tt=s.stackRestore=s.asm.Vg).apply(null,arguments)},Rt=s.___cxa_can_catch=function(){return(Rt=s.___cxa_can_catch=s.asm.Wg).apply(null,arguments)},Pt=s.___cxa_is_pointer_type=function(){return(Pt=s.___cxa_is_pointer_type=s.asm.Xg).apply(null,arguments)},Ot=s.dynCall_ii=function(){return(Ot=s.dynCall_ii=s.asm.Yg).apply(null,arguments)},Bt=s.dynCall_vi=function(){return(Bt=s.dynCall_vi=s.asm.Zg).apply(null,arguments)},Ct=s.dynCall_iii=function(){return(Ct=s.dynCall_iii=s.asm._g).apply(null,arguments)},zt=s.dynCall_vii=function(){return(zt=s.dynCall_vii=s.asm.$g).apply(null,arguments)},Ft=s.dynCall_v=function(){return(Ft=s.dynCall_v=s.asm.ah).apply(null,arguments)},Dt=s.dynCall_viiiii=function(){return(Dt=s.dynCall_viiiii=s.asm.bh).apply(null,arguments)},qt=s.dynCall_iij=function(){return(qt=s.dynCall_iij=s.asm.ch).apply(null,arguments)},Lt=(s.dynCall_iiiiijii=function(){return(s.dynCall_iiiiijii=s.asm.dh).apply(null,arguments)},s.dynCall_iiijiii=function(){return(s.dynCall_iiijiii=s.asm.eh).apply(null,arguments)},s.dynCall_iiiijii=function(){return(s.dynCall_iiiijii=s.asm.fh).apply(null,arguments)},s.dynCall_ji=function(){return(Lt=s.dynCall_ji=s.asm.gh).apply(null,arguments)}),Ut=s.dynCall_viii=function(){return(Ut=s.dynCall_viii=s.asm.hh).apply(null,arguments)},Ht=s.dynCall_iiii=function(){return(Ht=s.dynCall_iiii=s.asm.ih).apply(null,arguments)},Kt=s.dynCall_iiiii=function(){return(Kt=s.dynCall_iiiii=s.asm.jh).apply(null,arguments)},Wt=s.dynCall_viijiiii=function(){return(Wt=s.dynCall_viijiiii=s.asm.kh).apply(null,arguments)},Zt=s.dynCall_viiii=function(){return(Zt=s.dynCall_viiii=s.asm.lh).apply(null,arguments)},Jt=(s.dynCall_vij=function(){return(s.dynCall_vij=s.asm.mh).apply(null,arguments)},s.dynCall_jiiii=function(){return(Jt=s.dynCall_jiiii=s.asm.nh).apply(null,arguments)}),Vt=s.dynCall_viij=function(){return(Vt=s.dynCall_viij=s.asm.oh).apply(null,arguments)},$t=(s.dynCall_viiji=function(){return(s.dynCall_viiji=s.asm.ph).apply(null,arguments)},s.dynCall_jii=function(){return($t=s.dynCall_jii=s.asm.qh).apply(null,arguments)}),Gt=s.dynCall_jiii=function(){return(Gt=s.dynCall_jiii=s.asm.rh).apply(null,arguments)},Qt=s.dynCall_viiiiii=function(){return(Qt=s.dynCall_viiiiii=s.asm.sh).apply(null,arguments)},Xt=s.dynCall_viiiji=function(){return(Xt=s.dynCall_viiiji=s.asm.th).apply(null,arguments)},Yt=(s.dynCall_vijiiii=function(){return(s.dynCall_vijiiii=s.asm.uh).apply(null,arguments)},s.dynCall_iiiiiiiii=function(){return(s.dynCall_iiiiiiiii=s.asm.vh).apply(null,arguments)},s.dynCall_iiiiii=function(){return(Yt=s.dynCall_iiiiii=s.asm.wh).apply(null,arguments)}),er=(s.dynCall_vijjjdi=function(){return(s.dynCall_vijjjdi=s.asm.xh).apply(null,arguments)},s.dynCall_vijj=function(){return(s.dynCall_vijj=s.asm.yh).apply(null,arguments)},s.dynCall_viji=function(){return(er=s.dynCall_viji=s.asm.zh).apply(null,arguments)}),tr=(s.dynCall_vijiijjiij=function(){return(s.dynCall_vijiijjiij=s.asm.Ah).apply(null,arguments)},s.dynCall_vijiiji=function(){return(s.dynCall_vijiiji=s.asm.Bh).apply(null,arguments)},s.dynCall_vijiijii=function(){return(tr=s.dynCall_vijiijii=s.asm.Ch).apply(null,arguments)}),rr=(s.dynCall_vijii=function(){return(s.dynCall_vijii=s.asm.Dh).apply(null,arguments)},s.dynCall_vijij=function(){return(s.dynCall_vijij=s.asm.Eh).apply(null,arguments)},s.dynCall_viijii=function(){return(rr=s.dynCall_viijii=s.asm.Fh).apply(null,arguments)}),ir=s.dynCall_viiiiiiii=function(){return(ir=s.dynCall_viiiiiiii=s.asm.Gh).apply(null,arguments)},nr=s.dynCall_iiiiiiii=function(){return(nr=s.dynCall_iiiiiiii=s.asm.Hh).apply(null,arguments)},ar=s.dynCall_iiiiji=function(){return(ar=s.dynCall_iiiiji=s.asm.Ih).apply(null,arguments)},or=s.dynCall_iiiiiji=function(){return(or=s.dynCall_iiiiiji=s.asm.Jh).apply(null,arguments)},sr=s.dynCall_viijjd=function(){return(sr=s.dynCall_viijjd=s.asm.Kh).apply(null,arguments)},ur=s.dynCall_viiijjjjii=function(){return(ur=s.dynCall_viiijjjjii=s.asm.Lh).apply(null,arguments)},cr=s.dynCall_jiiiii=function(){return(cr=s.dynCall_jiiiii=s.asm.Mh).apply(null,arguments)},lr=s.dynCall_iiiiiiiiii=function(){return(lr=s.dynCall_iiiiiiiiii=s.asm.Nh).apply(null,arguments)},hr=s.dynCall_iiiiiii=function(){return(hr=s.dynCall_iiiiiii=s.asm.Oh).apply(null,arguments)},pr=(s.dynCall_viiiiiiiii=function(){return(s.dynCall_viiiiiiiii=s.asm.Ph).apply(null,arguments)},s.dynCall_viiiiiiiiii=function(){return(pr=s.dynCall_viiiiiiiiii=s.asm.Qh).apply(null,arguments)}),dr=s.dynCall_viiiiiii=function(){return(dr=s.dynCall_viiiiiii=s.asm.Rh).apply(null,arguments)},fr=(s.dynCall_iiiij=function(){return(s.dynCall_iiiij=s.asm.Sh).apply(null,arguments)},s.dynCall_iiiiiiiiiiiiiiii=function(){return(s.dynCall_iiiiiiiiiiiiiiii=s.asm.Th).apply(null,arguments)},s.dynCall_jiji=function(){return(s.dynCall_jiji=s.asm.Uh).apply(null,arguments)},s.dynCall_iidiiii=function(){return(s.dynCall_iidiiii=s.asm.Vh).apply(null,arguments)},s.dynCall_j=function(){return(fr=s.dynCall_j=s.asm.Wh).apply(null,arguments)}),mr=s.dynCall_iiiiij=function(){return(mr=s.dynCall_iiiiij=s.asm.Xh).apply(null,arguments)},gr=s.dynCall_iiiiid=function(){return(gr=s.dynCall_iiiiid=s.asm.Yh).apply(null,arguments)},vr=(s.dynCall_iiiiiiiiiii=function(){return(s.dynCall_iiiiiiiiiii=s.asm.Zh).apply(null,arguments)},s.dynCall_iiiiiiiiiiiii=function(){return(s.dynCall_iiiiiiiiiiiii=s.asm._h).apply(null,arguments)},s.dynCall_fiii=function(){return(vr=s.dynCall_fiii=s.asm.$h).apply(null,arguments)}),yr=s.dynCall_diii=function(){return(yr=s.dynCall_diii=s.asm.ai).apply(null,arguments)},_r=s.dynCall_i=function(){return(_r=s.dynCall_i=s.asm.bi).apply(null,arguments)},br=s.dynCall_iiiiiiiiiiii=function(){return(br=s.dynCall_iiiiiiiiiiii=s.asm.ci).apply(null,arguments)},wr=s.dynCall_viiiiiiiiiiiiiii=function(){return(wr=s.dynCall_viiiiiiiiiiiiiii=s.asm.di).apply(null,arguments)};function Er(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function kr(e){function r(){Et||(Et=!0,s.calledRun=!0,O||(s.noFSInit||ze.init.initialized||ze.init(),ze.ignorePermissions=!1,Be.init(),ke(ue),t(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),function(){if(s.postRun)for("function"==typeof s.postRun&&(s.postRun=[s.postRun]);s.postRun.length;)e=s.postRun.shift(),ce.unshift(e);var e;ke(ce)}()))}e=e||m,fe>0||(function(){if(s.preRun)for("function"==typeof s.preRun&&(s.preRun=[s.preRun]);s.preRun.length;)e=s.preRun.shift(),se.unshift(e);var e;ke(se)}(),fe>0||(s.setStatus?(s.setStatus("Running..."),setTimeout((function(){setTimeout((function(){s.setStatus("")}),1),r()}),1)):r()))}function Sr(e){P=e,le()||(s.onExit&&s.onExit(e),O=!0),v(e,new Er(e))}if(s.dynCall_iiiiijj=function(){return(s.dynCall_iiiiijj=s.asm.ei).apply(null,arguments)},s.dynCall_iiiiiijj=function(){return(s.dynCall_iiiiiijj=s.asm.fi).apply(null,arguments)},s._asyncify_start_unwind=function(){return(s._asyncify_start_unwind=s.asm.gi).apply(null,arguments)},s._asyncify_stop_unwind=function(){return(s._asyncify_stop_unwind=s.asm.hi).apply(null,arguments)},s._asyncify_start_rewind=function(){return(s._asyncify_start_rewind=s.asm.ii).apply(null,arguments)},s._asyncify_stop_rewind=function(){return(s._asyncify_stop_rewind=s.asm.ji).apply(null,arguments)},s.UTF8ToString=F,s.stringToUTF8=q,s.lengthBytesUTF8=L,s.addFunction=function(e,t){if(x||(x=new WeakMap,function(e,t){for(var r=0;r<0+t;r++){var i=(n=r,oe.get(n));i&&x.set(i,r)}var n}(0,oe.length)),x.has(e))return x.get(e);var r=function(){if(N.length)return N.pop();try{oe.grow(1)}catch(e){if(!(e instanceof RangeError))throw e;throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH."}return oe.length-1}();try{Se(r,e)}catch(n){if(!(n instanceof TypeError))throw n;var i=function(e,t){if("function"==typeof WebAssembly.Function){for(var r={i:"i32",j:"i64",f:"f32",d:"f64"},i={parameters:[],results:"v"==t[0]?[]:[r[t[0]]]},n=1;n255&&(i&=255),t.push(String.fromCharCode(i))}return t.join("")},ge=function e(){Et||kr(),Et||(ge=e)},s.run=kr,s.preInit)for("function"==typeof s.preInit&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return kr(),e.ready});e.exports=o},86192:(e,t,r)=>{var i,n=r(34155),a=r(48764).Buffer,o=(i=(i="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0)||"/index.js",function(e){var t,o,s=void 0!==(e=e||{})?e:{};s.ready=new Promise((function(e,r){t=e,o=r}));var u,c,l,h,p,d,f=Object.assign({},s),m=[],g="./this.program",v=(e,t)=>{throw t},y="object"==typeof window,_="function"==typeof importScripts,b="object"==typeof n&&"object"==typeof n.versions&&"string"==typeof n.versions.node,w="";b?(w=_?r(26470).dirname(w)+"/":"//",d=()=>{p||(h=r(76614),p=r(26470))},u=function(e,t){return d(),e=p.normalize(e),h.readFileSync(e,t?void 0:"utf8")},l=e=>{var t=u(e,!0);return t.buffer||(t=new Uint8Array(t)),t},c=(e,t,r)=>{d(),e=p.normalize(e),h.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},n.argv.length>1&&(g=n.argv[1].replace(/\\/g,"/")),m=n.argv.slice(2),n.on("unhandledRejection",(function(e){throw e})),v=(e,t)=>{if(ue())throw n.exitCode=e,t;var r;(r=t)instanceof Pt||k("exiting due to exception: "+r),n.exit(e)},s.inspect=function(){return"[Emscripten Module object]"}):(y||_)&&(_?w=self.location.href:"undefined"!=typeof document&&document.currentScript&&(w=document.currentScript.src),i&&(w=i),w=0!==w.indexOf("blob:")?w.substr(0,w.replace(/[?#].*/,"").lastIndexOf("/")+1):"",u=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},_&&(l=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),c=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var E=s.print||console.log.bind(console),k=s.printErr||console.warn.bind(console);function S(e){return e<128?[e]:[e%128|128,e>>7]}Object.assign(s,f),f=null,s.arguments&&(m=s.arguments),s.thisProgram&&(g=s.thisProgram),s.quit&&(v=s.quit);var x,j,N=[],M=0,I=e=>{M=e},A=()=>M;s.wasmBinary&&(j=s.wasmBinary);var T,R=s.noExitRuntime||!0;"object"!=typeof WebAssembly&&ve("no native wasm support detected");var P=!1;var O="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function B(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&O)return O.decode(e.subarray(t,n));for(var a="";t>10,56320|1023&c)}}else a+=String.fromCharCode((31&o)<<6|s)}else a+=String.fromCharCode(o)}return a}function C(e,t){return e?B(U,e,t):""}function z(e,t,r,i){if(!(i>0))return 0;for(var n=r,a=r+i-1,o=0;o=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++o)),s<=127){if(r>=a)break;t[r++]=s}else if(s<=2047){if(r+1>=a)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=a)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=a)break;t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-n}function F(e,t,r){return z(e,U,t,r)}function D(e){for(var t=0,r=0;r=55296&&i<=57343&&(i=65536+((1023&i)<<10)|1023&e.charCodeAt(++r)),i<=127?++t:t+=i<=2047?2:i<=65535?3:4}return t}var q,L,U,H,K,W,Z,J,V,$="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function G(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&K[i];)++i;if((r=i<<1)-e>32&&$)return $.decode(U.subarray(e,r));for(var a="",o=0;!(o>=t/2);++o){var s=H[e+2*o>>1];if(0==s)break;a+=String.fromCharCode(s)}return a}function Q(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,a=0;a>1]=o,t+=2}return H[t>>1]=0,t-i}function X(e){return 2*e.length}function Y(e,t){for(var r=0,i="";!(r>=t/4);){var n=W[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var a=n-65536;i+=String.fromCharCode(55296|a>>10,56320|1023&a)}else i+=String.fromCharCode(n)}return i}function ee(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,a=0;a=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a)),W[t>>2]=o,(t+=4)+4>n)break}return W[t>>2]=0,t-i}function te(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}function re(e){var t=D(e)+1,r=gt(t);return r&&z(e,L,r,t),r}function ie(e){q=e,s.HEAP8=L=new Int8Array(e),s.HEAP16=H=new Int16Array(e),s.HEAP32=W=new Int32Array(e),s.HEAPU8=U=new Uint8Array(e),s.HEAPU16=K=new Uint16Array(e),s.HEAPU32=Z=new Uint32Array(e),s.HEAPF32=J=new Float32Array(e),s.HEAPF64=V=new Float64Array(e)}s.INITIAL_MEMORY;var ne,ae=[],oe=[],se=[];function ue(){return R}var ce,le,he,pe=0,de=null,fe=null;function me(e){pe++,s.monitorRunDependencies&&s.monitorRunDependencies(pe)}function ge(e){if(pe--,s.monitorRunDependencies&&s.monitorRunDependencies(pe),0==pe&&(null!==de&&(clearInterval(de),de=null),fe)){var t=fe;fe=null,t()}}function ve(e){s.onAbort&&s.onAbort(e),k(e="Aborted("+e+")"),P=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw o(t),t}function ye(e){return e.startsWith("data:application/octet-stream;base64,")}function _e(e){return e.startsWith("file://")}function be(e){try{if(e==ce&&j)return new Uint8Array(j);if(l)return l(e);throw"both async and sync fetching of the wasm failed"}catch(e){ve(e)}}function we(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var r=t.func;"number"==typeof r?void 0===t.arg?Ee(r)():Ee(r)(t.arg):r(void 0===t.arg?null:t.arg)}else t(s)}}function Ee(e){return ne.get(e)}function ke(e,t){ne.set(e,t)}ye(ce="monero_wallet_keys.wasm")||(ce=function(e){return s.locateFile?s.locateFile(e,w):w+e}(ce));var Se=[],xe=0,je=0;function Ne(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){Z[this.ptr+4>>2]=e},this.get_type=function(){return Z[this.ptr+4>>2]},this.set_destructor=function(e){Z[this.ptr+8>>2]=e},this.get_destructor=function(){return Z[this.ptr+8>>2]},this.set_refcount=function(e){W[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,L[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=L[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,L[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=L[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=W[this.ptr>>2];W[this.ptr>>2]=e+1},this.release_ref=function(){var e=W[this.ptr>>2];return W[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){Z[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return Z[this.ptr+16>>2]},this.get_exception_ptr=function(){if(St(this.get_type()))return Z[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}function Me(e){return vt(new Ne(e).ptr)}var Ie={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=Ie.isAbs(e),r="/"===e.substr(-1);return(e=Ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=Ie.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=Ie.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return Ie.normalize(e.join("/"))},join2:(e,t)=>Ie.normalize(e+"/"+t)},Ae={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Pe.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=Ie.isAbs(i)}return(t?"/":"")+(e=Ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=Ae.resolve(e).substr(1),t=Ae.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),a=Math.min(i.length,n.length),o=a,s=0;s0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=dt(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(E(B(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(E(B(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(k(B(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(k(B(e.output,0)),e.output=[])}}},Re={ops_table:null,mount:function(e){return Re.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(Pe.isBlkdev(r)||Pe.isFIFO(r))throw new Pe.ErrnoError(63);Re.ops_table||(Re.ops_table={dir:{node:{getattr:Re.node_ops.getattr,setattr:Re.node_ops.setattr,lookup:Re.node_ops.lookup,mknod:Re.node_ops.mknod,rename:Re.node_ops.rename,unlink:Re.node_ops.unlink,rmdir:Re.node_ops.rmdir,readdir:Re.node_ops.readdir,symlink:Re.node_ops.symlink},stream:{llseek:Re.stream_ops.llseek}},file:{node:{getattr:Re.node_ops.getattr,setattr:Re.node_ops.setattr},stream:{llseek:Re.stream_ops.llseek,read:Re.stream_ops.read,write:Re.stream_ops.write,allocate:Re.stream_ops.allocate,mmap:Re.stream_ops.mmap,msync:Re.stream_ops.msync}},link:{node:{getattr:Re.node_ops.getattr,setattr:Re.node_ops.setattr,readlink:Re.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Re.node_ops.getattr,setattr:Re.node_ops.setattr},stream:Pe.chrdev_stream_ops}});var n=Pe.createNode(e,t,r,i);return Pe.isDir(n.mode)?(n.node_ops=Re.ops_table.dir.node,n.stream_ops=Re.ops_table.dir.stream,n.contents={}):Pe.isFile(n.mode)?(n.node_ops=Re.ops_table.file.node,n.stream_ops=Re.ops_table.file.stream,n.usedBytes=0,n.contents=null):Pe.isLink(n.mode)?(n.node_ops=Re.ops_table.link.node,n.stream_ops=Re.ops_table.link.stream):Pe.isChrdev(n.mode)&&(n.node_ops=Re.ops_table.chrdev.node,n.stream_ops=Re.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=Pe.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,Pe.isDir(e.mode)?t.size=4096:Pe.isFile(e.mode)?t.size=e.usedBytes:Pe.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&Re.resizeFileStorage(e,t.size)},lookup:function(e,t){throw Pe.genericErrors[44]},mknod:function(e,t,r,i){return Re.createNode(e,t,r,i)},rename:function(e,t,r){if(Pe.isDir(e.mode)){var i;try{i=Pe.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new Pe.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=Pe.lookupNode(e,t);for(var i in r.contents)throw new Pe.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=Re.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!Pe.isLink(e.mode))throw new Pe.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var a=e.node.contents;if(n>=e.node.usedBytes)return 0;var o=Math.min(e.node.usedBytes-n,i);if(o>8&&a.subarray)t.set(a.subarray(n,n+o),r);else for(var s=0;s0||i+r{if(!(e=Ae.resolve(Pe.cwd(),e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new Pe.ErrnoError(32);for(var r=Ie.normalizeArray(e.split("/").filter((e=>!!e)),!1),i=Pe.root,n="/",a=0;a40)throw new Pe.ErrnoError(32)}}return{path:n,node:i}},getPath:e=>{for(var t;;){if(Pe.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%Pe.nameTable.length},hashAddNode:e=>{var t=Pe.hashName(e.parent.id,e.name);e.name_next=Pe.nameTable[t],Pe.nameTable[t]=e},hashRemoveNode:e=>{var t=Pe.hashName(e.parent.id,e.name);if(Pe.nameTable[t]===e)Pe.nameTable[t]=e.name_next;else for(var r=Pe.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=Pe.mayLookup(e);if(r)throw new Pe.ErrnoError(r,e);for(var i=Pe.hashName(e.id,t),n=Pe.nameTable[i];n;n=n.name_next){var a=n.name;if(n.parent.id===e.id&&a===t)return n}return Pe.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new Pe.FSNode(e,t,r,i);return Pe.hashAddNode(n),n},destroyNode:e=>{Pe.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=Pe.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Pe.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>Pe.nodePermissions(e,"x")||(e.node_ops.lookup?0:2),mayCreate:(e,t)=>{try{return Pe.lookupNode(e,t),20}catch(e){}return Pe.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=Pe.lookupNode(e,t)}catch(e){return e.errno}var n=Pe.nodePermissions(e,"wx");if(n)return n;if(r){if(!Pe.isDir(i.mode))return 54;if(Pe.isRoot(i)||Pe.getPath(i)===Pe.cwd())return 10}else if(Pe.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Pe.isLink(e.mode)?32:Pe.isDir(e.mode)&&("r"!==Pe.flagsToPermissionString(t)||512&t)?31:Pe.nodePermissions(e,Pe.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,t=Pe.MAX_OPEN_FDS)=>{for(var r=e;r<=t;r++)if(!Pe.streams[r])return r;throw new Pe.ErrnoError(33)},getStream:e=>Pe.streams[e],createStream:(e,t,r)=>{Pe.FSStream||(Pe.FSStream=function(){this.shared={}},Pe.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get function(){return this.shared.position},set:function(e){this.shared.position=e}}}),e=Object.assign(new Pe.FSStream,e);var i=Pe.nextfd(t,r);return e.fd=i,Pe.streams[i]=e,e},closeStream:e=>{Pe.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=Pe.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new Pe.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{Pe.devices[e]={stream_ops:t}},getDevice:e=>Pe.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),Pe.syncFSRequests++,Pe.syncFSRequests>1&&k("warning: "+Pe.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=Pe.getMounts(Pe.root.mount),i=0;function n(e){return Pe.syncFSRequests--,t(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return a(null);t.type.syncfs(t,e,a)}))},mount:(e,t,r)=>{var i,n="/"===r,a=!r;if(n&&Pe.root)throw new Pe.ErrnoError(10);if(!n&&!a){var o=Pe.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,Pe.isMountpoint(i))throw new Pe.ErrnoError(10);if(!Pe.isDir(i.mode))throw new Pe.ErrnoError(54)}var s={type:e,opts:t,mountpoint:r,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,n?Pe.root=u:i&&(i.mounted=s,i.mount&&i.mount.mounts.push(s)),u},unmount:e=>{var t=Pe.lookupPath(e,{follow_mount:!1});if(!Pe.isMountpoint(t.node))throw new Pe.ErrnoError(28);var r=t.node,i=r.mounted,n=Pe.getMounts(i);Object.keys(Pe.nameTable).forEach((e=>{for(var t=Pe.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&Pe.destroyNode(t),t=r}})),r.mounted=null;var a=r.mount.mounts.indexOf(i);r.mount.mounts.splice(a,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=Pe.lookupPath(e,{parent:!0}).node,n=Ie.basename(e);if(!n||"."===n||".."===n)throw new Pe.ErrnoError(28);var a=Pe.mayCreate(i,n);if(a)throw new Pe.ErrnoError(a);if(!i.node_ops.mknod)throw new Pe.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Pe.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Pe.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,Pe.mknod(e,t,r)),symlink:(e,t)=>{if(!Ae.resolve(e))throw new Pe.ErrnoError(44);var r=Pe.lookupPath(t,{parent:!0}).node;if(!r)throw new Pe.ErrnoError(44);var i=Ie.basename(t),n=Pe.mayCreate(r,i);if(n)throw new Pe.ErrnoError(n);if(!r.node_ops.symlink)throw new Pe.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=Ie.dirname(e),a=Ie.dirname(t),o=Ie.basename(e),s=Ie.basename(t);if(r=Pe.lookupPath(e,{parent:!0}).node,i=Pe.lookupPath(t,{parent:!0}).node,!r||!i)throw new Pe.ErrnoError(44);if(r.mount!==i.mount)throw new Pe.ErrnoError(75);var u,c=Pe.lookupNode(r,o),l=Ae.relative(e,a);if("."!==l.charAt(0))throw new Pe.ErrnoError(28);if("."!==(l=Ae.relative(t,n)).charAt(0))throw new Pe.ErrnoError(55);try{u=Pe.lookupNode(i,s)}catch(e){}if(c!==u){var h=Pe.isDir(c.mode),p=Pe.mayDelete(r,o,h);if(p)throw new Pe.ErrnoError(p);if(p=u?Pe.mayDelete(i,s,h):Pe.mayCreate(i,s))throw new Pe.ErrnoError(p);if(!r.node_ops.rename)throw new Pe.ErrnoError(63);if(Pe.isMountpoint(c)||u&&Pe.isMountpoint(u))throw new Pe.ErrnoError(10);if(i!==r&&(p=Pe.nodePermissions(r,"w")))throw new Pe.ErrnoError(p);Pe.hashRemoveNode(c);try{r.node_ops.rename(c,i,s)}catch(e){throw e}finally{Pe.hashAddNode(c)}}},rmdir:e=>{var t=Pe.lookupPath(e,{parent:!0}).node,r=Ie.basename(e),i=Pe.lookupNode(t,r),n=Pe.mayDelete(t,r,!0);if(n)throw new Pe.ErrnoError(n);if(!t.node_ops.rmdir)throw new Pe.ErrnoError(63);if(Pe.isMountpoint(i))throw new Pe.ErrnoError(10);t.node_ops.rmdir(t,r),Pe.destroyNode(i)},readdir:e=>{var t=Pe.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Pe.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=Pe.lookupPath(e,{parent:!0}).node;if(!t)throw new Pe.ErrnoError(44);var r=Ie.basename(e),i=Pe.lookupNode(t,r),n=Pe.mayDelete(t,r,!1);if(n)throw new Pe.ErrnoError(n);if(!t.node_ops.unlink)throw new Pe.ErrnoError(63);if(Pe.isMountpoint(i))throw new Pe.ErrnoError(10);t.node_ops.unlink(t,r),Pe.destroyNode(i)},readlink:e=>{var t=Pe.lookupPath(e).node;if(!t)throw new Pe.ErrnoError(44);if(!t.node_ops.readlink)throw new Pe.ErrnoError(28);return Ae.resolve(Pe.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=Pe.lookupPath(e,{follow:!t}).node;if(!r)throw new Pe.ErrnoError(44);if(!r.node_ops.getattr)throw new Pe.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Pe.stat(e,!0),chmod:(e,t,r)=>{var i;if(!(i="string"==typeof e?Pe.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new Pe.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{Pe.chmod(e,t,!0)},fchmod:(e,t)=>{var r=Pe.getStream(e);if(!r)throw new Pe.ErrnoError(8);Pe.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;if(!(n="string"==typeof e?Pe.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new Pe.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{Pe.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=Pe.getStream(e);if(!i)throw new Pe.ErrnoError(8);Pe.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new Pe.ErrnoError(28);var r;if(!(r="string"==typeof e?Pe.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new Pe.ErrnoError(63);if(Pe.isDir(r.mode))throw new Pe.ErrnoError(31);if(!Pe.isFile(r.mode))throw new Pe.ErrnoError(28);var i=Pe.nodePermissions(r,"w");if(i)throw new Pe.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=Pe.getStream(e);if(!r)throw new Pe.ErrnoError(8);if(0==(2097155&r.flags))throw new Pe.ErrnoError(28);Pe.truncate(r.node,t)},utime:(e,t,r)=>{var i=Pe.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,t,r)=>{if(""===e)throw new Pe.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?Pe.modeStringToFlags(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=Ie.normalize(e);try{i=Pe.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var n=!1;if(64&t)if(i){if(128&t)throw new Pe.ErrnoError(20)}else i=Pe.mknod(e,r,0),n=!0;if(!i)throw new Pe.ErrnoError(44);if(Pe.isChrdev(i.mode)&&(t&=-513),65536&t&&!Pe.isDir(i.mode))throw new Pe.ErrnoError(54);if(!n){var a=Pe.mayOpen(i,t);if(a)throw new Pe.ErrnoError(a)}512&t&&!n&&Pe.truncate(i,0),t&=-131713;var o=Pe.createStream({node:i,path:Pe.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!s.logReadFiles||1&t||(Pe.readFiles||(Pe.readFiles={}),e in Pe.readFiles||(Pe.readFiles[e]=1)),o},close:e=>{if(Pe.isClosed(e))throw new Pe.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Pe.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(Pe.isClosed(e))throw new Pe.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Pe.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Pe.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new Pe.ErrnoError(28);if(Pe.isClosed(e))throw new Pe.ErrnoError(8);if(1==(2097155&e.flags))throw new Pe.ErrnoError(8);if(Pe.isDir(e.node.mode))throw new Pe.ErrnoError(31);if(!e.stream_ops.read)throw new Pe.ErrnoError(28);var a=void 0!==n;if(a){if(!e.seekable)throw new Pe.ErrnoError(70)}else n=e.position;var o=e.stream_ops.read(e,t,r,i,n);return a||(e.position+=o),o},write:(e,t,r,i,n,a)=>{if(i<0||n<0)throw new Pe.ErrnoError(28);if(Pe.isClosed(e))throw new Pe.ErrnoError(8);if(0==(2097155&e.flags))throw new Pe.ErrnoError(8);if(Pe.isDir(e.node.mode))throw new Pe.ErrnoError(31);if(!e.stream_ops.write)throw new Pe.ErrnoError(28);e.seekable&&1024&e.flags&&Pe.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new Pe.ErrnoError(70)}else n=e.position;var s=e.stream_ops.write(e,t,r,i,n,a);return o||(e.position+=s),s},allocate:(e,t,r)=>{if(Pe.isClosed(e))throw new Pe.ErrnoError(8);if(t<0||r<=0)throw new Pe.ErrnoError(28);if(0==(2097155&e.flags))throw new Pe.ErrnoError(8);if(!Pe.isFile(e.node.mode)&&!Pe.isDir(e.node.mode))throw new Pe.ErrnoError(43);if(!e.stream_ops.allocate)throw new Pe.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n,a)=>{if(0!=(2&n)&&0==(2&a)&&2!=(2097155&e.flags))throw new Pe.ErrnoError(2);if(1==(2097155&e.flags))throw new Pe.ErrnoError(2);if(!e.stream_ops.mmap)throw new Pe.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n,a)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new Pe.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:(e,t={})=>{if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=Pe.open(e,t.flags),n=Pe.stat(e).size,a=new Uint8Array(n);return Pe.read(i,a,0,n,0),"utf8"===t.encoding?r=B(a,0):"binary"===t.encoding&&(r=a),Pe.close(i),r},writeFile:(e,t,r={})=>{r.flags=r.flags||577;var i=Pe.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(D(t)+1),a=z(t,n,0,n.length);Pe.write(i,n,0,a,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Pe.write(i,t,0,t.byteLength,void 0,r.canOwn)}Pe.close(i)},cwd:()=>Pe.currentPath,chdir:e=>{var t=Pe.lookupPath(e,{follow:!0});if(null===t.node)throw new Pe.ErrnoError(44);if(!Pe.isDir(t.node.mode))throw new Pe.ErrnoError(54);var r=Pe.nodePermissions(t.node,"x");if(r)throw new Pe.ErrnoError(r);Pe.currentPath=t.path},createDefaultDirectories:()=>{Pe.mkdir("/tmp"),Pe.mkdir("/home"),Pe.mkdir("/home/web_user")},createDefaultDevices:()=>{Pe.mkdir("/dev"),Pe.registerDevice(Pe.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),Pe.mkdev("/dev/null",Pe.makedev(1,3)),Te.register(Pe.makedev(5,0),Te.default_tty_ops),Te.register(Pe.makedev(6,0),Te.default_tty1_ops),Pe.mkdev("/dev/tty",Pe.makedev(5,0)),Pe.mkdev("/dev/tty1",Pe.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(b)try{var t=r(55835);return function(){return t.randomBytes(1)[0]}}catch(e){}return function(){ve("randomDevice")}}();Pe.createDevice("/dev","random",e),Pe.createDevice("/dev","urandom",e),Pe.mkdir("/dev/shm"),Pe.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{Pe.mkdir("/proc");var e=Pe.mkdir("/proc/self");Pe.mkdir("/proc/self/fd"),Pe.mount({mount:()=>{var t=Pe.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=Pe.getStream(r);if(!i)throw new Pe.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{s.stdin?Pe.createDevice("/dev","stdin",s.stdin):Pe.symlink("/dev/tty","/dev/stdin"),s.stdout?Pe.createDevice("/dev","stdout",null,s.stdout):Pe.symlink("/dev/tty","/dev/stdout"),s.stderr?Pe.createDevice("/dev","stderr",null,s.stderr):Pe.symlink("/dev/tty1","/dev/stderr"),Pe.open("/dev/stdin",0),Pe.open("/dev/stdout",1),Pe.open("/dev/stderr",1)},ensureErrnoError:()=>{Pe.ErrnoError||(Pe.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Pe.ErrnoError.prototype=new Error,Pe.ErrnoError.prototype.constructor=Pe.ErrnoError,[44].forEach((e=>{Pe.genericErrors[e]=new Pe.ErrnoError(e),Pe.genericErrors[e].stack=""})))},staticInit:()=>{Pe.ensureErrnoError(),Pe.nameTable=new Array(4096),Pe.mount(Re,{},"/"),Pe.createDefaultDirectories(),Pe.createDefaultDevices(),Pe.createSpecialDirectories(),Pe.filesystems={MEMFS:Re}},init:(e,t,r)=>{Pe.init.initialized=!0,Pe.ensureErrnoError(),s.stdin=e||s.stdin,s.stdout=t||s.stdout,s.stderr=r||s.stderr,Pe.createStandardStreams()},quit:()=>{Pe.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=Pe.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=Pe.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=Pe.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=Ie.basename(e),i=Pe.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:Pe.getPath(e);for(var n=t.split("/").reverse();n.length;){var a=n.pop();if(a){var o=Ie.join2(e,a);try{Pe.mkdir(o)}catch(e){}e=o}}return o},createFile:(e,t,r,i,n)=>{var a=Ie.join2("string"==typeof e?e:Pe.getPath(e),t),o=Pe.getMode(i,n);return Pe.create(a,o)},createDataFile:(e,t,r,i,n,a)=>{var o=t;e&&(e="string"==typeof e?e:Pe.getPath(e),o=t?Ie.join2(e,t):e);var s=Pe.getMode(i,n),u=Pe.create(o,s);if(r){if("string"==typeof r){for(var c=new Array(r.length),l=0,h=r.length;l{var n=Ie.join2("string"==typeof e?e:Pe.getPath(e),t),a=Pe.getMode(!!r,!!i);Pe.createDevice.major||(Pe.createDevice.major=64);var o=Pe.makedev(Pe.createDevice.major++,0);return Pe.registerDevice(o,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,a)=>{for(var o=0,s=0;s{for(var o=0;o{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!u)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=dt(u(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new Pe.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,a=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,o=1048576;n||(o=i);var s=this;s.setDataGetter((e=>{var t=e*o,n=(e+1)*o-1;if(n=Math.min(n,i-1),void 0===s.chunks[e]&&(s.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==o&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):dt(n.responseText||"",!0)})(t,n)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!a&&i||(o=i=1,i=this.getter(0).length,o=i,E("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=o,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!_)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new a;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:o}}else s={isDevice:!1,url:r};var u=Pe.createFile(e,t,s,i,n);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};return Object.keys(u.stream_ops).forEach((e=>{var t=u.stream_ops[e];c[e]=function(){return Pe.forceLoadFile(u),t.apply(null,arguments)}})),c.read=(e,t,r,i,n)=>{Pe.forceLoadFile(u);var a=e.node.contents;if(n>=a.length)return 0;var o=Math.min(a.length-n,i);if(a.slice)for(var s=0;s{var h=t?Ae.resolve(Ie.join2(e,t)):e;function p(r){function c(r){l&&l(),s||Pe.createDataFile(e,t,r,i,n,u),a&&a(),ge()}Browser.handledByPreloadPlugin(r,h,c,(()=>{o&&o(),ge()}))||c(r)}me(),"string"==typeof r?function(e,t,r,i){var n="al "+e;c(e,(function(t){var r;r='Loading data file "'+e+'" failed (no arrayBuffer).',t||ve(r),p(new Uint8Array(t)),n&&ge()}),(function(t){if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&me()}(r,0,o):p(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=Pe.indexedDB();try{var n=i.open(Pe.DB_NAME(),Pe.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{E("creating db"),n.result.createObjectStore(Pe.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([Pe.DB_STORE_NAME],"readwrite"),a=i.objectStore(Pe.DB_STORE_NAME),o=0,s=0,u=e.length;function c(){0==s?t():r()}e.forEach((e=>{var t=a.put(Pe.analyzePath(e).object.contents,e);t.onsuccess=()=>{++o+s==u&&c()},t.onerror=()=>{s++,o+s==u&&c()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=Pe.indexedDB();try{var n=i.open(Pe.DB_NAME(),Pe.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var a=i.transaction([Pe.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var o=a.objectStore(Pe.DB_STORE_NAME),s=0,u=0,c=e.length;function l(){0==u?t():r()}e.forEach((e=>{var t=o.get(e);t.onsuccess=()=>{Pe.analyzePath(e).exists&&Pe.unlink(e),Pe.createDataFile(Ie.dirname(e),Ie.basename(e),t.result,!0,!0,!0),++s+u==c&&l()},t.onerror=()=>{u++,s+u==c&&l()}})),a.onerror=r},n.onerror=r}},Oe={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(Ie.isAbs(t))return t;var i;if(-100===e)i=Pe.cwd();else{var n=Pe.getStream(e);if(!n)throw new Pe.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new Pe.ErrnoError(44);return i}return Ie.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&Ie.normalize(t)!==Ie.normalize(Pe.getPath(e.node)))return-54;throw e}return W[r>>2]=i.dev,W[r+4>>2]=0,W[r+8>>2]=i.ino,W[r+12>>2]=i.mode,W[r+16>>2]=i.nlink,W[r+20>>2]=i.uid,W[r+24>>2]=i.gid,W[r+28>>2]=i.rdev,W[r+32>>2]=0,he=[i.size>>>0,(le=i.size,+Math.abs(le)>=1?le>0?(0|Math.min(+Math.floor(le/4294967296),4294967295))>>>0:~~+Math.ceil((le-+(~~le>>>0))/4294967296)>>>0:0)],W[r+40>>2]=he[0],W[r+44>>2]=he[1],W[r+48>>2]=4096,W[r+52>>2]=i.blocks,W[r+56>>2]=i.atime.getTime()/1e3|0,W[r+60>>2]=0,W[r+64>>2]=i.mtime.getTime()/1e3|0,W[r+68>>2]=0,W[r+72>>2]=i.ctime.getTime()/1e3|0,W[r+76>>2]=0,he=[i.ino>>>0,(le=i.ino,+Math.abs(le)>=1?le>0?(0|Math.min(+Math.floor(le/4294967296),4294967295))>>>0:~~+Math.ceil((le-+(~~le>>>0))/4294967296)>>>0:0)],W[r+80>>2]=he[0],W[r+84>>2]=he[1],0},doMsync:function(e,t,r,i,n){var a=U.slice(e,e+r);Pe.msync(t,a,n,r,i)},varargs:void 0,get:function(){return Oe.varargs+=4,W[Oe.varargs-4>>2]},getStr:function(e){return C(e)},getStreamFromFD:function(e){var t=Pe.getStream(e);if(!t)throw new Pe.ErrnoError(8);return t}};function Be(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var Ce=void 0;function ze(e){for(var t="",r=e;U[r];)t+=Ce[U[r++]];return t}var Fe={},De={},qe={};function Le(e,t){var r,i=(r=function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))},function(e){if(void 0===e)return"_unknown";(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0)}(t),function(){return r.apply(this,arguments)});return i.prototype=Object.create(e.prototype),i.prototype.constructor=i,i.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},i}var Ue=void 0;function He(e){throw new Ue(e)}var Ke=void 0;function We(e){throw new Ke(e)}function Ze(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||He('type "'+i+'" must have a positive integer typeid pointer'),De.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He("Cannot register type '"+i+"' twice")}if(De[e]=t,delete qe[e],Fe.hasOwnProperty(e)){var n=Fe[e];delete Fe[e],n.forEach((e=>e()))}}var Je=[],Ve=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function $e(e){e>4&&0==--Ve[e].refcount&&(Ve[e]=void 0,Je.push(e))}var Ge=e=>(e||He("Cannot use deleted val. handle = "+e),Ve[e].value),Qe=e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=Je.length?Je.pop():Ve.length;return Ve[t]={refcount:1,value:e},t}};function Xe(e){return this.fromWireType(Z[e>>2])}function Ye(e,t){switch(t){case 2:return function(e){return this.fromWireType(J[e>>2])};case 3:return function(e){return this.fromWireType(V[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function et(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function tt(e,t,r){return e.includes("j")?function(e,t,r){var i=s["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)}(e,t,r):Ee(t).apply(null,r)}var rt=void 0;function it(e){var t=_t(e),r=ze(t);return vt(t),r}function nt(e,t,r){switch(t){case 0:return r?function(e){return L[e]}:function(e){return U[e]};case 1:return r?function(e){return H[e>>1]}:function(e){return K[e>>1]};case 2:return r?function(e){return W[e>>2]}:function(e){return Z[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function at(e,t){var r=De[e];return void 0===r&&He(t+" has unknown type "+it(e)),r}function ot(e){try{return T.grow(e-q.byteLength+65535>>>16),ie(T.buffer),1}catch(e){}}var st={};function ut(){if(!ut.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:g||"./this.program"};for(var t in st)void 0===st[t]?delete e[t]:e[t]=st[t];var r=[];for(var t in e)r.push(t+"="+e[t]);ut.strings=r}return ut.strings}function ct(e){return e%4==0&&(e%100!=0||e%400==0)}var lt=[31,29,31,30,31,30,31,31,30,31,30,31],ht=[31,28,31,30,31,30,31,31,30,31,30,31];var pt=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Pe.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i};function dt(e,t,r){var i=r>0?r:D(e)+1,n=new Array(i),a=z(e,n,0,n.length);return t&&(n.length=a),n}Object.defineProperties(pt.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return Pe.isDir(this.mode)}},isDevice:{get:function(){return Pe.isChrdev(this.mode)}}}),Pe.FSNode=pt,Pe.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Ce=e}(),Ue=s.BindingError=Le(Error,"BindingError"),Ke=s.InternalError=Le(Error,"InternalError"),s.count_emval_handles=function(){for(var e=0,t=5;t>1]=2,0;case 16:case 8:default:return-28;case 9:return 28,W[yt()>>2]=28,-1}}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return-e.errno}},fa:function(e,t,r){Oe.varargs=r;try{var i=Oe.getStreamFromFD(e);switch(t){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:return i.tty?0:-59;case 21519:if(!i.tty)return-59;var n=Oe.get();return W[n>>2]=0,0;case 21520:return i.tty?-28:-59;case 21531:return n=Oe.get(),Pe.ioctl(i,t,n);default:ve("bad ioctl syscall "+t)}}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return-e.errno}},ma:function(e,t,r){try{return t=Oe.getStr(t),t=Oe.calculateAt(e,t),"/"===(t=Ie.normalize(t))[t.length-1]&&(t=t.substr(0,t.length-1)),Pe.mkdir(t,r,0),0}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return-e.errno}},R:function(e,t,r,i){Oe.varargs=i;try{t=Oe.getStr(t),t=Oe.calculateAt(e,t);var n=i?Oe.get():0;return Pe.open(t,r,n).fd}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return-e.errno}},ka:function(e,t){try{return e=Oe.getStr(e),Oe.doStat(Pe.stat,e,t)}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return-e.errno}},Z:function(e,t,r,i,n){},va:function(e,t,r,i,n){var a=Be(r);Ze(e,{name:t=ze(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=L;else if(2===r)i=H;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=W}return this.fromWireType(i[e>>a])},destructorFunction:null})},ua:function(e,t){Ze(e,{name:t=ze(t),fromWireType:function(e){var t=Ge(e);return $e(e),t},toWireType:function(e,t){return Qe(t)},argPackAdvance:8,readValueFromPointer:Xe,destructorFunction:null})},U:function(e,t,r){var i=Be(r);Ze(e,{name:t=ze(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:Ye(t,i),destructorFunction:null})},s:function(e,t,r,i,n,a){var o=function(e,t){for(var r=[],i=0;i>2)+i]);return r}(t,r);e=ze(e),n=function(e,t){var r,i,n,a=(e=ze(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),tt(r,i,n)}):Ee(t);return"function"!=typeof a&&He("unknown function pointer with signature "+e+": "+t),a}(i,n),function(e,t,r){s.hasOwnProperty(e)?((void 0===r||void 0!==s[e].overloadTable&&void 0!==s[e].overloadTable[r])&&He("Cannot register public name '"+e+"' twice"),function(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}(s,e,e),s.hasOwnProperty(r)&&He("Cannot register multiple overloads of a function with the same number of arguments ("+r+")!"),s[e].overloadTable[r]=t):(s[e]=t,void 0!==r&&(s[e].numArguments=r))}(e,(function(){!function(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||De[t]||(qe[t]?qe[t].forEach(e):(r.push(t),i[t]=!0))})),new rt(e+": "+r.map(it).join([", "]))}("Cannot call "+e+" due to unbound types",o)}),t-1),function(r,i,o){function u(i){var o=function(r){var i=[r[0],null].concat(r.slice(1));return function(e,t,r){s.hasOwnProperty(e)||We("Replacing nonexistant public symbol"),void 0!==s[e].overloadTable&&void 0!==r?s[e].overloadTable[r]=t:(s[e]=t,s[e].argCount=r)}(e,function(e,t,r,i,n){var a=t.length;a<2&&He("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,s=!1,u=1;u{De.hasOwnProperty(e)?c[t]=De[e]:(l.push(e),Fe.hasOwnProperty(e)||(Fe[e]=[]),Fe[e].push((()=>{c[t]=De[e],++h===l.length&&u(c)})))})),0===l.length&&u(c)}([],o)},x:function(e,t,r,i,n){t=ze(t),-1===n&&(n=4294967295);var a=Be(r),o=e=>e;if(0===i){var s=32-8*r;o=e=>e<>>s}var u=t.includes("unsigned");Ze(e,{name:t,fromWireType:o,toWireType:u?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:nt(t,a,0!==i),destructorFunction:null})},u:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=Z,r=t[e>>=2],n=t[e+1];return new i(q,n,r)}Ze(e,{name:r=ze(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},T:function(e,t){var r="std::string"===(t=ze(t));Ze(e,{name:t,fromWireType:function(e){var t,i=Z[e>>2];if(r)for(var n=e+4,a=0;a<=i;++a){var o=e+4+a;if(a==i||0==U[o]){var s=C(n,o-n);void 0===t?t=s:(t+=String.fromCharCode(0),t+=s),n=o+1}}else{var u=new Array(i);for(a=0;aD(t):()=>t.length)(),a=gt(4+n+1);if(Z[a>>2]=n,r&&i)F(t,a+4,n+1);else if(i)for(var o=0;o255&&(vt(a),He("String has UTF-16 code units that do not fit in 8 bits")),U[a+4+o]=s}else for(o=0;oK,s=1):4===t&&(i=Y,n=ee,o=te,a=()=>Z,s=2),Ze(e,{name:r,fromWireType:function(e){for(var r,n=Z[e>>2],o=a(),u=e+4,c=0;c<=n;++c){var l=e+4+c*t;if(c==n||0==o[l>>s]){var h=i(u,l-u);void 0===r?r=h:(r+=String.fromCharCode(0),r+=h),u=l+t}}return vt(e),r},toWireType:function(e,i){"string"!=typeof i&&He("Cannot pass non-string to C++ string type "+r);var a=o(i),u=gt(4+a+t);return Z[u>>2]=a>>s,n(i,u+4,a+t),null!==e&&e.push(vt,u),u},argPackAdvance:8,readValueFromPointer:Xe,destructorFunction:function(e){vt(e)}})},wa:function(e,t){Ze(e,{isVoid:!0,name:t=ze(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},H:function(){return Date.now()},pa:function(){return!0},la:function(e,t){F(g,e,t)},Da:function(e,t,r,i){e=Ge(e);for(var n=function(e,t){for(var r=new Array(e),i=0;i>2)+i],"parameter "+i);return r}(t,r),a=new Array(t),o=0;o4&&(Ve[e].refcount+=1)},za:function(e,t){var r=(e=at(e,"_emval_take_value")).readValueFromPointer(t);return Qe(r)},qa:function(e,t){var r=new Date(1e3*W[e>>2]);W[t>>2]=r.getUTCSeconds(),W[t+4>>2]=r.getUTCMinutes(),W[t+8>>2]=r.getUTCHours(),W[t+12>>2]=r.getUTCDate(),W[t+16>>2]=r.getUTCMonth(),W[t+20>>2]=r.getUTCFullYear()-1900,W[t+24>>2]=r.getUTCDay();var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/864e5|0;W[t+28>>2]=n},ra:function(e){var t=new Date(W[e+20>>2]+1900,W[e+16>>2],W[e+12>>2],W[e+8>>2],W[e+4>>2],W[e>>2],0),r=W[e+32>>2],i=t.getTimezoneOffset(),n=new Date(t.getFullYear(),0,1),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),o=n.getTimezoneOffset(),s=Math.min(o,a);if(r<0)W[e+32>>2]=Number(a!=o&&s==i);else if(r>0!=(s==i)){var u=Math.max(o,a),c=r>0?s:u;t.setTime(t.getTime()+6e4*(c-i))}W[e+24>>2]=t.getDay();var l=(t.getTime()-n.getTime())/864e5|0;return W[e+28>>2]=l,W[e>>2]=t.getSeconds(),W[e+4>>2]=t.getMinutes(),W[e+8>>2]=t.getHours(),W[e+12>>2]=t.getDate(),W[e+16>>2]=t.getMonth(),t.getTime()/1e3|0},sa:function e(t,r,i){e.called||(e.called=!0,function(e,t,r){var i=(new Date).getFullYear(),n=new Date(i,0,1),a=new Date(i,6,1),o=n.getTimezoneOffset(),s=a.getTimezoneOffset(),u=Math.max(o,s);function c(e){var t=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return t?t[1]:"GMT"}W[e>>2]=60*u,W[t>>2]=Number(o!=s);var l=c(n),h=c(a),p=re(l),d=re(h);s>2]=p,W[r+4>>2]=d):(W[r>>2]=d,W[r+4>>2]=p)}(t,r,i))},D:function(){ve("")},ja:function(){return 2147483648},ia:function(e){var t,r=U.length,i=2147483648;if((e>>>=0)>i)return!1;for(var n=1;n<=4;n*=2){var a=r*(1+.2/n);if(a=Math.min(a,e+100663296),ot(Math.min(i,(t=Math.max(e,a))+(65536-t%65536)%65536)))return!0}return!1},na:function(e,t){var r=0;return ut().forEach((function(i,n){var a=t+r;W[e+4*n>>2]=a,function(e,t,r){for(var i=0;i>0]=e.charCodeAt(i);L[t>>0]=0}(i,a),r+=i.length+1})),0},oa:function(e,t){var r=ut();W[e>>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),W[t>>2]=i,0},S:function(e){!function(e,t){Bt(e)}(e)},I:function(e){try{var t=Oe.getStreamFromFD(e);return Pe.close(t),0}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},Q:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,a=0;a>2],s=Z[t+4>>2];t+=8;var u=Pe.read(e,L,o,s,undefined);if(u<0)return-1;if(n+=u,u>2]=n,0}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},Y:function(e,t,r,i,n){try{var a=Oe.getStreamFromFD(e),o=4294967296*r+(t>>>0),s=9007199254740992;return o<=-s||o>=s?61:(Pe.llseek(a,o,i),he=[a.position>>>0,(le=a.position,+Math.abs(le)>=1?le>0?(0|Math.min(+Math.floor(le/4294967296),4294967295))>>>0:~~+Math.ceil((le-+(~~le>>>0))/4294967296)>>>0:0)],W[n>>2]=he[0],W[n+4>>2]=he[1],a.getdents&&0===o&&0===i&&(a.getdents=null),0)}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},P:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,a=0;a>2],s=Z[t+4>>2];t+=8;var u=Pe.write(e,L,o,s,undefined);if(u<0)return-1;n+=u}return n}(Oe.getStreamFromFD(e),t,r);return W[i>>2]=n,0}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},a:function(){return A()},K:function(e,t,r,i){var n=wt();try{return Ee(e)(t,r,i)}catch(e){if(Et(n),e!==e+0)throw e;bt(1,0)}},L:function(e,t,r,i){var n=wt();try{return Ee(e)(t,r,i)}catch(e){if(Et(n),e!==e+0)throw e;bt(1,0)}},t:function(e){var t=wt();try{return Ee(e)()}catch(e){if(Et(t),e!==e+0)throw e;bt(1,0)}},f:function(e,t){var r=wt();try{return Ee(e)(t)}catch(e){if(Et(r),e!==e+0)throw e;bt(1,0)}},g:function(e,t,r){var i=wt();try{return Ee(e)(t,r)}catch(e){if(Et(i),e!==e+0)throw e;bt(1,0)}},p:function(e,t,r,i){var n=wt();try{return Ee(e)(t,r,i)}catch(e){if(Et(n),e!==e+0)throw e;bt(1,0)}},o:function(e,t,r,i,n){var a=wt();try{return Ee(e)(t,r,i,n)}catch(e){if(Et(a),e!==e+0)throw e;bt(1,0)}},ga:function(e,t,r,i,n,a){var o=wt();try{return Ee(e)(t,r,i,n,a)}catch(e){if(Et(o),e!==e+0)throw e;bt(1,0)}},A:function(e,t,r,i,n,a){var o=wt();try{return Ee(e)(t,r,i,n,a)}catch(e){if(Et(o),e!==e+0)throw e;bt(1,0)}},v:function(e,t,r,i,n,a,o){var s=wt();try{return Ee(e)(t,r,i,n,a,o)}catch(e){if(Et(s),e!==e+0)throw e;bt(1,0)}},M:function(e,t,r,i,n,a,o,s){var u=wt();try{return Ee(e)(t,r,i,n,a,o,s)}catch(e){if(Et(u),e!==e+0)throw e;bt(1,0)}},F:function(e,t,r,i,n,a,o,s,u,c,l,h){var p=wt();try{return Ee(e)(t,r,i,n,a,o,s,u,c,l,h)}catch(e){if(Et(p),e!==e+0)throw e;bt(1,0)}},W:function(e,t,r,i,n,a,o){var s=wt();try{return Rt(e,t,r,i,n,a,o)}catch(e){if(Et(s),e!==e+0)throw e;bt(1,0)}},ba:function(e,t){var r=wt();try{return xt(e,t)}catch(e){if(Et(r),e!==e+0)throw e;bt(1,0)}},aa:function(e,t,r){var i=wt();try{return It(e,t,r)}catch(e){if(Et(i),e!==e+0)throw e;bt(1,0)}},$:function(e,t,r,i){var n=wt();try{return At(e,t,r,i)}catch(e){if(Et(n),e!==e+0)throw e;bt(1,0)}},da:function(e,t,r,i,n){var a=wt();try{return Nt(e,t,r,i,n)}catch(e){if(Et(a),e!==e+0)throw e;bt(1,0)}},l:function(e){var t=wt();try{Ee(e)()}catch(e){if(Et(t),e!==e+0)throw e;bt(1,0)}},r:function(e,t){var r=wt();try{Ee(e)(t)}catch(e){if(Et(r),e!==e+0)throw e;bt(1,0)}},h:function(e,t,r){var i=wt();try{Ee(e)(t,r)}catch(e){if(Et(i),e!==e+0)throw e;bt(1,0)}},k:function(e,t,r,i){var n=wt();try{Ee(e)(t,r,i)}catch(e){if(Et(n),e!==e+0)throw e;bt(1,0)}},z:function(e,t,r,i,n){var a=wt();try{Ee(e)(t,r,i,n)}catch(e){if(Et(a),e!==e+0)throw e;bt(1,0)}},G:function(e,t,r,i,n,a){var o=wt();try{Ee(e)(t,r,i,n,a)}catch(e){if(Et(o),e!==e+0)throw e;bt(1,0)}},Ba:function(e,t,r,i,n,a,o){var s=wt();try{Ee(e)(t,r,i,n,a,o)}catch(e){if(Et(s),e!==e+0)throw e;bt(1,0)}},y:function(e,t,r,i,n,a,o,s){var u=wt();try{Ee(e)(t,r,i,n,a,o,s)}catch(e){if(Et(u),e!==e+0)throw e;bt(1,0)}},B:function(e,t,r,i,n,a,o,s,u,c,l){var h=wt();try{Ee(e)(t,r,i,n,a,o,s,u,c,l)}catch(e){if(Et(h),e!==e+0)throw e;bt(1,0)}},E:function(e,t,r,i,n,a,o,s,u,c,l,h,p,d,f,m){var g=wt();try{Ee(e)(t,r,i,n,a,o,s,u,c,l,h,p,d,f,m)}catch(e){if(Et(g),e!==e+0)throw e;bt(1,0)}},_:function(e,t,r,i,n,a,o){var s=wt();try{Tt(e,t,r,i,n,a,o)}catch(e){if(Et(s),e!==e+0)throw e;bt(1,0)}},ca:function(e,t,r,i,n){var a=wt();try{Mt(e,t,r,i,n)}catch(e){if(Et(a),e!==e+0)throw e;bt(1,0)}},X:function(e,t,r,i,n,a,o){var s=wt();try{jt(e,t,r,i,n,a,o)}catch(e){if(Et(s),e!==e+0)throw e;bt(1,0)}},q:function(e){return e},ta:function(e){Bt(e)},C:function(e){I(e)},ea:function(e,t,r,i){return function(e,t,r,i){var n=W[i+40>>2],a={tm_sec:W[i>>2],tm_min:W[i+4>>2],tm_hour:W[i+8>>2],tm_mday:W[i+12>>2],tm_mon:W[i+16>>2],tm_year:W[i+20>>2],tm_wday:W[i+24>>2],tm_yday:W[i+28>>2],tm_isdst:W[i+32>>2],tm_gmtoff:W[i+36>>2],tm_zone:n?C(n):""},o=C(r),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)o=o.replace(new RegExp(u,"g"),s[u]);var c=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],l=["January","February","March","April","May","June","July","August","September","October","November","December"];function h(e,t,r){for(var i="number"==typeof e?e.toString():e||"";i.length0?1:0}var i;return 0===(i=r(e.getFullYear()-t.getFullYear()))&&0===(i=r(e.getMonth()-t.getMonth()))&&(i=r(e.getDate()-t.getDate())),i}function f(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function m(e){var t=function(e,t){for(var r=new Date(e.getTime());t>0;){var i=ct(r.getFullYear()),n=r.getMonth(),a=(i?lt:ht)[n];if(!(t>a-r.getDate()))return r.setDate(r.getDate()+t),r;t-=a-r.getDate()+1,r.setDate(1),n<11?r.setMonth(n+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1))}return r}(new Date(e.tm_year+1900,0,1),e.tm_yday),r=new Date(t.getFullYear(),0,4),i=new Date(t.getFullYear()+1,0,4),n=f(r),a=f(i);return d(n,t)<=0?d(a,t)<=0?t.getFullYear()+1:t.getFullYear():t.getFullYear()-1}var g={"%a":function(e){return c[e.tm_wday].substring(0,3)},"%A":function(e){return c[e.tm_wday]},"%b":function(e){return l[e.tm_mon].substring(0,3)},"%B":function(e){return l[e.tm_mon]},"%C":function(e){return p((e.tm_year+1900)/100|0,2)},"%d":function(e){return p(e.tm_mday,2)},"%e":function(e){return h(e.tm_mday,2," ")},"%g":function(e){return m(e).toString().substring(2)},"%G":function(e){return m(e)},"%H":function(e){return p(e.tm_hour,2)},"%I":function(e){var t=e.tm_hour;return 0==t?t=12:t>12&&(t-=12),p(t,2)},"%j":function(e){return p(e.tm_mday+function(e,t){for(var r=0,i=0;i<=t;r+=e[i++]);return r}(ct(e.tm_year+1900)?lt:ht,e.tm_mon-1),3)},"%m":function(e){return p(e.tm_mon+1,2)},"%M":function(e){return p(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return p(e.tm_sec,2)},"%t":function(){return"\t"},"%u":function(e){return e.tm_wday||7},"%U":function(e){var t=e.tm_yday+7-e.tm_wday;return p(Math.floor(t/7),2)},"%V":function(e){var t=Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7);if((e.tm_wday+371-e.tm_yday-2)%7<=2&&t++,t){if(53==t){var r=(e.tm_wday+371-e.tm_yday)%7;4==r||3==r&&ct(e.tm_year)||(t=1)}}else{t=52;var i=(e.tm_wday+7-e.tm_yday-1)%7;(4==i||5==i&&ct(e.tm_year%400-1))&&t++}return p(t,2)},"%w":function(e){return e.tm_wday},"%W":function(e){var t=e.tm_yday+7-(e.tm_wday+6)%7;return p(Math.floor(t/7),2)},"%y":function(e){return(e.tm_year+1900).toString().substring(2)},"%Y":function(e){return e.tm_year+1900},"%z":function(e){var t=e.tm_gmtoff,r=t>=0;return t=(t=Math.abs(t)/60)/60*100+t%60,(r?"+":"-")+String("0000"+t).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var u in o=o.replace(/%%/g,"\0\0"),g)o.includes(u)&&(o=o.replace(new RegExp(u,"g"),g[u](a)));var v=dt(o=o.replace(/\0\0/g,"%"),!1);return v.length>t?0:(function(e,t){L.set(e,t)}(v,e),v.length-1)}(e,t,r,i)},xa:function(){k("missing function: v4_generate_JIT_code"),ve(-1)}},gt=(function(){var e={a:mt};function t(e,t){var r,i=e.exports;s.asm=i,ie((T=s.asm.Fa).buffer),ne=s.asm.Ia,r=s.asm.Ga,oe.unshift(r),ge()}function r(e){t(e.instance)}function i(t){return function(){if(!j&&(y||_)){if("function"==typeof fetch&&!_e(ce))return fetch(ce,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+ce+"'";return e.arrayBuffer()})).catch((function(){return be(ce)}));if(c)return new Promise((function(e,t){c(ce,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return be(ce)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){k("failed to asynchronously prepare wasm: "+e),ve(e)}))}if(me(),s.instantiateWasm)try{return s.instantiateWasm(e,t)}catch(e){return k("Module.instantiateWasm callback failed with error: "+e),!1}(j||"function"!=typeof WebAssembly.instantiateStreaming||ye(ce)||_e(ce)||"function"!=typeof fetch?i(r):fetch(ce,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(r,(function(e){return k("wasm streaming compile failed: "+e),k("falling back to ArrayBuffer instantiation"),i(r)}))}))).catch(o)}(),s.___wasm_call_ctors=function(){return(s.___wasm_call_ctors=s.asm.Ga).apply(null,arguments)},s._malloc=function(){return(gt=s._malloc=s.asm.Ha).apply(null,arguments)}),vt=(s.__ZN5boost13serialization16singleton_module8get_lockEv=function(){return(s.__ZN5boost13serialization16singleton_module8get_lockEv=s.asm.Ja).apply(null,arguments)},s._free=function(){return(vt=s._free=s.asm.Ka).apply(null,arguments)}),yt=s.___errno_location=function(){return(yt=s.___errno_location=s.asm.La).apply(null,arguments)},_t=s.___getTypeName=function(){return(_t=s.___getTypeName=s.asm.Ma).apply(null,arguments)},bt=(s.___embind_register_native_and_builtin_types=function(){return(s.___embind_register_native_and_builtin_types=s.asm.Na).apply(null,arguments)},s._setThrew=function(){return(bt=s._setThrew=s.asm.Oa).apply(null,arguments)}),wt=s.stackSave=function(){return(wt=s.stackSave=s.asm.Pa).apply(null,arguments)},Et=s.stackRestore=function(){return(Et=s.stackRestore=s.asm.Qa).apply(null,arguments)},kt=s.___cxa_can_catch=function(){return(kt=s.___cxa_can_catch=s.asm.Ra).apply(null,arguments)},St=s.___cxa_is_pointer_type=function(){return(St=s.___cxa_is_pointer_type=s.asm.Sa).apply(null,arguments)},xt=s.dynCall_ji=function(){return(xt=s.dynCall_ji=s.asm.Ta).apply(null,arguments)},jt=(s.dynCall_vijjjdi=function(){return(s.dynCall_vijjjdi=s.asm.Ua).apply(null,arguments)},s.dynCall_vij=function(){return(s.dynCall_vij=s.asm.Va).apply(null,arguments)},s.dynCall_vijj=function(){return(s.dynCall_vijj=s.asm.Wa).apply(null,arguments)},s.dynCall_viijii=function(){return(jt=s.dynCall_viijii=s.asm.Xa).apply(null,arguments)}),Nt=s.dynCall_jiiii=function(){return(Nt=s.dynCall_jiiii=s.asm.Ya).apply(null,arguments)},Mt=s.dynCall_viij=function(){return(Mt=s.dynCall_viij=s.asm.Za).apply(null,arguments)},It=(s.dynCall_viiji=function(){return(s.dynCall_viiji=s.asm._a).apply(null,arguments)},s.dynCall_jii=function(){return(It=s.dynCall_jii=s.asm.$a).apply(null,arguments)}),At=s.dynCall_jiii=function(){return(At=s.dynCall_jiii=s.asm.ab).apply(null,arguments)},Tt=s.dynCall_viiiji=function(){return(Tt=s.dynCall_viiiji=s.asm.bb).apply(null,arguments)},Rt=(s.dynCall_vijiiii=function(){return(s.dynCall_vijiiii=s.asm.cb).apply(null,arguments)},s.dynCall_iiiij=function(){return(s.dynCall_iiiij=s.asm.db).apply(null,arguments)},s.dynCall_jiji=function(){return(s.dynCall_jiji=s.asm.eb).apply(null,arguments)},s.dynCall_iiiiij=function(){return(Rt=s.dynCall_iiiiij=s.asm.fb).apply(null,arguments)});function Pt(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Ot(e){function r(){ft||(ft=!0,s.calledRun=!0,P||(s.noFSInit||Pe.init.initialized||Pe.init(),Pe.ignorePermissions=!1,Te.init(),we(oe),t(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),function(){if(s.postRun)for("function"==typeof s.postRun&&(s.postRun=[s.postRun]);s.postRun.length;)e=s.postRun.shift(),se.unshift(e);var e;we(se)}()))}e=e||m,pe>0||(function(){if(s.preRun)for("function"==typeof s.preRun&&(s.preRun=[s.preRun]);s.preRun.length;)e=s.preRun.shift(),ae.unshift(e);var e;we(ae)}(),pe>0||(s.setStatus?(s.setStatus("Running..."),setTimeout((function(){setTimeout((function(){s.setStatus("")}),1),r()}),1)):r()))}function Bt(e){ue()||(s.onExit&&s.onExit(e),P=!0),v(e,new Pt(e))}if(s.dynCall_iiiiijj=function(){return(s.dynCall_iiiiijj=s.asm.gb).apply(null,arguments)},s.dynCall_iiiiiijj=function(){return(s.dynCall_iiiiiijj=s.asm.hb).apply(null,arguments)},s.UTF8ToString=C,s.stringToUTF8=F,s.lengthBytesUTF8=D,s.addFunction=function(e,t){if(x||(x=new WeakMap,function(e,t){for(var r=0;r<0+t;r++){var i=Ee(r);i&&x.set(i,r)}}(0,ne.length)),x.has(e))return x.get(e);var r=function(){if(N.length)return N.pop();try{ne.grow(1)}catch(e){if(!(e instanceof RangeError))throw e;throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH."}return ne.length-1}();try{ke(r,e)}catch(n){if(!(n instanceof TypeError))throw n;var i=function(e,t){if("function"==typeof WebAssembly.Function){for(var r={i:"i32",j:"i64",f:"f32",d:"f64"},i={parameters:[],results:"v"==t[0]?[]:[r[t[0]]]},n=1;n255&&(i&=255),t.push(String.fromCharCode(i))}return t.join("")},fe=function e(){ft||Ot(),ft||(fe=e)},s.run=Ot,s.preInit)for("function"==typeof s.preInit&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return Ot(),e.ready});e.exports=o},32142:(e,t,r)=>{"use strict";e.exports={},e.exports.GenUtils=r(93444),e.exports.BigInteger=r(63055).BigInteger,e.exports.Filter=r(17355),e.exports.MoneroError=r(91307),e.exports.HttpClient=r(28461),e.exports.LibraryUtils=r(85096),e.exports.MoneroRpcConnection=r(73717),e.exports.MoneroRpcError=r(27828),e.exports.SslOptions=r(13751),e.exports.TaskLooper=r(36693),e.exports.ThreadPool=r(28103),e.exports.ConnectionType=r(90666),e.exports.MoneroAltChain=r(24652),e.exports.MoneroBan=r(1305),e.exports.MoneroBlockHeader=r(29457),e.exports.MoneroBlock=r(36242),e.exports.MoneroBlockTemplate=r(91350),e.exports.MoneroConnectionSpan=r(84373),e.exports.MoneroDaemonInfo=r(88988),e.exports.MoneroDaemonListener=r(3104),e.exports.MoneroDaemonSyncInfo=r(7666),e.exports.MoneroDaemonUpdateCheckResult=r(44531),e.exports.MoneroDaemonUpdateDownloadResult=r(62230),e.exports.MoneroFeeEstimate=r(90176),e.exports.MoneroHardForkInfo=r(48936),e.exports.MoneroKeyImage=r(53011),e.exports.MoneroKeyImageSpentStatus=r(51147),e.exports.MoneroMinerTxSum=r(20465),e.exports.MoneroMiningStatus=r(15887),e.exports.MoneroNetworkType=r(79077),e.exports.MoneroOutput=r(42299),e.exports.MoneroOutputHistogramEntry=r(96909),e.exports.MoneroPruneResult=r(58400),e.exports.MoneroSubmitTxResult=r(38991),e.exports.MoneroTx=r(2624),e.exports.MoneroTxPoolStats=r(26046),e.exports.MoneroVersion=r(55540),e.exports.MoneroPeer=r(63374),e.exports.MoneroAccount=r(28753),e.exports.MoneroAccountTag=r(41235),e.exports.MoneroAddressBookEntry=r(30947),e.exports.MoneroCheck=r(88535),e.exports.MoneroCheckReserve=r(47766),e.exports.MoneroCheckTx=r(35404),e.exports.MoneroDestination=r(39407),e.exports.MoneroIntegratedAddress=r(64472),e.exports.MoneroKeyImageImportResult=r(34293),e.exports.MoneroMultisigInfo=r(26749),e.exports.MoneroMultisigInitResult=r(50957),e.exports.MoneroMultisigSignResult=r(63413),e.exports.MoneroOutputWallet=r(69459),e.exports.MoneroOutputQuery=r(39749),e.exports.MoneroTxPriority=r(57589),e.exports.MoneroTxConfig=r(36721),e.exports.MoneroSubaddress=r(44769),e.exports.MoneroSyncResult=r(17118),e.exports.MoneroTransfer=r(52387),e.exports.MoneroIncomingTransfer=r(31243),e.exports.MoneroOutgoingTransfer=r(69535),e.exports.MoneroTransferQuery=r(59692),e.exports.MoneroTxSet=r(61527),e.exports.MoneroTxWallet=r(18489),e.exports.MoneroTxQuery=r(31857),e.exports.MoneroWalletListener=r(63149),e.exports.MoneroWalletConfig=r(99919),e.exports.MoneroMessageSignatureType=r(64232),e.exports.MoneroMessageSignatureResult=r(57773),e.exports.MoneroConnectionManager=r(63086),e.exports.MoneroConnectionManagerListener=r(96771),e.exports.MoneroUtils=r(58012),e.exports.MoneroDaemon=r(77333),e.exports.MoneroWallet=r(54815),e.exports.MoneroDaemonRpc=r(63131),e.exports.MoneroWalletRpc=r(57987),e.exports.MoneroWalletKeys=r(28166),e.exports.MoneroWalletFull=r(78647),e.exports.getVersion=function(){return e.exports.MoneroUtils.getVersion()},e.exports.connectToDaemonRpc=function(){return e.exports.MoneroDaemonRpc._connectToDaemonRpc(...arguments)},e.exports.connectToWalletRpc=function(){return e.exports.MoneroWalletRpc._connectToWalletRpc(...arguments)},e.exports.createWalletFull=function(){return e.exports.MoneroWalletFull.createWallet(...arguments)},e.exports.openWalletFull=function(){return e.exports.MoneroWalletFull.openWallet(...arguments)},e.exports.createWalletKeys=function(){return e.exports.MoneroWalletKeys.createWallet(...arguments)}},17355:e=>{e.exports=class{meetsCriteria(e){throw new Error("Subclass must implement")}static apply(e,t){return t.filter((t=>!e||e.meetsCriteria(t)))}}},93444:(e,t,r)=>{const n=r(69282),a=r(63055).BigInteger;class o{static isDefined(e){return void 0!==e}static isUndefined(e){return void 0===e}static isInitialized(e){return null!=e}static isUninitialized(e){return!e}static isNumber(e){return!isNaN(parseFloat(e))&&isFinite(e)}static isInt(e){return e===parseInt(Number(e))&&!isNaN(e)&&!isNaN(parseInt(e,10))}static isArray(e){return e instanceof Array&&Array.isArray(e)}static isString(e){return"string"==typeof e}static isBoolean(e){return"boolean"==typeof e}static isFunction(e){return"static"==typeof e}static isObject(e,t){return!!e&&"object"==typeof e&&(!t||e instanceof t)}static isUpperCase(e){return e.toUpperCase()===e}static isLowerCase(e){return e.toLowerCase()===e}static assertHex(e,t){o.assertTrue(isHex(e),t||"Argument asserted as hex but is not hex")}static isHex(e){return"string"==typeof e&&0!==e.length&&(e.match(/([0-9]|[a-f])/gim)||[]).length===e.length}static isBase32(e){return"string"==typeof e&&(o.assertTrue(e.length>0,"Cannot determine if empty string is base32"),/^[ABCDEFGHIJKLMNOPQRSTUVWXYZ234567]+$/.test(e))}static assertBase58(e,t){o.assertTrue(isBase58(e),t||"Argument asserted as base58 but is not base58")}static isBase58(e){return"string"==typeof e&&(o.assertTrue(e.length>0,"Cannot determine if empty string is base58"),/^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+$/.test(e))}static assertBase64(e,t){o.assertTrue(isBase64(e),t||"Argument asserted as base64 but is not base64")}static isBase64(e){if("string"!=typeof e)return!1;o.assertTrue(e.length>0,"Cannot determine if empty string is base64");try{return btoa(atob(e))==e}catch(e){return!1}}static fail(e){throw new Error(e||"Failure (no message)")}static assertTrue(e,t){if("boolean"!=typeof e)throw new Error("Argument is not a boolean");if(!e)throw new Error(t||"Boolean asserted as true but was false")}static assertFalse(e,t){if("boolean"!=typeof e)throw new Error("Argument is not a boolean");if(e)throw new Error(t||"Boolean asserted as false but was true")}static assertNull(e,t){if(null!==e)throw new Error(t||"Argument asserted as null but was not null: "+e)}static assertNotNull(e,t){if(null===e)throw new Error(t||"Argument asserted as not null but was null")}static assertDefined(e,t){if(o.isUndefined(e))throw new Error(t||"Argument asserted as defined but was undefined")}static assertUndefined(e,t){if(o.isDefined(e))throw new Error(t||"Argument asserted as undefined but was defined: "+e)}static assertInitialized(e,t){if(o.isUninitialized(e))throw new Error(t||"Argument asserted as initialized but was "+e)}static assertUninitialized(e,t){if(o.isInitialized(e))throw new Error(t||"Argument asserted as uninitialized but was initialized")}static assertEquals(e,t,r){o.assertTrue(o.equals(e,t),r||"Arguments asserted as equal but are not equal: "+e+" vs "+t)}static assertNotEquals(e,t,r){if(e===t)throw new Error(r||"Arguments asserted as not equal but are equal: "+e+" vs "+t)}static assertInt(e,t){if(!o.isInt(e))throw new Error(t||"Argument asserted as an integer but is not an integer")}static assertNumber(e,t){if(!o.isNumber(e))throw new Error(t||"Argument asserted as a number but is not a number")}static assertBoolean(e,t){if(!o.isBoolean(e))throw new Error(t||"Argument asserted as a boolean but is not a boolean")}static assertString(e,t){if(!o.isString(e))throw new Error(t||"Argument asserted as a string but is not a string: "+e)}static assertArray(e,t){if(!o.isArray(e))throw new Error(t||"Argument asserted as an array but is not an array")}static assertFunction(e,t){if(!o.isFunction(e))throw new Error(t||"Argument asserted as a static but is not a static")}static assertObject(e,t,r){if(o.assertInitialized(e,r),t){if(!isObject(e,t))throw new Error(r||"Argument asserted as object '"+t.name+"' but was not")}else if(!isObject(e))throw new Error(r||"Argument asserted as object but was not")}static inheritsFrom(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e}static invoke(){let e=arguments[0],t=[];for(let e=1;e0&&(n[n.length]=i)},r=[];r.push([]);for(let i=0;i=1);let r=getPowerSet(e),i=[];for(let e=0;e=0;i--)e[i]===t&&(e.splice(i,1),r=!0,i--);return r}static toLowerCaseArray(e){let t=[];for(let r=0;r-1}static arraysEqual(e,t){if(e===t)return!0;if(null==e&&null==t)return!0;if(null==e||null==t)return!1;if(void 0===e&&void 0===t)return!0;if(void 0===e||void 0===t)return!1;if(!o.isArray(e))throw new Error("First argument is not an array");if(!o.isArray(t))throw new Error("Second argument is not an array");if(e.length!=t.length)return!1;for(let r=0;r=1);let r=getPowerSetOfLength(getIndices(e.length),t),i=[];for(let t=0;t").append($(e).clone()).html()}static copyProperties(e){return JSON.parse(JSON.stringify(e))}static deleteProperties(e){let t=[];for(let r in e)t.push(r);for(i=0;i"+e.title+"":"",t+=e.internalCss?"":"",e.dependencyPaths){let r=listify(e.dependencyPaths);for(let e=0;e<\/script>";else if(i.endsWith(".css"))t+="";else{if(!i.endsWith(".png")&&!i.endsWith(".img"))throw new Error("Unrecognized dependency path extension: "+i);t+=""}}}return t+="",e.div&&(t+=$("

").append(e.div.clone()).html()),t+="",t}static newWindow(e,t){let r=!1,i=window.open();function n(e,i){r||(r=!0,t&&t(e,i))}isInitialized(i)&&isInitialized(i.document)?(i.opener=null,i.document.write(buildHtmlDocument(e)),i.addEventListener("load",(function(){n(null,i)})),i.document.close()):n(new Error("Could not get window reference"))}static imgToDataUrl(e,t){let r=document.createElement("canvas");return r.height=e.naturalHeight,r.width=e.naturalWidth,r.getContext("2d").drawImage(e,0,0),r.toDataURL(t)}static isImageAccessible(e,t,r){let i=!1,n=new Image;function a(e){i||(i=!0,void 0===e||"error"===e.type?r(!1):r(!0))}n.onload=a,n.onerror=a,n.src=e+"?"+ +new Date,setTimeout((function(){setImmediate((function(){setImmediate((function(){setImmediate((function(){i||(i=!0,r(!1))}))}))}))}),t)}static isZipFile(e){return e.name.endsWith(".zip")||"application/zip"===e.type}static isJsonFile(e){return e.name.endsWith(".json")||"application/json"===e.type}static isCsvFile(e){return e.name.endsWith(".csv")||"text/csv"===e.type}static isTxtFile(e){return e.name.endsWith(".txt")||"text/plain"===e.type}static getImages(e,t){o.isArray(e)||(o.assertTrue(isString(e)),e=[e]);let r=[];for(let t=0;t0}static getIEVersion(){let e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);if(e.indexOf("Trident/")>0){let t=e.indexOf("rv:");return parseInt(e.substring(t+3,e.indexOf(".",t)),10)}let r=e.indexOf("Edge/");return r>0?parseInt(e.substring(r+5,e.indexOf(".",r)),10):null}static getParameterByName(e,t){t||(t=window.location.href),e=e.replace(/[\[\]]/g,"\\$&");let r=new RegExp("[?&]"+e+"(=([^&#]*)|&|#|$)").exec(t);return r?r[2]?decodeURIComponent(r[2].replace(/\+/g," ")):"":null}static getRandomInt(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e+1))+e}static getRandomInts(e,t,r){o.assertTrue("number"==typeof r);let i=[];for(let n=0;n=0),o.assertTrue(t-e+1>=r);i.length0;t--){var r=Math.floor(Math.random()*(t+1)),i=e[t];e[t]=e[r],e[r]=i}}static sort(e){e.sort(((e,t)=>e===t?0:e>t?1:-1))}static safeSet(e,t,r,i,n,a){let s=t.call(e),u=o.reconcile(s,i,n,a);s!==u&&r.call(e,u)}static reconcile(e,t,r,i){if(e===t)return e;let o;if(e instanceof a&&t instanceof a&&(o=e.compare(t),0===o))return e;if(void 0===e||void 0===t)return r&&!1===r.resolveDefined?void 0:void 0===e?t:e;if(r&&void 0!==r.resolveTrue&&"boolean"==typeof e&&"boolean"==typeof t)return n.equal(typeof r.resolveTrue,"boolean"),r.resolveTrue;if(r&&void 0!==r.resolveMax){if(n.equal(typeof r.resolveMax,"boolean"),"number"==typeof e&&"number"==typeof t)return r.resolveMax?Math.max(e,t):Math.min(e,t);if(e instanceof a&&t instanceof a)return r.resolveMax?o<0?t:e:o<0?e:t}return n.deepEqual(e,t,i||"Cannot reconcile values "+e+" and "+t+" with config: "+JSON.stringify(r)),e}static kvLine(e,t,r=0,i=!0,n=!0){return void 0===t&&n?"":o.getIndent(r)+e+": "+t+(i?"\n":"")}static stringifyBIs(e){return e.replace(/("[^"]*"\s*:\s*)(\d{16,})/g,'$1"$2"')}static printStackTrace(e){try{throw new Error(e)}catch(e){console.error(e.stack)}}static async waitFor(e){return new Promise((function(t){setTimeout(t,e)}))}static async killProcess(e,t){return new Promise(((r,i)=>{e.on("exit",(function(e,t){r(e)})),e.on("error",(function(e){i(e)}));try{e.kill(t||"SIGINT")||r()}catch(e){i(e)}}))}}e.exports=o},28461:(e,t,r)=>{const i=r(93444),n=r(85096),a=r(58012),o=r(28103),s=r(61761),u=r(8037);class c{static async request(e){if(e.proxyToWorker)try{return await n.invokeWorker(i.getUUID(),"httpRequest",e)}catch(e){if(e.message.length>0&&"{"===e.message.charAt(0)){let t=JSON.parse(e.message);e.message=t.statusMessage,e.statusCode=t.statusCode}throw e}e=Object.assign({},c._DEFAULT_REQUEST,e);try{e.host=new URL(e.uri).host}catch(t){throw new Error("Invalid request URL: "+e.uri)}if(e.body&&"string"!=typeof e.body&&"object"!=typeof e.body)throw new Error("Request body type is not string or object");c._TASK_QUEUES[e.host]||(c._TASK_QUEUES[e.host]=new o(1)),c._PROMISE_THROTTLES[e.host]||(c._PROMISE_THROTTLES[e.host]=new s({requestsPerSecond:a.MAX_REQUESTS_PER_SECOND,promiseImplementation:Promise}));let t=void 0===e.timeout?c._DEFAULT_TIMEOUT:0===e.timeout?c.MAX_TIMEOUT:e.timeout,r="fetch"===e.requestApi?c._requestFetch(e):c._requestXhr(e),u=new Promise(((e,r)=>{let i=setTimeout((()=>{clearTimeout(i),r("Request timed out in "+t+" milliseconds")}),t)}));return Promise.race([r,u])}static async _requestFetch(e){let t={method:e.method,uri:e.uri,body:e.body,agent:e.uri.startsWith("https")?c._getHttpsAgent():c._getHttpAgent(),rejectUnauthorized:e.rejectUnauthorized,resolveWithFullResponse:e.resolveWithFullResponse,requestCert:!0};e.username&&(t.forever=!0,t.auth={user:e.username,pass:e.password,sendImmediately:!1}),e.body instanceof Uint8Array&&(t.encoding=null);let r=e.host,i=await c._TASK_QUEUES[r].submit((async function(){return c._PROMISE_THROTTLES[r].add(function(e){return u(e)}.bind(this,t))})),n={};return e.resolveWithFullResponse?(n.statusCode=i.statusCode,n.statusText=i.statusMessage,n.headers=i.headers,n.body=i.body):n.body=i,n}static async _requestXhr(e){if(e.headers)throw new Error("Custom headers not implemented in XHR request");let t=e.method,r=e.uri,i=e.host,n=e.username,a=e.password,o=e.body,s=o instanceof Uint8Array,u=await c._TASK_QUEUES[i].submit((async function(){return c._PROMISE_THROTTLES[i].add(function(){return new Promise((function(e,i){new c.digestAuthRequest(t,r,n,a).request((function(t){e(t)}),(function(n){n.status?e(n):i(new Error("Request failed without response: "+t+" "+r))}),o)}))}.bind(this))})),l={};return l.statusCode=u.status,l.statusText=u.statusText,l.headers=c._parseXhrResponseHeaders(u.getAllResponseHeaders()),l.body=s?new Uint8Array(u.response):u.response,l.body instanceof ArrayBuffer&&(l.body=new Uint8Array(l.body)),l}static _getHttpAgent(){if(!c.HTTP_AGENT){let e=r(8501);c.HTTP_AGENT=new e.Agent({keepAlive:!0})}return c.HTTP_AGENT}static _getHttpsAgent(){if(!c.HTTPS_AGENT){let e=r(79267);c.HTTPS_AGENT=new e.Agent({keepAlive:!0})}return c.HTTPS_AGENT}static _parseXhrResponseHeaders(e){let t={},r=e.trim().split(/[\r\n]+/);for(let e of r){let r=e.split(": ");t[r[0]]=r[1]}return t}}c.digestAuthRequest=function(e,t,i,n){var a=this;if(void 0===o)var o=r(81354);this.scheme=null,this.nonce=null,this.realm=null,this.qop=null,this.response=null,this.opaque=null,this.nc=1,this.cnonce=null,this.timeout=6e4,this.loggingOn=!1,this.post=!1,"post"!==e.toLowerCase()&&"put"!==e.toLowerCase()||(this.post=!0),this.request=function(e,t,r){if(r)try{a.data=r instanceof Uint8Array||"string"==typeof r?r:JSON.stringify(r)}catch(e){throw console.error(e),e}a.successFn=e,a.errorFn=t,a.nonce?a.makeAuthenticatedRequest():a.makeUnauthenticatedRequest(a.data)},this.makeUnauthenticatedRequest=function(r){a.firstRequest=new XMLHttpRequest,a.firstRequest.open(e,t,!0),a.firstRequest.timeout=a.timeout,a.post&&r&&("string"==typeof r?a.firstRequest.setRequestHeader("Content-type","text/plain"):a.firstRequest.responseType="arraybuffer"),a.firstRequest.onreadystatechange=function(){if(2===a.firstRequest.readyState){var e,i=a.firstRequest.getAllResponseHeaders();i=i.split("\n");for(var n=0;n0&&(a.isJson(a.firstRequest.responseText),a.successFn(a.firstRequest)):a.successFn())},a.post?a.firstRequest.send(a.data):a.firstRequest.send(),a.log("Unauthenticated request to "+t),a.firstRequest.onerror=function(){401!==a.firstRequest.status&&(a.log("Error ("+a.firstRequest.status+") on unauthenticated request to "+t),a.errorFn(a.firstRequest))}},this.makeAuthenticatedRequest=function(){a.response=a.formulateResponse(),a.authenticatedRequest=new XMLHttpRequest,a.authenticatedRequest.open(e,t,!0),a.authenticatedRequest.timeout=a.timeout;var r=a.scheme+' username="'+i+'", realm="'+a.realm+'", nonce="'+a.nonce+'", uri="'+t+'", response="'+a.response+'", opaque="'+a.opaque+'", qop='+a.qop+", nc="+("00000000"+a.nc).slice(-8)+', cnonce="'+a.cnonce+'"';a.authenticatedRequest.setRequestHeader("Authorization",r),a.log("digest auth header response to be sent:"),a.log(r),a.post&&a.data&&("string"==typeof a.data?a.authenticatedRequest.setRequestHeader("Content-type","text/plain"):a.authenticatedRequest.responseType="arraybuffer"),a.authenticatedRequest.onload=function(){a.authenticatedRequest.status>=200&&a.authenticatedRequest.status<400?(a.nc++,a.data instanceof Uint8Array?a.successFn(a.authenticatedRequest):"undefined"!==a.authenticatedRequest.responseText&&a.authenticatedRequest.responseText.length>0?(a.isJson(a.authenticatedRequest.responseText),a.successFn(a.authenticatedRequest)):a.successFn()):(a.nonce=null,a.errorFn(a.authenticatedRequest))},a.authenticatedRequest.onerror=function(){a.log("Error ("+a.authenticatedRequest.status+") on authenticated request to "+t),a.nonce=null,a.errorFn(a.authenticatedRequest)},a.post?a.authenticatedRequest.send(a.data):a.authenticatedRequest.send(),a.log("Authenticated request to "+t)},this.formulateResponse=function(){var r=o.MD5(i+":"+a.realm+":"+n).toString(),s=o.MD5(e+":"+t).toString();return o.MD5(r+":"+a.nonce+":"+("00000000"+a.nc).slice(-8)+":"+a.cnonce+":"+a.qop+":"+s).toString()},this.generateCnonce=function(){for(var e="abcdef0123456789",t="",r=0;r<16;r++){var i=Math.round(Math.random()*e.length);t+=e.substr(i,1)}return t},this.abort=function(){a.log("[digestAuthRequest] Aborted request to "+t),null!=a.firstRequest&&4!=a.firstRequest.readyState&&a.firstRequest.abort(),null!=a.authenticatedRequest&&4!=a.authenticatedRequest.readyState&&a.authenticatedRequest.abort()},this.isJson=function(e){try{JSON.parse(e)}catch(e){return!1}return!0},this.log=function(e){a.loggingOn&&console.log("[digestAuthRequest] "+e)},this.version=function(){return"0.8.0"}},c._DEFAULT_REQUEST={method:"GET",requestApi:"fetch",resolveWithFullResponse:!1,rejectUnauthorized:!0},c._PROMISE_THROTTLES=[],c._TASK_QUEUES=[],c._DEFAULT_TIMEOUT=6e4,c.MAX_TIMEOUT=2147483647,e.exports=c},85096:(e,t,r)=>{const i=r(69282),n=r(93444),a=r(91307),o=r(28103);class s{static log(e,t){i(e===parseInt(e,10)&&e>=0,"Log level must be an integer >= 0"),s.LOG_LEVEL>=e&&console.log(t)}static async setLogLevel(e){i(e===parseInt(e,10)&&e>=0,"Log level must be an integer >= 0"),s.LOG_LEVEL=e,s.WASM_MODULE&&s.WASM_MODULE.set_log_level(e),s.WORKER&&await s.invokeWorker(n.getUUID(),"setLogLevel",[e])}static getLogLevel(){return s.LOG_LEVEL}static async getWasmMemoryUsed(){let e=0;return s.WORKER&&(e+=await s.invokeWorker(n.getUUID(),"getWasmMemoryUsed",[])),s.getWasmModule()&&s.getWasmModule().HEAP8&&(e+=s.getWasmModule().HEAP8.length),e}static getWasmModule(){return s.WASM_MODULE}static async loadKeysModule(){return s.WASM_MODULE?s.WASM_MODULE:(delete s.WASM_MODULE,s.WASM_MODULE=r(86192)(),new Promise((function(e,t){s.WASM_MODULE.then((t=>{s.WASM_MODULE=t,delete s.WASM_MODULE.then,s._initWasmModule(s.WASM_MODULE),e(s.WASM_MODULE)}))})))}static async loadFullModule(){return s.WASM_MODULE&&s.FULL_LOADED?s.WASM_MODULE:(delete s.WASM_MODULE,s.WASM_MODULE=r(9478)(),new Promise((function(e,t){s.WASM_MODULE.then((t=>{s.WASM_MODULE=t,delete s.WASM_MODULE.then,s.FULL_LOADED=!0,s._initWasmModule(s.WASM_MODULE),e(s.WASM_MODULE)}))})))}static setRejectUnauthorizedFn(e,t){s.REJECT_UNAUTHORIZED_FNS||(s.REJECT_UNAUTHORIZED_FNS=[]),void 0===t?delete s.REJECT_UNAUTHORIZED_FNS[e]:s.REJECT_UNAUTHORIZED_FNS[e]=t}static isRejectUnauthorized(e){if(!s.REJECT_UNAUTHORIZED_FNS[e])throw new Error("No function registered with id "+e+" to inform if unauthorized reqs should be rejected");return s.REJECT_UNAUTHORIZED_FNS[e]()}static setWorkerDistPath(e){let t=s._prefixWindowsPath(e||s.WORKER_DIST_PATH_DEFAULT);t!==s.WORKER_DIST_PATH&&delete s.WORKER,s.WORKER_DIST_PATH=t}static async getWorker(){if(!s.WORKER){if(n.isBrowser())s.WORKER=new Worker(s.WORKER_DIST_PATH);else{const e=r(84763);s.WORKER=new e(s.WORKER_DIST_PATH)}s.WORKER_OBJECTS={},s.WORKER.onerror=function(e){console.error("Error posting message to MoneroWebWorker.js; is it copied to the app's build directory (e.g. in the root)?"),console.log(e)},s.WORKER.onmessage=function(e){let t=null,r=s.WORKER_OBJECTS[e.data[0]].callbacks[e.data[1]];if(void 0===r)throw new Error("No worker callback function defined for key '"+e.data[1]+"'");r instanceof Array&&(t=r[1],r=r[0]),r.apply(t,e.data.slice(2))}}return s.WORKER}static async terminateWorker(){s.WORKER&&(s.WORKER.terminate(),delete s.WORKER,s.WORKER=void 0)}static async invokeWorker(e,t,r){i(t.length>=2);let a=await s.getWorker();return s.WORKER_OBJECTS[e]||(s.WORKER_OBJECTS[e]={callbacks:{}}),await new Promise((function(i,o){let u=n.getUUID();s.WORKER_OBJECTS[e].callbacks[u]=function(t){t?t.error?o(s.deserializeError(t.error)):i(t.result):i(),delete s.WORKER_OBJECTS[e].callbacks[u]},a.postMessage([e,t,u].concat(void 0===r?[]:n.listify(r)))}))}static serializeError(e){const t={name:e.name,message:e.message,stack:e.stack};return e instanceof a&&(t.type="MoneroError"),t}static deserializeError(e){const t="MoneroError"===e.type?new a(e.message):new Error(e.message);return t.name=e.name,t.stack=e.stack,t}static _initWasmModule(e){e.taskQueue=new o(1),e.queueTask=async function(t){return e.taskQueue.submit(t)}}static _prefixWindowsPath(e){return/^[A-Z]:/.test(e)&&-1==e.indexOf("file://")&&(e="file://"+e),e}}s.LOG_LEVEL=0,s.WORKER_DIST_PATH_DEFAULT=n.isBrowser()?"/monero_web_worker.js":function(){const e=r(26470);return s._prefixWindowsPath(e.join("/","./MoneroWebWorker.js"))}(),s.WORKER_DIST_PATH=s.WORKER_DIST_PATH_DEFAULT,e.exports=s},63086:(e,t,r)=>{const i=r(93444),n=r(91307),a=r(73717),o=r(36693),s=r(28103);class u{constructor(e){this._proxyToWorker=!1!==e,this._timeoutInMs=u.DEFAULT_TIMEOUT,this._connections=[],this._listeners=[]}addListener(e){return this._listeners.push(e),this}removeListener(e){if(!i.remove(this._listeners,e))throw new n("Monero connection manager does not contain listener to remove");return this}removeListeners(){return this._listeners.splice(0,this._listeners.length),this}async addConnection(e){for(let t of this._connections)if(t.getUri()===e.getUri())throw new n("Connection URI already exists");return void 0!==this._proxyToWorker&&e.setProxyToWorker(this._proxyToWorker),this._connections.push(e),this}async removeConnection(e){let t=this.getConnectionByUri(e);if(!t)throw new n("No connection exists with URI: "+e);return i.remove(this._connections,t),t===this._currentConnection&&(this._currentConnection=void 0,this._onConnectionChanged(this._currentConnection)),this}isConnected(){return!!this._currentConnection&&this._currentConnection.isConnected()}getConnection(){return this._currentConnection}getConnectionByUri(e){for(let t of this._connections)if(t.getUri()===e)return t}getConnections(){let e=i.copyArray(this._connections);return e.sort(this._compareConnections.bind(this)),e}async getBestAvailableConnection(e){for(let t of this._getConnectionsInAscendingPriority())try{let r=this,n=[];for(let a of t)e&&i.arrayContains(e,a)||n.push(new Promise((async function(e,t){await a.checkConnection(r._timeoutInMs),a.isConnected()?e(a):t()})));let a=await Promise.any(n);if(a)return a}catch(e){if(!(e instanceof AggregateError))throw new n(e)}}setConnection(e){if(e&&"string"==typeof e){let t=this.getConnectionByUri(e);return this.setConnection(void 0===t?new a(e):t)}let t=e;if(this._currentConnection===t)return this;if(!t)return this._currentConnection=void 0,this._onConnectionChanged(void 0),this;if(!(t instanceof a))throw new n("Must provide string or MoneroRpcConnection to set connection");if(!t.getUri())throw new n("Connection is missing URI");let r=this.getConnectionByUri(t.getUri());return r&&i.remove(this._connections,r),this.addConnection(t),this._currentConnection=t,this._onConnectionChanged(this._currentConnection),this}async checkConnection(){let e=!1,t=this.getConnection();if(t&&await t.checkConnection(this._timeoutInMs)&&(e=!0),this._autoSwitch&&!this.isConnected()){let e=await this.getBestAvailableConnection([t]);if(e)return this.setConnection(e),this}return e&&await this._onConnectionChanged(t),this}async checkConnections(){if(await Promise.all(this.checkConnectionPromises()),this._autoSwitch&&!this.isConnected())for(let e of this._getConnectionsInAscendingPriority()){let t;for(let r of e)r.isConnected()&&(!t||r.getResponseTime()parseInt(e[0])-parseInt(t[0])))),r=[];for(let e of t.values())r.push(e);return e.has(0)&&r.push(r.splice(0,1)[0]),r}_compareConnections(e,t){return e===this._currentConnection?-1:t===this._currentConnection?1:e.isOnline()===t.isOnline()?e.getPriority()===t.getPriority()?e.getUri().localeCompare(t.getUri()):0==e.getPriority()?1:0==t.getPriority()?-1:e.getPriority()-t.getPriority():e.isOnline()?-1:t.isOnline()?1:void 0===e.isOnline()?-1:1}}u.DEFAULT_TIMEOUT=5e3,u.DEFAULT_CHECK_CONNECTION_PERIOD=15e3,e.exports=u},96771:e=>{e.exports=class{async onConnectionChanged(e){}}},91307:e=>{class t extends Error{constructor(e,t){super(e),this.code=t}getCode(){return this.code}toString(){if(void 0===this.message&&void 0===this.getCode())return super.message;let e="";return void 0!==this.getCode()&&(e+=this.getCode()+": "),e+=this.message,e}}e.exports=t},73717:(e,t,r)=>{const i=r(93444),n=r(28461),a=r(85096),o=r(91307),s=r(27828),u=r(58012);class c{constructor(e,t,r,n,a){if("string"==typeof e)this._config={uri:e},this.setCredentials(t,r),void 0!==n&&(this._config.rejectUnauthorized=n),void 0!==a&&(this._config.proxyToWorker=a);else if("object"==typeof e){if(void 0!==t||void 0!==r||void 0!==n||void 0!==a)throw new o("Can provide config object or params but not both");this._config=e instanceof c?Object.assign({},e.getConfig()):Object.assign({},e),this.setCredentials(this._config.username,this._config.password)}else if(void 0!==e)throw new o("Invalid configuration to MoneroRpcConnection; must be string or MoneroRpcConnection or equivalent JS object");if(this._config=Object.assign({},c.DEFAULT_CONFIG,this._config),this._config.uri&&(this._config.uri=this._config.uri.replace(/\/$/,""),new RegExp("^\\w+://.+").test(this._config.uri)||(this._config.uri="http://"+this._config.uri)),this._config.user||this._config.pass)throw new o("Authentication fields 'user' and 'pass' have been renamed to 'username' and 'password'. Please update to the new api");for(let e of Object.keys(this._config))if(!i.arrayContains(c.SUPPORTED_FIELDS,e))throw new o("RPC connection includes unsupported field: '"+e+"'")}setCredentials(e,t){if(""===e&&(e=void 0),""===t&&(t=void 0),e||t){if(!e)throw new o("username must be defined because password is defined");if(!t)throw new o("password must be defined because username is defined")}return""===this._config.username&&(this._config.username=void 0),""===this._config.password&&(this._config.password=void 0),this._config.username===e&&this._config.password===t||(this._isOnline=void 0,this._isAuthenticated=void 0),this._config.username=e,this._config.password=t,this}getUri(){return this._config.uri}getUsername(){return this._config.username?this._config.username:""}getPassword(){return this._config.password?this._config.password:""}getRejectUnauthorized(){return this._config.rejectUnauthorized}setProxyToWorker(e){return this._config.proxyToWorker=e,this}getProxyToWorker(){return this._config.proxyToWorker}getConfig(){return this._config}getPriority(){return this._config.priority}setPriority(e){if(!(e>=0))throw new o("Priority must be >= 0");return this._config.priority=e,this}setAttribute(e,t){return this.attributes||(this.attributes=new Map),this.attributes.put(e,t),this}getAttribute(e){return this.attributes.get(e)}async checkConnection(e){let t=this._isOnline,r=this._isAuthenticated,i=Date.now();try{if(this._fakeDisconnected)throw new Error("Connection is fake disconnected");await this.sendJsonRequest("get_version",void 0,e),this._isOnline=!0,this._isAuthenticated=!0}catch(e){e instanceof s&&401===e.getCode()?(this._isOnline=!0,this._isAuthenticated=!1):(this._isOnline=!1,this._isAuthenticated=void 0,this._responseTime=void 0)}return this._isOnline&&(this._responseTime=Date.now()-i),t!==this._isOnline||r!==this._isAuthenticated}isConnected(){return void 0===this._isOnline?void 0:this._isOnline&&!1!==this._isAuthenticated}isOnline(){return this._isOnline}isAuthenticated(){return this._isAuthenticated}getResponseTime(){return this._responseTime}async sendJsonRequest(e,t,r){try{let o=JSON.stringify({id:"0",jsonrpc:"2.0",method:e,params:t});a.getLogLevel()>=2&&a.log(2,"Sending json request with method '"+e+"' and body: "+o);let s=(new Date).getTime(),u=await n.request({method:"POST",uri:this.getUri()+"/json_rpc",username:this.getUsername(),password:this.getPassword(),body:o,timeout:r,rejectUnauthorized:this._config.rejectUnauthorized,requestApi:i.isFirefox()?"xhr":"fetch",proxyToWorker:this._config.proxyToWorker});if(c._validateHttpResponse(u),"{"!=u.body[0])throw u.body;if(u=JSON.parse(u.body.replace(/("[^"]*"\s*:\s*)(\d{16,})/g,'$1"$2"')),a.getLogLevel()>=3){let t=JSON.stringify(u);a.log(3,"Received response from method='"+e+"', response="+t.substring(0,Math.min(1e3,t.length)+"("+((new Date).getTime()-s)+" ms)"))}return c._validateRpcResponse(u,e,t),u}catch(r){throw r instanceof s?r:new s(r,r.statusCode,e,t)}}async sendPathRequest(e,t,r){try{a.getLogLevel()>=2&&a.log(2,"Sending path request with path '"+e+"' and params: "+JSON.stringify(t));let o=(new Date).getTime(),s=await n.request({method:"POST",uri:this.getUri()+"/"+e,username:this.getUsername(),password:this.getPassword(),body:JSON.stringify(t),timeout:r,rejectUnauthorized:this._config.rejectUnauthorized,requestApi:i.isFirefox()?"xhr":"fetch",proxyToWorker:this._config.proxyToWorker});if(c._validateHttpResponse(s),"{"!=s.body[0])throw s.body;if(s=JSON.parse(s.body.replace(/("[^"]*"\s*:\s*)(\d{16,})/g,'$1"$2"')),"string"==typeof s&&(s=JSON.parse(s)),a.getLogLevel()>=3){let e=JSON.stringify(s);a.log(3,"Received response from path='"+method+"', response="+e.substring(0,Math.min(1e3,e.length)+"("+((new Date).getTime()-o)+" ms)"))}return c._validateRpcResponse(s,e,t),s}catch(r){throw r instanceof s?r:new s(r,r.statusCode,e,t)}}async sendBinaryRequest(e,t,r){let o=await u.jsonToBinary(t);try{a.getLogLevel()>=2&&a.log(2,"Sending binary request with path '"+e+"' and params: "+JSON.stringify(t));let u=await n.request({method:"POST",uri:this.getUri()+"/"+e,username:this.getUsername(),password:this.getPassword(),body:o,timeout:r,rejectUnauthorized:this._config.rejectUnauthorized,requestApi:i.isFirefox()?"xhr":"fetch",proxyToWorker:this._config.proxyToWorker});if(c._validateHttpResponse(u),u=u.body,u instanceof Uint8Array||(console.error("resp is not uint8array"),console.error(u)),u.error)throw new s(u.error.message,u.error.code,e,t);return u}catch(r){throw r instanceof s?r:new s(r,r.statusCode,e,t)}}toString(){return this.getUri()+" (username="+this.getUsername()+", password="+(this.getPassword()?"***":this.getPassword())+", priority="+this.getPriority()+", isOnline="+this.isOnline()+", isAuthenticated="+this.isAuthenticated()+")"}static _validateHttpResponse(e){let t=e.statusCode;if(t<200||t>299){let r=e.body;throw new s(t+" "+e.statusText+(r?": "+r:""),t,void 0,void 0)}}static _validateRpcResponse(e,t,r){if(e.error)throw new s(e.error.message,e.error.code,t,r)}_setFakeDisconnected(e){this._fakeDisconnected=e}}c.DEFAULT_CONFIG={uri:void 0,username:void 0,password:void 0,rejectUnauthorized:!0,proxyToWorker:!1,priority:0},c.SUPPORTED_FIELDS=["uri","username","password","rejectUnauthorized","priority","proxyToWorker"],e.exports=c},27828:(e,t,r)=>{const i=r(91307);e.exports=class extends i{constructor(e,t,r,i){super(e,t),this.rpcMethod=r,this.rpcParams=i}getRpcMethod(){return this.rpcMethod}getRpcParams(){return this.rpcParams}toString(){let e=super.toString();return(this.rpcMethod||this.rpcParams)&&(e+="\nRequest: '"+this.rpcMethod+"' with params: "+("object"==typeof this.rpcParams?JSON.stringify(this.rpcParams):this.rpcParams)),e}}},58012:(e,t,r)=>{var i=r(48764).Buffer;const n=r(69282),a=r(63055).BigInteger,o=r(93444),s=r(85096),u=r(91307),c=r(64472),l=r(79077);class h{static getVersion(){return"0.8.1"}static setProxyToWorker(e){h.PROXY_TO_WORKER=e||!1}static async validateMnemonic(e){n(e,"Mnemonic phrase is not initialized");let t=e.split(" ");if(t.length!==h.NUM_MNEMONIC_WORDS)throw new u("Mnemonic phrase is "+t.length+" words but must be "+h.NUM_MNEMONIC_WORDS)}static async isValidPrivateViewKey(e){try{return await h.validatePrivateViewKey(e),!0}catch(e){return!1}}static async isValidPublicViewKey(e){try{return await h.validatePublicViewKey(e),!0}catch(e){return!1}}static async isValidPrivateSpendKey(e){try{return await h.validatePrivateSpendKey(e),!0}catch(e){return!1}}static async isValidPublicSpendKey(e){try{return await h.validatePublicSpendKey(e),!0}catch(e){return!1}}static async validatePrivateViewKey(e){if(!h._isHex64(e))throw new u("private view key expected to be 64 hex characters")}static async validatePublicViewKey(e){if(!h._isHex64(e))throw new u("public view key expected to be 64 hex characters")}static async validatePrivateSpendKey(e){if(!h._isHex64(e))throw new u("private spend key expected to be 64 hex characters")}static async validatePublicSpendKey(e){if(!h._isHex64(e))throw new u("public spend key expected to be 64 hex characters")}static async getIntegratedAddress(e,t,r){return h.PROXY_TO_WORKER?new c(await s.invokeWorker(void 0,"moneroUtilsGetIntegratedAddress",Array.from(arguments))):(l.validate(e),n("string"==typeof t,"Address is not string"),n(t.length>0,"Address is empty"),n(o.isBase58(t),"Address is not base 58"),void 0===s.getWasmModule()&&await s.loadKeysModule(),s.getWasmModule().queueTask((async function(){let i=s.getWasmModule().get_integrated_address_util(e,t,r||"");if("{"!==i.charAt(0))throw new u(i);return new c(JSON.parse(i))})))}static async isValidAddress(e,t){try{return await h.validateAddress(e,t),!0}catch(e){return!1}}static async validateAddress(e,t){return h.PROXY_TO_WORKER?s.invokeWorker(void 0,"moneroUtilsValidateAddress",Array.from(arguments)):(n("string"==typeof e,"Address is not string"),n(e.length>0,"Address is empty"),n(o.isBase58(e),"Address is not base 58"),l.validate(t),void 0===s.getWasmModule()&&await s.loadKeysModule(),s.getWasmModule().queueTask((async function(){let r=s.getWasmModule().validate_address(e,t);if(r)throw new u(r)})))}static async isValidPaymentId(e){try{return await h.validatePaymentId(e),!0}catch(e){return!1}}static async validatePaymentId(e){n.equal(typeof e,"string"),n(16===e.length||64===e.length)}static async getLastTxPubKey(e){let t;for(let r=0;r=e.length&&"0"!==t[i])return!1;if(i>=t.length&&"0"!==e[i])return!1}return!0}static mergeTx(e,t){for(let r of e)if(r.getHash()===t.getHash())return void r.merge(t);e.push(t)}static async jsonToBinary(e){return h.PROXY_TO_WORKER?s.invokeWorker(void 0,"moneroUtilsJsonToBinary",Array.from(arguments)):(void 0===s.getWasmModule()&&await s.loadKeysModule(),s.getWasmModule().queueTask((async function(){let t=s.getWasmModule().malloc_binary_from_json(JSON.stringify(e)),r=JSON.parse(t);r.ptr=parseInt(r.ptr),r.length=parseInt(r.length);let i=new Uint8Array(r.length);for(let e=0;eJSON.parse(e))),a.txs=a.txs.map((e=>e?e.map((e=>JSON.parse(e.replace(",","{")+"}"))):[])),a})))}static xmrToAtomicUnits(e){if("number"==typeof e)e=""+e;else if("string"!=typeof e)throw new u("Must provide XMR amount as a string or js number to convert to atomic units");let t=1,r=e.indexOf(".");return r>-1&&(t=Math.pow(10,e.length-r-1),e=e.slice(0,r)+e.slice(r+1)),new a(e).multiply(new a(h.AU_PER_XMR)).divide(new a(t))}static atomicUnitsToXmr(e){if("string"==typeof e)e=new a(e);else if(!(e instanceof a))throw new u("Must provide atomic units as BigInteger or string to convert to XMR");let t=e.divRem(new a(h.AU_PER_XMR));return Number(t[0].toJSValue()+t[1].toJSValue()/h.AU_PER_XMR)}static _isHex64(e){return"string"==typeof e&&64===e.length&&o.isHex(e)}}h.PROXY_TO_WORKER=!0,h.NUM_MNEMONIC_WORDS=25,h.RING_SIZE=12,h.MAX_REQUESTS_PER_SECOND=50,h.AU_PER_XMR=1e12,e.exports=h},74755:(e,t,r)=>{const i=r(69282),n=r(93444),a=r(28461),o=r(85096),s=r(1305),u=r(36242),c=r(3104),l=r(63131),h=r(91307),p=r(53011),d=r(73717),f=r(36721),m=r(61527),g=r(58012),v=r(99919),y=r(63149),_=r(78647);onmessage=async function(e){await self.initOneTime();let t=e.data[0],r=e.data[1],n=e.data[2];if(i(r,"Must provide function name to worker"),i(n,"Must provide callback id to worker"),!self[r])throw new Error("Method '"+r+"' is not registered with worker");e.data.splice(1,2);try{postMessage([t,n,{result:await self[r].apply(null,e.data)}])}catch(e){e instanceof Error||(e=new Error(e)),postMessage([t,n,{error:o.serializeError(e)}])}},self.initOneTime=async function(){self.isInitialized||(self.WORKER_OBJECTS={},self.isInitialized=!0,g.PROXY_TO_WORKER=!1)},self.httpRequest=async function(e,t){try{return await a.request(Object.assign(t,{proxyToWorker:!1}))}catch(e){throw e.statusCode?new Error(JSON.stringify({statusCode:e.statusCode,statusMessage:e.message})):e}},self.setLogLevel=async function(e,t){return o.setLogLevel(t)},self.getWasmMemoryUsed=async function(e){return o.getWasmModule()&&o.getWasmModule().HEAP8?o.getWasmModule().HEAP8.length:void 0},self.moneroUtilsGetIntegratedAddress=async function(e,t,r,i){return(await g.getIntegratedAddress(t,r,i)).toJson()},self.moneroUtilsValidateAddress=async function(e,t,r){return g.validateAddress(t,r)},self.moneroUtilsJsonToBinary=async function(e,t){return g.jsonToBinary(t)},self.moneroUtilsBinaryToJson=async function(e,t){return g.binaryToJson(t)},self.moneroUtilsBinaryBlocksToJson=async function(e,t){return g.binaryBlocksToJson(t)},self.daemonAddListener=async function(e,t){let r=new class extends c{async onBlockHeader(r){self.postMessage([e,"onBlockHeader_"+t,r.toJson()])}};self.daemonListeners||(self.daemonListeners={}),self.daemonListeners[t]=r,await self.WORKER_OBJECTS[e].addListener(r)},self.daemonRemoveListener=async function(e,t){if(!self.daemonListeners[t])throw new h("No daemon worker listener registered with id: "+t);await self.WORKER_OBJECTS[e].removeListener(self.daemonListeners[t]),delete self.daemonListeners[t]},self.connectDaemonRpc=async function(e,t){self.WORKER_OBJECTS[e]=new l(t)},self.daemonGetRpcConnection=async function(e){let t=await self.WORKER_OBJECTS[e].getRpcConnection();return t?t.getConfig():void 0},self.daemonIsConnected=async function(e){return self.WORKER_OBJECTS[e].isConnected()},self.daemonGetVersion=async function(e){return(await self.WORKER_OBJECTS[e].getVersion()).toJson()},self.daemonIsTrusted=async function(e){return self.WORKER_OBJECTS[e].isTrusted()},self.daemonGetHeight=async function(e){return self.WORKER_OBJECTS[e].getHeight()},self.daemonGetBlockHash=async function(e,t){return self.WORKER_OBJECTS[e].getBlockHash(t)},self.daemonGetBlockTemplate=async function(e,t,r){return(await self.WORKER_OBJECTS[e].getBlockTemplate(t,r)).toJson()},self.daemonGetLastBlockHeader=async function(e){return(await self.WORKER_OBJECTS[e].getLastBlockHeader()).toJson()},self.daemonGetBlockHeaderByHash=async function(e,t){return(await self.WORKER_OBJECTS[e].getBlockHeaderByHash(t)).toJson()},self.daemonGetBlockHeaderByHeight=async function(e,t){return(await self.WORKER_OBJECTS[e].getBlockHeaderByHeight(t)).toJson()},self.daemonGetBlockHeadersByRange=async function(e,t,r){let i=[];for(let n of await self.WORKER_OBJECTS[e].getBlockHeadersByRange(t,r))i.push(n.toJson());return i},self.daemonGetBlockByHash=async function(e,t){return(await self.WORKER_OBJECTS[e].getBlockByHash(t)).toJson()},self.daemonGetBlocksByHash=async function(e,t,r,i){let n=[];for(let a of await self.WORKER_OBJECTS[e].getBlocksByHash(t,r,i))n.push(a.toJson());return n},self.daemonGetBlockByHeight=async function(e,t){return(await self.WORKER_OBJECTS[e].getBlockByHeight(t)).toJson()},self.daemonGetBlocksByHeight=async function(e,t){let r=[];for(let i of await self.WORKER_OBJECTS[e].getBlocksByHeight(t))r.push(i.toJson());return r},self.daemonGetBlocksByRange=async function(e,t,r){let i=[];for(let n of await self.WORKER_OBJECTS[e].getBlocksByRange(t,r))i.push(n.toJson());return i},self.daemonGetBlocksByRangeChunked=async function(e,t,r,i){let n=[];for(let a of await self.WORKER_OBJECTS[e].getBlocksByRangeChunked(t,r,i))n.push(a.toJson());return n},self.daemonGetBlockHashes=async function(e,t,r){throw new Error("worker.getBlockHashes not implemented")},self.daemonGetTxs=async function(e,t,r){let i,n=await self.WORKER_OBJECTS[e].getTxs(t,r),a=[],o=new Set;for(let e of n)e.getBlock()||(i||(i=(new u).setTxs([])),e.setBlock(i),i.getTxs().push(e)),o.has(e.getBlock())||(o.add(e.getBlock()),a.push(e.getBlock()));for(let e=0;e{e.exports=class{constructor(e){this.state=Object.assign({},e)}getPrivateKeyPath(){return this.state.privateKeyPath}setPrivateKeyPath(e){return this.state.privateKeyPath=e,this}getCertificatePath(){return this.state.certificatePath}setCertificatePath(e){return this.state.certificatePath=e,this}getCertificateAuthorityFile(){return this.state.certificateAuthorityFile}setCertificateAuthorityFile(e){return this.state.certificateAuthorityFile=e,this}getAllowedFingerprints(){return this.state.allowedFingerprints}setAllowedFingerprints(e){return this.state.allowedFingerprints=e,this}getAllowAnyCert(){return this.state.allowAnyCert}setAllowAnyCert(e){return this.state.allowAnyCert=e,this}}},36693:e=>{e.exports=class{constructor(e){this._task=e}getTask(){return this._task}start(e){return this._periodInMs=e,this._isStarted||(this._isStarted=!0,this._runLoop()),this}isStarted(){return this._isStarted}stop(){this._isStarted=!1}setPeriodInMs(e){this._periodInMs=e}async _runLoop(){if(this._isLooping)return;this._isLooping=!0;let e=this;for(;this._isStarted;){let t=Date.now();await this._task(),this._isStarted&&await new Promise((function(r){setTimeout(r,e._periodInMs-(Date.now()-t))}))}this._isLooping=!1}}},28103:(e,t,r)=>{const i=r(93444);e.exports=class{constructor(e){if(void 0===e&&(e=1),e<1)throw new Error("Max concurrency must be greater than or equal to 1");const t=r(81195);this.taskQueue=t.queue((function(e,t){e.then?e.then((e=>{t(e)})).catch((e=>{t(void 0,e)})):e().then((e=>{t(e)})).catch((e=>{t(void 0,e)}))}),e);let i=this;this.drainListeners=[],this.taskQueue.drain=function(){for(let e of i.drainListeners)e()}}async submit(e){let t=this;return new Promise((function(r,i){t.taskQueue.push(e,(function(e,t){void 0!==t?i(t):r(e)}))}))}async awaitAll(){if(0===this.taskQueue.length)return;let e=this;return new Promise((function(t){e.drainListeners.push((function(){i.remove(e.drainListeners,this),t()}))}))}}},63055:(e,t)=>{!function(e){"use strict";var t={};function r(e,i,a){if(a!==t)return e instanceof r?e:void 0===e?n:r.parse(e);for(e=e||[];e.length&&!e[e.length-1];)--e.length;this._d=e,this._s=e.length?i||1:0}r.CONSTRUCT=t,r._construct=function(e,i){return new r(e,i,t)};var i=1e7;r.base=i,r.base_log10=7;var n=new r([],0,t);r.ZERO=n;var a=new r([1],1,t);r.ONE=a;var o=new r(a._d,-1,t);r.M_ONE=o,r._0=n,r._1=a,r.small=[n,a,new r([2],1,t),new r([3],1,t),new r([4],1,t),new r([5],1,t),new r([6],1,t),new r([7],1,t),new r([8],1,t),new r([9],1,t),new r([10],1,t),new r([11],1,t),new r([12],1,t),new r([13],1,t),new r([14],1,t),new r([15],1,t),new r([16],1,t),new r([17],1,t),new r([18],1,t),new r([19],1,t),new r([20],1,t),new r([21],1,t),new r([22],1,t),new r([23],1,t),new r([24],1,t),new r([25],1,t),new r([26],1,t),new r([27],1,t),new r([28],1,t),new r([29],1,t),new r([30],1,t),new r([31],1,t),new r([32],1,t),new r([33],1,t),new r([34],1,t),new r([35],1,t),new r([36],1,t)],r.digits="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),r.prototype.toString=function(e){if((e=+e||10)<2||e>36)throw new Error("illegal radix "+e+".");if(0===this._s)return"0";if(10===e){var t=this._s<0?"-":"";t+=this._d[this._d.length-1].toString();for(var i=this._d.length-2;i>=0;i--){for(var n=this._d[i].toString();n.length<7;)n="0"+n;t+=n}return t}var a=r.digits;e=r.small[e];for(var o,s=this._s,u=this.abs(),c=[];0!==u._s;){var l=u.divRem(e);u=l[0],o=l[1],c.push(a[o.valueOf()])}return(s<0?"-":"")+c.reverse().join("")},r.radixRegex=[/^$/,/^$/,/^[01]*$/,/^[012]*$/,/^[0-3]*$/,/^[0-4]*$/,/^[0-5]*$/,/^[0-6]*$/,/^[0-7]*$/,/^[0-8]*$/,/^[0-9]*$/,/^[0-9aA]*$/,/^[0-9abAB]*$/,/^[0-9abcABC]*$/,/^[0-9a-dA-D]*$/,/^[0-9a-eA-E]*$/,/^[0-9a-fA-F]*$/,/^[0-9a-gA-G]*$/,/^[0-9a-hA-H]*$/,/^[0-9a-iA-I]*$/,/^[0-9a-jA-J]*$/,/^[0-9a-kA-K]*$/,/^[0-9a-lA-L]*$/,/^[0-9a-mA-M]*$/,/^[0-9a-nA-N]*$/,/^[0-9a-oA-O]*$/,/^[0-9a-pA-P]*$/,/^[0-9a-qA-Q]*$/,/^[0-9a-rA-R]*$/,/^[0-9a-sA-S]*$/,/^[0-9a-tA-T]*$/,/^[0-9a-uA-U]*$/,/^[0-9a-vA-V]*$/,/^[0-9a-wA-W]*$/,/^[0-9a-xA-X]*$/,/^[0-9a-yA-Y]*$/,/^[0-9a-zA-Z]*$/],r.parse=function(e,i){e=e.toString(),void 0!==i&&10!=+i||(e=e.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/,"e").replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/,(function(e,t,r,i,n){var a=(n=+n)<0,o=r.length+n;e=(a?r:i).length,n=(n=Math.abs(n))>=e?n-e+a:0;var s=new Array(n+1).join("0"),u=r+i;return(t||"")+(a?u=s+u:u+=s).substr(0,o+=a?s.length:0)+(o36)throw new Error("Illegal radix "+i+".");if(i=+i,!r.radixRegex[i].test(u))throw new Error("Bad digit for radix "+i);if(0===(u=u.replace(/^0+/,"").split("")).length)return n;if(o="-"===o?-1:1,10==i){for(var c=[];u.length>=7;)c.push(parseInt(u.splice(u.length-r.base_log10,r.base_log10).join(""),10));return c.push(parseInt(u.join(""),10)),new r(c,o,t)}c=n,i=r.small[i];for(var l=r.small,h=0;hs&&(a=o,s=u),p=l;h&&pi)return 1;for(var n=this._d,a=e._d,o=t-1;o>=0;o--)if(n[o]!==a[o])return n[o]=e._d.length,s=(o?this:e)._d,u=(o?e:this)._d,c=s.length,l=u.length,h=c+l,p=new Array(h);for(a=0;a=i?[a%i|0,a/i|0]:[a],1,t);if(2===e)return this.add(this);if(this.isUnit())return new r([e],1,t);for(var o=this._d,s=o.length,u=s+1,c=new Array(u),l=0;lc._d.length&&(g=(g+1)*i),s=Math.ceil(g/v)}do{var y=c.multiplySingleDigit(s);if(y.compareAbs(d)<=0)break;s--}while(s);if(p.push(s),s){var _=d.subtract(y);d._d=_._d.slice()}}return[new r(p.reverse(),u,t),new r(d._d,this._s,t)]},r.prototype.divRemSmall=function(e){var a;if(0==(e=+e))throw new Error("Divide by zero");var o=e<0?-1:1,s=this._s*o;if((e=Math.abs(e))<1||e>=i)throw new Error("Argument out of range");if(0===this._s)return[n,n];if(1===e||-1===e)return[1===s?this.abs():new r(this._d,s,t),n];if(1===this._d.length){var u=new r([this._d[0]/e|0],1,t);return a=new r([this._d[0]%e|0],1,t),s<0&&(u=u.negate()),this._s<0&&(a=a.negate()),[u,a]}for(var c,l=this._d.slice(),h=new Array(l.length),p=0,d=0,f=0;l.length;)(p=p*i+l[l.length-1])0},r.prototype.isNegative=function(){return this._s<0},r.prototype.isZero=function(){return 0===this._s},r.prototype.exp10=function(e){if(0==(e=+e))return this;if(Math.abs(e)>Number(s))throw new Error("exponent too large in BigInteger.exp10");if(0===this._s)return n;if(e>0){for(var i=new r(this._d.slice(),this._s,t);e>=7;e-=7)i._d.unshift(0);return 0==e?i:(i._s=1,i=i.multiplySingleDigit(Math.pow(10,e)),this._s<0?i.negate():i)}if(-e>=7*this._d.length)return n;for(i=new r(this._d.slice(),this._s,t),e=-e;e>=7;e-=7)i._d.shift();return 0==e?i:i.divRemSmall(Math.pow(10,e))[0]},r.prototype.pow=function(e){if(this.isUnit())return this._s>0||r(e).isOdd()?this:this.negate();if(0===(e=r(e))._s)return a;if(e._s<0){if(0===this._s)throw new Error("Divide by zero");return n}if(0===this._s)return n;if(e.isUnit())return this;if(e.compareAbs(s)>0)throw new Error("exponent too large in BigInteger.pow");for(var t=this,i=a,o=r.small[2];e.isPositive();){if(e.isOdd()&&(i=i.multiply(t),e.isUnit()))return i;t=t.square(),e=e.quotient(o)}return i},r.prototype.modPow=function(e,t){for(var i=a,n=this;e.isPositive();)e.isOdd()&&(i=i.multiply(n).remainder(t)),(e=e.quotient(r.small[2])).isPositive()&&(n=n.square().remainder(t));return i},r.prototype.log=function(){switch(this._s){case 0:return-1/0;case-1:return NaN}var e=this._d.length;if(7*e<30)return Math.log(this.valueOf());var n=Math.ceil(30/7),a=this._d.slice(e-n);return Math.log(new r(a,1,t).valueOf())+(e-n)*Math.log(i)},r.prototype.valueOf=function(){return parseInt(this.toString(),10)},r.prototype.toJSValue=function(){return parseInt(this.toString(),10)},r.prototype.lowVal=function(){return this._d[0]||0};var s=r(2147483647);r.MAX_EXP=s,function(){function e(e){return function(t){return e.call(r(t))}}function t(e){return function(t,i){return e.call(r(t),r(i))}}function i(e){return function(t,i,n){return e.call(r(t),r(i),r(n))}}!function(){var n,a,o="toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(","),s="compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(","),u=["modPow"];for(n=0;n{const i=r(91307);e.exports=class{async addListener(e){throw new i("Subclass must implement")}async removeListener(e){throw new i("Subclass must implement")}getListeners(){throw new i("Subclass must implement")}async isConnected(){throw new i("Subclass must implement")}async getVersion(){throw new i("Subclass must implement")}async isTrusted(){throw new i("Subclass must implement")}async getHeight(){throw new i("Subclass must implement")}async getBlockHash(e){throw new i("Subclass must implement")}async getBlockTemplate(e,t){throw new i("Subclass must implement")}async getLastBlockHeader(){throw new i("Subclass must implement")}async getBlockHeaderByHash(e){throw new i("Subclass must implement")}async getBlockHeaderByHeight(e){throw new i("Subclass must implement")}async getBlockHeadersByRange(e,t){throw new i("Subclass must implement")}async getBlockByHash(e){throw new i("Subclass must implement")}async getBlocksByHash(e,t,r){throw new i("Subclass must implement")}async getBlockByHeight(e){throw new i("Subclass must implement")}async getBlocksByHeight(e){throw new i("Subclass must implement")}async getBlocksByRange(e,t){throw new i("Subclass must implement")}async getBlocksByRangeChunked(e,t,r){throw new i("Subclass must implement")}async getBlockHashes(e,t){throw new i("Subclass must implement")}async getTx(e,t=!1){return(await this.getTxs([e],t))[0]}async getTxs(e,t=!1){throw new i("Subclass must implement")}async getTxHex(e,t=!1){return(await this.getTxHexes([e],t))[0]}async getTxHexes(e,t=!1){throw new i("Subclass must implement")}async getMinerTxSum(e,t){throw new i("Subclass must implement")}async getFeeEstimate(e){throw new i("Subclass must implement")}async submitTxHex(e,t){throw new i("Subclass must implement")}async relayTxByHash(e){r(69282).equal(typeof e,"string","Must provide a transaction hash"),await this.relayTxsByHash([e])}async relayTxsByHash(e){throw new i("Subclass must implement")}async getTxPool(){throw new i("Subclass must implement")}async getTxPoolHashes(){throw new i("Subclass must implement")}async getTxPoolBacklog(){throw new i("Subclass must implement")}async getTxPoolStats(){throw new i("Subclass must implement")}async flushTxPool(e){throw new i("Subclass must implement")}async getKeyImageSpentStatus(e){return(await this.getKeyImageSpentStatuses([e]))[0]}async getKeyImageSpentStatuses(e){throw new i("Subclass must implement")}async getOutputs(e){throw new i("Subclass must implement")}async getOutputHistogram(e,t,r,n,a){throw new i("Subclass must implement")}async getOutputDistribution(e,t,r,n){throw new i("Subclass must implement")}async getInfo(){throw new i("Subclass must implement")}async getSyncInfo(){throw new i("Subclass must implement")}async getHardForkInfo(){throw new i("Subclass must implement")}async getAltChains(){throw new i("Subclass must implement")}async getAltBlockHashes(){throw new i("Subclass must implement")}async getDownloadLimit(){throw new i("Subclass must implement")}async setDownloadLimit(e){throw new i("Subclass must implement")}async resetDownloadLimit(){throw new i("Subclass must implement")}async getUploadLimit(){throw new i("Subclass must implement")}async setUploadLimit(e){throw new i("Subclass must implement")}async resetUploadLimit(){throw new i("Subclass must implement")}async getPeers(){throw new i("Subclass must implement")}async getKnownPeers(){throw new i("Subclass must implement")}async setOutgoingPeerLimit(e){throw new i("Subclass must implement")}async setIncomingPeerLimit(e){throw new i("Subclass must implement")}async getPeerBans(){throw new i("Subclass must implement")}async setPeerBan(e){return await this.setPeerBans([e])}async setPeerBans(e){throw new i("Subclass must implement")}async startMining(e,t,r,n){throw new i("Subclass must implement")}async stopMining(){throw new i("Subclass must implement")}async getMiningStatus(){throw new i("Subclass must implement")}async submitBlock(e){await this.submitBlocks([e])}async pruneBlockchain(e){throw new i("Subclass must implement")}async submitBlocks(e){throw new i("Subclass must implement")}async checkForUpdate(){throw new i("Subclass must implement")}async downloadUpdate(e){throw new i("Subclass must implement")}async stop(){throw new i("Subclass must implement")}async waitForNextBlockHeader(){throw new i("Subclass must implement")}static parseNetworkType(e){const t=r(79077);if("mainnet"===e)return t.MAINNET;if("testnet"===e)return t.TESTNET;if("stagenet"===e)return t.STAGENET;throw new i("Invalid network type to parse: "+e)}}},63131:(e,t,r)=>{const i=r(69282),n=r(63055).BigInteger,a=r(93444),o=r(85096),s=r(36693),u=r(24652),c=r(1305),l=r(36242),h=r(29457),p=r(91350),d=r(77333),f=r(88988),m=r(3104),g=r(7666),v=r(91307),y=r(90176),_=r(48936),b=r(53011),w=r(20465),E=r(15887),k=r(79077),S=r(42299),x=r(96909),j=r(63374),N=r(58400),M=r(73717),I=r(38991),A=r(2624),T=r(26046),R=r(58012),P=r(55540);class O extends d{constructor(e,t,r,i,n,o){if(super(),a.isArray(e))throw new Error("Use monerojs.connectToDaemonRpc(...) to use terminal parameters");if(this.config=O._normalizeConfig(e,t,r,i,n,o),this.config.proxyToWorker)throw new Error("Use monerojs.connectToDaemonRpc(...) to proxy to worker");let s=Object.assign({},this.config);delete s.proxyToWorker,delete s.pollInterval,this.rpc=new M(s),this.listeners=[],this.cachedHeaders={}}static async _connectToDaemonRpc(e,t,r,i,n,o){if(a.isArray(e))return O._startMonerodProcess(e,i,n,o);let s=O._normalizeConfig(e,t,r,i,n,o);return s.proxyToWorker?B.connect(s):new O(s)}static async _startMonerodProcess(e,t,n,s){let u;i(a.isArray(e),"Must provide string array with command line parameters"),this.process=r(43448).spawn(e[0],e.slice(1),{}),this.process.stdout.setEncoding("utf8"),this.process.stderr.setEncoding("utf8");let c=this,l="";return new Promise((function(r,i){c.process.stdout.on("data",(async function(i){let a=i.toString();o.log(2,a),l+=a+"\n";let h="Binding on ",p=a.indexOf(h);if(p>=0){let t=a.substring(p+h.length,a.lastIndexOf(" ")),r=a.replace(/\u001b\[.*?m/g,"").trim(),i=r.substring(r.lastIndexOf(":")+1),n=e.indexOf("--rpc-ssl"),o=n>=0&&"enabled"==e[n+1].toLowerCase();u=(o?"https":"http")+"://"+t+":"+i}if(a.indexOf("core RPC server started ok")>=0){let i=e.indexOf("--rpc-login"),a=i>=0?e[i+1]:void 0,o=void 0===a?void 0:a.substring(0,a.indexOf(":")),l=void 0===a?void 0:a.substring(a.indexOf(":")+1),h=await c._connectToDaemonRpc(u,o,l,t,n,s);h.process=c.process,this.isResolved=!0,r(h)}})),c.process.stderr.on("data",(function(e){o.getLogLevel()>=2&&console.error(e)})),c.process.on("exit",(function(e){this.isResolved||i(new Error("monerod process terminated with exit code "+e+(l?":\n\n"+l:"")))})),c.process.on("error",(function(t){t.message.indexOf("ENOENT")>=0&&i(new Error("monerod does not exist at path '"+e[0]+"'")),this.isResolved||i(t)})),c.process.on("uncaughtException",(function(e,t){console.error("Uncaught exception in monerod process: "+e.message),console.error(t),i(e)}))}))}getProcess(){return this.process}async stopProcess(e){if(void 0===this.process)throw new v("MoneroDaemonRpc instance not created from new process");let t=a.copyArray(this.getListeners());for(let e of t)await this.removeListener(e);return a.killProcess(this.process,e?"sigkill":void 0)}async addListener(e){i(e instanceof m,"Listener must be instance of MoneroDaemonListener"),this.listeners.push(e),this._refreshListening()}async removeListener(e){i(e instanceof m,"Listener must be instance of MoneroDaemonListener");let t=this.listeners.indexOf(e);if(!(t>-1))throw new v("Listener is not registered with daemon");this.listeners.splice(t,1),this._refreshListening()}getListeners(){return this.listeners}async getRpcConnection(){return this.rpc}async isConnected(){try{return await this.getVersion(),!0}catch(e){return!1}}async getVersion(){let e=await this.rpc.sendJsonRequest("get_version");return O._checkResponseStatus(e.result),new P(e.result.version,e.result.release)}async isTrusted(){let e=await this.rpc.sendPathRequest("get_height");return O._checkResponseStatus(e),!e.untrusted}async getHeight(){let e=await this.rpc.sendJsonRequest("get_block_count");return O._checkResponseStatus(e.result),e.result.count}async getBlockHash(e){return(await this.rpc.sendJsonRequest("on_get_block_hash",[e])).result}async getBlockTemplate(e,t){i(e&&"string"==typeof e,"Must specify wallet address to be mined to");let r=await this.rpc.sendJsonRequest("get_block_template",{wallet_address:e,reserve_size:t});return O._checkResponseStatus(r.result),O._convertRpcBlockTemplate(r.result)}async getLastBlockHeader(){let e=await this.rpc.sendJsonRequest("get_last_block_header");return O._checkResponseStatus(e.result),O._convertRpcBlockHeader(e.result.block_header)}async getBlockHeaderByHash(e){let t=await this.rpc.sendJsonRequest("get_block_header_by_hash",{hash:e});return O._checkResponseStatus(t.result),O._convertRpcBlockHeader(t.result.block_header)}async getBlockHeaderByHeight(e){let t=await this.rpc.sendJsonRequest("get_block_header_by_height",{height:e});return O._checkResponseStatus(t.result),O._convertRpcBlockHeader(t.result.block_header)}async getBlockHeadersByRange(e,t){let r=await this.rpc.sendJsonRequest("get_block_headers_range",{start_height:e,end_height:t});O._checkResponseStatus(r.result);let i=[];for(let e of r.result.headers)i.push(O._convertRpcBlockHeader(e));return i}async getBlockByHash(e){let t=await this.rpc.sendJsonRequest("get_block",{hash:e});return O._checkResponseStatus(t.result),O._convertRpcBlock(t.result)}async getBlockByHeight(e){let t=await this.rpc.sendJsonRequest("get_block",{height:e});return O._checkResponseStatus(t.result),O._convertRpcBlock(t.result)}async getBlocksByHeight(e){let t=await this.rpc.sendBinaryRequest("get_blocks_by_height.bin",{heights:e}),r=await R.binaryBlocksToJson(t);O._checkResponseStatus(r),i.equal(r.txs.length,r.blocks.length);let n=[];for(let t=0;t0,"Must provide an array of transaction hashes"),i(void 0===t||"boolean"==typeof t,"Prune must be a boolean or undefined");let r=await this.rpc.sendPathRequest("get_transactions",{txs_hashes:e,decode_as_json:!0,prune:t});try{O._checkResponseStatus(r)}catch(e){if(e.message.indexOf("Failed to parse hex representation of transaction hash")>=0)throw new v("Invalid transaction hash");throw e}let n=[];if(r.txs)for(let e=0;e=0,"Height must be an integer >= 0"),void 0===t?t=await this.getHeight():i(t>=0,"Count must be an integer >= 0");let r=await this.rpc.sendJsonRequest("get_coinbase_tx_sum",{height:e,count:t});O._checkResponseStatus(r.result);let a=new w;return a.setEmissionSum(new n(r.result.emission_amount)),a.setFeeSum(new n(r.result.fee_amount)),a}async getFeeEstimate(e){let t=await this.rpc.sendJsonRequest("get_fee_estimate",{grace_blocks:e});O._checkResponseStatus(t.result);let r=new y;r.setFee(new n(t.result.fee));let i=[];for(let e=0;e0))throw new v("Download limit must be an integer greater than 0");return(await this._setBandwidthLimits(e,0))[0]}async resetDownloadLimit(){return(await this._setBandwidthLimits(-1,0))[0]}async getUploadLimit(){return(await this._getBandwidthLimits())[1]}async setUploadLimit(e){if(-1==e)return await this.resetUploadLimit();if(!(a.isInt(e)&&e>0))throw new v("Upload limit must be an integer greater than 0");return(await this._setBandwidthLimits(0,e))[1]}async resetUploadLimit(){return(await this._setBandwidthLimits(0,-1))[1]}async getPeers(){let e=await this.rpc.sendJsonRequest("get_connections");O._checkResponseStatus(e.result);let t=[];if(!e.result.connections)return t;for(let r of e.result.connections)t.push(O._convertRpcConnection(r));return t}async getKnownPeers(){let e=await this.rpc.sendPathRequest("get_peer_list");O._checkResponseStatus(e);let t=[];if(e.gray_list)for(let r of e.gray_list){let e=O._convertRpcPeer(r);e.setIsOnline(!1),t.push(e)}if(e.white_list)for(let r of e.white_list){let e=O._convertRpcPeer(r);e.setIsOnline(!0),t.push(e)}return t}async setOutgoingPeerLimit(e){if(!(a.isInt(e)&&e>=0))throw new v("Outgoing peer limit must be >= 0");let t=await this.rpc.sendPathRequest("out_peers",{out_peers:e});O._checkResponseStatus(t)}async setIncomingPeerLimit(e){if(!(a.isInt(e)&&e>=0))throw new v("Incoming peer limit must be >= 0");let t=await this.rpc.sendPathRequest("in_peers",{in_peers:e});O._checkResponseStatus(t)}async getPeerBans(){let e=await this.rpc.sendJsonRequest("get_bans");O._checkResponseStatus(e.result);let t=[];for(let r of e.result.bans){let e=new c;e.setHost(r.host),e.setIp(r.ip),e.setSeconds(r.seconds),t.push(e)}return t}async setPeerBans(e){let t=[];for(let r of e)t.push(O._convertToRpcBan(r));let r=await this.rpc.sendJsonRequest("set_bans",{bans:t});O._checkResponseStatus(r.result)}async startMining(e,t,r,n){i(e,"Must provide address to mine to"),i(a.isInt(t)&&t>0,"Number of threads must be an integer greater than 0"),i(void 0===r||"boolean"==typeof r),i(void 0===n||"boolean"==typeof n);let o=await this.rpc.sendPathRequest("start_mining",{miner_address:e,threads_count:t,do_background_mining:r,ignore_battery:n});O._checkResponseStatus(o)}async stopMining(){let e=await this.rpc.sendPathRequest("stop_mining");O._checkResponseStatus(e)}async getMiningStatus(){let e=await this.rpc.sendPathRequest("mining_status");return O._checkResponseStatus(e),O._convertRpcMiningStatus(e)}async submitBlocks(e){i(Array.isArray(e)&&e.length>0,"Must provide an array of mined block blobs to submit");let t=await this.rpc.sendJsonRequest("submit_block",e);O._checkResponseStatus(t.result)}async pruneBlockchain(e){let t=await this.rpc.sendJsonRequest("prune_blockchain",{check:e},0);O._checkResponseStatus(t.result);let r=new N;return r.setIsPruned(t.result.pruned),r.setPruningSeed(t.result.pruning_seed),r}async checkForUpdate(){let e=await this.rpc.sendPathRequest("update",{command:"check"});return O._checkResponseStatus(e),O._convertRpcUpdateCheckResult(e)}async downloadUpdate(e){let t=await this.rpc.sendPathRequest("update",{command:"download",path:e});return O._checkResponseStatus(t),O._convertRpcUpdateDownloadResult(t)}async stop(){let e=await this.rpc.sendPathRequest("stop_daemon");O._checkResponseStatus(e)}async waitForNextBlockHeader(){let e=this;return new Promise((async function(t){await e.addListener(new class extends m{async onBlockHeader(r){await e.removeListener(this),t(r)}})}))}async getTx(){return super.getTx(...arguments)}async getTxHex(){return super.getTxHex(...arguments)}async getKeyImageSpentStatus(){return super.getKeyImageSpentStatus(...arguments)}async setPeerBan(){return super.setPeerBan(...arguments)}async submitBlock(){return super.submitBlock(...arguments)}_refreshListening(){null==this.pollListener&&this.listeners.length&&(this.pollListener=new C(this)),void 0!==this.pollListener&&this.pollListener.setIsPolling(this.listeners.length>0)}async _getBandwidthLimits(){let e=await this.rpc.sendPathRequest("get_limit");return O._checkResponseStatus(e),[e.limit_down,e.limit_up]}async _setBandwidthLimits(e,t){void 0===e&&(e=0),void 0===t&&(t=0);let r=await this.rpc.sendPathRequest("set_limit",{limit_down:e,limit_up:t});return O._checkResponseStatus(r),[r.limit_down,r.limit_up]}async _getMaxBlocks(e,t,r){void 0===e&&(e=0),void 0===t&&(t=await this.getHeight()-1),void 0===r&&(r=O.MAX_REQ_SIZE);let n=0,a=e-1;for(;nr)break;n+=e.getSize(),a++}return a>=e?await this.getBlocksByRange(e,a):[]}async _getBlockHeaderByHeightCached(e,t){let r=this.cachedHeaders[e];if(r)return r;let i=Math.min(t,e+O.NUM_HEADERS_PER_REQ-1),n=await this.getBlockHeadersByRange(e,i);for(let e of n)this.cachedHeaders[e.getHeight()]=e;return this.cachedHeaders[e]}static _normalizeConfig(e,t,r,i,n,a){let o;if("string"==typeof e)o={uri:e,username:t,password:r,proxyToWorker:a,rejectUnauthorized:i,pollInterval:n};else{if("object"!=typeof e)throw new v("Invalid configuration to create rpc client; must be string, object, or MoneroRpcConnection");if(t||r||i||n||a)throw new v("Can provide config object or params or new MoneroDaemonRpc(...) but not both");o=e instanceof M?Object.assign({},e.getConfig()):Object.assign({},e)}return o.server&&(o=Object.assign(o,new M(o.server).getConfig()),delete o.server),void 0===o.pollInterval&&(o.pollInterval=5e3),void 0===o.proxyToWorker&&(o.proxyToWorker=!0),o}static _checkResponseStatus(e){if("OK"!==e.status)throw new v(e.status)}static _convertRpcBlockHeader(e){if(!e)return;let t=new h;for(let r of Object.keys(e)){let i=e[r];"block_size"===r?a.safeSet(t,t.getSize,t.setSize,i):"depth"===r?a.safeSet(t,t.getDepth,t.setDepth,i):"difficulty"===r||"cumulative_difficulty"===r||"difficulty_top64"===r||"cumulative_difficulty_top64"===r||("wide_difficulty"===r?t.setDifficulty(a.reconcile(t.getDifficulty(),O._prefixedHexToBI(i))):"wide_cumulative_difficulty"===r?t.setCumulativeDifficulty(a.reconcile(t.getCumulativeDifficulty(),O._prefixedHexToBI(i))):"hash"===r?a.safeSet(t,t.getHash,t.setHash,i):"height"===r?a.safeSet(t,t.getHeight,t.setHeight,i):"major_version"===r?a.safeSet(t,t.getMajorVersion,t.setMajorVersion,i):"minor_version"===r?a.safeSet(t,t.getMinorVersion,t.setMinorVersion,i):"nonce"===r?a.safeSet(t,t.getNonce,t.setNonce,i):"num_txes"===r?a.safeSet(t,t.getNumTxs,t.setNumTxs,i):"orphan_status"===r?a.safeSet(t,t.getOrphanStatus,t.setOrphanStatus,i):"prev_hash"===r||"prev_id"===r?a.safeSet(t,t.getPrevHash,t.setPrevHash,i):"reward"===r?a.safeSet(t,t.getReward,t.setReward,n.parse(i)):"timestamp"===r?a.safeSet(t,t.getTimestamp,t.setTimestamp,i):"block_weight"===r?a.safeSet(t,t.getWeight,t.setWeight,i):"long_term_weight"===r?a.safeSet(t,t.getLongTermWeight,t.setLongTermWeight,i):"pow_hash"===r?a.safeSet(t,t.getPowHash,t.setPowHash,""===i?void 0:i):"tx_hashes"===r||"miner_tx"===r||("miner_tx_hash"===r?t.setMinerTxHash(i):console.log("WARNING: ignoring unexpected block header field: '"+r+"': "+i)))}return t}static _convertRpcBlock(e){let t=new l(O._convertRpcBlockHeader(e.block_header?e.block_header:e));t.setHex(e.blob),t.setTxHashes(void 0===e.tx_hashes?[]:e.tx_hashes);let r=e.json?JSON.parse(e.json).miner_tx:e.miner_tx,i=new A;return t.setMinerTx(i),i.setIsConfirmed(!0),i.setIsMinerTx(!0),O._convertRpcTx(r,i),t}static _convertRpcTx(e,t){if(void 0===e)return;let r;void 0===t&&(t=new A);for(let i of Object.keys(e)){let o=e[i];"tx_hash"===i||"id_hash"===i?a.safeSet(t,t.getHash,t.setHash,o):"block_timestamp"===i?(r||(r=new h),a.safeSet(r,r.getTimestamp,r.setTimestamp,o)):"block_height"===i?(r||(r=new h),a.safeSet(r,r.getHeight,r.setHeight,o)):"last_relayed_time"===i?a.safeSet(t,t.getLastRelayedTimestamp,t.setLastRelayedTimestamp,o):"receive_time"===i||"received_timestamp"===i?a.safeSet(t,t.getReceivedTimestamp,t.setReceivedTimestamp,o):"confirmations"===i?a.safeSet(t,t.getNumConfirmations,t.setNumConfirmations,o):"in_pool"===i?(a.safeSet(t,t.isConfirmed,t.setIsConfirmed,!o),a.safeSet(t,t.inTxPool,t.setInTxPool,o)):"double_spend_seen"===i?a.safeSet(t,t.isDoubleSpendSeen,t.setIsDoubleSpend,o):"version"===i?a.safeSet(t,t.getVersion,t.setVersion,o):"extra"===i?"string"==typeof o?console.log("WARNING: extra field as string not being asigned to int[]: "+i+": "+o):a.safeSet(t,t.getExtra,t.setExtra,o):"vin"===i?1===o.length&&o[0].gen||t.setInputs(o.map((e=>O._convertRpcOutput(e,t)))):"vout"===i?t.setOutputs(o.map((e=>O._convertRpcOutput(e,t)))):"rct_signatures"===i?(a.safeSet(t,t.getRctSignatures,t.setRctSignatures,o),o.txnFee&&a.safeSet(t,t.getFee,t.setFee,n.parse(o.txnFee))):"rctsig_prunable"===i?a.safeSet(t,t.getRctSigPrunable,t.setRctSigPrunable,o):"unlock_time"===i?a.safeSet(t,t.getUnlockTime,t.setUnlockTime,o):"as_json"===i||"tx_json"===i||("as_hex"===i||"tx_blob"===i?a.safeSet(t,t.getFullHex,t.setFullHex,o||void 0):"blob_size"===i?a.safeSet(t,t.getSize,t.setSize,o):"weight"===i?a.safeSet(t,t.getWeight,t.setWeight,o):"fee"===i?a.safeSet(t,t.getFee,t.setFee,n.parse(o)):"relayed"===i?a.safeSet(t,t.isRelayed,t.setIsRelayed,o):"output_indices"===i?a.safeSet(t,t.getOutputIndices,t.setOutputIndices,o):"do_not_relay"===i?a.safeSet(t,t.getRelay,t.setRelay,!o):"kept_by_block"===i?a.safeSet(t,t.isKeptByBlock,t.setIsKeptByBlock,o):"signatures"===i?a.safeSet(t,t.getSignatures,t.setSignatures,o):"last_failed_height"===i?0===o?a.safeSet(t,t.isFailed,t.setIsFailed,!1):(a.safeSet(t,t.isFailed,t.setIsFailed,!0),a.safeSet(t,t.getLastFailedHeight,t.setLastFailedHeight,o)):"last_failed_id_hash"===i?o===O.DEFAULT_ID?a.safeSet(t,t.isFailed,t.setIsFailed,!1):(a.safeSet(t,t.isFailed,t.setIsFailed,!0),a.safeSet(t,t.getLastFailedHash,t.setLastFailedHash,o)):"max_used_block_height"===i?a.safeSet(t,t.getMaxUsedBlockHeight,t.setMaxUsedBlockHeight,o):"max_used_block_id_hash"===i?a.safeSet(t,t.getMaxUsedBlockHash,t.setMaxUsedBlockHash,o):"prunable_hash"===i?a.safeSet(t,t.getPrunableHash,t.setPrunableHash,o||void 0):"prunable_as_hex"===i?a.safeSet(t,t.getPrunableHex,t.setPrunableHex,o||void 0):"pruned_as_hex"===i?a.safeSet(t,t.getPrunedHex,t.setPrunedHex,o||void 0):console.log("WARNING: ignoring unexpected field in rpc tx: "+i+": "+o))}if(r&&t.setBlock(new l(r).setTxs([t])),t.getBlock()&&void 0!==t.getBlock().getHeight()&&t.getBlock().getHeight()===t.getBlock().getTimestamp()&&(t.setBlock(void 0),t.setIsConfirmed(!1)),t.isConfirmed()?(a.safeSet(t,t.isRelayed,t.setIsRelayed,!0),a.safeSet(t,t.getRelay,t.setRelay,!0),a.safeSet(t,t.isFailed,t.setIsFailed,!1)):t.setNumConfirmations(0),void 0===t.isFailed()&&t.setIsFailed(!1),t.getOutputIndices()&&t.getOutputs()){i.equal(t.getOutputs().length,t.getOutputIndices().length);for(let e=0;e0&&console.error("Ignoring non-empty 'overview' field (not implemented): "+e)}catch(t){console.error("Failed to parse 'overview' field: "+e+": "+t.message)}}else"credits"===r?t.setCredits(n.parse(i)):"top_hash"===r?t.setTopBlockHash(""===i?void 0:i):"untrusted"===r||console.log("WARNING: ignoring unexpected field in sync info: "+r+": "+i)}return t}static _convertRpcHardForkInfo(e){let t=new _;for(let r of Object.keys(e)){let i=e[r];"earliest_height"===r?t.setEarliestHeight(i):"enabled"===r?t.setIsEnabled(i):"state"===r?t.setState(i):"status"===r||"untrusted"===r||("threshold"===r?t.setThreshold(i):"version"===r?t.setVersion(i):"votes"===r?t.setNumVotes(i):"voting"===r?t.setVoting(i):"window"===r?t.setWindow(i):"credits"===r?t.setCredits(n.parse(i)):"top_hash"===r?t.setTopBlockHash(""===i?void 0:i):console.log("WARNING: ignoring unexpected field in hard fork info: "+r+": "+i))}return t}static _convertRpcConnectionSpan(e){let t=new MoneroConnectionSpan;for(let r of Object.keys(e)){let i=e[r];"connection_id"===r?t.setConnectionId(i):"nblocks"===r?t.setNumBlocks(i):"rate"===r?t.setRate(i):"remote_address"===r?""!==i&&t.setRemoteAddress(i):"size"===r?t.setSize(i):"speed"===r?t.setSpeed(i):"start_block_height"===r?t.setStartHeight(i):console.log("WARNING: ignoring unexpected field in daemon connection span: "+r+": "+i)}return t}static _convertRpcOutputHistogramEntry(e){let t=new x;for(let r of Object.keys(e)){let i=e[r];"amount"===r?t.setAmount(n.parse(i)):"total_instances"===r?t.setNumInstances(i):"unlocked_instances"===r?t.setNumUnlockedInstances(i):"recent_instances"===r?t.setNumRecentInstances(i):console.log("WARNING: ignoring unexpected field in output histogram: "+r+": "+i)}return t}static _convertRpcSubmitTxResult(e){i(e);let t=new I;for(let r of Object.keys(e)){let i=e[r];"double_spend"===r?t.setIsDoubleSpend(i):"fee_too_low"===r?t.setIsFeeTooLow(i):"invalid_input"===r?t.setHasInvalidInput(i):"invalid_output"===r?t.setHasInvalidOutput(i):"too_few_outputs"===r?t.setHasTooFewOutputs(i):"low_mixin"===r?t.setIsMixinTooLow(i):"not_relayed"===r?t.setIsRelayed(!i):"overspend"===r?t.setIsOverspend(i):"reason"===r?t.setReason(""===i?void 0:i):"too_big"===r?t.setIsTooBig(i):"sanity_check_failed"===r?t.setSanityCheckFailed(i):"credits"===r?t.setCredits(n.parse(i)):"status"===r||"untrusted"===r||("top_hash"===r?t.setTopBlockHash(""===i?void 0:i):"tx_extra_too_big"===r?t.setIsTxExtraTooBig(i):console.log("WARNING: ignoring unexpected field in submit tx hex result: "+r+": "+i))}return t}static _convertRpcTxPoolStats(e){i(e);let t=new T;for(let r of Object.keys(e)){let i=e[r];if("bytes_max"===r)t.setBytesMax(i);else if("bytes_med"===r)t.setBytesMed(i);else if("bytes_min"===r)t.setBytesMin(i);else if("bytes_total"===r)t.setBytesTotal(i);else if("histo_98pc"===r)t.setHisto98pc(i);else if("num_10m"===r)t.setNum10m(i);else if("num_double_spends"===r)t.setNumDoubleSpends(i);else if("num_failing"===r)t.setNumFailing(i);else if("num_not_relayed"===r)t.setNumNotRelayed(i);else if("oldest"===r)t.setOldestTimestamp(i);else if("txs_total"===r)t.setNumTxs(i);else if("fee_total"===r)t.setFeeTotal(n.parse(i));else if("histo"===r){t.setHisto(new Map);for(let e of i)t.getHisto().set(e.bytes,e.txs)}else console.log("WARNING: ignoring unexpected field in tx pool stats: "+r+": "+i)}return 0===t.getHisto98pc()&&t.setHisto98pc(void 0),0===t.getNumTxs()&&(t.setBytesMin(void 0),t.setBytesMed(void 0),t.setBytesMax(void 0),t.setHisto98pc(void 0),t.setOldestTimestamp(void 0)),t}static _convertRpcAltChain(e){i(e);let t=new u;for(let r of Object.keys(e)){let i=e[r];"block_hash"===r||"difficulty"===r||"difficulty_top64"===r||("wide_difficulty"===r?t.setDifficulty(a.reconcile(t.getDifficulty(),O._prefixedHexToBI(i))):"height"===r?t.setHeight(i):"length"===r?t.setLength(i):"block_hashes"===r?t.setBlockHashes(i):"main_chain_parent_block"===r?t.setMainChainParentBlockHash(i):console.log("WARNING: ignoring unexpected field in alternative chain: "+r+": "+i))}return t}static _convertRpcPeer(e){i(e);let t=new j;for(let r of Object.keys(e)){let i=e[r];"host"===r?t.setHost(i):"id"===r?t.setId(""+i):"ip"===r||("last_seen"===r?t.setLastSeenTimestamp(i):"port"===r?t.setPort(i):"rpc_port"===r?t.setRpcPort(i):"pruning_seed"===r?t.setPruningSeed(i):"rpc_credits_per_hash"===r?t.setRpcCreditsPerHash(n.parse(i)):console.log("WARNING: ignoring unexpected field in rpc peer: "+r+": "+i))}return t}static _convertRpcConnection(e){let t=new j;t.setIsOnline(!0);for(let r of Object.keys(e)){let i=e[r];"address"===r?t.setAddress(i):"avg_download"===r?t.setAvgDownload(i):"avg_upload"===r?t.setAvgUpload(i):"connection_id"===r?t.setId(i):"current_download"===r?t.setCurrentDownload(i):"current_upload"===r?t.setCurrentUpload(i):"height"===r?t.setHeight(i):"host"===r?t.setHost(i):"ip"===r||("incoming"===r?t.setIsIncoming(i):"live_time"===r?t.setLiveTime(i):"local_ip"===r?t.setIsLocalIp(i):"localhost"===r?t.setIsLocalHost(i):"peer_id"===r?t.setId(i):"port"===r?t.setPort(parseInt(i)):"rpc_port"===r?t.setRpcPort(i):"recv_count"===r?t.setNumReceives(i):"recv_idle_time"===r?t.setReceiveIdleTime(i):"send_count"===r?t.setNumSends(i):"send_idle_time"===r?t.setSendIdleTime(i):"state"===r?t.setState(i):"support_flags"===r?t.setNumSupportFlags(i):"pruning_seed"===r?t.setPruningSeed(i):"rpc_credits_per_hash"===r?t.setRpcCreditsPerHash(n.parse(i)):"address_type"===r?t.setType(i):console.log("WARNING: ignoring unexpected field in peer: "+r+": "+i))}return t}static _convertToRpcBan(e){let t={};return t.host=e.getHost(),t.ip=e.getIp(),t.ban=e.isBanned(),t.seconds=e.getSeconds(),t}static _convertRpcMiningStatus(e){let t=new E;return t.setIsActive(e.active),t.setSpeed(e.speed),t.setNumThreads(e.threads_count),e.active&&(t.setAddress(e.address),t.setIsBackground(e.is_background_mining_enabled)),t}static _convertRpcUpdateCheckResult(e){i(e);let t=new MoneroDaemonUpdateCheckResult;for(let r of Object.keys(e)){let i=e[r];"auto_uri"===r?t.setAutoUri(i):"hash"===r?t.setHash(i):"path"===r||"status"===r||("update"===r?t.setIsUpdateAvailable(i):"user_uri"===r?t.setUserUri(i):"version"===r?t.setVersion(i):"untrusted"===r||console.log("WARNING: ignoring unexpected field in rpc check update result: "+r+": "+i))}return""===t.getAutoUri()&&t.setAutoUri(void 0),""===t.getUserUri()&&t.setUserUri(void 0),""===t.getVersion()&&t.setVersion(void 0),""===t.getHash()&&t.setHash(void 0),t}static _convertRpcUpdateDownloadResult(e){let t=new MoneroDaemonUpdateDownloadResult(O._convertRpcUpdateCheckResult(e));return t.setDownloadPath(e.path),""===t.getDownloadPath()&&t.setDownloadPath(void 0),t}static _prefixedHexToBI(e){return i("0x"===e.substring(0,2)),n.parse(e,16)}}O.DEFAULT_ID="0000000000000000000000000000000000000000000000000000000000000000",O.MAX_REQ_SIZE="3000000",O.NUM_HEADERS_PER_REQ="750";class B extends d{static async connect(e){let t=a.getUUID();return e=Object.assign({},e,{proxyToWorker:!1}),await o.invokeWorker(t,"connectDaemonRpc",[e]),new B(t,await o.getWorker())}constructor(e,t){super(),this.daemonId=e,this.worker=t,this.wrappedListeners=[]}async getProcess(){}async stopProcess(e){if(void 0===this.process)throw new v("MoneroDaemonRpcProxy instance not created from new process");let t=a.copyArray(this.getListeners());for(let e of t)await this.removeListener(e);return a.killProcess(this.process,e?"sigkill":void 0)}async addListener(e){let t=new z(e),r=t.getId();return o.WORKER_OBJECTS[this.daemonId].callbacks["onBlockHeader_"+r]=[t.onBlockHeader,t],this.wrappedListeners.push(t),this._invokeWorker("daemonAddListener",[r])}async removeListener(e){for(let t=0;t{const i=r(69282);class n{static validate(e){i(0===e||1===e||2===e||3===e,"Connection type is invalid: "+e)}static isValid(e){return 0===e||1===e||2===e||3}}n.INVALID=0,n.IPV4=1,n.IPV6=2,n.TOR=3,n.I2P=4,e.exports=n},24652:(e,t,r)=>{const i=r(63055).BigInteger;e.exports=class{constructor(e){void 0===(e=Object.assign({},e)).difficulty||e.difficulty instanceof i||(e.difficulty=i.parse(e.difficulty)),this.state=e}toJson(){let e=Object.assign({},this.state);return this.getDifficulty()&&(e.difficulty=this.getDifficulty().toString()),e}getBlockHashes(e){return this.state.blockHashes}setBlockHashes(e){return this.state.blockHashes=e,this}getDifficulty(){return this.state.difficulty}setDifficulty(e){return this.state.difficulty=e,this}getHeight(){return this.state.height}setHeight(e){return this.state.height=e,this}getLength(){return this.state.length}setLength(e){return this.state.length=e,this}getMainChainParentBlockHash(){return this.state.mainChainParentBlockHash}setMainChainParentBlockHash(e){return this.state.mainChainParentBlockHash=e,this}}},1305:e=>{e.exports=class{constructor(e){this.state=Object.assign({},e)}toJson(){return Object.assign({},this.state)}getHost(){return this.state.host}setHost(e){return this.state.host=e,this}getIp(){return this.state.ip}setIp(e){return this.state.ip=e,this}isBanned(){return this.state.isBanned}setIsBanned(e){return this.state.isBanned=e,this}getSeconds(){return this.state.seconds}setSeconds(e){return this.state.seconds=e,this}}},36242:(e,t,r)=>{const i=r(69282),n=r(93444),a=r(29457),o=r(2624),s=r(31857),u=r(18489);class c extends a{constructor(e,t){if(super(e),!(e=this.state).minerTx||e.minerTx instanceof o||(e.minerTx=new o(e.minerTx).setBlock(this)),e.txs)for(let r=0;r{const i=r(69282),n=r(63055).BigInteger,a=r(93444);class o{constructor(e){if(e)if(e instanceof o)e=e.toJson();else{if("object"!=typeof e)throw new MoneroError("state must be a MoneroBlockHeader or JavaScript object");e=Object.assign({},e)}else e={};this.state=e,void 0===e.difficulty||e.difficulty instanceof n||(e.difficulty=n.parse(e.difficulty)),void 0===e.cumulativeDifficulty||e.cumulativeDifficulty instanceof n||(e.cumulativeDifficulty=n.parse(e.cumulativeDifficulty)),void 0===e.reward||e.reward instanceof n||(e.reward=n.parse(e.reward))}copy(){return new o(this)}toJson(){let e=Object.assign({},this.state);return this.getDifficulty()&&(e.difficulty=this.getDifficulty().toString()),this.getCumulativeDifficulty()&&(e.cumulativeDifficulty=this.getCumulativeDifficulty().toString()),this.getReward()&&(e.reward=this.getReward().toString()),e}getHash(){return this.state.hash}setHash(e){return this.state.hash=e,this}getHeight(){return this.state.height}setHeight(e){return this.state.height=e,this}getTimestamp(){return this.state.timestamp}setTimestamp(e){return this.state.timestamp=e,this}getSize(){return this.state.size}setSize(e){return this.state.size=e,this}getWeight(){return this.state.weight}setWeight(e){return this.state.weight=e,this}getLongTermWeight(){return this.state.longTermWeight}setLongTermWeight(e){return this.state.longTermWeight=e,this}getDepth(){return this.state.depth}setDepth(e){return this.state.depth=e,this}getDifficulty(){return this.state.difficulty}setDifficulty(e){return this.state.difficulty=e,this}getCumulativeDifficulty(){return this.state.cumulativeDifficulty}setCumulativeDifficulty(e){return this.state.cumulativeDifficulty=e,this}getMajorVersion(){return this.state.majorVersion}setMajorVersion(e){return this.state.majorVersion=e,this}getMinorVersion(){return this.state.minorVersion}setMinorVersion(e){return this.state.minorVersion=e,this}getNonce(){return this.state.nonce}setNonce(e){return this.state.nonce=e,this}getMinerTxHash(){return this.state.minerTxHash}setMinerTxHash(e){return this.state.minerTxHash=e,this}getNumTxs(){return this.state.numTxs}setNumTxs(e){return this.state.numTxs=e,this}getOrphanStatus(){return this.state.orphanStatus}setOrphanStatus(e){return this.state.orphanStatus=e,this}getPrevHash(){return this.state.prevHash}setPrevHash(e){return this.state.prevHash=e,this}getReward(){return this.state.reward}setReward(e){return this.state.reward=e,this}getPowHash(){return this.state.powHash}setPowHash(e){return this.state.powHash=e,this}merge(e){return i(e instanceof o),this===e||(this.setHash(a.reconcile(this.getHash(),e.getHash())),this.setHeight(a.reconcile(this.getHeight(),e.getHeight(),{resolveMax:!0})),this.setTimestamp(a.reconcile(this.getTimestamp(),e.getTimestamp(),{resolveMax:!0})),this.setSize(a.reconcile(this.getSize(),e.getSize())),this.setWeight(a.reconcile(this.getWeight(),e.getWeight())),this.setDepth(a.reconcile(this.getDepth(),e.getDepth())),this.setDifficulty(a.reconcile(this.getDifficulty(),e.getDifficulty())),this.setCumulativeDifficulty(a.reconcile(this.getCumulativeDifficulty(),e.getCumulativeDifficulty())),this.setMajorVersion(a.reconcile(this.getMajorVersion(),e.getMajorVersion())),this.setMinorVersion(a.reconcile(this.getMinorVersion(),e.getMinorVersion())),this.setNonce(a.reconcile(this.getNonce(),e.getNonce())),this.setMinerTxHash(a.reconcile(this.getMinerTxHash(),e.getMinerTxHash())),this.setNumTxs(a.reconcile(this.getNumTxs(),e.getNumTxs())),this.setOrphanStatus(a.reconcile(this.getOrphanStatus(),e.getOrphanStatus())),this.setPrevHash(a.reconcile(this.getPrevHash(),e.getPrevHash())),this.setReward(a.reconcile(this.getReward(),e.getReward())),this.setPowHash(a.reconcile(this.getPowHash(),e.getPowHash()))),this}toString(e=0){let t="";return t+=a.kvLine("Hash",this.getHash(),e),t+=a.kvLine("Height",this.getHeight(),e),t+=a.kvLine("Timestamp",this.getTimestamp(),e),t+=a.kvLine("Size",this.getSize(),e),t+=a.kvLine("Weight",this.getWeight(),e),t+=a.kvLine("Depth",this.getDepth(),e),t+=a.kvLine("Difficulty",this.getDifficulty(),e),t+=a.kvLine("Cumulative difficulty",this.getCumulativeDifficulty(),e),t+=a.kvLine("Major version",this.getMajorVersion(),e),t+=a.kvLine("Minor version",this.getMinorVersion(),e),t+=a.kvLine("Nonce",this.getNonce(),e),t+=a.kvLine("Miner tx hash",this.getMinerTxHash(),e),t+=a.kvLine("Num txs",this.getNumTxs(),e),t+=a.kvLine("Orphan status",this.getOrphanStatus(),e),t+=a.kvLine("Prev hash",this.getPrevHash(),e),t+=a.kvLine("Reward",this.getReward(),e),t+=a.kvLine("Pow hash",this.getPowHash(),e),"\n"===t[t.length-1]?t.slice(0,t.length-1):t}}e.exports=o},91350:(e,t,r)=>{const i=r(63055).BigInteger;e.exports=class{constructor(e){e=Object.assign({},e),this.state=e,void 0===e.expectedReward||e.expectedReward instanceof i||(e.expectedReward=i.parse(e.expectedReward)),void 0===e.difficulty||e.difficulty instanceof i||(e.difficulty=i.parse(e.difficulty))}toJson(){let e=Object.assign({},this.state);return this.getExpectedReward()&&(e.expectedReward=this.getExpectedReward().toString()),this.getDifficulty()&&(e.difficulty=this.getDifficulty().toString()),e}toJson(){let e=Object.assign({},this.state);return e.expectedReward&&(e.expectedReward=e.expectedReward.toString()),e.difficulty&&(e.difficulty=e.difficulty.toString()),e}getBlockTemplateBlob(){return this.state.blockTemplateBlob}setBlockTemplateBlob(e){return this.state.blockTemplateBlob=e,this}getBlockHashingBlob(){return this.state.blockHashingBlob}setBlockHashingBlob(e){return this.state.blockHashingBlob=e,this}getDifficulty(){return this.state.difficulty}setDifficulty(e){return this.state.difficulty=e,this}getExpectedReward(){return this.state.expectedReward}setExpectedReward(e){return this.state.expectedReward=e,this}getHeight(){return this.state.height}setHeight(e){return this.state.height=e,this}getPrevHash(){return this.state.prevId}setPrevHash(e){return this.state.prevId=e,this}getReservedOffset(){return this.state.reservedOffset}setReservedOffset(e){return this.state.reservedOffset=e,this}getSeedHeight(){return this.state.height}setSeedHeight(e){return this.state.seedHeight=e,this}getSeedHash(){return this.state.seedHash}setSeedHash(e){return this.state.seedHash=e,this}getNextSeedHash(){return this.state.nextSeedHash}setNextSeedHash(e){return this.state.nextSeedHash=e,this}}},84373:e=>{e.exports=class{constructor(e){this.state=Object.assign({},e)}toJson(){return Object.assign({},this.state)}getConnectionId(){return this.state.connectionId}setConnectionId(e){return this.state.connectionId=e,this}getNumBlocks(){return this.state.numBlocks}setNumBlocks(e){return this.state.numBlocks=e,this}getRemoteAddress(){return this.state.remoteAddress}setRemoteAddress(e){return this.state.remoteAddress=e,this}getRate(){return this.state.rate}setRate(e){return this.state.rate=e,this}getSpeed(){return this.state.speed}setSpeed(e){return this.state.speed=e,this}getSize(){return this.state.size}setSize(e){return this.state.size=e,this}getStartHeight(){return this.state.startHeight}setStartHeight(e){return this.state.startHeight=e,this}}},88988:(e,t,r)=>{const i=r(63055).BigInteger;e.exports=class{constructor(e){e=Object.assign({},e),this.state=e,void 0===e.difficulty||e.difficulty instanceof i||(e.difficulty=i.parse(e.difficulty)),void 0===e.cumulativeDifficulty||e.cumulativeDifficulty instanceof i||(e.cumulativeDifficulty=i.parse(e.cumulativeDifficulty)),void 0===e.credits||e.credits instanceof i||(e.credits=i.parse(e.credits))}toJson(){let e=Object.assign([],this.state);return e.difficulty&&(e.difficulty=e.difficulty.toString()),e.cumulativeDifficulty&&(e.cumulativeDifficulty=e.cumulativeDifficulty.toString()),e.credits&&(e.credits=e.credits.toString()),e}getVersion(){return this.state.version}setVersion(e){return this.state.version=e,this}getNumAltBlocks(){return this.state.numAltBlocks}setNumAltBlocks(e){return this.state.numAltBlocks=e,this}getBlockSizeLimit(){return this.state.blockSizeLimit}setBlockSizeLimit(e){return this.state.blockSizeLimit=e,this}getBlockSizeMedian(){return this.state.blockSizeMedian}setBlockSizeMedian(e){return this.state.blockSizeMedian=e,this}getBlockWeightLimit(){return this.state.blockWeightLimit}setBlockWeightLimit(e){return this.state.blockWeightLimit=e,this}getBlockWeightMedian(){return this.state.blockWeightMedian}setBlockWeightMedian(e){return this.state.blockWeightMedian=e,this}getBootstrapDaemonAddress(){return this.state.bootstrapDaemonAddress}setBootstrapDaemonAddress(e){return this.state.bootstrapDaemonAddress=e,this}getDifficulty(){return this.state.difficulty}setDifficulty(e){return this.state.difficulty=e,this}getCumulativeDifficulty(){return this.state.cumulativeDifficulty}setCumulativeDifficulty(e){return this.state.cumulativeDifficulty=e,this}getFreeSpace(){return this.state.freeSpace}setFreeSpace(e){return this.state.freeSpace=e,this}getNumOfflinePeers(){return this.state.numOfflinePeers}setNumOfflinePeers(e){return this.state.numOfflinePeers=e,this}getNumOnlinePeers(){return this.state.numOnlinePeers}setNumOnlinePeers(e){return this.state.numOnlinePeers=e,this}getHeight(){return this.state.height}setHeight(e){return this.state.height=e,this}getHeightWithoutBootstrap(){return this.state.heightWithoutBootstrap}setHeightWithoutBootstrap(e){return this.state.heightWithoutBootstrap=e,this}getNetworkType(){return this.state.networkType}setNetworkType(e){return this.state.networkType=e,this}isOffline(){return this.state.isOffline}setIsOffline(e){return this.state.isOffline=e,this}getNumIncomingConnections(){return this.state.numIncomingConnections}setNumIncomingConnections(e){return this.state.numIncomingConnections=e,this}getNumOutgoingConnections(){return this.state.numOutgoingConnections}setNumOutgoingConnections(e){return this.state.numOutgoingConnections=e,this}getNumRpcConnections(){return this.state.numRpcConnections}setNumRpcConnections(e){return this.state.numRpcConnections=e,this}getStartTimestamp(){return this.state.startTimestamp}setStartTimestamp(e){return this.state.startTimestamp=e,this}getAdjustedTimestamp(){return this.state.adjustedTimestamp}setAdjustedTimestamp(e){return this.state.adjustedTimestamp=e,this}getTarget(){return this.state.target}setTarget(e){return this.state.target=e,this}getTargetHeight(){return this.state.targetHeight}setTargetHeight(e){return this.state.targetHeight=e,this}getTopBlockHash(){return this.state.topBlockHash}setTopBlockHash(e){return this.state.topBlockHash=e,this}getNumTxs(){return this.state.numTxs}setNumTxs(e){return this.state.numTxs=e,this}getNumTxsPool(){return this.state.numTxsPool}setNumTxsPool(e){return this.state.numTxsPool=e,this}getWasBootstrapEverUsed(){return this.state.wasBootstrapEverUsed}setWasBootstrapEverUsed(e){return this.state.wasBootstrapEverUsed=e,this}getDatabaseSize(){return this.state.databaseSize}setDatabaseSize(e){return this.state.databaseSize=e,this}getUpdateAvailable(){return this.state.updateAvailable}setUpdateAvailable(e){return this.state.updateAvailable=e,this}getCredits(){return this.state.credits}setCredits(e){return this.state.credits=e,this}isBusySyncing(){return this.state.isBusySyncing}setIsBusySyncing(e){return this.state.isBusySyncing=e,this}isSynchronized(){return this.state.isSynchronized}setIsSynchronized(e){return this.state.isSynchronized=e,this}isRestricted(){return this.state.isRestricted}setIsRestricted(e){return this.state.isRestricted=e,this}}},3104:e=>{e.exports=class{async onBlockHeader(e){this.lastHeader=e}getLastBlockHeader(){return this.lastHeader}}},7666:(e,t,r)=>{const i=r(63055).BigInteger,n=r(84373),a=r(63374);e.exports=class{constructor(e){if((e=Object.assign({},e)).peers)for(let t=0;t{class t{constructor(e){this.state={},void 0!==e&&(assert(e instanceof t),this.setIsUpdateAvailable(e.isUpdateAvailable()),this.setVersion(e.getVersion()),this.setHash(e.getHash()),this.setAutoUri(e.getAutoUri()),this.setUserUri(e.getUserUri()))}isUpdateAvailable(){return this.state.isUpdateAvailable}setIsUpdateAvailable(e){return this.state.isUpdateAvailable=e,this}getVersion(){return this.state.version}setVersion(e){return this.state.version=e,this}getHash(){return this.state.hash}setHash(e){return this.state.hash=e,this}getAutoUri(){return this.state.autoUri}setAutoUri(e){return this.state.autoUri=e,this}getUserUri(){return this.state.userUri}setUserUri(e){return this.state.userUri=e,this}}e.exports=t},62230:(e,t,r)=>{const i=r(44531);e.exports=class extends i{constructor(e){super(e)}getDownloadPath(){return this.state.downloadPath}setDownloadPath(e){return this.state.downloadPath=e,this}}},90176:(e,t,r)=>{const i=r(63055).BigInteger,n=r(93444);class a{constructor(e){if(e)if(e instanceof a)this.state=e.toJson();else{if("object"!=typeof e)throw new MoneroError("state must be a MoneroFeeEstimate or JavaScript object");this.state=Object.assign({},e)}else this.state={};if(void 0===this.state.fee||this.state.fee instanceof i||(this.state.fee=i.parse(this.state.fee)),void 0!==this.state.fees)for(let e=0;e{const i=r(63055).BigInteger;e.exports=class{constructor(e){this.state=Object.assign({},e),void 0===this.state.credits||this.state.credits instanceof i||(this.state.credits=i.parse(this.state.credits))}toJson(){let e=Object.assign({},this.state);return e.credits&&(e.credits=e.credits.toString()),e}getEarliestHeight(){return this.state.earliestHeight}setEarliestHeight(e){return this.state.earliestHeight=e,this}isEnabled(){return this.state.isEnabled}setIsEnabled(e){return this.state.isEnabled=e,this}getState(){return this.state.state}setState(e){return this.state.state=e,this}getThreshold(){return this.state.threshold}setThreshold(e){return this.state.threshold=e,this}getVersion(){return this.state.version}setVersion(e){return this.state.version=e,this}getNumVotes(){return this.state.numVotes}setNumVotes(e){return this.state.numVotes=e,this}getWindow(){return this.state.window}setWindow(e){return this.state.window=e,this}getVoting(){return this.state.voting}setVoting(e){return this.state.voting=e,this}getCredits(){return this.state.credits}setCredits(e){return this.state.credits=e,this}getTopBlockHash(){return this.state.topBlockHash}setTopBlockHash(e){return this.state.topBlockHash=e,this}}},53011:(e,t,r)=>{const i=r(69282),n=r(93444);class a{constructor(e,t){if(e)if(e instanceof a)this.state=e.toJson();else if("object"==typeof e)this.state=Object.assign({},e);else{if("string"!=typeof e)throw new MoneroError("stateOrHex must be a MoneroKeyImage, JavaScript object, or string");this.state={},this.setHex(e),this.setSignature(t)}else this.state={}}getHex(){return this.state.hex}setHex(e){return this.state.hex=e,this}getSignature(){return this.state.signature}setSignature(e){return this.state.signature=e,this}copy(){return new a(this)}toJson(){return Object.assign({},this.state)}merge(e){return i(e instanceof a),e===this||(this.setHex(n.reconcile(this.getHex(),e.getHex())),this.setSignature(n.reconcile(this.getSignature(),e.getSignature()))),this}toString(e=0){let t="";return t+=n.kvLine("Hex",this.getHex(),e),t+=n.kvLine("Signature",this.getSignature(),e),t.slice(0,t.length-1)}}e.exports=a},51147:e=>{class t{}t.NOT_SPENT=0,t.CONFIRMED=1,t.TX_POOL=2,e.exports=t},20465:(e,t,r)=>{const i=r(63055).BigInteger;e.exports=class{constructor(e){e=Object.assign({},e),this.state=e,void 0===e.emissionSum||e.emissionSum instanceof i||(e.emissionSum=i.parse(e.emissionSum)),void 0===e.feeSum||e.feeSum instanceof i||(e.feeSum=i.parse(e.feeSum))}toJson(){let e=Object.assign({},this.state);return this.getEmissionSum()&&(e.emissionSum=this.getEmissionSum().toString()),this.getFeeSum()&&(e.feeSum=this.getFeeSum().toString()),e}getEmissionSum(){return this.state.emissionSum}setEmissionSum(e){return this.state.emissionSum=e,this}getFeeSum(){return this.state.feeSum}setFeeSum(e){return this.state.feeSum=e,this}}},15887:e=>{class t{constructor(e){if(e)if(e instanceof t)e=e.toJson();else{if("object"!=typeof e)throw new MoneroError("state must be a MoneroMiningStatus or JavaScript object");e=Object.assign({},e)}else e={};this.state=e}toJson(){return Object.assign({},this.state)}isActive(){return this.state.isActive}setIsActive(e){return this.state.isActive=e,this}getAddress(){return this.state.address}setAddress(e){return this.state.address=e,this}getSpeed(){return this.state.speed}setSpeed(e){return this.state.speed=e,this}getNumThreads(){return this.state.numThreads}setNumThreads(e){return this.state.numThreads=e,this}isBackground(){return this.state.isBackground}setIsBackground(e){return this.state.isBackground=e,this}}e.exports=t},79077:(e,t,r)=>{const i=r(91307);class n{static validate(e){if(0!==e&&1!==e&&2!==e)throw new i("Network type is invalid: "+e)}static isValid(e){return 0===e||1===e||2===e}static parse(e){switch((""+e).toLowerCase()){case"mainnet":return n.MAINNET;case"testnet":return n.TESTNET;case"stagenet":return n.STAGENET;default:throw new i("Invalid network type to parse: '"+e+"'")}}static toString(e){if(0===e)return"mainnet";if(1===e)return"testnet";if(2===e)return"stagenet";throw new i("Invalid network type: "+e)}}n.MAINNET=0,n.TESTNET=1,n.STAGENET=2,e.exports=n},42299:(e,t,r)=>{const i=r(69282),n=r(63055).BigInteger,a=r(93444),o=r(53011);class s{constructor(e){if(e)if(e instanceof s)e=e.toJson();else{if("object"!=typeof e)throw new MoneroError("state must be a MoneroOutput or JavaScript object");e=Object.assign({},e)}else e={};this.state=e,void 0===e.amount||e.amount instanceof n||(e.amount=n.parse(e.amount)),!e.keyImage||e.keyImage instanceof o||(e.keyImage=new o(e.keyImage))}getTx(){return this.state.tx}setTx(e){return this.state.tx=e,this}getKeyImage(){return this.state.keyImage}setKeyImage(e){return i(void 0===e||e instanceof o),this.state.keyImage=e,this}getAmount(){return this.state.amount}setAmount(e){return this.state.amount=e,this}getIndex(){return this.state.index}setIndex(e){return this.state.index=e,this}getRingOutputIndices(){return this.state.ringOutputIndices}setRingOutputIndices(e){return this.state.ringOutputIndices=e,this}getStealthPublicKey(){return this.state.stealthPublicKey}setStealthPublicKey(e){return this.state.stealthPublicKey=e,this}copy(){return new s(this)}toJson(){let e=Object.assign({},this.state);return this.getAmount()&&(e.amount=this.getAmount()?this.getAmount().toString():void 0),this.getKeyImage()&&(e.keyImage=this.getKeyImage()?this.getKeyImage().toJson():void 0),delete e.tx,e}merge(e){return i(e instanceof s),this===e||(this.getTx()!==e.getTx()?this.getTx().merge(e.getTx()):(void 0===this.getKeyImage()?this.setKeyImage(e.getKeyImage()):void 0!==e.getKeyImage()&&this.getKeyImage().merge(e.getKeyImage()),this.setAmount(a.reconcile(this.getAmount(),e.getAmount())),this.setIndex(a.reconcile(this.getIndex(),e.getIndex())))),this}toString(e=0){let t="";return this.getKeyImage()&&(t+=a.kvLine("Key image","",e),t+=this.getKeyImage().toString(e+1)+"\n"),t+=a.kvLine("Amount",this.getAmount(),e),t+=a.kvLine("Index",this.getIndex(),e),t+=a.kvLine("Ring output indices",this.getRingOutputIndices(),e),t+=a.kvLine("Stealth public key",this.getStealthPublicKey(),e),""===t?t:t.slice(0,t.length-1)}}e.exports=s},96909:(e,t,r)=>{const i=r(63055).BigInteger;e.exports=class{constructor(e){this.state=Object.assign({},e),void 0===this.state.amount||this.state.amount instanceof i||(this.state.amount=i.parse(this.state.amount))}toJson(){let e=Object.assign({},this.state);return e.amount&&(e.amount=e.amount.toString()),e}getAmount(){return this.state.amount}setAmount(e){return this.state.amount=e,this}getNumInstances(){return this.state.numInstances}setNumInstances(e){return this.state.numInstances=e,this}getNumUnlockedInstances(){return this.state.numUnlockedInstances}setNumUnlockedInstances(e){return this.state.numUnlockedInstances=e,this}getNumRecentInstances(){return this.state.numRecentInstances}setNumRecentInstances(e){return this.state.numRecentInstances=e,this}}},63374:(e,t,r)=>{const i=r(63055).BigInteger;e.exports=class{constructor(e){this.state=Object.assign({},e),void 0===this.state.rpcCreditsPerHash||this.state.rpcCreditsPerHash instanceof i||(this.state.rpcCreditsPerHash=i.parse(this.state.rpcCreditsPerHash))}toJson(){let e=Object.assign({},this.state);return e.rpcCreditsPerHash&&(e.rpcCreditsPerHash=e.rpcCreditsPerHash.toString()),e}getId(){return this.state.id}setId(e){return this.state.id=e,this}getAddress(){return this.state.address}setAddress(e){return this.state.address=e,this}getHost(){return this.state.host}setHost(e){return this.state.host=e,this}getPort(){return this.state.port}setPort(e){return this.state.port=e,this}isOnline(){return this.state.isOnline}setIsOnline(e){return this.state.isOnline=e,this}getLastSeenTimestamp(){return this.state.lastSeenTimestamp}setLastSeenTimestamp(e){return this.state.lastSeenTimestamp=e,this}getPruningSeed(){return this.state.pruningSeed}setPruningSeed(e){return this.state.pruningSeed=e,this}getRpcPort(){return this.state.rpcPort}setRpcPort(e){return this.state.rpcPort=e,this}getRpcCreditsPerHash(){return this.state.rpcCreditsPerHash}setRpcCreditsPerHash(e){return this.state.rpcCreditsPerHash=e,this}getId(){return this.state.id}setId(e){return this.state.id=e,this}getAvgDownload(){return this.state.avgDownload}setAvgDownload(e){return this.state.avgDownload=e,this}getAvgUpload(){return this.state.avgUpload}setAvgUpload(e){return this.state.avgUpload=e,this}getCurrentDownload(){return this.state.currentDownload}setCurrentDownload(e){return this.state.currentDownload=e,this}getCurrentUpload(){return this.state.currentUpload}setCurrentUpload(e){return this.state.currentUpload=e,this}getHeight(){return this.state.height}setHeight(e){return this.state.height=e,this}isIncoming(){return this.state.isIncoming}setIsIncoming(e){return this.state.isIncoming=e,this}getLiveTime(){return this.state.liveTime}setLiveTime(e){return this.state.liveTime=e,this}isLocalIp(){return this.state.isLocalIp}setIsLocalIp(e){return this.state.isLocalIp=e,this}isLocalHost(){return this.state.isLocalHost}setIsLocalHost(e){return this.state.isLocalHost=e,this}getNumReceives(){return this.state.numReceives}setNumReceives(e){return this.state.numReceives=e,this}getNumSends(){return this.state.numSends}setNumSends(e){return this.state.numSends=e,this}getReceiveIdleTime(){return this.state.receiveIdleTime}setReceiveIdleTime(e){return this.state.receiveIdleTime=e,this}getSendIdleTime(){return this.state.sendIdleTime}setSendIdleTime(e){return this.state.sendIdleTime=e,this}getState(){return this.state.state}setState(e){return this.state.state=e,this}getNumSupportFlags(){return this.state.numSupportFlags}setNumSupportFlags(e){return this.state.numSupportFlags=e,this}getType(){return this.state.type}setType(e){return this.state.type=e,this}}},58400:e=>{e.exports=class{constructor(e){e=Object.assign({},e),this.state=e}toJson(){let e=Object.assign({},this.state);return this.isPruned()&&(e.isPruned=this.isPruned()),this.getPruningSeed()&&(e.pruningSeed=this.getPruningSeed()),e}isPruned(){return this.state.isPruned}setIsPruned(e){return this.state.isPruned=e,this}getPruningSeed(){return this.state.pruningSeed}setPruningSeed(e){return this.state.pruningSeed=e,this}}},38991:(e,t,r)=>{const i=r(63055).BigInteger;e.exports=class{constructor(e){e=Object.assign({},e),this.state=e,void 0===e.credits||e.credits instanceof i||(e.credits=i.parse(e.credits))}toJson(){let e=Object.assign({},this.state);return e.credits&&(e.credits=e.credits.toString()),e}isGood(){return this.state.isGood}setIsGood(e){return this.state.isGood=e,this}isRelayed(){return this.state.isRelayed}setIsRelayed(e){return this.state.isRelayed=e,this}isDoubleSpendSeen(){return this.state.isDoubleSpendSeen}setIsDoubleSpend(e){return this.state.isDoubleSpendSeen=e,this}isFeeTooLow(){return this.state.isFeeTooLow}setIsFeeTooLow(e){return this.state.isFeeTooLow=e,this}isMixinTooLow(){return this.state.isMixinTooLow}setIsMixinTooLow(e){return this.state.isMixinTooLow=e,this}hasInvalidInput(){return this.state.hasInvalidInput}setHasInvalidInput(e){return this.state.hasInvalidInput=e,this}hasInvalidOutput(){return this.state.hasInvalidOutput}setHasInvalidOutput(e){return this.state.hasInvalidOutput=e,this}hasTooFewOutputs(){return this.state.hasTooFewOutputs}setHasTooFewOutputs(e){return this.state.hasTooFewOutputs=e,this}isOverspend(){return this.state.isOverspend}setIsOverspend(e){return this.state.isOverspend=e,this}getReason(){return this.state.reason}setReason(e){return this.state.reason=e,this}isTooBig(){return this.state.isTooBig}setIsTooBig(e){return this.state.isTooBig=e,this}getSanityCheckFailed(){return this.state.sanityCheckFailed}setSanityCheckFailed(e){return this.state.sanityCheckFailed=e,this}getCredits(){return this.state.credits}setCredits(e){return this.state.credits=e,this}getTopBlockHash(){return this.state.topBlockHash}setTopBlockHash(e){return this.state.topBlockHash=e,this}isTxExtraTooBig(){return this.state.isTxExtraTooBig}setIsTxExtraTooBig(e){return this.state.isTxExtraTooBig=e,this}}},2624:(e,t,r)=>{const i=r(69282),n=r(63055).BigInteger,a=r(93444),o=r(42299);class s{constructor(e){if(e)if(e instanceof s)e=e.toJson();else{if("object"!=typeof e)throw new MoneroError("state must be a MoneroTx or JavaScript object");e=Object.assign({},e)}else e={};if(this.state=e,void 0===e.fee||e.fee instanceof n||(e.fee=n.parse(e.fee)),void 0===e.unlockTime||e.unlockTime instanceof n||(e.unlockTime=n.parse(e.unlockTime)),e.inputs)for(let t=0;t{const i=r(63055).BigInteger;e.exports=class{constructor(e){this.state=Object.assign({},e),void 0===this.state.feeTotal||this.state.feeTotal instanceof i||(this.state.feeTotal=i.parse(this.state.feeTotal)),void 0===this.state.histo||this.state.histo instanceof Map||(this.state.histo=new Map(JSON.parse(this.state.histo)))}toJson(){let e=Object.assign({},this.state);return e.feeTotal&&(e.feeTotal=e.feeTotal.toString()),e.histo&&(e.histo=JSON.stringify([...e.histo])),e}getNumTxs(){return this.state.numTxs}setNumTxs(e){return this.state.numTxs=e,this}getNumNotRelayed(){return this.state.numNotRelayed}setNumNotRelayed(e){return this.state.numNotRelayed=e,this}getNumFailing(){return this.state.numFailing}setNumFailing(e){return this.state.numFailing=e,this}getNumDoubleSpends(){return this.state.numDoubleSpends}setNumDoubleSpends(e){return this.state.numDoubleSpends=e,this}getNum10m(){return this.state.num10m}setNum10m(e){return this.state.num10m=e,this}getFeeTotal(){return this.state.feeTotal}setFeeTotal(e){return this.state.feeTotal=e,this}getBytesMax(){return this.state.bytesMax}setBytesMax(e){return this.state.bytesMax=e,this}getBytesMed(){return this.state.bytesMed}setBytesMed(e){return this.state.bytesMed=e,this}getBytesMin(){return this.state.bytesMin}setBytesMin(e){return this.state.bytesMin=e,this}getBytesTotal(){return this.state.bytesTotal}setBytesTotal(e){return this.state.bytesTotal=e,this}getHisto(){return this.state.histo}setHisto(e){return this.state.histo=e,this}getHisto98pc(){return this.state.histo98pc}setHisto98pc(e){return this.state.histo98pc=e,this}getOldestTimestamp(){return this.state.oldestTimestamp}setOldestTimestamp(e){return this.state.oldestTimestamp=e,this}}},55540:e=>{e.exports=class{constructor(e,t){this.state={},this.state.number=e,this.state.isRelease=t}getNumber(){return this.state.number}setNumber(e){return this.state.number=e,this}isRelease(){return this.state.isRelease}setIsRelease(e){return this.state.isRelease=e,this}copy(){return new MoneroKeyImage(this)}toJson(){return Object.assign({},this.state)}}},54815:(e,t,r)=>{const i=r(69282),n=r(36242),a=r(63055).BigInteger,o=r(91307),s=r(39749),u=r(59692),c=r(36721),l=r(31857),h=r(61527);class p{async addListener(e){throw new Error("Not supported")}async removeListener(e){throw new Error("Not supported")}getListeners(){throw new Error("Not supported")}async isViewOnly(){throw new o("Not supported")}async setDaemonConnection(e,t,r){throw new o("Not supported")}async getDaemonConnection(){throw new o("Not supported")}async isConnectedToDaemon(){throw new o("Not supported")}async getVersion(){throw new o("Not supported")}async getPath(){throw new o("Not supported")}async getSeed(){throw new o("Not supported")}async getSeedLanguage(){throw new o("Not supported")}async getPrivateViewKey(){throw new o("Not supported")}async getPrivateSpendKey(){throw new o("Not supported")}async getPublicViewKey(){throw new o("Not supported")}async getPublicSpendKey(){throw new o("Not supported")}async getPrimaryAddress(){return await this.getAddress(0,0)}async getAddress(e,t){throw new o("Not supported")}async getAddressIndex(e){throw new o("Not supported")}async getIntegratedAddress(e,t){throw new o("Not supported")}async decodeIntegratedAddress(e){throw new o("Not supported")}async getHeight(){throw new o("Not supported")}async getDaemonHeight(){throw new o("Not supported")}async getHeightByDate(e,t,r){throw new o("Not supported")}async sync(e,t){throw new o("Not supported")}async startSyncing(e){throw new o("Not supported")}async stopSyncing(){throw new o("Not supported")}async scanTxs(e){throw new o("Not supported")}async rescanSpent(){throw new o("Not supported")}async rescanBlockchain(){throw new o("Not supported")}async getBalance(e,t){throw new o("Not supported")}async getUnlockedBalance(e,t){throw new o("Not supported")}async getNumBlocksToUnlock(){let e=await this.getBalance();if(0===e.compare(new a(0)))return[void 0,void 0];let t,r,i,n,o=await this.getUnlockedBalance();if(o.compare(new a(0))>0)i=0;else{t=await this.getTxs({isLocked:!0}),r=await this.getHeight();for(let e of t){let t=Math.max((e.isConfirmed()?e.getHeight():r)+10,e.getUnlockTime())-r;i=void 0===i?t:Math.min(i,t)}}if(0===e.compare(o))o.compare(new a(0))>0&&(n=0);else{t||(t=await this.getTxs({isLocked:!0}),r=await this.getHeight());for(let e of t){let t=Math.max((e.isConfirmed()?e.getHeight():r)+10,e.getUnlockTime())-r;n=void 0===n?t:Math.max(n,t)}}return[i,n]}async getAccounts(e,t){throw new o("Not supported")}async getAccount(e,t){throw new o("Not supported")}async createAccount(e){throw new o("Not supported")}async setAccountLabel(e,t){await this.setSubaddressLabel(e,0,t)}async getSubaddresses(e,t){throw new o("Not supported")}async getSubaddress(e,t){return i(e>=0),i(t>=0),(await this.getSubaddresses(e,t))[0]}async createSubaddress(e,t){throw new o("Not supported")}async setSubaddressLabel(e,t,r){throw new o("Not supported")}async getTx(e){let t=await this.getTxs([e]);return 0===t.length?void 0:t[0]}async getTxs(e){throw new o("Not supported")}async getTransfers(e){throw new o("Not supported")}async getIncomingTransfers(e){if(!1===(e=p._normalizeTransferQuery(e)).isIncoming())throw new o("Transfer query contradicts getting incoming transfers");return e.setIsIncoming(!0),this.getTransfers(e)}async getOutgoingTransfers(e){if(!1===(e=p._normalizeTransferQuery(e)).isOutgoing())throw new o("Transfer query contradicts getting outgoing transfers");return e.setIsOutgoing(!0),this.getTransfers(e)}async getOutputs(e){throw new o("Not supported")}async exportOutputs(e){throw new o("Not supported")}async importOutputs(e){throw new o("Not supported")}async exportKeyImages(e){throw new o("Not supported")}async importKeyImages(e){throw new o("Not supported")}async getNewKeyImagesFromLastImport(){throw new o("Not supported")}async freezeOutput(e){throw new o("Not supported")}async thawOutput(e){throw new o("Not supported")}async isOutputFrozen(e){throw new o("Not supported")}async createTx(e){return void 0!==(e=p._normalizeCreateTxsConfig(e)).getCanSplit()&&i.equal(e.getCanSplit(),!1,"Cannot split transactions using createTx(); use createTxs()"),e.setCanSplit(!1),(await this.createTxs(e))[0]}async createTxs(e){throw new o("Not supported")}async sweepOutput(e){throw new o("Not supported")}async sweepUnlocked(e){throw new o("Not supported")}async sweepDust(e){throw new o("Not supported")}async relayTx(e){return(await this.relayTxs([e]))[0]}async relayTxs(e){throw new o("Not supported")}async describeUnsignedTxSet(e){return this.describeTxSet((new h).setUnsignedTxHex(e))}async describeMultisigTxSet(e){return this.describeTxSet((new h).setMultisigTxHex(e))}async describeTxSet(e){throw new o("Not supported")}async signTxs(e){throw new o("Not supported")}async submitTxs(e){throw new o("Not supported")}async signMessage(e,t,r,i){throw new o("Not supported")}async verifyMessage(e,t,r){throw new o("Not supported")}async getTxKey(e){throw new o("Not supported")}async checkTxKey(e,t,r){throw new o("Not supported")}async getTxProof(e,t,r){throw new o("Not supported")}async checkTxProof(e,t,r,i){throw new o("Not supported")}async getSpendProof(e,t){throw new o("Not supported")}async checkSpendProof(e,t,r){throw new o("Not supported")}async getReserveProofWallet(e){throw new o("Not supported")}async getReserveProofAccount(e,t,r){throw new o("Not supported")}async checkReserveProof(e,t,r){throw new o("Not supported")}async getTxNote(e){return(await this.getTxNotes([e]))[0]}async getTxNotes(e){throw new o("Not supported")}async setTxNote(e,t){await this.setTxNotes([e],[t])}async setTxNotes(e,t){throw new o("Not supported")}async getAddressBookEntries(e){throw new o("Not supported")}async addAddressBookEntry(e,t){throw new o("Not supported")}async editAddressBookEntry(e,t,r,i,n){throw new o("Not supported")}async deleteAddressBookEntry(e){throw new o("Not supported")}async tagAccounts(e,t){throw new o("Not supported")}async untagAccounts(e){throw new o("Not supported")}async getAccountTags(){throw new o("Not supported")}async setAccountTagLabel(e,t){throw new o("Not supported")}async getPaymentUri(e){throw new o("Not supported")}async parsePaymentUri(e){throw new o("Not supported")}async getAttribute(e){throw new o("Not supported")}async setAttribute(e,t){throw new o("Not supported")}async startMining(e,t,r){throw new o("Not supported")}async stopMining(){throw new o("Not supported")}async isMultisigImportNeeded(){throw new o("Not supported")}async isMultisig(){return(await this.getMultisigInfo()).isMultisig()}async getMultisigInfo(){throw new o("Not supported")}async prepareMultisig(){throw new o("Not supported")}async makeMultisig(e,t,r){throw new o("Not supported")}async exchangeMultisigKeys(e,t){throw new o("Not supported")}async exportMultisigHex(){throw new o("Not supported?")}async importMultisigHex(e){throw new o("Not supported")}async signMultisigTxHex(e){throw new o("Not supported")}async submitMultisigTxHex(e){throw new o("Not supported")}async changePassword(e,t){throw new o("Not supported")}save(){throw new o("Not supported")}async close(e){throw new o("Not supported")}async isClosed(){throw new o("Not supported")}static _normalizeTxQuery(e){return e instanceof l?e=e.copy():Array.isArray(e)?e=(new l).setHashes(e):(e=Object.assign({},e),e=new l(e)),void 0===e.getBlock()&&e.setBlock((new n).setTxs([e])),e.getInputQuery()&&e.getInputQuery().setTxQuery(e),e.getOutputQuery()&&e.getOutputQuery().setTxQuery(e),e}static _normalizeTransferQuery(e){if(void 0===e)e=new u;else if(e instanceof u)if(void 0===e.getTxQuery())e=e.copy();else{let t=e.getTxQuery().copy();e.getTxQuery().getTransferQuery()===e?e=t.getTransferQuery():(i.equal(e.getTxQuery().getTransferQuery(),void 0,"Transfer query's tx query must be circular reference or null"),(e=e.copy()).setTxQuery(t))}else e=Object.assign({},e),e=new u(e);return void 0===e.getTxQuery()&&e.setTxQuery(new l),e.getTxQuery().setTransferQuery(e),void 0===e.getTxQuery().getBlock()&&e.getTxQuery().setBlock((new n).setTxs([e.getTxQuery()])),e}static _normalizeOutputQuery(e){if(void 0===e)e=new s;else if(e instanceof s)if(void 0===e.getTxQuery())e=e.copy();else{let t=e.getTxQuery().copy();e.getTxQuery().getOutputQuery()===e?e=t.getOutputQuery():(i.equal(e.getTxQuery().getOutputQuery(),void 0,"Output query's tx query must be circular reference or null"),(e=e.copy()).setTxQuery(t))}else e=Object.assign({},e),e=new s(e);return void 0===e.getTxQuery()&&e.setTxQuery(new l),e.getTxQuery().setOutputQuery(e),void 0===e.getTxQuery().getBlock()&&e.getTxQuery().setBlock((new n).setTxs([e.getTxQuery()])),e}static _normalizeCreateTxsConfig(e){if(void 0===e||!(e instanceof Object))throw new o("Must provide MoneroTxConfig or equivalent JS object");return e=new c(e),i(e.getDestinations()&&e.getDestinations().length>0,"Must provide destinations"),i.equal(e.getSweepEachSubaddress(),void 0),i.equal(e.getBelowAmount(),void 0),e}static _normalizeSweepOutputConfig(e){if(void 0===e||!(e instanceof Object))throw new o("Must provide MoneroTxConfig or equivalent JS object");if(e=new c(e),i.equal(e.getSweepEachSubaddress(),void 0),i.equal(e.getBelowAmount(),void 0),i.equal(e.getCanSplit(),void 0,"Cannot split transactions when sweeping an output"),!e.getDestinations()||1!==e.getDestinations().length||!e.getDestinations()[0].getAddress())throw new o("Must provide exactly one destination address to sweep output to");if(e.getSubtractFeeFrom()&&e.getSubtractFeeFrom().length>0)throw new o("Sweep transfers do not support subtracting fees from destinations");return e}static _normalizeSweepUnlockedConfig(e){if(void 0===e||!(e instanceof Object))throw new o("Must provide MoneroTxConfig or equivalent JS object");if(void 0===(e=new c(e)).getDestinations()||1!=e.getDestinations().length)throw new o("Must provide exactly one destination to sweep to");if(void 0===e.getDestinations()[0].getAddress())throw new o("Must provide destination address to sweep to");if(void 0!==e.getDestinations()[0].getAmount())throw new o("Cannot provide amount in sweep config");if(void 0!==e.getKeyImage())throw new o("Key image defined; use sweepOutput() to sweep an output by its key image");if(void 0!==e.getSubaddressIndices()&&0===e.getSubaddressIndices().length&&e.setSubaddressIndices(void 0),void 0===e.getAccountIndex()&&void 0!==e.getSubaddressIndices())throw new o("Must provide account index if subaddress indices are provided");return e}}p.DEFAULT_LANGUAGE="English",e.exports=p},78647:(e,t,r)=>{var i=r(48764).Buffer;const n=r(69282),a=r(63055).BigInteger,o=r(93444),s=r(85096),u=r(36693),c=r(28753),l=r(30947),h=r(36242),p=r(35404),d=r(47766),f=r(63131),m=r(91307),g=r(64472),v=r(53011),y=r(34293),_=r(26749),b=r(50957),w=r(63413),E=r(79077),k=r(69459),S=r(73717),x=r(44769),j=r(17118),N=r(36721),M=r(61527),I=r(18489),A=r(54815),T=r(99919),R=r(28166),P=r(63149),O=r(64232),B=r(57773);class C extends R{static walletExists(e,t){if(n(e,"Must provide a path to look for a wallet"),t||(t=C._getFs()),!t)throw new m("Must provide file system to check if wallet exists");let r=t.existsSync(e+".keys");return s.log(1,"Wallet exists at "+e+": "+r),r}static async openWallet(e,t,r,i,n,a){let o;if("object"==typeof e){if(o=e instanceof T?e:new T(e),void 0!==t||void 0!==r||void 0!==i||void 0!==n||void 0!==a)throw new m("Can specify config object or params but not both when opening WASM wallet")}else o=(new T).setPath(e).setPassword(t).setNetworkType(r).setProxyToWorker(n).setFs(a),"object"==typeof i?o.setServer(i):o.setServerUri(i);if(void 0===o.getProxyToWorker()&&o.setProxyToWorker(!0),void 0!==o.getSeed())throw new m("Cannot specify seed when opening wallet");if(void 0!==o.getSeedOffset())throw new m("Cannot specify seed offset when opening wallet");if(void 0!==o.getPrimaryAddress())throw new m("Cannot specify primary address when opening wallet");if(void 0!==o.getPrivateViewKey())throw new m("Cannot specify private view key when opening wallet");if(void 0!==o.getPrivateSpendKey())throw new m("Cannot specify private spend key when opening wallet");if(void 0!==o.getRestoreHeight())throw new m("Cannot specify restore height when opening wallet");if(void 0!==o.getLanguage())throw new m("Cannot specify language when opening wallet");if(!0===o.getSaveCurrent())throw new m("Cannot save current wallet when opening JNI wallet");if(!o.getKeysData()){let e=o.getFs()?o.getFs():C._getFs();if(!e)throw new m("Must provide file system to read wallet data from");if(!this.walletExists(o.getPath(),e))throw new m("Wallet does not exist at path: "+o.getPath());o.setKeysData(e.readFileSync(o.getPath()+".keys")),o.setCacheData(e.existsSync(o.getPath())?e.readFileSync(o.getPath()):"")}return C._openWalletData(o.getPath(),o.getPassword(),o.getNetworkType(),o.getKeysData(),o.getCacheData(),o.getServer(),o.getProxyToWorker(),o.getFs())}static async createWallet(e){if(void 0===e)throw new m("Must provide config to create wallet");if(void 0!==(e=e instanceof T?e:new T(e)).getSeed()&&(void 0!==e.getPrimaryAddress()||void 0!==e.getPrivateViewKey()||void 0!==e.getPrivateSpendKey()))throw new m("Wallet may be initialized with a seed or keys but not both");if(void 0===e.getNetworkType())throw new m("Must provide a networkType: 'mainnet', 'testnet' or 'stagenet'");if(E.validate(e.getNetworkType()),!0===e.getSaveCurrent())throw new m("Cannot save current wallet when creating full WASM wallet");if(void 0===e.getPath()&&e.setPath(""),e.getPath()&&C.walletExists(e.getPath(),e.getFs()))throw new m("Wallet already exists: "+e.getPath());if(void 0===e.getPassword()&&e.setPassword(""),void 0!==e.getSeed()){if(void 0!==e.getLanguage())throw new m("Cannot provide language when creating wallet from seed");return C._createWalletFromSeed(e)}if(void 0!==e.getPrivateSpendKey()||void 0!==e.getPrimaryAddress()){if(void 0!==e.getSeedOffset())throw new m("Cannot provide seedOffset when creating wallet from keys");return C._createWalletFromKeys(e)}if(void 0!==e.getSeedOffset())throw new m("Cannot provide seedOffset when creating random wallet");if(void 0!==e.getRestoreHeight())throw new m("Cannot provide restoreHeight when creating random wallet");return C._createWalletRandom(e)}static async _createWalletFromSeed(e){if(void 0===e.getProxyToWorker()&&e.setProxyToWorker(!0),e.getProxyToWorker())return z._createWallet(e);let t=e.getServer(),r=!t||t.getRejectUnauthorized();void 0===e.getRestoreHeight()&&e.setRestoreHeight(0),void 0===e.getSeedOffset()&&e.setSeedOffset("");let i=await s.loadFullModule(),n=await i.queueTask((async function(){return new Promise((function(t,n){let a=o.getUUID();s.setRejectUnauthorizedFn(a,(function(){return r})),i.create_full_wallet(JSON.stringify(e.toJson()),a,(async function(r){"string"==typeof r?n(new m(r)):t(new C(r,e.getPath(),e.getPassword(),e.getFs(),e.getRejectUnauthorized(),a))}))}))}));return e.getPath()&&await n.save(),n}static async _createWalletFromKeys(e){if(void 0===e.getProxyToWorker()&&e.setProxyToWorker(!0),e.getProxyToWorker())return z._createWallet(e);E.validate(e.getNetworkType()),void 0===e.getPrimaryAddress()&&e.setPrimaryAddress(""),void 0===e.getPrivateViewKey()&&e.setPrivateViewKey(""),void 0===e.getPrivateSpendKey()&&e.setPrivateSpendKey("");let t=e.getServer(),r=!t||t.getRejectUnauthorized();void 0===e.getRestoreHeight()&&e.setRestoreHeight(0),void 0===e.getLanguage()&&e.setLanguage("English");let i=await s.loadFullModule(),n=await i.queueTask((async function(){return new Promise((function(t,n){let a=o.getUUID();s.setRejectUnauthorizedFn(a,(function(){return r})),i.create_full_wallet(JSON.stringify(e.toJson()),a,(async function(r){"string"==typeof r?n(new m(r)):t(new C(r,e.getPath(),e.getPassword(),e.getFs(),e.getRejectUnauthorized(),a))}))}))}));return e.getPath()&&await n.save(),n}static async _createWalletRandom(e){if(void 0===e.getProxyToWorker()&&e.setProxyToWorker(!0),e.getProxyToWorker())return z._createWallet(e);void 0===e.getLanguage()&&e.setLanguage("English");let t=e.getServer(),r=!t||t.getRejectUnauthorized(),i=await s.loadFullModule(),n=await i.queueTask((async function(){return new Promise((function(t,n){let a=o.getUUID();s.setRejectUnauthorizedFn(a,(function(){return r})),i.create_full_wallet(JSON.stringify(e.toJson()),a,(async function(r){"string"==typeof r?n(new m(r)):t(new C(r,e.getPath(),e.getPassword(),e.getFs(),e.getRejectUnauthorized(),a))}))}))}));return e.getPath()&&await n.save(),n}static async getSeedLanguages(){let e=await s.loadFullModule();return e.queueTask((async function(){return JSON.parse(e.get_keys_wallet_seed_languages()).languages}))}constructor(e,t,r,i,n,a){super(e),this._path=t,this._password=r,this._listeners=[],this._fs=i||(t?C._getFs():void 0),this._isClosed=!1,this._fullListener=new F(this),this._fullListenerHandle=0,this._rejectUnauthorized=n,this._rejectUnauthorizedConfigId=a,this._syncPeriodInMs=C.DEFAULT_SYNC_PERIOD_IN_MS;let o=this;s.setRejectUnauthorizedFn(a,(function(){return o._rejectUnauthorized}))}async getDaemonMaxPeerHeight(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){e._module.get_daemon_max_peer_height(e._cppAddress,(function(e){t(e)}))}))}))}async isDaemonSynced(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){e._module.is_daemon_synced(e._cppAddress,(function(e){t(e)}))}))}))}async isSynced(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){e._module.is_synced(e._cppAddress,(function(e){t(e)}))}))}))}async getNetworkType(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),e._module.get_network_type(e._cppAddress)}))}async getRestoreHeight(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),e._module.get_restore_height(e._cppAddress)}))}async setRestoreHeight(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),t._module.set_restore_height(t._cppAddress,e)}))}async moveTo(e){return C._moveTo(e,this)}async addListener(e){this._assertNotClosed(),n(e instanceof P,"Listener must be instance of MoneroWalletListener"),this._listeners.push(e),await this._refreshListening()}async removeListener(e){this._assertNotClosed();let t=this._listeners.indexOf(e);if(!(t>-1))throw new m("Listener is not registered with wallet");this._listeners.splice(t,1),await this._refreshListening()}getListeners(){return this._assertNotClosed(),this._listeners}async setDaemonConnection(e){this._assertNotClosed();let t=e?e instanceof S?e:new S(e):void 0,r=t&&t.getUri()?t.getUri():"",i=t&&t.getUsername()?t.getUsername():"",n=t&&t.getPassword()?t.getPassword():"",a=t?t.getRejectUnauthorized():void 0;this._rejectUnauthorized=a;let o=this;return o._module.queueTask((async function(){return o._assertNotClosed(),new Promise((function(e,t){o._module.set_daemon_connection(o._cppAddress,r,i,n,(function(t){e()}))}))}))}async getDaemonConnection(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){let i=e._module.get_daemon_connection(e._cppAddress);if(i){let r=JSON.parse(i);t(new S(r.uri,r.username,r.password,e._rejectUnauthorized))}else t()}))}))}async isConnectedToDaemon(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){e._module.is_connected_to_daemon(e._cppAddress,(function(e){t(e)}))}))}))}async getVersion(){throw this._assertNotClosed(),new m("Not implemented")}async getPath(){return this._assertNotClosed(),this._path}async getIntegratedAddress(e,t){let r=this;return r._module.queueTask((async function(){r._assertNotClosed();try{let i=r._module.get_integrated_address(r._cppAddress,e||"",t||"");if("{"!==i.charAt(0))throw new m(i);return new g(JSON.parse(i))}catch(e){if(e.message.includes("Invalid payment ID"))throw new m("Invalid payment ID: "+t);throw new m(e.message)}}))}async decodeIntegratedAddress(e){let t=this;return t._module.queueTask((async function(){t._assertNotClosed();try{let r=t._module.decode_integrated_address(t._cppAddress,e);if("{"!==r.charAt(0))throw new m(r);return new g(JSON.parse(r))}catch(e){throw new m(e.message)}}))}async getHeight(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){e._module.get_height(e._cppAddress,(function(e){t(e)}))}))}))}async getDaemonHeight(){if(this._assertNotClosed(),!await this.isConnectedToDaemon())throw new m("Wallet is not connected to daemon");let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){e._module.get_daemon_height(e._cppAddress,(function(e){t(e)}))}))}))}async getHeightByDate(e,t,r){if(this._assertNotClosed(),!await this.isConnectedToDaemon())throw new m("Wallet is not connected to daemon");let i=this;return i._module.queueTask((async function(){return i._assertNotClosed(),new Promise((function(n,a){i._module.get_height_by_date(i._cppAddress,e,t,r,(function(e){"string"==typeof e?a(new m(e)):n(e)}))}))}))}async sync(e,t,r){if(this._assertNotClosed(),!await this.isConnectedToDaemon())throw new m("Wallet is not connected to daemon");let i,n,a=e instanceof P?e:void 0;void 0===(t=void 0===e||e instanceof P?t:e)&&(t=Math.max(await this.getHeight(),await this.getRestoreHeight())),a&&await this.addListener(a);try{let o=this;function s(){return o._assertNotClosed(),new Promise((function(e,r){o._module.sync(o._cppAddress,t,(async function(t){if("{"!==t.charAt(0))r(new m(t));else{let r=JSON.parse(t);e(new j(r.numBlocksFetched,r.receivedMoney))}}))}))}n=await(r?s():o._module.queueTask((async function(){return s()})))}catch(u){i=u}if(a&&await this.removeListener(a),i)throw i;return n}async startSyncing(e){if(this._assertNotClosed(),!await this.isConnectedToDaemon())throw new m("Wallet is not connected to daemon");this._syncPeriodInMs=void 0===e?C.DEFAULT_SYNC_PERIOD_IN_MS:e;let t=this;this._syncLooper||(this._syncLooper=new u((async function(){await t._backgroundSync()}))),this._syncLooper.start(this._syncPeriodInMs)}async stopSyncing(){this._assertNotClosed(),this._syncLooper&&this._syncLooper.stop(),this._module.stop_syncing(this._cppAddress)}async scanTxs(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.scan_txs(t._cppAddress,JSON.stringify({txHashes:e}),(function(e){e?i(new m(msg)):r()}))}))}))}async rescanSpent(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){e._module.rescan_spent(e._cppAddress,(function(){t()}))}))}))}async rescanBlockchain(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){e._module.rescan_blockchain(e._cppAddress,(function(){t()}))}))}))}async getBalance(e,t){let r=this;return r._module.queueTask((async function(){let i;return r._assertNotClosed(),void 0===e?(n(void 0===t,"Subaddress index must be undefined if account index is undefined"),i=r._module.get_balance_wallet(r._cppAddress)):i=void 0===t?r._module.get_balance_account(r._cppAddress,e):r._module.get_balance_subaddress(r._cppAddress,e,t),a.parse(JSON.parse(o.stringifyBIs(i)).balance)}))}async getUnlockedBalance(e,t){let r=this;return r._module.queueTask((async function(){let i;return r._assertNotClosed(),void 0===e?(n(void 0===t,"Subaddress index must be undefined if account index is undefined"),i=r._module.get_unlocked_balance_wallet(r._cppAddress)):i=void 0===t?r._module.get_unlocked_balance_account(r._cppAddress,e):r._module.get_unlocked_balance_subaddress(r._cppAddress,e,t),a.parse(JSON.parse(o.stringifyBIs(i)).unlockedBalance)}))}async getAccounts(e,t){let r=this;return r._module.queueTask((async function(){r._assertNotClosed();let i=r._module.get_accounts(r._cppAddress,!!e,t||""),n=[];for(let e of JSON.parse(o.stringifyBIs(i)).accounts)n.push(C._sanitizeAccount(new c(e)));return n}))}async getAccount(e,t){let r=this;return r._module.queueTask((async function(){r._assertNotClosed();let i=r._module.get_account(r._cppAddress,e,!!t),n=JSON.parse(o.stringifyBIs(i));return C._sanitizeAccount(new c(n))}))}async createAccount(e){void 0===e&&(e="");let t=this;return t._module.queueTask((async function(){t._assertNotClosed();let r=t._module.create_account(t._cppAddress,e),i=JSON.parse(o.stringifyBIs(r));return C._sanitizeAccount(new c(i))}))}async getSubaddresses(e,t){let r={accountIdx:e,subaddressIndices:void 0===t?[]:o.listify(t)},i=this;return i._module.queueTask((async function(){i._assertNotClosed();let e=JSON.parse(o.stringifyBIs(i._module.get_subaddresses(i._cppAddress,JSON.stringify(r)))).subaddresses,t=[];for(let r of e)t.push(C._sanitizeSubaddress(new x(r)));return t}))}async createSubaddress(e,t){void 0===t&&(t="");let r=this;return r._module.queueTask((async function(){r._assertNotClosed();let i=r._module.create_subaddress(r._cppAddress,e,t),n=JSON.parse(o.stringifyBIs(i));return C._sanitizeSubaddress(new x(n))}))}async setSubaddressLabel(e,t,r){void 0===r&&(r="");let i=this;return i._module.queueTask((async function(){i._assertNotClosed(),i._module.set_subaddress_label(i._cppAddress,e,t,r)}))}async getTxs(e){this._assertNotClosed(),e=A._normalizeTxQuery(e);let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.get_txs(t._cppAddress,JSON.stringify(e.getBlock().toJson()),(function(t){if("{"===t.charAt(0))try{r(C._deserializeTxs(e,t))}catch(e){i(e)}else i(new m(t))}))}))}))}async getTransfers(e){this._assertNotClosed(),e=A._normalizeTransferQuery(e);let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.get_transfers(t._cppAddress,JSON.stringify(e.getTxQuery().getBlock().toJson()),(function(t){if("{"===t.charAt(0))try{r(C._deserializeTransfers(e,t))}catch(e){i(e)}else i(new m(t))}))}))}))}async getOutputs(e){this._assertNotClosed(),e=A._normalizeOutputQuery(e);let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.get_outputs(t._cppAddress,JSON.stringify(e.getTxQuery().getBlock().toJson()),(function(t){if("{"===t.charAt(0))try{r(C._deserializeOutputs(e,t))}catch(e){i(e)}else i(new m(t))}))}))}))}async exportOutputs(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.export_outputs(t._cppAddress,e,(function(e){r(e)}))}))}))}async importOutputs(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.import_outputs(t._cppAddress,e,(function(e){r(e)}))}))}))}async exportKeyImages(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.export_key_images(t._cppAddress,e,(function(e){"{"!==e.charAt(0)&&i(new m(e));let t=[];for(let r of JSON.parse(o.stringifyBIs(e)).keyImages)t.push(new v(r));r(t)}))}))}))}async importKeyImages(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.import_key_images(t._cppAddress,JSON.stringify({keyImages:e.map((e=>e.toJson()))}),(function(e){r(new y(JSON.parse(o.stringifyBIs(e))))}))}))}))}async getNewKeyImagesFromLastImport(){throw this._assertNotClosed(),new m("Not implemented")}async freezeOutput(e){if(!e)throw new m("Must specify key image to freeze");let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.freeze_output(t._cppAddress,e,(function(){r()}))}))}))}async thawOutput(e){if(!e)throw new m("Must specify key image to thaw");let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.thaw_output(t._cppAddress,e,(function(){r()}))}))}))}async isOutputFrozen(e){if(!e)throw new m("Must specify key image to check if frozen");let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.is_output_frozen(t._cppAddress,e,(function(e){r(e)}))}))}))}async createTxs(e){this._assertNotClosed(),void 0===(e=A._normalizeCreateTxsConfig(e)).getCanSplit()&&e.setCanSplit(!0);let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.create_txs(t._cppAddress,JSON.stringify(e.toJson()),(function(e){"{"!==e.charAt(0)?i(new m(e)):r(new M(JSON.parse(o.stringifyBIs(e))).getTxs())}))}))}))}async sweepOutput(e){this._assertNotClosed(),e=A._normalizeSweepOutputConfig(e);let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.sweep_output(t._cppAddress,JSON.stringify(e.toJson()),(function(e){"{"!==e.charAt(0)?i(new m(e)):r(new M(JSON.parse(o.stringifyBIs(e))).getTxs()[0])}))}))}))}async sweepUnlocked(e){this._assertNotClosed(),e=A._normalizeSweepUnlockedConfig(e);let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.sweep_unlocked(t._cppAddress,JSON.stringify(e.toJson()),(function(e){if("{"!==e.charAt(0))i(new m(e));else{let t=[];for(let r of JSON.parse(o.stringifyBIs(e)).txSets)t.push(new M(r));let i=[];for(let e of t)for(let t of e.getTxs())i.push(t);r(i)}}))}))}))}async sweepDust(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.sweep_dust(t._cppAddress,e,(function(e){if("{"!==e.charAt(0))i(new m(e));else{let t=new M(JSON.parse(o.stringifyBIs(e)));void 0===t.getTxs()&&t.setTxs([]),r(t.getTxs())}}))}))}))}async relayTxs(e){this._assertNotClosed(),n(Array.isArray(e),"Must provide an array of txs or their metadata to relay");let t=[];for(let r of e)t.push(r instanceof I?r.getMetadata():r);let r=this;return r._module.queueTask((async function(){return r._assertNotClosed(),new Promise((function(e,i){r._module.relay_txs(r._cppAddress,JSON.stringify({txMetadatas:t}),(function(t){"{"!==t.charAt(0)?i(new m(t)):e(JSON.parse(t).txHashes)}))}))}))}async describeTxSet(e){let t=this;return t._module.queueTask((async function(){t._assertNotClosed(),e=(new M).setUnsignedTxHex(e.getUnsignedTxHex()).setSignedTxHex(e.getSignedTxHex()).setMultisigTxHex(e.getMultisigTxHex());try{return new M(JSON.parse(o.stringifyBIs(t._module.describe_tx_set(t._cppAddress,JSON.stringify(e.toJson())))))}catch(e){throw new m(t._module.get_exception_message(e))}}))}async signTxs(e){let t=this;return t._module.queueTask((async function(){t._assertNotClosed();try{return t._module.sign_txs(t._cppAddress,e)}catch(e){throw new m(t._module.get_exception_message(e))}}))}async submitTxs(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.submit_txs(t._cppAddress,e,(function(e){"{"!==e.charAt(0)?i(new m(e)):r(JSON.parse(e).txHashes)}))}))}))}async signMessage(e,t,r,i){t=t||O.SIGN_WITH_SPEND_KEY,r=r||0,i=i||0;let n=this;return n._module.queueTask((async function(){n._assertNotClosed();try{return n._module.sign_message(n._cppAddress,e,t===O.SIGN_WITH_SPEND_KEY?0:1,r,i)}catch(e){throw new m(n._module.get_exception_message(e))}}))}async verifyMessage(e,t,r){let i=this;return i._module.queueTask((async function(){let n;i._assertNotClosed();try{n=JSON.parse(i._module.verify_message(i._cppAddress,e,t,r))}catch(e){n={isGood:!1}}return new B(n.isGood,n.isGood?n.isOld:void 0,n.isGood?"spend"===n.signatureType?O.SIGN_WITH_SPEND_KEY:O.SIGN_WITH_VIEW_KEY:void 0,n.isGood?n.version:void 0)}))}async getTxKey(e){let t=this;return t._module.queueTask((async function(){t._assertNotClosed();try{return t._module.get_tx_key(t._cppAddress,e)}catch(e){throw new m(t._module.get_exception_message(e))}}))}async checkTxKey(e,t,r){let i=this;return i._module.queueTask((async function(){return i._assertNotClosed(),new Promise((function(n,a){i._module.check_tx_key(i._cppAddress,e,t,r,(function(e){"{"!==e.charAt(0)?a(new m(e)):n(new p(JSON.parse(o.stringifyBIs(e))))}))}))}))}async getTxProof(e,t,r){let i=this;return i._module.queueTask((async function(){return i._assertNotClosed(),new Promise((function(n,a){i._module.get_tx_proof(i._cppAddress,e||"",t||"",r||"",(function(e){let t="error: ";0===e.indexOf(t)?a(new m(e.substring(t.length))):n(e)}))}))}))}async checkTxProof(e,t,r,i){let n=this;return n._module.queueTask((async function(){return n._assertNotClosed(),new Promise((function(a,s){n._module.check_tx_proof(n._cppAddress,e||"",t||"",r||"",i||"",(function(e){"{"!==e.charAt(0)?s(new m(e)):a(new p(JSON.parse(o.stringifyBIs(e))))}))}))}))}async getSpendProof(e,t){let r=this;return r._module.queueTask((async function(){return r._assertNotClosed(),new Promise((function(i,n){r._module.get_spend_proof(r._cppAddress,e||"",t||"",(function(e){let t="error: ";0===e.indexOf(t)?n(new m(e.substring(t.length))):i(e)}))}))}))}async checkSpendProof(e,t,r){let i=this;return i._module.queueTask((async function(){return i._assertNotClosed(),new Promise((function(n,a){i._module.check_spend_proof(i._cppAddress,e||"",t||"",r||"",(function(e){"string"==typeof e?a(new m(e)):n(e)}))}))}))}async getReserveProofWallet(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.get_reserve_proof_wallet(t._cppAddress,e,(function(e){let t="error: ";0===e.indexOf(t)?i(new m(e.substring(t.length),-1)):r(e)}))}))}))}async getReserveProofAccount(e,t,r){let i=this;return i._module.queueTask((async function(){return i._assertNotClosed(),new Promise((function(n,a){i._module.get_reserve_proof_account(i._cppAddress,e,t.toString(),r,(function(e){let t="error: ";0===e.indexOf(t)?a(new m(e.substring(t.length),-1)):n(e)}))}))}))}async checkReserveProof(e,t,r){let i=this;return i._module.queueTask((async function(){return i._assertNotClosed(),new Promise((function(n,a){i._module.check_reserve_proof(i._cppAddress,e,t,r,(function(e){"{"!==e.charAt(0)?a(new m(e,-1)):n(new d(JSON.parse(o.stringifyBIs(e))))}))}))}))}async getTxNotes(e){let t=this;return t._module.queueTask((async function(){t._assertNotClosed();try{return JSON.parse(t._module.get_tx_notes(t._cppAddress,JSON.stringify({txHashes:e}))).txNotes}catch(e){throw new m(t._module.get_exception_message(e))}}))}async setTxNotes(e,t){let r=this;return r._module.queueTask((async function(){r._assertNotClosed();try{r._module.set_tx_notes(r._cppAddress,JSON.stringify({txHashes:e,txNotes:t}))}catch(e){throw new m(r._module.get_exception_message(e))}}))}async getAddressBookEntries(e){e||(e=[]);let t=this;return t._module.queueTask((async function(){t._assertNotClosed();let r=[];for(let i of JSON.parse(t._module.get_address_book_entries(t._cppAddress,JSON.stringify({entryIndices:e}))).entries)r.push(new l(i));return r}))}async addAddressBookEntry(e,t){e||(e=""),t||(t="");let r=this;return r._module.queueTask((async function(){return r._assertNotClosed(),r._module.add_address_book_entry(r._cppAddress,e,t)}))}async editAddressBookEntry(e,t,r,i,n){t||(t=!1),r||(r=""),i||(i=!1),n||(n="");let a=this;return a._module.queueTask((async function(){a._assertNotClosed(),a._module.edit_address_book_entry(a._cppAddress,e,t,r,i,n)}))}async deleteAddressBookEntry(e){let t=this;return t._module.queueTask((async function(){t._assertNotClosed(),t._module.delete_address_book_entry(t._cppAddress,e)}))}async tagAccounts(e,t){e||(e=""),t||(t=[]);let r=this;return r._module.queueTask((async function(){r._assertNotClosed(),r._module.tag_accounts(r._cppAddress,JSON.stringify({tag:e,accountIndices:t}))}))}async untagAccounts(e){e||(e=[]);let t=this;return t._module.queueTask((async function(){t._assertNotClosed(),t._module.tag_accounts(t._cppAddress,JSON.stringify({accountIndices:e}))}))}async getAccountTags(){let e=this;return e._module.queueTask((async function(){e._assertNotClosed();let t=[];for(let r of JSON.parse(e._module.get_account_tags(e._cppAddress)).accountTags)t.push(new MoneroAccountTag(r));return t}))}async setAccountTagLabel(e,t){e||(e=""),llabel||(t="");let r=this;return r._module.queueTask((async function(){r._assertNotClosed(),r._module.set_account_tag_label(r._cppAddress,e,t)}))}async getPaymentUri(e){e=A._normalizeCreateTxsConfig(e);let t=this;return t._module.queueTask((async function(){t._assertNotClosed();try{return t._module.get_payment_uri(t._cppAddress,JSON.stringify(e.toJson()))}catch(e){throw new m("Cannot make URI from supplied parameters")}}))}async parsePaymentUri(e){let t=this;return t._module.queueTask((async function(){t._assertNotClosed();try{return new N(JSON.parse(o.stringifyBIs(t._module.parse_payment_uri(t._cppAddress,e))),!0)}catch(e){throw new m(e.message)}}))}async getAttribute(e){this._assertNotClosed(),n("string"==typeof e,"Attribute key must be a string");let t=this;return t._module.queueTask((async function(){t._assertNotClosed();let r=t._module.get_attribute(t._cppAddress,e);return""===r?null:r}))}async setAttribute(e,t){this._assertNotClosed(),n("string"==typeof e,"Attribute key must be a string"),n("string"==typeof t,"Attribute value must be a string");let r=this;return r._module.queueTask((async function(){r._assertNotClosed(),r._module.set_attribute(r._cppAddress,e,t)}))}async startMining(e,t,r){this._assertNotClosed();let i=new f(Object.assign((await this.getDaemonConnection()).getConfig(),{proxyToWorker:!1}));await i.startMining(await this.getPrimaryAddress(),e,t,r)}async stopMining(){this._assertNotClosed();let e=new f(Object.assign((await this.getDaemonConnection()).getConfig(),{proxyToWorker:!1}));await e.stopMining()}async isMultisigImportNeeded(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),e._module.is_multisig_import_needed(e._cppAddress)}))}async isMultisig(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),e._module.is_multisig(e._cppAddress)}))}async getMultisigInfo(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new _(JSON.parse(e._module.get_multisig_info(e._cppAddress)))}))}async prepareMultisig(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),e._module.prepare_multisig(e._cppAddress)}))}async makeMultisig(e,t,r){let i=this;return i._module.queueTask((async function(){return i._assertNotClosed(),new Promise((function(n,a){i._module.make_multisig(i._cppAddress,JSON.stringify({multisigHexes:e,threshold:t,password:r}),(e=>{let t="error: ";0===e.indexOf(t)?a(new m(e.substring(t.length))):n(e)}))}))}))}async exchangeMultisigKeys(e,t){let r=this;return r._module.queueTask((async function(){return r._assertNotClosed(),new Promise((function(i,n){r._module.exchange_multisig_keys(r._cppAddress,JSON.stringify({multisigHexes:e,password:t}),(e=>{let t="error: ";0===e.indexOf(t)?n(new m(e.substring(t.length))):i(new b(JSON.parse(e)))}))}))}))}async exportMultisigHex(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),e._module.export_multisig_hex(e._cppAddress)}))}async importMultisigHex(e){if(!o.isArray(e))throw new m("Must provide string[] to importMultisigHex()");let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.import_multisig_hex(t._cppAddress,JSON.stringify({multisigHexes:e}),(function(e){"string"==typeof e?i(new m(e)):r(e)}))}))}))}async signMultisigTxHex(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.sign_multisig_tx_hex(t._cppAddress,e,(async function(e){"{"!==e.charAt(0)?i(new m(e)):r(new w(JSON.parse(e)))}))}))}))}async submitMultisigTxHex(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.submit_multisig_tx_hex(t._cppAddress,e,(function(e){"{"!==e.charAt(0)?i(new m(e)):r(JSON.parse(e).txHashes)}))}))}))}async getData(){this._assertNotClosed();let e=await this.isViewOnly(),t=this;return t._module.queueTask((async function(){t._assertNotClosed();let r=[],n=JSON.parse(t._module.get_cache_file_buffer(t._cppAddress)),a=new DataView(new ArrayBuffer(n.length));for(let e=0;e0,t=this;if(!(0===t._fullListenerHandle&&!e||t._fullListenerHandle>0&&e))return t._module.queueTask((async function(){return new Promise((function(r,i){t._module.set_listener(t._cppAddress,t._fullListenerHandle,(e=>{"string"==typeof e?i(new m(e)):(t._fullListenerHandle=e,r())}),e?async function(e,r,i,n,a){await t._fullListener.onSyncProgress(e,r,i,n,a)}:void 0,e?async function(e){await t._fullListener.onNewBlock(e)}:void 0,e?async function(e,r){await t._fullListener.onBalancesChanged(e,r)}:void 0,e?async function(e,r,i,n,a,o,s,u){await t._fullListener.onOutputReceived(e,r,i,n,a,o,s,u)}:void 0,e?async function(e,r,i,n,a,o,s,u){await t._fullListener.onOutputSpent(e,r,i,n,a,o,s,u)}:void 0)}))}))}static _sanitizeBlock(e){for(let t of e.getTxs())C._sanitizeTxWallet(t);return e}static _sanitizeTxWallet(e){return n(e instanceof I),e}static _sanitizeAccount(e){if(e.getSubaddresses())for(let t of e.getSubaddresses())C._sanitizeSubaddress(t);return e}static _sanitizeSubaddress(e){return""===e.getLabel()&&e.setLabel(void 0),e}static _deserializeBlocks(e){let t=JSON.parse(o.stringifyBIs(e)),r={blocks:[]};if(t.blocks)for(let e of t.blocks)r.blocks.push(C._sanitizeBlock(new h(e,h.DeserializationType.TX_WALLET)));return r}static _deserializeTxs(e,t){let r=C._deserializeBlocks(t).blocks,i=[];for(let e of r){C._sanitizeBlock(e);for(let t of e.getTxs())void 0===e.getHeight()&&t.setBlock(void 0),i.push(t)}if(void 0!==e.getHashes()){let t=new Map;for(let e of i)t[e.getHash()]=e;let r=[];for(let i of e.getHashes())void 0!==t[i]&&r.push(t[i]);i=r}return i}static _deserializeTransfers(e,t){let r=C._deserializeBlocks(t).blocks,i=[];for(let e of r)for(let t of e.getTxs())if(void 0===e.getHeight()&&t.setBlock(void 0),void 0!==t.getOutgoingTransfer()&&i.push(t.getOutgoingTransfer()),void 0!==t.getIncomingTransfers())for(let e of t.getIncomingTransfers())i.push(e);return i}static _deserializeOutputs(e,t){let r=C._deserializeBlocks(t).blocks,i=[];for(let e of r)for(let t of e.getTxs())for(let e of t.getOutputs())i.push(e);return i}_setBrowserMainPath(e){this._browserMainPath=e}static async _moveTo(e,t){if(await t.isClosed())throw new m("Wallet is closed");if(!e)throw new m("Must provide path of destination wallet");const i=r(26470);if(i.normalize(t._path)===i.normalize(e))return void await t.save();let n=i.dirname(e);if(!t._fs.existsSync(n))try{t._fs.mkdirSync(n)}catch(t){throw new m("Destination path "+e+" does not exist and cannot be created: "+t.message)}let a=await t.getData();t._fs.writeFileSync(e+".keys",a[0],"binary"),t._fs.writeFileSync(e,a[1],"binary"),t._fs.writeFileSync(e+".address.txt",await t.getPrimaryAddress());let o=t._path;t._path=e,o&&(t._fs.unlinkSync(o+".address.txt"),t._fs.unlinkSync(o+".keys"),t._fs.unlinkSync(o))}static async _save(e){if(await e.isClosed())throw new m("Wallet is closed");let t=await e.getPath();if(!t)throw new m("Cannot save wallet because path is not set");let r=t+".new",i=await e.getData();e._fs.writeFileSync(r+".keys",i[0],"binary"),e._fs.writeFileSync(r,i[1],"binary"),e._fs.writeFileSync(r+".address.txt",await e.getPrimaryAddress()),e._fs.renameSync(r+".keys",t+".keys"),e._fs.renameSync(r,t,t+".keys"),e._fs.renameSync(r+".address.txt",t+".address.txt",t+".keys")}}class z extends A{static async openWalletData(e,t,r,i,n,a,u){let c=o.getUUID();void 0===t&&(t="");let l=a instanceof S?a.getConfig():a;await s.invokeWorker(c,"openWalletData",[e,t,r,i,n,l]);let h=new z(c,await s.getWorker(),e,u);return e&&await h.save(),h}static async _createWallet(e){if(e.getPath()&&C.walletExists(e.getPath(),e.getFs()))throw new m("Wallet already exists: "+path);let t=o.getUUID();await s.invokeWorker(t,"_createWallet",[e.toJson()]);let r=new z(t,await s.getWorker(),e.getPath(),e.getFs());return e.getPath()&&await r.save(),r}constructor(e,t,r,i){super(),this._walletId=e,this._worker=t,this._path=r,this._fs=i||(r?C._getFs():void 0),this._wrappedListeners=[]}async isViewOnly(){return this._invokeWorker("isViewOnly")}async getNetworkType(){return this._invokeWorker("getNetworkType")}async getVersion(){throw new m("Not implemented")}getPath(){return this._path}async getSeed(){return this._invokeWorker("getSeed")}async getSeedLanguage(){return this._invokeWorker("getSeedLanguage")}async getSeedLanguages(){return this._invokeWorker("getSeedLanguages")}async getPrivateSpendKey(){return this._invokeWorker("getPrivateSpendKey")}async getPrivateViewKey(){return this._invokeWorker("getPrivateViewKey")}async getPublicViewKey(){return this._invokeWorker("getPublicViewKey")}async getPublicSpendKey(){return this._invokeWorker("getPublicSpendKey")}async getAddress(e,t){return this._invokeWorker("getAddress",Array.from(arguments))}async getAddressIndex(e){let t=await this._invokeWorker("getAddressIndex",Array.from(arguments));return C._sanitizeSubaddress(new x(t))}async setSubaddressLabel(e,t,r){return this._invokeWorker("setSubaddressLabel",Array.from(arguments))}async getIntegratedAddress(e,t){return new g(await this._invokeWorker("getIntegratedAddress",Array.from(arguments)))}async decodeIntegratedAddress(e){return new g(await this._invokeWorker("decodeIntegratedAddress",Array.from(arguments)))}async setDaemonConnection(e){if(e){let t=e?e instanceof S?e:new S(e):void 0;await this._invokeWorker("setDaemonConnection",t?t.getConfig():void 0)}else await this._invokeWorker("setDaemonConnection")}async getDaemonConnection(){let e=await this._invokeWorker("getDaemonConnection");return e?new S(e):void 0}async isConnectedToDaemon(){return this._invokeWorker("isConnectedToDaemon")}async getRestoreHeight(){return this._invokeWorker("getRestoreHeight")}async setRestoreHeight(e){return this._invokeWorker("setRestoreHeight",[e])}async getDaemonHeight(){return this._invokeWorker("getDaemonHeight")}async getDaemonMaxPeerHeight(){return this._invokeWorker("getDaemonMaxPeerHeight")}async getHeightByDate(e,t,r){return this._invokeWorker("getHeightByDate",[e,t,r])}async isDaemonSynced(){return this._invokeWorker("isDaemonSynced")}async getHeight(){return this._invokeWorker("getHeight")}async addListener(e){let t=new D(e),r=t.getId();return s.WORKER_OBJECTS[this._walletId].callbacks["onSyncProgress_"+r]=[t.onSyncProgress,t],s.WORKER_OBJECTS[this._walletId].callbacks["onNewBlock_"+r]=[t.onNewBlock,t],s.WORKER_OBJECTS[this._walletId].callbacks["onBalancesChanged_"+r]=[t.onBalancesChanged,t],s.WORKER_OBJECTS[this._walletId].callbacks["onOutputReceived_"+r]=[t.onOutputReceived,t],s.WORKER_OBJECTS[this._walletId].callbacks["onOutputSpent_"+r]=[t.onOutputSpent,t],this._wrappedListeners.push(t),this._invokeWorker("addListener",[r])}async removeListener(e){for(let t=0;t0){let t=(new h).setHeight(e);t.setTxs([l]),l.setBlock(t),l.setIsConfirmed(!0),l.setInTxPool(!1),l.setIsFailed(!1)}else l.setIsConfirmed(!1),l.setInTxPool(!0);for(let e of this._wallet.getListeners())await e.onOutputReceived(l.getOutputs()[0])}async onOutputSpent(e,t,r,i,n,o,s,u){let c=new k;c.setAmount(a.parse(r)),i&&c.setAccountIndex(parseInt(i)),n&&c.setSubaddressIndex(parseInt(n));let l=new I;if(l.setHash(t),l.setVersion(o),l.setUnlockTime(s),l.setIsLocked(u),c.setTx(l),l.setInputs([c]),e>0){let t=(new h).setHeight(e);t.setTxs([l]),l.setBlock(t),l.setIsConfirmed(!0),l.setInTxPool(!1),l.setIsFailed(!1)}else l.setIsConfirmed(!1),l.setInTxPool(!0);for(let e of this._wallet.getListeners())await e.onOutputSpent(l.getInputs()[0])}}class D{constructor(e){this._id=o.getUUID(),this._listener=e}getId(){return this._id}getListener(){return this._listener}onSyncProgress(e,t,r,i,n){this._listener.onSyncProgress(e,t,r,i,n)}async onNewBlock(e){await this._listener.onNewBlock(e)}async onBalancesChanged(e,t){await this._listener.onBalancesChanged(a.parse(e),a.parse(t))}async onOutputReceived(e){let t=new h(e,h.DeserializationType.TX_WALLET);await this._listener.onOutputReceived(t.getTxs()[0].getOutputs()[0])}async onOutputSpent(e){let t=new h(e,h.DeserializationType.TX_WALLET);await this._listener.onOutputSpent(t.getTxs()[0].getInputs()[0])}}C.DEFAULT_SYNC_PERIOD_IN_MS=1e4,e.exports=C},28166:(e,t,r)=>{const i=r(69282),n=r(85096),a=r(91307),o=r(79077),s=r(44769),u=(r(58012),r(55540)),c=r(54815),l=r(99919);class h extends c{static async createWallet(e){if(void 0===e)throw new a("Must provide config to create wallet");if(void 0!==(e=e instanceof l?e:new l(e)).getSeed()&&(void 0!==e.getPrimaryAddress()||void 0!==e.getPrivateViewKey()||void 0!==e.getPrivateSpendKey()))throw new a("Wallet may be initialized with a seed or keys but not both");if(void 0===e.getNetworkType())throw new a("Must provide a networkType: 'mainnet', 'testnet' or 'stagenet'");if(!0===e.getSaveCurrent())throw new a("Cannot save current wallet when creating keys-only wallet");return void 0!==e.getSeed()?h._createWalletFromSeed(e):void 0!==e.getPrivateSpendKey()||void 0!==e.getPrimaryAddress()?h._createWalletFromKeys(e):h._createWalletRandom(e)}static async _createWalletRandom(e){if(void 0!==(e=e.copy()).getSeedOffset())throw new a("Cannot provide seedOffset when creating random wallet");if(void 0!==e.getRestoreHeight())throw new a("Cannot provide restoreHeight when creating random wallet");o.validate(e.getNetworkType()),void 0===e.getLanguage()&&e.setLanguage("English");let t=await n.loadKeysModule();return t.queueTask((async function(){return new Promise((function(r,i){t.create_keys_wallet_random(JSON.stringify(e.toJson()),(async function(e){"string"==typeof e?i(new a(e)):r(new h(e))}))}))}))}static async _createWalletFromSeed(e){if(o.validate(e.getNetworkType()),void 0===e.getSeed())throw Error("Must define seed to create wallet from");if(void 0===e.getSeedOffset()&&e.setSeedOffset(""),void 0!==e.getLanguage())throw new a("Cannot provide language when creating wallet from seed");let t=await n.loadKeysModule();return t.queueTask((async function(){return new Promise((function(r,i){t.create_keys_wallet_from_seed(JSON.stringify(e.toJson()),(async function(e){"string"==typeof e?i(new a(e)):r(new h(e))}))}))}))}static async _createWalletFromKeys(e){if(void 0!==e.getSeedOffset())throw new a("Cannot provide seedOffset when creating wallet from keys");o.validate(e.getNetworkType()),void 0===e.getPrimaryAddress()&&e.setPrimaryAddress(""),void 0===e.getPrivateViewKey()&&e.setPrivateViewKey(""),void 0===e.getPrivateSpendKey()&&e.setPrivateSpendKey(""),void 0===e.getLanguage()&&e.setLanguage("English");let t=await n.loadKeysModule();return t.queueTask((async function(){return new Promise((function(r,i){t.create_keys_wallet_from_keys(JSON.stringify(e.toJson()),(async function(e){"string"==typeof e?i(new a(e)):r(new h(e))}))}))}))}static async getSeedLanguages(){let e=await n.loadKeysModule();return e.queueTask((async function(){return JSON.parse(e.get_keys_wallet_seed_languages()).languages}))}constructor(e){if(super(),this._cppAddress=e,this._module=n.getWasmModule(),!this._module.create_full_wallet)throw new a("WASM module not loaded - create wallet instance using static utilities")}async addListener(e){throw new a("MoneroWalletKeys does not support adding listeners")}async removeListener(e){throw new a("MoneroWalletKeys does not support removing listeners")}async isViewOnly(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),e._module.is_view_only(e._cppAddress)}))}async isConnectedToDaemon(){return!1}async getVersion(){let e=this;return e._module.queueTask((async function(){e._assertNotClosed();let t=e._module.get_version(e._cppAddress),r=JSON.parse(t);return new u(r.number,r.isRelease)}))}getPath(){throw this._assertNotClosed(),new a("MoneroWalletKeys does not support a persisted path")}async getSeed(){let e=this;return e._module.queueTask((async function(){e._assertNotClosed();let t=e._module.get_seed(e._cppAddress);const r="error: ";if(0===t.indexOf(r))throw new a(t.substring(r.length));return t||void 0}))}async getSeedLanguage(){let e=this;return e._module.queueTask((async function(){e._assertNotClosed();let t=e._module.get_seed_language(e._cppAddress);if(0===t.indexOf("error: "))throw new a(t.substring(errorStr.length));return t||void 0}))}async getPrivateSpendKey(){let e=this;return e._module.queueTask((async function(){e._assertNotClosed();let t=e._module.get_private_spend_key(e._cppAddress);if(0===t.indexOf("error: "))throw new a(t.substring(errorStr.length));return t||void 0}))}async getPrivateViewKey(){let e=this;return e._module.queueTask((async function(){e._assertNotClosed();let t=e._module.get_private_view_key(e._cppAddress);if(0===t.indexOf("error: "))throw new a(t.substring(errorStr.length));return t||void 0}))}async getPublicViewKey(){let e=this;return e._module.queueTask((async function(){e._assertNotClosed();let t=e._module.get_public_view_key(e._cppAddress);if(0===t.indexOf("error: "))throw new a(t.substring(errorStr.length));return t||void 0}))}async getPublicSpendKey(){let e=this;return e._module.queueTask((async function(){e._assertNotClosed();let t=e._module.get_public_spend_key(e._cppAddress);if(0===t.indexOf("error: "))throw new a(t.substring(errorStr.length));return t||void 0}))}async getAddress(e,t){this._assertNotClosed(),i("number"==typeof e);let r=this;return r._module.queueTask((async function(){return r._assertNotClosed(),r._module.get_address(r._cppAddress,e,t)}))}async getAddressIndex(e){this._assertNotClosed();let t=this;return t._module.queueTask((async function(){t._assertNotClosed();let r=t._module.get_address_index(t._cppAddress,e);if("{"!==r.charAt(0))throw new a(r);return new s(JSON.parse(r))}))}getAccounts(){throw this._assertNotClosed(),new a("MoneroWalletKeys does not support getting an enumerable set of accounts; query specific accounts")}async close(e){if(this._isClosed)return;e&&await this.save();let t=this;return t._module.queueTask((async function(){return new Promise((function(e,r){t._isClosed?e():t._module.close(t._cppAddress,!1,(async function(){delete t._cppAddress,t._isClosed=!0,e()}))}))}))}async isClosed(){return this._isClosed}async getPrimaryAddress(){return super.getPrimaryAddress(...arguments)}async getSubaddress(){return super.getSubaddress(...arguments)}_assertNotClosed(){if(this._isClosed)throw new a("Wallet is closed")}}e.exports=h},57987:(e,t,r)=>{const i=r(69282),n=r(63055).BigInteger,a=r(93444),o=r(85096),s=r(36693),u=r(28753),c=r(41235),l=r(30947),h=r(36242),p=r(29457),d=r(47766),f=r(35404),m=r(39407),g=r(91307),v=r(31243),y=r(64472),_=r(53011),b=r(34293),w=r(26749),E=r(50957),k=r(63413),S=r(69535),x=r(39749),j=r(69459),N=r(73717),M=r(27828),I=r(44769),A=r(17118),T=r(59692),R=r(36721),P=r(31857),O=r(61527),B=r(18489),C=r(58012),z=r(55540),F=r(54815),D=r(99919),q=r(63149),L=r(64232),U=r(57773),H=r(28103),K=r(13751);class W extends F{constructor(e,t,r,i){if(super(),a.isArray(e))throw new g("Array with command parameters is invalid first parameter, use `await monerojs.connectToWalletRpc(...)`");this.config=W._normalizeConfig(e,t,r,i),this.rpc=new N(this.config),this.addressCache={},this.syncPeriodInMs=W.DEFAULT_SYNC_PERIOD_IN_MS,this.listeners=[]}static async _connectToWalletRpc(e,t,r,i){return a.isArray(e)?W._startWalletRpcProcess(e):new W(...arguments)}static async _startWalletRpcProcess(e){let t;i(a.isArray(e),"Must provide string array with command line parameters"),this.process=r(43448).spawn(e[0],e.slice(1),{}),this.process.stdout.setEncoding("utf8"),this.process.stderr.setEncoding("utf8");let n=this,s="";return new Promise((function(r,i){n.process.stdout.on("data",(function(i){let a=i.toString();o.log(2,a),s+=a+"\n";let u="Binding on ",c=a.indexOf(u);if(c>=0){let r=a.substring(c+u.length,a.lastIndexOf(" ")),i=a.replace(/\u001b\[.*?m/g,"").trim(),n=i.substring(i.lastIndexOf(":")+1),o=e.indexOf("--rpc-ssl"),s=o>=0&&"enabled"==e[o+1].toLowerCase();t=(s?"https":"http")+"://"+r+":"+n}if(a.indexOf("Starting wallet RPC server")>=0){let i=e.indexOf("--rpc-login"),a=i>=0?e[i+1]:void 0,o=void 0===a?void 0:a.substring(0,a.indexOf(":")),s=void 0===a?void 0:a.substring(a.indexOf(":")+1),u=new W(t,o,s);u.process=n.process,this.isResolved=!0,r(u)}})),n.process.stderr.on("data",(function(e){o.getLogLevel()>=2&&console.error(e)})),n.process.on("exit",(function(e){this.isResolved||i(new g("monero-wallet-rpc process terminated with exit code "+e+(s?":\n\n"+s:"")))})),n.process.on("error",(function(t){t.message.indexOf("ENOENT")>=0&&i(new g("monero-wallet-rpc does not exist at path '"+e[0]+"'")),this.isResolved||i(t)})),n.process.on("uncaughtException",(function(e,t){console.error("Uncaught exception in monero-wallet-rpc process: "+e.message),console.error(t),i(e)}))}))}getProcess(){return this.process}async stopProcess(e){if(void 0===this.process)throw new g("MoneroWalletRpc instance not created from new process");let t=a.copyArray(this.getListeners());for(let e of t)await this.removeListener(e);return a.killProcess(this.process,e?"sigkill":void 0)}getRpcConnection(){return this.rpc}async openWallet(e,t){let r=new D("string"==typeof e?{path:e,password:t||""}:e);if(!r.getPath())throw new g("Must provide name of wallet to open");return await this.rpc.sendJsonRequest("open_wallet",{filename:r.getPath(),password:r.getPassword()}),await this._clear(),this.path=r.getPath(),r.getServer()?this.setDaemonConnection(r.getServer()):this}async createWallet(e){if(void 0===e)throw new g("Must provide config to create wallet");if(void 0!==(e=new D(e)).getSeed()&&(void 0!==e.getPrimaryAddress()||void 0!==e.getPrivateViewKey()||void 0!==e.getPrivateSpendKey()))throw new g("Wallet may be initialized with a seed or keys but not both");if(void 0!==e.getNetworkType())throw new g("Cannot provide networkType when creating RPC wallet because server's network type is already set");if(void 0!==e.getAccountLookahead()||void 0!==e.getSubaddressLookahead())throw new g("monero-wallet-rpc does not support creating wallets with subaddress lookahead over rpc");return void 0===e.getPassword()&&e.setPassword(""),void 0!==e.getSeed()?await this._createWalletFromSeed(e):void 0!==e.getPrivateSpendKey()||void 0!==e.getPrimaryAddress()?await this._createWalletFromKeys(e):await this._createWalletRandom(e),e.getServer()?this.setDaemonConnection(e.getServer()):this}async _createWalletRandom(e){if(void 0!==e.getSeedOffset())throw new g("Cannot provide seedOffset when creating random wallet");if(void 0!==e.getRestoreHeight())throw new g("Cannot provide restoreHeight when creating random wallet");if(!1===e.getSaveCurrent())throw new g("Current wallet is saved automatically when creating random wallet");if(!e.getPath())throw new g("Name is not initialized");e.getLanguage()||e.setLanguage(F.DEFAULT_LANGUAGE);let t={filename:e.getPath(),password:e.getPassword(),language:e.getLanguage()};try{await this.rpc.sendJsonRequest("create_wallet",t)}catch(t){this._handleCreateWalletError(e.getPath(),t)}return await this._clear(),this.path=e.getPath(),this}async _createWalletFromSeed(e){try{await this.rpc.sendJsonRequest("restore_deterministic_wallet",{filename:e.getPath(),password:e.getPassword(),seed:e.getSeed(),seed_offset:e.getSeedOffset(),enable_multisig_experimental:e.isMultisig(),restore_height:e.getRestoreHeight(),language:e.getLanguage(),autosave_current:e.getSaveCurrent()})}catch(t){this._handleCreateWalletError(e.getPath(),t)}return await this._clear(),this.path=e.getPath(),this}async _createWalletFromKeys(e){if(void 0!==e.getSeedOffset())throw new g("Cannot provide seedOffset when creating wallet from keys");void 0===e.getRestoreHeight()&&e.setRestoreHeight(0),void 0===e.getLanguage()&&e.setLanguage(F.DEFAULT_LANGUAGE);try{await this.rpc.sendJsonRequest("generate_from_keys",{filename:e.getPath(),password:e.getPassword(),address:e.getPrimaryAddress(),viewkey:e.getPrivateViewKey(),spendkey:e.getPrivateSpendKey(),restore_height:e.getRestoreHeight(),autosave_current:e.getSaveCurrent()})}catch(t){this._handleCreateWalletError(e.getPath(),t)}return await this._clear(),this.path=e.getPath(),this}_handleCreateWalletError(e,t){if("Cannot create wallet. Already exists."===t.message)throw new M("Wallet already exists: "+e,t.getCode(),t.getRpcMethod(),t.getRpcParams());if("Electrum-style word list failed verification"===t.message)throw new M("Invalid mnemonic",t.getCode(),t.getRpcMethod(),t.getRpcParams());throw t}async isViewOnly(){try{return await this.rpc.sendJsonRequest("query_key",{key_type:"mnemonic"}),!1}catch(e){if(-29===e.getCode())return!0;if(-1===e.getCode())return!1;throw e}}async setDaemonConnection(e,t,r){let i=e?e instanceof N?e:new N(e):void 0;r||(r=new K);let n={};n.address=i?i.getUri():"bad_uri",n.username=i?i.getUsername():"",n.password=i?i.getPassword():"",n.trusted=t,n.ssl_support="autodetect",n.ssl_private_key_path=r.getPrivateKeyPath(),n.ssl_certificate_path=r.getCertificatePath(),n.ssl_ca_file=r.getCertificateAuthorityFile(),n.ssl_allowed_fingerprints=r.getAllowedFingerprints(),n.ssl_allow_any_cert=r.getAllowAnyCert(),await this.rpc.sendJsonRequest("set_daemon",n),this.daemonConnection=i}async getDaemonConnection(){return this.daemonConnection}async addListener(e){i(e instanceof q,"Listener must be instance of MoneroWalletListener"),this.listeners.push(e),this._refreshListening()}async removeListener(e){let t=this.listeners.indexOf(e);if(!(t>-1))throw new g("Listener is not registered with wallet");this.listeners.splice(t,1),this._refreshListening()}getListeners(){return this.listeners}async isConnectedToDaemon(){try{throw await this.checkReserveProof(await this.getPrimaryAddress(),"",""),new g("check reserve expected to fail")}catch(e){return e.message.indexOf("Failed to connect to daemon")<0}}async getVersion(){let e=await this.rpc.sendJsonRequest("get_version");return new z(e.result.version,e.result.release)}async getPath(){return this.path}async getSeed(){return(await this.rpc.sendJsonRequest("query_key",{key_type:"mnemonic"})).result.key}async getSeedLanguage(){if(void 0!==await this.getSeed())throw new g("MoneroWalletRpc.getSeedLanguage() not supported")}async getSeedLanguages(){return(await this.rpc.sendJsonRequest("get_languages")).result.languages}async getPrivateViewKey(){return(await this.rpc.sendJsonRequest("query_key",{key_type:"view_key"})).result.key}async getPrivateSpendKey(){return(await this.rpc.sendJsonRequest("query_key",{key_type:"spend_key"})).result.key}async getAddress(e,t){let r=this.addressCache[e];return r?r[t]||(await this.getSubaddresses(e,void 0,!0),this.addressCache[e][t]):(await this.getSubaddresses(e,void 0,!0),this.getAddress(e,t))}async getAddressIndex(e){let t;try{t=await this.rpc.sendJsonRequest("get_address_index",{address:e})}catch(e){if(-2===e.getCode())throw new g(e.message);throw e}let r=new I(e);return r.setAccountIndex(t.result.index.major),r.setIndex(t.result.index.minor),r}async getIntegratedAddress(e,t){try{let r=(await this.rpc.sendJsonRequest("make_integrated_address",{standard_address:e,payment_id:t})).result.integrated_address;return await this.decodeIntegratedAddress(r)}catch(e){if(e.message.includes("Invalid payment ID"))throw new g("Invalid payment ID: "+t);throw e}}async decodeIntegratedAddress(e){let t=await this.rpc.sendJsonRequest("split_integrated_address",{integrated_address:e});return(new y).setStandardAddress(t.result.standard_address).setPaymentId(t.result.payment_id).setIntegratedAddress(e)}async getHeight(){return(await this.rpc.sendJsonRequest("get_height")).result.height}async getDaemonHeight(){throw new g("monero-wallet-rpc does not support getting the chain height")}async getHeightByDate(e,t,r){throw new g("monero-wallet-rpc does not support getting a height by date")}async sync(e,t){i(void 0===t,"Monero Wallet RPC does not support reporting sync progress");try{let t=await this.rpc.sendJsonRequest("refresh",{start_height:e},0);return await this._poll(),new A(t.result.blocks_fetched,t.result.received_money)}catch(e){if("no connection to daemon"===e.message)throw new g("Wallet is not connected to daemon");throw e}}async startSyncing(e){let t=Math.round((void 0===e?W.DEFAULT_SYNC_PERIOD_IN_MS:e)/1e3);await this.rpc.sendJsonRequest("auto_refresh",{enable:!0,period:t}),this.syncPeriodInMs=1e3*t,void 0!==this.walletPoller&&this.walletPoller.setPeriodInMs(e),await this._poll()}async stopSyncing(){return this.rpc.sendJsonRequest("auto_refresh",{enable:!1})}async scanTxs(e){if(!e||!e.length)throw new g("No tx hashes given to scan");await this.rpc.sendJsonRequest("scan_tx",{txids:e}),await this._poll()}async rescanSpent(){await this.rpc.sendJsonRequest("rescan_spent",void 0,0)}async rescanBlockchain(){await this.rpc.sendJsonRequest("rescan_blockchain",void 0,0)}async getBalance(e,t){return(await this._getBalances(e,t))[0]}async getUnlockedBalance(e,t){return(await this._getBalances(e,t))[1]}async getAccounts(e,t,r){let a=await this.rpc.sendJsonRequest("get_accounts",{tag:t}),o=[];for(let t of a.result.subaddress_accounts){let r=W._convertRpcAccount(t);e&&r.setSubaddresses(await this.getSubaddresses(r.getIndex(),void 0,!0)),o.push(r)}if(e&&!r){for(let e of o)for(let t of e.getSubaddresses())t.setBalance(new n(0)),t.setUnlockedBalance(new n(0)),t.setNumUnspentOutputs(0),t.setNumBlocksToUnlock(0);if(a=await this.rpc.sendJsonRequest("get_balance",{all_accounts:!0}),a.result.per_subaddress)for(let e of a.result.per_subaddress){let t=W._convertRpcSubaddress(e),r=o[t.getAccountIndex()];i.equal(t.getAccountIndex(),r.getIndex(),"RPC accounts are out of order");let n=r.getSubaddresses()[t.getIndex()];i.equal(t.getIndex(),n.getIndex(),"RPC subaddresses are out of order"),void 0!==t.getBalance()&&n.setBalance(t.getBalance()),void 0!==t.getUnlockedBalance()&&n.setUnlockedBalance(t.getUnlockedBalance()),void 0!==t.getNumUnspentOutputs()&&n.setNumUnspentOutputs(t.getNumUnspentOutputs())}}return o}async getAccount(e,t,r){i(e>=0);for(let i of await this.getAccounts())if(i.getIndex()===e)return t&&i.setSubaddresses(await this.getSubaddresses(e,void 0,r)),i;throw new Exception("Account with index "+e+" does not exist")}async createAccount(e){e=e||void 0;let t=await this.rpc.sendJsonRequest("create_account",{label:e});return new u(t.result.account_index,t.result.address,new n(0),new n(0))}async getSubaddresses(e,t,r){let i={};i.account_index=e,t&&(i.address_index=a.listify(t));let o=await this.rpc.sendJsonRequest("get_address",i),s=[];for(let t of o.result.addresses){let r=W._convertRpcSubaddress(t);r.setAccountIndex(e),s.push(r)}if(!r){for(let e of s)e.setBalance(new n(0)),e.setUnlockedBalance(new n(0)),e.setNumUnspentOutputs(0),e.setNumBlocksToUnlock(0);if(o=await this.rpc.sendJsonRequest("get_balance",i),o.result.per_subaddress)for(let e of o.result.per_subaddress){let t=W._convertRpcSubaddress(e);for(let e of s)e.getIndex()===t.getIndex()&&(void 0!==t.getBalance()&&e.setBalance(t.getBalance()),void 0!==t.getUnlockedBalance()&&e.setUnlockedBalance(t.getUnlockedBalance()),void 0!==t.getNumUnspentOutputs()&&e.setNumUnspentOutputs(t.getNumUnspentOutputs()),void 0!==t.getNumBlocksToUnlock()&&e.setNumBlocksToUnlock(t.getNumBlocksToUnlock()))}}let u=this.addressCache[e];u||(u={},this.addressCache[e]=u);for(let e of s)u[e.getIndex()]=e.getAddress();return s}async getSubaddress(e,t,r){return i(e>=0),i(t>=0),(await this.getSubaddresses(e,t,r))[0]}async createSubaddress(e,t){let r=await this.rpc.sendJsonRequest("create_address",{account_index:e,label:t}),i=new I;return i.setAccountIndex(e),i.setIndex(r.result.address_index),i.setAddress(r.result.address),i.setLabel(t||void 0),i.setBalance(new n(0)),i.setUnlockedBalance(new n(0)),i.setNumUnspentOutputs(0),i.setIsUsed(!1),i.setNumBlocksToUnlock(0),i}async setSubaddressLabel(e,t,r){await this.rpc.sendJsonRequest("label_address",{index:{major:e,minor:t},label:r})}async getTxs(e){let t=(e=F._normalizeTxQuery(e)).getTransferQuery(),r=e.getInputQuery(),i=e.getOutputQuery();e.setTransferQuery(void 0),e.setInputQuery(void 0),e.setOutputQuery(void 0);let n=await this._getTransfersAux((new T).setTxQuery(W._decontextualize(e.copy()))),a=[],o=new Set;for(let e of n)o.has(e.getTx())||(a.push(e.getTx()),o.add(e.getTx()));let s={},u={};for(let e of a)W._mergeTx(e,s,u);if(e.getIncludeOutputs()||i){let t=(i?i.copy():new x).setTxQuery(W._decontextualize(e.copy())),r=await this._getOutputsAux(t),n=[];for(let e of r)n.includes(e.getTx())||(W._mergeTx(e.getTx(),s,u),n.push(e.getTx()))}e.setTransferQuery(t),e.setInputQuery(r),e.setOutputQuery(i);let c=[];for(let t of a)e.meetsCriteria(t)?c.push(t):void 0!==t.getBlock()&&t.getBlock().getTxs().splice(t.getBlock().getTxs().indexOf(t),1);a=c;for(let t of a)if(t.isConfirmed()&&void 0===t.getBlock())return console.error("Inconsistency detected building txs from multiple rpc calls, re-fetching txs"),this.getTxs(e);if(e.getHashes()&&e.getHashes().length>0){let t=new Map;for(let e of a)t.set(e.getHash(),e);let r=[];for(let i of e.getHashes())t.get(i)&&r.push(t.get(i));a=r}return a}async getTransfers(e){if(e=F._normalizeTransferQuery(e),!W._isContextual(e))return this._getTransfersAux(e);let t=[];for(let r of await this.getTxs(e.getTxQuery()))for(let i of r.filterTransfers(e))t.push(i);return t}async getOutputs(e){if(e=F._normalizeOutputQuery(e),!W._isContextual(e))return this._getOutputsAux(e);let t=[];for(let r of await this.getTxs(e.getTxQuery()))for(let i of r.filterOutputs(e))t.push(i);return t}async exportOutputs(e){return(await this.rpc.sendJsonRequest("export_outputs",{all:e})).result.outputs_data_hex}async importOutputs(e){return(await this.rpc.sendJsonRequest("import_outputs",{outputs_data_hex:e})).result.num_imported}async exportKeyImages(e){return await this._rpcExportKeyImages(e)}async importKeyImages(e){let t=e.map((e=>({key_image:e.getHex(),signature:e.getSignature()}))),r=await this.rpc.sendJsonRequest("import_key_images",{signed_key_images:t}),i=new b;return i.setHeight(r.result.height),i.setSpentAmount(new n(r.result.spent)),i.setUnspentAmount(new n(r.result.unspent)),i}async getNewKeyImagesFromLastImport(){return await this._rpcExportKeyImages(!1)}async freezeOutput(e){return this.rpc.sendJsonRequest("freeze",{key_image:e})}async thawOutput(e){return this.rpc.sendJsonRequest("thaw",{key_image:e})}async isOutputFrozen(e){return!0===(await this.rpc.sendJsonRequest("frozen",{key_image:e})).result.frozen}async createTxs(e){if(void 0===(e=F._normalizeCreateTxsConfig(e)).getCanSplit()&&e.setCanSplit(!0),!0===e.getRelay()&&await this.isMultisig())throw new g("Cannot relay multisig transaction until co-signed");let t=e.getAccountIndex();if(void 0===t)throw new g("Must provide the account index to send from");let r,n,a=void 0===e.getSubaddressIndices()?void 0:e.getSubaddressIndices().slice(0),o={destinations:[]};for(let t of e.getDestinations())i(t.getAddress(),"Destination address is not defined"),i(t.getAmount(),"Destination amount is not defined"),o.destinations.push({address:t.getAddress(),amount:t.getAmount().toString()});if(e.getSubtractFeeFrom()&&(o.subtract_fee_from_outputs=e.getSubtractFeeFrom()),o.account_index=t,o.subaddr_indices=a,o.payment_id=e.getPaymentId(),void 0!==e.getUnlockTime()&&(o.unlock_time=e.getUnlockTime().toString()),o.do_not_relay=!0!==e.getRelay(),i(void 0===e.getPriority()||e.getPriority()>=0&&e.getPriority()<=3),o.priority=e.getPriority(),o.get_tx_hex=!0,o.get_tx_metadata=!0,e.getCanSplit()?o.get_tx_keys=!0:o.get_tx_key=!0,e.getCanSplit()&&e.getSubtractFeeFrom()&&e.getSubtractFeeFrom().length>0)throw new g("subtractfeefrom transfers cannot be split over multiple transactions yet");try{r=(await this.rpc.sendJsonRequest(e.getCanSplit()?"transfer_split":"transfer",o)).result}catch(e){if(e.message.indexOf("WALLET_RPC_ERROR_CODE_WRONG_ADDRESS")>-1)throw new g("Invalid destination address");throw e}let s=e.getCanSplit()?void 0!==r.fee_list?r.fee_list.length:0:void 0!==r.fee?1:0;s>0&&(n=[]);let u=1===s;for(let r=0;r=0&&e.getPriority()<=3),t.priority=e.getPriority(),t.payment_id=e.getPaymentId(),t.get_tx_key=!0,t.get_tx_hex=!0,t.get_tx_metadata=!0;let r=(await this.rpc.sendJsonRequest("sweep_single",t)).result;e.getRelay()&&await this._poll();let n=W._initSentTxWallet(e,void 0,!0);return W._convertRpcTxToTxSet(r,n,!0,e),n.getOutgoingTransfer().getDestinations()[0].setAmount(n.getOutgoingTransfer().getAmount()),n}async sweepUnlocked(e){e=F._normalizeSweepUnlockedConfig(e);let t=new Map;if(void 0!==e.getAccountIndex())if(void 0!==e.getSubaddressIndices())t.set(e.getAccountIndex(),e.getSubaddressIndices());else{let r=[];t.set(e.getAccountIndex(),r);for(let t of await this.getSubaddresses(e.getAccountIndex()))t.getUnlockedBalance().compare(new n(0))>0&&r.push(t.getIndex())}else{let e=await this.getAccounts(!0);for(let r of e)if(r.getUnlockedBalance().compare(new n(0))>0){let e=[];t.set(r.getIndex(),e);for(let t of r.getSubaddresses())t.getUnlockedBalance().compare(new n(0))>0&&e.push(t.getIndex())}}let r=[];for(let i of t.keys()){let n=e.copy();if(n.setAccountIndex(i),n.setSweepEachSubaddress(!1),!0!==n.getSweepEachSubaddress()){n.setSubaddressIndices(t.get(i));for(let e of await this._rpcSweepAccount(n))r.push(e)}else for(let e of t.get(i)){n.setSubaddressIndices([e]);for(let e of await this._rpcSweepAccount(n))r.push(e)}}return e.getRelay()&&await this._poll(),r}async sweepDust(e){void 0===e&&(e=!1);let t=await this.rpc.sendJsonRequest("sweep_dust",{do_not_relay:!e});e&&await this._poll();let r=t.result,i=W._convertRpcSentTxsToTxSet(r);if(void 0===i.getTxs())return[];for(let t of i.getTxs())t.setIsRelayed(!e),t.setInTxPool(t.isRelayed());return i.getTxs()}async relayTxs(e){i(Array.isArray(e),"Must provide an array of txs or their metadata to relay");let t=[];for(let r of e){let e=r instanceof B?r.getMetadata():r,i=await this.rpc.sendJsonRequest("relay_tx",{hex:e});t.push(i.result.tx_hash)}return await this._poll(),t}async describeTxSet(e){let t=await this.rpc.sendJsonRequest("describe_transfer",{unsigned_txset:e.getUnsignedTxHex(),multisig_txset:e.getMultisigTxHex()});return W._convertRpcDescribeTransfer(t.result)}async signTxs(e){let t=await this.rpc.sendJsonRequest("sign_transfer",{unsigned_txset:e,export_raw:!1});return await this._poll(),t.result.signed_txset}async submitTxs(e){let t=await this.rpc.sendJsonRequest("submit_transfer",{tx_data_hex:e});return await this._poll(),t.result.tx_hash_list}async signMessage(e,t,r,i){return(await this.rpc.sendJsonRequest("sign",{data:e,signature_type:t===L.SIGN_WITH_SPEND_KEY?"spend":"view",account_index:r,address_index:i})).result.signature}async verifyMessage(e,t,r){try{let i=await this.rpc.sendJsonRequest("verify",{data:e,address:t,signature:r});return new U(i.result.good,i.result.good?i.result.old:void 0,i.result.good&&i.result.signature_type?"view"===i.result.signature_type?L.SIGN_WITH_VIEW_KEY:L.SIGN_WITH_SPEND_KEY:void 0,i.result.good?i.result.version:void 0)}catch(e){if(-2===e.getCode())return new U(!1);throw e}}async getTxKey(e){try{return(await this.rpc.sendJsonRequest("get_tx_key",{txid:e})).result.tx_key}catch(e){throw e instanceof M&&-8===e.getCode()&&e.message.includes("TX ID has invalid format")&&(e=new M("TX hash has invalid format",e.getCode(),e.getRpcMethod(),e.getRpcParams())),e}}async checkTxKey(e,t,r){try{let i=await this.rpc.sendJsonRequest("check_tx_key",{txid:e,tx_key:t,address:r}),a=new f;return a.setIsGood(!0),a.setNumConfirmations(i.result.confirmations),a.setInTxPool(i.result.in_pool),a.setReceivedAmount(new n(i.result.received)),a}catch(e){throw e instanceof M&&-8===e.getCode()&&e.message.includes("TX ID has invalid format")&&(e=new M("TX hash has invalid format",e.getCode(),e.getRpcMethod(),e.getRpcParams())),e}}async getTxProof(e,t,r){try{return(await this.rpc.sendJsonRequest("get_tx_proof",{txid:e,address:t,message:r})).result.signature}catch(e){throw e instanceof M&&-8===e.getCode()&&e.message.includes("TX ID has invalid format")&&(e=new M("TX hash has invalid format",e.getCode(),e.getRpcMethod(),e.getRpcParams())),e}}async checkTxProof(e,t,r,i){try{let a=await this.rpc.sendJsonRequest("check_tx_proof",{txid:e,address:t,message:r,signature:i}),o=a.result.good,s=new f;return s.setIsGood(o),o&&(s.setNumConfirmations(a.result.confirmations),s.setInTxPool(a.result.in_pool),s.setReceivedAmount(new n(a.result.received))),s}catch(e){throw e instanceof M&&-1===e.getCode()&&"basic_string"===e.message&&(e=new M("Must provide signature to check tx proof",-1)),e instanceof M&&-8===e.getCode()&&e.message.includes("TX ID has invalid format")&&(e=new M("TX hash has invalid format",e.getCode(),e.getRpcMethod(),e.getRpcParams())),e}}async getSpendProof(e,t){try{return(await this.rpc.sendJsonRequest("get_spend_proof",{txid:e,message:t})).result.signature}catch(e){throw e instanceof M&&-8===e.getCode()&&e.message.includes("TX ID has invalid format")&&(e=new M("TX hash has invalid format",e.getCode(),e.getRpcMethod(),e.getRpcParams())),e}}async checkSpendProof(e,t,r){try{return(await this.rpc.sendJsonRequest("check_spend_proof",{txid:e,message:t,signature:r})).result.good}catch(e){throw e instanceof M&&-8===e.getCode()&&e.message.includes("TX ID has invalid format")&&(e=new M("TX hash has invalid format",e.getCode(),e.getRpcMethod(),e.getRpcParams())),e}}async getReserveProofWallet(e){return(await this.rpc.sendJsonRequest("get_reserve_proof",{all:!0,message:e})).result.signature}async getReserveProofAccount(e,t,r){return(await this.rpc.sendJsonRequest("get_reserve_proof",{account_index:e,amount:t.toString(),message:r})).result.signature}async checkReserveProof(e,t,r){let i=await this.rpc.sendJsonRequest("check_reserve_proof",{address:e,message:t,signature:r}),a=i.result.good,o=new d;return o.setIsGood(a),a&&(o.setUnconfirmedSpentAmount(new n(i.result.spent)),o.setTotalAmount(new n(i.result.total))),o}async getTxNotes(e){return(await this.rpc.sendJsonRequest("get_tx_notes",{txids:e})).result.notes}async setTxNotes(e,t){await this.rpc.sendJsonRequest("set_tx_notes",{txids:e,notes:t})}async getAddressBookEntries(e){let t=await this.rpc.sendJsonRequest("get_address_book",{entries:e});if(!t.result.entries)return[];let r=[];for(let e of t.result.entries)r.push((new l).setIndex(e.index).setAddress(e.address).setDescription(e.description).setPaymentId(e.payment_id));return r}async addAddressBookEntry(e,t){return(await this.rpc.sendJsonRequest("add_address_book",{address:e,description:t})).result.index}async editAddressBookEntry(e,t,r,i,n){await this.rpc.sendJsonRequest("edit_address_book",{index:e,set_address:t,address:r,set_description:i,description:n})}async deleteAddressBookEntry(e){await this.rpc.sendJsonRequest("delete_address_book",{index:e})}async tagAccounts(e,t){await this.rpc.sendJsonRequest("tag_accounts",{tag:e,accounts:t})}async untagAccounts(e){await this.rpc.sendJsonRequest("untag_accounts",{accounts:e})}async getAccountTags(){let e=[],t=await this.rpc.sendJsonRequest("get_account_tags");if(t.result.account_tags)for(let r of t.result.account_tags)e.push(new c(r.tag?r.tag:void 0,r.label?r.label:void 0,r.accounts));return e}async setAccountTagLabel(e,t){await this.rpc.sendJsonRequest("set_account_tag_description",{tag:e,description:t})}async getPaymentUri(e){return e=F._normalizeCreateTxsConfig(e),(await this.rpc.sendJsonRequest("make_uri",{address:e.getDestinations()[0].getAddress(),amount:e.getDestinations()[0].getAmount()?e.getDestinations()[0].getAmount().toString():void 0,payment_id:e.getPaymentId(),recipient_name:e.getRecipientName(),tx_description:e.getNote()})).result.uri}async parsePaymentUri(e){i(e,"Must provide URI to parse");let t=await this.rpc.sendJsonRequest("parse_uri",{uri:e}),r=new R({address:t.result.uri.address,amount:new n(t.result.uri.amount)});return r.setPaymentId(t.result.uri.payment_id),r.setRecipientName(t.result.uri.recipient_name),r.setNote(t.result.uri.tx_description),""===r.getDestinations()[0].getAddress()&&r.getDestinations()[0].setAddress(void 0),""===r.getPaymentId()&&r.setPaymentId(void 0),""===r.getRecipientName()&&r.setRecipientName(void 0),""===r.getNote()&&r.setNote(void 0),r}async getAttribute(e){try{let t=await this.rpc.sendJsonRequest("get_attribute",{key:e});return""===t.result.value?void 0:t.result.value}catch(e){if(e instanceof M&&-45===e.getCode())return;throw e}}async setAttribute(e,t){await this.rpc.sendJsonRequest("set_attribute",{key:e,value:t})}async startMining(e,t,r){await this.rpc.sendJsonRequest("start_mining",{threads_count:e,do_background_mining:t,ignore_battery:r})}async stopMining(){await this.rpc.sendJsonRequest("stop_mining")}async isMultisigImportNeeded(){return!0===(await this.rpc.sendJsonRequest("get_balance")).result.multisig_import_needed}async getMultisigInfo(){let e=(await this.rpc.sendJsonRequest("is_multisig")).result,t=new w;return t.setIsMultisig(e.multisig),t.setIsReady(e.ready),t.setThreshold(e.threshold),t.setNumParticipants(e.total),t}async prepareMultisig(){let e=await this.rpc.sendJsonRequest("prepare_multisig",{enable_multisig_experimental:!0});return this.addressCache={},e.result.multisig_info}async makeMultisig(e,t,r){let i=await this.rpc.sendJsonRequest("make_multisig",{multisig_info:e,threshold:t,password:r});return this.addressCache={},i.result.multisig_info}async exchangeMultisigKeys(e,t){let r=await this.rpc.sendJsonRequest("exchange_multisig_keys",{multisig_info:e,password:t});this.addressCache={};let i=new E;return i.setAddress(r.result.address),i.setMultisigHex(r.result.multisig_info),0===i.getAddress().length&&i.setAddress(void 0),0===i.getMultisigHex().length&&i.setMultisigHex(void 0),i}async exportMultisigHex(){return(await this.rpc.sendJsonRequest("export_multisig_info")).result.info}async importMultisigHex(e){if(!a.isArray(e))throw new g("Must provide string[] to importMultisigHex()");return(await this.rpc.sendJsonRequest("import_multisig_info",{info:e})).result.n_outputs}async signMultisigTxHex(e){let t=(await this.rpc.sendJsonRequest("sign_multisig",{tx_data_hex:e})).result,r=new k;return r.setSignedMultisigTxHex(t.tx_data_hex),r.setTxHashes(t.tx_hash_list),r}async submitMultisigTxHex(e){return(await this.rpc.sendJsonRequest("submit_multisig",{tx_data_hex:e})).result.tx_hash_list}async changePassword(e,t){return this.rpc.sendJsonRequest("change_wallet_password",{old_password:e||"",new_password:t||""})}async save(){await this.rpc.sendJsonRequest("store")}async close(e){void 0===e&&(e=!1),await this._clear(),await this.rpc.sendJsonRequest("close_wallet",{autosave_current:e})}async isClosed(){try{await this.getPrimaryAddress()}catch(e){return e instanceof M&&-13===e.getCode()&&e.message.indexOf("No wallet file")>-1}return!1}async stop(){await this._clear(),await this.rpc.sendJsonRequest("stop_wallet")}async getNumBlocksToUnlock(){return super.getNumBlocksToUnlock(...arguments)}async getTx(){return super.getTx(...arguments)}async getIncomingTransfers(){return super.getIncomingTransfers(...arguments)}async getOutgoingTransfers(){return super.getOutgoingTransfers(...arguments)}async createTx(){return super.createTx(...arguments)}async relayTx(){return super.relayTx(...arguments)}async getTxNote(){return super.getTxNote(...arguments)}async setTxNote(){return super.setTxNote(...arguments)}async _clear(){this.listeners.splice(0,this.listeners.length),this._refreshListening(),delete this.addressCache,this.addressCache={},this.path=void 0}async _getBalances(e,t){if(void 0===e){i.equal(t,void 0,"Must provide account index with subaddress index");let e=new n(0),r=new n(0);for(let t of await this.getAccounts())e=e.add(t.getBalance()),r=r.add(t.getUnlockedBalance());return[e,r]}{let r={account_index:e,address_indices:void 0===t?void 0:[t]},i=await this.rpc.sendJsonRequest("get_balance",r);return void 0===t?[new n(i.result.balance),new n(i.result.unlocked_balance)]:[new n(i.result.per_subaddress[0].balance),new n(i.result.per_subaddress[0].unlocked_balance)]}}async _getAccountIndices(e){let t=new Map;for(let r of await this.getAccounts())t.set(r.getIndex(),e?await this._getSubaddressIndices(r.getIndex()):void 0);return t}async _getSubaddressIndices(e){let t=[],r=await this.rpc.sendJsonRequest("get_address",{account_index:e});for(let e of r.result.addresses)t.push(e.address_index);return t}async _getTransfersAux(e){let t=e.getTxQuery(),r=!1!==t.isConfirmed()&&!0!==t.inTxPool()&&!0!==t.isFailed()&&!1!==t.isRelayed(),a=!0!==t.isConfirmed()&&!1!==t.inTxPool()&&!0!==t.isFailed()&&void 0===t.getHeight()&&void 0===t.getMaxHeight()&&!1!==t.isLocked(),o=!1!==e.isIncoming()&&!0!==e.isOutgoing()&&!0!==e.hasDestinations(),s=!1!==e.isOutgoing()&&!0!==e.isIncoming();if(!0===t.inTxPool()&&!a)throw new g("Cannot fetch pool transactions because it contradicts configuration");let u={};if(u.in=o&&r,u.out=s&&r,u.pool=o&&a,u.pending=s&&a,u.failed=!1!==t.isFailed()&&!0!==t.isConfirmed()&&1!=t.inTxPool(),void 0!==t.getMinHeight()&&(t.getMinHeight()>0?u.min_height=t.getMinHeight()-1:u.min_height=t.getMinHeight()),void 0!==t.getMaxHeight()&&(u.max_height=t.getMaxHeight()),u.filter_by_height=void 0!==t.getMinHeight()||void 0!==t.getMaxHeight(),void 0===e.getAccountIndex())i(void 0===e.getSubaddressIndex()&&void 0===e.getSubaddressIndices(),"Query specifies a subaddress index but not an account index"),u.all_accounts=!0;else{u.account_index=e.getAccountIndex();let t=new Set;void 0!==e.getSubaddressIndex()&&t.add(e.getSubaddressIndex()),void 0!==e.getSubaddressIndices()&&e.getSubaddressIndices().map((e=>t.add(e))),t.size&&(u.subaddr_indices=Array.from(t))}let c={},l={},h=await this.rpc.sendJsonRequest("get_transfers",u);for(let e of Object.keys(h.result))for(let t of h.result[e]){let e=W._convertRpcTxWithTransfer(t);if(e.isConfirmed()&&i(e.getBlock().getTxs().indexOf(e)>-1),void 0!==e.getOutgoingTransfer()&&e.isRelayed()&&!e.isFailed()&&e.getOutgoingTransfer().getDestinations()&&0===e.getOutgoingAmount().compare(new n(0))){let t=e.getOutgoingTransfer(),r=new n(0);for(let e of t.getDestinations())r=r.add(e.getAmount());e.getOutgoingTransfer().setAmount(r)}W._mergeTx(e,c,l)}let p=Object.values(c);p.sort(W._compareTxsByHeight);let d=[];for(let t of p){void 0===t.isIncoming()&&t.setIsIncoming(!1),void 0===t.isOutgoing()&&t.setIsOutgoing(!1),void 0!==t.getIncomingTransfers()&&t.getIncomingTransfers().sort(W._compareIncomingTransfers);for(let r of t.filterTransfers(e))d.push(r);void 0!==t.getBlock()&&void 0===t.getOutgoingTransfer()&&void 0===t.getIncomingTransfers()&&t.getBlock().getTxs().splice(t.getBlock().getTxs().indexOf(t),1)}return d}async _getOutputsAux(e){let t=new Map;if(void 0!==e.getAccountIndex()){let r=new Set;void 0!==e.getSubaddressIndex()&&r.add(e.getSubaddressIndex()),void 0!==e.getSubaddressIndices()&&e.getSubaddressIndices().map((e=>r.add(e))),t.set(e.getAccountIndex(),r.size?Array.from(r):void 0)}else i.equal(e.getSubaddressIndex(),void 0,"Query specifies a subaddress index but not an account index"),i(void 0===e.getSubaddressIndices()||0===e.getSubaddressIndices().length,"Query specifies subaddress indices but not an account index"),t=await this._getAccountIndices();let r={},n={},a={};a.transfer_type=!0===e.isSpent()?"unavailable":!1===e.isSpent()?"available":"all",a.verbose=!0;for(let e of t.keys()){a.account_index=e,a.subaddr_indices=t.get(e);let i=await this.rpc.sendJsonRequest("incoming_transfers",a);if(void 0!==i.result.transfers)for(let e of i.result.transfers){let t=W._convertRpcTxWalletWithOutput(e);W._mergeTx(t,r,n)}}let o=Object.values(r);o.sort(W._compareTxsByHeight);let s=[];for(let t of o){void 0!==t.getOutputs()&&t.getOutputs().sort(W._compareOutputs);for(let r of t.filterOutputs(e))s.push(r);void 0===t.getOutputs()&&void 0!==t.getBlock()&&t.getBlock().getTxs().splice(t.getBlock().getTxs().indexOf(t),1)}return s}async _rpcExportKeyImages(e){let t=await this.rpc.sendJsonRequest("export_key_images",{all:e});return t.result.signed_key_images?t.result.signed_key_images.map((e=>new _(e.key_image,e.signature))):[]}async _rpcSweepAccount(e){if(void 0===e)throw new g("Must provide sweep config");if(void 0===e.getAccountIndex())throw new g("Must provide an account index to sweep from");if(void 0===e.getDestinations()||1!=e.getDestinations().length)throw new g("Must provide exactly one destination to sweep to");if(void 0===e.getDestinations()[0].getAddress())throw new g("Must provide destination address to sweep to");if(void 0!==e.getDestinations()[0].getAmount())throw new g("Cannot specify amount in sweep config");if(void 0!==e.getKeyImage())throw new g("Key image defined; use sweepOutput() to sweep an output by its key image");if(void 0!==e.getSubaddressIndices()&&0===e.getSubaddressIndices().length)throw new g("Empty list given for subaddresses indices to sweep");if(e.getSweepEachSubaddress())throw new g("Cannot sweep each subaddress with RPC `sweep_all`");if(void 0!==e.getSubtractFeeFrom()&&e.getSubtractFeeFrom().length>0)throw new g("Sweeping output does not support subtracting fees from destinations");if(void 0===e.getSubaddressIndices()){e.setSubaddressIndices([]);for(let t of await this.getSubaddresses(e.getAccountIndex()))e.getSubaddressIndices().push(t.getIndex())}if(0===e.getSubaddressIndices().length)throw new g("No subaddresses to sweep from");let t={},r=!0===e.getRelay();t.account_index=e.getAccountIndex(),t.subaddr_indices=e.getSubaddressIndices(),t.address=e.getDestinations()[0].getAddress(),i(void 0===e.getPriority()||e.getPriority()>=0&&e.getPriority()<=3),t.priority=e.getPriority(),void 0!==e.getUnlockTime()&&(t.unlock_time=e.getUnlockTime()),t.payment_id=e.getPaymentId(),t.do_not_relay=!r,t.below_amount=e.getBelowAmount(),t.get_tx_keys=!0,t.get_tx_hex=!0,t.get_tx_metadata=!0;let a=(await this.rpc.sendJsonRequest("sweep_all",t)).result,o=W._convertRpcSentTxsToTxSet(a,void 0,e);for(let t of o.getTxs()){t.setIsLocked(!0),t.setIsConfirmed(!1),t.setNumConfirmations(0),t.setRelay(r),t.setInTxPool(r),t.setIsRelayed(r),t.setIsMinerTx(!1),t.setIsFailed(!1),t.setRingSize(C.RING_SIZE);let i=t.getOutgoingTransfer();i.setAccountIndex(e.getAccountIndex()),1===e.getSubaddressIndices().length&&i.setSubaddressIndices(e.getSubaddressIndices());let a=new m(e.getDestinations()[0].getAddress(),new n(i.getAmount()));i.setDestinations([a]),t.setOutgoingTransfer(i),t.setPaymentId(e.getPaymentId()),void 0===t.getUnlockTime()&&t.setUnlockTime(void 0===e.getUnlockTime()?0:e.getUnlockTime()),t.getRelay()&&(void 0===t.getLastRelayedTimestamp()&&t.setLastRelayedTimestamp(+(new Date).getTime()),void 0===t.isDoubleSpendSeen()&&t.setIsDoubleSpend(!1))}return o.getTxs()}_refreshListening(){null==this.walletPoller&&this.listeners.length&&(this.walletPoller=new Z(this)),void 0!==this.walletPoller&&this.walletPoller.setIsPolling(this.listeners.length>0)}async _poll(){void 0!==this.walletPoller&&this.walletPoller._isPolling&&await this.walletPoller.poll()}static _normalizeConfig(e,t,r,i){let n;if("string"==typeof e)n={uri:e,username:t,password:r,rejectUnauthorized:i};else{if("object"!=typeof e)throw new g("Invalid configuration to create rpc client; must be string, object, or MoneroRpcConnection");if(t||r||i)throw new g("Can provide config object or params or new MoneroDaemonRpc(...) but not both");n=e instanceof N?Object.assign({},e.getConfig()):Object.assign({},e)}return n.server&&(n=Object.assign(n,new N(n.server).getConfig()),delete n.server),n}static _decontextualize(e){return e.setIsIncoming(void 0),e.setIsOutgoing(void 0),e.setTransferQuery(void 0),e.setInputQuery(void 0),e.setOutputQuery(void 0),e}static _isContextual(e){if(!e)return!1;if(!e.getTxQuery())return!1;if(void 0!==e.getTxQuery().isIncoming())return!0;if(void 0!==e.getTxQuery().isOutgoing())return!0;if(e instanceof T){if(void 0!==e.getTxQuery().getOutputQuery())return!0}else{if(!(e instanceof x))throw new g("query must be tx or transfer query");if(void 0!==e.getTxQuery().getTransferQuery())return!0}return!1}static _convertRpcAccount(e){let t=new u;for(let r of Object.keys(e)){let i=e[r];"account_index"===r?t.setIndex(i):"balance"===r?t.setBalance(new n(i)):"unlocked_balance"===r?t.setUnlockedBalance(new n(i)):"base_address"===r?t.setPrimaryAddress(i):"tag"===r?t.setTag(i):"label"===r||console.log("WARNING: ignoring unexpected account field: "+r+": "+i)}return""===t.getTag()&&t.setTag(void 0),t}static _convertRpcSubaddress(e){let t=new I;for(let r of Object.keys(e)){let i=e[r];"account_index"===r?t.setAccountIndex(i):"address_index"===r?t.setIndex(i):"address"===r?t.setAddress(i):"balance"===r?t.setBalance(new n(i)):"unlocked_balance"===r?t.setUnlockedBalance(new n(i)):"num_unspent_outputs"===r?t.setNumUnspentOutputs(i):"label"===r?i&&t.setLabel(i):"used"===r?t.setIsUsed(i):"blocks_to_unlock"===r?t.setNumBlocksToUnlock(i):"time_to_unlock"==r||console.log("WARNING: ignoring unexpected subaddress field: "+r+": "+i)}return t}static _initSentTxWallet(e,t,r){t||(t=new B);let i=!0===e.getRelay();t.setIsOutgoing(!0),t.setIsConfirmed(!1),t.setNumConfirmations(0),t.setInTxPool(i),t.setRelay(i),t.setIsRelayed(i),t.setIsMinerTx(!1),t.setIsFailed(!1),t.setIsLocked(!0),t.setRingSize(C.RING_SIZE);let n=(new S).setTx(t);if(e.getSubaddressIndices()&&1===e.getSubaddressIndices().length&&n.setSubaddressIndices(e.getSubaddressIndices().slice(0)),r){let t=[];for(let r of e.getDestinations())t.push(r.copy());n.setDestinations(t)}return t.setOutgoingTransfer(n),t.setPaymentId(e.getPaymentId()),void 0===t.getUnlockTime()&&t.setUnlockTime(void 0===e.getUnlockTime()?0:e.getUnlockTime()),e.getRelay()&&(void 0===t.getLastRelayedTimestamp()&&t.setLastRelayedTimestamp(+(new Date).getTime()),void 0===t.isDoubleSpendSeen()&&t.setIsDoubleSpend(!1)),t}static _convertRpcTxSet(e){let t=new O;return t.setMultisigTxHex(e.multisig_txset),t.setUnsignedTxHex(e.unsigned_txset),t.setSignedTxHex(e.signed_txset),void 0!==t.getMultisigTxHex()&&0===t.getMultisigTxHex().length&&t.setMultisigTxHex(void 0),void 0!==t.getUnsignedTxHex()&&0===t.getUnsignedTxHex().length&&t.setUnsignedTxHex(void 0),void 0!==t.getSignedTxHex()&&0===t.getSignedTxHex().length&&t.setSignedTxHex(void 0),t}static _convertRpcSentTxsToTxSet(e,t,r){let o=W._convertRpcTxSet(e),s=e.fee_list?e.fee_list.length:0;if(0===s)return i.equal(t,void 0),o;if(t)o.setTxs(t);else{t=[];for(let e=0;e1)return;this._numPolling++;let e=this;return this._threadPool.submit((async function(){try{if(await e._wallet.isClosed())return void e._numPolling--;if(void 0===e._prevHeight)return e._prevHeight=await e._wallet.getHeight(),e._prevLockedTxs=await e._wallet.getTxs((new P).setIsLocked(!0)),e._prevBalances=await e._wallet._getBalances(),void e._numPolling--;let t=await e._wallet.getHeight();if(e._prevHeight!==t){for(let r=e._prevHeight;r0)for(let t of e.getOutputs())for(let e of this._wallet.getListeners())await e.onOutputReceived(t);else{let t=[];for(let r of e.getIncomingTransfers())t.push((new j).setAccountIndex(r.getAccountIndex()).setSubaddressIndex(r.getSubaddressIndex()).setAmount(r.getAmount()).setTx(e));e.setOutputs(t);for(let t of this._wallet.getListeners())for(let r of e.getOutputs())await t.onOutputReceived(r)}}_getTx(e,t){for(let r of e)if(t===r.getHash())return r}async _checkForChangedBalances(){let e=await this._wallet._getBalances();if(0!==e[0].compare(this._prevBalances[0])||0!==e[1].compare(this._prevBalances[1])){this._prevBalances=e;for(let t of await this._wallet.getListeners())await t.onBalancesChanged(e[0],e[1]);return!0}return!1}}W.DEFAULT_SYNC_PERIOD_IN_MS=2e4,e.exports=W},28753:(e,t,r)=>{const i=r(69282),n=r(63055).BigInteger,a=r(44769);e.exports=class{constructor(e,t,r,i,o){if("object"==typeof e){if(this.state=e,void 0===this.state.balance||this.state.balance instanceof n||(this.state.balance=n.parse(this.state.balance)),void 0===this.state.unlockedBalance||this.state.unlockedBalance instanceof n||(this.state.unlockedBalance=n.parse(this.state.unlockedBalance)),this.state.subaddresses)for(let e=0;e{e.exports=class{constructor(e,t,r){this.tag=e,this.label=t,this.accountIndices=r}getTag(){return this.tag}setTag(e){return this.tag=e,this}getLabel(){return this.label}setLabel(e){return this.label=e,this}getAccountIndices(){return this.accountIndices}setAccountIndices(e){return this.accoutIndices=e,this}}},30947:e=>{e.exports=class{constructor(e){this.state=Object.assign({},e)}toJson(){return Object.assign({},this.state)}getIndex(){return this.state.index}setIndex(e){return this.state.index=e,this}getAddress(){return this.state.address}setAddress(e){return this.state.address=e,this}getDescription(){return this.state.description}setDescription(e){return this.state.description=e,this}getPaymentId(){return this.state.paymentId}setPaymentId(e){return this.state.paymentId=e,this}}},88535:e=>{e.exports=class{constructor(e){this.state=Object.assign({},e)}isGood(){return this.state.isGood}setIsGood(e){return this.state.isGood=e,this}}},47766:(e,t,r)=>{const i=r(63055).BigInteger,n=r(88535);e.exports=class extends n{constructor(e){super(e),void 0===this.state.totalAmount||this.state.totalAmount instanceof i||(this.state.totalAmount=i.parse(this.state.totalAmount)),void 0===this.state.unconfirmedSpentAmount||this.state.unconfirmedSpentAmount instanceof i||(this.state.unconfirmedSpentAmount=i.parse(this.state.unconfirmedSpentAmount))}toJson(){let e=Object.assign({},this.state);return this.getTotalAmount()&&(e.totalAmount=this.getTotalAmount().toString()),this.getUnconfirmedSpentAmount()&&(e.unconfirmedSpentAmount=this.getUnconfirmedSpentAmount().toString()),e}getTotalAmount(){return this.state.totalAmount}setTotalAmount(e){return this.state.totalAmount=e,this}getUnconfirmedSpentAmount(){return this.state.unconfirmedSpentAmount}setUnconfirmedSpentAmount(e){return this.state.unconfirmedSpentAmount=e,this}}},35404:(e,t,r)=>{const i=r(88535),n=r(63055).BigInteger;e.exports=class extends i{constructor(e){super(e),void 0===this.state.receivedAmount||this.state.receivedAmount instanceof n||(this.state.receivedAmount=n.parse(this.state.receivedAmount))}toJson(){let e=Object.assign({},this.state);return this.getReceivedAmount()&&(e.receivedAmount=this.getReceivedAmount().toString()),e}inTxPool(){return this.state.inTxPool}setInTxPool(e){return this.state.inTxPool=e,this}getNumConfirmations(){return this.state.numConfirmations}setNumConfirmations(e){return this.state.numConfirmations=e,this}getReceivedAmount(){return this.state.receivedAmount}setReceivedAmount(e){return this.state.receivedAmount=e,this}}},39407:(e,t,r)=>{const i=r(63055).BigInteger,n=r(93444),a=r(91307);class o{constructor(e,t){if(e)if(e instanceof o)this.state=e.toJson();else if("object"==typeof e)this.state=Object.assign({},e),"number"==typeof this.state.amount&&(this.state.amount=i.parse(this.state.amount));else{if("string"!=typeof e)throw new a("stateOrAddress must be a MoneroDestination, JavaScript object, or hex string");this.state={},this.setAddress(e)}else this.state={};t&&(this.state.amount=t),this.setAmount(this.state.amount)}getAddress(){return this.state.address}setAddress(e){return this.state.address=e,this}getAmount(){return this.state.amount}setAmount(e){if(void 0!==e&&!(this.state.amount instanceof i)){if("number"==typeof e)throw new a("Destination amount must be BigInteger or string");try{e=i.parse(e)}catch(t){throw new a("Invalid destination amount: "+e)}}return this.state.amount=e,this}copy(){return new o(this)}toJson(){let e=Object.assign({},this.state);return this.getAmount()&&(e.amount=this.getAmount().toString()),e}toString(e=0){let t=n.kvLine("Address",this.getAddress(),e);return t+=n.kvLine("Amount",this.getAmount()?this.getAmount().toString():void 0,e),t.slice(0,t.length-1)}}e.exports=o},31243:(e,t,r)=>{const i=r(69282),n=r(93444),a=r(52387);class o extends a{constructor(e){super(e)}isIncoming(){return!0}getSubaddressIndex(){return this.state.subaddressIndex}setSubaddressIndex(e){return this.state.subaddressIndex=e,this}getAddress(){return this.state.address}setAddress(e){return this.state.address=e,this}getNumSuggestedConfirmations(){return this.state.numSuggestedConfirmations}setNumSuggestedConfirmations(e){return this.state.numSuggestedConfirmations=e,this}copy(){return new o(this.toJson())}merge(e){return super.merge(e),i(e instanceof o),this===e||(this.setSubaddressIndex(n.reconcile(this.getSubaddressIndex(),e.getSubaddressIndex())),this.setAddress(n.reconcile(this.getAddress(),e.getAddress())),this.setNumSuggestedConfirmations(n.reconcile(this.getNumSuggestedConfirmations(),e.getNumSuggestedConfirmations(),{resolveMax:!1}))),this}toString(){return this.toString(0)}toString(e){let t=super.toString(e)+"\n";return t+=n.kvLine("Subaddress index",this.getSubaddressIndex(),e),t+=n.kvLine("Address",this.getAddress(),e),t+=n.kvLine("Num suggested confirmations",this.getNumSuggestedConfirmations(),e),t.slice(0,t.length-1)}}e.exports=o},64472:e=>{e.exports=class{constructor(e){this.state=Object.assign({},e)}toJson(){return Object.assign({},this.state)}getStandardAddress(){return this.state.standardAddress}setStandardAddress(e){return this.state.standardAddress=e,this}getPaymentId(){return this.state.paymentId}setPaymentId(e){return this.state.paymentId=e,this}getIntegratedAddress(){return this.state.integratedAddress}setIntegratedAddress(e){return this.state.integratedAddress=e,this}toString(){return this.state.integratedAddress}}},34293:(e,t,r)=>{const i=r(63055).BigInteger;e.exports=class{constructor(e){void 0===(e=Object.assign({},e)).spentAmount||e.spentAmount instanceof i||(e.spentAmount=i.parse(e.spentAmount)),void 0===e.unspentAmount||e.unspentAmount instanceof i||(e.unspentAmount=i.parse(e.unspentAmount)),this.state=e}toJson(){let e=Object.assign({},this.state);return this.getSpentAmount()&&(e.spentAmount=this.getSpentAmount().toString()),this.getUnspentAmount()&&(e.unspentAmount=this.getUnspentAmount().toString()),e}getHeight(){return this.state.height}setHeight(e){return this.state.height=e,this}getSpentAmount(){return this.state.spentAmount}setSpentAmount(e){return this.state.spentAmount=e,this}getUnspentAmount(){return this.state.unspentAmount}setUnspentAmount(e){return this.state.unspentAmount=e,this}}},57773:e=>{e.exports=class{constructor(e,t,r,i){"boolean"==typeof e?(this.state={},this.state.isGood=e,this.state.isOld=t,this.state.signatureType=r,this.state.version=i):this.state=e}toJson(){return Object.assign({},this.state)}isGood(){return this.state.isGood}setIsGood(e){return this.state.isGood=e,this}isOld(){return this.state.isOld}setIsOld(e){return this.state.isOld=e,this}getSignatureType(){return this.state.signatureType}setSignatureType(e){return this.state.signatureType=e,this}getVersion(){return this.state.version}setVersion(e){return this.state.version=e,this}}},64232:e=>{class t{}t.SIGN_WITH_SPEND_KEY=0,t.SIGN_WITH_VIEW_KEY=1,e.exports=t},26749:e=>{e.exports=class{constructor(e){this.state=Object.assign({},e)}toJson(){return Object.assign({},this.state)}isMultisig(){return this.state.isMultisig}setIsMultisig(e){return this.state.isMultisig=e,this}isReady(){return this.state.isReady}setIsReady(e){this.state.isReady=e}getThreshold(){return this.state.threshold}setThreshold(e){this.state.threshold=e}getNumParticipants(){return this.state.numParticipants}setNumParticipants(e){this.state.numParticipants=e}}},50957:e=>{e.exports=class{constructor(e){this.state=Object.assign({},e)}toJson(){return Object.assign({},this.state)}getAddress(){return this.state.address}setAddress(e){return this.state.address=e,this}getMultisigHex(){return this.state.multisigHex}setMultisigHex(e){return this.state.multisigHex=e,this}}},63413:e=>{e.exports=class{constructor(e){this.state=Object.assign({},e)}toJson(){return Object.assign({},this.state)}getSignedMultisigTxHex(){return this.state.signedMultisigTxHex}setSignedMultisigTxHex(e){this.state.signedMultisigTxHex=e}getTxHashes(){return this.state.txHashes}setTxHashes(e){this.state.txHashes=e}}},69535:(e,t,r)=>{const i=r(69282),n=r(93444),a=r(39407),o=r(52387);class s extends o{constructor(e){if(super(e),(e=this.state).destinations)for(let t=0;t{const i=r(63055).BigInteger,n=r(91307),a=r(69459);class o extends a{constructor(e){super(e);const t=r(31857);if(void 0===this.state.minAmount||this.state.minAmount instanceof i||(this.state.minAmount=i.parse(this.state.minAmount)),void 0===this.state.maxAmount||this.state.maxAmount instanceof i||(this.state.maxAmount=i.parse(this.state.maxAmount)),!this.state.txQuery||this.state.txQuery instanceof t||(this.state.txQuery=new t(this.state.txQuery)),this.state.txQuery&&this.state.txQuery.setOutputQuery(this),void 0!==this.state.isLocked)throw new n("isLocked must be part of tx query, not output query")}copy(){return new o(this)}toJson(){let e=Object.assign({},this.state,super.toJson());return this.getMinAmount()&&(e.minAmount=this.getMinAmount().toString()),this.getMaxAmount()&&(e.maxAmount=this.getMaxAmount().toString()),delete e.txQuery,e}getMinAmount(){return this.state.minAmount}setMinAmount(e){return this.state.minAmount=e,this}getMaxAmount(){return this.state.maxAmount}setMaxAmount(e){return this.state.maxAmount=e,this}getTxQuery(){return this.state.txQuery}setTxQuery(e){return this.state.txQuery=e,e&&(e.state.outputQuery=this),this}getSubaddressIndices(){return this.state.subaddressIndices}setSubaddressIndices(e){return this.state.subaddressIndices=e,this}meetsCriteria(e,t){if(!(e instanceof a))throw new Error("Output not given to MoneroOutputQuery.meetsCriteria(output)");if(void 0===t&&(t=!0),void 0!==this.getAccountIndex()&&this.getAccountIndex()!==e.getAccountIndex())return!1;if(void 0!==this.getSubaddressIndex()&&this.getSubaddressIndex()!==e.getSubaddressIndex())return!1;if(void 0!==this.getAmount()&&0!==this.getAmount().compare(e.getAmount()))return!1;if(void 0!==this.isSpent()&&this.isSpent()!==e.isSpent())return!1;if(void 0!==this.isFrozen()&&this.isFrozen()!==e.isFrozen())return!1;if(void 0!==this.getKeyImage()){if(void 0===e.getKeyImage())return!1;if(void 0!==this.getKeyImage().getHex()&&this.getKeyImage().getHex()!==e.getKeyImage().getHex())return!1;if(void 0!==this.getKeyImage().getSignature()&&this.getKeyImage().getSignature()!==e.getKeyImage().getSignature())return!1}return!(void 0!==this.getSubaddressIndices()&&!this.getSubaddressIndices().includes(e.getSubaddressIndex())||this.getTxQuery()&&!this.getTxQuery().meetsCriteria(e.getTx(),!1)||void 0!==this.getMinAmount()&&(void 0===e.getAmount()||e.getAmount().compare(this.getMinAmount())<0)||void 0!==this.getMaxAmount()&&(void 0===e.getAmount()||e.getAmount().compare(this.getMaxAmount())>0))}}o._EMPTY_OUTPUT=new a,e.exports=o},69459:(e,t,r)=>{const i=r(69282),n=r(93444),a=r(42299);class o extends a{constructor(e){super(e)}getAccountIndex(){return this.state.accountIndex}setAccountIndex(e){return this.state.accountIndex=e,this}getSubaddressIndex(){return this.state.subaddressIndex}setSubaddressIndex(e){return this.state.subaddressIndex=e,this}isSpent(){return this.state.isSpent}setIsSpent(e){return this.state.isSpent=e,this}isFrozen(){return this.state.isFrozen}setIsFrozen(e){return this.state.isFrozen=e,this}isLocked(){if(void 0!==this.getTx())return this.getTx().isLocked()}copy(){return new o(this.toJson())}toJson(){let e=Object.assign({},this.state,super.toJson());return delete e.tx,e}merge(e){if(i(e instanceof o),this!==e)return super.merge(e),this.setAccountIndex(n.reconcile(this.getAccountIndex(),e.getAccountIndex())),this.setSubaddressIndex(n.reconcile(this.getSubaddressIndex(),e.getSubaddressIndex())),this.setIsSpent(n.reconcile(this.isSpent(),e.isSpent(),{resolveTrue:!0})),this.setIsFrozen(n.reconcile(this.isFrozen(),e.isFrozen())),this}toString(e){let t=super.toString(e)+"\n";return t+=n.kvLine("Account index",this.getAccountIndex(),e),t+=n.kvLine("Subaddress index",this.getSubaddressIndex(),e),t+=n.kvLine("Is spent",this.isSpent(),e),t+=n.kvLine("Is frozen",this.isFrozen(),e),t.slice(0,t.length-1)}}e.exports=o},44769:(e,t,r)=>{const i=r(63055).BigInteger,n=r(93444),a=r(69282);e.exports=class{constructor(e,t,r){void 0===e||"string"==typeof e?(this.state={},this.setAddress(e),this.setAccountIndex(t),this.setIndex(r)):(this.state=e,a(void 0===t&&void 0===r,"Can construct MoneroSubaddress with object or params but not both"),void 0===this.state.balance||this.state.balance instanceof i||(this.state.balance=i.parse(this.state.balance)),void 0===this.state.unlockedBalance||this.state.unlockedBalance instanceof i||(this.state.unlockedBalance=i.parse(this.state.unlockedBalance)))}toJson(){let e=Object.assign({},this.state);return e.balance&&(e.balance=e.balance.toString()),e.unlockedBalance&&(e.unlockedBalance=e.unlockedBalance.toString()),e}getAccountIndex(){return this.state.accountIndex}setAccountIndex(e){return this.state.accountIndex=e,this}getIndex(){return this.state.index}setIndex(e){return this.state.index=e,this}getAddress(){return this.state.address}setAddress(e){return this.state.address=e,this}getLabel(){return this.state.label}setLabel(e){return this.state.label=e,this}getBalance(){return this.state.balance}setBalance(e){return this.state.balance=e,this}getUnlockedBalance(){return this.state.unlockedBalance}setUnlockedBalance(e){return this.state.unlockedBalance=e,this}getNumUnspentOutputs(){return this.state.numUnspentOutputs}setNumUnspentOutputs(e){return this.state.numUnspentOutputs=e,this}isUsed(){return this.state.isUsed}setIsUsed(e){return this.state.isUsed=e,this}getNumBlocksToUnlock(){return this.state.numBlocksToUnlock}setNumBlocksToUnlock(e){return this.state.numBlocksToUnlock=e,this}toString(e){let t="";return t+=n.kvLine("Account index",this.getAccountIndex(),e),t+=n.kvLine("Subaddress index",this.getIndex(),e),t+=n.kvLine("Address",this.getAddress(),e),t+=n.kvLine("Label",this.getLabel(),e),t+=n.kvLine("Balance",this.getBalance(),e),t+=n.kvLine("Unlocked balance",this.getUnlockedBalance(),e),t+=n.kvLine("Num unspent outputs",this.getNumUnspentOutputs(),e),t+=n.kvLine("Is used",this.isUsed(),e),t+=n.kvLine("Num blocks to unlock",this.getNumBlocksToUnlock(),e),t.slice(0,t.length-1)}}},17118:e=>{e.exports=class{constructor(e,t){this.setNumBlocksFetched(e),this.setReceivedMoney(t)}getNumBlocksFetched(){return this.numBlocksFetched}setNumBlocksFetched(e){return this.numBlocksFetched=e,this}getReceivedMoney(){return this.receivedMoney}setReceivedMoney(e){return this.receivedMoney=e,this}}},52387:(e,t,r)=>{const i=r(69282),n=r(63055).BigInteger,a=r(93444);class o{constructor(e){if(e)if(e instanceof o)e=e.toJson();else{if("object"!=typeof e)throw new MoneroError("state must be a MoneroTransfer or JavaScript object");e=Object.assign({},e)}else e={};this.state=e,void 0===e.amount||e.amount instanceof n||(e.amount=n.parse(e.amount)),this._validate()}copy(){return new o(this)}toJson(){let e=Object.assign({},this.state);return this.getAmount()&&(e.amount=this.getAmount().toString()),delete e.tx,e}getTx(){return this.state.tx}setTx(e){return this.state.tx=e,this}isOutgoing(){let e=this.isIncoming();return i("boolean"==typeof e),!e}isIncoming(){throw new Error("Subclass must implement")}getAccountIndex(){return this.state.accountIndex}setAccountIndex(e){return this.state.accountIndex=e,this._validate(),this}getAmount(){return this.state.amount}setAmount(e){return this.state.amount=e,this}merge(e){return i(e instanceof o),this===e?this:this.getTx()!==e.getTx()?(this.getTx().merge(e.getTx()),this):(this.setAccountIndex(a.reconcile(this.getAccountIndex(),e.getAccountIndex())),void 0===this.getAmount()||void 0===e.getAmount()||0===this.getAmount().compare(e.getAmount())||0!==this.getAmount().compare(n.parse("0"))&&0!==e.getAmount().compare(n.parse("0"))?this.setAmount(a.reconcile(this.getAmount(),e.getAmount())):console.warn("monero-project returning transfers with 0 amount/numSuggestedConfirmations"),this)}toString(e=0){let t="";return t+=a.kvLine("Is incoming",this.isIncoming(),e),t+=a.kvLine("Account index",this.getAccountIndex(),e),t+=a.kvLine("Amount",this.getAmount()?this.getAmount().toString():void 0,e),""===t?t:t.slice(0,t.length-1)}_validate(){if(void 0!==this.getAccountIndex()&&this.getAccountIndex()<0)throw new MoneroError("Account index must be >= 0")}}e.exports=o},59692:(e,t,r)=>{const i=r(31243),n=r(69535),a=r(52387),o=r(91307);class s extends a{constructor(e){super(e);const t=r(31857);!this.state.txQuery||this.state.txQuery instanceof t||(this.state.txQuery=new t(this.state.txQuery)),this.state.txQuery&&this.state.txQuery.setTransferQuery(this),void 0!==this.state.isOutgoing&&(this.state.isIncoming=!this.state.isOutgoing),this._validate()}copy(){return new s(this)}toJson(){let e=Object.assign({},this.state,super.toJson());return delete e.txQuery,e}getTxQuery(){return this.state.txQuery}setTxQuery(e){return this.state.txQuery=e,e&&(e.state.transferQuery=this),this}isIncoming(){return this.state.isIncoming}setIsIncoming(e){return this.state.isIncoming=e,this}isOutgoing(){return void 0===this.state.isIncoming?void 0:!this.state.isIncoming}setIsOutgoing(e){return this.state.isIncoming=void 0===e?void 0:!e,this}getAddress(){return this.state.address}setAddress(e){return this.state.address=e,this}getAddresses(){return this.state.addresses}setAddresses(e){return this.state.addresses=e,this}getSubaddressIndex(){return this.state.subaddressIndex}setSubaddressIndex(e){return this.state.subaddressIndex=e,this._validate(),this}getSubaddressIndices(){return this.state.subaddressIndices}setSubaddressIndices(e){return this.state.subaddressIndices=e,this._validate(),this}getDestinations(){return this.state.destinations}setDestinations(e){return this.state.destinations=e,this}hasDestinations(){return this.state.hasDestinations}setHasDestinations(e){return this.state.hasDestinations=e,this}setIsLocked(e){return void 0===this.state.txQuery&&(this.state.txQuery=new MoneroTxQuery),this.state.txQuery.setIsLocked(e),this}meetsCriteria(e,t){if(!(e instanceof a))throw new Error("Transfer not given to MoneroTransferQuery.meetsCriteria(transfer)");if(void 0===t&&(t=!0),void 0!==this.isIncoming()&&this.isIncoming()!==e.isIncoming())return!1;if(void 0!==this.isOutgoing()&&this.isOutgoing()!==e.isOutgoing())return!1;if(void 0!==this.getAmount()&&0!==this.getAmount().compare(e.getAmount()))return!1;if(void 0!==this.getAccountIndex()&&this.getAccountIndex()!==e.getAccountIndex())return!1;if(e instanceof i){if(this.hasDestinations())return!1;if(void 0!==this.getAddress()&&this.getAddress()!==e.getAddress())return!1;if(void 0!==this.getAddresses()&&!this.getAddresses().includes(e.getAddress()))return!1;if(void 0!==this.getSubaddressIndex()&&this.getSubaddressIndex()!==e.getSubaddressIndex())return!1;if(void 0!==this.getSubaddressIndices()&&!this.getSubaddressIndices().includes(e.getSubaddressIndex()))return!1}else{if(!(e instanceof n))throw new Error("Transfer must be MoneroIncomingTransfer or MoneroOutgoingTransfer");if(void 0!==this.getAddress()&&(void 0===e.getAddresses()||!e.getAddresses().includes(this.getAddress())))return!1;if(void 0!==this.getAddresses()){if(!e.getAddresses())return!1;if(!this.getAddresses().some((t=>e.getAddresses().includes(t))))return!1}if(void 0!==this.getSubaddressIndex()&&(void 0===e.getSubaddressIndices()||!e.getSubaddressIndices().includes(this.getSubaddressIndex())))return!1;if(void 0!==this.getSubaddressIndices()){if(!e.getSubaddressIndices())return!1;if(!this.getSubaddressIndices().some((t=>e.getSubaddressIndices().includes(t))))return!1}if(void 0!==this.hasDestinations()){if(this.hasDestinations()&&void 0===e.getDestinations())return!1;if(!this.hasDestinations()&&void 0!==e.getDestinations())return!1}}return!(t&&void 0!==this.getTxQuery()&&!this.getTxQuery().meetsCriteria(e.getTx()))}_validate(){if(void 0!==this.getSubaddressIndex()&&this.getSubaddressIndex()<0)throw new o("Subaddress index must be >= 0");if(void 0!==this.getSubaddressIndices())for(let e of this.getSubaddressIndices())if(e<0)throw new o("Subaddress indices must be >= 0")}}e.exports=s},36721:(e,t,r)=>{const i=r(69282),n=r(63055).BigInteger,a=r(93444),o=r(39407),s=r(91307);class u{constructor(e,t){if(arguments.length>2)throw new s("MoneroTxConfig can be constructed with only two parameters but was given "+arguments.length);if(e)if(e instanceof u)this.state=e.toJson();else{if("object"!=typeof e)throw new s("Invalid argument given to MoneroTxConfig: "+typeof e);this.state=Object.assign({},e),t&&("number"==typeof this.state.amount&&(this.state.amount=n.parse(this.state.amount)),"number"==typeof this.state.unlockTime&&(this.state.unlockTime=n.parse(this.state.unlockTime)),"number"==typeof this.state.belowAmount&&(this.state.belowAmount=n.parse(this.state.belowAmount)));for(let t of Object.keys(e))if(!a.arrayContains(u.SUPPORTED_FIELDS,t))throw new s("Unsupported field in MoneroTxConfig: '"+t+"'")}else this.state={};void 0===this.state.fee||this.state.fee instanceof n||(this.state.fee=n.parse(this.state.fee)),void 0===this.state.unlockTime||this.state.unlockTime instanceof n||(this.state.unlockTime=n.parse(this.state.unlockTime)),void 0===this.state.belowAmount||this.state.belowAmount instanceof n||(this.state.belowAmount=n.parse(this.state.belowAmount)),this.state.destinations&&(i(void 0===this.state.address&&void 0===this.state.amount,"Tx configuration may specify destinations or an address/amount but not both"),this.setDestinations(this.state.destinations.map((e=>e instanceof o?e:new o(e))))),(this.state.address||this.state.amount)&&(i(!this.state.destinations,"Tx configuration may specify destinations or an address/amount but not both"),this.setAddress(this.state.address),this.setAmount(this.state.amount),delete this.state.address,delete this.state.amount),void 0!==this.state.subaddressIndex&&(this.setSubaddressIndices([this.state.subaddressIndex]),delete this.state.subaddressIndex)}copy(){return new u(this)}toJson(){let e=Object.assign({},this.state);if(this.getDestinations()){e.destinations=[];for(let t of this.getDestinations())e.destinations.push(t.toJson())}return this.getFee()&&(e.fee=this.getFee().toString()),this.getUnlockTime()&&(e.unlockTime=this.getUnlockTime().toString()),this.getBelowAmount()&&(e.belowAmount=this.getBelowAmount().toString()),e}setAddress(e){if(void 0!==this.state.destinations&&this.state.destinations.length>1)throw new s("Cannot set address because MoneroTxConfig already has multiple destinations");return void 0===this.state.destinations||0===this.state.destinations.length?this.addDestination(new o(e)):this.state.destinations[0].setAddress(e),this}getAddress(){if(void 0===this.state.destinations||1!==this.state.destinations.length)throw new s("Cannot get address because MoneroTxConfig does not have exactly one destination");return this.state.destinations[0].getAddress()}setAmount(e){if(void 0!==e&&!(this.state.amount instanceof n)){if("number"==typeof e)throw new s("Destination amount must be BigInteger or string");try{e=n.parse(e)}catch(t){throw new s("Invalid destination amount: "+e)}}if(void 0!==this.state.destinations&&this.state.destinations.length>1)throw new s("Cannot set amount because MoneroTxConfig already has multiple destinations");return void 0===this.state.destinations||0===this.state.destinations.length?this.addDestination(new o(void 0,e)):this.state.destinations[0].setAmount(e),this}getAmount(){if(void 0===this.state.destinations||1!==this.state.destinations.length)throw new s("Cannot get amount because MoneroTxConfig does not have exactly one destination");return this.state.destinations[0].getAmount()}addDestination(e,t){return"string"==typeof e?this.addDestination(new o(e,t)):(i(e instanceof o),void 0===this.state.destinations&&(this.state.destinations=[]),this.state.destinations.push(e),this)}getDestinations(){return this.state.destinations}setDestinations(e){return arguments.length>1&&(e=Array.from(arguments)),this.state.destinations=e,this}setDestination(e){return this.setDestinations(e?[e]:e)}getSubtractFeeFrom(){return this.state.subtractFeeFrom}setSubtractFeeFrom(e){return arguments.length>1&&(e=Array.from(arguments)),this.state.subtractFeeFrom=e,this}getPaymentId(){return this.state.paymentId}setPaymentId(e){return this.state.paymentId=e,this}getPriority(){return this.state.priority}setPriority(e){return this.state.priority=e,this}getFee(){return this.state.fee}setFee(e){return this.state.fee=e,this}getAccountIndex(){return this.state.accountIndex}setAccountIndex(e){return this.state.accountIndex=e,this}setSubaddressIndex(e){return this.setSubaddressIndices([e]),this}getSubaddressIndices(){return this.state.subaddressIndices}setSubaddressIndices(e){return arguments.length>1&&(e=Array.from(arguments)),this.state.subaddressIndices=e,this}getUnlockTime(){return this.state.unlockTime}setUnlockTime(e){if(void 0!==e&&("number"==typeof e&&(e=""+e),!(e instanceof n)))try{e=n.parse(e)}catch(t){throw new s("Invalid unlock time: "+e)}return this.state.unlockTime=e,this}getRelay(){return this.state.relay}setRelay(e){return this.state.relay=e,this}getCanSplit(){return this.state.canSplit}setCanSplit(e){return this.state.canSplit=e,this}getNote(){return this.state.note}setNote(e){return this.state.note=e,this}getRecipientName(){return this.state.recipientName}setRecipientName(e){return this.state.recipientName=e,this}getBelowAmount(){return this.state.belowAmount}setBelowAmount(e){return this.state.belowAmount=e,this}getSweepEachSubaddress(){return this.state.sweepEachSubaddress}setSweepEachSubaddress(e){return this.state.sweepEachSubaddress=e,this}getKeyImage(){return this.state.keyImage}setKeyImage(e){return this.state.keyImage=e,this}}u.SUPPORTED_FIELDS=["address","amount","accountIndex","subaddressIndex","subaddressIndices","relay","priority","destinations","subtractFeeFrom","paymentId","unlockTime","note","recipientName","canSplit","belowAmount","sweepEachSubaddress","keyImage"],e.exports=u},57589:e=>{class t{}t.DEFAULT=0,t.UNIMPORTANT=1,t.NORMAL=2,t.ELEVATED=3,e.exports=t},31857:(e,t,r)=>{const i=r(69282),n=r(39749),a=r(59692),o=r(18489);class s extends o{constructor(e){super(e),!this.state.transferQuery||this.state.transferQuery instanceof a||(this.state.transferQuery=new a(this.state.transferQuery)),!this.state.inputQuery||this.state.inputQuery instanceof n||(this.state.inputQuery=new n(this.state.inputQuery)),!this.state.outputQuery||this.state.outputQuery instanceof n||(this.state.outputQuery=new n(this.state.outputQuery)),this.state.transferQuery&&this.state.transferQuery.setTxQuery(this),this.state.inputQuery&&this.state.inputQuery.setTxQuery(this),this.state.outputQuery&&this.state.outputQuery.setTxQuery(this),this.state.hash&&(this.setHashes([this.state.hash]),delete this.state.hash)}copy(){return new s(this)}toJson(){let e=Object.assign({},this.state,super.toJson());return this.getTransferQuery()&&(e.transferQuery=this.getTransferQuery().toJson()),this.getInputQuery()&&(e.inputQuery=this.getInputQuery().toJson()),this.getOutputQuery()&&(e.outputQuery=this.getOutputQuery().toJson()),delete e.block,e}isIncoming(){return this.state.isIncoming}setIsIncoming(e){return this.state.isIncoming=e,this}isOutgoing(){return this.state.isOutgoing}setIsOutgoing(e){return this.state.isOutgoing=e,this}getHashes(){return this.state.hashes}setHashes(e){return this.state.hashes=e,this}setHash(e){return void 0===e?this.setHashes(void 0):(i("string"==typeof e),this.setHashes([e]))}hasPaymentId(){return this.state.hasPaymentId}setHasPaymentId(){return this.state.hasPaymentId=hasPaymentId,this}getPaymentIds(){return this.state.paymentIds}setPaymentIds(e){return this.state.paymentIds=e,this}setPaymentId(e){return void 0===e?this.setPaymentIds(void 0):(i("string"==typeof e),this.setPaymentIds([e]))}getHeight(){return this.state.height}setHeight(e){return this.state.height=e,this}getMinHeight(){return this.state.minHeight}setMinHeight(e){return this.state.minHeight=e,this}getMaxHeight(){return this.state.maxHeight}setMaxHeight(e){return this.state.maxHeight=e,this}getIncludeOutputs(){return this.state.includeOutputs}setIncludeOutputs(e){return this.state.includeOutputs=e,this}getTransferQuery(){return this.state.transferQuery}setTransferQuery(e){return this.state.transferQuery=e,e&&(e.state.txQuery=this),this}getInputQuery(){return this.state.inputQuery}setInputQuery(e){return this.state.inputQuery=e,e&&(e.state.txQuery=this),this}getOutputQuery(){return this.state.outputQuery}setOutputQuery(e){return this.state.outputQuery=e,e&&(e.state.txQuery=this),this}meetsCriteria(e,t){if(!(e instanceof o))throw new Error("Tx not given to MoneroTxQuery.meetsCriteria(tx)");if(void 0===t&&(t=!0),void 0!==this.getHash()&&this.getHash()!==e.getHash())return!1;if(void 0!==this.getPaymentId()&&this.getPaymentId()!==e.getPaymentId())return!1;if(void 0!==this.isConfirmed()&&this.isConfirmed()!==e.isConfirmed())return!1;if(void 0!==this.inTxPool()&&this.inTxPool()!==e.inTxPool())return!1;if(void 0!==this.getRelay()&&this.getRelay()!==e.getRelay())return!1;if(void 0!==this.isRelayed()&&this.isRelayed()!==e.isRelayed())return!1;if(void 0!==this.isFailed()&&this.isFailed()!==e.isFailed())return!1;if(void 0!==this.isMinerTx()&&this.isMinerTx()!==e.isMinerTx())return!1;if(void 0!==this.isLocked()&&this.isLocked()!==e.isLocked())return!1;if(void 0!==this.hasPaymentId()){if(this.hasPaymentId()&&void 0===e.getPaymentId())return!1;if(!this.hasPaymentId()&&void 0!==e.getPaymentId())return!1}if(void 0!==this.isIncoming()){if(this.isIncoming()&&!e.isIncoming())return!1;if(!this.isIncoming()&&e.isIncoming())return!1}if(void 0!==this.isOutgoing()){if(this.isOutgoing()&&!e.isOutgoing())return!1;if(!this.isOutgoing()&&e.isOutgoing())return!1}let r=void 0===e.getBlock()?void 0:e.getBlock().getHeight();if(void 0!==this.getHashes()&&!this.getHashes().includes(e.getHash()))return!1;if(void 0!==this.getPaymentIds()&&!this.getPaymentIds().includes(e.getPaymentId()))return!1;if(void 0!==this.getHeight()&&(void 0===r||r!==this.getHeight()))return!1;if(void 0!==this.getMinHeight()&&void 0!==r&&rthis.getMaxHeight()))return!1;if(!t)return!0;if(this.getTransferQuery()){let t=!1;if(e.getOutgoingTransfer()&&this.getTransferQuery().meetsCriteria(e.getOutgoingTransfer(),!1))t=!0;else if(e.getIncomingTransfers())for(let r of e.getIncomingTransfers())if(this.getTransferQuery().meetsCriteria(r,!1)){t=!0;break}if(!t)return!1}if(void 0!==this.getInputQuery()){if(void 0===e.getInputs()||0===e.getInputs().length)return!1;let t=!1;for(let r of e.getInputs())if(this.getInputQuery().meetsCriteria(r,!1)){t=!0;break}if(!t)return!1}if(void 0!==this.getOutputQuery()){if(void 0===e.getOutputs()||0===e.getOutputs().length)return!1;let t=!1;for(let r of e.getOutputs())if(this.getOutputQuery().meetsCriteria(r,!1)){t=!0;break}if(!t)return!1}return!0}}e.exports=s},61527:(e,t,r)=>{const i=r(69282),n=r(93444),a=r(18489),o=r(58012);class s{constructor(e){if(e){if("object"!=typeof e)throw new MoneroError("state must be JavaScript object");e=Object.assign({},e)}else e={};if(this.state=e,e.txs)for(let t=0;t{const i=r(69282),n=r(63055).BigInteger,a=r(93444),o=r(31243),s=r(69535),u=r(69459),c=r(2624);class l extends c{constructor(e){if(super(e),e instanceof l&&e.getTxSet()&&this.setTxSet(e.getTxSet()),(e=this.state).incomingTransfers)for(let t=0;t{const i=r(93444),n=r(91307),a=r(79077),o=r(73717);class s{constructor(e){if(e)if(e instanceof s)e=e.toJson();else{if("object"!=typeof e)throw new n("config must be a MoneroWalletConfig or JavaScript object");e=Object.assign({},e)}else e={};this.config=e,this.setNetworkType(e.networkType),e.server&&this.setServer(e.server),delete this.config.server;for(let e of Object.keys(this.config))if(!i.arrayContains(s.SUPPORTED_FIELDS,e))throw new n("Unsupported field in MoneroWalletConfig: '"+e+"'")}copy(){return new s(this.toJson())}toJson(){let e=Object.assign({},this.config);return e.fs=void 0,e}getPath(){return this.config.path}setPath(e){return this.config.path=e,this}getPassword(){return this.config.password}setPassword(e){return this.config.password=e,this}getNetworkType(){return this.config.networkType}setNetworkType(e){return this.config.networkType="string"==typeof e?a.parse(e):e,this}getServer(){return this.config.serverUri?new o({uri:this.config.serverUri,username:this.config.serverUsername,password:this.config.serverPassword,rejectUnauthorized:this.config.rejectUnauthorized}):void 0}setServer(e){return!e||e instanceof o||(e=new o(e)),this.config.serverUri=void 0===e?void 0:e.getUri(),this.config.serverUsername=void 0===e?void 0:e.getUsername(),this.config.serverPassword=void 0===e?void 0:e.getPassword(),this.config.rejectUnauthorized=void 0===e?void 0:e.getRejectUnauthorized(),this}getServerUri(){return this.config.serverUri}setServerUri(e){return this.config.serverUri=e,this}getServerUsername(){return this.config.serverUsername}setServerUsername(e){return this.config.serverUsername=e,this}getServerPassword(){return this.config.serverPassword}setServerPassword(e){return this.config.serverPassword=e,this}getRejectUnauthorized(){return this.config.rejectUnauthorized}setRejectUnauthorized(e){return this.config.rejectUnauthorized=e,this}getSeed(){return this.config.seed}setSeed(e){return this.config.seed=e,this}getSeedOffset(){return this.config.seedOffset}setSeedOffset(e){return this.config.seedOffset=e,this}isMultisig(){return this.config.isMultisig}setIsMultisig(e){return this.config.isMultisig=e,this}getPrimaryAddress(){return this.config.primaryAddress}setPrimaryAddress(e){return this.config.primaryAddress=e,this}getPrivateViewKey(){return this.config.privateViewKey}setPrivateViewKey(e){return this.config.privateViewKey=e,this}getPrivateSpendKey(){return this.config.privateSpendKey}setPrivateSpendKey(e){return this.config.privateSpendKey=e,this}getRestoreHeight(){return this.config.restoreHeight}setRestoreHeight(e){return this.config.restoreHeight=e,this}getLanguage(){return this.config.language}setLanguage(e){return this.config.language=e,this}getSaveCurrent(){return this.config.saveCurrent}setSaveCurrent(e){return this.config.saveCurrent=e,this}getProxyToWorker(){return this.config.proxyToWorker}setProxyToWorker(e){return this.config.proxyToWorker=e,this}getFs(){return this.config.fs}setFs(e){return this.config.fs=e,this}getKeysData(){return this.config.keysData}setKeysData(e){return this.config.keysData=e,this}getCacheData(){return this.config.cacheData}setCacheData(e){return this.config.cacheData=e,this}getAccountLookahead(){return this.config.accountLookahead}setAccountLookahead(e){return this.config.accountLookahead=e,this}getSubaddressLookahead(){return this.config.subaddressLookahead}setSubaddressLookahead(e){return this.config.subaddressLookahead=e,this}}s.SUPPORTED_FIELDS=["path","password","networkType","serverUri","serverUsername","serverPassword","rejectUnauthorized","seed","seedOffset","isMultisig","primaryAddress","privateViewKey","privateSpendKey","restoreHeight","language","saveCurrent","proxyToWorker","fs","keysData","cacheData","accountLookahead","subaddressLookahead"],e.exports=s},63149:e=>{e.exports=class{async onSyncProgress(e,t,r,i,n){}async onNewBlock(e){}async onBalancesChanged(e,t){}async onOutputReceived(e){}async onOutputSpent(e){}}},79742:(e,t)=>{"use strict";t.byteLength=function(e){var t=u(e),r=t[0],i=t[1];return 3*(r+i)/4-i},t.toByteArray=function(e){var t,r,a=u(e),o=a[0],s=a[1],c=new n(function(e,t,r){return 3*(t+r)/4-r}(0,o,s)),l=0,h=s>0?o-4:o;for(r=0;r>16&255,c[l++]=t>>8&255,c[l++]=255&t;return 2===s&&(t=i[e.charCodeAt(r)]<<2|i[e.charCodeAt(r+1)]>>4,c[l++]=255&t),1===s&&(t=i[e.charCodeAt(r)]<<10|i[e.charCodeAt(r+1)]<<4|i[e.charCodeAt(r+2)]>>2,c[l++]=t>>8&255,c[l++]=255&t),c},t.fromByteArray=function(e){for(var t,i=e.length,n=i%3,a=[],o=16383,s=0,u=i-n;su?u:s+o));return 1===n?(t=e[i-1],a.push(r[t>>2]+r[t<<4&63]+"==")):2===n&&(t=(e[i-2]<<8)+e[i-1],a.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"=")),a.join("")};for(var r=[],i=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,s=a.length;o0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function c(e,t,i){for(var n,a,o=[],s=t;s>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);return o.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},62703:(e,t,r)=>{"use strict";var i=r(50780).lowlevel.crypto_hash,n=0,a=function(){this.S=[new Uint32Array([3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946]),new Uint32Array([1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055]),new Uint32Array([3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504]),new Uint32Array([976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462])],this.P=new Uint32Array([608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731])};function o(e,t,r){return(e[0][t[r+3]]+e[1][t[r+2]]^e[2][t[r+1]])+e[3][t[r]]}function s(e,t){var r,i=0;for(r=0;r<4;r++,n++)n>=t&&(n=0),i=i<<8|e[n];return i}function u(e,t,r){var i,n=new a,o=new Uint32Array(8),u=new Uint8Array([79,120,121,99,104,114,111,109,97,116,105,99,66,108,111,119,102,105,115,104,83,119,97,116,68,121,110,97,109,105,116,101]);for(n.expandstate(t,64,e,64),i=0;i<64;i++)n.expand0state(t,64),n.expand0state(e,64);for(i=0;i<8;i++)o[i]=s(u,u.byteLength);for(i=0;i<64;i++)n.enc(o,o.byteLength/8);for(i=0;i<8;i++)r[4*i+3]=o[i]>>>24,r[4*i+2]=o[i]>>>16,r[4*i+1]=o[i]>>>8,r[4*i+0]=o[i]}a.prototype.encipher=function(e,t){void 0===t&&(t=new Uint8Array(e.buffer),0!==e.byteOffset&&(t=t.subarray(e.byteOffset))),e[0]^=this.P[0];for(var r=1;r<16;r+=2)e[1]^=o(this.S,t,0)^this.P[r],e[0]^=o(this.S,t,4)^this.P[r+1];var i=e[0];e[0]=e[1]^this.P[17],e[1]=i},a.prototype.decipher=function(e){var t=new Uint8Array(e.buffer);0!==e.byteOffset&&(t=t.subarray(e.byteOffset)),e[0]^=this.P[17];for(var r=16;r>0;r-=2)e[1]^=o(this.S,t,0)^this.P[r],e[0]^=o(this.S,t,4)^this.P[r-1];var i=e[0];e[0]=e[1]^this.P[0],e[1]=i},a.prototype.expand0state=function(e,t){var r,i,a=new Uint32Array(2),o=new Uint8Array(a.buffer);for(r=0,n=0;r<18;r++)this.P[r]^=s(e,t);for(n=0,r=0;r<18;r+=2)this.encipher(a,o),this.P[r]=a[0],this.P[r+1]=a[1];for(r=0;r<4;r++)for(i=0;i<256;i+=2)this.encipher(a,o),this.S[r][i]=a[0],this.S[r][i+1]=a[1]},a.prototype.expandstate=function(e,t,r,i){var a,o,u=new Uint32Array(2);for(a=0,n=0;a<18;a++)this.P[a]^=s(r,i);for(a=0,n=0;a<18;a+=2)u[0]^=s(e,t),u[1]^=s(e,t),this.encipher(u),this.P[a]=u[0],this.P[a+1]=u[1];for(a=0;a<4;a++)for(o=0;o<256;o+=2)u[0]^=s(e,t),u[1]^=s(e,t),this.encipher(u),this.S[a][o]=u[0],this.S[a][o+1]=u[1];n=0},a.prototype.enc=function(e,t){for(var r=0;rv.byteLength*v.byteLength||n>1<<20)return-1;for(p=Math.floor((o+v.byteLength-1)/v.byteLength),h=Math.floor((o+p-1)/p),c=0;c0;f++){for(_[n+0]=f>>>24,_[n+1]=f>>>16,_[n+2]=f>>>8,_[n+3]=f,i(g,_,n+4),u(m,g,y),c=v.byteLength;c--;)v[c]=y[c];for(c=1;c=b);c++)a[d]=v[c];o-=c}return 0}}},96624:(e,t,r)=>{var i,n=r(34155);i=function(){return function e(t,r,i){function n(o,s){if(!r[o]){if(!t[o]){var u="function"==typeof _dereq_&&_dereq_;if(!s&&u)return u(o,!0);if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var l=r[o]={exports:{}};t[o][0].call(l.exports,(function(e){return n(t[o][1][e]||e)}),l,l.exports,e,t,r,i)}return r[o].exports}for(var a="function"==typeof _dereq_&&_dereq_,o=0;o0;)c(e)}function c(e){var t=e.shift();if("function"!=typeof t)t._settlePromises();else{var r=e.shift(),i=e.shift();t.call(r,i)}}s.prototype.setScheduler=function(e){var t=this._schedule;return this._schedule=e,this._customScheduler=!0,t},s.prototype.hasCustomScheduler=function(){return this._customScheduler},s.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},s.prototype.fatalError=function(e,t){t?(n.stderr.write("Fatal "+(e instanceof Error?e.stack:e)+"\n"),n.exit(2)):this.throwLater(e)},s.prototype.throwLater=function(e,t){if(1===arguments.length&&(t=e,e=function(){throw t}),"undefined"!=typeof setTimeout)setTimeout((function(){e(t)}),0);else try{this._schedule((function(){e(t)}))}catch(e){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},s.prototype.invokeLater=function(e,t,r){this._lateQueue.push(e,t,r),this._queueTick()},s.prototype.invoke=function(e,t,r){this._normalQueue.push(e,t,r),this._queueTick()},s.prototype.settlePromises=function(e){this._normalQueue._pushOne(e),this._queueTick()},s.prototype._drainQueues=function(){u(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,u(this._lateQueue)},s.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},s.prototype._reset=function(){this._isTickUsed=!1},t.exports=s,t.exports.firstLineError=i},{"./queue":26,"./schedule":29}],3:[function(e,t,r){"use strict";t.exports=function(e,t,r,i){var n=!1,a=function(e,t){this._reject(t)},o=function(e,t){t.promiseRejectionQueued=!0,t.bindingPromise._then(a,a,null,this,e)},s=function(e,t){0==(50397184&this._bitField)&&this._resolveCallback(t.target)},u=function(e,t){t.promiseRejectionQueued||this._reject(e)};e.prototype.bind=function(a){n||(n=!0,e.prototype._propagateFrom=i.propagateFromFunction(),e.prototype._boundValue=i.boundValueFunction());var c=r(a),l=new e(t);l._propagateFrom(this,1);var h=this._target();if(l._setBoundTo(c),c instanceof e){var p={promiseRejectionQueued:!1,promise:l,target:h,bindingPromise:c};h._then(t,o,void 0,l,p),c._then(s,u,void 0,l,p),l._setOnCancel(c)}else l._resolveCallback(h);return l},e.prototype._setBoundTo=function(e){void 0!==e?(this._bitField=2097152|this._bitField,this._boundTo=e):this._bitField=-2097153&this._bitField},e.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},e.bind=function(t,r){return e.resolve(r).bind(t)}}},{}],4:[function(e,t,r){"use strict";var i;"undefined"!=typeof Promise&&(i=Promise);var n=e("./promise")();n.noConflict=function(){try{Promise===n&&(Promise=i)}catch(e){}return n},t.exports=n},{"./promise":22}],5:[function(e,t,r){"use strict";var i=Object.create;if(i){var n=i(null),a=i(null);n[" size"]=a[" size"]=0}t.exports=function(t){var r=e("./util"),i=r.canEvaluate;function n(e){var i=function(e,i){var n;if(null!=e&&(n=e[i]),"function"!=typeof n){var a="Object "+r.classString(e)+" has no method '"+r.toString(i)+"'";throw new t.TypeError(a)}return n}(e,this.pop());return i.apply(e,this)}function a(e){return e[this]}function o(e){var t=+this;return t<0&&(t=Math.max(0,t+e.length)),e[t]}r.isIdentifier,t.prototype.call=function(e){var t=[].slice.call(arguments,1);return t.push(e),this._then(n,void 0,void 0,t,void 0)},t.prototype.get=function(e){var t;if("number"==typeof e)t=o;else if(i){var r=(void 0)(e);t=null!==r?r:a}else t=a;return this._then(t,void 0,void 0,e,void 0)}}},{"./util":36}],6:[function(e,t,r){"use strict";t.exports=function(t,r,i,n){var a=e("./util"),o=a.tryCatch,s=a.errorObj,u=t._async;t.prototype.break=t.prototype.cancel=function(){if(!n.cancellation())return this._warn("cancellation is disabled");for(var e=this,t=e;e._isCancellable();){if(!e._cancelBy(t)){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}var r=e._cancellationParent;if(null==r||!r._isCancellable()){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}e._isFollowing()&&e._followee().cancel(),e._setWillBeCancelled(),t=e,e=r}},t.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},t.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},t.prototype._cancelBy=function(e){return e===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},t.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},t.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),u.invoke(this._cancelPromises,this,void 0))},t.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},t.prototype._unsetOnCancel=function(){this._onCancelField=void 0},t.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},t.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},t.prototype._doInvokeOnCancel=function(e,t){if(a.isArray(e))for(var r=0;r=0)return r[e]}return e.prototype._promiseCreated=function(){},e.prototype._pushContext=function(){},e.prototype._popContext=function(){return null},e._peekContext=e.prototype._peekContext=function(){},i.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,r.push(this._trace))},i.prototype._popContext=function(){if(void 0!==this._trace){var e=r.pop(),t=e._promiseCreated;return e._promiseCreated=null,t}return null},i.CapturedTrace=null,i.create=function(){if(t)return new i},i.deactivateLongStackTraces=function(){},i.activateLongStackTraces=function(){var r=e.prototype._pushContext,a=e.prototype._popContext,o=e._peekContext,s=e.prototype._peekContext,u=e.prototype._promiseCreated;i.deactivateLongStackTraces=function(){e.prototype._pushContext=r,e.prototype._popContext=a,e._peekContext=o,e.prototype._peekContext=s,e.prototype._promiseCreated=u,t=!1},t=!0,e.prototype._pushContext=i.prototype._pushContext,e.prototype._popContext=i.prototype._popContext,e._peekContext=e.prototype._peekContext=n,e.prototype._promiseCreated=function(){var e=this._peekContext();e&&null==e._promiseCreated&&(e._promiseCreated=this)}},i}},{}],9:[function(e,t,r){"use strict";t.exports=function(t,r,i,a){var o,s,u,c,l=t._async,h=e("./errors").Warning,p=e("./util"),d=e("./es5"),f=p.canAttachTrace,m=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,g=/\((?:timers\.js):\d+:\d+\)/,v=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,y=null,_=null,b=!1,w=!(0==p.env("BLUEBIRD_DEBUG")),E=!(0==p.env("BLUEBIRD_WARNINGS")||!w&&!p.env("BLUEBIRD_WARNINGS")),k=!(0==p.env("BLUEBIRD_LONG_STACK_TRACES")||!w&&!p.env("BLUEBIRD_LONG_STACK_TRACES")),S=0!=p.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(E||!!p.env("BLUEBIRD_W_FORGOTTEN_RETURN"));!function(){var e=[];function r(){for(var t=0;t0},t.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},t.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},t.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},t.prototype._warn=function(e,t,r){return K(e,t,r||this)},t.onPossiblyUnhandledRejection=function(e){var r=t._getContext();s=p.contextBind(r,e)},t.onUnhandledRejectionHandled=function(e){var r=t._getContext();o=p.contextBind(r,e)};var x=function(){};t.longStackTraces=function(){if(l.haveItemsQueued()&&!re.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!re.longStackTraces&&G()){var e=t.prototype._captureStackTrace,i=t.prototype._attachExtraTrace,n=t.prototype._dereferenceTrace;re.longStackTraces=!0,x=function(){if(l.haveItemsQueued()&&!re.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");t.prototype._captureStackTrace=e,t.prototype._attachExtraTrace=i,t.prototype._dereferenceTrace=n,r.deactivateLongStackTraces(),re.longStackTraces=!1},t.prototype._captureStackTrace=L,t.prototype._attachExtraTrace=U,t.prototype._dereferenceTrace=H,r.activateLongStackTraces()}},t.hasLongStackTraces=function(){return re.longStackTraces&&G()};var j={unhandledrejection:{before:function(){var e=p.global.onunhandledrejection;return p.global.onunhandledrejection=null,e},after:function(e){p.global.onunhandledrejection=e}},rejectionhandled:{before:function(){var e=p.global.onrejectionhandled;return p.global.onrejectionhandled=null,e},after:function(e){p.global.onrejectionhandled=e}}},N=function(){var e=function(e,t){if(!e)return!p.global.dispatchEvent(t);var r;try{return r=e.before(),!p.global.dispatchEvent(t)}finally{e.after(r)}};try{if("function"==typeof CustomEvent){var t=new CustomEvent("CustomEvent");return p.global.dispatchEvent(t),function(t,r){t=t.toLowerCase();var i=new CustomEvent(t,{detail:r,cancelable:!0});return d.defineProperty(i,"promise",{value:r.promise}),d.defineProperty(i,"reason",{value:r.reason}),e(j[t],i)}}return"function"==typeof Event?(t=new Event("CustomEvent"),p.global.dispatchEvent(t),function(t,r){t=t.toLowerCase();var i=new Event(t,{cancelable:!0});return i.detail=r,d.defineProperty(i,"promise",{value:r.promise}),d.defineProperty(i,"reason",{value:r.reason}),e(j[t],i)}):((t=document.createEvent("CustomEvent")).initCustomEvent("testingtheevent",!1,!0,{}),p.global.dispatchEvent(t),function(t,r){t=t.toLowerCase();var i=document.createEvent("CustomEvent");return i.initCustomEvent(t,!1,!0,r),e(j[t],i)})}catch(e){}return function(){return!1}}(),M=p.isNode?function(){return n.emit.apply(n,arguments)}:p.global?function(e){var t="on"+e.toLowerCase(),r=p.global[t];return!!r&&(r.apply(p.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function I(e,t){return{promise:t}}var A={promiseCreated:I,promiseFulfilled:I,promiseRejected:I,promiseResolved:I,promiseCancelled:I,promiseChained:function(e,t,r){return{promise:t,child:r}},warning:function(e,t){return{warning:t}},unhandledRejection:function(e,t,r){return{reason:t,promise:r}},rejectionHandled:I},T=function(e){var t=!1;try{t=M.apply(null,arguments)}catch(e){l.throwLater(e),t=!0}var r=!1;try{r=N(e,A[e].apply(null,arguments))}catch(e){l.throwLater(e),r=!0}return r||t};function R(){return!1}function P(e,t,r){var i=this;try{e(t,r,(function(e){if("function"!=typeof e)throw new TypeError("onCancel must be a function, got: "+p.toString(e));i._attachCancellationCallback(e)}))}catch(e){return e}}function O(e){if(!this._isCancellable())return this;var t=this._onCancel();void 0!==t?p.isArray(t)?t.push(e):this._setOnCancel([t,e]):this._setOnCancel(e)}function B(){return this._onCancelField}function C(e){this._onCancelField=e}function z(){this._cancellationParent=void 0,this._onCancelField=void 0}function F(e,t){if(0!=(1&t)){this._cancellationParent=e;var r=e._branchesRemainingToCancel;void 0===r&&(r=0),e._branchesRemainingToCancel=r+1}0!=(2&t)&&e._isBound()&&this._setBoundTo(e._boundTo)}t.config=function(e){if("longStackTraces"in(e=Object(e))&&(e.longStackTraces?t.longStackTraces():!e.longStackTraces&&t.hasLongStackTraces()&&x()),"warnings"in e){var r=e.warnings;re.warnings=!!r,S=re.warnings,p.isObject(r)&&"wForgottenReturn"in r&&(S=!!r.wForgottenReturn)}if("cancellation"in e&&e.cancellation&&!re.cancellation){if(l.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");t.prototype._clearCancellationData=z,t.prototype._propagateFrom=F,t.prototype._onCancel=B,t.prototype._setOnCancel=C,t.prototype._attachCancellationCallback=O,t.prototype._execute=P,D=F,re.cancellation=!0}if("monitoring"in e&&(e.monitoring&&!re.monitoring?(re.monitoring=!0,t.prototype._fireEvent=T):!e.monitoring&&re.monitoring&&(re.monitoring=!1,t.prototype._fireEvent=R)),"asyncHooks"in e&&p.nodeSupportsAsyncResource){var n=re.asyncHooks,o=!!e.asyncHooks;n!==o&&(re.asyncHooks=o,o?i():a())}return t},t.prototype._fireEvent=R,t.prototype._execute=function(e,t,r){try{e(t,r)}catch(e){return e}},t.prototype._onCancel=function(){},t.prototype._setOnCancel=function(e){},t.prototype._attachCancellationCallback=function(e){},t.prototype._captureStackTrace=function(){},t.prototype._attachExtraTrace=function(){},t.prototype._dereferenceTrace=function(){},t.prototype._clearCancellationData=function(){},t.prototype._propagateFrom=function(e,t){};var D=function(e,t){0!=(2&t)&&e._isBound()&&this._setBoundTo(e._boundTo)};function q(){var e=this._boundTo;return void 0!==e&&e instanceof t?e.isFulfilled()?e.value():void 0:e}function L(){this._trace=new ee(this._peekContext())}function U(e,t){if(f(e)){var r=this._trace;if(void 0!==r&&t&&(r=r._parent),void 0!==r)r.attachExtraTrace(e);else if(!e.__stackCleaned__){var i=Z(e);p.notEnumerableProp(e,"stack",i.message+"\n"+i.stack.join("\n")),p.notEnumerableProp(e,"__stackCleaned__",!0)}}}function H(){this._trace=void 0}function K(e,r,i){if(re.warnings){var n,a=new h(e);if(r)i._attachExtraTrace(a);else if(re.longStackTraces&&(n=t._peekContext()))n.attachExtraTrace(a);else{var o=Z(a);a.stack=o.message+"\n"+o.stack.join("\n")}T("warning",a)||J(a,"",!0)}}function W(e){for(var t=[],r=0;r0?function(e){for(var t=e.stack.replace(/\s+$/g,"").split("\n"),r=0;r0&&"SyntaxError"!=e.name&&(t=t.slice(r)),t}(e):[" (No stack trace)"],{message:r,stack:"SyntaxError"==e.name?t:W(t)}}function J(e,t,r){if("undefined"!=typeof console){var i;if(p.isObject(e)){var n=e.stack;i=t+_(n,e)}else i=t+String(e);"function"==typeof u?u(i,r):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(i)}}function V(e,t,r,i){var n=!1;try{"function"==typeof t&&(n=!0,"rejectionHandled"===e?t(i):t(r,i))}catch(e){l.throwLater(e)}"unhandledRejection"===e?T(e,r,i)||n||J(r,"Unhandled rejection "):T(e,i)}function $(e){var t;if("function"==typeof e)t="[function "+(e.name||"anonymous")+"]";else{if(t=e&&"function"==typeof e.toString?e.toString():p.toString(e),/\[object [a-zA-Z0-9$_]+\]/.test(t))try{t=JSON.stringify(e)}catch(e){}0===t.length&&(t="(empty array)")}return"(<"+function(e){return e.length<41?e:e.substr(0,38)+"..."}(t)+">, no stack trace)"}function G(){return"function"==typeof te}var Q=function(){return!1},X=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function Y(e){var t=e.match(X);if(t)return{fileName:t[1],line:parseInt(t[2],10)}}function ee(e){this._parent=e,this._promisesCreated=0;var t=this._length=1+(void 0===e?0:e._length);te(this,ee),t>32&&this.uncycle()}p.inherits(ee,Error),r.CapturedTrace=ee,ee.prototype.uncycle=function(){var e=this._length;if(!(e<2)){for(var t=[],r={},i=0,n=this;void 0!==n;++i)t.push(n),n=n._parent;for(i=(e=this._length=i)-1;i>=0;--i){var a=t[i].stack;void 0===r[a]&&(r[a]=i)}for(i=0;i0&&(t[o-1]._parent=void 0,t[o-1]._length=1),t[i]._parent=void 0,t[i]._length=1;var s=i>0?t[i-1]:this;o=0;--c)t[c]._length=u,u++;return}}}},ee.prototype.attachExtraTrace=function(e){if(!e.__stackCleaned__){this.uncycle();for(var t=Z(e),r=t.message,i=[t.stack],n=this;void 0!==n;)i.push(W(n.stack.split("\n"))),n=n._parent;!function(e){for(var t=e[0],r=1;r=0;--s)if(i[s]===a){o=s;break}for(s=o;s>=0;--s){var u=i[s];if(t[n]!==u)break;t.pop(),n--}t=i}}(i),function(e){for(var t=0;t=0)return y=/@/,_=t,b=!0,function(e){e.stack=(new Error).stack};try{throw new Error}catch(e){i="stack"in e}return!("stack"in n)&&i&&"number"==typeof Error.stackTraceLimit?(y=e,_=t,function(e){Error.stackTraceLimit+=6;try{throw new Error}catch(t){e.stack=t.stack}Error.stackTraceLimit-=6}):(_=function(e,t){return"string"==typeof e?e:"object"!=typeof t&&"function"!=typeof t||void 0===t.name||void 0===t.message?$(t):t.toString()},null)}();"undefined"!=typeof console&&void 0!==console.warn&&(u=function(e){console.warn(e)},p.isNode&&n.stderr.isTTY?u=function(e,t){var r=t?"":"";console.warn(r+e+"\n")}:p.isNode||"string"!=typeof(new Error).stack||(u=function(e,t){console.warn("%c"+e,t?"color: darkorange":"color: red")}));var re={warnings:E,longStackTraces:!1,cancellation:!1,monitoring:!1,asyncHooks:!1};return k&&t.longStackTraces(),{asyncHooks:function(){return re.asyncHooks},longStackTraces:function(){return re.longStackTraces},warnings:function(){return re.warnings},cancellation:function(){return re.cancellation},monitoring:function(){return re.monitoring},propagateFromFunction:function(){return D},boundValueFunction:function(){return q},checkForgottenReturns:function(e,t,r,i,n){if(void 0===e&&null!==t&&S){if(void 0!==n&&n._returnedNonUndefined())return;if(0==(65535&i._bitField))return;r&&(r+=" ");var a="",o="";if(t._trace){for(var s=t._trace.stack.split("\n"),u=W(s),c=u.length-1;c>=0;--c){var l=u[c];if(!g.test(l)){var h=l.match(v);h&&(a="at "+h[1]+":"+h[2]+":"+h[3]+" ");break}}if(u.length>0){var p=u[0];for(c=0;c0&&(o="\n"+s[c-1]);break}}}var d="a promise was created in a "+r+"handler "+a+"but was not returned from it, see http://goo.gl/rRqMUw"+o;i._warn(d,!0,t)}},setBounds:function(e,t){if(G()){for(var r,i,n=(e.stack||"").split("\n"),a=(t.stack||"").split("\n"),o=-1,s=-1,u=0;u=s||(Q=function(e){if(m.test(e))return!0;var t=Y(e);return!!(t&&t.fileName===r&&o<=t.line&&t.line<=s)})}},warn:K,deprecated:function(e,t){var r=e+" is deprecated and will be removed in a future version.";return t&&(r+=" Use "+t+" instead."),K(r)},CapturedTrace:ee,fireDomEvent:N,fireGlobalEvent:M}}},{"./errors":12,"./es5":13,"./util":36}],10:[function(e,t,r){"use strict";t.exports=function(e){function t(){return this.value}function r(){throw this.reason}e.prototype.return=e.prototype.thenReturn=function(r){return r instanceof e&&r.suppressUnhandledRejections(),this._then(t,void 0,void 0,{value:r},void 0)},e.prototype.throw=e.prototype.thenThrow=function(e){return this._then(r,void 0,void 0,{reason:e},void 0)},e.prototype.catchThrow=function(e){if(arguments.length<=1)return this._then(void 0,r,void 0,{reason:e},void 0);var t=arguments[1],i=function(){throw t};return this.caught(e,i)},e.prototype.catchReturn=function(r){if(arguments.length<=1)return r instanceof e&&r.suppressUnhandledRejections(),this._then(void 0,t,void 0,{value:r},void 0);var i=arguments[1];i instanceof e&&i.suppressUnhandledRejections();var n=function(){return i};return this.caught(r,n)}}},{}],11:[function(e,t,r){"use strict";t.exports=function(e,t){var r=e.reduce,i=e.all;function n(){return i(this)}e.prototype.each=function(e){return r(this,e,t,0)._then(n,void 0,void 0,this,void 0)},e.prototype.mapSeries=function(e){return r(this,e,t,t)},e.each=function(e,i){return r(e,i,t,0)._then(n,void 0,void 0,e,void 0)},e.mapSeries=function(e,i){return r(e,i,t,t)}}},{}],12:[function(e,t,r){"use strict";var i,n,a=e("./es5"),o=a.freeze,s=e("./util"),u=s.inherits,c=s.notEnumerableProp;function l(e,t){function r(i){if(!(this instanceof r))return new r(i);c(this,"message","string"==typeof i?i:t),c(this,"name",e),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return u(r,Error),r}var h=l("Warning","warning"),p=l("CancellationError","cancellation error"),d=l("TimeoutError","timeout error"),f=l("AggregateError","aggregate error");try{i=TypeError,n=RangeError}catch(e){i=l("TypeError","type error"),n=l("RangeError","range error")}for(var m="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),g=0;g1?e.cancelPromise._reject(t):e.cancelPromise._cancel(),e.cancelPromise=null,!0)}function h(){return d.call(this,this.promise._target()._settledValue())}function p(e){if(!l(this,e))return o.e=e,o}function d(e){var n=this.promise,s=this.handler;if(!this.called){this.called=!0;var u=this.isFinallyHandler()?s.call(n._boundValue()):s.call(n._boundValue(),e);if(u===i)return u;if(void 0!==u){n._setReturnedNonUndefined();var d=r(u,n);if(d instanceof t){if(null!=this.cancelPromise){if(d._isCancelled()){var f=new a("late cancellation observer");return n._attachExtraTrace(f),o.e=f,o}d.isPending()&&d._attachCancellationCallback(new c(this))}return d._then(h,p,void 0,this,void 0)}}}return n.isRejected()?(l(this),o.e=e,o):(l(this),e)}return u.prototype.isFinallyHandler=function(){return 0===this.type},c.prototype._resultCancelled=function(){l(this.finallyHandler)},t.prototype._passThrough=function(e,t,r,i){return"function"!=typeof e?this.then():this._then(r,i,void 0,new u(this,t,e),void 0)},t.prototype.lastly=t.prototype.finally=function(e){return this._passThrough(e,0,d,d)},t.prototype.tap=function(e){return this._passThrough(e,1,d)},t.prototype.tapCatch=function(e){var r=arguments.length;if(1===r)return this._passThrough(e,1,void 0,d);var i,a=new Array(r-1),o=0;for(i=0;i0&&"function"==typeof arguments[t]&&(e=arguments[t]);var i=[].slice.call(arguments);e&&i.pop();var n=new r(i).promise();return void 0!==e?n.spread(e):n}}},{"./util":36}],18:[function(e,t,r){"use strict";t.exports=function(t,r,i,n,a,o){var s=e("./util"),u=s.tryCatch,c=s.errorObj,l=t._async;function h(e,r,i,n){this.constructor$(e),this._promise._captureStackTrace();var o=t._getContext();if(this._callback=s.contextBind(o,r),this._preservedValues=n===a?new Array(this.length()):null,this._limit=i,this._inFlight=0,this._queue=[],l.invoke(this._asyncInit,this,void 0),s.isArray(e))for(var u=0;u=1?o:0,a).promise()}s.inherits(h,r),h.prototype._asyncInit=function(){this._init$(void 0,-2)},h.prototype._init=function(){},h.prototype._promiseFulfilled=function(e,r){var i=this._values,a=this.length(),s=this._preservedValues,l=this._limit;if(r<0){if(i[r=-1*r-1]=e,l>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(l>=1&&this._inFlight>=l)return i[r]=e,this._queue.push(r),!1;null!==s&&(s[r]=e);var h=this._promise,p=this._callback,d=h._boundValue();h._pushContext();var f=u(p).call(d,e,r,a),m=h._popContext();if(o.checkForgottenReturns(f,m,null!==s?"Promise.filter":"Promise.map",h),f===c)return this._reject(f.e),!0;var g=n(f,this._promise);if(g instanceof t){var v=(g=g._target())._bitField;if(0==(50397184&v))return l>=1&&this._inFlight++,i[r]=g,g._proxy(this,-1*(r+1)),!1;if(0==(33554432&v))return 0!=(16777216&v)?(this._reject(g._reason()),!0):(this._cancel(),!0);f=g._value()}i[r]=f}return++this._totalResolved>=a&&(null!==s?this._filter(i,s):this._resolve(i),!0)},h.prototype._drainQueue=function(){for(var e=this._queue,t=this._limit,r=this._values;e.length>0&&this._inFlight1){a.deprecated("calling Promise.try with more than 1 argument");var c=arguments[1],l=arguments[2];i=o.isArray(c)?s(e).apply(l,c):s(e).call(l,c)}else i=s(e)();var h=u._popContext();return a.checkForgottenReturns(i,h,"Promise.try",u),u._resolveFromSyncValue(i),u},t.prototype._resolveFromSyncValue=function(e){e===o.errorObj?this._rejectCallback(e.e,!1):this._resolveCallback(e,!0)}}},{"./util":36}],20:[function(e,t,r){"use strict";var i=e("./util"),n=i.maybeWrapAsError,a=e("./errors").OperationalError,o=e("./es5"),s=/^(?:name|message|stack|cause)$/;function u(e){var t;if(function(e){return e instanceof Error&&o.getPrototypeOf(e)===Error.prototype}(e)){(t=new a(e)).name=e.name,t.message=e.message,t.stack=e.stack;for(var r=o.keys(e),n=0;n1){var r,i=new Array(t-1),n=0;for(r=0;r0&&"function"!=typeof e&&"function"!=typeof t){var r=".then() only accepts functions but was passed: "+u.classString(e);arguments.length>1&&(r+=", "+u.classString(t)),this._warn(r)}return this._then(e,t,void 0,void 0,void 0)},P.prototype.done=function(e,t){this._then(e,t,void 0,void 0,void 0)._setIsFinal()},P.prototype.spread=function(e){return"function"!=typeof e?a("expecting a function but got "+u.classString(e)):this.all()._then(e,void 0,void 0,w,void 0)},P.prototype.toJSON=function(){var e={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(e.fulfillmentValue=this.value(),e.isFulfilled=!0):this.isRejected()&&(e.rejectionReason=this.reason(),e.isRejected=!0),e},P.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new S(this).promise()},P.prototype.error=function(e){return this.caught(u.originatesFromRejection,e)},P.getNewLibraryCopy=t.exports,P.is=function(e){return e instanceof P},P.fromNode=P.fromCallback=function(e){var t=new P(b);t._captureStackTrace();var r=arguments.length>1&&!!Object(arguments[1]).multiArgs,i=R(e)(A(t,r));return i===T&&t._rejectCallback(i.e,!0),t._isFateSealed()||t._setAsyncGuaranteed(),t},P.all=function(e){return new S(e).promise()},P.cast=function(e){var t=k(e);return t instanceof P||((t=new P(b))._captureStackTrace(),t._setFulfilled(),t._rejectionHandler0=e),t},P.resolve=P.fulfilled=P.cast,P.reject=P.rejected=function(e){var t=new P(b);return t._captureStackTrace(),t._rejectCallback(e,!0),t},P.setScheduler=function(e){if("function"!=typeof e)throw new y("expecting a function but got "+u.classString(e));return g.setScheduler(e)},P.prototype._then=function(e,t,r,i,n){var a=void 0!==n,o=a?n:new P(b),s=this._target(),c=s._bitField;a||(o._propagateFrom(this,3),o._captureStackTrace(),void 0===i&&0!=(2097152&this._bitField)&&(i=0!=(50397184&c)?this._boundValue():s===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,o));var l=d();if(0!=(50397184&c)){var h,p,f=s._settlePromiseCtx;0!=(33554432&c)?(p=s._rejectionHandler0,h=e):0!=(16777216&c)?(p=s._fulfillmentHandler0,h=t,s._unsetRejectionIsUnhandled()):(f=s._settlePromiseLateCancellationObserver,p=new _("late cancellation observer"),s._attachExtraTrace(p),h=t),g.invoke(f,s,{handler:u.contextBind(l,h),promise:o,receiver:i,value:p})}else s._addCallbacks(e,t,o,i,l);return o},P.prototype._length=function(){return 65535&this._bitField},P.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},P.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},P.prototype._setLength=function(e){this._bitField=-65536&this._bitField|65535&e},P.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},P.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},P.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},P.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},P.prototype._isFinal=function(){return(4194304&this._bitField)>0},P.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},P.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},P.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},P.prototype._setAsyncGuaranteed=function(){if(!g.hasCustomScheduler()){var e=this._bitField;this._bitField=e|(536870912&e)>>2^134217728}},P.prototype._setNoAsyncGuarantee=function(){this._bitField=-134217729&(536870912|this._bitField)},P.prototype._receiverAt=function(e){var t=0===e?this._receiver0:this[4*e-4+3];if(t!==s)return void 0===t&&this._isBound()?this._boundValue():t},P.prototype._promiseAt=function(e){return this[4*e-4+2]},P.prototype._fulfillmentHandlerAt=function(e){return this[4*e-4+0]},P.prototype._rejectionHandlerAt=function(e){return this[4*e-4+1]},P.prototype._boundValue=function(){},P.prototype._migrateCallback0=function(e){e._bitField;var t=e._fulfillmentHandler0,r=e._rejectionHandler0,i=e._promise0,n=e._receiverAt(0);void 0===n&&(n=s),this._addCallbacks(t,r,i,n,null)},P.prototype._migrateCallbackAt=function(e,t){var r=e._fulfillmentHandlerAt(t),i=e._rejectionHandlerAt(t),n=e._promiseAt(t),a=e._receiverAt(t);void 0===a&&(a=s),this._addCallbacks(r,i,n,a,null)},P.prototype._addCallbacks=function(e,t,r,i,n){var a=this._length();if(a>=65531&&(a=0,this._setLength(0)),0===a)this._promise0=r,this._receiver0=i,"function"==typeof e&&(this._fulfillmentHandler0=u.contextBind(n,e)),"function"==typeof t&&(this._rejectionHandler0=u.contextBind(n,t));else{var o=4*a-4;this[o+2]=r,this[o+3]=i,"function"==typeof e&&(this[o+0]=u.contextBind(n,e)),"function"==typeof t&&(this[o+1]=u.contextBind(n,t))}return this._setLength(a+1),a},P.prototype._proxy=function(e,t){this._addCallbacks(void 0,void 0,t,e,null)},P.prototype._resolveCallback=function(e,t){if(0==(117506048&this._bitField)){if(e===this)return this._rejectCallback(r(),!1);var i=k(e,this);if(!(i instanceof P))return this._fulfill(e);t&&this._propagateFrom(i,2);var n=i._target();if(n!==this){var a=n._bitField;if(0==(50397184&a)){var o=this._length();o>0&&n._migrateCallback0(this);for(var s=1;s>>16)){if(e===this){var i=r();return this._attachExtraTrace(i),this._reject(i)}this._setFulfilled(),this._rejectionHandler0=e,(65535&t)>0&&(0!=(134217728&t)?this._settlePromises():g.settlePromises(this),this._dereferenceTrace())}},P.prototype._reject=function(e){var t=this._bitField;if(!((117506048&t)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=e,this._isFinal())return g.fatalError(e,u.isNode);(65535&t)>0?g.settlePromises(this):this._ensurePossibleRejectionHandled()}},P.prototype._fulfillPromises=function(e,t){for(var r=1;r0){if(0!=(16842752&e)){var r=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,r,e),this._rejectPromises(t,r)}else{var i=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,i,e),this._fulfillPromises(t,i)}this._setLength(0)}this._clearCancellationData()},P.prototype._settledValue=function(){var e=this._bitField;return 0!=(33554432&e)?this._rejectionHandler0:0!=(16777216&e)?this._fulfillmentHandler0:void 0},"undefined"!=typeof Symbol&&Symbol.toStringTag&&f.defineProperty(P.prototype,Symbol.toStringTag,{get:function(){return"Object"}}),P.defer=P.pending=function(){return N.deprecated("Promise.defer","new Promise"),{promise:new P(b),resolve:O,reject:B}},u.notEnumerableProp(P,"_makeSelfResolutionError",r),e("./method")(P,b,k,a,N),e("./bind")(P,b,k,N),e("./cancel")(P,S,a,N),e("./direct_resolve")(P),e("./synchronous_inspection")(P),e("./join")(P,S,k,b,g),P.Promise=P,P.version="3.7.2",e("./call_get.js")(P),e("./generators.js")(P,a,b,k,o,N),e("./map.js")(P,S,a,k,b,N),e("./nodeify.js")(P),e("./promisify.js")(P,b),e("./props.js")(P,S,k,a),e("./race.js")(P,b,k,a),e("./reduce.js")(P,S,a,k,b,N),e("./settle.js")(P,S,N),e("./some.js")(P,S,a),e("./timers.js")(P,b,N),e("./using.js")(P,a,k,j,b,N),e("./any.js")(P),e("./each.js")(P,b),e("./filter.js")(P,b),u.toFastProperties(P),u.toFastProperties(P.prototype),C({a:1}),C({b:2}),C({c:3}),C(1),C((function(){})),C(void 0),C(!1),C(new P(b)),N.setBounds(m.firstLineError,u.lastLineError),P}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36,async_hooks:void 0}],23:[function(e,t,r){"use strict";t.exports=function(t,r,i,n,a){var o=e("./util");function s(e){var i=this._promise=new t(r);e instanceof t&&(i._propagateFrom(e,3),e.suppressUnhandledRejections()),i._setOnCancel(this),this._values=e,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return o.isArray,o.inherits(s,a),s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function e(r,a){var s=i(this._values,this._promise);if(s instanceof t){var u=(s=s._target())._bitField;if(this._values=s,0==(50397184&u))return this._promise._setAsyncGuaranteed(),s._then(e,this._reject,void 0,this,a);if(0==(33554432&u))return 0!=(16777216&u)?this._reject(s._reason()):this._cancel();s=s._value()}if(null!==(s=o.asArray(s)))0!==s.length?this._iterate(s):-5===a?this._resolveEmptyArray():this._resolve(function(e){switch(e){case-2:return[];case-3:return{};case-6:return new Map}}(a));else{var c=n("expecting an array or an iterable object but got "+o.classString(s)).reason();this._promise._rejectCallback(c,!1)}},s.prototype._iterate=function(e){var r=this.getActualLength(e.length);this._length=r,this._values=this.shouldCopyValues()?new Array(r):this._values;for(var n=this._promise,a=!1,o=null,s=0;s=this._length&&(this._resolve(this._values),!0)},s.prototype._promiseCancelled=function(){return this._cancel(),!0},s.prototype._promiseRejected=function(e){return this._totalResolved++,this._reject(e),!0},s.prototype._resultCancelled=function(){if(!this._isResolved()){var e=this._values;if(this._cancel(),e instanceof t)e.cancel();else for(var r=0;r=this._length){var r;if(this._isMap)r=function(e){for(var t=new a,r=e.length/2|0,i=0;i>1},t.prototype.props=function(){return h(this)},t.props=function(e){return h(e)}}},{"./es5":13,"./util":36}],26:[function(e,t,r){"use strict";function i(e){this._capacity=e,this._length=0,this._front=0}i.prototype._willBeOverCapacity=function(e){return this._capacity=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseFulfilled=function(e,t){var r=new n;return r._bitField=33554432,r._settledValueField=e,this._promiseResolved(t,r)},a.prototype._promiseRejected=function(e,t){var r=new n;return r._bitField=16777216,r._settledValueField=e,this._promiseResolved(t,r)},t.settle=function(e){return i.deprecated(".settle()",".reflect()"),new a(e).promise()},t.allSettled=function(e){return new a(e).promise()},t.prototype.settle=function(){return t.settle(this)}}},{"./util":36}],31:[function(e,t,r){"use strict";t.exports=function(t,r,i){var n=e("./util"),a=e("./errors").RangeError,o=e("./errors").AggregateError,s=n.isArray,u={};function c(e){this.constructor$(e),this._howMany=0,this._unwrap=!1,this._initialized=!1}function l(e,t){if((0|t)!==t||t<0)return i("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var r=new c(e),n=r.promise();return r.setHowMany(t),r.init(),n}n.inherits(c,r),c.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var e=s(this._values);!this._isResolved()&&e&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},c.prototype.init=function(){this._initialized=!0,this._init()},c.prototype.setUnwrap=function(){this._unwrap=!0},c.prototype.howMany=function(){return this._howMany},c.prototype.setHowMany=function(e){this._howMany=e},c.prototype._promiseFulfilled=function(e){return this._addFulfilled(e),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},c.prototype._promiseRejected=function(e){return this._addRejected(e),this._checkOutcome()},c.prototype._promiseCancelled=function(){return this._values instanceof t||null==this._values?this._cancel():(this._addRejected(u),this._checkOutcome())},c.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var e=new o,t=this.length();t0?this._reject(e):this._cancel(),!0}return!1},c.prototype._fulfilled=function(){return this._totalResolved},c.prototype._rejected=function(){return this._values.length-this.length()},c.prototype._addRejected=function(e){this._values.push(e)},c.prototype._addFulfilled=function(e){this._values[this._totalResolved++]=e},c.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},c.prototype._getRangeError=function(e){var t="Input array must contain at least "+this._howMany+" items but contains only "+e+" items";return new a(t)},c.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},t.some=function(e,t){return l(e,t)},t.prototype.some=function(e){return l(this,e)},t._SomePromiseArray=c}},{"./errors":12,"./util":36}],32:[function(e,t,r){"use strict";t.exports=function(e){function t(e){void 0!==e?(e=e._target(),this._bitField=e._bitField,this._settledValueField=e._isFateSealed()?e._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}t.prototype._settledValue=function(){return this._settledValueField};var r=t.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},i=t.prototype.error=t.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},n=t.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},a=t.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},o=t.prototype.isPending=function(){return 0==(50397184&this._bitField)},s=t.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};t.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},e.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},e.prototype._isCancelled=function(){return this._target().__isCancelled()},e.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},e.prototype.isPending=function(){return o.call(this._target())},e.prototype.isRejected=function(){return a.call(this._target())},e.prototype.isFulfilled=function(){return n.call(this._target())},e.prototype.isResolved=function(){return s.call(this._target())},e.prototype.value=function(){return r.call(this._target())},e.prototype.reason=function(){var e=this._target();return e._unsetRejectionIsUnhandled(),i.call(e)},e.prototype._value=function(){return this._settledValue()},e.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},e.PromiseInspection=t}},{}],33:[function(e,t,r){"use strict";t.exports=function(t,r){var i=e("./util"),n=i.errorObj,a=i.isObject,o={}.hasOwnProperty;return function(e,s){if(a(e)){if(e instanceof t)return e;var u=function(e){try{return function(e){return e.then}(e)}catch(e){return n.e=e,n}}(e);if(u===n){s&&s._pushContext();var c=t.reject(u.e);return s&&s._popContext(),c}if("function"==typeof u)return function(e){try{return o.call(e,"_promise0")}catch(e){return!1}}(e)?(c=new t(r),e._then(c._fulfill,c._reject,void 0,c,null),c):function(e,a,o){var s=new t(r),u=s;o&&o._pushContext(),s._captureStackTrace(),o&&o._popContext();var c=!0,l=i.tryCatch(a).call(e,(function(e){s&&(s._resolveCallback(e),s=null)}),(function(e){s&&(s._rejectCallback(e,c,!0),s=null)}));return c=!1,s&&l===n&&(s._rejectCallback(l.e,!0,!0),s=null),u}(e,u,s)}return e}}},{"./util":36}],34:[function(e,t,r){"use strict";t.exports=function(t,r,i){var n=e("./util"),a=t.TimeoutError;function o(e){this.handle=e}o.prototype._resultCancelled=function(){clearTimeout(this.handle)};var s=function(e){return u(+this).thenReturn(e)},u=t.delay=function(e,n){var a,u;return void 0!==n?(a=t.resolve(n)._then(s,null,null,e,void 0),i.cancellation()&&n instanceof t&&a._setOnCancel(n)):(a=new t(r),u=setTimeout((function(){a._fulfill()}),+e),i.cancellation()&&a._setOnCancel(new o(u)),a._captureStackTrace()),a._setAsyncGuaranteed(),a};function c(e){return clearTimeout(this.handle),e}function l(e){throw clearTimeout(this.handle),e}t.prototype.delay=function(e){return u(e,this)},t.prototype.timeout=function(e,t){var r,s;e=+e;var u=new o(setTimeout((function(){r.isPending()&&function(e,t,r){var i;i="string"!=typeof t?t instanceof Error?t:new a("operation timed out"):new a(t),n.markAsOriginatingFromRejection(i),e._attachExtraTrace(i),e._reject(i),null!=r&&r.cancel()}(r,t,s)}),e));return i.cancellation()?(s=this.then(),(r=s._then(c,l,void 0,u,void 0))._setOnCancel(u)):r=this._then(c,l,void 0,u,void 0),r}}},{"./util":36}],35:[function(e,t,r){"use strict";t.exports=function(t,r,i,n,a,o){var s=e("./util"),u=e("./errors").TypeError,c=e("./util").inherits,l=s.errorObj,h=s.tryCatch,p={};function d(e){setTimeout((function(){throw e}),0)}function f(e,r){var n=0,o=e.length,s=new t(a);return function a(){if(n>=o)return s._fulfill();var u=function(e){var t=i(e);return t!==e&&"function"==typeof e._isDisposable&&"function"==typeof e._getDisposer&&e._isDisposable()&&t._setDisposable(e._getDisposer()),t}(e[n++]);if(u instanceof t&&u._isDisposable()){try{u=i(u._getDisposer().tryDispose(r),e.promise)}catch(e){return d(e)}if(u instanceof t)return u._then(a,d,null,null,null)}a()}(),s}function m(e,t,r){this._data=e,this._promise=t,this._context=r}function g(e,t,r){this.constructor$(e,t,r)}function v(e){return m.isDisposer(e)?(this.resources[this.index]._setDisposable(e),e.promise()):e}function y(e){this.length=e,this.promise=null,this[e-1]=null}m.prototype.data=function(){return this._data},m.prototype.promise=function(){return this._promise},m.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():p},m.prototype.tryDispose=function(e){var t=this.resource(),r=this._context;void 0!==r&&r._pushContext();var i=t!==p?this.doDispose(t,e):null;return void 0!==r&&r._popContext(),this._promise._unsetDisposable(),this._data=null,i},m.isDisposer=function(e){return null!=e&&"function"==typeof e.resource&&"function"==typeof e.tryDispose},c(g,m),g.prototype.doDispose=function(e,t){return this.data().call(e,e,t)},y.prototype._resultCancelled=function(){for(var e=this.length,r=0;r0},t.prototype._getDisposer=function(){return this._disposer},t.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},t.prototype.disposer=function(e){if("function"==typeof e)return new g(e,this,n());throw new u}}},{"./errors":12,"./util":36}],36:[function(e,t,i){"use strict";var a,o=e("./es5"),s="undefined"==typeof navigator,u={e:{}},c="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==r.g?r.g:void 0!==this?this:null;function l(){try{var e=a;return a=null,e.apply(this,arguments)}catch(e){return u.e=e,u}}function h(e){return null==e||!0===e||!1===e||"string"==typeof e||"number"==typeof e}function p(e,t,r){if(h(e))return e;var i={value:r,configurable:!0,enumerable:!1,writable:!0};return o.defineProperty(e,t,i),e}var d=function(){var e=[Array.prototype,Object.prototype,Function.prototype],t=function(t){for(var r=0;r1,i=t.length>0&&!(1===t.length&&"constructor"===t[0]),n=f.test(e+"")&&o.names(e).length>0;if(r||i||n)return!0}return!1}catch(e){return!1}},isIdentifier:function(e){return m.test(e)},inheritedDataKeys:d,getDataPropertyOrDefault:function(e,t,r){if(!o.isES5)return{}.hasOwnProperty.call(e,t)?e[t]:void 0;var i=Object.getOwnPropertyDescriptor(e,t);return null!=i?null==i.get&&null==i.set?i.value:r:void 0},thrower:function(e){throw e},isArray:o.isArray,asArray:w,notEnumerableProp:p,isPrimitive:h,isObject:function(e){return"function"==typeof e||"object"==typeof e&&null!==e},isError:v,canEvaluate:s,errorObj:u,tryCatch:function(e){return a=e,l},inherits:function(e,t){var r={}.hasOwnProperty;function i(){for(var i in this.constructor=e,this.constructor$=t,t.prototype)r.call(t.prototype,i)&&"$"!==i.charAt(i.length-1)&&(this[i+"$"]=t.prototype[i])}return i.prototype=t.prototype,e.prototype=new i,e.prototype},withAppended:function(e,t){var r,i=e.length,n=new Array(i+1);for(r=0;r10||j[0]>0),N.nodeSupportsAsyncResource=N.isNode&&function(){var t=!1;try{t="function"==typeof e("async_hooks").AsyncResource.prototype.runInAsyncScope}catch(e){t=!1}return t}(),N.isNode&&N.toFastProperties(n);try{throw new Error}catch(e){N.lastLineError=e}t.exports=N},{"./es5":13,async_hooks:void 0}]},{},[4])(4)},e.exports=i(),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)},13550:function(e,t,r){!function(e,t){"use strict";function i(e,t){if(!e)throw new Error(t||"Assertion failed")}function n(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}function a(e,t,r){if(a.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(r=t,t=10),this._init(e||0,t||10,r||"be"))}var o;"object"==typeof e?e.exports=a:t.BN=a,a.BN=a,a.wordSize=26;try{o="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(46601).Buffer}catch(e){}function s(e,t){var r=e.charCodeAt(t);return r>=48&&r<=57?r-48:r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:void i(!1,"Invalid character in "+e)}function u(e,t,r){var i=s(e,r);return r-1>=t&&(i|=s(e,r-1)<<4),i}function c(e,t,r,n){for(var a=0,o=0,s=Math.min(e.length,r),u=t;u=49?c-49+10:c>=17?c-17+10:c,i(c>=0&&o0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)o=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this._strip()},a.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)n=u(e,t,i)<=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;this._strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,o=a%i,s=Math.min(a,a-o)+r,u=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{a.prototype[Symbol.for("nodejs.util.inspect.custom")]=h}catch(e){a.prototype.inspect=h}else a.prototype.inspect=h;function h(){return(this.red?""}var p=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function m(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],o=n*a,s=67108863&o,u=o/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&u,p=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=p;d++){var f=c-d|0;l+=(o=(n=0|e.words[f])*(a=0|t.words[d])+h)/67108864|0,h=67108863&o}r.words[c]=0|h,u=0|l}return 0!==u?r.words[c]=0|u:r.length--,r._strip()}a.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,a=0,o=0;o>>24-n&16777215,(n+=2)>=26&&(n-=26,o--),r=0!==a||o!==this.length-1?p[6-u.length]+u+r:u+r}for(0!==a&&(r=a.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var c=d[e],l=f[e];r="";var h=this.clone();for(h.negative=0;!h.isZero();){var m=h.modrn(l).toString(e);r=(h=h.idivn(l)).isZero()?m+r:p[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16,2)},o&&(a.prototype.toBuffer=function(e,t){return this.toArrayLike(o,e,t)}),a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},a.prototype.toArrayLike=function(e,t,r){this._strip();var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0");var o=function(e,t){return e.allocUnsafe?e.allocUnsafe(t):new e(t)}(e,a);return this["_toArrayLike"+("le"===t?"LE":"BE")](o,n),o},a.prototype._toArrayLikeLE=function(e,t){for(var r=0,i=0,n=0,a=0;n>8&255),r>16&255),6===a?(r>24&255),i=0,a=0):(i=o>>>24,a+=2)}if(r=0&&(e[r--]=o>>8&255),r>=0&&(e[r--]=o>>16&255),6===a?(r>=0&&(e[r--]=o>>24&255),i=0,a=0):(i=o>>>24,a+=2)}if(r>=0)for(e[r--]=i;r>=0;)e[r--]=0},Math.clz32?a.prototype._countBits=function(e){return 32-Math.clz32(e)}:a.prototype._countBits=function(e){var t=e,r=0;return t>=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this._strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==a&&o>26,this.words[o]=67108863&t;if(0===a&&o>>13,d=0|o[1],f=8191&d,m=d>>>13,g=0|o[2],v=8191&g,y=g>>>13,_=0|o[3],b=8191&_,w=_>>>13,E=0|o[4],k=8191&E,S=E>>>13,x=0|o[5],j=8191&x,N=x>>>13,M=0|o[6],I=8191&M,A=M>>>13,T=0|o[7],R=8191&T,P=T>>>13,O=0|o[8],B=8191&O,C=O>>>13,z=0|o[9],F=8191&z,D=z>>>13,q=0|s[0],L=8191&q,U=q>>>13,H=0|s[1],K=8191&H,W=H>>>13,Z=0|s[2],J=8191&Z,V=Z>>>13,$=0|s[3],G=8191&$,Q=$>>>13,X=0|s[4],Y=8191&X,ee=X>>>13,te=0|s[5],re=8191&te,ie=te>>>13,ne=0|s[6],ae=8191&ne,oe=ne>>>13,se=0|s[7],ue=8191&se,ce=se>>>13,le=0|s[8],he=8191&le,pe=le>>>13,de=0|s[9],fe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ge=(c+(i=Math.imul(h,L))|0)+((8191&(n=(n=Math.imul(h,U))+Math.imul(p,L)|0))<<13)|0;c=((a=Math.imul(p,U))+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(f,L),n=(n=Math.imul(f,U))+Math.imul(m,L)|0,a=Math.imul(m,U);var ve=(c+(i=i+Math.imul(h,K)|0)|0)+((8191&(n=(n=n+Math.imul(h,W)|0)+Math.imul(p,K)|0))<<13)|0;c=((a=a+Math.imul(p,W)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(v,L),n=(n=Math.imul(v,U))+Math.imul(y,L)|0,a=Math.imul(y,U),i=i+Math.imul(f,K)|0,n=(n=n+Math.imul(f,W)|0)+Math.imul(m,K)|0,a=a+Math.imul(m,W)|0;var ye=(c+(i=i+Math.imul(h,J)|0)|0)+((8191&(n=(n=n+Math.imul(h,V)|0)+Math.imul(p,J)|0))<<13)|0;c=((a=a+Math.imul(p,V)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(b,L),n=(n=Math.imul(b,U))+Math.imul(w,L)|0,a=Math.imul(w,U),i=i+Math.imul(v,K)|0,n=(n=n+Math.imul(v,W)|0)+Math.imul(y,K)|0,a=a+Math.imul(y,W)|0,i=i+Math.imul(f,J)|0,n=(n=n+Math.imul(f,V)|0)+Math.imul(m,J)|0,a=a+Math.imul(m,V)|0;var _e=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(n=(n=n+Math.imul(h,Q)|0)+Math.imul(p,G)|0))<<13)|0;c=((a=a+Math.imul(p,Q)|0)+(n>>>13)|0)+(_e>>>26)|0,_e&=67108863,i=Math.imul(k,L),n=(n=Math.imul(k,U))+Math.imul(S,L)|0,a=Math.imul(S,U),i=i+Math.imul(b,K)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(w,K)|0,a=a+Math.imul(w,W)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,V)|0)+Math.imul(y,J)|0,a=a+Math.imul(y,V)|0,i=i+Math.imul(f,G)|0,n=(n=n+Math.imul(f,Q)|0)+Math.imul(m,G)|0,a=a+Math.imul(m,Q)|0;var be=(c+(i=i+Math.imul(h,Y)|0)|0)+((8191&(n=(n=n+Math.imul(h,ee)|0)+Math.imul(p,Y)|0))<<13)|0;c=((a=a+Math.imul(p,ee)|0)+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(j,L),n=(n=Math.imul(j,U))+Math.imul(N,L)|0,a=Math.imul(N,U),i=i+Math.imul(k,K)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(S,K)|0,a=a+Math.imul(S,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,V)|0)+Math.imul(w,J)|0,a=a+Math.imul(w,V)|0,i=i+Math.imul(v,G)|0,n=(n=n+Math.imul(v,Q)|0)+Math.imul(y,G)|0,a=a+Math.imul(y,Q)|0,i=i+Math.imul(f,Y)|0,n=(n=n+Math.imul(f,ee)|0)+Math.imul(m,Y)|0,a=a+Math.imul(m,ee)|0;var we=(c+(i=i+Math.imul(h,re)|0)|0)+((8191&(n=(n=n+Math.imul(h,ie)|0)+Math.imul(p,re)|0))<<13)|0;c=((a=a+Math.imul(p,ie)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(I,L),n=(n=Math.imul(I,U))+Math.imul(A,L)|0,a=Math.imul(A,U),i=i+Math.imul(j,K)|0,n=(n=n+Math.imul(j,W)|0)+Math.imul(N,K)|0,a=a+Math.imul(N,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,V)|0)+Math.imul(S,J)|0,a=a+Math.imul(S,V)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,Q)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,Q)|0,i=i+Math.imul(v,Y)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(y,Y)|0,a=a+Math.imul(y,ee)|0,i=i+Math.imul(f,re)|0,n=(n=n+Math.imul(f,ie)|0)+Math.imul(m,re)|0,a=a+Math.imul(m,ie)|0;var Ee=(c+(i=i+Math.imul(h,ae)|0)|0)+((8191&(n=(n=n+Math.imul(h,oe)|0)+Math.imul(p,ae)|0))<<13)|0;c=((a=a+Math.imul(p,oe)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(R,L),n=(n=Math.imul(R,U))+Math.imul(P,L)|0,a=Math.imul(P,U),i=i+Math.imul(I,K)|0,n=(n=n+Math.imul(I,W)|0)+Math.imul(A,K)|0,a=a+Math.imul(A,W)|0,i=i+Math.imul(j,J)|0,n=(n=n+Math.imul(j,V)|0)+Math.imul(N,J)|0,a=a+Math.imul(N,V)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,Q)|0)+Math.imul(S,G)|0,a=a+Math.imul(S,Q)|0,i=i+Math.imul(b,Y)|0,n=(n=n+Math.imul(b,ee)|0)+Math.imul(w,Y)|0,a=a+Math.imul(w,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(y,re)|0,a=a+Math.imul(y,ie)|0,i=i+Math.imul(f,ae)|0,n=(n=n+Math.imul(f,oe)|0)+Math.imul(m,ae)|0,a=a+Math.imul(m,oe)|0;var ke=(c+(i=i+Math.imul(h,ue)|0)|0)+((8191&(n=(n=n+Math.imul(h,ce)|0)+Math.imul(p,ue)|0))<<13)|0;c=((a=a+Math.imul(p,ce)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(B,L),n=(n=Math.imul(B,U))+Math.imul(C,L)|0,a=Math.imul(C,U),i=i+Math.imul(R,K)|0,n=(n=n+Math.imul(R,W)|0)+Math.imul(P,K)|0,a=a+Math.imul(P,W)|0,i=i+Math.imul(I,J)|0,n=(n=n+Math.imul(I,V)|0)+Math.imul(A,J)|0,a=a+Math.imul(A,V)|0,i=i+Math.imul(j,G)|0,n=(n=n+Math.imul(j,Q)|0)+Math.imul(N,G)|0,a=a+Math.imul(N,Q)|0,i=i+Math.imul(k,Y)|0,n=(n=n+Math.imul(k,ee)|0)+Math.imul(S,Y)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(b,re)|0,n=(n=n+Math.imul(b,ie)|0)+Math.imul(w,re)|0,a=a+Math.imul(w,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,oe)|0)+Math.imul(y,ae)|0,a=a+Math.imul(y,oe)|0,i=i+Math.imul(f,ue)|0,n=(n=n+Math.imul(f,ce)|0)+Math.imul(m,ue)|0,a=a+Math.imul(m,ce)|0;var Se=(c+(i=i+Math.imul(h,he)|0)|0)+((8191&(n=(n=n+Math.imul(h,pe)|0)+Math.imul(p,he)|0))<<13)|0;c=((a=a+Math.imul(p,pe)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(F,L),n=(n=Math.imul(F,U))+Math.imul(D,L)|0,a=Math.imul(D,U),i=i+Math.imul(B,K)|0,n=(n=n+Math.imul(B,W)|0)+Math.imul(C,K)|0,a=a+Math.imul(C,W)|0,i=i+Math.imul(R,J)|0,n=(n=n+Math.imul(R,V)|0)+Math.imul(P,J)|0,a=a+Math.imul(P,V)|0,i=i+Math.imul(I,G)|0,n=(n=n+Math.imul(I,Q)|0)+Math.imul(A,G)|0,a=a+Math.imul(A,Q)|0,i=i+Math.imul(j,Y)|0,n=(n=n+Math.imul(j,ee)|0)+Math.imul(N,Y)|0,a=a+Math.imul(N,ee)|0,i=i+Math.imul(k,re)|0,n=(n=n+Math.imul(k,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(b,ae)|0,n=(n=n+Math.imul(b,oe)|0)+Math.imul(w,ae)|0,a=a+Math.imul(w,oe)|0,i=i+Math.imul(v,ue)|0,n=(n=n+Math.imul(v,ce)|0)+Math.imul(y,ue)|0,a=a+Math.imul(y,ce)|0,i=i+Math.imul(f,he)|0,n=(n=n+Math.imul(f,pe)|0)+Math.imul(m,he)|0,a=a+Math.imul(m,pe)|0;var xe=(c+(i=i+Math.imul(h,fe)|0)|0)+((8191&(n=(n=n+Math.imul(h,me)|0)+Math.imul(p,fe)|0))<<13)|0;c=((a=a+Math.imul(p,me)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(F,K),n=(n=Math.imul(F,W))+Math.imul(D,K)|0,a=Math.imul(D,W),i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,V)|0)+Math.imul(C,J)|0,a=a+Math.imul(C,V)|0,i=i+Math.imul(R,G)|0,n=(n=n+Math.imul(R,Q)|0)+Math.imul(P,G)|0,a=a+Math.imul(P,Q)|0,i=i+Math.imul(I,Y)|0,n=(n=n+Math.imul(I,ee)|0)+Math.imul(A,Y)|0,a=a+Math.imul(A,ee)|0,i=i+Math.imul(j,re)|0,n=(n=n+Math.imul(j,ie)|0)+Math.imul(N,re)|0,a=a+Math.imul(N,ie)|0,i=i+Math.imul(k,ae)|0,n=(n=n+Math.imul(k,oe)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,oe)|0,i=i+Math.imul(b,ue)|0,n=(n=n+Math.imul(b,ce)|0)+Math.imul(w,ue)|0,a=a+Math.imul(w,ce)|0,i=i+Math.imul(v,he)|0,n=(n=n+Math.imul(v,pe)|0)+Math.imul(y,he)|0,a=a+Math.imul(y,pe)|0;var je=(c+(i=i+Math.imul(f,fe)|0)|0)+((8191&(n=(n=n+Math.imul(f,me)|0)+Math.imul(m,fe)|0))<<13)|0;c=((a=a+Math.imul(m,me)|0)+(n>>>13)|0)+(je>>>26)|0,je&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,V))+Math.imul(D,J)|0,a=Math.imul(D,V),i=i+Math.imul(B,G)|0,n=(n=n+Math.imul(B,Q)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,Q)|0,i=i+Math.imul(R,Y)|0,n=(n=n+Math.imul(R,ee)|0)+Math.imul(P,Y)|0,a=a+Math.imul(P,ee)|0,i=i+Math.imul(I,re)|0,n=(n=n+Math.imul(I,ie)|0)+Math.imul(A,re)|0,a=a+Math.imul(A,ie)|0,i=i+Math.imul(j,ae)|0,n=(n=n+Math.imul(j,oe)|0)+Math.imul(N,ae)|0,a=a+Math.imul(N,oe)|0,i=i+Math.imul(k,ue)|0,n=(n=n+Math.imul(k,ce)|0)+Math.imul(S,ue)|0,a=a+Math.imul(S,ce)|0,i=i+Math.imul(b,he)|0,n=(n=n+Math.imul(b,pe)|0)+Math.imul(w,he)|0,a=a+Math.imul(w,pe)|0;var Ne=(c+(i=i+Math.imul(v,fe)|0)|0)+((8191&(n=(n=n+Math.imul(v,me)|0)+Math.imul(y,fe)|0))<<13)|0;c=((a=a+Math.imul(y,me)|0)+(n>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,i=Math.imul(F,G),n=(n=Math.imul(F,Q))+Math.imul(D,G)|0,a=Math.imul(D,Q),i=i+Math.imul(B,Y)|0,n=(n=n+Math.imul(B,ee)|0)+Math.imul(C,Y)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(R,re)|0,n=(n=n+Math.imul(R,ie)|0)+Math.imul(P,re)|0,a=a+Math.imul(P,ie)|0,i=i+Math.imul(I,ae)|0,n=(n=n+Math.imul(I,oe)|0)+Math.imul(A,ae)|0,a=a+Math.imul(A,oe)|0,i=i+Math.imul(j,ue)|0,n=(n=n+Math.imul(j,ce)|0)+Math.imul(N,ue)|0,a=a+Math.imul(N,ce)|0,i=i+Math.imul(k,he)|0,n=(n=n+Math.imul(k,pe)|0)+Math.imul(S,he)|0,a=a+Math.imul(S,pe)|0;var Me=(c+(i=i+Math.imul(b,fe)|0)|0)+((8191&(n=(n=n+Math.imul(b,me)|0)+Math.imul(w,fe)|0))<<13)|0;c=((a=a+Math.imul(w,me)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(F,Y),n=(n=Math.imul(F,ee))+Math.imul(D,Y)|0,a=Math.imul(D,ee),i=i+Math.imul(B,re)|0,n=(n=n+Math.imul(B,ie)|0)+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(R,ae)|0,n=(n=n+Math.imul(R,oe)|0)+Math.imul(P,ae)|0,a=a+Math.imul(P,oe)|0,i=i+Math.imul(I,ue)|0,n=(n=n+Math.imul(I,ce)|0)+Math.imul(A,ue)|0,a=a+Math.imul(A,ce)|0,i=i+Math.imul(j,he)|0,n=(n=n+Math.imul(j,pe)|0)+Math.imul(N,he)|0,a=a+Math.imul(N,pe)|0;var Ie=(c+(i=i+Math.imul(k,fe)|0)|0)+((8191&(n=(n=n+Math.imul(k,me)|0)+Math.imul(S,fe)|0))<<13)|0;c=((a=a+Math.imul(S,me)|0)+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(F,re),n=(n=Math.imul(F,ie))+Math.imul(D,re)|0,a=Math.imul(D,ie),i=i+Math.imul(B,ae)|0,n=(n=n+Math.imul(B,oe)|0)+Math.imul(C,ae)|0,a=a+Math.imul(C,oe)|0,i=i+Math.imul(R,ue)|0,n=(n=n+Math.imul(R,ce)|0)+Math.imul(P,ue)|0,a=a+Math.imul(P,ce)|0,i=i+Math.imul(I,he)|0,n=(n=n+Math.imul(I,pe)|0)+Math.imul(A,he)|0,a=a+Math.imul(A,pe)|0;var Ae=(c+(i=i+Math.imul(j,fe)|0)|0)+((8191&(n=(n=n+Math.imul(j,me)|0)+Math.imul(N,fe)|0))<<13)|0;c=((a=a+Math.imul(N,me)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(F,ae),n=(n=Math.imul(F,oe))+Math.imul(D,ae)|0,a=Math.imul(D,oe),i=i+Math.imul(B,ue)|0,n=(n=n+Math.imul(B,ce)|0)+Math.imul(C,ue)|0,a=a+Math.imul(C,ce)|0,i=i+Math.imul(R,he)|0,n=(n=n+Math.imul(R,pe)|0)+Math.imul(P,he)|0,a=a+Math.imul(P,pe)|0;var Te=(c+(i=i+Math.imul(I,fe)|0)|0)+((8191&(n=(n=n+Math.imul(I,me)|0)+Math.imul(A,fe)|0))<<13)|0;c=((a=a+Math.imul(A,me)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(F,ue),n=(n=Math.imul(F,ce))+Math.imul(D,ue)|0,a=Math.imul(D,ce),i=i+Math.imul(B,he)|0,n=(n=n+Math.imul(B,pe)|0)+Math.imul(C,he)|0,a=a+Math.imul(C,pe)|0;var Re=(c+(i=i+Math.imul(R,fe)|0)|0)+((8191&(n=(n=n+Math.imul(R,me)|0)+Math.imul(P,fe)|0))<<13)|0;c=((a=a+Math.imul(P,me)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(F,he),n=(n=Math.imul(F,pe))+Math.imul(D,he)|0,a=Math.imul(D,pe);var Pe=(c+(i=i+Math.imul(B,fe)|0)|0)+((8191&(n=(n=n+Math.imul(B,me)|0)+Math.imul(C,fe)|0))<<13)|0;c=((a=a+Math.imul(C,me)|0)+(n>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var Oe=(c+(i=Math.imul(F,fe))|0)+((8191&(n=(n=Math.imul(F,me))+Math.imul(D,fe)|0))<<13)|0;return c=((a=Math.imul(D,me))+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ve,u[2]=ye,u[3]=_e,u[4]=be,u[5]=we,u[6]=Ee,u[7]=ke,u[8]=Se,u[9]=xe,u[10]=je,u[11]=Ne,u[12]=Me,u[13]=Ie,u[14]=Ae,u[15]=Te,u[16]=Re,u[17]=Pe,u[18]=Oe,0!==c&&(u[19]=c,r.length++),r};function v(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,i=o,o=n}return 0!==i?r.words[a]=i:r.length--,r._strip()}function y(e,t,r){return v(e,t,r)}function _(e,t){this.x=e,this.y=t}Math.imul||(g=m),a.prototype.mulTo=function(e,t){var r=this.length+e.length;return 10===this.length&&10===e.length?g(this,e,t):r<63?m(this,e,t):r<1024?v(this,e,t):y(this,e,t)},_.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},_.prototype.permute=function(e,t,r,i,n,a){for(var o=0;o>>=1)n++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*t;o>=26,r+=a/67108864|0,r+=o>>>26,this.words[n]=67108863&o}return 0!==r&&(this.words[n]=r,this.length++),t?this.ineg():this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n&1}return t}(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,o=Math.min((e-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,c=0;c=0&&(0!==l||c>=n);c--){var h=0|this.words[c];this.words[c]=l<<26-a|h>>>a,l=h&s}return u&&0!==l&&(u.words[u.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===s)return this._strip();for(i(-1===s),s=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this._strip()},a.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,o=0|n.words[n.length-1];0!=(r=26-this._countBits(o))&&(n=n.ushln(r),i.iushln(r),o=0|n.words[n.length-1]);var s,u=i.length-n.length;if("mod"!==t){(s=new a(null)).length=u+1,s.words=new Array(s.length);for(var c=0;c=0;h--){var p=67108864*(0|i.words[n.length+h])+(0|i.words[n.length+h-1]);for(p=Math.min(p/o|0,67108863),i._ishlnsubmul(n,p,h);0!==i.negative;)p--,i.negative=0,i._ishlnsubmul(n,1,h),i.isZero()||(i.negative^=1);s&&(s.words[h]=p)}return s&&s._strip(),i._strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(n=s.div.neg()),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:n,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modrn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modrn(e.words[0]))}:this._wordDiv(e,t);var n,o,s},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modrn=function(e){var t=e<0;t&&(e=-e),i(e<=67108863);for(var r=(1<<26)%e,n=0,a=this.length-1;a>=0;a--)n=(r*n+(0|this.words[a]))%e;return t?-n:n},a.prototype.modn=function(e){return this.modrn(e)},a.prototype.idivn=function(e){var t=e<0;t&&(e=-e),i(e<=67108863);for(var r=0,n=this.length-1;n>=0;n--){var a=(0|this.words[n])+67108864*r;this.words[n]=a/e|0,r=a%e}return this._strip(),t?this.ineg():this},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new a(1),o=new a(0),s=new a(0),u=new a(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var l=r.clone(),h=t.clone();!t.isZero();){for(var p=0,d=1;0==(t.words[0]&d)&&p<26;++p,d<<=1);if(p>0)for(t.iushrn(p);p-- >0;)(n.isOdd()||o.isOdd())&&(n.iadd(l),o.isub(h)),n.iushrn(1),o.iushrn(1);for(var f=0,m=1;0==(r.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(r.iushrn(f);f-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(l),u.isub(h)),s.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(s),o.isub(u)):(r.isub(t),s.isub(n),u.isub(o))}return{a:s,b:u,gcd:r.iushln(c)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,o=new a(1),s=new a(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,l=1;0==(t.words[0]&l)&&c<26;++c,l<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);for(var h=0,p=1;0==(r.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s)):(r.isub(t),s.isub(o))}return(n=0===t.cmpn(1)?o:s).cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this._strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new j(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var b={k256:null,p224:null,p192:null,p25519:null};function w(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function E(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function k(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function S(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function x(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function j(e){if("string"==typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function N(e){j.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},w.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(e,t){e.iushrn(this.n,0,t)},w.prototype.imulK=function(e){return e.imul(this.k)},n(E,w),E.prototype.split=function(e,t){for(var r=4194303,i=Math.min(e.length,9),n=0;n>>22,a=o}a>>>=22,e.words[n-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},E.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(b[e])return b[e];var t;if("k256"===e)t=new E;else if("p224"===e)t=new k;else if("p192"===e)t=new S;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new x}return b[e]=t,t},j.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},j.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},j.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):(l(e,e.umod(this.m)._forceRed(this)),e)},j.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},j.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},j.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},j.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},j.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},j.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},j.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},j.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},j.prototype.isqr=function(e){return this.imul(e,e.clone())},j.prototype.sqr=function(e){return this.mul(e,e)},j.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),o=0;!n.isZero()&&0===n.andln(1);)o++,n.iushrn(1);i(!n.isZero());var s=new a(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new a(2*l*l).toRed(this);0!==this.pow(l,c).cmp(u);)l.redIAdd(u);for(var h=this.pow(l,n),p=this.pow(e,n.addn(1).iushrn(1)),d=this.pow(e,n),f=o;0!==d.cmp(s);){for(var m=d,g=0;0!==m.cmp(s);g++)m=m.redSqr();i(g=0;i--){for(var c=t.words[i],l=u-1;l>=0;l--){var h=c>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==h||0!==o?(o<<=1,o|=h,(4==++s||0===i&&0===l)&&(n=this.mul(n,r[o]),s=0,o=0)):s=0}u=26}return n},j.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},j.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new N(e)},n(N,j),N.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},N.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},N.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},N.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},N.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=r.nmd(e),this)},29931:(e,t,r)=>{var i;function n(e){this.rand=e}if(e.exports=function(e){return i||(i=new n(null)),i.generate(e)},e.exports.Rand=n,n.prototype.generate=function(e){return this._rand(e)},n.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var t=new Uint8Array(e),r=0;r{var i=r(89509).Buffer;function n(e){i.isBuffer(e)||(e=i.from(e));for(var t=e.length/4|0,r=new Array(t),n=0;n>>24]^l[f>>>16&255]^h[m>>>8&255]^p[255&g]^t[v++],o=c[f>>>24]^l[m>>>16&255]^h[g>>>8&255]^p[255&d]^t[v++],s=c[m>>>24]^l[g>>>16&255]^h[d>>>8&255]^p[255&f]^t[v++],u=c[g>>>24]^l[d>>>16&255]^h[f>>>8&255]^p[255&m]^t[v++],d=a,f=o,m=s,g=u;return a=(i[d>>>24]<<24|i[f>>>16&255]<<16|i[m>>>8&255]<<8|i[255&g])^t[v++],o=(i[f>>>24]<<24|i[m>>>16&255]<<16|i[g>>>8&255]<<8|i[255&d])^t[v++],s=(i[m>>>24]<<24|i[g>>>16&255]<<16|i[d>>>8&255]<<8|i[255&f])^t[v++],u=(i[g>>>24]<<24|i[d>>>16&255]<<16|i[f>>>8&255]<<8|i[255&m])^t[v++],[a>>>=0,o>>>=0,s>>>=0,u>>>=0]}var s=[0,1,2,4,8,16,32,64,128,27,54],u=function(){for(var e=new Array(256),t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;for(var r=[],i=[],n=[[],[],[],[]],a=[[],[],[],[]],o=0,s=0,u=0;u<256;++u){var c=s^s<<1^s<<2^s<<3^s<<4;c=c>>>8^255&c^99,r[o]=c,i[c]=o;var l=e[o],h=e[l],p=e[h],d=257*e[c]^16843008*c;n[0][o]=d<<24|d>>>8,n[1][o]=d<<16|d>>>16,n[2][o]=d<<8|d>>>24,n[3][o]=d,d=16843009*p^65537*h^257*l^16843008*o,a[0][c]=d<<24|d>>>8,a[1][c]=d<<16|d>>>16,a[2][c]=d<<8|d>>>24,a[3][c]=d,0===o?o=s=1:(o=l^e[e[e[p^l]]],s^=e[e[s]])}return{SBOX:r,INV_SBOX:i,SUB_MIX:n,INV_SUB_MIX:a}}();function c(e){this._key=n(e),this._reset()}c.blockSize=16,c.keySize=32,c.prototype.blockSize=c.blockSize,c.prototype.keySize=c.keySize,c.prototype._reset=function(){for(var e=this._key,t=e.length,r=t+6,i=4*(r+1),n=[],a=0;a>>24,o=u.SBOX[o>>>24]<<24|u.SBOX[o>>>16&255]<<16|u.SBOX[o>>>8&255]<<8|u.SBOX[255&o],o^=s[a/t|0]<<24):t>6&&a%t==4&&(o=u.SBOX[o>>>24]<<24|u.SBOX[o>>>16&255]<<16|u.SBOX[o>>>8&255]<<8|u.SBOX[255&o]),n[a]=n[a-t]^o}for(var c=[],l=0;l>>24]]^u.INV_SUB_MIX[1][u.SBOX[p>>>16&255]]^u.INV_SUB_MIX[2][u.SBOX[p>>>8&255]]^u.INV_SUB_MIX[3][u.SBOX[255&p]]}this._nRounds=r,this._keySchedule=n,this._invKeySchedule=c},c.prototype.encryptBlockRaw=function(e){return o(e=n(e),this._keySchedule,u.SUB_MIX,u.SBOX,this._nRounds)},c.prototype.encryptBlock=function(e){var t=this.encryptBlockRaw(e),r=i.allocUnsafe(16);return r.writeUInt32BE(t[0],0),r.writeUInt32BE(t[1],4),r.writeUInt32BE(t[2],8),r.writeUInt32BE(t[3],12),r},c.prototype.decryptBlock=function(e){var t=(e=n(e))[1];e[1]=e[3],e[3]=t;var r=o(e,this._invKeySchedule,u.INV_SUB_MIX,u.INV_SBOX,this._nRounds),a=i.allocUnsafe(16);return a.writeUInt32BE(r[0],0),a.writeUInt32BE(r[3],4),a.writeUInt32BE(r[2],8),a.writeUInt32BE(r[1],12),a},c.prototype.scrub=function(){a(this._keySchedule),a(this._invKeySchedule),a(this._key)},e.exports.AES=c},62422:(e,t,r)=>{var i=r(74497),n=r(89509).Buffer,a=r(71027),o=r(35717),s=r(83288),u=r(67295),c=r(20685);function l(e,t,r,o){a.call(this);var u=n.alloc(4,0);this._cipher=new i.AES(t);var l=this._cipher.encryptBlock(u);this._ghash=new s(l),r=function(e,t,r){if(12===t.length)return e._finID=n.concat([t,n.from([0,0,0,1])]),n.concat([t,n.from([0,0,0,2])]);var i=new s(r),a=t.length,o=a%16;i.update(t),o&&(o=16-o,i.update(n.alloc(o,0))),i.update(n.alloc(8,0));var u=8*a,l=n.alloc(8);l.writeUIntBE(u,0,8),i.update(l),e._finID=i.state;var h=n.from(e._finID);return c(h),h}(this,r,l),this._prev=n.from(r),this._cache=n.allocUnsafe(0),this._secCache=n.allocUnsafe(0),this._decrypt=o,this._alen=0,this._len=0,this._mode=e,this._authTag=null,this._called=!1}o(l,a),l.prototype._update=function(e){if(!this._called&&this._alen){var t=16-this._alen%16;t<16&&(t=n.alloc(t,0),this._ghash.update(t))}this._called=!0;var r=this._mode.encrypt(this,e);return this._decrypt?this._ghash.update(e):this._ghash.update(r),this._len+=e.length,r},l.prototype._final=function(){if(this._decrypt&&!this._authTag)throw new Error("Unsupported state or unable to authenticate data");var e=u(this._ghash.final(8*this._alen,8*this._len),this._cipher.encryptBlock(this._finID));if(this._decrypt&&function(e,t){var r=0;e.length!==t.length&&r++;for(var i=Math.min(e.length,t.length),n=0;n{var i=r(71494),n=r(66193),a=r(44946);t.createCipher=t.Cipher=i.createCipher,t.createCipheriv=t.Cipheriv=i.createCipheriv,t.createDecipher=t.Decipher=n.createDecipher,t.createDecipheriv=t.Decipheriv=n.createDecipheriv,t.listCiphers=t.getCiphers=function(){return Object.keys(a)}},66193:(e,t,r)=>{var i=r(62422),n=r(89509).Buffer,a=r(45),o=r(25969),s=r(71027),u=r(74497),c=r(13048);function l(e,t,r){s.call(this),this._cache=new h,this._last=void 0,this._cipher=new u.AES(t),this._prev=n.from(r),this._mode=e,this._autopadding=!0}function h(){this.cache=n.allocUnsafe(0)}function p(e,t,r){var s=a[e.toLowerCase()];if(!s)throw new TypeError("invalid suite type");if("string"==typeof r&&(r=n.from(r)),"GCM"!==s.mode&&r.length!==s.iv)throw new TypeError("invalid iv length "+r.length);if("string"==typeof t&&(t=n.from(t)),t.length!==s.key/8)throw new TypeError("invalid key length "+t.length);return"stream"===s.type?new o(s.module,t,r,!0):"auth"===s.type?new i(s.module,t,r,!0):new l(s.module,t,r)}r(35717)(l,s),l.prototype._update=function(e){var t,r;this._cache.add(e);for(var i=[];t=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,t),i.push(r);return n.concat(i)},l.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return function(e){var t=e[15];if(t<1||t>16)throw new Error("unable to decrypt data");for(var r=-1;++r16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t}else if(this.cache.length>=16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t;return null},h.prototype.flush=function(){if(this.cache.length)return this.cache},t.createDecipher=function(e,t){var r=a[e.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var i=c(t,!1,r.key,r.iv);return p(e,i.key,i.iv)},t.createDecipheriv=p},71494:(e,t,r)=>{var i=r(45),n=r(62422),a=r(89509).Buffer,o=r(25969),s=r(71027),u=r(74497),c=r(13048);function l(e,t,r){s.call(this),this._cache=new p,this._cipher=new u.AES(t),this._prev=a.from(r),this._mode=e,this._autopadding=!0}r(35717)(l,s),l.prototype._update=function(e){var t,r;this._cache.add(e);for(var i=[];t=this._cache.get();)r=this._mode.encrypt(this,t),i.push(r);return a.concat(i)};var h=a.alloc(16,16);function p(){this.cache=a.allocUnsafe(0)}function d(e,t,r){var s=i[e.toLowerCase()];if(!s)throw new TypeError("invalid suite type");if("string"==typeof t&&(t=a.from(t)),t.length!==s.key/8)throw new TypeError("invalid key length "+t.length);if("string"==typeof r&&(r=a.from(r)),"GCM"!==s.mode&&r.length!==s.iv)throw new TypeError("invalid iv length "+r.length);return"stream"===s.type?new o(s.module,t,r):"auth"===s.type?new n(s.module,t,r):new l(s.module,t,r)}l.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return e=this._mode.encrypt(this,e),this._cipher.scrub(),e;if(!e.equals(h))throw this._cipher.scrub(),new Error("data not multiple of block length")},l.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this},p.prototype.add=function(e){this.cache=a.concat([this.cache,e])},p.prototype.get=function(){if(this.cache.length>15){var e=this.cache.slice(0,16);return this.cache=this.cache.slice(16),e}return null},p.prototype.flush=function(){for(var e=16-this.cache.length,t=a.allocUnsafe(e),r=-1;++r{var i=r(89509).Buffer,n=i.alloc(16,0);function a(e){var t=i.allocUnsafe(16);return t.writeUInt32BE(e[0]>>>0,0),t.writeUInt32BE(e[1]>>>0,4),t.writeUInt32BE(e[2]>>>0,8),t.writeUInt32BE(e[3]>>>0,12),t}function o(e){this.h=e,this.state=i.alloc(16,0),this.cache=i.allocUnsafe(0)}o.prototype.ghash=function(e){for(var t=-1;++t0;t--)i[t]=i[t]>>>1|(1&i[t-1])<<31;i[0]=i[0]>>>1,r&&(i[0]=i[0]^225<<24)}this.state=a(n)},o.prototype.update=function(e){var t;for(this.cache=i.concat([this.cache,e]);this.cache.length>=16;)t=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(t)},o.prototype.final=function(e,t){return this.cache.length&&this.ghash(i.concat([this.cache,n],16)),this.ghash(a([0,e,0,t])),this.state},e.exports=o},20685:e=>{e.exports=function(e){for(var t,r=e.length;r--;){if(255!==(t=e.readUInt8(r))){t++,e.writeUInt8(t,r);break}e.writeUInt8(0,r)}}},25292:(e,t,r)=>{var i=r(67295);t.encrypt=function(e,t){var r=i(t,e._prev);return e._prev=e._cipher.encryptBlock(r),e._prev},t.decrypt=function(e,t){var r=e._prev;e._prev=t;var n=e._cipher.decryptBlock(t);return i(n,r)}},86311:(e,t,r)=>{var i=r(89509).Buffer,n=r(67295);function a(e,t,r){var a=t.length,o=n(t,e._cache);return e._cache=e._cache.slice(a),e._prev=i.concat([e._prev,r?t:o]),o}t.encrypt=function(e,t,r){for(var n,o=i.allocUnsafe(0);t.length;){if(0===e._cache.length&&(e._cache=e._cipher.encryptBlock(e._prev),e._prev=i.allocUnsafe(0)),!(e._cache.length<=t.length)){o=i.concat([o,a(e,t,r)]);break}n=e._cache.length,o=i.concat([o,a(e,t.slice(0,n),r)]),t=t.slice(n)}return o}},21510:(e,t,r)=>{var i=r(89509).Buffer;function n(e,t,r){for(var i,n,o=-1,s=0;++o<8;)i=t&1<<7-o?128:0,s+=(128&(n=e._cipher.encryptBlock(e._prev)[0]^i))>>o%8,e._prev=a(e._prev,r?i:n);return s}function a(e,t){var r=e.length,n=-1,a=i.allocUnsafe(e.length);for(e=i.concat([e,i.from([t])]);++n>7;return a}t.encrypt=function(e,t,r){for(var a=t.length,o=i.allocUnsafe(a),s=-1;++s{var i=r(89509).Buffer;function n(e,t,r){var n=e._cipher.encryptBlock(e._prev)[0]^t;return e._prev=i.concat([e._prev.slice(1),i.from([r?t:n])]),n}t.encrypt=function(e,t,r){for(var a=t.length,o=i.allocUnsafe(a),s=-1;++s{var i=r(67295),n=r(89509).Buffer,a=r(20685);function o(e){var t=e._cipher.encryptBlockRaw(e._prev);return a(e._prev),t}t.encrypt=function(e,t){var r=Math.ceil(t.length/16),a=e._cache.length;e._cache=n.concat([e._cache,n.allocUnsafe(16*r)]);for(var s=0;s{t.encrypt=function(e,t){return e._cipher.encryptBlock(t)},t.decrypt=function(e,t){return e._cipher.decryptBlock(t)}},45:(e,t,r)=>{var i={ECB:r(11084),CBC:r(25292),CFB:r(86311),CFB8:r(71964),CFB1:r(21510),OFB:r(18861),CTR:r(96009),GCM:r(96009)},n=r(44946);for(var a in n)n[a].module=i[n[a].mode];e.exports=n},18861:(e,t,r)=>{var i=r(48764).Buffer,n=r(67295);function a(e){return e._prev=e._cipher.encryptBlock(e._prev),e._prev}t.encrypt=function(e,t){for(;e._cache.length{var i=r(74497),n=r(89509).Buffer,a=r(71027);function o(e,t,r,o){a.call(this),this._cipher=new i.AES(t),this._prev=n.from(r),this._cache=n.allocUnsafe(0),this._secCache=n.allocUnsafe(0),this._decrypt=o,this._mode=e}r(35717)(o,a),o.prototype._update=function(e){return this._mode.encrypt(this,e,this._decrypt)},o.prototype._final=function(){this._cipher.scrub()},e.exports=o},53614:(e,t,r)=>{var i=r(47667),n=r(44696),a=r(45),o=r(99715),s=r(13048);function u(e,t,r){if(e=e.toLowerCase(),a[e])return n.createCipheriv(e,t,r);if(o[e])return new i({key:t,iv:r,mode:e});throw new TypeError("invalid suite type")}function c(e,t,r){if(e=e.toLowerCase(),a[e])return n.createDecipheriv(e,t,r);if(o[e])return new i({key:t,iv:r,mode:e,decrypt:!0});throw new TypeError("invalid suite type")}t.createCipher=t.Cipher=function(e,t){var r,i;if(e=e.toLowerCase(),a[e])r=a[e].key,i=a[e].iv;else{if(!o[e])throw new TypeError("invalid suite type");r=8*o[e].key,i=o[e].iv}var n=s(t,!1,r,i);return u(e,n.key,n.iv)},t.createCipheriv=t.Cipheriv=u,t.createDecipher=t.Decipher=function(e,t){var r,i;if(e=e.toLowerCase(),a[e])r=a[e].key,i=a[e].iv;else{if(!o[e])throw new TypeError("invalid suite type");r=8*o[e].key,i=o[e].iv}var n=s(t,!1,r,i);return c(e,n.key,n.iv)},t.createDecipheriv=t.Decipheriv=c,t.listCiphers=t.getCiphers=function(){return Object.keys(o).concat(n.getCiphers())}},47667:(e,t,r)=>{var i=r(71027),n=r(15251),a=r(35717),o=r(89509).Buffer,s={"des-ede3-cbc":n.CBC.instantiate(n.EDE),"des-ede3":n.EDE,"des-ede-cbc":n.CBC.instantiate(n.EDE),"des-ede":n.EDE,"des-cbc":n.CBC.instantiate(n.DES),"des-ecb":n.DES};function u(e){i.call(this);var t,r=e.mode.toLowerCase(),n=s[r];t=e.decrypt?"decrypt":"encrypt";var a=e.key;o.isBuffer(a)||(a=o.from(a)),"des-ede"!==r&&"des-ede-cbc"!==r||(a=o.concat([a,a.slice(0,8)]));var u=e.iv;o.isBuffer(u)||(u=o.from(u)),this._des=n.create({key:a,iv:u,type:t})}s.des=s["des-cbc"],s.des3=s["des-ede3-cbc"],e.exports=u,a(u,i),u.prototype._update=function(e){return o.from(this._des.update(e))},u.prototype._final=function(){return o.from(this._des.final())}},99715:(e,t)=>{t["des-ecb"]={key:8,iv:0},t["des-cbc"]=t.des={key:8,iv:8},t["des-ede3-cbc"]=t.des3={key:24,iv:8},t["des-ede3"]={key:24,iv:0},t["des-ede-cbc"]={key:16,iv:8},t["des-ede"]={key:16,iv:0}},23663:(e,t,r)=>{var i=r(48764).Buffer,n=r(13550),a=r(61798);function o(e){var t,r=e.modulus.byteLength();do{t=new n(a(r))}while(t.cmp(e.modulus)>=0||!t.umod(e.prime1)||!t.umod(e.prime2));return t}function s(e,t){var r=function(e){var t=o(e);return{blinder:t.toRed(n.mont(e.modulus)).redPow(new n(e.publicExponent)).fromRed(),unblinder:t.invm(e.modulus)}}(t),a=t.modulus.byteLength(),s=new n(e).mul(r.blinder).umod(t.modulus),u=s.toRed(n.mont(t.prime1)),c=s.toRed(n.mont(t.prime2)),l=t.coefficient,h=t.prime1,p=t.prime2,d=u.redPow(t.exponent1).fromRed(),f=c.redPow(t.exponent2).fromRed(),m=d.isub(f).imul(l).umod(h).imul(p);return f.iadd(m).imul(r.unblinder).umod(t.modulus).toArrayLike(i,"be",a)}s.getr=o,e.exports=s},56042:(e,t,r)=>{e.exports=r(75207)},64743:(e,t,r)=>{var i=r(25679).Buffer,n=r(23482),a=r(88473),o=r(35717),s=r(82957),u=r(47753),c=r(75207);function l(e){a.Writable.call(this);var t=c[e];if(!t)throw new Error("Unknown message digest");this._hashType=t.hash,this._hash=n(t.hash),this._tag=t.id,this._signType=t.sign}function h(e){a.Writable.call(this);var t=c[e];if(!t)throw new Error("Unknown message digest");this._hash=n(t.hash),this._tag=t.id,this._signType=t.sign}function p(e){return new l(e)}function d(e){return new h(e)}Object.keys(c).forEach((function(e){c[e].id=i.from(c[e].id,"hex"),c[e.toLowerCase()]=c[e]})),o(l,a.Writable),l.prototype._write=function(e,t,r){this._hash.update(e),r()},l.prototype.update=function(e,t){return"string"==typeof e&&(e=i.from(e,t)),this._hash.update(e),this},l.prototype.sign=function(e,t){this.end();var r=this._hash.digest(),i=s(r,e,this._hashType,this._signType,this._tag);return t?i.toString(t):i},o(h,a.Writable),h.prototype._write=function(e,t,r){this._hash.update(e),r()},h.prototype.update=function(e,t){return"string"==typeof e&&(e=i.from(e,t)),this._hash.update(e),this},h.prototype.verify=function(e,t,r){"string"==typeof t&&(t=i.from(t,r)),this.end();var n=this._hash.digest();return u(t,n,e,this._signType,this._tag)},e.exports={Sign:p,Verify:d,createSign:p,createVerify:d}},82957:(e,t,r)=>{var i=r(25679).Buffer,n=r(58355),a=r(23663),o=r(86266).ec,s=r(13550),u=r(70980),c=r(1308);function l(e,t,r,a){if((e=i.from(e.toArray())).length0&&r.ishrn(i),r}function p(e,t,r){var a,o;do{for(a=i.alloc(0);8*a.length{var i=r(25679).Buffer,n=r(13550),a=r(86266).ec,o=r(70980),s=r(1308);function u(e,t){if(e.cmpn(0)<=0)throw new Error("invalid sig");if(e.cmp(t)>=t)throw new Error("invalid sig")}e.exports=function(e,t,r,c,l){var h=o(r);if("ec"===h.type){if("ecdsa"!==c&&"ecdsa/rsa"!==c)throw new Error("wrong public key type");return function(e,t,r){var i=s[r.data.algorithm.curve.join(".")];if(!i)throw new Error("unknown curve "+r.data.algorithm.curve.join("."));var n=new a(i),o=r.data.subjectPrivateKey.data;return n.verify(t,e,o)}(e,t,h)}if("dsa"===h.type){if("dsa"!==c)throw new Error("wrong public key type");return function(e,t,r){var i=r.data.p,a=r.data.q,s=r.data.g,c=r.data.pub_key,l=o.signature.decode(e,"der"),h=l.s,p=l.r;u(h,a),u(p,a);var d=n.mont(i),f=h.invm(a);return 0===s.toRed(d).redPow(new n(t).mul(f).mod(a)).fromRed().mul(c.toRed(d).redPow(p.mul(f).mod(a)).fromRed()).mod(i).mod(a).cmp(p)}(e,t,h)}if("rsa"!==c&&"ecdsa/rsa"!==c)throw new Error("wrong public key type");t=i.concat([l,t]);for(var p=h.modulus.byteLength(),d=[1],f=0;t.length+d.length+2{var i=r(48764),n=i.Buffer;function a(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=i:(a(i,t),t.Buffer=o),o.prototype=Object.create(n.prototype),a(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i.SlowBuffer(e)}},74505:(e,t,r)=>{"use strict";var i=r(48764).Buffer,n=r(34155),a=r(69282),o=r(62292),s=r(30405),u=r(27948),c=r(71619);for(var l in c)t[l]=c[l];function h(e){if("number"!=typeof e||et.UNZIP)throw new TypeError("Bad argument");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=e,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}t.NONE=0,t.DEFLATE=1,t.INFLATE=2,t.GZIP=3,t.GUNZIP=4,t.DEFLATERAW=5,t.INFLATERAW=6,t.UNZIP=7,h.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,a(this.init_done,"close before init"),a(this.mode<=t.UNZIP),this.mode===t.DEFLATE||this.mode===t.GZIP||this.mode===t.DEFLATERAW?s.deflateEnd(this.strm):this.mode!==t.INFLATE&&this.mode!==t.GUNZIP&&this.mode!==t.INFLATERAW&&this.mode!==t.UNZIP||u.inflateEnd(this.strm),this.mode=t.NONE,this.dictionary=null)},h.prototype.write=function(e,t,r,i,n,a,o){return this._write(!0,e,t,r,i,n,a,o)},h.prototype.writeSync=function(e,t,r,i,n,a,o){return this._write(!1,e,t,r,i,n,a,o)},h.prototype._write=function(e,r,o,s,u,c,l,h){if(a.equal(arguments.length,8),a(this.init_done,"write before init"),a(this.mode!==t.NONE,"already finalized"),a.equal(!1,this.write_in_progress,"write already in progress"),a.equal(!1,this.pending_close,"close is pending"),this.write_in_progress=!0,a.equal(!1,void 0===r,"must provide flush value"),this.write_in_progress=!0,r!==t.Z_NO_FLUSH&&r!==t.Z_PARTIAL_FLUSH&&r!==t.Z_SYNC_FLUSH&&r!==t.Z_FULL_FLUSH&&r!==t.Z_FINISH&&r!==t.Z_BLOCK)throw new Error("Invalid flush value");if(null==o&&(o=i.alloc(0),u=0,s=0),this.strm.avail_in=u,this.strm.input=o,this.strm.next_in=s,this.strm.avail_out=h,this.strm.output=c,this.strm.next_out=l,this.flush=r,!e)return this._process(),this._checkError()?this._afterSync():void 0;var p=this;return n.nextTick((function(){p._process(),p._after()})),this},h.prototype._afterSync=function(){var e=this.strm.avail_out,t=this.strm.avail_in;return this.write_in_progress=!1,[t,e]},h.prototype._process=function(){var e=null;switch(this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=s.deflate(this.strm,this.flush);break;case t.UNZIP:switch(this.strm.avail_in>0&&(e=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===e)break;if(31!==this.strm.input[e]){this.mode=t.INFLATE;break}if(this.gzip_id_bytes_read=1,e++,1===this.strm.avail_in)break;case 1:if(null===e)break;139===this.strm.input[e]?(this.gzip_id_bytes_read=2,this.mode=t.GUNZIP):this.mode=t.INFLATE;break;default:throw new Error("invalid number of gzip magic number bytes read")}case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:for(this.err=u.inflate(this.strm,this.flush),this.err===t.Z_NEED_DICT&&this.dictionary&&(this.err=u.inflateSetDictionary(this.strm,this.dictionary),this.err===t.Z_OK?this.err=u.inflate(this.strm,this.flush):this.err===t.Z_DATA_ERROR&&(this.err=t.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===t.GUNZIP&&this.err===t.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=u.inflate(this.strm,this.flush);break;default:throw new Error("Unknown mode "+this.mode)}},h.prototype._checkError=function(){switch(this.err){case t.Z_OK:case t.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===t.Z_FINISH)return this._error("unexpected end of file"),!1;break;case t.Z_STREAM_END:break;case t.Z_NEED_DICT:return null==this.dictionary?this._error("Missing dictionary"):this._error("Bad dictionary"),!1;default:return this._error("Zlib error"),!1}return!0},h.prototype._after=function(){if(this._checkError()){var e=this.strm.avail_out,t=this.strm.avail_in;this.write_in_progress=!1,this.callback(t,e),this.pending_close&&this.close()}},h.prototype._error=function(e){this.strm.msg&&(e=this.strm.msg),this.onerror(e,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},h.prototype.init=function(e,r,i,n,o){a(4===arguments.length||5===arguments.length,"init(windowBits, level, memLevel, strategy, [dictionary])"),a(e>=8&&e<=15,"invalid windowBits"),a(r>=-1&&r<=9,"invalid compression level"),a(i>=1&&i<=9,"invalid memlevel"),a(n===t.Z_FILTERED||n===t.Z_HUFFMAN_ONLY||n===t.Z_RLE||n===t.Z_FIXED||n===t.Z_DEFAULT_STRATEGY,"invalid strategy"),this._init(r,e,i,n,o),this._setDictionary()},h.prototype.params=function(){throw new Error("deflateParams Not supported")},h.prototype.reset=function(){this._reset(),this._setDictionary()},h.prototype._init=function(e,r,i,n,a){switch(this.level=e,this.windowBits=r,this.memLevel=i,this.strategy=n,this.flush=t.Z_NO_FLUSH,this.err=t.Z_OK,this.mode!==t.GZIP&&this.mode!==t.GUNZIP||(this.windowBits+=16),this.mode===t.UNZIP&&(this.windowBits+=32),this.mode!==t.DEFLATERAW&&this.mode!==t.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new o,this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=s.deflateInit2(this.strm,this.level,t.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:case t.UNZIP:this.err=u.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}this.err!==t.Z_OK&&this._error("Init error"),this.dictionary=a,this.write_in_progress=!1,this.init_done=!0},h.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:this.err=s.deflateSetDictionary(this.strm,this.dictionary)}this.err!==t.Z_OK&&this._error("Failed to set dictionary")}},h.prototype._reset=function(){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:case t.GZIP:this.err=s.deflateReset(this.strm);break;case t.INFLATE:case t.INFLATERAW:case t.GUNZIP:this.err=u.inflateReset(this.strm)}this.err!==t.Z_OK&&this._error("Failed to reset stream")},t.Zlib=h},42635:(e,t,r)=>{"use strict";var i=r(34155),n=r(48764).Buffer,a=r(42830).Transform,o=r(74505),s=r(89539),u=r(69282).ok,c=r(48764).kMaxLength,l="Cannot create final Buffer. It would be larger than 0x"+c.toString(16)+" bytes";o.Z_MIN_WINDOWBITS=8,o.Z_MAX_WINDOWBITS=15,o.Z_DEFAULT_WINDOWBITS=15,o.Z_MIN_CHUNK=64,o.Z_MAX_CHUNK=1/0,o.Z_DEFAULT_CHUNK=16384,o.Z_MIN_MEMLEVEL=1,o.Z_MAX_MEMLEVEL=9,o.Z_DEFAULT_MEMLEVEL=8,o.Z_MIN_LEVEL=-1,o.Z_MAX_LEVEL=9,o.Z_DEFAULT_LEVEL=o.Z_DEFAULT_COMPRESSION;for(var h=Object.keys(o),p=0;p=c?o=new RangeError(l):t=n.concat(i,a),i=[],e.close(),r(o,t)}e.on("error",(function(t){e.removeListener("end",s),e.removeListener("readable",o),r(t)})),e.on("end",s),e.end(t),o()}function _(e,t){if("string"==typeof t&&(t=n.from(t)),!n.isBuffer(t))throw new TypeError("Not a string or buffer");var r=e._finishFlushFlag;return e._processChunk(t,r)}function b(e){if(!(this instanceof b))return new b(e);M.call(this,e,o.DEFLATE)}function w(e){if(!(this instanceof w))return new w(e);M.call(this,e,o.INFLATE)}function E(e){if(!(this instanceof E))return new E(e);M.call(this,e,o.GZIP)}function k(e){if(!(this instanceof k))return new k(e);M.call(this,e,o.GUNZIP)}function S(e){if(!(this instanceof S))return new S(e);M.call(this,e,o.DEFLATERAW)}function x(e){if(!(this instanceof x))return new x(e);M.call(this,e,o.INFLATERAW)}function j(e){if(!(this instanceof j))return new j(e);M.call(this,e,o.UNZIP)}function N(e){return e===o.Z_NO_FLUSH||e===o.Z_PARTIAL_FLUSH||e===o.Z_SYNC_FLUSH||e===o.Z_FULL_FLUSH||e===o.Z_FINISH||e===o.Z_BLOCK}function M(e,r){var i=this;if(this._opts=e=e||{},this._chunkSize=e.chunkSize||t.Z_DEFAULT_CHUNK,a.call(this,e),e.flush&&!N(e.flush))throw new Error("Invalid flush flag: "+e.flush);if(e.finishFlush&&!N(e.finishFlush))throw new Error("Invalid flush flag: "+e.finishFlush);if(this._flushFlag=e.flush||o.Z_NO_FLUSH,this._finishFlushFlag=void 0!==e.finishFlush?e.finishFlush:o.Z_FINISH,e.chunkSize&&(e.chunkSizet.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+e.chunkSize);if(e.windowBits&&(e.windowBitst.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+e.windowBits);if(e.level&&(e.levelt.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+e.level);if(e.memLevel&&(e.memLevelt.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+e.memLevel);if(e.strategy&&e.strategy!=t.Z_FILTERED&&e.strategy!=t.Z_HUFFMAN_ONLY&&e.strategy!=t.Z_RLE&&e.strategy!=t.Z_FIXED&&e.strategy!=t.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+e.strategy);if(e.dictionary&&!n.isBuffer(e.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._handle=new o.Zlib(r);var s=this;this._hadError=!1,this._handle.onerror=function(e,r){I(s),s._hadError=!0;var i=new Error(e);i.errno=r,i.code=t.codes[r],s.emit("error",i)};var u=t.Z_DEFAULT_COMPRESSION;"number"==typeof e.level&&(u=e.level);var c=t.Z_DEFAULT_STRATEGY;"number"==typeof e.strategy&&(c=e.strategy),this._handle.init(e.windowBits||t.Z_DEFAULT_WINDOWBITS,u,e.memLevel||t.Z_DEFAULT_MEMLEVEL,c,e.dictionary),this._buffer=n.allocUnsafe(this._chunkSize),this._offset=0,this._level=u,this._strategy=c,this.once("end",this.close),Object.defineProperty(this,"_closed",{get:function(){return!i._handle},configurable:!0,enumerable:!0})}function I(e,t){t&&i.nextTick(t),e._handle&&(e._handle.close(),e._handle=null)}function A(e){e.emit("close")}Object.defineProperty(t,"codes",{enumerable:!0,value:Object.freeze(f),writable:!1}),t.Deflate=b,t.Inflate=w,t.Gzip=E,t.Gunzip=k,t.DeflateRaw=S,t.InflateRaw=x,t.Unzip=j,t.createDeflate=function(e){return new b(e)},t.createInflate=function(e){return new w(e)},t.createDeflateRaw=function(e){return new S(e)},t.createInflateRaw=function(e){return new x(e)},t.createGzip=function(e){return new E(e)},t.createGunzip=function(e){return new k(e)},t.createUnzip=function(e){return new j(e)},t.deflate=function(e,t,r){return"function"==typeof t&&(r=t,t={}),y(new b(t),e,r)},t.deflateSync=function(e,t){return _(new b(t),e)},t.gzip=function(e,t,r){return"function"==typeof t&&(r=t,t={}),y(new E(t),e,r)},t.gzipSync=function(e,t){return _(new E(t),e)},t.deflateRaw=function(e,t,r){return"function"==typeof t&&(r=t,t={}),y(new S(t),e,r)},t.deflateRawSync=function(e,t){return _(new S(t),e)},t.unzip=function(e,t,r){return"function"==typeof t&&(r=t,t={}),y(new j(t),e,r)},t.unzipSync=function(e,t){return _(new j(t),e)},t.inflate=function(e,t,r){return"function"==typeof t&&(r=t,t={}),y(new w(t),e,r)},t.inflateSync=function(e,t){return _(new w(t),e)},t.gunzip=function(e,t,r){return"function"==typeof t&&(r=t,t={}),y(new k(t),e,r)},t.gunzipSync=function(e,t){return _(new k(t),e)},t.inflateRaw=function(e,t,r){return"function"==typeof t&&(r=t,t={}),y(new x(t),e,r)},t.inflateRawSync=function(e,t){return _(new x(t),e)},s.inherits(M,a),M.prototype.params=function(e,r,n){if(et.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+e);if(r!=t.Z_FILTERED&&r!=t.Z_HUFFMAN_ONLY&&r!=t.Z_RLE&&r!=t.Z_FIXED&&r!=t.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+r);if(this._level!==e||this._strategy!==r){var a=this;this.flush(o.Z_SYNC_FLUSH,(function(){u(a._handle,"zlib binding closed"),a._handle.params(e,r),a._hadError||(a._level=e,a._strategy=r,n&&n())}))}else i.nextTick(n)},M.prototype.reset=function(){return u(this._handle,"zlib binding closed"),this._handle.reset()},M.prototype._flush=function(e){this._transform(n.alloc(0),"",e)},M.prototype.flush=function(e,t){var r=this,a=this._writableState;("function"==typeof e||void 0===e&&!t)&&(t=e,e=o.Z_FULL_FLUSH),a.ended?t&&i.nextTick(t):a.ending?t&&this.once("end",t):a.needDrain?t&&this.once("drain",(function(){return r.flush(e,t)})):(this._flushFlag=e,this.write(n.alloc(0),"",t))},M.prototype.close=function(e){I(this,e),i.nextTick(A,this)},M.prototype._transform=function(e,t,r){var i,a=this._writableState,s=(a.ending||a.ended)&&(!e||a.length===e.length);return null===e||n.isBuffer(e)?this._handle?(s?i=this._finishFlushFlag:(i=this._flushFlag,e.length>=a.length&&(this._flushFlag=this._opts.flush||o.Z_NO_FLUSH)),void this._processChunk(e,i,r)):r(new Error("zlib binding closed")):r(new Error("invalid input"))},M.prototype._processChunk=function(e,t,r){var i=e&&e.length,a=this._chunkSize-this._offset,o=0,s=this,h="function"==typeof r;if(!h){var p,d=[],f=0;this.on("error",(function(e){p=e})),u(this._handle,"zlib binding closed");do{var m=this._handle.writeSync(t,e,o,i,this._buffer,this._offset,a)}while(!this._hadError&&y(m[0],m[1]));if(this._hadError)throw p;if(f>=c)throw I(this),new RangeError(l);var g=n.concat(d,f);return I(this),g}u(this._handle,"zlib binding closed");var v=this._handle.write(t,e,o,i,this._buffer,this._offset,a);function y(c,l){if(this&&(this.buffer=null,this.callback=null),!s._hadError){var p=a-l;if(u(p>=0,"have should not go down"),p>0){var m=s._buffer.slice(s._offset,s._offset+p);s._offset+=p,h?s.push(m):(d.push(m),f+=m.length)}if((0===l||s._offset>=s._chunkSize)&&(a=s._chunkSize,s._offset=0,s._buffer=n.allocUnsafe(s._chunkSize)),0===l){if(o+=i-c,i=c,!h)return!0;var g=s._handle.write(t,e,o,i,s._buffer,s._offset,s._chunkSize);return g.callback=y,void(g.buffer=e)}if(!h)return!1;r()}}v.buffer=e,v.callback=y},s.inherits(b,M),s.inherits(w,M),s.inherits(E,M),s.inherits(k,M),s.inherits(S,M),s.inherits(x,M),s.inherits(j,M)},67295:(e,t,r)=>{var i=r(48764).Buffer;e.exports=function(e,t){for(var r=Math.min(e.length,t.length),n=new i(r),a=0;a{"use strict";const i=r(79742),n=r(80645),a="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=u,t.SlowBuffer=function(e){return+e!=e&&(e=0),u.alloc(+e)},t.INSPECT_MAX_BYTES=50;const o=2147483647;function s(e){if(e>o)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,u.prototype),t}function u(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return h(e)}return c(e,t,r)}function c(e,t,r){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!u.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const r=0|m(e,t);let i=s(r);const n=i.write(e,t);return n!==r&&(i=i.slice(0,n)),i}(e,t);if(ArrayBuffer.isView(e))return function(e){if($(e,Uint8Array)){const t=new Uint8Array(e);return d(t.buffer,t.byteOffset,t.byteLength)}return p(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if($(e,ArrayBuffer)||e&&$(e.buffer,ArrayBuffer))return d(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&($(e,SharedArrayBuffer)||e&&$(e.buffer,SharedArrayBuffer)))return d(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const i=e.valueOf&&e.valueOf();if(null!=i&&i!==e)return u.from(i,t,r);const n=function(e){if(u.isBuffer(e)){const t=0|f(e.length),r=s(t);return 0===r.length||e.copy(r,0,0,t),r}return void 0!==e.length?"number"!=typeof e.length||G(e.length)?s(0):p(e):"Buffer"===e.type&&Array.isArray(e.data)?p(e.data):void 0}(e);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return u.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function l(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function h(e){return l(e),s(e<0?0:0|f(e))}function p(e){const t=e.length<0?0:0|f(e.length),r=s(t);for(let i=0;i=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|e}function m(e,t){if(u.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||$(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const r=e.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===r)return 0;let n=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return Z(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return J(e).length;default:if(n)return i?-1:Z(e).length;t=(""+t).toLowerCase(),n=!0}}function g(e,t,r){let i=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return A(this,t,r);case"utf8":case"utf-8":return j(this,t,r);case"ascii":return M(this,t,r);case"latin1":case"binary":return I(this,t,r);case"base64":return x(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,r);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),i=!0}}function v(e,t,r){const i=e[t];e[t]=e[r],e[r]=i}function y(e,t,r,i,n){if(0===e.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),G(r=+r)&&(r=n?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(n)return-1;r=e.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof t&&(t=u.from(t,i)),u.isBuffer(t))return 0===t.length?-1:_(e,t,r,i,n);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):_(e,[t],r,i,n);throw new TypeError("val must be string, number or Buffer")}function _(e,t,r,i,n){let a,o=1,s=e.length,u=t.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||t.length<2)return-1;o=2,s/=2,u/=2,r/=2}function c(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(n){let i=-1;for(a=r;as&&(r=s-u),a=r;a>=0;a--){let r=!0;for(let i=0;in&&(i=n):i=n;const a=t.length;let o;for(i>a/2&&(i=a/2),o=0;o>8,n=r%256,a.push(n),a.push(i);return a}(t,e.length-r),e,r,i)}function x(e,t,r){return 0===t&&r===e.length?i.fromByteArray(e):i.fromByteArray(e.slice(t,r))}function j(e,t,r){r=Math.min(e.length,r);const i=[];let n=t;for(;n239?4:t>223?3:t>191?2:1;if(n+o<=r){let r,i,s,u;switch(o){case 1:t<128&&(a=t);break;case 2:r=e[n+1],128==(192&r)&&(u=(31&t)<<6|63&r,u>127&&(a=u));break;case 3:r=e[n+1],i=e[n+2],128==(192&r)&&128==(192&i)&&(u=(15&t)<<12|(63&r)<<6|63&i,u>2047&&(u<55296||u>57343)&&(a=u));break;case 4:r=e[n+1],i=e[n+2],s=e[n+3],128==(192&r)&&128==(192&i)&&128==(192&s)&&(u=(15&t)<<18|(63&r)<<12|(63&i)<<6|63&s,u>65535&&u<1114112&&(a=u))}}null===a?(a=65533,o=1):a>65535&&(a-=65536,i.push(a>>>10&1023|55296),a=56320|1023&a),i.push(a),n+=o}return function(e){const t=e.length;if(t<=N)return String.fromCharCode.apply(String,e);let r="",i=0;for(;ii.length?(u.isBuffer(t)||(t=u.from(t)),t.copy(i,n)):Uint8Array.prototype.set.call(i,t,n);else{if(!u.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(i,n)}n+=t.length}return i},u.byteLength=m,u.prototype._isBuffer=!0,u.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tr&&(e+=" ... "),""},a&&(u.prototype[a]=u.prototype.inspect),u.prototype.compare=function(e,t,r,i,n){if($(e,Uint8Array)&&(e=u.from(e,e.offset,e.byteLength)),!u.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),t<0||r>e.length||i<0||n>this.length)throw new RangeError("out of range index");if(i>=n&&t>=r)return 0;if(i>=n)return-1;if(t>=r)return 1;if(this===e)return 0;let a=(n>>>=0)-(i>>>=0),o=(r>>>=0)-(t>>>=0);const s=Math.min(a,o),c=this.slice(i,n),l=e.slice(t,r);for(let e=0;e>>=0,isFinite(r)?(r>>>=0,void 0===i&&(i="utf8")):(i=r,r=void 0)}const n=this.length-t;if((void 0===r||r>n)&&(r=n),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let a=!1;for(;;)switch(i){case"hex":return b(this,e,t,r);case"utf8":case"utf-8":return w(this,e,t,r);case"ascii":case"latin1":case"binary":return E(this,e,t,r);case"base64":return k(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,r);default:if(a)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),a=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const N=4096;function M(e,t,r){let i="";r=Math.min(e.length,r);for(let n=t;ni)&&(r=i);let n="";for(let i=t;ir)throw new RangeError("Trying to access beyond buffer length")}function P(e,t,r,i,n,a){if(!u.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>n||te.length)throw new RangeError("Index out of range")}function O(e,t,r,i,n){U(t,i,n,e,r,7);let a=Number(t&BigInt(4294967295));e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,r}function B(e,t,r,i,n){U(t,i,n,e,r,7);let a=Number(t&BigInt(4294967295));e[r+7]=a,a>>=8,e[r+6]=a,a>>=8,e[r+5]=a,a>>=8,e[r+4]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=o,o>>=8,e[r+2]=o,o>>=8,e[r+1]=o,o>>=8,e[r]=o,r+8}function C(e,t,r,i,n,a){if(r+i>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function z(e,t,r,i,a){return t=+t,r>>>=0,a||C(e,0,r,4),n.write(e,t,r,i,23,4),r+4}function F(e,t,r,i,a){return t=+t,r>>>=0,a||C(e,0,r,8),n.write(e,t,r,i,52,8),r+8}u.prototype.slice=function(e,t){const r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||R(e,t,this.length);let i=this[e],n=1,a=0;for(;++a>>=0,t>>>=0,r||R(e,t,this.length);let i=this[e+--t],n=1;for(;t>0&&(n*=256);)i+=this[e+--t]*n;return i},u.prototype.readUint8=u.prototype.readUInt8=function(e,t){return e>>>=0,t||R(e,1,this.length),this[e]},u.prototype.readUint16LE=u.prototype.readUInt16LE=function(e,t){return e>>>=0,t||R(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUint16BE=u.prototype.readUInt16BE=function(e,t){return e>>>=0,t||R(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUint32LE=u.prototype.readUInt32LE=function(e,t){return e>>>=0,t||R(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUint32BE=u.prototype.readUInt32BE=function(e,t){return e>>>=0,t||R(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readBigUInt64LE=X((function(e){H(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||K(e,this.length-8);const i=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,n=this[++e]+256*this[++e]+65536*this[++e]+r*2**24;return BigInt(i)+(BigInt(n)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||K(e,this.length-8);const i=t*2**24+65536*this[++e]+256*this[++e]+this[++e],n=this[++e]*2**24+65536*this[++e]+256*this[++e]+r;return(BigInt(i)<>>=0,t>>>=0,r||R(e,t,this.length);let i=this[e],n=1,a=0;for(;++a=n&&(i-=Math.pow(2,8*t)),i},u.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||R(e,t,this.length);let i=t,n=1,a=this[e+--i];for(;i>0&&(n*=256);)a+=this[e+--i]*n;return n*=128,a>=n&&(a-=Math.pow(2,8*t)),a},u.prototype.readInt8=function(e,t){return e>>>=0,t||R(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function(e,t){e>>>=0,t||R(e,2,this.length);const r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt16BE=function(e,t){e>>>=0,t||R(e,2,this.length);const r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt32LE=function(e,t){return e>>>=0,t||R(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function(e,t){return e>>>=0,t||R(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readBigInt64LE=X((function(e){H(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||K(e,this.length-8);const i=this[e+4]+256*this[e+5]+65536*this[e+6]+(r<<24);return(BigInt(i)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||K(e,this.length-8);const i=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(i)<>>=0,t||R(e,4,this.length),n.read(this,e,!0,23,4)},u.prototype.readFloatBE=function(e,t){return e>>>=0,t||R(e,4,this.length),n.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function(e,t){return e>>>=0,t||R(e,8,this.length),n.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function(e,t){return e>>>=0,t||R(e,8,this.length),n.read(this,e,!1,52,8)},u.prototype.writeUintLE=u.prototype.writeUIntLE=function(e,t,r,i){e=+e,t>>>=0,r>>>=0,i||P(this,e,t,r,Math.pow(2,8*r)-1,0);let n=1,a=0;for(this[t]=255&e;++a>>=0,r>>>=0,i||P(this,e,t,r,Math.pow(2,8*r)-1,0);let n=r-1,a=1;for(this[t+n]=255&e;--n>=0&&(a*=256);)this[t+n]=e/a&255;return t+r},u.prototype.writeUint8=u.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,1,255,0),this[t]=255&e,t+1},u.prototype.writeUint16LE=u.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},u.prototype.writeUint16BE=u.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},u.prototype.writeUint32LE=u.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},u.prototype.writeUint32BE=u.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},u.prototype.writeBigUInt64LE=X((function(e,t=0){return O(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),u.prototype.writeBigUInt64BE=X((function(e,t=0){return B(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),u.prototype.writeIntLE=function(e,t,r,i){if(e=+e,t>>>=0,!i){const i=Math.pow(2,8*r-1);P(this,e,t,r,i-1,-i)}let n=0,a=1,o=0;for(this[t]=255&e;++n>0)-o&255;return t+r},u.prototype.writeIntBE=function(e,t,r,i){if(e=+e,t>>>=0,!i){const i=Math.pow(2,8*r-1);P(this,e,t,r,i-1,-i)}let n=r-1,a=1,o=0;for(this[t+n]=255&e;--n>=0&&(a*=256);)e<0&&0===o&&0!==this[t+n+1]&&(o=1),this[t+n]=(e/a>>0)-o&255;return t+r},u.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},u.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},u.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},u.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},u.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},u.prototype.writeBigInt64LE=X((function(e,t=0){return O(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),u.prototype.writeBigInt64BE=X((function(e,t=0){return B(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),u.prototype.writeFloatLE=function(e,t,r){return z(this,e,t,!0,r)},u.prototype.writeFloatBE=function(e,t,r){return z(this,e,t,!1,r)},u.prototype.writeDoubleLE=function(e,t,r){return F(this,e,t,!0,r)},u.prototype.writeDoubleBE=function(e,t,r){return F(this,e,t,!1,r)},u.prototype.copy=function(e,t,r,i){if(!u.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(n=t;n=i+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function U(e,t,r,i,n,a){if(e>r||e3?0===t||t===BigInt(0)?`>= 0${i} and < 2${i} ** ${8*(a+1)}${i}`:`>= -(2${i} ** ${8*(a+1)-1}${i}) and < 2 ** ${8*(a+1)-1}${i}`:`>= ${t}${i} and <= ${r}${i}`,new D.ERR_OUT_OF_RANGE("value",n,e)}!function(e,t,r){H(t,"offset"),void 0!==e[t]&&void 0!==e[t+r]||K(t,e.length-(r+1))}(i,n,a)}function H(e,t){if("number"!=typeof e)throw new D.ERR_INVALID_ARG_TYPE(t,"number",e)}function K(e,t,r){if(Math.floor(e)!==e)throw H(e,r),new D.ERR_OUT_OF_RANGE(r||"offset","an integer",e);if(t<0)throw new D.ERR_BUFFER_OUT_OF_BOUNDS;throw new D.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}q("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),q("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),q("ERR_OUT_OF_RANGE",(function(e,t,r){let i=`The value of "${e}" is out of range.`,n=r;return Number.isInteger(r)&&Math.abs(r)>2**32?n=L(String(r)):"bigint"==typeof r&&(n=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(n=L(n)),n+="n"),i+=` It must be ${t}. Received ${n}`,i}),RangeError);const W=/[^+/0-9A-Za-z-_]/g;function Z(e,t){let r;t=t||1/0;const i=e.length;let n=null;const a=[];for(let o=0;o55295&&r<57344){if(!n){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===i){(t-=3)>-1&&a.push(239,191,189);continue}n=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(t-=3)>-1&&a.push(239,191,189);if(n=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function J(e){return i.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(W,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function V(e,t,r,i){let n;for(n=0;n=t.length||n>=e.length);++n)t[n+r]=e[n];return n}function $(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function G(e){return e!=e}const Q=function(){const e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){const i=16*r;for(let n=0;n<16;++n)t[i+n]=e[r]+e[n]}return t}();function X(e){return"undefined"==typeof BigInt?Y:e}function Y(){throw new Error("BigInt not supported")}},50584:e=>{e.exports={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"}},21924:(e,t,r)=>{"use strict";var i=r(40210),n=r(55559),a=n(i("String.prototype.indexOf"));e.exports=function(e,t){var r=i(e,!!t);return"function"==typeof r&&a(e,".prototype.")>-1?n(r):r}},55559:(e,t,r)=>{"use strict";var i=r(58612),n=r(40210),a=n("%Function.prototype.apply%"),o=n("%Function.prototype.call%"),s=n("%Reflect.apply%",!0)||i.call(o,a),u=n("%Object.getOwnPropertyDescriptor%",!0),c=n("%Object.defineProperty%",!0),l=n("%Math.max%");if(c)try{c({},"a",{value:1})}catch(e){c=null}e.exports=function(e){var t=s(i,o,arguments);if(u&&c){var r=u(t,"length");r.configurable&&c(t,"length",{value:1+l(0,e.length-(arguments.length-1))})}return t};var h=function(){return s(i,a,arguments)};c?c(e.exports,"apply",{value:h}):e.exports.apply=h},9894:e=>{function t(e){this.dict=e||{}}t.prototype.set=function(e,t,r){if("object"!=typeof e){void 0===r&&(r=!0);var i=this.has(e);return!r&&i?this.dict[i]=this.dict[i]+","+t:this.dict[i||e]=t,i}for(var n in e)this.set(n,e[n],t)},t.prototype.has=function(e){for(var t=Object.keys(this.dict),r=(e=e.toLowerCase(),0);r{var i=r(89509).Buffer,n=r(42830).Transform,a=r(32553).s;function o(e){n.call(this),this.hashMode="string"==typeof e,this.hashMode?this[e]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}r(35717)(o,n),o.prototype.update=function(e,t,r){"string"==typeof e&&(e=i.from(e,t));var n=this._update(e);return this.hashMode?this:(r&&(n=this._toString(n,r)),n)},o.prototype.setAutoPadding=function(){},o.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},o.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},o.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},o.prototype._transform=function(e,t,r){var i;try{this.hashMode?this._update(e):this.push(this._update(e))}catch(e){i=e}finally{r(i)}},o.prototype._flush=function(e){var t;try{this.push(this.__final())}catch(e){t=e}e(t)},o.prototype._finalOrDigest=function(e){var t=this.__final()||i.alloc(0);return e&&(t=this._toString(t,e,!0)),t},o.prototype._toString=function(e,t,r){if(this._decoder||(this._decoder=new a(t),this._encoding=t),this._encoding!==t)throw new Error("can't switch encodings");var i=this._decoder.write(e);return r&&(i+=this._decoder.end()),i},e.exports=o},9779:(e,t,r)=>{var i=r(48764).Buffer,n=r(89539),a=r(42830).Stream,o=r(63463);function s(){this.writable=!1,this.readable=!0,this.dataSize=0,this.maxDataSize=2097152,this.pauseStreams=!0,this._released=!1,this._streams=[],this._currentStream=null,this._insideLoop=!1,this._pendingNext=!1}e.exports=s,n.inherits(s,a),s.create=function(e){var t=new this;for(var r in e=e||{})t[r]=e[r];return t},s.isStreamLike=function(e){return"function"!=typeof e&&"string"!=typeof e&&"boolean"!=typeof e&&"number"!=typeof e&&!i.isBuffer(e)},s.prototype.append=function(e){if(s.isStreamLike(e)){if(!(e instanceof o)){var t=o.create(e,{maxDataSize:1/0,pauseStream:this.pauseStreams});e.on("data",this._checkDataSize.bind(this)),e=t}this._handleErrors(e),this.pauseStreams&&e.pause()}return this._streams.push(e),this},s.prototype.pipe=function(e,t){return a.prototype.pipe.call(this,e,t),this.resume(),e},s.prototype._getNext=function(){if(this._currentStream=null,this._insideLoop)this._pendingNext=!0;else{this._insideLoop=!0;try{do{this._pendingNext=!1,this._realGetNext()}while(this._pendingNext)}finally{this._insideLoop=!1}}},s.prototype._realGetNext=function(){var e=this._streams.shift();void 0!==e?"function"==typeof e?e(function(e){s.isStreamLike(e)&&(e.on("data",this._checkDataSize.bind(this)),this._handleErrors(e)),this._pipeNext(e)}.bind(this)):this._pipeNext(e):this.end()},s.prototype._pipeNext=function(e){if(this._currentStream=e,s.isStreamLike(e))return e.on("end",this._getNext.bind(this)),void e.pipe(this,{end:!1});var t=e;this.write(t),this._getNext()},s.prototype._handleErrors=function(e){var t=this;e.on("error",(function(e){t._emitError(e)}))},s.prototype.write=function(e){this.emit("data",e)},s.prototype.pause=function(){this.pauseStreams&&(this.pauseStreams&&this._currentStream&&"function"==typeof this._currentStream.pause&&this._currentStream.pause(),this.emit("pause"))},s.prototype.resume=function(){this._released||(this._released=!0,this.writable=!0,this._getNext()),this.pauseStreams&&this._currentStream&&"function"==typeof this._currentStream.resume&&this._currentStream.resume(),this.emit("resume")},s.prototype.end=function(){this._reset(),this.emit("end")},s.prototype.destroy=function(){this._reset(),this.emit("close")},s.prototype._reset=function(){this.writable=!1,this._streams=[],this._currentStream=null},s.prototype._checkDataSize=function(){if(this._updateDataSize(),!(this.dataSize<=this.maxDataSize)){var e="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this._emitError(new Error(e))}},s.prototype._updateDataSize=function(){this.dataSize=0;var e=this;this._streams.forEach((function(t){t.dataSize&&(e.dataSize+=t.dataSize)})),this._currentStream&&this._currentStream.dataSize&&(this.dataSize+=this._currentStream.dataSize)},s.prototype._emitError=function(e){this._reset(),this.emit("error",e)}},16497:(e,t,r)=>{var i=r(48764).Buffer;t.VZ=function(e){return"[object Error]"===(t=e,Object.prototype.toString.call(t))||e instanceof Error;var t},i.isBuffer},76393:(e,t,r)=>{var i=r(48764).Buffer,n=r(86266),a=r(16426);e.exports=function(e){return new s(e)};var o={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};function s(e){this.curveType=o[e],this.curveType||(this.curveType={name:e}),this.curve=new n.ec(this.curveType.name),this.keys=void 0}function u(e,t,r){Array.isArray(e)||(e=e.toArray());var n=new i(e);if(r&&n.length=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function u(e,t,r){var i=s(e,r);return r-1>=t&&(i|=s(e,r-1)<<4),i}function c(e,t,r,i){for(var n=0,a=Math.min(e.length,r),o=t;o=49?s-49+10:s>=17?s-17+10:s}return n}a.isBN=function(e){return e instanceof a||null!==e&&"object"==typeof e&&e.constructor.wordSize===a.wordSize&&Array.isArray(e.words)},a.max=function(e,t){return e.cmp(t)>0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)o=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)n=u(e,t,i)<=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;this.strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,o=a%i,s=Math.min(a,a-o)+r,u=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],o=n*a,s=67108863&o,u=o/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&u,p=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=p;d++){var f=c-d|0;l+=(o=(n=0|e.words[f])*(a=0|t.words[d])+h)/67108864|0,h=67108863&o}r.words[c]=0|h,u=0|l}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}a.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,a=0,o=0;o>>24-n&16777215)||o!==this.length-1?l[6-u.length]+u+r:u+r,(n+=2)>=26&&(n-=26,o--)}for(0!==a&&(r=a.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var c=h[e],d=p[e];r="";var f=this.clone();for(f.negative=0;!f.isZero();){var m=f.modn(d).toString(e);r=(f=f.idivn(d)).isZero()?m+r:l[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(e,t){return i(void 0!==o),this.toArrayLike(o,e,t)},a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},a.prototype.toArrayLike=function(e,t,r){var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0"),this.strip();var o,s,u="le"===t,c=new e(a),l=this.clone();if(u){for(s=0;!l.isZero();s++)o=l.andln(255),l.iushrn(8),c[s]=o;for(;s=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==a&&o>26,this.words[o]=67108863&t;if(0===a&&o>>13,d=0|o[1],f=8191&d,m=d>>>13,g=0|o[2],v=8191&g,y=g>>>13,_=0|o[3],b=8191&_,w=_>>>13,E=0|o[4],k=8191&E,S=E>>>13,x=0|o[5],j=8191&x,N=x>>>13,M=0|o[6],I=8191&M,A=M>>>13,T=0|o[7],R=8191&T,P=T>>>13,O=0|o[8],B=8191&O,C=O>>>13,z=0|o[9],F=8191&z,D=z>>>13,q=0|s[0],L=8191&q,U=q>>>13,H=0|s[1],K=8191&H,W=H>>>13,Z=0|s[2],J=8191&Z,V=Z>>>13,$=0|s[3],G=8191&$,Q=$>>>13,X=0|s[4],Y=8191&X,ee=X>>>13,te=0|s[5],re=8191&te,ie=te>>>13,ne=0|s[6],ae=8191&ne,oe=ne>>>13,se=0|s[7],ue=8191&se,ce=se>>>13,le=0|s[8],he=8191&le,pe=le>>>13,de=0|s[9],fe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ge=(c+(i=Math.imul(h,L))|0)+((8191&(n=(n=Math.imul(h,U))+Math.imul(p,L)|0))<<13)|0;c=((a=Math.imul(p,U))+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(f,L),n=(n=Math.imul(f,U))+Math.imul(m,L)|0,a=Math.imul(m,U);var ve=(c+(i=i+Math.imul(h,K)|0)|0)+((8191&(n=(n=n+Math.imul(h,W)|0)+Math.imul(p,K)|0))<<13)|0;c=((a=a+Math.imul(p,W)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(v,L),n=(n=Math.imul(v,U))+Math.imul(y,L)|0,a=Math.imul(y,U),i=i+Math.imul(f,K)|0,n=(n=n+Math.imul(f,W)|0)+Math.imul(m,K)|0,a=a+Math.imul(m,W)|0;var ye=(c+(i=i+Math.imul(h,J)|0)|0)+((8191&(n=(n=n+Math.imul(h,V)|0)+Math.imul(p,J)|0))<<13)|0;c=((a=a+Math.imul(p,V)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(b,L),n=(n=Math.imul(b,U))+Math.imul(w,L)|0,a=Math.imul(w,U),i=i+Math.imul(v,K)|0,n=(n=n+Math.imul(v,W)|0)+Math.imul(y,K)|0,a=a+Math.imul(y,W)|0,i=i+Math.imul(f,J)|0,n=(n=n+Math.imul(f,V)|0)+Math.imul(m,J)|0,a=a+Math.imul(m,V)|0;var _e=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(n=(n=n+Math.imul(h,Q)|0)+Math.imul(p,G)|0))<<13)|0;c=((a=a+Math.imul(p,Q)|0)+(n>>>13)|0)+(_e>>>26)|0,_e&=67108863,i=Math.imul(k,L),n=(n=Math.imul(k,U))+Math.imul(S,L)|0,a=Math.imul(S,U),i=i+Math.imul(b,K)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(w,K)|0,a=a+Math.imul(w,W)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,V)|0)+Math.imul(y,J)|0,a=a+Math.imul(y,V)|0,i=i+Math.imul(f,G)|0,n=(n=n+Math.imul(f,Q)|0)+Math.imul(m,G)|0,a=a+Math.imul(m,Q)|0;var be=(c+(i=i+Math.imul(h,Y)|0)|0)+((8191&(n=(n=n+Math.imul(h,ee)|0)+Math.imul(p,Y)|0))<<13)|0;c=((a=a+Math.imul(p,ee)|0)+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(j,L),n=(n=Math.imul(j,U))+Math.imul(N,L)|0,a=Math.imul(N,U),i=i+Math.imul(k,K)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(S,K)|0,a=a+Math.imul(S,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,V)|0)+Math.imul(w,J)|0,a=a+Math.imul(w,V)|0,i=i+Math.imul(v,G)|0,n=(n=n+Math.imul(v,Q)|0)+Math.imul(y,G)|0,a=a+Math.imul(y,Q)|0,i=i+Math.imul(f,Y)|0,n=(n=n+Math.imul(f,ee)|0)+Math.imul(m,Y)|0,a=a+Math.imul(m,ee)|0;var we=(c+(i=i+Math.imul(h,re)|0)|0)+((8191&(n=(n=n+Math.imul(h,ie)|0)+Math.imul(p,re)|0))<<13)|0;c=((a=a+Math.imul(p,ie)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(I,L),n=(n=Math.imul(I,U))+Math.imul(A,L)|0,a=Math.imul(A,U),i=i+Math.imul(j,K)|0,n=(n=n+Math.imul(j,W)|0)+Math.imul(N,K)|0,a=a+Math.imul(N,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,V)|0)+Math.imul(S,J)|0,a=a+Math.imul(S,V)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,Q)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,Q)|0,i=i+Math.imul(v,Y)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(y,Y)|0,a=a+Math.imul(y,ee)|0,i=i+Math.imul(f,re)|0,n=(n=n+Math.imul(f,ie)|0)+Math.imul(m,re)|0,a=a+Math.imul(m,ie)|0;var Ee=(c+(i=i+Math.imul(h,ae)|0)|0)+((8191&(n=(n=n+Math.imul(h,oe)|0)+Math.imul(p,ae)|0))<<13)|0;c=((a=a+Math.imul(p,oe)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(R,L),n=(n=Math.imul(R,U))+Math.imul(P,L)|0,a=Math.imul(P,U),i=i+Math.imul(I,K)|0,n=(n=n+Math.imul(I,W)|0)+Math.imul(A,K)|0,a=a+Math.imul(A,W)|0,i=i+Math.imul(j,J)|0,n=(n=n+Math.imul(j,V)|0)+Math.imul(N,J)|0,a=a+Math.imul(N,V)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,Q)|0)+Math.imul(S,G)|0,a=a+Math.imul(S,Q)|0,i=i+Math.imul(b,Y)|0,n=(n=n+Math.imul(b,ee)|0)+Math.imul(w,Y)|0,a=a+Math.imul(w,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(y,re)|0,a=a+Math.imul(y,ie)|0,i=i+Math.imul(f,ae)|0,n=(n=n+Math.imul(f,oe)|0)+Math.imul(m,ae)|0,a=a+Math.imul(m,oe)|0;var ke=(c+(i=i+Math.imul(h,ue)|0)|0)+((8191&(n=(n=n+Math.imul(h,ce)|0)+Math.imul(p,ue)|0))<<13)|0;c=((a=a+Math.imul(p,ce)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(B,L),n=(n=Math.imul(B,U))+Math.imul(C,L)|0,a=Math.imul(C,U),i=i+Math.imul(R,K)|0,n=(n=n+Math.imul(R,W)|0)+Math.imul(P,K)|0,a=a+Math.imul(P,W)|0,i=i+Math.imul(I,J)|0,n=(n=n+Math.imul(I,V)|0)+Math.imul(A,J)|0,a=a+Math.imul(A,V)|0,i=i+Math.imul(j,G)|0,n=(n=n+Math.imul(j,Q)|0)+Math.imul(N,G)|0,a=a+Math.imul(N,Q)|0,i=i+Math.imul(k,Y)|0,n=(n=n+Math.imul(k,ee)|0)+Math.imul(S,Y)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(b,re)|0,n=(n=n+Math.imul(b,ie)|0)+Math.imul(w,re)|0,a=a+Math.imul(w,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,oe)|0)+Math.imul(y,ae)|0,a=a+Math.imul(y,oe)|0,i=i+Math.imul(f,ue)|0,n=(n=n+Math.imul(f,ce)|0)+Math.imul(m,ue)|0,a=a+Math.imul(m,ce)|0;var Se=(c+(i=i+Math.imul(h,he)|0)|0)+((8191&(n=(n=n+Math.imul(h,pe)|0)+Math.imul(p,he)|0))<<13)|0;c=((a=a+Math.imul(p,pe)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(F,L),n=(n=Math.imul(F,U))+Math.imul(D,L)|0,a=Math.imul(D,U),i=i+Math.imul(B,K)|0,n=(n=n+Math.imul(B,W)|0)+Math.imul(C,K)|0,a=a+Math.imul(C,W)|0,i=i+Math.imul(R,J)|0,n=(n=n+Math.imul(R,V)|0)+Math.imul(P,J)|0,a=a+Math.imul(P,V)|0,i=i+Math.imul(I,G)|0,n=(n=n+Math.imul(I,Q)|0)+Math.imul(A,G)|0,a=a+Math.imul(A,Q)|0,i=i+Math.imul(j,Y)|0,n=(n=n+Math.imul(j,ee)|0)+Math.imul(N,Y)|0,a=a+Math.imul(N,ee)|0,i=i+Math.imul(k,re)|0,n=(n=n+Math.imul(k,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(b,ae)|0,n=(n=n+Math.imul(b,oe)|0)+Math.imul(w,ae)|0,a=a+Math.imul(w,oe)|0,i=i+Math.imul(v,ue)|0,n=(n=n+Math.imul(v,ce)|0)+Math.imul(y,ue)|0,a=a+Math.imul(y,ce)|0,i=i+Math.imul(f,he)|0,n=(n=n+Math.imul(f,pe)|0)+Math.imul(m,he)|0,a=a+Math.imul(m,pe)|0;var xe=(c+(i=i+Math.imul(h,fe)|0)|0)+((8191&(n=(n=n+Math.imul(h,me)|0)+Math.imul(p,fe)|0))<<13)|0;c=((a=a+Math.imul(p,me)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(F,K),n=(n=Math.imul(F,W))+Math.imul(D,K)|0,a=Math.imul(D,W),i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,V)|0)+Math.imul(C,J)|0,a=a+Math.imul(C,V)|0,i=i+Math.imul(R,G)|0,n=(n=n+Math.imul(R,Q)|0)+Math.imul(P,G)|0,a=a+Math.imul(P,Q)|0,i=i+Math.imul(I,Y)|0,n=(n=n+Math.imul(I,ee)|0)+Math.imul(A,Y)|0,a=a+Math.imul(A,ee)|0,i=i+Math.imul(j,re)|0,n=(n=n+Math.imul(j,ie)|0)+Math.imul(N,re)|0,a=a+Math.imul(N,ie)|0,i=i+Math.imul(k,ae)|0,n=(n=n+Math.imul(k,oe)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,oe)|0,i=i+Math.imul(b,ue)|0,n=(n=n+Math.imul(b,ce)|0)+Math.imul(w,ue)|0,a=a+Math.imul(w,ce)|0,i=i+Math.imul(v,he)|0,n=(n=n+Math.imul(v,pe)|0)+Math.imul(y,he)|0,a=a+Math.imul(y,pe)|0;var je=(c+(i=i+Math.imul(f,fe)|0)|0)+((8191&(n=(n=n+Math.imul(f,me)|0)+Math.imul(m,fe)|0))<<13)|0;c=((a=a+Math.imul(m,me)|0)+(n>>>13)|0)+(je>>>26)|0,je&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,V))+Math.imul(D,J)|0,a=Math.imul(D,V),i=i+Math.imul(B,G)|0,n=(n=n+Math.imul(B,Q)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,Q)|0,i=i+Math.imul(R,Y)|0,n=(n=n+Math.imul(R,ee)|0)+Math.imul(P,Y)|0,a=a+Math.imul(P,ee)|0,i=i+Math.imul(I,re)|0,n=(n=n+Math.imul(I,ie)|0)+Math.imul(A,re)|0,a=a+Math.imul(A,ie)|0,i=i+Math.imul(j,ae)|0,n=(n=n+Math.imul(j,oe)|0)+Math.imul(N,ae)|0,a=a+Math.imul(N,oe)|0,i=i+Math.imul(k,ue)|0,n=(n=n+Math.imul(k,ce)|0)+Math.imul(S,ue)|0,a=a+Math.imul(S,ce)|0,i=i+Math.imul(b,he)|0,n=(n=n+Math.imul(b,pe)|0)+Math.imul(w,he)|0,a=a+Math.imul(w,pe)|0;var Ne=(c+(i=i+Math.imul(v,fe)|0)|0)+((8191&(n=(n=n+Math.imul(v,me)|0)+Math.imul(y,fe)|0))<<13)|0;c=((a=a+Math.imul(y,me)|0)+(n>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,i=Math.imul(F,G),n=(n=Math.imul(F,Q))+Math.imul(D,G)|0,a=Math.imul(D,Q),i=i+Math.imul(B,Y)|0,n=(n=n+Math.imul(B,ee)|0)+Math.imul(C,Y)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(R,re)|0,n=(n=n+Math.imul(R,ie)|0)+Math.imul(P,re)|0,a=a+Math.imul(P,ie)|0,i=i+Math.imul(I,ae)|0,n=(n=n+Math.imul(I,oe)|0)+Math.imul(A,ae)|0,a=a+Math.imul(A,oe)|0,i=i+Math.imul(j,ue)|0,n=(n=n+Math.imul(j,ce)|0)+Math.imul(N,ue)|0,a=a+Math.imul(N,ce)|0,i=i+Math.imul(k,he)|0,n=(n=n+Math.imul(k,pe)|0)+Math.imul(S,he)|0,a=a+Math.imul(S,pe)|0;var Me=(c+(i=i+Math.imul(b,fe)|0)|0)+((8191&(n=(n=n+Math.imul(b,me)|0)+Math.imul(w,fe)|0))<<13)|0;c=((a=a+Math.imul(w,me)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(F,Y),n=(n=Math.imul(F,ee))+Math.imul(D,Y)|0,a=Math.imul(D,ee),i=i+Math.imul(B,re)|0,n=(n=n+Math.imul(B,ie)|0)+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(R,ae)|0,n=(n=n+Math.imul(R,oe)|0)+Math.imul(P,ae)|0,a=a+Math.imul(P,oe)|0,i=i+Math.imul(I,ue)|0,n=(n=n+Math.imul(I,ce)|0)+Math.imul(A,ue)|0,a=a+Math.imul(A,ce)|0,i=i+Math.imul(j,he)|0,n=(n=n+Math.imul(j,pe)|0)+Math.imul(N,he)|0,a=a+Math.imul(N,pe)|0;var Ie=(c+(i=i+Math.imul(k,fe)|0)|0)+((8191&(n=(n=n+Math.imul(k,me)|0)+Math.imul(S,fe)|0))<<13)|0;c=((a=a+Math.imul(S,me)|0)+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(F,re),n=(n=Math.imul(F,ie))+Math.imul(D,re)|0,a=Math.imul(D,ie),i=i+Math.imul(B,ae)|0,n=(n=n+Math.imul(B,oe)|0)+Math.imul(C,ae)|0,a=a+Math.imul(C,oe)|0,i=i+Math.imul(R,ue)|0,n=(n=n+Math.imul(R,ce)|0)+Math.imul(P,ue)|0,a=a+Math.imul(P,ce)|0,i=i+Math.imul(I,he)|0,n=(n=n+Math.imul(I,pe)|0)+Math.imul(A,he)|0,a=a+Math.imul(A,pe)|0;var Ae=(c+(i=i+Math.imul(j,fe)|0)|0)+((8191&(n=(n=n+Math.imul(j,me)|0)+Math.imul(N,fe)|0))<<13)|0;c=((a=a+Math.imul(N,me)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(F,ae),n=(n=Math.imul(F,oe))+Math.imul(D,ae)|0,a=Math.imul(D,oe),i=i+Math.imul(B,ue)|0,n=(n=n+Math.imul(B,ce)|0)+Math.imul(C,ue)|0,a=a+Math.imul(C,ce)|0,i=i+Math.imul(R,he)|0,n=(n=n+Math.imul(R,pe)|0)+Math.imul(P,he)|0,a=a+Math.imul(P,pe)|0;var Te=(c+(i=i+Math.imul(I,fe)|0)|0)+((8191&(n=(n=n+Math.imul(I,me)|0)+Math.imul(A,fe)|0))<<13)|0;c=((a=a+Math.imul(A,me)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(F,ue),n=(n=Math.imul(F,ce))+Math.imul(D,ue)|0,a=Math.imul(D,ce),i=i+Math.imul(B,he)|0,n=(n=n+Math.imul(B,pe)|0)+Math.imul(C,he)|0,a=a+Math.imul(C,pe)|0;var Re=(c+(i=i+Math.imul(R,fe)|0)|0)+((8191&(n=(n=n+Math.imul(R,me)|0)+Math.imul(P,fe)|0))<<13)|0;c=((a=a+Math.imul(P,me)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(F,he),n=(n=Math.imul(F,pe))+Math.imul(D,he)|0,a=Math.imul(D,pe);var Pe=(c+(i=i+Math.imul(B,fe)|0)|0)+((8191&(n=(n=n+Math.imul(B,me)|0)+Math.imul(C,fe)|0))<<13)|0;c=((a=a+Math.imul(C,me)|0)+(n>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var Oe=(c+(i=Math.imul(F,fe))|0)+((8191&(n=(n=Math.imul(F,me))+Math.imul(D,fe)|0))<<13)|0;return c=((a=Math.imul(D,me))+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ve,u[2]=ye,u[3]=_e,u[4]=be,u[5]=we,u[6]=Ee,u[7]=ke,u[8]=Se,u[9]=xe,u[10]=je,u[11]=Ne,u[12]=Me,u[13]=Ie,u[14]=Ae,u[15]=Te,u[16]=Re,u[17]=Pe,u[18]=Oe,0!==c&&(u[19]=c,r.length++),r};function m(e,t,r){return(new g).mulp(e,t,r)}function g(e,t){this.x=e,this.y=t}Math.imul||(f=d),a.prototype.mulTo=function(e,t){var r,i=this.length+e.length;return r=10===this.length&&10===e.length?f(this,e,t):i<63?d(this,e,t):i<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,i=o,o=n}return 0!==i?r.words[a]=i:r.length--,r.strip()}(this,e,t):m(this,e,t),r},g.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},g.prototype.permute=function(e,t,r,i,n,a){for(var o=0;o>>=1)n++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*t;o>=26,t+=n/67108864|0,t+=a>>>26,this.words[r]=67108863&a}return 0!==t&&(this.words[r]=t,this.length++),this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n}return t}(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,o=Math.min((e-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,c=0;c=0&&(0!==l||c>=n);c--){var h=0|this.words[c];this.words[c]=l<<26-a|h>>>a,l=h&s}return u&&0!==l&&(u.words[u.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===s)return this.strip();for(i(-1===s),s=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,o=0|n.words[n.length-1];0!=(r=26-this._countBits(o))&&(n=n.ushln(r),i.iushln(r),o=0|n.words[n.length-1]);var s,u=i.length-n.length;if("mod"!==t){(s=new a(null)).length=u+1,s.words=new Array(s.length);for(var c=0;c=0;h--){var p=67108864*(0|i.words[n.length+h])+(0|i.words[n.length+h-1]);for(p=Math.min(p/o|0,67108863),i._ishlnsubmul(n,p,h);0!==i.negative;)p--,i.negative=0,i._ishlnsubmul(n,1,h),i.isZero()||(i.negative^=1);s&&(s.words[h]=p)}return s&&s.strip(),i.strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(n=s.div.neg()),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:n,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modn(e.words[0]))}:this._wordDiv(e,t);var n,o,s},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modn=function(e){i(e<=67108863);for(var t=(1<<26)%e,r=0,n=this.length-1;n>=0;n--)r=(t*r+(0|this.words[n]))%e;return r},a.prototype.idivn=function(e){i(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*t;this.words[r]=n/e|0,t=n%e}return this.strip()},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new a(1),o=new a(0),s=new a(0),u=new a(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var l=r.clone(),h=t.clone();!t.isZero();){for(var p=0,d=1;0==(t.words[0]&d)&&p<26;++p,d<<=1);if(p>0)for(t.iushrn(p);p-- >0;)(n.isOdd()||o.isOdd())&&(n.iadd(l),o.isub(h)),n.iushrn(1),o.iushrn(1);for(var f=0,m=1;0==(r.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(r.iushrn(f);f-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(l),u.isub(h)),s.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(s),o.isub(u)):(r.isub(t),s.isub(n),u.isub(o))}return{a:s,b:u,gcd:r.iushln(c)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,o=new a(1),s=new a(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,l=1;0==(t.words[0]&l)&&c<26;++c,l<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);for(var h=0,p=1;0==(r.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s)):(r.isub(t),s.isub(o))}return(n=0===t.cmpn(1)?o:s).cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new k(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var v={k256:null,p224:null,p192:null,p25519:null};function y(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function _(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function E(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(e){if("string"==typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function S(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},y.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},y.prototype.split=function(e,t){e.iushrn(this.n,0,t)},y.prototype.imulK=function(e){return e.imul(this.k)},n(_,y),_.prototype.split=function(e,t){for(var r=4194303,i=Math.min(e.length,9),n=0;n>>22,a=o}a>>>=22,e.words[n-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},_.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(v[e])return v[e];var t;if("k256"===e)t=new _;else if("p224"===e)t=new b;else if("p192"===e)t=new w;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new E}return v[e]=t,t},k.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},k.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),o=0;!n.isZero()&&0===n.andln(1);)o++,n.iushrn(1);i(!n.isZero());var s=new a(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new a(2*l*l).toRed(this);0!==this.pow(l,c).cmp(u);)l.redIAdd(u);for(var h=this.pow(l,n),p=this.pow(e,n.addn(1).iushrn(1)),d=this.pow(e,n),f=o;0!==d.cmp(s);){for(var m=d,g=0;0!==m.cmp(s);g++)m=m.redSqr();i(g=0;i--){for(var c=t.words[i],l=u-1;l>=0;l--){var h=c>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==h||0!==o?(o<<=1,o|=h,(4==++s||0===i&&0===l)&&(n=this.mul(n,r[o]),s=0,o=0)):s=0}u=26}return n},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new S(e)},n(S,k),S.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},S.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},S.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},S.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=r.nmd(e),this)},23482:(e,t,r)=>{"use strict";var i=r(35717),n=r(62318),a=r(79785),o=r(89072),s=r(71027);function u(e){s.call(this,"digest"),this._hash=e}i(u,s),u.prototype._update=function(e){this._hash.update(e)},u.prototype._final=function(){return this._hash.digest()},e.exports=function(e){return"md5"===(e=e.toLowerCase())?new n:"rmd160"===e||"ripemd160"===e?new a:new u(o(e))}},78028:(e,t,r)=>{var i=r(62318);e.exports=function(e){return(new i).update(e).digest()}},58355:(e,t,r)=>{"use strict";var i=r(35717),n=r(51031),a=r(71027),o=r(89509).Buffer,s=r(78028),u=r(79785),c=r(89072),l=o.alloc(128);function h(e,t){a.call(this,"digest"),"string"==typeof t&&(t=o.from(t));var r="sha512"===e||"sha384"===e?128:64;this._alg=e,this._key=t,t.length>r?t=("rmd160"===e?new u:c(e)).update(t).digest():t.length{"use strict";var i=r(35717),n=r(89509).Buffer,a=r(71027),o=n.alloc(128),s=64;function u(e,t){a.call(this,"digest"),"string"==typeof t&&(t=n.from(t)),this._alg=e,this._key=t,t.length>s?t=e(t):t.length{"use strict";t.randomBytes=t.rng=t.pseudoRandomBytes=t.prng=r(61798),t.createHash=t.Hash=r(23482),t.createHmac=t.Hmac=r(58355);var i=r(56042),n=Object.keys(i),a=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(n);t.getHashes=function(){return a};var o=r(25632);t.pbkdf2=o.pbkdf2,t.pbkdf2Sync=o.pbkdf2Sync;var s=r(53614);t.Cipher=s.Cipher,t.createCipher=s.createCipher,t.Cipheriv=s.Cipheriv,t.createCipheriv=s.createCipheriv,t.Decipher=s.Decipher,t.createDecipher=s.createDecipher,t.Decipheriv=s.Decipheriv,t.createDecipheriv=s.createDecipheriv,t.getCiphers=s.getCiphers,t.listCiphers=s.listCiphers;var u=r(62607);t.DiffieHellmanGroup=u.DiffieHellmanGroup,t.createDiffieHellmanGroup=u.createDiffieHellmanGroup,t.getDiffieHellman=u.getDiffieHellman,t.createDiffieHellman=u.createDiffieHellman,t.DiffieHellman=u.DiffieHellman;var c=r(64743);t.createSign=c.createSign,t.Sign=c.Sign,t.createVerify=c.createVerify,t.Verify=c.Verify,t.createECDH=r(76393);var l=r(7900);t.publicEncrypt=l.publicEncrypt,t.privateEncrypt=l.privateEncrypt,t.publicDecrypt=l.publicDecrypt,t.privateDecrypt=l.privateDecrypt;var h=r(77963);t.randomFill=h.randomFill,t.randomFillSync=h.randomFillSync,t.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join("\n"))},t.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},40452:function(e,t,r){var i;e.exports=(i=r(78249),r(98269),r(68214),r(90888),r(75109),function(){var e=i,t=e.lib.BlockCipher,r=e.algo,n=[],a=[],o=[],s=[],u=[],c=[],l=[],h=[],p=[],d=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var f=i^i<<1^i<<2^i<<3^i<<4;f=f>>>8^255&f^99,n[r]=f,a[f]=r;var m=e[r],g=e[m],v=e[g],y=257*e[f]^16843008*f;o[r]=y<<24|y>>>8,s[r]=y<<16|y>>>16,u[r]=y<<8|y>>>24,c[r]=y,y=16843009*v^65537*g^257*m^16843008*r,l[f]=y<<24|y>>>8,h[f]=y<<16|y>>>16,p[f]=y<<8|y>>>24,d[f]=y,r?(r=m^e[e[e[v^m]]],i^=e[e[i]]):r=i=1}}();var f=[0,1,2,4,8,16,32,64,128,27,54],m=r.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),a=this._keySchedule=[],o=0;o6&&o%r==4&&(c=n[c>>>24]<<24|n[c>>>16&255]<<16|n[c>>>8&255]<<8|n[255&c]):(c=n[(c=c<<8|c>>>24)>>>24]<<24|n[c>>>16&255]<<16|n[c>>>8&255]<<8|n[255&c],c^=f[o/r|0]<<24),a[o]=a[o-r]^c);for(var s=this._invKeySchedule=[],u=0;u>>24]]^h[n[c>>>16&255]]^p[n[c>>>8&255]]^d[n[255&c]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,s,u,c,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,l,h,p,d,a),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,a,o,s){for(var u=this._nRounds,c=e[t]^r[0],l=e[t+1]^r[1],h=e[t+2]^r[2],p=e[t+3]^r[3],d=4,f=1;f>>24]^n[l>>>16&255]^a[h>>>8&255]^o[255&p]^r[d++],g=i[l>>>24]^n[h>>>16&255]^a[p>>>8&255]^o[255&c]^r[d++],v=i[h>>>24]^n[p>>>16&255]^a[c>>>8&255]^o[255&l]^r[d++],y=i[p>>>24]^n[c>>>16&255]^a[l>>>8&255]^o[255&h]^r[d++];c=m,l=g,h=v,p=y}m=(s[c>>>24]<<24|s[l>>>16&255]<<16|s[h>>>8&255]<<8|s[255&p])^r[d++],g=(s[l>>>24]<<24|s[h>>>16&255]<<16|s[p>>>8&255]<<8|s[255&c])^r[d++],v=(s[h>>>24]<<24|s[p>>>16&255]<<16|s[c>>>8&255]<<8|s[255&l])^r[d++],y=(s[p>>>24]<<24|s[c>>>16&255]<<16|s[l>>>8&255]<<8|s[255&h])^r[d++],e[t]=m,e[t+1]=g,e[t+2]=v,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),i.AES)},75109:function(e,t,r){var i,n,a,o,s,u,c,l,h,p,d,f,m,g,v,y,_,b,w;e.exports=(i=r(78249),r(90888),void(i.lib.Cipher||(n=i,a=n.lib,o=a.Base,s=a.WordArray,u=a.BufferedBlockAlgorithm,c=n.enc,c.Utf8,l=c.Base64,h=n.algo.EvpKDF,p=a.Cipher=u.extend({cfg:o.extend(),createEncryptor:function(e,t){return this.create(this._ENC_XFORM_MODE,e,t)},createDecryptor:function(e,t){return this.create(this._DEC_XFORM_MODE,e,t)},init:function(e,t,r){this.cfg=this.cfg.extend(r),this._xformMode=e,this._key=t,this.reset()},reset:function(){u.reset.call(this),this._doReset()},process:function(e){return this._append(e),this._process()},finalize:function(e){return e&&this._append(e),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function e(e){return"string"==typeof e?w:_}return function(t){return{encrypt:function(r,i,n){return e(i).encrypt(t,r,i,n)},decrypt:function(r,i,n){return e(i).decrypt(t,r,i,n)}}}}()}),a.StreamCipher=p.extend({_doFinalize:function(){return this._process(!0)},blockSize:1}),d=n.mode={},f=a.BlockCipherMode=o.extend({createEncryptor:function(e,t){return this.Encryptor.create(e,t)},createDecryptor:function(e,t){return this.Decryptor.create(e,t)},init:function(e,t){this._cipher=e,this._iv=t}}),m=d.CBC=function(){var e=f.extend();function t(e,t,r){var i,n=this._iv;n?(i=n,this._iv=void 0):i=this._prevBlock;for(var a=0;a>>2];e.sigBytes-=t}},a.BlockCipher=p.extend({cfg:p.cfg.extend({mode:m,padding:g}),reset:function(){var e;p.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4}),v=a.CipherParams=o.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),y=(n.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(l)},parse:function(e){var t,r=l.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),v.create({ciphertext:r,salt:t})}},_=a.SerializableCipher=o.extend({cfg:o.extend({format:y}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),a=n.finalize(t),o=n.cfg;return v.create({ciphertext:a,key:r,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),b=(n.kdf={}).OpenSSL={execute:function(e,t,r,i){i||(i=s.random(8));var n=h.create({keySize:t+r}).compute(e,i),a=s.create(n.words.slice(t),4*r);return n.sigBytes=4*t,v.create({key:n,iv:a,salt:i})}},w=a.PasswordBasedCipher=_.extend({cfg:_.cfg.extend({kdf:b}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize);i.iv=n.iv;var a=_.encrypt.call(this,e,t,n.key,i);return a.mixIn(n),a},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt);return i.iv=n.iv,_.decrypt.call(this,e,t,n.key,i)}}))))},78249:function(e,t,r){var i;e.exports=(i=i||function(e,t){var i;if("undefined"!=typeof window&&window.crypto&&(i=window.crypto),"undefined"!=typeof self&&self.crypto&&(i=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(i=globalThis.crypto),!i&&"undefined"!=typeof window&&window.msCrypto&&(i=window.msCrypto),!i&&void 0!==r.g&&r.g.crypto&&(i=r.g.crypto),!i)try{i=r(42480)}catch(e){}var n=function(){if(i){if("function"==typeof i.getRandomValues)try{return i.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof i.randomBytes)try{return i.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")},a=Object.create||function(){function e(){}return function(t){var r;return e.prototype=t,r=new e,e.prototype=null,r}}(),o={},s=o.lib={},u=s.Base={extend:function(e){var t=a(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},c=s.WordArray=u.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:4*e.length},toString:function(e){return(e||h).stringify(this)},concat:function(e){var t=this.words,r=e.words,i=this.sigBytes,n=e.sigBytes;if(this.clamp(),i%4)for(var a=0;a>>2]>>>24-a%4*8&255;t[i+a>>>2]|=o<<24-(i+a)%4*8}else for(var s=0;s>>2]=r[s>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=u.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((a>>>4).toString(16)),i.push((15&a).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new c.init(r,t/2)}},p=l.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new c.init(r,t)}},d=l.Utf8={stringify:function(e){try{return decodeURIComponent(escape(p.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return p.parse(unescape(encodeURIComponent(e)))}},f=s.BufferedBlockAlgorithm=u.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=d.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,a=i.sigBytes,o=this.blockSize,s=a/(4*o),u=(s=t?e.ceil(s):e.max((0|s)-this._minBufferSize,0))*o,l=e.min(4*u,a);if(u){for(var h=0;h>>2]>>>24-a%4*8&255)<<16|(t[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|t[a+2>>>2]>>>24-(a+2)%4*8&255,s=0;s<4&&a+.75*s>>6*(3-s)&63));var u=i.charAt(64);if(u)for(;n.length%4;)n.push(u);return n.join("")},parse:function(e){var t=e.length,r=this._map,i=this._reverseMap;if(!i){i=this._reverseMap=[];for(var n=0;n>>6-o%4*2;i[n>>>2]|=s<<24-n%4*8,n++}return a.create(i,n)}(e,t,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},i.enc.Base64)},43786:function(e,t,r){var i,n,a;e.exports=(i=r(78249),a=(n=i).lib.WordArray,n.enc.Base64url={stringify:function(e,t=!0){var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var a=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(r[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|r[o+2>>>2]>>>24-(o+2)%4*8&255,u=0;u<4&&o+.75*u>>6*(3-u)&63));var c=n.charAt(64);if(c)for(;a.length%4;)a.push(c);return a.join("")},parse:function(e,t=!0){var r=e.length,i=t?this._safe_map:this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-o%4*2;i[n>>>2]|=s<<24-n%4*8,n++}return a.create(i,n)}(e,r,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_safe_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"},i.enc.Base64url)},50298:function(e,t,r){var i;e.exports=(i=r(78249),function(){var e=i,t=e.lib.WordArray,r=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}r.Utf16=r.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},r.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],a=0;a>>2]>>>16-a%4*8&65535);i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var r=e.length,i=[],a=0;a>>1]|=n(e.charCodeAt(a)<<16-a%2*16);return t.create(i,2*r)}}}(),i.enc.Utf16)},90888:function(e,t,r){var i,n,a,o,s,u,c,l;e.exports=(l=r(78249),r(62783),r(89824),a=(n=(i=l).lib).Base,o=n.WordArray,u=(s=i.algo).MD5,c=s.EvpKDF=a.extend({cfg:a.extend({keySize:4,hasher:u,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var r,i=this.cfg,n=i.hasher.create(),a=o.create(),s=a.words,u=i.keySize,c=i.iterations;s.lengthi&&(t=e.finalize(t)),t.clamp();for(var n=this._oKey=t.clone(),o=this._iKey=t.clone(),s=n.words,u=o.words,c=0;c>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};r.prototype=e}}(),i.lib.WordArray)},68214:function(e,t,r){var i;e.exports=(i=r(78249),function(e){var t=i,r=t.lib,n=r.WordArray,a=r.Hasher,o=t.algo,s=[];!function(){for(var t=0;t<64;t++)s[t]=4294967296*e.abs(e.sin(t+1))|0}();var u=o.MD5=a.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var a=this._hash.words,o=e[t+0],u=e[t+1],d=e[t+2],f=e[t+3],m=e[t+4],g=e[t+5],v=e[t+6],y=e[t+7],_=e[t+8],b=e[t+9],w=e[t+10],E=e[t+11],k=e[t+12],S=e[t+13],x=e[t+14],j=e[t+15],N=a[0],M=a[1],I=a[2],A=a[3];N=c(N,M,I,A,o,7,s[0]),A=c(A,N,M,I,u,12,s[1]),I=c(I,A,N,M,d,17,s[2]),M=c(M,I,A,N,f,22,s[3]),N=c(N,M,I,A,m,7,s[4]),A=c(A,N,M,I,g,12,s[5]),I=c(I,A,N,M,v,17,s[6]),M=c(M,I,A,N,y,22,s[7]),N=c(N,M,I,A,_,7,s[8]),A=c(A,N,M,I,b,12,s[9]),I=c(I,A,N,M,w,17,s[10]),M=c(M,I,A,N,E,22,s[11]),N=c(N,M,I,A,k,7,s[12]),A=c(A,N,M,I,S,12,s[13]),I=c(I,A,N,M,x,17,s[14]),N=l(N,M=c(M,I,A,N,j,22,s[15]),I,A,u,5,s[16]),A=l(A,N,M,I,v,9,s[17]),I=l(I,A,N,M,E,14,s[18]),M=l(M,I,A,N,o,20,s[19]),N=l(N,M,I,A,g,5,s[20]),A=l(A,N,M,I,w,9,s[21]),I=l(I,A,N,M,j,14,s[22]),M=l(M,I,A,N,m,20,s[23]),N=l(N,M,I,A,b,5,s[24]),A=l(A,N,M,I,x,9,s[25]),I=l(I,A,N,M,f,14,s[26]),M=l(M,I,A,N,_,20,s[27]),N=l(N,M,I,A,S,5,s[28]),A=l(A,N,M,I,d,9,s[29]),I=l(I,A,N,M,y,14,s[30]),N=h(N,M=l(M,I,A,N,k,20,s[31]),I,A,g,4,s[32]),A=h(A,N,M,I,_,11,s[33]),I=h(I,A,N,M,E,16,s[34]),M=h(M,I,A,N,x,23,s[35]),N=h(N,M,I,A,u,4,s[36]),A=h(A,N,M,I,m,11,s[37]),I=h(I,A,N,M,y,16,s[38]),M=h(M,I,A,N,w,23,s[39]),N=h(N,M,I,A,S,4,s[40]),A=h(A,N,M,I,o,11,s[41]),I=h(I,A,N,M,f,16,s[42]),M=h(M,I,A,N,v,23,s[43]),N=h(N,M,I,A,b,4,s[44]),A=h(A,N,M,I,k,11,s[45]),I=h(I,A,N,M,j,16,s[46]),N=p(N,M=h(M,I,A,N,d,23,s[47]),I,A,o,6,s[48]),A=p(A,N,M,I,y,10,s[49]),I=p(I,A,N,M,x,15,s[50]),M=p(M,I,A,N,g,21,s[51]),N=p(N,M,I,A,k,6,s[52]),A=p(A,N,M,I,f,10,s[53]),I=p(I,A,N,M,w,15,s[54]),M=p(M,I,A,N,u,21,s[55]),N=p(N,M,I,A,_,6,s[56]),A=p(A,N,M,I,j,10,s[57]),I=p(I,A,N,M,v,15,s[58]),M=p(M,I,A,N,S,21,s[59]),N=p(N,M,I,A,m,6,s[60]),A=p(A,N,M,I,E,10,s[61]),I=p(I,A,N,M,d,15,s[62]),M=p(M,I,A,N,b,21,s[63]),a[0]=a[0]+N|0,a[1]=a[1]+M|0,a[2]=a[2]+I|0,a[3]=a[3]+A|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var a=e.floor(i/4294967296),o=i;r[15+(n+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),r[14+(n+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(r.length+1),this._process();for(var s=this._hash,u=s.words,c=0;c<4;c++){var l=u[c];u[c]=16711935&(l<<8|l>>>24)|4278255360&(l<<24|l>>>8)}return s},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function c(e,t,r,i,n,a,o){var s=e+(t&r|~t&i)+n+o;return(s<>>32-a)+t}function l(e,t,r,i,n,a,o){var s=e+(t&i|r&~i)+n+o;return(s<>>32-a)+t}function h(e,t,r,i,n,a,o){var s=e+(t^r^i)+n+o;return(s<>>32-a)+t}function p(e,t,r,i,n,a,o){var s=e+(r^(t|~i))+n+o;return(s<>>32-a)+t}t.MD5=a._createHelper(u),t.HmacMD5=a._createHmacHelper(u)}(Math),i.MD5)},8568:function(e,t,r){var i;e.exports=(i=r(78249),r(75109),i.mode.CFB=function(){var e=i.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,a=this._iv;a?(n=a.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var o=0;o>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}var r=e.Encryptor=e.extend({processBlock:function(e,r){var i=this._cipher,n=i.blockSize,a=this._iv,o=this._counter;a&&(o=this._counter=a.slice(0),this._iv=void 0),function(e){0===(e[0]=t(e[0]))&&(e[1]=t(e[1]))}(o);var s=o.slice(0);i.encryptBlock(s,0);for(var u=0;u>>2]|=n<<24-a%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Ansix923)},92807:function(e,t,r){var i;e.exports=(i=r(78249),r(75109),i.pad.Iso10126={pad:function(e,t){var r=4*t,n=r-e.sigBytes%r;e.concat(i.lib.WordArray.random(n-1)).concat(i.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Iso10126)},71077:function(e,t,r){var i;e.exports=(i=r(78249),r(75109),i.pad.Iso97971={pad:function(e,t){e.concat(i.lib.WordArray.create([2147483648],1)),i.pad.ZeroPadding.pad(e,t)},unpad:function(e){i.pad.ZeroPadding.unpad(e),e.sigBytes--}},i.pad.Iso97971)},16991:function(e,t,r){var i;e.exports=(i=r(78249),r(75109),i.pad.NoPadding={pad:function(){},unpad:function(){}},i.pad.NoPadding)},56475:function(e,t,r){var i;e.exports=(i=r(78249),r(75109),i.pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},i.pad.ZeroPadding)},2112:function(e,t,r){var i,n,a,o,s,u,c,l,h;e.exports=(h=r(78249),r(62783),r(89824),a=(n=(i=h).lib).Base,o=n.WordArray,u=(s=i.algo).SHA1,c=s.HMAC,l=s.PBKDF2=a.extend({cfg:a.extend({keySize:4,hasher:u,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var r=this.cfg,i=c.create(r.hasher,e),n=o.create(),a=o.create([1]),s=n.words,u=a.words,l=r.keySize,h=r.iterations;s.length>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)u.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var a=t.words,o=a[0],s=a[1],c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),l=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),h=c>>>16|4294901760&l,p=l<<16|65535&c;for(i[0]^=c,i[1]^=h,i[2]^=l,i[3]^=p,i[4]^=c,i[5]^=h,i[6]^=l,i[7]^=p,n=0;n<4;n++)u.call(this)}},_doProcessBlock:function(e,t){var r=this._X;u.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function u(){for(var e=this._X,t=this._C,r=0;r<8;r++)a[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,s=i>>>16,u=((n*n>>>17)+n*s>>>15)+s*s,c=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=u^c}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.RabbitLegacy=t._createHelper(s)}(),i.RabbitLegacy)},84454:function(e,t,r){var i;e.exports=(i=r(78249),r(98269),r(68214),r(90888),r(75109),function(){var e=i,t=e.lib.StreamCipher,r=e.algo,n=[],a=[],o=[],s=r.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)u.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var a=t.words,o=a[0],s=a[1],c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),l=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),h=c>>>16|4294901760&l,p=l<<16|65535&c;for(n[0]^=c,n[1]^=h,n[2]^=l,n[3]^=p,n[4]^=c,n[5]^=h,n[6]^=l,n[7]^=p,r=0;r<4;r++)u.call(this)}},_doProcessBlock:function(e,t){var r=this._X;u.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function u(){for(var e=this._X,t=this._C,r=0;r<8;r++)a[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,s=i>>>16,u=((n*n>>>17)+n*s>>>15)+s*s,c=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=u^c}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.Rabbit=t._createHelper(s)}(),i.Rabbit)},51857:function(e,t,r){var i;e.exports=(i=r(78249),r(98269),r(68214),r(90888),r(75109),function(){var e=i,t=e.lib.StreamCipher,r=e.algo,n=r.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var a=0;n<256;n++){var o=n%r,s=t[o>>>2]>>>24-o%4*8&255;a=(a+i[n]+s)%256;var u=i[n];i[n]=i[a],i[a]=u}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=a.call(this)},keySize:8,ivSize:0});function a(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var a=e[t];e[t]=e[r],e[r]=a,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var o=r.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)a.call(this)}});e.RC4Drop=t._createHelper(o)}(),i.RC4)},30706:function(e,t,r){var i;e.exports=(i=r(78249),function(e){var t=i,r=t.lib,n=r.WordArray,a=r.Hasher,o=t.algo,s=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),u=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),c=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),l=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),h=n.create([0,1518500249,1859775393,2400959708,2840853838]),p=n.create([1352829926,1548603684,1836072691,2053994217,0]),d=o.RIPEMD160=a.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var a,o,d,b,w,E,k,S,x,j,N,M=this._hash.words,I=h.words,A=p.words,T=s.words,R=u.words,P=c.words,O=l.words;for(E=a=M[0],k=o=M[1],S=d=M[2],x=b=M[3],j=w=M[4],r=0;r<80;r+=1)N=a+e[t+T[r]]|0,N+=r<16?f(o,d,b)+I[0]:r<32?m(o,d,b)+I[1]:r<48?g(o,d,b)+I[2]:r<64?v(o,d,b)+I[3]:y(o,d,b)+I[4],N=(N=_(N|=0,P[r]))+w|0,a=w,w=b,b=_(d,10),d=o,o=N,N=E+e[t+R[r]]|0,N+=r<16?y(k,S,x)+A[0]:r<32?v(k,S,x)+A[1]:r<48?g(k,S,x)+A[2]:r<64?m(k,S,x)+A[3]:f(k,S,x)+A[4],N=(N=_(N|=0,O[r]))+j|0,E=j,j=x,x=_(S,10),S=k,k=N;N=M[1]+d+x|0,M[1]=M[2]+b+j|0,M[2]=M[3]+w+E|0,M[3]=M[4]+a+k|0,M[4]=M[0]+o+S|0,M[0]=N},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,a=n.words,o=0;o<5;o++){var s=a[o];a[o]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}return n},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function f(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function g(e,t,r){return(e|~t)^r}function v(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function _(e,t){return e<>>32-t}t.RIPEMD160=a._createHelper(d),t.HmacRIPEMD160=a._createHmacHelper(d)}(Math),i.RIPEMD160)},62783:function(e,t,r){var i,n,a,o,s,u,c,l;e.exports=(n=(i=l=r(78249)).lib,a=n.WordArray,o=n.Hasher,s=i.algo,u=[],c=s.SHA1=o.extend({_doReset:function(){this._hash=new a.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],a=r[2],o=r[3],s=r[4],c=0;c<80;c++){if(c<16)u[c]=0|e[t+c];else{var l=u[c-3]^u[c-8]^u[c-14]^u[c-16];u[c]=l<<1|l>>>31}var h=(i<<5|i>>>27)+s+u[c];h+=c<20?1518500249+(n&a|~n&o):c<40?1859775393+(n^a^o):c<60?(n&a|n&o|a&o)-1894007588:(n^a^o)-899497514,s=o,o=a,a=n<<30|n>>>2,n=i,i=h}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+a|0,r[3]=r[3]+o|0,r[4]=r[4]+s|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}}),i.SHA1=o._createHelper(c),i.HmacSHA1=o._createHmacHelper(c),l.SHA1)},87792:function(e,t,r){var i,n,a,o,s,u;e.exports=(u=r(78249),r(52153),n=(i=u).lib.WordArray,a=i.algo,o=a.SHA256,s=a.SHA224=o.extend({_doReset:function(){this._hash=new n.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=4,e}}),i.SHA224=o._createHelper(s),i.HmacSHA224=o._createHmacHelper(s),u.SHA224)},52153:function(e,t,r){var i;e.exports=(i=r(78249),function(e){var t=i,r=t.lib,n=r.WordArray,a=r.Hasher,o=t.algo,s=[],u=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(s[n]=r(e.pow(i,.5))),u[n]=r(e.pow(i,1/3)),n++),i++}();var c=[],l=o.SHA256=a.extend({_doReset:function(){this._hash=new n.init(s.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],a=r[2],o=r[3],s=r[4],l=r[5],h=r[6],p=r[7],d=0;d<64;d++){if(d<16)c[d]=0|e[t+d];else{var f=c[d-15],m=(f<<25|f>>>7)^(f<<14|f>>>18)^f>>>3,g=c[d-2],v=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;c[d]=m+c[d-7]+v+c[d-16]}var y=i&n^i&a^n&a,_=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=p+((s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25))+(s&l^~s&h)+u[d]+c[d];p=h,h=l,l=s,s=o+b|0,o=a,a=n,n=i,i=b+(_+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+a|0,r[3]=r[3]+o|0,r[4]=r[4]+s|0,r[5]=r[5]+l|0,r[6]=r[6]+h|0,r[7]=r[7]+p|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=a._createHelper(l),t.HmacSHA256=a._createHmacHelper(l)}(Math),i.SHA256)},13327:function(e,t,r){var i;e.exports=(i=r(78249),r(64938),function(e){var t=i,r=t.lib,n=r.WordArray,a=r.Hasher,o=t.x64.Word,s=t.algo,u=[],c=[],l=[];!function(){for(var e=1,t=0,r=0;r<24;r++){u[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)c[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,a=0;a<24;a++){for(var s=0,h=0,p=0;p<7;p++){if(1&n){var d=(1<>>24)|4278255360&(a<<24|a>>>8),o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),(M=r[n]).high^=o,M.low^=a}for(var s=0;s<24;s++){for(var p=0;p<5;p++){for(var d=0,f=0,m=0;m<5;m++)d^=(M=r[p+5*m]).high,f^=M.low;var g=h[p];g.high=d,g.low=f}for(p=0;p<5;p++){var v=h[(p+4)%5],y=h[(p+1)%5],_=y.high,b=y.low;for(d=v.high^(_<<1|b>>>31),f=v.low^(b<<1|_>>>31),m=0;m<5;m++)(M=r[p+5*m]).high^=d,M.low^=f}for(var w=1;w<25;w++){var E=(M=r[w]).high,k=M.low,S=u[w];S<32?(d=E<>>32-S,f=k<>>32-S):(d=k<>>64-S,f=E<>>64-S);var x=h[c[w]];x.high=d,x.low=f}var j=h[0],N=r[0];for(j.high=N.high,j.low=N.low,p=0;p<5;p++)for(m=0;m<5;m++){var M=r[w=p+5*m],I=h[w],A=h[(p+1)%5+5*m],T=h[(p+2)%5+5*m];M.high=I.high^~A.high&T.high,M.low=I.low^~A.low&T.low}M=r[0];var R=l[s];M.high^=R.high,M.low^=R.low}},_doFinalize:function(){var t=this._data,r=t.words,i=(this._nDataBytes,8*t.sigBytes),a=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/a)*a>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var o=this._state,s=this.cfg.outputLength/8,u=s/8,c=[],l=0;l>>24)|4278255360&(p<<24|p>>>8),d=16711935&(d<<8|d>>>24)|4278255360&(d<<24|d>>>8),c.push(d),c.push(p)}return new n.init(c,s)},clone:function(){for(var e=a.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=a._createHelper(p),t.HmacSHA3=a._createHmacHelper(p)}(Math),i.SHA3)},17460:function(e,t,r){var i,n,a,o,s,u,c,l;e.exports=(l=r(78249),r(64938),r(70034),n=(i=l).x64,a=n.Word,o=n.WordArray,s=i.algo,u=s.SHA512,c=s.SHA384=u.extend({_doReset:function(){this._hash=new o.init([new a.init(3418070365,3238371032),new a.init(1654270250,914150663),new a.init(2438529370,812702999),new a.init(355462360,4144912697),new a.init(1731405415,4290775857),new a.init(2394180231,1750603025),new a.init(3675008525,1694076839),new a.init(1203062813,3204075428)])},_doFinalize:function(){var e=u._doFinalize.call(this);return e.sigBytes-=16,e}}),i.SHA384=u._createHelper(c),i.HmacSHA384=u._createHmacHelper(c),l.SHA384)},70034:function(e,t,r){var i;e.exports=(i=r(78249),r(64938),function(){var e=i,t=e.lib.Hasher,r=e.x64,n=r.Word,a=r.WordArray,o=e.algo;function s(){return n.create.apply(n,arguments)}var u=[s(1116352408,3609767458),s(1899447441,602891725),s(3049323471,3964484399),s(3921009573,2173295548),s(961987163,4081628472),s(1508970993,3053834265),s(2453635748,2937671579),s(2870763221,3664609560),s(3624381080,2734883394),s(310598401,1164996542),s(607225278,1323610764),s(1426881987,3590304994),s(1925078388,4068182383),s(2162078206,991336113),s(2614888103,633803317),s(3248222580,3479774868),s(3835390401,2666613458),s(4022224774,944711139),s(264347078,2341262773),s(604807628,2007800933),s(770255983,1495990901),s(1249150122,1856431235),s(1555081692,3175218132),s(1996064986,2198950837),s(2554220882,3999719339),s(2821834349,766784016),s(2952996808,2566594879),s(3210313671,3203337956),s(3336571891,1034457026),s(3584528711,2466948901),s(113926993,3758326383),s(338241895,168717936),s(666307205,1188179964),s(773529912,1546045734),s(1294757372,1522805485),s(1396182291,2643833823),s(1695183700,2343527390),s(1986661051,1014477480),s(2177026350,1206759142),s(2456956037,344077627),s(2730485921,1290863460),s(2820302411,3158454273),s(3259730800,3505952657),s(3345764771,106217008),s(3516065817,3606008344),s(3600352804,1432725776),s(4094571909,1467031594),s(275423344,851169720),s(430227734,3100823752),s(506948616,1363258195),s(659060556,3750685593),s(883997877,3785050280),s(958139571,3318307427),s(1322822218,3812723403),s(1537002063,2003034995),s(1747873779,3602036899),s(1955562222,1575990012),s(2024104815,1125592928),s(2227730452,2716904306),s(2361852424,442776044),s(2428436474,593698344),s(2756734187,3733110249),s(3204031479,2999351573),s(3329325298,3815920427),s(3391569614,3928383900),s(3515267271,566280711),s(3940187606,3454069534),s(4118630271,4000239992),s(116418474,1914138554),s(174292421,2731055270),s(289380356,3203993006),s(460393269,320620315),s(685471733,587496836),s(852142971,1086792851),s(1017036298,365543100),s(1126000580,2618297676),s(1288033470,3409855158),s(1501505948,4234509866),s(1607167915,987167468),s(1816402316,1246189591)],c=[];!function(){for(var e=0;e<80;e++)c[e]=s()}();var l=o.SHA512=t.extend({_doReset:function(){this._hash=new a.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],a=r[2],o=r[3],s=r[4],l=r[5],h=r[6],p=r[7],d=i.high,f=i.low,m=n.high,g=n.low,v=a.high,y=a.low,_=o.high,b=o.low,w=s.high,E=s.low,k=l.high,S=l.low,x=h.high,j=h.low,N=p.high,M=p.low,I=d,A=f,T=m,R=g,P=v,O=y,B=_,C=b,z=w,F=E,D=k,q=S,L=x,U=j,H=N,K=M,W=0;W<80;W++){var Z,J,V=c[W];if(W<16)J=V.high=0|e[t+2*W],Z=V.low=0|e[t+2*W+1];else{var $=c[W-15],G=$.high,Q=$.low,X=(G>>>1|Q<<31)^(G>>>8|Q<<24)^G>>>7,Y=(Q>>>1|G<<31)^(Q>>>8|G<<24)^(Q>>>7|G<<25),ee=c[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),ae=c[W-7],oe=ae.high,se=ae.low,ue=c[W-16],ce=ue.high,le=ue.low;J=(J=(J=X+oe+((Z=Y+se)>>>0>>0?1:0))+ie+((Z+=ne)>>>0>>0?1:0))+ce+((Z+=le)>>>0>>0?1:0),V.high=J,V.low=Z}var he,pe=z&D^~z&L,de=F&q^~F&U,fe=I&T^I&P^T&P,me=A&R^A&O^R&O,ge=(I>>>28|A<<4)^(I<<30|A>>>2)^(I<<25|A>>>7),ve=(A>>>28|I<<4)^(A<<30|I>>>2)^(A<<25|I>>>7),ye=(z>>>14|F<<18)^(z>>>18|F<<14)^(z<<23|F>>>9),_e=(F>>>14|z<<18)^(F>>>18|z<<14)^(F<<23|z>>>9),be=u[W],we=be.high,Ee=be.low,ke=H+ye+((he=K+_e)>>>0>>0?1:0),Se=ve+me;H=L,K=U,L=D,U=q,D=z,q=F,z=B+(ke=(ke=(ke=ke+pe+((he+=de)>>>0>>0?1:0))+we+((he+=Ee)>>>0>>0?1:0))+J+((he+=Z)>>>0>>0?1:0))+((F=C+he|0)>>>0>>0?1:0)|0,B=P,C=O,P=T,O=R,T=I,R=A,I=ke+(ge+fe+(Se>>>0>>0?1:0))+((A=he+Se|0)>>>0>>0?1:0)|0}f=i.low=f+A,i.high=d+I+(f>>>0>>0?1:0),g=n.low=g+R,n.high=m+T+(g>>>0>>0?1:0),y=a.low=y+O,a.high=v+P+(y>>>0>>0?1:0),b=o.low=b+C,o.high=_+B+(b>>>0>>0?1:0),E=s.low=E+F,s.high=w+z+(E>>>0>>0?1:0),S=l.low=S+q,l.high=k+D+(S>>>0>>0?1:0),j=h.low=j+U,h.high=x+L+(j>>>0>>0?1:0),M=p.low=M+K,p.high=N+H+(M>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(l),e.HmacSHA512=t._createHmacHelper(l)}(),i.SHA512)},94253:function(e,t,r){var i;e.exports=(i=r(78249),r(98269),r(68214),r(90888),r(75109),function(){var e=i,t=e.lib,r=t.WordArray,n=t.BlockCipher,a=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],s=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],u=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],c=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],l=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],h=a.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=o[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],a=0;a<16;a++){var c=n[a]=[],l=u[a];for(r=0;r<24;r++)c[r/6|0]|=t[(s[r]-1+l)%28]<<31-r%6,c[4+(r/6|0)]|=t[28+(s[r+24]-1+l)%28]<<31-r%6;for(c[0]=c[0]<<1|c[0]>>>31,r=1;r<7;r++)c[r]=c[r]>>>4*(r-1)+3;c[7]=c[7]<<5|c[7]>>>27}var h=this._invSubKeys=[];for(r=0;r<16;r++)h[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],p.call(this,4,252645135),p.call(this,16,65535),d.call(this,2,858993459),d.call(this,8,16711935),p.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],a=this._lBlock,o=this._rBlock,s=0,u=0;u<8;u++)s|=c[u][((o^n[u])&l[u])>>>0];this._lBlock=o,this._rBlock=a^s}var h=this._lBlock;this._lBlock=this._rBlock,this._rBlock=h,p.call(this,1,1431655765),d.call(this,8,16711935),d.call(this,2,858993459),p.call(this,16,65535),p.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function p(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),i=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=h.createEncryptor(r.create(t)),this._des2=h.createEncryptor(r.create(i)),this._des3=h.createEncryptor(r.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(f)}(),i.TripleDES)},64938:function(e,t,r){var i,n,a,o,s,u;e.exports=(i=r(78249),a=(n=i).lib,o=a.Base,s=a.WordArray,(u=n.x64={}).Word=o.extend({init:function(e,t){this.high=e,this.low=t}}),u.WordArray=o.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:8*e.length},toX32:function(){for(var e=this.words,t=e.length,r=[],i=0;i{"use strict";var i=r(82215),n="function"==typeof Symbol&&"symbol"==typeof Symbol("foo"),a=Object.prototype.toString,o=Array.prototype.concat,s=Object.defineProperty,u=r(31044)(),c=s&&u,l=function(e,t,r,i){var n;(!(t in e)||"function"==typeof(n=i)&&"[object Function]"===a.call(n)&&i())&&(c?s(e,t,{configurable:!0,enumerable:!1,value:r,writable:!0}):e[t]=r)},h=function(e,t){var r=arguments.length>2?arguments[2]:{},a=i(t);n&&(a=o.call(a,Object.getOwnPropertySymbols(t)));for(var s=0;s{var i=r(42830).Stream,n=r(89539);function a(){this.source=null,this.dataSize=0,this.maxDataSize=1048576,this.pauseStream=!0,this._maxDataSizeExceeded=!1,this._released=!1,this._bufferedEvents=[]}e.exports=a,n.inherits(a,i),a.create=function(e,t){var r=new this;for(var i in t=t||{})r[i]=t[i];r.source=e;var n=e.emit;return e.emit=function(){return r._handleEmit(arguments),n.apply(e,arguments)},e.on("error",(function(){})),r.pauseStream&&e.pause(),r},Object.defineProperty(a.prototype,"readable",{configurable:!0,enumerable:!0,get:function(){return this.source.readable}}),a.prototype.setEncoding=function(){return this.source.setEncoding.apply(this.source,arguments)},a.prototype.resume=function(){this._released||this.release(),this.source.resume()},a.prototype.pause=function(){this.source.pause()},a.prototype.release=function(){this._released=!0,this._bufferedEvents.forEach(function(e){this.emit.apply(this,e)}.bind(this)),this._bufferedEvents=[]},a.prototype.pipe=function(){var e=i.prototype.pipe.apply(this,arguments);return this.resume(),e},a.prototype._handleEmit=function(e){this._released?this.emit.apply(this,e):("data"===e[0]&&(this.dataSize+=e[1].length,this._checkIfMaxDataSizeExceeded()),this._bufferedEvents.push(e))},a.prototype._checkIfMaxDataSizeExceeded=function(){if(!(this._maxDataSizeExceeded||this.dataSize<=this.maxDataSize)){this._maxDataSizeExceeded=!0;var e="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this.emit("error",new Error(e))}}},15251:(e,t,r)=>{"use strict";t.utils=r(11278),t.Cipher=r(55756),t.DES=r(70778),t.CBC=r(39051),t.EDE=r(50651)},39051:(e,t,r)=>{"use strict";var i=r(79746),n=r(35717),a={};function o(e){i.equal(e.length,8,"Invalid IV length"),this.iv=new Array(8);for(var t=0;t{"use strict";var i=r(79746);function n(e){this.options=e,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}e.exports=n,n.prototype._init=function(){},n.prototype.update=function(e){return 0===e.length?[]:"decrypt"===this.type?this._updateDecrypt(e):this._updateEncrypt(e)},n.prototype._buffer=function(e,t){for(var r=Math.min(this.buffer.length-this.bufferOff,e.length-t),i=0;i0;i--)t+=this._buffer(e,t),r+=this._flushBuffer(n,r);return t+=this._buffer(e,t),n},n.prototype.final=function(e){var t,r;return e&&(t=this.update(e)),r="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),t?t.concat(r):r},n.prototype._pad=function(e,t){if(0===t)return!1;for(;t{"use strict";var i=r(79746),n=r(35717),a=r(11278),o=r(55756);function s(){this.tmp=new Array(2),this.keys=null}function u(e){o.call(this,e);var t=new s;this._desState=t,this.deriveKeys(t,e.key)}n(u,o),e.exports=u,u.create=function(e){return new u(e)};var c=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];u.prototype.deriveKeys=function(e,t){e.keys=new Array(32),i.equal(t.length,this.blockSize,"Invalid key length");var r=a.readUInt32BE(t,0),n=a.readUInt32BE(t,4);a.pc1(r,n,e.tmp,0),r=e.tmp[0],n=e.tmp[1];for(var o=0;o>>1];r=a.r28shl(r,s),n=a.r28shl(n,s),a.pc2(r,n,e.keys,o)}},u.prototype._update=function(e,t,r,i){var n=this._desState,o=a.readUInt32BE(e,t),s=a.readUInt32BE(e,t+4);a.ip(o,s,n.tmp,0),o=n.tmp[0],s=n.tmp[1],"encrypt"===this.type?this._encrypt(n,o,s,n.tmp,0):this._decrypt(n,o,s,n.tmp,0),o=n.tmp[0],s=n.tmp[1],a.writeUInt32BE(r,o,i),a.writeUInt32BE(r,s,i+4)},u.prototype._pad=function(e,t){for(var r=e.length-t,i=t;i>>0,o=p}a.rip(s,o,i,n)},u.prototype._decrypt=function(e,t,r,i,n){for(var o=r,s=t,u=e.keys.length-2;u>=0;u-=2){var c=e.keys[u],l=e.keys[u+1];a.expand(o,e.tmp,0),c^=e.tmp[0],l^=e.tmp[1];var h=a.substitute(c,l),p=o;o=(s^a.permute(h))>>>0,s=p}a.rip(o,s,i,n)}},50651:(e,t,r)=>{"use strict";var i=r(79746),n=r(35717),a=r(55756),o=r(70778);function s(e,t){i.equal(t.length,24,"Invalid key length");var r=t.slice(0,8),n=t.slice(8,16),a=t.slice(16,24);this.ciphers="encrypt"===e?[o.create({type:"encrypt",key:r}),o.create({type:"decrypt",key:n}),o.create({type:"encrypt",key:a})]:[o.create({type:"decrypt",key:a}),o.create({type:"encrypt",key:n}),o.create({type:"decrypt",key:r})]}function u(e){a.call(this,e);var t=new s(this.type,this.options.key);this._edeState=t}n(u,a),e.exports=u,u.create=function(e){return new u(e)},u.prototype._update=function(e,t,r,i){var n=this._edeState;n.ciphers[0]._update(e,t,r,i),n.ciphers[1]._update(r,i,r,i),n.ciphers[2]._update(r,i,r,i)},u.prototype._pad=o.prototype._pad,u.prototype._unpad=o.prototype._unpad},11278:(e,t)=>{"use strict";t.readUInt32BE=function(e,t){return(e[0+t]<<24|e[1+t]<<16|e[2+t]<<8|e[3+t])>>>0},t.writeUInt32BE=function(e,t,r){e[0+r]=t>>>24,e[1+r]=t>>>16&255,e[2+r]=t>>>8&255,e[3+r]=255&t},t.ip=function(e,t,r,i){for(var n=0,a=0,o=6;o>=0;o-=2){for(var s=0;s<=24;s+=8)n<<=1,n|=t>>>s+o&1;for(s=0;s<=24;s+=8)n<<=1,n|=e>>>s+o&1}for(o=6;o>=0;o-=2){for(s=1;s<=25;s+=8)a<<=1,a|=t>>>s+o&1;for(s=1;s<=25;s+=8)a<<=1,a|=e>>>s+o&1}r[i+0]=n>>>0,r[i+1]=a>>>0},t.rip=function(e,t,r,i){for(var n=0,a=0,o=0;o<4;o++)for(var s=24;s>=0;s-=8)n<<=1,n|=t>>>s+o&1,n<<=1,n|=e>>>s+o&1;for(o=4;o<8;o++)for(s=24;s>=0;s-=8)a<<=1,a|=t>>>s+o&1,a<<=1,a|=e>>>s+o&1;r[i+0]=n>>>0,r[i+1]=a>>>0},t.pc1=function(e,t,r,i){for(var n=0,a=0,o=7;o>=5;o--){for(var s=0;s<=24;s+=8)n<<=1,n|=t>>s+o&1;for(s=0;s<=24;s+=8)n<<=1,n|=e>>s+o&1}for(s=0;s<=24;s+=8)n<<=1,n|=t>>s+o&1;for(o=1;o<=3;o++){for(s=0;s<=24;s+=8)a<<=1,a|=t>>s+o&1;for(s=0;s<=24;s+=8)a<<=1,a|=e>>s+o&1}for(s=0;s<=24;s+=8)a<<=1,a|=e>>s+o&1;r[i+0]=n>>>0,r[i+1]=a>>>0},t.r28shl=function(e,t){return e<>>28-t};var r=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];t.pc2=function(e,t,i,n){for(var a=0,o=0,s=r.length>>>1,u=0;u>>r[u]&1;for(u=s;u>>r[u]&1;i[n+0]=a>>>0,i[n+1]=o>>>0},t.expand=function(e,t,r){var i=0,n=0;i=(1&e)<<5|e>>>27;for(var a=23;a>=15;a-=4)i<<=6,i|=e>>>a&63;for(a=11;a>=3;a-=4)n|=e>>>a&63,n<<=6;n|=(31&e)<<1|e>>>31,t[r+0]=i>>>0,t[r+1]=n>>>0};var i=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];t.substitute=function(e,t){for(var r=0,n=0;n<4;n++)r<<=4,r|=i[64*n+(e>>>18-6*n&63)];for(n=0;n<4;n++)r<<=4,r|=i[256+64*n+(t>>>18-6*n&63)];return r>>>0};var n=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];t.permute=function(e){for(var t=0,r=0;r>>n[r]&1;return t>>>0},t.padSplit=function(e,t,r){for(var i=e.toString(2);i.length{var i=r(48764).Buffer,n=r(43590),a=r(29799),o=r(57426),s={binary:!0,hex:!0,base64:!0};t.DiffieHellmanGroup=t.createDiffieHellmanGroup=t.getDiffieHellman=function(e){var t=new i(a[e].prime,"hex"),r=new i(a[e].gen,"hex");return new o(t,r)},t.createDiffieHellman=t.DiffieHellman=function e(t,r,a,u){return i.isBuffer(r)||void 0===s[r]?e(t,"binary",r,a):(r=r||"binary",u=u||"binary",a=a||new i([2]),i.isBuffer(a)||(a=new i(a,u)),"number"==typeof t?new o(n(t,a),a,!0):(i.isBuffer(t)||(t=new i(t,r)),new o(t,a,!0)))}},57426:(e,t,r)=>{var i=r(48764).Buffer,n=r(83620),a=new(r(63047)),o=new n(24),s=new n(11),u=new n(10),c=new n(3),l=new n(7),h=r(43590),p=r(61798);function d(e,t){return t=t||"utf8",i.isBuffer(e)||(e=new i(e,t)),this._pub=new n(e),this}function f(e,t){return t=t||"utf8",i.isBuffer(e)||(e=new i(e,t)),this._priv=new n(e),this}e.exports=g;var m={};function g(e,t,r){this.setGenerator(t),this.__prime=new n(e),this._prime=n.mont(this.__prime),this._primeLen=e.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=d,this.setPrivateKey=f):this._primeCode=8}function v(e,t){var r=new i(e.toArray());return t?r.toString(t):r}Object.defineProperty(g.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=function(e,t){var r=t.toString("hex"),i=[r,e.toString(16)].join("_");if(i in m)return m[i];var n,p=0;if(e.isEven()||!h.simpleSieve||!h.fermatTest(e)||!a.test(e))return p+=1,p+="02"===r||"05"===r?8:4,m[i]=p,p;switch(a.test(e.shrn(1))||(p+=2),r){case"02":e.mod(o).cmp(s)&&(p+=8);break;case"05":(n=e.mod(u)).cmp(c)&&n.cmp(l)&&(p+=8);break;default:p+=4}return m[i]=p,p}(this.__prime,this.__gen)),this._primeCode}}),g.prototype.generateKeys=function(){return this._priv||(this._priv=new n(p(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},g.prototype.computeSecret=function(e){var t=(e=(e=new n(e)).toRed(this._prime)).redPow(this._priv).fromRed(),r=new i(t.toArray()),a=this.getPrime();if(r.length{var i=r(61798);e.exports=y,y.simpleSieve=g,y.fermatTest=v;var n=r(83620),a=new n(24),o=new(r(63047)),s=new n(1),u=new n(2),c=new n(5),l=(new n(16),new n(8),new n(10)),h=new n(3),p=(new n(7),new n(11)),d=new n(4),f=(new n(12),null);function m(){if(null!==f)return f;var e=[];e[0]=2;for(var t=1,r=3;r<1048576;r+=2){for(var i=Math.ceil(Math.sqrt(r)),n=0;ne;)r.ishrn(1);if(r.isEven()&&r.iadd(s),r.testn(1)||r.iadd(u),t.cmp(u)){if(!t.cmp(c))for(;r.mod(l).cmp(h);)r.iadd(d)}else for(;r.mod(a).cmp(p);)r.iadd(d);if(g(f=r.shrn(1))&&g(r)&&v(f)&&v(r)&&o.test(f)&&o.test(r))return r}}},83620:function(e,t,r){!function(e,t){"use strict";function i(e,t){if(!e)throw new Error(t||"Assertion failed")}function n(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}function a(e,t,r){if(a.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(r=t,t=10),this._init(e||0,t||10,r||"be"))}var o;"object"==typeof e?e.exports=a:t.BN=a,a.BN=a,a.wordSize=26;try{o="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(7748).Buffer}catch(e){}function s(e,t){var r=e.charCodeAt(t);return r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function u(e,t,r){var i=s(e,r);return r-1>=t&&(i|=s(e,r-1)<<4),i}function c(e,t,r,i){for(var n=0,a=Math.min(e.length,r),o=t;o=49?s-49+10:s>=17?s-17+10:s}return n}a.isBN=function(e){return e instanceof a||null!==e&&"object"==typeof e&&e.constructor.wordSize===a.wordSize&&Array.isArray(e.words)},a.max=function(e,t){return e.cmp(t)>0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)o=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)n=u(e,t,i)<=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;this.strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,o=a%i,s=Math.min(a,a-o)+r,u=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],o=n*a,s=67108863&o,u=o/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&u,p=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=p;d++){var f=c-d|0;l+=(o=(n=0|e.words[f])*(a=0|t.words[d])+h)/67108864|0,h=67108863&o}r.words[c]=0|h,u=0|l}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}a.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,a=0,o=0;o>>24-n&16777215)||o!==this.length-1?l[6-u.length]+u+r:u+r,(n+=2)>=26&&(n-=26,o--)}for(0!==a&&(r=a.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var c=h[e],d=p[e];r="";var f=this.clone();for(f.negative=0;!f.isZero();){var m=f.modn(d).toString(e);r=(f=f.idivn(d)).isZero()?m+r:l[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(e,t){return i(void 0!==o),this.toArrayLike(o,e,t)},a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},a.prototype.toArrayLike=function(e,t,r){var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0"),this.strip();var o,s,u="le"===t,c=new e(a),l=this.clone();if(u){for(s=0;!l.isZero();s++)o=l.andln(255),l.iushrn(8),c[s]=o;for(;s=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==a&&o>26,this.words[o]=67108863&t;if(0===a&&o>>13,d=0|o[1],f=8191&d,m=d>>>13,g=0|o[2],v=8191&g,y=g>>>13,_=0|o[3],b=8191&_,w=_>>>13,E=0|o[4],k=8191&E,S=E>>>13,x=0|o[5],j=8191&x,N=x>>>13,M=0|o[6],I=8191&M,A=M>>>13,T=0|o[7],R=8191&T,P=T>>>13,O=0|o[8],B=8191&O,C=O>>>13,z=0|o[9],F=8191&z,D=z>>>13,q=0|s[0],L=8191&q,U=q>>>13,H=0|s[1],K=8191&H,W=H>>>13,Z=0|s[2],J=8191&Z,V=Z>>>13,$=0|s[3],G=8191&$,Q=$>>>13,X=0|s[4],Y=8191&X,ee=X>>>13,te=0|s[5],re=8191&te,ie=te>>>13,ne=0|s[6],ae=8191&ne,oe=ne>>>13,se=0|s[7],ue=8191&se,ce=se>>>13,le=0|s[8],he=8191&le,pe=le>>>13,de=0|s[9],fe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ge=(c+(i=Math.imul(h,L))|0)+((8191&(n=(n=Math.imul(h,U))+Math.imul(p,L)|0))<<13)|0;c=((a=Math.imul(p,U))+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(f,L),n=(n=Math.imul(f,U))+Math.imul(m,L)|0,a=Math.imul(m,U);var ve=(c+(i=i+Math.imul(h,K)|0)|0)+((8191&(n=(n=n+Math.imul(h,W)|0)+Math.imul(p,K)|0))<<13)|0;c=((a=a+Math.imul(p,W)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(v,L),n=(n=Math.imul(v,U))+Math.imul(y,L)|0,a=Math.imul(y,U),i=i+Math.imul(f,K)|0,n=(n=n+Math.imul(f,W)|0)+Math.imul(m,K)|0,a=a+Math.imul(m,W)|0;var ye=(c+(i=i+Math.imul(h,J)|0)|0)+((8191&(n=(n=n+Math.imul(h,V)|0)+Math.imul(p,J)|0))<<13)|0;c=((a=a+Math.imul(p,V)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(b,L),n=(n=Math.imul(b,U))+Math.imul(w,L)|0,a=Math.imul(w,U),i=i+Math.imul(v,K)|0,n=(n=n+Math.imul(v,W)|0)+Math.imul(y,K)|0,a=a+Math.imul(y,W)|0,i=i+Math.imul(f,J)|0,n=(n=n+Math.imul(f,V)|0)+Math.imul(m,J)|0,a=a+Math.imul(m,V)|0;var _e=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(n=(n=n+Math.imul(h,Q)|0)+Math.imul(p,G)|0))<<13)|0;c=((a=a+Math.imul(p,Q)|0)+(n>>>13)|0)+(_e>>>26)|0,_e&=67108863,i=Math.imul(k,L),n=(n=Math.imul(k,U))+Math.imul(S,L)|0,a=Math.imul(S,U),i=i+Math.imul(b,K)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(w,K)|0,a=a+Math.imul(w,W)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,V)|0)+Math.imul(y,J)|0,a=a+Math.imul(y,V)|0,i=i+Math.imul(f,G)|0,n=(n=n+Math.imul(f,Q)|0)+Math.imul(m,G)|0,a=a+Math.imul(m,Q)|0;var be=(c+(i=i+Math.imul(h,Y)|0)|0)+((8191&(n=(n=n+Math.imul(h,ee)|0)+Math.imul(p,Y)|0))<<13)|0;c=((a=a+Math.imul(p,ee)|0)+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(j,L),n=(n=Math.imul(j,U))+Math.imul(N,L)|0,a=Math.imul(N,U),i=i+Math.imul(k,K)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(S,K)|0,a=a+Math.imul(S,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,V)|0)+Math.imul(w,J)|0,a=a+Math.imul(w,V)|0,i=i+Math.imul(v,G)|0,n=(n=n+Math.imul(v,Q)|0)+Math.imul(y,G)|0,a=a+Math.imul(y,Q)|0,i=i+Math.imul(f,Y)|0,n=(n=n+Math.imul(f,ee)|0)+Math.imul(m,Y)|0,a=a+Math.imul(m,ee)|0;var we=(c+(i=i+Math.imul(h,re)|0)|0)+((8191&(n=(n=n+Math.imul(h,ie)|0)+Math.imul(p,re)|0))<<13)|0;c=((a=a+Math.imul(p,ie)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(I,L),n=(n=Math.imul(I,U))+Math.imul(A,L)|0,a=Math.imul(A,U),i=i+Math.imul(j,K)|0,n=(n=n+Math.imul(j,W)|0)+Math.imul(N,K)|0,a=a+Math.imul(N,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,V)|0)+Math.imul(S,J)|0,a=a+Math.imul(S,V)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,Q)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,Q)|0,i=i+Math.imul(v,Y)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(y,Y)|0,a=a+Math.imul(y,ee)|0,i=i+Math.imul(f,re)|0,n=(n=n+Math.imul(f,ie)|0)+Math.imul(m,re)|0,a=a+Math.imul(m,ie)|0;var Ee=(c+(i=i+Math.imul(h,ae)|0)|0)+((8191&(n=(n=n+Math.imul(h,oe)|0)+Math.imul(p,ae)|0))<<13)|0;c=((a=a+Math.imul(p,oe)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(R,L),n=(n=Math.imul(R,U))+Math.imul(P,L)|0,a=Math.imul(P,U),i=i+Math.imul(I,K)|0,n=(n=n+Math.imul(I,W)|0)+Math.imul(A,K)|0,a=a+Math.imul(A,W)|0,i=i+Math.imul(j,J)|0,n=(n=n+Math.imul(j,V)|0)+Math.imul(N,J)|0,a=a+Math.imul(N,V)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,Q)|0)+Math.imul(S,G)|0,a=a+Math.imul(S,Q)|0,i=i+Math.imul(b,Y)|0,n=(n=n+Math.imul(b,ee)|0)+Math.imul(w,Y)|0,a=a+Math.imul(w,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(y,re)|0,a=a+Math.imul(y,ie)|0,i=i+Math.imul(f,ae)|0,n=(n=n+Math.imul(f,oe)|0)+Math.imul(m,ae)|0,a=a+Math.imul(m,oe)|0;var ke=(c+(i=i+Math.imul(h,ue)|0)|0)+((8191&(n=(n=n+Math.imul(h,ce)|0)+Math.imul(p,ue)|0))<<13)|0;c=((a=a+Math.imul(p,ce)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(B,L),n=(n=Math.imul(B,U))+Math.imul(C,L)|0,a=Math.imul(C,U),i=i+Math.imul(R,K)|0,n=(n=n+Math.imul(R,W)|0)+Math.imul(P,K)|0,a=a+Math.imul(P,W)|0,i=i+Math.imul(I,J)|0,n=(n=n+Math.imul(I,V)|0)+Math.imul(A,J)|0,a=a+Math.imul(A,V)|0,i=i+Math.imul(j,G)|0,n=(n=n+Math.imul(j,Q)|0)+Math.imul(N,G)|0,a=a+Math.imul(N,Q)|0,i=i+Math.imul(k,Y)|0,n=(n=n+Math.imul(k,ee)|0)+Math.imul(S,Y)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(b,re)|0,n=(n=n+Math.imul(b,ie)|0)+Math.imul(w,re)|0,a=a+Math.imul(w,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,oe)|0)+Math.imul(y,ae)|0,a=a+Math.imul(y,oe)|0,i=i+Math.imul(f,ue)|0,n=(n=n+Math.imul(f,ce)|0)+Math.imul(m,ue)|0,a=a+Math.imul(m,ce)|0;var Se=(c+(i=i+Math.imul(h,he)|0)|0)+((8191&(n=(n=n+Math.imul(h,pe)|0)+Math.imul(p,he)|0))<<13)|0;c=((a=a+Math.imul(p,pe)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(F,L),n=(n=Math.imul(F,U))+Math.imul(D,L)|0,a=Math.imul(D,U),i=i+Math.imul(B,K)|0,n=(n=n+Math.imul(B,W)|0)+Math.imul(C,K)|0,a=a+Math.imul(C,W)|0,i=i+Math.imul(R,J)|0,n=(n=n+Math.imul(R,V)|0)+Math.imul(P,J)|0,a=a+Math.imul(P,V)|0,i=i+Math.imul(I,G)|0,n=(n=n+Math.imul(I,Q)|0)+Math.imul(A,G)|0,a=a+Math.imul(A,Q)|0,i=i+Math.imul(j,Y)|0,n=(n=n+Math.imul(j,ee)|0)+Math.imul(N,Y)|0,a=a+Math.imul(N,ee)|0,i=i+Math.imul(k,re)|0,n=(n=n+Math.imul(k,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(b,ae)|0,n=(n=n+Math.imul(b,oe)|0)+Math.imul(w,ae)|0,a=a+Math.imul(w,oe)|0,i=i+Math.imul(v,ue)|0,n=(n=n+Math.imul(v,ce)|0)+Math.imul(y,ue)|0,a=a+Math.imul(y,ce)|0,i=i+Math.imul(f,he)|0,n=(n=n+Math.imul(f,pe)|0)+Math.imul(m,he)|0,a=a+Math.imul(m,pe)|0;var xe=(c+(i=i+Math.imul(h,fe)|0)|0)+((8191&(n=(n=n+Math.imul(h,me)|0)+Math.imul(p,fe)|0))<<13)|0;c=((a=a+Math.imul(p,me)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(F,K),n=(n=Math.imul(F,W))+Math.imul(D,K)|0,a=Math.imul(D,W),i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,V)|0)+Math.imul(C,J)|0,a=a+Math.imul(C,V)|0,i=i+Math.imul(R,G)|0,n=(n=n+Math.imul(R,Q)|0)+Math.imul(P,G)|0,a=a+Math.imul(P,Q)|0,i=i+Math.imul(I,Y)|0,n=(n=n+Math.imul(I,ee)|0)+Math.imul(A,Y)|0,a=a+Math.imul(A,ee)|0,i=i+Math.imul(j,re)|0,n=(n=n+Math.imul(j,ie)|0)+Math.imul(N,re)|0,a=a+Math.imul(N,ie)|0,i=i+Math.imul(k,ae)|0,n=(n=n+Math.imul(k,oe)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,oe)|0,i=i+Math.imul(b,ue)|0,n=(n=n+Math.imul(b,ce)|0)+Math.imul(w,ue)|0,a=a+Math.imul(w,ce)|0,i=i+Math.imul(v,he)|0,n=(n=n+Math.imul(v,pe)|0)+Math.imul(y,he)|0,a=a+Math.imul(y,pe)|0;var je=(c+(i=i+Math.imul(f,fe)|0)|0)+((8191&(n=(n=n+Math.imul(f,me)|0)+Math.imul(m,fe)|0))<<13)|0;c=((a=a+Math.imul(m,me)|0)+(n>>>13)|0)+(je>>>26)|0,je&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,V))+Math.imul(D,J)|0,a=Math.imul(D,V),i=i+Math.imul(B,G)|0,n=(n=n+Math.imul(B,Q)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,Q)|0,i=i+Math.imul(R,Y)|0,n=(n=n+Math.imul(R,ee)|0)+Math.imul(P,Y)|0,a=a+Math.imul(P,ee)|0,i=i+Math.imul(I,re)|0,n=(n=n+Math.imul(I,ie)|0)+Math.imul(A,re)|0,a=a+Math.imul(A,ie)|0,i=i+Math.imul(j,ae)|0,n=(n=n+Math.imul(j,oe)|0)+Math.imul(N,ae)|0,a=a+Math.imul(N,oe)|0,i=i+Math.imul(k,ue)|0,n=(n=n+Math.imul(k,ce)|0)+Math.imul(S,ue)|0,a=a+Math.imul(S,ce)|0,i=i+Math.imul(b,he)|0,n=(n=n+Math.imul(b,pe)|0)+Math.imul(w,he)|0,a=a+Math.imul(w,pe)|0;var Ne=(c+(i=i+Math.imul(v,fe)|0)|0)+((8191&(n=(n=n+Math.imul(v,me)|0)+Math.imul(y,fe)|0))<<13)|0;c=((a=a+Math.imul(y,me)|0)+(n>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,i=Math.imul(F,G),n=(n=Math.imul(F,Q))+Math.imul(D,G)|0,a=Math.imul(D,Q),i=i+Math.imul(B,Y)|0,n=(n=n+Math.imul(B,ee)|0)+Math.imul(C,Y)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(R,re)|0,n=(n=n+Math.imul(R,ie)|0)+Math.imul(P,re)|0,a=a+Math.imul(P,ie)|0,i=i+Math.imul(I,ae)|0,n=(n=n+Math.imul(I,oe)|0)+Math.imul(A,ae)|0,a=a+Math.imul(A,oe)|0,i=i+Math.imul(j,ue)|0,n=(n=n+Math.imul(j,ce)|0)+Math.imul(N,ue)|0,a=a+Math.imul(N,ce)|0,i=i+Math.imul(k,he)|0,n=(n=n+Math.imul(k,pe)|0)+Math.imul(S,he)|0,a=a+Math.imul(S,pe)|0;var Me=(c+(i=i+Math.imul(b,fe)|0)|0)+((8191&(n=(n=n+Math.imul(b,me)|0)+Math.imul(w,fe)|0))<<13)|0;c=((a=a+Math.imul(w,me)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(F,Y),n=(n=Math.imul(F,ee))+Math.imul(D,Y)|0,a=Math.imul(D,ee),i=i+Math.imul(B,re)|0,n=(n=n+Math.imul(B,ie)|0)+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(R,ae)|0,n=(n=n+Math.imul(R,oe)|0)+Math.imul(P,ae)|0,a=a+Math.imul(P,oe)|0,i=i+Math.imul(I,ue)|0,n=(n=n+Math.imul(I,ce)|0)+Math.imul(A,ue)|0,a=a+Math.imul(A,ce)|0,i=i+Math.imul(j,he)|0,n=(n=n+Math.imul(j,pe)|0)+Math.imul(N,he)|0,a=a+Math.imul(N,pe)|0;var Ie=(c+(i=i+Math.imul(k,fe)|0)|0)+((8191&(n=(n=n+Math.imul(k,me)|0)+Math.imul(S,fe)|0))<<13)|0;c=((a=a+Math.imul(S,me)|0)+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(F,re),n=(n=Math.imul(F,ie))+Math.imul(D,re)|0,a=Math.imul(D,ie),i=i+Math.imul(B,ae)|0,n=(n=n+Math.imul(B,oe)|0)+Math.imul(C,ae)|0,a=a+Math.imul(C,oe)|0,i=i+Math.imul(R,ue)|0,n=(n=n+Math.imul(R,ce)|0)+Math.imul(P,ue)|0,a=a+Math.imul(P,ce)|0,i=i+Math.imul(I,he)|0,n=(n=n+Math.imul(I,pe)|0)+Math.imul(A,he)|0,a=a+Math.imul(A,pe)|0;var Ae=(c+(i=i+Math.imul(j,fe)|0)|0)+((8191&(n=(n=n+Math.imul(j,me)|0)+Math.imul(N,fe)|0))<<13)|0;c=((a=a+Math.imul(N,me)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(F,ae),n=(n=Math.imul(F,oe))+Math.imul(D,ae)|0,a=Math.imul(D,oe),i=i+Math.imul(B,ue)|0,n=(n=n+Math.imul(B,ce)|0)+Math.imul(C,ue)|0,a=a+Math.imul(C,ce)|0,i=i+Math.imul(R,he)|0,n=(n=n+Math.imul(R,pe)|0)+Math.imul(P,he)|0,a=a+Math.imul(P,pe)|0;var Te=(c+(i=i+Math.imul(I,fe)|0)|0)+((8191&(n=(n=n+Math.imul(I,me)|0)+Math.imul(A,fe)|0))<<13)|0;c=((a=a+Math.imul(A,me)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(F,ue),n=(n=Math.imul(F,ce))+Math.imul(D,ue)|0,a=Math.imul(D,ce),i=i+Math.imul(B,he)|0,n=(n=n+Math.imul(B,pe)|0)+Math.imul(C,he)|0,a=a+Math.imul(C,pe)|0;var Re=(c+(i=i+Math.imul(R,fe)|0)|0)+((8191&(n=(n=n+Math.imul(R,me)|0)+Math.imul(P,fe)|0))<<13)|0;c=((a=a+Math.imul(P,me)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(F,he),n=(n=Math.imul(F,pe))+Math.imul(D,he)|0,a=Math.imul(D,pe);var Pe=(c+(i=i+Math.imul(B,fe)|0)|0)+((8191&(n=(n=n+Math.imul(B,me)|0)+Math.imul(C,fe)|0))<<13)|0;c=((a=a+Math.imul(C,me)|0)+(n>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var Oe=(c+(i=Math.imul(F,fe))|0)+((8191&(n=(n=Math.imul(F,me))+Math.imul(D,fe)|0))<<13)|0;return c=((a=Math.imul(D,me))+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ve,u[2]=ye,u[3]=_e,u[4]=be,u[5]=we,u[6]=Ee,u[7]=ke,u[8]=Se,u[9]=xe,u[10]=je,u[11]=Ne,u[12]=Me,u[13]=Ie,u[14]=Ae,u[15]=Te,u[16]=Re,u[17]=Pe,u[18]=Oe,0!==c&&(u[19]=c,r.length++),r};function m(e,t,r){return(new g).mulp(e,t,r)}function g(e,t){this.x=e,this.y=t}Math.imul||(f=d),a.prototype.mulTo=function(e,t){var r,i=this.length+e.length;return r=10===this.length&&10===e.length?f(this,e,t):i<63?d(this,e,t):i<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,i=o,o=n}return 0!==i?r.words[a]=i:r.length--,r.strip()}(this,e,t):m(this,e,t),r},g.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},g.prototype.permute=function(e,t,r,i,n,a){for(var o=0;o>>=1)n++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*t;o>=26,t+=n/67108864|0,t+=a>>>26,this.words[r]=67108863&a}return 0!==t&&(this.words[r]=t,this.length++),this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n}return t}(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,o=Math.min((e-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,c=0;c=0&&(0!==l||c>=n);c--){var h=0|this.words[c];this.words[c]=l<<26-a|h>>>a,l=h&s}return u&&0!==l&&(u.words[u.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===s)return this.strip();for(i(-1===s),s=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,o=0|n.words[n.length-1];0!=(r=26-this._countBits(o))&&(n=n.ushln(r),i.iushln(r),o=0|n.words[n.length-1]);var s,u=i.length-n.length;if("mod"!==t){(s=new a(null)).length=u+1,s.words=new Array(s.length);for(var c=0;c=0;h--){var p=67108864*(0|i.words[n.length+h])+(0|i.words[n.length+h-1]);for(p=Math.min(p/o|0,67108863),i._ishlnsubmul(n,p,h);0!==i.negative;)p--,i.negative=0,i._ishlnsubmul(n,1,h),i.isZero()||(i.negative^=1);s&&(s.words[h]=p)}return s&&s.strip(),i.strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(n=s.div.neg()),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:n,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modn(e.words[0]))}:this._wordDiv(e,t);var n,o,s},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modn=function(e){i(e<=67108863);for(var t=(1<<26)%e,r=0,n=this.length-1;n>=0;n--)r=(t*r+(0|this.words[n]))%e;return r},a.prototype.idivn=function(e){i(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*t;this.words[r]=n/e|0,t=n%e}return this.strip()},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new a(1),o=new a(0),s=new a(0),u=new a(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var l=r.clone(),h=t.clone();!t.isZero();){for(var p=0,d=1;0==(t.words[0]&d)&&p<26;++p,d<<=1);if(p>0)for(t.iushrn(p);p-- >0;)(n.isOdd()||o.isOdd())&&(n.iadd(l),o.isub(h)),n.iushrn(1),o.iushrn(1);for(var f=0,m=1;0==(r.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(r.iushrn(f);f-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(l),u.isub(h)),s.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(s),o.isub(u)):(r.isub(t),s.isub(n),u.isub(o))}return{a:s,b:u,gcd:r.iushln(c)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,o=new a(1),s=new a(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,l=1;0==(t.words[0]&l)&&c<26;++c,l<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);for(var h=0,p=1;0==(r.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s)):(r.isub(t),s.isub(o))}return(n=0===t.cmpn(1)?o:s).cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new k(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var v={k256:null,p224:null,p192:null,p25519:null};function y(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function _(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function E(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(e){if("string"==typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function S(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},y.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},y.prototype.split=function(e,t){e.iushrn(this.n,0,t)},y.prototype.imulK=function(e){return e.imul(this.k)},n(_,y),_.prototype.split=function(e,t){for(var r=4194303,i=Math.min(e.length,9),n=0;n>>22,a=o}a>>>=22,e.words[n-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},_.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(v[e])return v[e];var t;if("k256"===e)t=new _;else if("p224"===e)t=new b;else if("p192"===e)t=new w;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new E}return v[e]=t,t},k.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},k.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),o=0;!n.isZero()&&0===n.andln(1);)o++,n.iushrn(1);i(!n.isZero());var s=new a(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new a(2*l*l).toRed(this);0!==this.pow(l,c).cmp(u);)l.redIAdd(u);for(var h=this.pow(l,n),p=this.pow(e,n.addn(1).iushrn(1)),d=this.pow(e,n),f=o;0!==d.cmp(s);){for(var m=d,g=0;0!==m.cmp(s);g++)m=m.redSqr();i(g=0;i--){for(var c=t.words[i],l=u-1;l>=0;l--){var h=c>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==h||0!==o?(o<<=1,o|=h,(4==++s||0===i&&0===l)&&(n=this.mul(n,r[o]),s=0,o=0)):s=0}u=26}return n},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new S(e)},n(S,k),S.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},S.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},S.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},S.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=r.nmd(e),this)},66245:(e,t,r)=>{var i=r(55835),n=r(36077).BigInteger,a=(r(62241).ECPointFp,r(2399).Buffer);function o(e,t){return e.length>=t?e:o("0"+e,t)}t.ECCurves=r(75528),t.ECKey=function(e,t,r){var s,u=e(),c=u.getN(),l=Math.floor(c.bitLength()/8);if(t)if(r)e=u.getCurve(),this.P=e.decodePointHex(t.toString("hex"));else{if(t.length!=l)return!1;s=new n(t.toString("hex"),16)}else{var h=c.subtract(n.ONE),p=new n(i.randomBytes(c.bitLength()));s=p.mod(h).add(n.ONE),this.P=u.getG().multiply(s)}this.P&&(this.PublicKey=a.from(u.getCurve().encodeCompressedPointHex(this.P),"hex")),s&&(this.PrivateKey=a.from(o(s.toString(16),2*l),"hex"),this.deriveSharedSecret=function(e){if(!e||!e.P)return!1;var t=e.P.multiply(s);return a.from(o(t.getX().toBigInteger().toString(16),2*l),"hex")})}},62241:(e,t,r)=>{var i=r(36077).BigInteger,n=i.prototype.Barrett;function a(e,t){this.x=t,this.q=e}function o(e,t,r,n){this.curve=e,this.x=t,this.y=r,this.z=null==n?i.ONE:n,this.zinv=null}function s(e,t,r){this.q=e,this.a=this.fromBigInteger(t),this.b=this.fromBigInteger(r),this.infinity=new o(this,null,null),this.reducer=new n(this.q)}a.prototype.equals=function(e){return e==this||this.q.equals(e.q)&&this.x.equals(e.x)},a.prototype.toBigInteger=function(){return this.x},a.prototype.negate=function(){return new a(this.q,this.x.negate().mod(this.q))},a.prototype.add=function(e){return new a(this.q,this.x.add(e.toBigInteger()).mod(this.q))},a.prototype.subtract=function(e){return new a(this.q,this.x.subtract(e.toBigInteger()).mod(this.q))},a.prototype.multiply=function(e){return new a(this.q,this.x.multiply(e.toBigInteger()).mod(this.q))},a.prototype.square=function(){return new a(this.q,this.x.square().mod(this.q))},a.prototype.divide=function(e){return new a(this.q,this.x.multiply(e.toBigInteger().modInverse(this.q)).mod(this.q))},o.prototype.getX=function(){null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q));var e=this.x.toBigInteger().multiply(this.zinv);return this.curve.reduce(e),this.curve.fromBigInteger(e)},o.prototype.getY=function(){null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q));var e=this.y.toBigInteger().multiply(this.zinv);return this.curve.reduce(e),this.curve.fromBigInteger(e)},o.prototype.equals=function(e){return e==this||(this.isInfinity()?e.isInfinity():e.isInfinity()?this.isInfinity():!!e.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(e.z)).mod(this.curve.q).equals(i.ZERO)&&e.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(e.z)).mod(this.curve.q).equals(i.ZERO))},o.prototype.isInfinity=function(){return null==this.x&&null==this.y||this.z.equals(i.ZERO)&&!this.y.toBigInteger().equals(i.ZERO)},o.prototype.negate=function(){return new o(this.curve,this.x,this.y.negate(),this.z)},o.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(e.z)).mod(this.curve.q),r=e.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(e.z)).mod(this.curve.q);if(i.ZERO.equals(r))return i.ZERO.equals(t)?this.twice():this.curve.getInfinity();var n=new i("3"),a=this.x.toBigInteger(),s=this.y.toBigInteger(),u=(e.x.toBigInteger(),e.y.toBigInteger(),r.square()),c=u.multiply(r),l=a.multiply(u),h=t.square().multiply(this.z),p=h.subtract(l.shiftLeft(1)).multiply(e.z).subtract(c).multiply(r).mod(this.curve.q),d=l.multiply(n).multiply(t).subtract(s.multiply(c)).subtract(h.multiply(t)).multiply(e.z).add(t.multiply(c)).mod(this.curve.q),f=c.multiply(this.z).multiply(e.z).mod(this.curve.q);return new o(this.curve,this.curve.fromBigInteger(p),this.curve.fromBigInteger(d),f)},o.prototype.twice=function(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var e=new i("3"),t=this.x.toBigInteger(),r=this.y.toBigInteger(),n=r.multiply(this.z),a=n.multiply(r).mod(this.curve.q),s=this.curve.a.toBigInteger(),u=t.square().multiply(e);i.ZERO.equals(s)||(u=u.add(this.z.square().multiply(s)));var c=(u=u.mod(this.curve.q)).square().subtract(t.shiftLeft(3).multiply(a)).shiftLeft(1).multiply(n).mod(this.curve.q),l=u.multiply(e).multiply(t).subtract(a.shiftLeft(1)).shiftLeft(2).multiply(a).subtract(u.square().multiply(u)).mod(this.curve.q),h=n.square().multiply(n).shiftLeft(3).mod(this.curve.q);return new o(this.curve,this.curve.fromBigInteger(c),this.curve.fromBigInteger(l),h)},o.prototype.multiply=function(e){if(this.isInfinity())return this;if(0==e.signum())return this.curve.getInfinity();var t,r=e,n=r.multiply(new i("3")),a=this.negate(),o=this;for(t=n.bitLength()-2;t>0;--t){o=o.twice();var s=n.testBit(t);s!=r.testBit(t)&&(o=o.add(s?this:a))}return o},o.prototype.multiplyTwo=function(e,t,r){var i;i=e.bitLength()>r.bitLength()?e.bitLength()-1:r.bitLength()-1;for(var n=this.curve.getInfinity(),a=this.add(t);i>=0;)n=n.twice(),e.testBit(i)?n=r.testBit(i)?n.add(a):n.add(this):r.testBit(i)&&(n=n.add(t)),--i;return n},s.prototype.getQ=function(){return this.q},s.prototype.getA=function(){return this.a},s.prototype.getB=function(){return this.b},s.prototype.equals=function(e){return e==this||this.q.equals(e.q)&&this.a.equals(e.a)&&this.b.equals(e.b)},s.prototype.getInfinity=function(){return this.infinity},s.prototype.fromBigInteger=function(e){return new a(this.q,e)},s.prototype.reduce=function(e){this.reducer.reduce(e)},s.prototype.encodePointHex=function(e){if(e.isInfinity())return"00";var t=e.getX().toBigInteger().toString(16),r=e.getY().toBigInteger().toString(16),i=this.getQ().toString(16).length;for(i%2!=0&&i++;t.length128&&-1==this.q.shiftRight(e-64).intValue()&&(this.r=i.ONE.shiftLeft(e).subtract(this.q)),this.r},a.prototype.modMult=function(e,t){return this.modReduce(e.multiply(t))},a.prototype.modReduce=function(e){if(null!=this.getR()){for(var t=q.bitLength();e.bitLength()>t+1;){var r=e.shiftRight(t),n=e.subtract(r.shiftLeft(t));this.getR().equals(i.ONE)||(r=r.multiply(this.getR())),e=r.add(n)}for(;e.compareTo(q)>=0;)e=e.subtract(q)}else e=e.mod(q);return e},a.prototype.sqrt=function(){if(!this.q.testBit(0))throw"unsupported";if(this.q.testBit(1)){var e=new a(this.q,this.x.modPow(this.q.shiftRight(2).add(i.ONE),this.q));return e.square().equals(this)?e:null}var t=this.q.subtract(i.ONE),r=t.shiftRight(1);if(!this.x.modPow(r,this.q).equals(i.ONE))return null;var n,o,s=t.shiftRight(2).shiftLeft(1).add(i.ONE),u=this.x,c=modDouble(modDouble(u));do{var l;do{l=new i(this.q.bitLength(),new SecureRandom)}while(l.compareTo(this.q)>=0||!l.multiply(l).subtract(c).modPow(r,this.q).equals(t));var h=this.lucasSequence(l,u,s);if(n=h[0],o=h[1],this.modMult(o,o).equals(c))return o.testBit(0)&&(o=o.add(q)),o=o.shiftRight(1),new a(q,o)}while(n.equals(i.ONE)||n.equals(t));return null},a.prototype.lucasSequence=function(e,t,r){for(var n=r.bitLength(),a=r.getLowestSetBit(),o=i.ONE,s=i.TWO,u=e,c=i.ONE,l=i.ONE,h=n-1;h>=a+1;--h)c=this.modMult(c,l),r.testBit(h)?(l=this.modMult(c,t),o=this.modMult(o,u),s=this.modReduce(u.multiply(s).subtract(e.multiply(c))),u=this.modReduce(u.multiply(u).subtract(l.shiftLeft(1)))):(l=c,o=this.modReduce(o.multiply(s).subtract(c)),u=this.modReduce(u.multiply(s).subtract(e.multiply(c))),s=this.modReduce(s.multiply(s).subtract(c.shiftLeft(1))));for(c=this.modMult(c,l),l=this.modMult(c,t),o=this.modReduce(o.multiply(s).subtract(c)),s=this.modReduce(u.multiply(s).subtract(e.multiply(c))),c=this.modMult(c,l),h=1;h<=a;++h)o=this.modMult(o,s),s=this.modReduce(s.multiply(s).subtract(c.shiftLeft(1))),c=this.modMult(c,c);return[o,s]};var u={ECCurveFp:s,ECPointFp:o,ECFieldElementFp:a};e.exports=u},75528:(e,t,r)=>{var i=r(36077).BigInteger,n=r(62241).ECCurveFp;function a(e,t,r,i){this.curve=e,this.g=t,this.n=r,this.h=i}function o(e){return new i(e,16)}a.prototype.getCurve=function(){return this.curve},a.prototype.getG=function(){return this.g},a.prototype.getN=function(){return this.n},a.prototype.getH=function(){return this.h},e.exports={secp128r1:function(){var e=o("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF"),t=o("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC"),r=o("E87579C11079F43DD824993C2CEE5ED3"),s=o("FFFFFFFE0000000075A30D1B9038A115"),u=i.ONE,c=new n(e,t,r),l=c.decodePointHex("04161FF7528B899B2D0C28607CA52C5B86CF5AC8395BAFEB13C02DA292DDED7A83");return new a(c,l,s,u)},secp160k1:function(){var e=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73"),t=i.ZERO,r=o("7"),s=o("0100000000000000000001B8FA16DFAB9ACA16B6B3"),u=i.ONE,c=new n(e,t,r),l=c.decodePointHex("043B4C382CE37AA192A4019E763036F4F5DD4D7EBB938CF935318FDCED6BC28286531733C3F03C4FEE");return new a(c,l,s,u)},secp160r1:function(){var e=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF"),t=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC"),r=o("1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45"),s=o("0100000000000000000001F4C8F927AED3CA752257"),u=i.ONE,c=new n(e,t,r),l=c.decodePointHex("044A96B5688EF573284664698968C38BB913CBFC8223A628553168947D59DCC912042351377AC5FB32");return new a(c,l,s,u)},secp192k1:function(){var e=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37"),t=i.ZERO,r=o("3"),s=o("FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D"),u=i.ONE,c=new n(e,t,r),l=c.decodePointHex("04DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D");return new a(c,l,s,u)},secp192r1:function(){var e=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF"),t=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC"),r=o("64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1"),s=o("FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831"),u=i.ONE,c=new n(e,t,r),l=c.decodePointHex("04188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF101207192B95FFC8DA78631011ED6B24CDD573F977A11E794811");return new a(c,l,s,u)},secp224r1:function(){var e=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001"),t=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE"),r=o("B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4"),s=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D"),u=i.ONE,c=new n(e,t,r),l=c.decodePointHex("04B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34");return new a(c,l,s,u)},secp256r1:function(){var e=o("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF"),t=o("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC"),r=o("5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B"),s=o("FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"),u=i.ONE,c=new n(e,t,r),l=c.decodePointHex("046B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C2964FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5");return new a(c,l,s,u)}}},86266:(e,t,r)=>{"use strict";var i=t;i.version=r(18597).i8,i.utils=r(80953),i.rand=r(29931),i.curve=r(88254),i.curves=r(45427),i.ec=r(57954),i.eddsa=r(65980)},4918:(e,t,r)=>{"use strict";var i=r(73785),n=r(80953),a=n.getNAF,o=n.getJSF,s=n.assert;function u(e,t){this.type=e,this.p=new i(t.p,16),this.red=t.prime?i.red(t.prime):i.mont(this.p),this.zero=new i(0).toRed(this.red),this.one=new i(1).toRed(this.red),this.two=new i(2).toRed(this.red),this.n=t.n&&new i(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function c(e,t){this.curve=e,this.type=t,this.precomputed=null}e.exports=u,u.prototype.point=function(){throw new Error("Not implemented")},u.prototype.validate=function(){throw new Error("Not implemented")},u.prototype._fixedNafMul=function(e,t){s(e.precomputed);var r=e._getDoubles(),i=a(t,1,this._bitLength),n=(1<=o;l--)u=(u<<1)+i[l];c.push(u)}for(var h=this.jpoint(null,null,null),p=this.jpoint(null,null,null),d=n;d>0;d--){for(o=0;o=0;c--){for(var l=0;c>=0&&0===o[c];c--)l++;if(c>=0&&l++,u=u.dblp(l),c<0)break;var h=o[c];s(0!==h),u="affine"===e.type?h>0?u.mixedAdd(n[h-1>>1]):u.mixedAdd(n[-h-1>>1].neg()):h>0?u.add(n[h-1>>1]):u.add(n[-h-1>>1].neg())}return"affine"===e.type?u.toP():u},u.prototype._wnafMulAdd=function(e,t,r,i,n){var s,u,c,l=this._wnafT1,h=this._wnafT2,p=this._wnafT3,d=0;for(s=0;s=1;s-=2){var m=s-1,g=s;if(1===l[m]&&1===l[g]){var v=[t[m],null,null,t[g]];0===t[m].y.cmp(t[g].y)?(v[1]=t[m].add(t[g]),v[2]=t[m].toJ().mixedAdd(t[g].neg())):0===t[m].y.cmp(t[g].y.redNeg())?(v[1]=t[m].toJ().mixedAdd(t[g]),v[2]=t[m].add(t[g].neg())):(v[1]=t[m].toJ().mixedAdd(t[g]),v[2]=t[m].toJ().mixedAdd(t[g].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],_=o(r[m],r[g]);for(d=Math.max(_[0].length,d),p[m]=new Array(d),p[g]=new Array(d),u=0;u=0;s--){for(var S=0;s>=0;){var x=!0;for(u=0;u=0&&S++,E=E.dblp(S),s<0)break;for(u=0;u0?c=h[u][j-1>>1]:j<0&&(c=h[u][-j-1>>1].neg()),E="affine"===c.type?E.mixedAdd(c):E.add(c))}}for(s=0;s=Math.ceil((e.bitLength()+1)/t.step)},c.prototype._getDoubles=function(e,t){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],i=this,n=0;n{"use strict";var i=r(80953),n=r(73785),a=r(35717),o=r(4918),s=i.assert;function u(e){this.twisted=1!=(0|e.a),this.mOneA=this.twisted&&-1==(0|e.a),this.extended=this.mOneA,o.call(this,"edwards",e),this.a=new n(e.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new n(e.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new n(e.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),s(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|e.c)}function c(e,t,r,i,a){o.BasePoint.call(this,e,"projective"),null===t&&null===r&&null===i?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new n(t,16),this.y=new n(r,16),this.z=i?new n(i,16):this.curve.one,this.t=a&&new n(a,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}a(u,o),e.exports=u,u.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},u.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)},u.prototype.jpoint=function(e,t,r,i){return this.point(e,t,r,i)},u.prototype.pointFromX=function(e,t){(e=new n(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr(),i=this.c2.redSub(this.a.redMul(r)),a=this.one.redSub(this.c2.redMul(this.d).redMul(r)),o=i.redMul(a.redInvm()),s=o.redSqrt();if(0!==s.redSqr().redSub(o).cmp(this.zero))throw new Error("invalid point");var u=s.fromRed().isOdd();return(t&&!u||!t&&u)&&(s=s.redNeg()),this.point(e,s)},u.prototype.pointFromY=function(e,t){(e=new n(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr(),i=r.redSub(this.c2),a=r.redMul(this.d).redMul(this.c2).redSub(this.a),o=i.redMul(a.redInvm());if(0===o.cmp(this.zero)){if(t)throw new Error("invalid point");return this.point(this.zero,e)}var s=o.redSqrt();if(0!==s.redSqr().redSub(o).cmp(this.zero))throw new Error("invalid point");return s.fromRed().isOdd()!==t&&(s=s.redNeg()),this.point(s,e)},u.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var t=e.x.redSqr(),r=e.y.redSqr(),i=t.redMul(this.a).redAdd(r),n=this.c2.redMul(this.one.redAdd(this.d.redMul(t).redMul(r)));return 0===i.cmp(n)},a(c,o.BasePoint),u.prototype.pointFromJSON=function(e){return c.fromJSON(this,e)},u.prototype.point=function(e,t,r,i){return new c(this,e,t,r,i)},c.fromJSON=function(e,t){return new c(e,t[0],t[1],t[2])},c.prototype.inspect=function(){return this.isInfinity()?"":""},c.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},c.prototype._extDbl=function(){var e=this.x.redSqr(),t=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(e),n=this.x.redAdd(this.y).redSqr().redISub(e).redISub(t),a=i.redAdd(t),o=a.redSub(r),s=i.redSub(t),u=n.redMul(o),c=a.redMul(s),l=n.redMul(s),h=o.redMul(a);return this.curve.point(u,c,h,l)},c.prototype._projDbl=function(){var e,t,r,i,n,a,o=this.x.redAdd(this.y).redSqr(),s=this.x.redSqr(),u=this.y.redSqr();if(this.curve.twisted){var c=(i=this.curve._mulA(s)).redAdd(u);this.zOne?(e=o.redSub(s).redSub(u).redMul(c.redSub(this.curve.two)),t=c.redMul(i.redSub(u)),r=c.redSqr().redSub(c).redSub(c)):(n=this.z.redSqr(),a=c.redSub(n).redISub(n),e=o.redSub(s).redISub(u).redMul(a),t=c.redMul(i.redSub(u)),r=c.redMul(a))}else i=s.redAdd(u),n=this.curve._mulC(this.z).redSqr(),a=i.redSub(n).redSub(n),e=this.curve._mulC(o.redISub(i)).redMul(a),t=this.curve._mulC(i).redMul(s.redISub(u)),r=i.redMul(a);return this.curve.point(e,t,r)},c.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},c.prototype._extAdd=function(e){var t=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),r=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),i=this.t.redMul(this.curve.dd).redMul(e.t),n=this.z.redMul(e.z.redAdd(e.z)),a=r.redSub(t),o=n.redSub(i),s=n.redAdd(i),u=r.redAdd(t),c=a.redMul(o),l=s.redMul(u),h=a.redMul(u),p=o.redMul(s);return this.curve.point(c,l,p,h)},c.prototype._projAdd=function(e){var t,r,i=this.z.redMul(e.z),n=i.redSqr(),a=this.x.redMul(e.x),o=this.y.redMul(e.y),s=this.curve.d.redMul(a).redMul(o),u=n.redSub(s),c=n.redAdd(s),l=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(a).redISub(o),h=i.redMul(u).redMul(l);return this.curve.twisted?(t=i.redMul(c).redMul(o.redSub(this.curve._mulA(a))),r=u.redMul(c)):(t=i.redMul(c).redMul(o.redSub(a)),r=this.curve._mulC(u).redMul(c)),this.curve.point(h,t,r)},c.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},c.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},c.prototype.mulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!1)},c.prototype.jmulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!0)},c.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},c.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},c.prototype.getX=function(){return this.normalize(),this.x.fromRed()},c.prototype.getY=function(){return this.normalize(),this.y.fromRed()},c.prototype.eq=function(e){return this===e||0===this.getX().cmp(e.getX())&&0===this.getY().cmp(e.getY())},c.prototype.eqXToP=function(e){var t=e.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(t))return!0;for(var r=e.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(t.redIAdd(i),0===this.x.cmp(t))return!0}},c.prototype.toP=c.prototype.normalize,c.prototype.mixedAdd=c.prototype.add},88254:(e,t,r)=>{"use strict";var i=t;i.base=r(4918),i.short=r(6673),i.mont=r(22881),i.edwards=r(31138)},22881:(e,t,r)=>{"use strict";var i=r(73785),n=r(35717),a=r(4918),o=r(80953);function s(e){a.call(this,"mont",e),this.a=new i(e.a,16).toRed(this.red),this.b=new i(e.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function u(e,t,r){a.BasePoint.call(this,e,"projective"),null===t&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(t,16),this.z=new i(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}n(s,a),e.exports=s,s.prototype.validate=function(e){var t=e.normalize().x,r=t.redSqr(),i=r.redMul(t).redAdd(r.redMul(this.a)).redAdd(t);return 0===i.redSqrt().redSqr().cmp(i)},n(u,a.BasePoint),s.prototype.decodePoint=function(e,t){return this.point(o.toArray(e,t),1)},s.prototype.point=function(e,t){return new u(this,e,t)},s.prototype.pointFromJSON=function(e){return u.fromJSON(this,e)},u.prototype.precompute=function(){},u.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},u.fromJSON=function(e,t){return new u(e,t[0],t[1]||e.one)},u.prototype.inspect=function(){return this.isInfinity()?"":""},u.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},u.prototype.dbl=function(){var e=this.x.redAdd(this.z).redSqr(),t=this.x.redSub(this.z).redSqr(),r=e.redSub(t),i=e.redMul(t),n=r.redMul(t.redAdd(this.curve.a24.redMul(r)));return this.curve.point(i,n)},u.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},u.prototype.diffAdd=function(e,t){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),n=e.x.redAdd(e.z),a=e.x.redSub(e.z).redMul(r),o=n.redMul(i),s=t.z.redMul(a.redAdd(o).redSqr()),u=t.x.redMul(a.redISub(o).redSqr());return this.curve.point(s,u)},u.prototype.mul=function(e){for(var t=e.clone(),r=this,i=this.curve.point(null,null),n=[];0!==t.cmpn(0);t.iushrn(1))n.push(t.andln(1));for(var a=n.length-1;a>=0;a--)0===n[a]?(r=r.diffAdd(i,this),i=i.dbl()):(i=r.diffAdd(i,this),r=r.dbl());return i},u.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},u.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},u.prototype.eq=function(e){return 0===this.getX().cmp(e.getX())},u.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},u.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},6673:(e,t,r)=>{"use strict";var i=r(80953),n=r(73785),a=r(35717),o=r(4918),s=i.assert;function u(e){o.call(this,"short",e),this.a=new n(e.a,16).toRed(this.red),this.b=new n(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(e),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function c(e,t,r,i){o.BasePoint.call(this,e,"affine"),null===t&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new n(t,16),this.y=new n(r,16),i&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function l(e,t,r,i){o.BasePoint.call(this,e,"jacobian"),null===t&&null===r&&null===i?(this.x=this.curve.one,this.y=this.curve.one,this.z=new n(0)):(this.x=new n(t,16),this.y=new n(r,16),this.z=new n(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}a(u,o),e.exports=u,u.prototype._getEndomorphism=function(e){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var t,r;if(e.beta)t=new n(e.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);t=(t=i[0].cmp(i[1])<0?i[0]:i[1]).toRed(this.red)}if(e.lambda)r=new n(e.lambda,16);else{var a=this._getEndoRoots(this.n);0===this.g.mul(a[0]).x.cmp(this.g.x.redMul(t))?r=a[0]:(r=a[1],s(0===this.g.mul(r).x.cmp(this.g.x.redMul(t))))}return{beta:t,lambda:r,basis:e.basis?e.basis.map((function(e){return{a:new n(e.a,16),b:new n(e.b,16)}})):this._getEndoBasis(r)}}},u.prototype._getEndoRoots=function(e){var t=e===this.p?this.red:n.mont(e),r=new n(2).toRed(t).redInvm(),i=r.redNeg(),a=new n(3).toRed(t).redNeg().redSqrt().redMul(r);return[i.redAdd(a).fromRed(),i.redSub(a).fromRed()]},u.prototype._getEndoBasis=function(e){for(var t,r,i,a,o,s,u,c,l,h=this.n.ushrn(Math.floor(this.n.bitLength()/2)),p=e,d=this.n.clone(),f=new n(1),m=new n(0),g=new n(0),v=new n(1),y=0;0!==p.cmpn(0);){var _=d.div(p);c=d.sub(_.mul(p)),l=g.sub(_.mul(f));var b=v.sub(_.mul(m));if(!i&&c.cmp(h)<0)t=u.neg(),r=f,i=c.neg(),a=l;else if(i&&2==++y)break;u=c,d=p,p=c,g=f,f=l,v=m,m=b}o=c.neg(),s=l;var w=i.sqr().add(a.sqr());return o.sqr().add(s.sqr()).cmp(w)>=0&&(o=t,s=r),i.negative&&(i=i.neg(),a=a.neg()),o.negative&&(o=o.neg(),s=s.neg()),[{a:i,b:a},{a:o,b:s}]},u.prototype._endoSplit=function(e){var t=this.endo.basis,r=t[0],i=t[1],n=i.b.mul(e).divRound(this.n),a=r.b.neg().mul(e).divRound(this.n),o=n.mul(r.a),s=a.mul(i.a),u=n.mul(r.b),c=a.mul(i.b);return{k1:e.sub(o).sub(s),k2:u.add(c).neg()}},u.prototype.pointFromX=function(e,t){(e=new n(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(0!==i.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var a=i.fromRed().isOdd();return(t&&!a||!t&&a)&&(i=i.redNeg()),this.point(e,i)},u.prototype.validate=function(e){if(e.inf)return!0;var t=e.x,r=e.y,i=this.a.redMul(t),n=t.redSqr().redMul(t).redIAdd(i).redIAdd(this.b);return 0===r.redSqr().redISub(n).cmpn(0)},u.prototype._endoWnafMulAdd=function(e,t,r){for(var i=this._endoWnafT1,n=this._endoWnafT2,a=0;a":""},c.prototype.isInfinity=function(){return this.inf},c.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(0===this.x.cmp(e.x))return this.curve.point(null,null);var t=this.y.redSub(e.y);0!==t.cmpn(0)&&(t=t.redMul(this.x.redSub(e.x).redInvm()));var r=t.redSqr().redISub(this.x).redISub(e.x),i=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},c.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(0===e.cmpn(0))return this.curve.point(null,null);var t=this.curve.a,r=this.x.redSqr(),i=e.redInvm(),n=r.redAdd(r).redIAdd(r).redIAdd(t).redMul(i),a=n.redSqr().redISub(this.x.redAdd(this.x)),o=n.redMul(this.x.redSub(a)).redISub(this.y);return this.curve.point(a,o)},c.prototype.getX=function(){return this.x.fromRed()},c.prototype.getY=function(){return this.y.fromRed()},c.prototype.mul=function(e){return e=new n(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},c.prototype.mulAdd=function(e,t,r){var i=[this,t],n=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n):this.curve._wnafMulAdd(1,i,n,2)},c.prototype.jmulAdd=function(e,t,r){var i=[this,t],n=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n,!0):this.curve._wnafMulAdd(1,i,n,2,!0)},c.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||0===this.x.cmp(e.x)&&0===this.y.cmp(e.y))},c.prototype.neg=function(e){if(this.inf)return this;var t=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed,i=function(e){return e.neg()};t.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return t},c.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},a(l,o.BasePoint),u.prototype.jpoint=function(e,t,r){return new l(this,e,t,r)},l.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),t=e.redSqr(),r=this.x.redMul(t),i=this.y.redMul(t).redMul(e);return this.curve.point(r,i)},l.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},l.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(t),n=e.x.redMul(r),a=this.y.redMul(t.redMul(e.z)),o=e.y.redMul(r.redMul(this.z)),s=i.redSub(n),u=a.redSub(o);if(0===s.cmpn(0))return 0!==u.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=s.redSqr(),l=c.redMul(s),h=i.redMul(c),p=u.redSqr().redIAdd(l).redISub(h).redISub(h),d=u.redMul(h.redISub(p)).redISub(a.redMul(l)),f=this.z.redMul(e.z).redMul(s);return this.curve.jpoint(p,d,f)},l.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var t=this.z.redSqr(),r=this.x,i=e.x.redMul(t),n=this.y,a=e.y.redMul(t).redMul(this.z),o=r.redSub(i),s=n.redSub(a);if(0===o.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=o.redSqr(),c=u.redMul(o),l=r.redMul(u),h=s.redSqr().redIAdd(c).redISub(l).redISub(l),p=s.redMul(l.redISub(h)).redISub(n.redMul(c)),d=this.z.redMul(o);return this.curve.jpoint(h,p,d)},l.prototype.dblp=function(e){if(0===e)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var t;if(this.curve.zeroA||this.curve.threeA){var r=this;for(t=0;t=0)return!1;if(r.redIAdd(n),0===this.x.cmp(r))return!0}},l.prototype.inspect=function(){return this.isInfinity()?"":""},l.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},45427:(e,t,r)=>{"use strict";var i,n=t,a=r(33715),o=r(88254),s=r(80953).assert;function u(e){"short"===e.type?this.curve=new o.short(e):"edwards"===e.type?this.curve=new o.edwards(e):this.curve=new o.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,s(this.g.validate(),"Invalid curve"),s(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function c(e,t){Object.defineProperty(n,e,{configurable:!0,enumerable:!0,get:function(){var r=new u(t);return Object.defineProperty(n,e,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=u,c("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:a.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),c("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:a.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),c("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:a.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),c("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:a.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),c("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:a.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),c("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["9"]}),c("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{i=r(91037)}catch(e){i=void 0}c("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:a.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",i]})},57954:(e,t,r)=>{"use strict";var i=r(73785),n=r(2156),a=r(80953),o=r(45427),s=r(29931),u=a.assert,c=r(31251),l=r(90611);function h(e){if(!(this instanceof h))return new h(e);"string"==typeof e&&(u(Object.prototype.hasOwnProperty.call(o,e),"Unknown curve "+e),e=o[e]),e instanceof o.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}e.exports=h,h.prototype.keyPair=function(e){return new c(this,e)},h.prototype.keyFromPrivate=function(e,t){return c.fromPrivate(this,e,t)},h.prototype.keyFromPublic=function(e,t){return c.fromPublic(this,e,t)},h.prototype.genKeyPair=function(e){e||(e={});for(var t=new n({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||s(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),a=this.n.sub(new i(2));;){var o=new i(t.generate(r));if(!(o.cmp(a)>0))return o.iaddn(1),this.keyFromPrivate(o)}},h.prototype._truncateToN=function(e,t){var r=8*e.byteLength()-this.n.bitLength();return r>0&&(e=e.ushrn(r)),!t&&e.cmp(this.n)>=0?e.sub(this.n):e},h.prototype.sign=function(e,t,r,a){"object"==typeof r&&(a=r,r=null),a||(a={}),t=this.keyFromPrivate(t,r),e=this._truncateToN(new i(e,16));for(var o=this.n.byteLength(),s=t.getPrivate().toArray("be",o),u=e.toArray("be",o),c=new n({hash:this.hash,entropy:s,nonce:u,pers:a.pers,persEnc:a.persEnc||"utf8"}),h=this.n.sub(new i(1)),p=0;;p++){var d=a.k?a.k(p):new i(c.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(h)>=0)){var f=this.g.mul(d);if(!f.isInfinity()){var m=f.getX(),g=m.umod(this.n);if(0!==g.cmpn(0)){var v=d.invm(this.n).mul(g.mul(t.getPrivate()).iadd(e));if(0!==(v=v.umod(this.n)).cmpn(0)){var y=(f.getY().isOdd()?1:0)|(0!==m.cmp(g)?2:0);return a.canonical&&v.cmp(this.nh)>0&&(v=this.n.sub(v),y^=1),new l({r:g,s:v,recoveryParam:y})}}}}}},h.prototype.verify=function(e,t,r,n){e=this._truncateToN(new i(e,16)),r=this.keyFromPublic(r,n);var a=(t=new l(t,"hex")).r,o=t.s;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;var s,u=o.invm(this.n),c=u.mul(e).umod(this.n),h=u.mul(a).umod(this.n);return this.curve._maxwellTrick?!(s=this.g.jmulAdd(c,r.getPublic(),h)).isInfinity()&&s.eqXToP(a):!(s=this.g.mulAdd(c,r.getPublic(),h)).isInfinity()&&0===s.getX().umod(this.n).cmp(a)},h.prototype.recoverPubKey=function(e,t,r,n){u((3&r)===r,"The recovery param is more than two bits"),t=new l(t,n);var a=this.n,o=new i(e),s=t.r,c=t.s,h=1&r,p=r>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&p)throw new Error("Unable to find sencond key candinate");s=p?this.curve.pointFromX(s.add(this.curve.n),h):this.curve.pointFromX(s,h);var d=t.r.invm(a),f=a.sub(o).mul(d).umod(a),m=c.mul(d).umod(a);return this.g.mulAdd(f,s,m)},h.prototype.getKeyRecoveryParam=function(e,t,r,i){if(null!==(t=new l(t,i)).recoveryParam)return t.recoveryParam;for(var n=0;n<4;n++){var a;try{a=this.recoverPubKey(e,t,n)}catch(e){continue}if(a.eq(r))return n}throw new Error("Unable to find valid recovery factor")}},31251:(e,t,r)=>{"use strict";var i=r(73785),n=r(80953).assert;function a(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}e.exports=a,a.fromPublic=function(e,t,r){return t instanceof a?t:new a(e,{pub:t,pubEnc:r})},a.fromPrivate=function(e,t,r){return t instanceof a?t:new a(e,{priv:t,privEnc:r})},a.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},a.prototype.getPublic=function(e,t){return"string"==typeof e&&(t=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),t?this.pub.encode(t,e):this.pub},a.prototype.getPrivate=function(e){return"hex"===e?this.priv.toString(16,2):this.priv},a.prototype._importPrivate=function(e,t){this.priv=new i(e,t||16),this.priv=this.priv.umod(this.ec.curve.n)},a.prototype._importPublic=function(e,t){if(e.x||e.y)return"mont"===this.ec.curve.type?n(e.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||n(e.x&&e.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(e.x,e.y));this.pub=this.ec.curve.decodePoint(e,t)},a.prototype.derive=function(e){return e.validate()||n(e.validate(),"public point not validated"),e.mul(this.priv).getX()},a.prototype.sign=function(e,t,r){return this.ec.sign(e,this,t,r)},a.prototype.verify=function(e,t){return this.ec.verify(e,t,this)},a.prototype.inspect=function(){return""}},90611:(e,t,r)=>{"use strict";var i=r(73785),n=r(80953),a=n.assert;function o(e,t){if(e instanceof o)return e;this._importDER(e,t)||(a(e.r&&e.s,"Signature without r or s"),this.r=new i(e.r,16),this.s=new i(e.s,16),void 0===e.recoveryParam?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}function s(){this.place=0}function u(e,t){var r=e[t.place++];if(!(128&r))return r;var i=15&r;if(0===i||i>4)return!1;for(var n=0,a=0,o=t.place;a>>=0;return!(n<=127)&&(t.place=o,n)}function c(e){for(var t=0,r=e.length-1;!e[t]&&!(128&e[t+1])&&t>>3);for(e.push(128|r);--r;)e.push(t>>>(r<<3)&255);e.push(t)}}e.exports=o,o.prototype._importDER=function(e,t){e=n.toArray(e,t);var r=new s;if(48!==e[r.place++])return!1;var a=u(e,r);if(!1===a)return!1;if(a+r.place!==e.length)return!1;if(2!==e[r.place++])return!1;var o=u(e,r);if(!1===o)return!1;var c=e.slice(r.place,o+r.place);if(r.place+=o,2!==e[r.place++])return!1;var l=u(e,r);if(!1===l)return!1;if(e.length!==l+r.place)return!1;var h=e.slice(r.place,l+r.place);if(0===c[0]){if(!(128&c[1]))return!1;c=c.slice(1)}if(0===h[0]){if(!(128&h[1]))return!1;h=h.slice(1)}return this.r=new i(c),this.s=new i(h),this.recoveryParam=null,!0},o.prototype.toDER=function(e){var t=this.r.toArray(),r=this.s.toArray();for(128&t[0]&&(t=[0].concat(t)),128&r[0]&&(r=[0].concat(r)),t=c(t),r=c(r);!(r[0]||128&r[1]);)r=r.slice(1);var i=[2];l(i,t.length),(i=i.concat(t)).push(2),l(i,r.length);var a=i.concat(r),o=[48];return l(o,a.length),o=o.concat(a),n.encode(o,e)}},65980:(e,t,r)=>{"use strict";var i=r(33715),n=r(45427),a=r(80953),o=a.assert,s=a.parseBytes,u=r(79087),c=r(23622);function l(e){if(o("ed25519"===e,"only tested with ed25519 so far"),!(this instanceof l))return new l(e);e=n[e].curve,this.curve=e,this.g=e.g,this.g.precompute(e.n.bitLength()+1),this.pointClass=e.point().constructor,this.encodingLength=Math.ceil(e.n.bitLength()/8),this.hash=i.sha512}e.exports=l,l.prototype.sign=function(e,t){e=s(e);var r=this.keyFromSecret(t),i=this.hashInt(r.messagePrefix(),e),n=this.g.mul(i),a=this.encodePoint(n),o=this.hashInt(a,r.pubBytes(),e).mul(r.priv()),u=i.add(o).umod(this.curve.n);return this.makeSignature({R:n,S:u,Rencoded:a})},l.prototype.verify=function(e,t,r){e=s(e),t=this.makeSignature(t);var i=this.keyFromPublic(r),n=this.hashInt(t.Rencoded(),i.pubBytes(),e),a=this.g.mul(t.S());return t.R().add(i.pub().mul(n)).eq(a)},l.prototype.hashInt=function(){for(var e=this.hash(),t=0;t{"use strict";var i=r(80953),n=i.assert,a=i.parseBytes,o=i.cachedProperty;function s(e,t){this.eddsa=e,this._secret=a(t.secret),e.isPoint(t.pub)?this._pub=t.pub:this._pubBytes=a(t.pub)}s.fromPublic=function(e,t){return t instanceof s?t:new s(e,{pub:t})},s.fromSecret=function(e,t){return t instanceof s?t:new s(e,{secret:t})},s.prototype.secret=function(){return this._secret},o(s,"pubBytes",(function(){return this.eddsa.encodePoint(this.pub())})),o(s,"pub",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),o(s,"privBytes",(function(){var e=this.eddsa,t=this.hash(),r=e.encodingLength-1,i=t.slice(0,e.encodingLength);return i[0]&=248,i[r]&=127,i[r]|=64,i})),o(s,"priv",(function(){return this.eddsa.decodeInt(this.privBytes())})),o(s,"hash",(function(){return this.eddsa.hash().update(this.secret()).digest()})),o(s,"messagePrefix",(function(){return this.hash().slice(this.eddsa.encodingLength)})),s.prototype.sign=function(e){return n(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)},s.prototype.verify=function(e,t){return this.eddsa.verify(e,t,this)},s.prototype.getSecret=function(e){return n(this._secret,"KeyPair is public only"),i.encode(this.secret(),e)},s.prototype.getPublic=function(e){return i.encode(this.pubBytes(),e)},e.exports=s},23622:(e,t,r)=>{"use strict";var i=r(73785),n=r(80953),a=n.assert,o=n.cachedProperty,s=n.parseBytes;function u(e,t){this.eddsa=e,"object"!=typeof t&&(t=s(t)),Array.isArray(t)&&(t={R:t.slice(0,e.encodingLength),S:t.slice(e.encodingLength)}),a(t.R&&t.S,"Signature without R or S"),e.isPoint(t.R)&&(this._R=t.R),t.S instanceof i&&(this._S=t.S),this._Rencoded=Array.isArray(t.R)?t.R:t.Rencoded,this._Sencoded=Array.isArray(t.S)?t.S:t.Sencoded}o(u,"S",(function(){return this.eddsa.decodeInt(this.Sencoded())})),o(u,"R",(function(){return this.eddsa.decodePoint(this.Rencoded())})),o(u,"Rencoded",(function(){return this.eddsa.encodePoint(this.R())})),o(u,"Sencoded",(function(){return this.eddsa.encodeInt(this.S())})),u.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},u.prototype.toHex=function(){return n.encode(this.toBytes(),"hex").toUpperCase()},e.exports=u},91037:e=>{e.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}},80953:(e,t,r)=>{"use strict";var i=t,n=r(73785),a=r(79746),o=r(34504);i.assert=a,i.toArray=o.toArray,i.zero2=o.zero2,i.toHex=o.toHex,i.encode=o.encode,i.getNAF=function(e,t,r){var i=new Array(Math.max(e.bitLength(),r)+1);i.fill(0);for(var n=1<(n>>1)-1?(n>>1)-u:u,a.isubn(s)):s=0,i[o]=s,a.iushrn(1)}return i},i.getJSF=function(e,t){var r=[[],[]];e=e.clone(),t=t.clone();for(var i,n=0,a=0;e.cmpn(-n)>0||t.cmpn(-a)>0;){var o,s,u=e.andln(3)+n&3,c=t.andln(3)+a&3;3===u&&(u=-1),3===c&&(c=-1),o=0==(1&u)?0:3!=(i=e.andln(7)+n&7)&&5!==i||2!==c?u:-u,r[0].push(o),s=0==(1&c)?0:3!=(i=t.andln(7)+a&7)&&5!==i||2!==u?c:-c,r[1].push(s),2*n===o+1&&(n=1-n),2*a===s+1&&(a=1-a),e.iushrn(1),t.iushrn(1)}return r},i.cachedProperty=function(e,t,r){var i="_"+t;e.prototype[t]=function(){return void 0!==this[i]?this[i]:this[i]=r.call(this)}},i.parseBytes=function(e){return"string"==typeof e?i.toArray(e,"hex"):e},i.intFromLE=function(e){return new n(e,"hex","le")}},73785:function(e,t,r){!function(e,t){"use strict";function i(e,t){if(!e)throw new Error(t||"Assertion failed")}function n(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}function a(e,t,r){if(a.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(r=t,t=10),this._init(e||0,t||10,r||"be"))}var o;"object"==typeof e?e.exports=a:t.BN=a,a.BN=a,a.wordSize=26;try{o="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(85568).Buffer}catch(e){}function s(e,t){var r=e.charCodeAt(t);return r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function u(e,t,r){var i=s(e,r);return r-1>=t&&(i|=s(e,r-1)<<4),i}function c(e,t,r,i){for(var n=0,a=Math.min(e.length,r),o=t;o=49?s-49+10:s>=17?s-17+10:s}return n}a.isBN=function(e){return e instanceof a||null!==e&&"object"==typeof e&&e.constructor.wordSize===a.wordSize&&Array.isArray(e.words)},a.max=function(e,t){return e.cmp(t)>0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)o=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)n=u(e,t,i)<=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;this.strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,o=a%i,s=Math.min(a,a-o)+r,u=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],o=n*a,s=67108863&o,u=o/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&u,p=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=p;d++){var f=c-d|0;l+=(o=(n=0|e.words[f])*(a=0|t.words[d])+h)/67108864|0,h=67108863&o}r.words[c]=0|h,u=0|l}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}a.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,a=0,o=0;o>>24-n&16777215)||o!==this.length-1?l[6-u.length]+u+r:u+r,(n+=2)>=26&&(n-=26,o--)}for(0!==a&&(r=a.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var c=h[e],d=p[e];r="";var f=this.clone();for(f.negative=0;!f.isZero();){var m=f.modn(d).toString(e);r=(f=f.idivn(d)).isZero()?m+r:l[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(e,t){return i(void 0!==o),this.toArrayLike(o,e,t)},a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},a.prototype.toArrayLike=function(e,t,r){var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0"),this.strip();var o,s,u="le"===t,c=new e(a),l=this.clone();if(u){for(s=0;!l.isZero();s++)o=l.andln(255),l.iushrn(8),c[s]=o;for(;s=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==a&&o>26,this.words[o]=67108863&t;if(0===a&&o>>13,d=0|o[1],f=8191&d,m=d>>>13,g=0|o[2],v=8191&g,y=g>>>13,_=0|o[3],b=8191&_,w=_>>>13,E=0|o[4],k=8191&E,S=E>>>13,x=0|o[5],j=8191&x,N=x>>>13,M=0|o[6],I=8191&M,A=M>>>13,T=0|o[7],R=8191&T,P=T>>>13,O=0|o[8],B=8191&O,C=O>>>13,z=0|o[9],F=8191&z,D=z>>>13,q=0|s[0],L=8191&q,U=q>>>13,H=0|s[1],K=8191&H,W=H>>>13,Z=0|s[2],J=8191&Z,V=Z>>>13,$=0|s[3],G=8191&$,Q=$>>>13,X=0|s[4],Y=8191&X,ee=X>>>13,te=0|s[5],re=8191&te,ie=te>>>13,ne=0|s[6],ae=8191&ne,oe=ne>>>13,se=0|s[7],ue=8191&se,ce=se>>>13,le=0|s[8],he=8191&le,pe=le>>>13,de=0|s[9],fe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ge=(c+(i=Math.imul(h,L))|0)+((8191&(n=(n=Math.imul(h,U))+Math.imul(p,L)|0))<<13)|0;c=((a=Math.imul(p,U))+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(f,L),n=(n=Math.imul(f,U))+Math.imul(m,L)|0,a=Math.imul(m,U);var ve=(c+(i=i+Math.imul(h,K)|0)|0)+((8191&(n=(n=n+Math.imul(h,W)|0)+Math.imul(p,K)|0))<<13)|0;c=((a=a+Math.imul(p,W)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(v,L),n=(n=Math.imul(v,U))+Math.imul(y,L)|0,a=Math.imul(y,U),i=i+Math.imul(f,K)|0,n=(n=n+Math.imul(f,W)|0)+Math.imul(m,K)|0,a=a+Math.imul(m,W)|0;var ye=(c+(i=i+Math.imul(h,J)|0)|0)+((8191&(n=(n=n+Math.imul(h,V)|0)+Math.imul(p,J)|0))<<13)|0;c=((a=a+Math.imul(p,V)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(b,L),n=(n=Math.imul(b,U))+Math.imul(w,L)|0,a=Math.imul(w,U),i=i+Math.imul(v,K)|0,n=(n=n+Math.imul(v,W)|0)+Math.imul(y,K)|0,a=a+Math.imul(y,W)|0,i=i+Math.imul(f,J)|0,n=(n=n+Math.imul(f,V)|0)+Math.imul(m,J)|0,a=a+Math.imul(m,V)|0;var _e=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(n=(n=n+Math.imul(h,Q)|0)+Math.imul(p,G)|0))<<13)|0;c=((a=a+Math.imul(p,Q)|0)+(n>>>13)|0)+(_e>>>26)|0,_e&=67108863,i=Math.imul(k,L),n=(n=Math.imul(k,U))+Math.imul(S,L)|0,a=Math.imul(S,U),i=i+Math.imul(b,K)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(w,K)|0,a=a+Math.imul(w,W)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,V)|0)+Math.imul(y,J)|0,a=a+Math.imul(y,V)|0,i=i+Math.imul(f,G)|0,n=(n=n+Math.imul(f,Q)|0)+Math.imul(m,G)|0,a=a+Math.imul(m,Q)|0;var be=(c+(i=i+Math.imul(h,Y)|0)|0)+((8191&(n=(n=n+Math.imul(h,ee)|0)+Math.imul(p,Y)|0))<<13)|0;c=((a=a+Math.imul(p,ee)|0)+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(j,L),n=(n=Math.imul(j,U))+Math.imul(N,L)|0,a=Math.imul(N,U),i=i+Math.imul(k,K)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(S,K)|0,a=a+Math.imul(S,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,V)|0)+Math.imul(w,J)|0,a=a+Math.imul(w,V)|0,i=i+Math.imul(v,G)|0,n=(n=n+Math.imul(v,Q)|0)+Math.imul(y,G)|0,a=a+Math.imul(y,Q)|0,i=i+Math.imul(f,Y)|0,n=(n=n+Math.imul(f,ee)|0)+Math.imul(m,Y)|0,a=a+Math.imul(m,ee)|0;var we=(c+(i=i+Math.imul(h,re)|0)|0)+((8191&(n=(n=n+Math.imul(h,ie)|0)+Math.imul(p,re)|0))<<13)|0;c=((a=a+Math.imul(p,ie)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(I,L),n=(n=Math.imul(I,U))+Math.imul(A,L)|0,a=Math.imul(A,U),i=i+Math.imul(j,K)|0,n=(n=n+Math.imul(j,W)|0)+Math.imul(N,K)|0,a=a+Math.imul(N,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,V)|0)+Math.imul(S,J)|0,a=a+Math.imul(S,V)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,Q)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,Q)|0,i=i+Math.imul(v,Y)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(y,Y)|0,a=a+Math.imul(y,ee)|0,i=i+Math.imul(f,re)|0,n=(n=n+Math.imul(f,ie)|0)+Math.imul(m,re)|0,a=a+Math.imul(m,ie)|0;var Ee=(c+(i=i+Math.imul(h,ae)|0)|0)+((8191&(n=(n=n+Math.imul(h,oe)|0)+Math.imul(p,ae)|0))<<13)|0;c=((a=a+Math.imul(p,oe)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(R,L),n=(n=Math.imul(R,U))+Math.imul(P,L)|0,a=Math.imul(P,U),i=i+Math.imul(I,K)|0,n=(n=n+Math.imul(I,W)|0)+Math.imul(A,K)|0,a=a+Math.imul(A,W)|0,i=i+Math.imul(j,J)|0,n=(n=n+Math.imul(j,V)|0)+Math.imul(N,J)|0,a=a+Math.imul(N,V)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,Q)|0)+Math.imul(S,G)|0,a=a+Math.imul(S,Q)|0,i=i+Math.imul(b,Y)|0,n=(n=n+Math.imul(b,ee)|0)+Math.imul(w,Y)|0,a=a+Math.imul(w,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(y,re)|0,a=a+Math.imul(y,ie)|0,i=i+Math.imul(f,ae)|0,n=(n=n+Math.imul(f,oe)|0)+Math.imul(m,ae)|0,a=a+Math.imul(m,oe)|0;var ke=(c+(i=i+Math.imul(h,ue)|0)|0)+((8191&(n=(n=n+Math.imul(h,ce)|0)+Math.imul(p,ue)|0))<<13)|0;c=((a=a+Math.imul(p,ce)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(B,L),n=(n=Math.imul(B,U))+Math.imul(C,L)|0,a=Math.imul(C,U),i=i+Math.imul(R,K)|0,n=(n=n+Math.imul(R,W)|0)+Math.imul(P,K)|0,a=a+Math.imul(P,W)|0,i=i+Math.imul(I,J)|0,n=(n=n+Math.imul(I,V)|0)+Math.imul(A,J)|0,a=a+Math.imul(A,V)|0,i=i+Math.imul(j,G)|0,n=(n=n+Math.imul(j,Q)|0)+Math.imul(N,G)|0,a=a+Math.imul(N,Q)|0,i=i+Math.imul(k,Y)|0,n=(n=n+Math.imul(k,ee)|0)+Math.imul(S,Y)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(b,re)|0,n=(n=n+Math.imul(b,ie)|0)+Math.imul(w,re)|0,a=a+Math.imul(w,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,oe)|0)+Math.imul(y,ae)|0,a=a+Math.imul(y,oe)|0,i=i+Math.imul(f,ue)|0,n=(n=n+Math.imul(f,ce)|0)+Math.imul(m,ue)|0,a=a+Math.imul(m,ce)|0;var Se=(c+(i=i+Math.imul(h,he)|0)|0)+((8191&(n=(n=n+Math.imul(h,pe)|0)+Math.imul(p,he)|0))<<13)|0;c=((a=a+Math.imul(p,pe)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(F,L),n=(n=Math.imul(F,U))+Math.imul(D,L)|0,a=Math.imul(D,U),i=i+Math.imul(B,K)|0,n=(n=n+Math.imul(B,W)|0)+Math.imul(C,K)|0,a=a+Math.imul(C,W)|0,i=i+Math.imul(R,J)|0,n=(n=n+Math.imul(R,V)|0)+Math.imul(P,J)|0,a=a+Math.imul(P,V)|0,i=i+Math.imul(I,G)|0,n=(n=n+Math.imul(I,Q)|0)+Math.imul(A,G)|0,a=a+Math.imul(A,Q)|0,i=i+Math.imul(j,Y)|0,n=(n=n+Math.imul(j,ee)|0)+Math.imul(N,Y)|0,a=a+Math.imul(N,ee)|0,i=i+Math.imul(k,re)|0,n=(n=n+Math.imul(k,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(b,ae)|0,n=(n=n+Math.imul(b,oe)|0)+Math.imul(w,ae)|0,a=a+Math.imul(w,oe)|0,i=i+Math.imul(v,ue)|0,n=(n=n+Math.imul(v,ce)|0)+Math.imul(y,ue)|0,a=a+Math.imul(y,ce)|0,i=i+Math.imul(f,he)|0,n=(n=n+Math.imul(f,pe)|0)+Math.imul(m,he)|0,a=a+Math.imul(m,pe)|0;var xe=(c+(i=i+Math.imul(h,fe)|0)|0)+((8191&(n=(n=n+Math.imul(h,me)|0)+Math.imul(p,fe)|0))<<13)|0;c=((a=a+Math.imul(p,me)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(F,K),n=(n=Math.imul(F,W))+Math.imul(D,K)|0,a=Math.imul(D,W),i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,V)|0)+Math.imul(C,J)|0,a=a+Math.imul(C,V)|0,i=i+Math.imul(R,G)|0,n=(n=n+Math.imul(R,Q)|0)+Math.imul(P,G)|0,a=a+Math.imul(P,Q)|0,i=i+Math.imul(I,Y)|0,n=(n=n+Math.imul(I,ee)|0)+Math.imul(A,Y)|0,a=a+Math.imul(A,ee)|0,i=i+Math.imul(j,re)|0,n=(n=n+Math.imul(j,ie)|0)+Math.imul(N,re)|0,a=a+Math.imul(N,ie)|0,i=i+Math.imul(k,ae)|0,n=(n=n+Math.imul(k,oe)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,oe)|0,i=i+Math.imul(b,ue)|0,n=(n=n+Math.imul(b,ce)|0)+Math.imul(w,ue)|0,a=a+Math.imul(w,ce)|0,i=i+Math.imul(v,he)|0,n=(n=n+Math.imul(v,pe)|0)+Math.imul(y,he)|0,a=a+Math.imul(y,pe)|0;var je=(c+(i=i+Math.imul(f,fe)|0)|0)+((8191&(n=(n=n+Math.imul(f,me)|0)+Math.imul(m,fe)|0))<<13)|0;c=((a=a+Math.imul(m,me)|0)+(n>>>13)|0)+(je>>>26)|0,je&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,V))+Math.imul(D,J)|0,a=Math.imul(D,V),i=i+Math.imul(B,G)|0,n=(n=n+Math.imul(B,Q)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,Q)|0,i=i+Math.imul(R,Y)|0,n=(n=n+Math.imul(R,ee)|0)+Math.imul(P,Y)|0,a=a+Math.imul(P,ee)|0,i=i+Math.imul(I,re)|0,n=(n=n+Math.imul(I,ie)|0)+Math.imul(A,re)|0,a=a+Math.imul(A,ie)|0,i=i+Math.imul(j,ae)|0,n=(n=n+Math.imul(j,oe)|0)+Math.imul(N,ae)|0,a=a+Math.imul(N,oe)|0,i=i+Math.imul(k,ue)|0,n=(n=n+Math.imul(k,ce)|0)+Math.imul(S,ue)|0,a=a+Math.imul(S,ce)|0,i=i+Math.imul(b,he)|0,n=(n=n+Math.imul(b,pe)|0)+Math.imul(w,he)|0,a=a+Math.imul(w,pe)|0;var Ne=(c+(i=i+Math.imul(v,fe)|0)|0)+((8191&(n=(n=n+Math.imul(v,me)|0)+Math.imul(y,fe)|0))<<13)|0;c=((a=a+Math.imul(y,me)|0)+(n>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,i=Math.imul(F,G),n=(n=Math.imul(F,Q))+Math.imul(D,G)|0,a=Math.imul(D,Q),i=i+Math.imul(B,Y)|0,n=(n=n+Math.imul(B,ee)|0)+Math.imul(C,Y)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(R,re)|0,n=(n=n+Math.imul(R,ie)|0)+Math.imul(P,re)|0,a=a+Math.imul(P,ie)|0,i=i+Math.imul(I,ae)|0,n=(n=n+Math.imul(I,oe)|0)+Math.imul(A,ae)|0,a=a+Math.imul(A,oe)|0,i=i+Math.imul(j,ue)|0,n=(n=n+Math.imul(j,ce)|0)+Math.imul(N,ue)|0,a=a+Math.imul(N,ce)|0,i=i+Math.imul(k,he)|0,n=(n=n+Math.imul(k,pe)|0)+Math.imul(S,he)|0,a=a+Math.imul(S,pe)|0;var Me=(c+(i=i+Math.imul(b,fe)|0)|0)+((8191&(n=(n=n+Math.imul(b,me)|0)+Math.imul(w,fe)|0))<<13)|0;c=((a=a+Math.imul(w,me)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(F,Y),n=(n=Math.imul(F,ee))+Math.imul(D,Y)|0,a=Math.imul(D,ee),i=i+Math.imul(B,re)|0,n=(n=n+Math.imul(B,ie)|0)+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(R,ae)|0,n=(n=n+Math.imul(R,oe)|0)+Math.imul(P,ae)|0,a=a+Math.imul(P,oe)|0,i=i+Math.imul(I,ue)|0,n=(n=n+Math.imul(I,ce)|0)+Math.imul(A,ue)|0,a=a+Math.imul(A,ce)|0,i=i+Math.imul(j,he)|0,n=(n=n+Math.imul(j,pe)|0)+Math.imul(N,he)|0,a=a+Math.imul(N,pe)|0;var Ie=(c+(i=i+Math.imul(k,fe)|0)|0)+((8191&(n=(n=n+Math.imul(k,me)|0)+Math.imul(S,fe)|0))<<13)|0;c=((a=a+Math.imul(S,me)|0)+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(F,re),n=(n=Math.imul(F,ie))+Math.imul(D,re)|0,a=Math.imul(D,ie),i=i+Math.imul(B,ae)|0,n=(n=n+Math.imul(B,oe)|0)+Math.imul(C,ae)|0,a=a+Math.imul(C,oe)|0,i=i+Math.imul(R,ue)|0,n=(n=n+Math.imul(R,ce)|0)+Math.imul(P,ue)|0,a=a+Math.imul(P,ce)|0,i=i+Math.imul(I,he)|0,n=(n=n+Math.imul(I,pe)|0)+Math.imul(A,he)|0,a=a+Math.imul(A,pe)|0;var Ae=(c+(i=i+Math.imul(j,fe)|0)|0)+((8191&(n=(n=n+Math.imul(j,me)|0)+Math.imul(N,fe)|0))<<13)|0;c=((a=a+Math.imul(N,me)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(F,ae),n=(n=Math.imul(F,oe))+Math.imul(D,ae)|0,a=Math.imul(D,oe),i=i+Math.imul(B,ue)|0,n=(n=n+Math.imul(B,ce)|0)+Math.imul(C,ue)|0,a=a+Math.imul(C,ce)|0,i=i+Math.imul(R,he)|0,n=(n=n+Math.imul(R,pe)|0)+Math.imul(P,he)|0,a=a+Math.imul(P,pe)|0;var Te=(c+(i=i+Math.imul(I,fe)|0)|0)+((8191&(n=(n=n+Math.imul(I,me)|0)+Math.imul(A,fe)|0))<<13)|0;c=((a=a+Math.imul(A,me)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(F,ue),n=(n=Math.imul(F,ce))+Math.imul(D,ue)|0,a=Math.imul(D,ce),i=i+Math.imul(B,he)|0,n=(n=n+Math.imul(B,pe)|0)+Math.imul(C,he)|0,a=a+Math.imul(C,pe)|0;var Re=(c+(i=i+Math.imul(R,fe)|0)|0)+((8191&(n=(n=n+Math.imul(R,me)|0)+Math.imul(P,fe)|0))<<13)|0;c=((a=a+Math.imul(P,me)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(F,he),n=(n=Math.imul(F,pe))+Math.imul(D,he)|0,a=Math.imul(D,pe);var Pe=(c+(i=i+Math.imul(B,fe)|0)|0)+((8191&(n=(n=n+Math.imul(B,me)|0)+Math.imul(C,fe)|0))<<13)|0;c=((a=a+Math.imul(C,me)|0)+(n>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var Oe=(c+(i=Math.imul(F,fe))|0)+((8191&(n=(n=Math.imul(F,me))+Math.imul(D,fe)|0))<<13)|0;return c=((a=Math.imul(D,me))+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ve,u[2]=ye,u[3]=_e,u[4]=be,u[5]=we,u[6]=Ee,u[7]=ke,u[8]=Se,u[9]=xe,u[10]=je,u[11]=Ne,u[12]=Me,u[13]=Ie,u[14]=Ae,u[15]=Te,u[16]=Re,u[17]=Pe,u[18]=Oe,0!==c&&(u[19]=c,r.length++),r};function m(e,t,r){return(new g).mulp(e,t,r)}function g(e,t){this.x=e,this.y=t}Math.imul||(f=d),a.prototype.mulTo=function(e,t){var r,i=this.length+e.length;return r=10===this.length&&10===e.length?f(this,e,t):i<63?d(this,e,t):i<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,i=o,o=n}return 0!==i?r.words[a]=i:r.length--,r.strip()}(this,e,t):m(this,e,t),r},g.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},g.prototype.permute=function(e,t,r,i,n,a){for(var o=0;o>>=1)n++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*t;o>=26,t+=n/67108864|0,t+=a>>>26,this.words[r]=67108863&a}return 0!==t&&(this.words[r]=t,this.length++),this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n}return t}(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,o=Math.min((e-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,c=0;c=0&&(0!==l||c>=n);c--){var h=0|this.words[c];this.words[c]=l<<26-a|h>>>a,l=h&s}return u&&0!==l&&(u.words[u.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===s)return this.strip();for(i(-1===s),s=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,o=0|n.words[n.length-1];0!=(r=26-this._countBits(o))&&(n=n.ushln(r),i.iushln(r),o=0|n.words[n.length-1]);var s,u=i.length-n.length;if("mod"!==t){(s=new a(null)).length=u+1,s.words=new Array(s.length);for(var c=0;c=0;h--){var p=67108864*(0|i.words[n.length+h])+(0|i.words[n.length+h-1]);for(p=Math.min(p/o|0,67108863),i._ishlnsubmul(n,p,h);0!==i.negative;)p--,i.negative=0,i._ishlnsubmul(n,1,h),i.isZero()||(i.negative^=1);s&&(s.words[h]=p)}return s&&s.strip(),i.strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(n=s.div.neg()),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:n,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modn(e.words[0]))}:this._wordDiv(e,t);var n,o,s},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modn=function(e){i(e<=67108863);for(var t=(1<<26)%e,r=0,n=this.length-1;n>=0;n--)r=(t*r+(0|this.words[n]))%e;return r},a.prototype.idivn=function(e){i(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*t;this.words[r]=n/e|0,t=n%e}return this.strip()},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new a(1),o=new a(0),s=new a(0),u=new a(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var l=r.clone(),h=t.clone();!t.isZero();){for(var p=0,d=1;0==(t.words[0]&d)&&p<26;++p,d<<=1);if(p>0)for(t.iushrn(p);p-- >0;)(n.isOdd()||o.isOdd())&&(n.iadd(l),o.isub(h)),n.iushrn(1),o.iushrn(1);for(var f=0,m=1;0==(r.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(r.iushrn(f);f-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(l),u.isub(h)),s.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(s),o.isub(u)):(r.isub(t),s.isub(n),u.isub(o))}return{a:s,b:u,gcd:r.iushln(c)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,o=new a(1),s=new a(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,l=1;0==(t.words[0]&l)&&c<26;++c,l<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);for(var h=0,p=1;0==(r.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s)):(r.isub(t),s.isub(o))}return(n=0===t.cmpn(1)?o:s).cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new k(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var v={k256:null,p224:null,p192:null,p25519:null};function y(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function _(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function E(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(e){if("string"==typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function S(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},y.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},y.prototype.split=function(e,t){e.iushrn(this.n,0,t)},y.prototype.imulK=function(e){return e.imul(this.k)},n(_,y),_.prototype.split=function(e,t){for(var r=4194303,i=Math.min(e.length,9),n=0;n>>22,a=o}a>>>=22,e.words[n-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},_.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(v[e])return v[e];var t;if("k256"===e)t=new _;else if("p224"===e)t=new b;else if("p192"===e)t=new w;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new E}return v[e]=t,t},k.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},k.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),o=0;!n.isZero()&&0===n.andln(1);)o++,n.iushrn(1);i(!n.isZero());var s=new a(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new a(2*l*l).toRed(this);0!==this.pow(l,c).cmp(u);)l.redIAdd(u);for(var h=this.pow(l,n),p=this.pow(e,n.addn(1).iushrn(1)),d=this.pow(e,n),f=o;0!==d.cmp(s);){for(var m=d,g=0;0!==m.cmp(s);g++)m=m.redSqr();i(g=0;i--){for(var c=t.words[i],l=u-1;l>=0;l--){var h=c>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==h||0!==o?(o<<=1,o|=h,(4==++s||0===i&&0===l)&&(n=this.mul(n,r[o]),s=0,o=0)):s=0}u=26}return n},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new S(e)},n(S,k),S.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},S.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},S.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},S.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=r.nmd(e),this)},8091:e=>{"use strict";function t(e,t){if(null==e)throw new TypeError("Cannot convert first argument to object");for(var r=Object(e),i=1;i{"use strict";var t,r="object"==typeof Reflect?Reflect:null,i=r&&"function"==typeof r.apply?r.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};t=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var n=Number.isNaN||function(e){return e!=e};function a(){a.init.call(this)}e.exports=a,e.exports.once=function(e,t){return new Promise((function(r,i){function n(r){e.removeListener(t,a),i(r)}function a(){"function"==typeof e.removeListener&&e.removeListener("error",n),r([].slice.call(arguments))}m(e,t,a,{once:!0}),"error"!==t&&function(e,t,r){"function"==typeof e.on&&m(e,"error",t,{once:!0})}(e,n)}))},a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var o=10;function s(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function u(e){return void 0===e._maxListeners?a.defaultMaxListeners:e._maxListeners}function c(e,t,r,i){var n,a,o,c;if(s(r),void 0===(a=e._events)?(a=e._events=Object.create(null),e._eventsCount=0):(void 0!==a.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),a=e._events),o=a[t]),void 0===o)o=a[t]=r,++e._eventsCount;else if("function"==typeof o?o=a[t]=i?[r,o]:[o,r]:i?o.unshift(r):o.push(r),(n=u(e))>0&&o.length>n&&!o.warned){o.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=o.length,c=l,console&&console.warn&&console.warn(c)}return e}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function h(e,t,r){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},n=l.bind(i);return n.listener=r,i.wrapFn=n,n}function p(e,t,r){var i=e._events;if(void 0===i)return[];var n=i[t];return void 0===n?[]:"function"==typeof n?r?[n.listener||n]:[n]:r?function(e){for(var t=new Array(e.length),r=0;r0&&(o=t[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var u=a[e];if(void 0===u)return!1;if("function"==typeof u)i(u,this,t);else{var c=u.length,l=f(u,c);for(r=0;r=0;a--)if(r[a]===t||r[a].listener===t){o=r[a].listener,n=a;break}if(n<0)return this;0===n?r.shift():function(e,t){for(;t+1=0;i--)this.removeListener(e,t[i]);return this},a.prototype.listeners=function(e){return p(this,e,!0)},a.prototype.rawListeners=function(e){return p(this,e,!1)},a.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):d.call(e,t)},a.prototype.listenerCount=d,a.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},13048:(e,t,r)=>{var i=r(89509).Buffer,n=r(62318);e.exports=function(e,t,r,a){if(i.isBuffer(e)||(e=i.from(e,"binary")),t&&(i.isBuffer(t)||(t=i.from(t,"binary")),8!==t.length))throw new RangeError("salt should be Buffer with 8 byte length");for(var o=r/8,s=i.alloc(o),u=i.alloc(a||0),c=i.alloc(0);o>0||a>0;){var l=new n;l.update(c),l.update(e),t&&l.update(t),c=l.digest();var h=0;if(o>0){var p=s.length-o;h=Math.min(o,c.length),c.copy(s,p,0,h),o-=h}if(h0){var d=u.length-a,f=Math.min(a,c.length-h);c.copy(u,d,h,h+f),a-=f}}return c.fill(0),{key:s,iv:u}}},94470:e=>{"use strict";var t=Object.prototype.hasOwnProperty,r=Object.prototype.toString,i=Object.defineProperty,n=Object.getOwnPropertyDescriptor,a=function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===r.call(e)},o=function(e){if(!e||"[object Object]"!==r.call(e))return!1;var i,n=t.call(e,"constructor"),a=e.constructor&&e.constructor.prototype&&t.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!n&&!a)return!1;for(i in e);return void 0===i||t.call(e,i)},s=function(e,t){i&&"__proto__"===t.name?i(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},u=function(e,r){if("__proto__"===r){if(!t.call(e,r))return;if(n)return n(e,r).value}return e[r]};e.exports=function e(){var t,r,i,n,c,l,h=arguments[0],p=1,d=arguments.length,f=!1;for("boolean"==typeof h&&(f=h,h=arguments[1]||{},p=2),(null==h||"object"!=typeof h&&"function"!=typeof h)&&(h={});p{var i=r(34155),n=r(69282),a=r(89539);function o(e){var t,r,i,o,s,l,h,p,d,f=["([^%]*)","%","(['\\-+ #0]*?)","([1-9]\\d*)?","(\\.([1-9]\\d*))?","[lhjztL]*?","([diouxXfFeEgGaAcCsSp%jr])"].join(""),m=new RegExp(f),g=Array.prototype.slice.call(arguments,1),v="",y=1;for(n.equal("string",typeof e);null!==(d=m.exec(e));)if(v+=d[1],e=e.substring(d[0].length),t=d[2]||"",r=d[3]||0,i=d[4]||"",s=!1,h=!1,l=" ","%"!=(o=d[6])){if(0===g.length)throw new Error("too few args to sprintf");if(p=g.shift(),y++,t.match(/[\' #]/))throw new Error("unsupported flags: "+t);if(i.length>0)throw new Error("non-zero precision not supported");switch(t.match(/-/)&&(s=!0),t.match(/0/)&&(l="0"),t.match(/\+/)&&(h=!0),o){case"s":if(null==p)throw new Error("argument "+y+": attempted to print undefined or null as a string");v+=u(l,r,s,p.toString());break;case"d":p=Math.floor(p);case"f":v+=(h=h&&p>0?"+":"")+u(l,r,s,p.toString());break;case"x":v+=u(l,r,s,p.toString(16));break;case"j":0===r&&(r=10),v+=a.inspect(p,!1,r);break;case"r":v+=c(p);break;default:throw new Error("unsupported conversion: "+o)}}else v+="%";return v+e}function s(e){var t=Array.prototype.slice.call(arguments,1);return e.write(o.apply(this,t))}function u(e,t,r,i){for(var n=i;n.length{"use strict";e.exports=function e(t,r){if(t===r)return!0;if(t&&r&&"object"==typeof t&&"object"==typeof r){if(t.constructor!==r.constructor)return!1;var i,n,a;if(Array.isArray(t)){if((i=t.length)!=r.length)return!1;for(n=i;0!=n--;)if(!e(t[n],r[n]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if((i=(a=Object.keys(t)).length)!==Object.keys(r).length)return!1;for(n=i;0!=n--;)if(!Object.prototype.hasOwnProperty.call(r,a[n]))return!1;for(n=i;0!=n--;){var o=a[n];if(!e(t[o],r[o]))return!1}return!0}return t!=t&&r!=r}},35035:e=>{"use strict";e.exports=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var r,i="boolean"==typeof t.cycles&&t.cycles,n=t.cmp&&(r=t.cmp,function(e){return function(t,i){var n={key:t,value:e[t]},a={key:i,value:e[i]};return r(n,a)}}),a=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var r,o;if(Array.isArray(t)){for(o="[",r=0;r{"use strict";var i=r(95320),n=Object.prototype.toString,a=Object.prototype.hasOwnProperty,o=function(e,t,r){for(var i=0,n=e.length;i=3&&(a=r),"[object Array]"===n.call(e)?o(e,t,a):"string"==typeof e?s(e,t,a):u(e,t,a)}},43281:(e,t,r)=>{e.exports=c,c.SSL=l;var i=r(89539),n=r(8501).Agent,a=r(85456),o=r(18760),s=r(79267).Agent;function u(e,t){return"string"==typeof e?e+":"+t:e.host+":"+e.port+":"+(e.localAddress?e.localAddress+":":":")}function c(e){var t=this;t.options=e||{},t.requests={},t.sockets={},t.freeSockets={},t.maxSockets=t.options.maxSockets||n.defaultMaxSockets,t.minSockets=t.options.minSockets||c.defaultMinSockets,t.on("free",(function(e,r,i){var n=u(r,i);if(t.requests[n]&&t.requests[n].length)t.requests[n].shift().onSocket(e);else if(t.sockets[n].length0&&!e.useChunkedEncodingByDefault){var a=this.freeSockets[i].pop();a.removeListener("error",a._onIdleError),delete a._onIdleError,e._reusedSocket=!0,e.onSocket(a)}else this.addRequestNoreuse(e,t,r)},c.prototype.removeSocket=function(e,t,r,i){var n;this.sockets[t]?-1!==(n=this.sockets[t].indexOf(e))&&this.sockets[t].splice(n,1):this.sockets[t]&&0===this.sockets[t].length&&(delete this.sockets[t],delete this.requests[t]),this.freeSockets[t]&&-1!==(n=this.freeSockets[t].indexOf(e))&&(this.freeSockets[t].splice(n,1),0===this.freeSockets[t].length&&delete this.freeSockets[t]),this.requests[t]&&this.requests[t].length&&this.createSocket(t,r,i).emit("free")},i.inherits(l,c),l.prototype.createConnection=function(e,t,r){return"object"==typeof e?r=e:"object"==typeof t?r=t:"object"==typeof r||(r={}),"number"==typeof e&&(r.port=e),"string"==typeof t&&(r.host=t),o.connect(r)},l.prototype.addRequestNoreuse=s.prototype.addRequest},6230:e=>{e.exports="object"==typeof self?self.FormData:window.FormData},17648:e=>{"use strict";var t="Function.prototype.bind called on incompatible ",r=Array.prototype.slice,i=Object.prototype.toString,n="[object Function]";e.exports=function(e){var a=this;if("function"!=typeof a||i.call(a)!==n)throw new TypeError(t+a);for(var o,s=r.call(arguments,1),u=function(){if(this instanceof o){var t=a.apply(this,s.concat(r.call(arguments)));return Object(t)===t?t:this}return a.apply(e,s.concat(r.call(arguments)))},c=Math.max(0,a.length-s.length),l=[],h=0;h{"use strict";var i=r(17648);e.exports=Function.prototype.bind||i},40210:(e,t,r)=>{"use strict";var i,n=SyntaxError,a=Function,o=TypeError,s=function(e){try{return a('"use strict"; return ('+e+").constructor;")()}catch(e){}},u=Object.getOwnPropertyDescriptor;if(u)try{u({},"")}catch(e){u=null}var c=function(){throw new o},l=u?function(){try{return c}catch(e){try{return u(arguments,"callee").get}catch(e){return c}}}():c,h=r(41405)(),p=Object.getPrototypeOf||function(e){return e.__proto__},d={},f="undefined"==typeof Uint8Array?i:p(Uint8Array),m={"%AggregateError%":"undefined"==typeof AggregateError?i:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?i:ArrayBuffer,"%ArrayIteratorPrototype%":h?p([][Symbol.iterator]()):i,"%AsyncFromSyncIteratorPrototype%":i,"%AsyncFunction%":d,"%AsyncGenerator%":d,"%AsyncGeneratorFunction%":d,"%AsyncIteratorPrototype%":d,"%Atomics%":"undefined"==typeof Atomics?i:Atomics,"%BigInt%":"undefined"==typeof BigInt?i:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?i:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?i:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?i:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?i:FinalizationRegistry,"%Function%":a,"%GeneratorFunction%":d,"%Int8Array%":"undefined"==typeof Int8Array?i:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?i:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?i:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":h?p(p([][Symbol.iterator]())):i,"%JSON%":"object"==typeof JSON?JSON:i,"%Map%":"undefined"==typeof Map?i:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&h?p((new Map)[Symbol.iterator]()):i,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?i:Promise,"%Proxy%":"undefined"==typeof Proxy?i:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?i:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?i:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&h?p((new Set)[Symbol.iterator]()):i,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?i:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":h?p(""[Symbol.iterator]()):i,"%Symbol%":h?Symbol:i,"%SyntaxError%":n,"%ThrowTypeError%":l,"%TypedArray%":f,"%TypeError%":o,"%Uint8Array%":"undefined"==typeof Uint8Array?i:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?i:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?i:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?i:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?i:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?i:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?i:WeakSet},g=function e(t){var r;if("%AsyncFunction%"===t)r=s("async function () {}");else if("%GeneratorFunction%"===t)r=s("function* () {}");else if("%AsyncGeneratorFunction%"===t)r=s("async function* () {}");else if("%AsyncGenerator%"===t){var i=e("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===t){var n=e("%AsyncGenerator%");n&&(r=p(n.prototype))}return m[t]=r,r},v={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},y=r(58612),_=r(17642),b=y.call(Function.call,Array.prototype.concat),w=y.call(Function.apply,Array.prototype.splice),E=y.call(Function.call,String.prototype.replace),k=y.call(Function.call,String.prototype.slice),S=y.call(Function.call,RegExp.prototype.exec),x=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,j=/\\(\\)?/g,N=function(e){var t=k(e,0,1),r=k(e,-1);if("%"===t&&"%"!==r)throw new n("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new n("invalid intrinsic syntax, expected opening `%`");var i=[];return E(e,x,(function(e,t,r,n){i[i.length]=r?E(n,j,"$1"):t||e})),i},M=function(e,t){var r,i=e;if(_(v,i)&&(i="%"+(r=v[i])[0]+"%"),_(m,i)){var a=m[i];if(a===d&&(a=g(i)),void 0===a&&!t)throw new o("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:a}}throw new n("intrinsic "+e+" does not exist!")};e.exports=function(e,t){if("string"!=typeof e||0===e.length)throw new o("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new o('"allowMissing" argument must be a boolean');if(null===S(/^%?[^%]*%?$/g,e))throw new n("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=N(e),i=r.length>0?r[0]:"",a=M("%"+i+"%",t),s=a.name,c=a.value,l=!1,h=a.alias;h&&(i=h[0],w(r,b([0,1],h)));for(var p=1,d=!0;p=r.length){var y=u(c,f);c=(d=!!y)&&"get"in y&&!("originalValue"in y.get)?y.get:c[f]}else d=_(c,f),c=c[f];d&&!l&&(m[s]=c)}}return c}},8023:(e,t,r)=>{"use strict";e.exports={afterRequest:r(83932),beforeRequest:r(36136),browser:r(805),cache:r(51632),content:r(61567),cookie:r(25725),creator:r(47218),entry:r(74560),har:r(75579),header:r(75147),log:r(53013),page:r(34777),pageTimings:r(5538),postData:r(12096),query:r(21251),request:r(99646),response:r(9103),timings:r(22007)}},88300:e=>{function t(e){var t="validation failed";this.name="HARError",this.message=t,this.errors=e,"function"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error(t).stack}t.prototype=Error.prototype,e.exports=t},86056:(e,t,r)=>{var i,n=r(65096),a=r(88300),o=r(8023);function s(e,t){t=t||{};var s=(i=i||function(){var e=new n({allErrors:!0});return e.addMetaSchema(r(96273)),e.addSchema(o),e}()).getSchema(e+".json");return new Promise((function(e,r){s(t)?e(t):r(new a(s.errors))}))}t.afterRequest=function(e){return s("afterRequest",e)},t.beforeRequest=function(e){return s("beforeRequest",e)},t.browser=function(e){return s("browser",e)},t.cache=function(e){return s("cache",e)},t.content=function(e){return s("content",e)},t.cookie=function(e){return s("cookie",e)},t.creator=function(e){return s("creator",e)},t.entry=function(e){return s("entry",e)},t.har=function(e){return s("har",e)},t.header=function(e){return s("header",e)},t.log=function(e){return s("log",e)},t.page=function(e){return s("page",e)},t.pageTimings=function(e){return s("pageTimings",e)},t.postData=function(e){return s("postData",e)},t.query=function(e){return s("query",e)},t.request=function(e){return s("request",e)},t.response=function(e){return s("response",e)},t.timings=function(e){return s("timings",e)}},31044:(e,t,r)=>{"use strict";var i=r(40210)("%Object.defineProperty%",!0),n=function(){if(i)try{return i({},"a",{value:1}),!0}catch(e){return!1}return!1};n.hasArrayLengthDefineBug=function(){if(!n())return null;try{return 1!==i([],"length",{value:1}).length}catch(e){return!0}},e.exports=n},41405:(e,t,r)=>{"use strict";var i="undefined"!=typeof Symbol&&Symbol,n=r(55419);e.exports=function(){return"function"==typeof i&&"function"==typeof Symbol&&"symbol"==typeof i("foo")&&"symbol"==typeof Symbol("bar")&&n()}},55419:e=>{"use strict";e.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var i=Object.getOwnPropertySymbols(e);if(1!==i.length||i[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var n=Object.getOwnPropertyDescriptor(e,t);if(42!==n.value||!0!==n.enumerable)return!1}return!0}},96410:(e,t,r)=>{"use strict";var i=r(55419);e.exports=function(){return i()&&!!Symbol.toStringTag}},17642:(e,t,r)=>{"use strict";var i=r(58612);e.exports=i.call(Function.call,Object.prototype.hasOwnProperty)},3349:(e,t,r)=>{"use strict";var i=r(50213).Buffer,n=r(88473).Transform;function a(e){n.call(this),this._block=i.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}r(35717)(a,n),a.prototype._transform=function(e,t,r){var i=null;try{this.update(e,t)}catch(e){i=e}r(i)},a.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},a.prototype.update=function(e,t){if(function(e,t){if(!i.isBuffer(e)&&"string"!=typeof e)throw new TypeError("Data must be a string or a buffer")}(e),this._finalized)throw new Error("Digest already called");i.isBuffer(e)||(e=i.from(e,t));for(var r=this._block,n=0;this._blockOffset+e.length-n>=this._blockSize;){for(var a=this._blockOffset;a0;++o)this._length[o]+=s,(s=this._length[o]/4294967296|0)>0&&(this._length[o]-=4294967296*s);return this},a.prototype._update=function(){throw new Error("_update is not implemented")},a.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},a.prototype._digest=function(){throw new Error("_digest is not implemented")},e.exports=a},50213:(e,t,r)=>{var i=r(48764),n=i.Buffer;function a(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=i:(a(i,t),t.Buffer=o),o.prototype=Object.create(n.prototype),a(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i.SlowBuffer(e)}},33715:(e,t,r)=>{var i=t;i.utils=r(26436),i.common=r(95772),i.sha=r(89041),i.ripemd=r(12949),i.hmac=r(52344),i.sha1=i.sha.sha1,i.sha256=i.sha.sha256,i.sha224=i.sha.sha224,i.sha384=i.sha.sha384,i.sha512=i.sha.sha512,i.ripemd160=i.ripemd.ripemd160},95772:(e,t,r)=>{"use strict";var i=r(26436),n=r(79746);function a(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}t.BlockHash=a,a.prototype.update=function(e,t){if(e=i.toArray(e,t),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var r=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-r,e.length),0===this.pending.length&&(this.pending=null),e=i.join32(e,0,e.length-r,this.endian);for(var n=0;n>>24&255,i[n++]=e>>>16&255,i[n++]=e>>>8&255,i[n++]=255&e}else for(i[n++]=255&e,i[n++]=e>>>8&255,i[n++]=e>>>16&255,i[n++]=e>>>24&255,i[n++]=0,i[n++]=0,i[n++]=0,i[n++]=0,a=8;a{"use strict";var i=r(26436),n=r(79746);function a(e,t,r){if(!(this instanceof a))return new a(e,t,r);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(i.toArray(t,r))}e.exports=a,a.prototype._init=function(e){e.length>this.blockSize&&(e=(new this.Hash).update(e).digest()),n(e.length<=this.blockSize);for(var t=e.length;t{"use strict";var i=r(26436),n=r(95772),a=i.rotl32,o=i.sum32,s=i.sum32_3,u=i.sum32_4,c=n.BlockHash;function l(){if(!(this instanceof l))return new l;c.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function h(e,t,r,i){return e<=15?t^r^i:e<=31?t&r|~t&i:e<=47?(t|~r)^i:e<=63?t&i|r&~i:t^(r|~i)}function p(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function d(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}i.inherits(l,c),t.ripemd160=l,l.blockSize=512,l.outSize=160,l.hmacStrength=192,l.padLength=64,l.prototype._update=function(e,t){for(var r=this.h[0],i=this.h[1],n=this.h[2],c=this.h[3],l=this.h[4],y=r,_=i,b=n,w=c,E=l,k=0;k<80;k++){var S=o(a(u(r,h(k,i,n,c),e[f[k]+t],p(k)),g[k]),l);r=l,l=c,c=a(n,10),n=i,i=S,S=o(a(u(y,h(79-k,_,b,w),e[m[k]+t],d(k)),v[k]),E),y=E,E=w,w=a(b,10),b=_,_=S}S=s(this.h[1],n,w),this.h[1]=s(this.h[2],c,E),this.h[2]=s(this.h[3],l,y),this.h[3]=s(this.h[4],r,_),this.h[4]=s(this.h[0],i,b),this.h[0]=S},l.prototype._digest=function(e){return"hex"===e?i.toHex32(this.h,"little"):i.split32(this.h,"little")};var f=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],m=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],g=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],v=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},89041:(e,t,r)=>{"use strict";t.sha1=r(84761),t.sha224=r(10799),t.sha256=r(89344),t.sha384=r(80772),t.sha512=r(45900)},84761:(e,t,r)=>{"use strict";var i=r(26436),n=r(95772),a=r(37038),o=i.rotl32,s=i.sum32,u=i.sum32_5,c=a.ft_1,l=n.BlockHash,h=[1518500249,1859775393,2400959708,3395469782];function p(){if(!(this instanceof p))return new p;l.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}i.inherits(p,l),e.exports=p,p.blockSize=512,p.outSize=160,p.hmacStrength=80,p.padLength=64,p.prototype._update=function(e,t){for(var r=this.W,i=0;i<16;i++)r[i]=e[t+i];for(;i{"use strict";var i=r(26436),n=r(89344);function a(){if(!(this instanceof a))return new a;n.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}i.inherits(a,n),e.exports=a,a.blockSize=512,a.outSize=224,a.hmacStrength=192,a.padLength=64,a.prototype._digest=function(e){return"hex"===e?i.toHex32(this.h.slice(0,7),"big"):i.split32(this.h.slice(0,7),"big")}},89344:(e,t,r)=>{"use strict";var i=r(26436),n=r(95772),a=r(37038),o=r(79746),s=i.sum32,u=i.sum32_4,c=i.sum32_5,l=a.ch32,h=a.maj32,p=a.s0_256,d=a.s1_256,f=a.g0_256,m=a.g1_256,g=n.BlockHash,v=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function y(){if(!(this instanceof y))return new y;g.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=v,this.W=new Array(64)}i.inherits(y,g),e.exports=y,y.blockSize=512,y.outSize=256,y.hmacStrength=192,y.padLength=64,y.prototype._update=function(e,t){for(var r=this.W,i=0;i<16;i++)r[i]=e[t+i];for(;i{"use strict";var i=r(26436),n=r(45900);function a(){if(!(this instanceof a))return new a;n.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}i.inherits(a,n),e.exports=a,a.blockSize=1024,a.outSize=384,a.hmacStrength=192,a.padLength=128,a.prototype._digest=function(e){return"hex"===e?i.toHex32(this.h.slice(0,12),"big"):i.split32(this.h.slice(0,12),"big")}},45900:(e,t,r)=>{"use strict";var i=r(26436),n=r(95772),a=r(79746),o=i.rotr64_hi,s=i.rotr64_lo,u=i.shr64_hi,c=i.shr64_lo,l=i.sum64,h=i.sum64_hi,p=i.sum64_lo,d=i.sum64_4_hi,f=i.sum64_4_lo,m=i.sum64_5_hi,g=i.sum64_5_lo,v=n.BlockHash,y=[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];function _(){if(!(this instanceof _))return new _;v.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=y,this.W=new Array(160)}function b(e,t,r,i,n){var a=e&r^~e&n;return a<0&&(a+=4294967296),a}function w(e,t,r,i,n,a){var o=t&i^~t&a;return o<0&&(o+=4294967296),o}function E(e,t,r,i,n){var a=e&r^e&n^r&n;return a<0&&(a+=4294967296),a}function k(e,t,r,i,n,a){var o=t&i^t&a^i&a;return o<0&&(o+=4294967296),o}function S(e,t){var r=o(e,t,28)^o(t,e,2)^o(t,e,7);return r<0&&(r+=4294967296),r}function x(e,t){var r=s(e,t,28)^s(t,e,2)^s(t,e,7);return r<0&&(r+=4294967296),r}function j(e,t){var r=s(e,t,14)^s(e,t,18)^s(t,e,9);return r<0&&(r+=4294967296),r}function N(e,t){var r=o(e,t,1)^o(e,t,8)^u(e,t,7);return r<0&&(r+=4294967296),r}function M(e,t){var r=s(e,t,1)^s(e,t,8)^c(e,t,7);return r<0&&(r+=4294967296),r}function I(e,t){var r=s(e,t,19)^s(t,e,29)^c(e,t,6);return r<0&&(r+=4294967296),r}i.inherits(_,v),e.exports=_,_.blockSize=1024,_.outSize=512,_.hmacStrength=192,_.padLength=128,_.prototype._prepareBlock=function(e,t){for(var r=this.W,i=0;i<32;i++)r[i]=e[t+i];for(;i{"use strict";var i=r(26436).rotr32;function n(e,t,r){return e&t^~e&r}function a(e,t,r){return e&t^e&r^t&r}function o(e,t,r){return e^t^r}t.ft_1=function(e,t,r,i){return 0===e?n(t,r,i):1===e||3===e?o(t,r,i):2===e?a(t,r,i):void 0},t.ch32=n,t.maj32=a,t.p32=o,t.s0_256=function(e){return i(e,2)^i(e,13)^i(e,22)},t.s1_256=function(e){return i(e,6)^i(e,11)^i(e,25)},t.g0_256=function(e){return i(e,7)^i(e,18)^e>>>3},t.g1_256=function(e){return i(e,17)^i(e,19)^e>>>10}},26436:(e,t,r)=>{"use strict";var i=r(79746),n=r(35717);function a(e,t){return 55296==(64512&e.charCodeAt(t))&&!(t<0||t+1>=e.length)&&56320==(64512&e.charCodeAt(t+1))}function o(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function s(e){return 1===e.length?"0"+e:e}function u(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}t.inherits=n,t.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if("string"==typeof e)if(t){if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),n=0;n>6|192,r[i++]=63&o|128):a(e,n)?(o=65536+((1023&o)<<10)+(1023&e.charCodeAt(++n)),r[i++]=o>>18|240,r[i++]=o>>12&63|128,r[i++]=o>>6&63|128,r[i++]=63&o|128):(r[i++]=o>>12|224,r[i++]=o>>6&63|128,r[i++]=63&o|128)}else for(n=0;n>>0}return o},t.split32=function(e,t){for(var r=new Array(4*e.length),i=0,n=0;i>>24,r[n+1]=a>>>16&255,r[n+2]=a>>>8&255,r[n+3]=255&a):(r[n+3]=a>>>24,r[n+2]=a>>>16&255,r[n+1]=a>>>8&255,r[n]=255&a)}return r},t.rotr32=function(e,t){return e>>>t|e<<32-t},t.rotl32=function(e,t){return e<>>32-t},t.sum32=function(e,t){return e+t>>>0},t.sum32_3=function(e,t,r){return e+t+r>>>0},t.sum32_4=function(e,t,r,i){return e+t+r+i>>>0},t.sum32_5=function(e,t,r,i,n){return e+t+r+i+n>>>0},t.sum64=function(e,t,r,i){var n=e[t],a=i+e[t+1]>>>0,o=(a>>0,e[t+1]=a},t.sum64_hi=function(e,t,r,i){return(t+i>>>0>>0},t.sum64_lo=function(e,t,r,i){return t+i>>>0},t.sum64_4_hi=function(e,t,r,i,n,a,o,s){var u=0,c=t;return u+=(c=c+i>>>0)>>0)>>0)>>0},t.sum64_4_lo=function(e,t,r,i,n,a,o,s){return t+i+a+s>>>0},t.sum64_5_hi=function(e,t,r,i,n,a,o,s,u,c){var l=0,h=t;return l+=(h=h+i>>>0)>>0)>>0)>>0)>>0},t.sum64_5_lo=function(e,t,r,i,n,a,o,s,u,c){return t+i+a+s+c>>>0},t.rotr64_hi=function(e,t,r){return(t<<32-r|e>>>r)>>>0},t.rotr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0},t.shr64_hi=function(e,t,r){return e>>>r},t.shr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0}},2156:(e,t,r)=>{"use strict";var i=r(33715),n=r(34504),a=r(79746);function o(e){if(!(this instanceof o))return new o(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=n.toArray(e.entropy,e.entropyEnc||"hex"),r=n.toArray(e.nonce,e.nonceEnc||"hex"),i=n.toArray(e.pers,e.persEnc||"hex");a(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,i)}e.exports=o,o.prototype._init=function(e,t,r){var i=e.concat(t).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(r||[])),this._reseed=1},o.prototype.generate=function(e,t,r,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof t&&(i=r,r=t,t=null),r&&(r=n.toArray(r,i||"hex"),this._update(r));for(var a=[];a.length{"use strict";var i=r(4716),n=r(26470),a=r(21382),o=i.wrapSuccess,s=i.wrapFail;t.getFsInstance=a.getInstance,t.appendFile=function(e,t,r){a.writeFile(e,t,r,!0)},t.writeFile=function(e,t,r){a.writeFile(e,t,r,!1)},t.readFile=function(e,t,r){"function"==typeof t&&(r=t,t={encoding:"utf8"});var i=o(r),n=s(r);a.getFile(e,(function(e,r){r.file((function(e){var r=new FileReader;r.onloadend=function(e){i(e.target.result)},r.onerror=function(e){n(e)},"utf8"===t.encoding?r.readAsText(e):r.readAsDataURL(e)}),n)}))},t.unlink=function(e,t){var r=o(t),i=s(t);a.getFile(e,(function(e,t){e?i(e):t.remove(r,i)}))},t.readdir=function(e,t){var r=o(t),i=s(t);a.getDirectory(e,(function(e,t){e?i(e):t.createReader().readEntries(r,i)}))},t.mkdir=function(e,t){var r=n.basename(e),o=n.dirname(e),s=i.wrapSuccess(t),u=i.wrapFail(t),c={create:!0,exclusive:!0};"."===o?a.getDirectory(r,c,t):a.getDirectory(o,(function(e,i){e?t(e,null):i.getDirectory(r,c,s,u)}))},t.rmdir=function(e,t){var r=o(t),i=s(t);this.readdir(e,(function(t,n){t?i(t):n&&n.length>0?i("ENOTEMPTY: Directory must be empty"):a.getDirectory(e,(function(e,t){e?i(e):t.remove(r,i)}))}))},t.exists=function(e,t){var r=s(t);a.getFile(e,{create:!1},(function(e){e&&(window.FileError&&1===e.code||"NotFoundError"===e.name)?t(!1):e?r(e):t(!0)}))},t.stat=function(e,t){var r=o(t),n=s(t),u=a.getFile;i.isDirectory(e)&&(u=a.getDirectory),u(e,(function(e,t){e?n(e):t.getMetadata(r,n)}))},t.init=function(e,t){a.init(e,(function(e){e?t(e,null):a.getInstance((function(e){t(e,null)}))}))}},21382:(e,t,r)=>{"use strict";var i=r(4716),n=r(26470),a=null;t.getInstance=function(e){a?e(null,a):o(null,e)};var o=t.init=function(e,t){!function(e,t){function r(e){t(null,e)}function n(e){t(e,null)}e=e||10485760,navigator.webkitPersistentStorage&&navigator.webkitPersistentStorage.requestQuota?navigator.webkitPersistentStorage.requestQuota(e,r,n):window.webkitStorageInfo&&window.webkitStorageInfo.requestQuota?window.webkitStorageInfo.requestQuota(window.PERSISTENT,e,r,n):window.requestFileSystem?(!0===i.isPhoneGap()&&(e=0),r(e)):n("NO_SUPPORT")}(e,(function(e,r){if(e)return t(e,null);!function(e,t,r){window.navigator.webkitRequestFileSystem?window.navigator.webkitRequestFileSystem(e,t,r):window.requestFileSystem?window.requestFileSystem(window.LocalFileSystem.PERSISTENT,e,t,r):window.webkitRequestFileSystem?window.webkitRequestFileSystem(window.PERSISTENT,e,t,r):r("NO_SUPPORT")}(r,(function(e){a=e,t(null,r)}),(function(e){t(e,null)}))}))};t.writeFile=function(e,t,r,n){var a=i.wrapFail(r),o=i.wrapSuccess(r);this.getFile(e,{create:!0,exclusive:!1},(function(e,s){if(e)return r(e,null);s.createWriter((function(e){e.onwrite=function(){o(s.toURL())},e.onerror=function(e){a(e.target.error)},!0===n&&e.seek(e.length),i.isMobile()?e.write(t):e.write(new Blob([t]))}),a)}))},t.getDirectory=function(e,t,r){r||(r=t,t={create:!1});var n=i.wrapSuccess(r),o=i.wrapFail(r);a.root.getDirectory(e,t,n,o)},t.getFile=function(e,t,r){r||(r=t,t={create:!1});var o=n.basename(e),s=n.dirname(e),u=i.wrapSuccess(r),c=i.wrapFail(r);function l(e){e.getFile(o,t,u,c)}"."===s?l(a.root):this.getDirectory(s,t,(function(e,t){e?r(e,null):l(t)}))}},4716:(e,t)=>{"use strict";t.isMobile=function(){return null!==window.navigator.userAgent.match(/Android|iPad|iPhone|iPod|Windows Phone/)},t.isPhoneGap=function(){var e=window.location.protocol;return this.isMobile()&&-1!==e.indexOf("file")},t.supportsFileSystem=function(){return!0===this.isPhoneGap()||window.navigator.userAgent.match(/Chrome|Opera/)},t.wrapSuccess=function(e){return function(){var t=[null].concat(Array.prototype.slice.call(arguments));e.apply(e,t)}},t.wrapFail=function(e){return function(){var t=Array.prototype.slice.call(arguments),r=t[0];e.apply(e,[r,null])}},t.isDirectory=function(e){return e.lastIndexOf("/")===e.length-1}},68007:(e,t,r)=>{var i=r(15534),n=r(12751),a=r(67388),o=r(14071);e.exports={parse:i.parseRequest,parseRequest:i.parseRequest,sign:n.signRequest,signRequest:n.signRequest,createSigner:n.createSigner,isSigner:n.isSigner,sshKeyToPEM:o.sshKeyToPEM,sshKeyFingerprint:o.fingerprint,pemToRsaSSHKey:o.pemToRsaSSHKey,verify:a.verifySignature,verifySignature:a.verifySignature,verifyHMAC:a.verifyHMAC}},15534:(e,t,r)=>{var i=r(6144),n=r(89539),a=r(14071),o=(a.HASH_ALGOS,a.PK_ALGOS,a.HttpSignatureError),s=a.InvalidAlgorithmError,u=a.validateAlgorithm;function c(e){o.call(this,e,c)}function l(e){o.call(this,e,l)}function h(e){o.call(this,e,h)}function p(e){o.call(this,e,p)}function d(e){o.call(this,e,d)}n.inherits(c,o),n.inherits(l,o),n.inherits(h,o),n.inherits(p,o),n.inherits(d,o),e.exports={parseRequest:function(e,t){i.object(e,"request"),i.object(e.headers,"request.headers"),void 0===t&&(t={}),void 0===t.headers&&(t.headers=[e.headers["x-date"]?"x-date":"date"]),i.object(t,"options"),i.arrayOfString(t.headers,"options.headers"),i.optionalFinite(t.clockSkew,"options.clockSkew");var r=t.authorizationHeaderName||"authorization";if(!e.headers[r])throw new p("no "+r+" header present in the request");t.clockSkew=t.clockSkew||300;var n,a=0,o=0,f=0,m="",g="",v={scheme:"",params:{},signingString:""},y=e.headers[r];for(a=0;a=65&&b<=90||b>=97&&b<=122)m+=_;else{if("="!==_)throw new l("bad param format");if(0===m.length)throw new l("bad param format");f=1}break;case 1:if('"'!==_)throw new l("bad param format");g="",f=2;break;case 2:'"'===_?(v.params[m]=g,f=3):g+=_;break;case 3:if(","!==_)throw new l("bad param format");m="",f=0;break;default:throw new Error("Invalid substate")}break;default:throw new Error("Invalid substate")}}if(v.params.headers&&""!==v.params.headers?v.params.headers=v.params.headers.split(" "):e.headers["x-date"]?v.params.headers=["x-date"]:v.params.headers=["date"],!v.scheme||"Signature"!==v.scheme)throw new l('scheme was not "Signature"');if(!v.params.keyId)throw new l("keyId was not specified");if(!v.params.algorithm)throw new l("algorithm was not specified");if(!v.params.signature)throw new l("signature was not specified");v.params.algorithm=v.params.algorithm.toLowerCase();try{u(v.params.algorithm)}catch(e){throw e instanceof s?new h(v.params.algorithm+" is not supported"):e}for(a=0;a1e3*t.clockSkew)throw new c("clock skew of "+S/1e3+"s was greater than "+t.clockSkew+"s")}if(t.headers.forEach((function(e){if(v.params.headers.indexOf(e.toLowerCase())<0)throw new p(e+" was not a signed header")})),t.algorithms&&-1===t.algorithms.indexOf(v.params.algorithm))throw new h(v.params.algorithm+" is not a supported algorithm");return v.algorithm=v.params.algorithm.toUpperCase(),v.keyId=v.params.keyId,v}}},12751:(e,t,r)=>{var i=r(48764).Buffer,n=r(6144),a=r(55835),o=(r(8501),r(89539)),s=r(7518),u=r(37954),c=r(14071),l=r(89539).format,h=c.HASH_ALGOS,p=c.PK_ALGOS,d=c.InvalidAlgorithmError,f=c.HttpSignatureError,m=c.validateAlgorithm,g='Signature keyId="%s",algorithm="%s",headers="%s",signature="%s"';function v(e){f.call(this,e,v)}function y(e){f.call(this,e,y)}function _(e){n.object(e,"options");var t=[];if(void 0!==e.algorithm&&(n.string(e.algorithm,"options.algorithm"),t=m(e.algorithm)),this.rs_alg=t,void 0!==e.sign)n.func(e.sign,"options.sign"),this.rs_signFunc=e.sign;else if("hmac"===t[0]&&void 0!==e.key){if(n.string(e.keyId,"options.keyId"),this.rs_keyId=e.keyId,"string"!=typeof e.key&&!i.isBuffer(e.key))throw new TypeError("options.key for HMAC must be a string or Buffer");this.rs_signer=a.createHmac(t[1].toUpperCase(),e.key),this.rs_signer.sign=function(){var e=this.digest("base64");return{hashAlgorithm:t[1],toString:function(){return e}}}}else{if(void 0===e.key)throw new TypeError("options.sign (func) or options.key is required");var r=e.key;if(("string"==typeof r||i.isBuffer(r))&&(r=s.parsePrivateKey(r)),n.ok(s.PrivateKey.isPrivateKey(r,[1,2]),"options.key must be a sshpk.PrivateKey"),this.rs_key=r,n.string(e.keyId,"options.keyId"),this.rs_keyId=e.keyId,!p[r.type])throw new d(r.type.toUpperCase()+" type keys are not supported");if(void 0!==t[0]&&r.type!==t[0])throw new d("options.key must be a "+t[0].toUpperCase()+" key, was given a "+r.type.toUpperCase()+" key instead");this.rs_signer=r.createSign(t[1])}this.rs_headers=[],this.rs_lines=[]}o.inherits(v,f),o.inherits(y,f),_.prototype.writeHeader=function(e,t){if(n.string(e,"header"),e=e.toLowerCase(),n.string(t,"value"),this.rs_headers.push(e),this.rs_signFunc)this.rs_lines.push(e+": "+t);else{var r=e+": "+t;this.rs_headers.length>0&&(r="\n"+r),this.rs_signer.update(r)}return t},_.prototype.writeDateHeader=function(){return this.writeHeader("date",u.rfc1123(new Date))},_.prototype.writeTarget=function(e,t){n.string(e,"method"),n.string(t,"path"),e=e.toLowerCase(),this.writeHeader("(request-target)",e+" "+t)},_.prototype.sign=function(e){if(n.func(e,"callback"),this.rs_headers.length<1)throw new Error("At least one header must be signed");var t,r;if(this.rs_signFunc){var i=this.rs_lines.join("\n"),a=this;this.rs_signFunc(i,(function(i,o){if(i)e(i);else{try{n.object(o,"signature"),n.string(o.keyId,"signature.keyId"),n.string(o.algorithm,"signature.algorithm"),n.string(o.signature,"signature.signature"),t=m(o.algorithm),r=l(g,o.keyId,o.algorithm,a.rs_headers.join(" "),o.signature)}catch(t){return void e(t)}e(null,r)}}))}else{try{var o=this.rs_signer.sign()}catch(t){return void e(t)}t=(this.rs_alg[0]||this.rs_key.type)+"-"+o.hashAlgorithm;var s=o.toString();r=l(g,this.rs_keyId,t,this.rs_headers.join(" "),s),e(null,r)}},e.exports={isSigner:function(e){return"object"==typeof e&&e instanceof _},createSigner:function(e){return new _(e)},signRequest:function(e,t){n.object(e,"request"),n.object(t,"options"),n.optionalString(t.algorithm,"options.algorithm"),n.string(t.keyId,"options.keyId"),n.optionalArrayOfString(t.headers,"options.headers"),n.optionalString(t.httpVersion,"options.httpVersion"),e.getHeader("Date")||e.setHeader("Date",u.rfc1123(new Date)),t.headers||(t.headers=["date"]),t.httpVersion||(t.httpVersion="1.1");var r,o=[];t.algorithm&&(t.algorithm=t.algorithm.toLowerCase(),o=m(t.algorithm));var c,f="";for(r=0;r{var i=r(6144),n=r(7518),a=r(89539),o={sha1:!0,sha256:!0,sha512:!0},s={rsa:!0,dsa:!0,ecdsa:!0};function u(e,t){Error.captureStackTrace&&Error.captureStackTrace(this,t||u),this.message=e,this.name=t.name}function c(e){u.call(this,e,c)}a.inherits(u,Error),a.inherits(c,u),e.exports={HASH_ALGOS:o,PK_ALGOS:s,HttpSignatureError:u,InvalidAlgorithmError:c,validateAlgorithm:function(e){var t=e.toLowerCase().split("-");if(2!==t.length)throw new c(t[0].toUpperCase()+" is not a valid algorithm");if("hmac"!==t[0]&&!s[t[0]])throw new c(t[0].toUpperCase()+" type keys are not supported");if(!o[t[1]])throw new c(t[1].toUpperCase()+" is not a supported hash algorithm");return t},sshKeyToPEM:function(e){return i.string(e,"ssh_key"),n.parseKey(e,"ssh").toString("pem")},fingerprint:function(e){return i.string(e,"ssh_key"),n.parseKey(e,"ssh").fingerprint("md5").toString("hex")},pemToRsaSSHKey:function(e,t){i.equal("string",typeof e,"typeof pem");var r=n.parseKey(e,"pem");return r.comment=t,r.toString("ssh")}}},67388:(e,t,r)=>{var i=r(48764).Buffer,n=r(6144),a=r(55835),o=r(7518),s=r(14071),u=(s.HASH_ALGOS,s.PK_ALGOS,s.InvalidAlgorithmError,s.HttpSignatureError,s.validateAlgorithm);e.exports={verifySignature:function(e,t){n.object(e,"parsedSignature"),("string"==typeof t||i.isBuffer(t))&&(t=o.parseKey(t)),n.ok(o.Key.isKey(t,[1,1]),"pubkey must be a sshpk.Key");var r=u(e.algorithm);if("hmac"===r[0]||r[0]!==t.type)return!1;var a=t.createVerify(r[1]);return a.update(e.signingString),a.verify(e.params.signature,"base64")},verifyHMAC:function(e,t){n.object(e,"parsedHMAC"),n.string(t,"secret");var r=u(e.algorithm);if("hmac"!==r[0])return!1;var o=r[1].toUpperCase(),s=a.createHmac(o,t);s.update(e.signingString);var c=a.createHmac(o,t);c.update(s.digest()),c=c.digest();var l=a.createHmac(o,t);return l.update(new i(e.params.signature,"base64")),l=l.digest(),"string"==typeof c?c===l:i.isBuffer(c)&&!c.equals?c.toString("binary")===l.toString("binary"):c.equals(l)}}},79267:(e,t,r)=>{var i=r(8501),n=r(8575),a=e.exports;for(var o in i)i.hasOwnProperty(o)&&(a[o]=i[o]);function s(e){if("string"==typeof e&&(e=n.parse(e)),e.protocol||(e.protocol="https:"),"https:"!==e.protocol)throw new Error('Protocol "'+e.protocol+'" not supported. Expected "https:"');return e}a.request=function(e,t){return e=s(e),i.request.call(this,e,t)},a.get=function(e,t){return e=s(e),i.get.call(this,e,t)}},80645:(e,t)=>{t.read=function(e,t,r,i,n){var a,o,s=8*n-i-1,u=(1<>1,l=-7,h=r?n-1:0,p=r?-1:1,d=e[t+h];for(h+=p,a=d&(1<<-l)-1,d>>=-l,l+=s;l>0;a=256*a+e[t+h],h+=p,l-=8);for(o=a&(1<<-l)-1,a>>=-l,l+=i;l>0;o=256*o+e[t+h],h+=p,l-=8);if(0===a)a=1-c;else{if(a===u)return o?NaN:1/0*(d?-1:1);o+=Math.pow(2,i),a-=c}return(d?-1:1)*o*Math.pow(2,a-i)},t.write=function(e,t,r,i,n,a){var o,s,u,c=8*a-n-1,l=(1<>1,p=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,d=i?0:a-1,f=i?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-o))<1&&(o--,u*=2),(t+=o+h>=1?p/u:p*Math.pow(2,1-h))*u>=2&&(o++,u/=2),o+h>=l?(s=0,o=l):o+h>=1?(s=(t*u-1)*Math.pow(2,n),o+=h):(s=t*Math.pow(2,h-1)*Math.pow(2,n),o=0));n>=8;e[r+d]=255&s,d+=f,s/=256,n-=8);for(o=o<0;e[r+d]=255&o,d+=f,o/=256,c-=8);e[r+d-f]|=128*m}},35717:e=>{"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}},82584:(e,t,r)=>{"use strict";var i=r(96410)(),n=r(21924)("Object.prototype.toString"),a=function(e){return!(i&&e&&"object"==typeof e&&Symbol.toStringTag in e)&&"[object Arguments]"===n(e)},o=function(e){return!!a(e)||null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Array]"!==n(e)&&"[object Function]"===n(e.callee)},s=function(){return a(arguments)}();a.isLegacyArguments=o,e.exports=s?a:o},95320:e=>{"use strict";var t,r,i=Function.prototype.toString,n="object"==typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"==typeof n&&"function"==typeof Object.defineProperty)try{t=Object.defineProperty({},"length",{get:function(){throw r}}),r={},n((function(){throw 42}),null,t)}catch(e){e!==r&&(n=null)}else n=null;var a=/^\s*class\b/,o=function(e){try{var t=i.call(e);return a.test(t)}catch(e){return!1}},s=Object.prototype.toString,u="function"==typeof Symbol&&!!Symbol.toStringTag,c="object"==typeof document&&void 0===document.all&&void 0!==document.all?document.all:{};e.exports=n?function(e){if(e===c)return!0;if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;if("function"==typeof e&&!e.prototype)return!0;try{n(e,null,t)}catch(e){if(e!==r)return!1}return!o(e)}:function(e){if(e===c)return!0;if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;if("function"==typeof e&&!e.prototype)return!0;if(u)return function(e){try{return!o(e)&&(i.call(e),!0)}catch(e){return!1}}(e);if(o(e))return!1;var t=s.call(e);return"[object Function]"===t||"[object GeneratorFunction]"===t}},48662:(e,t,r)=>{"use strict";var i,n=Object.prototype.toString,a=Function.prototype.toString,o=/^\s*(?:function)?\*/,s=r(96410)(),u=Object.getPrototypeOf;e.exports=function(e){if("function"!=typeof e)return!1;if(o.test(a.call(e)))return!0;if(!s)return"[object GeneratorFunction]"===n.call(e);if(!u)return!1;if(void 0===i){var t=function(){if(!s)return!1;try{return Function("return function*() {}")()}catch(e){}}();i=!!t&&u(t)}return u(e)===i}},98611:e=>{"use strict";e.exports=function(e){return e!=e}},20360:(e,t,r)=>{"use strict";var i=r(55559),n=r(4289),a=r(98611),o=r(29415),s=r(23194),u=i(o(),Number);n(u,{getPolyfill:o,implementation:a,shim:s}),e.exports=u},29415:(e,t,r)=>{"use strict";var i=r(98611);e.exports=function(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:i}},23194:(e,t,r)=>{"use strict";var i=r(4289),n=r(29415);e.exports=function(){var e=n();return i(Number,{isNaN:e},{isNaN:function(){return Number.isNaN!==e}}),e}},85692:(e,t,r)=>{"use strict";var i=r(94029),n=r(63083),a=r(21924),o=a("Object.prototype.toString"),s=r(96410)(),u="undefined"==typeof globalThis?r.g:globalThis,c=n(),l=a("Array.prototype.indexOf",!0)||function(e,t){for(var r=0;r-1}return!!d&&function(e){var t=!1;return i(p,(function(r,i){if(!t)try{t=r.call(e)===i}catch(e){}})),t}(e)}},4501:e=>{e.exports=i,i.strict=n,i.loose=a;var t=Object.prototype.toString,r={"[object Int8Array]":!0,"[object Int16Array]":!0,"[object Int32Array]":!0,"[object Uint8Array]":!0,"[object Uint8ClampedArray]":!0,"[object Uint16Array]":!0,"[object Uint32Array]":!0,"[object Float32Array]":!0,"[object Float64Array]":!0};function i(e){return n(e)||a(e)}function n(e){return e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Uint16Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array}function a(e){return r[t.call(e)]}},97356:(e,t,r)=>{var i=r(42830);function n(e){return e instanceof i.Stream}function a(e){return n(e)&&"function"==typeof e._read&&"object"==typeof e._readableState}function o(e){return n(e)&&"function"==typeof e._write&&"object"==typeof e._writableState}e.exports=n,e.exports.isReadable=a,e.exports.isWritable=o,e.exports.isDuplex=function(e){return a(e)&&o(e)}},36077:function(e,t){(function(){var t;function r(e,t,r){null!=e&&("number"==typeof e?this.fromNumber(e,t,r):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function i(){return new r(null)}var n="undefined"!=typeof navigator;n&&"Microsoft Internet Explorer"==navigator.appName?(r.prototype.am=function(e,t,r,i,n,a){for(var o=32767&t,s=t>>15;--a>=0;){var u=32767&this[e],c=this[e++]>>15,l=s*u+c*o;n=((u=o*u+((32767&l)<<15)+r[i]+(1073741823&n))>>>30)+(l>>>15)+s*c+(n>>>30),r[i++]=1073741823&u}return n},t=30):n&&"Netscape"!=navigator.appName?(r.prototype.am=function(e,t,r,i,n,a){for(;--a>=0;){var o=t*this[e++]+r[i]+n;n=Math.floor(o/67108864),r[i++]=67108863&o}return n},t=26):(r.prototype.am=function(e,t,r,i,n,a){for(var o=16383&t,s=t>>14;--a>=0;){var u=16383&this[e],c=this[e++]>>14,l=s*u+c*o;n=((u=o*u+((16383&l)<<14)+r[i]+n)>>28)+(l>>14)+s*c,r[i++]=268435455&u}return n},t=28),r.prototype.DB=t,r.prototype.DM=(1<>>16)&&(e=t,r+=16),0!=(t=e>>8)&&(e=t,r+=8),0!=(t=e>>4)&&(e=t,r+=4),0!=(t=e>>2)&&(e=t,r+=2),0!=(t=e>>1)&&(e=t,r+=1),r}function p(e){this.m=e}function d(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function _(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function b(){}function w(e){return e}function E(e){this.r2=i(),this.q3=i(),r.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}p.prototype.convert=function(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e},p.prototype.revert=function(e){return e},p.prototype.reduce=function(e){e.divRemTo(this.m,null,e)},p.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},p.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},d.prototype.convert=function(e){var t=i();return e.abs().dlShiftTo(this.m.t,t),t.divRemTo(this.m,null,t),e.s<0&&t.compareTo(r.ZERO)>0&&this.m.subTo(t,t),t},d.prototype.revert=function(e){var t=i();return e.copyTo(t),this.reduce(t),t},d.prototype.reduce=function(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t>15)*this.mpl&this.um)<<15)&e.DM;for(e[r=t+this.m.t]+=this.m.am(0,i,e,t,0,this.m.t);e[r]>=e.DV;)e[r]-=e.DV,e[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)},d.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},d.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},r.prototype.copyTo=function(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s},r.prototype.fromInt=function(e){this.t=1,this.s=e<0?-1:0,e>0?this[0]=e:e<-1?this[0]=e+this.DV:this.t=0},r.prototype.fromString=function(e,t){var i;if(16==t)i=4;else if(8==t)i=3;else if(256==t)i=8;else if(2==t)i=1;else if(32==t)i=5;else{if(4!=t)return void this.fromRadix(e,t);i=2}this.t=0,this.s=0;for(var n=e.length,a=!1,o=0;--n>=0;){var s=8==i?255&e[n]:c(e,n);s<0?"-"==e.charAt(n)&&(a=!0):(a=!1,0==o?this[this.t++]=s:o+i>this.DB?(this[this.t-1]|=(s&(1<>this.DB-o):this[this.t-1]|=s<=this.DB&&(o-=this.DB))}8==i&&0!=(128&e[0])&&(this.s=-1,o>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==e;)--this.t},r.prototype.dlShiftTo=function(e,t){var r;for(r=this.t-1;r>=0;--r)t[r+e]=this[r];for(r=e-1;r>=0;--r)t[r]=0;t.t=this.t+e,t.s=this.s},r.prototype.drShiftTo=function(e,t){for(var r=e;r=0;--r)t[r+o+1]=this[r]>>n|s,s=(this[r]&a)<=0;--r)t[r]=0;t[o]=s,t.t=this.t+o+1,t.s=this.s,t.clamp()},r.prototype.rShiftTo=function(e,t){t.s=this.s;var r=Math.floor(e/this.DB);if(r>=this.t)t.t=0;else{var i=e%this.DB,n=this.DB-i,a=(1<>i;for(var o=r+1;o>i;i>0&&(t[this.t-r-1]|=(this.s&a)<>=this.DB;if(e.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i-=e.s}t.s=i<0?-1:0,i<-1?t[r++]=this.DV+i:i>0&&(t[r++]=i),t.t=r,t.clamp()},r.prototype.multiplyTo=function(e,t){var i=this.abs(),n=e.abs(),a=i.t;for(t.t=a+n.t;--a>=0;)t[a]=0;for(a=0;a=0;)e[r]=0;for(r=0;r=t.DV&&(e[r+t.t]-=t.DV,e[r+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(r,t[r],e,2*r,0,1)),e.s=0,e.clamp()},r.prototype.divRemTo=function(e,t,n){var a=e.abs();if(!(a.t<=0)){var o=this.abs();if(o.t0?(a.lShiftTo(l,s),o.lShiftTo(l,n)):(a.copyTo(s),o.copyTo(n));var p=s.t,d=s[p-1];if(0!=d){var f=d*(1<1?s[p-2]>>this.F2:0),m=this.FV/f,g=(1<=0&&(n[n.t++]=1,n.subTo(b,n)),r.ONE.dlShiftTo(p,b),b.subTo(s,s);s.t=0;){var w=n[--y]==d?this.DM:Math.floor(n[y]*m+(n[y-1]+v)*g);if((n[y]+=s.am(0,w,n,_,0,p))0&&n.rShiftTo(l,n),u<0&&r.ZERO.subTo(n,n)}}},r.prototype.invDigit=function(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return(t=(t=(t=(t=t*(2-(15&e)*t)&15)*(2-(255&e)*t)&255)*(2-((65535&e)*t&65535))&65535)*(2-e*t%this.DV)%this.DV)>0?this.DV-t:-t},r.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},r.prototype.exp=function(e,t){if(e>4294967295||e<1)return r.ONE;var n=i(),a=i(),o=t.convert(this),s=h(e)-1;for(o.copyTo(n);--s>=0;)if(t.sqrTo(n,a),(e&1<0)t.mulTo(a,o,n);else{var u=n;n=a,a=u}return t.revert(n)},r.prototype.toString=function(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var r,i=(1<0)for(s>s)>0&&(n=!0,a=u(r));o>=0;)s>(s+=this.DB-t)):(r=this[o]>>(s-=t)&i,s<=0&&(s+=this.DB,--o)),r>0&&(n=!0),n&&(a+=u(r));return n?a:"0"},r.prototype.negate=function(){var e=i();return r.ZERO.subTo(this,e),e},r.prototype.abs=function(){return this.s<0?this.negate():this},r.prototype.compareTo=function(e){var t=this.s-e.s;if(0!=t)return t;var r=this.t;if(0!=(t=r-e.t))return this.s<0?-t:t;for(;--r>=0;)if(0!=(t=this[r]-e[r]))return t;return 0},r.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+h(this[this.t-1]^this.s&this.DM)},r.prototype.mod=function(e){var t=i();return this.abs().divRemTo(e,null,t),this.s<0&&t.compareTo(r.ZERO)>0&&e.subTo(t,t),t},r.prototype.modPowInt=function(e,t){var r;return r=e<256||t.isEven()?new p(t):new d(t),this.exp(e,r)},r.ZERO=l(0),r.ONE=l(1),b.prototype.convert=w,b.prototype.revert=w,b.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},b.prototype.sqrTo=function(e,t){e.squareTo(t)},E.prototype.convert=function(e){if(e.s<0||e.t>2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=i();return e.copyTo(t),this.reduce(t),t},E.prototype.revert=function(e){return e},E.prototype.reduce=function(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)},E.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},E.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)};var k,S,x,j=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],N=(1<<26)/j[j.length-1];function M(){var e;e=(new Date).getTime(),S[x++]^=255&e,S[x++]^=e>>8&255,S[x++]^=e>>16&255,S[x++]^=e>>24&255,x>=B&&(x-=B)}if(r.prototype.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))},r.prototype.toRadix=function(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),r=Math.pow(e,t),n=l(r),a=i(),o=i(),s="";for(this.divRemTo(n,a,o);a.signum()>0;)s=(r+o.intValue()).toString(e).substr(1)+s,a.divRemTo(n,a,o);return o.intValue().toString(e)+s},r.prototype.fromRadix=function(e,t){this.fromInt(0),null==t&&(t=10);for(var i=this.chunkSize(t),n=Math.pow(t,i),a=!1,o=0,s=0,u=0;u=i&&(this.dMultiply(n),this.dAddOffset(s,0),o=0,s=0))}o>0&&(this.dMultiply(Math.pow(t,o)),this.dAddOffset(s,0)),a&&r.ZERO.subTo(this,this)},r.prototype.fromNumber=function(e,t,i){if("number"==typeof t)if(e<2)this.fromInt(1);else for(this.fromNumber(e,i),this.testBit(e-1)||this.bitwiseTo(r.ONE.shiftLeft(e-1),m,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(t);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(r.ONE.shiftLeft(e-1),this);else{var n=new Array,a=7&e;n.length=1+(e>>3),t.nextBytes(n),a>0?n[0]&=(1<>=this.DB;if(e.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i+=e.s}t.s=i<0?-1:0,i>0?t[r++]=i:i<-1&&(t[r++]=this.DV+i),t.t=r,t.clamp()},r.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},r.prototype.dAddOffset=function(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}},r.prototype.multiplyLowerTo=function(e,t,r){var i,n=Math.min(this.t+e.t,t);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n=0;)r[i]=0;for(i=Math.max(t-this.t,0);i0)if(0==t)r=this[0]%e;else for(var i=this.t-1;i>=0;--i)r=(t*r+this[i])%e;return r},r.prototype.millerRabin=function(e){var t=this.subtract(r.ONE),n=t.getLowestSetBit();if(n<=0)return!1;var a=t.shiftRight(n);(e=e+1>>1)>j.length&&(e=j.length);for(var o=i(),s=0;s>24},r.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},r.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},r.prototype.toByteArray=function(){var e=this.t,t=new Array;t[0]=this.s;var r,i=this.DB-e*this.DB%8,n=0;if(e-- >0)for(i>i)!=(this.s&this.DM)>>i&&(t[n++]=r|this.s<=0;)i<8?(r=(this[e]&(1<>(i+=this.DB-8)):(r=this[e]>>(i-=8)&255,i<=0&&(i+=this.DB,--e)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(t[n++]=r);return t},r.prototype.equals=function(e){return 0==this.compareTo(e)},r.prototype.min=function(e){return this.compareTo(e)<0?this:e},r.prototype.max=function(e){return this.compareTo(e)>0?this:e},r.prototype.and=function(e){var t=i();return this.bitwiseTo(e,f,t),t},r.prototype.or=function(e){var t=i();return this.bitwiseTo(e,m,t),t},r.prototype.xor=function(e){var t=i();return this.bitwiseTo(e,g,t),t},r.prototype.andNot=function(e){var t=i();return this.bitwiseTo(e,v,t),t},r.prototype.not=function(){for(var e=i(),t=0;t=this.t?0!=this.s:0!=(this[t]&1<1){var m=i();for(n.sqrTo(s[1],m);u<=f;)s[u]=i(),n.mulTo(m,s[u-2],s[u]),u+=2}var g,v,y=e.t-1,_=!0,b=i();for(a=h(e[y])-1;y>=0;){for(a>=c?g=e[y]>>a-c&f:(g=(e[y]&(1<0&&(g|=e[y-1]>>this.DB+a-c)),u=r;0==(1&g);)g>>=1,--u;if((a-=u)<0&&(a+=this.DB,--y),_)s[g].copyTo(o),_=!1;else{for(;u>1;)n.sqrTo(o,b),n.sqrTo(b,o),u-=2;u>0?n.sqrTo(o,b):(v=o,o=b,b=v),n.mulTo(b,s[g],o)}for(;y>=0&&0==(e[y]&1<=0?(i.subTo(n,i),t&&a.subTo(s,a),o.subTo(u,o)):(n.subTo(i,n),t&&s.subTo(a,s),u.subTo(o,u))}return 0!=n.compareTo(r.ONE)?r.ZERO:u.compareTo(e)>=0?u.subtract(e):u.signum()<0?(u.addTo(e,u),u.signum()<0?u.add(e):u):u},r.prototype.pow=function(e){return this.exp(e,new b)},r.prototype.gcd=function(e){var t=this.s<0?this.negate():this.clone(),r=e.s<0?e.negate():e.clone();if(t.compareTo(r)<0){var i=t;t=r,r=i}var n=t.getLowestSetBit(),a=r.getLowestSetBit();if(a<0)return t;for(n0&&(t.rShiftTo(a,t),r.rShiftTo(a,r));t.signum()>0;)(n=t.getLowestSetBit())>0&&t.rShiftTo(n,t),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),t.compareTo(r)>=0?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return a>0&&r.lShiftTo(a,r),r},r.prototype.isProbablePrime=function(e){var t,r=this.abs();if(1==r.t&&r[0]<=j[j.length-1]){for(t=0;t>>8,S[x++]=255&I;x=0,M()}function R(){if(null==k){for(M(),(k=new O).init(S),x=0;x{"use strict";var t=e.exports=function(e,t,i){"function"==typeof t&&(i=t,t={}),r(t,"function"==typeof(i=t.cb||i)?i:i.pre||function(){},i.post||function(){},e,"",e)};function r(e,i,n,a,o,s,u,c,l,h){if(a&&"object"==typeof a&&!Array.isArray(a)){for(var p in i(a,o,s,u,c,l,h),a){var d=a[p];if(Array.isArray(d)){if(p in t.arrayKeywords)for(var f=0;ft.maxItems&&l("There must be a maximum of "+t.maxItems+" in the array")}else(t.properties||t.additionalProperties)&&o.concat(function(e,t,r,a){if("object"==typeof t)for(var u in("object"!=typeof e||e instanceof Array)&&o.push({property:r,message:"an object is required"}),t)if(t.hasOwnProperty(u)&&"__proto__"!=u&&"constructor"!=u){var c=e.hasOwnProperty(u)?e[u]:void 0;if(void 0===c&&i.existingOnly)continue;var l=t[u];void 0===c&&l.default&&(c=e[u]=l.default),i.coerce&&u in e&&(c=e[u]=i.coerce(c,l)),s(c,l,r,u)}for(u in e){if(e.hasOwnProperty(u)&&("_"!=u.charAt(0)||"_"!=u.charAt(1))&&t&&!t[u]&&!1===a){if(i.filter){delete e[u];continue}o.push({property:r,message:"The property "+u+" is not defined in the schema and the schema does not allow additional properties"})}var h=t&&t[u]&&t[u].requires;h&&!(h in e)&&o.push({property:r,message:"the presence of the property "+u+" requires that "+h+" also be present"}),c=e[u],!a||t&&"object"==typeof t&&u in t||(i.coerce&&(c=e[u]=i.coerce(c,a)),s(c,a,r,u)),!n&&c&&c.$schema&&(o=o.concat(s(c,c.$schema,r,u)))}return o}(e,t.properties,r,t.additionalProperties));if(t.pattern&&"string"==typeof e&&!e.match(t.pattern)&&l("does not match the regex pattern "+t.pattern),t.maxLength&&"string"==typeof e&&e.length>t.maxLength&&l("may only be "+t.maxLength+" characters long"),t.minLength&&"string"==typeof e&&e.lengthe&&l("must have a minimum value of "+t.minimum),void 0!==t.maximum&&typeof e==typeof t.maximum&&t.maximum{function r(e,t){var r=[],i=[];return null==t&&(t=function(e,t){return r[0]===t?"[Circular ~]":"[Circular ~."+i.slice(0,r.indexOf(t)).join(".")+"]"}),function(n,a){if(r.length>0){var o=r.indexOf(this);~o?r.splice(o+1):r.push(this),~o?i.splice(o,1/0,n):i.push(n),~r.indexOf(a)&&(a=t.call(this,n,a))}else r.push(a);return null==e?a:e.call(this,n,a)}}(e.exports=function(e,t,i,n){return JSON.stringify(e,r(t,n),i)}).getSerialize=r},37954:(e,t,r)=>{var i=r(6144),n=(r(89539),r(29031)),a=r(43552),o=r(19856);function s(e,t){return i.equal(typeof t,"string"),Object.prototype.hasOwnProperty.call(e,t)}function u(e,t){if(null!==e&&"object"==typeof e){if(e.hasOwnProperty(t))return e[t];var r=t.indexOf(".");if(-1!=r){var i=t.substr(0,r);if(e.hasOwnProperty(i))return u(e[i],t.substr(r+1))}}}function c(e,t,r,n){var a,o;if(0===t)return(a=r.slice(0)).push(e),void n(a);for(o in i.ok(null!==e),i.equal(typeof e,"object"),i.equal(typeof t,"number"),i.ok(t>=0),e)(a=r.slice(0)).push(o),c(e[o],t-1,a,n)}t.deepCopy=function e(t){var r,i,n="__deepCopy";if(t&&t[n])throw new Error("attempted deep copy of cyclic object");if(t&&t.constructor==Object){for(i in r={},t[n]=!0,t)i!=n&&(r[i]=e(t[i]));return delete t[n],r}if(t&&t.constructor==Array){for(r=[],t[n]=!0,i=0;i=0);var n,a=[];for(n in t)e(t[n],r-1).forEach((function(e){a.push([n].concat(e))}));return a},t.flattenIter=function(e,t,r){c(e,t,[],r)},t.validateJsonObject=g,t.validateJsonObjectJS=g,t.randElt=function(e){return i.ok(Array.isArray(e)&&e.length>0,"randElt argument must be a non-empty array"),e[Math.floor(Math.random()*e.length)]},t.extraProperties=function(e,t){i.ok("object"==typeof e&&null!==e,"obj argument must be a non-null object"),i.ok(Array.isArray(t),"allowed argument must be an array of strings");for(var r=0;r=2,"options.base >= 2"),i.ok(a.base<=36,"options.base <= 36"),i.bool(a.allowSign,"options.allowSign"),i.bool(a.allowPrefix,"options.allowPrefix"),i.bool(a.allowTrailing,"options.allowTrailing"),i.bool(a.allowImprecise,"options.allowImprecise"),i.bool(a.trimWhitespace,"options.trimWhitespace"),i.bool(a.leadingZeroIsOctal,"options.leadingZeroIsOctal"),a.leadingZeroIsOctal&&i.ok(!n,'"base" and "leadingZeroIsOctal" are mutually exclusive'));var o,u,c=-1,l=a.base,h=1,g=0,v=0,y=e.length;if(a.trimWhitespace)for(;v=48&&u<=57?u-48:u>=65&&u<=90?u-55:u>=97&&u<=122?u-87:-1)&&rp||_=9&&e<=13||160===e||5760===e||6158===e||e>=8192&&e<=8202||8232===e||8233===e||8239===e||8287===e||12288===e||65279===e}function g(e,t){var r=o.validate(t,e);if(0===r.errors.length)return null;var i,n,s=r.errors[0],u=s.property,c=s.message.toLowerCase();-1!=(i=c.indexOf("the property "))&&-1!=(n=c.indexOf(" is not defined in the schema and the schema does not allow additional properties"))&&(i+="the property ".length,u=""===u?c.substr(i,n-i):u+"."+c.substr(i,n-i),c="unsupported property");var l=new a.VError('property "%s": %s',u,c);return l.jsv_details=s,l}function v(e){i.ok(e[0]>=0&&e[1]>=0,"negative numbers not allowed in hrtimes"),i.ok(e[1]<1e9,"nanoseconds column overflow")}function y(e,t){v(e),v(t),i.ok(e[0]>t[0]||e[0]==t[0]&&e[1]>=t[1],"negative differences not allowed");var r=[e[0]-t[0],0];return e[1]>=t[1]?r[1]=e[1]-t[1]:(r[0]--,r[1]=1e9-(t[1]-e[1])),r}function _(e,t){return v(e),v(t),e[1]+=t[1],e[1]>=1e9&&(e[0]++,e[1]-=1e9),e[0]+=t[0],e}function b(e,t,r){var i,n;if(i={},r)for(n in r)i[n]=r[n];if(e)for(n in e)i[n]=e[n];if(t)for(n in t)i[n]=t[n];return i}},62705:(e,t,r)=>{var i=r(55639).Symbol;e.exports=i},44239:(e,t,r)=>{var i=r(62705),n=r(89607),a=r(2333),o=i?i.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":o&&o in Object(e)?n(e):a(e)}},31957:(e,t,r)=>{var i="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g;e.exports=i},89607:(e,t,r)=>{var i=r(62705),n=Object.prototype,a=n.hasOwnProperty,o=n.toString,s=i?i.toStringTag:void 0;e.exports=function(e){var t=a.call(e,s),r=e[s];try{e[s]=void 0;var i=!0}catch(e){}var n=o.call(e);return i&&(t?e[s]=r:delete e[s]),n}},2333:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},55639:(e,t,r)=>{var i=r(31957),n="object"==typeof self&&self&&self.Object===Object&&self,a=i||n||Function("return this")();e.exports=a},1469:e=>{var t=Array.isArray;e.exports=t},23560:(e,t,r)=>{var i=r(44239),n=r(13218);e.exports=function(e){if(!n(e))return!1;var t=i(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},13218:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},37005:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},47037:(e,t,r)=>{var i=r(44239),n=r(1469),a=r(37005);e.exports=function(e){return"string"==typeof e||!n(e)&&a(e)&&"[object String]"==i(e)}},52353:e=>{e.exports=function(e){return void 0===e}},62318:(e,t,r)=>{"use strict";var i=r(35717),n=r(3349),a=r(89509).Buffer,o=new Array(16);function s(){n.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function u(e,t){return e<>>32-t}function c(e,t,r,i,n,a,o){return u(e+(t&r|~t&i)+n+a|0,o)+t|0}function l(e,t,r,i,n,a,o){return u(e+(t&i|r&~i)+n+a|0,o)+t|0}function h(e,t,r,i,n,a,o){return u(e+(t^r^i)+n+a|0,o)+t|0}function p(e,t,r,i,n,a,o){return u(e+(r^(t|~i))+n+a|0,o)+t|0}i(s,n),s.prototype._update=function(){for(var e=o,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,i=this._b,n=this._c,a=this._d;r=c(r,i,n,a,e[0],3614090360,7),a=c(a,r,i,n,e[1],3905402710,12),n=c(n,a,r,i,e[2],606105819,17),i=c(i,n,a,r,e[3],3250441966,22),r=c(r,i,n,a,e[4],4118548399,7),a=c(a,r,i,n,e[5],1200080426,12),n=c(n,a,r,i,e[6],2821735955,17),i=c(i,n,a,r,e[7],4249261313,22),r=c(r,i,n,a,e[8],1770035416,7),a=c(a,r,i,n,e[9],2336552879,12),n=c(n,a,r,i,e[10],4294925233,17),i=c(i,n,a,r,e[11],2304563134,22),r=c(r,i,n,a,e[12],1804603682,7),a=c(a,r,i,n,e[13],4254626195,12),n=c(n,a,r,i,e[14],2792965006,17),r=l(r,i=c(i,n,a,r,e[15],1236535329,22),n,a,e[1],4129170786,5),a=l(a,r,i,n,e[6],3225465664,9),n=l(n,a,r,i,e[11],643717713,14),i=l(i,n,a,r,e[0],3921069994,20),r=l(r,i,n,a,e[5],3593408605,5),a=l(a,r,i,n,e[10],38016083,9),n=l(n,a,r,i,e[15],3634488961,14),i=l(i,n,a,r,e[4],3889429448,20),r=l(r,i,n,a,e[9],568446438,5),a=l(a,r,i,n,e[14],3275163606,9),n=l(n,a,r,i,e[3],4107603335,14),i=l(i,n,a,r,e[8],1163531501,20),r=l(r,i,n,a,e[13],2850285829,5),a=l(a,r,i,n,e[2],4243563512,9),n=l(n,a,r,i,e[7],1735328473,14),r=h(r,i=l(i,n,a,r,e[12],2368359562,20),n,a,e[5],4294588738,4),a=h(a,r,i,n,e[8],2272392833,11),n=h(n,a,r,i,e[11],1839030562,16),i=h(i,n,a,r,e[14],4259657740,23),r=h(r,i,n,a,e[1],2763975236,4),a=h(a,r,i,n,e[4],1272893353,11),n=h(n,a,r,i,e[7],4139469664,16),i=h(i,n,a,r,e[10],3200236656,23),r=h(r,i,n,a,e[13],681279174,4),a=h(a,r,i,n,e[0],3936430074,11),n=h(n,a,r,i,e[3],3572445317,16),i=h(i,n,a,r,e[6],76029189,23),r=h(r,i,n,a,e[9],3654602809,4),a=h(a,r,i,n,e[12],3873151461,11),n=h(n,a,r,i,e[15],530742520,16),r=p(r,i=h(i,n,a,r,e[2],3299628645,23),n,a,e[0],4096336452,6),a=p(a,r,i,n,e[7],1126891415,10),n=p(n,a,r,i,e[14],2878612391,15),i=p(i,n,a,r,e[5],4237533241,21),r=p(r,i,n,a,e[12],1700485571,6),a=p(a,r,i,n,e[3],2399980690,10),n=p(n,a,r,i,e[10],4293915773,15),i=p(i,n,a,r,e[1],2240044497,21),r=p(r,i,n,a,e[8],1873313359,6),a=p(a,r,i,n,e[15],4264355552,10),n=p(n,a,r,i,e[6],2734768916,15),i=p(i,n,a,r,e[13],1309151649,21),r=p(r,i,n,a,e[4],4149444226,6),a=p(a,r,i,n,e[11],3174756917,10),n=p(n,a,r,i,e[2],718787259,15),i=p(i,n,a,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+i|0,this._c=this._c+n|0,this._d=this._d+a|0},s.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=a.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e},e.exports=s},63047:(e,t,r)=>{var i=r(96240),n=r(29931);function a(e){this.rand=e||new n.Rand}e.exports=a,a.create=function(e){return new a(e)},a.prototype._randbelow=function(e){var t=e.bitLength(),r=Math.ceil(t/8);do{var n=new i(this.rand.generate(r))}while(n.cmp(e)>=0);return n},a.prototype._randrange=function(e,t){var r=t.sub(e);return e.add(this._randbelow(r))},a.prototype.test=function(e,t,r){var n=e.bitLength(),a=i.mont(e),o=new i(1).toRed(a);t||(t=Math.max(1,n/48|0));for(var s=e.subn(1),u=0;!s.testn(u);u++);for(var c=e.shrn(u),l=s.toRed(a);t>0;t--){var h=this._randrange(new i(2),s);r&&r(h);var p=h.toRed(a).redPow(c);if(0!==p.cmp(o)&&0!==p.cmp(l)){for(var d=1;d0;t--){var l=this._randrange(new i(2),o),h=e.gcd(l);if(0!==h.cmpn(1))return h;var p=l.toRed(n).redPow(u);if(0!==p.cmp(a)&&0!==p.cmp(c)){for(var d=1;d=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function u(e,t,r){var i=s(e,r);return r-1>=t&&(i|=s(e,r-1)<<4),i}function c(e,t,r,i){for(var n=0,a=Math.min(e.length,r),o=t;o=49?s-49+10:s>=17?s-17+10:s}return n}a.isBN=function(e){return e instanceof a||null!==e&&"object"==typeof e&&e.constructor.wordSize===a.wordSize&&Array.isArray(e.words)},a.max=function(e,t){return e.cmp(t)>0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)o=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)n=u(e,t,i)<=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;this.strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,o=a%i,s=Math.min(a,a-o)+r,u=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],o=n*a,s=67108863&o,u=o/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&u,p=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=p;d++){var f=c-d|0;l+=(o=(n=0|e.words[f])*(a=0|t.words[d])+h)/67108864|0,h=67108863&o}r.words[c]=0|h,u=0|l}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}a.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,a=0,o=0;o>>24-n&16777215)||o!==this.length-1?l[6-u.length]+u+r:u+r,(n+=2)>=26&&(n-=26,o--)}for(0!==a&&(r=a.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var c=h[e],d=p[e];r="";var f=this.clone();for(f.negative=0;!f.isZero();){var m=f.modn(d).toString(e);r=(f=f.idivn(d)).isZero()?m+r:l[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(e,t){return i(void 0!==o),this.toArrayLike(o,e,t)},a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},a.prototype.toArrayLike=function(e,t,r){var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0"),this.strip();var o,s,u="le"===t,c=new e(a),l=this.clone();if(u){for(s=0;!l.isZero();s++)o=l.andln(255),l.iushrn(8),c[s]=o;for(;s=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==a&&o>26,this.words[o]=67108863&t;if(0===a&&o>>13,d=0|o[1],f=8191&d,m=d>>>13,g=0|o[2],v=8191&g,y=g>>>13,_=0|o[3],b=8191&_,w=_>>>13,E=0|o[4],k=8191&E,S=E>>>13,x=0|o[5],j=8191&x,N=x>>>13,M=0|o[6],I=8191&M,A=M>>>13,T=0|o[7],R=8191&T,P=T>>>13,O=0|o[8],B=8191&O,C=O>>>13,z=0|o[9],F=8191&z,D=z>>>13,q=0|s[0],L=8191&q,U=q>>>13,H=0|s[1],K=8191&H,W=H>>>13,Z=0|s[2],J=8191&Z,V=Z>>>13,$=0|s[3],G=8191&$,Q=$>>>13,X=0|s[4],Y=8191&X,ee=X>>>13,te=0|s[5],re=8191&te,ie=te>>>13,ne=0|s[6],ae=8191&ne,oe=ne>>>13,se=0|s[7],ue=8191&se,ce=se>>>13,le=0|s[8],he=8191&le,pe=le>>>13,de=0|s[9],fe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ge=(c+(i=Math.imul(h,L))|0)+((8191&(n=(n=Math.imul(h,U))+Math.imul(p,L)|0))<<13)|0;c=((a=Math.imul(p,U))+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(f,L),n=(n=Math.imul(f,U))+Math.imul(m,L)|0,a=Math.imul(m,U);var ve=(c+(i=i+Math.imul(h,K)|0)|0)+((8191&(n=(n=n+Math.imul(h,W)|0)+Math.imul(p,K)|0))<<13)|0;c=((a=a+Math.imul(p,W)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(v,L),n=(n=Math.imul(v,U))+Math.imul(y,L)|0,a=Math.imul(y,U),i=i+Math.imul(f,K)|0,n=(n=n+Math.imul(f,W)|0)+Math.imul(m,K)|0,a=a+Math.imul(m,W)|0;var ye=(c+(i=i+Math.imul(h,J)|0)|0)+((8191&(n=(n=n+Math.imul(h,V)|0)+Math.imul(p,J)|0))<<13)|0;c=((a=a+Math.imul(p,V)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(b,L),n=(n=Math.imul(b,U))+Math.imul(w,L)|0,a=Math.imul(w,U),i=i+Math.imul(v,K)|0,n=(n=n+Math.imul(v,W)|0)+Math.imul(y,K)|0,a=a+Math.imul(y,W)|0,i=i+Math.imul(f,J)|0,n=(n=n+Math.imul(f,V)|0)+Math.imul(m,J)|0,a=a+Math.imul(m,V)|0;var _e=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(n=(n=n+Math.imul(h,Q)|0)+Math.imul(p,G)|0))<<13)|0;c=((a=a+Math.imul(p,Q)|0)+(n>>>13)|0)+(_e>>>26)|0,_e&=67108863,i=Math.imul(k,L),n=(n=Math.imul(k,U))+Math.imul(S,L)|0,a=Math.imul(S,U),i=i+Math.imul(b,K)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(w,K)|0,a=a+Math.imul(w,W)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,V)|0)+Math.imul(y,J)|0,a=a+Math.imul(y,V)|0,i=i+Math.imul(f,G)|0,n=(n=n+Math.imul(f,Q)|0)+Math.imul(m,G)|0,a=a+Math.imul(m,Q)|0;var be=(c+(i=i+Math.imul(h,Y)|0)|0)+((8191&(n=(n=n+Math.imul(h,ee)|0)+Math.imul(p,Y)|0))<<13)|0;c=((a=a+Math.imul(p,ee)|0)+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(j,L),n=(n=Math.imul(j,U))+Math.imul(N,L)|0,a=Math.imul(N,U),i=i+Math.imul(k,K)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(S,K)|0,a=a+Math.imul(S,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,V)|0)+Math.imul(w,J)|0,a=a+Math.imul(w,V)|0,i=i+Math.imul(v,G)|0,n=(n=n+Math.imul(v,Q)|0)+Math.imul(y,G)|0,a=a+Math.imul(y,Q)|0,i=i+Math.imul(f,Y)|0,n=(n=n+Math.imul(f,ee)|0)+Math.imul(m,Y)|0,a=a+Math.imul(m,ee)|0;var we=(c+(i=i+Math.imul(h,re)|0)|0)+((8191&(n=(n=n+Math.imul(h,ie)|0)+Math.imul(p,re)|0))<<13)|0;c=((a=a+Math.imul(p,ie)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(I,L),n=(n=Math.imul(I,U))+Math.imul(A,L)|0,a=Math.imul(A,U),i=i+Math.imul(j,K)|0,n=(n=n+Math.imul(j,W)|0)+Math.imul(N,K)|0,a=a+Math.imul(N,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,V)|0)+Math.imul(S,J)|0,a=a+Math.imul(S,V)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,Q)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,Q)|0,i=i+Math.imul(v,Y)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(y,Y)|0,a=a+Math.imul(y,ee)|0,i=i+Math.imul(f,re)|0,n=(n=n+Math.imul(f,ie)|0)+Math.imul(m,re)|0,a=a+Math.imul(m,ie)|0;var Ee=(c+(i=i+Math.imul(h,ae)|0)|0)+((8191&(n=(n=n+Math.imul(h,oe)|0)+Math.imul(p,ae)|0))<<13)|0;c=((a=a+Math.imul(p,oe)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(R,L),n=(n=Math.imul(R,U))+Math.imul(P,L)|0,a=Math.imul(P,U),i=i+Math.imul(I,K)|0,n=(n=n+Math.imul(I,W)|0)+Math.imul(A,K)|0,a=a+Math.imul(A,W)|0,i=i+Math.imul(j,J)|0,n=(n=n+Math.imul(j,V)|0)+Math.imul(N,J)|0,a=a+Math.imul(N,V)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,Q)|0)+Math.imul(S,G)|0,a=a+Math.imul(S,Q)|0,i=i+Math.imul(b,Y)|0,n=(n=n+Math.imul(b,ee)|0)+Math.imul(w,Y)|0,a=a+Math.imul(w,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(y,re)|0,a=a+Math.imul(y,ie)|0,i=i+Math.imul(f,ae)|0,n=(n=n+Math.imul(f,oe)|0)+Math.imul(m,ae)|0,a=a+Math.imul(m,oe)|0;var ke=(c+(i=i+Math.imul(h,ue)|0)|0)+((8191&(n=(n=n+Math.imul(h,ce)|0)+Math.imul(p,ue)|0))<<13)|0;c=((a=a+Math.imul(p,ce)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(B,L),n=(n=Math.imul(B,U))+Math.imul(C,L)|0,a=Math.imul(C,U),i=i+Math.imul(R,K)|0,n=(n=n+Math.imul(R,W)|0)+Math.imul(P,K)|0,a=a+Math.imul(P,W)|0,i=i+Math.imul(I,J)|0,n=(n=n+Math.imul(I,V)|0)+Math.imul(A,J)|0,a=a+Math.imul(A,V)|0,i=i+Math.imul(j,G)|0,n=(n=n+Math.imul(j,Q)|0)+Math.imul(N,G)|0,a=a+Math.imul(N,Q)|0,i=i+Math.imul(k,Y)|0,n=(n=n+Math.imul(k,ee)|0)+Math.imul(S,Y)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(b,re)|0,n=(n=n+Math.imul(b,ie)|0)+Math.imul(w,re)|0,a=a+Math.imul(w,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,oe)|0)+Math.imul(y,ae)|0,a=a+Math.imul(y,oe)|0,i=i+Math.imul(f,ue)|0,n=(n=n+Math.imul(f,ce)|0)+Math.imul(m,ue)|0,a=a+Math.imul(m,ce)|0;var Se=(c+(i=i+Math.imul(h,he)|0)|0)+((8191&(n=(n=n+Math.imul(h,pe)|0)+Math.imul(p,he)|0))<<13)|0;c=((a=a+Math.imul(p,pe)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(F,L),n=(n=Math.imul(F,U))+Math.imul(D,L)|0,a=Math.imul(D,U),i=i+Math.imul(B,K)|0,n=(n=n+Math.imul(B,W)|0)+Math.imul(C,K)|0,a=a+Math.imul(C,W)|0,i=i+Math.imul(R,J)|0,n=(n=n+Math.imul(R,V)|0)+Math.imul(P,J)|0,a=a+Math.imul(P,V)|0,i=i+Math.imul(I,G)|0,n=(n=n+Math.imul(I,Q)|0)+Math.imul(A,G)|0,a=a+Math.imul(A,Q)|0,i=i+Math.imul(j,Y)|0,n=(n=n+Math.imul(j,ee)|0)+Math.imul(N,Y)|0,a=a+Math.imul(N,ee)|0,i=i+Math.imul(k,re)|0,n=(n=n+Math.imul(k,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(b,ae)|0,n=(n=n+Math.imul(b,oe)|0)+Math.imul(w,ae)|0,a=a+Math.imul(w,oe)|0,i=i+Math.imul(v,ue)|0,n=(n=n+Math.imul(v,ce)|0)+Math.imul(y,ue)|0,a=a+Math.imul(y,ce)|0,i=i+Math.imul(f,he)|0,n=(n=n+Math.imul(f,pe)|0)+Math.imul(m,he)|0,a=a+Math.imul(m,pe)|0;var xe=(c+(i=i+Math.imul(h,fe)|0)|0)+((8191&(n=(n=n+Math.imul(h,me)|0)+Math.imul(p,fe)|0))<<13)|0;c=((a=a+Math.imul(p,me)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(F,K),n=(n=Math.imul(F,W))+Math.imul(D,K)|0,a=Math.imul(D,W),i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,V)|0)+Math.imul(C,J)|0,a=a+Math.imul(C,V)|0,i=i+Math.imul(R,G)|0,n=(n=n+Math.imul(R,Q)|0)+Math.imul(P,G)|0,a=a+Math.imul(P,Q)|0,i=i+Math.imul(I,Y)|0,n=(n=n+Math.imul(I,ee)|0)+Math.imul(A,Y)|0,a=a+Math.imul(A,ee)|0,i=i+Math.imul(j,re)|0,n=(n=n+Math.imul(j,ie)|0)+Math.imul(N,re)|0,a=a+Math.imul(N,ie)|0,i=i+Math.imul(k,ae)|0,n=(n=n+Math.imul(k,oe)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,oe)|0,i=i+Math.imul(b,ue)|0,n=(n=n+Math.imul(b,ce)|0)+Math.imul(w,ue)|0,a=a+Math.imul(w,ce)|0,i=i+Math.imul(v,he)|0,n=(n=n+Math.imul(v,pe)|0)+Math.imul(y,he)|0,a=a+Math.imul(y,pe)|0;var je=(c+(i=i+Math.imul(f,fe)|0)|0)+((8191&(n=(n=n+Math.imul(f,me)|0)+Math.imul(m,fe)|0))<<13)|0;c=((a=a+Math.imul(m,me)|0)+(n>>>13)|0)+(je>>>26)|0,je&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,V))+Math.imul(D,J)|0,a=Math.imul(D,V),i=i+Math.imul(B,G)|0,n=(n=n+Math.imul(B,Q)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,Q)|0,i=i+Math.imul(R,Y)|0,n=(n=n+Math.imul(R,ee)|0)+Math.imul(P,Y)|0,a=a+Math.imul(P,ee)|0,i=i+Math.imul(I,re)|0,n=(n=n+Math.imul(I,ie)|0)+Math.imul(A,re)|0,a=a+Math.imul(A,ie)|0,i=i+Math.imul(j,ae)|0,n=(n=n+Math.imul(j,oe)|0)+Math.imul(N,ae)|0,a=a+Math.imul(N,oe)|0,i=i+Math.imul(k,ue)|0,n=(n=n+Math.imul(k,ce)|0)+Math.imul(S,ue)|0,a=a+Math.imul(S,ce)|0,i=i+Math.imul(b,he)|0,n=(n=n+Math.imul(b,pe)|0)+Math.imul(w,he)|0,a=a+Math.imul(w,pe)|0;var Ne=(c+(i=i+Math.imul(v,fe)|0)|0)+((8191&(n=(n=n+Math.imul(v,me)|0)+Math.imul(y,fe)|0))<<13)|0;c=((a=a+Math.imul(y,me)|0)+(n>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,i=Math.imul(F,G),n=(n=Math.imul(F,Q))+Math.imul(D,G)|0,a=Math.imul(D,Q),i=i+Math.imul(B,Y)|0,n=(n=n+Math.imul(B,ee)|0)+Math.imul(C,Y)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(R,re)|0,n=(n=n+Math.imul(R,ie)|0)+Math.imul(P,re)|0,a=a+Math.imul(P,ie)|0,i=i+Math.imul(I,ae)|0,n=(n=n+Math.imul(I,oe)|0)+Math.imul(A,ae)|0,a=a+Math.imul(A,oe)|0,i=i+Math.imul(j,ue)|0,n=(n=n+Math.imul(j,ce)|0)+Math.imul(N,ue)|0,a=a+Math.imul(N,ce)|0,i=i+Math.imul(k,he)|0,n=(n=n+Math.imul(k,pe)|0)+Math.imul(S,he)|0,a=a+Math.imul(S,pe)|0;var Me=(c+(i=i+Math.imul(b,fe)|0)|0)+((8191&(n=(n=n+Math.imul(b,me)|0)+Math.imul(w,fe)|0))<<13)|0;c=((a=a+Math.imul(w,me)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(F,Y),n=(n=Math.imul(F,ee))+Math.imul(D,Y)|0,a=Math.imul(D,ee),i=i+Math.imul(B,re)|0,n=(n=n+Math.imul(B,ie)|0)+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(R,ae)|0,n=(n=n+Math.imul(R,oe)|0)+Math.imul(P,ae)|0,a=a+Math.imul(P,oe)|0,i=i+Math.imul(I,ue)|0,n=(n=n+Math.imul(I,ce)|0)+Math.imul(A,ue)|0,a=a+Math.imul(A,ce)|0,i=i+Math.imul(j,he)|0,n=(n=n+Math.imul(j,pe)|0)+Math.imul(N,he)|0,a=a+Math.imul(N,pe)|0;var Ie=(c+(i=i+Math.imul(k,fe)|0)|0)+((8191&(n=(n=n+Math.imul(k,me)|0)+Math.imul(S,fe)|0))<<13)|0;c=((a=a+Math.imul(S,me)|0)+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(F,re),n=(n=Math.imul(F,ie))+Math.imul(D,re)|0,a=Math.imul(D,ie),i=i+Math.imul(B,ae)|0,n=(n=n+Math.imul(B,oe)|0)+Math.imul(C,ae)|0,a=a+Math.imul(C,oe)|0,i=i+Math.imul(R,ue)|0,n=(n=n+Math.imul(R,ce)|0)+Math.imul(P,ue)|0,a=a+Math.imul(P,ce)|0,i=i+Math.imul(I,he)|0,n=(n=n+Math.imul(I,pe)|0)+Math.imul(A,he)|0,a=a+Math.imul(A,pe)|0;var Ae=(c+(i=i+Math.imul(j,fe)|0)|0)+((8191&(n=(n=n+Math.imul(j,me)|0)+Math.imul(N,fe)|0))<<13)|0;c=((a=a+Math.imul(N,me)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(F,ae),n=(n=Math.imul(F,oe))+Math.imul(D,ae)|0,a=Math.imul(D,oe),i=i+Math.imul(B,ue)|0,n=(n=n+Math.imul(B,ce)|0)+Math.imul(C,ue)|0,a=a+Math.imul(C,ce)|0,i=i+Math.imul(R,he)|0,n=(n=n+Math.imul(R,pe)|0)+Math.imul(P,he)|0,a=a+Math.imul(P,pe)|0;var Te=(c+(i=i+Math.imul(I,fe)|0)|0)+((8191&(n=(n=n+Math.imul(I,me)|0)+Math.imul(A,fe)|0))<<13)|0;c=((a=a+Math.imul(A,me)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(F,ue),n=(n=Math.imul(F,ce))+Math.imul(D,ue)|0,a=Math.imul(D,ce),i=i+Math.imul(B,he)|0,n=(n=n+Math.imul(B,pe)|0)+Math.imul(C,he)|0,a=a+Math.imul(C,pe)|0;var Re=(c+(i=i+Math.imul(R,fe)|0)|0)+((8191&(n=(n=n+Math.imul(R,me)|0)+Math.imul(P,fe)|0))<<13)|0;c=((a=a+Math.imul(P,me)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(F,he),n=(n=Math.imul(F,pe))+Math.imul(D,he)|0,a=Math.imul(D,pe);var Pe=(c+(i=i+Math.imul(B,fe)|0)|0)+((8191&(n=(n=n+Math.imul(B,me)|0)+Math.imul(C,fe)|0))<<13)|0;c=((a=a+Math.imul(C,me)|0)+(n>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var Oe=(c+(i=Math.imul(F,fe))|0)+((8191&(n=(n=Math.imul(F,me))+Math.imul(D,fe)|0))<<13)|0;return c=((a=Math.imul(D,me))+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ve,u[2]=ye,u[3]=_e,u[4]=be,u[5]=we,u[6]=Ee,u[7]=ke,u[8]=Se,u[9]=xe,u[10]=je,u[11]=Ne,u[12]=Me,u[13]=Ie,u[14]=Ae,u[15]=Te,u[16]=Re,u[17]=Pe,u[18]=Oe,0!==c&&(u[19]=c,r.length++),r};function m(e,t,r){return(new g).mulp(e,t,r)}function g(e,t){this.x=e,this.y=t}Math.imul||(f=d),a.prototype.mulTo=function(e,t){var r,i=this.length+e.length;return r=10===this.length&&10===e.length?f(this,e,t):i<63?d(this,e,t):i<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,i=o,o=n}return 0!==i?r.words[a]=i:r.length--,r.strip()}(this,e,t):m(this,e,t),r},g.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},g.prototype.permute=function(e,t,r,i,n,a){for(var o=0;o>>=1)n++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*t;o>=26,t+=n/67108864|0,t+=a>>>26,this.words[r]=67108863&a}return 0!==t&&(this.words[r]=t,this.length++),this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n}return t}(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,o=Math.min((e-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,c=0;c=0&&(0!==l||c>=n);c--){var h=0|this.words[c];this.words[c]=l<<26-a|h>>>a,l=h&s}return u&&0!==l&&(u.words[u.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===s)return this.strip();for(i(-1===s),s=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,o=0|n.words[n.length-1];0!=(r=26-this._countBits(o))&&(n=n.ushln(r),i.iushln(r),o=0|n.words[n.length-1]);var s,u=i.length-n.length;if("mod"!==t){(s=new a(null)).length=u+1,s.words=new Array(s.length);for(var c=0;c=0;h--){var p=67108864*(0|i.words[n.length+h])+(0|i.words[n.length+h-1]);for(p=Math.min(p/o|0,67108863),i._ishlnsubmul(n,p,h);0!==i.negative;)p--,i.negative=0,i._ishlnsubmul(n,1,h),i.isZero()||(i.negative^=1);s&&(s.words[h]=p)}return s&&s.strip(),i.strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(n=s.div.neg()),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:n,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modn(e.words[0]))}:this._wordDiv(e,t);var n,o,s},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modn=function(e){i(e<=67108863);for(var t=(1<<26)%e,r=0,n=this.length-1;n>=0;n--)r=(t*r+(0|this.words[n]))%e;return r},a.prototype.idivn=function(e){i(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*t;this.words[r]=n/e|0,t=n%e}return this.strip()},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new a(1),o=new a(0),s=new a(0),u=new a(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var l=r.clone(),h=t.clone();!t.isZero();){for(var p=0,d=1;0==(t.words[0]&d)&&p<26;++p,d<<=1);if(p>0)for(t.iushrn(p);p-- >0;)(n.isOdd()||o.isOdd())&&(n.iadd(l),o.isub(h)),n.iushrn(1),o.iushrn(1);for(var f=0,m=1;0==(r.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(r.iushrn(f);f-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(l),u.isub(h)),s.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(s),o.isub(u)):(r.isub(t),s.isub(n),u.isub(o))}return{a:s,b:u,gcd:r.iushln(c)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,o=new a(1),s=new a(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,l=1;0==(t.words[0]&l)&&c<26;++c,l<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);for(var h=0,p=1;0==(r.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s)):(r.isub(t),s.isub(o))}return(n=0===t.cmpn(1)?o:s).cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new k(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var v={k256:null,p224:null,p192:null,p25519:null};function y(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function _(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function E(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(e){if("string"==typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function S(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},y.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},y.prototype.split=function(e,t){e.iushrn(this.n,0,t)},y.prototype.imulK=function(e){return e.imul(this.k)},n(_,y),_.prototype.split=function(e,t){for(var r=4194303,i=Math.min(e.length,9),n=0;n>>22,a=o}a>>>=22,e.words[n-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},_.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(v[e])return v[e];var t;if("k256"===e)t=new _;else if("p224"===e)t=new b;else if("p192"===e)t=new w;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new E}return v[e]=t,t},k.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},k.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),o=0;!n.isZero()&&0===n.andln(1);)o++,n.iushrn(1);i(!n.isZero());var s=new a(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new a(2*l*l).toRed(this);0!==this.pow(l,c).cmp(u);)l.redIAdd(u);for(var h=this.pow(l,n),p=this.pow(e,n.addn(1).iushrn(1)),d=this.pow(e,n),f=o;0!==d.cmp(s);){for(var m=d,g=0;0!==m.cmp(s);g++)m=m.redSqr();i(g=0;i--){for(var c=t.words[i],l=u-1;l>=0;l--){var h=c>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==h||0!==o?(o<<=1,o|=h,(4==++s||0===i&&0===l)&&(n=this.mul(n,r[o]),s=0,o=0)):s=0}u=26}return n},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new S(e)},n(S,k),S.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},S.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},S.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},S.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=r.nmd(e),this)},55234:(e,t,r)=>{e.exports=r(53765)},80983:(e,t,r)=>{"use strict";var i,n,a,o=r(55234),s=r(26470).extname,u=/^\s*([^;\s]*)(?:;|\s|$)/,c=/^text\//i;function l(e){if(!e||"string"!=typeof e)return!1;var t=u.exec(e),r=t&&o[t[1].toLowerCase()];return r&&r.charset?r.charset:!(!t||!c.test(t[1]))&&"UTF-8"}t.charset=l,t.charsets={lookup:l},t.contentType=function(e){if(!e||"string"!=typeof e)return!1;var r=-1===e.indexOf("/")?t.lookup(e):e;if(!r)return!1;if(-1===r.indexOf("charset")){var i=t.charset(r);i&&(r+="; charset="+i.toLowerCase())}return r},t.extension=function(e){if(!e||"string"!=typeof e)return!1;var r=u.exec(e),i=r&&t.extensions[r[1].toLowerCase()];return!(!i||!i.length)&&i[0]},t.extensions=Object.create(null),t.lookup=function(e){if(!e||"string"!=typeof e)return!1;var r=s("x."+e).toLowerCase().substr(1);return r&&t.types[r]||!1},t.types=Object.create(null),i=t.extensions,n=t.types,a=["nginx","apache",void 0,"iana"],Object.keys(o).forEach((function(e){var t=o[e],r=t.extensions;if(r&&r.length){i[e]=r;for(var s=0;sl||c===l&&"application/"===n[u].substr(0,12)))continue}n[u]=e}}}))},79746:e=>{function t(e,t){if(!e)throw new Error(t||"Assertion failed")}e.exports=t,t.equal=function(e,t,r){if(e!=t)throw new Error(r||"Assertion failed: "+e+" != "+t)}},34504:(e,t)=>{"use strict";var r=t;function i(e){return 1===e.length?"0"+e:e}function n(e){for(var t="",r=0;r>8,o=255&n;a?r.push(a,o):r.push(o)}return r},r.zero2=i,r.toHex=n,r.encode=function(e,t){return"hex"===t?n(e):e}},85456:(e,t,r)=>{var i=r(85456);for(k in i)r.g[k]=i[k]},54586:(e,t,r)=>{var i=r(55835);function n(e,t,r){return i.createHmac(r,e).update(t).digest("base64")}function a(e){return encodeURIComponent(e).replace(/!/g,"%21").replace(/\*/g,"%2A").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/'/g,"%27")}function o(e,t){return e>t?1:e{"use strict";var t=function(e){return e!=e};e.exports=function(e,r){return 0===e&&0===r?1/e==1/r:e===r||!(!t(e)||!t(r))}},20609:(e,t,r)=>{"use strict";var i=r(4289),n=r(55559),a=r(24244),o=r(75624),s=r(52281),u=n(o(),Object);i(u,{getPolyfill:o,implementation:a,shim:s}),e.exports=u},75624:(e,t,r)=>{"use strict";var i=r(24244);e.exports=function(){return"function"==typeof Object.is?Object.is:i}},52281:(e,t,r)=>{"use strict";var i=r(75624),n=r(4289);e.exports=function(){var e=i();return n(Object,{is:e},{is:function(){return Object.is!==e}}),e}},18987:(e,t,r)=>{"use strict";var i;if(!Object.keys){var n=Object.prototype.hasOwnProperty,a=Object.prototype.toString,o=r(21414),s=Object.prototype.propertyIsEnumerable,u=!s.call({toString:null},"toString"),c=s.call((function(){}),"prototype"),l=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],h=function(e){var t=e.constructor;return t&&t.prototype===e},p={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},d=function(){if("undefined"==typeof window)return!1;for(var e in window)try{if(!p["$"+e]&&n.call(window,e)&&null!==window[e]&&"object"==typeof window[e])try{h(window[e])}catch(e){return!0}}catch(e){return!0}return!1}();i=function(e){var t=null!==e&&"object"==typeof e,r="[object Function]"===a.call(e),i=o(e),s=t&&"[object String]"===a.call(e),p=[];if(!t&&!r&&!i)throw new TypeError("Object.keys called on a non-object");var f=c&&r;if(s&&e.length>0&&!n.call(e,0))for(var m=0;m0)for(var g=0;g{"use strict";var i=Array.prototype.slice,n=r(21414),a=Object.keys,o=a?function(e){return a(e)}:r(18987),s=Object.keys;o.shim=function(){if(Object.keys){var e=function(){var e=Object.keys(arguments);return e&&e.length===arguments.length}(1,2);e||(Object.keys=function(e){return n(e)?s(i.call(e)):s(e)})}else Object.keys=o;return Object.keys||o},e.exports=o},21414:e=>{"use strict";var t=Object.prototype.toString;e.exports=function(e){var r=t.call(e),i="[object Arguments]"===r;return i||(i="[object Array]"!==r&&null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Function]"===t.call(e.callee)),i}},67435:(e,t)=>{t.bW="\n"},24236:(e,t)=>{"use strict";var r="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(var n in r)i(r,n)&&(e[n]=r[n])}}return e},t.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var n={arraySet:function(e,t,r,i,n){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+i),n);else for(var a=0;a{"use strict";e.exports=function(e,t,r,i){for(var n=65535&e|0,a=e>>>16&65535|0,o=0;0!==r;){r-=o=r>2e3?2e3:r;do{a=a+(n=n+t[i++]|0)|0}while(--o);n%=65521,a%=65521}return n|a<<16|0}},71619:e=>{"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},2869:e=>{"use strict";var t=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var i=0;i<8;i++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();e.exports=function(e,r,i,n){var a=t,o=n+i;e^=-1;for(var s=n;s>>8^a[255&(e^r[s])];return-1^e}},30405:(e,t,r)=>{"use strict";var i,n=r(24236),a=r(10342),o=r(66069),s=r(2869),u=r(48898),c=-2,l=258,h=262,p=103,d=113,f=666;function m(e,t){return e.msg=u[t],t}function g(e){return(e<<1)-(e>4?9:0)}function v(e){for(var t=e.length;--t>=0;)e[t]=0}function y(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(n.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function _(e,t){a._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,y(e.strm)}function b(e,t){e.pending_buf[e.pending++]=t}function w(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function E(e,t){var r,i,n=e.max_chain_length,a=e.strstart,o=e.prev_length,s=e.nice_match,u=e.strstart>e.w_size-h?e.strstart-(e.w_size-h):0,c=e.window,p=e.w_mask,d=e.prev,f=e.strstart+l,m=c[a+o-1],g=c[a+o];e.prev_length>=e.good_match&&(n>>=2),s>e.lookahead&&(s=e.lookahead);do{if(c[(r=t)+o]===g&&c[r+o-1]===m&&c[r]===c[a]&&c[++r]===c[a+1]){a+=2,r++;do{}while(c[++a]===c[++r]&&c[++a]===c[++r]&&c[++a]===c[++r]&&c[++a]===c[++r]&&c[++a]===c[++r]&&c[++a]===c[++r]&&c[++a]===c[++r]&&c[++a]===c[++r]&&ao){if(e.match_start=t,o=i,i>=s)break;m=c[a+o-1],g=c[a+o]}}}while((t=d[t&p])>u&&0!=--n);return o<=e.lookahead?o:e.lookahead}function k(e){var t,r,i,a,u,c,l,p,d,f,m=e.w_size;do{if(a=e.window_size-e.lookahead-e.strstart,e.strstart>=m+(m-h)){n.arraySet(e.window,e.window,m,m,0),e.match_start-=m,e.strstart-=m,e.block_start-=m,t=r=e.hash_size;do{i=e.head[--t],e.head[t]=i>=m?i-m:0}while(--r);t=r=m;do{i=e.prev[--t],e.prev[t]=i>=m?i-m:0}while(--r);a+=m}if(0===e.strm.avail_in)break;if(c=e.strm,l=e.window,p=e.strstart+e.lookahead,d=a,f=void 0,(f=c.avail_in)>d&&(f=d),r=0===f?0:(c.avail_in-=f,n.arraySet(l,c.input,c.next_in,f,p),1===c.state.wrap?c.adler=o(c.adler,l,f,p):2===c.state.wrap&&(c.adler=s(c.adler,l,f,p)),c.next_in+=f,c.total_in+=f,f),e.lookahead+=r,e.lookahead+e.insert>=3)for(u=e.strstart-e.insert,e.ins_h=e.window[u],e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<=3)if(i=a._tr_tally(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){n=e.strstart+e.lookahead-3,i=a._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=n&&(e.ins_h=(e.ins_h<15&&(s=2,i-=16),a<1||a>9||8!==r||i<8||i>15||t<0||t>9||o<0||o>4)return m(e,c);8===i&&(i=9);var u=new N;return e.state=u,u.strm=e,u.wrap=s,u.gzhead=null,u.w_bits=i,u.w_size=1<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(k(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var i=e.block_start+r;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,_(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-h&&(_(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(_(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(_(e,!1),e.strm.avail_out),1)})),new j(4,4,8,4,S),new j(4,5,16,8,S),new j(4,6,32,32,S),new j(4,4,16,16,x),new j(8,16,32,32,x),new j(8,16,128,128,x),new j(8,32,128,256,x),new j(32,128,258,1024,x),new j(32,258,258,4096,x)],t.deflateInit=function(e,t){return A(e,t,8,15,8,0)},t.deflateInit2=A,t.deflateReset=I,t.deflateResetKeep=M,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?c:(e.state.gzhead=t,0):c},t.deflate=function(e,t){var r,n,o,u;if(!e||!e.state||t>5||t<0)return e?m(e,c):c;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||n.status===f&&4!==t)return m(e,0===e.avail_out?-5:c);if(n.strm=e,r=n.last_flush,n.last_flush=t,42===n.status)if(2===n.wrap)e.adler=0,b(n,31),b(n,139),b(n,8),n.gzhead?(b(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),b(n,255&n.gzhead.time),b(n,n.gzhead.time>>8&255),b(n,n.gzhead.time>>16&255),b(n,n.gzhead.time>>24&255),b(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),b(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(b(n,255&n.gzhead.extra.length),b(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=s(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(b(n,0),b(n,0),b(n,0),b(n,0),b(n,0),b(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),b(n,3),n.status=d);else{var h=8+(n.w_bits-8<<4)<<8;h|=(n.strategy>=2||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(h|=32),h+=31-h%31,n.status=d,w(n,h),0!==n.strstart&&(w(n,e.adler>>>16),w(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(o=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>o&&(e.adler=s(e.adler,n.pending_buf,n.pending-o,o)),y(e),o=n.pending,n.pending!==n.pending_buf_size));)b(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>o&&(e.adler=s(e.adler,n.pending_buf,n.pending-o,o)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){o=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>o&&(e.adler=s(e.adler,n.pending_buf,n.pending-o,o)),y(e),o=n.pending,n.pending===n.pending_buf_size)){u=1;break}u=n.gzindexo&&(e.adler=s(e.adler,n.pending_buf,n.pending-o,o)),0===u&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){o=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>o&&(e.adler=s(e.adler,n.pending_buf,n.pending-o,o)),y(e),o=n.pending,n.pending===n.pending_buf_size)){u=1;break}u=n.gzindexo&&(e.adler=s(e.adler,n.pending_buf,n.pending-o,o)),0===u&&(n.status=p)}else n.status=p;if(n.status===p&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&y(e),n.pending+2<=n.pending_buf_size&&(b(n,255&e.adler),b(n,e.adler>>8&255),e.adler=0,n.status=d)):n.status=d),0!==n.pending){if(y(e),0===e.avail_out)return n.last_flush=-1,0}else if(0===e.avail_in&&g(t)<=g(r)&&4!==t)return m(e,-5);if(n.status===f&&0!==e.avail_in)return m(e,-5);if(0!==e.avail_in||0!==n.lookahead||0!==t&&n.status!==f){var E=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(k(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(_(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(_(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(_(e,!1),0===e.strm.avail_out)?1:2}(n,t):3===n.strategy?function(e,t){for(var r,i,n,o,s=e.window;;){if(e.lookahead<=l){if(k(e),e.lookahead<=l&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(i=s[n=e.strstart-1])===s[++n]&&i===s[++n]&&i===s[++n]){o=e.strstart+l;do{}while(i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&ne.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(r=a._tr_tally(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(_(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(_(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(_(e,!1),0===e.strm.avail_out)?1:2}(n,t):i[n.level].func(n,t);if(3!==E&&4!==E||(n.status=f),1===E||3===E)return 0===e.avail_out&&(n.last_flush=-1),0;if(2===E&&(1===t?a._tr_align(n):5!==t&&(a._tr_stored_block(n,0,0,!1),3===t&&(v(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),y(e),0===e.avail_out))return n.last_flush=-1,0}return 4!==t?0:n.wrap<=0?1:(2===n.wrap?(b(n,255&e.adler),b(n,e.adler>>8&255),b(n,e.adler>>16&255),b(n,e.adler>>24&255),b(n,255&e.total_in),b(n,e.total_in>>8&255),b(n,e.total_in>>16&255),b(n,e.total_in>>24&255)):(w(n,e.adler>>>16),w(n,65535&e.adler)),y(e),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?0:1)},t.deflateEnd=function(e){var t;return e&&e.state?42!==(t=e.state.status)&&69!==t&&73!==t&&91!==t&&t!==p&&t!==d&&t!==f?m(e,c):(e.state=null,t===d?m(e,-3):0):c},t.deflateSetDictionary=function(e,t){var r,i,a,s,u,l,h,p,d=t.length;if(!e||!e.state)return c;if(2===(s=(r=e.state).wrap)||1===s&&42!==r.status||r.lookahead)return c;for(1===s&&(e.adler=o(e.adler,t,d,0)),r.wrap=0,d>=r.w_size&&(0===s&&(v(r.head),r.strstart=0,r.block_start=0,r.insert=0),p=new n.Buf8(r.w_size),n.arraySet(p,t,d-r.w_size,r.w_size,0),t=p,d=r.w_size),u=e.avail_in,l=e.next_in,h=e.input,e.avail_in=d,e.next_in=0,e.input=t,k(r);r.lookahead>=3;){i=r.strstart,a=r.lookahead-2;do{r.ins_h=(r.ins_h<{"use strict";e.exports=function(e,t){var r,i,n,a,o,s,u,c,l,h,p,d,f,m,g,v,y,_,b,w,E,k,S,x,j;r=e.state,i=e.next_in,x=e.input,n=i+(e.avail_in-5),a=e.next_out,j=e.output,o=a-(t-e.avail_out),s=a+(e.avail_out-257),u=r.dmax,c=r.wsize,l=r.whave,h=r.wnext,p=r.window,d=r.hold,f=r.bits,m=r.lencode,g=r.distcode,v=(1<>>=b=_>>>24,f-=b,0==(b=_>>>16&255))j[a++]=65535&_;else{if(!(16&b)){if(0==(64&b)){_=m[(65535&_)+(d&(1<>>=b,f-=b),f<15&&(d+=x[i++]<>>=b=_>>>24,f-=b,!(16&(b=_>>>16&255))){if(0==(64&b)){_=g[(65535&_)+(d&(1<u){e.msg="invalid distance too far back",r.mode=30;break e}if(d>>>=b,f-=b,E>(b=a-o)){if((b=E-b)>l&&r.sane){e.msg="invalid distance too far back",r.mode=30;break e}if(k=0,S=p,0===h){if(k+=c-b,b2;)j[a++]=S[k++],j[a++]=S[k++],j[a++]=S[k++],w-=3;w&&(j[a++]=S[k++],w>1&&(j[a++]=S[k++]))}else{k=a-E;do{j[a++]=j[k++],j[a++]=j[k++],j[a++]=j[k++],w-=3}while(w>2);w&&(j[a++]=j[k++],w>1&&(j[a++]=j[k++]))}break}}break}}while(i>3,d&=(1<<(f-=w<<3))-1,e.next_in=i,e.next_out=a,e.avail_in=i{"use strict";var i=r(24236),n=r(66069),a=r(2869),o=r(94264),s=r(9241),u=-2,c=12,l=30;function h(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function p(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function d(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new i.Buf32(852),t.distcode=t.distdyn=new i.Buf32(592),t.sane=1,t.back=-1,0):u}function f(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,d(e)):u}function m(e,t){var r,i;return e&&e.state?(i=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?u:(null!==i.window&&i.wbits!==t&&(i.window=null),i.wrap=r,i.wbits=t,f(e))):u}function g(e,t){var r,i;return e?(i=new p,e.state=i,i.window=null,0!==(r=m(e,t))&&(e.state=null),r):u}var v,y,_=!0;function b(e){if(_){var t;for(v=new i.Buf32(512),y=new i.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(s(1,e.lens,0,288,v,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;s(2,e.lens,0,32,y,0,e.work,{bits:5}),_=!1}e.lencode=v,e.lenbits=9,e.distcode=y,e.distbits=5}function w(e,t,r,n){var a,o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(i.arraySet(o.window,t,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((a=o.wsize-o.wnext)>n&&(a=n),i.arraySet(o.window,t,r-n,a,o.wnext),(n-=a)?(i.arraySet(o.window,t,r-n,n,0),o.wnext=n,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,r.check=a(r.check,F,2,0),y=0,_=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&y)<<8)+(y>>8))%31){e.msg="incorrect header check",r.mode=l;break}if(8!=(15&y)){e.msg="unknown compression method",r.mode=l;break}if(_-=4,P=8+(15&(y>>>=4)),0===r.wbits)r.wbits=P;else if(P>r.wbits){e.msg="invalid window size",r.mode=l;break}r.dmax=1<>8&1),512&r.flags&&(F[0]=255&y,F[1]=y>>>8&255,r.check=a(r.check,F,2,0)),y=0,_=0,r.mode=3;case 3:for(;_<32;){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}r.head&&(r.head.time=y),512&r.flags&&(F[0]=255&y,F[1]=y>>>8&255,F[2]=y>>>16&255,F[3]=y>>>24&255,r.check=a(r.check,F,4,0)),y=0,_=0,r.mode=4;case 4:for(;_<16;){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}r.head&&(r.head.xflags=255&y,r.head.os=y>>8),512&r.flags&&(F[0]=255&y,F[1]=y>>>8&255,r.check=a(r.check,F,2,0)),y=0,_=0,r.mode=5;case 5:if(1024&r.flags){for(;_<16;){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}r.length=y,r.head&&(r.head.extra_len=y),512&r.flags&&(F[0]=255&y,F[1]=y>>>8&255,r.check=a(r.check,F,2,0)),y=0,_=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((S=r.length)>g&&(S=g),S&&(r.head&&(P=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),i.arraySet(r.head.extra,p,f,S,P)),512&r.flags&&(r.check=a(r.check,p,S,f)),g-=S,f+=S,r.length-=S),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===g)break e;S=0;do{P=p[f+S++],r.head&&P&&r.length<65536&&(r.head.name+=String.fromCharCode(P))}while(P&&S>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=c;break;case 10:for(;_<32;){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}e.adler=r.check=h(y),y=0,_=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=m,e.avail_out=v,e.next_in=f,e.avail_in=g,r.hold=y,r.bits=_,2;e.adler=r.check=1,r.mode=c;case c:if(5===t||6===t)break e;case 13:if(r.last){y>>>=7&_,_-=7&_,r.mode=27;break}for(;_<3;){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}switch(r.last=1&y,_-=1,3&(y>>>=1)){case 0:r.mode=14;break;case 1:if(b(r),r.mode=20,6===t){y>>>=2,_-=2;break e}break;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=l}y>>>=2,_-=2;break;case 14:for(y>>>=7&_,_-=7&_;_<32;){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}if((65535&y)!=(y>>>16^65535)){e.msg="invalid stored block lengths",r.mode=l;break}if(r.length=65535&y,y=0,_=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(S=r.length){if(S>g&&(S=g),S>v&&(S=v),0===S)break e;i.arraySet(d,p,f,S,m),g-=S,f+=S,v-=S,m+=S,r.length-=S;break}r.mode=c;break;case 17:for(;_<14;){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}if(r.nlen=257+(31&y),y>>>=5,_-=5,r.ndist=1+(31&y),y>>>=5,_-=5,r.ncode=4+(15&y),y>>>=4,_-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=l;break}r.have=0,r.mode=18;case 18:for(;r.have>>=3,_-=3}for(;r.have<19;)r.lens[D[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,B={bits:r.lenbits},O=s(0,r.lens,0,19,r.lencode,0,r.work,B),r.lenbits=B.bits,O){e.msg="invalid code lengths set",r.mode=l;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,I=65535&z,!((N=z>>>24)<=_);){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}if(I<16)y>>>=N,_-=N,r.lens[r.have++]=I;else{if(16===I){for(C=N+2;_>>=N,_-=N,0===r.have){e.msg="invalid bit length repeat",r.mode=l;break}P=r.lens[r.have-1],S=3+(3&y),y>>>=2,_-=2}else if(17===I){for(C=N+3;_>>=N)),y>>>=3,_-=3}else{for(C=N+7;_>>=N)),y>>>=7,_-=7}if(r.have+S>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=l;break}for(;S--;)r.lens[r.have++]=P}}if(r.mode===l)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=l;break}if(r.lenbits=9,B={bits:r.lenbits},O=s(1,r.lens,0,r.nlen,r.lencode,0,r.work,B),r.lenbits=B.bits,O){e.msg="invalid literal/lengths set",r.mode=l;break}if(r.distbits=6,r.distcode=r.distdyn,B={bits:r.distbits},O=s(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,B),r.distbits=B.bits,O){e.msg="invalid distances set",r.mode=l;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(g>=6&&v>=258){e.next_out=m,e.avail_out=v,e.next_in=f,e.avail_in=g,r.hold=y,r.bits=_,o(e,k),m=e.next_out,d=e.output,v=e.avail_out,f=e.next_in,p=e.input,g=e.avail_in,y=r.hold,_=r.bits,r.mode===c&&(r.back=-1);break}for(r.back=0;M=(z=r.lencode[y&(1<>>16&255,I=65535&z,!((N=z>>>24)<=_);){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}if(M&&0==(240&M)){for(A=N,T=M,R=I;M=(z=r.lencode[R+((y&(1<>A)])>>>16&255,I=65535&z,!(A+(N=z>>>24)<=_);){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}y>>>=A,_-=A,r.back+=A}if(y>>>=N,_-=N,r.back+=N,r.length=I,0===M){r.mode=26;break}if(32&M){r.back=-1,r.mode=c;break}if(64&M){e.msg="invalid literal/length code",r.mode=l;break}r.extra=15&M,r.mode=22;case 22:if(r.extra){for(C=r.extra;_>>=r.extra,_-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;M=(z=r.distcode[y&(1<>>16&255,I=65535&z,!((N=z>>>24)<=_);){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}if(0==(240&M)){for(A=N,T=M,R=I;M=(z=r.distcode[R+((y&(1<>A)])>>>16&255,I=65535&z,!(A+(N=z>>>24)<=_);){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}y>>>=A,_-=A,r.back+=A}if(y>>>=N,_-=N,r.back+=N,64&M){e.msg="invalid distance code",r.mode=l;break}r.offset=I,r.extra=15&M,r.mode=24;case 24:if(r.extra){for(C=r.extra;_>>=r.extra,_-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=l;break}r.mode=25;case 25:if(0===v)break e;if(S=k-v,r.offset>S){if((S=r.offset-S)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=l;break}S>r.wnext?(S-=r.wnext,x=r.wsize-S):x=r.wnext-S,S>r.length&&(S=r.length),j=r.window}else j=d,x=m-r.offset,S=r.length;S>v&&(S=v),v-=S,r.length-=S;do{d[m++]=j[x++]}while(--S);0===r.length&&(r.mode=21);break;case 26:if(0===v)break e;d[m++]=r.length,v--,r.mode=21;break;case 27:if(r.wrap){for(;_<32;){if(0===g)break e;g--,y|=p[f++]<<_,_+=8}if(k-=v,e.total_out+=k,r.total+=k,k&&(e.adler=r.check=r.flags?a(r.check,d,k,m-k):n(r.check,d,k,m-k)),k=v,(r.flags?y:h(y))!==r.check){e.msg="incorrect data check",r.mode=l;break}y=0,_=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;_<32;){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}if(y!==(4294967295&r.total)){e.msg="incorrect length check",r.mode=l;break}y=0,_=0}r.mode=29;case 29:O=1;break e;case l:O=-3;break e;case 31:return-4;default:return u}return e.next_out=m,e.avail_out=v,e.next_in=f,e.avail_in=g,r.hold=y,r.bits=_,(r.wsize||k!==e.avail_out&&r.mode{"use strict";var i=r(24236),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],a=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],s=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(e,t,r,u,c,l,h,p){var d,f,m,g,v,y,_,b,w,E=p.bits,k=0,S=0,x=0,j=0,N=0,M=0,I=0,A=0,T=0,R=0,P=null,O=0,B=new i.Buf16(16),C=new i.Buf16(16),z=null,F=0;for(k=0;k<=15;k++)B[k]=0;for(S=0;S=1&&0===B[j];j--);if(N>j&&(N=j),0===j)return c[l++]=20971520,c[l++]=20971520,p.bits=1,0;for(x=1;x0&&(0===e||1!==j))return-1;for(C[1]=0,k=1;k<15;k++)C[k+1]=C[k]+B[k];for(S=0;S852||2===e&&T>592)return 1;for(;;){_=k-I,h[S]y?(b=z[F+h[S]],w=P[O+h[S]]):(b=96,w=0),d=1<>I)+(f-=d)]=_<<24|b<<16|w|0}while(0!==f);for(d=1<>=1;if(0!==d?(R&=d-1,R+=d):R=0,S++,0==--B[k]){if(k===j)break;k=t[r+h[S]]}if(k>N&&(R&g)!==m){for(0===I&&(I=N),v+=x,A=1<<(M=k-I);M+I852||2===e&&T>592)return 1;c[m=R&g]=N<<24|M<<16|v-l|0}}return 0!==R&&(c[v+R]=k-I<<24|64<<16|0),p.bits=N,0}},48898:e=>{"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},10342:(e,t,r)=>{"use strict";var i=r(24236);function n(e){for(var t=e.length;--t>=0;)e[t]=0}var a=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],o=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],u=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],c=new Array(576);n(c);var l=new Array(60);n(l);var h=new Array(512);n(h);var p=new Array(256);n(p);var d=new Array(29);n(d);var f,m,g,v=new Array(30);function y(e,t,r,i,n){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=i,this.max_length=n,this.has_stree=e&&e.length}function _(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function b(e){return e<256?h[e]:h[256+(e>>>7)]}function w(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function E(e,t,r){e.bi_valid>16-r?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=r-16):(e.bi_buf|=t<>>=1,r<<=1}while(--t>0);return r>>>1}function x(e,t,r){var i,n,a=new Array(16),o=0;for(i=1;i<=15;i++)a[i]=o=o+r[i-1]<<1;for(n=0;n<=t;n++){var s=e[2*n+1];0!==s&&(e[2*n]=S(a[s]++,s))}}function j(e){var t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function N(e){e.bi_valid>8?w(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function M(e,t,r,i){var n=2*t,a=2*r;return e[n]>1;r>=1;r--)I(e,a,r);n=u;do{r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],I(e,a,1),i=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=i,a[2*n]=a[2*r]+a[2*i],e.depth[n]=(e.depth[r]>=e.depth[i]?e.depth[r]:e.depth[i])+1,a[2*r+1]=a[2*i+1]=n,e.heap[1]=n++,I(e,a,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,i,n,a,o,s,u=t.dyn_tree,c=t.max_code,l=t.stat_desc.static_tree,h=t.stat_desc.has_stree,p=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,f=t.stat_desc.max_length,m=0;for(a=0;a<=15;a++)e.bl_count[a]=0;for(u[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<573;r++)(a=u[2*u[2*(i=e.heap[r])+1]+1]+1)>f&&(a=f,m++),u[2*i+1]=a,i>c||(e.bl_count[a]++,o=0,i>=d&&(o=p[i-d]),s=u[2*i],e.opt_len+=s*(a+o),h&&(e.static_len+=s*(l[2*i+1]+o)));if(0!==m){do{for(a=f-1;0===e.bl_count[a];)a--;e.bl_count[a]--,e.bl_count[a+1]+=2,e.bl_count[f]--,m-=2}while(m>0);for(a=f;0!==a;a--)for(i=e.bl_count[a];0!==i;)(n=e.heap[--r])>c||(u[2*n+1]!==a&&(e.opt_len+=(a-u[2*n+1])*u[2*n],u[2*n+1]=a),i--)}}(e,t),x(a,c,e.bl_count)}function R(e,t,r){var i,n,a=-1,o=t[1],s=0,u=7,c=4;for(0===o&&(u=138,c=3),t[2*(r+1)+1]=65535,i=0;i<=r;i++)n=o,o=t[2*(i+1)+1],++s>=7;i<30;i++)for(v[i]=n<<7,e=0;e<1<0?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),T(e,e.l_desc),T(e,e.d_desc),o=function(e){var t;for(R(e,e.dyn_ltree,e.l_desc.max_code),R(e,e.dyn_dtree,e.d_desc.max_code),T(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*u[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),n=e.opt_len+3+7>>>3,(a=e.static_len+3+7>>>3)<=n&&(n=a)):n=a=r+5,r+4<=n&&-1!==t?B(e,t,r,i):4===e.strategy||a===n?(E(e,2+(i?1:0),3),A(e,c,l)):(E(e,4+(i?1:0),3),function(e,t,r,i){var n;for(E(e,t-257,5),E(e,r-1,5),E(e,i-4,4),n=0;n>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(p[r]+256+1)]++,e.dyn_dtree[2*b(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){E(e,2,3),k(e,256,c),function(e){16===e.bi_valid?(w(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},62292:e=>{"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},52818:(e,t,r)=>{"use strict";var i=r(39809);t.certificate=r(41934);var n=i.define("RSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())}));t.RSAPrivateKey=n;var a=i.define("RSAPublicKey",(function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())}));t.RSAPublicKey=a;var o=i.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(s),this.key("subjectPublicKey").bitstr())}));t.PublicKey=o;var s=i.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())})),u=i.define("PrivateKeyInfo",(function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(s),this.key("subjectPrivateKey").octstr())}));t.PrivateKey=u;var c=i.define("EncryptedPrivateKeyInfo",(function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())}));t.EncryptedPrivateKey=c;var l=i.define("DSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())}));t.DSAPrivateKey=l,t.DSAparam=i.define("DSAparam",(function(){this.int()}));var h=i.define("ECPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(p),this.key("publicKey").optional().explicit(1).bitstr())}));t.ECPrivateKey=h;var p=i.define("ECParameters",(function(){this.choice({namedCurve:this.objid()})}));t.signature=i.define("signature",(function(){this.seq().obj(this.key("r").int(),this.key("s").int())}))},41934:(e,t,r)=>{"use strict";var i=r(39809),n=i.define("Time",(function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})})),a=i.define("AttributeTypeValue",(function(){this.seq().obj(this.key("type").objid(),this.key("value").any())})),o=i.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())})),s=i.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(o),this.key("subjectPublicKey").bitstr())})),u=i.define("RelativeDistinguishedName",(function(){this.setof(a)})),c=i.define("RDNSequence",(function(){this.seqof(u)})),l=i.define("Name",(function(){this.choice({rdnSequence:this.use(c)})})),h=i.define("Validity",(function(){this.seq().obj(this.key("notBefore").use(n),this.key("notAfter").use(n))})),p=i.define("Extension",(function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())})),d=i.define("TBSCertificate",(function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(o),this.key("issuer").use(l),this.key("validity").use(h),this.key("subject").use(l),this.key("subjectPublicKeyInfo").use(s),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(p).optional())})),f=i.define("X509Certificate",(function(){this.seq().obj(this.key("tbsCertificate").use(d),this.key("signatureAlgorithm").use(o),this.key("signatureValue").bitstr())}));e.exports=f},77631:(e,t,r)=>{var i=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,n=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,a=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,o=r(13048),s=r(44696),u=r(89509).Buffer;e.exports=function(e,t){var r,c=e.toString(),l=c.match(i);if(l){var h="aes"+l[1],p=u.from(l[2],"hex"),d=u.from(l[3].replace(/[\r\n]/g,""),"base64"),f=o(t,p.slice(0,8),parseInt(l[1],10)).key,m=[],g=s.createDecipheriv(h,f,p);m.push(g.update(d)),m.push(g.final()),r=u.concat(m)}else{var v=c.match(a);r=u.from(v[2].replace(/[\r\n]/g,""),"base64")}return{tag:c.match(n)[1],data:r}}},70980:(e,t,r)=>{var i=r(52818),n=r(22562),a=r(77631),o=r(44696),s=r(25632),u=r(89509).Buffer;function c(e){var t;"object"!=typeof e||u.isBuffer(e)||(t=e.passphrase,e=e.key),"string"==typeof e&&(e=u.from(e));var r,c,l=a(e,t),h=l.tag,p=l.data;switch(h){case"CERTIFICATE":c=i.certificate.decode(p,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(c||(c=i.PublicKey.decode(p,"der")),r=c.algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return i.RSAPublicKey.decode(c.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return c.subjectPrivateKey=c.subjectPublicKey,{type:"ec",data:c};case"1.2.840.10040.4.1":return c.algorithm.params.pub_key=i.DSAparam.decode(c.subjectPublicKey.data,"der"),{type:"dsa",data:c.algorithm.params};default:throw new Error("unknown key id "+r)}case"ENCRYPTED PRIVATE KEY":p=function(e,t){var r=e.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(e.algorithm.decrypt.kde.kdeparams.iters.toString(),10),a=n[e.algorithm.decrypt.cipher.algo.join(".")],c=e.algorithm.decrypt.cipher.iv,l=e.subjectPrivateKey,h=parseInt(a.split("-")[1],10)/8,p=s.pbkdf2Sync(t,r,i,h,"sha1"),d=o.createDecipheriv(a,p,c),f=[];return f.push(d.update(l)),f.push(d.final()),u.concat(f)}(p=i.EncryptedPrivateKey.decode(p,"der"),t);case"PRIVATE KEY":switch(r=(c=i.PrivateKey.decode(p,"der")).algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return i.RSAPrivateKey.decode(c.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:c.algorithm.curve,privateKey:i.ECPrivateKey.decode(c.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return c.algorithm.params.priv_key=i.DSAparam.decode(c.subjectPrivateKey,"der"),{type:"dsa",params:c.algorithm.params};default:throw new Error("unknown key id "+r)}case"RSA PUBLIC KEY":return i.RSAPublicKey.decode(p,"der");case"RSA PRIVATE KEY":return i.RSAPrivateKey.decode(p,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:i.DSAPrivateKey.decode(p,"der")};case"EC PRIVATE KEY":return{curve:(p=i.ECPrivateKey.decode(p,"der")).parameters.value,privateKey:p.privateKey};default:throw new Error("unknown key type "+h)}}e.exports=c,c.signature=i.signature},26470:(e,t,r)=>{"use strict";var i=r(34155);function n(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function a(e,t){for(var r,i="",n=0,a=-1,o=0,s=0;s<=e.length;++s){if(s2){var u=i.lastIndexOf("/");if(u!==i.length-1){-1===u?(i="",n=0):n=(i=i.slice(0,u)).length-1-i.lastIndexOf("/"),a=s,o=0;continue}}else if(2===i.length||1===i.length){i="",n=0,a=s,o=0;continue}t&&(i.length>0?i+="/..":i="..",n=2)}else i.length>0?i+="/"+e.slice(a+1,s):i=e.slice(a+1,s),n=s-a-1;a=s,o=0}else 46===r&&-1!==o?++o:o=-1}return i}var o={resolve:function(){for(var e,t="",r=!1,o=arguments.length-1;o>=-1&&!r;o--){var s;o>=0?s=arguments[o]:(void 0===e&&(e=i.cwd()),s=e),n(s),0!==s.length&&(t=s+"/"+t,r=47===s.charCodeAt(0))}return t=a(t,!r),r?t.length>0?"/"+t:"/":t.length>0?t:"."},normalize:function(e){if(n(e),0===e.length)return".";var t=47===e.charCodeAt(0),r=47===e.charCodeAt(e.length-1);return 0!==(e=a(e,!t)).length||t||(e="."),e.length>0&&r&&(e+="/"),t?"/"+e:e},isAbsolute:function(e){return n(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,t=0;t0&&(void 0===e?e=r:e+="/"+r)}return void 0===e?".":o.normalize(e)},relative:function(e,t){if(n(e),n(t),e===t)return"";if((e=o.resolve(e))===(t=o.resolve(t)))return"";for(var r=1;rc){if(47===t.charCodeAt(s+h))return t.slice(s+h+1);if(0===h)return t.slice(s+h)}else a>c&&(47===e.charCodeAt(r+h)?l=h:0===h&&(l=0));break}var p=e.charCodeAt(r+h);if(p!==t.charCodeAt(s+h))break;47===p&&(l=h)}var d="";for(h=r+l+1;h<=i;++h)h!==i&&47!==e.charCodeAt(h)||(0===d.length?d+="..":d+="/..");return d.length>0?d+t.slice(s+l):(s+=l,47===t.charCodeAt(s)&&++s,t.slice(s))},_makeLong:function(e){return e},dirname:function(e){if(n(e),0===e.length)return".";for(var t=e.charCodeAt(0),r=47===t,i=-1,a=!0,o=e.length-1;o>=1;--o)if(47===(t=e.charCodeAt(o))){if(!a){i=o;break}}else a=!1;return-1===i?r?"/":".":r&&1===i?"//":e.slice(0,i)},basename:function(e,t){if(void 0!==t&&"string"!=typeof t)throw new TypeError('"ext" argument must be a string');n(e);var r,i=0,a=-1,o=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t.length===e.length&&t===e)return"";var s=t.length-1,u=-1;for(r=e.length-1;r>=0;--r){var c=e.charCodeAt(r);if(47===c){if(!o){i=r+1;break}}else-1===u&&(o=!1,u=r+1),s>=0&&(c===t.charCodeAt(s)?-1==--s&&(a=r):(s=-1,a=u))}return i===a?a=u:-1===a&&(a=e.length),e.slice(i,a)}for(r=e.length-1;r>=0;--r)if(47===e.charCodeAt(r)){if(!o){i=r+1;break}}else-1===a&&(o=!1,a=r+1);return-1===a?"":e.slice(i,a)},extname:function(e){n(e);for(var t=-1,r=0,i=-1,a=!0,o=0,s=e.length-1;s>=0;--s){var u=e.charCodeAt(s);if(47!==u)-1===i&&(a=!1,i=s+1),46===u?-1===t?t=s:1!==o&&(o=1):-1!==t&&(o=-1);else if(!a){r=s+1;break}}return-1===t||-1===i||0===o||1===o&&t===i-1&&t===r+1?"":e.slice(t,i)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var r=t.dir||t.root,i=t.base||(t.name||"")+(t.ext||"");return r?r===t.root?r+i:r+"/"+i:i}(0,e)},parse:function(e){n(e);var t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;var r,i=e.charCodeAt(0),a=47===i;a?(t.root="/",r=1):r=0;for(var o=-1,s=0,u=-1,c=!0,l=e.length-1,h=0;l>=r;--l)if(47!==(i=e.charCodeAt(l)))-1===u&&(c=!1,u=l+1),46===i?-1===o?o=l:1!==h&&(h=1):-1!==o&&(h=-1);else if(!c){s=l+1;break}return-1===o||-1===u||0===h||1===h&&o===u-1&&o===s+1?-1!==u&&(t.base=t.name=0===s&&a?e.slice(1,u):e.slice(s,u)):(0===s&&a?(t.name=e.slice(1,o),t.base=e.slice(1,u)):(t.name=e.slice(s,o),t.base=e.slice(s,u)),t.ext=e.slice(o,u)),s>0?t.dir=e.slice(0,s-1):a&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};o.posix=o,e.exports=o},25632:(e,t,r)=>{t.pbkdf2=r(88638),t.pbkdf2Sync=r(91257)},88638:(e,t,r)=>{var i,n,a=r(89509).Buffer,o=r(77357),s=r(12368),u=r(91257),c=r(57777),l=r.g.crypto&&r.g.crypto.subtle,h={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},p=[];function d(){return n||(n=r.g.process&&r.g.process.nextTick?r.g.process.nextTick:r.g.queueMicrotask?r.g.queueMicrotask:r.g.setImmediate?r.g.setImmediate:r.g.setTimeout)}function f(e,t,r,i,n){return l.importKey("raw",e,{name:"PBKDF2"},!1,["deriveBits"]).then((function(e){return l.deriveBits({name:"PBKDF2",salt:t,iterations:r,hash:{name:n}},e,i<<3)})).then((function(e){return a.from(e)}))}e.exports=function(e,t,n,m,g,v){"function"==typeof g&&(v=g,g=void 0);var y=h[(g=g||"sha1").toLowerCase()];if(y&&"function"==typeof r.g.Promise){if(o(n,m),e=c(e,s,"Password"),t=c(t,s,"Salt"),"function"!=typeof v)throw new Error("No callback provided to pbkdf2");!function(e,t){e.then((function(e){d()((function(){t(null,e)}))}),(function(e){d()((function(){t(e)}))}))}(function(e){if(r.g.process&&!r.g.process.browser)return Promise.resolve(!1);if(!l||!l.importKey||!l.deriveBits)return Promise.resolve(!1);if(void 0!==p[e])return p[e];var t=f(i=i||a.alloc(8),i,10,128,e).then((function(){return!0})).catch((function(){return!1}));return p[e]=t,t}(y).then((function(r){return r?f(e,t,n,m,y):u(e,t,n,m,g)})),v)}else d()((function(){var r;try{r=u(e,t,n,m,g)}catch(e){return v(e)}v(null,r)}))}},12368:(e,t,r)=>{var i,n=r(34155);i=r.g.process&&r.g.process.browser?"utf-8":r.g.process&&r.g.process.version?parseInt(n.version.split(".")[0].slice(1),10)>=6?"utf-8":"binary":"utf-8",e.exports=i},77357:e=>{var t=Math.pow(2,30)-1;e.exports=function(e,r){if("number"!=typeof e)throw new TypeError("Iterations not a number");if(e<0)throw new TypeError("Bad iterations");if("number"!=typeof r)throw new TypeError("Key length not a number");if(r<0||r>t||r!=r)throw new TypeError("Bad key length")}},91257:(e,t,r)=>{var i=r(78028),n=r(79785),a=r(89072),o=r(89509).Buffer,s=r(77357),u=r(12368),c=r(57777),l=o.alloc(128),h={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function p(e,t,r){var s=function(e){return"rmd160"===e||"ripemd160"===e?function(e){return(new n).update(e).digest()}:"md5"===e?i:function(t){return a(e).update(t).digest()}}(e),u="sha512"===e||"sha384"===e?128:64;t.length>u?t=s(t):t.length{var i=r(89509).Buffer;e.exports=function(e,t,r){if(i.isBuffer(e))return e;if("string"==typeof e)return i.from(e,t);if(ArrayBuffer.isView(e))return i.from(e.buffer);throw new TypeError(r+" must be a string, a Buffer, a typed array or a DataView")}},75:function(e,t,r){var i=r(34155);(function(){var t,r,n,a,o,s;"undefined"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:null!=i&&i.hrtime?(e.exports=function(){return(t()-o)/1e6},r=i.hrtime,a=(t=function(){var e;return 1e9*(e=r())[0]+e[1]})(),s=1e9*i.uptime(),o=a-s):Date.now?(e.exports=function(){return Date.now()-n},n=Date.now()):(e.exports=function(){return(new Date).getTime()-n},n=(new Date).getTime())}).call(this)},34155:e=>{var t,r,i=e.exports={};function n(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function o(e){if(t===setTimeout)return setTimeout(e,0);if((t===n||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:n}catch(e){t=n}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var s,u=[],c=!1,l=-1;function h(){c&&s&&(c=!1,s.length?u=s.concat(u):l=-1,u.length&&p())}function p(){if(!c){var e=o(h);c=!0;for(var t=u.length;t;){for(s=u,u=[];++l1)for(var r=1;r{"use strict";function t(e){this.requestsPerSecond=e.requestsPerSecond,this.promiseImplementation=e.promiseImplementation||Promise,this.lastStartTime=0,this.queued=[]}t.prototype.add=function(e,t){var r=this,i=t||{};return new r.promiseImplementation((function(t,n){r.queued.push({resolve:t,reject:n,promise:e,weight:i.weight||1,signal:i.signal}),r.dequeue()}))},t.prototype.addAll=function(e,t){var r=e.map(function(e){return this.add(e,t)}.bind(this));return Promise.all(r)},t.prototype.dequeue=function(){if(this.queued.length>0){var e=new Date,t=this.queued[0].weight,r=1e3/this.requestsPerSecond*t,i=e-this.lastStartTime;i>=r?this._execute():setTimeout(function(){this.dequeue()}.bind(this),r-i)}},t.prototype._execute=function(){this.lastStartTime=new Date;var e=this.queued.shift();e.signal&&e.signal.aborted?e.reject(new DOMException("","AbortError")):e.promise().then((function(t){e.resolve(t)})).catch((function(t){e.reject(t)}))},e.exports=t},16244:(e,t,r)=>{"use strict";var i=r(3689),n={};n.rules=r(3704).map((function(e){return{rule:e,suffix:e.replace(/^(\*\.|\!)/,""),punySuffix:-1,wildcard:"*"===e.charAt(0),exception:"!"===e.charAt(0)}})),n.endsWith=function(e,t){return-1!==e.indexOf(t,e.length-t.length)},n.findRule=function(e){var t=i.toASCII(e);return n.rules.reduce((function(e,r){return-1===r.punySuffix&&(r.punySuffix=i.toASCII(r.suffix)),n.endsWith(t,"."+r.punySuffix)||t===r.punySuffix?r:e}),null)},t.errorCodes={DOMAIN_TOO_SHORT:"Domain name too short.",DOMAIN_TOO_LONG:"Domain name too long. It should be no more than 255 chars.",LABEL_STARTS_WITH_DASH:"Domain name label can not start with a dash.",LABEL_ENDS_WITH_DASH:"Domain name label can not end with a dash.",LABEL_TOO_LONG:"Domain name label should be at most 63 chars long.",LABEL_TOO_SHORT:"Domain name label should be at least 1 character long.",LABEL_INVALID_CHARS:"Domain name label can only contain alphanumeric characters or dashes."},n.validate=function(e){var t=i.toASCII(e);if(t.length<1)return"DOMAIN_TOO_SHORT";if(t.length>255)return"DOMAIN_TOO_LONG";for(var r,n=t.split("."),a=0;a63)return"LABEL_TOO_LONG";if("-"===r.charAt(0))return"LABEL_STARTS_WITH_DASH";if("-"===r.charAt(r.length-1))return"LABEL_ENDS_WITH_DASH";if(!/^[a-z0-9\-]+$/.test(r))return"LABEL_INVALID_CHARS"}},t.parse=function(e){if("string"!=typeof e)throw new TypeError("Domain name must be a string.");var r=e.slice(0).toLowerCase();"."===r.charAt(r.length-1)&&(r=r.slice(0,r.length-1));var a=n.validate(r);if(a)return{input:e,error:{message:t.errorCodes[a],code:a}};var o={input:e,tld:null,sld:null,domain:null,subdomain:null,listed:!1},s=r.split(".");if("local"===s[s.length-1])return o;var u=function(){return/xn--/.test(r)?(o.domain&&(o.domain=i.toASCII(o.domain)),o.subdomain&&(o.subdomain=i.toASCII(o.subdomain)),o):o},c=n.findRule(r);if(!c)return s.length<2?o:(o.tld=s.pop(),o.sld=s.pop(),o.domain=[o.sld,o.tld].join("."),s.length&&(o.subdomain=s.pop()),u());o.listed=!0;var l=c.suffix.split("."),h=s.slice(0,s.length-l.length);return c.exception&&h.push(l.shift()),o.tld=l.join("."),h.length?(c.wildcard&&(l.unshift(h.pop()),o.tld=l.join(".")),h.length?(o.sld=h.pop(),o.domain=[o.sld,o.tld].join("."),h.length&&(o.subdomain=h.join(".")),u()):u()):u()},t.get=function(e){return e&&t.parse(e).domain||null},t.isValid=function(e){var r=t.parse(e);return Boolean(r.domain&&r.listed)}},7900:(e,t,r)=>{t.publicEncrypt=r(16559),t.privateDecrypt=r(26138),t.privateEncrypt=function(e,r){return t.publicEncrypt(e,r,!0)},t.publicDecrypt=function(e,r){return t.privateDecrypt(e,r,!0)}},99199:(e,t,r)=>{var i=r(23482),n=r(89509).Buffer;function a(e){var t=n.allocUnsafe(4);return t.writeUInt32BE(e,0),t}e.exports=function(e,t){for(var r,o=n.alloc(0),s=0;o.length=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function u(e,t,r){var i=s(e,r);return r-1>=t&&(i|=s(e,r-1)<<4),i}function c(e,t,r,i){for(var n=0,a=Math.min(e.length,r),o=t;o=49?s-49+10:s>=17?s-17+10:s}return n}a.isBN=function(e){return e instanceof a||null!==e&&"object"==typeof e&&e.constructor.wordSize===a.wordSize&&Array.isArray(e.words)},a.max=function(e,t){return e.cmp(t)>0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)o=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)n=u(e,t,i)<=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;this.strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,o=a%i,s=Math.min(a,a-o)+r,u=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],o=n*a,s=67108863&o,u=o/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&u,p=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=p;d++){var f=c-d|0;l+=(o=(n=0|e.words[f])*(a=0|t.words[d])+h)/67108864|0,h=67108863&o}r.words[c]=0|h,u=0|l}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}a.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,a=0,o=0;o>>24-n&16777215)||o!==this.length-1?l[6-u.length]+u+r:u+r,(n+=2)>=26&&(n-=26,o--)}for(0!==a&&(r=a.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var c=h[e],d=p[e];r="";var f=this.clone();for(f.negative=0;!f.isZero();){var m=f.modn(d).toString(e);r=(f=f.idivn(d)).isZero()?m+r:l[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(e,t){return i(void 0!==o),this.toArrayLike(o,e,t)},a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},a.prototype.toArrayLike=function(e,t,r){var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0"),this.strip();var o,s,u="le"===t,c=new e(a),l=this.clone();if(u){for(s=0;!l.isZero();s++)o=l.andln(255),l.iushrn(8),c[s]=o;for(;s=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==a&&o>26,this.words[o]=67108863&t;if(0===a&&o>>13,d=0|o[1],f=8191&d,m=d>>>13,g=0|o[2],v=8191&g,y=g>>>13,_=0|o[3],b=8191&_,w=_>>>13,E=0|o[4],k=8191&E,S=E>>>13,x=0|o[5],j=8191&x,N=x>>>13,M=0|o[6],I=8191&M,A=M>>>13,T=0|o[7],R=8191&T,P=T>>>13,O=0|o[8],B=8191&O,C=O>>>13,z=0|o[9],F=8191&z,D=z>>>13,q=0|s[0],L=8191&q,U=q>>>13,H=0|s[1],K=8191&H,W=H>>>13,Z=0|s[2],J=8191&Z,V=Z>>>13,$=0|s[3],G=8191&$,Q=$>>>13,X=0|s[4],Y=8191&X,ee=X>>>13,te=0|s[5],re=8191&te,ie=te>>>13,ne=0|s[6],ae=8191&ne,oe=ne>>>13,se=0|s[7],ue=8191&se,ce=se>>>13,le=0|s[8],he=8191&le,pe=le>>>13,de=0|s[9],fe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ge=(c+(i=Math.imul(h,L))|0)+((8191&(n=(n=Math.imul(h,U))+Math.imul(p,L)|0))<<13)|0;c=((a=Math.imul(p,U))+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(f,L),n=(n=Math.imul(f,U))+Math.imul(m,L)|0,a=Math.imul(m,U);var ve=(c+(i=i+Math.imul(h,K)|0)|0)+((8191&(n=(n=n+Math.imul(h,W)|0)+Math.imul(p,K)|0))<<13)|0;c=((a=a+Math.imul(p,W)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(v,L),n=(n=Math.imul(v,U))+Math.imul(y,L)|0,a=Math.imul(y,U),i=i+Math.imul(f,K)|0,n=(n=n+Math.imul(f,W)|0)+Math.imul(m,K)|0,a=a+Math.imul(m,W)|0;var ye=(c+(i=i+Math.imul(h,J)|0)|0)+((8191&(n=(n=n+Math.imul(h,V)|0)+Math.imul(p,J)|0))<<13)|0;c=((a=a+Math.imul(p,V)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(b,L),n=(n=Math.imul(b,U))+Math.imul(w,L)|0,a=Math.imul(w,U),i=i+Math.imul(v,K)|0,n=(n=n+Math.imul(v,W)|0)+Math.imul(y,K)|0,a=a+Math.imul(y,W)|0,i=i+Math.imul(f,J)|0,n=(n=n+Math.imul(f,V)|0)+Math.imul(m,J)|0,a=a+Math.imul(m,V)|0;var _e=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(n=(n=n+Math.imul(h,Q)|0)+Math.imul(p,G)|0))<<13)|0;c=((a=a+Math.imul(p,Q)|0)+(n>>>13)|0)+(_e>>>26)|0,_e&=67108863,i=Math.imul(k,L),n=(n=Math.imul(k,U))+Math.imul(S,L)|0,a=Math.imul(S,U),i=i+Math.imul(b,K)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(w,K)|0,a=a+Math.imul(w,W)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,V)|0)+Math.imul(y,J)|0,a=a+Math.imul(y,V)|0,i=i+Math.imul(f,G)|0,n=(n=n+Math.imul(f,Q)|0)+Math.imul(m,G)|0,a=a+Math.imul(m,Q)|0;var be=(c+(i=i+Math.imul(h,Y)|0)|0)+((8191&(n=(n=n+Math.imul(h,ee)|0)+Math.imul(p,Y)|0))<<13)|0;c=((a=a+Math.imul(p,ee)|0)+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(j,L),n=(n=Math.imul(j,U))+Math.imul(N,L)|0,a=Math.imul(N,U),i=i+Math.imul(k,K)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(S,K)|0,a=a+Math.imul(S,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,V)|0)+Math.imul(w,J)|0,a=a+Math.imul(w,V)|0,i=i+Math.imul(v,G)|0,n=(n=n+Math.imul(v,Q)|0)+Math.imul(y,G)|0,a=a+Math.imul(y,Q)|0,i=i+Math.imul(f,Y)|0,n=(n=n+Math.imul(f,ee)|0)+Math.imul(m,Y)|0,a=a+Math.imul(m,ee)|0;var we=(c+(i=i+Math.imul(h,re)|0)|0)+((8191&(n=(n=n+Math.imul(h,ie)|0)+Math.imul(p,re)|0))<<13)|0;c=((a=a+Math.imul(p,ie)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(I,L),n=(n=Math.imul(I,U))+Math.imul(A,L)|0,a=Math.imul(A,U),i=i+Math.imul(j,K)|0,n=(n=n+Math.imul(j,W)|0)+Math.imul(N,K)|0,a=a+Math.imul(N,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,V)|0)+Math.imul(S,J)|0,a=a+Math.imul(S,V)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,Q)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,Q)|0,i=i+Math.imul(v,Y)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(y,Y)|0,a=a+Math.imul(y,ee)|0,i=i+Math.imul(f,re)|0,n=(n=n+Math.imul(f,ie)|0)+Math.imul(m,re)|0,a=a+Math.imul(m,ie)|0;var Ee=(c+(i=i+Math.imul(h,ae)|0)|0)+((8191&(n=(n=n+Math.imul(h,oe)|0)+Math.imul(p,ae)|0))<<13)|0;c=((a=a+Math.imul(p,oe)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(R,L),n=(n=Math.imul(R,U))+Math.imul(P,L)|0,a=Math.imul(P,U),i=i+Math.imul(I,K)|0,n=(n=n+Math.imul(I,W)|0)+Math.imul(A,K)|0,a=a+Math.imul(A,W)|0,i=i+Math.imul(j,J)|0,n=(n=n+Math.imul(j,V)|0)+Math.imul(N,J)|0,a=a+Math.imul(N,V)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,Q)|0)+Math.imul(S,G)|0,a=a+Math.imul(S,Q)|0,i=i+Math.imul(b,Y)|0,n=(n=n+Math.imul(b,ee)|0)+Math.imul(w,Y)|0,a=a+Math.imul(w,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(y,re)|0,a=a+Math.imul(y,ie)|0,i=i+Math.imul(f,ae)|0,n=(n=n+Math.imul(f,oe)|0)+Math.imul(m,ae)|0,a=a+Math.imul(m,oe)|0;var ke=(c+(i=i+Math.imul(h,ue)|0)|0)+((8191&(n=(n=n+Math.imul(h,ce)|0)+Math.imul(p,ue)|0))<<13)|0;c=((a=a+Math.imul(p,ce)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(B,L),n=(n=Math.imul(B,U))+Math.imul(C,L)|0,a=Math.imul(C,U),i=i+Math.imul(R,K)|0,n=(n=n+Math.imul(R,W)|0)+Math.imul(P,K)|0,a=a+Math.imul(P,W)|0,i=i+Math.imul(I,J)|0,n=(n=n+Math.imul(I,V)|0)+Math.imul(A,J)|0,a=a+Math.imul(A,V)|0,i=i+Math.imul(j,G)|0,n=(n=n+Math.imul(j,Q)|0)+Math.imul(N,G)|0,a=a+Math.imul(N,Q)|0,i=i+Math.imul(k,Y)|0,n=(n=n+Math.imul(k,ee)|0)+Math.imul(S,Y)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(b,re)|0,n=(n=n+Math.imul(b,ie)|0)+Math.imul(w,re)|0,a=a+Math.imul(w,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,oe)|0)+Math.imul(y,ae)|0,a=a+Math.imul(y,oe)|0,i=i+Math.imul(f,ue)|0,n=(n=n+Math.imul(f,ce)|0)+Math.imul(m,ue)|0,a=a+Math.imul(m,ce)|0;var Se=(c+(i=i+Math.imul(h,he)|0)|0)+((8191&(n=(n=n+Math.imul(h,pe)|0)+Math.imul(p,he)|0))<<13)|0;c=((a=a+Math.imul(p,pe)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(F,L),n=(n=Math.imul(F,U))+Math.imul(D,L)|0,a=Math.imul(D,U),i=i+Math.imul(B,K)|0,n=(n=n+Math.imul(B,W)|0)+Math.imul(C,K)|0,a=a+Math.imul(C,W)|0,i=i+Math.imul(R,J)|0,n=(n=n+Math.imul(R,V)|0)+Math.imul(P,J)|0,a=a+Math.imul(P,V)|0,i=i+Math.imul(I,G)|0,n=(n=n+Math.imul(I,Q)|0)+Math.imul(A,G)|0,a=a+Math.imul(A,Q)|0,i=i+Math.imul(j,Y)|0,n=(n=n+Math.imul(j,ee)|0)+Math.imul(N,Y)|0,a=a+Math.imul(N,ee)|0,i=i+Math.imul(k,re)|0,n=(n=n+Math.imul(k,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(b,ae)|0,n=(n=n+Math.imul(b,oe)|0)+Math.imul(w,ae)|0,a=a+Math.imul(w,oe)|0,i=i+Math.imul(v,ue)|0,n=(n=n+Math.imul(v,ce)|0)+Math.imul(y,ue)|0,a=a+Math.imul(y,ce)|0,i=i+Math.imul(f,he)|0,n=(n=n+Math.imul(f,pe)|0)+Math.imul(m,he)|0,a=a+Math.imul(m,pe)|0;var xe=(c+(i=i+Math.imul(h,fe)|0)|0)+((8191&(n=(n=n+Math.imul(h,me)|0)+Math.imul(p,fe)|0))<<13)|0;c=((a=a+Math.imul(p,me)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(F,K),n=(n=Math.imul(F,W))+Math.imul(D,K)|0,a=Math.imul(D,W),i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,V)|0)+Math.imul(C,J)|0,a=a+Math.imul(C,V)|0,i=i+Math.imul(R,G)|0,n=(n=n+Math.imul(R,Q)|0)+Math.imul(P,G)|0,a=a+Math.imul(P,Q)|0,i=i+Math.imul(I,Y)|0,n=(n=n+Math.imul(I,ee)|0)+Math.imul(A,Y)|0,a=a+Math.imul(A,ee)|0,i=i+Math.imul(j,re)|0,n=(n=n+Math.imul(j,ie)|0)+Math.imul(N,re)|0,a=a+Math.imul(N,ie)|0,i=i+Math.imul(k,ae)|0,n=(n=n+Math.imul(k,oe)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,oe)|0,i=i+Math.imul(b,ue)|0,n=(n=n+Math.imul(b,ce)|0)+Math.imul(w,ue)|0,a=a+Math.imul(w,ce)|0,i=i+Math.imul(v,he)|0,n=(n=n+Math.imul(v,pe)|0)+Math.imul(y,he)|0,a=a+Math.imul(y,pe)|0;var je=(c+(i=i+Math.imul(f,fe)|0)|0)+((8191&(n=(n=n+Math.imul(f,me)|0)+Math.imul(m,fe)|0))<<13)|0;c=((a=a+Math.imul(m,me)|0)+(n>>>13)|0)+(je>>>26)|0,je&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,V))+Math.imul(D,J)|0,a=Math.imul(D,V),i=i+Math.imul(B,G)|0,n=(n=n+Math.imul(B,Q)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,Q)|0,i=i+Math.imul(R,Y)|0,n=(n=n+Math.imul(R,ee)|0)+Math.imul(P,Y)|0,a=a+Math.imul(P,ee)|0,i=i+Math.imul(I,re)|0,n=(n=n+Math.imul(I,ie)|0)+Math.imul(A,re)|0,a=a+Math.imul(A,ie)|0,i=i+Math.imul(j,ae)|0,n=(n=n+Math.imul(j,oe)|0)+Math.imul(N,ae)|0,a=a+Math.imul(N,oe)|0,i=i+Math.imul(k,ue)|0,n=(n=n+Math.imul(k,ce)|0)+Math.imul(S,ue)|0,a=a+Math.imul(S,ce)|0,i=i+Math.imul(b,he)|0,n=(n=n+Math.imul(b,pe)|0)+Math.imul(w,he)|0,a=a+Math.imul(w,pe)|0;var Ne=(c+(i=i+Math.imul(v,fe)|0)|0)+((8191&(n=(n=n+Math.imul(v,me)|0)+Math.imul(y,fe)|0))<<13)|0;c=((a=a+Math.imul(y,me)|0)+(n>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,i=Math.imul(F,G),n=(n=Math.imul(F,Q))+Math.imul(D,G)|0,a=Math.imul(D,Q),i=i+Math.imul(B,Y)|0,n=(n=n+Math.imul(B,ee)|0)+Math.imul(C,Y)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(R,re)|0,n=(n=n+Math.imul(R,ie)|0)+Math.imul(P,re)|0,a=a+Math.imul(P,ie)|0,i=i+Math.imul(I,ae)|0,n=(n=n+Math.imul(I,oe)|0)+Math.imul(A,ae)|0,a=a+Math.imul(A,oe)|0,i=i+Math.imul(j,ue)|0,n=(n=n+Math.imul(j,ce)|0)+Math.imul(N,ue)|0,a=a+Math.imul(N,ce)|0,i=i+Math.imul(k,he)|0,n=(n=n+Math.imul(k,pe)|0)+Math.imul(S,he)|0,a=a+Math.imul(S,pe)|0;var Me=(c+(i=i+Math.imul(b,fe)|0)|0)+((8191&(n=(n=n+Math.imul(b,me)|0)+Math.imul(w,fe)|0))<<13)|0;c=((a=a+Math.imul(w,me)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(F,Y),n=(n=Math.imul(F,ee))+Math.imul(D,Y)|0,a=Math.imul(D,ee),i=i+Math.imul(B,re)|0,n=(n=n+Math.imul(B,ie)|0)+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(R,ae)|0,n=(n=n+Math.imul(R,oe)|0)+Math.imul(P,ae)|0,a=a+Math.imul(P,oe)|0,i=i+Math.imul(I,ue)|0,n=(n=n+Math.imul(I,ce)|0)+Math.imul(A,ue)|0,a=a+Math.imul(A,ce)|0,i=i+Math.imul(j,he)|0,n=(n=n+Math.imul(j,pe)|0)+Math.imul(N,he)|0,a=a+Math.imul(N,pe)|0;var Ie=(c+(i=i+Math.imul(k,fe)|0)|0)+((8191&(n=(n=n+Math.imul(k,me)|0)+Math.imul(S,fe)|0))<<13)|0;c=((a=a+Math.imul(S,me)|0)+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(F,re),n=(n=Math.imul(F,ie))+Math.imul(D,re)|0,a=Math.imul(D,ie),i=i+Math.imul(B,ae)|0,n=(n=n+Math.imul(B,oe)|0)+Math.imul(C,ae)|0,a=a+Math.imul(C,oe)|0,i=i+Math.imul(R,ue)|0,n=(n=n+Math.imul(R,ce)|0)+Math.imul(P,ue)|0,a=a+Math.imul(P,ce)|0,i=i+Math.imul(I,he)|0,n=(n=n+Math.imul(I,pe)|0)+Math.imul(A,he)|0,a=a+Math.imul(A,pe)|0;var Ae=(c+(i=i+Math.imul(j,fe)|0)|0)+((8191&(n=(n=n+Math.imul(j,me)|0)+Math.imul(N,fe)|0))<<13)|0;c=((a=a+Math.imul(N,me)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(F,ae),n=(n=Math.imul(F,oe))+Math.imul(D,ae)|0,a=Math.imul(D,oe),i=i+Math.imul(B,ue)|0,n=(n=n+Math.imul(B,ce)|0)+Math.imul(C,ue)|0,a=a+Math.imul(C,ce)|0,i=i+Math.imul(R,he)|0,n=(n=n+Math.imul(R,pe)|0)+Math.imul(P,he)|0,a=a+Math.imul(P,pe)|0;var Te=(c+(i=i+Math.imul(I,fe)|0)|0)+((8191&(n=(n=n+Math.imul(I,me)|0)+Math.imul(A,fe)|0))<<13)|0;c=((a=a+Math.imul(A,me)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(F,ue),n=(n=Math.imul(F,ce))+Math.imul(D,ue)|0,a=Math.imul(D,ce),i=i+Math.imul(B,he)|0,n=(n=n+Math.imul(B,pe)|0)+Math.imul(C,he)|0,a=a+Math.imul(C,pe)|0;var Re=(c+(i=i+Math.imul(R,fe)|0)|0)+((8191&(n=(n=n+Math.imul(R,me)|0)+Math.imul(P,fe)|0))<<13)|0;c=((a=a+Math.imul(P,me)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(F,he),n=(n=Math.imul(F,pe))+Math.imul(D,he)|0,a=Math.imul(D,pe);var Pe=(c+(i=i+Math.imul(B,fe)|0)|0)+((8191&(n=(n=n+Math.imul(B,me)|0)+Math.imul(C,fe)|0))<<13)|0;c=((a=a+Math.imul(C,me)|0)+(n>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var Oe=(c+(i=Math.imul(F,fe))|0)+((8191&(n=(n=Math.imul(F,me))+Math.imul(D,fe)|0))<<13)|0;return c=((a=Math.imul(D,me))+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ve,u[2]=ye,u[3]=_e,u[4]=be,u[5]=we,u[6]=Ee,u[7]=ke,u[8]=Se,u[9]=xe,u[10]=je,u[11]=Ne,u[12]=Me,u[13]=Ie,u[14]=Ae,u[15]=Te,u[16]=Re,u[17]=Pe,u[18]=Oe,0!==c&&(u[19]=c,r.length++),r};function m(e,t,r){return(new g).mulp(e,t,r)}function g(e,t){this.x=e,this.y=t}Math.imul||(f=d),a.prototype.mulTo=function(e,t){var r,i=this.length+e.length;return r=10===this.length&&10===e.length?f(this,e,t):i<63?d(this,e,t):i<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,i=o,o=n}return 0!==i?r.words[a]=i:r.length--,r.strip()}(this,e,t):m(this,e,t),r},g.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},g.prototype.permute=function(e,t,r,i,n,a){for(var o=0;o>>=1)n++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*t;o>=26,t+=n/67108864|0,t+=a>>>26,this.words[r]=67108863&a}return 0!==t&&(this.words[r]=t,this.length++),this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n}return t}(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,o=Math.min((e-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,c=0;c=0&&(0!==l||c>=n);c--){var h=0|this.words[c];this.words[c]=l<<26-a|h>>>a,l=h&s}return u&&0!==l&&(u.words[u.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===s)return this.strip();for(i(-1===s),s=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,o=0|n.words[n.length-1];0!=(r=26-this._countBits(o))&&(n=n.ushln(r),i.iushln(r),o=0|n.words[n.length-1]);var s,u=i.length-n.length;if("mod"!==t){(s=new a(null)).length=u+1,s.words=new Array(s.length);for(var c=0;c=0;h--){var p=67108864*(0|i.words[n.length+h])+(0|i.words[n.length+h-1]);for(p=Math.min(p/o|0,67108863),i._ishlnsubmul(n,p,h);0!==i.negative;)p--,i.negative=0,i._ishlnsubmul(n,1,h),i.isZero()||(i.negative^=1);s&&(s.words[h]=p)}return s&&s.strip(),i.strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(n=s.div.neg()),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:n,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modn(e.words[0]))}:this._wordDiv(e,t);var n,o,s},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modn=function(e){i(e<=67108863);for(var t=(1<<26)%e,r=0,n=this.length-1;n>=0;n--)r=(t*r+(0|this.words[n]))%e;return r},a.prototype.idivn=function(e){i(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*t;this.words[r]=n/e|0,t=n%e}return this.strip()},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new a(1),o=new a(0),s=new a(0),u=new a(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var l=r.clone(),h=t.clone();!t.isZero();){for(var p=0,d=1;0==(t.words[0]&d)&&p<26;++p,d<<=1);if(p>0)for(t.iushrn(p);p-- >0;)(n.isOdd()||o.isOdd())&&(n.iadd(l),o.isub(h)),n.iushrn(1),o.iushrn(1);for(var f=0,m=1;0==(r.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(r.iushrn(f);f-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(l),u.isub(h)),s.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(s),o.isub(u)):(r.isub(t),s.isub(n),u.isub(o))}return{a:s,b:u,gcd:r.iushln(c)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,o=new a(1),s=new a(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,l=1;0==(t.words[0]&l)&&c<26;++c,l<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);for(var h=0,p=1;0==(r.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s)):(r.isub(t),s.isub(o))}return(n=0===t.cmpn(1)?o:s).cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new k(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var v={k256:null,p224:null,p192:null,p25519:null};function y(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function _(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function E(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(e){if("string"==typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function S(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},y.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},y.prototype.split=function(e,t){e.iushrn(this.n,0,t)},y.prototype.imulK=function(e){return e.imul(this.k)},n(_,y),_.prototype.split=function(e,t){for(var r=4194303,i=Math.min(e.length,9),n=0;n>>22,a=o}a>>>=22,e.words[n-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},_.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(v[e])return v[e];var t;if("k256"===e)t=new _;else if("p224"===e)t=new b;else if("p192"===e)t=new w;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new E}return v[e]=t,t},k.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},k.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),o=0;!n.isZero()&&0===n.andln(1);)o++,n.iushrn(1);i(!n.isZero());var s=new a(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new a(2*l*l).toRed(this);0!==this.pow(l,c).cmp(u);)l.redIAdd(u);for(var h=this.pow(l,n),p=this.pow(e,n.addn(1).iushrn(1)),d=this.pow(e,n),f=o;0!==d.cmp(s);){for(var m=d,g=0;0!==m.cmp(s);g++)m=m.redSqr();i(g=0;i--){for(var c=t.words[i],l=u-1;l>=0;l--){var h=c>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==h||0!==o?(o<<=1,o|=h,(4==++s||0===i&&0===l)&&(n=this.mul(n,r[o]),s=0,o=0)):s=0}u=26}return n},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new S(e)},n(S,k),S.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},S.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},S.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},S.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=r.nmd(e),this)},26138:(e,t,r)=>{var i=r(70980),n=r(99199),a=r(57859),o=r(92144),s=r(23663),u=r(23482),c=r(84818),l=r(89509).Buffer;e.exports=function(e,t,r){var h;h=e.padding?e.padding:r?1:4;var p,d=i(e),f=d.modulus.byteLength();if(t.length>f||new o(t).cmp(d.modulus)>=0)throw new Error("decryption error");p=r?c(new o(t),d):s(t,d);var m=l.alloc(f-p.length);if(p=l.concat([m,p],f),4===h)return function(e,t){var r=e.modulus.byteLength(),i=u("sha1").update(l.alloc(0)).digest(),o=i.length;if(0!==t[0])throw new Error("decryption error");var s=t.slice(1,o+1),c=t.slice(o+1),h=a(s,n(c,o)),p=a(c,n(h,r-o-1));if(function(e,t){e=l.from(e),t=l.from(t);var r=0,i=e.length;e.length!==t.length&&(r++,i=Math.min(e.length,t.length));for(var n=-1;++n=t.length){a++;break}var o=t.slice(2,n-1);if(("0002"!==i.toString("hex")&&!r||"0001"!==i.toString("hex")&&r)&&a++,o.length<8&&a++,a)throw new Error("decryption error");return t.slice(n)}(0,p,r);if(3===h)return p;throw new Error("unknown padding")}},16559:(e,t,r)=>{var i=r(70980),n=r(61798),a=r(23482),o=r(99199),s=r(57859),u=r(92144),c=r(84818),l=r(23663),h=r(89509).Buffer;e.exports=function(e,t,r){var p;p=e.padding?e.padding:r?1:4;var d,f=i(e);if(4===p)d=function(e,t){var r=e.modulus.byteLength(),i=t.length,c=a("sha1").update(h.alloc(0)).digest(),l=c.length,p=2*l;if(i>r-p-2)throw new Error("message too long");var d=h.alloc(r-i-p-2),f=r-l-1,m=n(l),g=s(h.concat([c,d,h.alloc(1,1),t],f),o(m,f)),v=s(m,o(g,l));return new u(h.concat([h.alloc(1),v,g],r))}(f,t);else if(1===p)d=function(e,t,r){var i,a=t.length,o=e.modulus.byteLength();if(a>o-11)throw new Error("message too long");return i=r?h.alloc(o-a-3,255):function(e){for(var t,r=h.allocUnsafe(e),i=0,a=n(2*e),o=0;i=0)throw new Error("data too long for modulus")}return r?l(d,f):c(d,f)}},84818:(e,t,r)=>{var i=r(92144),n=r(89509).Buffer;e.exports=function(e,t){return n.from(e.toRed(i.mont(t.modulus)).redPow(new i(t.publicExponent)).fromRed().toArray())}},57859:e=>{e.exports=function(e,t){for(var r=e.length,i=-1;++i{"use strict";r.r(t),r.d(t,{decode:()=>v,default:()=>w,encode:()=>y,toASCII:()=>b,toUnicode:()=>_,ucs2decode:()=>d,ucs2encode:()=>f});const i=2147483647,n=36,a=/^xn--/,o=/[^\0-\x7E]/,s=/[\x2E\u3002\uFF0E\uFF61]/g,u={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},c=Math.floor,l=String.fromCharCode;function h(e){throw new RangeError(u[e])}function p(e,t){const r=e.split("@");let i="";r.length>1&&(i=r[0]+"@",e=r[1]);const n=function(e,t){const r=[];let i=e.length;for(;i--;)r[i]=t(e[i]);return r}((e=e.replace(s,".")).split("."),t).join(".");return i+n}function d(e){const t=[];let r=0;const i=e.length;for(;r=55296&&n<=56319&&rString.fromCodePoint(...e),m=function(e,t){return e+22+75*(e<26)-((0!=t)<<5)},g=function(e,t,r){let i=0;for(e=r?c(e/700):e>>1,e+=c(e/t);e>455;i+=n)e=c(e/35);return c(i+36*e/(e+38))},v=function(e){const t=[],r=e.length;let a=0,o=128,s=72,u=e.lastIndexOf("-");u<0&&(u=0);for(let r=0;r=128&&h("not-basic"),t.push(e.charCodeAt(r));for(let p=u>0?u+1:0;p=r&&h("invalid-input");const u=(l=e.charCodeAt(p++))-48<10?l-22:l-65<26?l-65:l-97<26?l-97:n;(u>=n||u>c((i-a)/t))&&h("overflow"),a+=u*t;const d=o<=s?1:o>=s+26?26:o-s;if(uc(i/f)&&h("overflow"),t*=f}const d=t.length+1;s=g(a-u,d,0==u),c(a/d)>i-o&&h("overflow"),o+=c(a/d),a%=d,t.splice(a++,0,o)}var l;return String.fromCodePoint(...t)},y=function(e){const t=[];let r=(e=d(e)).length,a=128,o=0,s=72;for(const r of e)r<128&&t.push(l(r));let u=t.length,p=u;for(u&&t.push("-");p=a&&tc((i-o)/d)&&h("overflow"),o+=(r-a)*d,a=r;for(const r of e)if(ri&&h("overflow"),r==a){let e=o;for(let r=n;;r+=n){const i=r<=s?1:r>=s+26?26:r-s;if(e{"use strict";var t=String.prototype.replace,r=/%20/g;e.exports={default:"RFC3986",formatters:{RFC1738:function(e){return t.call(e,r,"+")},RFC3986:function(e){return String(e)}},RFC1738:"RFC1738",RFC3986:"RFC3986"}},80129:(e,t,r)=>{"use strict";var i=r(58261),n=r(55235),a=r(55798);e.exports={formats:a,parse:n,stringify:i}},55235:(e,t,r)=>{"use strict";var i=r(12769),n=Object.prototype.hasOwnProperty,a={allowDots:!1,allowPrototypes:!1,arrayLimit:20,decoder:i.decode,delimiter:"&",depth:5,parameterLimit:1e3,plainObjects:!1,strictNullHandling:!1},o=function(e,t,r){if(e){var i=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,a=/(\[[^[\]]*])/g,o=/(\[[^[\]]*])/.exec(i),s=o?i.slice(0,o.index):i,u=[];if(s){if(!r.plainObjects&&n.call(Object.prototype,s)&&!r.allowPrototypes)return;u.push(s)}for(var c=0;null!==(o=a.exec(i))&&c=0;--n){var a,o=e[n];if("[]"===o&&r.parseArrays)a=[].concat(i);else{a=r.plainObjects?Object.create(null):{};var s="["===o.charAt(0)&&"]"===o.charAt(o.length-1)?o.slice(1,-1):o,u=parseInt(s,10);r.parseArrays||""!==s?!isNaN(u)&&o!==s&&String(u)===s&&u>=0&&r.parseArrays&&u<=r.arrayLimit?(a=[])[u]=i:"__proto__"!==s&&(a[s]=i):a={0:i}}i=a}return i}(u,t,r)}};e.exports=function(e,t){var r=t?i.assign({},t):{};if(null!==r.decoder&&void 0!==r.decoder&&"function"!=typeof r.decoder)throw new TypeError("Decoder has to be a function.");if(r.ignoreQueryPrefix=!0===r.ignoreQueryPrefix,r.delimiter="string"==typeof r.delimiter||i.isRegExp(r.delimiter)?r.delimiter:a.delimiter,r.depth="number"==typeof r.depth?r.depth:a.depth,r.arrayLimit="number"==typeof r.arrayLimit?r.arrayLimit:a.arrayLimit,r.parseArrays=!1!==r.parseArrays,r.decoder="function"==typeof r.decoder?r.decoder:a.decoder,r.allowDots="boolean"==typeof r.allowDots?r.allowDots:a.allowDots,r.plainObjects="boolean"==typeof r.plainObjects?r.plainObjects:a.plainObjects,r.allowPrototypes="boolean"==typeof r.allowPrototypes?r.allowPrototypes:a.allowPrototypes,r.parameterLimit="number"==typeof r.parameterLimit?r.parameterLimit:a.parameterLimit,r.strictNullHandling="boolean"==typeof r.strictNullHandling?r.strictNullHandling:a.strictNullHandling,""===e||null==e)return r.plainObjects?Object.create(null):{};for(var s="string"==typeof e?function(e,t){for(var r={},i=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,o=t.parameterLimit===1/0?void 0:t.parameterLimit,s=i.split(t.delimiter,o),u=0;u{"use strict";var i=r(12769),n=r(55798),a={brackets:function(e){return e+"[]"},indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},o=Array.isArray,s=Array.prototype.push,u=function(e,t){s.apply(e,o(t)?t:[t])},c=Date.prototype.toISOString,l={delimiter:"&",encode:!0,encoder:i.encode,encodeValuesOnly:!1,serializeDate:function(e){return c.call(e)},skipNulls:!1,strictNullHandling:!1},h=function e(t,r,n,a,s,c,h,p,d,f,m,g){var v=t;if("function"==typeof h?v=h(r,v):v instanceof Date&&(v=f(v)),null===v){if(a)return c&&!g?c(r,l.encoder):r;v=""}if("string"==typeof v||"number"==typeof v||"boolean"==typeof v||i.isBuffer(v))return c?[m(g?r:c(r,l.encoder))+"="+m(c(v,l.encoder))]:[m(r)+"="+m(String(v))];var y,_=[];if(void 0===v)return _;if(o(h))y=h;else{var b=Object.keys(v);y=p?b.sort(p):b}for(var w=0;w0?I+M:""}},12769:e=>{"use strict";var t=Object.prototype.hasOwnProperty,r=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),i=function(e,t){for(var r=t&&t.plainObjects?Object.create(null):{},i=0;i=48&&a<=57||a>=65&&a<=90||a>=97&&a<=122?i+=t.charAt(n):a<128?i+=r[a]:a<2048?i+=r[192|a>>6]+r[128|63&a]:a<55296||a>=57344?i+=r[224|a>>12]+r[128|a>>6&63]+r[128|63&a]:(n+=1,a=65536+((1023&a)<<10|1023&t.charCodeAt(n)),i+=r[240|a>>18]+r[128|a>>12&63]+r[128|a>>6&63]+r[128|63&a])}return i},isBuffer:function(e){return null!=e&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},merge:function e(r,n,a){if(!n)return r;if("object"!=typeof n){if(Array.isArray(r))r.push(n);else{if(!r||"object"!=typeof r)return[r,n];(a&&(a.plainObjects||a.allowPrototypes)||!t.call(Object.prototype,n))&&(r[n]=!0)}return r}if(!r||"object"!=typeof r)return[r].concat(n);var o=r;return Array.isArray(r)&&!Array.isArray(n)&&(o=i(r,a)),Array.isArray(r)&&Array.isArray(n)?(n.forEach((function(i,n){if(t.call(r,n)){var o=r[n];o&&"object"==typeof o&&i&&"object"==typeof i?r[n]=e(o,i,a):r.push(i)}else r[n]=i})),r):Object.keys(n).reduce((function(r,i){var o=n[i];return t.call(r,i)?r[i]=e(r[i],o,a):r[i]=o,r}),o)}}},62587:e=>{"use strict";function t(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,r,i,n){r=r||"&",i=i||"=";var a={};if("string"!=typeof e||0===e.length)return a;var o=/\+/g;e=e.split(r);var s=1e3;n&&"number"==typeof n.maxKeys&&(s=n.maxKeys);var u=e.length;s>0&&u>s&&(u=s);for(var c=0;c=0?(l=f.substr(0,m),h=f.substr(m+1)):(l=f,h=""),p=decodeURIComponent(l),d=decodeURIComponent(h),t(a,p)?Array.isArray(a[p])?a[p].push(d):a[p]=[a[p],d]:a[p]=d}return a}},12361:e=>{"use strict";var t=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,r,i,n){return r=r||"&",i=i||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map((function(n){var a=encodeURIComponent(t(n))+i;return Array.isArray(e[n])?e[n].map((function(e){return a+encodeURIComponent(t(e))})).join(r):a+encodeURIComponent(t(e[n]))})).join(r):n?encodeURIComponent(t(n))+i+encodeURIComponent(t(e)):""}},17673:(e,t,r)=>{"use strict";t.decode=t.parse=r(62587),t.encode=t.stringify=r(12361)},61798:(e,t,r)=>{"use strict";var i=r(34155),n=65536,a=r(89509).Buffer,o=r.g.crypto||r.g.msCrypto;o&&o.getRandomValues?e.exports=function(e,t){if(e>4294967295)throw new RangeError("requested too many random bytes");var r=a.allocUnsafe(e);if(e>0)if(e>n)for(var s=0;s{"use strict";var i=r(34155);function n(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var a=r(89509),o=r(61798),s=a.Buffer,u=a.kMaxLength,c=r.g.crypto||r.g.msCrypto,l=Math.pow(2,32)-1;function h(e,t){if("number"!=typeof e||e!=e)throw new TypeError("offset must be a number");if(e>l||e<0)throw new TypeError("offset must be a uint32");if(e>u||e>t)throw new RangeError("offset out of range")}function p(e,t,r){if("number"!=typeof e||e!=e)throw new TypeError("size must be a number");if(e>l||e<0)throw new TypeError("size must be a uint32");if(e+t>r||e>u)throw new RangeError("buffer too small")}function d(e,t,r,n){if(i.browser){var a=e.buffer,s=new Uint8Array(a,t,r);return c.getRandomValues(s),n?void i.nextTick((function(){n(null,e)})):e}if(!n)return o(r).copy(e,t),e;o(r,(function(r,i){if(r)return n(r);i.copy(e,t),n(null,e)}))}c&&c.getRandomValues||!i.browser?(t.randomFill=function(e,t,i,n){if(!(s.isBuffer(e)||e instanceof r.g.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"==typeof t)n=t,t=0,i=e.length;else if("function"==typeof i)n=i,i=e.length-t;else if("function"!=typeof n)throw new TypeError('"cb" argument must be a function');return h(t,e.length),p(i,t,e.length),d(e,t,i,n)},t.randomFillSync=function(e,t,i){if(void 0===t&&(t=0),!(s.isBuffer(e)||e instanceof r.g.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return h(t,e.length),void 0===i&&(i=e.length-t),p(i,t,e.length),d(e,t,i)}):(t.randomFill=n,t.randomFillSync=n)},94281:e=>{"use strict";var t={};function r(e,r,i){i||(i=Error);var n=function(e){var t,i;function n(t,i,n){return e.call(this,function(e,t,i){return"string"==typeof r?r:r(e,t,i)}(t,i,n))||this}return i=e,(t=n).prototype=Object.create(i.prototype),t.prototype.constructor=t,t.__proto__=i,n}(i);n.prototype.name=i.name,n.prototype.code=e,t[e]=n}function i(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map((function(e){return String(e)})),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:2===r?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}return"of ".concat(t," ").concat(String(e))}r("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),r("ERR_INVALID_ARG_TYPE",(function(e,t,r){var n,a,o,s,u;if("string"==typeof t&&(a="not ",t.substr(0,a.length)===a)?(n="must not be",t=t.replace(/^not /,"")):n="must be",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e," argument"))o="The ".concat(e," ").concat(n," ").concat(i(t,"type"));else{var c=("number"!=typeof u&&(u=0),u+".".length>(s=e).length||-1===s.indexOf(".",u)?"argument":"property");o='The "'.concat(e,'" ').concat(c," ").concat(n," ").concat(i(t,"type"))}return o+". Received type ".concat(typeof r)}),TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),e.exports.q=t},56753:(e,t,r)=>{"use strict";var i=r(34155),n=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=l;var a=r(79481),o=r(64229);r(35717)(l,a);for(var s=n(o.prototype),u=0;u{"use strict";e.exports=n;var i=r(74605);function n(e){if(!(this instanceof n))return new n(e);i.call(this,e)}r(35717)(n,i),n.prototype._transform=function(e,t,r){r(null,e)}},79481:(e,t,r)=>{"use strict";var i,n=r(34155);e.exports=x,x.ReadableState=S,r(17187).EventEmitter;var a,o=function(e,t){return e.listeners(t).length},s=r(22503),u=r(48764).Buffer,c=r.g.Uint8Array||function(){},l=r(94616);a=l&&l.debuglog?l.debuglog("stream"):function(){};var h,p,d,f=r(57327),m=r(61195),g=r(82457).getHighWaterMark,v=r(94281).q,y=v.ERR_INVALID_ARG_TYPE,_=v.ERR_STREAM_PUSH_AFTER_EOF,b=v.ERR_METHOD_NOT_IMPLEMENTED,w=v.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;r(35717)(x,s);var E=m.errorOrDestroy,k=["error","close","destroy","pause","resume"];function S(e,t,n){i=i||r(56753),e=e||{},"boolean"!=typeof n&&(n=t instanceof i),this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=g(this,e,"readableHighWaterMark",n),this.buffer=new f,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(h||(h=r(32553).s),this.decoder=new h(e.encoding),this.encoding=e.encoding)}function x(e){if(i=i||r(56753),!(this instanceof x))return new x(e);var t=this instanceof i;this._readableState=new S(e,this,t),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),s.call(this)}function j(e,t,r,i,n){a("readableAddChunk",t);var o,s=e._readableState;if(null===t)s.reading=!1,function(e,t){if(a("onEofChunk"),!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?A(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,T(e)))}}(e,s);else if(n||(o=function(e,t){var r,i;return i=t,u.isBuffer(i)||i instanceof c||"string"==typeof t||void 0===t||e.objectMode||(r=new y("chunk",["string","Buffer","Uint8Array"],t)),r}(s,t)),o)E(e,o);else if(s.objectMode||t&&t.length>0)if("string"==typeof t||s.objectMode||Object.getPrototypeOf(t)===u.prototype||(t=function(e){return u.from(e)}(t)),i)s.endEmitted?E(e,new w):N(e,s,t,!0);else if(s.ended)E(e,new _);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!r?(t=s.decoder.write(t),s.objectMode||0!==t.length?N(e,s,t,!1):R(e,s)):N(e,s,t,!1)}else i||(s.reading=!1,R(e,s));return!s.ended&&(s.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=M?e=M:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function A(e){var t=e._readableState;a("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(a("emitReadable",t.flowing),t.emittedReadable=!0,n.nextTick(T,e))}function T(e){var t=e._readableState;a("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,z(e)}function R(e,t){t.readingMore||(t.readingMore=!0,n.nextTick(P,e,t))}function P(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function B(e){a("readable nexttick read 0"),e.read(0)}function C(e,t){a("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),z(e),t.flowing&&!t.reading&&e.read(0)}function z(e){var t=e._readableState;for(a("flow",t.flowing);t.flowing&&null!==e.read(););}function F(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function D(e){var t=e._readableState;a("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,n.nextTick(q,t,e))}function q(e,t){if(a("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function L(e,t){for(var r=0,i=e.length;r=t.highWaterMark:t.length>0)||t.ended))return a("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?D(this):A(this),null;if(0===(e=I(e,t))&&t.ended)return 0===t.length&&D(this),null;var i,n=t.needReadable;return a("need readable",n),(0===t.length||t.length-e0?F(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&D(this)),null!==i&&this.emit("data",i),i},x.prototype._read=function(e){E(this,new b("_read()"))},x.prototype.pipe=function(e,t){var r=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e)}i.pipesCount+=1,a("pipe count=%d opts=%j",i.pipesCount,t);var s=t&&!1===t.end||e===n.stdout||e===n.stderr?m:u;function u(){a("onend"),e.end()}i.endEmitted?n.nextTick(s):r.once("end",s),e.on("unpipe",(function t(n,o){a("onunpipe"),n===r&&o&&!1===o.hasUnpiped&&(o.hasUnpiped=!0,a("cleanup"),e.removeListener("close",d),e.removeListener("finish",f),e.removeListener("drain",c),e.removeListener("error",p),e.removeListener("unpipe",t),r.removeListener("end",u),r.removeListener("end",m),r.removeListener("data",h),l=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||c())}));var c=function(e){return function(){var t=e._readableState;a("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&o(e,"data")&&(t.flowing=!0,z(e))}}(r);e.on("drain",c);var l=!1;function h(t){a("ondata");var n=e.write(t);a("dest.write",n),!1===n&&((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==L(i.pipes,e))&&!l&&(a("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function p(t){a("onerror",t),m(),e.removeListener("error",p),0===o(e,"error")&&E(e,t)}function d(){e.removeListener("finish",f),m()}function f(){a("onfinish"),e.removeListener("close",d),m()}function m(){a("unpipe"),r.unpipe(e)}return r.on("data",h),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events.error?Array.isArray(e._events.error)?e._events.error.unshift(r):e._events.error=[r,e._events.error]:e.on(t,r)}(e,"error",p),e.once("close",d),e.once("finish",f),e.emit("pipe",r),i.flowing||(a("pipe resume"),r.resume()),e},x.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;if(!e){var i=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a0,!1!==i.flowing&&this.resume()):"readable"===e&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,a("on readable",i.length,i.reading),i.length?A(this):i.reading||n.nextTick(B,this))),r},x.prototype.addListener=x.prototype.on,x.prototype.removeListener=function(e,t){var r=s.prototype.removeListener.call(this,e,t);return"readable"===e&&n.nextTick(O,this),r},x.prototype.removeAllListeners=function(e){var t=s.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||n.nextTick(O,this),t},x.prototype.resume=function(){var e=this._readableState;return e.flowing||(a("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,n.nextTick(C,e,t))}(this,e)),e.paused=!1,this},x.prototype.pause=function(){return a("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(a("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},x.prototype.wrap=function(e){var t=this,r=this._readableState,i=!1;for(var n in e.on("end",(function(){if(a("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(n){a("wrapped data"),r.decoder&&(n=r.decoder.write(n)),r.objectMode&&null==n||(r.objectMode||n&&n.length)&&(t.push(n)||(i=!0,e.pause()))})),e)void 0===this[n]&&"function"==typeof e[n]&&(this[n]=function(t){return function(){return e[t].apply(e,arguments)}}(n));for(var o=0;o{"use strict";e.exports=l;var i=r(94281).q,n=i.ERR_METHOD_NOT_IMPLEMENTED,a=i.ERR_MULTIPLE_CALLBACK,o=i.ERR_TRANSFORM_ALREADY_TRANSFORMING,s=i.ERR_TRANSFORM_WITH_LENGTH_0,u=r(56753);function c(e,t){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(null===i)return this.emit("error",new a);r.writechunk=null,r.writecb=null,null!=t&&this.push(t),i(e);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";var i,n=r(34155);function a(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var i=e.entry;for(e.entry=null;i;){var n=i.callback;t.pendingcb--,n(undefined),i=i.next}t.corkedRequestsFree.next=e}(t,e)}}e.exports=x,x.WritableState=S;var o,s={deprecate:r(94927)},u=r(22503),c=r(48764).Buffer,l=r.g.Uint8Array||function(){},h=r(61195),p=r(82457).getHighWaterMark,d=r(94281).q,f=d.ERR_INVALID_ARG_TYPE,m=d.ERR_METHOD_NOT_IMPLEMENTED,g=d.ERR_MULTIPLE_CALLBACK,v=d.ERR_STREAM_CANNOT_PIPE,y=d.ERR_STREAM_DESTROYED,_=d.ERR_STREAM_NULL_VALUES,b=d.ERR_STREAM_WRITE_AFTER_END,w=d.ERR_UNKNOWN_ENCODING,E=h.errorOrDestroy;function k(){}function S(e,t,o){i=i||r(56753),e=e||{},"boolean"!=typeof o&&(o=t instanceof i),this.objectMode=!!e.objectMode,o&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=p(this,e,"writableHighWaterMark",o),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=!1===e.decodeStrings;this.decodeStrings=!s,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,i=r.sync,a=r.writecb;if("function"!=typeof a)throw new g;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,i,a){--t.pendingcb,r?(n.nextTick(a,i),n.nextTick(T,e,t),e._writableState.errorEmitted=!0,E(e,i)):(a(i),e._writableState.errorEmitted=!0,E(e,i),T(e,t))}(e,r,i,t,a);else{var o=I(r)||e.destroyed;o||r.corked||r.bufferProcessing||!r.bufferedRequest||M(e,r),i?n.nextTick(N,e,r,o,a):N(e,r,o,a)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new a(this)}function x(e){var t=this instanceof(i=i||r(56753));if(!t&&!o.call(x,this))return new x(e);this._writableState=new S(e,this,t),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),u.call(this)}function j(e,t,r,i,n,a,o){t.writelen=i,t.writecb=o,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new y("write")):r?e._writev(n,t.onwrite):e._write(n,a,t.onwrite),t.sync=!1}function N(e,t,r,i){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,i(),T(e,t)}function M(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var i=t.bufferedRequestCount,n=new Array(i),o=t.corkedRequestsFree;o.entry=r;for(var s=0,u=!0;r;)n[s]=r,r.isBuf||(u=!1),r=r.next,s+=1;n.allBuffers=u,j(e,t,!0,t.length,n,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new a(t),t.bufferedRequestCount=0}else{for(;r;){var c=r.chunk,l=r.encoding,h=r.callback;if(j(e,t,!1,t.objectMode?1:c.length,c,l,h),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function I(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function A(e,t){e._final((function(r){t.pendingcb--,r&&E(e,r),t.prefinished=!0,e.emit("prefinish"),T(e,t)}))}function T(e,t){var r=I(t);if(r&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,n.nextTick(A,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"),t.autoDestroy))){var i=e._readableState;(!i||i.autoDestroy&&i.endEmitted)&&e.destroy()}return r}r(35717)(x,u),S.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(S.prototype,"buffer",{get:s.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(o=Function.prototype[Symbol.hasInstance],Object.defineProperty(x,Symbol.hasInstance,{value:function(e){return!!o.call(this,e)||this===x&&e&&e._writableState instanceof S}})):o=function(e){return e instanceof this},x.prototype.pipe=function(){E(this,new v)},x.prototype.write=function(e,t,r){var i,a=this._writableState,o=!1,s=!a.objectMode&&(i=e,c.isBuffer(i)||i instanceof l);return s&&!c.isBuffer(e)&&(e=function(e){return c.from(e)}(e)),"function"==typeof t&&(r=t,t=null),s?t="buffer":t||(t=a.defaultEncoding),"function"!=typeof r&&(r=k),a.ending?function(e,t){var r=new b;E(e,r),n.nextTick(t,r)}(this,r):(s||function(e,t,r,i){var a;return null===r?a=new _:"string"==typeof r||t.objectMode||(a=new f("chunk",["string","Buffer"],r)),!a||(E(e,a),n.nextTick(i,a),!1)}(this,a,e,r))&&(a.pendingcb++,o=function(e,t,r,i,n,a){if(!r){var o=function(e,t,r){return e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=c.from(t,r)),t}(t,i,n);i!==o&&(r=!0,n="buffer",i=o)}var s=t.objectMode?1:i.length;t.length+=s;var u=t.length-1))throw new w(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(x.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(x.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),x.prototype._write=function(e,t,r){r(new m("_write()"))},x.prototype._writev=null,x.prototype.end=function(e,t,r){var i=this._writableState;return"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),i.corked&&(i.corked=1,this.uncork()),i.ending||function(e,t,r){t.ending=!0,T(e,t),r&&(t.finished?n.nextTick(r):e.once("finish",r)),t.ended=!0,e.writable=!1}(this,i,r),this},Object.defineProperty(x.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(x.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),x.prototype.destroy=h.destroy,x.prototype._undestroy=h.undestroy,x.prototype._destroy=function(e,t){t(e)}},45850:(e,t,r)=>{"use strict";var i,n=r(34155);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var o=r(8610),s=Symbol("lastResolve"),u=Symbol("lastReject"),c=Symbol("error"),l=Symbol("ended"),h=Symbol("lastPromise"),p=Symbol("handlePromise"),d=Symbol("stream");function f(e,t){return{value:e,done:t}}function m(e){var t=e[s];if(null!==t){var r=e[d].read();null!==r&&(e[h]=null,e[s]=null,e[u]=null,t(f(r,!1)))}}function g(e){n.nextTick(m,e)}var v=Object.getPrototypeOf((function(){})),y=Object.setPrototypeOf((a(i={get stream(){return this[d]},next:function(){var e=this,t=this[c];if(null!==t)return Promise.reject(t);if(this[l])return Promise.resolve(f(void 0,!0));if(this[d].destroyed)return new Promise((function(t,r){n.nextTick((function(){e[c]?r(e[c]):t(f(void 0,!0))}))}));var r,i=this[h];if(i)r=new Promise(function(e,t){return function(r,i){e.then((function(){t[l]?r(f(void 0,!0)):t[p](r,i)}),i)}}(i,this));else{var a=this[d].read();if(null!==a)return Promise.resolve(f(a,!1));r=new Promise(this[p])}return this[h]=r,r}},Symbol.asyncIterator,(function(){return this})),a(i,"return",(function(){var e=this;return new Promise((function(t,r){e[d].destroy(null,(function(e){e?r(e):t(f(void 0,!0))}))}))})),i),v);e.exports=function(e){var t,r=Object.create(y,(a(t={},d,{value:e,writable:!0}),a(t,s,{value:null,writable:!0}),a(t,u,{value:null,writable:!0}),a(t,c,{value:null,writable:!0}),a(t,l,{value:e._readableState.endEmitted,writable:!0}),a(t,p,{value:function(e,t){var i=r[d].read();i?(r[h]=null,r[s]=null,r[u]=null,e(f(i,!1))):(r[s]=e,r[u]=t)},writable:!0}),t));return r[h]=null,o(e,(function(e){if(e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code){var t=r[u];return null!==t&&(r[h]=null,r[s]=null,r[u]=null,t(e)),void(r[c]=e)}var i=r[s];null!==i&&(r[h]=null,r[s]=null,r[u]=null,i(f(void 0,!0))),r[l]=!0})),e.on("readable",g.bind(null,r)),r}},57327:(e,t,r)=>{"use strict";function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){for(var r=0;r0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r}},{key:"concat",value:function(e){if(0===this.length)return o.alloc(0);for(var t,r,i,n=o.allocUnsafe(e>>>0),a=this.head,s=0;a;)t=a.data,r=n,i=s,o.prototype.copy.call(t,r,i),s+=a.data.length,a=a.next;return n}},{key:"consume",value:function(e,t){var r;return en.length?n.length:e;if(a===n.length?i+=n:i+=n.slice(0,e),0==(e-=a)){a===n.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=n.slice(a));break}++r}return this.length-=r,i}},{key:"_getBuffer",value:function(e){var t=o.allocUnsafe(e),r=this.head,i=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var n=r.data,a=e>n.length?n.length:e;if(n.copy(t,t.length-e,0,a),0==(e-=a)){a===n.length?(++i,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=n.slice(a));break}++i}return this.length-=i,t}},{key:u,value:function(e,t){return s(this,function(e){for(var t=1;t{"use strict";var i=r(34155);function n(e,t){o(e,t),a(e)}function a(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function o(e,t){e.emit("error",t)}e.exports={destroy:function(e,t){var r=this,s=this._readableState&&this._readableState.destroyed,u=this._writableState&&this._writableState.destroyed;return s||u?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,i.nextTick(o,this,e)):i.nextTick(o,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!t&&e?r._writableState?r._writableState.errorEmitted?i.nextTick(a,r):(r._writableState.errorEmitted=!0,i.nextTick(n,r,e)):i.nextTick(n,r,e):t?(i.nextTick(a,r),t(e)):i.nextTick(a,r)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(e,t){var r=e._readableState,i=e._writableState;r&&r.autoDestroy||i&&i.autoDestroy?e.destroy(t):e.emit("error",t)}}},8610:(e,t,r)=>{"use strict";var i=r(94281).q.ERR_STREAM_PREMATURE_CLOSE;function n(){}e.exports=function e(t,r,a){if("function"==typeof r)return e(t,null,r);r||(r={}),a=function(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,i=new Array(r),n=0;n{e.exports=function(){throw new Error("Readable.from is not available in the browser")}},59946:(e,t,r)=>{"use strict";var i,n=r(94281).q,a=n.ERR_MISSING_ARGS,o=n.ERR_STREAM_DESTROYED;function s(e){if(e)throw e}function u(e,t,n,a){a=function(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}(a);var s=!1;e.on("close",(function(){s=!0})),void 0===i&&(i=r(8610)),i(e,{readable:t,writable:n},(function(e){if(e)return a(e);s=!0,a()}));var u=!1;return function(t){if(!s&&!u)return u=!0,function(e){return e.setHeader&&"function"==typeof e.abort}(e)?e.abort():"function"==typeof e.destroy?e.destroy():void a(t||new o("pipe"))}}function c(e){e()}function l(e,t){return e.pipe(t)}function h(e){return e.length?"function"!=typeof e[e.length-1]?s:e.pop():s}e.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;r0,(function(e){i||(i=e),e&&o.forEach(c),a||(o.forEach(c),n(i))}))}));return t.reduce(l)}},82457:(e,t,r)=>{"use strict";var i=r(94281).q.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(e,t,r,n){var a=function(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,n,r);if(null!=a){if(!isFinite(a)||Math.floor(a)!==a||a<0)throw new i(n?r:"highWaterMark",a);return Math.floor(a)}return e.objectMode?16:16384}}},22503:(e,t,r)=>{e.exports=r(17187).EventEmitter},88473:(e,t,r)=>{(t=e.exports=r(79481)).Stream=t,t.Readable=t,t.Writable=r(64229),t.Duplex=r(56753),t.Transform=r(74605),t.PassThrough=r(82725),t.finished=r(8610),t.pipeline=r(59946)},79066:(e,t,r)=>{"use strict";var i=r(80556),n=r(1469),a=r(23560),o=r(37005);e.exports=function(e){var t="Please verify options";if(!o(e))throw new TypeError(t);if(!a(e.request))throw new TypeError(t+".request");if(!n(e.expose)||0===e.expose.length)throw new TypeError(t+".expose");var r=i({PromiseImpl:e.PromiseImpl,constructorMixin:e.constructorMixin}),s=e.request.Request.prototype.init;e.request.Request.prototype.init=function(e){return!o(e)||this._callback||this._rp_promise||r.init.call(this,e),s.apply(this,arguments)};for(var u=!1,c=0;c{"use strict";function t(e,t,r){this.name="RequestError",this.message=String(e),this.cause=e,this.error=e,this.options=t,this.response=r,Error.captureStackTrace&&Error.captureStackTrace(this)}function r(e,t,r,i){this.name="StatusCodeError",this.statusCode=e,this.message=e+" - "+(JSON&&JSON.stringify?JSON.stringify(t):t),this.error=t,this.options=r,this.response=i,Error.captureStackTrace&&Error.captureStackTrace(this)}function i(e,t,r){this.name="TransformError",this.message=String(e),this.cause=e,this.error=e,this.options=t,this.response=r,Error.captureStackTrace&&Error.captureStackTrace(this)}t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,e.exports={RequestError:t,StatusCodeError:r,TransformError:i}},80556:(e,t,r)=>{"use strict";var i=r(72561),n=r(23560),a=r(37005),o=r(47037),s=r(52353);e.exports=function(e){var t="Please verify options";if(!a(e))throw new TypeError(t);if(!n(e.PromiseImpl))throw new TypeError(t+".PromiseImpl");if(!s(e.constructorMixin)&&!n(e.constructorMixin))throw new TypeError(t+".PromiseImpl");var r=e.PromiseImpl,u=e.constructorMixin,c={init:function(e){var t=this;t._rp_promise=new r((function(e,r){t._rp_resolve=e,t._rp_reject=r,u&&u.apply(t,arguments)})),t._rp_callbackOrig=e.callback,e.callback=t.callback=function(e,r,i){c.callback.call(t,e,r,i)},o(e.method)&&(e.method=e.method.toUpperCase()),e.transform=e.transform||c.defaultTransformations[e.method],t._rp_options=e,t._rp_options.simple=!1!==e.simple,t._rp_options.resolveWithFullResponse=!0===e.resolveWithFullResponse,t._rp_options.transform2xxOnly=!0===e.transform2xxOnly},defaultTransformations:{HEAD:function(e,t,r){return r?t:t.headers}},callback:function(e,t,a){var o=this,s=!1,u=null;if(n(o._rp_callbackOrig))try{o._rp_callbackOrig.apply(o,arguments)}catch(e){s=!0,u=e}var c=!e&&/^2/.test(""+t.statusCode);if(e?o._rp_reject(new i.RequestError(e,o._rp_options,t)):o._rp_options.simple&&!c?n(o._rp_options.transform)&&!1===o._rp_options.transform2xxOnly?new r((function(e){e(o._rp_options.transform(a,t,o._rp_options.resolveWithFullResponse))})).then((function(e){o._rp_reject(new i.StatusCodeError(t.statusCode,a,o._rp_options,e))})).catch((function(e){o._rp_reject(new i.TransformError(e,o._rp_options,t))})):o._rp_reject(new i.StatusCodeError(t.statusCode,a,o._rp_options,t)):n(o._rp_options.transform)&&(c||!1===o._rp_options.transform2xxOnly)?new r((function(e){e(o._rp_options.transform(a,t,o._rp_options.resolveWithFullResponse))})).then((function(e){o._rp_resolve(e)})).catch((function(e){o._rp_reject(new i.TransformError(e,o._rp_options,t))})):o._rp_options.resolveWithFullResponse?o._rp_resolve(t):o._rp_resolve(a),s)throw u},exposePromiseMethod:function(e,t,r,i,n){if((n=n||i)in e)throw new Error('Unable to expose method "'+n+'"');e[n]=function(){var e=t||this;return e[r][i].apply(e[r],arguments)}},exposePromise:function(e,t,r,i){if((i=i||"promise")in e)throw new Error('Unable to expose method "'+i+'"');e[i]=function(){return(t||this)[r]}}};return c}},8037:(e,t,r)=>{"use strict";e=r.nmd(e);var i=r(96624).getNewLibraryCopy(),n=r(79066),a=r(8799);try{var o=a(r.c,(function(){return r(34079)}),(function(){r(47857)}),e)}catch(e){var s=r(67435).bW;throw console.error(s+"###"+s+'### The "request" library is not installed automatically anymore.'+s+'### But is a dependency of "request-promise".'+s+"### Please install it with:"+s+"### npm install request --save"+s+"###"+s),e}i.config({cancellation:!0}),n({request:o,PromiseImpl:i,expose:["then","catch","finally","cancel","promise"],constructorMixin:function(e,t,r){var i=this;r((function(){i.abort()}))}}),o.bindCLS=function(){throw new Error("CLS support was dropped. To get it back read: https://github.com/request/request-promise/wiki/Getting-Back-Support-for-Continuation-Local-Storage")},e.exports=o},34079:(e,t,r)=>{"use strict";var i=r(94470),n=r(64220),a=r(89578).paramsHaveRequestBody;function o(e,t,r){"function"==typeof t&&(r=t);var n={};return null!==t&&"object"==typeof t?i(n,t,{uri:e}):i(n,"string"==typeof e?{uri:e}:e),n.callback=r||n.callback,n}function s(e,t,r){if(void 0===e)throw new Error("undefined is not a valid uri or options object.");var i=o(e,t,r);if("HEAD"===i.method&&a(i))throw new Error("HTTP HEAD requests MUST NOT include a request body.");return new s.Request(i)}function u(e){var t=e.toUpperCase();return function(e,r,i){var n=o(e,r,i);return n.method=t,s(n,n.callback)}}function c(e,t,r,n){return function(a,s,u){var c=o(a,s,u),l={};return i(!0,l,t,c),l.pool=c.pool||t.pool,n&&(l.method=n.toUpperCase()),"function"==typeof r&&(e=r),e(l,l.callback)}}s.get=u("get"),s.head=u("head"),s.options=u("options"),s.post=u("post"),s.put=u("put"),s.patch=u("patch"),s.del=u("delete"),s.delete=u("delete"),s.jar=function(e){return n.jar(e)},s.cookie=function(e){return n.parse(e)},s.defaults=function(e,t){var r=this;"function"==typeof(e=e||{})&&(t=e,e={});var i=c(r,e,t);return["get","head","post","put","patch","del","delete"].forEach((function(n){i[n]=c(r[n],e,t,n)})),i.cookie=c(r.cookie,e,t),i.jar=r.jar,i.defaults=r.defaults,i},s.forever=function(e,t){var r={};return t&&i(r,t),e&&(r.agentOptions=e),r.forever=!0,s.defaults(r)},e.exports=s,s.Request=r(79517),s.initParams=o,Object.defineProperty(s,"debug",{enumerable:!0,get:function(){return s.Request.debug},set:function(e){s.Request.debug=e}})},92169:(e,t,r)=>{"use strict";var i=r(9894),n=r(71171),a=r(89578),o=a.md5,s=a.toBase64;function u(e){this.request=e,this.hasAuth=!1,this.sentAuth=!1,this.bearerToken=null,this.user=null,this.pass=null}u.prototype.basic=function(e,t,r){var i=this;if(("string"!=typeof e||void 0!==t&&"string"!=typeof t)&&i.request.emit("error",new Error("auth() received invalid user or password")),i.user=e,i.pass=t,i.hasAuth=!0,r||void 0===r){var n="Basic "+s(e+":"+(t||""));return i.sentAuth=!0,n}},u.prototype.bearer=function(e,t){var r=this;if(r.bearerToken=e,r.hasAuth=!0,t||void 0===t){"function"==typeof e&&(e=e());var i="Bearer "+(e||"");return r.sentAuth=!0,i}},u.prototype.digest=function(e,t,r){for(var i=this,a={},s=/([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi;;){var u=s.exec(r);if(!u)break;a[u[1]]=u[2]||u[3]}var c=/(^|,)\s*auth\s*($|,)/.test(a.qop)&&"auth",l=c&&"00000001",h=c&&n().replace(/-/g,""),p=function(e,t,r,i,n,a){var s=o(t+":"+r+":"+i);return e&&"md5-sess"===e.toLowerCase()?o(s+":"+n+":"+a):s}(a.algorithm,i.user,a.realm,i.pass,a.nonce,h),d=o(e+":"+t),f=o(c?p+":"+a.nonce+":"+l+":"+h+":"+c+":"+d:p+":"+a.nonce+":"+d),m={username:i.user,realm:a.realm,nonce:a.nonce,uri:t,qop:c,response:f,nc:l,cnonce:h,algorithm:a.algorithm,opaque:a.opaque};for(var g in r=[],m)m[g]&&("qop"===g||"nc"===g||"algorithm"===g?r.push(g+"="+m[g]):r.push(g+'="'+m[g]+'"'));return r="Digest "+r.join(", "),i.sentAuth=!0,r},u.prototype.onRequest=function(e,t,r,i){var n,a=this,o=a.request;void 0===i&&void 0===e?a.request.emit("error",new Error("no auth mechanism defined")):n=void 0!==i?a.bearer(i,r):a.basic(e,t,r),n&&o.setHeader("authorization",n)},u.prototype.onResponse=function(e){var t=this,r=t.request;if(!t.hasAuth||t.sentAuth)return null;var n=i(e.headers).get("www-authenticate"),a=n&&n.split(" ")[0].toLowerCase();switch(r.debug("reauth",a),a){case"basic":return t.basic(t.user,t.pass,!0);case"bearer":return t.bearer(t.bearerToken,!0);case"digest":return t.digest(r.method,r.path,n)}},t.g=u},64220:(e,t,r)=>{"use strict";var i=r(47857),n=i.Cookie,a=i.CookieJar;function o(e){this._jar=new a(e,{looseMode:!0})}t.parse=function(e){if(e&&e.uri&&(e=e.uri),"string"!=typeof e)throw new Error("The cookie function only accepts STRING as param");return n.parse(e,{loose:!0})},o.prototype.setCookie=function(e,t,r){return this._jar.setCookieSync(e,t,r||{})},o.prototype.getCookieString=function(e){return this._jar.getCookieStringSync(e)},o.prototype.getCookies=function(e){return this._jar.getCookiesSync(e)},t.jar=function(e){return new o(e)}},26289:(e,t,r)=>{"use strict";var i=r(34155);function n(e){return e.replace(/^\.*/,".").toLowerCase()}function a(e){var t=(e=e.trim().toLowerCase()).split(":",2);return{hostname:n(t[0]),port:t[1],hasPort:e.indexOf(":")>-1}}e.exports=function(e){var t=i.env.NO_PROXY||i.env.no_proxy||"";return"*"===t||""!==t&&function(e,t){var r=e.port||("https:"===e.protocol?"443":"80"),i=n(e.hostname);return t.split(",").map(a).some((function(e){var t=i.indexOf(e.hostname),n=t>-1&&t===i.length-e.hostname.length;return e.hasPort?r===e.port&&n:n}))}(e,t)?null:"http:"===e.protocol?i.env.HTTP_PROXY||i.env.http_proxy||null:"https:"===e.protocol&&(i.env.HTTPS_PROXY||i.env.https_proxy||i.env.HTTP_PROXY||i.env.http_proxy)||null}},8107:(e,t,r)=>{"use strict";var i=r(76614),n=r(17673),a=r(86056),o=r(94470);function s(e){this.request=e}s.prototype.reducer=function(e,t){if(void 0===e[t.name])return e[t.name]=t.value,e;var r=[e[t.name],t.value];return e[t.name]=r,e},s.prototype.prep=function(e){if(e.queryObj={},e.headersObj={},e.postData.jsonObj=!1,e.postData.paramsObj=!1,e.queryString&&e.queryString.length&&(e.queryObj=e.queryString.reduce(this.reducer,{})),e.headers&&e.headers.length&&(e.headersObj=e.headers.reduceRight((function(e,t){return e[t.name]=t.value,e}),{})),e.cookies&&e.cookies.length){var t=e.cookies.map((function(e){return e.name+"="+e.value}));t.length&&(e.headersObj.cookie=t.join("; "))}function r(t){return t.some((function(t){return 0===e.postData.mimeType.indexOf(t)}))}if(r(["multipart/mixed","multipart/related","multipart/form-data","multipart/alternative"]))e.postData.mimeType="multipart/form-data";else if(r(["application/x-www-form-urlencoded"]))e.postData.params?(e.postData.paramsObj=e.postData.params.reduce(this.reducer,{}),e.postData.text=n.stringify(e.postData.paramsObj)):e.postData.text="";else if(r(["text/json","text/x-json","application/json","application/x-json"])&&(e.postData.mimeType="application/json",e.postData.text))try{e.postData.jsonObj=JSON.parse(e.postData.text)}catch(t){this.request.debug(t),e.postData.mimeType="text/plain"}return e},s.prototype.options=function(e){if(!e.har)return e;var t={};if(o(t,e.har),t.log&&t.log.entries&&(t=t.log.entries[0]),t.url=t.url||e.url||e.uri||e.baseUrl||"/",t.httpVersion=t.httpVersion||"HTTP/1.1",t.queryString=t.queryString||[],t.headers=t.headers||[],t.cookies=t.cookies||[],t.postData=t.postData||{},t.postData.mimeType=t.postData.mimeType||"application/octet-stream",t.bodySize=0,t.headersSize=0,t.postData.size=0,!a.request(t))return e;var r=this.prep(t);function n(e){return 0===r.postData.mimeType.indexOf(e)}return r.url&&(e.url=r.url),r.method&&(e.method=r.method),Object.keys(r.queryObj).length&&(e.qs=r.queryObj),Object.keys(r.headersObj).length&&(e.headers=r.headersObj),n("application/x-www-form-urlencoded")?e.form=r.postData.paramsObj:n("application/json")?r.postData.jsonObj&&(e.body=r.postData.jsonObj,e.json=!0):n("multipart/form-data")?(e.formData={},r.postData.params.forEach((function(t){var r={};t.fileName||t.contentType?(t.fileName&&!t.value?r.value=i.createReadStream(t.fileName):t.value&&(r.value=t.value),t.fileName&&(r.options={filename:t.fileName,contentType:t.contentType?t.contentType:null}),e.formData[t.name]=r):e.formData[t.name]=t.value}))):r.postData.text&&(e.body=r.postData.text),e},t.t=s},76514:(e,t,r)=>{"use strict";var i=r(55835);t.calculateMac=function(e,t){var r="hawk.1.header\n"+t.ts+"\n"+t.nonce+"\n"+(t.method||"").toUpperCase()+"\n"+t.resource+"\n"+t.host.toLowerCase()+"\n"+t.port+"\n"+(t.hash||"")+"\n";return t.ext&&(r+=t.ext.replace("\\","\\\\").replace("\n","\\n")),r+="\n",t.app&&(r=r+t.app+"\n"+(t.dlg||"")+"\n"),i.createHmac(e.algorithm,e.key).update(r).digest("base64")},t.header=function(e,r,n){var a=n.timestamp||Math.floor((Date.now()+(n.localtimeOffsetMsec||0))/1e3),o=n.credentials;if(!(o&&o.id&&o.key&&o.algorithm))return"";if(-1===["sha1","sha256"].indexOf(o.algorithm))return"";var s,u,c,l,h={ts:a,nonce:n.nonce||(6,42,i.randomBytes(Math.ceil(5.25)).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"").slice(0,6)),method:r,resource:e.pathname+(e.search||""),host:e.hostname,port:e.port||("http:"===e.protocol?80:443),hash:n.hash,ext:n.ext,app:n.app,dlg:n.dlg};h.hash||!n.payload&&""!==n.payload||(h.hash=(s=n.payload,u=o.algorithm,c=n.contentType,(l=i.createHash(u)).update("hawk.1.payload\n"),l.update((c?c.split(";")[0].trim().toLowerCase():"")+"\n"),l.update(s||""),l.update("\n"),l.digest("base64")));var p=t.calculateMac(o,h),d=null!==h.ext&&void 0!==h.ext&&""!==h.ext,f='Hawk id="'+o.id+'", ts="'+h.ts+'", nonce="'+h.nonce+(h.hash?'", hash="'+h.hash:"")+(d?'", ext="'+h.ext.replace(/\\/g,"\\\\").replace(/"/g,'\\"'):"")+'", mac="'+p+'"';return h.app&&(f=f+', app="'+h.app+(h.dlg?'", dlg="'+h.dlg:"")+'"'),f}},89578:(e,t,r)=>{"use strict";var i=r(34155),n=r(64530),a=r(55835),o=r(89509).Buffer,s="undefined"==typeof setImmediate?i.nextTick:setImmediate;t.paramsHaveRequestBody=function(e){return e.body||e.requestBodyStream||e.json&&"boolean"!=typeof e.json||e.multipart},t.safeStringify=function(e,t){var r;try{r=JSON.stringify(e,t)}catch(i){r=n(e,t)}return r},t.md5=function(e){return a.createHash("md5").update(e).digest("hex")},t.isReadStream=function(e){return e.readable&&e.path&&e.mode},t.toBase64=function(e){return o.from(e||"","utf8").toString("base64")},t.copy=function(e){var t={};return Object.keys(e).forEach((function(r){t[r]=e[r]})),t},t.version=function(){var e=i.version.replace("v","").split(".");return{major:parseInt(e[0],10),minor:parseInt(e[1],10),patch:parseInt(e[2],10)}},t.defer=s},46434:(e,t,r)=>{"use strict";var i=r(71171),n=r(9779),a=r(97356),o=r(89509).Buffer;function s(e){this.request=e,this.boundary=i(),this.chunked=!1,this.body=null}s.prototype.isChunked=function(e){var t=this,r=!1,i=e.data||e;return i.forEach||t.request.emit("error",new Error("Argument error, options.multipart.")),void 0!==e.chunked&&(r=e.chunked),"chunked"===t.request.getHeader("transfer-encoding")&&(r=!0),r||i.forEach((function(e){void 0===e.body&&t.request.emit("error",new Error("Body attribute missing in multipart.")),a(e.body)&&(r=!0)})),r},s.prototype.setHeaders=function(e){var t=this;e&&!t.request.hasHeader("transfer-encoding")&&t.request.setHeader("transfer-encoding","chunked");var r=t.request.getHeader("content-type");r&&-1!==r.indexOf("multipart")?-1!==r.indexOf("boundary")?t.boundary=r.replace(/.*boundary=([^\s;]+).*/,"$1"):t.request.setHeader("content-type",r+"; boundary="+t.boundary):t.request.setHeader("content-type","multipart/related; boundary="+t.boundary)},s.prototype.build=function(e,t){var r=this,i=t?new n:[];function a(e){return"number"==typeof e&&(e=e.toString()),t?i.append(e):i.push(o.from(e))}return r.request.preambleCRLF&&a("\r\n"),e.forEach((function(e){var t="--"+r.boundary+"\r\n";Object.keys(e).forEach((function(r){"body"!==r&&(t+=r+": "+e[r]+"\r\n")})),a(t+="\r\n"),a(e.body),a("\r\n")})),a("--"+r.boundary+"--"),r.request.postambleCRLF&&a("\r\n"),i},s.prototype.onRequest=function(e){var t=this,r=t.isChunked(e),i=e.data||e;t.setHeaders(r),t.chunked=r,t.body=t.build(i,r)},t.$=s},95756:(e,t,r)=>{"use strict";var i=r(8575),n=r(80129),a=r(9894),o=r(71171),s=r(54586),u=r(55835),c=r(89509).Buffer;function l(e){this.request=e,this.params=null}l.prototype.buildParams=function(e,t,r,i,n,a){var u={};for(var c in e)u["oauth_"+c]=e[c];u.oauth_version||(u.oauth_version="1.0"),u.oauth_timestamp||(u.oauth_timestamp=Math.floor(Date.now()/1e3).toString()),u.oauth_nonce||(u.oauth_nonce=o().replace(/-/g,"")),u.oauth_signature_method||(u.oauth_signature_method="HMAC-SHA1");var l=u.oauth_consumer_secret||u.oauth_private_key;delete u.oauth_consumer_secret,delete u.oauth_private_key;var h=u.oauth_token_secret;delete u.oauth_token_secret;var p=u.oauth_realm;delete u.oauth_realm,delete u.oauth_transport_method;var d=t.protocol+"//"+t.host+t.pathname,f=a.parse([].concat(i,n,a.stringify(u)).join("&"));return u.oauth_signature=s.sign(u.oauth_signature_method,r,d,f,l,h),p&&(u.realm=p),u},l.prototype.buildBodyHash=function(e,t){["HMAC-SHA1","RSA-SHA1"].indexOf(e.signature_method||"HMAC-SHA1")<0&&this.request.emit("error",new Error("oauth: "+e.signature_method+" signature_method not supported with body_hash signing."));var r=u.createHash("sha1");r.update(t||"");var i=r.digest("hex");return c.from(i,"hex").toString("base64")},l.prototype.concatParams=function(e,t,r){r=r||"";var i=Object.keys(e).filter((function(e){return"realm"!==e&&"oauth_signature"!==e})).sort();return e.realm&&i.splice(0,0,"realm"),i.push("oauth_signature"),i.map((function(t){return t+"="+r+s.rfc3986(e[t])+r})).join(t)},l.prototype.onRequest=function(e){var t=this;t.params=e;var r,o,s=t.request.uri||{},u=t.request.method||"",c=a(t.request.headers),l=t.request.body||"",h=t.request.qsLib||n,p=c.get("content-type")||"",d="application/x-www-form-urlencoded",f=e.transport_method||"header";p.slice(0,d.length)===d&&(p=d,r=l),s.query&&(o=s.query),"body"!==f||"POST"===u&&p===d||t.request.emit("error",new Error("oauth: transport_method of body requires POST and content-type "+d)),r||"boolean"!=typeof e.body_hash||(e.body_hash=t.buildBodyHash(e,t.request.body.toString()));var m=t.buildParams(e,s,u,o,r,h);switch(f){case"header":t.request.setHeader("Authorization","OAuth "+t.concatParams(m,",",'"'));break;case"query":var g=t.request.uri.href+=(o?"&":"?")+t.concatParams(m,"&");t.request.uri=i.parse(g),t.request.path=t.request.uri.path;break;case"body":t.request.body=(r?r+"&":"")+t.concatParams(m,"&");break;default:t.request.emit("error",new Error("oauth: transport_method invalid"))}},t.f=l},24252:(e,t,r)=>{"use strict";var i=r(80129),n=r(17673);function a(e){this.request=e,this.lib=null,this.useQuerystring=null,this.parseOptions=null,this.stringifyOptions=null}a.prototype.init=function(e){this.lib||(this.useQuerystring=e.useQuerystring,this.lib=this.useQuerystring?n:i,this.parseOptions=e.qsParseOptions||{},this.stringifyOptions=e.qsStringifyOptions||{})},a.prototype.stringify=function(e){return this.useQuerystring?this.rfc3986(this.lib.stringify(e,this.stringifyOptions.sep||null,this.stringifyOptions.eq||null,this.stringifyOptions)):this.lib.stringify(e,this.stringifyOptions)},a.prototype.parse=function(e){return this.useQuerystring?this.lib.parse(e,this.parseOptions.sep||null,this.parseOptions.eq||null,this.parseOptions):this.lib.parse(e,this.parseOptions)},a.prototype.rfc3986=function(e){return e.replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))},a.prototype.unescape=n.unescape,t.h=a},76927:(e,t,r)=>{"use strict";var i=r(8575),n=/^https?:/;function a(e){this.request=e,this.followRedirect=!0,this.followRedirects=!0,this.followAllRedirects=!1,this.followOriginalHttpMethod=!1,this.allowRedirect=function(){return!0},this.maxRedirects=10,this.redirects=[],this.redirectsFollowed=0,this.removeRefererHeader=!1}a.prototype.onRequest=function(e){var t=this;void 0!==e.maxRedirects&&(t.maxRedirects=e.maxRedirects),"function"==typeof e.followRedirect&&(t.allowRedirect=e.followRedirect),void 0!==e.followRedirect&&(t.followRedirects=!!e.followRedirect),void 0!==e.followAllRedirects&&(t.followAllRedirects=e.followAllRedirects),(t.followRedirects||t.followAllRedirects)&&(t.redirects=t.redirects||[]),void 0!==e.removeRefererHeader&&(t.removeRefererHeader=e.removeRefererHeader),void 0!==e.followOriginalHttpMethod&&(t.followOriginalHttpMethod=e.followOriginalHttpMethod)},a.prototype.redirectTo=function(e){var t=this,r=t.request,i=null;if(e.statusCode>=300&&e.statusCode<400&&e.caseless.has("location")){var n=e.caseless.get("location");if(r.debug("redirect",n),t.followAllRedirects)i=n;else if(t.followRedirects)switch(r.method){case"PATCH":case"PUT":case"POST":case"DELETE":break;default:i=n}}else if(401===e.statusCode){var a=r._auth.onResponse(e);a&&(r.setHeader("authorization",a),i=r.uri)}return i},a.prototype.onResponse=function(e){var t=this,r=t.request,a=t.redirectTo(e);if(!a||!t.allowRedirect.call(r,e))return!1;if(r.debug("redirect to",a),e.resume&&e.resume(),t.redirectsFollowed>=t.maxRedirects)return r.emit("error",new Error("Exceeded maxRedirects. Probably stuck in a redirect loop "+r.uri.href)),!1;t.redirectsFollowed+=1,n.test(a)||(a=i.resolve(r.uri.href,a));var o=r.uri;return r.uri=i.parse(a),r.uri.protocol!==o.protocol&&delete r.agent,t.redirects.push({statusCode:e.statusCode,redirectUri:a}),t.followAllRedirects&&"HEAD"!==r.method&&401!==e.statusCode&&307!==e.statusCode&&(r.method=t.followOriginalHttpMethod?r.method:"GET"),delete r.src,delete r.req,delete r._started,401!==e.statusCode&&307!==e.statusCode&&(delete r.body,delete r._form,r.headers&&(r.removeHeader("host"),r.removeHeader("content-type"),r.removeHeader("content-length"),r.uri.hostname!==r.originalHost.split(":")[0]&&r.removeHeader("authorization"))),t.removeRefererHeader||r.setHeader("referer",o.href),r.emit("redirect"),r.init(),!0},t.l=a},86839:(e,t,r)=>{"use strict";var i=r(8575),n=r(37437),a=["accept","accept-charset","accept-encoding","accept-language","accept-ranges","cache-control","content-encoding","content-language","content-location","content-md5","content-range","content-type","connection","date","expect","max-forwards","pragma","referer","te","user-agent","via"],o=["proxy-authorization"];function s(e){this.request=e,this.proxyHeaderWhiteList=a,this.proxyHeaderExclusiveList=[],void 0!==e.tunnel&&(this.tunnelOverride=e.tunnel)}s.prototype.isEnabled=function(){var e=this,t=e.request;return void 0!==e.tunnelOverride?e.tunnelOverride:"https:"===t.uri.protocol},s.prototype.setup=function(e){var t=this,r=t.request;if(e=e||{},"string"==typeof r.proxy&&(r.proxy=i.parse(r.proxy)),!r.proxy||!r.tunnel)return!1;e.proxyHeaderWhiteList&&(t.proxyHeaderWhiteList=e.proxyHeaderWhiteList),e.proxyHeaderExclusiveList&&(t.proxyHeaderExclusiveList=e.proxyHeaderExclusiveList);var a,s,u,c=t.proxyHeaderExclusiveList.concat(o),l=t.proxyHeaderWhiteList.concat(c),h=function(e,t){var r=t.reduce((function(e,t){return e[t.toLowerCase()]=!0,e}),{});return Object.keys(e).filter((function(e){return r[e.toLowerCase()]})).reduce((function(t,r){return t[r]=e[r],t}),{})}(r.headers,l);h.host=(s=(a=r.uri).port,u=a.protocol,a.hostname+":"+(s||("https:"===u?"443":"80"))),c.forEach(r.removeHeader,r);var p=function(e){var t,r,i=(t=e.uri,r=e.proxy,["https:"===t.protocol?"https":"http","https:"===r.protocol?"Https":"Http"].join("Over"));return n[i]}(r),d=function(e,t){var r=e.proxy;return{proxy:{host:r.hostname,port:+r.port,proxyAuth:r.auth,headers:t},headers:e.headers,ca:e.ca,cert:e.cert,key:e.key,passphrase:e.passphrase,pfx:e.pfx,ciphers:e.ciphers,rejectUnauthorized:e.rejectUnauthorized,secureOptions:e.secureOptions,secureProtocol:e.secureProtocol}}(r,h);return r.agent=p(d),!0},s.defaultProxyHeaderWhiteList=a,s.defaultProxyHeaderExclusiveList=o,t.n=s},79517:(e,t,r)=>{"use strict";var i=r(34155),n=r(8501),a=r(79267),o=r(8575),s=r(89539),u=r(42830),c=r(42635),l=r(17555),h=r(95195),p=r(68007),d=r(80983),f=r(9894),m=r(43281),g=r(6230),v=r(94470),y=r(97356),_=r(4501).strict,b=r(89578),w=r(64220),E=r(26289),k=r(24252).h,S=r(8107).t,x=r(92169).g,j=r(95756).f,N=r(76514),M=r(46434).$,I=r(76927).l,A=r(86839).n,T=r(75),R=r(89509).Buffer,P=b.safeStringify,O=b.isReadStream,B=b.toBase64,C=b.defer,z=b.copy,F=b.version,D=w.jar(),q={};function L(){var e=this;return{uri:e.uri,method:e.method,headers:e.headers}}function U(){var e=this;return{statusCode:e.statusCode,body:e.body,headers:e.headers,request:L.call(e.request)}}function H(e){var t=this;e.har&&(t._har=new S(t),e=t._har.options(e)),u.Stream.call(t);var r=Object.keys(H.prototype),i=function(e,t){var r={};for(var i in t)-1===e.indexOf(i)&&(r[i]=t[i]);return r}(r,e);v(t,i),e=function(e,t){var r={};for(var i in t){var n=!(-1===e.indexOf(i)),a="function"==typeof t[i];n&&a||(r[i]=t[i])}return r}(r,e),t.readable=!0,t.writable=!0,e.method&&(t.explicitMethod=!0),t._qs=new k(t),t._auth=new x(t),t._oauth=new j(t),t._multipart=new M(t),t._redirect=new I(t),t._tunnel=new A(t),t.init(e)}function K(){H.debug&&console.error("REQUEST %s",s.format.apply(s,arguments))}s.inherits(H,u.Stream),H.debug=i.env.NODE_DEBUG&&/\brequest\b/.test(i.env.NODE_DEBUG),H.prototype.debug=K,H.prototype.init=function(e){var t=this;for(var r in e||(e={}),t.headers=t.headers?z(t.headers):{},t.headers)void 0===t.headers[r]&&delete t.headers[r];if(f.httpify(t,t.headers),t.method||(t.method=e.method||"GET"),t.localAddress||(t.localAddress=e.localAddress),t._qs.init(e),K(e),t.pool||!1===t.pool||(t.pool=q),t.dests=t.dests||[],t.__isRequestRequest=!0,!t._callback&&t.callback&&(t._callback=t.callback,t.callback=function(){t._callbackCalled||(t._callbackCalled=!0,t._callback.apply(t,arguments))},t.on("error",t.callback.bind()),t.on("complete",t.callback.bind(t,null))),!t.uri&&t.url&&(t.uri=t.url,delete t.url),t.baseUrl){if("string"!=typeof t.baseUrl)return t.emit("error",new Error("options.baseUrl must be a string"));if("string"!=typeof t.uri)return t.emit("error",new Error("options.uri must be a string when using options.baseUrl"));if(0===t.uri.indexOf("//")||-1!==t.uri.indexOf("://"))return t.emit("error",new Error("options.uri must be a path when using options.baseUrl"));var i=t.baseUrl.lastIndexOf("/")===t.baseUrl.length-1,s=0===t.uri.indexOf("/");i&&s?t.uri=t.baseUrl+t.uri.slice(1):i||s?t.uri=t.baseUrl+t.uri:""===t.uri?t.uri=t.baseUrl:t.uri=t.baseUrl+"/"+t.uri,delete t.baseUrl}if(!t.uri)return t.emit("error",new Error("options.uri is a required argument"));if("string"==typeof t.uri&&(t.uri=o.parse(t.uri)),t.uri.href||(t.uri.href=o.format(t.uri)),"unix:"===t.uri.protocol)return t.emit("error",new Error("`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`"));if("unix"===t.uri.host&&t.enableUnixSocket(),!1===t.strictSSL&&(t.rejectUnauthorized=!1),t.uri.pathname||(t.uri.pathname="/"),!(t.uri.host||t.uri.hostname&&t.uri.port||t.uri.isUnix)){var u='Invalid URI "'+o.format(t.uri)+'"';return 0===Object.keys(e).length&&(u+=". This can be caused by a crappy redirection."),t.abort(),t.emit("error",new Error(u))}if(t.hasOwnProperty("proxy")||(t.proxy=E(t.uri)),t.tunnel=t._tunnel.isEnabled(),t.proxy&&t._tunnel.setup(e),t._redirect.onRequest(e),t.setHost=!1,!t.hasHeader("host")){var c=t.originalHostHeaderName||"host";t.setHeader(c,t.uri.host),t.uri.port&&("80"===t.uri.port&&"http:"===t.uri.protocol||"443"===t.uri.port&&"https:"===t.uri.protocol)&&t.setHeader(c,t.uri.hostname),t.setHost=!0}if(t.jar(t._jar||e.jar),t.uri.port||("http:"===t.uri.protocol?t.uri.port=80:"https:"===t.uri.protocol&&(t.uri.port=443)),t.proxy&&!t.tunnel?(t.port=t.proxy.port,t.host=t.proxy.hostname):(t.port=t.uri.port,t.host=t.uri.hostname),e.form&&t.form(e.form),e.formData){var l=e.formData,h=t.form(),p=function(e,t){t&&t.hasOwnProperty("value")&&t.hasOwnProperty("options")?h.append(e,t.value,t.options):h.append(e,t)};for(var g in l)if(l.hasOwnProperty(g)){var v=l[g];if(v instanceof Array)for(var b=0;b=100&&s<200||204===s||304===s))o=e;else{var u=e.headers["content-encoding"]||"identity";u=u.trim().toLowerCase();var l={flush:c.Z_SYNC_FLUSH,finishFlush:c.Z_SYNC_FLUSH};"gzip"===u?(o=c.createGunzip(l),e.pipe(o)):"deflate"===u?(o=c.createInflate(l),e.pipe(o)):("identity"!==u&&K("ignoring unrecognized Content-Encoding "+u),o=e)}t.encoding&&(0!==t.dests.length?console.error("Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid."):o.setEncoding(t.encoding)),t._paused&&o.pause(),t.responseContent=o,t.emit("response",e),t.dests.forEach((function(e){t.pipeDest(e)})),o.on("data",(function(r){t.timing&&!t.responseStarted&&(t.responseStartTime=(new Date).getTime(),e.responseStartTime=t.responseStartTime),t._destdata=!0,t.emit("data",r)})),o.once("end",(function(e){t.emit("end",e)})),o.on("error",(function(e){t.emit("error",e)})),o.on("close",(function(){t.emit("close")})),t.callback?t.readResponseBody(e):t.on("end",(function(){t._aborted?K("aborted",t.uri.href):t.emit("complete",e)})),K("finish init function",t.uri.href)}}else{K("strict ssl error",t.uri.href);var h=e.hasOwnProperty("socket")?e.socket.authorizationError:t.uri.href+" does not support SSL";t.emit("error",new Error("SSL Error: "+h))}},H.prototype.readResponseBody=function(e){var t=this;K("reading response's body");var r=[],i=0,n=[];t.on("data",(function(e){R.isBuffer(e)?e.length&&(i+=e.length,r.push(e)):n.push(e)})),t.on("end",(function(){if(K("end event",t.uri.href),t._aborted)return K("aborted",t.uri.href),r=[],void(i=0);if(i?(K("has body",t.uri.href,i),e.body=R.concat(r,i),null!==t.encoding&&(e.body=e.body.toString(t.encoding)),r=[],i=0):n.length&&("utf8"===t.encoding&&n[0].length>0&&"\ufeff"===n[0][0]&&(n[0]=n[0].substring(1)),e.body=n.join("")),t._json)try{e.body=JSON.parse(e.body,t._jsonReviver)}catch(e){K("invalid JSON received",t.uri.href)}K("emitting complete",t.uri.href),void 0!==e.body||t._json||(e.body=null===t.encoding?R.alloc(0):""),t.emit("complete",e,e.body)}))},H.prototype.abort=function(){var e=this;e._aborted=!0,e.req?e.req.abort():e.response&&e.response.destroy(),e.clearTimeout(),e.emit("abort")},H.prototype.pipeDest=function(e){var t=this,r=t.response;if(e.headers&&!e.headersSent){if(r.caseless.has("content-type")){var i=r.caseless.has("content-type");e.setHeader?e.setHeader(i,r.headers[i]):e.headers[i]=r.headers[i]}if(r.caseless.has("content-length")){var n=r.caseless.has("content-length");e.setHeader?e.setHeader(n,r.headers[n]):e.headers[n]=r.headers[n]}}if(e.setHeader&&!e.headersSent){for(var a in r.headers)t.gzip&&"content-encoding"===a||e.setHeader(a,r.headers[a]);e.statusCode=r.statusCode}t.pipefilter&&t.pipefilter(r,e)},H.prototype.qs=function(e,t){var r,i=this;for(var n in r=!t&&i.uri.query?i._qs.parse(i.uri.query):{},e)r[n]=e[n];var a=i._qs.stringify(r);return""===a||(i.uri=o.parse(i.uri.href.split("?")[0]+"?"+a),i.url=i.uri,i.path=i.uri.path,"unix"===i.uri.host&&i.enableUnixSocket()),i},H.prototype.form=function(e){var t=this;return e?(/^application\/x-www-form-urlencoded\b/.test(t.getHeader("content-type"))||t.setHeader("content-type","application/x-www-form-urlencoded"),t.body="string"==typeof e?t._qs.rfc3986(e.toString("utf8")):t._qs.stringify(e).toString("utf8"),t):(t._form=new g,t._form.on("error",(function(e){e.message="form-data: "+e.message,t.emit("error",e),t.abort()})),t._form)},H.prototype.multipart=function(e){var t=this;return t._multipart.onRequest(e),t._multipart.chunked||(t.body=t._multipart.body),t},H.prototype.json=function(e){var t=this;return t.hasHeader("accept")||t.setHeader("accept","application/json"),"function"==typeof t.jsonReplacer&&(t._jsonReplacer=t.jsonReplacer),t._json=!0,"boolean"==typeof e?void 0!==t.body&&(/^application\/x-www-form-urlencoded\b/.test(t.getHeader("content-type"))?t.body=t._qs.rfc3986(t.body):t.body=P(t.body,t._jsonReplacer),t.hasHeader("content-type")||t.setHeader("content-type","application/json")):(t.body=P(e,t._jsonReplacer),t.hasHeader("content-type")||t.setHeader("content-type","application/json")),"function"==typeof t.jsonReviver&&(t._jsonReviver=t.jsonReviver),t},H.prototype.getHeader=function(e,t){var r,i;return t||(t=this.headers),Object.keys(t).forEach((function(n){n.length===e.length&&(i=new RegExp(e,"i"),n.match(i)&&(r=t[n]))})),r},H.prototype.enableUnixSocket=function(){var e=this.uri.path.split(":"),t=e[0],r=e[1];this.socketPath=t,this.uri.pathname=r,this.uri.path=r,this.uri.host=t,this.uri.hostname=t,this.uri.isUnix=!0},H.prototype.auth=function(e,t,r,i){return this._auth.onRequest(e,t,r,i),this},H.prototype.aws=function(e,t){var r=this;if(!t)return r._aws=e,r;if(4===e.sign_version||"4"===e.sign_version){var i={host:r.uri.host,path:r.uri.path,method:r.method,headers:r.headers,body:r.body};e.service&&(i.service=e.service);var n=h.sign(i,{accessKeyId:e.key,secretAccessKey:e.secret,sessionToken:e.session});r.setHeader("authorization",n.headers.Authorization),r.setHeader("x-amz-date",n.headers["X-Amz-Date"]),n.headers["X-Amz-Security-Token"]&&r.setHeader("x-amz-security-token",n.headers["X-Amz-Security-Token"])}else{var a=new Date;r.setHeader("date",a.toUTCString());var o={key:e.key,secret:e.secret,verb:r.method.toUpperCase(),date:a,contentType:r.getHeader("content-type")||"",md5:r.getHeader("content-md5")||"",amazonHeaders:l.canonicalizeHeaders(r.headers)},s=r.uri.path;e.bucket&&s?o.resource="/"+e.bucket+s:e.bucket&&!s?o.resource="/"+e.bucket:!e.bucket&&s?o.resource=s:e.bucket||s||(o.resource="/"),o.resource=l.canonicalizeResource(o.resource),r.setHeader("authorization",l.authorization(o))}return r},H.prototype.httpSignature=function(e){var t=this;return p.signRequest({getHeader:function(e){return t.getHeader(e,t.headers)},setHeader:function(e,r){t.setHeader(e,r)},method:t.method,path:t.path},e),K("httpSignature authorization",t.getHeader("authorization")),t},H.prototype.hawk=function(e){var t=this;t.setHeader("Authorization",N.header(t.uri,t.method,e))},H.prototype.oauth=function(e){return this._oauth.onRequest(e),this},H.prototype.jar=function(e){var t,r=this;if(0===r._redirect.redirectsFollowed&&(r.originalCookieHeader=r.getHeader("cookie")),e){var i=e.getCookieString?e:D,n=r.uri.href;i&&(t=i.getCookieString(n))}else t=!1,r._disableCookies=!0;return t&&t.length&&(r.originalCookieHeader?r.setHeader("cookie",r.originalCookieHeader+"; "+t):r.setHeader("cookie",t)),r._jar=e,r},H.prototype.pipe=function(e,t){var r=this;if(!r.response)return r.dests.push(e),u.Stream.prototype.pipe.call(r,e,t),e;if(r._destdata)r.emit("error",new Error("You cannot pipe after data has been emitted from the response."));else{if(!r._ended)return u.Stream.prototype.pipe.call(r,e,t),r.pipeDest(e),e;r.emit("error",new Error("You cannot pipe after the response has been ended."))}},H.prototype.write=function(){var e=this;if(!e._aborted)return e._started||e.start(),e.req?e.req.write.apply(e.req,arguments):void 0},H.prototype.end=function(e){var t=this;t._aborted||(e&&t.write(e),t._started||t.start(),t.req&&t.req.end())},H.prototype.pause=function(){var e=this;e.responseContent?e.responseContent.pause.apply(e.responseContent,arguments):e._paused=!0},H.prototype.resume=function(){var e=this;e.responseContent?e.responseContent.resume.apply(e.responseContent,arguments):e._paused=!1},H.prototype.destroy=function(){var e=this;this.clearTimeout(),e._ended?e.response&&e.response.destroy():e.end()},H.prototype.clearTimeout=function(){this.timeoutTimer&&(clearTimeout(this.timeoutTimer),this.timeoutTimer=null)},H.defaultProxyHeaderWhiteList=A.defaultProxyHeaderWhiteList.slice(),H.defaultProxyHeaderExclusiveList=A.defaultProxyHeaderExclusiveList.slice(),H.prototype.toJSON=L,e.exports=H},79785:(e,t,r)=>{"use strict";var i=r(48764).Buffer,n=r(35717),a=r(3349),o=new Array(16),s=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],u=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],c=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],l=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],h=[0,1518500249,1859775393,2400959708,2840853838],p=[1352829926,1548603684,1836072691,2053994217,0];function d(){a.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function f(e,t){return e<>>32-t}function m(e,t,r,i,n,a,o,s){return f(e+(t^r^i)+a+o|0,s)+n|0}function g(e,t,r,i,n,a,o,s){return f(e+(t&r|~t&i)+a+o|0,s)+n|0}function v(e,t,r,i,n,a,o,s){return f(e+((t|~r)^i)+a+o|0,s)+n|0}function y(e,t,r,i,n,a,o,s){return f(e+(t&i|r&~i)+a+o|0,s)+n|0}function _(e,t,r,i,n,a,o,s){return f(e+(t^(r|~i))+a+o|0,s)+n|0}n(d,a),d.prototype._update=function(){for(var e=o,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var r=0|this._a,i=0|this._b,n=0|this._c,a=0|this._d,d=0|this._e,b=0|this._a,w=0|this._b,E=0|this._c,k=0|this._d,S=0|this._e,x=0;x<80;x+=1){var j,N;x<16?(j=m(r,i,n,a,d,e[s[x]],h[0],c[x]),N=_(b,w,E,k,S,e[u[x]],p[0],l[x])):x<32?(j=g(r,i,n,a,d,e[s[x]],h[1],c[x]),N=y(b,w,E,k,S,e[u[x]],p[1],l[x])):x<48?(j=v(r,i,n,a,d,e[s[x]],h[2],c[x]),N=v(b,w,E,k,S,e[u[x]],p[2],l[x])):x<64?(j=y(r,i,n,a,d,e[s[x]],h[3],c[x]),N=g(b,w,E,k,S,e[u[x]],p[3],l[x])):(j=_(r,i,n,a,d,e[s[x]],h[4],c[x]),N=m(b,w,E,k,S,e[u[x]],p[4],l[x])),r=d,d=a,a=f(n,10),n=i,i=j,b=S,S=k,k=f(E,10),E=w,w=N}var M=this._b+n+k|0;this._b=this._c+a+S|0,this._c=this._d+d+b|0,this._d=this._e+r+w|0,this._e=this._a+i+E|0,this._a=M},d.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=i.alloc?i.alloc(20):new i(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e},e.exports=d},89509:(e,t,r)=>{var i=r(48764),n=i.Buffer;function a(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=i:(a(i,t),t.Buffer=o),a(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i.SlowBuffer(e)}},2399:(e,t,r)=>{"use strict";var i,n=r(34155),a=r(48764),o=a.Buffer,s={};for(i in a)a.hasOwnProperty(i)&&"SlowBuffer"!==i&&"Buffer"!==i&&(s[i]=a[i]);var u=s.Buffer={};for(i in o)o.hasOwnProperty(i)&&"allocUnsafe"!==i&&"allocUnsafeSlow"!==i&&(u[i]=o[i]);if(s.Buffer.prototype=o.prototype,u.from&&u.from!==Uint8Array.from||(u.from=function(e,t,r){if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type '+typeof e);if(e&&void 0===e.length)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);return o(e,t,r)}),u.alloc||(u.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError('The "size" argument must be of type number. Received type '+typeof e);if(e<0||e>=2*(1<<30))throw new RangeError('The value "'+e+'" is invalid for option "size"');var i=o(e);return t&&0!==t.length?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i}),!s.kStringMaxLength)try{s.kStringMaxLength=n.binding("buffer").kStringMaxLength}catch(e){}s.constants||(s.constants={MAX_LENGTH:s.kMaxLength},s.kStringMaxLength&&(s.constants.MAX_STRING_LENGTH=s.kStringMaxLength)),e.exports=s},24189:(e,t,r)=>{var i=r(89509).Buffer;function n(e,t){this._block=i.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}n.prototype.update=function(e,t){"string"==typeof e&&(t=t||"utf8",e=i.from(e,t));for(var r=this._block,n=this._blockSize,a=e.length,o=this._len,s=0;s=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var i=(4294967295&r)>>>0,n=(r-i)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var a=this._hash();return e?a.toString(e):a},n.prototype._update=function(){throw new Error("_update must be implemented by subclass")},e.exports=n},89072:(e,t,r)=>{var i=e.exports=function(e){e=e.toLowerCase();var t=i[e];if(!t)throw new Error(e+" is not supported (we accept pull requests)");return new t};i.sha=r(74448),i.sha1=r(18336),i.sha224=r(48432),i.sha256=r(67499),i.sha384=r(51686),i.sha512=r(87816)},74448:(e,t,r)=>{var i=r(35717),n=r(24189),a=r(89509).Buffer,o=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function u(){this.init(),this._w=s,n.call(this,64,56)}function c(e){return e<<30|e>>>2}function l(e,t,r,i){return 0===e?t&r|~t&i:2===e?t&r|t&i|r&i:t^r^i}i(u,n),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(e){for(var t,r=this._w,i=0|this._a,n=0|this._b,a=0|this._c,s=0|this._d,u=0|this._e,h=0;h<16;++h)r[h]=e.readInt32BE(4*h);for(;h<80;++h)r[h]=r[h-3]^r[h-8]^r[h-14]^r[h-16];for(var p=0;p<80;++p){var d=~~(p/20),f=0|((t=i)<<5|t>>>27)+l(d,n,a,s)+u+r[p]+o[d];u=s,s=a,a=c(n),n=i,i=f}this._a=i+this._a|0,this._b=n+this._b|0,this._c=a+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0},u.prototype._hash=function(){var e=a.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=u},18336:(e,t,r)=>{var i=r(35717),n=r(24189),a=r(89509).Buffer,o=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function u(){this.init(),this._w=s,n.call(this,64,56)}function c(e){return e<<5|e>>>27}function l(e){return e<<30|e>>>2}function h(e,t,r,i){return 0===e?t&r|~t&i:2===e?t&r|t&i|r&i:t^r^i}i(u,n),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(e){for(var t,r=this._w,i=0|this._a,n=0|this._b,a=0|this._c,s=0|this._d,u=0|this._e,p=0;p<16;++p)r[p]=e.readInt32BE(4*p);for(;p<80;++p)r[p]=(t=r[p-3]^r[p-8]^r[p-14]^r[p-16])<<1|t>>>31;for(var d=0;d<80;++d){var f=~~(d/20),m=c(i)+h(f,n,a,s)+u+r[d]+o[f]|0;u=s,s=a,a=l(n),n=i,i=m}this._a=i+this._a|0,this._b=n+this._b|0,this._c=a+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0},u.prototype._hash=function(){var e=a.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=u},48432:(e,t,r)=>{var i=r(35717),n=r(67499),a=r(24189),o=r(89509).Buffer,s=new Array(64);function u(){this.init(),this._w=s,a.call(this,64,56)}i(u,n),u.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},u.prototype._hash=function(){var e=o.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e},e.exports=u},67499:(e,t,r)=>{var i=r(35717),n=r(24189),a=r(89509).Buffer,o=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],s=new Array(64);function u(){this.init(),this._w=s,n.call(this,64,56)}function c(e,t,r){return r^e&(t^r)}function l(e,t,r){return e&t|r&(e|t)}function h(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function p(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function d(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}i(u,n),u.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},u.prototype._update=function(e){for(var t,r=this._w,i=0|this._a,n=0|this._b,a=0|this._c,s=0|this._d,u=0|this._e,f=0|this._f,m=0|this._g,g=0|this._h,v=0;v<16;++v)r[v]=e.readInt32BE(4*v);for(;v<64;++v)r[v]=0|(((t=r[v-2])>>>17|t<<15)^(t>>>19|t<<13)^t>>>10)+r[v-7]+d(r[v-15])+r[v-16];for(var y=0;y<64;++y){var _=g+p(u)+c(u,f,m)+o[y]+r[y]|0,b=h(i)+l(i,n,a)|0;g=m,m=f,f=u,u=s+_|0,s=a,a=n,n=i,i=_+b|0}this._a=i+this._a|0,this._b=n+this._b|0,this._c=a+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0,this._f=f+this._f|0,this._g=m+this._g|0,this._h=g+this._h|0},u.prototype._hash=function(){var e=a.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e},e.exports=u},51686:(e,t,r)=>{var i=r(35717),n=r(87816),a=r(24189),o=r(89509).Buffer,s=new Array(160);function u(){this.init(),this._w=s,a.call(this,128,112)}i(u,n),u.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},u.prototype._hash=function(){var e=o.allocUnsafe(48);function t(t,r,i){e.writeInt32BE(t,i),e.writeInt32BE(r,i+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e},e.exports=u},87816:(e,t,r)=>{var i=r(35717),n=r(24189),a=r(89509).Buffer,o=[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],s=new Array(160);function u(){this.init(),this._w=s,n.call(this,128,112)}function c(e,t,r){return r^e&(t^r)}function l(e,t,r){return e&t|r&(e|t)}function h(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function p(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function d(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function f(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function m(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function g(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function v(e,t){return e>>>0>>0?1:0}i(u,n),u.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},u.prototype._update=function(e){for(var t=this._w,r=0|this._ah,i=0|this._bh,n=0|this._ch,a=0|this._dh,s=0|this._eh,u=0|this._fh,y=0|this._gh,_=0|this._hh,b=0|this._al,w=0|this._bl,E=0|this._cl,k=0|this._dl,S=0|this._el,x=0|this._fl,j=0|this._gl,N=0|this._hl,M=0;M<32;M+=2)t[M]=e.readInt32BE(4*M),t[M+1]=e.readInt32BE(4*M+4);for(;M<160;M+=2){var I=t[M-30],A=t[M-30+1],T=d(I,A),R=f(A,I),P=m(I=t[M-4],A=t[M-4+1]),O=g(A,I),B=t[M-14],C=t[M-14+1],z=t[M-32],F=t[M-32+1],D=R+C|0,q=T+B+v(D,R)|0;q=(q=q+P+v(D=D+O|0,O)|0)+z+v(D=D+F|0,F)|0,t[M]=q,t[M+1]=D}for(var L=0;L<160;L+=2){q=t[L],D=t[L+1];var U=l(r,i,n),H=l(b,w,E),K=h(r,b),W=h(b,r),Z=p(s,S),J=p(S,s),V=o[L],$=o[L+1],G=c(s,u,y),Q=c(S,x,j),X=N+J|0,Y=_+Z+v(X,N)|0;Y=(Y=(Y=Y+G+v(X=X+Q|0,Q)|0)+V+v(X=X+$|0,$)|0)+q+v(X=X+D|0,D)|0;var ee=W+H|0,te=K+U+v(ee,W)|0;_=y,N=j,y=u,j=x,u=s,x=S,s=a+Y+v(S=k+X|0,k)|0,a=n,k=E,n=i,E=w,i=r,w=b,r=Y+te+v(b=X+ee|0,X)|0}this._al=this._al+b|0,this._bl=this._bl+w|0,this._cl=this._cl+E|0,this._dl=this._dl+k|0,this._el=this._el+S|0,this._fl=this._fl+x|0,this._gl=this._gl+j|0,this._hl=this._hl+N|0,this._ah=this._ah+r+v(this._al,b)|0,this._bh=this._bh+i+v(this._bl,w)|0,this._ch=this._ch+n+v(this._cl,E)|0,this._dh=this._dh+a+v(this._dl,k)|0,this._eh=this._eh+s+v(this._el,S)|0,this._fh=this._fh+u+v(this._fl,x)|0,this._gh=this._gh+y+v(this._gl,j)|0,this._hh=this._hh+_+v(this._hl,N)|0},u.prototype._hash=function(){var e=a.allocUnsafe(64);function t(t,r,i){e.writeInt32BE(t,i),e.writeInt32BE(r,i+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e},e.exports=u},95280:(e,t,r)=>{var i=r(2399).Buffer,n={dsa:{parts:["p","q","g","y"],sizePart:"p"},rsa:{parts:["e","n"],sizePart:"n"},ecdsa:{parts:["curve","Q"],sizePart:"Q"},ed25519:{parts:["A"],sizePart:"A"}};n.curve25519=n.ed25519;var a={dsa:{parts:["p","q","g","y","x"]},rsa:{parts:["n","e","d","iqmp","p","q"]},ecdsa:{parts:["curve","Q","d"]},ed25519:{parts:["A","k"]}};a.curve25519=a.ed25519;var o={nistp256:{size:256,pkcs8oid:"1.2.840.10045.3.1.7",p:i.from("00ffffffff 00000001 00000000 0000000000000000 ffffffff ffffffff ffffffff".replace(/ /g,""),"hex"),a:i.from("00FFFFFFFF 00000001 00000000 0000000000000000 FFFFFFFF FFFFFFFF FFFFFFFC".replace(/ /g,""),"hex"),b:i.from("5ac635d8 aa3a93e7 b3ebbd55 769886bc651d06b0 cc53b0f6 3bce3c3e 27d2604b".replace(/ /g,""),"hex"),s:i.from("00c49d3608 86e70493 6a6678e1 139d26b7819f7e90".replace(/ /g,""),"hex"),n:i.from("00ffffffff 00000000 ffffffff ffffffffbce6faad a7179e84 f3b9cac2 fc632551".replace(/ /g,""),"hex"),G:i.from("046b17d1f2 e12c4247 f8bce6e5 63a440f277037d81 2deb33a0 f4a13945 d898c2964fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e162bce3357 6b315ece cbb64068 37bf51f5".replace(/ /g,""),"hex")},nistp384:{size:384,pkcs8oid:"1.3.132.0.34",p:i.from("00ffffffff ffffffff ffffffff ffffffffffffffff ffffffff ffffffff fffffffeffffffff 00000000 00000000 ffffffff".replace(/ /g,""),"hex"),a:i.from("00FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFEFFFFFFFF 00000000 00000000 FFFFFFFC".replace(/ /g,""),"hex"),b:i.from("b3312fa7 e23ee7e4 988e056b e3f82d19181d9c6e fe814112 0314088f 5013875ac656398d 8a2ed19d 2a85c8ed d3ec2aef".replace(/ /g,""),"hex"),s:i.from("00a335926a a319a27a 1d00896a 6773a4827acdac73".replace(/ /g,""),"hex"),n:i.from("00ffffffff ffffffff ffffffff ffffffffffffffff ffffffff c7634d81 f4372ddf581a0db2 48b0a77a ecec196a ccc52973".replace(/ /g,""),"hex"),G:i.from("04aa87ca22 be8b0537 8eb1c71e f320ad746e1d3b62 8ba79b98 59f741e0 82542a385502f25d bf55296c 3a545e38 72760ab73617de4a 96262c6f 5d9e98bf 9292dc29f8f41dbd 289a147c e9da3113 b5f0b8c00a60b1ce 1d7e819d 7a431d7c 90ea0e5f".replace(/ /g,""),"hex")},nistp521:{size:521,pkcs8oid:"1.3.132.0.35",p:i.from("01ffffff ffffffff ffffffff ffffffffffffffff ffffffff ffffffff ffffffffffffffff ffffffff ffffffff ffffffffffffffff ffffffff ffffffff ffffffffffff".replace(/ /g,""),"hex"),a:i.from("01FFFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFC".replace(/ /g,""),"hex"),b:i.from("51953eb961 8e1c9a1f 929a21a0 b68540eea2da725b 99b315f3 b8b48991 8ef109e156193951 ec7e937b 1652c0bd 3bb1bf073573df88 3d2c34f1 ef451fd4 6b503f00".replace(/ /g,""),"hex"),s:i.from("00d09e8800 291cb853 96cc6717 393284aaa0da64ba".replace(/ /g,""),"hex"),n:i.from("01ffffffffff ffffffff ffffffff ffffffffffffffff ffffffff ffffffff fffffffa51868783 bf2f966b 7fcc0148 f709a5d03bb5c9b8 899c47ae bb6fb71e 91386409".replace(/ /g,""),"hex"),G:i.from("0400c6 858e06b7 0404e9cd 9e3ecb66 2395b4429c648139 053fb521 f828af60 6b4d3dbaa14b5e77 efe75928 fe1dc127 a2ffa8de3348b3c1 856a429b f97e7e31 c2e5bd660118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd998f54449 579b4468 17afbd17 273e662c97ee7299 5ef42640 c550b901 3fad0761353c7086 a272c240 88be9476 9fd16650".replace(/ /g,""),"hex")}};e.exports={info:n,privInfo:a,hashAlgs:{md5:!0,sha1:!0,sha256:!0,sha384:!0,sha512:!0},curves:o}},90312:(e,t,r)=>{e.exports=g;var i=r(6144),n=r(2399).Buffer,a=r(95280),o=r(55835),s=r(40500),u=(r(15270),r(23004)),c=(r(89539),r(2743)),l=r(67721),h=r(73079),p=r(85279),d={};d.openssh=r(85716),d.x509=r(67026),d.pem=r(65221);var f=u.CertificateParseError,m=u.InvalidAlgorithmError;function g(e){i.object(e,"options"),i.arrayOfObject(e.subjects,"options.subjects"),c.assertCompatible(e.subjects[0],p,[1,0],"options.subjects"),c.assertCompatible(e.subjectKey,l,[1,0],"options.subjectKey"),c.assertCompatible(e.issuer,p,[1,0],"options.issuer"),void 0!==e.issuerKey&&c.assertCompatible(e.issuerKey,l,[1,0],"options.issuerKey"),i.object(e.signatures,"options.signatures"),i.buffer(e.serial,"options.serial"),i.date(e.validFrom,"options.validFrom"),i.date(e.validUntil,"optons.validUntil"),i.optionalArrayOfString(e.purposes,"options.purposes"),this._hashCache={},this.subjects=e.subjects,this.issuer=e.issuer,this.subjectKey=e.subjectKey,this.issuerKey=e.issuerKey,this.signatures=e.signatures,this.serial=e.serial,this.validFrom=e.validFrom,this.validUntil=e.validUntil,this.purposes=e.purposes}g.formats=d,g.prototype.toBuffer=function(e,t){return void 0===e&&(e="x509"),i.string(e,"format"),i.object(d[e],"formats[format]"),i.optionalObject(t,"options"),d[e].write(this,t)},g.prototype.toString=function(e,t){return void 0===e&&(e="pem"),this.toBuffer(e,t).toString()},g.prototype.fingerprint=function(e){void 0===e&&(e="sha256"),i.string(e,"algorithm");var t={type:"certificate",hash:this.hash(e),algorithm:e};return new s(t)},g.prototype.hash=function(e){if(i.string(e,"algorithm"),e=e.toLowerCase(),void 0===a.hashAlgs[e])throw new m(e);if(this._hashCache[e])return this._hashCache[e];var t=o.createHash(e).update(this.toBuffer("x509")).digest();return this._hashCache[e]=t,t},g.prototype.isExpired=function(e){return void 0===e&&(e=new Date),!(e.getTime()>=this.validFrom.getTime()&&e.getTime()0&&-1===this.issuer.purposes.indexOf("ca"))&&this.isSignedByKey(e.subjectKey)},g.prototype.getExtension=function(e){return i.string(e,"keyOrOid"),this.getExtensions().filter((function(t){return"x509"===t.format?t.oid===e:"openssh"===t.format&&t.name===e}))[0]},g.prototype.getExtensions=function(){var e=[],t=this.signatures.x509;t&&t.extras&&t.extras.exts&&t.extras.exts.forEach((function(t){t.format="x509",e.push(t)}));var r=this.signatures.openssh;return r&&r.exts&&r.exts.forEach((function(t){t.format="openssh",e.push(t)})),e},g.prototype.isSignedByKey=function(e){if(c.assertCompatible(e,l,[1,2],"issuerKey"),void 0!==this.issuerKey)return this.issuerKey.fingerprint("sha512").matches(e);var t=Object.keys(this.signatures)[0],r=d[t].verify(this,e);return r&&(this.issuerKey=e),r},g.prototype.signWith=function(e){c.assertCompatible(e,h,[1,2],"key");for(var t=Object.keys(d),r=!1,i=0;i0&&-1===d.indexOf("serverAuth")&&d.push("serverAuth"),m.length>0&&-1===d.indexOf("clientAuth")&&d.push("clientAuth"),(m.length>0||f.length>0)&&(-1===d.indexOf("keyAgreement")&&d.push("keyAgreement"),"rsa"===t.type&&-1===d.indexOf("encryption")&&d.push("encryption"))}var v=new g({subjects:a,issuer:a[0],subjectKey:t.toPublic(),issuerKey:t.toPublic(),signatures:{},serial:l,validFrom:o,validUntil:s,purposes:d});return v.signWith(t),v},g.create=function(e,t,r,a,o){var s;s=Array.isArray(e)?e:[e],i.arrayOfObject(s),s.forEach((function(e){c.assertCompatible(e,p,[1,0],"subject")})),c.assertCompatible(t,l,[1,0],"key"),h.isPrivateKey(t)&&(t=t.toPublic()),c.assertCompatible(r,p,[1,0],"issuer"),c.assertCompatible(a,h,[1,2],"issuer key"),i.optionalObject(o,"options"),void 0===o&&(o={}),i.optionalObject(o.validFrom,"options.validFrom"),i.optionalObject(o.validUntil,"options.validUntil");var u=o.validFrom,d=o.validUntil;if(void 0===u&&(u=new Date),void 0===d){i.optionalNumber(o.lifetime,"options.lifetime");var f=o.lifetime;void 0===f&&(f=31536e4),(d=new Date).setTime(d.getTime()+1e3*f)}i.optionalBuffer(o.serial,"options.serial");var m=o.serial;void 0===m&&(m=n.from("0000000000000001","hex"));var v=o.purposes;void 0===v&&(v=[]),-1===v.indexOf("signature")&&v.push("signature"),!0===o.ca&&(-1===v.indexOf("ca")&&v.push("ca"),-1===v.indexOf("crl")&&v.push("crl"));var y=s.filter((function(e){return"host"===e.type})),_=s.filter((function(e){return"user"===e.type}));y.length>0&&-1===v.indexOf("serverAuth")&&v.push("serverAuth"),_.length>0&&-1===v.indexOf("clientAuth")&&v.push("clientAuth"),(_.length>0||y.length>0)&&(-1===v.indexOf("keyAgreement")&&v.push("keyAgreement"),"rsa"===t.type&&-1===v.indexOf("encryption")&&v.push("encryption"));var b=new g({subjects:s,issuer:r,subjectKey:t,issuerKey:a.toPublic(),signatures:{},serial:m,validFrom:u,validUntil:d,purposes:v});return b.signWith(a),b},g.parse=function(e,t,r){"string"!=typeof e&&i.buffer(e,"data"),void 0===t&&(t="auto"),i.string(t,"format"),"string"==typeof r&&(r={filename:r}),i.optionalObject(r,"options"),void 0===r&&(r={}),i.optionalString(r.filename,"options.filename"),void 0===r.filename&&(r.filename="(unnamed)"),i.object(d[t],"formats[format]");try{return d[t].read(e,r)}catch(e){throw new f(r.filename,t,e)}},g.isCertificate=function(e,t){return c.isCompatible(e,g,t)},g.prototype._sshpkApiVersion=[1,1],g._oldVersionDetect=function(e){return[1,0]}},78849:(e,t,r)=>{e.exports={DiffieHellman:f,generateECDSA:function(e){var t=[];if(h){var r={nistp256:"prime256v1",nistp384:"secp384r1",nistp521:"secp521r1"}[e],i=n.createECDH(r);return i.generateKeys(),t.push({name:"curve",data:a.from(e)}),t.push({name:"Q",data:i.getPublicKey()}),t.push({name:"d",data:i.getPrivateKey()}),new l({type:"ecdsa",curve:e,parts:t})}var o=new m(e),s=o.getN(),u=Math.ceil((s.bitLength()+64)/8),c=new d(n.randomBytes(u)),p=s.subtract(d.ONE),f=c.mod(p).add(d.ONE),g=o.getG().multiply(f);return f=a.from(f.toByteArray()),g=a.from(o.getCurve().encodePointHex(g),"hex"),t.push({name:"curve",data:a.from(e)}),t.push({name:"Q",data:g}),t.push({name:"d",data:f}),new l({type:"ecdsa",curve:e,parts:t})},generateED25519:function(){var e=u.sign.keyPair(),t=a.from(e.secretKey),r=a.from(e.publicKey);i.strictEqual(t.length,64),i.strictEqual(r.length,32);var n=[];return n.push({name:"A",data:r}),n.push({name:"k",data:t.slice(0,32)}),new l({type:"ed25519",parts:n})}};var i=r(6144),n=r(55835),a=r(2399).Buffer,o=r(95280),s=r(2743),u=r(50780),c=r(67721),l=r(73079),h=void 0!==n.createECDH,p=(r(66245),r(62241)),d=r(36077).BigInteger;function f(e){if(s.assertCompatible(e,c,[1,4],"key"),this._isPriv=l.isPrivateKey(e,[1,3]),this._algo=e.type,this._curve=e.curve,this._key=e,"dsa"===e.type){if(!h)throw new Error("Due to bugs in the node 0.10 crypto API, node 0.12.x or later is required to use DH");this._dh=n.createDiffieHellman(e.part.p.data,void 0,e.part.g.data,void 0),this._p=e.part.p,this._g=e.part.g,this._isPriv&&this._dh.setPrivateKey(e.part.x.data),this._dh.setPublicKey(e.part.y.data)}else if("ecdsa"===e.type){if(!h)return this._ecParams=new m(this._curve),void(this._isPriv&&(this._priv=new v(this._ecParams,e.part.d.data)));var t={nistp256:"prime256v1",nistp384:"secp384r1",nistp521:"secp521r1"}[e.curve];if(this._dh=n.createECDH(t),"object"!=typeof this._dh||"function"!=typeof this._dh.setPrivateKey)return h=!1,void f.call(this,e);this._isPriv&&this._dh.setPrivateKey(e.part.d.data),this._dh.setPublicKey(e.part.Q.data)}else{if("curve25519"!==e.type)throw new Error("DH not supported for "+e.type+" keys");this._isPriv&&(s.assertCompatible(e,l,[1,5],"key"),this._priv=e.part.k.data)}}function m(e){var t=o.curves[e];i.object(t);var r=new d(t.p),n=new d(t.a),a=new d(t.b),s=new d(t.n),u=d.ONE,c=new p.ECCurveFp(r,n,a),l=c.decodePointHex(t.G.toString("hex"));this.curve=c,this.g=l,this.n=s,this.h=u}function g(e,t){this._params=e,0===t[0]&&(t=t.slice(1)),this._pub=e.getCurve().decodePointHex(t.toString("hex"))}function v(e,t){this._params=e,this._priv=new d(s.mpNormalize(t))}f.prototype.getPublicKey=function(){return this._isPriv?this._key.toPublic():this._key},f.prototype.getPrivateKey=function(){return this._isPriv?this._key:void 0},f.prototype.getKey=f.prototype.getPrivateKey,f.prototype._keyCheck=function(e,t){if(i.object(e,"key"),t||s.assertCompatible(e,l,[1,3],"key"),s.assertCompatible(e,c,[1,4],"key"),e.type!==this._algo)throw new Error("A "+e.type+" key cannot be used in "+this._algo+" Diffie-Hellman");if(e.curve!==this._curve)throw new Error("A key from the "+e.curve+" curve cannot be used with a "+this._curve+" Diffie-Hellman");"dsa"===e.type&&(i.deepEqual(e.part.p,this._p,"DSA key prime does not match"),i.deepEqual(e.part.g,this._g,"DSA key generator does not match"))},f.prototype.setKey=function(e){if(this._keyCheck(e),"dsa"===e.type)this._dh.setPrivateKey(e.part.x.data),this._dh.setPublicKey(e.part.y.data);else if("ecdsa"===e.type)h?(this._dh.setPrivateKey(e.part.d.data),this._dh.setPublicKey(e.part.Q.data)):this._priv=new v(this._ecParams,e.part.d.data);else if("curve25519"===e.type){var t=e.part.k;e.part.k||(t=e.part.r),this._priv=t.data,0===this._priv[0]&&(this._priv=this._priv.slice(1)),this._priv=this._priv.slice(0,32)}this._key=e,this._isPriv=!0},f.prototype.setPrivateKey=f.prototype.setKey,f.prototype.computeSecret=function(e){if(this._keyCheck(e,!0),!this._isPriv)throw new Error("DH exchange has not been initialized with a private key yet");var t;if("dsa"===this._algo)return this._dh.computeSecret(e.part.y.data);if("ecdsa"===this._algo)return h?this._dh.computeSecret(e.part.Q.data):(t=new g(this._ecParams,e.part.Q.data),this._priv.deriveSharedSecret(t));if("curve25519"===this._algo){for(t=e.part.A.data;0===t[0]&&t.length>32;)t=t.slice(1);var r=this._priv;i.strictEqual(t.length,32),i.strictEqual(r.length,32);var n=u.box.before(new Uint8Array(t),new Uint8Array(r));return a.from(n)}throw new Error("Invalid algorithm: "+this._algo)},f.prototype.generateKey=function(){var e,t,r=[];if("dsa"===this._algo)return this._dh.generateKeys(),r.push({name:"p",data:this._p.data}),r.push({name:"q",data:this._key.part.q.data}),r.push({name:"g",data:this._g.data}),r.push({name:"y",data:this._dh.getPublicKey()}),r.push({name:"x",data:this._dh.getPrivateKey()}),this._key=new l({type:"dsa",parts:r}),this._isPriv=!0,this._key;if("ecdsa"===this._algo){if(h)return this._dh.generateKeys(),r.push({name:"curve",data:a.from(this._curve)}),r.push({name:"Q",data:this._dh.getPublicKey()}),r.push({name:"d",data:this._dh.getPrivateKey()}),this._key=new l({type:"ecdsa",curve:this._curve,parts:r}),this._isPriv=!0,this._key;var o=this._ecParams.getN(),s=new d(n.randomBytes(o.bitLength())),c=o.subtract(d.ONE);return e=s.mod(c).add(d.ONE),t=this._ecParams.getG().multiply(e),e=a.from(e.toByteArray()),t=a.from(this._ecParams.getCurve().encodePointHex(t),"hex"),this._priv=new v(this._ecParams,e),r.push({name:"curve",data:a.from(this._curve)}),r.push({name:"Q",data:t}),r.push({name:"d",data:e}),this._key=new l({type:"ecdsa",curve:this._curve,parts:r}),this._isPriv=!0,this._key}if("curve25519"===this._algo){var p=u.box.keyPair();return e=a.from(p.secretKey),t=a.from(p.publicKey),e=a.concat([e,t]),i.strictEqual(e.length,64),i.strictEqual(t.length,32),r.push({name:"A",data:t}),r.push({name:"k",data:e}),this._key=new l({type:"curve25519",parts:r}),this._isPriv=!0,this._key}throw new Error("Invalid algorithm: "+this._algo)},f.prototype.generateKeys=f.prototype.generateKey,m.prototype.getCurve=function(){return this.curve},m.prototype.getG=function(){return this.g},m.prototype.getN=function(){return this.n},m.prototype.getH=function(){return this.h},v.prototype.deriveSharedSecret=function(e){i.ok(e instanceof g);var t=e._pub.multiply(this._priv);return a.from(t.getX().toBigInteger().toByteArray())}},14744:(e,t,r)=>{e.exports={Verifier:c,Signer:l};var i=r(50780),n=r(42830),a=r(89539),o=r(6144),s=r(2399).Buffer,u=r(15270);function c(e,t){if("sha512"!==t.toLowerCase())throw new Error("ED25519 only supports the use of SHA-512 hashes");this.key=e,this.chunks=[],n.Writable.call(this,{})}function l(e,t){if("sha512"!==t.toLowerCase())throw new Error("ED25519 only supports the use of SHA-512 hashes");this.key=e,this.chunks=[],n.Writable.call(this,{})}a.inherits(c,n.Writable),c.prototype._write=function(e,t,r){this.chunks.push(e),r()},c.prototype.update=function(e){"string"==typeof e&&(e=s.from(e,"binary")),this.chunks.push(e)},c.prototype.verify=function(e,t){var r;if(u.isSignature(e,[2,0])){if("ed25519"!==e.type)return!1;r=e.toBuffer("raw")}else if("string"==typeof e)r=s.from(e,"base64");else if(u.isSignature(e,[1,0]))throw new Error("signature was created by too old a version of sshpk and cannot be verified");return o.buffer(r),i.sign.detached.verify(new Uint8Array(s.concat(this.chunks)),new Uint8Array(r),new Uint8Array(this.key.part.A.data))},a.inherits(l,n.Writable),l.prototype._write=function(e,t,r){this.chunks.push(e),r()},l.prototype.update=function(e){"string"==typeof e&&(e=s.from(e,"binary")),this.chunks.push(e)},l.prototype.sign=function(){var e=i.sign.detached(new Uint8Array(s.concat(this.chunks)),new Uint8Array(s.concat([this.key.part.k.data,this.key.part.A.data]))),t=s.from(e),r=u.parse(t,"ed25519","raw");return r.hashAlgorithm="sha512",r}},23004:(e,t,r)=>{r(6144);var i=r(89539);function n(e,t){Error.captureStackTrace&&Error.captureStackTrace(this,n),this.name="FingerprintFormatError",this.fingerprint=e,this.format=t,this.message="Fingerprint format is not supported, or is invalid: ",void 0!==e&&(this.message+=" fingerprint = "+e),void 0!==t&&(this.message+=" format = "+t)}function a(e){Error.captureStackTrace&&Error.captureStackTrace(this,a),this.name="InvalidAlgorithmError",this.algorithm=e,this.message='Algorithm "'+e+'" is not supported'}function o(e,t,r){Error.captureStackTrace&&Error.captureStackTrace(this,o),this.name="KeyParseError",this.format=t,this.keyName=e,this.innerErr=r,this.message="Failed to parse "+e+" as a valid "+t+" format key: "+r.message}function s(e,t,r){Error.captureStackTrace&&Error.captureStackTrace(this,s),this.name="SignatureParseError",this.type=e,this.format=t,this.innerErr=r,this.message="Failed to parse the given data as a "+e+" signature in "+t+" format: "+r.message}function u(e,t,r){Error.captureStackTrace&&Error.captureStackTrace(this,u),this.name="CertificateParseError",this.format=t,this.certName=e,this.innerErr=r,this.message="Failed to parse "+e+" as a valid "+t+" format certificate: "+r.message}function c(e,t){Error.captureStackTrace&&Error.captureStackTrace(this,c),this.name="KeyEncryptedError",this.format=t,this.keyName=e,this.message="The "+t+" format key "+e+" is encrypted (password-protected), and no passphrase was provided in `options`"}i.inherits(n,Error),i.inherits(a,Error),i.inherits(o,Error),i.inherits(s,Error),i.inherits(u,Error),i.inherits(c,Error),e.exports={FingerprintFormatError:n,InvalidAlgorithmError:a,KeyParseError:o,SignatureParseError:s,KeyEncryptedError:c,CertificateParseError:u}},40500:(e,t,r)=>{e.exports=f;var i=r(6144),n=r(2399).Buffer,a=r(95280),o=r(55835),s=r(23004),u=r(67721),c=r(73079),l=r(90312),h=r(2743),p=s.FingerprintFormatError,d=s.InvalidAlgorithmError;function f(e){if(i.object(e,"options"),i.string(e.type,"options.type"),i.buffer(e.hash,"options.hash"),i.string(e.algorithm,"options.algorithm"),this.algorithm=e.algorithm.toLowerCase(),!0!==a.hashAlgs[this.algorithm])throw new d(this.algorithm);this.hash=e.hash,this.type=e.type,this.hashType=e.hashType}f.prototype.toString=function(e){switch(void 0===e&&(e="md5"===this.algorithm||"spki"===this.hashType?"hex":"base64"),i.string(e),e){case"hex":return"spki"===this.hashType?this.hash.toString("hex"):this.hash.toString("hex").replace(/(.{2})(?=.)/g,"$1:");case"base64":return"spki"===this.hashType?this.hash.toString("base64"):(t=this.algorithm,r=this.hash.toString("base64"),t.toUpperCase()+":"+r.replace(/=*$/,""));default:throw new p(void 0,e)}var t,r},f.prototype.matches=function(e){i.object(e,"key or certificate"),"key"===this.type&&"ssh"!==this.hashType?(h.assertCompatible(e,u,[1,7],"key with spki"),c.isPrivateKey(e)&&h.assertCompatible(e,c,[1,6],"privatekey with spki support")):"key"===this.type?h.assertCompatible(e,u,[1,0],"key"):h.assertCompatible(e,l,[1,0],"certificate");var t=e.hash(this.algorithm,this.hashType),r=o.createHash(this.algorithm).update(t).digest("base64");return void 0===this.hash2&&(this.hash2=o.createHash(this.algorithm).update(this.hash).digest("base64")),this.hash2===r};var m=/^[A-Za-z0-9+\/=]+$/,g=/^[a-fA-F0-9]+$/;f.parse=function(e,t){var r,o,s;i.string(e,"fingerprint"),Array.isArray(t)&&(s=t,t={}),i.optionalObject(t,"options"),void 0===t&&(t={}),void 0!==t.enAlgs&&(s=t.enAlgs),void 0!==t.algorithms&&(s=t.algorithms),i.optionalArrayOfString(s,"algorithms");var u="ssh";void 0!==t.hashType&&(u=t.hashType),i.string(u,"options.hashType");var c=e.split(":");if(2==c.length){if(r=c[0].toLowerCase(),!m.test(c[1]))throw new p(e);try{o=n.from(c[1],"base64")}catch(t){throw new p(e)}}else if(c.length>2){if(r="md5","md5"===c[0].toLowerCase()&&(c=c.slice(1)),c=(c=c.map((function(t){for(;t.length<2;)t="0"+t;if(t.length>2)throw new p(e);return t}))).join(""),!g.test(c)||c.length%2!=0)throw new p(e);try{o=n.from(c,"hex")}catch(t){throw new p(e)}}else{if(g.test(e))o=n.from(e,"hex");else{if(!m.test(e))throw new p(e);o=n.from(e,"base64")}switch(o.length){case 32:r="sha256";break;case 16:r="md5";break;case 20:r="sha1";break;case 64:r="sha512";break;default:throw new p(e)}void 0===t.hashType&&(u="spki")}if(void 0===r)throw new p(e);if(void 0===a.hashAlgs[r])throw new d(r);if(void 0!==s&&-1===(s=s.map((function(e){return e.toLowerCase()}))).indexOf(r))throw new d(r);return new f({algorithm:r,hash:o,type:t.type||"key",hashType:u})},f.isFingerprint=function(e,t){return h.isCompatible(e,f,t)},f.prototype._sshpkApiVersion=[1,2],f._oldVersionDetect=function(e){return i.func(e.toString),i.func(e.matches),[1,0]}},31683:(e,t,r)=>{e.exports={read:function(e,t){if("string"==typeof e){if(e.trim().match(/^[-]+[ ]*BEGIN/))return a.read(e,t);if(e.match(/^\s*ssh-[a-z]/))return o.read(e,t);if(e.match(/^\s*ecdsa-/))return o.read(e,t);if(e.match(/^putty-user-key-file-2:/i))return c.read(e,t);if(h(e))return u.read(e,t);e=n.from(e,"binary")}else{if(i.buffer(e),function(e){for(var t=0;te.length||"BEGIN"!==e.slice(t,t+5).toString("ascii"))}(e))return a.read(e,t);if(function(e){for(var t=0;t{e.exports={read:function(e,t){"string"!=typeof e&&(i.buffer(e,"buf"),e=e.toString("ascii"));var r=e.split("\n");if(r[0].match(/^Private-key-format\: v1/)){var u=r[1].split(" "),h=parseInt(u[1],10),p=u[2];if(!c[h])throw new Error("Unsupported algorithm: "+p);return function(e,t){if(c[e].match(/^RSA-/))return function(e){var t={};e.forEach((function(e){"Modulus:"===e.split(" ")[0]?t.n=l(e):"PublicExponent:"===e.split(" ")[0]?t.e=l(e):"PrivateExponent:"===e.split(" ")[0]?t.d=l(e):"Prime1:"===e.split(" ")[0]?t.p=l(e):"Prime2:"===e.split(" ")[0]?t.q=l(e):"Exponent1:"===e.split(" ")[0]?t.dmodp=l(e):"Exponent2:"===e.split(" ")[0]?t.dmodq=l(e):"Coefficient:"===e.split(" ")[0]&&(t.iqmp=l(e))}));var r={type:"rsa",parts:[{name:"e",data:s.mpNormalize(t.e)},{name:"n",data:s.mpNormalize(t.n)},{name:"d",data:s.mpNormalize(t.d)},{name:"p",data:s.mpNormalize(t.p)},{name:"q",data:s.mpNormalize(t.q)},{name:"dmodp",data:s.mpNormalize(t.dmodp)},{name:"dmodq",data:s.mpNormalize(t.dmodq)},{name:"iqmp",data:s.mpNormalize(t.iqmp)}]};return new o(r)}(t);if("ECDSA-P384-SHA384"===c[e]||"ECDSA-P256-SHA256"===c[e]){var r=n.from(t[0].split(" ")[1],"base64"),i="nistp384",a=384;"ECDSA-P256-SHA256"===c[e]&&(i="nistp256",a=256);var u=s.publicFromPrivateECDSA(i,r).part.Q.data,h={type:"ecdsa",curve:i,size:a,parts:[{name:"curve",data:n.from(i)},{name:"d",data:r},{name:"Q",data:u}]};return new o(h)}throw new Error("Unsupported algorithm: "+c[e])}(h,r.slice(2))}for(var d=0;r[d].match(/^\;/);)d++;if((r[d].match(/\. IN KEY /)||r[d].match(/\. IN DNSKEY /))&&0===r[d+1].length)return function(e){var t=e.split(" "),r=parseInt(t[5],10);if(!c[r])throw new Error("Unsupported algorithm: "+r);var i=t.slice(6,t.length).join(),o=n.from(i,"base64");if(c[r].match(/^RSA-/)){var u=o.readUInt8(0);if(3!=u&&1!=u)throw new Error("Cannot parse dnssec key: unsupported exponent length");var l=o.slice(1,u+1);l=s.mpNormalize(l);var h=o.slice(1+u);h=s.mpNormalize(h);var p={type:"rsa",parts:[]};return p.parts.push({name:"e",data:l}),p.parts.push({name:"n",data:h}),new a(p)}if("ECDSA-P384-SHA384"===c[r]||"ECDSA-P256-SHA256"===c[r]){var d="nistp384",f=384;c[r].match(/^ECDSA-P256-SHA256/)&&(d="nistp256",f=256);var m={type:"ecdsa",curve:d,size:f,parts:[{name:"curve",data:n.from(d)},{name:"Q",data:s.ecNormalize(o)}]};return new a(m)}throw new Error("Unsupported algorithm: "+c[r])}(r[d]);throw new Error("Cannot parse dnssec key")},write:function(e,t){if(o.isPrivateKey(e)){if("rsa"===e.type)return function(e,t){e.part.dmodp&&e.part.dmodq||s.addRSAMissing(e);var r="";r+="Private-key-format: v1.3\n",r+="Algorithm: "+function(e){if(e&&e.hashAlgo&&"sha1"!==e.hashAlgo){if("sha256"===e.hashAlgo)return"8 (RSASHA256)";if("sha512"===e.hashAlgo)return"10 (RSASHA512)";throw new Error("Unknown or unsupported hash: "+e.hashAlgo)}return"5 (RSASHA1)"}(t)+"\n",r+="Modulus: "+s.mpDenormalize(e.part.n.data).toString("base64")+"\n",r+="PublicExponent: "+s.mpDenormalize(e.part.e.data).toString("base64")+"\n",r+="PrivateExponent: "+s.mpDenormalize(e.part.d.data).toString("base64")+"\n",r+="Prime1: "+s.mpDenormalize(e.part.p.data).toString("base64")+"\n",r+="Prime2: "+s.mpDenormalize(e.part.q.data).toString("base64")+"\n",r+="Exponent1: "+s.mpDenormalize(e.part.dmodp.data).toString("base64")+"\n",r+="Exponent2: "+s.mpDenormalize(e.part.dmodq.data).toString("base64")+"\n",r+="Coefficient: "+s.mpDenormalize(e.part.iqmp.data).toString("base64")+"\n";var i=new Date;return r+="Created: "+h(i)+"\n",r+="Publish: "+h(i)+"\n",r+="Activate: "+h(i)+"\n",n.from(r,"ascii")}(e,t);if("ecdsa"===e.type)return function(e,t){var r="";if(r+="Private-key-format: v1.3\n","nistp256"===e.curve)r+="Algorithm: 13 (ECDSAP256SHA256)\n";else{if("nistp384"!==e.curve)throw new Error("Unsupported curve");r+="Algorithm: 14 (ECDSAP384SHA384)\n"}r+="PrivateKey: "+e.part.d.data.toString("base64")+"\n";var i=new Date;return r+="Created: "+h(i)+"\n",r+="Publish: "+h(i)+"\n",r+="Activate: "+h(i)+"\n",n.from(r,"ascii")}(e);throw new Error("Unsupported algorithm: "+e.type)}throw a.isKey(e)?new Error('Format "dnssec" only supports writing private keys'):new Error("key is not a Key or PrivateKey")}};var i=r(6144),n=r(2399).Buffer,a=r(67721),o=r(73079),s=r(2743),u=(r(34840),r(78849),{"rsa-sha1":5,"rsa-sha256":8,"rsa-sha512":10,"ecdsa-p256-sha256":13,"ecdsa-p384-sha384":14}),c={};function l(e){return n.from(e.split(" ")[1],"base64")}function h(e){var t=e.getFullYear()+""+(e.getMonth()+1)+e.getUTCDate();return(t+=""+e.getUTCHours()+e.getUTCMinutes())+e.getUTCSeconds()}Object.keys(u).forEach((function(e){c[u[e]]=e.toUpperCase()}))},85716:(e,t,r)=>{e.exports={read:function(e,t){o.isBuffer(e)&&(e=e.toString("ascii"));var r=e.trim().split(/[ \t\n]+/g);if(r.length<2||r.length>3)throw new Error("Not a valid SSH certificate line");var i=r[0],n=r[1];return g(n=o.from(n,"base64"),i)},verify:function(e,t){return!1},sign:function(e,t){void 0===e.signatures.openssh&&(e.signatures.openssh={});try{var r=_(e,!0)}catch(t){return delete e.signatures.openssh,!1}var i=e.signatures.openssh,n=void 0;"rsa"!==t.type&&"dsa"!==t.type||(n="sha1");var a=t.createSign(n);return a.write(r),i.signature=a.sign(),!0},signAsync:function(e,t,r){void 0===e.signatures.openssh&&(e.signatures.openssh={});try{var i=_(e,!0)}catch(t){return delete e.signatures.openssh,void r(t)}var n=e.signatures.openssh;t(i,(function(e,t){if(e)r(e);else{try{t.toBuffer("ssh")}catch(e){return void r(e)}n.signature=t,r()}}))},write:function(e,t){void 0===t&&(t={});var r=_(e),i=b(e.subjectKey)+" "+r.toString("base64");return t.comment&&(i=i+" "+t.comment),i},fromBuffer:g,toBuffer:_};var i=r(6144),n=r(34840),a=r(55835),o=r(2399).Buffer,s=r(95280),u=r(67721),c=(r(73079),r(85279)),l=r(84274),h=r(15270),p=r(2743),d=r(90312),f={user:1,host:2};Object.keys(f).forEach((function(e){f[f[e]]=e}));var m=/^ecdsa-sha2-([^@-]+)-cert-v01@openssh.com$/;function g(e,t,r){var a=new n({buffer:e}),o=a.readString();if(void 0!==t&&o!==t)throw new Error("SSH certificate algorithm mismatch");void 0===t&&(t=o);var g={signatures:{}};g.signatures.openssh={},g.signatures.openssh.nonce=a.readBuffer();var y={},_=y.parts=[];y.type=function(e){if("ssh-rsa-cert-v01@openssh.com"===e)return"rsa";if("ssh-dss-cert-v01@openssh.com"===e)return"dsa";if(e.match(m))return"ecdsa";if("ssh-ed25519-cert-v01@openssh.com"===e)return"ed25519";throw new Error("Unsupported cert type "+e)}(t);for(var b=s.info[y.type].parts.length;_.length=1,"key must have at least one part");var w=s.info[y.type];if("ecdsa"===y.type){var E=m.exec(t);i.ok(null!==E),i.strictEqual(E[1],_[0].data.toString())}for(var k=0;k{e.exports={read:function(e,t,r){var u=e;"string"!=typeof e&&(i.buffer(e,"buf"),e=e.toString("ascii"));for(var c,g,y=e.trim().split(/[\r\n]+/g),_=-1;!c&&_0;)g=y[--b].match(/[-]+[ ]*END ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/);i.ok(g,"invalid PEM footer"),i.equal(c[2],g[2]);var w,E=c[2].toLowerCase();c[1]&&(i.equal(c[1],g[1],"PEM header and footer mismatch"),w=c[1].trim()),y=y.slice(_,b+1);for(var k,S,x,j={};c=(y=y.slice(1))[0].match(/^([A-Za-z0-9-]+): (.+)$/);)j[c[1].toLowerCase()]=c[2];if(y=y.slice(0,-1).join(""),e=o.from(y,"base64"),j["proc-type"]){var N=j["proc-type"].split(",");if("4"===N[0]&&"ENCRYPTED"===N[1]){if("string"==typeof t.passphrase&&(t.passphrase=o.from(t.passphrase,"utf-8")),!o.isBuffer(t.passphrase))throw new f.KeyEncryptedError(t.filename,"PEM");N=j["dek-info"].split(","),i.ok(2===N.length),k=N[0].toLowerCase(),x=o.from(N[1],"hex"),S=s.opensslKeyDeriv(k,x,t.passphrase,1).key}}if(w&&"encrypted"===w.toLowerCase()){var M,I=new n.BerReader(e);I.readSequence(),I.readSequence(),M=I.offset+I.length;var A=I.readOID();if("1.2.840.113549.1.5.13"!==A)throw new Error("Unsupported PEM/PKCS8 encryption scheme: "+A);I.readSequence(),I.readSequence();var T=I.offset+I.length,R=I.readOID();if("1.2.840.113549.1.5.12"!==R)throw new Error("Unsupported PBES2 KDF: "+R);I.readSequence();var P=I.readString(n.Ber.OctetString,!0),O=I.readInt(),B="sha1";if(I.offsetd.length&&(y=d.length),g+=m.write(d.slice(v,y),g),m[g++]=10,v=y}return g+=m.write("-----END "+a+"-----\n",g),m.slice(0,g)}};var i=r(6144),n=r(90476),a=r(55835),o=r(2399).Buffer,s=(r(95280),r(2743)),u=r(67721),c=r(73079),l=r(50562),h=r(92693),p=r(53176),d=r(84274),f=r(23004),m={"1.2.840.113549.3.7":"3des-cbc","2.16.840.1.101.3.4.1.2":"aes128-cbc","2.16.840.1.101.3.4.1.42":"aes256-cbc"},g={};Object.keys(m).forEach((function(e){g[m[e]]=e}));var v={"1.2.840.113549.2.7":"sha1","1.2.840.113549.2.9":"sha256","1.2.840.113549.2.11":"sha512"},y={};Object.keys(v).forEach((function(e){y[v[e]]=e}))},50562:(e,t,r)=>{e.exports={read:function(e,t){return l.read(e,t,"pkcs1")},readPkcs1:function(e,t,r){switch(e){case"RSA":if("public"===t)return function(e){var t=p(e,"modulus"),r=p(e,"exponent");return new u({type:"rsa",parts:[{name:"e",data:r},{name:"n",data:t}]})}(r);if("private"===t)return function(e){var t=p(e,"version");i.strictEqual(t[0],0);var r=p(e,"modulus"),n=p(e,"public exponent"),a=p(e,"private exponent"),o=p(e,"prime1"),s=p(e,"prime2"),u=p(e,"exponent1"),l=p(e,"exponent2"),h=p(e,"iqmp");return new c({type:"rsa",parts:[{name:"n",data:r},{name:"e",data:n},{name:"d",data:a},{name:"iqmp",data:h},{name:"p",data:o},{name:"q",data:s},{name:"dmodp",data:u},{name:"dmodq",data:l}]})}(r);throw new Error("Unknown key type: "+t);case"DSA":if("public"===t)return function(e){var t=p(e,"y"),r=p(e,"p"),i=p(e,"q"),n=p(e,"g");return new u({type:"dsa",parts:[{name:"y",data:t},{name:"p",data:r},{name:"q",data:i},{name:"g",data:n}]})}(r);if("private"===t)return function(e){var t=p(e,"version");i.strictEqual(t.readUInt8(0),0);var r=p(e,"p"),n=p(e,"q"),a=p(e,"g"),o=p(e,"y"),s=p(e,"x");return new c({type:"dsa",parts:[{name:"p",data:r},{name:"q",data:n},{name:"g",data:a},{name:"y",data:o},{name:"x",data:s}]})}(r);throw new Error("Unknown key type: "+t);case"EC":case"ECDSA":if("private"===t)return function(e){var t=p(e,"version");i.strictEqual(t.readUInt8(0),1);var r=e.readString(n.Ber.OctetString,!0);e.readSequence(160);var o=h(e);i.string(o,"a known elliptic curve"),e.readSequence(161);var u=e.readString(n.Ber.BitString,!0);u=s.ecNormalize(u);var l={type:"ecdsa",parts:[{name:"curve",data:a.from(o)},{name:"Q",data:u},{name:"d",data:r}]};return new c(l)}(r);if("public"===t)return function(e){e.readSequence();var t=e.readOID();i.strictEqual(t,"1.2.840.10045.2.1","must be ecPublicKey");for(var r,c=e.readOID(),l=Object.keys(o.curves),h=0;h{e.exports={read:function(e,t){return l.read(e,t,"pkcs8")},readPkcs8:function(e,t,r){r.peek()===n.Ber.Integer&&(i.strictEqual(t,"private","unexpected Integer at start of public key"),r.readString(n.Ber.Integer,!0)),r.readSequence();var o=r.offset+r.length,l=r.readOID();switch(l){case"1.2.840.113549.1.1.1":return r._offset=o,"public"===t?function(e){e.readSequence(n.Ber.BitString),e.readByte(),e.readSequence();var t=h(e,"modulus"),r=h(e,"exponent"),i={type:"rsa",source:e.originalInput,parts:[{name:"e",data:r},{name:"n",data:t}]};return new u(i)}(r):function(e){e.readSequence(n.Ber.OctetString),e.readSequence();var t=h(e,"version");i.equal(t[0],0,"unknown RSA private key version");var r=h(e,"modulus"),a=h(e,"public exponent"),o=h(e,"private exponent"),s=h(e,"prime1"),u=h(e,"prime2"),l=h(e,"exponent1"),p=h(e,"exponent2"),d=h(e,"iqmp");return new c({type:"rsa",parts:[{name:"n",data:r},{name:"e",data:a},{name:"d",data:o},{name:"iqmp",data:d},{name:"p",data:s},{name:"q",data:u},{name:"dmodp",data:l},{name:"dmodq",data:p}]})}(r);case"1.2.840.10040.4.1":return"public"===t?function(e){e.readSequence();var t=h(e,"p"),r=h(e,"q"),i=h(e,"g");e.readSequence(n.Ber.BitString),e.readByte();var a=h(e,"y");return new u({type:"dsa",parts:[{name:"p",data:t},{name:"q",data:r},{name:"g",data:i},{name:"y",data:a}]})}(r):function(e){e.readSequence();var t=h(e,"p"),r=h(e,"q"),i=h(e,"g");e.readSequence(n.Ber.OctetString);var a=h(e,"x"),o=s.calculateDSAPublic(i,t,a);return new c({type:"dsa",parts:[{name:"p",data:t},{name:"q",data:r},{name:"g",data:i},{name:"y",data:o},{name:"x",data:a}]})}(r);case"1.2.840.10045.2.1":return"public"===t?function(e){var t=p(e);i.string(t,"a known elliptic curve");var r=e.readString(n.Ber.BitString,!0);r=s.ecNormalize(r);var o={type:"ecdsa",parts:[{name:"curve",data:a.from(t)},{name:"Q",data:r}]};return new u(o)}(r):function(e){var t=p(e);i.string(t,"a known elliptic curve"),e.readSequence(n.Ber.OctetString),e.readSequence();var r=h(e,"version");i.equal(r[0],1,"unknown version of ECDSA key");var o,u=e.readString(n.Ber.OctetString,!0);160==e.peek()&&(e.readSequence(160),e._offset+=e.length),161==e.peek()&&(e.readSequence(161),o=e.readString(n.Ber.BitString,!0),o=s.ecNormalize(o)),void 0===o&&(o=s.publicFromPrivateECDSA(t,u).part.Q.data);var l={type:"ecdsa",parts:[{name:"curve",data:a.from(t)},{name:"Q",data:o},{name:"d",data:u}]};return new c(l)}(r);case"1.3.101.112":return"public"===t?function(e){0===e.peek()&&e.readByte();var t=s.readBitString(e),r={type:"ed25519",parts:[{name:"A",data:s.zeroPadToLength(t,32)}]};return new u(r)}(r):function(e){0===e.peek()&&e.readByte(),e.readSequence(n.Ber.OctetString);var t,r=e.readString(n.Ber.OctetString,!0);r=s.zeroPadToLength(r,32),e.peek()===n.Ber.BitString?(t=s.readBitString(e),t=s.zeroPadToLength(t,32)):t=s.calculateED25519Public(r);var i={type:"ed25519",parts:[{name:"A",data:s.zeroPadToLength(t,32)},{name:"k",data:s.zeroPadToLength(r,32)}]};return new c(i)}(r);case"1.3.101.110":return"public"===t?function(e){var t=s.readBitString(e),r={type:"curve25519",parts:[{name:"A",data:s.zeroPadToLength(t,32)}]};return new u(r)}(r):function(e){0===e.peek()&&e.readByte(),e.readSequence(n.Ber.OctetString);var t=e.readString(n.Ber.OctetString,!0);t=s.zeroPadToLength(t,32);var r=s.calculateX25519Public(t),i={type:"curve25519",parts:[{name:"A",data:s.zeroPadToLength(r,32)},{name:"k",data:s.zeroPadToLength(t,32)}]};return new c(i)}(r);default:throw new Error("Unknown key type OID "+l)}},write:function(e,t){return l.write(e,t,"pkcs8")},writePkcs8:d,pkcs8ToBuffer:function(e){var t=new n.BerWriter;return d(t,e),t.buffer},readECDSACurve:p,writeECDSACurve:f};var i=r(6144),n=r(90476),a=r(2399).Buffer,o=r(95280),s=r(2743),u=r(67721),c=r(73079),l=r(68256);function h(e,t){return i.strictEqual(e.peek(),n.Ber.Integer,t+" is not an Integer"),s.mpNormalize(e.readString(n.Ber.Integer,!0))}function p(e){var t,r,u,c,l;if(e.peek()===n.Ber.OID){var h=e.readOID();for(r=Object.keys(o.curves),u=0;u{e.exports={read:function(e,t){for(var r,o,p=e.toString("ascii").split(/[\r\n]+/),d=!1,f=0;fp.length)throw new Error("Invalid public-lines count");var _,b,w,E=n.from(p.slice(f,f+y).join(""),"base64"),k=a.algToKeyType(m),S=a.read(E);if(S.type!==k)throw new Error("Outer key algorithm mismatch");if(p[f+=y]){r=h(p[f++]),i.equal(r[0].toLowerCase(),"private-lines");var x=parseInt(r[1],10);if(!isFinite(x)||x<0||x>p.length)throw new Error("Invalid private-lines count");var j=n.from(p.slice(f,f+x).join(""),"base64");if("none"!==g&&3===o)throw new Error("Encrypted keys arenot supported for PuTTY format version 3");if("aes256-cbc"===g){if(!t.passphrase)throw new l.KeyEncryptedError(t.filename,"PEM");var N=n.alloc(16,0),M=u.createDecipheriv("aes-256-cbc",(_=t.passphrase,b=u.createHash("sha1").update(n.concat([n.from([0,0,0,0]),n.from(_)])).digest(),w=u.createHash("sha1").update(n.concat([n.from([0,0,0,1]),n.from(_)])).digest(),n.concat([b,w]).slice(0,32)),N);M.setAutoPadding(!1),j=n.concat([M.update(j),M.final()])}if((S=new c(S)).type!==k)throw new Error("Outer key algorithm mismatch");var I,A=new s({buffer:j});if("ssh-dss"===m)I=[{name:"x",data:A.readBuffer()}];else if("ssh-rsa"===m)I=[{name:"d",data:A.readBuffer()},{name:"p",data:A.readBuffer()},{name:"q",data:A.readBuffer()},{name:"iqmp",data:A.readBuffer()}];else if(m.match(/^ecdsa-sha2-nistp/))I=[{name:"d",data:A.readBuffer()}];else{if("ssh-ed25519"!==m)throw new Error("Unsupported PPK key type: "+m);I=[{name:"k",data:A.readBuffer()}]}S=new c({type:S.type,parts:S.parts.concat(I)})}return S.comment=v,S},write:function(e,t){if(i.object(e),!o.isKey(e))throw new Error("Must be a public key");var r=a.keyTypeToAlg(e),s=a.write(e),u=e.comment||"",c=function(e,t){for(var r=[],i=0;i{e.exports={read:p.bind(void 0,!1,void 0),readType:p.bind(void 0,!1),write:function(e,t){i.object(e);var r,s=h(e),l=a.info[e.type];u.isPrivateKey(e)&&(l=a.privInfo[e.type]);var p=l.parts,d=new c({});for(d.writeString(s),r=0;r=1,"key must have at least one part"),i.ok(e||f.atEnd(),"leftover bytes at end of key");var v=s,y=a.info[p.type];if("private"!==t&&y.parts.length===d.length||(y=a.privInfo[p.type],v=u),i.strictEqual(y.parts.length,d.length),"ecdsa"===p.type){var _=/^ecdsa-sha2-(.+)$/.exec(m);i.ok(null!==_),i.strictEqual(_[1],d[0].data.toString())}for(var b=!0,w=0;w{e.exports={read:function(e,t){return c.read(e,t)},readSSHPrivate:function(e,t,u){var c=(t=new h({buffer:t})).readCString();n.strictEqual(c,d,"bad magic string");var f=t.readString(),m=t.readString(),g=t.readBuffer();if(1!==t.readInt())throw new Error("OpenSSH-format key file contains multiple keys: this is unsupported.");var v=t.readBuffer();if("public"===e)return n.ok(t.atEnd(),"excess bytes left after key"),l.read(v);var y=t.readBuffer();n.ok(t.atEnd(),"excess bytes left after key");var _=new h({buffer:g});switch(m){case"none":if("none"!==f)throw new Error('OpenSSH-format key uses KDF "none" but specifies a cipher other than "none"');break;case"bcrypt":var b=_.readBuffer(),w=_.readInt(),E=o.opensshCipherInfo(f);if(void 0===i&&(i=r(62703)),"string"==typeof u.passphrase&&(u.passphrase=a.from(u.passphrase,"utf-8")),!a.isBuffer(u.passphrase))throw new p.KeyEncryptedError(u.filename,"OpenSSH");var k=new Uint8Array(u.passphrase),S=new Uint8Array(b),x=new Uint8Array(E.keySize+E.blockSize);if(0!==i.pbkdf(k,k.length,S,S.length,x,x.length,w))throw new Error("bcrypt_pbkdf function returned failure, parameters invalid");var j=(x=a.from(x)).slice(0,E.keySize),N=x.slice(E.keySize,E.keySize+E.blockSize),M=s.createDecipheriv(E.opensslName,j,N);M.setAutoPadding(!1);var I,A=[];for(M.once("error",(function(e){if(-1!==e.toString().indexOf("bad decrypt"))throw new Error("Incorrect passphrase supplied, could not decrypt key");throw e})),M.write(y),M.end();null!==(I=M.read());)A.push(I);y=a.concat(A);break;default:throw new Error('OpenSSH-format key uses unknown KDF "'+m+'"')}if((t=new h({buffer:y})).readInt()!==t.readInt())throw new Error("Incorrect passphrase supplied, could not decrypt key");var T={},R=l.readInternal(T,"private",t.remainder());t.skip(T.consumed);var P=t.readString();return R.comment=P,R},write:function(e,t){var c;c=u.isPrivateKey(e)?e.toPublic():e;var l,p,f="none",m="none",g=a.alloc(0),v={blockSize:8};if(void 0!==t&&("string"==typeof(l=t.passphrase)&&(l=a.from(l,"utf-8")),void 0!==l&&(n.buffer(l,"options.passphrase"),n.optionalString(t.cipher,"options.cipher"),void 0===(f=t.cipher)&&(f="aes128-ctr"),v=o.opensshCipherInfo(f),m="bcrypt")),u.isPrivateKey(e)){p=new h({});var y=s.randomBytes(4).readUInt32BE(0);p.writeInt(y),p.writeInt(y),p.write(e.toBuffer("rfc4253")),p.writeString(e.comment||"");for(var _=1;p._offset%v.blockSize!=0;)p.writeChar(_++);p=p.toBuffer()}switch(m){case"none":break;case"bcrypt":var b=s.randomBytes(16),w=new h({});w.writeBuffer(b),w.writeInt(16),g=w.toBuffer(),void 0===i&&(i=r(62703));var E=new Uint8Array(l),k=new Uint8Array(b),S=new Uint8Array(v.keySize+v.blockSize);if(0!==i.pbkdf(E,E.length,k,k.length,S,S.length,16))throw new Error("bcrypt_pbkdf function returned failure, parameters invalid");var x=(S=a.from(S)).slice(0,v.keySize),j=S.slice(v.keySize,v.keySize+v.blockSize),N=s.createCipheriv(v.opensslName,x,j);N.setAutoPadding(!1);var M,I=[];for(N.once("error",(function(e){throw e})),N.write(p),N.end();null!==(M=N.read());)I.push(M);p=a.concat(I);break;default:throw new Error("Unsupported kdf "+m)}var A,T=new h({});T.writeCString(d),T.writeString(f),T.writeString(m),T.writeBuffer(g),T.writeInt(1),T.writeBuffer(c.toBuffer("rfc4253")),p&&T.writeBuffer(p),T=T.toBuffer(),A=u.isPrivateKey(e)?"OPENSSH PRIVATE KEY":"OPENSSH PUBLIC KEY";var R=T.toString("base64"),P=R.length+R.length/70+18+16+2*A.length+10,O=0;O+=(T=a.alloc(P)).write("-----BEGIN "+A+"-----\n",O);for(var B=0;BR.length&&(C=R.length),O+=T.write(R.slice(B,C),O),T[O++]=10,B=C}return O+=T.write("-----END "+A+"-----\n",O),T.slice(0,O)}};var i,n=r(6144),a=(r(90476),r(2399).Buffer),o=(r(95280),r(2743)),s=r(55835),u=(r(67721),r(73079)),c=r(68256),l=r(84274),h=r(34840),p=r(23004),d="openssh-key-v1"},26550:(e,t,r)=>{e.exports={read:function(e,t){"string"!=typeof e&&(i.buffer(e,"buf"),e=e.toString("ascii"));var r=e.trim().replace(/[\\\r]/g,""),o=r.match(s);o||(o=r.match(u)),i.ok(o,"key must match regex");var c,l=a.algToKeyType(o[1]),h=n.from(o[2],"base64"),p={};if(o[4])try{c=a.read(h)}catch(e){o=r.match(u),i.ok(o,"key must match regex"),h=n.from(o[2],"base64"),c=a.readInternal(p,"public",h)}else c=a.readInternal(p,"public",h);if(i.strictEqual(l,c.type),o[4]&&o[4].length>0)c.comment=o[4];else if(p.consumed){var d=o[2]+(o[3]?o[3]:""),f=4*Math.ceil(p.consumed/3);for(d=d.slice(0,f-2).replace(/[^a-zA-Z0-9+\/=]/g,"")+d.slice(f-2),p.consumed%3>0&&"="!==d.slice(f-1,f)&&f--;"="===d.slice(f,f+1);)f++;var m=d.slice(f);(m=m.replace(/[\r\n]/g," ").replace(/^\s+/,"")).match(/^[a-zA-Z0-9]/)&&(c.comment=m)}return c},write:function(e,t){if(i.object(e),!o.isKey(e))throw new Error("Must be a public key");var r=[],s=a.keyTypeToAlg(e);r.push(s);var u=a.write(e);return r.push(u.toString("base64")),e.comment&&r.push(e.comment),n.from(r.join(" "))}};var i=r(6144),n=r(2399).Buffer,a=r(84274),o=(r(2743),r(67721)),s=(r(73079),r(53176),/^([a-z0-9-]+)[ \t]+([a-zA-Z0-9+\/]+[=]*)([ \t]+([^ \t][^\n]*[\n]*)?)?$/),u=/^([a-z0-9-]+)[ \t\n]+([a-zA-Z0-9+\/][a-zA-Z0-9+\/ \t\n=]*)([^a-zA-Z0-9+\/ \t\n=].*)?$/},65221:(e,t,r)=>{var i=r(67026);e.exports={read:function(e,t){"string"!=typeof e&&(n.buffer(e,"buf"),e=e.toString("ascii"));for(var r,o,s=e.trim().split(/[\r\n]+/g),u=-1;!r&&u0;)o=s[--c].match(/[-]+[ ]*END CERTIFICATE[ ]*[-]+/);n.ok(o,"invalid PEM footer"),s=s.slice(u,c+1);for(var l={};r=(s=s.slice(1))[0].match(/^([A-Za-z0-9-]+): (.+)$/);)l[r[1].toLowerCase()]=r[2];return s=s.slice(0,-1).join(""),e=a.from(s,"base64"),i.read(e,t)},verify:i.verify,sign:i.sign,write:function(e,t){var r="CERTIFICATE",n=i.write(e,t).toString("base64"),o=n.length+n.length/64+18+16+2*r.length+10,s=a.alloc(o),u=0;u+=s.write("-----BEGIN "+r+"-----\n",u);for(var c=0;cn.length&&(l=n.length),u+=s.write(n.slice(c,l),u),s[u++]=10,c=l}return u+=s.write("-----END "+r+"-----\n",u),s.slice(0,u)}};var n=r(6144),a=(r(90476),r(2399).Buffer);r(95280),r(2743),r(67721),r(73079),r(68256),r(85279),r(15270),r(90312)},67026:(e,t,r)=>{e.exports={read:function(e,t){"string"==typeof e&&(e=a.from(e,"binary")),i.buffer(e,"buf");var r=new n.BerReader(e);if(r.readSequence(),Math.abs(r.length-r.remain)>1)throw new Error("DER sequence does not contain whole byte stream");var p=r.offset;r.readSequence();var f=r.offset+r.length,m=f;if(r.peek()===h(0)){r.readSequence(h(0));var g=r.readInt();i.ok(g<=3,"only x.509 versions up to v3 supported")}var v={signatures:{}},_=v.signatures.x509={};_.extras={},v.serial=function(e,t){return i.strictEqual(e.peek(),n.Ber.Integer,"serial is not an Integer"),o.mpNormalize(e.readString(n.Ber.Integer,!0))}(r),r.readSequence();var b=r.offset+r.length,w=r.readOID();if(void 0===d[w])throw new Error("unknown signature algorithm "+w);if(r._offset=b,v.issuer=s.parseAsn1(r),r.readSequence(),v.validFrom=y(r),v.validUntil=y(r),v.subjects=[s.parseAsn1(r)],r.readSequence(),b=r.offset+r.length,v.subjectKey=l.readPkcs8(void 0,"public",r),r._offset=b,r.peek()===h(1)&&(r.readSequence(h(1)),_.extras.issuerUniqueID=e.slice(r.offset,r.offset+r.length),r._offset+=r.length),r.peek()===h(2)&&(r.readSequence(h(2)),_.extras.subjectUniqueID=e.slice(r.offset,r.offset+r.length),r._offset+=r.length),r.peek()===h(3)){r.readSequence(h(3));var E=r.offset+r.length;for(r.readSequence();r.offset=60?a-1:a,r.setUTCFullYear(o,parseInt(t[2],10)-1,parseInt(t[3],10)),r.setUTCHours(parseInt(t[4],10),parseInt(t[5],10)),t[6]&&t[6].length>0&&r.setUTCSeconds(parseInt(t[6],10)),r}(e.readString(n.Ber.UTCTime));if(e.peek()===n.Ber.GeneralizedTime)return function(e){var t=e.match(j);i.ok(t);var r=new Date;return r.setUTCFullYear(parseInt(t[1],10),parseInt(t[2],10)-1,parseInt(t[3],10)),r.setUTCHours(parseInt(t[4],10),parseInt(t[5],10)),t[6]&&t[6].length>0&&r.setUTCSeconds(parseInt(t[6],10)),r}(e.readString(n.Ber.GeneralizedTime));throw new Error("Unsupported date format")}function _(e,t){var r,i;t.getUTCFullYear()>=2050||t.getUTCFullYear()<1950?e.writeString((i="",i+=N((r=t).getUTCFullYear(),4),i+=N(r.getUTCMonth()+1),i+=N(r.getUTCDate()),i+=N(r.getUTCHours()),i+=N(r.getUTCMinutes()),i+=N(r.getUTCSeconds()),i+="Z"),n.Ber.GeneralizedTime):e.writeString(function(e){var t="";return t+=N(e.getUTCFullYear()%100),t+=N(e.getUTCMonth()+1),t+=N(e.getUTCDate()),t+=N(e.getUTCHours()),t+=N(e.getUTCMinutes()),(t+=N(e.getUTCSeconds()))+"Z"}(t),n.Ber.UTCTime)}var b={OtherName:h(0),RFC822Name:p(1),DNSName:p(2),X400Address:h(3),DirectoryName:h(4),EDIPartyName:h(5),URI:p(6),IPAddress:p(7),OID:p(8)},w={serverAuth:"1.3.6.1.5.5.7.3.1",clientAuth:"1.3.6.1.5.5.7.3.2",codeSigning:"1.3.6.1.5.5.7.3.3",joyentDocker:"1.3.6.1.4.1.38678.1.4.1",joyentCmon:"1.3.6.1.4.1.38678.1.4.2"},E={};Object.keys(w).forEach((function(e){E[w[e]]=e}));var k=["signature","identity","keyEncryption","encryption","keyAgreement","ca","crl"];function S(e,t,r){r.readSequence();var i,a,o=r.offset+r.length,u=r.readOID(),c=e.signatures.x509;switch(c.extras.exts||(c.extras.exts=[]),r.peek()===n.Ber.Boolean&&(a=r.readBoolean()),u){case m:r.readSequence(n.Ber.OctetString),r.readSequence();var l=r.offset+r.length,h=!1;r.peek()===n.Ber.Boolean&&(h=r.readBoolean()),void 0===e.purposes&&(e.purposes=[]),!0===h&&e.purposes.push("ca");var p={oid:u,critical:a};r.offset0||"host"===a.type||void 0!==e.purposes&&e.purposes.length>0||r.extras&&r.extras.exts){t.startSequence(h(3)),t.startSequence();var u=[];void 0!==e.purposes&&e.purposes.length>0&&(u.push({oid:m,critical:!0}),u.push({oid:g,critical:!0}),u.push({oid:v,critical:!0})),u.push({oid:f}),r.extras&&r.extras.exts&&(u=r.extras.exts);for(var c=0;c{e.exports=l;var i=r(6144),n=(r(95280),r(55835),r(40500),r(15270),r(23004),r(89539),r(2743)),a=r(90476),o=r(2399).Buffer,s=/^([*]|[a-z0-9][a-z0-9\-]{0,62})(?:\.([*]|[a-z0-9][a-z0-9\-]{0,62}))*$/i,u={cn:"2.5.4.3",o:"2.5.4.10",ou:"2.5.4.11",l:"2.5.4.7",s:"2.5.4.8",c:"2.5.4.6",sn:"2.5.4.4",postalCode:"2.5.4.17",serialNumber:"2.5.4.5",street:"2.5.4.9",x500UniqueIdentifier:"2.5.4.45",role:"2.5.4.72",telephoneNumber:"2.5.4.20",description:"2.5.4.13",dc:"0.9.2342.19200300.100.1.25",uid:"0.9.2342.19200300.100.1.1",mail:"0.9.2342.19200300.100.1.3",title:"2.5.4.12",gn:"2.5.4.42",initials:"2.5.4.43",pseudonym:"2.5.4.65",emailAddress:"1.2.840.113549.1.9.1"},c={};function l(e){var t=this;if(i.object(e,"options"),i.arrayOfObject(e.components,"options.components"),this.components=e.components,this.componentLookup={},this.components.forEach((function(e){e.name&&!e.oid&&(e.oid=u[e.name]),e.oid&&!e.name&&(e.name=c[e.oid]),void 0===t.componentLookup[e.name]&&(t.componentLookup[e.name]=[]),t.componentLookup[e.name].push(e)})),this.componentLookup.cn&&this.componentLookup.cn.length>0&&(this.cn=this.componentLookup.cn[0].value),i.optionalString(e.type,"options.type"),void 0===e.type)1===this.components.length&&this.componentLookup.cn&&1===this.componentLookup.cn.length&&this.componentLookup.cn[0].value.match(s)?(this.type="host",this.hostname=this.componentLookup.cn[0].value):this.componentLookup.dc&&this.components.length===this.componentLookup.dc.length?(this.type="host",this.hostname=this.componentLookup.dc.map((function(e){return e.value})).join(".")):this.componentLookup.uid&&this.components.length===this.componentLookup.uid.length?(this.type="user",this.uid=this.componentLookup.uid[0].value):this.componentLookup.cn&&1===this.componentLookup.cn.length&&this.componentLookup.cn[0].value.match(s)?(this.type="host",this.hostname=this.componentLookup.cn[0].value):this.componentLookup.uid&&1===this.componentLookup.uid.length?(this.type="user",this.uid=this.componentLookup.uid[0].value):this.componentLookup.mail&&1===this.componentLookup.mail.length?(this.type="email",this.email=this.componentLookup.mail[0].value):this.componentLookup.cn&&1===this.componentLookup.cn.length?(this.type="user",this.uid=this.componentLookup.cn[0].value):this.type="unknown";else if(this.type=e.type,"host"===this.type)this.hostname=e.hostname;else if("user"===this.type)this.uid=e.uid;else{if("email"!==this.type)throw new Error("Unknown type "+this.type);this.email=e.email}}Object.keys(u).forEach((function(e){c[u[e]]=e})),l.prototype.toString=function(){return this.components.map((function(e){var t=e.name.toUpperCase();t=t.replace(/=/g,"\\=");var r=e.value;return t+"="+r.replace(/,/g,"\\,")})).join(", ")},l.prototype.get=function(e,t){i.string(e,"name");var r=this.componentLookup[e];if(void 0!==r&&0!==r.length){if(!t&&r.length>1)throw new Error("Multiple values for attribute "+e);return t?r.map((function(e){return e.value})):r[0].value}},l.prototype.toArray=function(e){return this.components.map((function(e){return{name:e.name,value:e.value}}))};var h=/[^a-zA-Z0-9 '(),+.\/:=?-]/,p=/[^\x00-\x7f]/;function d(e,t){if("**"===e||"**"===t)return!0;var r=e.split("."),i=t.split(".");if(r.length!==i.length)return!1;for(var n=0;n0;){var a;if(null!==(a=/^,/.exec(n)))t[++r]="",n=n.slice(a[0].length);else if(null!==(a=/^\\,/.exec(n)))t[r]+=",",n=n.slice(a[0].length);else if(null!==(a=/^\\./.exec(n)))t[r]+=a[0],n=n.slice(a[0].length);else{if(null===(a=/^[^\\,]+/.exec(n)))throw new Error("Failed to parse DN");t[r]+=a[0],n=n.slice(a[0].length)}}return new l({components:t.map((function(e){for(var t=(e=e.trim()).indexOf("=");t>0&&"\\"===e.charAt(t-1);)t=e.indexOf("=",t+1);if(-1===t)throw new Error("Failed to parse DN");return{name:e.slice(0,t).toLowerCase().replace(/\\=/g,"="),value:e.slice(t+1)}}))})},l.fromArray=function(e){return i.arrayOfObject(e,"components"),e.forEach((function(e){if(i.object(e,"component"),i.string(e.name,"component.name"),!o.isBuffer(e.value)&&"string"!=typeof e.value)throw new Error("Invalid component value")})),new l({components:e})},l.parseAsn1=function(e,t){var r=[];e.readSequence(t);for(var i=e.offset+e.length;e.offset{var i=r(67721),n=r(40500),a=r(15270),o=r(73079),s=r(90312),u=r(85279),c=r(23004);e.exports={Key:i,parseKey:i.parse,Fingerprint:n,parseFingerprint:n.parse,Signature:a,parseSignature:a.parse,PrivateKey:o,parsePrivateKey:o.parse,generatePrivateKey:o.generate,Certificate:s,parseCertificate:s.parse,createSelfSignedCertificate:s.createSelfSigned,createCertificate:s.create,Identity:u,identityFromDN:u.parseDN,identityForHost:u.forHost,identityForUser:u.forUser,identityForEmail:u.forEmail,identityFromArray:u.fromArray,FingerprintFormatError:c.FingerprintFormatError,InvalidAlgorithmError:c.InvalidAlgorithmError,KeyParseError:c.KeyParseError,SignatureParseError:c.SignatureParseError,KeyEncryptedError:c.KeyEncryptedError,CertificateParseError:c.CertificateParseError}},67721:(e,t,r)=>{var i=r(48764).Buffer;e.exports=v;var n,a=r(6144),o=r(95280),s=r(55835),u=r(40500),c=r(15270),l=r(78849).DiffieHellman,h=r(23004),p=r(2743),d=r(73079);try{n=r(14744)}catch(e){}var f=h.InvalidAlgorithmError,m=h.KeyParseError,g={};function v(e){a.object(e,"options"),a.arrayOfObject(e.parts,"options.parts"),a.string(e.type,"options.type"),a.optionalString(e.comment,"options.comment");var t=o.info[e.type];if("object"!=typeof t)throw new f(e.type);for(var r,i={},n=0;n1024&&(e="sha256"),"ed25519"===this.type&&(e="sha512"),"ecdsa"===this.type&&(e=this.size<=256?"sha256":this.size<=384?"sha384":"sha512"),e},v.prototype.createVerify=function(e){if(void 0===e&&(e=this.defaultHashAlgorithm()),a.string(e,"hash algorithm"),"ed25519"===this.type&&void 0!==n)return new n.Verifier(this,e);if("curve25519"===this.type)throw new Error("Curve25519 keys are not suitable for signing or verification");var t,r,o;try{r=e.toUpperCase(),t=s.createVerify(r)}catch(e){o=e}(void 0===t||o instanceof Error&&o.message.match(/Unknown message digest/))&&(r="RSA-",r+=e.toUpperCase(),t=s.createVerify(r)),a.ok(t,"failed to create verifier");var u=t.verify.bind(t),l=this.toBuffer("pkcs8"),h=this.curve,p=this;return t.verify=function(t,r){if(c.isSignature(t,[2,0]))return t.type===p.type&&(!t.hashAlgorithm||t.hashAlgorithm===e)&&(!t.curve||"ecdsa"!==p.type||t.curve===h)&&u(l,t.toBuffer("asn1"));if("string"==typeof t||i.isBuffer(t))return u(l,t,r);throw c.isSignature(t,[1,0])?new Error("signature was created by too old a version of sshpk and cannot be verified"):new TypeError("signature must be a string, Buffer, or Signature object")},t},v.prototype.createDiffieHellman=function(){if("rsa"===this.type)throw new Error("RSA keys do not support Diffie-Hellman");return new l(this)},v.prototype.createDH=v.prototype.createDiffieHellman,v.parse=function(e,t,r){"string"!=typeof e&&a.buffer(e,"data"),void 0===t&&(t="auto"),a.string(t,"format"),"string"==typeof r&&(r={filename:r}),a.optionalObject(r,"options"),void 0===r&&(r={}),a.optionalString(r.filename,"options.filename"),void 0===r.filename&&(r.filename="(unnamed)"),a.object(g[t],"formats[format]");try{var i=g[t].read(e,r);return i instanceof d&&(i=i.toPublic()),i.comment||(i.comment=r.filename),i}catch(e){if("KeyEncryptedError"===e.name)throw e;throw new m(r.filename,t,e)}},v.isKey=function(e,t){return p.isCompatible(e,v,t)},v.prototype._sshpkApiVersion=[1,7],v._oldVersionDetect=function(e){return a.func(e.toBuffer),a.func(e.fingerprint),e.createDH?[1,4]:e.defaultHashAlgorithm?[1,3]:e.formats.auto?[1,2]:e.formats.pkcs1?[1,1]:[1,0]}},73079:(e,t,r)=>{e.exports=_;var i=r(6144),n=r(2399).Buffer,a=r(95280),o=r(55835),s=(r(40500),r(15270)),u=r(23004),c=r(89539),l=r(2743),h=r(78849),p=h.generateECDSA,d=h.generateED25519,f=r(14744),m=r(50780),g=r(67721),v=(u.InvalidAlgorithmError,u.KeyParseError),y=(u.KeyEncryptedError,{});function _(e){i.object(e,"options"),g.call(this,e),this._pubCache=void 0}y.auto=r(31683),y.pem=r(68256),y.pkcs1=r(50562),y.pkcs8=r(92693),y.rfc4253=r(84274),y["ssh-private"]=r(53176),y.openssh=y["ssh-private"],y.ssh=y["ssh-private"],y.dnssec=r(64486),y.putty=r(95052),c.inherits(_,g),_.formats=y,_.prototype.toBuffer=function(e,t){return void 0===e&&(e="pkcs1"),i.string(e,"format"),i.object(y[e],"formats[format]"),i.optionalObject(t,"options"),y[e].write(this,t)},_.prototype.hash=function(e,t){return this.toPublic().hash(e,t)},_.prototype.fingerprint=function(e,t){return this.toPublic().fingerprint(e,t)},_.prototype.toPublic=function(){if(this._pubCache)return this._pubCache;for(var e=a.info[this.type],t=[],r=0;r{e.exports=h;var i=r(6144),n=r(2399).Buffer,a=(r(95280),r(55835),r(23004)),o=r(2743),s=r(90476),u=r(34840),c=a.InvalidAlgorithmError,l=a.SignatureParseError;function h(e){i.object(e,"options"),i.arrayOfObject(e.parts,"options.parts"),i.string(e.type,"options.type");for(var t={},r=0;r20&&0===a[0]&&(a=a.slice(1)),(c=this.part.s.data).length>20&&0===c[0]&&(c=c.slice(1)),this.hashAlgorithm&&"sha1"!==this.hashAlgorithm||a.length+c.length!==40)throw new Error("OpenSSH only supports DSA signatures with SHA1 hash");return t.writeBuffer(n.concat([a,c])),t.toBuffer()}if("ssh"===e&&"ecdsa"===this.type){var h,p=new u({});a=this.part.r.data,p.writeBuffer(a),p.writePart(this.part.s),t=new u({}),0===a[0]&&(a=a.slice(1));var d=8*a.length;return 256===d?h="nistp256":384===d?h="nistp384":528===d&&(h="nistp521"),t.writeString("ecdsa-sha2-"+h),t.writeBuffer(p.toBuffer()),t.toBuffer()}throw new Error("Invalid signature format");default:throw new Error("Invalid signature data")}},h.prototype.toString=function(e){return i.optionalString(e,"format"),this.toBuffer(e).toString("base64")},h.parse=function(e,t,r){"string"==typeof e&&(e=n.from(e,"base64")),i.buffer(e,"data"),i.string(r,"format"),i.string(t,"type");var a={};a.type=t.toLowerCase(),a.parts=[];try{switch(i.ok(e.length>0,"signature must not be empty"),a.type){case"rsa":case"ed25519":return function(e,t,r,n){if("ssh"===r){try{var a=new u({buffer:e}),o=a.readString()}catch(e){}if(void 0!==a){var s="SSH signature does not match expected type (expected "+t+", got "+o+")";switch(o){case"ssh-rsa":i.strictEqual(t,"rsa",s),n.hashAlgo="sha1";break;case"rsa-sha2-256":i.strictEqual(t,"rsa",s),n.hashAlgo="sha256";break;case"rsa-sha2-512":i.strictEqual(t,"rsa",s),n.hashAlgo="sha512";break;case"ssh-ed25519":i.strictEqual(t,"ed25519",s),n.hashAlgo="sha512";break;default:throw new Error("Unknown SSH signature type: "+o)}var c=a.readPart();return i.ok(a.atEnd(),"extra trailing bytes"),c.name="sig",n.parts.push(c),new h(n)}}return n.parts.push({name:"sig",data:e}),new h(n)}(e,t,r,a);case"dsa":case"ecdsa":return"asn1"===r?function(e,t,r,i){var n=new s.BerReader(e);n.readSequence();var a=n.readString(s.Ber.Integer,!0),u=n.readString(s.Ber.Integer,!0);return i.parts.push({name:"r",data:o.mpNormalize(a)}),i.parts.push({name:"s",data:o.mpNormalize(u)}),new h(i)}(e,0,0,a):"dsa"===a.type?function(e,t,r,n){if(40!=e.length){var a=new u({buffer:e}),o=a.readBuffer();"ssh-dss"===o.toString("ascii")&&(o=a.readBuffer()),i.ok(a.atEnd(),"extra trailing bytes"),i.strictEqual(o.length,40,"invalid inner length"),e=o}return n.parts.push({name:"r",data:e.slice(0,20)}),n.parts.push({name:"s",data:e.slice(20,40)}),new h(n)}(e,0,0,a):function(e,t,r,n){var a,o,s=new u({buffer:e}),c=s.readBuffer(),l=c.toString("ascii");if("ecdsa-"===l.slice(0,6)){var p=l.split("-");switch(i.strictEqual(p[0],"ecdsa"),i.strictEqual(p[1],"sha2"),n.curve=p[2],n.curve){case"nistp256":n.hashAlgo="sha256";break;case"nistp384":n.hashAlgo="sha384";break;case"nistp521":n.hashAlgo="sha512";break;default:throw new Error("Unsupported ECDSA curve: "+n.curve)}c=s.readBuffer(),i.ok(s.atEnd(),"extra trailing bytes on outer"),a=(s=new u({buffer:c})).readPart()}else a={data:c};return o=s.readPart(),i.ok(s.atEnd(),"extra trailing bytes"),a.name="r",o.name="s",n.parts.push(a),n.parts.push(o),new h(n)}(e,0,0,a);default:throw new c(t)}}catch(e){if(e instanceof c)throw e;throw new l(t,r,e)}},h.isSignature=function(e,t){return o.isCompatible(e,h,t)},h.prototype._sshpkApiVersion=[2,1],h._oldVersionDetect=function(e){return i.func(e.toBuffer),e.hasOwnProperty("hashAlgorithm")?[2,0]:[1,0]}},34840:(e,t,r)=>{e.exports=a;var i=r(6144),n=r(2399).Buffer;function a(e){i.object(e,"options"),void 0!==e.buffer&&i.buffer(e.buffer,"options.buffer"),this._size=e.buffer?e.buffer.length:1024,this._buffer=e.buffer||n.alloc(this._size),this._offset=0}a.prototype.toBuffer=function(){return this._buffer.slice(0,this._offset)},a.prototype.atEnd=function(){return this._offset>=this._buffer.length},a.prototype.remainder=function(){return this._buffer.slice(this._offset)},a.prototype.skip=function(e){this._offset+=e},a.prototype.expand=function(){this._size*=2;var e=n.alloc(this._size);this._buffer.copy(e,0),this._buffer=e},a.prototype.readPart=function(){return{data:this.readBuffer()}},a.prototype.readBuffer=function(){var e=this._buffer.readUInt32BE(this._offset);this._offset+=4,i.ok(this._offset+e<=this._buffer.length,"length out of bounds at +0x"+this._offset.toString(16)+" (data truncated?)");var t=this._buffer.slice(this._offset,this._offset+e);return this._offset+=e,t},a.prototype.readString=function(){return this.readBuffer().toString()},a.prototype.readCString=function(){for(var e=this._offset;ethis._size;)this.expand();this._buffer.writeUInt32BE(e.length,this._offset),this._offset+=4,e.copy(this._buffer,this._offset),this._offset+=e.length},a.prototype.writeString=function(e){this.writeBuffer(n.from(e,"utf8"))},a.prototype.writeCString=function(e){for(;this._offset+1+e.length>this._size;)this.expand();this._buffer.write(e,this._offset),this._offset+=e.length,this._buffer[this._offset++]=0},a.prototype.writeInt=function(e){for(;this._offset+4>this._size;)this.expand();this._buffer.writeUInt32BE(e,this._offset),this._offset+=4},a.prototype.writeInt64=function(e){if(i.buffer(e,"value"),e.length>8){for(var t=e.slice(0,e.length-8),r=0;rthis._size;)this.expand();e.copy(this._buffer,this._offset),this._offset+=8},a.prototype.writeChar=function(e){for(;this._offset+1>this._size;)this.expand();this._buffer[this._offset++]=e},a.prototype.writePart=function(e){this.writeBuffer(e.data)},a.prototype.write=function(e){for(;this._offset+e.length>this._size;)this.expand();e.copy(this._buffer,this._offset),this._offset+=e.length}},2743:(e,t,r)=>{e.exports={bufferSplit:function(e,t){i.buffer(e),i.string(t);for(var r=[],n=0,a=0,o=0;o=t.length){var s=o+1;r.push(e.slice(n,s-a)),n=s,a=0}return n<=e.length&&r.push(e.slice(n,e.length)),r},addRSAMissing:function(e){i.object(e),d(e,a,[1,1]);var t,r=new h(e.part.d.data);if(!e.part.dmodp){var n=new h(e.part.p.data);t=g(r.mod(n.subtract(1))),e.part.dmodp={name:"dmodp",data:t},e.parts.push(e.part.dmodp)}if(!e.part.dmodq){var o=new h(e.part.q.data);t=g(r.mod(o.subtract(1))),e.part.dmodq={name:"dmodq",data:t},e.parts.push(e.part.dmodq)}},calculateDSAPublic:function(e,t,r){return i.buffer(e),i.buffer(t),i.buffer(r),e=new h(e),t=new h(t),r=new h(r),g(e.modPow(r,t))},calculateED25519Public:function(e){i.buffer(e);var t=p.sign.keyPair.fromSeed(new Uint8Array(e));return n.from(t.publicKey)},calculateX25519Public:function(e){i.buffer(e);var t=p.box.keyPair.fromSeed(new Uint8Array(e));return n.from(t.publicKey)},mpNormalize:m,mpDenormalize:function(e){for(i.buffer(e);e.length>1&&0===e[0];)e=e.slice(1);return e},ecNormalize:function(e,t){if(i.buffer(e),0===e[0]&&4===e[1])return t?e:e.slice(1);if(4===e[0]){if(!t)return e}else{for(;0===e[0];)e=e.slice(1);if(2===e[0]||3===e[0])throw new Error("Compressed elliptic curve points are not supported");if(4!==e[0])throw new Error("Not a valid elliptic curve point");if(!t)return e}var r=n.alloc(e.length+1);return r[0]=0,e.copy(r,1),r},countZeros:function(e){for(var t=0,r=8;t3)return!1;if(i.constructor.name!==t.name)return!1;var a=i._sshpkApiVersion;return void 0===a&&(a=t._oldVersionDetect(e)),!(a[0]!=r[0]||a[1]t;)i.equal(e[0],0),e=e.slice(1);for(;e.length=r[1],n+" must be compatible with "+t.name+" klass version "+r[0]+"."+r[1])}}var f={"des-ede3-cbc":{key:24,iv:8},"aes-128-cbc":{key:16,iv:16},"aes-256-cbc":{key:32,iv:16}};function m(e){for(i.buffer(e);e.length>1&&0===e[0]&&0==(128&e[1]);)e=e.slice(1);if(128==(128&e[0])){var t=n.alloc(e.length+1);t[0]=0,e.copy(t,1),e=t}return e}function g(e){var t=n.from(e.toByteArray());return m(t)}},8799:e=>{"use strict";var t=/\.node$/;function r(e,t){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t(r)}function i(e,t){return r(t,(function(r){e[r]=t[r]})),e}function n(e){r(e,(function(r){t.test(r)||delete e[r]}))}e.exports=function(e,t,a,o){var s=i({},e);if(n(e),a){var u=!!o.children&&o.children.slice();a();var c=[];r(e,(function(e){c.push(e)})),n(e),o.children&&(o.children=u);for(var l=0;l{e.exports=n;var i=r(17187).EventEmitter;function n(){i.call(this)}r(35717)(n,i),n.Readable=r(79481),n.Writable=r(64229),n.Duplex=r(56753),n.Transform=r(74605),n.PassThrough=r(82725),n.finished=r(8610),n.pipeline=r(59946),n.Stream=n,n.prototype.pipe=function(e,t){var r=this;function n(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function a(){r.readable&&r.resume&&r.resume()}r.on("data",n),e.on("drain",a),e._isStdio||t&&!1===t.end||(r.on("end",s),r.on("close",u));var o=!1;function s(){o||(o=!0,e.end())}function u(){o||(o=!0,"function"==typeof e.destroy&&e.destroy())}function c(e){if(l(),0===i.listenerCount(this,"error"))throw e}function l(){r.removeListener("data",n),e.removeListener("drain",a),r.removeListener("end",s),r.removeListener("close",u),r.removeListener("error",c),e.removeListener("error",c),r.removeListener("end",l),r.removeListener("close",l),e.removeListener("close",l)}return r.on("error",c),e.on("error",c),r.on("end",l),r.on("close",l),e.on("close",l),e.emit("pipe",r),e}},8501:(e,t,r)=>{var i=r(11989),n=r(55676),a=r(47529),o=r(50584),s=r(8575),u=t;u.request=function(e,t){e="string"==typeof e?s.parse(e):a(e);var n=-1===r.g.location.protocol.search(/^https?:$/)?"http:":"",o=e.protocol||n,u=e.hostname||e.host,c=e.port,l=e.path||"/";u&&-1!==u.indexOf(":")&&(u="["+u+"]"),e.url=(u?o+"//"+u:"")+(c?":"+c:"")+l,e.method=(e.method||"GET").toUpperCase(),e.headers=e.headers||{};var h=new i(e);return t&&h.on("response",t),h},u.get=function(e,t){var r=u.request(e,t);return r.end(),r},u.ClientRequest=i,u.IncomingMessage=n.IncomingMessage,u.Agent=function(){},u.Agent.defaultMaxSockets=4,u.globalAgent=new u.Agent,u.STATUS_CODES=o,u.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]},8725:(e,t,r)=>{var i;function n(){if(void 0!==i)return i;if(r.g.XMLHttpRequest){i=new r.g.XMLHttpRequest;try{i.open("GET",r.g.XDomainRequest?"/":"https://example.com")}catch(e){i=null}}else i=null;return i}function a(e){var t=n();if(!t)return!1;try{return t.responseType=e,t.responseType===e}catch(e){}return!1}function o(e){return"function"==typeof e}t.fetch=o(r.g.fetch)&&o(r.g.ReadableStream),t.writableStream=o(r.g.WritableStream),t.abortController=o(r.g.AbortController),t.arraybuffer=t.fetch||a("arraybuffer"),t.msstream=!t.fetch&&a("ms-stream"),t.mozchunkedarraybuffer=!t.fetch&&a("moz-chunked-arraybuffer"),t.overrideMimeType=t.fetch||!!n()&&o(n().overrideMimeType),i=null},11989:(e,t,r)=>{var i=r(48764).Buffer,n=r(34155),a=r(8725),o=r(35717),s=r(55676),u=r(88473),c=s.IncomingMessage,l=s.readyStates,h=e.exports=function(e){var t,r=this;u.Writable.call(r),r._opts=e,r._body=[],r._headers={},e.auth&&r.setHeader("Authorization","Basic "+i.from(e.auth).toString("base64")),Object.keys(e.headers).forEach((function(t){r.setHeader(t,e.headers[t])}));var n=!0;if("disable-fetch"===e.mode||"requestTimeout"in e&&!a.abortController)n=!1,t=!0;else if("prefer-streaming"===e.mode)t=!1;else if("allow-wrong-content-type"===e.mode)t=!a.overrideMimeType;else{if(e.mode&&"default"!==e.mode&&"prefer-fast"!==e.mode)throw new Error("Invalid value for opts.mode");t=!0}r._mode=function(e,t){return a.fetch&&t?"fetch":a.mozchunkedarraybuffer?"moz-chunked-arraybuffer":a.msstream?"ms-stream":a.arraybuffer&&e?"arraybuffer":"text"}(t,n),r._fetchTimer=null,r._socketTimeout=null,r._socketTimer=null,r.on("finish",(function(){r._onFinish()}))};o(h,u.Writable),h.prototype.setHeader=function(e,t){var r=e.toLowerCase();-1===p.indexOf(r)&&(this._headers[r]={name:e,value:t})},h.prototype.getHeader=function(e){var t=this._headers[e.toLowerCase()];return t?t.value:null},h.prototype.removeHeader=function(e){delete this._headers[e.toLowerCase()]},h.prototype._onFinish=function(){var e=this;if(!e._destroyed){var t=e._opts;"timeout"in t&&0!==t.timeout&&e.setTimeout(t.timeout);var i=e._headers,o=null;"GET"!==t.method&&"HEAD"!==t.method&&(o=new Blob(e._body,{type:(i["content-type"]||{}).value||""}));var s=[];if(Object.keys(i).forEach((function(e){var t=i[e].name,r=i[e].value;Array.isArray(r)?r.forEach((function(e){s.push([t,e])})):s.push([t,r])})),"fetch"===e._mode){var u=null;if(a.abortController){var c=new AbortController;u=c.signal,e._fetchAbortController=c,"requestTimeout"in t&&0!==t.requestTimeout&&(e._fetchTimer=r.g.setTimeout((function(){e.emit("requestTimeout"),e._fetchAbortController&&e._fetchAbortController.abort()}),t.requestTimeout))}r.g.fetch(e._opts.url,{method:e._opts.method,headers:s,body:o||void 0,mode:"cors",credentials:t.withCredentials?"include":"same-origin",signal:u}).then((function(t){e._fetchResponse=t,e._resetTimers(!1),e._connect()}),(function(t){e._resetTimers(!0),e._destroyed||e.emit("error",t)}))}else{var h=e._xhr=new r.g.XMLHttpRequest;try{h.open(e._opts.method,e._opts.url,!0)}catch(t){return void n.nextTick((function(){e.emit("error",t)}))}"responseType"in h&&(h.responseType=e._mode),"withCredentials"in h&&(h.withCredentials=!!t.withCredentials),"text"===e._mode&&"overrideMimeType"in h&&h.overrideMimeType("text/plain; charset=x-user-defined"),"requestTimeout"in t&&(h.timeout=t.requestTimeout,h.ontimeout=function(){e.emit("requestTimeout")}),s.forEach((function(e){h.setRequestHeader(e[0],e[1])})),e._response=null,h.onreadystatechange=function(){switch(h.readyState){case l.LOADING:case l.DONE:e._onXHRProgress()}},"moz-chunked-arraybuffer"===e._mode&&(h.onprogress=function(){e._onXHRProgress()}),h.onerror=function(){e._destroyed||(e._resetTimers(!0),e.emit("error",new Error("XHR error")))};try{h.send(o)}catch(t){return void n.nextTick((function(){e.emit("error",t)}))}}}},h.prototype._onXHRProgress=function(){var e=this;e._resetTimers(!1),function(e){try{var t=e.status;return null!==t&&0!==t}catch(e){return!1}}(e._xhr)&&!e._destroyed&&(e._response||e._connect(),e._response._onXHRProgress(e._resetTimers.bind(e)))},h.prototype._connect=function(){var e=this;e._destroyed||(e._response=new c(e._xhr,e._fetchResponse,e._mode,e._resetTimers.bind(e)),e._response.on("error",(function(t){e.emit("error",t)})),e.emit("response",e._response))},h.prototype._write=function(e,t,r){this._body.push(e),r()},h.prototype._resetTimers=function(e){var t=this;r.g.clearTimeout(t._socketTimer),t._socketTimer=null,e?(r.g.clearTimeout(t._fetchTimer),t._fetchTimer=null):t._socketTimeout&&(t._socketTimer=r.g.setTimeout((function(){t.emit("timeout")}),t._socketTimeout))},h.prototype.abort=h.prototype.destroy=function(e){var t=this;t._destroyed=!0,t._resetTimers(!0),t._response&&(t._response._destroyed=!0),t._xhr?t._xhr.abort():t._fetchAbortController&&t._fetchAbortController.abort(),e&&t.emit("error",e)},h.prototype.end=function(e,t,r){"function"==typeof e&&(r=e,e=void 0),u.Writable.prototype.end.call(this,e,t,r)},h.prototype.setTimeout=function(e,t){var r=this;t&&r.once("timeout",t),r._socketTimeout=e,r._resetTimers(!1)},h.prototype.flushHeaders=function(){},h.prototype.setNoDelay=function(){},h.prototype.setSocketKeepAlive=function(){};var p=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"]},55676:(e,t,r)=>{var i=r(34155),n=r(48764).Buffer,a=r(8725),o=r(35717),s=r(88473),u=t.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},c=t.IncomingMessage=function(e,t,r,o){var u=this;if(s.Readable.call(u),u._mode=r,u.headers={},u.rawHeaders=[],u.trailers={},u.rawTrailers=[],u.on("end",(function(){i.nextTick((function(){u.emit("close")}))})),"fetch"===r){if(u._fetchResponse=t,u.url=t.url,u.statusCode=t.status,u.statusMessage=t.statusText,t.headers.forEach((function(e,t){u.headers[t.toLowerCase()]=e,u.rawHeaders.push(t,e)})),a.writableStream){var c=new WritableStream({write:function(e){return o(!1),new Promise((function(t,r){u._destroyed?r():u.push(n.from(e))?t():u._resumeFetch=t}))},close:function(){o(!0),u._destroyed||u.push(null)},abort:function(e){o(!0),u._destroyed||u.emit("error",e)}});try{return void t.body.pipeTo(c).catch((function(e){o(!0),u._destroyed||u.emit("error",e)}))}catch(e){}}var l=t.body.getReader();!function e(){l.read().then((function(t){u._destroyed||(o(t.done),t.done?u.push(null):(u.push(n.from(t.value)),e()))})).catch((function(e){o(!0),u._destroyed||u.emit("error",e)}))}()}else if(u._xhr=e,u._pos=0,u.url=e.responseURL,u.statusCode=e.status,u.statusMessage=e.statusText,e.getAllResponseHeaders().split(/\r?\n/).forEach((function(e){var t=e.match(/^([^:]+):\s*(.*)/);if(t){var r=t[1].toLowerCase();"set-cookie"===r?(void 0===u.headers[r]&&(u.headers[r]=[]),u.headers[r].push(t[2])):void 0!==u.headers[r]?u.headers[r]+=", "+t[2]:u.headers[r]=t[2],u.rawHeaders.push(t[1],t[2])}})),u._charset="x-user-defined",!a.overrideMimeType){var h=u.rawHeaders["mime-type"];if(h){var p=h.match(/;\s*charset=([^;])(;|$)/);p&&(u._charset=p[1].toLowerCase())}u._charset||(u._charset="utf-8")}};o(c,s.Readable),c.prototype._read=function(){var e=this._resumeFetch;e&&(this._resumeFetch=null,e())},c.prototype._onXHRProgress=function(e){var t=this,i=t._xhr,a=null;switch(t._mode){case"text":if((a=i.responseText).length>t._pos){var o=a.substr(t._pos);if("x-user-defined"===t._charset){for(var s=n.alloc(o.length),c=0;ct._pos&&(t.push(n.from(new Uint8Array(l.result.slice(t._pos)))),t._pos=l.result.byteLength)},l.onload=function(){e(!0),t.push(null)},l.readAsArrayBuffer(a)}t._xhr.readyState===u.DONE&&"ms-stream"!==t._mode&&(e(!0),t.push(null))}},32553:(e,t,r)=>{"use strict";var i=r(40396).Buffer,n=i.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function a(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(i.isEncoding===n||!n(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=u,this.end=c,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=l,this.end=h,t=3;break;default:return this.write=p,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=i.allocUnsafe(t)}function o(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function u(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function c(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function l(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function h(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function p(e){return e.toString(this.encoding)}function d(e){return e&&e.length?this.write(e):""}t.s=a,a.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(n>0&&(e.lastNeed=n-1),n):--i=0?(n>0&&(e.lastNeed=n-2),n):--i=0?(n>0&&(2===n?n=0:e.lastNeed=n-3),n):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var i=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,i),e.toString("utf8",t,i)},a.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},40396:(e,t,r)=>{var i=r(48764),n=i.Buffer;function a(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=i:(a(i,t),t.Buffer=o),o.prototype=Object.create(n.prototype),a(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i.SlowBuffer(e)}},18760:(e,t)=>{var r=Function.prototype.bind,i=Array.prototype.slice,n=Object.prototype.toString;function a(e){return e="[object "+e+"]",function(t){return n.call(t)===e}}t.bind=function(e,t){var n=i.call(arguments,2);return r?(n.unshift(t),r.apply(e,n)):function(){return e.apply(t,n.concat(i.call(arguments)))}},t.slice=function(e,t,r){return i.call(e,t,r)},t.toString=function(e){return n.call(e)},t.isNull=a("Null"),t.isDate=a("Date"),t.isMath=a("Math"),t.isJSON=a("JSON"),t.isError=a("Error"),t.isArray=Array.isArray||a("Array"),t.isObject=a("Object"),t.isRegExp=a("RegExp"),t.isNumber=a("Number"),t.isString=a("String"),t.isBoolean=a("Boolean"),t.isFunction=a("Function"),t.isArguments=a("Arguments"),t.isUndefined=a("Undefined"),t.isValid=function(e){return!t.isInvalid(e)},t.isInvalid=function(e){return t.isNull(e)||t.isUndefined(e)},t.isImmutable=function(e){return!t.isMutable(e)},t.isMutable=function(e){return e&&!t.isNumber(e)&&!t.isString(e)&&!t.isBoolean(e)},t.isEnumerable=function(e){return!!e&&(t.isNumber(e)?t.isInteger(e):t.isInteger(e.length)?e.length>=0:t.isEnumerableObject(e))},t.isEnumerableObject=function(e){for(var t in e)return!0;return!1},t.isEmpty=function(e){return t.isObject(e)?!t.isEnumerableObject(e):!t.isEnumerable(e)},t.isFiniteNumber=function(e){return t.isNumber(e)&&isFinite(e)},t.isInteger=function(e){return t.isFiniteNumber(e)&&Math.floor(e)===e},t.isVague=function(e){return e&&"object"==typeof e},t.isList=function(e){return t.isVague(e)&&t.isInteger(e.length)&&e.length>=0},t.isNaN=isNaN,t.nativeTypeOf=function(e){var t=e.toString(e);return t.substring(8,t.length-1)},t.typeOf=function(e){return t.isObject(e)?e.constructor.name||"Object":t.nativeTypeOf(e)},t.safeApply=function(e,r,i){return t.isFunction(e)?e.apply(i||this,r):void 0},t.enumerate=function(e,r,i,n){if(!e)return e;if(i=i||this,!n&&t.isFunction(e.forEach))return e.forEach(r,i);var a=0,o=e.length;if(t.isString(e))for(;at||t>=i}))):void 0}},47857:(e,t,r)=>{"use strict";var i,n=r(85456),a=r(8575).parse,o=r(89539),s=r(10752),u=r(82224).y,c=r(25761).m,l=r(88971).U,h=r(456);try{i=r(3689)}catch(e){console.warn("tough-cookie: can't load punycode; won't use punycode for domain normalization")}var p=/^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/,d=/[\x00-\x1F]/,f=["\n","\r","\0"],m=/[\x20-\x3A\x3C-\x7E]+/,g=/[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/,v={jan:0,feb:1,mar:2,apr:3,may:4,jun:5,jul:6,aug:7,sep:8,oct:9,nov:10,dec:11},y=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],_=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],b=2147483647e3;function w(e,t,r,i){for(var n=0;n=58)break;n++}return nr?null:i||n==e.length?parseInt(e.substr(0,n),10):null}function E(e){var t=e.split(":"),r=[0,0,0];if(3!==t.length)return null;for(var i=0;i<3;i++){var n=2==i,a=w(t[i],1,2,n);if(null===a)return null;r[i]=a}return r}function k(e){e=String(e).substr(0,3).toLowerCase();var t=v[e];return t>=0?t:null}function S(e){if(e){var t=e.split(g);if(t){for(var r=null,i=null,n=null,a=null,o=null,s=null,u=0;u=70&&s<=99?s+=1900:s>=0&&s<=69&&(s+=2e3)):o=c:a=c)}if(!(null===a||null===o||null===s||null===n||a<1||a>31||s<1601||r>23||i>59||n>59))return new Date(Date.UTC(s,o,a,r,i,n))}}}function x(e){var t=e.getUTCDate();t=t>=10?t:"0"+t;var r=e.getUTCHours();r=r>=10?r:"0"+r;var i=e.getUTCMinutes();i=i>=10?i:"0"+i;var n=e.getUTCSeconds();return n=n>=10?n:"0"+n,_[e.getUTCDay()]+", "+t+" "+y[e.getUTCMonth()]+" "+e.getUTCFullYear()+" "+r+":"+i+":"+n+" GMT"}function j(e){return null==e?null:(e=e.trim().replace(/^\./,""),i&&/[^\u0001-\u007f]/.test(e)&&(e=i.toASCII(e)),e.toLowerCase())}function N(e,t,r){if(null==e||null==t)return null;if(!1!==r&&(e=j(e),t=j(t)),e==t)return!0;if(n.isIP(e))return!1;var i=e.indexOf(t);return!(i<=0)&&e.length===t.length+i&&"."===e.substr(i-1,1)}function M(e){if(!e||"/"!==e.substr(0,1))return"/";if("/"===e)return e;var t=e.lastIndexOf("/");return 0===t?"/":e.slice(0,t)}function I(e,t){t&&"object"==typeof t||(t={});var r=(e=e.trim()).indexOf(";"),i=function(e,t){var r,i,n=(e=function(e){for(var t=0;t1;){var r=e.lastIndexOf("/");if(0===r)break;e=e.substr(0,r),t.push(e)}return t.push("/"),t},t.canonicalDomain=j},25761:(e,t,r)=>{"use strict";var i=r(82224).y,n=r(87324).permuteDomain,a=r(88971).U,o=r(89539);function s(){i.call(this),this.idx={}}o.inherits(s,i),t.m=s,s.prototype.idx=null,s.prototype.synchronous=!0,s.prototype.inspect=function(){return"{ idx: "+o.inspect(this.idx,!1,2)+" }"},o.inspect.custom&&(s.prototype[o.inspect.custom]=s.prototype.inspect),s.prototype.findCookie=function(e,t,r,i){return this.idx[e]&&this.idx[e][t]?i(null,this.idx[e][t][r]||null):i(null,void 0)},s.prototype.findCookies=function(e,t,r){var i,o=[];if(!e)return r(null,[]);i=t?function(e){Object.keys(e).forEach((function(r){if(a(t,r)){var i=e[r];for(var n in i)o.push(i[n])}}))}:function(e){for(var t in e){var r=e[t];for(var i in r)o.push(r[i])}};var s=n(e)||[e],u=this.idx;s.forEach((function(e){var t=u[e];t&&i(t)})),r(null,o)},s.prototype.putCookie=function(e,t){this.idx[e.domain]||(this.idx[e.domain]={}),this.idx[e.domain][e.path]||(this.idx[e.domain][e.path]={}),this.idx[e.domain][e.path][e.key]=e,t(null)},s.prototype.updateCookie=function(e,t,r){this.putCookie(t,r)},s.prototype.removeCookie=function(e,t,r,i){this.idx[e]&&this.idx[e][t]&&this.idx[e][t][r]&&delete this.idx[e][t][r],i(null)},s.prototype.removeCookies=function(e,t,r){return this.idx[e]&&(t?delete this.idx[e][t]:delete this.idx[e]),r(null)},s.prototype.removeAllCookies=function(e){return this.idx={},e(null)},s.prototype.getAllCookies=function(e){var t=[],r=this.idx;Object.keys(r).forEach((function(e){Object.keys(r[e]).forEach((function(i){Object.keys(r[e][i]).forEach((function(n){null!==n&&t.push(r[e][i][n])}))}))})),t.sort((function(e,t){return(e.creationIndex||0)-(t.creationIndex||0)})),e(null,t)}},88971:(e,t)=>{"use strict";t.U=function(e,t){if(t===e)return!0;if(0===e.indexOf(t)){if("/"===t.substr(-1))return!0;if("/"===e.substr(t.length,1))return!0}return!1}},87324:(e,t,r)=>{"use strict";var i=r(10752);t.permuteDomain=function(e){var t=i.getPublicSuffix(e);if(!t)return null;if(t==e)return[e];for(var r=e.slice(0,-(t.length+1)).split(".").reverse(),n=t,a=[n];r.length;)n=r.shift()+"."+n,a.push(n);return a}},10752:(e,t,r)=>{"use strict";var i=r(16244);t.getPublicSuffix=function(e){return i.get(e)}},82224:(e,t)=>{"use strict";function r(){}t.y=r,r.prototype.synchronous=!1,r.prototype.findCookie=function(e,t,r,i){throw new Error("findCookie is not implemented")},r.prototype.findCookies=function(e,t,r){throw new Error("findCookies is not implemented")},r.prototype.putCookie=function(e,t){throw new Error("putCookie is not implemented")},r.prototype.updateCookie=function(e,t,r){throw new Error("updateCookie is not implemented")},r.prototype.removeCookie=function(e,t,r,i){throw new Error("removeCookie is not implemented")},r.prototype.removeCookies=function(e,t,r){throw new Error("removeCookies is not implemented")},r.prototype.removeAllCookies=function(e){throw new Error("removeAllCookies is not implemented")},r.prototype.getAllCookies=function(e){throw new Error("getAllCookies is not implemented (therefore jar cannot be serialized)")}},456:e=>{e.exports="2.5.0"},37437:(e,t,r)=>{"use strict";var i,n=r(34155),a=(r(85456),r(18760)),o=r(8501),s=r(79267),u=r(17187),c=r(69282),l=r(89539),h=r(89509).Buffer;function p(e){var t=this;t.options=e||{},t.proxyOptions=t.options.proxy||{},t.maxSockets=t.options.maxSockets||o.Agent.defaultMaxSockets,t.requests=[],t.sockets=[],t.on("free",(function(e,r,i){for(var n=0,a=t.requests.length;n=this.maxSockets?r.requests.push({host:t.host,port:t.port,request:e}):r.createConnection({host:t.host,port:t.port,request:e})},p.prototype.createConnection=function(e){var t=this;t.createSocket(e,(function(r){function i(){t.emit("free",r,e.host,e.port)}function n(e){t.removeSocket(r),r.removeListener("free",i),r.removeListener("close",n),r.removeListener("agentRemove",n)}r.on("free",i),r.on("close",n),r.on("agentRemove",n),e.request.onSocket(r)}))},p.prototype.createSocket=function(e,t){var r=this,a={};r.sockets.push(a);var o=f({},r.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1});o.proxyAuth&&(o.headers=o.headers||{},o.headers["Proxy-Authorization"]="Basic "+h.from(o.proxyAuth).toString("base64")),i("making CONNECT request");var s=r.request(o);function u(n,o,u){if(s.removeAllListeners(),o.removeAllListeners(),200===n.statusCode)c.equal(u.length,0),i("tunneling connection has established"),r.sockets[r.sockets.indexOf(a)]=o,t(o);else{i("tunneling socket could not be established, statusCode=%d",n.statusCode);var l=new Error("tunneling socket could not be established, statusCode="+n.statusCode);l.code="ECONNRESET",e.request.emit("error",l),r.removeSocket(a)}}s.useChunkedEncodingByDefault=!1,s.once("response",(function(e){e.upgrade=!0})),s.once("upgrade",(function(e,t,r){n.nextTick((function(){u(e,t,r)}))})),s.once("connect",u),s.once("error",(function(t){s.removeAllListeners(),i("tunneling socket could not be established, cause=%s\n",t.message,t.stack);var n=new Error("tunneling socket could not be established, cause="+t.message);n.code="ECONNRESET",e.request.emit("error",n),r.removeSocket(a)})),s.end()},p.prototype.removeSocket=function(e){var t=this.sockets.indexOf(e);if(-1!==t){this.sockets.splice(t,1);var r=this.requests.shift();r&&this.createConnection(r)}},i=n.env.NODE_DEBUG&&/\btunnel\b/.test(n.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments);"string"==typeof e[0]?e[0]="TUNNEL: "+e[0]:e.unshift("TUNNEL:"),console.error.apply(console,e)}:function(){},t.debug=i},50780:(e,t,r)=>{!function(e){"use strict";var t=function(e){var t,r=new Float64Array(16);if(e)for(t=0;t>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r,e[t+4]=i>>24&255,e[t+5]=i>>16&255,e[t+6]=i>>8&255,e[t+7]=255&i}function m(e,t,r,i,n){var a,o=0;for(a=0;a>>8)-1}function g(e,t,r,i){return m(e,t,r,i,16)}function v(e,t,r,i){return m(e,t,r,i,32)}function y(e,t,r,i){!function(e,t,r,i){for(var n,a=255&i[0]|(255&i[1])<<8|(255&i[2])<<16|(255&i[3])<<24,o=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,c=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&i[4]|(255&i[5])<<8|(255&i[6])<<16|(255&i[7])<<24,h=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,p=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,f=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,m=255&i[8]|(255&i[9])<<8|(255&i[10])<<16|(255&i[11])<<24,g=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,v=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,y=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,_=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,b=255&i[12]|(255&i[13])<<8|(255&i[14])<<16|(255&i[15])<<24,w=a,E=o,k=s,S=u,x=c,j=l,N=h,M=p,I=d,A=f,T=m,R=g,P=v,O=y,B=_,C=b,z=0;z<20;z+=2)w^=(n=(P^=(n=(I^=(n=(x^=(n=w+P|0)<<7|n>>>25)+w|0)<<9|n>>>23)+x|0)<<13|n>>>19)+I|0)<<18|n>>>14,j^=(n=(E^=(n=(O^=(n=(A^=(n=j+E|0)<<7|n>>>25)+j|0)<<9|n>>>23)+A|0)<<13|n>>>19)+O|0)<<18|n>>>14,T^=(n=(N^=(n=(k^=(n=(B^=(n=T+N|0)<<7|n>>>25)+T|0)<<9|n>>>23)+B|0)<<13|n>>>19)+k|0)<<18|n>>>14,C^=(n=(R^=(n=(M^=(n=(S^=(n=C+R|0)<<7|n>>>25)+C|0)<<9|n>>>23)+S|0)<<13|n>>>19)+M|0)<<18|n>>>14,w^=(n=(S^=(n=(k^=(n=(E^=(n=w+S|0)<<7|n>>>25)+w|0)<<9|n>>>23)+E|0)<<13|n>>>19)+k|0)<<18|n>>>14,j^=(n=(x^=(n=(M^=(n=(N^=(n=j+x|0)<<7|n>>>25)+j|0)<<9|n>>>23)+N|0)<<13|n>>>19)+M|0)<<18|n>>>14,T^=(n=(A^=(n=(I^=(n=(R^=(n=T+A|0)<<7|n>>>25)+T|0)<<9|n>>>23)+R|0)<<13|n>>>19)+I|0)<<18|n>>>14,C^=(n=(B^=(n=(O^=(n=(P^=(n=C+B|0)<<7|n>>>25)+C|0)<<9|n>>>23)+P|0)<<13|n>>>19)+O|0)<<18|n>>>14;w=w+a|0,E=E+o|0,k=k+s|0,S=S+u|0,x=x+c|0,j=j+l|0,N=N+h|0,M=M+p|0,I=I+d|0,A=A+f|0,T=T+m|0,R=R+g|0,P=P+v|0,O=O+y|0,B=B+_|0,C=C+b|0,e[0]=w>>>0&255,e[1]=w>>>8&255,e[2]=w>>>16&255,e[3]=w>>>24&255,e[4]=E>>>0&255,e[5]=E>>>8&255,e[6]=E>>>16&255,e[7]=E>>>24&255,e[8]=k>>>0&255,e[9]=k>>>8&255,e[10]=k>>>16&255,e[11]=k>>>24&255,e[12]=S>>>0&255,e[13]=S>>>8&255,e[14]=S>>>16&255,e[15]=S>>>24&255,e[16]=x>>>0&255,e[17]=x>>>8&255,e[18]=x>>>16&255,e[19]=x>>>24&255,e[20]=j>>>0&255,e[21]=j>>>8&255,e[22]=j>>>16&255,e[23]=j>>>24&255,e[24]=N>>>0&255,e[25]=N>>>8&255,e[26]=N>>>16&255,e[27]=N>>>24&255,e[28]=M>>>0&255,e[29]=M>>>8&255,e[30]=M>>>16&255,e[31]=M>>>24&255,e[32]=I>>>0&255,e[33]=I>>>8&255,e[34]=I>>>16&255,e[35]=I>>>24&255,e[36]=A>>>0&255,e[37]=A>>>8&255,e[38]=A>>>16&255,e[39]=A>>>24&255,e[40]=T>>>0&255,e[41]=T>>>8&255,e[42]=T>>>16&255,e[43]=T>>>24&255,e[44]=R>>>0&255,e[45]=R>>>8&255,e[46]=R>>>16&255,e[47]=R>>>24&255,e[48]=P>>>0&255,e[49]=P>>>8&255,e[50]=P>>>16&255,e[51]=P>>>24&255,e[52]=O>>>0&255,e[53]=O>>>8&255,e[54]=O>>>16&255,e[55]=O>>>24&255,e[56]=B>>>0&255,e[57]=B>>>8&255,e[58]=B>>>16&255,e[59]=B>>>24&255,e[60]=C>>>0&255,e[61]=C>>>8&255,e[62]=C>>>16&255,e[63]=C>>>24&255}(e,t,r,i)}function _(e,t,r,i){!function(e,t,r,i){for(var n,a=255&i[0]|(255&i[1])<<8|(255&i[2])<<16|(255&i[3])<<24,o=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,c=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&i[4]|(255&i[5])<<8|(255&i[6])<<16|(255&i[7])<<24,h=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,p=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,f=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,m=255&i[8]|(255&i[9])<<8|(255&i[10])<<16|(255&i[11])<<24,g=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,v=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,y=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,_=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,b=255&i[12]|(255&i[13])<<8|(255&i[14])<<16|(255&i[15])<<24,w=0;w<20;w+=2)a^=(n=(v^=(n=(d^=(n=(c^=(n=a+v|0)<<7|n>>>25)+a|0)<<9|n>>>23)+c|0)<<13|n>>>19)+d|0)<<18|n>>>14,l^=(n=(o^=(n=(y^=(n=(f^=(n=l+o|0)<<7|n>>>25)+l|0)<<9|n>>>23)+f|0)<<13|n>>>19)+y|0)<<18|n>>>14,m^=(n=(h^=(n=(s^=(n=(_^=(n=m+h|0)<<7|n>>>25)+m|0)<<9|n>>>23)+_|0)<<13|n>>>19)+s|0)<<18|n>>>14,b^=(n=(g^=(n=(p^=(n=(u^=(n=b+g|0)<<7|n>>>25)+b|0)<<9|n>>>23)+u|0)<<13|n>>>19)+p|0)<<18|n>>>14,a^=(n=(u^=(n=(s^=(n=(o^=(n=a+u|0)<<7|n>>>25)+a|0)<<9|n>>>23)+o|0)<<13|n>>>19)+s|0)<<18|n>>>14,l^=(n=(c^=(n=(p^=(n=(h^=(n=l+c|0)<<7|n>>>25)+l|0)<<9|n>>>23)+h|0)<<13|n>>>19)+p|0)<<18|n>>>14,m^=(n=(f^=(n=(d^=(n=(g^=(n=m+f|0)<<7|n>>>25)+m|0)<<9|n>>>23)+g|0)<<13|n>>>19)+d|0)<<18|n>>>14,b^=(n=(_^=(n=(y^=(n=(v^=(n=b+_|0)<<7|n>>>25)+b|0)<<9|n>>>23)+v|0)<<13|n>>>19)+y|0)<<18|n>>>14;e[0]=a>>>0&255,e[1]=a>>>8&255,e[2]=a>>>16&255,e[3]=a>>>24&255,e[4]=l>>>0&255,e[5]=l>>>8&255,e[6]=l>>>16&255,e[7]=l>>>24&255,e[8]=m>>>0&255,e[9]=m>>>8&255,e[10]=m>>>16&255,e[11]=m>>>24&255,e[12]=b>>>0&255,e[13]=b>>>8&255,e[14]=b>>>16&255,e[15]=b>>>24&255,e[16]=h>>>0&255,e[17]=h>>>8&255,e[18]=h>>>16&255,e[19]=h>>>24&255,e[20]=p>>>0&255,e[21]=p>>>8&255,e[22]=p>>>16&255,e[23]=p>>>24&255,e[24]=d>>>0&255,e[25]=d>>>8&255,e[26]=d>>>16&255,e[27]=d>>>24&255,e[28]=f>>>0&255,e[29]=f>>>8&255,e[30]=f>>>16&255,e[31]=f>>>24&255}(e,t,r,i)}var b=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function w(e,t,r,i,n,a,o){var s,u,c=new Uint8Array(16),l=new Uint8Array(64);for(u=0;u<16;u++)c[u]=0;for(u=0;u<8;u++)c[u]=a[u];for(;n>=64;){for(y(l,c,o,b),u=0;u<64;u++)e[t+u]=r[i+u]^l[u];for(s=1,u=8;u<16;u++)s=s+(255&c[u])|0,c[u]=255&s,s>>>=8;n-=64,t+=64,i+=64}if(n>0)for(y(l,c,o,b),u=0;u=64;){for(y(u,s,n,b),o=0;o<64;o++)e[t+o]=u[o];for(a=1,o=8;o<16;o++)a=a+(255&s[o])|0,s[o]=255&a,a>>>=8;r-=64,t+=64}if(r>0)for(y(u,s,n,b),o=0;o>>13|r<<3),i=255&e[4]|(255&e[5])<<8,this.r[2]=7939&(r>>>10|i<<6),n=255&e[6]|(255&e[7])<<8,this.r[3]=8191&(i>>>7|n<<9),a=255&e[8]|(255&e[9])<<8,this.r[4]=255&(n>>>4|a<<12),this.r[5]=a>>>1&8190,o=255&e[10]|(255&e[11])<<8,this.r[6]=8191&(a>>>14|o<<2),s=255&e[12]|(255&e[13])<<8,this.r[7]=8065&(o>>>11|s<<5),u=255&e[14]|(255&e[15])<<8,this.r[8]=8191&(s>>>8|u<<8),this.r[9]=u>>>5&127,this.pad[0]=255&e[16]|(255&e[17])<<8,this.pad[1]=255&e[18]|(255&e[19])<<8,this.pad[2]=255&e[20]|(255&e[21])<<8,this.pad[3]=255&e[22]|(255&e[23])<<8,this.pad[4]=255&e[24]|(255&e[25])<<8,this.pad[5]=255&e[26]|(255&e[27])<<8,this.pad[6]=255&e[28]|(255&e[29])<<8,this.pad[7]=255&e[30]|(255&e[31])<<8};function j(e,t,r,i,n,a){var o=new x(a);return o.update(r,i,n),o.finish(e,t),0}function N(e,t,r,i,n,a){var o=new Uint8Array(16);return j(o,0,r,i,n,a),g(e,t,o,0)}function M(e,t,r,i,n){var a;if(r<32)return-1;for(S(e,0,t,0,r,i,n),j(e,16,e,32,r-32,e),a=0;a<16;a++)e[a]=0;return 0}function I(e,t,r,i,n){var a,o=new Uint8Array(32);if(r<32)return-1;if(k(o,0,32,i,n),0!==N(t,16,t,32,r-32,o))return-1;for(S(e,0,t,0,r,i,n),a=0;a<32;a++)e[a]=0;return 0}function A(e,t){var r;for(r=0;r<16;r++)e[r]=0|t[r]}function T(e){var t,r,i=1;for(t=0;t<16;t++)r=e[t]+i+65535,i=Math.floor(r/65536),e[t]=r-65536*i;e[0]+=i-1+37*(i-1)}function R(e,t,r){for(var i,n=~(r-1),a=0;a<16;a++)i=n&(e[a]^t[a]),e[a]^=i,t[a]^=i}function P(e,r){var i,n,a,o=t(),s=t();for(i=0;i<16;i++)s[i]=r[i];for(T(s),T(s),T(s),n=0;n<2;n++){for(o[0]=s[0]-65517,i=1;i<15;i++)o[i]=s[i]-65535-(o[i-1]>>16&1),o[i-1]&=65535;o[15]=s[15]-32767-(o[14]>>16&1),a=o[15]>>16&1,o[14]&=65535,R(s,o,1-a)}for(i=0;i<16;i++)e[2*i]=255&s[i],e[2*i+1]=s[i]>>8}function O(e,t){var r=new Uint8Array(32),i=new Uint8Array(32);return P(r,e),P(i,t),v(r,0,i,0)}function B(e){var t=new Uint8Array(32);return P(t,e),1&t[0]}function C(e,t){var r;for(r=0;r<16;r++)e[r]=t[2*r]+(t[2*r+1]<<8);e[15]&=32767}function z(e,t,r){for(var i=0;i<16;i++)e[i]=t[i]+r[i]}function F(e,t,r){for(var i=0;i<16;i++)e[i]=t[i]-r[i]}function D(e,t,r){var i,n,a=0,o=0,s=0,u=0,c=0,l=0,h=0,p=0,d=0,f=0,m=0,g=0,v=0,y=0,_=0,b=0,w=0,E=0,k=0,S=0,x=0,j=0,N=0,M=0,I=0,A=0,T=0,R=0,P=0,O=0,B=0,C=r[0],z=r[1],F=r[2],D=r[3],q=r[4],L=r[5],U=r[6],H=r[7],K=r[8],W=r[9],Z=r[10],J=r[11],V=r[12],$=r[13],G=r[14],Q=r[15];a+=(i=t[0])*C,o+=i*z,s+=i*F,u+=i*D,c+=i*q,l+=i*L,h+=i*U,p+=i*H,d+=i*K,f+=i*W,m+=i*Z,g+=i*J,v+=i*V,y+=i*$,_+=i*G,b+=i*Q,o+=(i=t[1])*C,s+=i*z,u+=i*F,c+=i*D,l+=i*q,h+=i*L,p+=i*U,d+=i*H,f+=i*K,m+=i*W,g+=i*Z,v+=i*J,y+=i*V,_+=i*$,b+=i*G,w+=i*Q,s+=(i=t[2])*C,u+=i*z,c+=i*F,l+=i*D,h+=i*q,p+=i*L,d+=i*U,f+=i*H,m+=i*K,g+=i*W,v+=i*Z,y+=i*J,_+=i*V,b+=i*$,w+=i*G,E+=i*Q,u+=(i=t[3])*C,c+=i*z,l+=i*F,h+=i*D,p+=i*q,d+=i*L,f+=i*U,m+=i*H,g+=i*K,v+=i*W,y+=i*Z,_+=i*J,b+=i*V,w+=i*$,E+=i*G,k+=i*Q,c+=(i=t[4])*C,l+=i*z,h+=i*F,p+=i*D,d+=i*q,f+=i*L,m+=i*U,g+=i*H,v+=i*K,y+=i*W,_+=i*Z,b+=i*J,w+=i*V,E+=i*$,k+=i*G,S+=i*Q,l+=(i=t[5])*C,h+=i*z,p+=i*F,d+=i*D,f+=i*q,m+=i*L,g+=i*U,v+=i*H,y+=i*K,_+=i*W,b+=i*Z,w+=i*J,E+=i*V,k+=i*$,S+=i*G,x+=i*Q,h+=(i=t[6])*C,p+=i*z,d+=i*F,f+=i*D,m+=i*q,g+=i*L,v+=i*U,y+=i*H,_+=i*K,b+=i*W,w+=i*Z,E+=i*J,k+=i*V,S+=i*$,x+=i*G,j+=i*Q,p+=(i=t[7])*C,d+=i*z,f+=i*F,m+=i*D,g+=i*q,v+=i*L,y+=i*U,_+=i*H,b+=i*K,w+=i*W,E+=i*Z,k+=i*J,S+=i*V,x+=i*$,j+=i*G,N+=i*Q,d+=(i=t[8])*C,f+=i*z,m+=i*F,g+=i*D,v+=i*q,y+=i*L,_+=i*U,b+=i*H,w+=i*K,E+=i*W,k+=i*Z,S+=i*J,x+=i*V,j+=i*$,N+=i*G,M+=i*Q,f+=(i=t[9])*C,m+=i*z,g+=i*F,v+=i*D,y+=i*q,_+=i*L,b+=i*U,w+=i*H,E+=i*K,k+=i*W,S+=i*Z,x+=i*J,j+=i*V,N+=i*$,M+=i*G,I+=i*Q,m+=(i=t[10])*C,g+=i*z,v+=i*F,y+=i*D,_+=i*q,b+=i*L,w+=i*U,E+=i*H,k+=i*K,S+=i*W,x+=i*Z,j+=i*J,N+=i*V,M+=i*$,I+=i*G,A+=i*Q,g+=(i=t[11])*C,v+=i*z,y+=i*F,_+=i*D,b+=i*q,w+=i*L,E+=i*U,k+=i*H,S+=i*K,x+=i*W,j+=i*Z,N+=i*J,M+=i*V,I+=i*$,A+=i*G,T+=i*Q,v+=(i=t[12])*C,y+=i*z,_+=i*F,b+=i*D,w+=i*q,E+=i*L,k+=i*U,S+=i*H,x+=i*K,j+=i*W,N+=i*Z,M+=i*J,I+=i*V,A+=i*$,T+=i*G,R+=i*Q,y+=(i=t[13])*C,_+=i*z,b+=i*F,w+=i*D,E+=i*q,k+=i*L,S+=i*U,x+=i*H,j+=i*K,N+=i*W,M+=i*Z,I+=i*J,A+=i*V,T+=i*$,R+=i*G,P+=i*Q,_+=(i=t[14])*C,b+=i*z,w+=i*F,E+=i*D,k+=i*q,S+=i*L,x+=i*U,j+=i*H,N+=i*K,M+=i*W,I+=i*Z,A+=i*J,T+=i*V,R+=i*$,P+=i*G,O+=i*Q,b+=(i=t[15])*C,o+=38*(E+=i*F),s+=38*(k+=i*D),u+=38*(S+=i*q),c+=38*(x+=i*L),l+=38*(j+=i*U),h+=38*(N+=i*H),p+=38*(M+=i*K),d+=38*(I+=i*W),f+=38*(A+=i*Z),m+=38*(T+=i*J),g+=38*(R+=i*V),v+=38*(P+=i*$),y+=38*(O+=i*G),_+=38*(B+=i*Q),a=(i=(a+=38*(w+=i*z))+(n=1)+65535)-65536*(n=Math.floor(i/65536)),o=(i=o+n+65535)-65536*(n=Math.floor(i/65536)),s=(i=s+n+65535)-65536*(n=Math.floor(i/65536)),u=(i=u+n+65535)-65536*(n=Math.floor(i/65536)),c=(i=c+n+65535)-65536*(n=Math.floor(i/65536)),l=(i=l+n+65535)-65536*(n=Math.floor(i/65536)),h=(i=h+n+65535)-65536*(n=Math.floor(i/65536)),p=(i=p+n+65535)-65536*(n=Math.floor(i/65536)),d=(i=d+n+65535)-65536*(n=Math.floor(i/65536)),f=(i=f+n+65535)-65536*(n=Math.floor(i/65536)),m=(i=m+n+65535)-65536*(n=Math.floor(i/65536)),g=(i=g+n+65535)-65536*(n=Math.floor(i/65536)),v=(i=v+n+65535)-65536*(n=Math.floor(i/65536)),y=(i=y+n+65535)-65536*(n=Math.floor(i/65536)),_=(i=_+n+65535)-65536*(n=Math.floor(i/65536)),b=(i=b+n+65535)-65536*(n=Math.floor(i/65536)),a=(i=(a+=n-1+37*(n-1))+(n=1)+65535)-65536*(n=Math.floor(i/65536)),o=(i=o+n+65535)-65536*(n=Math.floor(i/65536)),s=(i=s+n+65535)-65536*(n=Math.floor(i/65536)),u=(i=u+n+65535)-65536*(n=Math.floor(i/65536)),c=(i=c+n+65535)-65536*(n=Math.floor(i/65536)),l=(i=l+n+65535)-65536*(n=Math.floor(i/65536)),h=(i=h+n+65535)-65536*(n=Math.floor(i/65536)),p=(i=p+n+65535)-65536*(n=Math.floor(i/65536)),d=(i=d+n+65535)-65536*(n=Math.floor(i/65536)),f=(i=f+n+65535)-65536*(n=Math.floor(i/65536)),m=(i=m+n+65535)-65536*(n=Math.floor(i/65536)),g=(i=g+n+65535)-65536*(n=Math.floor(i/65536)),v=(i=v+n+65535)-65536*(n=Math.floor(i/65536)),y=(i=y+n+65535)-65536*(n=Math.floor(i/65536)),_=(i=_+n+65535)-65536*(n=Math.floor(i/65536)),b=(i=b+n+65535)-65536*(n=Math.floor(i/65536)),a+=n-1+37*(n-1),e[0]=a,e[1]=o,e[2]=s,e[3]=u,e[4]=c,e[5]=l,e[6]=h,e[7]=p,e[8]=d,e[9]=f,e[10]=m,e[11]=g,e[12]=v,e[13]=y,e[14]=_,e[15]=b}function q(e,t){D(e,t,t)}function L(e,r){var i,n=t();for(i=0;i<16;i++)n[i]=r[i];for(i=253;i>=0;i--)q(n,n),2!==i&&4!==i&&D(n,n,r);for(i=0;i<16;i++)e[i]=n[i]}function U(e,r,i){var n,a,o=new Uint8Array(32),s=new Float64Array(80),c=t(),l=t(),h=t(),p=t(),d=t(),f=t();for(a=0;a<31;a++)o[a]=r[a];for(o[31]=127&r[31]|64,o[0]&=248,C(s,i),a=0;a<16;a++)l[a]=s[a],p[a]=c[a]=h[a]=0;for(c[0]=p[0]=1,a=254;a>=0;--a)R(c,l,n=o[a>>>3]>>>(7&a)&1),R(h,p,n),z(d,c,h),F(c,c,h),z(h,l,p),F(l,l,p),q(p,d),q(f,c),D(c,h,c),D(h,l,d),z(d,c,h),F(c,c,h),q(l,c),F(h,p,f),D(c,h,u),z(c,c,p),D(h,h,c),D(c,p,f),D(p,l,s),q(l,d),R(c,l,n),R(h,p,n);for(a=0;a<16;a++)s[a+16]=c[a],s[a+32]=h[a],s[a+48]=l[a],s[a+64]=p[a];var m=s.subarray(32),g=s.subarray(16);return L(m,m),D(g,g,m),P(e,g),0}function H(e,t){return U(e,t,a)}function K(e,t){return i(t,32),H(e,t)}function W(e,t,r){var i=new Uint8Array(32);return U(i,r,t),_(e,n,i,b)}x.prototype.blocks=function(e,t,r){for(var i,n,a,o,s,u,c,l,h,p,d,f,m,g,v,y,_,b,w,E=this.fin?0:2048,k=this.h[0],S=this.h[1],x=this.h[2],j=this.h[3],N=this.h[4],M=this.h[5],I=this.h[6],A=this.h[7],T=this.h[8],R=this.h[9],P=this.r[0],O=this.r[1],B=this.r[2],C=this.r[3],z=this.r[4],F=this.r[5],D=this.r[6],q=this.r[7],L=this.r[8],U=this.r[9];r>=16;)p=h=0,p+=(k+=8191&(i=255&e[t+0]|(255&e[t+1])<<8))*P,p+=(S+=8191&(i>>>13|(n=255&e[t+2]|(255&e[t+3])<<8)<<3))*(5*U),p+=(x+=8191&(n>>>10|(a=255&e[t+4]|(255&e[t+5])<<8)<<6))*(5*L),p+=(j+=8191&(a>>>7|(o=255&e[t+6]|(255&e[t+7])<<8)<<9))*(5*q),h=(p+=(N+=8191&(o>>>4|(s=255&e[t+8]|(255&e[t+9])<<8)<<12))*(5*D))>>>13,p&=8191,p+=(M+=s>>>1&8191)*(5*F),p+=(I+=8191&(s>>>14|(u=255&e[t+10]|(255&e[t+11])<<8)<<2))*(5*z),p+=(A+=8191&(u>>>11|(c=255&e[t+12]|(255&e[t+13])<<8)<<5))*(5*C),p+=(T+=8191&(c>>>8|(l=255&e[t+14]|(255&e[t+15])<<8)<<8))*(5*B),d=h+=(p+=(R+=l>>>5|E)*(5*O))>>>13,d+=k*O,d+=S*P,d+=x*(5*U),d+=j*(5*L),h=(d+=N*(5*q))>>>13,d&=8191,d+=M*(5*D),d+=I*(5*F),d+=A*(5*z),d+=T*(5*C),h+=(d+=R*(5*B))>>>13,d&=8191,f=h,f+=k*B,f+=S*O,f+=x*P,f+=j*(5*U),h=(f+=N*(5*L))>>>13,f&=8191,f+=M*(5*q),f+=I*(5*D),f+=A*(5*F),f+=T*(5*z),m=h+=(f+=R*(5*C))>>>13,m+=k*C,m+=S*B,m+=x*O,m+=j*P,h=(m+=N*(5*U))>>>13,m&=8191,m+=M*(5*L),m+=I*(5*q),m+=A*(5*D),m+=T*(5*F),g=h+=(m+=R*(5*z))>>>13,g+=k*z,g+=S*C,g+=x*B,g+=j*O,h=(g+=N*P)>>>13,g&=8191,g+=M*(5*U),g+=I*(5*L),g+=A*(5*q),g+=T*(5*D),v=h+=(g+=R*(5*F))>>>13,v+=k*F,v+=S*z,v+=x*C,v+=j*B,h=(v+=N*O)>>>13,v&=8191,v+=M*P,v+=I*(5*U),v+=A*(5*L),v+=T*(5*q),y=h+=(v+=R*(5*D))>>>13,y+=k*D,y+=S*F,y+=x*z,y+=j*C,h=(y+=N*B)>>>13,y&=8191,y+=M*O,y+=I*P,y+=A*(5*U),y+=T*(5*L),_=h+=(y+=R*(5*q))>>>13,_+=k*q,_+=S*D,_+=x*F,_+=j*z,h=(_+=N*C)>>>13,_&=8191,_+=M*B,_+=I*O,_+=A*P,_+=T*(5*U),b=h+=(_+=R*(5*L))>>>13,b+=k*L,b+=S*q,b+=x*D,b+=j*F,h=(b+=N*z)>>>13,b&=8191,b+=M*C,b+=I*B,b+=A*O,b+=T*P,w=h+=(b+=R*(5*U))>>>13,w+=k*U,w+=S*L,w+=x*q,w+=j*D,h=(w+=N*F)>>>13,w&=8191,w+=M*z,w+=I*C,w+=A*B,w+=T*O,k=p=8191&(h=(h=((h+=(w+=R*P)>>>13)<<2)+h|0)+(p&=8191)|0),S=d+=h>>>=13,x=f&=8191,j=m&=8191,N=g&=8191,M=v&=8191,I=y&=8191,A=_&=8191,T=b&=8191,R=w&=8191,t+=16,r-=16;this.h[0]=k,this.h[1]=S,this.h[2]=x,this.h[3]=j,this.h[4]=N,this.h[5]=M,this.h[6]=I,this.h[7]=A,this.h[8]=T,this.h[9]=R},x.prototype.finish=function(e,t){var r,i,n,a,o=new Uint16Array(10);if(this.leftover){for(a=this.leftover,this.buffer[a++]=1;a<16;a++)this.buffer[a]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(r=this.h[1]>>>13,this.h[1]&=8191,a=2;a<10;a++)this.h[a]+=r,r=this.h[a]>>>13,this.h[a]&=8191;for(this.h[0]+=5*r,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,o[0]=this.h[0]+5,r=o[0]>>>13,o[0]&=8191,a=1;a<10;a++)o[a]=this.h[a]+r,r=o[a]>>>13,o[a]&=8191;for(o[9]-=8192,i=(1^r)-1,a=0;a<10;a++)o[a]&=i;for(i=~i,a=0;a<10;a++)this.h[a]=this.h[a]&i|o[a];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),n=this.h[0]+this.pad[0],this.h[0]=65535&n,a=1;a<8;a++)n=(this.h[a]+this.pad[a]|0)+(n>>>16)|0,this.h[a]=65535&n;e[t+0]=this.h[0]>>>0&255,e[t+1]=this.h[0]>>>8&255,e[t+2]=this.h[1]>>>0&255,e[t+3]=this.h[1]>>>8&255,e[t+4]=this.h[2]>>>0&255,e[t+5]=this.h[2]>>>8&255,e[t+6]=this.h[3]>>>0&255,e[t+7]=this.h[3]>>>8&255,e[t+8]=this.h[4]>>>0&255,e[t+9]=this.h[4]>>>8&255,e[t+10]=this.h[5]>>>0&255,e[t+11]=this.h[5]>>>8&255,e[t+12]=this.h[6]>>>0&255,e[t+13]=this.h[6]>>>8&255,e[t+14]=this.h[7]>>>0&255,e[t+15]=this.h[7]>>>8&255},x.prototype.update=function(e,t,r){var i,n;if(this.leftover){for((n=16-this.leftover)>r&&(n=r),i=0;i=16&&(n=r-r%16,this.blocks(e,t,n),t+=n,r-=n),r){for(i=0;i=128;){for(E=0;E<16;E++)k=8*E+$,A[E]=r[k+0]<<24|r[k+1]<<16|r[k+2]<<8|r[k+3],T[E]=r[k+4]<<24|r[k+5]<<16|r[k+6]<<8|r[k+7];for(E=0;E<80;E++)if(n=R,a=P,o=O,s=B,u=C,c=z,l=F,p=q,d=L,f=U,m=H,g=K,v=W,y=Z,j=65535&(x=J),N=x>>>16,M=65535&(S=D),I=S>>>16,j+=65535&(x=(K>>>14|C<<18)^(K>>>18|C<<14)^(C>>>9|K<<23)),N+=x>>>16,M+=65535&(S=(C>>>14|K<<18)^(C>>>18|K<<14)^(K>>>9|C<<23)),I+=S>>>16,j+=65535&(x=K&W^~K&Z),N+=x>>>16,M+=65535&(S=C&z^~C&F),I+=S>>>16,j+=65535&(x=V[2*E+1]),N+=x>>>16,M+=65535&(S=V[2*E]),I+=S>>>16,S=A[E%16],N+=(x=T[E%16])>>>16,M+=65535&S,I+=S>>>16,M+=(N+=(j+=65535&x)>>>16)>>>16,j=65535&(x=w=65535&j|N<<16),N=x>>>16,M=65535&(S=b=65535&M|(I+=M>>>16)<<16),I=S>>>16,j+=65535&(x=(q>>>28|R<<4)^(R>>>2|q<<30)^(R>>>7|q<<25)),N+=x>>>16,M+=65535&(S=(R>>>28|q<<4)^(q>>>2|R<<30)^(q>>>7|R<<25)),I+=S>>>16,N+=(x=q&L^q&U^L&U)>>>16,M+=65535&(S=R&P^R&O^P&O),I+=S>>>16,h=65535&(M+=(N+=(j+=65535&x)>>>16)>>>16)|(I+=M>>>16)<<16,_=65535&j|N<<16,j=65535&(x=m),N=x>>>16,M=65535&(S=s),I=S>>>16,N+=(x=w)>>>16,M+=65535&(S=b),I+=S>>>16,P=n,O=a,B=o,C=s=65535&(M+=(N+=(j+=65535&x)>>>16)>>>16)|(I+=M>>>16)<<16,z=u,F=c,D=l,R=h,L=p,U=d,H=f,K=m=65535&j|N<<16,W=g,Z=v,J=y,q=_,E%16==15)for(k=0;k<16;k++)S=A[k],j=65535&(x=T[k]),N=x>>>16,M=65535&S,I=S>>>16,S=A[(k+9)%16],j+=65535&(x=T[(k+9)%16]),N+=x>>>16,M+=65535&S,I+=S>>>16,b=A[(k+1)%16],j+=65535&(x=((w=T[(k+1)%16])>>>1|b<<31)^(w>>>8|b<<24)^(w>>>7|b<<25)),N+=x>>>16,M+=65535&(S=(b>>>1|w<<31)^(b>>>8|w<<24)^b>>>7),I+=S>>>16,b=A[(k+14)%16],N+=(x=((w=T[(k+14)%16])>>>19|b<<13)^(b>>>29|w<<3)^(w>>>6|b<<26))>>>16,M+=65535&(S=(b>>>19|w<<13)^(w>>>29|b<<3)^b>>>6),I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,A[k]=65535&M|I<<16,T[k]=65535&j|N<<16;j=65535&(x=q),N=x>>>16,M=65535&(S=R),I=S>>>16,S=e[0],N+=(x=t[0])>>>16,M+=65535&S,I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,e[0]=R=65535&M|I<<16,t[0]=q=65535&j|N<<16,j=65535&(x=L),N=x>>>16,M=65535&(S=P),I=S>>>16,S=e[1],N+=(x=t[1])>>>16,M+=65535&S,I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,e[1]=P=65535&M|I<<16,t[1]=L=65535&j|N<<16,j=65535&(x=U),N=x>>>16,M=65535&(S=O),I=S>>>16,S=e[2],N+=(x=t[2])>>>16,M+=65535&S,I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,e[2]=O=65535&M|I<<16,t[2]=U=65535&j|N<<16,j=65535&(x=H),N=x>>>16,M=65535&(S=B),I=S>>>16,S=e[3],N+=(x=t[3])>>>16,M+=65535&S,I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,e[3]=B=65535&M|I<<16,t[3]=H=65535&j|N<<16,j=65535&(x=K),N=x>>>16,M=65535&(S=C),I=S>>>16,S=e[4],N+=(x=t[4])>>>16,M+=65535&S,I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,e[4]=C=65535&M|I<<16,t[4]=K=65535&j|N<<16,j=65535&(x=W),N=x>>>16,M=65535&(S=z),I=S>>>16,S=e[5],N+=(x=t[5])>>>16,M+=65535&S,I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,e[5]=z=65535&M|I<<16,t[5]=W=65535&j|N<<16,j=65535&(x=Z),N=x>>>16,M=65535&(S=F),I=S>>>16,S=e[6],N+=(x=t[6])>>>16,M+=65535&S,I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,e[6]=F=65535&M|I<<16,t[6]=Z=65535&j|N<<16,j=65535&(x=J),N=x>>>16,M=65535&(S=D),I=S>>>16,S=e[7],N+=(x=t[7])>>>16,M+=65535&S,I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,e[7]=D=65535&M|I<<16,t[7]=J=65535&j|N<<16,$+=128,i-=128}return i}function G(e,t,r){var i,n=new Int32Array(8),a=new Int32Array(8),o=new Uint8Array(256),s=r;for(n[0]=1779033703,n[1]=3144134277,n[2]=1013904242,n[3]=2773480762,n[4]=1359893119,n[5]=2600822924,n[6]=528734635,n[7]=1541459225,a[0]=4089235720,a[1]=2227873595,a[2]=4271175723,a[3]=1595750129,a[4]=2917565137,a[5]=725511199,a[6]=4215389547,a[7]=327033209,$(n,a,t,r),r%=128,i=0;i=0;--n)X(e,t,i=r[n/8|0]>>(7&n)&1),Q(t,e),Q(e,e),X(e,t,i)}function te(e,r){var i=[t(),t(),t(),t()];A(i[0],h),A(i[1],p),A(i[2],s),D(i[3],h,p),ee(e,i,r)}function re(e,r,n){var a,o=new Uint8Array(64),s=[t(),t(),t(),t()];for(n||i(r,32),G(o,r,32),o[0]&=248,o[31]&=127,o[31]|=64,te(s,o),Y(e,s),a=0;a<32;a++)r[a+32]=e[a];return 0}var ie=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function ne(e,t){var r,i,n,a;for(i=63;i>=32;--i){for(r=0,n=i-32,a=i-12;n>8,t[n]-=256*r;t[n]+=r,t[i]=0}for(r=0,n=0;n<32;n++)t[n]+=r-(t[31]>>4)*ie[n],r=t[n]>>8,t[n]&=255;for(n=0;n<32;n++)t[n]-=r*ie[n];for(i=0;i<32;i++)t[i+1]+=t[i]>>8,e[i]=255&t[i]}function ae(e){var t,r=new Float64Array(64);for(t=0;t<64;t++)r[t]=e[t];for(t=0;t<64;t++)e[t]=0;ne(e,r)}function oe(e,r,i,n){var a,o,s=new Uint8Array(64),u=new Uint8Array(64),c=new Uint8Array(64),l=new Float64Array(64),h=[t(),t(),t(),t()];G(s,n,32),s[0]&=248,s[31]&=127,s[31]|=64;var p=i+64;for(a=0;a=0;i--)q(n,n),1!==i&&D(n,n,r);for(i=0;i<16;i++)e[i]=n[i]}(i,i),D(i,i,a),D(i,i,u),D(i,i,u),D(e[0],i,u),q(n,e[0]),D(n,n,u),O(n,a)&&D(e[0],e[0],d),q(n,e[0]),D(n,n,u),O(n,a)?-1:(B(e[0])===r[31]>>7&&F(e[0],o,e[0]),D(e[3],e[0],e[1]),0)}(p,n))return-1;for(a=0;a=0},e.sign.keyPair=function(){var e=new Uint8Array(ce),t=new Uint8Array(le);return re(e,t),{publicKey:e,secretKey:t}},e.sign.keyPair.fromSecretKey=function(e){if(pe(e),e.length!==le)throw new Error("bad secret key size");for(var t=new Uint8Array(ce),r=0;r1){t[0]=t[0].slice(0,-1);for(var i=t.length-1,n=1;n= 0x80 (not a basic code point)","invalid-input":"Invalid input"},m=Math.floor,g=String.fromCharCode;function v(e){throw new RangeError(f[e])}function y(e,t){var r=e.split("@"),i="";return r.length>1&&(i=r[0]+"@",e=r[1]),i+function(e,t){for(var r=[],i=e.length;i--;)r[i]=t(e[i]);return r}((e=e.replace(d,".")).split("."),t).join(".")}function _(e){for(var t=[],r=0,i=e.length;r=55296&&n<=56319&&r>1,e+=m(e/t);e>455;i+=l)e=m(e/35);return m(i+36*e/(e+38))},E=function(e){var t,r=[],i=e.length,n=0,a=128,o=72,s=e.lastIndexOf("-");s<0&&(s=0);for(var u=0;u=128&&v("not-basic"),r.push(e.charCodeAt(u));for(var h=s>0?s+1:0;h=i&&v("invalid-input");var g=(t=e.charCodeAt(h++))-48<10?t-22:t-65<26?t-65:t-97<26?t-97:l;(g>=l||g>m((c-n)/d))&&v("overflow"),n+=g*d;var y=f<=o?1:f>=o+26?26:f-o;if(gm(c/_)&&v("overflow"),d*=_}var b=r.length+1;o=w(n-p,b,0==p),m(n/b)>c-a&&v("overflow"),a+=m(n/b),n%=b,r.splice(n++,0,a)}return String.fromCodePoint.apply(String,r)},k=function(e){var t=[],r=(e=_(e)).length,i=128,n=0,a=72,o=!0,s=!1,u=void 0;try{for(var h,p=e[Symbol.iterator]();!(o=(h=p.next()).done);o=!0){var d=h.value;d<128&&t.push(g(d))}}catch(e){s=!0,u=e}finally{try{!o&&p.return&&p.return()}finally{if(s)throw u}}var f=t.length,y=f;for(f&&t.push("-");y=i&&Mm((c-n)/I)&&v("overflow"),n+=(E-i)*I,i=E;var A=!0,T=!1,R=void 0;try{for(var P,O=e[Symbol.iterator]();!(A=(P=O.next()).done);A=!0){var B=P.value;if(Bc&&v("overflow"),B==i){for(var C=n,z=l;;z+=l){var F=z<=a?1:z>=a+26?26:z-a;if(C>6|192).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase():"%"+(t>>12|224).toString(16).toUpperCase()+"%"+(t>>6&63|128).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase()}function M(e){for(var t="",r=0,i=e.length;r=194&&n<224){if(i-r>=6){var a=parseInt(e.substr(r+4,2),16);t+=String.fromCharCode((31&n)<<6|63&a)}else t+=e.substr(r,6);r+=6}else if(n>=224){if(i-r>=9){var o=parseInt(e.substr(r+4,2),16),s=parseInt(e.substr(r+7,2),16);t+=String.fromCharCode((15&n)<<12|(63&o)<<6|63&s)}else t+=e.substr(r,9);r+=9}else t+=e.substr(r,3),r+=3}return t}function I(e,t){function r(e){var r=M(e);return r.match(t.UNRESERVED)?r:e}return e.scheme&&(e.scheme=String(e.scheme).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_SCHEME,"")),void 0!==e.userinfo&&(e.userinfo=String(e.userinfo).replace(t.PCT_ENCODED,r).replace(t.NOT_USERINFO,N).replace(t.PCT_ENCODED,n)),void 0!==e.host&&(e.host=String(e.host).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_HOST,N).replace(t.PCT_ENCODED,n)),void 0!==e.path&&(e.path=String(e.path).replace(t.PCT_ENCODED,r).replace(e.scheme?t.NOT_PATH:t.NOT_PATH_NOSCHEME,N).replace(t.PCT_ENCODED,n)),void 0!==e.query&&(e.query=String(e.query).replace(t.PCT_ENCODED,r).replace(t.NOT_QUERY,N).replace(t.PCT_ENCODED,n)),void 0!==e.fragment&&(e.fragment=String(e.fragment).replace(t.PCT_ENCODED,r).replace(t.NOT_FRAGMENT,N).replace(t.PCT_ENCODED,n)),e}function A(e){return e.replace(/^0*(.*)/,"$1")||"0"}function T(e,t){var r=e.match(t.IPV4ADDRESS)||[],i=u(r,2)[1];return i?i.split(".").map(A).join("."):e}function R(e,t){var r=e.match(t.IPV6ADDRESS)||[],i=u(r,3),n=i[1],a=i[2];if(n){for(var o=n.toLowerCase().split("::").reverse(),s=u(o,2),c=s[0],l=s[1],h=l?l.split(":").map(A):[],p=c.split(":").map(A),d=t.IPV4ADDRESS.test(p[p.length-1]),f=d?7:8,m=p.length-f,g=Array(f),v=0;v1){var b=g.slice(0,y.index),w=g.slice(y.index+y.length);_=b.join(":")+"::"+w.join(":")}else _=g.join(":");return a&&(_+="%"+a),_}return e}var P=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,O=void 0==="".match(/(){0}/)[1];function B(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r={},i=!1!==t.iri?s:o;"suffix"===t.reference&&(e=(t.scheme?t.scheme+":":"")+"//"+e);var n=e.match(P);if(n){O?(r.scheme=n[1],r.userinfo=n[3],r.host=n[4],r.port=parseInt(n[5],10),r.path=n[6]||"",r.query=n[7],r.fragment=n[8],isNaN(r.port)&&(r.port=n[5])):(r.scheme=n[1]||void 0,r.userinfo=-1!==e.indexOf("@")?n[3]:void 0,r.host=-1!==e.indexOf("//")?n[4]:void 0,r.port=parseInt(n[5],10),r.path=n[6]||"",r.query=-1!==e.indexOf("?")?n[7]:void 0,r.fragment=-1!==e.indexOf("#")?n[8]:void 0,isNaN(r.port)&&(r.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?n[4]:void 0)),r.host&&(r.host=R(T(r.host,i),i)),void 0!==r.scheme||void 0!==r.userinfo||void 0!==r.host||void 0!==r.port||r.path||void 0!==r.query?void 0===r.scheme?r.reference="relative":void 0===r.fragment?r.reference="absolute":r.reference="uri":r.reference="same-document",t.reference&&"suffix"!==t.reference&&t.reference!==r.reference&&(r.error=r.error||"URI is not a "+t.reference+" reference.");var a=j[(t.scheme||r.scheme||"").toLowerCase()];if(t.unicodeSupport||a&&a.unicodeSupport)I(r,i);else{if(r.host&&(t.domainHost||a&&a.domainHost))try{r.host=S(r.host.replace(i.PCT_ENCODED,M).toLowerCase())}catch(e){r.error=r.error||"Host's domain name can not be converted to ASCII via punycode: "+e}I(r,o)}a&&a.parse&&a.parse(r,t)}else r.error=r.error||"URI can not be parsed.";return r}function C(e,t){var r=!1!==t.iri?s:o,i=[];return void 0!==e.userinfo&&(i.push(e.userinfo),i.push("@")),void 0!==e.host&&i.push(R(T(String(e.host),r),r).replace(r.IPV6ADDRESS,(function(e,t,r){return"["+t+(r?"%25"+r:"")+"]"}))),"number"!=typeof e.port&&"string"!=typeof e.port||(i.push(":"),i.push(String(e.port))),i.length?i.join(""):void 0}var z=/^\.\.?\//,F=/^\/\.(\/|$)/,D=/^\/\.\.(\/|$)/,q=/^\/?(?:.|\n)*?(?=\/|$)/;function L(e){for(var t=[];e.length;)if(e.match(z))e=e.replace(z,"");else if(e.match(F))e=e.replace(F,"/");else if(e.match(D))e=e.replace(D,"/"),t.pop();else if("."===e||".."===e)e="";else{var r=e.match(q);if(!r)throw new Error("Unexpected dot segment condition");var i=r[0];e=e.slice(i.length),t.push(i)}return t.join("")}function U(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.iri?s:o,i=[],n=j[(t.scheme||e.scheme||"").toLowerCase()];if(n&&n.serialize&&n.serialize(e,t),e.host)if(r.IPV6ADDRESS.test(e.host));else if(t.domainHost||n&&n.domainHost)try{e.host=t.iri?x(e.host):S(e.host.replace(r.PCT_ENCODED,M).toLowerCase())}catch(r){e.error=e.error||"Host's domain name can not be converted to "+(t.iri?"Unicode":"ASCII")+" via punycode: "+r}I(e,r),"suffix"!==t.reference&&e.scheme&&(i.push(e.scheme),i.push(":"));var a=C(e,t);if(void 0!==a&&("suffix"!==t.reference&&i.push("//"),i.push(a),e.path&&"/"!==e.path.charAt(0)&&i.push("/")),void 0!==e.path){var u=e.path;t.absolutePath||n&&n.absolutePath||(u=L(u)),void 0===a&&(u=u.replace(/^\/\//,"/%2F")),i.push(u)}return void 0!==e.query&&(i.push("?"),i.push(e.query)),void 0!==e.fragment&&(i.push("#"),i.push(e.fragment)),i.join("")}function H(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i={};return arguments[3]||(e=B(U(e,r),r),t=B(U(t,r),r)),!(r=r||{}).tolerant&&t.scheme?(i.scheme=t.scheme,i.userinfo=t.userinfo,i.host=t.host,i.port=t.port,i.path=L(t.path||""),i.query=t.query):(void 0!==t.userinfo||void 0!==t.host||void 0!==t.port?(i.userinfo=t.userinfo,i.host=t.host,i.port=t.port,i.path=L(t.path||""),i.query=t.query):(t.path?("/"===t.path.charAt(0)?i.path=L(t.path):(void 0===e.userinfo&&void 0===e.host&&void 0===e.port||e.path?e.path?i.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path:i.path=t.path:i.path="/"+t.path,i.path=L(i.path)),i.query=t.query):(i.path=e.path,void 0!==t.query?i.query=t.query:i.query=e.query),i.userinfo=e.userinfo,i.host=e.host,i.port=e.port),i.scheme=e.scheme),i.fragment=t.fragment,i}function K(e,t){return e&&e.toString().replace(t&&t.iri?s.PCT_ENCODED:o.PCT_ENCODED,M)}var W={scheme:"http",domainHost:!0,parse:function(e,t){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e},serialize:function(e,t){var r="https"===String(e.scheme).toLowerCase();return e.port!==(r?443:80)&&""!==e.port||(e.port=void 0),e.path||(e.path="/"),e}},Z={scheme:"https",domainHost:W.domainHost,parse:W.parse,serialize:W.serialize};function J(e){return"boolean"==typeof e.secure?e.secure:"wss"===String(e.scheme).toLowerCase()}var V={scheme:"ws",domainHost:!0,parse:function(e,t){var r=e;return r.secure=J(r),r.resourceName=(r.path||"/")+(r.query?"?"+r.query:""),r.path=void 0,r.query=void 0,r},serialize:function(e,t){if(e.port!==(J(e)?443:80)&&""!==e.port||(e.port=void 0),"boolean"==typeof e.secure&&(e.scheme=e.secure?"wss":"ws",e.secure=void 0),e.resourceName){var r=e.resourceName.split("?"),i=u(r,2),n=i[0],a=i[1];e.path=n&&"/"!==n?n:void 0,e.query=a,e.resourceName=void 0}return e.fragment=void 0,e}},$={scheme:"wss",domainHost:V.domainHost,parse:V.parse,serialize:V.serialize},G={},Q="[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]",X="[0-9A-Fa-f]",Y=r(r("%[EFef][0-9A-Fa-f]%"+X+X+"%"+X+X)+"|"+r("%[89A-Fa-f][0-9A-Fa-f]%"+X+X)+"|"+r("%"+X+X)),ee=t("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",'[\\"\\\\]'),te=new RegExp(Q,"g"),re=new RegExp(Y,"g"),ie=new RegExp(t("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',ee),"g"),ne=new RegExp(t("[^]",Q,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),ae=ne;function oe(e){var t=M(e);return t.match(te)?t:e}var se={scheme:"mailto",parse:function(e,t){var r=e,i=r.to=r.path?r.path.split(","):[];if(r.path=void 0,r.query){for(var n=!1,a={},o=r.query.split("&"),s=0,u=o.length;s= 0x80 (not a basic code point)","invalid-input":"Invalid input"},d=Math.floor,f=String.fromCharCode;function m(e){throw RangeError(p[e])}function g(e,t){for(var r=e.length,i=[];r--;)i[r]=t(e[r]);return i}function v(e,t){var r=e.split("@"),i="";return r.length>1&&(i=r[0]+"@",e=r[1]),i+g((e=e.replace(h,".")).split("."),t).join(".")}function y(e){for(var t,r,i=[],n=0,a=e.length;n=55296&&t<=56319&&n65535&&(t+=f((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+f(e)})).join("")}function b(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function w(e,t,r){var i=0;for(e=r?d(e/700):e>>1,e+=d(e/t);e>455;i+=u)e=d(e/35);return d(i+36*e/(e+38))}function E(e){var t,r,i,n,a,o,c,l,h,p,f,g=[],v=e.length,y=0,b=128,E=72;for((r=e.lastIndexOf("-"))<0&&(r=0),i=0;i=128&&m("not-basic"),g.push(e.charCodeAt(i));for(n=r>0?r+1:0;n=v&&m("invalid-input"),((l=(f=e.charCodeAt(n++))-48<10?f-22:f-65<26?f-65:f-97<26?f-97:u)>=u||l>d((s-y)/o))&&m("overflow"),y+=l*o,!(l<(h=c<=E?1:c>=E+26?26:c-E));c+=u)o>d(s/(p=u-h))&&m("overflow"),o*=p;E=w(y-a,t=g.length+1,0==a),d(y/t)>s-b&&m("overflow"),b+=d(y/t),y%=t,g.splice(y++,0,b)}return _(g)}function k(e){var t,r,i,n,a,o,c,l,h,p,g,v,_,E,k,S=[];for(v=(e=y(e)).length,t=128,r=0,a=72,o=0;o=t&&gd((s-r)/(_=i+1))&&m("overflow"),r+=(c-t)*_,t=c,o=0;os&&m("overflow"),g==t){for(l=r,h=u;!(l<(p=h<=a?1:h>=a+26?26:h-a));h+=u)k=l-p,E=u-p,S.push(f(b(p+k%E,0))),l=d(k/E);S.push(f(b(l,0))),a=w(r,_,i==n),r=0,++i}++r,++t}return S.join("")}o={version:"1.3.2",ucs2:{decode:y,encode:_},decode:E,encode:k,toASCII:function(e){return v(e,(function(e){return l.test(e)?"xn--"+k(e):e}))},toUnicode:function(e){return v(e,(function(e){return c.test(e)?E(e.slice(4).toLowerCase()):e}))}},void 0===(i=function(){return o}.call(t,r,t,e))||(e.exports=i)}()},8575:(e,t,r)=>{"use strict";var i=r(52511),n=r(62502);function a(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=_,t.resolve=function(e,t){return _(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?_(e,!1,!0).resolveObject(t):t},t.format=function(e){return n.isString(e)&&(e=_(e)),e instanceof a?e.format():a.prototype.format.call(e)},t.Url=a;var o=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,u=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,c=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(c),h=["%","/","?",";","#"].concat(l),p=["/","?","#"],d=/^[+a-z0-9A-Z_-]{0,63}$/,f=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,m={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},v={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=r(17673);function _(e,t,r){if(e&&n.isObject(e)&&e instanceof a)return e;var i=new a;return i.parse(e,t,r),i}a.prototype.parse=function(e,t,r){if(!n.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var a=e.indexOf("?"),s=-1!==a&&a127?P+="x":P+=R[O];if(!P.match(d)){var C=A.slice(0,N),z=A.slice(N+1),F=R.match(f);F&&(C.push(F[1]),z.unshift(F[2])),z.length&&(_="/"+z.join(".")+_),this.hostname=C.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),I||(this.hostname=i.toASCII(this.hostname));var D=this.port?":"+this.port:"",q=this.hostname||"";this.host=q+D,this.href+=this.host,I&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==_[0]&&(_="/"+_))}if(!m[E])for(N=0,T=l.length;N0)&&r.host.split("@"))&&(r.auth=I.shift(),r.host=r.hostname=I.shift())),r.search=e.search,r.query=e.query,n.isNull(r.pathname)&&n.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!k.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var x=k.slice(-1)[0],j=(r.host||e.host||k.length>1)&&("."===x||".."===x)||""===x,N=0,M=k.length;M>=0;M--)"."===(x=k[M])?k.splice(M,1):".."===x?(k.splice(M,1),N++):N&&(k.splice(M,1),N--);if(!w&&!E)for(;N--;N)k.unshift("..");!w||""===k[0]||k[0]&&"/"===k[0].charAt(0)||k.unshift(""),j&&"/"!==k.join("/").substr(-1)&&k.push("");var I,A=""===k[0]||k[0]&&"/"===k[0].charAt(0);return S&&(r.hostname=r.host=A?"":k.length?k.shift():"",(I=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=I.shift(),r.host=r.hostname=I.shift())),(w=w||r.host&&k.length)&&!A&&k.unshift(""),k.length?r.pathname=k.join("/"):(r.pathname=null,r.path=null),n.isNull(r.pathname)&&n.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},a.prototype.parseHost=function(){var e=this.host,t=s.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},62502:e=>{"use strict";e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},94927:(e,t,r)=>{function i(e){try{if(!r.g.localStorage)return!1}catch(e){return!1}var t=r.g.localStorage[e];return null!=t&&"true"===String(t).toLowerCase()}e.exports=function(e,t){if(i("noDeprecation"))return e;var r=!1;return function(){if(!r){if(i("throwDeprecation"))throw new Error(t);i("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}}},20384:e=>{e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},55955:(e,t,r)=>{"use strict";var i=r(82584),n=r(48662),a=r(86430),o=r(85692);function s(e){return e.call.bind(e)}var u="undefined"!=typeof BigInt,c="undefined"!=typeof Symbol,l=s(Object.prototype.toString),h=s(Number.prototype.valueOf),p=s(String.prototype.valueOf),d=s(Boolean.prototype.valueOf);if(u)var f=s(BigInt.prototype.valueOf);if(c)var m=s(Symbol.prototype.valueOf);function g(e,t){if("object"!=typeof e)return!1;try{return t(e),!0}catch(e){return!1}}function v(e){return"[object Map]"===l(e)}function y(e){return"[object Set]"===l(e)}function _(e){return"[object WeakMap]"===l(e)}function b(e){return"[object WeakSet]"===l(e)}function w(e){return"[object ArrayBuffer]"===l(e)}function E(e){return"undefined"!=typeof ArrayBuffer&&(w.working?w(e):e instanceof ArrayBuffer)}function k(e){return"[object DataView]"===l(e)}function S(e){return"undefined"!=typeof DataView&&(k.working?k(e):e instanceof DataView)}t.isArgumentsObject=i,t.isGeneratorFunction=n,t.isTypedArray=o,t.isPromise=function(e){return"undefined"!=typeof Promise&&e instanceof Promise||null!==e&&"object"==typeof e&&"function"==typeof e.then&&"function"==typeof e.catch},t.isArrayBufferView=function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):o(e)||S(e)},t.isUint8Array=function(e){return"Uint8Array"===a(e)},t.isUint8ClampedArray=function(e){return"Uint8ClampedArray"===a(e)},t.isUint16Array=function(e){return"Uint16Array"===a(e)},t.isUint32Array=function(e){return"Uint32Array"===a(e)},t.isInt8Array=function(e){return"Int8Array"===a(e)},t.isInt16Array=function(e){return"Int16Array"===a(e)},t.isInt32Array=function(e){return"Int32Array"===a(e)},t.isFloat32Array=function(e){return"Float32Array"===a(e)},t.isFloat64Array=function(e){return"Float64Array"===a(e)},t.isBigInt64Array=function(e){return"BigInt64Array"===a(e)},t.isBigUint64Array=function(e){return"BigUint64Array"===a(e)},v.working="undefined"!=typeof Map&&v(new Map),t.isMap=function(e){return"undefined"!=typeof Map&&(v.working?v(e):e instanceof Map)},y.working="undefined"!=typeof Set&&y(new Set),t.isSet=function(e){return"undefined"!=typeof Set&&(y.working?y(e):e instanceof Set)},_.working="undefined"!=typeof WeakMap&&_(new WeakMap),t.isWeakMap=function(e){return"undefined"!=typeof WeakMap&&(_.working?_(e):e instanceof WeakMap)},b.working="undefined"!=typeof WeakSet&&b(new WeakSet),t.isWeakSet=function(e){return b(e)},w.working="undefined"!=typeof ArrayBuffer&&w(new ArrayBuffer),t.isArrayBuffer=E,k.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&k(new DataView(new ArrayBuffer(1),0,1)),t.isDataView=S;var x="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function j(e){return"[object SharedArrayBuffer]"===l(e)}function N(e){return void 0!==x&&(void 0===j.working&&(j.working=j(new x)),j.working?j(e):e instanceof x)}function M(e){return g(e,h)}function I(e){return g(e,p)}function A(e){return g(e,d)}function T(e){return u&&g(e,f)}function R(e){return c&&g(e,m)}t.isSharedArrayBuffer=N,t.isAsyncFunction=function(e){return"[object AsyncFunction]"===l(e)},t.isMapIterator=function(e){return"[object Map Iterator]"===l(e)},t.isSetIterator=function(e){return"[object Set Iterator]"===l(e)},t.isGeneratorObject=function(e){return"[object Generator]"===l(e)},t.isWebAssemblyCompiledModule=function(e){return"[object WebAssembly.Module]"===l(e)},t.isNumberObject=M,t.isStringObject=I,t.isBooleanObject=A,t.isBigIntObject=T,t.isSymbolObject=R,t.isBoxedPrimitive=function(e){return M(e)||I(e)||A(e)||T(e)||R(e)},t.isAnyArrayBuffer=function(e){return"undefined"!=typeof Uint8Array&&(E(e)||N(e))},["isProxy","isExternal","isModuleNamespaceObject"].forEach((function(e){Object.defineProperty(t,e,{enumerable:!1,value:function(){throw new Error(e+" is not supported in userland")}})}))},89539:(e,t,r)=>{var i=r(34155),n=Object.getOwnPropertyDescriptors||function(e){for(var t=Object.keys(e),r={},i=0;i=n)return e;switch(e){case"%s":return String(i[r++]);case"%d":return Number(i[r++]);case"%j":try{return JSON.stringify(i[r++])}catch(e){return"[Circular]"}default:return e}})),s=i[r];r=3&&(i.depth=arguments[2]),arguments.length>=4&&(i.colors=arguments[3]),g(r)?i.showHidden=r:r&&t._extend(i,r),b(i.showHidden)&&(i.showHidden=!1),b(i.depth)&&(i.depth=2),b(i.colors)&&(i.colors=!1),b(i.customInspect)&&(i.customInspect=!0),i.colors&&(i.stylize=l),p(i,e,i.depth)}function l(e,t){var r=c.styles[t];return r?"["+c.colors[r][0]+"m"+e+"["+c.colors[r][1]+"m":e}function h(e,t){return e}function p(e,r,i){if(e.customInspect&&r&&x(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var n=r.inspect(i,e);return _(n)||(n=p(e,n,i)),n}var a=function(e,t){if(b(t))return e.stylize("undefined","undefined");if(_(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}return y(t)?e.stylize(""+t,"number"):g(t)?e.stylize(""+t,"boolean"):v(t)?e.stylize("null","null"):void 0}(e,r);if(a)return a;var o=Object.keys(r),s=function(e){var t={};return e.forEach((function(e,r){t[e]=!0})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(r)),S(r)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return d(r);if(0===o.length){if(x(r)){var u=r.name?": "+r.name:"";return e.stylize("[Function"+u+"]","special")}if(w(r))return e.stylize(RegExp.prototype.toString.call(r),"regexp");if(k(r))return e.stylize(Date.prototype.toString.call(r),"date");if(S(r))return d(r)}var c,l="",h=!1,E=["{","}"];return m(r)&&(h=!0,E=["[","]"]),x(r)&&(l=" [Function"+(r.name?": "+r.name:"")+"]"),w(r)&&(l=" "+RegExp.prototype.toString.call(r)),k(r)&&(l=" "+Date.prototype.toUTCString.call(r)),S(r)&&(l=" "+d(r)),0!==o.length||h&&0!=r.length?i<0?w(r)?e.stylize(RegExp.prototype.toString.call(r),"regexp"):e.stylize("[Object]","special"):(e.seen.push(r),c=h?function(e,t,r,i,n){for(var a=[],o=0,s=t.length;o60?r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}(c,l,E)):E[0]+l+E[1]}function d(e){return"["+Error.prototype.toString.call(e)+"]"}function f(e,t,r,i,n,a){var o,s,u;if((u=Object.getOwnPropertyDescriptor(t,n)||{value:t[n]}).get?s=u.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):u.set&&(s=e.stylize("[Setter]","special")),A(i,n)||(o="["+n+"]"),s||(e.seen.indexOf(u.value)<0?(s=v(r)?p(e,u.value,null):p(e,u.value,r-1)).indexOf("\n")>-1&&(s=a?s.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+s.split("\n").map((function(e){return" "+e})).join("\n")):s=e.stylize("[Circular]","special")),b(o)){if(a&&n.match(/^\d+$/))return s;(o=JSON.stringify(""+n)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+s}function m(e){return Array.isArray(e)}function g(e){return"boolean"==typeof e}function v(e){return null===e}function y(e){return"number"==typeof e}function _(e){return"string"==typeof e}function b(e){return void 0===e}function w(e){return E(e)&&"[object RegExp]"===j(e)}function E(e){return"object"==typeof e&&null!==e}function k(e){return E(e)&&"[object Date]"===j(e)}function S(e){return E(e)&&("[object Error]"===j(e)||e instanceof Error)}function x(e){return"function"==typeof e}function j(e){return Object.prototype.toString.call(e)}function N(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(e=e.toUpperCase(),!o[e])if(s.test(e)){var r=i.pid;o[e]=function(){var i=t.format.apply(t,arguments);console.error("%s %d: %s",e,r,i)}}else o[e]=function(){};return o[e]},t.inspect=c,c.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},c.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.types=r(55955),t.isArray=m,t.isBoolean=g,t.isNull=v,t.isNullOrUndefined=function(e){return null==e},t.isNumber=y,t.isString=_,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=b,t.isRegExp=w,t.types.isRegExp=w,t.isObject=E,t.isDate=k,t.types.isDate=k,t.isError=S,t.types.isNativeError=S,t.isFunction=x,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=r(20384);var M=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function I(){var e=new Date,t=[N(e.getHours()),N(e.getMinutes()),N(e.getSeconds())].join(":");return[e.getDate(),M[e.getMonth()],t].join(" ")}function A(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",I(),t.format.apply(t,arguments))},t.inherits=r(35717),t._extend=function(e,t){if(!t||!E(t))return e;for(var r=Object.keys(t),i=r.length;i--;)e[r[i]]=t[r[i]];return e};var T="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function R(e,t){if(!e){var r=new Error("Promise was rejected with a falsy value");r.reason=e,e=r}return t(e)}t.promisify=function(e){if("function"!=typeof e)throw new TypeError('The "original" argument must be of type Function');if(T&&e[T]){var t;if("function"!=typeof(t=e[T]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(t,T,{value:t,enumerable:!1,writable:!1,configurable:!0}),t}function t(){for(var t,r,i=new Promise((function(e,i){t=e,r=i})),n=[],a=0;a{for(var t=[],r=0;r<256;++r)t[r]=(r+256).toString(16).substr(1);e.exports=function(e,r){var i=r||0,n=t;return[n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]]].join("")}},85217:e=>{var t="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(t){var r=new Uint8Array(16);e.exports=function(){return t(r),r}}else{var i=new Array(16);e.exports=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),i[t]=e>>>((3&t)<<3)&255;return i}}},71171:(e,t,r)=>{var i=r(85217),n=r(45327);e.exports=function(e,t,r){var a=t&&r||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var o=(e=e||{}).random||(e.rng||i)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t)for(var s=0;s<16;++s)t[a+s]=o[s];return t||n(o)}},43552:(e,t,r)=>{var i=r(6144),n=r(89539),a=r(29031),o=r(16497).VZ,s=a.sprintf;function u(e){var t,r,n,a;if(i.object(e,"args"),i.bool(e.strict,"args.strict"),i.array(e.argv,"args.argv"),0===(t=e.argv).length)r={},n=[];else if(o(t[0]))r={cause:t[0]},n=t.slice(1);else if("object"==typeof t[0]){for(a in r={},t[0])r[a]=t[0][a];n=t.slice(1)}else i.string(t[0],"first argument to VError, SError, or WError constructor must be a string, object, or Error"),r={},n=t;return i.object(r),r.strict||e.strict||(n=n.map((function(e){return null===e?"null":void 0===e?"undefined":e}))),{options:r,shortmessage:0===n.length?"":s.apply(null,n)}}function c(){var e,t,r,n,a,s,l;if(e=Array.prototype.slice.call(arguments,0),!(this instanceof c))return t=Object.create(c.prototype),c.apply(t,arguments),t;if((r=u({argv:e,strict:!1})).options.name&&(i.string(r.options.name,'error\'s "name" must be a string'),this.name=r.options.name),this.jse_shortmsg=r.shortmessage,s=r.shortmessage,(n=r.options.cause)&&(i.ok(o(n),"cause is not an Error"),this.jse_cause=n,r.options.skipCauseMessage||(s+=": "+n.message)),this.jse_info={},r.options.info)for(l in r.options.info)this.jse_info[l]=r.options.info[l];return this.message=s,Error.call(this,s),Error.captureStackTrace&&(a=r.options.constructorOpt||this.constructor,Error.captureStackTrace(this,a)),this}function l(){var e,t,r,i;return e=Array.prototype.slice.call(arguments,0),this instanceof l?(i=(r=u({argv:e,strict:!0})).options,c.call(this,i,"%s",r.shortmessage),this):(t=Object.create(l.prototype),l.apply(t,arguments),t)}function h(e){i.array(e,"list of errors"),i.ok(e.length>0,"must be at least one error"),this.ase_errors=e,c.call(this,{cause:e[0]},"first of %d error%s",e.length,1==e.length?"":"s")}function p(){var e,t,r,i;return e=Array.prototype.slice.call(arguments,0),this instanceof p?((i=(r=u({argv:e,strict:!1})).options).skipCauseMessage=!0,c.call(this,i,"%s",r.shortmessage),this):(t=Object.create(p.prototype),p.apply(t,e),t)}e.exports=c,c.VError=c,c.SError=l,c.WError=p,c.MultiError=h,n.inherits(c,Error),c.prototype.name="VError",c.prototype.toString=function(){var e=this.hasOwnProperty("name")&&this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(e+=": "+this.message),e},c.prototype.cause=function(){var e=c.cause(this);return null===e?void 0:e},c.cause=function(e){return i.ok(o(e),"err must be an Error"),o(e.jse_cause)?e.jse_cause:null},c.info=function(e){var t,r,n;if(i.ok(o(e),"err must be an Error"),t=null!==(r=c.cause(e))?c.info(r):{},"object"==typeof e.jse_info&&null!==e.jse_info)for(n in e.jse_info)t[n]=e.jse_info[n];return t},c.findCauseByName=function(e,t){var r;for(i.ok(o(e),"err must be an Error"),i.string(t,"name"),i.ok(t.length>0,"name cannot be empty"),r=e;null!==r;r=c.cause(r))if(i.ok(o(r)),r.name==t)return r;return null},c.hasCauseWithName=function(e,t){return null!==c.findCauseByName(e,t)},c.fullStack=function(e){i.ok(o(e),"err must be an Error");var t=c.cause(e);return t?e.stack+"\ncaused by: "+c.fullStack(t):e.stack},c.errorFromList=function(e){return i.arrayOfObject(e,"errors"),0===e.length?null:(e.forEach((function(e){i.ok(o(e))})),1==e.length?e[0]:new h(e))},c.errorForEach=function(e,t){i.ok(o(e),"err must be an Error"),i.func(t,"func"),e instanceof h?e.errors().forEach((function(e){t(e)})):t(e)},n.inherits(l,c),n.inherits(h,c),h.prototype.name="MultiError",h.prototype.errors=function(){return this.ase_errors.slice(0)},n.inherits(p,c),p.prototype.name="WError",p.prototype.toString=function(){var e=this.hasOwnProperty("name")&&this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(e+=": "+this.message),this.jse_cause&&this.jse_cause.message&&(e+="; caused by "+this.jse_cause.toString()),e},p.prototype.cause=function(e){return o(e)&&(this.jse_cause=e),this.jse_cause}},84763:e=>{e.exports=Worker},86430:(e,t,r)=>{"use strict";var i=r(94029),n=r(63083),a=r(21924),o=a("Object.prototype.toString"),s=r(96410)(),u="undefined"==typeof globalThis?r.g:globalThis,c=n(),l=a("String.prototype.slice"),h={},p=r(20882),d=Object.getPrototypeOf;s&&p&&d&&i(c,(function(e){if("function"==typeof u[e]){var t=new u[e];if(Symbol.toStringTag in t){var r=d(t),i=p(r,Symbol.toStringTag);if(!i){var n=d(r);i=p(n,Symbol.toStringTag)}h[e]=i.get}}}));var f=r(85692);e.exports=function(e){return!!f(e)&&(s&&Symbol.toStringTag in e?function(e){var t=!1;return i(h,(function(r,i){if(!t)try{var n=r.call(e);n===i&&(t=n)}catch(e){}})),t}(e):l(o(e),8,-1))}},47529:e=>{e.exports=function(){for(var e={},r=0;r{"use strict";e.exports=child_process},80950:()=>{},46601:()=>{},89214:()=>{},8623:()=>{},42480:()=>{},7748:()=>{},85568:()=>{},56619:()=>{},77108:()=>{},52361:()=>{},94616:()=>{},55024:()=>{},63083:(e,t,r)=>{"use strict";var i=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],n="undefined"==typeof globalThis?r.g:globalThis;e.exports=function(){for(var e=[],t=0;t{"use strict";var i=r(40210)("%Object.getOwnPropertyDescriptor%",!0);if(i)try{i([],"length")}catch(e){i=null}e.exports=i},894:e=>{"use strict";e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#","description":"Meta-schema for $data reference (JSON Schema extension proposal)","type":"object","required":["$data"],"properties":{"$data":{"type":"string","anyOf":[{"format":"relative-json-pointer"},{"format":"json-pointer"}]}},"additionalProperties":false}')},96273:e=>{"use strict";e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-06/schema#","$id":"http://json-schema.org/draft-06/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"title":{"type":"string"},"description":{"type":"string"},"default":{},"examples":{"type":"array","items":{}},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":{}},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":{},"enum":{"type":"array","minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":{}}')},6680:e=>{"use strict";e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"http://json-schema.org/draft-07/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"$comment":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":true,"readOnly":{"type":"boolean","default":false},"examples":{"type":"array","items":true},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":true},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"propertyNames":{"format":"regex"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":true,"enum":{"type":"array","items":true,"minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"contentMediaType":{"type":"string"},"contentEncoding":{"type":"string"},"if":{"$ref":"#"},"then":{"$ref":"#"},"else":{"$ref":"#"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":true}')},44946:e=>{"use strict";e.exports=JSON.parse('{"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}}')},75207:e=>{"use strict";e.exports=JSON.parse('{"sha224WithRSAEncryption":{"sign":"rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"RSA-SHA224":{"sign":"ecdsa/rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"sha256WithRSAEncryption":{"sign":"rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"RSA-SHA256":{"sign":"ecdsa/rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"sha384WithRSAEncryption":{"sign":"rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"RSA-SHA384":{"sign":"ecdsa/rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"sha512WithRSAEncryption":{"sign":"rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA512":{"sign":"ecdsa/rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA1":{"sign":"rsa","hash":"sha1","id":"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{"sign":"ecdsa","hash":"sha1","id":""},"sha256":{"sign":"ecdsa","hash":"sha256","id":""},"sha224":{"sign":"ecdsa","hash":"sha224","id":""},"sha384":{"sign":"ecdsa","hash":"sha384","id":""},"sha512":{"sign":"ecdsa","hash":"sha512","id":""},"DSA-SHA":{"sign":"dsa","hash":"sha1","id":""},"DSA-SHA1":{"sign":"dsa","hash":"sha1","id":""},"DSA":{"sign":"dsa","hash":"sha1","id":""},"DSA-WITH-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-WITH-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-WITH-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-WITH-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-RIPEMD160":{"sign":"dsa","hash":"rmd160","id":""},"ripemd160WithRSA":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"RSA-RIPEMD160":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"md5WithRSAEncryption":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"},"RSA-MD5":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"}}')},1308:e=>{"use strict";e.exports=JSON.parse('{"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}')},29799:e=>{"use strict";e.exports=JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}')},18597:e=>{"use strict";e.exports={i8:"6.5.4"}},83932:e=>{"use strict";e.exports=JSON.parse('{"$id":"afterRequest.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["lastAccess","eTag","hitCount"],"properties":{"expires":{"type":"string","pattern":"^(\\\\d{4})(-)?(\\\\d\\\\d)(-)?(\\\\d\\\\d)(T)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(\\\\.\\\\d+)?(Z|([+-])(\\\\d\\\\d)(:)?(\\\\d\\\\d))?"},"lastAccess":{"type":"string","pattern":"^(\\\\d{4})(-)?(\\\\d\\\\d)(-)?(\\\\d\\\\d)(T)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(\\\\.\\\\d+)?(Z|([+-])(\\\\d\\\\d)(:)?(\\\\d\\\\d))?"},"eTag":{"type":"string"},"hitCount":{"type":"integer"},"comment":{"type":"string"}}}')},36136:e=>{"use strict";e.exports=JSON.parse('{"$id":"beforeRequest.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["lastAccess","eTag","hitCount"],"properties":{"expires":{"type":"string","pattern":"^(\\\\d{4})(-)?(\\\\d\\\\d)(-)?(\\\\d\\\\d)(T)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(\\\\.\\\\d+)?(Z|([+-])(\\\\d\\\\d)(:)?(\\\\d\\\\d))?"},"lastAccess":{"type":"string","pattern":"^(\\\\d{4})(-)?(\\\\d\\\\d)(-)?(\\\\d\\\\d)(T)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(\\\\.\\\\d+)?(Z|([+-])(\\\\d\\\\d)(:)?(\\\\d\\\\d))?"},"eTag":{"type":"string"},"hitCount":{"type":"integer"},"comment":{"type":"string"}}}')},805:e=>{"use strict";e.exports=JSON.parse('{"$id":"browser.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","version"],"properties":{"name":{"type":"string"},"version":{"type":"string"},"comment":{"type":"string"}}}')},51632:e=>{"use strict";e.exports=JSON.parse('{"$id":"cache.json#","$schema":"http://json-schema.org/draft-06/schema#","properties":{"beforeRequest":{"oneOf":[{"type":"null"},{"$ref":"beforeRequest.json#"}]},"afterRequest":{"oneOf":[{"type":"null"},{"$ref":"afterRequest.json#"}]},"comment":{"type":"string"}}}')},61567:e=>{"use strict";e.exports=JSON.parse('{"$id":"content.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["size","mimeType"],"properties":{"size":{"type":"integer"},"compression":{"type":"integer"},"mimeType":{"type":"string"},"text":{"type":"string"},"encoding":{"type":"string"},"comment":{"type":"string"}}}')},25725:e=>{"use strict";e.exports=JSON.parse('{"$id":"cookie.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"path":{"type":"string"},"domain":{"type":"string"},"expires":{"type":["string","null"],"format":"date-time"},"httpOnly":{"type":"boolean"},"secure":{"type":"boolean"},"comment":{"type":"string"}}}')},47218:e=>{"use strict";e.exports=JSON.parse('{"$id":"creator.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","version"],"properties":{"name":{"type":"string"},"version":{"type":"string"},"comment":{"type":"string"}}}')},74560:e=>{"use strict";e.exports=JSON.parse('{"$id":"entry.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["startedDateTime","time","request","response","cache","timings"],"properties":{"pageref":{"type":"string"},"startedDateTime":{"type":"string","format":"date-time","pattern":"^(\\\\d{4})(-)?(\\\\d\\\\d)(-)?(\\\\d\\\\d)(T)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(\\\\.\\\\d+)?(Z|([+-])(\\\\d\\\\d)(:)?(\\\\d\\\\d))"},"time":{"type":"number","min":0},"request":{"$ref":"request.json#"},"response":{"$ref":"response.json#"},"cache":{"$ref":"cache.json#"},"timings":{"$ref":"timings.json#"},"serverIPAddress":{"type":"string","oneOf":[{"format":"ipv4"},{"format":"ipv6"}]},"connection":{"type":"string"},"comment":{"type":"string"}}}')},75579:e=>{"use strict";e.exports=JSON.parse('{"$id":"har.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["log"],"properties":{"log":{"$ref":"log.json#"}}}')},75147:e=>{"use strict";e.exports=JSON.parse('{"$id":"header.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"comment":{"type":"string"}}}')},53013:e=>{"use strict";e.exports=JSON.parse('{"$id":"log.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["version","creator","entries"],"properties":{"version":{"type":"string"},"creator":{"$ref":"creator.json#"},"browser":{"$ref":"browser.json#"},"pages":{"type":"array","items":{"$ref":"page.json#"}},"entries":{"type":"array","items":{"$ref":"entry.json#"}},"comment":{"type":"string"}}}')},34777:e=>{"use strict";e.exports=JSON.parse('{"$id":"page.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["startedDateTime","id","title","pageTimings"],"properties":{"startedDateTime":{"type":"string","format":"date-time","pattern":"^(\\\\d{4})(-)?(\\\\d\\\\d)(-)?(\\\\d\\\\d)(T)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(\\\\.\\\\d+)?(Z|([+-])(\\\\d\\\\d)(:)?(\\\\d\\\\d))"},"id":{"type":"string","unique":true},"title":{"type":"string"},"pageTimings":{"$ref":"pageTimings.json#"},"comment":{"type":"string"}}}')},5538:e=>{"use strict";e.exports=JSON.parse('{"$id":"pageTimings.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","properties":{"onContentLoad":{"type":"number","min":-1},"onLoad":{"type":"number","min":-1},"comment":{"type":"string"}}}')},12096:e=>{"use strict";e.exports=JSON.parse('{"$id":"postData.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["mimeType"],"properties":{"mimeType":{"type":"string"},"text":{"type":"string"},"params":{"type":"array","required":["name"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"fileName":{"type":"string"},"contentType":{"type":"string"},"comment":{"type":"string"}}},"comment":{"type":"string"}}}')},21251:e=>{"use strict";e.exports=JSON.parse('{"$id":"query.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"comment":{"type":"string"}}}')},99646:e=>{"use strict";e.exports=JSON.parse('{"$id":"request.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["method","url","httpVersion","cookies","headers","queryString","headersSize","bodySize"],"properties":{"method":{"type":"string"},"url":{"type":"string","format":"uri"},"httpVersion":{"type":"string"},"cookies":{"type":"array","items":{"$ref":"cookie.json#"}},"headers":{"type":"array","items":{"$ref":"header.json#"}},"queryString":{"type":"array","items":{"$ref":"query.json#"}},"postData":{"$ref":"postData.json#"},"headersSize":{"type":"integer"},"bodySize":{"type":"integer"},"comment":{"type":"string"}}}')},9103:e=>{"use strict";e.exports=JSON.parse('{"$id":"response.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["status","statusText","httpVersion","cookies","headers","content","redirectURL","headersSize","bodySize"],"properties":{"status":{"type":"integer"},"statusText":{"type":"string"},"httpVersion":{"type":"string"},"cookies":{"type":"array","items":{"$ref":"cookie.json#"}},"headers":{"type":"array","items":{"$ref":"header.json#"}},"content":{"$ref":"content.json#"},"redirectURL":{"type":"string"},"headersSize":{"type":"integer"},"bodySize":{"type":"integer"},"comment":{"type":"string"}}}')},22007:e=>{"use strict";e.exports=JSON.parse('{"$id":"timings.json#","$schema":"http://json-schema.org/draft-06/schema#","required":["send","wait","receive"],"properties":{"dns":{"type":"number","min":-1},"connect":{"type":"number","min":-1},"blocked":{"type":"number","min":-1},"send":{"type":"number","min":-1},"wait":{"type":"number","min":-1},"receive":{"type":"number","min":-1},"ssl":{"type":"number","min":-1},"comment":{"type":"string"}}}')},53765:e=>{"use strict";e.exports=JSON.parse('{"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/3gpphal+json":{"source":"iana","compressible":true},"application/3gpphalforms+json":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/ace+cbor":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/at+jwt":{"source":"iana"},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/captive+json":{"source":"iana","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/city+json":{"source":"iana","compressible":true},"application/clr":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true,"extensions":["cpl"]},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dash-patch+xml":{"source":"iana","compressible":true,"extensions":["mpp"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["es","ecma"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/elm+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/elm+xml":{"source":"iana","compressible":true},"application/emergencycalldata.cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/express":{"source":"iana","extensions":["exp"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/jscalendar+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true,"extensions":["mpf"]},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/missing-blocks+cbor-seq":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/oauth-authz-req+jwt":{"source":"iana"},"application/oblivious-dns-message":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{"source":"iana","compressible":true},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p21":{"source":"iana"},"application/p21+zip":{"source":"iana","compressible":false},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana","extensions":["asc"]},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.cyn":{"source":"iana","charset":"7-BIT"},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sarif+json":{"source":"iana","compressible":true},"application/sarif-external-properties+json":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spdx+json":{"source":"iana","compressible":true},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/token-introspection+jwt":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana","extensions":["trig"]},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ubjson":{"compressible":false,"extensions":["ubj"]},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true,"extensions":["td"]},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gnas":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gtpc":{"source":"iana"},"application/vnd.3gpp.interworking-data":{"source":"iana"},"application/vnd.3gpp.lpp":{"source":"iana"},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ngap":{"source":"iana"},"application/vnd.3gpp.pfcp":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.s1ap":{"source":"iana"},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.cmoca-cmresource":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-cmtable":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.age":{"source":"iana","extensions":["age"]},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.arrow.file":{"source":"iana"},"application/vnd.apache.arrow.stream":{"source":"iana"},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["key"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.cryptomator.encrypted":{"source":"iana"},"application/vnd.cryptomator.vault":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.cyclonedx+json":{"source":"iana","compressible":true},"application/vnd.cyclonedx+xml":{"source":"iana","compressible":true},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.d3m-dataset":{"source":"iana"},"application/vnd.d3m-problem":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana","extensions":["dbf"]},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.eclipse.ditto+json":{"source":"iana","compressible":true},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eu.kasparian.car+json":{"source":"iana","compressible":true},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.familysearch.gedcom+zip":{"source":"iana","compressible":false},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujifilm.fb.docuworks":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.container":{"source":"iana"},"application/vnd.fujifilm.fb.jfi+xml":{"source":"iana","compressible":true},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.slides":{"source":"iana"},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hl7cda+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hl7v2+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana","extensions":["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxar.archive.3tz+zip":{"source":"iana","compressible":false},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.nacamar.ybrid+json":{"source":"iana","compressible":true},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nebumind.line":{"source":"iana"},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+cbor":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.opentimestamps.ots":{"source":"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana","extensions":["rar"]},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.resilient.logic":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.seis+json":{"source":"iana","compressible":true},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.sycle+xml":{"source":"iana","compressible":true},"application/vnd.syft+json":{"source":"iana","compressible":true},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veritone.aion+json":{"source":"iana","compressible":true},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.dpp":{"source":"iana"},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"source":"iana","compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true,"extensions":["wif"]},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-iwork-keynote-sffkey":{"extensions":["key"]},"application/x-iwork-numbers-sffnumbers":{"extensions":["numbers"]},"application/x-iwork-pages-sffpages":{"extensions":["pages"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xsl","xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana","extensions":["amr"]},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx","opus"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/scip":{"source":"iana"},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sofa":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/tsvcis":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana","extensions":["avci"]},"image/avcs":{"source":"iana","extensions":["avcs"]},"image/avif":{"source":"iana","compressible":false,"extensions":["avif"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/ktx2":{"source":"iana","extensions":["ktx2"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","compressible":true,"extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"compressible":true,"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.pco.b16":{"source":"iana","extensions":["b16"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/e57":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/step":{"source":"iana"},"model/step+xml":{"source":"iana","compressible":true,"extensions":["stpx"]},"model/step+zip":{"source":"iana","compressible":false,"extensions":["stpz"]},"model/step-xml+zip":{"source":"iana","compressible":false,"extensions":["stpxz"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.pytha.pyox":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.sap.vds":{"source":"iana","extensions":["vds"]},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/cql":{"source":"iana"},"text/cql-expression":{"source":"iana"},"text/cql-identifier":{"source":"iana"},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fhirpath":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/gff3":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shaclc":{"source":"iana"},"text/shex":{"source":"iana","extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/spdx":{"source":"iana","extensions":["spdx"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.familysearch.gedcom":{"source":"iana","extensions":["ged"]},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hans":{"source":"iana"},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"compressible":true,"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/av1":{"source":"iana"},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/ffv1":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana","extensions":["m4s"]},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/jxsv":{"source":"iana"},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/scip":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/vp9":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}')},22562:e=>{"use strict";e.exports=JSON.parse('{"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}')},3704:e=>{"use strict";e.exports=JSON.parse('["ac","com.ac","edu.ac","gov.ac","net.ac","mil.ac","org.ac","ad","nom.ad","ae","co.ae","net.ae","org.ae","sch.ae","ac.ae","gov.ae","mil.ae","aero","accident-investigation.aero","accident-prevention.aero","aerobatic.aero","aeroclub.aero","aerodrome.aero","agents.aero","aircraft.aero","airline.aero","airport.aero","air-surveillance.aero","airtraffic.aero","air-traffic-control.aero","ambulance.aero","amusement.aero","association.aero","author.aero","ballooning.aero","broker.aero","caa.aero","cargo.aero","catering.aero","certification.aero","championship.aero","charter.aero","civilaviation.aero","club.aero","conference.aero","consultant.aero","consulting.aero","control.aero","council.aero","crew.aero","design.aero","dgca.aero","educator.aero","emergency.aero","engine.aero","engineer.aero","entertainment.aero","equipment.aero","exchange.aero","express.aero","federation.aero","flight.aero","fuel.aero","gliding.aero","government.aero","groundhandling.aero","group.aero","hanggliding.aero","homebuilt.aero","insurance.aero","journal.aero","journalist.aero","leasing.aero","logistics.aero","magazine.aero","maintenance.aero","media.aero","microlight.aero","modelling.aero","navigation.aero","parachuting.aero","paragliding.aero","passenger-association.aero","pilot.aero","press.aero","production.aero","recreation.aero","repbody.aero","res.aero","research.aero","rotorcraft.aero","safety.aero","scientist.aero","services.aero","show.aero","skydiving.aero","software.aero","student.aero","trader.aero","trading.aero","trainer.aero","union.aero","workinggroup.aero","works.aero","af","gov.af","com.af","org.af","net.af","edu.af","ag","com.ag","org.ag","net.ag","co.ag","nom.ag","ai","off.ai","com.ai","net.ai","org.ai","al","com.al","edu.al","gov.al","mil.al","net.al","org.al","am","co.am","com.am","commune.am","net.am","org.am","ao","ed.ao","gv.ao","og.ao","co.ao","pb.ao","it.ao","aq","ar","bet.ar","com.ar","coop.ar","edu.ar","gob.ar","gov.ar","int.ar","mil.ar","musica.ar","mutual.ar","net.ar","org.ar","senasa.ar","tur.ar","arpa","e164.arpa","in-addr.arpa","ip6.arpa","iris.arpa","uri.arpa","urn.arpa","as","gov.as","asia","at","ac.at","co.at","gv.at","or.at","sth.ac.at","au","com.au","net.au","org.au","edu.au","gov.au","asn.au","id.au","info.au","conf.au","oz.au","act.au","nsw.au","nt.au","qld.au","sa.au","tas.au","vic.au","wa.au","act.edu.au","catholic.edu.au","nsw.edu.au","nt.edu.au","qld.edu.au","sa.edu.au","tas.edu.au","vic.edu.au","wa.edu.au","qld.gov.au","sa.gov.au","tas.gov.au","vic.gov.au","wa.gov.au","schools.nsw.edu.au","aw","com.aw","ax","az","com.az","net.az","int.az","gov.az","org.az","edu.az","info.az","pp.az","mil.az","name.az","pro.az","biz.az","ba","com.ba","edu.ba","gov.ba","mil.ba","net.ba","org.ba","bb","biz.bb","co.bb","com.bb","edu.bb","gov.bb","info.bb","net.bb","org.bb","store.bb","tv.bb","*.bd","be","ac.be","bf","gov.bf","bg","a.bg","b.bg","c.bg","d.bg","e.bg","f.bg","g.bg","h.bg","i.bg","j.bg","k.bg","l.bg","m.bg","n.bg","o.bg","p.bg","q.bg","r.bg","s.bg","t.bg","u.bg","v.bg","w.bg","x.bg","y.bg","z.bg","0.bg","1.bg","2.bg","3.bg","4.bg","5.bg","6.bg","7.bg","8.bg","9.bg","bh","com.bh","edu.bh","net.bh","org.bh","gov.bh","bi","co.bi","com.bi","edu.bi","or.bi","org.bi","biz","bj","asso.bj","barreau.bj","gouv.bj","bm","com.bm","edu.bm","gov.bm","net.bm","org.bm","bn","com.bn","edu.bn","gov.bn","net.bn","org.bn","bo","com.bo","edu.bo","gob.bo","int.bo","org.bo","net.bo","mil.bo","tv.bo","web.bo","academia.bo","agro.bo","arte.bo","blog.bo","bolivia.bo","ciencia.bo","cooperativa.bo","democracia.bo","deporte.bo","ecologia.bo","economia.bo","empresa.bo","indigena.bo","industria.bo","info.bo","medicina.bo","movimiento.bo","musica.bo","natural.bo","nombre.bo","noticias.bo","patria.bo","politica.bo","profesional.bo","plurinacional.bo","pueblo.bo","revista.bo","salud.bo","tecnologia.bo","tksat.bo","transporte.bo","wiki.bo","br","9guacu.br","abc.br","adm.br","adv.br","agr.br","aju.br","am.br","anani.br","aparecida.br","app.br","arq.br","art.br","ato.br","b.br","barueri.br","belem.br","bhz.br","bib.br","bio.br","blog.br","bmd.br","boavista.br","bsb.br","campinagrande.br","campinas.br","caxias.br","cim.br","cng.br","cnt.br","com.br","contagem.br","coop.br","coz.br","cri.br","cuiaba.br","curitiba.br","def.br","des.br","det.br","dev.br","ecn.br","eco.br","edu.br","emp.br","enf.br","eng.br","esp.br","etc.br","eti.br","far.br","feira.br","flog.br","floripa.br","fm.br","fnd.br","fortal.br","fot.br","foz.br","fst.br","g12.br","geo.br","ggf.br","goiania.br","gov.br","ac.gov.br","al.gov.br","am.gov.br","ap.gov.br","ba.gov.br","ce.gov.br","df.gov.br","es.gov.br","go.gov.br","ma.gov.br","mg.gov.br","ms.gov.br","mt.gov.br","pa.gov.br","pb.gov.br","pe.gov.br","pi.gov.br","pr.gov.br","rj.gov.br","rn.gov.br","ro.gov.br","rr.gov.br","rs.gov.br","sc.gov.br","se.gov.br","sp.gov.br","to.gov.br","gru.br","imb.br","ind.br","inf.br","jab.br","jampa.br","jdf.br","joinville.br","jor.br","jus.br","leg.br","lel.br","log.br","londrina.br","macapa.br","maceio.br","manaus.br","maringa.br","mat.br","med.br","mil.br","morena.br","mp.br","mus.br","natal.br","net.br","niteroi.br","*.nom.br","not.br","ntr.br","odo.br","ong.br","org.br","osasco.br","palmas.br","poa.br","ppg.br","pro.br","psc.br","psi.br","pvh.br","qsl.br","radio.br","rec.br","recife.br","rep.br","ribeirao.br","rio.br","riobranco.br","riopreto.br","salvador.br","sampa.br","santamaria.br","santoandre.br","saobernardo.br","saogonca.br","seg.br","sjc.br","slg.br","slz.br","sorocaba.br","srv.br","taxi.br","tc.br","tec.br","teo.br","the.br","tmp.br","trd.br","tur.br","tv.br","udi.br","vet.br","vix.br","vlog.br","wiki.br","zlg.br","bs","com.bs","net.bs","org.bs","edu.bs","gov.bs","bt","com.bt","edu.bt","gov.bt","net.bt","org.bt","bv","bw","co.bw","org.bw","by","gov.by","mil.by","com.by","of.by","bz","com.bz","net.bz","org.bz","edu.bz","gov.bz","ca","ab.ca","bc.ca","mb.ca","nb.ca","nf.ca","nl.ca","ns.ca","nt.ca","nu.ca","on.ca","pe.ca","qc.ca","sk.ca","yk.ca","gc.ca","cat","cc","cd","gov.cd","cf","cg","ch","ci","org.ci","or.ci","com.ci","co.ci","edu.ci","ed.ci","ac.ci","net.ci","go.ci","asso.ci","aéroport.ci","int.ci","presse.ci","md.ci","gouv.ci","*.ck","!www.ck","cl","co.cl","gob.cl","gov.cl","mil.cl","cm","co.cm","com.cm","gov.cm","net.cm","cn","ac.cn","com.cn","edu.cn","gov.cn","net.cn","org.cn","mil.cn","公司.cn","网络.cn","網絡.cn","ah.cn","bj.cn","cq.cn","fj.cn","gd.cn","gs.cn","gz.cn","gx.cn","ha.cn","hb.cn","he.cn","hi.cn","hl.cn","hn.cn","jl.cn","js.cn","jx.cn","ln.cn","nm.cn","nx.cn","qh.cn","sc.cn","sd.cn","sh.cn","sn.cn","sx.cn","tj.cn","xj.cn","xz.cn","yn.cn","zj.cn","hk.cn","mo.cn","tw.cn","co","arts.co","com.co","edu.co","firm.co","gov.co","info.co","int.co","mil.co","net.co","nom.co","org.co","rec.co","web.co","com","coop","cr","ac.cr","co.cr","ed.cr","fi.cr","go.cr","or.cr","sa.cr","cu","com.cu","edu.cu","org.cu","net.cu","gov.cu","inf.cu","cv","com.cv","edu.cv","int.cv","nome.cv","org.cv","cw","com.cw","edu.cw","net.cw","org.cw","cx","gov.cx","cy","ac.cy","biz.cy","com.cy","ekloges.cy","gov.cy","ltd.cy","mil.cy","net.cy","org.cy","press.cy","pro.cy","tm.cy","cz","de","dj","dk","dm","com.dm","net.dm","org.dm","edu.dm","gov.dm","do","art.do","com.do","edu.do","gob.do","gov.do","mil.do","net.do","org.do","sld.do","web.do","dz","art.dz","asso.dz","com.dz","edu.dz","gov.dz","org.dz","net.dz","pol.dz","soc.dz","tm.dz","ec","com.ec","info.ec","net.ec","fin.ec","k12.ec","med.ec","pro.ec","org.ec","edu.ec","gov.ec","gob.ec","mil.ec","edu","ee","edu.ee","gov.ee","riik.ee","lib.ee","med.ee","com.ee","pri.ee","aip.ee","org.ee","fie.ee","eg","com.eg","edu.eg","eun.eg","gov.eg","mil.eg","name.eg","net.eg","org.eg","sci.eg","*.er","es","com.es","nom.es","org.es","gob.es","edu.es","et","com.et","gov.et","org.et","edu.et","biz.et","name.et","info.et","net.et","eu","fi","aland.fi","fj","ac.fj","biz.fj","com.fj","gov.fj","info.fj","mil.fj","name.fj","net.fj","org.fj","pro.fj","*.fk","com.fm","edu.fm","net.fm","org.fm","fm","fo","fr","asso.fr","com.fr","gouv.fr","nom.fr","prd.fr","tm.fr","aeroport.fr","avocat.fr","avoues.fr","cci.fr","chambagri.fr","chirurgiens-dentistes.fr","experts-comptables.fr","geometre-expert.fr","greta.fr","huissier-justice.fr","medecin.fr","notaires.fr","pharmacien.fr","port.fr","veterinaire.fr","ga","gb","edu.gd","gov.gd","gd","ge","com.ge","edu.ge","gov.ge","org.ge","mil.ge","net.ge","pvt.ge","gf","gg","co.gg","net.gg","org.gg","gh","com.gh","edu.gh","gov.gh","org.gh","mil.gh","gi","com.gi","ltd.gi","gov.gi","mod.gi","edu.gi","org.gi","gl","co.gl","com.gl","edu.gl","net.gl","org.gl","gm","gn","ac.gn","com.gn","edu.gn","gov.gn","org.gn","net.gn","gov","gp","com.gp","net.gp","mobi.gp","edu.gp","org.gp","asso.gp","gq","gr","com.gr","edu.gr","net.gr","org.gr","gov.gr","gs","gt","com.gt","edu.gt","gob.gt","ind.gt","mil.gt","net.gt","org.gt","gu","com.gu","edu.gu","gov.gu","guam.gu","info.gu","net.gu","org.gu","web.gu","gw","gy","co.gy","com.gy","edu.gy","gov.gy","net.gy","org.gy","hk","com.hk","edu.hk","gov.hk","idv.hk","net.hk","org.hk","公司.hk","教育.hk","敎育.hk","政府.hk","個人.hk","个��.hk","箇人.hk","網络.hk","网络.hk","组織.hk","網絡.hk","网絡.hk","组织.hk","組織.hk","組织.hk","hm","hn","com.hn","edu.hn","org.hn","net.hn","mil.hn","gob.hn","hr","iz.hr","from.hr","name.hr","com.hr","ht","com.ht","shop.ht","firm.ht","info.ht","adult.ht","net.ht","pro.ht","org.ht","med.ht","art.ht","coop.ht","pol.ht","asso.ht","edu.ht","rel.ht","gouv.ht","perso.ht","hu","co.hu","info.hu","org.hu","priv.hu","sport.hu","tm.hu","2000.hu","agrar.hu","bolt.hu","casino.hu","city.hu","erotica.hu","erotika.hu","film.hu","forum.hu","games.hu","hotel.hu","ingatlan.hu","jogasz.hu","konyvelo.hu","lakas.hu","media.hu","news.hu","reklam.hu","sex.hu","shop.hu","suli.hu","szex.hu","tozsde.hu","utazas.hu","video.hu","id","ac.id","biz.id","co.id","desa.id","go.id","mil.id","my.id","net.id","or.id","ponpes.id","sch.id","web.id","ie","gov.ie","il","ac.il","co.il","gov.il","idf.il","k12.il","muni.il","net.il","org.il","im","ac.im","co.im","com.im","ltd.co.im","net.im","org.im","plc.co.im","tt.im","tv.im","in","co.in","firm.in","net.in","org.in","gen.in","ind.in","nic.in","ac.in","edu.in","res.in","gov.in","mil.in","info","int","eu.int","io","com.io","iq","gov.iq","edu.iq","mil.iq","com.iq","org.iq","net.iq","ir","ac.ir","co.ir","gov.ir","id.ir","net.ir","org.ir","sch.ir","ایران.ir","ايران.ir","is","net.is","com.is","edu.is","gov.is","org.is","int.is","it","gov.it","edu.it","abr.it","abruzzo.it","aosta-valley.it","aostavalley.it","bas.it","basilicata.it","cal.it","calabria.it","cam.it","campania.it","emilia-romagna.it","emiliaromagna.it","emr.it","friuli-v-giulia.it","friuli-ve-giulia.it","friuli-vegiulia.it","friuli-venezia-giulia.it","friuli-veneziagiulia.it","friuli-vgiulia.it","friuliv-giulia.it","friulive-giulia.it","friulivegiulia.it","friulivenezia-giulia.it","friuliveneziagiulia.it","friulivgiulia.it","fvg.it","laz.it","lazio.it","lig.it","liguria.it","lom.it","lombardia.it","lombardy.it","lucania.it","mar.it","marche.it","mol.it","molise.it","piedmont.it","piemonte.it","pmn.it","pug.it","puglia.it","sar.it","sardegna.it","sardinia.it","sic.it","sicilia.it","sicily.it","taa.it","tos.it","toscana.it","trentin-sud-tirol.it","trentin-süd-tirol.it","trentin-sudtirol.it","trentin-südtirol.it","trentin-sued-tirol.it","trentin-suedtirol.it","trentino-a-adige.it","trentino-aadige.it","trentino-alto-adige.it","trentino-altoadige.it","trentino-s-tirol.it","trentino-stirol.it","trentino-sud-tirol.it","trentino-süd-tirol.it","trentino-sudtirol.it","trentino-südtirol.it","trentino-sued-tirol.it","trentino-suedtirol.it","trentino.it","trentinoa-adige.it","trentinoaadige.it","trentinoalto-adige.it","trentinoaltoadige.it","trentinos-tirol.it","trentinostirol.it","trentinosud-tirol.it","trentinosüd-tirol.it","trentinosudtirol.it","trentinosüdtirol.it","trentinosued-tirol.it","trentinosuedtirol.it","trentinsud-tirol.it","trentinsüd-tirol.it","trentinsudtirol.it","trentinsüdtirol.it","trentinsued-tirol.it","trentinsuedtirol.it","tuscany.it","umb.it","umbria.it","val-d-aosta.it","val-daosta.it","vald-aosta.it","valdaosta.it","valle-aosta.it","valle-d-aosta.it","valle-daosta.it","valleaosta.it","valled-aosta.it","valledaosta.it","vallee-aoste.it","vallée-aoste.it","vallee-d-aoste.it","vallée-d-aoste.it","valleeaoste.it","valléeaoste.it","valleedaoste.it","valléedaoste.it","vao.it","vda.it","ven.it","veneto.it","ag.it","agrigento.it","al.it","alessandria.it","alto-adige.it","altoadige.it","an.it","ancona.it","andria-barletta-trani.it","andria-trani-barletta.it","andriabarlettatrani.it","andriatranibarletta.it","ao.it","aosta.it","aoste.it","ap.it","aq.it","aquila.it","ar.it","arezzo.it","ascoli-piceno.it","ascolipiceno.it","asti.it","at.it","av.it","avellino.it","ba.it","balsan-sudtirol.it","balsan-südtirol.it","balsan-suedtirol.it","balsan.it","bari.it","barletta-trani-andria.it","barlettatraniandria.it","belluno.it","benevento.it","bergamo.it","bg.it","bi.it","biella.it","bl.it","bn.it","bo.it","bologna.it","bolzano-altoadige.it","bolzano.it","bozen-sudtirol.it","bozen-südtirol.it","bozen-suedtirol.it","bozen.it","br.it","brescia.it","brindisi.it","bs.it","bt.it","bulsan-sudtirol.it","bulsan-südtirol.it","bulsan-suedtirol.it","bulsan.it","bz.it","ca.it","cagliari.it","caltanissetta.it","campidano-medio.it","campidanomedio.it","campobasso.it","carbonia-iglesias.it","carboniaiglesias.it","carrara-massa.it","carraramassa.it","caserta.it","catania.it","catanzaro.it","cb.it","ce.it","cesena-forli.it","cesena-forlì.it","cesenaforli.it","cesenaforlì.it","ch.it","chieti.it","ci.it","cl.it","cn.it","co.it","como.it","cosenza.it","cr.it","cremona.it","crotone.it","cs.it","ct.it","cuneo.it","cz.it","dell-ogliastra.it","dellogliastra.it","en.it","enna.it","fc.it","fe.it","fermo.it","ferrara.it","fg.it","fi.it","firenze.it","florence.it","fm.it","foggia.it","forli-cesena.it","forlì-cesena.it","forlicesena.it","forlìcesena.it","fr.it","frosinone.it","ge.it","genoa.it","genova.it","go.it","gorizia.it","gr.it","grosseto.it","iglesias-carbonia.it","iglesiascarbonia.it","im.it","imperia.it","is.it","isernia.it","kr.it","la-spezia.it","laquila.it","laspezia.it","latina.it","lc.it","le.it","lecce.it","lecco.it","li.it","livorno.it","lo.it","lodi.it","lt.it","lu.it","lucca.it","macerata.it","mantova.it","massa-carrara.it","massacarrara.it","matera.it","mb.it","mc.it","me.it","medio-campidano.it","mediocampidano.it","messina.it","mi.it","milan.it","milano.it","mn.it","mo.it","modena.it","monza-brianza.it","monza-e-della-brianza.it","monza.it","monzabrianza.it","monzaebrianza.it","monzaedellabrianza.it","ms.it","mt.it","na.it","naples.it","napoli.it","no.it","novara.it","nu.it","nuoro.it","og.it","ogliastra.it","olbia-tempio.it","olbiatempio.it","or.it","oristano.it","ot.it","pa.it","padova.it","padua.it","palermo.it","parma.it","pavia.it","pc.it","pd.it","pe.it","perugia.it","pesaro-urbino.it","pesarourbino.it","pescara.it","pg.it","pi.it","piacenza.it","pisa.it","pistoia.it","pn.it","po.it","pordenone.it","potenza.it","pr.it","prato.it","pt.it","pu.it","pv.it","pz.it","ra.it","ragusa.it","ravenna.it","rc.it","re.it","reggio-calabria.it","reggio-emilia.it","reggiocalabria.it","reggioemilia.it","rg.it","ri.it","rieti.it","rimini.it","rm.it","rn.it","ro.it","roma.it","rome.it","rovigo.it","sa.it","salerno.it","sassari.it","savona.it","si.it","siena.it","siracusa.it","so.it","sondrio.it","sp.it","sr.it","ss.it","suedtirol.it","südtirol.it","sv.it","ta.it","taranto.it","te.it","tempio-olbia.it","tempioolbia.it","teramo.it","terni.it","tn.it","to.it","torino.it","tp.it","tr.it","trani-andria-barletta.it","trani-barletta-andria.it","traniandriabarletta.it","tranibarlettaandria.it","trapani.it","trento.it","treviso.it","trieste.it","ts.it","turin.it","tv.it","ud.it","udine.it","urbino-pesaro.it","urbinopesaro.it","va.it","varese.it","vb.it","vc.it","ve.it","venezia.it","venice.it","verbania.it","vercelli.it","verona.it","vi.it","vibo-valentia.it","vibovalentia.it","vicenza.it","viterbo.it","vr.it","vs.it","vt.it","vv.it","je","co.je","net.je","org.je","*.jm","jo","com.jo","org.jo","net.jo","edu.jo","sch.jo","gov.jo","mil.jo","name.jo","jobs","jp","ac.jp","ad.jp","co.jp","ed.jp","go.jp","gr.jp","lg.jp","ne.jp","or.jp","aichi.jp","akita.jp","aomori.jp","chiba.jp","ehime.jp","fukui.jp","fukuoka.jp","fukushima.jp","gifu.jp","gunma.jp","hiroshima.jp","hokkaido.jp","hyogo.jp","ibaraki.jp","ishikawa.jp","iwate.jp","kagawa.jp","kagoshima.jp","kanagawa.jp","kochi.jp","kumamoto.jp","kyoto.jp","mie.jp","miyagi.jp","miyazaki.jp","nagano.jp","nagasaki.jp","nara.jp","niigata.jp","oita.jp","okayama.jp","okinawa.jp","osaka.jp","saga.jp","saitama.jp","shiga.jp","shimane.jp","shizuoka.jp","tochigi.jp","tokushima.jp","tokyo.jp","tottori.jp","toyama.jp","wakayama.jp","yamagata.jp","yamaguchi.jp","yamanashi.jp","栃木.jp","愛知.jp","愛媛.jp","兵庫.jp","熊本.jp","茨城.jp","北海道.jp","千葉.jp","和歌山.jp","長崎.jp","長野.jp","新潟.jp","青森.jp","静岡.jp","東京.jp","石川.jp","埼玉.jp","三重.jp","京都.jp","佐賀.jp","大分.jp","大阪.jp","奈良.jp","宮城.jp","宮崎.jp","富山.jp","山口.jp","山形.jp","山梨.jp","岩手.jp","岐阜.jp","岡山.jp","島根.jp","広島.jp","徳島.jp","沖縄.jp","滋賀.jp","神奈川.jp","福井.jp","福岡.jp","福島.jp","秋田.jp","群馬.jp","香川.jp","高知.jp","鳥取.jp","鹿児島.jp","*.kawasaki.jp","*.kitakyushu.jp","*.kobe.jp","*.nagoya.jp","*.sapporo.jp","*.sendai.jp","*.yokohama.jp","!city.kawasaki.jp","!city.kitakyushu.jp","!city.kobe.jp","!city.nagoya.jp","!city.sapporo.jp","!city.sendai.jp","!city.yokohama.jp","aisai.aichi.jp","ama.aichi.jp","anjo.aichi.jp","asuke.aichi.jp","chiryu.aichi.jp","chita.aichi.jp","fuso.aichi.jp","gamagori.aichi.jp","handa.aichi.jp","hazu.aichi.jp","hekinan.aichi.jp","higashiura.aichi.jp","ichinomiya.aichi.jp","inazawa.aichi.jp","inuyama.aichi.jp","isshiki.aichi.jp","iwakura.aichi.jp","kanie.aichi.jp","kariya.aichi.jp","kasugai.aichi.jp","kira.aichi.jp","kiyosu.aichi.jp","komaki.aichi.jp","konan.aichi.jp","kota.aichi.jp","mihama.aichi.jp","miyoshi.aichi.jp","nishio.aichi.jp","nisshin.aichi.jp","obu.aichi.jp","oguchi.aichi.jp","oharu.aichi.jp","okazaki.aichi.jp","owariasahi.aichi.jp","seto.aichi.jp","shikatsu.aichi.jp","shinshiro.aichi.jp","shitara.aichi.jp","tahara.aichi.jp","takahama.aichi.jp","tobishima.aichi.jp","toei.aichi.jp","togo.aichi.jp","tokai.aichi.jp","tokoname.aichi.jp","toyoake.aichi.jp","toyohashi.aichi.jp","toyokawa.aichi.jp","toyone.aichi.jp","toyota.aichi.jp","tsushima.aichi.jp","yatomi.aichi.jp","akita.akita.jp","daisen.akita.jp","fujisato.akita.jp","gojome.akita.jp","hachirogata.akita.jp","happou.akita.jp","higashinaruse.akita.jp","honjo.akita.jp","honjyo.akita.jp","ikawa.akita.jp","kamikoani.akita.jp","kamioka.akita.jp","katagami.akita.jp","kazuno.akita.jp","kitaakita.akita.jp","kosaka.akita.jp","kyowa.akita.jp","misato.akita.jp","mitane.akita.jp","moriyoshi.akita.jp","nikaho.akita.jp","noshiro.akita.jp","odate.akita.jp","oga.akita.jp","ogata.akita.jp","semboku.akita.jp","yokote.akita.jp","yurihonjo.akita.jp","aomori.aomori.jp","gonohe.aomori.jp","hachinohe.aomori.jp","hashikami.aomori.jp","hiranai.aomori.jp","hirosaki.aomori.jp","itayanagi.aomori.jp","kuroishi.aomori.jp","misawa.aomori.jp","mutsu.aomori.jp","nakadomari.aomori.jp","noheji.aomori.jp","oirase.aomori.jp","owani.aomori.jp","rokunohe.aomori.jp","sannohe.aomori.jp","shichinohe.aomori.jp","shingo.aomori.jp","takko.aomori.jp","towada.aomori.jp","tsugaru.aomori.jp","tsuruta.aomori.jp","abiko.chiba.jp","asahi.chiba.jp","chonan.chiba.jp","chosei.chiba.jp","choshi.chiba.jp","chuo.chiba.jp","funabashi.chiba.jp","futtsu.chiba.jp","hanamigawa.chiba.jp","ichihara.chiba.jp","ichikawa.chiba.jp","ichinomiya.chiba.jp","inzai.chiba.jp","isumi.chiba.jp","kamagaya.chiba.jp","kamogawa.chiba.jp","kashiwa.chiba.jp","katori.chiba.jp","katsuura.chiba.jp","kimitsu.chiba.jp","kisarazu.chiba.jp","kozaki.chiba.jp","kujukuri.chiba.jp","kyonan.chiba.jp","matsudo.chiba.jp","midori.chiba.jp","mihama.chiba.jp","minamiboso.chiba.jp","mobara.chiba.jp","mutsuzawa.chiba.jp","nagara.chiba.jp","nagareyama.chiba.jp","narashino.chiba.jp","narita.chiba.jp","noda.chiba.jp","oamishirasato.chiba.jp","omigawa.chiba.jp","onjuku.chiba.jp","otaki.chiba.jp","sakae.chiba.jp","sakura.chiba.jp","shimofusa.chiba.jp","shirako.chiba.jp","shiroi.chiba.jp","shisui.chiba.jp","sodegaura.chiba.jp","sosa.chiba.jp","tako.chiba.jp","tateyama.chiba.jp","togane.chiba.jp","tohnosho.chiba.jp","tomisato.chiba.jp","urayasu.chiba.jp","yachimata.chiba.jp","yachiyo.chiba.jp","yokaichiba.chiba.jp","yokoshibahikari.chiba.jp","yotsukaido.chiba.jp","ainan.ehime.jp","honai.ehime.jp","ikata.ehime.jp","imabari.ehime.jp","iyo.ehime.jp","kamijima.ehime.jp","kihoku.ehime.jp","kumakogen.ehime.jp","masaki.ehime.jp","matsuno.ehime.jp","matsuyama.ehime.jp","namikata.ehime.jp","niihama.ehime.jp","ozu.ehime.jp","saijo.ehime.jp","seiyo.ehime.jp","shikokuchuo.ehime.jp","tobe.ehime.jp","toon.ehime.jp","uchiko.ehime.jp","uwajima.ehime.jp","yawatahama.ehime.jp","echizen.fukui.jp","eiheiji.fukui.jp","fukui.fukui.jp","ikeda.fukui.jp","katsuyama.fukui.jp","mihama.fukui.jp","minamiechizen.fukui.jp","obama.fukui.jp","ohi.fukui.jp","ono.fukui.jp","sabae.fukui.jp","sakai.fukui.jp","takahama.fukui.jp","tsuruga.fukui.jp","wakasa.fukui.jp","ashiya.fukuoka.jp","buzen.fukuoka.jp","chikugo.fukuoka.jp","chikuho.fukuoka.jp","chikujo.fukuoka.jp","chikushino.fukuoka.jp","chikuzen.fukuoka.jp","chuo.fukuoka.jp","dazaifu.fukuoka.jp","fukuchi.fukuoka.jp","hakata.fukuoka.jp","higashi.fukuoka.jp","hirokawa.fukuoka.jp","hisayama.fukuoka.jp","iizuka.fukuoka.jp","inatsuki.fukuoka.jp","kaho.fukuoka.jp","kasuga.fukuoka.jp","kasuya.fukuoka.jp","kawara.fukuoka.jp","keisen.fukuoka.jp","koga.fukuoka.jp","kurate.fukuoka.jp","kurogi.fukuoka.jp","kurume.fukuoka.jp","minami.fukuoka.jp","miyako.fukuoka.jp","miyama.fukuoka.jp","miyawaka.fukuoka.jp","mizumaki.fukuoka.jp","munakata.fukuoka.jp","nakagawa.fukuoka.jp","nakama.fukuoka.jp","nishi.fukuoka.jp","nogata.fukuoka.jp","ogori.fukuoka.jp","okagaki.fukuoka.jp","okawa.fukuoka.jp","oki.fukuoka.jp","omuta.fukuoka.jp","onga.fukuoka.jp","onojo.fukuoka.jp","oto.fukuoka.jp","saigawa.fukuoka.jp","sasaguri.fukuoka.jp","shingu.fukuoka.jp","shinyoshitomi.fukuoka.jp","shonai.fukuoka.jp","soeda.fukuoka.jp","sue.fukuoka.jp","tachiarai.fukuoka.jp","tagawa.fukuoka.jp","takata.fukuoka.jp","toho.fukuoka.jp","toyotsu.fukuoka.jp","tsuiki.fukuoka.jp","ukiha.fukuoka.jp","umi.fukuoka.jp","usui.fukuoka.jp","yamada.fukuoka.jp","yame.fukuoka.jp","yanagawa.fukuoka.jp","yukuhashi.fukuoka.jp","aizubange.fukushima.jp","aizumisato.fukushima.jp","aizuwakamatsu.fukushima.jp","asakawa.fukushima.jp","bandai.fukushima.jp","date.fukushima.jp","fukushima.fukushima.jp","furudono.fukushima.jp","futaba.fukushima.jp","hanawa.fukushima.jp","higashi.fukushima.jp","hirata.fukushima.jp","hirono.fukushima.jp","iitate.fukushima.jp","inawashiro.fukushima.jp","ishikawa.fukushima.jp","iwaki.fukushima.jp","izumizaki.fukushima.jp","kagamiishi.fukushima.jp","kaneyama.fukushima.jp","kawamata.fukushima.jp","kitakata.fukushima.jp","kitashiobara.fukushima.jp","koori.fukushima.jp","koriyama.fukushima.jp","kunimi.fukushima.jp","miharu.fukushima.jp","mishima.fukushima.jp","namie.fukushima.jp","nango.fukushima.jp","nishiaizu.fukushima.jp","nishigo.fukushima.jp","okuma.fukushima.jp","omotego.fukushima.jp","ono.fukushima.jp","otama.fukushima.jp","samegawa.fukushima.jp","shimogo.fukushima.jp","shirakawa.fukushima.jp","showa.fukushima.jp","soma.fukushima.jp","sukagawa.fukushima.jp","taishin.fukushima.jp","tamakawa.fukushima.jp","tanagura.fukushima.jp","tenei.fukushima.jp","yabuki.fukushima.jp","yamato.fukushima.jp","yamatsuri.fukushima.jp","yanaizu.fukushima.jp","yugawa.fukushima.jp","anpachi.gifu.jp","ena.gifu.jp","gifu.gifu.jp","ginan.gifu.jp","godo.gifu.jp","gujo.gifu.jp","hashima.gifu.jp","hichiso.gifu.jp","hida.gifu.jp","higashishirakawa.gifu.jp","ibigawa.gifu.jp","ikeda.gifu.jp","kakamigahara.gifu.jp","kani.gifu.jp","kasahara.gifu.jp","kasamatsu.gifu.jp","kawaue.gifu.jp","kitagata.gifu.jp","mino.gifu.jp","minokamo.gifu.jp","mitake.gifu.jp","mizunami.gifu.jp","motosu.gifu.jp","nakatsugawa.gifu.jp","ogaki.gifu.jp","sakahogi.gifu.jp","seki.gifu.jp","sekigahara.gifu.jp","shirakawa.gifu.jp","tajimi.gifu.jp","takayama.gifu.jp","tarui.gifu.jp","toki.gifu.jp","tomika.gifu.jp","wanouchi.gifu.jp","yamagata.gifu.jp","yaotsu.gifu.jp","yoro.gifu.jp","annaka.gunma.jp","chiyoda.gunma.jp","fujioka.gunma.jp","higashiagatsuma.gunma.jp","isesaki.gunma.jp","itakura.gunma.jp","kanna.gunma.jp","kanra.gunma.jp","katashina.gunma.jp","kawaba.gunma.jp","kiryu.gunma.jp","kusatsu.gunma.jp","maebashi.gunma.jp","meiwa.gunma.jp","midori.gunma.jp","minakami.gunma.jp","naganohara.gunma.jp","nakanojo.gunma.jp","nanmoku.gunma.jp","numata.gunma.jp","oizumi.gunma.jp","ora.gunma.jp","ota.gunma.jp","shibukawa.gunma.jp","shimonita.gunma.jp","shinto.gunma.jp","showa.gunma.jp","takasaki.gunma.jp","takayama.gunma.jp","tamamura.gunma.jp","tatebayashi.gunma.jp","tomioka.gunma.jp","tsukiyono.gunma.jp","tsumagoi.gunma.jp","ueno.gunma.jp","yoshioka.gunma.jp","asaminami.hiroshima.jp","daiwa.hiroshima.jp","etajima.hiroshima.jp","fuchu.hiroshima.jp","fukuyama.hiroshima.jp","hatsukaichi.hiroshima.jp","higashihiroshima.hiroshima.jp","hongo.hiroshima.jp","jinsekikogen.hiroshima.jp","kaita.hiroshima.jp","kui.hiroshima.jp","kumano.hiroshima.jp","kure.hiroshima.jp","mihara.hiroshima.jp","miyoshi.hiroshima.jp","naka.hiroshima.jp","onomichi.hiroshima.jp","osakikamijima.hiroshima.jp","otake.hiroshima.jp","saka.hiroshima.jp","sera.hiroshima.jp","seranishi.hiroshima.jp","shinichi.hiroshima.jp","shobara.hiroshima.jp","takehara.hiroshima.jp","abashiri.hokkaido.jp","abira.hokkaido.jp","aibetsu.hokkaido.jp","akabira.hokkaido.jp","akkeshi.hokkaido.jp","asahikawa.hokkaido.jp","ashibetsu.hokkaido.jp","ashoro.hokkaido.jp","assabu.hokkaido.jp","atsuma.hokkaido.jp","bibai.hokkaido.jp","biei.hokkaido.jp","bifuka.hokkaido.jp","bihoro.hokkaido.jp","biratori.hokkaido.jp","chippubetsu.hokkaido.jp","chitose.hokkaido.jp","date.hokkaido.jp","ebetsu.hokkaido.jp","embetsu.hokkaido.jp","eniwa.hokkaido.jp","erimo.hokkaido.jp","esan.hokkaido.jp","esashi.hokkaido.jp","fukagawa.hokkaido.jp","fukushima.hokkaido.jp","furano.hokkaido.jp","furubira.hokkaido.jp","haboro.hokkaido.jp","hakodate.hokkaido.jp","hamatonbetsu.hokkaido.jp","hidaka.hokkaido.jp","higashikagura.hokkaido.jp","higashikawa.hokkaido.jp","hiroo.hokkaido.jp","hokuryu.hokkaido.jp","hokuto.hokkaido.jp","honbetsu.hokkaido.jp","horokanai.hokkaido.jp","horonobe.hokkaido.jp","ikeda.hokkaido.jp","imakane.hokkaido.jp","ishikari.hokkaido.jp","iwamizawa.hokkaido.jp","iwanai.hokkaido.jp","kamifurano.hokkaido.jp","kamikawa.hokkaido.jp","kamishihoro.hokkaido.jp","kamisunagawa.hokkaido.jp","kamoenai.hokkaido.jp","kayabe.hokkaido.jp","kembuchi.hokkaido.jp","kikonai.hokkaido.jp","kimobetsu.hokkaido.jp","kitahiroshima.hokkaido.jp","kitami.hokkaido.jp","kiyosato.hokkaido.jp","koshimizu.hokkaido.jp","kunneppu.hokkaido.jp","kuriyama.hokkaido.jp","kuromatsunai.hokkaido.jp","kushiro.hokkaido.jp","kutchan.hokkaido.jp","kyowa.hokkaido.jp","mashike.hokkaido.jp","matsumae.hokkaido.jp","mikasa.hokkaido.jp","minamifurano.hokkaido.jp","mombetsu.hokkaido.jp","moseushi.hokkaido.jp","mukawa.hokkaido.jp","muroran.hokkaido.jp","naie.hokkaido.jp","nakagawa.hokkaido.jp","nakasatsunai.hokkaido.jp","nakatombetsu.hokkaido.jp","nanae.hokkaido.jp","nanporo.hokkaido.jp","nayoro.hokkaido.jp","nemuro.hokkaido.jp","niikappu.hokkaido.jp","niki.hokkaido.jp","nishiokoppe.hokkaido.jp","noboribetsu.hokkaido.jp","numata.hokkaido.jp","obihiro.hokkaido.jp","obira.hokkaido.jp","oketo.hokkaido.jp","okoppe.hokkaido.jp","otaru.hokkaido.jp","otobe.hokkaido.jp","otofuke.hokkaido.jp","otoineppu.hokkaido.jp","oumu.hokkaido.jp","ozora.hokkaido.jp","pippu.hokkaido.jp","rankoshi.hokkaido.jp","rebun.hokkaido.jp","rikubetsu.hokkaido.jp","rishiri.hokkaido.jp","rishirifuji.hokkaido.jp","saroma.hokkaido.jp","sarufutsu.hokkaido.jp","shakotan.hokkaido.jp","shari.hokkaido.jp","shibecha.hokkaido.jp","shibetsu.hokkaido.jp","shikabe.hokkaido.jp","shikaoi.hokkaido.jp","shimamaki.hokkaido.jp","shimizu.hokkaido.jp","shimokawa.hokkaido.jp","shinshinotsu.hokkaido.jp","shintoku.hokkaido.jp","shiranuka.hokkaido.jp","shiraoi.hokkaido.jp","shiriuchi.hokkaido.jp","sobetsu.hokkaido.jp","sunagawa.hokkaido.jp","taiki.hokkaido.jp","takasu.hokkaido.jp","takikawa.hokkaido.jp","takinoue.hokkaido.jp","teshikaga.hokkaido.jp","tobetsu.hokkaido.jp","tohma.hokkaido.jp","tomakomai.hokkaido.jp","tomari.hokkaido.jp","toya.hokkaido.jp","toyako.hokkaido.jp","toyotomi.hokkaido.jp","toyoura.hokkaido.jp","tsubetsu.hokkaido.jp","tsukigata.hokkaido.jp","urakawa.hokkaido.jp","urausu.hokkaido.jp","uryu.hokkaido.jp","utashinai.hokkaido.jp","wakkanai.hokkaido.jp","wassamu.hokkaido.jp","yakumo.hokkaido.jp","yoichi.hokkaido.jp","aioi.hyogo.jp","akashi.hyogo.jp","ako.hyogo.jp","amagasaki.hyogo.jp","aogaki.hyogo.jp","asago.hyogo.jp","ashiya.hyogo.jp","awaji.hyogo.jp","fukusaki.hyogo.jp","goshiki.hyogo.jp","harima.hyogo.jp","himeji.hyogo.jp","ichikawa.hyogo.jp","inagawa.hyogo.jp","itami.hyogo.jp","kakogawa.hyogo.jp","kamigori.hyogo.jp","kamikawa.hyogo.jp","kasai.hyogo.jp","kasuga.hyogo.jp","kawanishi.hyogo.jp","miki.hyogo.jp","minamiawaji.hyogo.jp","nishinomiya.hyogo.jp","nishiwaki.hyogo.jp","ono.hyogo.jp","sanda.hyogo.jp","sannan.hyogo.jp","sasayama.hyogo.jp","sayo.hyogo.jp","shingu.hyogo.jp","shinonsen.hyogo.jp","shiso.hyogo.jp","sumoto.hyogo.jp","taishi.hyogo.jp","taka.hyogo.jp","takarazuka.hyogo.jp","takasago.hyogo.jp","takino.hyogo.jp","tamba.hyogo.jp","tatsuno.hyogo.jp","toyooka.hyogo.jp","yabu.hyogo.jp","yashiro.hyogo.jp","yoka.hyogo.jp","yokawa.hyogo.jp","ami.ibaraki.jp","asahi.ibaraki.jp","bando.ibaraki.jp","chikusei.ibaraki.jp","daigo.ibaraki.jp","fujishiro.ibaraki.jp","hitachi.ibaraki.jp","hitachinaka.ibaraki.jp","hitachiomiya.ibaraki.jp","hitachiota.ibaraki.jp","ibaraki.ibaraki.jp","ina.ibaraki.jp","inashiki.ibaraki.jp","itako.ibaraki.jp","iwama.ibaraki.jp","joso.ibaraki.jp","kamisu.ibaraki.jp","kasama.ibaraki.jp","kashima.ibaraki.jp","kasumigaura.ibaraki.jp","koga.ibaraki.jp","miho.ibaraki.jp","mito.ibaraki.jp","moriya.ibaraki.jp","naka.ibaraki.jp","namegata.ibaraki.jp","oarai.ibaraki.jp","ogawa.ibaraki.jp","omitama.ibaraki.jp","ryugasaki.ibaraki.jp","sakai.ibaraki.jp","sakuragawa.ibaraki.jp","shimodate.ibaraki.jp","shimotsuma.ibaraki.jp","shirosato.ibaraki.jp","sowa.ibaraki.jp","suifu.ibaraki.jp","takahagi.ibaraki.jp","tamatsukuri.ibaraki.jp","tokai.ibaraki.jp","tomobe.ibaraki.jp","tone.ibaraki.jp","toride.ibaraki.jp","tsuchiura.ibaraki.jp","tsukuba.ibaraki.jp","uchihara.ibaraki.jp","ushiku.ibaraki.jp","yachiyo.ibaraki.jp","yamagata.ibaraki.jp","yawara.ibaraki.jp","yuki.ibaraki.jp","anamizu.ishikawa.jp","hakui.ishikawa.jp","hakusan.ishikawa.jp","kaga.ishikawa.jp","kahoku.ishikawa.jp","kanazawa.ishikawa.jp","kawakita.ishikawa.jp","komatsu.ishikawa.jp","nakanoto.ishikawa.jp","nanao.ishikawa.jp","nomi.ishikawa.jp","nonoichi.ishikawa.jp","noto.ishikawa.jp","shika.ishikawa.jp","suzu.ishikawa.jp","tsubata.ishikawa.jp","tsurugi.ishikawa.jp","uchinada.ishikawa.jp","wajima.ishikawa.jp","fudai.iwate.jp","fujisawa.iwate.jp","hanamaki.iwate.jp","hiraizumi.iwate.jp","hirono.iwate.jp","ichinohe.iwate.jp","ichinoseki.iwate.jp","iwaizumi.iwate.jp","iwate.iwate.jp","joboji.iwate.jp","kamaishi.iwate.jp","kanegasaki.iwate.jp","karumai.iwate.jp","kawai.iwate.jp","kitakami.iwate.jp","kuji.iwate.jp","kunohe.iwate.jp","kuzumaki.iwate.jp","miyako.iwate.jp","mizusawa.iwate.jp","morioka.iwate.jp","ninohe.iwate.jp","noda.iwate.jp","ofunato.iwate.jp","oshu.iwate.jp","otsuchi.iwate.jp","rikuzentakata.iwate.jp","shiwa.iwate.jp","shizukuishi.iwate.jp","sumita.iwate.jp","tanohata.iwate.jp","tono.iwate.jp","yahaba.iwate.jp","yamada.iwate.jp","ayagawa.kagawa.jp","higashikagawa.kagawa.jp","kanonji.kagawa.jp","kotohira.kagawa.jp","manno.kagawa.jp","marugame.kagawa.jp","mitoyo.kagawa.jp","naoshima.kagawa.jp","sanuki.kagawa.jp","tadotsu.kagawa.jp","takamatsu.kagawa.jp","tonosho.kagawa.jp","uchinomi.kagawa.jp","utazu.kagawa.jp","zentsuji.kagawa.jp","akune.kagoshima.jp","amami.kagoshima.jp","hioki.kagoshima.jp","isa.kagoshima.jp","isen.kagoshima.jp","izumi.kagoshima.jp","kagoshima.kagoshima.jp","kanoya.kagoshima.jp","kawanabe.kagoshima.jp","kinko.kagoshima.jp","kouyama.kagoshima.jp","makurazaki.kagoshima.jp","matsumoto.kagoshima.jp","minamitane.kagoshima.jp","nakatane.kagoshima.jp","nishinoomote.kagoshima.jp","satsumasendai.kagoshima.jp","soo.kagoshima.jp","tarumizu.kagoshima.jp","yusui.kagoshima.jp","aikawa.kanagawa.jp","atsugi.kanagawa.jp","ayase.kanagawa.jp","chigasaki.kanagawa.jp","ebina.kanagawa.jp","fujisawa.kanagawa.jp","hadano.kanagawa.jp","hakone.kanagawa.jp","hiratsuka.kanagawa.jp","isehara.kanagawa.jp","kaisei.kanagawa.jp","kamakura.kanagawa.jp","kiyokawa.kanagawa.jp","matsuda.kanagawa.jp","minamiashigara.kanagawa.jp","miura.kanagawa.jp","nakai.kanagawa.jp","ninomiya.kanagawa.jp","odawara.kanagawa.jp","oi.kanagawa.jp","oiso.kanagawa.jp","sagamihara.kanagawa.jp","samukawa.kanagawa.jp","tsukui.kanagawa.jp","yamakita.kanagawa.jp","yamato.kanagawa.jp","yokosuka.kanagawa.jp","yugawara.kanagawa.jp","zama.kanagawa.jp","zushi.kanagawa.jp","aki.kochi.jp","geisei.kochi.jp","hidaka.kochi.jp","higashitsuno.kochi.jp","ino.kochi.jp","kagami.kochi.jp","kami.kochi.jp","kitagawa.kochi.jp","kochi.kochi.jp","mihara.kochi.jp","motoyama.kochi.jp","muroto.kochi.jp","nahari.kochi.jp","nakamura.kochi.jp","nankoku.kochi.jp","nishitosa.kochi.jp","niyodogawa.kochi.jp","ochi.kochi.jp","okawa.kochi.jp","otoyo.kochi.jp","otsuki.kochi.jp","sakawa.kochi.jp","sukumo.kochi.jp","susaki.kochi.jp","tosa.kochi.jp","tosashimizu.kochi.jp","toyo.kochi.jp","tsuno.kochi.jp","umaji.kochi.jp","yasuda.kochi.jp","yusuhara.kochi.jp","amakusa.kumamoto.jp","arao.kumamoto.jp","aso.kumamoto.jp","choyo.kumamoto.jp","gyokuto.kumamoto.jp","kamiamakusa.kumamoto.jp","kikuchi.kumamoto.jp","kumamoto.kumamoto.jp","mashiki.kumamoto.jp","mifune.kumamoto.jp","minamata.kumamoto.jp","minamioguni.kumamoto.jp","nagasu.kumamoto.jp","nishihara.kumamoto.jp","oguni.kumamoto.jp","ozu.kumamoto.jp","sumoto.kumamoto.jp","takamori.kumamoto.jp","uki.kumamoto.jp","uto.kumamoto.jp","yamaga.kumamoto.jp","yamato.kumamoto.jp","yatsushiro.kumamoto.jp","ayabe.kyoto.jp","fukuchiyama.kyoto.jp","higashiyama.kyoto.jp","ide.kyoto.jp","ine.kyoto.jp","joyo.kyoto.jp","kameoka.kyoto.jp","kamo.kyoto.jp","kita.kyoto.jp","kizu.kyoto.jp","kumiyama.kyoto.jp","kyotamba.kyoto.jp","kyotanabe.kyoto.jp","kyotango.kyoto.jp","maizuru.kyoto.jp","minami.kyoto.jp","minamiyamashiro.kyoto.jp","miyazu.kyoto.jp","muko.kyoto.jp","nagaokakyo.kyoto.jp","nakagyo.kyoto.jp","nantan.kyoto.jp","oyamazaki.kyoto.jp","sakyo.kyoto.jp","seika.kyoto.jp","tanabe.kyoto.jp","uji.kyoto.jp","ujitawara.kyoto.jp","wazuka.kyoto.jp","yamashina.kyoto.jp","yawata.kyoto.jp","asahi.mie.jp","inabe.mie.jp","ise.mie.jp","kameyama.mie.jp","kawagoe.mie.jp","kiho.mie.jp","kisosaki.mie.jp","kiwa.mie.jp","komono.mie.jp","kumano.mie.jp","kuwana.mie.jp","matsusaka.mie.jp","meiwa.mie.jp","mihama.mie.jp","minamiise.mie.jp","misugi.mie.jp","miyama.mie.jp","nabari.mie.jp","shima.mie.jp","suzuka.mie.jp","tado.mie.jp","taiki.mie.jp","taki.mie.jp","tamaki.mie.jp","toba.mie.jp","tsu.mie.jp","udono.mie.jp","ureshino.mie.jp","watarai.mie.jp","yokkaichi.mie.jp","furukawa.miyagi.jp","higashimatsushima.miyagi.jp","ishinomaki.miyagi.jp","iwanuma.miyagi.jp","kakuda.miyagi.jp","kami.miyagi.jp","kawasaki.miyagi.jp","marumori.miyagi.jp","matsushima.miyagi.jp","minamisanriku.miyagi.jp","misato.miyagi.jp","murata.miyagi.jp","natori.miyagi.jp","ogawara.miyagi.jp","ohira.miyagi.jp","onagawa.miyagi.jp","osaki.miyagi.jp","rifu.miyagi.jp","semine.miyagi.jp","shibata.miyagi.jp","shichikashuku.miyagi.jp","shikama.miyagi.jp","shiogama.miyagi.jp","shiroishi.miyagi.jp","tagajo.miyagi.jp","taiwa.miyagi.jp","tome.miyagi.jp","tomiya.miyagi.jp","wakuya.miyagi.jp","watari.miyagi.jp","yamamoto.miyagi.jp","zao.miyagi.jp","aya.miyazaki.jp","ebino.miyazaki.jp","gokase.miyazaki.jp","hyuga.miyazaki.jp","kadogawa.miyazaki.jp","kawaminami.miyazaki.jp","kijo.miyazaki.jp","kitagawa.miyazaki.jp","kitakata.miyazaki.jp","kitaura.miyazaki.jp","kobayashi.miyazaki.jp","kunitomi.miyazaki.jp","kushima.miyazaki.jp","mimata.miyazaki.jp","miyakonojo.miyazaki.jp","miyazaki.miyazaki.jp","morotsuka.miyazaki.jp","nichinan.miyazaki.jp","nishimera.miyazaki.jp","nobeoka.miyazaki.jp","saito.miyazaki.jp","shiiba.miyazaki.jp","shintomi.miyazaki.jp","takaharu.miyazaki.jp","takanabe.miyazaki.jp","takazaki.miyazaki.jp","tsuno.miyazaki.jp","achi.nagano.jp","agematsu.nagano.jp","anan.nagano.jp","aoki.nagano.jp","asahi.nagano.jp","azumino.nagano.jp","chikuhoku.nagano.jp","chikuma.nagano.jp","chino.nagano.jp","fujimi.nagano.jp","hakuba.nagano.jp","hara.nagano.jp","hiraya.nagano.jp","iida.nagano.jp","iijima.nagano.jp","iiyama.nagano.jp","iizuna.nagano.jp","ikeda.nagano.jp","ikusaka.nagano.jp","ina.nagano.jp","karuizawa.nagano.jp","kawakami.nagano.jp","kiso.nagano.jp","kisofukushima.nagano.jp","kitaaiki.nagano.jp","komagane.nagano.jp","komoro.nagano.jp","matsukawa.nagano.jp","matsumoto.nagano.jp","miasa.nagano.jp","minamiaiki.nagano.jp","minamimaki.nagano.jp","minamiminowa.nagano.jp","minowa.nagano.jp","miyada.nagano.jp","miyota.nagano.jp","mochizuki.nagano.jp","nagano.nagano.jp","nagawa.nagano.jp","nagiso.nagano.jp","nakagawa.nagano.jp","nakano.nagano.jp","nozawaonsen.nagano.jp","obuse.nagano.jp","ogawa.nagano.jp","okaya.nagano.jp","omachi.nagano.jp","omi.nagano.jp","ookuwa.nagano.jp","ooshika.nagano.jp","otaki.nagano.jp","otari.nagano.jp","sakae.nagano.jp","sakaki.nagano.jp","saku.nagano.jp","sakuho.nagano.jp","shimosuwa.nagano.jp","shinanomachi.nagano.jp","shiojiri.nagano.jp","suwa.nagano.jp","suzaka.nagano.jp","takagi.nagano.jp","takamori.nagano.jp","takayama.nagano.jp","tateshina.nagano.jp","tatsuno.nagano.jp","togakushi.nagano.jp","togura.nagano.jp","tomi.nagano.jp","ueda.nagano.jp","wada.nagano.jp","yamagata.nagano.jp","yamanouchi.nagano.jp","yasaka.nagano.jp","yasuoka.nagano.jp","chijiwa.nagasaki.jp","futsu.nagasaki.jp","goto.nagasaki.jp","hasami.nagasaki.jp","hirado.nagasaki.jp","iki.nagasaki.jp","isahaya.nagasaki.jp","kawatana.nagasaki.jp","kuchinotsu.nagasaki.jp","matsuura.nagasaki.jp","nagasaki.nagasaki.jp","obama.nagasaki.jp","omura.nagasaki.jp","oseto.nagasaki.jp","saikai.nagasaki.jp","sasebo.nagasaki.jp","seihi.nagasaki.jp","shimabara.nagasaki.jp","shinkamigoto.nagasaki.jp","togitsu.nagasaki.jp","tsushima.nagasaki.jp","unzen.nagasaki.jp","ando.nara.jp","gose.nara.jp","heguri.nara.jp","higashiyoshino.nara.jp","ikaruga.nara.jp","ikoma.nara.jp","kamikitayama.nara.jp","kanmaki.nara.jp","kashiba.nara.jp","kashihara.nara.jp","katsuragi.nara.jp","kawai.nara.jp","kawakami.nara.jp","kawanishi.nara.jp","koryo.nara.jp","kurotaki.nara.jp","mitsue.nara.jp","miyake.nara.jp","nara.nara.jp","nosegawa.nara.jp","oji.nara.jp","ouda.nara.jp","oyodo.nara.jp","sakurai.nara.jp","sango.nara.jp","shimoichi.nara.jp","shimokitayama.nara.jp","shinjo.nara.jp","soni.nara.jp","takatori.nara.jp","tawaramoto.nara.jp","tenkawa.nara.jp","tenri.nara.jp","uda.nara.jp","yamatokoriyama.nara.jp","yamatotakada.nara.jp","yamazoe.nara.jp","yoshino.nara.jp","aga.niigata.jp","agano.niigata.jp","gosen.niigata.jp","itoigawa.niigata.jp","izumozaki.niigata.jp","joetsu.niigata.jp","kamo.niigata.jp","kariwa.niigata.jp","kashiwazaki.niigata.jp","minamiuonuma.niigata.jp","mitsuke.niigata.jp","muika.niigata.jp","murakami.niigata.jp","myoko.niigata.jp","nagaoka.niigata.jp","niigata.niigata.jp","ojiya.niigata.jp","omi.niigata.jp","sado.niigata.jp","sanjo.niigata.jp","seiro.niigata.jp","seirou.niigata.jp","sekikawa.niigata.jp","shibata.niigata.jp","tagami.niigata.jp","tainai.niigata.jp","tochio.niigata.jp","tokamachi.niigata.jp","tsubame.niigata.jp","tsunan.niigata.jp","uonuma.niigata.jp","yahiko.niigata.jp","yoita.niigata.jp","yuzawa.niigata.jp","beppu.oita.jp","bungoono.oita.jp","bungotakada.oita.jp","hasama.oita.jp","hiji.oita.jp","himeshima.oita.jp","hita.oita.jp","kamitsue.oita.jp","kokonoe.oita.jp","kuju.oita.jp","kunisaki.oita.jp","kusu.oita.jp","oita.oita.jp","saiki.oita.jp","taketa.oita.jp","tsukumi.oita.jp","usa.oita.jp","usuki.oita.jp","yufu.oita.jp","akaiwa.okayama.jp","asakuchi.okayama.jp","bizen.okayama.jp","hayashima.okayama.jp","ibara.okayama.jp","kagamino.okayama.jp","kasaoka.okayama.jp","kibichuo.okayama.jp","kumenan.okayama.jp","kurashiki.okayama.jp","maniwa.okayama.jp","misaki.okayama.jp","nagi.okayama.jp","niimi.okayama.jp","nishiawakura.okayama.jp","okayama.okayama.jp","satosho.okayama.jp","setouchi.okayama.jp","shinjo.okayama.jp","shoo.okayama.jp","soja.okayama.jp","takahashi.okayama.jp","tamano.okayama.jp","tsuyama.okayama.jp","wake.okayama.jp","yakage.okayama.jp","aguni.okinawa.jp","ginowan.okinawa.jp","ginoza.okinawa.jp","gushikami.okinawa.jp","haebaru.okinawa.jp","higashi.okinawa.jp","hirara.okinawa.jp","iheya.okinawa.jp","ishigaki.okinawa.jp","ishikawa.okinawa.jp","itoman.okinawa.jp","izena.okinawa.jp","kadena.okinawa.jp","kin.okinawa.jp","kitadaito.okinawa.jp","kitanakagusuku.okinawa.jp","kumejima.okinawa.jp","kunigami.okinawa.jp","minamidaito.okinawa.jp","motobu.okinawa.jp","nago.okinawa.jp","naha.okinawa.jp","nakagusuku.okinawa.jp","nakijin.okinawa.jp","nanjo.okinawa.jp","nishihara.okinawa.jp","ogimi.okinawa.jp","okinawa.okinawa.jp","onna.okinawa.jp","shimoji.okinawa.jp","taketomi.okinawa.jp","tarama.okinawa.jp","tokashiki.okinawa.jp","tomigusuku.okinawa.jp","tonaki.okinawa.jp","urasoe.okinawa.jp","uruma.okinawa.jp","yaese.okinawa.jp","yomitan.okinawa.jp","yonabaru.okinawa.jp","yonaguni.okinawa.jp","zamami.okinawa.jp","abeno.osaka.jp","chihayaakasaka.osaka.jp","chuo.osaka.jp","daito.osaka.jp","fujiidera.osaka.jp","habikino.osaka.jp","hannan.osaka.jp","higashiosaka.osaka.jp","higashisumiyoshi.osaka.jp","higashiyodogawa.osaka.jp","hirakata.osaka.jp","ibaraki.osaka.jp","ikeda.osaka.jp","izumi.osaka.jp","izumiotsu.osaka.jp","izumisano.osaka.jp","kadoma.osaka.jp","kaizuka.osaka.jp","kanan.osaka.jp","kashiwara.osaka.jp","katano.osaka.jp","kawachinagano.osaka.jp","kishiwada.osaka.jp","kita.osaka.jp","kumatori.osaka.jp","matsubara.osaka.jp","minato.osaka.jp","minoh.osaka.jp","misaki.osaka.jp","moriguchi.osaka.jp","neyagawa.osaka.jp","nishi.osaka.jp","nose.osaka.jp","osakasayama.osaka.jp","sakai.osaka.jp","sayama.osaka.jp","sennan.osaka.jp","settsu.osaka.jp","shijonawate.osaka.jp","shimamoto.osaka.jp","suita.osaka.jp","tadaoka.osaka.jp","taishi.osaka.jp","tajiri.osaka.jp","takaishi.osaka.jp","takatsuki.osaka.jp","tondabayashi.osaka.jp","toyonaka.osaka.jp","toyono.osaka.jp","yao.osaka.jp","ariake.saga.jp","arita.saga.jp","fukudomi.saga.jp","genkai.saga.jp","hamatama.saga.jp","hizen.saga.jp","imari.saga.jp","kamimine.saga.jp","kanzaki.saga.jp","karatsu.saga.jp","kashima.saga.jp","kitagata.saga.jp","kitahata.saga.jp","kiyama.saga.jp","kouhoku.saga.jp","kyuragi.saga.jp","nishiarita.saga.jp","ogi.saga.jp","omachi.saga.jp","ouchi.saga.jp","saga.saga.jp","shiroishi.saga.jp","taku.saga.jp","tara.saga.jp","tosu.saga.jp","yoshinogari.saga.jp","arakawa.saitama.jp","asaka.saitama.jp","chichibu.saitama.jp","fujimi.saitama.jp","fujimino.saitama.jp","fukaya.saitama.jp","hanno.saitama.jp","hanyu.saitama.jp","hasuda.saitama.jp","hatogaya.saitama.jp","hatoyama.saitama.jp","hidaka.saitama.jp","higashichichibu.saitama.jp","higashimatsuyama.saitama.jp","honjo.saitama.jp","ina.saitama.jp","iruma.saitama.jp","iwatsuki.saitama.jp","kamiizumi.saitama.jp","kamikawa.saitama.jp","kamisato.saitama.jp","kasukabe.saitama.jp","kawagoe.saitama.jp","kawaguchi.saitama.jp","kawajima.saitama.jp","kazo.saitama.jp","kitamoto.saitama.jp","koshigaya.saitama.jp","kounosu.saitama.jp","kuki.saitama.jp","kumagaya.saitama.jp","matsubushi.saitama.jp","minano.saitama.jp","misato.saitama.jp","miyashiro.saitama.jp","miyoshi.saitama.jp","moroyama.saitama.jp","nagatoro.saitama.jp","namegawa.saitama.jp","niiza.saitama.jp","ogano.saitama.jp","ogawa.saitama.jp","ogose.saitama.jp","okegawa.saitama.jp","omiya.saitama.jp","otaki.saitama.jp","ranzan.saitama.jp","ryokami.saitama.jp","saitama.saitama.jp","sakado.saitama.jp","satte.saitama.jp","sayama.saitama.jp","shiki.saitama.jp","shiraoka.saitama.jp","soka.saitama.jp","sugito.saitama.jp","toda.saitama.jp","tokigawa.saitama.jp","tokorozawa.saitama.jp","tsurugashima.saitama.jp","urawa.saitama.jp","warabi.saitama.jp","yashio.saitama.jp","yokoze.saitama.jp","yono.saitama.jp","yorii.saitama.jp","yoshida.saitama.jp","yoshikawa.saitama.jp","yoshimi.saitama.jp","aisho.shiga.jp","gamo.shiga.jp","higashiomi.shiga.jp","hikone.shiga.jp","koka.shiga.jp","konan.shiga.jp","kosei.shiga.jp","koto.shiga.jp","kusatsu.shiga.jp","maibara.shiga.jp","moriyama.shiga.jp","nagahama.shiga.jp","nishiazai.shiga.jp","notogawa.shiga.jp","omihachiman.shiga.jp","otsu.shiga.jp","ritto.shiga.jp","ryuoh.shiga.jp","takashima.shiga.jp","takatsuki.shiga.jp","torahime.shiga.jp","toyosato.shiga.jp","yasu.shiga.jp","akagi.shimane.jp","ama.shimane.jp","gotsu.shimane.jp","hamada.shimane.jp","higashiizumo.shimane.jp","hikawa.shimane.jp","hikimi.shimane.jp","izumo.shimane.jp","kakinoki.shimane.jp","masuda.shimane.jp","matsue.shimane.jp","misato.shimane.jp","nishinoshima.shimane.jp","ohda.shimane.jp","okinoshima.shimane.jp","okuizumo.shimane.jp","shimane.shimane.jp","tamayu.shimane.jp","tsuwano.shimane.jp","unnan.shimane.jp","yakumo.shimane.jp","yasugi.shimane.jp","yatsuka.shimane.jp","arai.shizuoka.jp","atami.shizuoka.jp","fuji.shizuoka.jp","fujieda.shizuoka.jp","fujikawa.shizuoka.jp","fujinomiya.shizuoka.jp","fukuroi.shizuoka.jp","gotemba.shizuoka.jp","haibara.shizuoka.jp","hamamatsu.shizuoka.jp","higashiizu.shizuoka.jp","ito.shizuoka.jp","iwata.shizuoka.jp","izu.shizuoka.jp","izunokuni.shizuoka.jp","kakegawa.shizuoka.jp","kannami.shizuoka.jp","kawanehon.shizuoka.jp","kawazu.shizuoka.jp","kikugawa.shizuoka.jp","kosai.shizuoka.jp","makinohara.shizuoka.jp","matsuzaki.shizuoka.jp","minamiizu.shizuoka.jp","mishima.shizuoka.jp","morimachi.shizuoka.jp","nishiizu.shizuoka.jp","numazu.shizuoka.jp","omaezaki.shizuoka.jp","shimada.shizuoka.jp","shimizu.shizuoka.jp","shimoda.shizuoka.jp","shizuoka.shizuoka.jp","susono.shizuoka.jp","yaizu.shizuoka.jp","yoshida.shizuoka.jp","ashikaga.tochigi.jp","bato.tochigi.jp","haga.tochigi.jp","ichikai.tochigi.jp","iwafune.tochigi.jp","kaminokawa.tochigi.jp","kanuma.tochigi.jp","karasuyama.tochigi.jp","kuroiso.tochigi.jp","mashiko.tochigi.jp","mibu.tochigi.jp","moka.tochigi.jp","motegi.tochigi.jp","nasu.tochigi.jp","nasushiobara.tochigi.jp","nikko.tochigi.jp","nishikata.tochigi.jp","nogi.tochigi.jp","ohira.tochigi.jp","ohtawara.tochigi.jp","oyama.tochigi.jp","sakura.tochigi.jp","sano.tochigi.jp","shimotsuke.tochigi.jp","shioya.tochigi.jp","takanezawa.tochigi.jp","tochigi.tochigi.jp","tsuga.tochigi.jp","ujiie.tochigi.jp","utsunomiya.tochigi.jp","yaita.tochigi.jp","aizumi.tokushima.jp","anan.tokushima.jp","ichiba.tokushima.jp","itano.tokushima.jp","kainan.tokushima.jp","komatsushima.tokushima.jp","matsushige.tokushima.jp","mima.tokushima.jp","minami.tokushima.jp","miyoshi.tokushima.jp","mugi.tokushima.jp","nakagawa.tokushima.jp","naruto.tokushima.jp","sanagochi.tokushima.jp","shishikui.tokushima.jp","tokushima.tokushima.jp","wajiki.tokushima.jp","adachi.tokyo.jp","akiruno.tokyo.jp","akishima.tokyo.jp","aogashima.tokyo.jp","arakawa.tokyo.jp","bunkyo.tokyo.jp","chiyoda.tokyo.jp","chofu.tokyo.jp","chuo.tokyo.jp","edogawa.tokyo.jp","fuchu.tokyo.jp","fussa.tokyo.jp","hachijo.tokyo.jp","hachioji.tokyo.jp","hamura.tokyo.jp","higashikurume.tokyo.jp","higashimurayama.tokyo.jp","higashiyamato.tokyo.jp","hino.tokyo.jp","hinode.tokyo.jp","hinohara.tokyo.jp","inagi.tokyo.jp","itabashi.tokyo.jp","katsushika.tokyo.jp","kita.tokyo.jp","kiyose.tokyo.jp","kodaira.tokyo.jp","koganei.tokyo.jp","kokubunji.tokyo.jp","komae.tokyo.jp","koto.tokyo.jp","kouzushima.tokyo.jp","kunitachi.tokyo.jp","machida.tokyo.jp","meguro.tokyo.jp","minato.tokyo.jp","mitaka.tokyo.jp","mizuho.tokyo.jp","musashimurayama.tokyo.jp","musashino.tokyo.jp","nakano.tokyo.jp","nerima.tokyo.jp","ogasawara.tokyo.jp","okutama.tokyo.jp","ome.tokyo.jp","oshima.tokyo.jp","ota.tokyo.jp","setagaya.tokyo.jp","shibuya.tokyo.jp","shinagawa.tokyo.jp","shinjuku.tokyo.jp","suginami.tokyo.jp","sumida.tokyo.jp","tachikawa.tokyo.jp","taito.tokyo.jp","tama.tokyo.jp","toshima.tokyo.jp","chizu.tottori.jp","hino.tottori.jp","kawahara.tottori.jp","koge.tottori.jp","kotoura.tottori.jp","misasa.tottori.jp","nanbu.tottori.jp","nichinan.tottori.jp","sakaiminato.tottori.jp","tottori.tottori.jp","wakasa.tottori.jp","yazu.tottori.jp","yonago.tottori.jp","asahi.toyama.jp","fuchu.toyama.jp","fukumitsu.toyama.jp","funahashi.toyama.jp","himi.toyama.jp","imizu.toyama.jp","inami.toyama.jp","johana.toyama.jp","kamiichi.toyama.jp","kurobe.toyama.jp","nakaniikawa.toyama.jp","namerikawa.toyama.jp","nanto.toyama.jp","nyuzen.toyama.jp","oyabe.toyama.jp","taira.toyama.jp","takaoka.toyama.jp","tateyama.toyama.jp","toga.toyama.jp","tonami.toyama.jp","toyama.toyama.jp","unazuki.toyama.jp","uozu.toyama.jp","yamada.toyama.jp","arida.wakayama.jp","aridagawa.wakayama.jp","gobo.wakayama.jp","hashimoto.wakayama.jp","hidaka.wakayama.jp","hirogawa.wakayama.jp","inami.wakayama.jp","iwade.wakayama.jp","kainan.wakayama.jp","kamitonda.wakayama.jp","katsuragi.wakayama.jp","kimino.wakayama.jp","kinokawa.wakayama.jp","kitayama.wakayama.jp","koya.wakayama.jp","koza.wakayama.jp","kozagawa.wakayama.jp","kudoyama.wakayama.jp","kushimoto.wakayama.jp","mihama.wakayama.jp","misato.wakayama.jp","nachikatsuura.wakayama.jp","shingu.wakayama.jp","shirahama.wakayama.jp","taiji.wakayama.jp","tanabe.wakayama.jp","wakayama.wakayama.jp","yuasa.wakayama.jp","yura.wakayama.jp","asahi.yamagata.jp","funagata.yamagata.jp","higashine.yamagata.jp","iide.yamagata.jp","kahoku.yamagata.jp","kaminoyama.yamagata.jp","kaneyama.yamagata.jp","kawanishi.yamagata.jp","mamurogawa.yamagata.jp","mikawa.yamagata.jp","murayama.yamagata.jp","nagai.yamagata.jp","nakayama.yamagata.jp","nanyo.yamagata.jp","nishikawa.yamagata.jp","obanazawa.yamagata.jp","oe.yamagata.jp","oguni.yamagata.jp","ohkura.yamagata.jp","oishida.yamagata.jp","sagae.yamagata.jp","sakata.yamagata.jp","sakegawa.yamagata.jp","shinjo.yamagata.jp","shirataka.yamagata.jp","shonai.yamagata.jp","takahata.yamagata.jp","tendo.yamagata.jp","tozawa.yamagata.jp","tsuruoka.yamagata.jp","yamagata.yamagata.jp","yamanobe.yamagata.jp","yonezawa.yamagata.jp","yuza.yamagata.jp","abu.yamaguchi.jp","hagi.yamaguchi.jp","hikari.yamaguchi.jp","hofu.yamaguchi.jp","iwakuni.yamaguchi.jp","kudamatsu.yamaguchi.jp","mitou.yamaguchi.jp","nagato.yamaguchi.jp","oshima.yamaguchi.jp","shimonoseki.yamaguchi.jp","shunan.yamaguchi.jp","tabuse.yamaguchi.jp","tokuyama.yamaguchi.jp","toyota.yamaguchi.jp","ube.yamaguchi.jp","yuu.yamaguchi.jp","chuo.yamanashi.jp","doshi.yamanashi.jp","fuefuki.yamanashi.jp","fujikawa.yamanashi.jp","fujikawaguchiko.yamanashi.jp","fujiyoshida.yamanashi.jp","hayakawa.yamanashi.jp","hokuto.yamanashi.jp","ichikawamisato.yamanashi.jp","kai.yamanashi.jp","kofu.yamanashi.jp","koshu.yamanashi.jp","kosuge.yamanashi.jp","minami-alps.yamanashi.jp","minobu.yamanashi.jp","nakamichi.yamanashi.jp","nanbu.yamanashi.jp","narusawa.yamanashi.jp","nirasaki.yamanashi.jp","nishikatsura.yamanashi.jp","oshino.yamanashi.jp","otsuki.yamanashi.jp","showa.yamanashi.jp","tabayama.yamanashi.jp","tsuru.yamanashi.jp","uenohara.yamanashi.jp","yamanakako.yamanashi.jp","yamanashi.yamanashi.jp","ke","ac.ke","co.ke","go.ke","info.ke","me.ke","mobi.ke","ne.ke","or.ke","sc.ke","kg","org.kg","net.kg","com.kg","edu.kg","gov.kg","mil.kg","*.kh","ki","edu.ki","biz.ki","net.ki","org.ki","gov.ki","info.ki","com.ki","km","org.km","nom.km","gov.km","prd.km","tm.km","edu.km","mil.km","ass.km","com.km","coop.km","asso.km","presse.km","medecin.km","notaires.km","pharmaciens.km","veterinaire.km","gouv.km","kn","net.kn","org.kn","edu.kn","gov.kn","kp","com.kp","edu.kp","gov.kp","org.kp","rep.kp","tra.kp","kr","ac.kr","co.kr","es.kr","go.kr","hs.kr","kg.kr","mil.kr","ms.kr","ne.kr","or.kr","pe.kr","re.kr","sc.kr","busan.kr","chungbuk.kr","chungnam.kr","daegu.kr","daejeon.kr","gangwon.kr","gwangju.kr","gyeongbuk.kr","gyeonggi.kr","gyeongnam.kr","incheon.kr","jeju.kr","jeonbuk.kr","jeonnam.kr","seoul.kr","ulsan.kr","kw","com.kw","edu.kw","emb.kw","gov.kw","ind.kw","net.kw","org.kw","ky","com.ky","edu.ky","net.ky","org.ky","kz","org.kz","edu.kz","net.kz","gov.kz","mil.kz","com.kz","la","int.la","net.la","info.la","edu.la","gov.la","per.la","com.la","org.la","lb","com.lb","edu.lb","gov.lb","net.lb","org.lb","lc","com.lc","net.lc","co.lc","org.lc","edu.lc","gov.lc","li","lk","gov.lk","sch.lk","net.lk","int.lk","com.lk","org.lk","edu.lk","ngo.lk","soc.lk","web.lk","ltd.lk","assn.lk","grp.lk","hotel.lk","ac.lk","lr","com.lr","edu.lr","gov.lr","org.lr","net.lr","ls","ac.ls","biz.ls","co.ls","edu.ls","gov.ls","info.ls","net.ls","org.ls","sc.ls","lt","gov.lt","lu","lv","com.lv","edu.lv","gov.lv","org.lv","mil.lv","id.lv","net.lv","asn.lv","conf.lv","ly","com.ly","net.ly","gov.ly","plc.ly","edu.ly","sch.ly","med.ly","org.ly","id.ly","ma","co.ma","net.ma","gov.ma","org.ma","ac.ma","press.ma","mc","tm.mc","asso.mc","md","me","co.me","net.me","org.me","edu.me","ac.me","gov.me","its.me","priv.me","mg","org.mg","nom.mg","gov.mg","prd.mg","tm.mg","edu.mg","mil.mg","com.mg","co.mg","mh","mil","mk","com.mk","org.mk","net.mk","edu.mk","gov.mk","inf.mk","name.mk","ml","com.ml","edu.ml","gouv.ml","gov.ml","net.ml","org.ml","presse.ml","*.mm","mn","gov.mn","edu.mn","org.mn","mo","com.mo","net.mo","org.mo","edu.mo","gov.mo","mobi","mp","mq","mr","gov.mr","ms","com.ms","edu.ms","gov.ms","net.ms","org.ms","mt","com.mt","edu.mt","net.mt","org.mt","mu","com.mu","net.mu","org.mu","gov.mu","ac.mu","co.mu","or.mu","museum","academy.museum","agriculture.museum","air.museum","airguard.museum","alabama.museum","alaska.museum","amber.museum","ambulance.museum","american.museum","americana.museum","americanantiques.museum","americanart.museum","amsterdam.museum","and.museum","annefrank.museum","anthro.museum","anthropology.museum","antiques.museum","aquarium.museum","arboretum.museum","archaeological.museum","archaeology.museum","architecture.museum","art.museum","artanddesign.museum","artcenter.museum","artdeco.museum","arteducation.museum","artgallery.museum","arts.museum","artsandcrafts.museum","asmatart.museum","assassination.museum","assisi.museum","association.museum","astronomy.museum","atlanta.museum","austin.museum","australia.museum","automotive.museum","aviation.museum","axis.museum","badajoz.museum","baghdad.museum","bahn.museum","bale.museum","baltimore.museum","barcelona.museum","baseball.museum","basel.museum","baths.museum","bauern.museum","beauxarts.museum","beeldengeluid.museum","bellevue.museum","bergbau.museum","berkeley.museum","berlin.museum","bern.museum","bible.museum","bilbao.museum","bill.museum","birdart.museum","birthplace.museum","bonn.museum","boston.museum","botanical.museum","botanicalgarden.museum","botanicgarden.museum","botany.museum","brandywinevalley.museum","brasil.museum","bristol.museum","british.museum","britishcolumbia.museum","broadcast.museum","brunel.museum","brussel.museum","brussels.museum","bruxelles.museum","building.museum","burghof.museum","bus.museum","bushey.museum","cadaques.museum","california.museum","cambridge.museum","can.museum","canada.museum","capebreton.museum","carrier.museum","cartoonart.museum","casadelamoneda.museum","castle.museum","castres.museum","celtic.museum","center.museum","chattanooga.museum","cheltenham.museum","chesapeakebay.museum","chicago.museum","children.museum","childrens.museum","childrensgarden.museum","chiropractic.museum","chocolate.museum","christiansburg.museum","cincinnati.museum","cinema.museum","circus.museum","civilisation.museum","civilization.museum","civilwar.museum","clinton.museum","clock.museum","coal.museum","coastaldefence.museum","cody.museum","coldwar.museum","collection.museum","colonialwilliamsburg.museum","coloradoplateau.museum","columbia.museum","columbus.museum","communication.museum","communications.museum","community.museum","computer.museum","computerhistory.museum","comunicações.museum","contemporary.museum","contemporaryart.museum","convent.museum","copenhagen.museum","corporation.museum","correios-e-telecomunicações.museum","corvette.museum","costume.museum","countryestate.museum","county.museum","crafts.museum","cranbrook.museum","creation.museum","cultural.museum","culturalcenter.museum","culture.museum","cyber.museum","cymru.museum","dali.museum","dallas.museum","database.museum","ddr.museum","decorativearts.museum","delaware.museum","delmenhorst.museum","denmark.museum","depot.museum","design.museum","detroit.museum","dinosaur.museum","discovery.museum","dolls.museum","donostia.museum","durham.museum","eastafrica.museum","eastcoast.museum","education.museum","educational.museum","egyptian.museum","eisenbahn.museum","elburg.museum","elvendrell.museum","embroidery.museum","encyclopedic.museum","england.museum","entomology.museum","environment.museum","environmentalconservation.museum","epilepsy.museum","essex.museum","estate.museum","ethnology.museum","exeter.museum","exhibition.museum","family.museum","farm.museum","farmequipment.museum","farmers.museum","farmstead.museum","field.museum","figueres.museum","filatelia.museum","film.museum","fineart.museum","finearts.museum","finland.museum","flanders.museum","florida.museum","force.museum","fortmissoula.museum","fortworth.museum","foundation.museum","francaise.museum","frankfurt.museum","franziskaner.museum","freemasonry.museum","freiburg.museum","fribourg.museum","frog.museum","fundacio.museum","furniture.museum","gallery.museum","garden.museum","gateway.museum","geelvinck.museum","gemological.museum","geology.museum","georgia.museum","giessen.museum","glas.museum","glass.museum","gorge.museum","grandrapids.museum","graz.museum","guernsey.museum","halloffame.museum","hamburg.museum","handson.museum","harvestcelebration.museum","hawaii.museum","health.museum","heimatunduhren.museum","hellas.museum","helsinki.museum","hembygdsforbund.museum","heritage.museum","histoire.museum","historical.museum","historicalsociety.museum","historichouses.museum","historisch.museum","historisches.museum","history.museum","historyofscience.museum","horology.museum","house.museum","humanities.museum","illustration.museum","imageandsound.museum","indian.museum","indiana.museum","indianapolis.museum","indianmarket.museum","intelligence.museum","interactive.museum","iraq.museum","iron.museum","isleofman.museum","jamison.museum","jefferson.museum","jerusalem.museum","jewelry.museum","jewish.museum","jewishart.museum","jfk.museum","journalism.museum","judaica.museum","judygarland.museum","juedisches.museum","juif.museum","karate.museum","karikatur.museum","kids.museum","koebenhavn.museum","koeln.museum","kunst.museum","kunstsammlung.museum","kunstunddesign.museum","labor.museum","labour.museum","lajolla.museum","lancashire.museum","landes.museum","lans.museum","läns.museum","larsson.museum","lewismiller.museum","lincoln.museum","linz.museum","living.museum","livinghistory.museum","localhistory.museum","london.museum","losangeles.museum","louvre.museum","loyalist.museum","lucerne.museum","luxembourg.museum","luzern.museum","mad.museum","madrid.museum","mallorca.museum","manchester.museum","mansion.museum","mansions.museum","manx.museum","marburg.museum","maritime.museum","maritimo.museum","maryland.museum","marylhurst.museum","media.museum","medical.museum","medizinhistorisches.museum","meeres.museum","memorial.museum","mesaverde.museum","michigan.museum","midatlantic.museum","military.museum","mill.museum","miners.museum","mining.museum","minnesota.museum","missile.museum","missoula.museum","modern.museum","moma.museum","money.museum","monmouth.museum","monticello.museum","montreal.museum","moscow.museum","motorcycle.museum","muenchen.museum","muenster.museum","mulhouse.museum","muncie.museum","museet.museum","museumcenter.museum","museumvereniging.museum","music.museum","national.museum","nationalfirearms.museum","nationalheritage.museum","nativeamerican.museum","naturalhistory.museum","naturalhistorymuseum.museum","naturalsciences.museum","nature.museum","naturhistorisches.museum","natuurwetenschappen.museum","naumburg.museum","naval.museum","nebraska.museum","neues.museum","newhampshire.museum","newjersey.museum","newmexico.museum","newport.museum","newspaper.museum","newyork.museum","niepce.museum","norfolk.museum","north.museum","nrw.museum","nyc.museum","nyny.museum","oceanographic.museum","oceanographique.museum","omaha.museum","online.museum","ontario.museum","openair.museum","oregon.museum","oregontrail.museum","otago.museum","oxford.museum","pacific.museum","paderborn.museum","palace.museum","paleo.museum","palmsprings.museum","panama.museum","paris.museum","pasadena.museum","pharmacy.museum","philadelphia.museum","philadelphiaarea.museum","philately.museum","phoenix.museum","photography.museum","pilots.museum","pittsburgh.museum","planetarium.museum","plantation.museum","plants.museum","plaza.museum","portal.museum","portland.museum","portlligat.museum","posts-and-telecommunications.museum","preservation.museum","presidio.museum","press.museum","project.museum","public.museum","pubol.museum","quebec.museum","railroad.museum","railway.museum","research.museum","resistance.museum","riodejaneiro.museum","rochester.museum","rockart.museum","roma.museum","russia.museum","saintlouis.museum","salem.museum","salvadordali.museum","salzburg.museum","sandiego.museum","sanfrancisco.museum","santabarbara.museum","santacruz.museum","santafe.museum","saskatchewan.museum","satx.museum","savannahga.museum","schlesisches.museum","schoenbrunn.museum","schokoladen.museum","school.museum","schweiz.museum","science.museum","scienceandhistory.museum","scienceandindustry.museum","sciencecenter.museum","sciencecenters.museum","science-fiction.museum","sciencehistory.museum","sciences.museum","sciencesnaturelles.museum","scotland.museum","seaport.museum","settlement.museum","settlers.museum","shell.museum","sherbrooke.museum","sibenik.museum","silk.museum","ski.museum","skole.museum","society.museum","sologne.museum","soundandvision.museum","southcarolina.museum","southwest.museum","space.museum","spy.museum","square.museum","stadt.museum","stalbans.museum","starnberg.museum","state.museum","stateofdelaware.museum","station.museum","steam.museum","steiermark.museum","stjohn.museum","stockholm.museum","stpetersburg.museum","stuttgart.museum","suisse.museum","surgeonshall.museum","surrey.museum","svizzera.museum","sweden.museum","sydney.museum","tank.museum","tcm.museum","technology.museum","telekommunikation.museum","television.museum","texas.museum","textile.museum","theater.museum","time.museum","timekeeping.museum","topology.museum","torino.museum","touch.museum","town.museum","transport.museum","tree.museum","trolley.museum","trust.museum","trustee.museum","uhren.museum","ulm.museum","undersea.museum","university.museum","usa.museum","usantiques.museum","usarts.museum","uscountryestate.museum","usculture.museum","usdecorativearts.museum","usgarden.museum","ushistory.museum","ushuaia.museum","uslivinghistory.museum","utah.museum","uvic.museum","valley.museum","vantaa.museum","versailles.museum","viking.museum","village.museum","virginia.museum","virtual.museum","virtuel.museum","vlaanderen.museum","volkenkunde.museum","wales.museum","wallonie.museum","war.museum","washingtondc.museum","watchandclock.museum","watch-and-clock.museum","western.museum","westfalen.museum","whaling.museum","wildlife.museum","williamsburg.museum","windmill.museum","workshop.museum","york.museum","yorkshire.museum","yosemite.museum","youth.museum","zoological.museum","zoology.museum","ירושלים.museum","иком.museum","mv","aero.mv","biz.mv","com.mv","coop.mv","edu.mv","gov.mv","info.mv","int.mv","mil.mv","museum.mv","name.mv","net.mv","org.mv","pro.mv","mw","ac.mw","biz.mw","co.mw","com.mw","coop.mw","edu.mw","gov.mw","int.mw","museum.mw","net.mw","org.mw","mx","com.mx","org.mx","gob.mx","edu.mx","net.mx","my","biz.my","com.my","edu.my","gov.my","mil.my","name.my","net.my","org.my","mz","ac.mz","adv.mz","co.mz","edu.mz","gov.mz","mil.mz","net.mz","org.mz","na","info.na","pro.na","name.na","school.na","or.na","dr.na","us.na","mx.na","ca.na","in.na","cc.na","tv.na","ws.na","mobi.na","co.na","com.na","org.na","name","nc","asso.nc","nom.nc","ne","net","nf","com.nf","net.nf","per.nf","rec.nf","web.nf","arts.nf","firm.nf","info.nf","other.nf","store.nf","ng","com.ng","edu.ng","gov.ng","i.ng","mil.ng","mobi.ng","name.ng","net.ng","org.ng","sch.ng","ni","ac.ni","biz.ni","co.ni","com.ni","edu.ni","gob.ni","in.ni","info.ni","int.ni","mil.ni","net.ni","nom.ni","org.ni","web.ni","nl","no","fhs.no","vgs.no","fylkesbibl.no","folkebibl.no","museum.no","idrett.no","priv.no","mil.no","stat.no","dep.no","kommune.no","herad.no","aa.no","ah.no","bu.no","fm.no","hl.no","hm.no","jan-mayen.no","mr.no","nl.no","nt.no","of.no","ol.no","oslo.no","rl.no","sf.no","st.no","svalbard.no","tm.no","tr.no","va.no","vf.no","gs.aa.no","gs.ah.no","gs.bu.no","gs.fm.no","gs.hl.no","gs.hm.no","gs.jan-mayen.no","gs.mr.no","gs.nl.no","gs.nt.no","gs.of.no","gs.ol.no","gs.oslo.no","gs.rl.no","gs.sf.no","gs.st.no","gs.svalbard.no","gs.tm.no","gs.tr.no","gs.va.no","gs.vf.no","akrehamn.no","åkrehamn.no","algard.no","ålgård.no","arna.no","brumunddal.no","bryne.no","bronnoysund.no","brønnøysund.no","drobak.no","drøbak.no","egersund.no","fetsund.no","floro.no","florø.no","fredrikstad.no","hokksund.no","honefoss.no","hønefoss.no","jessheim.no","jorpeland.no","jørpeland.no","kirkenes.no","kopervik.no","krokstadelva.no","langevag.no","langevåg.no","leirvik.no","mjondalen.no","mjøndalen.no","mo-i-rana.no","mosjoen.no","mosjøen.no","nesoddtangen.no","orkanger.no","osoyro.no","osøyro.no","raholt.no","råholt.no","sandnessjoen.no","sandnessjøen.no","skedsmokorset.no","slattum.no","spjelkavik.no","stathelle.no","stavern.no","stjordalshalsen.no","stjørdalshalsen.no","tananger.no","tranby.no","vossevangen.no","afjord.no","åfjord.no","agdenes.no","al.no","ål.no","alesund.no","ålesund.no","alstahaug.no","alta.no","áltá.no","alaheadju.no","álaheadju.no","alvdal.no","amli.no","åmli.no","amot.no","åmot.no","andebu.no","andoy.no","andøy.no","andasuolo.no","ardal.no","årdal.no","aremark.no","arendal.no","ås.no","aseral.no","åseral.no","asker.no","askim.no","askvoll.no","askoy.no","askøy.no","asnes.no","åsnes.no","audnedaln.no","aukra.no","aure.no","aurland.no","aurskog-holand.no","aurskog-høland.no","austevoll.no","austrheim.no","averoy.no","averøy.no","balestrand.no","ballangen.no","balat.no","bálát.no","balsfjord.no","bahccavuotna.no","báhccavuotna.no","bamble.no","bardu.no","beardu.no","beiarn.no","bajddar.no","bájddar.no","baidar.no","báidár.no","berg.no","bergen.no","berlevag.no","berlevåg.no","bearalvahki.no","bearalváhki.no","bindal.no","birkenes.no","bjarkoy.no","bjarkøy.no","bjerkreim.no","bjugn.no","bodo.no","bodø.no","badaddja.no","bådåddjå.no","budejju.no","bokn.no","bremanger.no","bronnoy.no","brønnøy.no","bygland.no","bykle.no","barum.no","bærum.no","bo.telemark.no","bø.telemark.no","bo.nordland.no","bø.nordland.no","bievat.no","bievát.no","bomlo.no","bømlo.no","batsfjord.no","båtsfjord.no","bahcavuotna.no","báhcavuotna.no","dovre.no","drammen.no","drangedal.no","dyroy.no","dyrøy.no","donna.no","dønna.no","eid.no","eidfjord.no","eidsberg.no","eidskog.no","eidsvoll.no","eigersund.no","elverum.no","enebakk.no","engerdal.no","etne.no","etnedal.no","evenes.no","evenassi.no","evenášši.no","evje-og-hornnes.no","farsund.no","fauske.no","fuossko.no","fuoisku.no","fedje.no","fet.no","finnoy.no","finnøy.no","fitjar.no","fjaler.no","fjell.no","flakstad.no","flatanger.no","flekkefjord.no","flesberg.no","flora.no","fla.no","flå.no","folldal.no","forsand.no","fosnes.no","frei.no","frogn.no","froland.no","frosta.no","frana.no","fræna.no","froya.no","frøya.no","fusa.no","fyresdal.no","forde.no","førde.no","gamvik.no","gangaviika.no","gáŋgaviika.no","gaular.no","gausdal.no","gildeskal.no","gildeskål.no","giske.no","gjemnes.no","gjerdrum.no","gjerstad.no","gjesdal.no","gjovik.no","gjøvik.no","gloppen.no","gol.no","gran.no","grane.no","granvin.no","gratangen.no","grimstad.no","grong.no","kraanghke.no","kråanghke.no","grue.no","gulen.no","hadsel.no","halden.no","halsa.no","hamar.no","hamaroy.no","habmer.no","hábmer.no","hapmir.no","hápmir.no","hammerfest.no","hammarfeasta.no","hámmárfeasta.no","haram.no","hareid.no","harstad.no","hasvik.no","aknoluokta.no","ákŋoluokta.no","hattfjelldal.no","aarborte.no","haugesund.no","hemne.no","hemnes.no","hemsedal.no","heroy.more-og-romsdal.no","herøy.møre-og-romsdal.no","heroy.nordland.no","herøy.nordland.no","hitra.no","hjartdal.no","hjelmeland.no","hobol.no","hobøl.no","hof.no","hol.no","hole.no","holmestrand.no","holtalen.no","holtålen.no","hornindal.no","horten.no","hurdal.no","hurum.no","hvaler.no","hyllestad.no","hagebostad.no","hægebostad.no","hoyanger.no","høyanger.no","hoylandet.no","høylandet.no","ha.no","hå.no","ibestad.no","inderoy.no","inderøy.no","iveland.no","jevnaker.no","jondal.no","jolster.no","jølster.no","karasjok.no","karasjohka.no","kárášjohka.no","karlsoy.no","galsa.no","gálsá.no","karmoy.no","karmøy.no","kautokeino.no","guovdageaidnu.no","klepp.no","klabu.no","klæbu.no","kongsberg.no","kongsvinger.no","kragero.no","kragerø.no","kristiansand.no","kristiansund.no","krodsherad.no","krødsherad.no","kvalsund.no","rahkkeravju.no","ráhkkerávju.no","kvam.no","kvinesdal.no","kvinnherad.no","kviteseid.no","kvitsoy.no","kvitsøy.no","kvafjord.no","kvæfjord.no","giehtavuoatna.no","kvanangen.no","kvænangen.no","navuotna.no","návuotna.no","kafjord.no","kåfjord.no","gaivuotna.no","gáivuotna.no","larvik.no","lavangen.no","lavagis.no","loabat.no","loabát.no","lebesby.no","davvesiida.no","leikanger.no","leirfjord.no","leka.no","leksvik.no","lenvik.no","leangaviika.no","leaŋgaviika.no","lesja.no","levanger.no","lier.no","lierne.no","lillehammer.no","lillesand.no","lindesnes.no","lindas.no","lindås.no","lom.no","loppa.no","lahppi.no","láhppi.no","lund.no","lunner.no","luroy.no","lurøy.no","luster.no","lyngdal.no","lyngen.no","ivgu.no","lardal.no","lerdal.no","lærdal.no","lodingen.no","lødingen.no","lorenskog.no","lørenskog.no","loten.no","løten.no","malvik.no","masoy.no","måsøy.no","muosat.no","muosát.no","mandal.no","marker.no","marnardal.no","masfjorden.no","meland.no","meldal.no","melhus.no","meloy.no","meløy.no","meraker.no","meråker.no","moareke.no","moåreke.no","midsund.no","midtre-gauldal.no","modalen.no","modum.no","molde.no","moskenes.no","moss.no","mosvik.no","malselv.no","målselv.no","malatvuopmi.no","málatvuopmi.no","namdalseid.no","aejrie.no","namsos.no","namsskogan.no","naamesjevuemie.no","nååmesjevuemie.no","laakesvuemie.no","nannestad.no","narvik.no","narviika.no","naustdal.no","nedre-eiker.no","nes.akershus.no","nes.buskerud.no","nesna.no","nesodden.no","nesseby.no","unjarga.no","unjárga.no","nesset.no","nissedal.no","nittedal.no","nord-aurdal.no","nord-fron.no","nord-odal.no","norddal.no","nordkapp.no","davvenjarga.no","davvenjárga.no","nordre-land.no","nordreisa.no","raisa.no","ráisa.no","nore-og-uvdal.no","notodden.no","naroy.no","nærøy.no","notteroy.no","nøtterøy.no","odda.no","oksnes.no","øksnes.no","oppdal.no","oppegard.no","oppegård.no","orkdal.no","orland.no","ørland.no","orskog.no","ørskog.no","orsta.no","ørsta.no","os.hedmark.no","os.hordaland.no","osen.no","osteroy.no","osterøy.no","ostre-toten.no","østre-toten.no","overhalla.no","ovre-eiker.no","øvre-eiker.no","oyer.no","øyer.no","oygarden.no","øygarden.no","oystre-slidre.no","øystre-slidre.no","porsanger.no","porsangu.no","porsáŋgu.no","porsgrunn.no","radoy.no","radøy.no","rakkestad.no","rana.no","ruovat.no","randaberg.no","rauma.no","rendalen.no","rennebu.no","rennesoy.no","rennesøy.no","rindal.no","ringebu.no","ringerike.no","ringsaker.no","rissa.no","risor.no","risør.no","roan.no","rollag.no","rygge.no","ralingen.no","rælingen.no","rodoy.no","rødøy.no","romskog.no","rømskog.no","roros.no","røros.no","rost.no","røst.no","royken.no","røyken.no","royrvik.no","røyrvik.no","rade.no","råde.no","salangen.no","siellak.no","saltdal.no","salat.no","sálát.no","sálat.no","samnanger.no","sande.more-og-romsdal.no","sande.møre-og-romsdal.no","sande.vestfold.no","sandefjord.no","sandnes.no","sandoy.no","sandøy.no","sarpsborg.no","sauda.no","sauherad.no","sel.no","selbu.no","selje.no","seljord.no","sigdal.no","siljan.no","sirdal.no","skaun.no","skedsmo.no","ski.no","skien.no","skiptvet.no","skjervoy.no","skjervøy.no","skierva.no","skiervá.no","skjak.no","skjåk.no","skodje.no","skanland.no","skånland.no","skanit.no","skánit.no","smola.no","smøla.no","snillfjord.no","snasa.no","snåsa.no","snoasa.no","snaase.no","snåase.no","sogndal.no","sokndal.no","sola.no","solund.no","songdalen.no","sortland.no","spydeberg.no","stange.no","stavanger.no","steigen.no","steinkjer.no","stjordal.no","stjørdal.no","stokke.no","stor-elvdal.no","stord.no","stordal.no","storfjord.no","omasvuotna.no","strand.no","stranda.no","stryn.no","sula.no","suldal.no","sund.no","sunndal.no","surnadal.no","sveio.no","svelvik.no","sykkylven.no","sogne.no","søgne.no","somna.no","sømna.no","sondre-land.no","søndre-land.no","sor-aurdal.no","sør-aurdal.no","sor-fron.no","sør-fron.no","sor-odal.no","sør-odal.no","sor-varanger.no","sør-varanger.no","matta-varjjat.no","mátta-várjjat.no","sorfold.no","sørfold.no","sorreisa.no","sørreisa.no","sorum.no","sørum.no","tana.no","deatnu.no","time.no","tingvoll.no","tinn.no","tjeldsund.no","dielddanuorri.no","tjome.no","tjøme.no","tokke.no","tolga.no","torsken.no","tranoy.no","tranøy.no","tromso.no","tromsø.no","tromsa.no","romsa.no","trondheim.no","troandin.no","trysil.no","trana.no","træna.no","trogstad.no","trøgstad.no","tvedestrand.no","tydal.no","tynset.no","tysfjord.no","divtasvuodna.no","divttasvuotna.no","tysnes.no","tysvar.no","tysvær.no","tonsberg.no","tønsberg.no","ullensaker.no","ullensvang.no","ulvik.no","utsira.no","vadso.no","vadsø.no","cahcesuolo.no","čáhcesuolo.no","vaksdal.no","valle.no","vang.no","vanylven.no","vardo.no","vardø.no","varggat.no","várggát.no","vefsn.no","vaapste.no","vega.no","vegarshei.no","vegårshei.no","vennesla.no","verdal.no","verran.no","vestby.no","vestnes.no","vestre-slidre.no","vestre-toten.no","vestvagoy.no","vestvågøy.no","vevelstad.no","vik.no","vikna.no","vindafjord.no","volda.no","voss.no","varoy.no","værøy.no","vagan.no","vågan.no","voagat.no","vagsoy.no","vågsøy.no","vaga.no","vågå.no","valer.ostfold.no","våler.østfold.no","valer.hedmark.no","våler.hedmark.no","*.np","nr","biz.nr","info.nr","gov.nr","edu.nr","org.nr","net.nr","com.nr","nu","nz","ac.nz","co.nz","cri.nz","geek.nz","gen.nz","govt.nz","health.nz","iwi.nz","kiwi.nz","maori.nz","mil.nz","māori.nz","net.nz","org.nz","parliament.nz","school.nz","om","co.om","com.om","edu.om","gov.om","med.om","museum.om","net.om","org.om","pro.om","onion","org","pa","ac.pa","gob.pa","com.pa","org.pa","sld.pa","edu.pa","net.pa","ing.pa","abo.pa","med.pa","nom.pa","pe","edu.pe","gob.pe","nom.pe","mil.pe","org.pe","com.pe","net.pe","pf","com.pf","org.pf","edu.pf","*.pg","ph","com.ph","net.ph","org.ph","gov.ph","edu.ph","ngo.ph","mil.ph","i.ph","pk","com.pk","net.pk","edu.pk","org.pk","fam.pk","biz.pk","web.pk","gov.pk","gob.pk","gok.pk","gon.pk","gop.pk","gos.pk","info.pk","pl","com.pl","net.pl","org.pl","aid.pl","agro.pl","atm.pl","auto.pl","biz.pl","edu.pl","gmina.pl","gsm.pl","info.pl","mail.pl","miasta.pl","media.pl","mil.pl","nieruchomosci.pl","nom.pl","pc.pl","powiat.pl","priv.pl","realestate.pl","rel.pl","sex.pl","shop.pl","sklep.pl","sos.pl","szkola.pl","targi.pl","tm.pl","tourism.pl","travel.pl","turystyka.pl","gov.pl","ap.gov.pl","ic.gov.pl","is.gov.pl","us.gov.pl","kmpsp.gov.pl","kppsp.gov.pl","kwpsp.gov.pl","psp.gov.pl","wskr.gov.pl","kwp.gov.pl","mw.gov.pl","ug.gov.pl","um.gov.pl","umig.gov.pl","ugim.gov.pl","upow.gov.pl","uw.gov.pl","starostwo.gov.pl","pa.gov.pl","po.gov.pl","psse.gov.pl","pup.gov.pl","rzgw.gov.pl","sa.gov.pl","so.gov.pl","sr.gov.pl","wsa.gov.pl","sko.gov.pl","uzs.gov.pl","wiih.gov.pl","winb.gov.pl","pinb.gov.pl","wios.gov.pl","witd.gov.pl","wzmiuw.gov.pl","piw.gov.pl","wiw.gov.pl","griw.gov.pl","wif.gov.pl","oum.gov.pl","sdn.gov.pl","zp.gov.pl","uppo.gov.pl","mup.gov.pl","wuoz.gov.pl","konsulat.gov.pl","oirm.gov.pl","augustow.pl","babia-gora.pl","bedzin.pl","beskidy.pl","bialowieza.pl","bialystok.pl","bielawa.pl","bieszczady.pl","boleslawiec.pl","bydgoszcz.pl","bytom.pl","cieszyn.pl","czeladz.pl","czest.pl","dlugoleka.pl","elblag.pl","elk.pl","glogow.pl","gniezno.pl","gorlice.pl","grajewo.pl","ilawa.pl","jaworzno.pl","jelenia-gora.pl","jgora.pl","kalisz.pl","kazimierz-dolny.pl","karpacz.pl","kartuzy.pl","kaszuby.pl","katowice.pl","kepno.pl","ketrzyn.pl","klodzko.pl","kobierzyce.pl","kolobrzeg.pl","konin.pl","konskowola.pl","kutno.pl","lapy.pl","lebork.pl","legnica.pl","lezajsk.pl","limanowa.pl","lomza.pl","lowicz.pl","lubin.pl","lukow.pl","malbork.pl","malopolska.pl","mazowsze.pl","mazury.pl","mielec.pl","mielno.pl","mragowo.pl","naklo.pl","nowaruda.pl","nysa.pl","olawa.pl","olecko.pl","olkusz.pl","olsztyn.pl","opoczno.pl","opole.pl","ostroda.pl","ostroleka.pl","ostrowiec.pl","ostrowwlkp.pl","pila.pl","pisz.pl","podhale.pl","podlasie.pl","polkowice.pl","pomorze.pl","pomorskie.pl","prochowice.pl","pruszkow.pl","przeworsk.pl","pulawy.pl","radom.pl","rawa-maz.pl","rybnik.pl","rzeszow.pl","sanok.pl","sejny.pl","slask.pl","slupsk.pl","sosnowiec.pl","stalowa-wola.pl","skoczow.pl","starachowice.pl","stargard.pl","suwalki.pl","swidnica.pl","swiebodzin.pl","swinoujscie.pl","szczecin.pl","szczytno.pl","tarnobrzeg.pl","tgory.pl","turek.pl","tychy.pl","ustka.pl","walbrzych.pl","warmia.pl","warszawa.pl","waw.pl","wegrow.pl","wielun.pl","wlocl.pl","wloclawek.pl","wodzislaw.pl","wolomin.pl","wroclaw.pl","zachpomor.pl","zagan.pl","zarow.pl","zgora.pl","zgorzelec.pl","pm","pn","gov.pn","co.pn","org.pn","edu.pn","net.pn","post","pr","com.pr","net.pr","org.pr","gov.pr","edu.pr","isla.pr","pro.pr","biz.pr","info.pr","name.pr","est.pr","prof.pr","ac.pr","pro","aaa.pro","aca.pro","acct.pro","avocat.pro","bar.pro","cpa.pro","eng.pro","jur.pro","law.pro","med.pro","recht.pro","ps","edu.ps","gov.ps","sec.ps","plo.ps","com.ps","org.ps","net.ps","pt","net.pt","gov.pt","org.pt","edu.pt","int.pt","publ.pt","com.pt","nome.pt","pw","co.pw","ne.pw","or.pw","ed.pw","go.pw","belau.pw","py","com.py","coop.py","edu.py","gov.py","mil.py","net.py","org.py","qa","com.qa","edu.qa","gov.qa","mil.qa","name.qa","net.qa","org.qa","sch.qa","re","asso.re","com.re","nom.re","ro","arts.ro","com.ro","firm.ro","info.ro","nom.ro","nt.ro","org.ro","rec.ro","store.ro","tm.ro","www.ro","rs","ac.rs","co.rs","edu.rs","gov.rs","in.rs","org.rs","ru","rw","ac.rw","co.rw","coop.rw","gov.rw","mil.rw","net.rw","org.rw","sa","com.sa","net.sa","org.sa","gov.sa","med.sa","pub.sa","edu.sa","sch.sa","sb","com.sb","edu.sb","gov.sb","net.sb","org.sb","sc","com.sc","gov.sc","net.sc","org.sc","edu.sc","sd","com.sd","net.sd","org.sd","edu.sd","med.sd","tv.sd","gov.sd","info.sd","se","a.se","ac.se","b.se","bd.se","brand.se","c.se","d.se","e.se","f.se","fh.se","fhsk.se","fhv.se","g.se","h.se","i.se","k.se","komforb.se","kommunalforbund.se","komvux.se","l.se","lanbib.se","m.se","n.se","naturbruksgymn.se","o.se","org.se","p.se","parti.se","pp.se","press.se","r.se","s.se","t.se","tm.se","u.se","w.se","x.se","y.se","z.se","sg","com.sg","net.sg","org.sg","gov.sg","edu.sg","per.sg","sh","com.sh","net.sh","gov.sh","org.sh","mil.sh","si","sj","sk","sl","com.sl","net.sl","edu.sl","gov.sl","org.sl","sm","sn","art.sn","com.sn","edu.sn","gouv.sn","org.sn","perso.sn","univ.sn","so","com.so","edu.so","gov.so","me.so","net.so","org.so","sr","ss","biz.ss","com.ss","edu.ss","gov.ss","me.ss","net.ss","org.ss","sch.ss","st","co.st","com.st","consulado.st","edu.st","embaixada.st","mil.st","net.st","org.st","principe.st","saotome.st","store.st","su","sv","com.sv","edu.sv","gob.sv","org.sv","red.sv","sx","gov.sx","sy","edu.sy","gov.sy","net.sy","mil.sy","com.sy","org.sy","sz","co.sz","ac.sz","org.sz","tc","td","tel","tf","tg","th","ac.th","co.th","go.th","in.th","mi.th","net.th","or.th","tj","ac.tj","biz.tj","co.tj","com.tj","edu.tj","go.tj","gov.tj","int.tj","mil.tj","name.tj","net.tj","nic.tj","org.tj","test.tj","web.tj","tk","tl","gov.tl","tm","com.tm","co.tm","org.tm","net.tm","nom.tm","gov.tm","mil.tm","edu.tm","tn","com.tn","ens.tn","fin.tn","gov.tn","ind.tn","info.tn","intl.tn","mincom.tn","nat.tn","net.tn","org.tn","perso.tn","tourism.tn","to","com.to","gov.to","net.to","org.to","edu.to","mil.to","tr","av.tr","bbs.tr","bel.tr","biz.tr","com.tr","dr.tr","edu.tr","gen.tr","gov.tr","info.tr","mil.tr","k12.tr","kep.tr","name.tr","net.tr","org.tr","pol.tr","tel.tr","tsk.tr","tv.tr","web.tr","nc.tr","gov.nc.tr","tt","co.tt","com.tt","org.tt","net.tt","biz.tt","info.tt","pro.tt","int.tt","coop.tt","jobs.tt","mobi.tt","travel.tt","museum.tt","aero.tt","name.tt","gov.tt","edu.tt","tv","tw","edu.tw","gov.tw","mil.tw","com.tw","net.tw","org.tw","idv.tw","game.tw","ebiz.tw","club.tw","網路.tw","組織.tw","商業.tw","tz","ac.tz","co.tz","go.tz","hotel.tz","info.tz","me.tz","mil.tz","mobi.tz","ne.tz","or.tz","sc.tz","tv.tz","ua","com.ua","edu.ua","gov.ua","in.ua","net.ua","org.ua","cherkassy.ua","cherkasy.ua","chernigov.ua","chernihiv.ua","chernivtsi.ua","chernovtsy.ua","ck.ua","cn.ua","cr.ua","crimea.ua","cv.ua","dn.ua","dnepropetrovsk.ua","dnipropetrovsk.ua","donetsk.ua","dp.ua","if.ua","ivano-frankivsk.ua","kh.ua","kharkiv.ua","kharkov.ua","kherson.ua","khmelnitskiy.ua","khmelnytskyi.ua","kiev.ua","kirovograd.ua","km.ua","kr.ua","krym.ua","ks.ua","kv.ua","kyiv.ua","lg.ua","lt.ua","lugansk.ua","lutsk.ua","lv.ua","lviv.ua","mk.ua","mykolaiv.ua","nikolaev.ua","od.ua","odesa.ua","odessa.ua","pl.ua","poltava.ua","rivne.ua","rovno.ua","rv.ua","sb.ua","sebastopol.ua","sevastopol.ua","sm.ua","sumy.ua","te.ua","ternopil.ua","uz.ua","uzhgorod.ua","vinnica.ua","vinnytsia.ua","vn.ua","volyn.ua","yalta.ua","zaporizhzhe.ua","zaporizhzhia.ua","zhitomir.ua","zhytomyr.ua","zp.ua","zt.ua","ug","co.ug","or.ug","ac.ug","sc.ug","go.ug","ne.ug","com.ug","org.ug","uk","ac.uk","co.uk","gov.uk","ltd.uk","me.uk","net.uk","nhs.uk","org.uk","plc.uk","police.uk","*.sch.uk","us","dni.us","fed.us","isa.us","kids.us","nsn.us","ak.us","al.us","ar.us","as.us","az.us","ca.us","co.us","ct.us","dc.us","de.us","fl.us","ga.us","gu.us","hi.us","ia.us","id.us","il.us","in.us","ks.us","ky.us","la.us","ma.us","md.us","me.us","mi.us","mn.us","mo.us","ms.us","mt.us","nc.us","nd.us","ne.us","nh.us","nj.us","nm.us","nv.us","ny.us","oh.us","ok.us","or.us","pa.us","pr.us","ri.us","sc.us","sd.us","tn.us","tx.us","ut.us","vi.us","vt.us","va.us","wa.us","wi.us","wv.us","wy.us","k12.ak.us","k12.al.us","k12.ar.us","k12.as.us","k12.az.us","k12.ca.us","k12.co.us","k12.ct.us","k12.dc.us","k12.de.us","k12.fl.us","k12.ga.us","k12.gu.us","k12.ia.us","k12.id.us","k12.il.us","k12.in.us","k12.ks.us","k12.ky.us","k12.la.us","k12.ma.us","k12.md.us","k12.me.us","k12.mi.us","k12.mn.us","k12.mo.us","k12.ms.us","k12.mt.us","k12.nc.us","k12.ne.us","k12.nh.us","k12.nj.us","k12.nm.us","k12.nv.us","k12.ny.us","k12.oh.us","k12.ok.us","k12.or.us","k12.pa.us","k12.pr.us","k12.sc.us","k12.tn.us","k12.tx.us","k12.ut.us","k12.vi.us","k12.vt.us","k12.va.us","k12.wa.us","k12.wi.us","k12.wy.us","cc.ak.us","cc.al.us","cc.ar.us","cc.as.us","cc.az.us","cc.ca.us","cc.co.us","cc.ct.us","cc.dc.us","cc.de.us","cc.fl.us","cc.ga.us","cc.gu.us","cc.hi.us","cc.ia.us","cc.id.us","cc.il.us","cc.in.us","cc.ks.us","cc.ky.us","cc.la.us","cc.ma.us","cc.md.us","cc.me.us","cc.mi.us","cc.mn.us","cc.mo.us","cc.ms.us","cc.mt.us","cc.nc.us","cc.nd.us","cc.ne.us","cc.nh.us","cc.nj.us","cc.nm.us","cc.nv.us","cc.ny.us","cc.oh.us","cc.ok.us","cc.or.us","cc.pa.us","cc.pr.us","cc.ri.us","cc.sc.us","cc.sd.us","cc.tn.us","cc.tx.us","cc.ut.us","cc.vi.us","cc.vt.us","cc.va.us","cc.wa.us","cc.wi.us","cc.wv.us","cc.wy.us","lib.ak.us","lib.al.us","lib.ar.us","lib.as.us","lib.az.us","lib.ca.us","lib.co.us","lib.ct.us","lib.dc.us","lib.fl.us","lib.ga.us","lib.gu.us","lib.hi.us","lib.ia.us","lib.id.us","lib.il.us","lib.in.us","lib.ks.us","lib.ky.us","lib.la.us","lib.ma.us","lib.md.us","lib.me.us","lib.mi.us","lib.mn.us","lib.mo.us","lib.ms.us","lib.mt.us","lib.nc.us","lib.nd.us","lib.ne.us","lib.nh.us","lib.nj.us","lib.nm.us","lib.nv.us","lib.ny.us","lib.oh.us","lib.ok.us","lib.or.us","lib.pa.us","lib.pr.us","lib.ri.us","lib.sc.us","lib.sd.us","lib.tn.us","lib.tx.us","lib.ut.us","lib.vi.us","lib.vt.us","lib.va.us","lib.wa.us","lib.wi.us","lib.wy.us","pvt.k12.ma.us","chtr.k12.ma.us","paroch.k12.ma.us","ann-arbor.mi.us","cog.mi.us","dst.mi.us","eaton.mi.us","gen.mi.us","mus.mi.us","tec.mi.us","washtenaw.mi.us","uy","com.uy","edu.uy","gub.uy","mil.uy","net.uy","org.uy","uz","co.uz","com.uz","net.uz","org.uz","va","vc","com.vc","net.vc","org.vc","gov.vc","mil.vc","edu.vc","ve","arts.ve","bib.ve","co.ve","com.ve","e12.ve","edu.ve","firm.ve","gob.ve","gov.ve","info.ve","int.ve","mil.ve","net.ve","nom.ve","org.ve","rar.ve","rec.ve","store.ve","tec.ve","web.ve","vg","vi","co.vi","com.vi","k12.vi","net.vi","org.vi","vn","com.vn","net.vn","org.vn","edu.vn","gov.vn","int.vn","ac.vn","biz.vn","info.vn","name.vn","pro.vn","health.vn","vu","com.vu","edu.vu","net.vu","org.vu","wf","ws","com.ws","net.ws","org.ws","gov.ws","edu.ws","yt","امارات","հայ","বাংলা","бг","البحرين","бел","中国","中國","الجزائر","مصر","ею","ευ","موريتانيا","გე","ελ","香港","公司.香港","教育.香港","政府.香港","個人.香港","網絡.香港","組織.香港","ಭಾರತ","ଭାରତ","ভাৰত","भारतम्","भारोत","ڀارت","ഭാരതം","भारत","بارت","بھارت","భారత్","ભારત","ਭਾਰਤ","ভারত","இந்தியா","ایران","ايران","عراق","الاردن","한국","қаз","ລາວ","ලංකා","இலங்கை","المغرب","мкд","мон","澳門","澳门","مليسيا","عمان","پاکستان","پاكستان","فلسطين","срб","пр.срб","орг.срб","обр.срб","од.срб","упр.срб","ак.срб","рф","قطر","السعودية","السعودیة","السعودیۃ","السعوديه","سودان","新加坡","சிங்கப்பூர்","سورية","سوريا","ไทย","ศึกษา.ไทย","ธุรกิจ.ไทย","รัฐบาล.ไทย","ทหาร.ไทย","เน็ต.ไทย","องค์กร.ไทย","تونس","台灣","台湾","臺灣","укр","اليمن","xxx","ye","com.ye","edu.ye","gov.ye","net.ye","mil.ye","org.ye","ac.za","agric.za","alt.za","co.za","edu.za","gov.za","grondar.za","law.za","mil.za","net.za","ngo.za","nic.za","nis.za","nom.za","org.za","school.za","tm.za","web.za","zm","ac.zm","biz.zm","co.zm","com.zm","edu.zm","gov.zm","info.zm","mil.zm","net.zm","org.zm","sch.zm","zw","ac.zw","co.zw","gov.zw","mil.zw","org.zw","aaa","aarp","abarth","abb","abbott","abbvie","abc","able","abogado","abudhabi","academy","accenture","accountant","accountants","aco","actor","adac","ads","adult","aeg","aetna","afl","africa","agakhan","agency","aig","airbus","airforce","airtel","akdn","alfaromeo","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","aol","apartments","app","apple","aquarelle","arab","aramco","archi","army","art","arte","asda","associates","athleta","attorney","auction","audi","audible","audio","auspost","author","auto","autos","avianca","aws","axa","azure","baby","baidu","banamex","bananarepublic","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bbc","bbt","bbva","bcg","bcn","beats","beauty","beer","bentley","berlin","best","bestbuy","bet","bharti","bible","bid","bike","bing","bingo","bio","black","blackfriday","blockbuster","blog","bloomberg","blue","bms","bmw","bnpparibas","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","bradesco","bridgestone","broadway","broker","brother","brussels","bugatti","build","builders","business","buy","buzz","bzh","cab","cafe","cal","call","calvinklein","cam","camera","camp","cancerresearch","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","cash","casino","catering","catholic","cba","cbn","cbre","cbs","center","ceo","cern","cfa","cfd","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","cipriani","circle","cisco","citadel","citi","citic","city","cityeats","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","coach","codes","coffee","college","cologne","comcast","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cookingchannel","cool","corsica","country","coupon","coupons","courses","cpa","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","cuisinella","cymru","cyou","dabur","dad","dance","data","date","dating","datsun","day","dclk","dds","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dnp","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","dunlop","dupont","durban","dvag","dvr","earth","eat","eco","edeka","education","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","ericsson","erni","esq","estate","etisalat","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fiat","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","flickr","flights","flir","florist","flowers","fly","foo","food","foodnetwork","football","ford","forex","forsale","forum","foundation","fox","free","fresenius","frl","frogans","frontdoor","frontier","ftr","fujitsu","fun","fund","furniture","futbol","fyi","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gbiz","gdn","gea","gent","genting","george","ggee","gift","gifts","gives","giving","glass","gle","global","globo","gmail","gmbh","gmo","gmx","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","grainger","graphics","gratis","green","gripe","grocery","group","guardian","gucci","guge","guide","guitars","guru","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hgtv","hiphop","hisamitsu","hitachi","hiv","hkt","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hoteles","hotels","hotmail","house","how","hsbc","hughes","hyatt","hyundai","ibm","icbc","ice","icu","ieee","ifm","ikano","imamat","imdb","immo","immobilien","inc","industries","infiniti","ing","ink","institute","insurance","insure","international","intuit","investments","ipiranga","irish","ismaili","ist","istanbul","itau","itv","jaguar","java","jcb","jeep","jetzt","jewelry","jio","jll","jmp","jnj","joburg","jot","joy","jpmorgan","jprs","juegos","juniper","kaufen","kddi","kerryhotels","kerrylogistics","kerryproperties","kfh","kia","kids","kim","kinder","kindle","kitchen","kiwi","koeln","komatsu","kosher","kpmg","kpn","krd","kred","kuokgroup","kyoto","lacaixa","lamborghini","lamer","lancaster","lancia","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","linde","link","lipsy","live","living","llc","llp","loan","loans","locker","locus","loft","lol","london","lotte","lotto","love","lpl","lplfinancial","ltd","ltda","lundbeck","luxe","luxury","macys","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","maserati","mattel","mba","mckinsey","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","miami","microsoft","mini","mint","mit","mitsubishi","mlb","mls","mma","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","msd","mtn","mtr","music","mutual","nab","nagoya","natura","navy","nba","nec","netbank","netflix","network","neustar","new","news","next","nextdirect","nexus","nfl","ngo","nhk","nico","nike","nikon","ninja","nissan","nissay","nokia","northwesternmutual","norton","now","nowruz","nowtv","nra","nrw","ntt","nyc","obi","observer","office","okinawa","olayan","olayangroup","oldnavy","ollo","omega","one","ong","onl","online","ooo","open","oracle","orange","organic","origins","osaka","otsuka","ott","ovh","page","panasonic","paris","pars","partners","parts","party","passagens","pay","pccw","pet","pfizer","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","place","play","playstation","plumbing","plus","pnc","pohl","poker","politie","porn","pramerica","praxi","press","prime","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","pub","pwc","qpon","quebec","quest","racing","radio","read","realestate","realtor","realty","recipes","red","redstone","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","ril","rio","rip","rocher","rocks","rodeo","rogers","room","rsvp","rugby","ruhr","run","rwe","ryukyu","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sbi","sbs","sca","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scot","search","seat","secure","security","seek","select","sener","services","ses","seven","sew","sex","sexy","sfr","shangrila","sharp","shaw","shell","shia","shiksha","shoes","shop","shopping","shouji","show","showtime","silk","sina","singles","site","ski","skin","sky","skype","sling","smart","smile","sncf","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","srl","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","sucks","supplies","supply","support","surf","surgery","suzuki","swatch","swiss","sydney","systems","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tci","tdk","team","tech","technology","temasek","tennis","teva","thd","theater","theatre","tiaa","tickets","tienda","tiffany","tips","tires","tirol","tjmaxx","tjx","tkmaxx","tmall","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","trade","trading","training","travel","travelchannel","travelers","travelersinsurance","trust","trv","tube","tui","tunes","tushu","tvs","ubank","ubs","unicom","university","uno","uol","ups","vacations","vana","vanguard","vegas","ventures","verisign","versicherung","vet","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","viva","vivo","vlaanderen","vodka","volkswagen","volvo","vote","voting","voto","voyage","vuelos","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wedding","weibo","weir","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","wtc","wtf","xbox","xerox","xfinity","xihuan","xin","कॉम","セール","佛山","慈善","集团","在线","点看","คอม","八卦","موقع","公益","公司","香格里拉","网站","移动","我爱你","москва","католик","онлайн","сайт","联通","קום","时尚","微博","淡马锡","ファッション","орг","नेट","ストア","アマゾン","삼성","商标","商店","商城","дети","ポイント","新闻","家電","كوم","中文网","中信","娱乐","谷歌","電訊盈科","购物","クラウド","通販","网店","संगठन","餐厅","网络","ком","亚马逊","诺基亚","食品","飞利浦","手机","ارامكو","العليان","اتصالات","بازار","ابوظبي","كاثوليك","همراه","닷컴","政府","شبكة","بيتك","عرب","机构","组织机构","健康","招聘","рус","大拿","みんな","グーグル","世界","書籍","网址","닷넷","コム","天主教","游戏","vermögensberater","vermögensberatung","企业","信息","嘉里大酒店","嘉里","广东","政务","xyz","yachts","yahoo","yamaxun","yandex","yodobashi","yoga","yokohama","you","youtube","yun","zappos","zara","zero","zip","zone","zuerich","cc.ua","inf.ua","ltd.ua","611.to","graphox.us","*.devcdnaccesso.com","adobeaemcloud.com","*.dev.adobeaemcloud.com","hlx.live","adobeaemcloud.net","hlx.page","hlx3.page","beep.pl","airkitapps.com","airkitapps-au.com","airkitapps.eu","aivencloud.com","barsy.ca","*.compute.estate","*.alces.network","kasserver.com","altervista.org","alwaysdata.net","cloudfront.net","*.compute.amazonaws.com","*.compute-1.amazonaws.com","*.compute.amazonaws.com.cn","us-east-1.amazonaws.com","cn-north-1.eb.amazonaws.com.cn","cn-northwest-1.eb.amazonaws.com.cn","elasticbeanstalk.com","ap-northeast-1.elasticbeanstalk.com","ap-northeast-2.elasticbeanstalk.com","ap-northeast-3.elasticbeanstalk.com","ap-south-1.elasticbeanstalk.com","ap-southeast-1.elasticbeanstalk.com","ap-southeast-2.elasticbeanstalk.com","ca-central-1.elasticbeanstalk.com","eu-central-1.elasticbeanstalk.com","eu-west-1.elasticbeanstalk.com","eu-west-2.elasticbeanstalk.com","eu-west-3.elasticbeanstalk.com","sa-east-1.elasticbeanstalk.com","us-east-1.elasticbeanstalk.com","us-east-2.elasticbeanstalk.com","us-gov-west-1.elasticbeanstalk.com","us-west-1.elasticbeanstalk.com","us-west-2.elasticbeanstalk.com","*.elb.amazonaws.com","*.elb.amazonaws.com.cn","awsglobalaccelerator.com","s3.amazonaws.com","s3-ap-northeast-1.amazonaws.com","s3-ap-northeast-2.amazonaws.com","s3-ap-south-1.amazonaws.com","s3-ap-southeast-1.amazonaws.com","s3-ap-southeast-2.amazonaws.com","s3-ca-central-1.amazonaws.com","s3-eu-central-1.amazonaws.com","s3-eu-west-1.amazonaws.com","s3-eu-west-2.amazonaws.com","s3-eu-west-3.amazonaws.com","s3-external-1.amazonaws.com","s3-fips-us-gov-west-1.amazonaws.com","s3-sa-east-1.amazonaws.com","s3-us-gov-west-1.amazonaws.com","s3-us-east-2.amazonaws.com","s3-us-west-1.amazonaws.com","s3-us-west-2.amazonaws.com","s3.ap-northeast-2.amazonaws.com","s3.ap-south-1.amazonaws.com","s3.cn-north-1.amazonaws.com.cn","s3.ca-central-1.amazonaws.com","s3.eu-central-1.amazonaws.com","s3.eu-west-2.amazonaws.com","s3.eu-west-3.amazonaws.com","s3.us-east-2.amazonaws.com","s3.dualstack.ap-northeast-1.amazonaws.com","s3.dualstack.ap-northeast-2.amazonaws.com","s3.dualstack.ap-south-1.amazonaws.com","s3.dualstack.ap-southeast-1.amazonaws.com","s3.dualstack.ap-southeast-2.amazonaws.com","s3.dualstack.ca-central-1.amazonaws.com","s3.dualstack.eu-central-1.amazonaws.com","s3.dualstack.eu-west-1.amazonaws.com","s3.dualstack.eu-west-2.amazonaws.com","s3.dualstack.eu-west-3.amazonaws.com","s3.dualstack.sa-east-1.amazonaws.com","s3.dualstack.us-east-1.amazonaws.com","s3.dualstack.us-east-2.amazonaws.com","s3-website-us-east-1.amazonaws.com","s3-website-us-west-1.amazonaws.com","s3-website-us-west-2.amazonaws.com","s3-website-ap-northeast-1.amazonaws.com","s3-website-ap-southeast-1.amazonaws.com","s3-website-ap-southeast-2.amazonaws.com","s3-website-eu-west-1.amazonaws.com","s3-website-sa-east-1.amazonaws.com","s3-website.ap-northeast-2.amazonaws.com","s3-website.ap-south-1.amazonaws.com","s3-website.ca-central-1.amazonaws.com","s3-website.eu-central-1.amazonaws.com","s3-website.eu-west-2.amazonaws.com","s3-website.eu-west-3.amazonaws.com","s3-website.us-east-2.amazonaws.com","t3l3p0rt.net","tele.amune.org","apigee.io","siiites.com","appspacehosted.com","appspaceusercontent.com","appudo.net","on-aptible.com","user.aseinet.ne.jp","gv.vc","d.gv.vc","user.party.eus","pimienta.org","poivron.org","potager.org","sweetpepper.org","myasustor.com","cdn.prod.atlassian-dev.net","translated.page","myfritz.net","onavstack.net","*.awdev.ca","*.advisor.ws","ecommerce-shop.pl","b-data.io","backplaneapp.io","balena-devices.com","rs.ba","*.banzai.cloud","app.banzaicloud.io","*.backyards.banzaicloud.io","base.ec","official.ec","buyshop.jp","fashionstore.jp","handcrafted.jp","kawaiishop.jp","supersale.jp","theshop.jp","shopselect.net","base.shop","*.beget.app","betainabox.com","bnr.la","bitbucket.io","blackbaudcdn.net","of.je","bluebite.io","boomla.net","boutir.com","boxfuse.io","square7.ch","bplaced.com","bplaced.de","square7.de","bplaced.net","square7.net","shop.brendly.rs","browsersafetymark.io","uk0.bigv.io","dh.bytemark.co.uk","vm.bytemark.co.uk","cafjs.com","mycd.eu","drr.ac","uwu.ai","carrd.co","crd.co","ju.mp","ae.org","br.com","cn.com","com.de","com.se","de.com","eu.com","gb.net","hu.net","jp.net","jpn.com","mex.com","ru.com","sa.com","se.net","uk.com","uk.net","us.com","za.bz","za.com","ar.com","hu.com","kr.com","no.com","qc.com","uy.com","africa.com","gr.com","in.net","web.in","us.org","co.com","aus.basketball","nz.basketball","radio.am","radio.fm","c.la","certmgr.org","cx.ua","discourse.group","discourse.team","cleverapps.io","clerk.app","clerkstage.app","*.lcl.dev","*.lclstage.dev","*.stg.dev","*.stgstage.dev","clickrising.net","c66.me","cloud66.ws","cloud66.zone","jdevcloud.com","wpdevcloud.com","cloudaccess.host","freesite.host","cloudaccess.net","cloudcontrolled.com","cloudcontrolapp.com","*.cloudera.site","pages.dev","trycloudflare.com","workers.dev","wnext.app","co.ca","*.otap.co","co.cz","c.cdn77.org","cdn77-ssl.net","r.cdn77.net","rsc.cdn77.org","ssl.origin.cdn77-secure.org","cloudns.asia","cloudns.biz","cloudns.club","cloudns.cc","cloudns.eu","cloudns.in","cloudns.info","cloudns.org","cloudns.pro","cloudns.pw","cloudns.us","cnpy.gdn","codeberg.page","co.nl","co.no","webhosting.be","hosting-cluster.nl","ac.ru","edu.ru","gov.ru","int.ru","mil.ru","test.ru","dyn.cosidns.de","dynamisches-dns.de","dnsupdater.de","internet-dns.de","l-o-g-i-n.de","dynamic-dns.info","feste-ip.net","knx-server.net","static-access.net","realm.cz","*.cryptonomic.net","cupcake.is","curv.dev","*.customer-oci.com","*.oci.customer-oci.com","*.ocp.customer-oci.com","*.ocs.customer-oci.com","cyon.link","cyon.site","fnwk.site","folionetwork.site","platform0.app","daplie.me","localhost.daplie.me","dattolocal.com","dattorelay.com","dattoweb.com","mydatto.com","dattolocal.net","mydatto.net","biz.dk","co.dk","firm.dk","reg.dk","store.dk","dyndns.dappnode.io","*.dapps.earth","*.bzz.dapps.earth","builtwithdark.com","demo.datadetect.com","instance.datadetect.com","edgestack.me","ddns5.com","debian.net","deno.dev","deno-staging.dev","dedyn.io","deta.app","deta.dev","*.rss.my.id","*.diher.solutions","discordsays.com","discordsez.com","jozi.biz","dnshome.de","online.th","shop.th","drayddns.com","shoparena.pl","dreamhosters.com","mydrobo.com","drud.io","drud.us","duckdns.org","bip.sh","bitbridge.net","dy.fi","tunk.org","dyndns-at-home.com","dyndns-at-work.com","dyndns-blog.com","dyndns-free.com","dyndns-home.com","dyndns-ip.com","dyndns-mail.com","dyndns-office.com","dyndns-pics.com","dyndns-remote.com","dyndns-server.com","dyndns-web.com","dyndns-wiki.com","dyndns-work.com","dyndns.biz","dyndns.info","dyndns.org","dyndns.tv","at-band-camp.net","ath.cx","barrel-of-knowledge.info","barrell-of-knowledge.info","better-than.tv","blogdns.com","blogdns.net","blogdns.org","blogsite.org","boldlygoingnowhere.org","broke-it.net","buyshouses.net","cechire.com","dnsalias.com","dnsalias.net","dnsalias.org","dnsdojo.com","dnsdojo.net","dnsdojo.org","does-it.net","doesntexist.com","doesntexist.org","dontexist.com","dontexist.net","dontexist.org","doomdns.com","doomdns.org","dvrdns.org","dyn-o-saur.com","dynalias.com","dynalias.net","dynalias.org","dynathome.net","dyndns.ws","endofinternet.net","endofinternet.org","endoftheinternet.org","est-a-la-maison.com","est-a-la-masion.com","est-le-patron.com","est-mon-blogueur.com","for-better.biz","for-more.biz","for-our.info","for-some.biz","for-the.biz","forgot.her.name","forgot.his.name","from-ak.com","from-al.com","from-ar.com","from-az.net","from-ca.com","from-co.net","from-ct.com","from-dc.com","from-de.com","from-fl.com","from-ga.com","from-hi.com","from-ia.com","from-id.com","from-il.com","from-in.com","from-ks.com","from-ky.com","from-la.net","from-ma.com","from-md.com","from-me.org","from-mi.com","from-mn.com","from-mo.com","from-ms.com","from-mt.com","from-nc.com","from-nd.com","from-ne.com","from-nh.com","from-nj.com","from-nm.com","from-nv.com","from-ny.net","from-oh.com","from-ok.com","from-or.com","from-pa.com","from-pr.com","from-ri.com","from-sc.com","from-sd.com","from-tn.com","from-tx.com","from-ut.com","from-va.com","from-vt.com","from-wa.com","from-wi.com","from-wv.com","from-wy.com","ftpaccess.cc","fuettertdasnetz.de","game-host.org","game-server.cc","getmyip.com","gets-it.net","go.dyndns.org","gotdns.com","gotdns.org","groks-the.info","groks-this.info","ham-radio-op.net","here-for-more.info","hobby-site.com","hobby-site.org","home.dyndns.org","homedns.org","homeftp.net","homeftp.org","homeip.net","homelinux.com","homelinux.net","homelinux.org","homeunix.com","homeunix.net","homeunix.org","iamallama.com","in-the-band.net","is-a-anarchist.com","is-a-blogger.com","is-a-bookkeeper.com","is-a-bruinsfan.org","is-a-bulls-fan.com","is-a-candidate.org","is-a-caterer.com","is-a-celticsfan.org","is-a-chef.com","is-a-chef.net","is-a-chef.org","is-a-conservative.com","is-a-cpa.com","is-a-cubicle-slave.com","is-a-democrat.com","is-a-designer.com","is-a-doctor.com","is-a-financialadvisor.com","is-a-geek.com","is-a-geek.net","is-a-geek.org","is-a-green.com","is-a-guru.com","is-a-hard-worker.com","is-a-hunter.com","is-a-knight.org","is-a-landscaper.com","is-a-lawyer.com","is-a-liberal.com","is-a-libertarian.com","is-a-linux-user.org","is-a-llama.com","is-a-musician.com","is-a-nascarfan.com","is-a-nurse.com","is-a-painter.com","is-a-patsfan.org","is-a-personaltrainer.com","is-a-photographer.com","is-a-player.com","is-a-republican.com","is-a-rockstar.com","is-a-socialist.com","is-a-soxfan.org","is-a-student.com","is-a-teacher.com","is-a-techie.com","is-a-therapist.com","is-an-accountant.com","is-an-actor.com","is-an-actress.com","is-an-anarchist.com","is-an-artist.com","is-an-engineer.com","is-an-entertainer.com","is-by.us","is-certified.com","is-found.org","is-gone.com","is-into-anime.com","is-into-cars.com","is-into-cartoons.com","is-into-games.com","is-leet.com","is-lost.org","is-not-certified.com","is-saved.org","is-slick.com","is-uberleet.com","is-very-bad.org","is-very-evil.org","is-very-good.org","is-very-nice.org","is-very-sweet.org","is-with-theband.com","isa-geek.com","isa-geek.net","isa-geek.org","isa-hockeynut.com","issmarterthanyou.com","isteingeek.de","istmein.de","kicks-ass.net","kicks-ass.org","knowsitall.info","land-4-sale.us","lebtimnetz.de","leitungsen.de","likes-pie.com","likescandy.com","merseine.nu","mine.nu","misconfused.org","mypets.ws","myphotos.cc","neat-url.com","office-on-the.net","on-the-web.tv","podzone.net","podzone.org","readmyblog.org","saves-the-whales.com","scrapper-site.net","scrapping.cc","selfip.biz","selfip.com","selfip.info","selfip.net","selfip.org","sells-for-less.com","sells-for-u.com","sells-it.net","sellsyourhome.org","servebbs.com","servebbs.net","servebbs.org","serveftp.net","serveftp.org","servegame.org","shacknet.nu","simple-url.com","space-to-rent.com","stuff-4-sale.org","stuff-4-sale.us","teaches-yoga.com","thruhere.net","traeumtgerade.de","webhop.biz","webhop.info","webhop.net","webhop.org","worse-than.tv","writesthisblog.com","ddnss.de","dyn.ddnss.de","dyndns.ddnss.de","dyndns1.de","dyn-ip24.de","home-webserver.de","dyn.home-webserver.de","myhome-server.de","ddnss.org","definima.net","definima.io","ondigitalocean.app","*.digitaloceanspaces.com","bci.dnstrace.pro","ddnsfree.com","ddnsgeek.com","giize.com","gleeze.com","kozow.com","loseyourip.com","ooguy.com","theworkpc.com","casacam.net","dynu.net","accesscam.org","camdvr.org","freeddns.org","mywire.org","webredirect.org","myddns.rocks","blogsite.xyz","dynv6.net","e4.cz","eero.online","eero-stage.online","elementor.cloud","elementor.cool","en-root.fr","mytuleap.com","tuleap-partners.com","encr.app","encoreapi.com","onred.one","staging.onred.one","eu.encoway.cloud","eu.org","al.eu.org","asso.eu.org","at.eu.org","au.eu.org","be.eu.org","bg.eu.org","ca.eu.org","cd.eu.org","ch.eu.org","cn.eu.org","cy.eu.org","cz.eu.org","de.eu.org","dk.eu.org","edu.eu.org","ee.eu.org","es.eu.org","fi.eu.org","fr.eu.org","gr.eu.org","hr.eu.org","hu.eu.org","ie.eu.org","il.eu.org","in.eu.org","int.eu.org","is.eu.org","it.eu.org","jp.eu.org","kr.eu.org","lt.eu.org","lu.eu.org","lv.eu.org","mc.eu.org","me.eu.org","mk.eu.org","mt.eu.org","my.eu.org","net.eu.org","ng.eu.org","nl.eu.org","no.eu.org","nz.eu.org","paris.eu.org","pl.eu.org","pt.eu.org","q-a.eu.org","ro.eu.org","ru.eu.org","se.eu.org","si.eu.org","sk.eu.org","tr.eu.org","uk.eu.org","us.eu.org","eurodir.ru","eu-1.evennode.com","eu-2.evennode.com","eu-3.evennode.com","eu-4.evennode.com","us-1.evennode.com","us-2.evennode.com","us-3.evennode.com","us-4.evennode.com","twmail.cc","twmail.net","twmail.org","mymailer.com.tw","url.tw","onfabrica.com","apps.fbsbx.com","ru.net","adygeya.ru","bashkiria.ru","bir.ru","cbg.ru","com.ru","dagestan.ru","grozny.ru","kalmykia.ru","kustanai.ru","marine.ru","mordovia.ru","msk.ru","mytis.ru","nalchik.ru","nov.ru","pyatigorsk.ru","spb.ru","vladikavkaz.ru","vladimir.ru","abkhazia.su","adygeya.su","aktyubinsk.su","arkhangelsk.su","armenia.su","ashgabad.su","azerbaijan.su","balashov.su","bashkiria.su","bryansk.su","bukhara.su","chimkent.su","dagestan.su","east-kazakhstan.su","exnet.su","georgia.su","grozny.su","ivanovo.su","jambyl.su","kalmykia.su","kaluga.su","karacol.su","karaganda.su","karelia.su","khakassia.su","krasnodar.su","kurgan.su","kustanai.su","lenug.su","mangyshlak.su","mordovia.su","msk.su","murmansk.su","nalchik.su","navoi.su","north-kazakhstan.su","nov.su","obninsk.su","penza.su","pokrovsk.su","sochi.su","spb.su","tashkent.su","termez.su","togliatti.su","troitsk.su","tselinograd.su","tula.su","tuva.su","vladikavkaz.su","vladimir.su","vologda.su","channelsdvr.net","u.channelsdvr.net","edgecompute.app","fastly-terrarium.com","fastlylb.net","map.fastlylb.net","freetls.fastly.net","map.fastly.net","a.prod.fastly.net","global.prod.fastly.net","a.ssl.fastly.net","b.ssl.fastly.net","global.ssl.fastly.net","fastvps-server.com","fastvps.host","myfast.host","fastvps.site","myfast.space","fedorainfracloud.org","fedorapeople.org","cloud.fedoraproject.org","app.os.fedoraproject.org","app.os.stg.fedoraproject.org","conn.uk","copro.uk","hosp.uk","mydobiss.com","fh-muenster.io","filegear.me","filegear-au.me","filegear-de.me","filegear-gb.me","filegear-ie.me","filegear-jp.me","filegear-sg.me","firebaseapp.com","fireweb.app","flap.id","onflashdrive.app","fldrv.com","fly.dev","edgeapp.net","shw.io","flynnhosting.net","forgeblocks.com","id.forgerock.io","framer.app","framercanvas.com","*.frusky.de","ravpage.co.il","0e.vc","freebox-os.com","freeboxos.com","fbx-os.fr","fbxos.fr","freebox-os.fr","freeboxos.fr","freedesktop.org","freemyip.com","wien.funkfeuer.at","*.futurecms.at","*.ex.futurecms.at","*.in.futurecms.at","futurehosting.at","futuremailing.at","*.ex.ortsinfo.at","*.kunden.ortsinfo.at","*.statics.cloud","independent-commission.uk","independent-inquest.uk","independent-inquiry.uk","independent-panel.uk","independent-review.uk","public-inquiry.uk","royal-commission.uk","campaign.gov.uk","service.gov.uk","api.gov.uk","gehirn.ne.jp","usercontent.jp","gentapps.com","gentlentapis.com","lab.ms","cdn-edges.net","ghost.io","gsj.bz","githubusercontent.com","githubpreview.dev","github.io","gitlab.io","gitapp.si","gitpage.si","glitch.me","nog.community","co.ro","shop.ro","lolipop.io","angry.jp","babyblue.jp","babymilk.jp","backdrop.jp","bambina.jp","bitter.jp","blush.jp","boo.jp","boy.jp","boyfriend.jp","but.jp","candypop.jp","capoo.jp","catfood.jp","cheap.jp","chicappa.jp","chillout.jp","chips.jp","chowder.jp","chu.jp","ciao.jp","cocotte.jp","coolblog.jp","cranky.jp","cutegirl.jp","daa.jp","deca.jp","deci.jp","digick.jp","egoism.jp","fakefur.jp","fem.jp","flier.jp","floppy.jp","fool.jp","frenchkiss.jp","girlfriend.jp","girly.jp","gloomy.jp","gonna.jp","greater.jp","hacca.jp","heavy.jp","her.jp","hiho.jp","hippy.jp","holy.jp","hungry.jp","icurus.jp","itigo.jp","jellybean.jp","kikirara.jp","kill.jp","kilo.jp","kuron.jp","littlestar.jp","lolipopmc.jp","lolitapunk.jp","lomo.jp","lovepop.jp","lovesick.jp","main.jp","mods.jp","mond.jp","mongolian.jp","moo.jp","namaste.jp","nikita.jp","nobushi.jp","noor.jp","oops.jp","parallel.jp","parasite.jp","pecori.jp","peewee.jp","penne.jp","pepper.jp","perma.jp","pigboat.jp","pinoko.jp","punyu.jp","pupu.jp","pussycat.jp","pya.jp","raindrop.jp","readymade.jp","sadist.jp","schoolbus.jp","secret.jp","staba.jp","stripper.jp","sub.jp","sunnyday.jp","thick.jp","tonkotsu.jp","under.jp","upper.jp","velvet.jp","verse.jp","versus.jp","vivian.jp","watson.jp","weblike.jp","whitesnow.jp","zombie.jp","heteml.net","cloudapps.digital","london.cloudapps.digital","pymnt.uk","homeoffice.gov.uk","ro.im","goip.de","run.app","a.run.app","web.app","*.0emm.com","appspot.com","*.r.appspot.com","codespot.com","googleapis.com","googlecode.com","pagespeedmobilizer.com","publishproxy.com","withgoogle.com","withyoutube.com","*.gateway.dev","cloud.goog","translate.goog","*.usercontent.goog","cloudfunctions.net","blogspot.ae","blogspot.al","blogspot.am","blogspot.ba","blogspot.be","blogspot.bg","blogspot.bj","blogspot.ca","blogspot.cf","blogspot.ch","blogspot.cl","blogspot.co.at","blogspot.co.id","blogspot.co.il","blogspot.co.ke","blogspot.co.nz","blogspot.co.uk","blogspot.co.za","blogspot.com","blogspot.com.ar","blogspot.com.au","blogspot.com.br","blogspot.com.by","blogspot.com.co","blogspot.com.cy","blogspot.com.ee","blogspot.com.eg","blogspot.com.es","blogspot.com.mt","blogspot.com.ng","blogspot.com.tr","blogspot.com.uy","blogspot.cv","blogspot.cz","blogspot.de","blogspot.dk","blogspot.fi","blogspot.fr","blogspot.gr","blogspot.hk","blogspot.hr","blogspot.hu","blogspot.ie","blogspot.in","blogspot.is","blogspot.it","blogspot.jp","blogspot.kr","blogspot.li","blogspot.lt","blogspot.lu","blogspot.md","blogspot.mk","blogspot.mr","blogspot.mx","blogspot.my","blogspot.nl","blogspot.no","blogspot.pe","blogspot.pt","blogspot.qa","blogspot.re","blogspot.ro","blogspot.rs","blogspot.ru","blogspot.se","blogspot.sg","blogspot.si","blogspot.sk","blogspot.sn","blogspot.td","blogspot.tw","blogspot.ug","blogspot.vn","goupile.fr","gov.nl","awsmppl.com","günstigbestellen.de","günstigliefern.de","fin.ci","free.hr","caa.li","ua.rs","conf.se","hs.zone","hs.run","hashbang.sh","hasura.app","hasura-app.io","pages.it.hs-heilbronn.de","hepforge.org","herokuapp.com","herokussl.com","ravendb.cloud","myravendb.com","ravendb.community","ravendb.me","development.run","ravendb.run","homesklep.pl","secaas.hk","hoplix.shop","orx.biz","biz.gl","col.ng","firm.ng","gen.ng","ltd.ng","ngo.ng","edu.scot","sch.so","hostyhosting.io","häkkinen.fi","*.moonscale.io","moonscale.net","iki.fi","ibxos.it","iliadboxos.it","impertrixcdn.com","impertrix.com","smushcdn.com","wphostedmail.com","wpmucdn.com","tempurl.host","wpmudev.host","dyn-berlin.de","in-berlin.de","in-brb.de","in-butter.de","in-dsl.de","in-dsl.net","in-dsl.org","in-vpn.de","in-vpn.net","in-vpn.org","biz.at","info.at","info.cx","ac.leg.br","al.leg.br","am.leg.br","ap.leg.br","ba.leg.br","ce.leg.br","df.leg.br","es.leg.br","go.leg.br","ma.leg.br","mg.leg.br","ms.leg.br","mt.leg.br","pa.leg.br","pb.leg.br","pe.leg.br","pi.leg.br","pr.leg.br","rj.leg.br","rn.leg.br","ro.leg.br","rr.leg.br","rs.leg.br","sc.leg.br","se.leg.br","sp.leg.br","to.leg.br","pixolino.com","na4u.ru","iopsys.se","ipifony.net","iservschule.de","mein-iserv.de","schulplattform.de","schulserver.de","test-iserv.de","iserv.dev","iobb.net","mel.cloudlets.com.au","cloud.interhostsolutions.be","users.scale.virtualcloud.com.br","mycloud.by","alp1.ae.flow.ch","appengine.flow.ch","es-1.axarnet.cloud","diadem.cloud","vip.jelastic.cloud","jele.cloud","it1.eur.aruba.jenv-aruba.cloud","it1.jenv-aruba.cloud","keliweb.cloud","cs.keliweb.cloud","oxa.cloud","tn.oxa.cloud","uk.oxa.cloud","primetel.cloud","uk.primetel.cloud","ca.reclaim.cloud","uk.reclaim.cloud","us.reclaim.cloud","ch.trendhosting.cloud","de.trendhosting.cloud","jele.club","amscompute.com","clicketcloud.com","dopaas.com","hidora.com","paas.hosted-by-previder.com","rag-cloud.hosteur.com","rag-cloud-ch.hosteur.com","jcloud.ik-server.com","jcloud-ver-jpc.ik-server.com","demo.jelastic.com","kilatiron.com","paas.massivegrid.com","jed.wafaicloud.com","lon.wafaicloud.com","ryd.wafaicloud.com","j.scaleforce.com.cy","jelastic.dogado.eu","fi.cloudplatform.fi","demo.datacenter.fi","paas.datacenter.fi","jele.host","mircloud.host","paas.beebyte.io","sekd1.beebyteapp.io","jele.io","cloud-fr1.unispace.io","jc.neen.it","cloud.jelastic.open.tim.it","jcloud.kz","upaas.kazteleport.kz","cloudjiffy.net","fra1-de.cloudjiffy.net","west1-us.cloudjiffy.net","jls-sto1.elastx.net","jls-sto2.elastx.net","jls-sto3.elastx.net","faststacks.net","fr-1.paas.massivegrid.net","lon-1.paas.massivegrid.net","lon-2.paas.massivegrid.net","ny-1.paas.massivegrid.net","ny-2.paas.massivegrid.net","sg-1.paas.massivegrid.net","jelastic.saveincloud.net","nordeste-idc.saveincloud.net","j.scaleforce.net","jelastic.tsukaeru.net","sdscloud.pl","unicloud.pl","mircloud.ru","jelastic.regruhosting.ru","enscaled.sg","jele.site","jelastic.team","orangecloud.tn","j.layershift.co.uk","phx.enscaled.us","mircloud.us","myjino.ru","*.hosting.myjino.ru","*.landing.myjino.ru","*.spectrum.myjino.ru","*.vps.myjino.ru","jotelulu.cloud","*.triton.zone","*.cns.joyent.com","js.org","kaas.gg","khplay.nl","ktistory.com","kapsi.fi","keymachine.de","kinghost.net","uni5.net","knightpoint.systems","koobin.events","oya.to","kuleuven.cloud","ezproxy.kuleuven.be","co.krd","edu.krd","krellian.net","webthings.io","git-repos.de","lcube-server.de","svn-repos.de","leadpages.co","lpages.co","lpusercontent.com","lelux.site","co.business","co.education","co.events","co.financial","co.network","co.place","co.technology","app.lmpm.com","linkyard.cloud","linkyard-cloud.ch","members.linode.com","*.nodebalancer.linode.com","*.linodeobjects.com","ip.linodeusercontent.com","we.bs","*.user.localcert.dev","localzone.xyz","loginline.app","loginline.dev","loginline.io","loginline.services","loginline.site","servers.run","lohmus.me","krasnik.pl","leczna.pl","lubartow.pl","lublin.pl","poniatowa.pl","swidnik.pl","glug.org.uk","lug.org.uk","lugs.org.uk","barsy.bg","barsy.co.uk","barsyonline.co.uk","barsycenter.com","barsyonline.com","barsy.club","barsy.de","barsy.eu","barsy.in","barsy.info","barsy.io","barsy.me","barsy.menu","barsy.mobi","barsy.net","barsy.online","barsy.org","barsy.pro","barsy.pub","barsy.ro","barsy.shop","barsy.site","barsy.support","barsy.uk","*.magentosite.cloud","mayfirst.info","mayfirst.org","hb.cldmail.ru","cn.vu","mazeplay.com","mcpe.me","mcdir.me","mcdir.ru","mcpre.ru","vps.mcdir.ru","mediatech.by","mediatech.dev","hra.health","miniserver.com","memset.net","messerli.app","*.cloud.metacentrum.cz","custom.metacentrum.cz","flt.cloud.muni.cz","usr.cloud.muni.cz","meteorapp.com","eu.meteorapp.com","co.pl","*.azurecontainer.io","azurewebsites.net","azure-mobile.net","cloudapp.net","azurestaticapps.net","1.azurestaticapps.net","centralus.azurestaticapps.net","eastasia.azurestaticapps.net","eastus2.azurestaticapps.net","westeurope.azurestaticapps.net","westus2.azurestaticapps.net","csx.cc","mintere.site","forte.id","mozilla-iot.org","bmoattachments.org","net.ru","org.ru","pp.ru","hostedpi.com","customer.mythic-beasts.com","caracal.mythic-beasts.com","fentiger.mythic-beasts.com","lynx.mythic-beasts.com","ocelot.mythic-beasts.com","oncilla.mythic-beasts.com","onza.mythic-beasts.com","sphinx.mythic-beasts.com","vs.mythic-beasts.com","x.mythic-beasts.com","yali.mythic-beasts.com","cust.retrosnub.co.uk","ui.nabu.casa","pony.club","of.fashion","in.london","of.london","from.marketing","with.marketing","for.men","repair.men","and.mom","for.mom","for.one","under.one","for.sale","that.win","from.work","to.work","cloud.nospamproxy.com","netlify.app","4u.com","ngrok.io","nh-serv.co.uk","nfshost.com","*.developer.app","noop.app","*.northflank.app","*.build.run","*.code.run","*.database.run","*.migration.run","noticeable.news","dnsking.ch","mypi.co","n4t.co","001www.com","ddnslive.com","myiphost.com","forumz.info","16-b.it","32-b.it","64-b.it","soundcast.me","tcp4.me","dnsup.net","hicam.net","now-dns.net","ownip.net","vpndns.net","dynserv.org","now-dns.org","x443.pw","now-dns.top","ntdll.top","freeddns.us","crafting.xyz","zapto.xyz","nsupdate.info","nerdpol.ovh","blogsyte.com","brasilia.me","cable-modem.org","ciscofreak.com","collegefan.org","couchpotatofries.org","damnserver.com","ddns.me","ditchyourip.com","dnsfor.me","dnsiskinky.com","dvrcam.info","dynns.com","eating-organic.net","fantasyleague.cc","geekgalaxy.com","golffan.us","health-carereform.com","homesecuritymac.com","homesecuritypc.com","hopto.me","ilovecollege.info","loginto.me","mlbfan.org","mmafan.biz","myactivedirectory.com","mydissent.net","myeffect.net","mymediapc.net","mypsx.net","mysecuritycamera.com","mysecuritycamera.net","mysecuritycamera.org","net-freaks.com","nflfan.org","nhlfan.net","no-ip.ca","no-ip.co.uk","no-ip.net","noip.us","onthewifi.com","pgafan.net","point2this.com","pointto.us","privatizehealthinsurance.net","quicksytes.com","read-books.org","securitytactics.com","serveexchange.com","servehumour.com","servep2p.com","servesarcasm.com","stufftoread.com","ufcfan.org","unusualperson.com","workisboring.com","3utilities.com","bounceme.net","ddns.net","ddnsking.com","gotdns.ch","hopto.org","myftp.biz","myftp.org","myvnc.com","no-ip.biz","no-ip.info","no-ip.org","noip.me","redirectme.net","servebeer.com","serveblog.net","servecounterstrike.com","serveftp.com","servegame.com","servehalflife.com","servehttp.com","serveirc.com","serveminecraft.net","servemp3.com","servepics.com","servequake.com","sytes.net","webhop.me","zapto.org","stage.nodeart.io","pcloud.host","nyc.mn","static.observableusercontent.com","cya.gg","omg.lol","cloudycluster.net","omniwe.site","service.one","nid.io","opensocial.site","opencraft.hosting","orsites.com","operaunite.com","tech.orange","authgear-staging.com","authgearapps.com","skygearapp.com","outsystemscloud.com","*.webpaas.ovh.net","*.hosting.ovh.net","ownprovider.com","own.pm","*.owo.codes","ox.rs","oy.lc","pgfog.com","pagefrontapp.com","pagexl.com","*.paywhirl.com","bar0.net","bar1.net","bar2.net","rdv.to","art.pl","gliwice.pl","krakow.pl","poznan.pl","wroc.pl","zakopane.pl","pantheonsite.io","gotpantheon.com","mypep.link","perspecta.cloud","lk3.ru","on-web.fr","bc.platform.sh","ent.platform.sh","eu.platform.sh","us.platform.sh","*.platformsh.site","*.tst.site","platter-app.com","platter-app.dev","platterp.us","pdns.page","plesk.page","pleskns.com","dyn53.io","onporter.run","co.bn","postman-echo.com","pstmn.io","mock.pstmn.io","httpbin.org","prequalifyme.today","xen.prgmr.com","priv.at","prvcy.page","*.dweb.link","protonet.io","chirurgiens-dentistes-en-france.fr","byen.site","pubtls.org","pythonanywhere.com","eu.pythonanywhere.com","qoto.io","qualifioapp.com","qbuser.com","cloudsite.builders","instances.spawn.cc","instantcloud.cn","ras.ru","qa2.com","qcx.io","*.sys.qcx.io","dev-myqnapcloud.com","alpha-myqnapcloud.com","myqnapcloud.com","*.quipelements.com","vapor.cloud","vaporcloud.io","rackmaze.com","rackmaze.net","g.vbrplsbx.io","*.on-k3s.io","*.on-rancher.cloud","*.on-rio.io","readthedocs.io","rhcloud.com","app.render.com","onrender.com","repl.co","id.repl.co","repl.run","resindevice.io","devices.resinstaging.io","hzc.io","wellbeingzone.eu","wellbeingzone.co.uk","adimo.co.uk","itcouldbewor.se","git-pages.rit.edu","rocky.page","биз.рус","ком.рус","крым.рус","мир.рус","мск.рус","орг.рус","самара.рус","сочи.рус","спб.рус","я.рус","*.builder.code.com","*.dev-builder.code.com","*.stg-builder.code.com","sandcats.io","logoip.de","logoip.com","fr-par-1.baremetal.scw.cloud","fr-par-2.baremetal.scw.cloud","nl-ams-1.baremetal.scw.cloud","fnc.fr-par.scw.cloud","functions.fnc.fr-par.scw.cloud","k8s.fr-par.scw.cloud","nodes.k8s.fr-par.scw.cloud","s3.fr-par.scw.cloud","s3-website.fr-par.scw.cloud","whm.fr-par.scw.cloud","priv.instances.scw.cloud","pub.instances.scw.cloud","k8s.scw.cloud","k8s.nl-ams.scw.cloud","nodes.k8s.nl-ams.scw.cloud","s3.nl-ams.scw.cloud","s3-website.nl-ams.scw.cloud","whm.nl-ams.scw.cloud","k8s.pl-waw.scw.cloud","nodes.k8s.pl-waw.scw.cloud","s3.pl-waw.scw.cloud","s3-website.pl-waw.scw.cloud","scalebook.scw.cloud","smartlabeling.scw.cloud","dedibox.fr","schokokeks.net","gov.scot","service.gov.scot","scrysec.com","firewall-gateway.com","firewall-gateway.de","my-gateway.de","my-router.de","spdns.de","spdns.eu","firewall-gateway.net","my-firewall.org","myfirewall.org","spdns.org","seidat.net","sellfy.store","senseering.net","minisite.ms","magnet.page","biz.ua","co.ua","pp.ua","shiftcrypto.dev","shiftcrypto.io","shiftedit.io","myshopblocks.com","myshopify.com","shopitsite.com","shopware.store","mo-siemens.io","1kapp.com","appchizi.com","applinzi.com","sinaapp.com","vipsinaapp.com","siteleaf.net","bounty-full.com","alpha.bounty-full.com","beta.bounty-full.com","small-web.org","vp4.me","try-snowplow.com","srht.site","stackhero-network.com","musician.io","novecore.site","static.land","dev.static.land","sites.static.land","storebase.store","vps-host.net","atl.jelastic.vps-host.net","njs.jelastic.vps-host.net","ric.jelastic.vps-host.net","playstation-cloud.com","apps.lair.io","*.stolos.io","spacekit.io","customer.speedpartner.de","myspreadshop.at","myspreadshop.com.au","myspreadshop.be","myspreadshop.ca","myspreadshop.ch","myspreadshop.com","myspreadshop.de","myspreadshop.dk","myspreadshop.es","myspreadshop.fi","myspreadshop.fr","myspreadshop.ie","myspreadshop.it","myspreadshop.net","myspreadshop.nl","myspreadshop.no","myspreadshop.pl","myspreadshop.se","myspreadshop.co.uk","api.stdlib.com","storj.farm","utwente.io","soc.srcf.net","user.srcf.net","temp-dns.com","supabase.co","supabase.in","supabase.net","su.paba.se","*.s5y.io","*.sensiosite.cloud","syncloud.it","dscloud.biz","direct.quickconnect.cn","dsmynas.com","familyds.com","diskstation.me","dscloud.me","i234.me","myds.me","synology.me","dscloud.mobi","dsmynas.net","familyds.net","dsmynas.org","familyds.org","vpnplus.to","direct.quickconnect.to","tabitorder.co.il","taifun-dns.de","beta.tailscale.net","ts.net","gda.pl","gdansk.pl","gdynia.pl","med.pl","sopot.pl","site.tb-hosting.com","edugit.io","s3.teckids.org","telebit.app","telebit.io","*.telebit.xyz","gwiddle.co.uk","*.firenet.ch","*.svc.firenet.ch","reservd.com","thingdustdata.com","cust.dev.thingdust.io","cust.disrec.thingdust.io","cust.prod.thingdust.io","cust.testing.thingdust.io","reservd.dev.thingdust.io","reservd.disrec.thingdust.io","reservd.testing.thingdust.io","tickets.io","arvo.network","azimuth.network","tlon.network","torproject.net","pages.torproject.net","bloxcms.com","townnews-staging.com","tbits.me","12hp.at","2ix.at","4lima.at","lima-city.at","12hp.ch","2ix.ch","4lima.ch","lima-city.ch","trafficplex.cloud","de.cool","12hp.de","2ix.de","4lima.de","lima-city.de","1337.pictures","clan.rip","lima-city.rocks","webspace.rocks","lima.zone","*.transurl.be","*.transurl.eu","*.transurl.nl","site.transip.me","tuxfamily.org","dd-dns.de","diskstation.eu","diskstation.org","dray-dns.de","draydns.de","dyn-vpn.de","dynvpn.de","mein-vigor.de","my-vigor.de","my-wan.de","syno-ds.de","synology-diskstation.de","synology-ds.de","typedream.app","pro.typeform.com","uber.space","*.uberspace.de","hk.com","hk.org","ltd.hk","inc.hk","name.pm","sch.tf","biz.wf","sch.wf","org.yt","virtualuser.de","virtual-user.de","upli.io","urown.cloud","dnsupdate.info","lib.de.us","2038.io","vercel.app","vercel.dev","now.sh","router.management","v-info.info","voorloper.cloud","neko.am","nyaa.am","be.ax","cat.ax","es.ax","eu.ax","gg.ax","mc.ax","us.ax","xy.ax","nl.ci","xx.gl","app.gp","blog.gt","de.gt","to.gt","be.gy","cc.hn","blog.kg","io.kg","jp.kg","tv.kg","uk.kg","us.kg","de.ls","at.md","de.md","jp.md","to.md","indie.porn","vxl.sh","ch.tc","me.tc","we.tc","nyan.to","at.vg","blog.vu","dev.vu","me.vu","v.ua","*.vultrobjects.com","wafflecell.com","*.webhare.dev","reserve-online.net","reserve-online.com","bookonline.app","hotelwithflight.com","wedeploy.io","wedeploy.me","wedeploy.sh","remotewd.com","pages.wiardweb.com","wmflabs.org","toolforge.org","wmcloud.org","panel.gg","daemon.panel.gg","messwithdns.com","woltlab-demo.com","myforum.community","community-pro.de","diskussionsbereich.de","community-pro.net","meinforum.net","affinitylottery.org.uk","raffleentry.org.uk","weeklylottery.org.uk","wpenginepowered.com","js.wpenginepowered.com","wixsite.com","editorx.io","half.host","xnbay.com","u2.xnbay.com","u2-local.xnbay.com","cistron.nl","demon.nl","xs4all.space","yandexcloud.net","storage.yandexcloud.net","website.yandexcloud.net","official.academy","yolasite.com","ybo.faith","yombo.me","homelink.one","ybo.party","ybo.review","ybo.science","ybo.trade","ynh.fr","nohost.me","noho.st","za.net","za.org","bss.design","basicserver.io","virtualserver.io","enterprisecloud.nu"]')}},t={};function r(i){var n=t[i];if(void 0!==n)return n.exports;var a=t[i]={id:i,loaded:!1,exports:{}};return e[i].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.c=t,r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);r(74755)})(); +(()=>{var e={65096:(e,t,r)=>{"use strict";var i=r(47153),n=r(83610),a=r(47531),o=r(74022),s=r(35035),u=r(1516),c=r(71743),l=r(3978),h=r(42889);e.exports=v,v.prototype.validate=function(e,t){var r;if("string"==typeof e){if(!(r=this.getSchema(e)))throw new Error('no schema with key or ref "'+e+'"')}else{var i=this._addSchema(e);r=i.validate||this._compile(i)}var n=r(t);return!0!==r.$async&&(this.errors=r.errors),n},v.prototype.compile=function(e,t){var r=this._addSchema(e,void 0,t);return r.validate||this._compile(r)},v.prototype.addSchema=function(e,t,r,i){if(Array.isArray(e)){for(var a=0;a{"use strict";var t=e.exports=function(){this._cache={}};t.prototype.put=function(e,t){this._cache[e]=t},t.prototype.get=function(e){return this._cache[e]},t.prototype.del=function(e){delete this._cache[e]},t.prototype.clear=function(){this._cache={}}},42931:(e,t,r)=>{"use strict";var i=r(87802).MissingRef;e.exports=function e(t,r,n){var a=this;if("function"!=typeof this._opts.loadSchema)throw new Error("options.loadSchema should be a function");"function"==typeof r&&(n=r,r=void 0);var o=s(t).then((function(){var e=a._addSchema(t,void 0,r);return e.validate||u(e)}));return n&&o.then((function(e){n(null,e)}),n),o;function s(t){var r=t.$schema;return r&&!a.getSchema(r)?e.call(a,{$ref:r},!0):Promise.resolve()}function u(e){try{return a._compile(e)}catch(t){if(t instanceof i)return function(t){var i=t.missingSchema;if(c(i))throw new Error("Schema "+i+" is loaded but "+t.missingRef+" cannot be resolved");var n=a._loadingSchemas[i];return n||(n=a._loadingSchemas[i]=a._opts.loadSchema(i)).then(o,o),n.then((function(e){if(!c(i))return s(e).then((function(){c(i)||a.addSchema(e,i,void 0,r)}))})).then((function(){return u(e)}));function o(){delete a._loadingSchemas[i]}function c(e){return a._refs[e]||a._schemas[e]}}(t);throw t}}}},87802:(e,t,r)=>{"use strict";var i=r(83610);function n(e,t,r){this.message=r||n.message(e,t),this.missingRef=i.url(e,t),this.missingSchema=i.normalizeId(i.fullPath(this.missingRef))}function a(e){return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}e.exports={Validation:a((function(e){this.message="validation failed",this.errors=e,this.ajv=this.validation=!0})),MissingRef:a(n)},n.message=function(e,t){return"can't resolve reference "+t+" from id "+e}},1516:(e,t,r)=>{"use strict";var i=r(42889),n=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,a=[0,31,28,31,30,31,30,31,31,30,31,30,31],o=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,s=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,u=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,c=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,l=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,h=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,p=/^(?:\/(?:[^~/]|~0|~1)*)*$/,d=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,f=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;function m(e){return e="full"==e?"full":"fast",i.copy(m[e])}function g(e){var t=e.match(n);if(!t)return!1;var r=+t[1],i=+t[2],o=+t[3];return i>=1&&i<=12&&o>=1&&o<=(2==i&&function(e){return e%4==0&&(e%100!=0||e%400==0)}(r)?29:a[i])}function v(e,t){var r=e.match(o);if(!r)return!1;var i=r[1],n=r[2],a=r[3],s=r[5];return(i<=23&&n<=59&&a<=59||23==i&&59==n&&60==a)&&(!t||s)}e.exports=m,m.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":c,url:l,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:s,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:h,"json-pointer":p,"json-pointer-uri-fragment":d,"relative-json-pointer":f},m.full={date:g,time:v,"date-time":function(e){var t=e.split(y);return 2==t.length&&g(t[0])&&v(t[1],!0)},uri:function(e){return _.test(e)&&u.test(e)},"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":c,url:l,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:s,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:h,"json-pointer":p,"json-pointer-uri-fragment":d,"relative-json-pointer":f};var y=/t|\s/i,_=/\/|:/,b=/[^\\]\\Z/;function w(e){if(b.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}},47153:(e,t,r)=>{"use strict";var i=r(83610),n=r(42889),a=r(87802),o=r(35035),s=r(19508),u=n.ucs2length,c=r(64063),l=a.Validation;function h(e,t,r){var i=d.call(this,e,t,r);return i>=0?{index:i,compiling:!0}:(i=this._compilations.length,this._compilations[i]={schema:e,root:t,baseId:r},{index:i,compiling:!1})}function p(e,t,r){var i=d.call(this,e,t,r);i>=0&&this._compilations.splice(i,1)}function d(e,t,r){for(var i=0;i{"use strict";var i=r(60540),n=r(64063),a=r(42889),o=r(74022),s=r(49461);function u(e,t,r){var i=this._refs[r];if("string"==typeof i){if(!this._refs[i])return u.call(this,e,t,i);i=this._refs[i]}if((i=i||this._schemas[r])instanceof o)return f(i.schema,this._opts.inlineRefs)?i.schema:i.validate||this._compile(i);var n,a,s,l=c.call(this,t,r);return l&&(n=l.schema,t=l.root,s=l.baseId),n instanceof o?a=n.validate||e.call(this,n.schema,t,void 0,s):void 0!==n&&(a=f(n,this._opts.inlineRefs)?n:e.call(this,n,t,void 0,s)),a}function c(e,t){var r=i.parse(t),n=y(r),a=v(this._getId(e.schema));if(0===Object.keys(e.schema).length||n!==a){var s=b(n),u=this._refs[s];if("string"==typeof u)return l.call(this,e,u,r);if(u instanceof o)u.validate||this._compile(u),e=u;else{if(!((u=this._schemas[s])instanceof o))return;if(u.validate||this._compile(u),s==b(t))return{schema:u,root:e,baseId:a};e=u}if(!e.schema)return;a=v(this._getId(e.schema))}return p.call(this,r,a,e.schema,e)}function l(e,t,r){var i=c.call(this,e,t);if(i){var n=i.schema,a=i.baseId;e=i.root;var o=this._getId(n);return o&&(a=w(a,o)),p.call(this,r,a,n,e)}}e.exports=u,u.normalizeId=b,u.fullPath=v,u.url=w,u.ids=function(e){var t=b(this._getId(e)),r={"":t},o={"":v(t,!1)},u={},c=this;return s(e,{allKeys:!0},(function(e,t,s,l,h,p,d){if(""!==t){var f=c._getId(e),m=r[l],g=o[l]+"/"+h;if(void 0!==d&&(g+="/"+("number"==typeof d?d:a.escapeFragment(d))),"string"==typeof f){f=m=b(m?i.resolve(m,f):f);var v=c._refs[f];if("string"==typeof v&&(v=c._refs[v]),v&&v.schema){if(!n(e,v.schema))throw new Error('id "'+f+'" resolves to more than one schema')}else if(f!=b(g))if("#"==f[0]){if(u[f]&&!n(e,u[f]))throw new Error('id "'+f+'" resolves to more than one schema');u[f]=e}else c._refs[f]=g}r[t]=m,o[t]=g}})),u},u.inlineRef=f,u.schema=c;var h=a.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function p(e,t,r,i){if(e.fragment=e.fragment||"","/"==e.fragment.slice(0,1)){for(var n=e.fragment.split("/"),o=1;o{"use strict";var i=r(66674),n=r(42889).toHash;e.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],t=["type","$comment"];return e.all=n(t),e.types=n(["number","integer","string","array","object","boolean","null"]),e.forEach((function(r){r.rules=r.rules.map((function(r){var n;if("object"==typeof r){var a=Object.keys(r)[0];n=r[a],r=a,n.forEach((function(r){t.push(r),e.all[r]=!0}))}return t.push(r),e.all[r]={keyword:r,code:i[r],implements:n}})),e.all.$comment={keyword:"$comment",code:i.$comment},r.type&&(e.types[r.type]=r)})),e.keywords=n(t.concat(["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"])),e.custom={},e}},74022:(e,t,r)=>{"use strict";var i=r(42889);e.exports=function(e){i.copy(e,this)}},4442:e=>{"use strict";e.exports=function(e){for(var t,r=0,i=e.length,n=0;n=55296&&t<=56319&&n{"use strict";function i(e,t,r,i){var n=i?" !== ":" === ",a=i?" || ":" && ",o=i?"!":"",s=i?"":"!";switch(e){case"null":return t+n+"null";case"array":return o+"Array.isArray("+t+")";case"object":return"("+o+t+a+"typeof "+t+n+'"object"'+a+s+"Array.isArray("+t+"))";case"integer":return"(typeof "+t+n+'"number"'+a+s+"("+t+" % 1)"+a+t+n+t+(r?a+o+"isFinite("+t+")":"")+")";case"number":return"(typeof "+t+n+'"'+e+'"'+(r?a+o+"isFinite("+t+")":"")+")";default:return"typeof "+t+n+'"'+e+'"'}}e.exports={copy:function(e,t){for(var r in t=t||{},e)t[r]=e[r];return t},checkDataType:i,checkDataTypes:function(e,t,r){if(1===e.length)return i(e[0],t,r,!0);var n="",o=a(e);for(var s in o.array&&o.object&&(n=o.null?"(":"(!"+t+" || ",n+="typeof "+t+' !== "object")',delete o.null,delete o.array,delete o.object),o.number&&delete o.integer,o)n+=(n?" && ":"")+i(s,t,r,!0);return n},coerceToTypes:function(e,t){if(Array.isArray(t)){for(var r=[],i=0;i=t)throw new Error("Cannot access property/index "+i+" levels up, current level is "+t);return r[t-i]}if(i>t)throw new Error("Cannot access data "+i+" levels up, current level is "+t);if(a="data"+(t-i||""),!n)return a}for(var s=a,c=n.split("/"),l=0;l{"use strict";var t=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];e.exports=function(e,r){for(var i=0;i{"use strict";var i=r(6680);e.exports={$id:"https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:i.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:i.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}},18210:e=>{"use strict";e.exports=function(e,t,r){var i,n=" ",a=e.level,o=e.dataLevel,s=e.schema[t],u=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,h="data"+(o||""),p=e.opts.$data&&s&&s.$data;p?(n+=" var schema"+a+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",i="schema"+a):i=s;var d="maximum"==t,f=d?"exclusiveMaximum":"exclusiveMinimum",m=e.schema[f],g=e.opts.$data&&m&&m.$data,v=d?"<":">",y=d?">":"<",_=void 0;if(!p&&"number"!=typeof s&&void 0!==s)throw new Error(t+" must be number");if(!g&&void 0!==m&&"number"!=typeof m&&"boolean"!=typeof m)throw new Error(f+" must be number or boolean");if(g){var b,w=e.util.getData(m.$data,o,e.dataPathArr),E="exclusive"+a,k="exclType"+a,S="exclIsNumber"+a,x="' + "+(N="op"+a)+" + '";n+=" var schemaExcl"+a+" = "+w+"; ",n+=" var "+E+"; var "+k+" = typeof "+(w="schemaExcl"+a)+"; if ("+k+" != 'boolean' && "+k+" != 'undefined' && "+k+" != 'number') { ",_=f,(b=b||[]).push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(_||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: {} ",!1!==e.opts.messages&&(n+=" , message: '"+f+" should be boolean' "),e.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var j=n;n=b.pop(),!e.compositeRule&&l?e.async?n+=" throw new ValidationError(["+j+"]); ":n+=" validate.errors = ["+j+"]; return false; ":n+=" var err = "+j+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else if ( ",p&&(n+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),n+=" "+k+" == 'number' ? ( ("+E+" = "+i+" === undefined || "+w+" "+v+"= "+i+") ? "+h+" "+y+"= "+w+" : "+h+" "+y+" "+i+" ) : ( ("+E+" = "+w+" === true) ? "+h+" "+y+"= "+i+" : "+h+" "+y+" "+i+" ) || "+h+" !== "+h+") { var op"+a+" = "+E+" ? '"+v+"' : '"+v+"='; ",void 0===s&&(_=f,c=e.errSchemaPath+"/"+f,i=w,p=g)}else if(x=v,(S="number"==typeof m)&&p){var N="'"+x+"'";n+=" if ( ",p&&(n+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),n+=" ( "+i+" === undefined || "+m+" "+v+"= "+i+" ? "+h+" "+y+"= "+m+" : "+h+" "+y+" "+i+" ) || "+h+" !== "+h+") { "}else S&&void 0===s?(E=!0,_=f,c=e.errSchemaPath+"/"+f,i=m,y+="="):(S&&(i=Math[d?"min":"max"](m,s)),m===(!S||i)?(E=!0,_=f,c=e.errSchemaPath+"/"+f,y+="="):(E=!1,x+="=")),N="'"+x+"'",n+=" if ( ",p&&(n+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),n+=" "+h+" "+y+" "+i+" || "+h+" !== "+h+") { ";return _=_||t,(b=b||[]).push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(_||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { comparison: "+N+", limit: "+i+", exclusive: "+E+" } ",!1!==e.opts.messages&&(n+=" , message: 'should be "+x+" ",n+=p?"' + "+i:i+"'"),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+u:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",j=n,n=b.pop(),!e.compositeRule&&l?e.async?n+=" throw new ValidationError(["+j+"]); ":n+=" validate.errors = ["+j+"]; return false; ":n+=" var err = "+j+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",l&&(n+=" else { "),n}},33038:e=>{"use strict";e.exports=function(e,t,r){var i,n=" ",a=e.level,o=e.dataLevel,s=e.schema[t],u=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,h="data"+(o||""),p=e.opts.$data&&s&&s.$data;if(p?(n+=" var schema"+a+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",i="schema"+a):i=s,!p&&"number"!=typeof s)throw new Error(t+" must be number");n+="if ( ",p&&(n+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),n+=" "+h+".length "+("maxItems"==t?">":"<")+" "+i+") { ";var d=t,f=f||[];f.push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(d||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+i+" } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT have ",n+="maxItems"==t?"more":"fewer",n+=" than ",n+=p?"' + "+i+" + '":""+s,n+=" items' "),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+u:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=f.pop(),!e.compositeRule&&l?e.async?n+=" throw new ValidationError(["+m+"]); ":n+=" validate.errors = ["+m+"]; return false; ":n+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",l&&(n+=" else { "),n}},80425:e=>{"use strict";e.exports=function(e,t,r){var i,n=" ",a=e.level,o=e.dataLevel,s=e.schema[t],u=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,h="data"+(o||""),p=e.opts.$data&&s&&s.$data;if(p?(n+=" var schema"+a+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",i="schema"+a):i=s,!p&&"number"!=typeof s)throw new Error(t+" must be number");var d="maxLength"==t?">":"<";n+="if ( ",p&&(n+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),!1===e.opts.unicode?n+=" "+h+".length ":n+=" ucs2length("+h+") ",n+=" "+d+" "+i+") { ";var f=t,m=m||[];m.push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(f||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+i+" } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT be ",n+="maxLength"==t?"longer":"shorter",n+=" than ",n+=p?"' + "+i+" + '":""+s,n+=" characters' "),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+u:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var g=n;return n=m.pop(),!e.compositeRule&&l?e.async?n+=" throw new ValidationError(["+g+"]); ":n+=" validate.errors = ["+g+"]; return false; ":n+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",l&&(n+=" else { "),n}},78204:e=>{"use strict";e.exports=function(e,t,r){var i,n=" ",a=e.level,o=e.dataLevel,s=e.schema[t],u=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,h="data"+(o||""),p=e.opts.$data&&s&&s.$data;if(p?(n+=" var schema"+a+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",i="schema"+a):i=s,!p&&"number"!=typeof s)throw new Error(t+" must be number");n+="if ( ",p&&(n+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),n+=" Object.keys("+h+").length "+("maxProperties"==t?">":"<")+" "+i+") { ";var d=t,f=f||[];f.push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(d||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+i+" } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT have ",n+="maxProperties"==t?"more":"fewer",n+=" than ",n+=p?"' + "+i+" + '":""+s,n+=" properties' "),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+u:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=f.pop(),!e.compositeRule&&l?e.async?n+=" throw new ValidationError(["+m+"]); ":n+=" validate.errors = ["+m+"]; return false; ":n+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",l&&(n+=" else { "),n}},42988:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.schema[t],a=e.schemaPath+e.util.getProperty(t),o=e.errSchemaPath+"/"+t,s=!e.opts.allErrors,u=e.util.copy(e),c="";u.level++;var l="valid"+u.level,h=u.baseId,p=!0,d=n;if(d)for(var f,m=-1,g=d.length-1;m0||!1===f:e.util.schemaHasRules(f,e.RULES.all))&&(p=!1,u.schema=f,u.schemaPath=a+"["+m+"]",u.errSchemaPath=o+"/"+m,i+=" "+e.validate(u)+" ",u.baseId=h,s&&(i+=" if ("+l+") { ",c+="}"));return s&&(i+=p?" if (true) { ":" "+c.slice(0,-1)+" "),i}},39996:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="valid"+n,p="errs__"+n,d=e.util.copy(e),f="";d.level++;var m="valid"+d.level,g=o.every((function(t){return e.opts.strictKeywords?"object"==typeof t&&Object.keys(t).length>0||!1===t:e.util.schemaHasRules(t,e.RULES.all)}));if(g){var v=d.baseId;i+=" var "+p+" = errors; var "+h+" = false; ";var y=e.compositeRule;e.compositeRule=d.compositeRule=!0;var _=o;if(_)for(var b,w=-1,E=_.length-1;w{"use strict";e.exports=function(e,t,r){var i=" ",n=e.schema[t],a=e.errSchemaPath+"/"+t,o=(e.opts.allErrors,e.util.toQuotedString(n));return!0===e.opts.$comment?i+=" console.log("+o+");":"function"==typeof e.opts.$comment&&(i+=" self._opts.$comment("+o+", "+e.util.toQuotedString(a)+", validate.root.schema);"),i}},25306:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="valid"+n,p=e.opts.$data&&o&&o.$data;p&&(i+=" var schema"+n+" = "+e.util.getData(o.$data,a,e.dataPathArr)+"; "),p||(i+=" var schema"+n+" = validate.schema"+s+";"),i+="var "+h+" = equal("+l+", schema"+n+"); if (!"+h+") { ";var d=d||[];d.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { allowedValue: schema"+n+" } ",!1!==e.opts.messages&&(i+=" , message: 'should be equal to constant' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ";var f=i;return i=d.pop(),!e.compositeRule&&c?e.async?i+=" throw new ValidationError(["+f+"]); ":i+=" validate.errors = ["+f+"]; return false; ":i+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" }",c&&(i+=" else { "),i}},2840:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="valid"+n,p="errs__"+n,d=e.util.copy(e);d.level++;var f="valid"+d.level,m="i"+n,g=d.dataLevel=e.dataLevel+1,v="data"+g,y=e.baseId,_=e.opts.strictKeywords?"object"==typeof o&&Object.keys(o).length>0||!1===o:e.util.schemaHasRules(o,e.RULES.all);if(i+="var "+p+" = errors;var "+h+";",_){var b=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.schema=o,d.schemaPath=s,d.errSchemaPath=u,i+=" var "+f+" = false; for (var "+m+" = 0; "+m+" < "+l+".length; "+m+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);var w=l+"["+m+"]";d.dataPathArr[g]=m;var E=e.validate(d);d.baseId=y,e.util.varOccurences(E,v)<2?i+=" "+e.util.varReplace(E,v,w)+" ":i+=" var "+v+" = "+w+"; "+E+" ",i+=" if ("+f+") break; } ",e.compositeRule=d.compositeRule=b,i+=" if (!"+f+") {"}else i+=" if ("+l+".length == 0) {";var k=k||[];k.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'should contain a valid item' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ";var S=i;return i=k.pop(),!e.compositeRule&&c?e.async?i+=" throw new ValidationError(["+S+"]); ":i+=" validate.errors = ["+S+"]; return false; ":i+=" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } else { ",_&&(i+=" errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; } "),e.opts.allErrors&&(i+=" } "),i}},14165:e=>{"use strict";e.exports=function(e,t,r){var i,n,a=" ",o=e.level,s=e.dataLevel,u=e.schema[t],c=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,p="data"+(s||""),d="valid"+o,f="errs__"+o,m=e.opts.$data&&u&&u.$data;m?(a+=" var schema"+o+" = "+e.util.getData(u.$data,s,e.dataPathArr)+"; ",n="schema"+o):n=u;var g,v,y,_,b,w=this,E="definition"+o,k=w.definition,S="";if(m&&k.$data){b="keywordValidate"+o;var x=k.validateSchema;a+=" var "+E+" = RULES.custom['"+t+"'].definition; var "+b+" = "+E+".validate;"}else{if(!(_=e.useCustomRule(w,u,e.schema,e)))return;n="validate.schema"+c,b=_.code,g=k.compile,v=k.inline,y=k.macro}var j=b+".errors",N="i"+o,M="ruleErr"+o,I=k.async;if(I&&!e.async)throw new Error("async keyword in sync schema");if(v||y||(a+=j+" = null;"),a+="var "+f+" = errors;var "+d+";",m&&k.$data&&(S+="}",a+=" if ("+n+" === undefined) { "+d+" = true; } else { ",x&&(S+="}",a+=" "+d+" = "+E+".validateSchema("+n+"); if ("+d+") { ")),v)k.statements?a+=" "+_.validate+" ":a+=" "+d+" = "+_.validate+"; ";else if(y){var A=e.util.copy(e);S="",A.level++;var T="valid"+A.level;A.schema=_.validate,A.schemaPath="";var R=e.compositeRule;e.compositeRule=A.compositeRule=!0;var P=e.validate(A).replace(/validate\.schema/g,b);e.compositeRule=A.compositeRule=R,a+=" "+P}else{(z=z||[]).push(a),a="",a+=" "+b+".call( ",e.opts.passContext?a+="this":a+="self",g||!1===k.schema?a+=" , "+p+" ":a+=" , "+n+" , "+p+" , validate.schema"+e.schemaPath+" ",a+=" , (dataPath || '')",'""'!=e.errorPath&&(a+=" + "+e.errorPath);var O=s?"data"+(s-1||""):"parentData",B=s?e.dataPathArr[s]:"parentDataProperty",C=a+=" , "+O+" , "+B+" , rootData ) ";a=z.pop(),!1===k.errors?(a+=" "+d+" = ",I&&(a+="await "),a+=C+"; "):a+=I?" var "+(j="customErrors"+o)+" = null; try { "+d+" = await "+C+"; } catch (e) { "+d+" = false; if (e instanceof ValidationError) "+j+" = e.errors; else throw e; } ":" "+j+" = null; "+d+" = "+C+"; "}if(k.modifying&&(a+=" if ("+O+") "+p+" = "+O+"["+B+"];"),a+=""+S,k.valid)h&&(a+=" if (true) { ");else{var z;a+=" if ( ",void 0===k.valid?(a+=" !",a+=y?""+T:""+d):a+=" "+!k.valid+" ",a+=") { ",i=w.keyword,(z=z||[]).push(a),a="",(z=z||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: '"+(i||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { keyword: '"+w.keyword+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should pass \""+w.keyword+"\" keyword validation' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),a+=" } "):a+=" {} ";var F=a;a=z.pop(),!e.compositeRule&&h?e.async?a+=" throw new ValidationError(["+F+"]); ":a+=" validate.errors = ["+F+"]; return false; ":a+=" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var D=a;a=z.pop(),v?k.errors?"full"!=k.errors&&(a+=" for (var "+N+"="+f+"; "+N+"{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="errs__"+n,p=e.util.copy(e),d="";p.level++;var f="valid"+p.level,m={},g={},v=e.opts.ownProperties;for(w in o)if("__proto__"!=w){var y=o[w],_=Array.isArray(y)?g:m;_[w]=y}i+="var "+h+" = errors;";var b=e.errorPath;for(var w in i+="var missing"+n+";",g)if((_=g[w]).length){if(i+=" if ( "+l+e.util.getProperty(w)+" !== undefined ",v&&(i+=" && Object.prototype.hasOwnProperty.call("+l+", '"+e.util.escapeQuotes(w)+"') "),c){i+=" && ( ";var E=_;if(E)for(var k=-1,S=E.length-1;k0||!1===y:e.util.schemaHasRules(y,e.RULES.all))&&(i+=" "+f+" = true; if ( "+l+e.util.getProperty(w)+" !== undefined ",v&&(i+=" && Object.prototype.hasOwnProperty.call("+l+", '"+e.util.escapeQuotes(w)+"') "),i+=") { ",p.schema=y,p.schemaPath=s+e.util.getProperty(w),p.errSchemaPath=u+"/"+e.util.escapeFragment(w),i+=" "+e.validate(p)+" ",p.baseId=B,i+=" } ",c&&(i+=" if ("+f+") { ",d+="}"));return c&&(i+=" "+d+" if ("+h+" == errors) {"),i}},31740:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="valid"+n,p=e.opts.$data&&o&&o.$data;p&&(i+=" var schema"+n+" = "+e.util.getData(o.$data,a,e.dataPathArr)+"; ");var d="i"+n,f="schema"+n;p||(i+=" var "+f+" = validate.schema"+s+";"),i+="var "+h+";",p&&(i+=" if (schema"+n+" === undefined) "+h+" = true; else if (!Array.isArray(schema"+n+")) "+h+" = false; else {"),i+=h+" = false;for (var "+d+"=0; "+d+"<"+f+".length; "+d+"++) if (equal("+l+", "+f+"["+d+"])) { "+h+" = true; break; }",p&&(i+=" } "),i+=" if (!"+h+") { ";var m=m||[];m.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { allowedValues: schema"+n+" } ",!1!==e.opts.messages&&(i+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ";var g=i;return i=m.pop(),!e.compositeRule&&c?e.async?i+=" throw new ValidationError(["+g+"]); ":i+=" validate.errors = ["+g+"]; return false; ":i+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" }",c&&(i+=" else { "),i}},39014:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||"");if(!1===e.opts.format)return c&&(i+=" if (true) { "),i;var h,p=e.opts.$data&&o&&o.$data;p?(i+=" var schema"+n+" = "+e.util.getData(o.$data,a,e.dataPathArr)+"; ",h="schema"+n):h=o;var d=e.opts.unknownFormats,f=Array.isArray(d);if(p)i+=" var "+(m="format"+n)+" = formats["+h+"]; var "+(g="isObject"+n)+" = typeof "+m+" == 'object' && !("+m+" instanceof RegExp) && "+m+".validate; var "+(v="formatType"+n)+" = "+g+" && "+m+".type || 'string'; if ("+g+") { ",e.async&&(i+=" var async"+n+" = "+m+".async; "),i+=" "+m+" = "+m+".validate; } if ( ",p&&(i+=" ("+h+" !== undefined && typeof "+h+" != 'string') || "),i+=" (","ignore"!=d&&(i+=" ("+h+" && !"+m+" ",f&&(i+=" && self._opts.unknownFormats.indexOf("+h+") == -1 "),i+=") || "),i+=" ("+m+" && "+v+" == '"+r+"' && !(typeof "+m+" == 'function' ? ",e.async?i+=" (async"+n+" ? await "+m+"("+l+") : "+m+"("+l+")) ":i+=" "+m+"("+l+") ",i+=" : "+m+".test("+l+"))))) {";else{var m;if(!(m=e.formats[o])){if("ignore"==d)return e.logger.warn('unknown format "'+o+'" ignored in schema at path "'+e.errSchemaPath+'"'),c&&(i+=" if (true) { "),i;if(f&&d.indexOf(o)>=0)return c&&(i+=" if (true) { "),i;throw new Error('unknown format "'+o+'" is used in schema at path "'+e.errSchemaPath+'"')}var g,v=(g="object"==typeof m&&!(m instanceof RegExp)&&m.validate)&&m.type||"string";if(g){var y=!0===m.async;m=m.validate}if(v!=r)return c&&(i+=" if (true) { "),i;if(y){if(!e.async)throw new Error("async format in sync schema");i+=" if (!(await "+(_="formats"+e.util.getProperty(o)+".validate")+"("+l+"))) { "}else{i+=" if (! ";var _="formats"+e.util.getProperty(o);g&&(_+=".validate"),i+="function"==typeof m?" "+_+"("+l+") ":" "+_+".test("+l+") ",i+=") { "}}var b=b||[];b.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { format: ",i+=p?""+h:""+e.util.toQuotedString(o),i+=" } ",!1!==e.opts.messages&&(i+=" , message: 'should match format \"",i+=p?"' + "+h+" + '":""+e.util.escapeQuotes(o),i+="\"' "),e.opts.verbose&&(i+=" , schema: ",i+=p?"validate.schema"+s:""+e.util.toQuotedString(o),i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ";var w=i;return i=b.pop(),!e.compositeRule&&c?e.async?i+=" throw new ValidationError(["+w+"]); ":i+=" validate.errors = ["+w+"]; return false; ":i+=" var err = "+w+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } ",c&&(i+=" else { "),i}},17231:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="valid"+n,p="errs__"+n,d=e.util.copy(e);d.level++;var f="valid"+d.level,m=e.schema.then,g=e.schema.else,v=void 0!==m&&(e.opts.strictKeywords?"object"==typeof m&&Object.keys(m).length>0||!1===m:e.util.schemaHasRules(m,e.RULES.all)),y=void 0!==g&&(e.opts.strictKeywords?"object"==typeof g&&Object.keys(g).length>0||!1===g:e.util.schemaHasRules(g,e.RULES.all)),_=d.baseId;if(v||y){var b;d.createErrors=!1,d.schema=o,d.schemaPath=s,d.errSchemaPath=u,i+=" var "+p+" = errors; var "+h+" = true; ";var w=e.compositeRule;e.compositeRule=d.compositeRule=!0,i+=" "+e.validate(d)+" ",d.baseId=_,d.createErrors=!0,i+=" errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; } ",e.compositeRule=d.compositeRule=w,v?(i+=" if ("+f+") { ",d.schema=e.schema.then,d.schemaPath=e.schemaPath+".then",d.errSchemaPath=e.errSchemaPath+"/then",i+=" "+e.validate(d)+" ",d.baseId=_,i+=" "+h+" = "+f+"; ",v&&y?i+=" var "+(b="ifClause"+n)+" = 'then'; ":b="'then'",i+=" } ",y&&(i+=" else { ")):i+=" if (!"+f+") { ",y&&(d.schema=e.schema.else,d.schemaPath=e.schemaPath+".else",d.errSchemaPath=e.errSchemaPath+"/else",i+=" "+e.validate(d)+" ",d.baseId=_,i+=" "+h+" = "+f+"; ",v&&y?i+=" var "+(b="ifClause"+n)+" = 'else'; ":b="'else'",i+=" } "),i+=" if (!"+h+") { var err = ",!1!==e.createErrors?(i+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { failingKeyword: "+b+" } ",!1!==e.opts.messages&&(i+=" , message: 'should match \"' + "+b+" + '\" schema' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ",i+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&c&&(e.async?i+=" throw new ValidationError(vErrors); ":i+=" validate.errors = vErrors; return false; "),i+=" } ",c&&(i+=" else { ")}else c&&(i+=" if (true) { ");return i}},66674:(e,t,r)=>{"use strict";e.exports={$ref:r(62392),allOf:r(42988),anyOf:r(39996),$comment:r(57812),const:r(25306),contains:r(2840),dependencies:r(66659),enum:r(31740),format:r(39014),if:r(17231),items:r(37482),maximum:r(18210),minimum:r(18210),maxItems:r(33038),minItems:r(33038),maxLength:r(80425),minLength:r(80425),maxProperties:r(78204),minProperties:r(78204),multipleOf:r(43673),not:r(28528),oneOf:r(59709),pattern:r(49614),properties:r(81175),propertyNames:r(58441),required:r(71287),uniqueItems:r(3603),validate:r(19508)}},37482:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="valid"+n,p="errs__"+n,d=e.util.copy(e),f="";d.level++;var m="valid"+d.level,g="i"+n,v=d.dataLevel=e.dataLevel+1,y="data"+v,_=e.baseId;if(i+="var "+p+" = errors;var "+h+";",Array.isArray(o)){var b=e.schema.additionalItems;if(!1===b){i+=" "+h+" = "+l+".length <= "+o.length+"; ";var w=u;u=e.errSchemaPath+"/additionalItems",i+=" if (!"+h+") { ";var E=E||[];E.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+o.length+" } ",!1!==e.opts.messages&&(i+=" , message: 'should NOT have more than "+o.length+" items' "),e.opts.verbose&&(i+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ";var k=i;i=E.pop(),!e.compositeRule&&c?e.async?i+=" throw new ValidationError(["+k+"]); ":i+=" validate.errors = ["+k+"]; return false; ":i+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } ",u=w,c&&(f+="}",i+=" else { ")}var S=o;if(S)for(var x,j=-1,N=S.length-1;j0||!1===x:e.util.schemaHasRules(x,e.RULES.all)){i+=" "+m+" = true; if ("+l+".length > "+j+") { ";var M=l+"["+j+"]";d.schema=x,d.schemaPath=s+"["+j+"]",d.errSchemaPath=u+"/"+j,d.errorPath=e.util.getPathExpr(e.errorPath,j,e.opts.jsonPointers,!0),d.dataPathArr[v]=j;var I=e.validate(d);d.baseId=_,e.util.varOccurences(I,y)<2?i+=" "+e.util.varReplace(I,y,M)+" ":i+=" var "+y+" = "+M+"; "+I+" ",i+=" } ",c&&(i+=" if ("+m+") { ",f+="}")}"object"==typeof b&&(e.opts.strictKeywords?"object"==typeof b&&Object.keys(b).length>0||!1===b:e.util.schemaHasRules(b,e.RULES.all))&&(d.schema=b,d.schemaPath=e.schemaPath+".additionalItems",d.errSchemaPath=e.errSchemaPath+"/additionalItems",i+=" "+m+" = true; if ("+l+".length > "+o.length+") { for (var "+g+" = "+o.length+"; "+g+" < "+l+".length; "+g+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,g,e.opts.jsonPointers,!0),M=l+"["+g+"]",d.dataPathArr[v]=g,I=e.validate(d),d.baseId=_,e.util.varOccurences(I,y)<2?i+=" "+e.util.varReplace(I,y,M)+" ":i+=" var "+y+" = "+M+"; "+I+" ",c&&(i+=" if (!"+m+") break; "),i+=" } } ",c&&(i+=" if ("+m+") { ",f+="}"))}else(e.opts.strictKeywords?"object"==typeof o&&Object.keys(o).length>0||!1===o:e.util.schemaHasRules(o,e.RULES.all))&&(d.schema=o,d.schemaPath=s,d.errSchemaPath=u,i+=" for (var "+g+" = 0; "+g+" < "+l+".length; "+g+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,g,e.opts.jsonPointers,!0),M=l+"["+g+"]",d.dataPathArr[v]=g,I=e.validate(d),d.baseId=_,e.util.varOccurences(I,y)<2?i+=" "+e.util.varReplace(I,y,M)+" ":i+=" var "+y+" = "+M+"; "+I+" ",c&&(i+=" if (!"+m+") break; "),i+=" }");return c&&(i+=" "+f+" if ("+p+" == errors) {"),i}},43673:e=>{"use strict";e.exports=function(e,t,r){var i,n=" ",a=e.level,o=e.dataLevel,s=e.schema[t],u=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,h="data"+(o||""),p=e.opts.$data&&s&&s.$data;if(p?(n+=" var schema"+a+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",i="schema"+a):i=s,!p&&"number"!=typeof s)throw new Error(t+" must be number");n+="var division"+a+";if (",p&&(n+=" "+i+" !== undefined && ( typeof "+i+" != 'number' || "),n+=" (division"+a+" = "+h+" / "+i+", ",e.opts.multipleOfPrecision?n+=" Math.abs(Math.round(division"+a+") - division"+a+") > 1e-"+e.opts.multipleOfPrecision+" ":n+=" division"+a+" !== parseInt(division"+a+") ",n+=" ) ",p&&(n+=" ) "),n+=" ) { ";var d=d||[];d.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { multipleOf: "+i+" } ",!1!==e.opts.messages&&(n+=" , message: 'should be multiple of ",n+=p?"' + "+i:i+"'"),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+u:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var f=n;return n=d.pop(),!e.compositeRule&&l?e.async?n+=" throw new ValidationError(["+f+"]); ":n+=" validate.errors = ["+f+"]; return false; ":n+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",l&&(n+=" else { "),n}},28528:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="errs__"+n,p=e.util.copy(e);p.level++;var d="valid"+p.level;if(e.opts.strictKeywords?"object"==typeof o&&Object.keys(o).length>0||!1===o:e.util.schemaHasRules(o,e.RULES.all)){p.schema=o,p.schemaPath=s,p.errSchemaPath=u,i+=" var "+h+" = errors; ";var f,m=e.compositeRule;e.compositeRule=p.compositeRule=!0,p.createErrors=!1,p.opts.allErrors&&(f=p.opts.allErrors,p.opts.allErrors=!1),i+=" "+e.validate(p)+" ",p.createErrors=!0,f&&(p.opts.allErrors=f),e.compositeRule=p.compositeRule=m,i+=" if ("+d+") { ";var g=g||[];g.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'should NOT be valid' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ";var v=i;i=g.pop(),!e.compositeRule&&c?e.async?i+=" throw new ValidationError(["+v+"]); ":i+=" validate.errors = ["+v+"]; return false; ":i+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } else { errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } ",e.opts.allErrors&&(i+=" } ")}else i+=" var err = ",!1!==e.createErrors?(i+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'should NOT be valid' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ",i+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(i+=" if (false) { ");return i}},59709:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="valid"+n,p="errs__"+n,d=e.util.copy(e),f="";d.level++;var m="valid"+d.level,g=d.baseId,v="prevValid"+n,y="passingSchemas"+n;i+="var "+p+" = errors , "+v+" = false , "+h+" = false , "+y+" = null; ";var _=e.compositeRule;e.compositeRule=d.compositeRule=!0;var b=o;if(b)for(var w,E=-1,k=b.length-1;E0||!1===w:e.util.schemaHasRules(w,e.RULES.all))?(d.schema=w,d.schemaPath=s+"["+E+"]",d.errSchemaPath=u+"/"+E,i+=" "+e.validate(d)+" ",d.baseId=g):i+=" var "+m+" = true; ",E&&(i+=" if ("+m+" && "+v+") { "+h+" = false; "+y+" = ["+y+", "+E+"]; } else { ",f+="}"),i+=" if ("+m+") { "+h+" = "+v+" = true; "+y+" = "+E+"; }";return e.compositeRule=d.compositeRule=_,i+=f+"if (!"+h+") { var err = ",!1!==e.createErrors?(i+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { passingSchemas: "+y+" } ",!1!==e.opts.messages&&(i+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ",i+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&c&&(e.async?i+=" throw new ValidationError(vErrors); ":i+=" validate.errors = vErrors; return false; "),i+="} else { errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; }",e.opts.allErrors&&(i+=" } "),i}},49614:e=>{"use strict";e.exports=function(e,t,r){var i,n=" ",a=e.level,o=e.dataLevel,s=e.schema[t],u=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,h="data"+(o||""),p=e.opts.$data&&s&&s.$data;p?(n+=" var schema"+a+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",i="schema"+a):i=s,n+="if ( ",p&&(n+=" ("+i+" !== undefined && typeof "+i+" != 'string') || "),n+=" !"+(p?"(new RegExp("+i+"))":e.usePattern(s))+".test("+h+") ) { ";var d=d||[];d.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { pattern: ",n+=p?""+i:""+e.util.toQuotedString(s),n+=" } ",!1!==e.opts.messages&&(n+=" , message: 'should match pattern \"",n+=p?"' + "+i+" + '":""+e.util.escapeQuotes(s),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=p?"validate.schema"+u:""+e.util.toQuotedString(s),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var f=n;return n=d.pop(),!e.compositeRule&&l?e.async?n+=" throw new ValidationError(["+f+"]); ":n+=" validate.errors = ["+f+"]; return false; ":n+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",l&&(n+=" else { "),n}},81175:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="errs__"+n,p=e.util.copy(e),d="";p.level++;var f="valid"+p.level,m="key"+n,g="idx"+n,v=p.dataLevel=e.dataLevel+1,y="data"+v,_="dataProperties"+n,b=Object.keys(o||{}).filter(P),w=e.schema.patternProperties||{},E=Object.keys(w).filter(P),k=e.schema.additionalProperties,S=b.length||E.length,x=!1===k,j="object"==typeof k&&Object.keys(k).length,N=e.opts.removeAdditional,M=x||j||N,I=e.opts.ownProperties,A=e.baseId,T=e.schema.required;if(T&&(!e.opts.$data||!T.$data)&&T.length8)i+=" || validate.schema"+s+".hasOwnProperty("+m+") ";else{var O=b;if(O)for(var B=-1,C=O.length-1;B0||!1===X:e.util.schemaHasRules(X,e.RULES.all)){var Y=e.util.getProperty($),ee=(W=l+Y,J&&void 0!==X.default);if(p.schema=X,p.schemaPath=s+Y,p.errSchemaPath=u+"/"+e.util.escapeFragment($),p.errorPath=e.util.getPath(e.errorPath,$,e.opts.jsonPointers),p.dataPathArr[v]=e.util.toQuotedString($),Z=e.validate(p),p.baseId=A,e.util.varOccurences(Z,y)<2){Z=e.util.varReplace(Z,y,W);var te=W}else te=y,i+=" var "+y+" = "+W+"; ";if(ee)i+=" "+Z+" ";else{if(R&&R[$]){i+=" if ( "+te+" === undefined ",I&&(i+=" || ! Object.prototype.hasOwnProperty.call("+l+", '"+e.util.escapeQuotes($)+"') "),i+=") { "+f+" = false; ",q=e.errorPath,U=u;var re,ie=e.util.escapeQuotes($);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(q,$,e.opts.jsonPointers)),u=e.errSchemaPath+"/required",(re=re||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { missingProperty: '"+ie+"' } ",!1!==e.opts.messages&&(i+=" , message: '",e.opts._errorDataPathProperty?i+="is a required property":i+="should have required property \\'"+ie+"\\'",i+="' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ",H=i,i=re.pop(),!e.compositeRule&&c?e.async?i+=" throw new ValidationError(["+H+"]); ":i+=" validate.errors = ["+H+"]; return false; ":i+=" var err = "+H+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u=U,e.errorPath=q,i+=" } else { "}else c?(i+=" if ( "+te+" === undefined ",I&&(i+=" || ! Object.prototype.hasOwnProperty.call("+l+", '"+e.util.escapeQuotes($)+"') "),i+=") { "+f+" = true; } else { "):(i+=" if ("+te+" !== undefined ",I&&(i+=" && Object.prototype.hasOwnProperty.call("+l+", '"+e.util.escapeQuotes($)+"') "),i+=" ) { ");i+=" "+Z+" } "}}c&&(i+=" if ("+f+") { ",d+="}")}}if(E.length){var ne=E;if(ne)for(var ae,oe=-1,se=ne.length-1;oe0||!1===X:e.util.schemaHasRules(X,e.RULES.all))&&(p.schema=X,p.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(ae),p.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(ae),i+=I?" "+_+" = "+_+" || Object.keys("+l+"); for (var "+g+"=0; "+g+"<"+_+".length; "+g+"++) { var "+m+" = "+_+"["+g+"]; ":" for (var "+m+" in "+l+") { ",i+=" if ("+e.usePattern(ae)+".test("+m+")) { ",p.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers),W=l+"["+m+"]",p.dataPathArr[v]=m,Z=e.validate(p),p.baseId=A,e.util.varOccurences(Z,y)<2?i+=" "+e.util.varReplace(Z,y,W)+" ":i+=" var "+y+" = "+W+"; "+Z+" ",c&&(i+=" if (!"+f+") break; "),i+=" } ",c&&(i+=" else "+f+" = true; "),i+=" } ",c&&(i+=" if ("+f+") { ",d+="}"))}return c&&(i+=" "+d+" if ("+h+" == errors) {"),i}},58441:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="errs__"+n,p=e.util.copy(e);p.level++;var d="valid"+p.level;if(i+="var "+h+" = errors;",e.opts.strictKeywords?"object"==typeof o&&Object.keys(o).length>0||!1===o:e.util.schemaHasRules(o,e.RULES.all)){p.schema=o,p.schemaPath=s,p.errSchemaPath=u;var f="key"+n,m="idx"+n,g="i"+n,v="' + "+f+" + '",y="data"+(p.dataLevel=e.dataLevel+1),_="dataProperties"+n,b=e.opts.ownProperties,w=e.baseId;b&&(i+=" var "+_+" = undefined; "),i+=b?" "+_+" = "+_+" || Object.keys("+l+"); for (var "+m+"=0; "+m+"<"+_+".length; "+m+"++) { var "+f+" = "+_+"["+m+"]; ":" for (var "+f+" in "+l+") { ",i+=" var startErrs"+n+" = errors; ";var E=f,k=e.compositeRule;e.compositeRule=p.compositeRule=!0;var S=e.validate(p);p.baseId=w,e.util.varOccurences(S,y)<2?i+=" "+e.util.varReplace(S,y,E)+" ":i+=" var "+y+" = "+E+"; "+S+" ",e.compositeRule=p.compositeRule=k,i+=" if (!"+d+") { for (var "+g+"=startErrs"+n+"; "+g+"{"use strict";e.exports=function(e,t,r){var i,n,a=" ",o=e.level,s=e.dataLevel,u=e.schema[t],c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,h="data"+(s||""),p="valid"+o;if("#"==u||"#/"==u)e.isRoot?(i=e.async,n="validate"):(i=!0===e.root.schema.$async,n="root.refVal[0]");else{var d=e.resolveRef(e.baseId,u,e.isRoot);if(void 0===d){var f=e.MissingRefError.message(e.baseId,u);if("fail"==e.opts.missingRefs){e.logger.error(f),(y=y||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { ref: '"+e.util.escapeQuotes(u)+"' } ",!1!==e.opts.messages&&(a+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(u)+"' "),e.opts.verbose&&(a+=" , schema: "+e.util.toQuotedString(u)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var m=a;a=y.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+m+"]); ":a+=" validate.errors = ["+m+"]; return false; ":a+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l&&(a+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs)throw new e.MissingRefError(e.baseId,u,f);e.logger.warn(f),l&&(a+=" if (true) { ")}}else if(d.inline){var g=e.util.copy(e);g.level++;var v="valid"+g.level;g.schema=d.schema,g.schemaPath="",g.errSchemaPath=u,a+=" "+e.validate(g).replace(/validate\.schema/g,d.code)+" ",l&&(a+=" if ("+v+") { ")}else i=!0===d.$async||e.async&&!1!==d.$async,n=d.code}if(n){var y;(y=y||[]).push(a),a="",e.opts.passContext?a+=" "+n+".call(this, ":a+=" "+n+"( ",a+=" "+h+", (dataPath || '')",'""'!=e.errorPath&&(a+=" + "+e.errorPath);var _=a+=" , "+(s?"data"+(s-1||""):"parentData")+" , "+(s?e.dataPathArr[s]:"parentDataProperty")+", rootData) ";if(a=y.pop(),i){if(!e.async)throw new Error("async schema referenced by sync schema");l&&(a+=" var "+p+"; "),a+=" try { await "+_+"; ",l&&(a+=" "+p+" = true; "),a+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",l&&(a+=" "+p+" = false; "),a+=" } ",l&&(a+=" if ("+p+") { ")}else a+=" if (!"+_+") { if (vErrors === null) vErrors = "+n+".errors; else vErrors = vErrors.concat("+n+".errors); errors = vErrors.length; } ",l&&(a+=" else { ")}return a}},71287:e=>{"use strict";e.exports=function(e,t,r){var i=" ",n=e.level,a=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(a||""),h="valid"+n,p=e.opts.$data&&o&&o.$data;p&&(i+=" var schema"+n+" = "+e.util.getData(o.$data,a,e.dataPathArr)+"; ");var d="schema"+n;if(!p)if(o.length0||!1===_:e.util.schemaHasRules(_,e.RULES.all))||(f[f.length]=g)}}else f=o;if(p||f.length){var b=e.errorPath,w=p||f.length>=e.opts.loopRequired,E=e.opts.ownProperties;if(c)if(i+=" var missing"+n+"; ",w){p||(i+=" var "+d+" = validate.schema"+s+"; ");var k="' + "+(I="schema"+n+"["+(N="i"+n)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(b,I,e.opts.jsonPointers)),i+=" var "+h+" = true; ",p&&(i+=" if (schema"+n+" === undefined) "+h+" = true; else if (!Array.isArray(schema"+n+")) "+h+" = false; else {"),i+=" for (var "+N+" = 0; "+N+" < "+d+".length; "+N+"++) { "+h+" = "+l+"["+d+"["+N+"]] !== undefined ",E&&(i+=" && Object.prototype.hasOwnProperty.call("+l+", "+d+"["+N+"]) "),i+="; if (!"+h+") break; } ",p&&(i+=" } "),i+=" if (!"+h+") { ",(x=x||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { missingProperty: '"+k+"' } ",!1!==e.opts.messages&&(i+=" , message: '",e.opts._errorDataPathProperty?i+="is a required property":i+="should have required property \\'"+k+"\\'",i+="' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),i+=" } "):i+=" {} ";var S=i;i=x.pop(),!e.compositeRule&&c?e.async?i+=" throw new ValidationError(["+S+"]); ":i+=" validate.errors = ["+S+"]; return false; ":i+=" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } else { "}else{i+=" if ( ";var x,j=f;if(j)for(var N=-1,M=j.length-1;N{"use strict";e.exports=function(e,t,r){var i,n=" ",a=e.level,o=e.dataLevel,s=e.schema[t],u=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,h="data"+(o||""),p="valid"+a,d=e.opts.$data&&s&&s.$data;if(d?(n+=" var schema"+a+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",i="schema"+a):i=s,(s||d)&&!1!==e.opts.uniqueItems){d&&(n+=" var "+p+"; if ("+i+" === false || "+i+" === undefined) "+p+" = true; else if (typeof "+i+" != 'boolean') "+p+" = false; else { "),n+=" var i = "+h+".length , "+p+" = true , j; if (i > 1) { ";var f=e.schema.items&&e.schema.items.type,m=Array.isArray(f);if(!f||"object"==f||"array"==f||m&&(f.indexOf("object")>=0||f.indexOf("array")>=0))n+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+h+"[i], "+h+"[j])) { "+p+" = false; break outer; } } } ";else{n+=" var itemIndices = {}, item; for (;i--;) { var item = "+h+"[i]; ";var g="checkDataType"+(m?"s":"");n+=" if ("+e.util[g](f,"item",e.opts.strictNumbers,!0)+") continue; ",m&&(n+=" if (typeof item == 'string') item = '\"' + item; "),n+=" if (typeof itemIndices[item] == 'number') { "+p+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}n+=" } ",d&&(n+=" } "),n+=" if (!"+p+") { ";var v=v||[];v.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+u:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var y=n;n=v.pop(),!e.compositeRule&&l?e.async?n+=" throw new ValidationError(["+y+"]); ":n+=" validate.errors = ["+y+"]; return false; ":n+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",l&&(n+=" else { ")}else l&&(n+=" if (true) { ");return n}},19508:e=>{"use strict";e.exports=function(e,t,r){var i="",n=!0===e.schema.$async,a=e.util.schemaHasRulesExcept(e.schema,e.RULES.all,"$ref"),o=e.self._getId(e.schema);if(e.opts.strictKeywords){var s=e.util.schemaUnknownRules(e.schema,e.RULES.keywords);if(s){var u="unknown keyword: "+s;if("log"!==e.opts.strictKeywords)throw new Error(u);e.logger.warn(u)}}if(e.isTop&&(i+=" var validate = ",n&&(e.async=!0,i+="async "),i+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",o&&(e.opts.sourceCode||e.opts.processCode)&&(i+=" /*# sourceURL="+o+" */ ")),"boolean"==typeof e.schema||!a&&!e.schema.$ref){t="false schema";var c=e.level,l=e.dataLevel,h=e.schema[t],p=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,f=!e.opts.allErrors,m="data"+(l||""),g="valid"+c;if(!1===e.schema){e.isTop?f=!0:i+=" var "+g+" = false; ",(W=W||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'false schema' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'boolean schema is false' "),e.opts.verbose&&(i+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ";var v=i;i=W.pop(),!e.compositeRule&&f?e.async?i+=" throw new ValidationError(["+v+"]); ":i+=" validate.errors = ["+v+"]; return false; ":i+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else e.isTop?i+=n?" return data; ":" validate.errors = null; return true; ":i+=" var "+g+" = true; ";return e.isTop&&(i+=" }; return validate; "),i}if(e.isTop){var y=e.isTop;if(c=e.level=0,l=e.dataLevel=0,m="data",e.rootId=e.resolve.fullPath(e.self._getId(e.root.schema)),e.baseId=e.baseId||e.rootId,delete e.isTop,e.dataPathArr=[""],void 0!==e.schema.default&&e.opts.useDefaults&&e.opts.strictDefaults){var _="default is ignored in the schema root";if("log"!==e.opts.strictDefaults)throw new Error(_);e.logger.warn(_)}i+=" var vErrors = null; ",i+=" var errors = 0; ",i+=" if (rootData === undefined) rootData = data; "}else{if(c=e.level,m="data"+((l=e.dataLevel)||""),o&&(e.baseId=e.resolve.url(e.baseId,o)),n&&!e.async)throw new Error("async schema in sync schema");i+=" var errs_"+c+" = errors;"}g="valid"+c,f=!e.opts.allErrors;var b="",w="",E=e.schema.type,k=Array.isArray(E);if(E&&e.opts.nullable&&!0===e.schema.nullable&&(k?-1==E.indexOf("null")&&(E=E.concat("null")):"null"!=E&&(E=[E,"null"],k=!0)),k&&1==E.length&&(E=E[0],k=!1),e.schema.$ref&&a){if("fail"==e.opts.extendRefs)throw new Error('$ref: validation keywords used in schema at path "'+e.errSchemaPath+'" (see option extendRefs)');!0!==e.opts.extendRefs&&(a=!1,e.logger.warn('$ref: keywords ignored in schema at path "'+e.errSchemaPath+'"'))}if(e.schema.$comment&&e.opts.$comment&&(i+=" "+e.RULES.all.$comment.code(e,"$comment")),E){if(e.opts.coerceTypes)var S=e.util.coerceToTypes(e.opts.coerceTypes,E);var x=e.RULES.types[E];if(S||k||!0===x||x&&!Q(x)){p=e.schemaPath+".type",d=e.errSchemaPath+"/type",p=e.schemaPath+".type",d=e.errSchemaPath+"/type";var j=k?"checkDataTypes":"checkDataType";if(i+=" if ("+e.util[j](E,m,e.opts.strictNumbers,!0)+") { ",S){var N="dataType"+c,M="coerced"+c;i+=" var "+N+" = typeof "+m+"; var "+M+" = undefined; ","array"==e.opts.coerceTypes&&(i+=" if ("+N+" == 'object' && Array.isArray("+m+") && "+m+".length == 1) { "+m+" = "+m+"[0]; "+N+" = typeof "+m+"; if ("+e.util.checkDataType(e.schema.type,m,e.opts.strictNumbers)+") "+M+" = "+m+"; } "),i+=" if ("+M+" !== undefined) ; ";var I=S;if(I)for(var A,T=-1,R=I.length-1;T{"use strict";var i=/^[a-z_$][a-z0-9_$-]*$/i,n=r(14165),a=r(61128);e.exports={add:function(e,t){var r=this.RULES;if(r.keywords[e])throw new Error("Keyword "+e+" is already defined");if(!i.test(e))throw new Error("Keyword "+e+" is not a valid identifier");if(t){this.validateKeyword(t,!0);var a=t.type;if(Array.isArray(a))for(var o=0;o{"use strict";const i=t;i.bignum=r(4590),i.define=r(22500).define,i.base=r(71979),i.constants=r(36826),i.decoders=r(78307),i.encoders=r(56579)},22500:(e,t,r)=>{"use strict";const i=r(56579),n=r(78307),a=r(35717);function o(e,t){this.name=e,this.body=t,this.decoders={},this.encoders={}}t.define=function(e,t){return new o(e,t)},o.prototype._createNamed=function(e){const t=this.name;function r(e){this._initNamed(e,t)}return a(r,e),r.prototype._initNamed=function(t,r){e.call(this,t,r)},new r(this)},o.prototype._getDecoder=function(e){return e=e||"der",this.decoders.hasOwnProperty(e)||(this.decoders[e]=this._createNamed(n[e])),this.decoders[e]},o.prototype.decode=function(e,t,r){return this._getDecoder(t).decode(e,r)},o.prototype._getEncoder=function(e){return e=e||"der",this.encoders.hasOwnProperty(e)||(this.encoders[e]=this._createNamed(i[e])),this.encoders[e]},o.prototype.encode=function(e,t,r){return this._getEncoder(t).encode(e,r)}},36625:(e,t,r)=>{"use strict";const i=r(35717),n=r(98465).b,a=r(2399).Buffer;function o(e,t){n.call(this,t),a.isBuffer(e)?(this.base=e,this.offset=0,this.length=e.length):this.error("Input not Buffer")}function s(e,t){if(Array.isArray(e))this.length=0,this.value=e.map((function(e){return s.isEncoderBuffer(e)||(e=new s(e,t)),this.length+=e.length,e}),this);else if("number"==typeof e){if(!(0<=e&&e<=255))return t.error("non-byte EncoderBuffer value");this.value=e,this.length=1}else if("string"==typeof e)this.value=e,this.length=a.byteLength(e);else{if(!a.isBuffer(e))return t.error("Unsupported type: "+typeof e);this.value=e,this.length=e.length}}i(o,n),t.C=o,o.isDecoderBuffer=function(e){return e instanceof o||"object"==typeof e&&a.isBuffer(e.base)&&"DecoderBuffer"===e.constructor.name&&"number"==typeof e.offset&&"number"==typeof e.length&&"function"==typeof e.save&&"function"==typeof e.restore&&"function"==typeof e.isEmpty&&"function"==typeof e.readUInt8&&"function"==typeof e.skip&&"function"==typeof e.raw},o.prototype.save=function(){return{offset:this.offset,reporter:n.prototype.save.call(this)}},o.prototype.restore=function(e){const t=new o(this.base);return t.offset=e.offset,t.length=this.offset,this.offset=e.offset,n.prototype.restore.call(this,e.reporter),t},o.prototype.isEmpty=function(){return this.offset===this.length},o.prototype.readUInt8=function(e){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(e||"DecoderBuffer overrun")},o.prototype.skip=function(e,t){if(!(this.offset+e<=this.length))return this.error(t||"DecoderBuffer overrun");const r=new o(this.base);return r._reporterState=this._reporterState,r.offset=this.offset,r.length=this.offset+e,this.offset+=e,r},o.prototype.raw=function(e){return this.base.slice(e?e.offset:this.offset,this.length)},t.R=s,s.isEncoderBuffer=function(e){return e instanceof s||"object"==typeof e&&"EncoderBuffer"===e.constructor.name&&"number"==typeof e.length&&"function"==typeof e.join},s.prototype.join=function(e,t){return e||(e=a.alloc(this.length)),t||(t=0),0===this.length||(Array.isArray(this.value)?this.value.forEach((function(r){r.join(e,t),t+=r.length})):("number"==typeof this.value?e[t]=this.value:"string"==typeof this.value?e.write(this.value,t):a.isBuffer(this.value)&&this.value.copy(e,t),t+=this.length)),e}},71979:(e,t,r)=>{"use strict";const i=t;i.Reporter=r(98465).b,i.DecoderBuffer=r(36625).C,i.EncoderBuffer=r(36625).R,i.Node=r(41949)},41949:(e,t,r)=>{"use strict";const i=r(98465).b,n=r(36625).R,a=r(36625).C,o=r(79746),s=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],u=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(s);function c(e,t,r){const i={};this._baseState=i,i.name=r,i.enc=e,i.parent=t||null,i.children=null,i.tag=null,i.args=null,i.reverseArgs=null,i.choice=null,i.optional=!1,i.any=!1,i.obj=!1,i.use=null,i.useDecoder=null,i.key=null,i.default=null,i.explicit=null,i.implicit=null,i.contains=null,i.parent||(i.children=[],this._wrap())}e.exports=c;const l=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];c.prototype.clone=function(){const e=this._baseState,t={};l.forEach((function(r){t[r]=e[r]}));const r=new this.constructor(t.parent);return r._baseState=t,r},c.prototype._wrap=function(){const e=this._baseState;u.forEach((function(t){this[t]=function(){const r=new this.constructor(this);return e.children.push(r),r[t].apply(r,arguments)}}),this)},c.prototype._init=function(e){const t=this._baseState;o(null===t.parent),e.call(this),t.children=t.children.filter((function(e){return e._baseState.parent===this}),this),o.equal(t.children.length,1,"Root node can have only one child")},c.prototype._useArgs=function(e){const t=this._baseState,r=e.filter((function(e){return e instanceof this.constructor}),this);e=e.filter((function(e){return!(e instanceof this.constructor)}),this),0!==r.length&&(o(null===t.children),t.children=r,r.forEach((function(e){e._baseState.parent=this}),this)),0!==e.length&&(o(null===t.args),t.args=e,t.reverseArgs=e.map((function(e){if("object"!=typeof e||e.constructor!==Object)return e;const t={};return Object.keys(e).forEach((function(r){r==(0|r)&&(r|=0);const i=e[r];t[i]=r})),t})))},["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"].forEach((function(e){c.prototype[e]=function(){const t=this._baseState;throw new Error(e+" not implemented for encoding: "+t.enc)}})),s.forEach((function(e){c.prototype[e]=function(){const t=this._baseState,r=Array.prototype.slice.call(arguments);return o(null===t.tag),t.tag=e,this._useArgs(r),this}})),c.prototype.use=function(e){o(e);const t=this._baseState;return o(null===t.use),t.use=e,this},c.prototype.optional=function(){return this._baseState.optional=!0,this},c.prototype.def=function(e){const t=this._baseState;return o(null===t.default),t.default=e,t.optional=!0,this},c.prototype.explicit=function(e){const t=this._baseState;return o(null===t.explicit&&null===t.implicit),t.explicit=e,this},c.prototype.implicit=function(e){const t=this._baseState;return o(null===t.explicit&&null===t.implicit),t.implicit=e,this},c.prototype.obj=function(){const e=this._baseState,t=Array.prototype.slice.call(arguments);return e.obj=!0,0!==t.length&&this._useArgs(t),this},c.prototype.key=function(e){const t=this._baseState;return o(null===t.key),t.key=e,this},c.prototype.any=function(){return this._baseState.any=!0,this},c.prototype.choice=function(e){const t=this._baseState;return o(null===t.choice),t.choice=e,this._useArgs(Object.keys(e).map((function(t){return e[t]}))),this},c.prototype.contains=function(e){const t=this._baseState;return o(null===t.use),t.contains=e,this},c.prototype._decode=function(e,t){const r=this._baseState;if(null===r.parent)return e.wrapResult(r.children[0]._decode(e,t));let i,n=r.default,o=!0,s=null;if(null!==r.key&&(s=e.enterKey(r.key)),r.optional){let i=null;if(null!==r.explicit?i=r.explicit:null!==r.implicit?i=r.implicit:null!==r.tag&&(i=r.tag),null!==i||r.any){if(o=this._peekTag(e,i,r.any),e.isError(o))return o}else{const i=e.save();try{null===r.choice?this._decodeGeneric(r.tag,e,t):this._decodeChoice(e,t),o=!0}catch(e){o=!1}e.restore(i)}}if(r.obj&&o&&(i=e.enterObject()),o){if(null!==r.explicit){const t=this._decodeTag(e,r.explicit);if(e.isError(t))return t;e=t}const i=e.offset;if(null===r.use&&null===r.choice){let t;r.any&&(t=e.save());const i=this._decodeTag(e,null!==r.implicit?r.implicit:r.tag,r.any);if(e.isError(i))return i;r.any?n=e.raw(t):e=i}if(t&&t.track&&null!==r.tag&&t.track(e.path(),i,e.length,"tagged"),t&&t.track&&null!==r.tag&&t.track(e.path(),e.offset,e.length,"content"),r.any||(n=null===r.choice?this._decodeGeneric(r.tag,e,t):this._decodeChoice(e,t)),e.isError(n))return n;if(r.any||null!==r.choice||null===r.children||r.children.forEach((function(r){r._decode(e,t)})),r.contains&&("octstr"===r.tag||"bitstr"===r.tag)){const i=new a(n);n=this._getUse(r.contains,e._reporterState.obj)._decode(i,t)}}return r.obj&&o&&(n=e.leaveObject(i)),null===r.key||null===n&&!0!==o?null!==s&&e.exitKey(s):e.leaveKey(s,r.key,n),n},c.prototype._decodeGeneric=function(e,t,r){const i=this._baseState;return"seq"===e||"set"===e?null:"seqof"===e||"setof"===e?this._decodeList(t,e,i.args[0],r):/str$/.test(e)?this._decodeStr(t,e,r):"objid"===e&&i.args?this._decodeObjid(t,i.args[0],i.args[1],r):"objid"===e?this._decodeObjid(t,null,null,r):"gentime"===e||"utctime"===e?this._decodeTime(t,e,r):"null_"===e?this._decodeNull(t,r):"bool"===e?this._decodeBool(t,r):"objDesc"===e?this._decodeStr(t,e,r):"int"===e||"enum"===e?this._decodeInt(t,i.args&&i.args[0],r):null!==i.use?this._getUse(i.use,t._reporterState.obj)._decode(t,r):t.error("unknown tag: "+e)},c.prototype._getUse=function(e,t){const r=this._baseState;return r.useDecoder=this._use(e,t),o(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},c.prototype._decodeChoice=function(e,t){const r=this._baseState;let i=null,n=!1;return Object.keys(r.choice).some((function(a){const o=e.save(),s=r.choice[a];try{const r=s._decode(e,t);if(e.isError(r))return!1;i={type:a,value:r},n=!0}catch(t){return e.restore(o),!1}return!0}),this),n?i:e.error("Choice not matched")},c.prototype._createEncoderBuffer=function(e){return new n(e,this.reporter)},c.prototype._encode=function(e,t,r){const i=this._baseState;if(null!==i.default&&i.default===e)return;const n=this._encodeValue(e,t,r);return void 0===n||this._skipDefault(n,t,r)?void 0:n},c.prototype._encodeValue=function(e,t,r){const n=this._baseState;if(null===n.parent)return n.children[0]._encode(e,t||new i);let a=null;if(this.reporter=t,n.optional&&void 0===e){if(null===n.default)return;e=n.default}let o=null,s=!1;if(n.any)a=this._createEncoderBuffer(e);else if(n.choice)a=this._encodeChoice(e,t);else if(n.contains)o=this._getUse(n.contains,r)._encode(e,t),s=!0;else if(n.children)o=n.children.map((function(r){if("null_"===r._baseState.tag)return r._encode(null,t,e);if(null===r._baseState.key)return t.error("Child should have a key");const i=t.enterKey(r._baseState.key);if("object"!=typeof e)return t.error("Child expected, but input is not object");const n=r._encode(e[r._baseState.key],t,e);return t.leaveKey(i),n}),this).filter((function(e){return e})),o=this._createEncoderBuffer(o);else if("seqof"===n.tag||"setof"===n.tag){if(!n.args||1!==n.args.length)return t.error("Too many args for : "+n.tag);if(!Array.isArray(e))return t.error("seqof/setof, but data is not Array");const r=this.clone();r._baseState.implicit=null,o=this._createEncoderBuffer(e.map((function(r){const i=this._baseState;return this._getUse(i.args[0],e)._encode(r,t)}),r))}else null!==n.use?a=this._getUse(n.use,r)._encode(e,t):(o=this._encodePrimitive(n.tag,e),s=!0);if(!n.any&&null===n.choice){const e=null!==n.implicit?n.implicit:n.tag,r=null===n.implicit?"universal":"context";null===e?null===n.use&&t.error("Tag could be omitted only for .use()"):null===n.use&&(a=this._encodeComposite(e,s,r,o))}return null!==n.explicit&&(a=this._encodeComposite(n.explicit,!1,"context",a)),a},c.prototype._encodeChoice=function(e,t){const r=this._baseState,i=r.choice[e.type];return i||o(!1,e.type+" not found in "+JSON.stringify(Object.keys(r.choice))),i._encode(e.value,t)},c.prototype._encodePrimitive=function(e,t){const r=this._baseState;if(/str$/.test(e))return this._encodeStr(t,e);if("objid"===e&&r.args)return this._encodeObjid(t,r.reverseArgs[0],r.args[1]);if("objid"===e)return this._encodeObjid(t,null,null);if("gentime"===e||"utctime"===e)return this._encodeTime(t,e);if("null_"===e)return this._encodeNull();if("int"===e||"enum"===e)return this._encodeInt(t,r.args&&r.reverseArgs[0]);if("bool"===e)return this._encodeBool(t);if("objDesc"===e)return this._encodeStr(t,e);throw new Error("Unsupported tag: "+e)},c.prototype._isNumstr=function(e){return/^[0-9 ]*$/.test(e)},c.prototype._isPrintstr=function(e){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(e)}},98465:(e,t,r)=>{"use strict";const i=r(35717);function n(e){this._reporterState={obj:null,path:[],options:e||{},errors:[]}}function a(e,t){this.path=e,this.rethrow(t)}t.b=n,n.prototype.isError=function(e){return e instanceof a},n.prototype.save=function(){const e=this._reporterState;return{obj:e.obj,pathLen:e.path.length}},n.prototype.restore=function(e){const t=this._reporterState;t.obj=e.obj,t.path=t.path.slice(0,e.pathLen)},n.prototype.enterKey=function(e){return this._reporterState.path.push(e)},n.prototype.exitKey=function(e){const t=this._reporterState;t.path=t.path.slice(0,e-1)},n.prototype.leaveKey=function(e,t,r){const i=this._reporterState;this.exitKey(e),null!==i.obj&&(i.obj[t]=r)},n.prototype.path=function(){return this._reporterState.path.join("/")},n.prototype.enterObject=function(){const e=this._reporterState,t=e.obj;return e.obj={},t},n.prototype.leaveObject=function(e){const t=this._reporterState,r=t.obj;return t.obj=e,r},n.prototype.error=function(e){let t;const r=this._reporterState,i=e instanceof a;if(t=i?e:new a(r.path.map((function(e){return"["+JSON.stringify(e)+"]"})).join(""),e.message||e,e.stack),!r.options.partial)throw t;return i||r.errors.push(t),t},n.prototype.wrapResult=function(e){const t=this._reporterState;return t.options.partial?{result:this.isError(e)?null:e,errors:t.errors}:e},i(a,Error),a.prototype.rethrow=function(e){if(this.message=e+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,a),!this.stack)try{throw new Error(this.message)}catch(e){this.stack=e.stack}return this}},70160:(e,t)=>{"use strict";function r(e){const t={};return Object.keys(e).forEach((function(r){(0|r)==r&&(r|=0);const i=e[r];t[i]=r})),t}t.tagClass={0:"universal",1:"application",2:"context",3:"private"},t.tagClassByName=r(t.tagClass),t.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},t.tagByName=r(t.tag)},36826:(e,t,r)=>{"use strict";const i=t;i._reverse=function(e){const t={};return Object.keys(e).forEach((function(r){(0|r)==r&&(r|=0);const i=e[r];t[i]=r})),t},i.der=r(70160)},41671:(e,t,r)=>{"use strict";const i=r(35717),n=r(4590),a=r(36625).C,o=r(41949),s=r(70160);function u(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new c,this.tree._init(e.body)}function c(e){o.call(this,"der",e)}function l(e,t){let r=e.readUInt8(t);if(e.isError(r))return r;const i=s.tagClass[r>>6],n=0==(32&r);if(31==(31&r)){let i=r;for(r=0;128==(128&i);){if(i=e.readUInt8(t),e.isError(i))return i;r<<=7,r|=127&i}}else r&=31;return{cls:i,primitive:n,tag:r,tagStr:s.tag[r]}}function h(e,t,r){let i=e.readUInt8(r);if(e.isError(i))return i;if(!t&&128===i)return null;if(0==(128&i))return i;const n=127&i;if(n>4)return e.error("length octect is too long");i=0;for(let t=0;t{"use strict";const i=t;i.der=r(41671),i.pem=r(59631)},59631:(e,t,r)=>{"use strict";const i=r(35717),n=r(2399).Buffer,a=r(41671);function o(e){a.call(this,e),this.enc="pem"}i(o,a),e.exports=o,o.prototype.decode=function(e,t){const r=e.toString().split(/[\r\n]+/g),i=t.label.toUpperCase(),o=/^-----(BEGIN|END) ([^-]+)-----$/;let s=-1,u=-1;for(let e=0;e{"use strict";const i=r(35717),n=r(2399).Buffer,a=r(41949),o=r(70160);function s(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new u,this.tree._init(e.body)}function u(e){a.call(this,"der",e)}function c(e){return e<10?"0"+e:e}e.exports=s,s.prototype.encode=function(e,t){return this.tree._encode(e,t).join()},i(u,a),u.prototype._encodeComposite=function(e,t,r,i){const a=function(e,t,r,i){let n;if("seqof"===e?e="seq":"setof"===e&&(e="set"),o.tagByName.hasOwnProperty(e))n=o.tagByName[e];else{if("number"!=typeof e||(0|e)!==e)return i.error("Unknown tag: "+e);n=e}return n>=31?i.error("Multi-octet tag encoding unsupported"):(t||(n|=32),n|=o.tagClassByName[r||"universal"]<<6,n)}(e,t,r,this.reporter);if(i.length<128){const e=n.alloc(2);return e[0]=a,e[1]=i.length,this._createEncoderBuffer([e,i])}let s=1;for(let e=i.length;e>=256;e>>=8)s++;const u=n.alloc(2+s);u[0]=a,u[1]=128|s;for(let e=1+s,t=i.length;t>0;e--,t>>=8)u[e]=255&t;return this._createEncoderBuffer([u,i])},u.prototype._encodeStr=function(e,t){if("bitstr"===t)return this._createEncoderBuffer([0|e.unused,e.data]);if("bmpstr"===t){const t=n.alloc(2*e.length);for(let r=0;r=40)return this.reporter.error("Second objid identifier OOB");e.splice(0,2,40*e[0]+e[1])}let i=0;for(let t=0;t=128;r>>=7)i++}const a=n.alloc(i);let o=a.length-1;for(let t=e.length-1;t>=0;t--){let r=e[t];for(a[o--]=127&r;(r>>=7)>0;)a[o--]=128|127&r}return this._createEncoderBuffer(a)},u.prototype._encodeTime=function(e,t){let r;const i=new Date(e);return"gentime"===t?r=[c(i.getUTCFullYear()),c(i.getUTCMonth()+1),c(i.getUTCDate()),c(i.getUTCHours()),c(i.getUTCMinutes()),c(i.getUTCSeconds()),"Z"].join(""):"utctime"===t?r=[c(i.getUTCFullYear()%100),c(i.getUTCMonth()+1),c(i.getUTCDate()),c(i.getUTCHours()),c(i.getUTCMinutes()),c(i.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+t+" time is not supported yet"),this._encodeStr(r,"octstr")},u.prototype._encodeNull=function(){return this._createEncoderBuffer("")},u.prototype._encodeInt=function(e,t){if("string"==typeof e){if(!t)return this.reporter.error("String int or enum given, but no values map");if(!t.hasOwnProperty(e))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(e));e=t[e]}if("number"!=typeof e&&!n.isBuffer(e)){const t=e.toArray();!e.sign&&128&t[0]&&t.unshift(0),e=n.from(t)}if(n.isBuffer(e)){let t=e.length;0===e.length&&t++;const r=n.alloc(t);return e.copy(r),0===e.length&&(r[0]=0),this._createEncoderBuffer(r)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);let r=1;for(let t=e;t>=256;t>>=8)r++;const i=new Array(r);for(let t=i.length-1;t>=0;t--)i[t]=255&e,e>>=8;return 128&i[0]&&i.unshift(0),this._createEncoderBuffer(n.from(i))},u.prototype._encodeBool=function(e){return this._createEncoderBuffer(e?255:0)},u.prototype._use=function(e,t){return"function"==typeof e&&(e=e(t)),e._getEncoder("der").tree},u.prototype._skipDefault=function(e,t,r){const i=this._baseState;let n;if(null===i.default)return!1;const a=e.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i.default,t,r).join()),a.length!==i.defaultBuffer.length)return!1;for(n=0;n{"use strict";const i=t;i.der=r(66984),i.pem=r(2883)},2883:(e,t,r)=>{"use strict";const i=r(35717),n=r(66984);function a(e){n.call(this,e),this.enc="pem"}i(a,n),e.exports=a,a.prototype.encode=function(e,t){const r=n.prototype.encode.call(this,e).toString("base64"),i=["-----BEGIN "+t.label+"-----"];for(let e=0;e=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function u(e,t,r){var i=s(e,r);return r-1>=t&&(i|=s(e,r-1)<<4),i}function c(e,t,r,i){for(var n=0,a=Math.min(e.length,r),o=t;o=49?s-49+10:s>=17?s-17+10:s}return n}a.isBN=function(e){return e instanceof a||null!==e&&"object"==typeof e&&e.constructor.wordSize===a.wordSize&&Array.isArray(e.words)},a.max=function(e,t){return e.cmp(t)>0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)o=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)n=u(e,t,i)<=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;this.strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,o=a%i,s=Math.min(a,a-o)+r,u=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],o=n*a,s=67108863&o,u=o/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&u,p=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=p;d++){var f=c-d|0;l+=(o=(n=0|e.words[f])*(a=0|t.words[d])+h)/67108864|0,h=67108863&o}r.words[c]=0|h,u=0|l}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}a.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,a=0,o=0;o>>24-n&16777215)||o!==this.length-1?l[6-u.length]+u+r:u+r,(n+=2)>=26&&(n-=26,o--)}for(0!==a&&(r=a.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var c=h[e],d=p[e];r="";var f=this.clone();for(f.negative=0;!f.isZero();){var m=f.modn(d).toString(e);r=(f=f.idivn(d)).isZero()?m+r:l[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(e,t){return i(void 0!==o),this.toArrayLike(o,e,t)},a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},a.prototype.toArrayLike=function(e,t,r){var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0"),this.strip();var o,s,u="le"===t,c=new e(a),l=this.clone();if(u){for(s=0;!l.isZero();s++)o=l.andln(255),l.iushrn(8),c[s]=o;for(;s=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==a&&o>26,this.words[o]=67108863&t;if(0===a&&o>>13,d=0|o[1],f=8191&d,m=d>>>13,g=0|o[2],v=8191&g,y=g>>>13,_=0|o[3],b=8191&_,w=_>>>13,E=0|o[4],k=8191&E,S=E>>>13,x=0|o[5],j=8191&x,N=x>>>13,M=0|o[6],I=8191&M,A=M>>>13,T=0|o[7],R=8191&T,P=T>>>13,O=0|o[8],B=8191&O,C=O>>>13,z=0|o[9],F=8191&z,D=z>>>13,q=0|s[0],L=8191&q,U=q>>>13,H=0|s[1],K=8191&H,W=H>>>13,Z=0|s[2],J=8191&Z,V=Z>>>13,$=0|s[3],G=8191&$,Q=$>>>13,X=0|s[4],Y=8191&X,ee=X>>>13,te=0|s[5],re=8191&te,ie=te>>>13,ne=0|s[6],ae=8191&ne,oe=ne>>>13,se=0|s[7],ue=8191&se,ce=se>>>13,le=0|s[8],he=8191&le,pe=le>>>13,de=0|s[9],fe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ge=(c+(i=Math.imul(h,L))|0)+((8191&(n=(n=Math.imul(h,U))+Math.imul(p,L)|0))<<13)|0;c=((a=Math.imul(p,U))+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(f,L),n=(n=Math.imul(f,U))+Math.imul(m,L)|0,a=Math.imul(m,U);var ve=(c+(i=i+Math.imul(h,K)|0)|0)+((8191&(n=(n=n+Math.imul(h,W)|0)+Math.imul(p,K)|0))<<13)|0;c=((a=a+Math.imul(p,W)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(v,L),n=(n=Math.imul(v,U))+Math.imul(y,L)|0,a=Math.imul(y,U),i=i+Math.imul(f,K)|0,n=(n=n+Math.imul(f,W)|0)+Math.imul(m,K)|0,a=a+Math.imul(m,W)|0;var ye=(c+(i=i+Math.imul(h,J)|0)|0)+((8191&(n=(n=n+Math.imul(h,V)|0)+Math.imul(p,J)|0))<<13)|0;c=((a=a+Math.imul(p,V)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(b,L),n=(n=Math.imul(b,U))+Math.imul(w,L)|0,a=Math.imul(w,U),i=i+Math.imul(v,K)|0,n=(n=n+Math.imul(v,W)|0)+Math.imul(y,K)|0,a=a+Math.imul(y,W)|0,i=i+Math.imul(f,J)|0,n=(n=n+Math.imul(f,V)|0)+Math.imul(m,J)|0,a=a+Math.imul(m,V)|0;var _e=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(n=(n=n+Math.imul(h,Q)|0)+Math.imul(p,G)|0))<<13)|0;c=((a=a+Math.imul(p,Q)|0)+(n>>>13)|0)+(_e>>>26)|0,_e&=67108863,i=Math.imul(k,L),n=(n=Math.imul(k,U))+Math.imul(S,L)|0,a=Math.imul(S,U),i=i+Math.imul(b,K)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(w,K)|0,a=a+Math.imul(w,W)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,V)|0)+Math.imul(y,J)|0,a=a+Math.imul(y,V)|0,i=i+Math.imul(f,G)|0,n=(n=n+Math.imul(f,Q)|0)+Math.imul(m,G)|0,a=a+Math.imul(m,Q)|0;var be=(c+(i=i+Math.imul(h,Y)|0)|0)+((8191&(n=(n=n+Math.imul(h,ee)|0)+Math.imul(p,Y)|0))<<13)|0;c=((a=a+Math.imul(p,ee)|0)+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(j,L),n=(n=Math.imul(j,U))+Math.imul(N,L)|0,a=Math.imul(N,U),i=i+Math.imul(k,K)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(S,K)|0,a=a+Math.imul(S,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,V)|0)+Math.imul(w,J)|0,a=a+Math.imul(w,V)|0,i=i+Math.imul(v,G)|0,n=(n=n+Math.imul(v,Q)|0)+Math.imul(y,G)|0,a=a+Math.imul(y,Q)|0,i=i+Math.imul(f,Y)|0,n=(n=n+Math.imul(f,ee)|0)+Math.imul(m,Y)|0,a=a+Math.imul(m,ee)|0;var we=(c+(i=i+Math.imul(h,re)|0)|0)+((8191&(n=(n=n+Math.imul(h,ie)|0)+Math.imul(p,re)|0))<<13)|0;c=((a=a+Math.imul(p,ie)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(I,L),n=(n=Math.imul(I,U))+Math.imul(A,L)|0,a=Math.imul(A,U),i=i+Math.imul(j,K)|0,n=(n=n+Math.imul(j,W)|0)+Math.imul(N,K)|0,a=a+Math.imul(N,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,V)|0)+Math.imul(S,J)|0,a=a+Math.imul(S,V)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,Q)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,Q)|0,i=i+Math.imul(v,Y)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(y,Y)|0,a=a+Math.imul(y,ee)|0,i=i+Math.imul(f,re)|0,n=(n=n+Math.imul(f,ie)|0)+Math.imul(m,re)|0,a=a+Math.imul(m,ie)|0;var Ee=(c+(i=i+Math.imul(h,ae)|0)|0)+((8191&(n=(n=n+Math.imul(h,oe)|0)+Math.imul(p,ae)|0))<<13)|0;c=((a=a+Math.imul(p,oe)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(R,L),n=(n=Math.imul(R,U))+Math.imul(P,L)|0,a=Math.imul(P,U),i=i+Math.imul(I,K)|0,n=(n=n+Math.imul(I,W)|0)+Math.imul(A,K)|0,a=a+Math.imul(A,W)|0,i=i+Math.imul(j,J)|0,n=(n=n+Math.imul(j,V)|0)+Math.imul(N,J)|0,a=a+Math.imul(N,V)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,Q)|0)+Math.imul(S,G)|0,a=a+Math.imul(S,Q)|0,i=i+Math.imul(b,Y)|0,n=(n=n+Math.imul(b,ee)|0)+Math.imul(w,Y)|0,a=a+Math.imul(w,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(y,re)|0,a=a+Math.imul(y,ie)|0,i=i+Math.imul(f,ae)|0,n=(n=n+Math.imul(f,oe)|0)+Math.imul(m,ae)|0,a=a+Math.imul(m,oe)|0;var ke=(c+(i=i+Math.imul(h,ue)|0)|0)+((8191&(n=(n=n+Math.imul(h,ce)|0)+Math.imul(p,ue)|0))<<13)|0;c=((a=a+Math.imul(p,ce)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(B,L),n=(n=Math.imul(B,U))+Math.imul(C,L)|0,a=Math.imul(C,U),i=i+Math.imul(R,K)|0,n=(n=n+Math.imul(R,W)|0)+Math.imul(P,K)|0,a=a+Math.imul(P,W)|0,i=i+Math.imul(I,J)|0,n=(n=n+Math.imul(I,V)|0)+Math.imul(A,J)|0,a=a+Math.imul(A,V)|0,i=i+Math.imul(j,G)|0,n=(n=n+Math.imul(j,Q)|0)+Math.imul(N,G)|0,a=a+Math.imul(N,Q)|0,i=i+Math.imul(k,Y)|0,n=(n=n+Math.imul(k,ee)|0)+Math.imul(S,Y)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(b,re)|0,n=(n=n+Math.imul(b,ie)|0)+Math.imul(w,re)|0,a=a+Math.imul(w,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,oe)|0)+Math.imul(y,ae)|0,a=a+Math.imul(y,oe)|0,i=i+Math.imul(f,ue)|0,n=(n=n+Math.imul(f,ce)|0)+Math.imul(m,ue)|0,a=a+Math.imul(m,ce)|0;var Se=(c+(i=i+Math.imul(h,he)|0)|0)+((8191&(n=(n=n+Math.imul(h,pe)|0)+Math.imul(p,he)|0))<<13)|0;c=((a=a+Math.imul(p,pe)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(F,L),n=(n=Math.imul(F,U))+Math.imul(D,L)|0,a=Math.imul(D,U),i=i+Math.imul(B,K)|0,n=(n=n+Math.imul(B,W)|0)+Math.imul(C,K)|0,a=a+Math.imul(C,W)|0,i=i+Math.imul(R,J)|0,n=(n=n+Math.imul(R,V)|0)+Math.imul(P,J)|0,a=a+Math.imul(P,V)|0,i=i+Math.imul(I,G)|0,n=(n=n+Math.imul(I,Q)|0)+Math.imul(A,G)|0,a=a+Math.imul(A,Q)|0,i=i+Math.imul(j,Y)|0,n=(n=n+Math.imul(j,ee)|0)+Math.imul(N,Y)|0,a=a+Math.imul(N,ee)|0,i=i+Math.imul(k,re)|0,n=(n=n+Math.imul(k,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(b,ae)|0,n=(n=n+Math.imul(b,oe)|0)+Math.imul(w,ae)|0,a=a+Math.imul(w,oe)|0,i=i+Math.imul(v,ue)|0,n=(n=n+Math.imul(v,ce)|0)+Math.imul(y,ue)|0,a=a+Math.imul(y,ce)|0,i=i+Math.imul(f,he)|0,n=(n=n+Math.imul(f,pe)|0)+Math.imul(m,he)|0,a=a+Math.imul(m,pe)|0;var xe=(c+(i=i+Math.imul(h,fe)|0)|0)+((8191&(n=(n=n+Math.imul(h,me)|0)+Math.imul(p,fe)|0))<<13)|0;c=((a=a+Math.imul(p,me)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(F,K),n=(n=Math.imul(F,W))+Math.imul(D,K)|0,a=Math.imul(D,W),i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,V)|0)+Math.imul(C,J)|0,a=a+Math.imul(C,V)|0,i=i+Math.imul(R,G)|0,n=(n=n+Math.imul(R,Q)|0)+Math.imul(P,G)|0,a=a+Math.imul(P,Q)|0,i=i+Math.imul(I,Y)|0,n=(n=n+Math.imul(I,ee)|0)+Math.imul(A,Y)|0,a=a+Math.imul(A,ee)|0,i=i+Math.imul(j,re)|0,n=(n=n+Math.imul(j,ie)|0)+Math.imul(N,re)|0,a=a+Math.imul(N,ie)|0,i=i+Math.imul(k,ae)|0,n=(n=n+Math.imul(k,oe)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,oe)|0,i=i+Math.imul(b,ue)|0,n=(n=n+Math.imul(b,ce)|0)+Math.imul(w,ue)|0,a=a+Math.imul(w,ce)|0,i=i+Math.imul(v,he)|0,n=(n=n+Math.imul(v,pe)|0)+Math.imul(y,he)|0,a=a+Math.imul(y,pe)|0;var je=(c+(i=i+Math.imul(f,fe)|0)|0)+((8191&(n=(n=n+Math.imul(f,me)|0)+Math.imul(m,fe)|0))<<13)|0;c=((a=a+Math.imul(m,me)|0)+(n>>>13)|0)+(je>>>26)|0,je&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,V))+Math.imul(D,J)|0,a=Math.imul(D,V),i=i+Math.imul(B,G)|0,n=(n=n+Math.imul(B,Q)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,Q)|0,i=i+Math.imul(R,Y)|0,n=(n=n+Math.imul(R,ee)|0)+Math.imul(P,Y)|0,a=a+Math.imul(P,ee)|0,i=i+Math.imul(I,re)|0,n=(n=n+Math.imul(I,ie)|0)+Math.imul(A,re)|0,a=a+Math.imul(A,ie)|0,i=i+Math.imul(j,ae)|0,n=(n=n+Math.imul(j,oe)|0)+Math.imul(N,ae)|0,a=a+Math.imul(N,oe)|0,i=i+Math.imul(k,ue)|0,n=(n=n+Math.imul(k,ce)|0)+Math.imul(S,ue)|0,a=a+Math.imul(S,ce)|0,i=i+Math.imul(b,he)|0,n=(n=n+Math.imul(b,pe)|0)+Math.imul(w,he)|0,a=a+Math.imul(w,pe)|0;var Ne=(c+(i=i+Math.imul(v,fe)|0)|0)+((8191&(n=(n=n+Math.imul(v,me)|0)+Math.imul(y,fe)|0))<<13)|0;c=((a=a+Math.imul(y,me)|0)+(n>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,i=Math.imul(F,G),n=(n=Math.imul(F,Q))+Math.imul(D,G)|0,a=Math.imul(D,Q),i=i+Math.imul(B,Y)|0,n=(n=n+Math.imul(B,ee)|0)+Math.imul(C,Y)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(R,re)|0,n=(n=n+Math.imul(R,ie)|0)+Math.imul(P,re)|0,a=a+Math.imul(P,ie)|0,i=i+Math.imul(I,ae)|0,n=(n=n+Math.imul(I,oe)|0)+Math.imul(A,ae)|0,a=a+Math.imul(A,oe)|0,i=i+Math.imul(j,ue)|0,n=(n=n+Math.imul(j,ce)|0)+Math.imul(N,ue)|0,a=a+Math.imul(N,ce)|0,i=i+Math.imul(k,he)|0,n=(n=n+Math.imul(k,pe)|0)+Math.imul(S,he)|0,a=a+Math.imul(S,pe)|0;var Me=(c+(i=i+Math.imul(b,fe)|0)|0)+((8191&(n=(n=n+Math.imul(b,me)|0)+Math.imul(w,fe)|0))<<13)|0;c=((a=a+Math.imul(w,me)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(F,Y),n=(n=Math.imul(F,ee))+Math.imul(D,Y)|0,a=Math.imul(D,ee),i=i+Math.imul(B,re)|0,n=(n=n+Math.imul(B,ie)|0)+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(R,ae)|0,n=(n=n+Math.imul(R,oe)|0)+Math.imul(P,ae)|0,a=a+Math.imul(P,oe)|0,i=i+Math.imul(I,ue)|0,n=(n=n+Math.imul(I,ce)|0)+Math.imul(A,ue)|0,a=a+Math.imul(A,ce)|0,i=i+Math.imul(j,he)|0,n=(n=n+Math.imul(j,pe)|0)+Math.imul(N,he)|0,a=a+Math.imul(N,pe)|0;var Ie=(c+(i=i+Math.imul(k,fe)|0)|0)+((8191&(n=(n=n+Math.imul(k,me)|0)+Math.imul(S,fe)|0))<<13)|0;c=((a=a+Math.imul(S,me)|0)+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(F,re),n=(n=Math.imul(F,ie))+Math.imul(D,re)|0,a=Math.imul(D,ie),i=i+Math.imul(B,ae)|0,n=(n=n+Math.imul(B,oe)|0)+Math.imul(C,ae)|0,a=a+Math.imul(C,oe)|0,i=i+Math.imul(R,ue)|0,n=(n=n+Math.imul(R,ce)|0)+Math.imul(P,ue)|0,a=a+Math.imul(P,ce)|0,i=i+Math.imul(I,he)|0,n=(n=n+Math.imul(I,pe)|0)+Math.imul(A,he)|0,a=a+Math.imul(A,pe)|0;var Ae=(c+(i=i+Math.imul(j,fe)|0)|0)+((8191&(n=(n=n+Math.imul(j,me)|0)+Math.imul(N,fe)|0))<<13)|0;c=((a=a+Math.imul(N,me)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(F,ae),n=(n=Math.imul(F,oe))+Math.imul(D,ae)|0,a=Math.imul(D,oe),i=i+Math.imul(B,ue)|0,n=(n=n+Math.imul(B,ce)|0)+Math.imul(C,ue)|0,a=a+Math.imul(C,ce)|0,i=i+Math.imul(R,he)|0,n=(n=n+Math.imul(R,pe)|0)+Math.imul(P,he)|0,a=a+Math.imul(P,pe)|0;var Te=(c+(i=i+Math.imul(I,fe)|0)|0)+((8191&(n=(n=n+Math.imul(I,me)|0)+Math.imul(A,fe)|0))<<13)|0;c=((a=a+Math.imul(A,me)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(F,ue),n=(n=Math.imul(F,ce))+Math.imul(D,ue)|0,a=Math.imul(D,ce),i=i+Math.imul(B,he)|0,n=(n=n+Math.imul(B,pe)|0)+Math.imul(C,he)|0,a=a+Math.imul(C,pe)|0;var Re=(c+(i=i+Math.imul(R,fe)|0)|0)+((8191&(n=(n=n+Math.imul(R,me)|0)+Math.imul(P,fe)|0))<<13)|0;c=((a=a+Math.imul(P,me)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(F,he),n=(n=Math.imul(F,pe))+Math.imul(D,he)|0,a=Math.imul(D,pe);var Pe=(c+(i=i+Math.imul(B,fe)|0)|0)+((8191&(n=(n=n+Math.imul(B,me)|0)+Math.imul(C,fe)|0))<<13)|0;c=((a=a+Math.imul(C,me)|0)+(n>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var Oe=(c+(i=Math.imul(F,fe))|0)+((8191&(n=(n=Math.imul(F,me))+Math.imul(D,fe)|0))<<13)|0;return c=((a=Math.imul(D,me))+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ve,u[2]=ye,u[3]=_e,u[4]=be,u[5]=we,u[6]=Ee,u[7]=ke,u[8]=Se,u[9]=xe,u[10]=je,u[11]=Ne,u[12]=Me,u[13]=Ie,u[14]=Ae,u[15]=Te,u[16]=Re,u[17]=Pe,u[18]=Oe,0!==c&&(u[19]=c,r.length++),r};function m(e,t,r){return(new g).mulp(e,t,r)}function g(e,t){this.x=e,this.y=t}Math.imul||(f=d),a.prototype.mulTo=function(e,t){var r,i=this.length+e.length;return r=10===this.length&&10===e.length?f(this,e,t):i<63?d(this,e,t):i<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,i=o,o=n}return 0!==i?r.words[a]=i:r.length--,r.strip()}(this,e,t):m(this,e,t),r},g.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},g.prototype.permute=function(e,t,r,i,n,a){for(var o=0;o>>=1)n++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*t;o>=26,t+=n/67108864|0,t+=a>>>26,this.words[r]=67108863&a}return 0!==t&&(this.words[r]=t,this.length++),this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n}return t}(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,o=Math.min((e-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,c=0;c=0&&(0!==l||c>=n);c--){var h=0|this.words[c];this.words[c]=l<<26-a|h>>>a,l=h&s}return u&&0!==l&&(u.words[u.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===s)return this.strip();for(i(-1===s),s=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,o=0|n.words[n.length-1];0!=(r=26-this._countBits(o))&&(n=n.ushln(r),i.iushln(r),o=0|n.words[n.length-1]);var s,u=i.length-n.length;if("mod"!==t){(s=new a(null)).length=u+1,s.words=new Array(s.length);for(var c=0;c=0;h--){var p=67108864*(0|i.words[n.length+h])+(0|i.words[n.length+h-1]);for(p=Math.min(p/o|0,67108863),i._ishlnsubmul(n,p,h);0!==i.negative;)p--,i.negative=0,i._ishlnsubmul(n,1,h),i.isZero()||(i.negative^=1);s&&(s.words[h]=p)}return s&&s.strip(),i.strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(n=s.div.neg()),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:n,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modn(e.words[0]))}:this._wordDiv(e,t);var n,o,s},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modn=function(e){i(e<=67108863);for(var t=(1<<26)%e,r=0,n=this.length-1;n>=0;n--)r=(t*r+(0|this.words[n]))%e;return r},a.prototype.idivn=function(e){i(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*t;this.words[r]=n/e|0,t=n%e}return this.strip()},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new a(1),o=new a(0),s=new a(0),u=new a(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var l=r.clone(),h=t.clone();!t.isZero();){for(var p=0,d=1;0==(t.words[0]&d)&&p<26;++p,d<<=1);if(p>0)for(t.iushrn(p);p-- >0;)(n.isOdd()||o.isOdd())&&(n.iadd(l),o.isub(h)),n.iushrn(1),o.iushrn(1);for(var f=0,m=1;0==(r.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(r.iushrn(f);f-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(l),u.isub(h)),s.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(s),o.isub(u)):(r.isub(t),s.isub(n),u.isub(o))}return{a:s,b:u,gcd:r.iushln(c)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,o=new a(1),s=new a(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,l=1;0==(t.words[0]&l)&&c<26;++c,l<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);for(var h=0,p=1;0==(r.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s)):(r.isub(t),s.isub(o))}return(n=0===t.cmpn(1)?o:s).cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new k(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var v={k256:null,p224:null,p192:null,p25519:null};function y(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function _(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function E(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(e){if("string"==typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function S(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},y.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},y.prototype.split=function(e,t){e.iushrn(this.n,0,t)},y.prototype.imulK=function(e){return e.imul(this.k)},n(_,y),_.prototype.split=function(e,t){for(var r=4194303,i=Math.min(e.length,9),n=0;n>>22,a=o}a>>>=22,e.words[n-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},_.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(v[e])return v[e];var t;if("k256"===e)t=new _;else if("p224"===e)t=new b;else if("p192"===e)t=new w;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new E}return v[e]=t,t},k.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},k.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),o=0;!n.isZero()&&0===n.andln(1);)o++,n.iushrn(1);i(!n.isZero());var s=new a(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new a(2*l*l).toRed(this);0!==this.pow(l,c).cmp(u);)l.redIAdd(u);for(var h=this.pow(l,n),p=this.pow(e,n.addn(1).iushrn(1)),d=this.pow(e,n),f=o;0!==d.cmp(s);){for(var m=d,g=0;0!==m.cmp(s);g++)m=m.redSqr();i(g=0;i--){for(var c=t.words[i],l=u-1;l>=0;l--){var h=c>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==h||0!==o?(o<<=1,o|=h,(4==++s||0===i&&0===l)&&(n=this.mul(n,r[o]),s=0,o=0)):s=0}u=26}return n},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new S(e)},n(S,k),S.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},S.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},S.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},S.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=r.nmd(e),this)},83407:e=>{e.exports={newInvalidAsn1Error:function(e){var t=new Error;return t.name="InvalidAsn1Error",t.message=e||"",t}}},20279:(e,t,r)=>{var i=r(83407),n=r(34478),a=r(24578),o=r(3609);for(var s in e.exports={Reader:a,Writer:o},n)n.hasOwnProperty(s)&&(e.exports[s]=n[s]);for(var u in i)i.hasOwnProperty(u)&&(e.exports[u]=i[u])},24578:(e,t,r)=>{var i=r(69282),n=r(2399).Buffer,a=r(34478),o=r(83407).newInvalidAsn1Error;function s(e){if(!e||!n.isBuffer(e))throw new TypeError("data must be a node Buffer");this._buf=e,this._size=e.length,this._len=0,this._offset=0}Object.defineProperty(s.prototype,"length",{enumerable:!0,get:function(){return this._len}}),Object.defineProperty(s.prototype,"offset",{enumerable:!0,get:function(){return this._offset}}),Object.defineProperty(s.prototype,"remain",{get:function(){return this._size-this._offset}}),Object.defineProperty(s.prototype,"buffer",{get:function(){return this._buf.slice(this._offset)}}),s.prototype.readByte=function(e){if(this._size-this._offset<1)return null;var t=255&this._buf[this._offset];return e||(this._offset+=1),t},s.prototype.peek=function(){return this.readByte(!0)},s.prototype.readLength=function(e){if(void 0===e&&(e=this._offset),e>=this._size)return null;var t=255&this._buf[e++];if(null===t)return null;if(128==(128&t)){if(0==(t&=127))throw o("Indefinite length not supported");if(t>4)throw o("encoding too long");if(this._size-ethis._size-i)return null;if(this._offset=i,0===this.length)return t?n.alloc(0):"";var s=this._buf.slice(this._offset,this._offset+this.length);return this._offset+=this.length,t?s:s.toString("utf8")},s.prototype.readOID=function(e){e||(e=a.OID);var t=this.readString(e,!0);if(null===t)return null;for(var r=[],i=0,n=0;n>0),r.join(".")},s.prototype._readTag=function(e){i.ok(void 0!==e);var t=this.peek();if(null===t)return null;if(t!==e)throw o("Expected 0x"+e.toString(16)+": got 0x"+t.toString(16));var r=this.readLength(this._offset+1);if(null===r)return null;if(this.length>4)throw o("Integer too long: "+this.length);if(this.length>this._size-r)return null;this._offset=r;for(var n=this._buf[this._offset],a=0,s=0;s>0},e.exports=s},34478:e=>{e.exports={EOC:0,Boolean:1,Integer:2,BitString:3,OctetString:4,Null:5,OID:6,ObjectDescriptor:7,External:8,Real:9,Enumeration:10,PDV:11,Utf8String:12,RelativeOID:13,Sequence:16,Set:17,NumericString:18,PrintableString:19,T61String:20,VideotexString:21,IA5String:22,UTCTime:23,GeneralizedTime:24,GraphicString:25,VisibleString:26,GeneralString:28,UniversalString:29,CharacterString:30,BMPString:31,Constructor:32,Context:128}},3609:(e,t,r)=>{var i=r(69282),n=r(2399).Buffer,a=r(34478),o=r(83407).newInvalidAsn1Error,s={size:1024,growthFactor:8};function u(e){var t,r;t=s,r=e||{},i.ok(t),i.equal(typeof t,"object"),i.ok(r),i.equal(typeof r,"object"),Object.getOwnPropertyNames(t).forEach((function(e){if(!r[e]){var i=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(r,e,i)}})),e=r,this._buf=n.alloc(e.size||1024),this._size=this._buf.length,this._offset=0,this._options=e,this._seq=[]}Object.defineProperty(u.prototype,"buffer",{get:function(){if(this._seq.length)throw o(this._seq.length+" unended sequence(s)");return this._buf.slice(0,this._offset)}}),u.prototype.writeByte=function(e){if("number"!=typeof e)throw new TypeError("argument must be a Number");this._ensure(1),this._buf[this._offset++]=e},u.prototype.writeInt=function(e,t){if("number"!=typeof e)throw new TypeError("argument must be a Number");"number"!=typeof t&&(t=a.Integer);for(var r=4;(0==(4286578688&e)||-8388608==(4286578688&e))&&r>1;)r--,e<<=8;if(r>4)throw o("BER ints cannot be > 0xffffffff");for(this._ensure(2+r),this._buf[this._offset++]=t,this._buf[this._offset++]=r;r-- >0;)this._buf[this._offset++]=(4278190080&e)>>>24,e<<=8},u.prototype.writeNull=function(){this.writeByte(a.Null),this.writeByte(0)},u.prototype.writeEnumeration=function(e,t){if("number"!=typeof e)throw new TypeError("argument must be a Number");return"number"!=typeof t&&(t=a.Enumeration),this.writeInt(e,t)},u.prototype.writeBoolean=function(e,t){if("boolean"!=typeof e)throw new TypeError("argument must be a Boolean");"number"!=typeof t&&(t=a.Boolean),this._ensure(3),this._buf[this._offset++]=t,this._buf[this._offset++]=1,this._buf[this._offset++]=e?255:0},u.prototype.writeString=function(e,t){if("string"!=typeof e)throw new TypeError("argument must be a string (was: "+typeof e+")");"number"!=typeof t&&(t=a.OctetString);var r=n.byteLength(e);this.writeByte(t),this.writeLength(r),r&&(this._ensure(r),this._buf.write(e,this._offset),this._offset+=r)},u.prototype.writeBuffer=function(e,t){if("number"!=typeof t)throw new TypeError("tag must be a number");if(!n.isBuffer(e))throw new TypeError("argument must be a buffer");this.writeByte(t),this.writeLength(e.length),this._ensure(e.length),e.copy(this._buf,this._offset,0,e.length),this._offset+=e.length},u.prototype.writeStringArray=function(e){if(!e instanceof Array)throw new TypeError("argument must be an Array[String]");var t=this;e.forEach((function(e){t.writeString(e)}))},u.prototype.writeOID=function(e,t){if("string"!=typeof e)throw new TypeError("argument must be a string");if("number"!=typeof t&&(t=a.OID),!/^([0-9]+\.){3,}[0-9]+$/.test(e))throw new Error("argument is not a valid OID string");var r=e.split("."),i=[];i.push(40*parseInt(r[0],10)+parseInt(r[1],10)),r.slice(2).forEach((function(e){!function(e,t){t<128?e.push(t):t<16384?(e.push(t>>>7|128),e.push(127&t)):t<2097152?(e.push(t>>>14|128),e.push(255&(t>>>7|128)),e.push(127&t)):t<268435456?(e.push(t>>>21|128),e.push(255&(t>>>14|128)),e.push(255&(t>>>7|128)),e.push(127&t)):(e.push(255&(t>>>28|128)),e.push(255&(t>>>21|128)),e.push(255&(t>>>14|128)),e.push(255&(t>>>7|128)),e.push(127&t))}(i,parseInt(e,10))}));var n=this;this._ensure(2+i.length),this.writeByte(t),this.writeLength(i.length),i.forEach((function(e){n.writeByte(e)}))},u.prototype.writeLength=function(e){if("number"!=typeof e)throw new TypeError("argument must be a Number");if(this._ensure(4),e<=127)this._buf[this._offset++]=e;else if(e<=255)this._buf[this._offset++]=129,this._buf[this._offset++]=e;else if(e<=65535)this._buf[this._offset++]=130,this._buf[this._offset++]=e>>8,this._buf[this._offset++]=e;else{if(!(e<=16777215))throw o("Length too long (> 4 bytes)");this._buf[this._offset++]=131,this._buf[this._offset++]=e>>16,this._buf[this._offset++]=e>>8,this._buf[this._offset++]=e}},u.prototype.startSequence=function(e){"number"!=typeof e&&(e=a.Sequence|a.Constructor),this.writeByte(e),this._seq.push(this._offset),this._ensure(3),this._offset+=3},u.prototype.endSequence=function(){var e=this._seq.pop(),t=e+3,r=this._offset-t;if(r<=127)this._shift(t,r,-2),this._buf[e]=r;else if(r<=255)this._shift(t,r,-1),this._buf[e]=129,this._buf[e+1]=r;else if(r<=65535)this._buf[e]=130,this._buf[e+1]=r>>8,this._buf[e+2]=r;else{if(!(r<=16777215))throw o("Sequence too long");this._shift(t,r,1),this._buf[e]=131,this._buf[e+1]=r>>16,this._buf[e+2]=r>>8,this._buf[e+3]=r}},u.prototype._shift=function(e,t,r){i.ok(void 0!==e),i.ok(void 0!==t),i.ok(r),this._buf.copy(this._buf,e+r,e,e+t),this._offset+=r},u.prototype._ensure=function(e){if(i.ok(e),this._size-this._offset{var i=r(20279);e.exports={Ber:i,BerReader:i.Reader,BerWriter:i.Writer}},6144:(e,t,r)=>{var i=r(48764).Buffer,n=r(34155),a=r(69282),o=r(42830).Stream,s=r(89539),u=/^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;function c(e){return e.charAt(0).toUpperCase()+e.slice(1)}function l(e,t,r,i,n){throw new a.AssertionError({message:s.format("%s (%s) is required",e,t),actual:void 0===n?typeof i:n(i),expected:t,operator:r||"===",stackStartFunction:l.caller})}function h(e){return Object.prototype.toString.call(e).slice(8,-1)}function p(){}var d={bool:{check:function(e){return"boolean"==typeof e}},func:{check:function(e){return"function"==typeof e}},string:{check:function(e){return"string"==typeof e}},object:{check:function(e){return"object"==typeof e&&null!==e}},number:{check:function(e){return"number"==typeof e&&!isNaN(e)}},finite:{check:function(e){return"number"==typeof e&&!isNaN(e)&&isFinite(e)}},buffer:{check:function(e){return i.isBuffer(e)},operator:"Buffer.isBuffer"},array:{check:function(e){return Array.isArray(e)},operator:"Array.isArray"},stream:{check:function(e){return e instanceof o},operator:"instanceof",actual:h},date:{check:function(e){return e instanceof Date},operator:"instanceof",actual:h},regexp:{check:function(e){return e instanceof RegExp},operator:"instanceof",actual:h},uuid:{check:function(e){return"string"==typeof e&&u.test(e)},operator:"isUUID"}};e.exports=function e(t){var r,i=Object.keys(d);return r=n.env.NODE_NDEBUG?p:function(e,t){e||l(t,"true",e)},i.forEach((function(e){if(t)r[e]=p;else{var i=d[e];r[e]=function(t,r){i.check(t)||l(r,e,i.operator,t,i.actual)}}})),i.forEach((function(e){var i="optional"+c(e);if(t)r[i]=p;else{var n=d[e];r[i]=function(t,r){null!=t&&(n.check(t)||l(r,e,n.operator,t,n.actual))}}})),i.forEach((function(e){var i="arrayOf"+c(e);if(t)r[i]=p;else{var n=d[e],a="["+e+"]";r[i]=function(e,t){var r;for(Array.isArray(e)||l(t,a,n.operator,e,n.actual),r=0;r{"use strict";var i=r(34155);function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}var a,o,s=r(62136).codes,u=s.ERR_AMBIGUOUS_ARGUMENT,c=s.ERR_INVALID_ARG_TYPE,l=s.ERR_INVALID_ARG_VALUE,h=s.ERR_INVALID_RETURN_VALUE,p=s.ERR_MISSING_ARGS,d=r(25961),f=r(89539).inspect,m=r(89539).types,g=m.isPromise,v=m.isRegExp,y=Object.assign?Object.assign:r(8091).assign,_=Object.is?Object.is:r(20609);function b(){var e=r(19158);a=e.isDeepEqual,o=e.isDeepStrictEqual}new Map;var w=!1,E=e.exports=j,k={};function S(e){if(e.message instanceof Error)throw e.message;throw new d(e)}function x(e,t,r,i){if(!r){var n=!1;if(0===t)n=!0,i="No value argument passed to `assert.ok()`";else if(i instanceof Error)throw i;var a=new d({actual:r,expected:!0,message:i,operator:"==",stackStartFn:e});throw a.generatedMessage=n,a}}function j(){for(var e=arguments.length,t=new Array(e),r=0;r1?r-1:0),n=1;n1?r-1:0),n=1;n1?r-1:0),n=1;n1?r-1:0),n=1;n{"use strict";var i=r(34155);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){for(var r=0;re.length)&&(r=e.length),e.substring(r-t.length,r)===t}var v="",y="",_="",b="",w={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"};function E(e){var t=Object.keys(e),r=Object.create(Object.getPrototypeOf(e));return t.forEach((function(t){r[t]=e[t]})),Object.defineProperty(r,"message",{value:e.message}),r}function k(e){return f(e,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}var S=function(e){function t(e){var r;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),"object"!==d(e)||null===e)throw new m("options","Object",e);var n=e.message,a=e.operator,u=e.stackStartFn,c=e.actual,l=e.expected,h=Error.stackTraceLimit;if(Error.stackTraceLimit=0,null!=n)r=o(this,p(t).call(this,String(n)));else if(i.stderr&&i.stderr.isTTY&&(i.stderr&&i.stderr.getColorDepth&&1!==i.stderr.getColorDepth()?(v="",y="",b="",_=""):(v="",y="",b="",_="")),"object"===d(c)&&null!==c&&"object"===d(l)&&null!==l&&"stack"in c&&c instanceof Error&&"stack"in l&&l instanceof Error&&(c=E(c),l=E(l)),"deepStrictEqual"===a||"strictEqual"===a)r=o(this,p(t).call(this,function(e,t,r){var n="",a="",o=0,s="",u=!1,c=k(e),l=c.split("\n"),h=k(t).split("\n"),p=0,f="";if("strictEqual"===r&&"object"===d(e)&&"object"===d(t)&&null!==e&&null!==t&&(r="strictEqualObject"),1===l.length&&1===h.length&&l[0]!==h[0]){var m=l[0].length+h[0].length;if(m<=10){if(!("object"===d(e)&&null!==e||"object"===d(t)&&null!==t||0===e&&0===t))return"".concat(w[r],"\n\n")+"".concat(l[0]," !== ").concat(h[0],"\n")}else if("strictEqualObject"!==r&&m<(i.stderr&&i.stderr.isTTY?i.stderr.columns:80)){for(;l[0][p]===h[0][p];)p++;p>2&&(f="\n ".concat(function(e,t){if(t=Math.floor(t),0==e.length||0==t)return"";var r=e.length*t;for(t=Math.floor(Math.log(t)/Math.log(2));t;)e+=e,t--;return e+e.substring(0,r-e.length)}(" ",p),"^"),p=0)}}for(var E=l[l.length-1],S=h[h.length-1];E===S&&(p++<2?s="\n ".concat(E).concat(s):n=E,l.pop(),h.pop(),0!==l.length&&0!==h.length);)E=l[l.length-1],S=h[h.length-1];var x=Math.max(l.length,h.length);if(0===x){var j=c.split("\n");if(j.length>30)for(j[26]="".concat(v,"...").concat(b);j.length>27;)j.pop();return"".concat(w.notIdentical,"\n\n").concat(j.join("\n"),"\n")}p>3&&(s="\n".concat(v,"...").concat(b).concat(s),u=!0),""!==n&&(s="\n ".concat(n).concat(s),n="");var N=0,M=w[r]+"\n".concat(y,"+ actual").concat(b," ").concat(_,"- expected").concat(b),I=" ".concat(v,"...").concat(b," Lines skipped");for(p=0;p1&&p>2&&(A>4?(a+="\n".concat(v,"...").concat(b),u=!0):A>3&&(a+="\n ".concat(h[p-2]),N++),a+="\n ".concat(h[p-1]),N++),o=p,n+="\n".concat(_,"-").concat(b," ").concat(h[p]),N++;else if(h.length1&&p>2&&(A>4?(a+="\n".concat(v,"...").concat(b),u=!0):A>3&&(a+="\n ".concat(l[p-2]),N++),a+="\n ".concat(l[p-1]),N++),o=p,a+="\n".concat(y,"+").concat(b," ").concat(l[p]),N++;else{var T=h[p],R=l[p],P=R!==T&&(!g(R,",")||R.slice(0,-1)!==T);P&&g(T,",")&&T.slice(0,-1)===R&&(P=!1,R+=","),P?(A>1&&p>2&&(A>4?(a+="\n".concat(v,"...").concat(b),u=!0):A>3&&(a+="\n ".concat(l[p-2]),N++),a+="\n ".concat(l[p-1]),N++),o=p,a+="\n".concat(y,"+").concat(b," ").concat(R),n+="\n".concat(_,"-").concat(b," ").concat(T),N+=2):(a+=n,n="",1!==A&&0!==p||(a+="\n ".concat(R),N++))}if(N>20&&p30)for(S[26]="".concat(v,"...").concat(b);S.length>27;)S.pop();r=1===S.length?o(this,p(t).call(this,"".concat(f," ").concat(S[0]))):o(this,p(t).call(this,"".concat(f,"\n\n").concat(S.join("\n"),"\n")))}else{var x=k(c),j="",N=w[a];"notDeepEqual"===a||"notEqual"===a?(x="".concat(w[a],"\n\n").concat(x)).length>1024&&(x="".concat(x.slice(0,1021),"...")):(j="".concat(k(l)),x.length>512&&(x="".concat(x.slice(0,509),"...")),j.length>512&&(j="".concat(j.slice(0,509),"...")),"deepEqual"===a||"equal"===a?x="".concat(N,"\n\n").concat(x,"\n\nshould equal\n\n"):j=" ".concat(a," ").concat(j)),r=o(this,p(t).call(this,"".concat(x).concat(j)))}return Error.stackTraceLimit=h,r.generatedMessage=!n,Object.defineProperty(s(r),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),r.code="ERR_ASSERTION",r.actual=c,r.expected=l,r.operator=a,Error.captureStackTrace&&Error.captureStackTrace(s(r),u),r.stack,r.name="AssertionError",o(r)}var r,u;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&h(e,t)}(t,e),r=t,u=[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:f.custom,value:function(e,t){return f(this,function(e){for(var t=1;t{"use strict";function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function n(e){return n=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},n(e)}function a(e,t){return a=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},a(e,t)}var o,s,u={};function c(e,t,r){r||(r=Error);var o=function(r){function o(r,a,s){var u;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,o),u=function(e,t){return!t||"object"!==i(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}(this,n(o).call(this,function(e,r,i){return"string"==typeof t?t:t(e,r,i)}(r,a,s))),u.code=e,u}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&a(e,t)}(o,r),o}(r);u[e]=o}function l(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map((function(e){return String(e)})),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:2===r?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}return"of ".concat(t," ").concat(String(e))}c("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError),c("ERR_INVALID_ARG_TYPE",(function(e,t,n){var a,s,u,c,h;if(void 0===o&&(o=r(69282)),o("string"==typeof e,"'name' must be a string"),"string"==typeof t&&(s="not ",t.substr(0,s.length)===s)?(a="must not be",t=t.replace(/^not /,"")):a="must be",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e," argument"))u="The ".concat(e," ").concat(a," ").concat(l(t,"type"));else{var p=("number"!=typeof h&&(h=0),h+".".length>(c=e).length||-1===c.indexOf(".",h)?"argument":"property");u='The "'.concat(e,'" ').concat(p," ").concat(a," ").concat(l(t,"type"))}return u+". Received type ".concat(i(n))}),TypeError),c("ERR_INVALID_ARG_VALUE",(function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"is invalid";void 0===s&&(s=r(89539));var n=s.inspect(t);return n.length>128&&(n="".concat(n.slice(0,128),"...")),"The argument '".concat(e,"' ").concat(i,". Received ").concat(n)}),TypeError,RangeError),c("ERR_INVALID_RETURN_VALUE",(function(e,t,r){var n;return n=r&&r.constructor&&r.constructor.name?"instance of ".concat(r.constructor.name):"type ".concat(i(r)),"Expected ".concat(e,' to be returned from the "').concat(t,'"')+" function but got ".concat(n,".")}),TypeError),c("ERR_MISSING_ARGS",(function(){for(var e=arguments.length,t=new Array(e),i=0;i0,"At least one arg needs to be specified");var n="The ",a=t.length;switch(t=t.map((function(e){return'"'.concat(e,'"')})),a){case 1:n+="".concat(t[0]," argument");break;case 2:n+="".concat(t[0]," and ").concat(t[1]," arguments");break;default:n+=t.slice(0,a-1).join(", "),n+=", and ".concat(t[a-1]," arguments")}return"".concat(n," must be specified")}),TypeError),e.exports.codes=u},19158:(e,t,r)=>{"use strict";function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=[],i=!0,n=!1,a=void 0;try{for(var o,s=e[Symbol.iterator]();!(i=(o=s.next()).done)&&(r.push(o.value),!t||r.length!==t);i=!0);}catch(e){n=!0,a=e}finally{try{i||null==s.return||s.return()}finally{if(n)throw a}}return r}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}var a=void 0!==/a/g.flags,o=function(e){var t=[];return e.forEach((function(e){return t.push(e)})),t},s=function(e){var t=[];return e.forEach((function(e,r){return t.push([r,e])})),t},u=Object.is?Object.is:r(20609),c=Object.getOwnPropertySymbols?Object.getOwnPropertySymbols:function(){return[]},l=Number.isNaN?Number.isNaN:r(20360);function h(e){return e.call.bind(e)}var p=h(Object.prototype.hasOwnProperty),d=h(Object.prototype.propertyIsEnumerable),f=h(Object.prototype.toString),m=r(89539).types,g=m.isAnyArrayBuffer,v=m.isArrayBufferView,y=m.isDate,_=m.isMap,b=m.isRegExp,w=m.isSet,E=m.isNativeError,k=m.isBoxedPrimitive,S=m.isNumberObject,x=m.isStringObject,j=m.isBooleanObject,N=m.isBigIntObject,M=m.isSymbolObject,I=m.isFloat32Array,A=m.isFloat64Array;function T(e){if(0===e.length||e.length>10)return!0;for(var t=0;t57)return!0}return 10===e.length&&e>=Math.pow(2,32)}function R(e){return Object.keys(e).filter(T).concat(c(e).filter(Object.prototype.propertyIsEnumerable.bind(e)))}function P(e,t){if(e===t)return 0;for(var r=e.length,i=t.length,n=0,a=Math.min(r,i);n-1&&e%1==0&&e<=9007199254740991}function R(e){return null!=e&&T(e.length)&&!function(e){if(!s(e))return!1;var t=A(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}(e)}var P={};function O(){}function B(e){return function(){if(null!==e){var t=e;e=null,t.apply(this,arguments)}}}var C="function"==typeof Symbol&&Symbol.iterator;function z(e){return null!=e&&"object"==typeof e}function F(e){return z(e)&&"[object Arguments]"==A(e)}var D=Object.prototype,q=D.hasOwnProperty,L=D.propertyIsEnumerable,U=F(function(){return arguments}())?F:function(e){return z(e)&&q.call(e,"callee")&&!L.call(e,"callee")},H=Array.isArray;var K="object"==typeof t&&t&&!t.nodeType&&t,W=K&&e&&!e.nodeType&&e,Z=W&&W.exports===K?E.Buffer:void 0,J=(Z?Z.isBuffer:void 0)||function(){return!1},V=/^(?:0|[1-9]\d*)$/;function $(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&V.test(e))&&e>-1&&e%1==0&&e2&&(i=n(arguments,1)),t){var c={};Ae(a,(function(e,t){c[t]=e})),c[e]=i,s=!0,u=Object.create(null),r(t,c)}else a[e]=i,f(e)}));o++;var c=y(t[t.length-1]);t.length>1?c(a,i):c(i)}}(e,t)}))}function d(){if(0===c.length&&0===o)return r(null,a);for(;c.length&&o=0&&r.push(i)})),r}Ae(e,(function(t,r){if(!H(t))return p(r,[t]),void l.push(r);var i=t.slice(0,t.length-1),n=i.length;if(0===n)return p(r,t),void l.push(r);h[r]=n,Ne(i,(function(a){if(!e[a])throw new Error("async.auto task `"+r+"` has a non-existent dependency `"+a+"` in "+i.join(", "));var o,s,c;s=function(){0==--n&&p(r,t)},(c=u[o=a])||(c=u[o]=[]),c.push(s)}))})),function(){for(var e=0;l.length;)e++,Ne(m(l.pop()),(function(e){0==--h[e]&&l.push(e)}));if(e!==i)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}(),d()};function Oe(e,t){for(var r=-1,i=null==e?0:e.length,n=Array(i);++r=i?e:function(e,t,r){var i=-1,n=e.length;t<0&&(t=-t>n?0:n+t),(r=r>n?n:r)<0&&(r+=n),n=t>r?0:r-t>>>0,t>>>=0;for(var a=Array(n);++i-1;);return r}(n,a),function(e,t){for(var r=e.length;r--&&Re(t,e[r],0)>-1;);return r}(n,a)+1).join("")}var et=/^(?:async\s+)?(function)?\s*[^\(]*\(\s*([^\)]*)\)/m,tt=/,/,rt=/(=.+)?(\s*)$/,it=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;function nt(e,t){var r={};Ae(e,(function(e,t){var i,n=v(e),a=!n&&1===e.length||n&&0===e.length;if(H(e))i=e.slice(0,-1),e=e[e.length-1],r[t]=i.concat(i.length>0?o:e);else if(a)r[t]=e;else{if(i=function(e){return(e=(e=(e=e.toString().replace(it,"")).match(et)[2].replace(" ",""))?e.split(tt):[]).map((function(e){return Ye(e.replace(rt,""))}))}(e),0===e.length&&!n&&0===i.length)throw new Error("autoInject task functions require explicit parameters.");n||i.pop(),r[t]=i.concat(o)}function o(t,r){var n=Oe(i,(function(e){return t[e]}));n.push(r),y(e).apply(null,n)}})),Pe(r,t)}function at(){this.head=this.tail=null,this.length=0}function ot(e,t){e.length=1,e.head=e.tail=t}function st(e,t,r){if(null==t)t=1;else if(0===t)throw new Error("Concurrency must not be zero");var i=y(e),n=0,a=[],o=!1;function s(e,t,r){if(null!=r&&"function"!=typeof r)throw new Error("task callback must be a function");if(l.started=!0,H(e)||(e=[e]),0===e.length&&l.idle())return p((function(){l.drain()}));for(var i=0,n=e.length;i0&&a.splice(s,1),o.callback.apply(o,arguments),null!=t&&l.error(t,o.data)}n<=l.concurrency-l.buffer&&l.unsaturated(),l.idle()&&l.drain(),l.process()}}var c=!1,l={_tasks:new at,concurrency:t,payload:r,saturated:O,unsaturated:O,buffer:t/4,empty:O,drain:O,error:O,started:!1,paused:!1,push:function(e,t){s(e,!1,t)},kill:function(){l.drain=O,l._tasks.empty()},unshift:function(e,t){s(e,!0,t)},remove:function(e){l._tasks.remove(e)},process:function(){if(!c){for(c=!0;!l.paused&&n2&&(a=n(arguments,1)),i[t]=a,r(e)}))}),(function(e){r(e,i)}))}function nr(e,t){ir(ye,e,t)}function ar(e,t,r){ir(de(t),e,r)}var or=function(e,t){var r=y(e);return st((function(e,t){r(e[0],t)}),t,1)},sr=function(e,t){var r=or(e,t);return r.push=function(e,t,i){if(null==i&&(i=O),"function"!=typeof i)throw new Error("task callback must be a function");if(r.started=!0,H(e)||(e=[e]),0===e.length)return p((function(){r.drain()}));t=t||0;for(var n=r._tasks.head;n&&t>=n.priority;)n=n.next;for(var a=0,o=e.length;ai?1:0}we(e,(function(e,t){i(e,(function(r,i){if(r)return t(r);t(null,{value:e,criteria:i})}))}),(function(e,t){if(e)return r(e);r(null,Oe(t.sort(n),Dt("value")))}))}function Sr(e,t,r){var i=y(e);return o((function(n,a){var o,s=!1;n.push((function(){s||(a.apply(null,arguments),clearTimeout(o))})),o=setTimeout((function(){var t=e.name||"anonymous",i=new Error('Callback function "'+t+'" timed out.');i.code="ETIMEDOUT",r&&(i.info=r),s=!0,a(i)}),t),i.apply(null,n)}))}var xr=Math.ceil,jr=Math.max;function Nr(e,t,r,i){var n=y(r);Se(function(e,t,r,i){for(var n=-1,a=jr(xr((t-e)/(r||1)),0),o=Array(a);a--;)o[i?a:++n]=e,e+=r;return o}(0,e,1),t,n,i)}var Mr=me(Nr,1/0),Ir=me(Nr,1);function Ar(e,t,r,i){arguments.length<=3&&(i=r,r=t,t=H(e)?[]:{}),i=B(i||O);var n=y(r);ye(e,(function(e,r,i){n(t,e,r,i)}),(function(e){i(e,t)}))}function Tr(e,t){var r,i=null;t=t||O,Pt(e,(function(e,t){y(e)((function(e,a){r=arguments.length>2?n(arguments,1):a,i=e,t(!e)}))}),(function(){t(i,r)}))}function Rr(e){return function(){return(e.unmemoized||e).apply(null,arguments)}}function Pr(e,t,r){r=pe(r||O);var i=y(t);if(!e())return r(null);var a=function(t){if(t)return r(t);if(e())return i(a);var o=n(arguments,1);r.apply(null,[null].concat(o))};i(a)}function Or(e,t,r){Pr((function(){return!e.apply(this,arguments)}),t,r)}var Br=function(e,t){if(t=B(t||O),!H(e))return t(new Error("First argument to waterfall must be an array of functions"));if(!e.length)return t();var r=0;function i(t){var i=y(e[r++]);t.push(pe(a)),i.apply(null,t)}function a(a){if(a||r===e.length)return t.apply(null,arguments);i(n(arguments,1))}i([])},Cr={apply:a,applyEach:Ee,applyEachSeries:je,asyncify:d,auto:Pe,autoInject:nt,cargo:ut,compose:pt,concat:mt,concatLimit:ft,concatSeries:gt,constant:vt,detect:wt,detectLimit:Et,detectSeries:kt,dir:xt,doDuring:jt,doUntil:Mt,doWhilst:Nt,during:It,each:Tt,eachLimit:Rt,eachOf:ye,eachOfLimit:fe,eachOfSeries:ct,eachSeries:Pt,ensureAsync:Ot,every:Ct,everyLimit:zt,everySeries:Ft,filter:Ht,filterLimit:Kt,filterSeries:Wt,forever:Zt,groupBy:Vt,groupByLimit:Jt,groupBySeries:$t,log:Gt,map:we,mapLimit:Se,mapSeries:xe,mapValues:Xt,mapValuesLimit:Qt,mapValuesSeries:Yt,memoize:tr,nextTick:rr,parallel:nr,parallelLimit:ar,priorityQueue:sr,queue:or,race:ur,reduce:lt,reduceRight:cr,reflect:lr,reflectAll:hr,reject:dr,rejectLimit:fr,rejectSeries:mr,retry:vr,retryable:yr,seq:ht,series:_r,setImmediate:p,some:br,someLimit:wr,someSeries:Er,sortBy:kr,timeout:Sr,times:Mr,timesLimit:Nr,timesSeries:Ir,transform:Ar,tryEach:Tr,unmemoize:Rr,until:Or,waterfall:Br,whilst:Pr,all:Ct,allLimit:zt,allSeries:Ft,any:br,anyLimit:wr,anySeries:Er,find:wt,findLimit:Et,findSeries:kt,forEach:Tt,forEachSeries:Pt,forEachLimit:Rt,forEachOf:ye,forEachOfSeries:ct,forEachOfLimit:fe,inject:lt,foldl:lt,foldr:cr,select:Ht,selectLimit:Kt,selectSeries:Wt,wrapSync:d};t.default=Cr,t.apply=a,t.applyEach=Ee,t.applyEachSeries=je,t.asyncify=d,t.auto=Pe,t.autoInject=nt,t.cargo=ut,t.compose=pt,t.concat=mt,t.concatLimit=ft,t.concatSeries=gt,t.constant=vt,t.detect=wt,t.detectLimit=Et,t.detectSeries=kt,t.dir=xt,t.doDuring=jt,t.doUntil=Mt,t.doWhilst=Nt,t.during=It,t.each=Tt,t.eachLimit=Rt,t.eachOf=ye,t.eachOfLimit=fe,t.eachOfSeries=ct,t.eachSeries=Pt,t.ensureAsync=Ot,t.every=Ct,t.everyLimit=zt,t.everySeries=Ft,t.filter=Ht,t.filterLimit=Kt,t.filterSeries=Wt,t.forever=Zt,t.groupBy=Vt,t.groupByLimit=Jt,t.groupBySeries=$t,t.log=Gt,t.map=we,t.mapLimit=Se,t.mapSeries=xe,t.mapValues=Xt,t.mapValuesLimit=Qt,t.mapValuesSeries=Yt,t.memoize=tr,t.nextTick=rr,t.parallel=nr,t.parallelLimit=ar,t.priorityQueue=sr,t.queue=or,t.race=ur,t.reduce=lt,t.reduceRight=cr,t.reflect=lr,t.reflectAll=hr,t.reject=dr,t.rejectLimit=fr,t.rejectSeries=mr,t.retry=vr,t.retryable=yr,t.seq=ht,t.series=_r,t.setImmediate=p,t.some=br,t.someLimit=wr,t.someSeries=Er,t.sortBy=kr,t.timeout=Sr,t.times=Mr,t.timesLimit=Nr,t.timesSeries=Ir,t.transform=Ar,t.tryEach=Tr,t.unmemoize=Rr,t.until=Or,t.waterfall=Br,t.whilst=Pr,t.all=Ct,t.allLimit=zt,t.allSeries=Ft,t.any=br,t.anyLimit=wr,t.anySeries=Er,t.find=wt,t.findLimit=Et,t.findSeries=kt,t.forEach=Tt,t.forEachSeries=Pt,t.forEachLimit=Rt,t.forEachOf=ye,t.forEachOfSeries=ct,t.forEachOfLimit=fe,t.inject=lt,t.foldl=lt,t.foldr=cr,t.select=Ht,t.selectLimit=Kt,t.selectSeries=Wt,t.wrapSync=d,Object.defineProperty(t,"__esModule",{value:!0})}(t)},17555:(e,t,r)=>{var i=r(55835),n=r(8575).parse,a=["acl","location","logging","notification","partNumber","policy","requestPayment","torrent","uploadId","uploads","versionId","versioning","versions","website"];function o(e){return"AWS "+e.key+":"+u(e)}function s(e){return i.createHmac("sha1",e.secret).update(e.message).digest("base64")}function u(e){return e.message=c(e),s(e)}function c(e){var t=e.amazonHeaders||"";return t&&(t+="\n"),[e.verb,e.md5,e.contentType,e.date?e.date.toUTCString():"",t+e.resource].join("\n")}function l(e){return"GET\n\n\n"+e.date+"\n"+e.resource}e.exports=o,e.exports.authorization=o,e.exports.hmacSha1=s,e.exports.sign=u,e.exports.signQuery=function(e){return e.message=l(e),s(e)},e.exports.stringToSign=c,e.exports.queryStringToSign=l,e.exports.canonicalizeHeaders=function(e){for(var t=[],r=Object.keys(e),i=0,n=r.length;i{var i=r(48764).Buffer,n=t,a=r(8575),o=r(17673),s=r(55835),u=r(59864)(1e3);function c(e,t,r){return s.createHmac("sha256",e).update(t,"utf8").digest(r)}function l(e,t){return s.createHash("sha256").update(e,"utf8").digest(t)}function h(e){return e.replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function p(e){return h(encodeURIComponent(e))}var d={authorization:!0,connection:!0,"x-amzn-trace-id":!0,"user-agent":!0,expect:!0,"presigned-expires":!0,range:!0};function f(e,t){"string"==typeof e&&(e=a.parse(e));var r=e.headers=e.headers||{},i=(!this.service||!this.region)&&this.matchHost(e.hostname||e.host||r.Host||r.host);this.request=e,this.credentials=t||this.defaultCredentials(),this.service=e.service||i[0]||"",this.region=e.region||i[1]||"us-east-1","email"===this.service&&(this.service="ses"),!e.method&&e.body&&(e.method="POST"),r.Host||r.host||(r.Host=e.hostname||e.host||this.createHost(),e.port&&(r.Host+=":"+e.port)),e.hostname||e.host||(e.hostname=r.Host||r.host),this.isCodeCommitGit="codecommit"===this.service&&"GIT"===e.method,this.extraHeadersToIgnore=e.extraHeadersToIgnore||Object.create(null),this.extraHeadersToInclude=e.extraHeadersToInclude||Object.create(null)}f.prototype.matchHost=function(e){var t=((e||"").match(/([^\.]+)\.(?:([^\.]*)\.)?amazonaws\.com(\.cn)?$/)||[]).slice(1,3);if("es"!==t[1]&&"aoss"!==t[1]||(t=t.reverse()),"s3"==t[1])t[0]="s3",t[1]="us-east-1";else for(var r=0;r<2;r++)if(/^s3-/.test(t[r])){t[1]=t[r].slice(3),t[0]="s3";break}return t},f.prototype.isSingleRegion=function(){return["s3","sdb"].indexOf(this.service)>=0&&"us-east-1"===this.region||["cloudfront","ls","route53","iam","importexport","sts"].indexOf(this.service)>=0},f.prototype.createHost=function(){var e=this.isSingleRegion()?"":"."+this.region;return("ses"===this.service?"email":this.service)+e+".amazonaws.com"},f.prototype.prepareRequest=function(){this.parsePath();var e,t=this.request,r=t.headers;t.signQuery?(this.parsedPath.query=e=this.parsedPath.query||{},this.credentials.sessionToken&&(e["X-Amz-Security-Token"]=this.credentials.sessionToken),"s3"!==this.service||e["X-Amz-Expires"]||(e["X-Amz-Expires"]=86400),e["X-Amz-Date"]?this.datetime=e["X-Amz-Date"]:e["X-Amz-Date"]=this.getDateTime(),e["X-Amz-Algorithm"]="AWS4-HMAC-SHA256",e["X-Amz-Credential"]=this.credentials.accessKeyId+"/"+this.credentialString(),e["X-Amz-SignedHeaders"]=this.signedHeaders()):(t.doNotModifyHeaders||this.isCodeCommitGit||(!t.body||r["Content-Type"]||r["content-type"]||(r["Content-Type"]="application/x-www-form-urlencoded; charset=utf-8"),!t.body||r["Content-Length"]||r["content-length"]||(r["Content-Length"]=i.byteLength(t.body)),!this.credentials.sessionToken||r["X-Amz-Security-Token"]||r["x-amz-security-token"]||(r["X-Amz-Security-Token"]=this.credentials.sessionToken),"s3"!==this.service||r["X-Amz-Content-Sha256"]||r["x-amz-content-sha256"]||(r["X-Amz-Content-Sha256"]=l(this.request.body||"","hex")),r["X-Amz-Date"]||r["x-amz-date"]?this.datetime=r["X-Amz-Date"]||r["x-amz-date"]:r["X-Amz-Date"]=this.getDateTime()),delete r.Authorization,delete r.authorization)},f.prototype.sign=function(){return this.parsedPath||this.prepareRequest(),this.request.signQuery?this.parsedPath.query["X-Amz-Signature"]=this.signature():this.request.headers.Authorization=this.authHeader(),this.request.path=this.formatPath(),this.request},f.prototype.getDateTime=function(){if(!this.datetime){var e=this.request.headers,t=new Date(e.Date||e.date||new Date);this.datetime=t.toISOString().replace(/[:\-]|\.\d{3}/g,""),this.isCodeCommitGit&&(this.datetime=this.datetime.slice(0,-1))}return this.datetime},f.prototype.getDate=function(){return this.getDateTime().substr(0,8)},f.prototype.authHeader=function(){return["AWS4-HMAC-SHA256 Credential="+this.credentials.accessKeyId+"/"+this.credentialString(),"SignedHeaders="+this.signedHeaders(),"Signature="+this.signature()].join(", ")},f.prototype.signature=function(){var e,t,r,i=this.getDate(),n=[this.credentials.secretAccessKey,i,this.region,this.service].join(),a=u.get(n);return a||(e=c("AWS4"+this.credentials.secretAccessKey,i),t=c(e,this.region),r=c(t,this.service),a=c(r,"aws4_request"),u.set(n,a)),c(a,this.stringToSign(),"hex")},f.prototype.stringToSign=function(){return["AWS4-HMAC-SHA256",this.getDateTime(),this.credentialString(),l(this.canonicalString(),"hex")].join("\n")},f.prototype.canonicalString=function(){this.parsedPath||this.prepareRequest();var e,t=this.parsedPath.path,r=this.parsedPath.query,i=this.request.headers,n="",a="s3"!==this.service,o="s3"===this.service||this.request.doNotEncodePath,s="s3"===this.service,u="s3"===this.service;if(e="s3"===this.service&&this.request.signQuery?"UNSIGNED-PAYLOAD":this.isCodeCommitGit?"":i["X-Amz-Content-Sha256"]||i["x-amz-content-sha256"]||l(this.request.body||"","hex"),r){var c=Object.keys(r).reduce((function(e,t){return t?(e[p(t)]=Array.isArray(r[t])&&u?r[t][0]:r[t],e):e}),{}),h=[];Object.keys(c).sort().forEach((function(e){Array.isArray(c[e])?c[e].map(p).sort().forEach((function(t){h.push(e+"="+t)})):h.push(e+"="+p(c[e]))})),n=h.join("&")}return"/"!==t&&(a&&(t=t.replace(/\/{2,}/g,"/")),"/"!==(t=t.split("/").reduce((function(e,t){return a&&".."===t?e.pop():a&&"."===t||(o&&(t=decodeURIComponent(t.replace(/\+/g," "))),e.push(p(t))),e}),[]).join("/"))[0]&&(t="/"+t),s&&(t=t.replace(/%2F/g,"/"))),[this.request.method||"GET",t,n,this.canonicalHeaders()+"\n",this.signedHeaders(),e].join("\n")},f.prototype.canonicalHeaders=function(){var e=this.request.headers;return Object.keys(e).filter((function(e){return null==d[e.toLowerCase()]})).sort((function(e,t){return e.toLowerCase()=0&&(r=o.parse(e.slice(t+1)),e=e.slice(0,t)),this.parsedPath={path:e,query:r}},f.prototype.formatPath=function(){var e=this.parsedPath.path,t=this.parsedPath.query;return t?(null!=t[""]&&delete t[""],e+"?"+h(o.stringify(t))):e},n.RequestSigner=f,n.sign=function(e,t){return new f(e,t).sign()}},59864:e=>{function t(e){this.capacity=0|e,this.map=Object.create(null),this.list=new r}function r(){this.firstNode=null,this.lastNode=null}function i(e,t){this.key=e,this.val=t,this.prev=null,this.next=null}e.exports=function(e){return new t(e)},t.prototype.get=function(e){var t=this.map[e];if(null!=t)return this.used(t),t.val},t.prototype.set=function(e,t){var r=this.map[e];if(null!=r)r.val=t;else{if(this.capacity||this.prune(),!this.capacity)return!1;r=new i(e,t),this.map[e]=r,this.capacity--}return this.used(r),!0},t.prototype.used=function(e){this.list.moveToFront(e)},t.prototype.prune=function(){var e=this.list.pop();null!=e&&(delete this.map[e.key],this.capacity++)},r.prototype.moveToFront=function(e){this.firstNode!=e&&(this.remove(e),null==this.firstNode?(this.firstNode=e,this.lastNode=e,e.prev=null,e.next=null):(e.prev=null,e.next=this.firstNode,e.next.prev=e,this.firstNode=e))},r.prototype.pop=function(){var e=this.lastNode;return null!=e&&this.remove(e),e},r.prototype.remove=function(e){this.firstNode==e?this.firstNode=e.next:null!=e.prev&&(e.prev.next=e.next),this.lastNode==e?this.lastNode=e.prev:null!=e.next&&(e.next.prev=e.prev)}},9478:(e,t,r)=>{var i,n=r(34155),a=r(48764).Buffer,o=(i=(i="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0)||"/index.js",function(e){var t,o,s=void 0!==(e=e||{})?e:{};s.ready=new Promise((function(e,r){t=e,o=r}));var u,c,l,h,p,d,f=Object.assign({},s),m=[],g="./this.program",v=(e,t)=>{throw t},y="object"==typeof window,_="function"==typeof importScripts,b="object"==typeof n&&"object"==typeof n.versions&&"string"==typeof n.versions.node,w="";b?(w=_?r(26470).dirname(w)+"/":"//",d=()=>{p||(h=r(76614),p=r(26470))},u=function(e,t){return d(),e=p.normalize(e),h.readFileSync(e,t?void 0:"utf8")},l=e=>{var t=u(e,!0);return t.buffer||(t=new Uint8Array(t)),t},c=(e,t,r)=>{d(),e=p.normalize(e),h.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},n.argv.length>1&&(g=n.argv[1].replace(/\\/g,"/")),m=n.argv.slice(2),n.on("unhandledRejection",(function(e){throw e})),v=(e,t)=>{if(le())throw n.exitCode=e,t;var r;(r=t)instanceof Er||k("exiting due to exception: "+r),n.exit(e)},s.inspect=function(){return"[Emscripten Module object]"}):(y||_)&&(_?w=self.location.href:"undefined"!=typeof document&&document.currentScript&&(w=document.currentScript.src),i&&(w=i),w=0!==w.indexOf("blob:")?w.substr(0,w.replace(/[?#].*/,"").lastIndexOf("/")+1):"",u=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},_&&(l=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),c=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var E=s.print||console.log.bind(console),k=s.printErr||console.warn.bind(console);function S(e){return e<128?[e]:[e%128|128,e>>7]}Object.assign(s,f),f=null,s.arguments&&(m=s.arguments),s.thisProgram&&(g=s.thisProgram),s.quit&&(v=s.quit);var x,j,N=[],M=0,I=e=>{M=e},A=()=>M;s.wasmBinary&&(j=s.wasmBinary);var T,R=s.noExitRuntime||!0;"object"!=typeof WebAssembly&&_e("no native wasm support detected");var P,O=!1;function B(e,t){e||_e(t)}var C="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function z(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&C)return C.decode(e.subarray(t,n));for(var a="";t>10,56320|1023&c)}}else a+=String.fromCharCode((31&o)<<6|s)}else a+=String.fromCharCode(o)}return a}function F(e,t){return e?z(K,e,t):""}function D(e,t,r,i){if(!(i>0))return 0;for(var n=r,a=r+i-1,o=0;o=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++o)),s<=127){if(r>=a)break;t[r++]=s}else if(s<=2047){if(r+1>=a)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=a)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=a)break;t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-n}function q(e,t,r){return D(e,K,t,r)}function L(e){for(var t=0,r=0;r=55296&&i<=57343&&(i=65536+((1023&i)<<10)|1023&e.charCodeAt(++r)),i<=127?++t:t+=i<=2047?2:i<=65535?3:4}return t}var U,H,K,W,Z,J,V,$,G,Q="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function X(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&Z[i];)++i;if((r=i<<1)-e>32&&Q)return Q.decode(K.subarray(e,r));for(var a="",o=0;!(o>=t/2);++o){var s=W[e+2*o>>1];if(0==s)break;a+=String.fromCharCode(s)}return a}function Y(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,a=0;a>1]=o,t+=2}return W[t>>1]=0,t-i}function ee(e){return 2*e.length}function te(e,t){for(var r=0,i="";!(r>=t/4);){var n=J[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var a=n-65536;i+=String.fromCharCode(55296|a>>10,56320|1023&a)}else i+=String.fromCharCode(n)}return i}function re(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,a=0;a=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a)),J[t>>2]=o,(t+=4)+4>n)break}return J[t>>2]=0,t-i}function ie(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}function ne(e){var t=L(e)+1,r=jt(t);return r&&D(e,H,r,t),r}function ae(e){U=e,s.HEAP8=H=new Int8Array(e),s.HEAP16=W=new Int16Array(e),s.HEAP32=J=new Int32Array(e),s.HEAPU8=K=new Uint8Array(e),s.HEAPU16=Z=new Uint16Array(e),s.HEAPU32=V=new Uint32Array(e),s.HEAPF32=$=new Float32Array(e),s.HEAPF64=G=new Float64Array(e)}s.INITIAL_MEMORY;var oe,se=[],ue=[],ce=[];function le(){return R}var he,pe,de,fe=0,me=null,ge=null;function ve(e){fe++,s.monitorRunDependencies&&s.monitorRunDependencies(fe)}function ye(e){if(fe--,s.monitorRunDependencies&&s.monitorRunDependencies(fe),0==fe&&(null!==me&&(clearInterval(me),me=null),ge)){var t=ge;ge=null,t()}}function _e(e){s.onAbort&&s.onAbort(e),k(e="Aborted("+e+")"),O=!0,P=1,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw o(t),t}function be(e){return e.startsWith("data:application/octet-stream;base64,")}function we(e){return e.startsWith("file://")}function Ee(e){try{if(e==he&&j)return new Uint8Array(j);if(l)return l(e);throw"both async and sync fetching of the wasm failed"}catch(e){_e(e)}}function ke(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var r=t.func;"number"==typeof r?void 0===t.arg?Ft.call(null,r):(i=t.arg,Bt.apply(null,[r,i])):r(void 0===t.arg?null:t.arg)}else t(s)}var i}function Se(e,t){oe.set(e,t)}be(he="monero_wallet_full.wasm")||(he=function(e){return s.locateFile?s.locateFile(e,w):w+e}(he));var xe=[];function je(e){e.add_ref()}var Ne=0;function Me(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){V[this.ptr+4>>2]=e},this.get_type=function(){return V[this.ptr+4>>2]},this.set_destructor=function(e){V[this.ptr+8>>2]=e},this.get_destructor=function(){return V[this.ptr+8>>2]},this.set_refcount=function(e){J[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,H[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=H[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,H[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=H[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=J[this.ptr>>2];J[this.ptr>>2]=e+1},this.release_ref=function(){var e=J[this.ptr>>2];return J[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){V[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return V[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Pt(this.get_type()))return V[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}function Ie(e){return St(new Me(e).ptr)}function Ae(e){if(e.release_ref()&&!e.get_rethrown()){var t=e.get_destructor();t&&(r=e.excPtr,Ot.apply(null,[t,r])),Ie(e.excPtr)}var r}var Te=0;function Re(){var e=xe.pop();e||_e("no exception to throw");var t=e.excPtr;throw e.get_rethrown()||(xe.push(e),e.set_rethrown(!0),e.set_caught(!1),Ne++),Te=t,t}var Pe={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=Pe.isAbs(e),r="/"===e.substr(-1);return(e=Pe.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=Pe.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=Pe.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return Pe.normalize(e.join("/"))},join2:(e,t)=>Pe.normalize(e+"/"+t)},Oe={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:ze.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=Pe.isAbs(i)}return(t?"/":"")+(e=Pe.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=Oe.resolve(e).substr(1),t=Oe.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),a=Math.min(i.length,n.length),o=a,s=0;s0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=wt(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(E(z(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(E(z(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(k(z(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(k(z(e.output,0)),e.output=[])}}};var Ce={ops_table:null,mount:function(e){return Ce.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(ze.isBlkdev(r)||ze.isFIFO(r))throw new ze.ErrnoError(63);Ce.ops_table||(Ce.ops_table={dir:{node:{getattr:Ce.node_ops.getattr,setattr:Ce.node_ops.setattr,lookup:Ce.node_ops.lookup,mknod:Ce.node_ops.mknod,rename:Ce.node_ops.rename,unlink:Ce.node_ops.unlink,rmdir:Ce.node_ops.rmdir,readdir:Ce.node_ops.readdir,symlink:Ce.node_ops.symlink},stream:{llseek:Ce.stream_ops.llseek}},file:{node:{getattr:Ce.node_ops.getattr,setattr:Ce.node_ops.setattr},stream:{llseek:Ce.stream_ops.llseek,read:Ce.stream_ops.read,write:Ce.stream_ops.write,allocate:Ce.stream_ops.allocate,mmap:Ce.stream_ops.mmap,msync:Ce.stream_ops.msync}},link:{node:{getattr:Ce.node_ops.getattr,setattr:Ce.node_ops.setattr,readlink:Ce.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Ce.node_ops.getattr,setattr:Ce.node_ops.setattr},stream:ze.chrdev_stream_ops}});var n=ze.createNode(e,t,r,i);return ze.isDir(n.mode)?(n.node_ops=Ce.ops_table.dir.node,n.stream_ops=Ce.ops_table.dir.stream,n.contents={}):ze.isFile(n.mode)?(n.node_ops=Ce.ops_table.file.node,n.stream_ops=Ce.ops_table.file.stream,n.usedBytes=0,n.contents=null):ze.isLink(n.mode)?(n.node_ops=Ce.ops_table.link.node,n.stream_ops=Ce.ops_table.link.stream):ze.isChrdev(n.mode)&&(n.node_ops=Ce.ops_table.chrdev.node,n.stream_ops=Ce.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=ze.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,ze.isDir(e.mode)?t.size=4096:ze.isFile(e.mode)?t.size=e.usedBytes:ze.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&Ce.resizeFileStorage(e,t.size)},lookup:function(e,t){throw ze.genericErrors[44]},mknod:function(e,t,r,i){return Ce.createNode(e,t,r,i)},rename:function(e,t,r){if(ze.isDir(e.mode)){var i;try{i=ze.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new ze.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=ze.lookupNode(e,t);for(var i in r.contents)throw new ze.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=Ce.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!ze.isLink(e.mode))throw new ze.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var a=e.node.contents;if(n>=e.node.usedBytes)return 0;var o=Math.min(e.node.usedBytes-n,i);if(o>8&&a.subarray)t.set(a.subarray(n,n+o),r);else for(var s=0;s0||i+r{if(!(e=Oe.resolve(ze.cwd(),e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new ze.ErrnoError(32);for(var r=Pe.normalizeArray(e.split("/").filter((e=>!!e)),!1),i=ze.root,n="/",a=0;a40)throw new ze.ErrnoError(32)}}return{path:n,node:i}},getPath:e=>{for(var t;;){if(ze.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%ze.nameTable.length},hashAddNode:e=>{var t=ze.hashName(e.parent.id,e.name);e.name_next=ze.nameTable[t],ze.nameTable[t]=e},hashRemoveNode:e=>{var t=ze.hashName(e.parent.id,e.name);if(ze.nameTable[t]===e)ze.nameTable[t]=e.name_next;else for(var r=ze.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=ze.mayLookup(e);if(r)throw new ze.ErrnoError(r,e);for(var i=ze.hashName(e.id,t),n=ze.nameTable[i];n;n=n.name_next){var a=n.name;if(n.parent.id===e.id&&a===t)return n}return ze.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new ze.FSNode(e,t,r,i);return ze.hashAddNode(n),n},destroyNode:e=>{ze.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=ze.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>ze.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>ze.nodePermissions(e,"x")||(e.node_ops.lookup?0:2),mayCreate:(e,t)=>{try{return ze.lookupNode(e,t),20}catch(e){}return ze.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=ze.lookupNode(e,t)}catch(e){return e.errno}var n=ze.nodePermissions(e,"wx");if(n)return n;if(r){if(!ze.isDir(i.mode))return 54;if(ze.isRoot(i)||ze.getPath(i)===ze.cwd())return 10}else if(ze.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?ze.isLink(e.mode)?32:ze.isDir(e.mode)&&("r"!==ze.flagsToPermissionString(t)||512&t)?31:ze.nodePermissions(e,ze.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,t=ze.MAX_OPEN_FDS)=>{for(var r=e;r<=t;r++)if(!ze.streams[r])return r;throw new ze.ErrnoError(33)},getStream:e=>ze.streams[e],createStream:(e,t,r)=>{ze.FSStream||(ze.FSStream=function(){this.shared={}},ze.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get function(){return this.shared.position},set:function(e){this.shared.position=e}}}),e=Object.assign(new ze.FSStream,e);var i=ze.nextfd(t,r);return e.fd=i,ze.streams[i]=e,e},closeStream:e=>{ze.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=ze.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new ze.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{ze.devices[e]={stream_ops:t}},getDevice:e=>ze.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),ze.syncFSRequests++,ze.syncFSRequests>1&&k("warning: "+ze.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=ze.getMounts(ze.root.mount),i=0;function n(e){return ze.syncFSRequests--,t(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return a(null);t.type.syncfs(t,e,a)}))},mount:(e,t,r)=>{var i,n="/"===r,a=!r;if(n&&ze.root)throw new ze.ErrnoError(10);if(!n&&!a){var o=ze.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,ze.isMountpoint(i))throw new ze.ErrnoError(10);if(!ze.isDir(i.mode))throw new ze.ErrnoError(54)}var s={type:e,opts:t,mountpoint:r,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,n?ze.root=u:i&&(i.mounted=s,i.mount&&i.mount.mounts.push(s)),u},unmount:e=>{var t=ze.lookupPath(e,{follow_mount:!1});if(!ze.isMountpoint(t.node))throw new ze.ErrnoError(28);var r=t.node,i=r.mounted,n=ze.getMounts(i);Object.keys(ze.nameTable).forEach((e=>{for(var t=ze.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&ze.destroyNode(t),t=r}})),r.mounted=null;var a=r.mount.mounts.indexOf(i);r.mount.mounts.splice(a,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=ze.lookupPath(e,{parent:!0}).node,n=Pe.basename(e);if(!n||"."===n||".."===n)throw new ze.ErrnoError(28);var a=ze.mayCreate(i,n);if(a)throw new ze.ErrnoError(a);if(!i.node_ops.mknod)throw new ze.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,ze.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,ze.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,ze.mknod(e,t,r)),symlink:(e,t)=>{if(!Oe.resolve(e))throw new ze.ErrnoError(44);var r=ze.lookupPath(t,{parent:!0}).node;if(!r)throw new ze.ErrnoError(44);var i=Pe.basename(t),n=ze.mayCreate(r,i);if(n)throw new ze.ErrnoError(n);if(!r.node_ops.symlink)throw new ze.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=Pe.dirname(e),a=Pe.dirname(t),o=Pe.basename(e),s=Pe.basename(t);if(r=ze.lookupPath(e,{parent:!0}).node,i=ze.lookupPath(t,{parent:!0}).node,!r||!i)throw new ze.ErrnoError(44);if(r.mount!==i.mount)throw new ze.ErrnoError(75);var u,c=ze.lookupNode(r,o),l=Oe.relative(e,a);if("."!==l.charAt(0))throw new ze.ErrnoError(28);if("."!==(l=Oe.relative(t,n)).charAt(0))throw new ze.ErrnoError(55);try{u=ze.lookupNode(i,s)}catch(e){}if(c!==u){var h=ze.isDir(c.mode),p=ze.mayDelete(r,o,h);if(p)throw new ze.ErrnoError(p);if(p=u?ze.mayDelete(i,s,h):ze.mayCreate(i,s))throw new ze.ErrnoError(p);if(!r.node_ops.rename)throw new ze.ErrnoError(63);if(ze.isMountpoint(c)||u&&ze.isMountpoint(u))throw new ze.ErrnoError(10);if(i!==r&&(p=ze.nodePermissions(r,"w")))throw new ze.ErrnoError(p);ze.hashRemoveNode(c);try{r.node_ops.rename(c,i,s)}catch(e){throw e}finally{ze.hashAddNode(c)}}},rmdir:e=>{var t=ze.lookupPath(e,{parent:!0}).node,r=Pe.basename(e),i=ze.lookupNode(t,r),n=ze.mayDelete(t,r,!0);if(n)throw new ze.ErrnoError(n);if(!t.node_ops.rmdir)throw new ze.ErrnoError(63);if(ze.isMountpoint(i))throw new ze.ErrnoError(10);t.node_ops.rmdir(t,r),ze.destroyNode(i)},readdir:e=>{var t=ze.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new ze.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=ze.lookupPath(e,{parent:!0}).node;if(!t)throw new ze.ErrnoError(44);var r=Pe.basename(e),i=ze.lookupNode(t,r),n=ze.mayDelete(t,r,!1);if(n)throw new ze.ErrnoError(n);if(!t.node_ops.unlink)throw new ze.ErrnoError(63);if(ze.isMountpoint(i))throw new ze.ErrnoError(10);t.node_ops.unlink(t,r),ze.destroyNode(i)},readlink:e=>{var t=ze.lookupPath(e).node;if(!t)throw new ze.ErrnoError(44);if(!t.node_ops.readlink)throw new ze.ErrnoError(28);return Oe.resolve(ze.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=ze.lookupPath(e,{follow:!t}).node;if(!r)throw new ze.ErrnoError(44);if(!r.node_ops.getattr)throw new ze.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>ze.stat(e,!0),chmod:(e,t,r)=>{var i;if(!(i="string"==typeof e?ze.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new ze.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{ze.chmod(e,t,!0)},fchmod:(e,t)=>{var r=ze.getStream(e);if(!r)throw new ze.ErrnoError(8);ze.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;if(!(n="string"==typeof e?ze.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new ze.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{ze.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=ze.getStream(e);if(!i)throw new ze.ErrnoError(8);ze.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new ze.ErrnoError(28);var r;if(!(r="string"==typeof e?ze.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new ze.ErrnoError(63);if(ze.isDir(r.mode))throw new ze.ErrnoError(31);if(!ze.isFile(r.mode))throw new ze.ErrnoError(28);var i=ze.nodePermissions(r,"w");if(i)throw new ze.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=ze.getStream(e);if(!r)throw new ze.ErrnoError(8);if(0==(2097155&r.flags))throw new ze.ErrnoError(28);ze.truncate(r.node,t)},utime:(e,t,r)=>{var i=ze.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,t,r)=>{if(""===e)throw new ze.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?ze.modeStringToFlags(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=Pe.normalize(e);try{i=ze.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var n=!1;if(64&t)if(i){if(128&t)throw new ze.ErrnoError(20)}else i=ze.mknod(e,r,0),n=!0;if(!i)throw new ze.ErrnoError(44);if(ze.isChrdev(i.mode)&&(t&=-513),65536&t&&!ze.isDir(i.mode))throw new ze.ErrnoError(54);if(!n){var a=ze.mayOpen(i,t);if(a)throw new ze.ErrnoError(a)}512&t&&!n&&ze.truncate(i,0),t&=-131713;var o=ze.createStream({node:i,path:ze.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!s.logReadFiles||1&t||(ze.readFiles||(ze.readFiles={}),e in ze.readFiles||(ze.readFiles[e]=1)),o},close:e=>{if(ze.isClosed(e))throw new ze.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{ze.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(ze.isClosed(e))throw new ze.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new ze.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new ze.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new ze.ErrnoError(28);if(ze.isClosed(e))throw new ze.ErrnoError(8);if(1==(2097155&e.flags))throw new ze.ErrnoError(8);if(ze.isDir(e.node.mode))throw new ze.ErrnoError(31);if(!e.stream_ops.read)throw new ze.ErrnoError(28);var a=void 0!==n;if(a){if(!e.seekable)throw new ze.ErrnoError(70)}else n=e.position;var o=e.stream_ops.read(e,t,r,i,n);return a||(e.position+=o),o},write:(e,t,r,i,n,a)=>{if(i<0||n<0)throw new ze.ErrnoError(28);if(ze.isClosed(e))throw new ze.ErrnoError(8);if(0==(2097155&e.flags))throw new ze.ErrnoError(8);if(ze.isDir(e.node.mode))throw new ze.ErrnoError(31);if(!e.stream_ops.write)throw new ze.ErrnoError(28);e.seekable&&1024&e.flags&&ze.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new ze.ErrnoError(70)}else n=e.position;var s=e.stream_ops.write(e,t,r,i,n,a);return o||(e.position+=s),s},allocate:(e,t,r)=>{if(ze.isClosed(e))throw new ze.ErrnoError(8);if(t<0||r<=0)throw new ze.ErrnoError(28);if(0==(2097155&e.flags))throw new ze.ErrnoError(8);if(!ze.isFile(e.node.mode)&&!ze.isDir(e.node.mode))throw new ze.ErrnoError(43);if(!e.stream_ops.allocate)throw new ze.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n,a)=>{if(0!=(2&n)&&0==(2&a)&&2!=(2097155&e.flags))throw new ze.ErrnoError(2);if(1==(2097155&e.flags))throw new ze.ErrnoError(2);if(!e.stream_ops.mmap)throw new ze.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n,a)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new ze.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:(e,t={})=>{if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=ze.open(e,t.flags),n=ze.stat(e).size,a=new Uint8Array(n);return ze.read(i,a,0,n,0),"utf8"===t.encoding?r=z(a,0):"binary"===t.encoding&&(r=a),ze.close(i),r},writeFile:(e,t,r={})=>{r.flags=r.flags||577;var i=ze.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(L(t)+1),a=D(t,n,0,n.length);ze.write(i,n,0,a,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");ze.write(i,t,0,t.byteLength,void 0,r.canOwn)}ze.close(i)},cwd:()=>ze.currentPath,chdir:e=>{var t=ze.lookupPath(e,{follow:!0});if(null===t.node)throw new ze.ErrnoError(44);if(!ze.isDir(t.node.mode))throw new ze.ErrnoError(54);var r=ze.nodePermissions(t.node,"x");if(r)throw new ze.ErrnoError(r);ze.currentPath=t.path},createDefaultDirectories:()=>{ze.mkdir("/tmp"),ze.mkdir("/home"),ze.mkdir("/home/web_user")},createDefaultDevices:()=>{ze.mkdir("/dev"),ze.registerDevice(ze.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),ze.mkdev("/dev/null",ze.makedev(1,3)),Be.register(ze.makedev(5,0),Be.default_tty_ops),Be.register(ze.makedev(6,0),Be.default_tty1_ops),ze.mkdev("/dev/tty",ze.makedev(5,0)),ze.mkdev("/dev/tty1",ze.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(b)try{var t=r(55835);return function(){return t.randomBytes(1)[0]}}catch(e){}return function(){_e("randomDevice")}}();ze.createDevice("/dev","random",e),ze.createDevice("/dev","urandom",e),ze.mkdir("/dev/shm"),ze.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{ze.mkdir("/proc");var e=ze.mkdir("/proc/self");ze.mkdir("/proc/self/fd"),ze.mount({mount:()=>{var t=ze.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=ze.getStream(r);if(!i)throw new ze.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{s.stdin?ze.createDevice("/dev","stdin",s.stdin):ze.symlink("/dev/tty","/dev/stdin"),s.stdout?ze.createDevice("/dev","stdout",null,s.stdout):ze.symlink("/dev/tty","/dev/stdout"),s.stderr?ze.createDevice("/dev","stderr",null,s.stderr):ze.symlink("/dev/tty1","/dev/stderr"),ze.open("/dev/stdin",0),ze.open("/dev/stdout",1),ze.open("/dev/stderr",1)},ensureErrnoError:()=>{ze.ErrnoError||(ze.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},ze.ErrnoError.prototype=new Error,ze.ErrnoError.prototype.constructor=ze.ErrnoError,[44].forEach((e=>{ze.genericErrors[e]=new ze.ErrnoError(e),ze.genericErrors[e].stack=""})))},staticInit:()=>{ze.ensureErrnoError(),ze.nameTable=new Array(4096),ze.mount(Ce,{},"/"),ze.createDefaultDirectories(),ze.createDefaultDevices(),ze.createSpecialDirectories(),ze.filesystems={MEMFS:Ce}},init:(e,t,r)=>{ze.init.initialized=!0,ze.ensureErrnoError(),s.stdin=e||s.stdin,s.stdout=t||s.stdout,s.stderr=r||s.stderr,ze.createStandardStreams()},quit:()=>{ze.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=ze.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=ze.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=ze.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=Pe.basename(e),i=ze.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:ze.getPath(e);for(var n=t.split("/").reverse();n.length;){var a=n.pop();if(a){var o=Pe.join2(e,a);try{ze.mkdir(o)}catch(e){}e=o}}return o},createFile:(e,t,r,i,n)=>{var a=Pe.join2("string"==typeof e?e:ze.getPath(e),t),o=ze.getMode(i,n);return ze.create(a,o)},createDataFile:(e,t,r,i,n,a)=>{var o=t;e&&(e="string"==typeof e?e:ze.getPath(e),o=t?Pe.join2(e,t):e);var s=ze.getMode(i,n),u=ze.create(o,s);if(r){if("string"==typeof r){for(var c=new Array(r.length),l=0,h=r.length;l{var n=Pe.join2("string"==typeof e?e:ze.getPath(e),t),a=ze.getMode(!!r,!!i);ze.createDevice.major||(ze.createDevice.major=64);var o=ze.makedev(ze.createDevice.major++,0);return ze.registerDevice(o,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,a)=>{for(var o=0,s=0;s{for(var o=0;o{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!u)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=wt(u(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new ze.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,a=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,o=1048576;n||(o=i);var s=this;s.setDataGetter((e=>{var t=e*o,n=(e+1)*o-1;if(n=Math.min(n,i-1),void 0===s.chunks[e]&&(s.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==o&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):wt(n.responseText||"",!0)})(t,n)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!a&&i||(o=i=1,i=this.getter(0).length,o=i,E("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=o,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!_)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new a;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:o}}else s={isDevice:!1,url:r};var u=ze.createFile(e,t,s,i,n);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};return Object.keys(u.stream_ops).forEach((e=>{var t=u.stream_ops[e];c[e]=function(){return ze.forceLoadFile(u),t.apply(null,arguments)}})),c.read=(e,t,r,i,n)=>{ze.forceLoadFile(u);var a=e.node.contents;if(n>=a.length)return 0;var o=Math.min(a.length-n,i);if(a.slice)for(var s=0;s{var h=t?Oe.resolve(Pe.join2(e,t)):e;function p(r){function c(r){l&&l(),s||ze.createDataFile(e,t,r,i,n,u),a&&a(),ye()}Browser.handledByPreloadPlugin(r,h,c,(()=>{o&&o(),ye()}))||c(r)}ve(),"string"==typeof r?function(e,t,r,i){var n="al "+e;c(e,(function(t){B(t,'Loading data file "'+e+'" failed (no arrayBuffer).'),p(new Uint8Array(t)),n&&ye()}),(function(t){if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&ve()}(r,0,o):p(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=ze.indexedDB();try{var n=i.open(ze.DB_NAME(),ze.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{E("creating db"),n.result.createObjectStore(ze.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([ze.DB_STORE_NAME],"readwrite"),a=i.objectStore(ze.DB_STORE_NAME),o=0,s=0,u=e.length;function c(){0==s?t():r()}e.forEach((e=>{var t=a.put(ze.analyzePath(e).object.contents,e);t.onsuccess=()=>{++o+s==u&&c()},t.onerror=()=>{s++,o+s==u&&c()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=ze.indexedDB();try{var n=i.open(ze.DB_NAME(),ze.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var a=i.transaction([ze.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var o=a.objectStore(ze.DB_STORE_NAME),s=0,u=0,c=e.length;function l(){0==u?t():r()}e.forEach((e=>{var t=o.get(e);t.onsuccess=()=>{ze.analyzePath(e).exists&&ze.unlink(e),ze.createDataFile(Pe.dirname(e),Pe.basename(e),t.result,!0,!0,!0),++s+u==c&&l()},t.onerror=()=>{u++,s+u==c&&l()}})),a.onerror=r},n.onerror=r}},Fe={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(Pe.isAbs(t))return t;var i;if(-100===e)i=ze.cwd();else{var n=ze.getStream(e);if(!n)throw new ze.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new ze.ErrnoError(44);return i}return Pe.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&Pe.normalize(t)!==Pe.normalize(ze.getPath(e.node)))return-54;throw e}return J[r>>2]=i.dev,J[r+4>>2]=0,J[r+8>>2]=i.ino,J[r+12>>2]=i.mode,J[r+16>>2]=i.nlink,J[r+20>>2]=i.uid,J[r+24>>2]=i.gid,J[r+28>>2]=i.rdev,J[r+32>>2]=0,de=[i.size>>>0,(pe=i.size,+Math.abs(pe)>=1?pe>0?(0|Math.min(+Math.floor(pe/4294967296),4294967295))>>>0:~~+Math.ceil((pe-+(~~pe>>>0))/4294967296)>>>0:0)],J[r+40>>2]=de[0],J[r+44>>2]=de[1],J[r+48>>2]=4096,J[r+52>>2]=i.blocks,J[r+56>>2]=i.atime.getTime()/1e3|0,J[r+60>>2]=0,J[r+64>>2]=i.mtime.getTime()/1e3|0,J[r+68>>2]=0,J[r+72>>2]=i.ctime.getTime()/1e3|0,J[r+76>>2]=0,de=[i.ino>>>0,(pe=i.ino,+Math.abs(pe)>=1?pe>0?(0|Math.min(+Math.floor(pe/4294967296),4294967295))>>>0:~~+Math.ceil((pe-+(~~pe>>>0))/4294967296)>>>0:0)],J[r+80>>2]=de[0],J[r+84>>2]=de[1],0},doMsync:function(e,t,r,i,n){var a=K.slice(e,e+r);ze.msync(t,a,n,r,i)},varargs:void 0,get:function(){return Fe.varargs+=4,J[Fe.varargs-4>>2]},getStr:function(e){return F(e)},getStreamFromFD:function(e){var t=ze.getStream(e);if(!t)throw new ze.ErrnoError(8);return t}};function De(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var qe=void 0;function Le(e){for(var t="",r=e;K[r];)t+=qe[K[r++]];return t}var Ue={},He={},Ke={};function We(e,t){var r,i=(r=function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))},function(e){if(void 0===e)return"_unknown";(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0)}(t),function(){return r.apply(this,arguments)});return i.prototype=Object.create(e.prototype),i.prototype.constructor=i,i.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},i}var Ze=void 0;function Je(e){throw new Ze(e)}var Ve=void 0;function $e(e){throw new Ve(e)}function Ge(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||Je('type "'+i+'" must have a positive integer typeid pointer'),He.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Je("Cannot register type '"+i+"' twice")}if(He[e]=t,delete Ke[e],Ue.hasOwnProperty(e)){var n=Ue[e];delete Ue[e],n.forEach((e=>e()))}}var Qe=[],Xe=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Ye(e){e>4&&0==--Xe[e].refcount&&(Xe[e]=void 0,Qe.push(e))}var et=e=>(e||Je("Cannot use deleted val. handle = "+e),Xe[e].value),tt=e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=Qe.length?Qe.pop():Xe.length;return Xe[t]={refcount:1,value:e},t}};function rt(e){return this.fromWireType(V[e>>2])}function it(e,t){switch(t){case 2:return function(e){return this.fromWireType($[e>>2])};case 3:return function(e){return this.fromWireType(G[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function nt(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function at(e){try{return e()}catch(e){_e(e)}}var ot={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(e){var t=ot.callStackNameToId[e];return void 0===t&&(t=ot.callStackId++,ot.callStackNameToId[e]=t,ot.callStackIdToName[t]=e),t},instrumentWasmExports:function(e){var t={};for(var r in e)!function(r){var i=e[r];t[r]="function"==typeof i?function(){ot.exportCallStack.push(r);try{return i.apply(null,arguments)}finally{if(!O){var e=ot.exportCallStack.pop();B(e===r),ot.maybeStopUnwind()}}}:i}(r);return t},maybeStopUnwind:function(){ot.currData&&ot.state===ot.State.Unwinding&&0===ot.exportCallStack.length&&(ot.state=ot.State.Normal,at(s._asyncify_stop_unwind),"undefined"!=typeof Fibers&&Fibers.trampoline())},whenDone:function(){return new Promise(((e,t)=>{ot.asyncPromiseHandlers={resolve:e,reject:t}}))},allocateData:function(){var e=jt(12+ot.StackSize);return ot.setDataHeader(e,e+12,ot.StackSize),ot.setDataRewindFunc(e),e},setDataHeader:function(e,t,r){J[e>>2]=t,J[e+4>>2]=t+r},setDataRewindFunc:function(e){var t=ot.exportCallStack[0],r=ot.getCallStackId(t);J[e+8>>2]=r},getDataRewindFunc:function(e){var t=J[e+8>>2],r=ot.callStackIdToName[t];return s.asm[r]},doRewind:function(e){return ot.getDataRewindFunc(e)()},handleSleep:function(e){if(!O){if(ot.state===ot.State.Normal){var t=!1,r=!1;e((e=>{if(!O&&(ot.handleSleepReturnValue=e||0,t=!0,r)){ot.state=ot.State.Rewinding,at((()=>s._asyncify_start_rewind(ot.currData))),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.resume();var i,n=!1;try{i=ot.doRewind(ot.currData)}catch(e){i=e,n=!0}var a=!1;if(!ot.currData){var o=ot.asyncPromiseHandlers;o&&(ot.asyncPromiseHandlers=null,(n?o.reject:o.resolve)(i),a=!0)}if(n&&!a)throw i}})),r=!0,t||(ot.state=ot.State.Unwinding,ot.currData=ot.allocateData(),at((()=>s._asyncify_start_unwind(ot.currData))),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.pause())}else ot.state===ot.State.Rewinding?(ot.state=ot.State.Normal,at(s._asyncify_stop_rewind),St(ot.currData),ot.currData=null,ot.sleepCallbacks.forEach((e=>function(e,t){if(!O)if(t)e();else try{e()}catch(e){!function(e){if(e instanceof Er||"unwind"==e)return P;v(1,e)}(e)}}(e)))):_e("invalid state: "+ot.state);return ot.handleSleepReturnValue}},handleAsync:function(e){return ot.handleSleep((t=>{e().then(t)}))}};function st(e,t,r){return function(e,t,r){var i=s["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)}(e,t,r)}var ut,ct=void 0;function lt(e){var t=Nt(e),r=Le(t);return St(t),r}function ht(e,t,r){switch(t){case 0:return r?function(e){return H[e]}:function(e){return K[e]};case 1:return r?function(e){return W[e>>1]}:function(e){return Z[e>>1]};case 2:return r?function(e){return J[e>>2]}:function(e){return V[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function pt(e,t){var r=He[e];return void 0===r&&Je(t+" has unknown type "+lt(e)),r}function dt(e){try{return T.grow(e-U.byteLength+65535>>>16),ae(T.buffer),1}catch(e){}}ut=b?()=>{var e=n.hrtime();return 1e3*e[0]+e[1]/1e6}:()=>performance.now();var ft={};function mt(){if(!mt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:g||"./this.program"};for(var t in ft)void 0===ft[t]?delete e[t]:e[t]=ft[t];var r=[];for(var t in e)r.push(t+"="+e[t]);mt.strings=r}return mt.strings}function gt(e,t,r,i){for(var n=0,a=0;a>2],s=V[t+4>>2];t+=8;var u=ze.write(e,H,o,s,i);if(u<0)return-1;n+=u}return n}function vt(e){return e%4==0&&(e%100!=0||e%400==0)}var yt=[31,29,31,30,31,30,31,31,30,31,30,31],_t=[31,28,31,30,31,30,31,31,30,31,30,31];var bt=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=ze.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i};function wt(e,t,r){var i=r>0?r:L(e)+1,n=new Array(i),a=D(e,n,0,n.length);return t&&(n.length=a),n}Object.defineProperties(bt.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return ze.isDir(this.mode)}},isDevice:{get:function(){return ze.isChrdev(this.mode)}}}),ze.FSNode=bt,ze.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);qe=e}(),Ze=s.BindingError=We(Error,"BindingError"),Ve=s.InternalError=We(Error,"InternalError"),s.count_emval_handles=function(){for(var e=0,t=5;t>1]=2,0;case 16:case 8:default:return-28;case 9:return 28,J[xt()>>2]=28,-1}}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},qa:function(e){try{return Fe.getStreamFromFD(e),0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},bb:function(e,t,r){try{var i=4294967296*r+(t>>>0);return ze.ftruncate(e,i),0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},wa:function(e,t,r){Fe.varargs=r;try{var i=Fe.getStreamFromFD(e);switch(t){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:return i.tty?0:-59;case 21519:if(!i.tty)return-59;var n=Fe.get();return J[n>>2]=0,0;case 21520:return i.tty?-28:-59;case 21531:return n=Fe.get(),ze.ioctl(i,t,n);default:_e("bad ioctl syscall "+t)}}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},ma:function(e,t,r){try{return t=Fe.getStr(t),t=Fe.calculateAt(e,t),"/"===(t=Pe.normalize(t))[t.length-1]&&(t=t.substr(0,t.length-1)),ze.mkdir(t,r,0),0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},W:function(e,t,r,i){Fe.varargs=i;try{t=Fe.getStr(t),t=Fe.calculateAt(e,t);var n=i?Fe.get():0;return ze.open(t,r,n).fd}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},ha:function(e,t,r,i){try{return t=Fe.getStr(t),i=Fe.getStr(i),t=Fe.calculateAt(e,t),i=Fe.calculateAt(r,i),ze.rename(t,i),0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},pa:function(e,t){try{return e=Fe.getStr(e),Fe.doStat(ze.stat,e,t)}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},cb:function(e,t,r,i,n){},ya:function(e,t,r,i,n){var a=De(r);Ge(e,{name:t=Le(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=H;else if(2===r)i=W;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=J}return this.fromWireType(i[e>>a])},destructorFunction:null})},xa:function(e,t){Ge(e,{name:t=Le(t),fromWireType:function(e){var t=et(e);return Ye(e),t},toWireType:function(e,t){return tt(t)},argPackAdvance:8,readValueFromPointer:rt,destructorFunction:null})},Z:function(e,t,r){var i=De(r);Ge(e,{name:t=Le(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:it(t,i),destructorFunction:null})},t:function(e,t,r,i,n,a){var o=function(e,t){for(var r=[],i=0;i>2)+i]);return r}(t,r);e=Le(e),n=function(e,t){e=Le(e);var r,i,n,a=(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),st(r,i,n)});return"function"!=typeof a&&Je("unknown function pointer with signature "+e+": "+t),a}(i,n),function(e,t,r){s.hasOwnProperty(e)?((void 0===r||void 0!==s[e].overloadTable&&void 0!==s[e].overloadTable[r])&&Je("Cannot register public name '"+e+"' twice"),function(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Je("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}(s,e,e),s.hasOwnProperty(r)&&Je("Cannot register multiple overloads of a function with the same number of arguments ("+r+")!"),s[e].overloadTable[r]=t):(s[e]=t,void 0!==r&&(s[e].numArguments=r))}(e,(function(){!function(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||He[t]||(Ke[t]?Ke[t].forEach(e):(r.push(t),i[t]=!0))})),new ct(e+": "+r.map(lt).join([", "]))}("Cannot call "+e+" due to unbound types",o)}),t-1),function(r,i,o){function u(i){var o=function(r){var i=[r[0],null].concat(r.slice(1));return function(e,t,r){s.hasOwnProperty(e)||$e("Replacing nonexistant public symbol"),void 0!==s[e].overloadTable&&void 0!==r?s[e].overloadTable[r]=t:(s[e]=t,s[e].argCount=r)}(e,function(e,t,r,i,n){var a=t.length;a<2&&Je("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,s=!1,u=1;u{He.hasOwnProperty(e)?c[t]=He[e]:(l.push(e),Ue.hasOwnProperty(e)||(Ue[e]=[]),Ue[e].push((()=>{c[t]=He[e],++h===l.length&&u(c)})))})),0===l.length&&u(c)}([],o)},z:function(e,t,r,i,n){t=Le(t),-1===n&&(n=4294967295);var a=De(r),o=e=>e;if(0===i){var s=32-8*r;o=e=>e<>>s}var u=t.includes("unsigned");Ge(e,{name:t,fromWireType:o,toWireType:u?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:ht(t,a,0!==i),destructorFunction:null})},v:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=V,r=t[e>>=2],n=t[e+1];return new i(U,n,r)}Ge(e,{name:r=Le(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},Y:function(e,t){var r="std::string"===(t=Le(t));Ge(e,{name:t,fromWireType:function(e){var t,i=V[e>>2];if(r)for(var n=e+4,a=0;a<=i;++a){var o=e+4+a;if(a==i||0==K[o]){var s=F(n,o-n);void 0===t?t=s:(t+=String.fromCharCode(0),t+=s),n=o+1}}else{var u=new Array(i);for(a=0;aL(t):()=>t.length)(),a=jt(4+n+1);if(V[a>>2]=n,r&&i)q(t,a+4,n+1);else if(i)for(var o=0;o255&&(St(a),Je("String has UTF-16 code units that do not fit in 8 bits")),K[a+4+o]=s}else for(o=0;oZ,s=1):4===t&&(i=te,n=re,o=ie,a=()=>V,s=2),Ge(e,{name:r,fromWireType:function(e){for(var r,n=V[e>>2],o=a(),u=e+4,c=0;c<=n;++c){var l=e+4+c*t;if(c==n||0==o[l>>s]){var h=i(u,l-u);void 0===r?r=h:(r+=String.fromCharCode(0),r+=h),u=l+t}}return St(e),r},toWireType:function(e,i){"string"!=typeof i&&Je("Cannot pass non-string to C++ string type "+r);var a=o(i),u=jt(4+a+t);return V[u>>2]=a>>s,n(i,u+4,a+t),null!==e&&e.push(St,u),u},argPackAdvance:8,readValueFromPointer:rt,destructorFunction:function(e){St(e)}})},za:function(e,t){Ge(e,{isVoid:!0,name:t=Le(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},K:function(){return Date.now()},ra:function(){return!0},ia:function(e,t){q(g,e,t)},Da:function(e,t,r,i){e=et(e);for(var n=function(e,t){for(var r=new Array(e),i=0;i>2)+i],"parameter "+i);return r}(t,r),a=new Array(t),o=0;o4&&(Xe[e].refcount+=1)},Ba:function(e,t){var r=(e=pt(e,"_emval_take_value")).readValueFromPointer(t);return tt(r)},sa:function(e,t){var r=new Date(1e3*J[e>>2]);J[t>>2]=r.getUTCSeconds(),J[t+4>>2]=r.getUTCMinutes(),J[t+8>>2]=r.getUTCHours(),J[t+12>>2]=r.getUTCDate(),J[t+16>>2]=r.getUTCMonth(),J[t+20>>2]=r.getUTCFullYear()-1900,J[t+24>>2]=r.getUTCDay();var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/864e5|0;J[t+28>>2]=n},ta:function(e){var t=new Date(J[e+20>>2]+1900,J[e+16>>2],J[e+12>>2],J[e+8>>2],J[e+4>>2],J[e>>2],0),r=J[e+32>>2],i=t.getTimezoneOffset(),n=new Date(t.getFullYear(),0,1),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),o=n.getTimezoneOffset(),s=Math.min(o,a);if(r<0)J[e+32>>2]=Number(a!=o&&s==i);else if(r>0!=(s==i)){var u=Math.max(o,a),c=r>0?s:u;t.setTime(t.getTime()+6e4*(c-i))}J[e+24>>2]=t.getDay();var l=(t.getTime()-n.getTime())/864e5|0;return J[e+28>>2]=l,J[e>>2]=t.getSeconds(),J[e+4>>2]=t.getMinutes(),J[e+8>>2]=t.getHours(),J[e+12>>2]=t.getDate(),J[e+16>>2]=t.getMonth(),t.getTime()/1e3|0},ja:function(e,t,r,i,n,a,o,s){try{var u=ze.getStream(n);if(!u)return-8;var c=ze.mmap(u,e,t,a,r,i),l=c.ptr;return J[o>>2]=c.allocated,l}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},ka:function(e,t,r,i){try{return Fe.doMsync(e,ze.getStream(i),t,r,0),0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},la:function(e,t,r,i,n,a){try{var o=ze.getStream(n);o&&(2&r&&Fe.doMsync(e,o,t,i,a),ze.munmap(o))}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return-e.errno}},ua:function e(t,r,i){e.called||(e.called=!0,function(e,t,r){var i=(new Date).getFullYear(),n=new Date(i,0,1),a=new Date(i,6,1),o=n.getTimezoneOffset(),s=a.getTimezoneOffset(),u=Math.max(o,s);function c(e){var t=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return t?t[1]:"GMT"}J[e>>2]=60*u,J[t>>2]=Number(o!=s);var l=c(n),h=c(a),p=ne(l),d=ne(h);s>2]=p,J[r+4>>2]=d):(J[r>>2]=d,J[r+4>>2]=p)}(t,r,i))},B:function(){_e("")},ga:function(){return 2147483648},J:ut,fa:function(e){var t,r=K.length,i=2147483648;if((e>>>=0)>i)return!1;for(var n=1;n<=4;n*=2){var a=r*(1+.2/n);if(a=Math.min(a,e+100663296),dt(Math.min(i,(t=Math.max(e,a))+(65536-t%65536)%65536)))return!0}return!1},na:function(e,t){var r=0;return mt().forEach((function(i,n){var a=t+r;J[e+4*n>>2]=a,function(e,t,r){for(var i=0;i>0]=e.charCodeAt(i);H[t>>0]=0}(i,a),r+=i.length+1})),0},oa:function(e,t){var r=mt();J[e>>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),J[t>>2]=i,0},Q:function(e){!function(e,t){P=e,Sr(e)}(e)},G:function(e){try{var t=Fe.getStreamFromFD(e);return ze.close(t),0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return e.errno}},$a:function(e,t,r,i,n,a){try{var o=gt(Fe.getStreamFromFD(e),t,r,i);return J[a>>2]=o,0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return e.errno}},X:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,a=0;a>2],s=V[t+4>>2];t+=8;var u=ze.read(e,H,o,s,undefined);if(u<0)return-1;if(n+=u,u>2]=n,0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return e.errno}},ab:function(e,t,r,i,n){try{var a=Fe.getStreamFromFD(e),o=4294967296*r+(t>>>0),s=9007199254740992;return o<=-s||o>=s?61:(ze.llseek(a,o,i),de=[a.position>>>0,(pe=a.position,+Math.abs(pe)>=1?pe>0?(0|Math.min(+Math.floor(pe/4294967296),4294967295))>>>0:~~+Math.ceil((pe-+(~~pe>>>0))/4294967296)>>>0:0)],J[n>>2]=de[0],J[n+4>>2]=de[1],a.getdents&&0===o&&0===i&&(a.getdents=null),0)}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return e.errno}},L:function(e,t,r,i){try{var n=gt(Fe.getStreamFromFD(e),t,r);return J[i>>2]=n,0}catch(e){if(void 0===ze||!(e instanceof ze.ErrnoError))throw e;return e.errno}},a:function(){return A()},R:function(e,t,r,i){var n=At();try{return yr(e,t,r,i)}catch(e){if(Tt(n),e!==e+0)throw e;It(1,0)}},S:function(e,t,r,i){var n=At();try{return vr(e,t,r,i)}catch(e){if(Tt(n),e!==e+0)throw e;It(1,0)}},u:function(e){var t=At();try{return _r(e)}catch(e){if(Tt(t),e!==e+0)throw e;It(1,0)}},i:function(e,t){var r=At();try{return Ot(e,t)}catch(e){if(Tt(r),e!==e+0)throw e;It(1,0)}},d:function(e,t,r){var i=At();try{return Ct(e,t,r)}catch(e){if(Tt(i),e!==e+0)throw e;It(1,0)}},p:function(e,t,r,i){var n=At();try{return Ht(e,t,r,i)}catch(e){if(Tt(n),e!==e+0)throw e;It(1,0)}},n:function(e,t,r,i,n){var a=At();try{return Kt(e,t,r,i,n)}catch(e){if(Tt(a),e!==e+0)throw e;It(1,0)}},T:function(e,t,r,i,n,a){var o=At();try{return gr(e,t,r,i,n,a)}catch(e){if(Tt(o),e!==e+0)throw e;It(1,0)}},E:function(e,t,r,i,n,a){var o=At();try{return Yt(e,t,r,i,n,a)}catch(e){if(Tt(o),e!==e+0)throw e;It(1,0)}},x:function(e,t,r,i,n,a,o){var s=At();try{return hr(e,t,r,i,n,a,o)}catch(e){if(Tt(s),e!==e+0)throw e;It(1,0)}},O:function(e,t,r,i,n,a,o,s){var u=At();try{return nr(e,t,r,i,n,a,o,s)}catch(e){if(Tt(u),e!==e+0)throw e;It(1,0)}},Ha:function(e,t,r,i,n,a,o,s,u,c){var l=At();try{return lr(e,t,r,i,n,a,o,s,u,c)}catch(e){if(Tt(l),e!==e+0)throw e;It(1,0)}},I:function(e,t,r,i,n,a,o,s,u,c,l,h){var p=At();try{return br(e,t,r,i,n,a,o,s,u,c,l,h)}catch(e){if(Tt(p),e!==e+0)throw e;It(1,0)}},Ya:function(e,t,r,i,n,a,o){var s=At();try{return mr(e,t,r,i,n,a,o)}catch(e){if(Tt(s),e!==e+0)throw e;It(1,0)}},nb:function(e,t,r,i,n,a,o,s){var u=At();try{return or(e,t,r,i,n,a,o,s)}catch(e){if(Tt(u),e!==e+0)throw e;It(1,0)}},ob:function(e,t,r,i,n,a,o){var s=At();try{return ar(e,t,r,i,n,a,o)}catch(e){if(Tt(s),e!==e+0)throw e;It(1,0)}},lb:function(e,t,r,i){var n=At();try{return qt(e,t,r,i)}catch(e){if(Tt(n),e!==e+0)throw e;It(1,0)}},_a:function(e){var t=At();try{return fr(e)}catch(e){if(Tt(t),e!==e+0)throw e;It(1,0)}},qb:function(e,t){var r=At();try{return Lt(e,t)}catch(e){if(Tt(r),e!==e+0)throw e;It(1,0)}},fb:function(e,t,r){var i=At();try{return $t(e,t,r)}catch(e){if(Tt(i),e!==e+0)throw e;It(1,0)}},eb:function(e,t,r,i){var n=At();try{return Gt(e,t,r,i)}catch(e){if(Tt(n),e!==e+0)throw e;It(1,0)}},gb:function(e,t,r,i,n){var a=At();try{return Jt(e,t,r,i,n)}catch(e){if(Tt(a),e!==e+0)throw e;It(1,0)}},hb:function(e,t,r,i,n,a){var o=At();try{return cr(e,t,r,i,n,a)}catch(e){if(Tt(o),e!==e+0)throw e;It(1,0)}},l:function(e){var t=At();try{Ft(e)}catch(e){if(Tt(t),e!==e+0)throw e;It(1,0)}},s:function(e,t){var r=At();try{Bt(e,t)}catch(e){if(Tt(r),e!==e+0)throw e;It(1,0)}},h:function(e,t,r){var i=At();try{zt(e,t,r)}catch(e){if(Tt(i),e!==e+0)throw e;It(1,0)}},j:function(e,t,r,i){var n=At();try{Ut(e,t,r,i)}catch(e){if(Tt(n),e!==e+0)throw e;It(1,0)}},w:function(e,t,r,i,n){var a=At();try{Zt(e,t,r,i,n)}catch(e){if(Tt(a),e!==e+0)throw e;It(1,0)}},C:function(e,t,r,i,n,a){var o=At();try{Dt(e,t,r,i,n,a)}catch(e){if(Tt(o),e!==e+0)throw e;It(1,0)}},N:function(e,t,r,i,n,a,o){var s=At();try{Qt(e,t,r,i,n,a,o)}catch(e){if(Tt(s),e!==e+0)throw e;It(1,0)}},A:function(e,t,r,i,n,a,o,s){var u=At();try{dr(e,t,r,i,n,a,o,s)}catch(e){if(Tt(u),e!==e+0)throw e;It(1,0)}},Ia:function(e,t,r,i,n,a,o,s,u){var c=At();try{ir(e,t,r,i,n,a,o,s,u)}catch(e){if(Tt(c),e!==e+0)throw e;It(1,0)}},F:function(e,t,r,i,n,a,o,s,u,c,l){var h=At();try{pr(e,t,r,i,n,a,o,s,u,c,l)}catch(e){if(Tt(h),e!==e+0)throw e;It(1,0)}},H:function(e,t,r,i,n,a,o,s,u,c,l,h,p,d,f,m){var g=At();try{wr(e,t,r,i,n,a,o,s,u,c,l,h,p,d,f,m)}catch(e){if(Tt(g),e!==e+0)throw e;It(1,0)}},db:function(e,t,r,i,n,a,o){var s=At();try{Xt(e,t,r,i,n,a,o)}catch(e){if(Tt(s),e!==e+0)throw e;It(1,0)}},kb:function(e,t,r,i,n,a,o,s,u,c,l,h,p,d){var f=At();try{ur(e,t,r,i,n,a,o,s,u,c,l,h,p,d)}catch(e){if(Tt(f),e!==e+0)throw e;It(1,0)}},jb:function(e,t,r,i,n){var a=At();try{Vt(e,t,r,i,n)}catch(e){if(Tt(a),e!==e+0)throw e;It(1,0)}},Za:function(e,t,r,i,n,a,o){var s=At();try{rr(e,t,r,i,n,a,o)}catch(e){if(Tt(s),e!==e+0)throw e;It(1,0)}},rb:function(e,t,r,i,n,a,o,s,u){var c=At();try{Wt(e,t,r,i,n,a,o,s,u)}catch(e){if(Tt(c),e!==e+0)throw e;It(1,0)}},mb:function(e,t,r,i,n,a,o,s){var u=At();try{sr(e,t,r,i,n,a,o,s)}catch(e){if(Tt(u),e!==e+0)throw e;It(1,0)}},pb:function(e,t,r,i,n){var a=At();try{er(e,t,r,i,n)}catch(e){if(Tt(a),e!==e+0)throw e;It(1,0)}},ib:function(e,t,r,i,n,a,o,s,u,c){var l=At();try{tr(e,t,r,i,n,a,o,s,u,c)}catch(e){if(Tt(l),e!==e+0)throw e;It(1,0)}},sb:function(e,t,i,n,a,o,u,c){const l=r(32142),h=l.HttpClient,p=l.LibraryUtils,d=l.GenUtils;return ot.handleSleep((function(r){p.loadFullModule().then((c=>{let l=o,f=u,m=new Uint8Array(f);for(let e=0;e{let t=e.body;t instanceof Uint8Array||(console.error("resp is not uint8array"),console.error(t));let i=t.length*t.BYTES_PER_ELEMENT,n=s._malloc(i);new Uint8Array(s.HEAPU8.buffer,n,i).set(new Uint8Array(t.buffer,t.byteOffset,i));let a={code:e.statusCode,message:e.statusText,headers:e.headers,bodyPtr:n,bodyLength:t.length},o=JSON.stringify(a),u=s.lengthBytesUTF8(o)+1,c=s._malloc(u);s.stringToUTF8(o,c,u),g=!0,r(c)})).catch((e=>{if(g)throw console.error("Error caught in JS after previously calling wakeUp(): "+e),new Error("Error caught in JS after previously calling wakeUp(): "+e);let t=e.message?e.message:""+e;t=JSON.stringify({error:t});let i=s.lengthBytesUTF8(t)+1,n=s._malloc(i);s.stringToUTF8(t,n,i),g=!0,r(n)}))})).catch((e=>{throw new Error("Could not load full wasm module")}))}))},tb:function(e,t,i,n,a,o,u){const c=r(32142),l=c.HttpClient,h=c.LibraryUtils,p=c.GenUtils;return ot.handleSleep((function(r){let u=!1;l.request({method:F(a),uri:F(e),username:F(t),password:F(i),body:F(o),resolveWithFullResponse:!0,rejectUnauthorized:h.isRejectUnauthorized(F(n)),requestApi:p.isFirefox()?"xhr":"fetch"}).then((e=>{let t={code:e.statusCode,message:e.statusText,body:e.body,headers:e.headers},i=JSON.stringify(t),n=s.lengthBytesUTF8(i)+1,a=s._malloc(n);s.stringToUTF8(i,a,n),u=!0,r(a)})).catch((e=>{if(u)throw console.error("Error caught in JS after previously calling wakeUp(): "+e),new Error("Error caught in JS after previously calling wakeUp(): "+e);let t=e.message?e.message:""+e;t=JSON.stringify({error:t});let i=s.lengthBytesUTF8(t)+1,n=s._malloc(i);s.stringToUTF8(t,n,i),u=!0,r(n)}))}))},q:function(e){return e},va:function(e){Sr(e)},Ga:function(){k("missing function: rx_slow_hash"),_e(-1)},D:function(e){I(e)},ub:function(e,t,r,i){return function(e,t,r,i){var n=J[i+40>>2],a={tm_sec:J[i>>2],tm_min:J[i+4>>2],tm_hour:J[i+8>>2],tm_mday:J[i+12>>2],tm_mon:J[i+16>>2],tm_year:J[i+20>>2],tm_wday:J[i+24>>2],tm_yday:J[i+28>>2],tm_isdst:J[i+32>>2],tm_gmtoff:J[i+36>>2],tm_zone:n?F(n):""},o=F(r),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)o=o.replace(new RegExp(u,"g"),s[u]);var c=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],l=["January","February","March","April","May","June","July","August","September","October","November","December"];function h(e,t,r){for(var i="number"==typeof e?e.toString():e||"";i.length0?1:0}var i;return 0===(i=r(e.getFullYear()-t.getFullYear()))&&0===(i=r(e.getMonth()-t.getMonth()))&&(i=r(e.getDate()-t.getDate())),i}function f(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function m(e){var t=function(e,t){for(var r=new Date(e.getTime());t>0;){var i=vt(r.getFullYear()),n=r.getMonth(),a=(i?yt:_t)[n];if(!(t>a-r.getDate()))return r.setDate(r.getDate()+t),r;t-=a-r.getDate()+1,r.setDate(1),n<11?r.setMonth(n+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1))}return r}(new Date(e.tm_year+1900,0,1),e.tm_yday),r=new Date(t.getFullYear(),0,4),i=new Date(t.getFullYear()+1,0,4),n=f(r),a=f(i);return d(n,t)<=0?d(a,t)<=0?t.getFullYear()+1:t.getFullYear():t.getFullYear()-1}var g={"%a":function(e){return c[e.tm_wday].substring(0,3)},"%A":function(e){return c[e.tm_wday]},"%b":function(e){return l[e.tm_mon].substring(0,3)},"%B":function(e){return l[e.tm_mon]},"%C":function(e){return p((e.tm_year+1900)/100|0,2)},"%d":function(e){return p(e.tm_mday,2)},"%e":function(e){return h(e.tm_mday,2," ")},"%g":function(e){return m(e).toString().substring(2)},"%G":function(e){return m(e)},"%H":function(e){return p(e.tm_hour,2)},"%I":function(e){var t=e.tm_hour;return 0==t?t=12:t>12&&(t-=12),p(t,2)},"%j":function(e){return p(e.tm_mday+function(e,t){for(var r=0,i=0;i<=t;r+=e[i++]);return r}(vt(e.tm_year+1900)?yt:_t,e.tm_mon-1),3)},"%m":function(e){return p(e.tm_mon+1,2)},"%M":function(e){return p(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return p(e.tm_sec,2)},"%t":function(){return"\t"},"%u":function(e){return e.tm_wday||7},"%U":function(e){var t=e.tm_yday+7-e.tm_wday;return p(Math.floor(t/7),2)},"%V":function(e){var t=Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7);if((e.tm_wday+371-e.tm_yday-2)%7<=2&&t++,t){if(53==t){var r=(e.tm_wday+371-e.tm_yday)%7;4==r||3==r&&vt(e.tm_year)||(t=1)}}else{t=52;var i=(e.tm_wday+7-e.tm_yday-1)%7;(4==i||5==i&&vt(e.tm_year%400-1))&&t++}return p(t,2)},"%w":function(e){return e.tm_wday},"%W":function(e){var t=e.tm_yday+7-(e.tm_wday+6)%7;return p(Math.floor(t/7),2)},"%y":function(e){return(e.tm_year+1900).toString().substring(2)},"%Y":function(e){return e.tm_year+1900},"%z":function(e){var t=e.tm_gmtoff,r=t>=0;return t=(t=Math.abs(t)/60)/60*100+t%60,(r?"+":"-")+String("0000"+t).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var u in o=o.replace(/%%/g,"\0\0"),g)o.includes(u)&&(o=o.replace(new RegExp(u,"g"),g[u](a)));var v=wt(o=o.replace(/\0\0/g,"%"),!1);return v.length>t?0:(function(e,t){H.set(e,t)}(v,e),v.length-1)}(e,t,r,i)},Aa:function(){k("missing function: v4_generate_JIT_code"),_e(-1)}},St=(function(){var e={a:kt};function t(e,t){var r,i=e.exports;i=ot.instrumentWasmExports(i),s.asm=i,ae((T=s.asm.vb).buffer),oe=s.asm.yb,r=s.asm.wb,ue.unshift(r),ye()}function r(e){t(e.instance)}function i(t){return function(){if(!j&&(y||_)){if("function"==typeof fetch&&!we(he))return fetch(he,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+he+"'";return e.arrayBuffer()})).catch((function(){return Ee(he)}));if(c)return new Promise((function(e,t){c(he,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Ee(he)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){k("failed to asynchronously prepare wasm: "+e),_e(e)}))}if(ve(),s.instantiateWasm)try{var n=s.instantiateWasm(e,t);return ot.instrumentWasmExports(n)}catch(e){return k("Module.instantiateWasm callback failed with error: "+e),!1}(j||"function"!=typeof WebAssembly.instantiateStreaming||be(he)||we(he)||"function"!=typeof fetch?i(r):fetch(he,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(r,(function(e){return k("wasm streaming compile failed: "+e),k("falling back to ArrayBuffer instantiation"),i(r)}))}))).catch(o)}(),s.___wasm_call_ctors=function(){return(s.___wasm_call_ctors=s.asm.wb).apply(null,arguments)},s._free=function(){return(St=s._free=s.asm.xb).apply(null,arguments)}),xt=(s.__ZN5boost13serialization16singleton_module8get_lockEv=function(){return(s.__ZN5boost13serialization16singleton_module8get_lockEv=s.asm.zb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet210pending_txEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet210pending_txEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Ab).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11transactionEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11transactionEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Bb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Cb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Db).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote8txin_genEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote8txin_genEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Eb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote14txin_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote14txin_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Fb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto4hashEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto4hashEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Gb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote18txin_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote18txin_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Hb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15txout_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15txout_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Ib).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Jb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto10public_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto10public_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Kb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11txin_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11txin_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Lb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Mb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9key_imageEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9key_imageEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Nb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Ob).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote6tx_outEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote6tx_outEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Pb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Qb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Rb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote12txout_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote12txout_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Sb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_tagged_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_tagged_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Tb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto8view_tagEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto8view_tagEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Ub).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Vb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Wb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Xb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9signatureEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9signatureEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Yb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct10rctSigBaseEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct10rctSigBaseEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Zb).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm._b).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct3keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct3keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.$b).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.ac).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9ecdhTupleEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9ecdhTupleEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.bc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14rctSigPrunableEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14rctSigPrunableEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.cc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.dc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct8rangeSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct8rangeSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.ec).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct7boroSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct7boroSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.fc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.gc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct11BulletproofEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct11BulletproofEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.hc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.ic).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct15BulletproofPlusEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct15BulletproofPlusEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.jc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.kc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5mgSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5mgSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.lc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.mc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.nc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5clsagEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5clsagEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.oc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote20tx_destination_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote20tx_destination_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.pc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote22account_public_addressEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote22account_public_addressEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.qc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24listImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24listImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.rc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.sc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.tc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet220tx_construction_dataEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet220tx_construction_dataEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.uc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.vc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15tx_source_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15tx_source_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.wc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.xc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24pairIyN3rct5ctkeyEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24pairIyN3rct5ctkeyEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.yc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5ctkeyEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5ctkeyEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.zc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14multisig_kLRkiEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14multisig_kLRkiEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Ac).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Bc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9RCTConfigEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9RCTConfigEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Cc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Dc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Ec).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Fc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet212multisig_sigEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet212multisig_sigEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Gc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct6rctSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct6rctSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Hc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Ic).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Jc).apply(null,arguments)},s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct12multisig_outEE16save_object_dataERNS1_14basic_oarchiveEPKv=function(){return(s.__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct12multisig_outEE16save_object_dataERNS1_14basic_oarchiveEPKv=s.asm.Kc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet210pending_txEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet210pending_txEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Lc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Mc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Nc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Oc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Pc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Qc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Rc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Sc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Tc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Uc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Vc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Wc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Xc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Yc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Zc).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm._c).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.$c).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ad).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.bd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.cd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.dd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ed).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.fd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.gd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.hd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.id).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.jd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.kd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ld).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.md).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.nd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.od).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.pd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.qd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.rd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.sd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.td).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ud).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.vd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.wd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.xd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.yd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.zd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ad).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Bd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24listImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24listImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Cd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Dd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ed).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220tx_construction_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220tx_construction_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Fd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Gd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15tx_source_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15tx_source_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Hd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Id).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN3rct5ctkeyEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN3rct5ctkeyEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Jd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5ctkeyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5ctkeyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Kd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14multisig_kLRkiEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14multisig_kLRkiEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ld).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Md).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9RCTConfigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9RCTConfigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Nd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Od).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Pd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Qd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet212multisig_sigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet212multisig_sigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Rd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct6rctSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct6rctSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Sd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Td).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ud).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct12multisig_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct12multisig_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Vd).apply(null,arguments)},s.___errno_location=function(){return(xt=s.___errno_location=s.asm.Wd).apply(null,arguments)}),jt=s._malloc=function(){return(jt=s._malloc=s.asm.Xd).apply(null,arguments)},Nt=(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Yd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Zd).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm._d).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.$d).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ae).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.be).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ce).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.de).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ee).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.fe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ge).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.he).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ie).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.je).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ke).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.le).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.me).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ne).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.oe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.pe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.qe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.re).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.se).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.te).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ue).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ve).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.we).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.xe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ye).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ze).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ae).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Be).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ce).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.De).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ee).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Fe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ge).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.He).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ie).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Je).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ke).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Le).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Me).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ne).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Oe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Pe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Qe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Re).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Se).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Te).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ue).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ve).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.We).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Xe).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ye).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ze).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm._e).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.$e).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.af).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.bf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.cf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.df).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ef).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ff).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.gf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.hf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.jf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.kf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.lf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.mf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.nf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.of).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.pf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.qf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.rf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.sf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.tf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.uf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.vf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.wf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.xf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.yf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.zf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Af).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Bf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Cf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Df).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ef).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ff).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Gf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Hf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.If).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Jf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Kf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Lf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Mf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Nf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Of).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Pf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Qf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Rf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Sf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Tf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Uf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Vf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Wf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Xf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Yf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Zf).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm._f).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.$f).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ag).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.bg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.cg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.dg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.eg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.fg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.gg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.hg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ig).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.jg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.kg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.lg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.mg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ng).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.og).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.pg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.qg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.rg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.sg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.tg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215unsigned_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215unsigned_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.ug).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet220tx_construction_dataENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet220tx_construction_dataENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.vg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairImNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairImNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.wg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213signed_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213signed_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.xg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet210pending_txENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet210pending_txENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.yg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.zg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215multisig_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215multisig_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ag).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet219reserve_proof_entryENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet219reserve_proof_entryENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Bg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet219reserve_proof_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet219reserve_proof_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Cg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9signatureENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9signatureENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Dg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25tupleIJyyNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25tupleIJyyNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Eg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Fg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Gg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Hg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ig).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms9file_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms9file_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Jg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9chacha_ivEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9chacha_ivEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Kg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms13message_storeEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms13message_storeEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Lg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms17authorized_signerENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms17authorized_signerENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Mg).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms17authorized_signerEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms17authorized_signerEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Ng).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms7messageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms7messageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Og).apply(null,arguments)},s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms7messageEE16load_object_dataERNS1_14basic_iarchiveEPvj=function(){return(s.__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms7messageEE16load_object_dataERNS1_14basic_iarchiveEPvj=s.asm.Pg).apply(null,arguments)},s.___getTypeName=function(){return(Nt=s.___getTypeName=s.asm.Qg).apply(null,arguments)}),Mt=(s.___embind_register_native_and_builtin_types=function(){return(s.___embind_register_native_and_builtin_types=s.asm.Rg).apply(null,arguments)},s._emscripten_builtin_memalign=function(){return(Mt=s._emscripten_builtin_memalign=s.asm.Sg).apply(null,arguments)}),It=s._setThrew=function(){return(It=s._setThrew=s.asm.Tg).apply(null,arguments)},At=s.stackSave=function(){return(At=s.stackSave=s.asm.Ug).apply(null,arguments)},Tt=s.stackRestore=function(){return(Tt=s.stackRestore=s.asm.Vg).apply(null,arguments)},Rt=s.___cxa_can_catch=function(){return(Rt=s.___cxa_can_catch=s.asm.Wg).apply(null,arguments)},Pt=s.___cxa_is_pointer_type=function(){return(Pt=s.___cxa_is_pointer_type=s.asm.Xg).apply(null,arguments)},Ot=s.dynCall_ii=function(){return(Ot=s.dynCall_ii=s.asm.Yg).apply(null,arguments)},Bt=s.dynCall_vi=function(){return(Bt=s.dynCall_vi=s.asm.Zg).apply(null,arguments)},Ct=s.dynCall_iii=function(){return(Ct=s.dynCall_iii=s.asm._g).apply(null,arguments)},zt=s.dynCall_vii=function(){return(zt=s.dynCall_vii=s.asm.$g).apply(null,arguments)},Ft=s.dynCall_v=function(){return(Ft=s.dynCall_v=s.asm.ah).apply(null,arguments)},Dt=s.dynCall_viiiii=function(){return(Dt=s.dynCall_viiiii=s.asm.bh).apply(null,arguments)},qt=s.dynCall_iij=function(){return(qt=s.dynCall_iij=s.asm.ch).apply(null,arguments)},Lt=(s.dynCall_iiiiijii=function(){return(s.dynCall_iiiiijii=s.asm.dh).apply(null,arguments)},s.dynCall_iiijiii=function(){return(s.dynCall_iiijiii=s.asm.eh).apply(null,arguments)},s.dynCall_iiiijii=function(){return(s.dynCall_iiiijii=s.asm.fh).apply(null,arguments)},s.dynCall_ji=function(){return(Lt=s.dynCall_ji=s.asm.gh).apply(null,arguments)}),Ut=s.dynCall_viii=function(){return(Ut=s.dynCall_viii=s.asm.hh).apply(null,arguments)},Ht=s.dynCall_iiii=function(){return(Ht=s.dynCall_iiii=s.asm.ih).apply(null,arguments)},Kt=s.dynCall_iiiii=function(){return(Kt=s.dynCall_iiiii=s.asm.jh).apply(null,arguments)},Wt=s.dynCall_viijiiii=function(){return(Wt=s.dynCall_viijiiii=s.asm.kh).apply(null,arguments)},Zt=s.dynCall_viiii=function(){return(Zt=s.dynCall_viiii=s.asm.lh).apply(null,arguments)},Jt=(s.dynCall_vij=function(){return(s.dynCall_vij=s.asm.mh).apply(null,arguments)},s.dynCall_jiiii=function(){return(Jt=s.dynCall_jiiii=s.asm.nh).apply(null,arguments)}),Vt=s.dynCall_viij=function(){return(Vt=s.dynCall_viij=s.asm.oh).apply(null,arguments)},$t=(s.dynCall_viiji=function(){return(s.dynCall_viiji=s.asm.ph).apply(null,arguments)},s.dynCall_jii=function(){return($t=s.dynCall_jii=s.asm.qh).apply(null,arguments)}),Gt=s.dynCall_jiii=function(){return(Gt=s.dynCall_jiii=s.asm.rh).apply(null,arguments)},Qt=s.dynCall_viiiiii=function(){return(Qt=s.dynCall_viiiiii=s.asm.sh).apply(null,arguments)},Xt=s.dynCall_viiiji=function(){return(Xt=s.dynCall_viiiji=s.asm.th).apply(null,arguments)},Yt=(s.dynCall_vijiiii=function(){return(s.dynCall_vijiiii=s.asm.uh).apply(null,arguments)},s.dynCall_iiiiiiiii=function(){return(s.dynCall_iiiiiiiii=s.asm.vh).apply(null,arguments)},s.dynCall_iiiiii=function(){return(Yt=s.dynCall_iiiiii=s.asm.wh).apply(null,arguments)}),er=(s.dynCall_vijjjdi=function(){return(s.dynCall_vijjjdi=s.asm.xh).apply(null,arguments)},s.dynCall_vijj=function(){return(s.dynCall_vijj=s.asm.yh).apply(null,arguments)},s.dynCall_viji=function(){return(er=s.dynCall_viji=s.asm.zh).apply(null,arguments)}),tr=(s.dynCall_vijiijjiij=function(){return(s.dynCall_vijiijjiij=s.asm.Ah).apply(null,arguments)},s.dynCall_vijiiji=function(){return(s.dynCall_vijiiji=s.asm.Bh).apply(null,arguments)},s.dynCall_vijiijii=function(){return(tr=s.dynCall_vijiijii=s.asm.Ch).apply(null,arguments)}),rr=(s.dynCall_vijii=function(){return(s.dynCall_vijii=s.asm.Dh).apply(null,arguments)},s.dynCall_vijij=function(){return(s.dynCall_vijij=s.asm.Eh).apply(null,arguments)},s.dynCall_viijii=function(){return(rr=s.dynCall_viijii=s.asm.Fh).apply(null,arguments)}),ir=s.dynCall_viiiiiiii=function(){return(ir=s.dynCall_viiiiiiii=s.asm.Gh).apply(null,arguments)},nr=s.dynCall_iiiiiiii=function(){return(nr=s.dynCall_iiiiiiii=s.asm.Hh).apply(null,arguments)},ar=s.dynCall_iiiiji=function(){return(ar=s.dynCall_iiiiji=s.asm.Ih).apply(null,arguments)},or=s.dynCall_iiiiiji=function(){return(or=s.dynCall_iiiiiji=s.asm.Jh).apply(null,arguments)},sr=s.dynCall_viijjd=function(){return(sr=s.dynCall_viijjd=s.asm.Kh).apply(null,arguments)},ur=s.dynCall_viiijjjjii=function(){return(ur=s.dynCall_viiijjjjii=s.asm.Lh).apply(null,arguments)},cr=s.dynCall_jiiiii=function(){return(cr=s.dynCall_jiiiii=s.asm.Mh).apply(null,arguments)},lr=s.dynCall_iiiiiiiiii=function(){return(lr=s.dynCall_iiiiiiiiii=s.asm.Nh).apply(null,arguments)},hr=s.dynCall_iiiiiii=function(){return(hr=s.dynCall_iiiiiii=s.asm.Oh).apply(null,arguments)},pr=(s.dynCall_viiiiiiiii=function(){return(s.dynCall_viiiiiiiii=s.asm.Ph).apply(null,arguments)},s.dynCall_viiiiiiiiii=function(){return(pr=s.dynCall_viiiiiiiiii=s.asm.Qh).apply(null,arguments)}),dr=s.dynCall_viiiiiii=function(){return(dr=s.dynCall_viiiiiii=s.asm.Rh).apply(null,arguments)},fr=(s.dynCall_iiiij=function(){return(s.dynCall_iiiij=s.asm.Sh).apply(null,arguments)},s.dynCall_iiiiiiiiiiiiiiii=function(){return(s.dynCall_iiiiiiiiiiiiiiii=s.asm.Th).apply(null,arguments)},s.dynCall_jiji=function(){return(s.dynCall_jiji=s.asm.Uh).apply(null,arguments)},s.dynCall_iidiiii=function(){return(s.dynCall_iidiiii=s.asm.Vh).apply(null,arguments)},s.dynCall_j=function(){return(fr=s.dynCall_j=s.asm.Wh).apply(null,arguments)}),mr=s.dynCall_iiiiij=function(){return(mr=s.dynCall_iiiiij=s.asm.Xh).apply(null,arguments)},gr=s.dynCall_iiiiid=function(){return(gr=s.dynCall_iiiiid=s.asm.Yh).apply(null,arguments)},vr=(s.dynCall_iiiiiiiiiii=function(){return(s.dynCall_iiiiiiiiiii=s.asm.Zh).apply(null,arguments)},s.dynCall_iiiiiiiiiiiii=function(){return(s.dynCall_iiiiiiiiiiiii=s.asm._h).apply(null,arguments)},s.dynCall_fiii=function(){return(vr=s.dynCall_fiii=s.asm.$h).apply(null,arguments)}),yr=s.dynCall_diii=function(){return(yr=s.dynCall_diii=s.asm.ai).apply(null,arguments)},_r=s.dynCall_i=function(){return(_r=s.dynCall_i=s.asm.bi).apply(null,arguments)},br=s.dynCall_iiiiiiiiiiii=function(){return(br=s.dynCall_iiiiiiiiiiii=s.asm.ci).apply(null,arguments)},wr=s.dynCall_viiiiiiiiiiiiiii=function(){return(wr=s.dynCall_viiiiiiiiiiiiiii=s.asm.di).apply(null,arguments)};function Er(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function kr(e){function r(){Et||(Et=!0,s.calledRun=!0,O||(s.noFSInit||ze.init.initialized||ze.init(),ze.ignorePermissions=!1,Be.init(),ke(ue),t(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),function(){if(s.postRun)for("function"==typeof s.postRun&&(s.postRun=[s.postRun]);s.postRun.length;)e=s.postRun.shift(),ce.unshift(e);var e;ke(ce)}()))}e=e||m,fe>0||(function(){if(s.preRun)for("function"==typeof s.preRun&&(s.preRun=[s.preRun]);s.preRun.length;)e=s.preRun.shift(),se.unshift(e);var e;ke(se)}(),fe>0||(s.setStatus?(s.setStatus("Running..."),setTimeout((function(){setTimeout((function(){s.setStatus("")}),1),r()}),1)):r()))}function Sr(e){P=e,le()||(s.onExit&&s.onExit(e),O=!0),v(e,new Er(e))}if(s.dynCall_iiiiijj=function(){return(s.dynCall_iiiiijj=s.asm.ei).apply(null,arguments)},s.dynCall_iiiiiijj=function(){return(s.dynCall_iiiiiijj=s.asm.fi).apply(null,arguments)},s._asyncify_start_unwind=function(){return(s._asyncify_start_unwind=s.asm.gi).apply(null,arguments)},s._asyncify_stop_unwind=function(){return(s._asyncify_stop_unwind=s.asm.hi).apply(null,arguments)},s._asyncify_start_rewind=function(){return(s._asyncify_start_rewind=s.asm.ii).apply(null,arguments)},s._asyncify_stop_rewind=function(){return(s._asyncify_stop_rewind=s.asm.ji).apply(null,arguments)},s.UTF8ToString=F,s.stringToUTF8=q,s.lengthBytesUTF8=L,s.addFunction=function(e,t){if(x||(x=new WeakMap,function(e,t){for(var r=0;r<0+t;r++){var i=(n=r,oe.get(n));i&&x.set(i,r)}var n}(0,oe.length)),x.has(e))return x.get(e);var r=function(){if(N.length)return N.pop();try{oe.grow(1)}catch(e){if(!(e instanceof RangeError))throw e;throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH."}return oe.length-1}();try{Se(r,e)}catch(n){if(!(n instanceof TypeError))throw n;var i=function(e,t){if("function"==typeof WebAssembly.Function){for(var r={i:"i32",j:"i64",f:"f32",d:"f64"},i={parameters:[],results:"v"==t[0]?[]:[r[t[0]]]},n=1;n255&&(i&=255),t.push(String.fromCharCode(i))}return t.join("")},ge=function e(){Et||kr(),Et||(ge=e)},s.run=kr,s.preInit)for("function"==typeof s.preInit&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return kr(),e.ready});e.exports=o},86192:(e,t,r)=>{var i,n=r(34155),a=r(48764).Buffer,o=(i=(i="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0)||"/index.js",function(e){var t,o,s=void 0!==(e=e||{})?e:{};s.ready=new Promise((function(e,r){t=e,o=r}));var u,c,l,h,p,d,f=Object.assign({},s),m=[],g="./this.program",v=(e,t)=>{throw t},y="object"==typeof window,_="function"==typeof importScripts,b="object"==typeof n&&"object"==typeof n.versions&&"string"==typeof n.versions.node,w="";b?(w=_?r(26470).dirname(w)+"/":"//",d=()=>{p||(h=r(76614),p=r(26470))},u=function(e,t){return d(),e=p.normalize(e),h.readFileSync(e,t?void 0:"utf8")},l=e=>{var t=u(e,!0);return t.buffer||(t=new Uint8Array(t)),t},c=(e,t,r)=>{d(),e=p.normalize(e),h.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},n.argv.length>1&&(g=n.argv[1].replace(/\\/g,"/")),m=n.argv.slice(2),n.on("unhandledRejection",(function(e){throw e})),v=(e,t)=>{if(ue())throw n.exitCode=e,t;var r;(r=t)instanceof Pt||k("exiting due to exception: "+r),n.exit(e)},s.inspect=function(){return"[Emscripten Module object]"}):(y||_)&&(_?w=self.location.href:"undefined"!=typeof document&&document.currentScript&&(w=document.currentScript.src),i&&(w=i),w=0!==w.indexOf("blob:")?w.substr(0,w.replace(/[?#].*/,"").lastIndexOf("/")+1):"",u=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},_&&(l=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),c=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var E=s.print||console.log.bind(console),k=s.printErr||console.warn.bind(console);function S(e){return e<128?[e]:[e%128|128,e>>7]}Object.assign(s,f),f=null,s.arguments&&(m=s.arguments),s.thisProgram&&(g=s.thisProgram),s.quit&&(v=s.quit);var x,j,N=[],M=0,I=e=>{M=e},A=()=>M;s.wasmBinary&&(j=s.wasmBinary);var T,R=s.noExitRuntime||!0;"object"!=typeof WebAssembly&&ve("no native wasm support detected");var P=!1;var O="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function B(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&O)return O.decode(e.subarray(t,n));for(var a="";t>10,56320|1023&c)}}else a+=String.fromCharCode((31&o)<<6|s)}else a+=String.fromCharCode(o)}return a}function C(e,t){return e?B(U,e,t):""}function z(e,t,r,i){if(!(i>0))return 0;for(var n=r,a=r+i-1,o=0;o=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++o)),s<=127){if(r>=a)break;t[r++]=s}else if(s<=2047){if(r+1>=a)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=a)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=a)break;t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-n}function F(e,t,r){return z(e,U,t,r)}function D(e){for(var t=0,r=0;r=55296&&i<=57343&&(i=65536+((1023&i)<<10)|1023&e.charCodeAt(++r)),i<=127?++t:t+=i<=2047?2:i<=65535?3:4}return t}var q,L,U,H,K,W,Z,J,V,$="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function G(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&K[i];)++i;if((r=i<<1)-e>32&&$)return $.decode(U.subarray(e,r));for(var a="",o=0;!(o>=t/2);++o){var s=H[e+2*o>>1];if(0==s)break;a+=String.fromCharCode(s)}return a}function Q(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,a=0;a>1]=o,t+=2}return H[t>>1]=0,t-i}function X(e){return 2*e.length}function Y(e,t){for(var r=0,i="";!(r>=t/4);){var n=W[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var a=n-65536;i+=String.fromCharCode(55296|a>>10,56320|1023&a)}else i+=String.fromCharCode(n)}return i}function ee(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,a=0;a=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a)),W[t>>2]=o,(t+=4)+4>n)break}return W[t>>2]=0,t-i}function te(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}function re(e){var t=D(e)+1,r=gt(t);return r&&z(e,L,r,t),r}function ie(e){q=e,s.HEAP8=L=new Int8Array(e),s.HEAP16=H=new Int16Array(e),s.HEAP32=W=new Int32Array(e),s.HEAPU8=U=new Uint8Array(e),s.HEAPU16=K=new Uint16Array(e),s.HEAPU32=Z=new Uint32Array(e),s.HEAPF32=J=new Float32Array(e),s.HEAPF64=V=new Float64Array(e)}s.INITIAL_MEMORY;var ne,ae=[],oe=[],se=[];function ue(){return R}var ce,le,he,pe=0,de=null,fe=null;function me(e){pe++,s.monitorRunDependencies&&s.monitorRunDependencies(pe)}function ge(e){if(pe--,s.monitorRunDependencies&&s.monitorRunDependencies(pe),0==pe&&(null!==de&&(clearInterval(de),de=null),fe)){var t=fe;fe=null,t()}}function ve(e){s.onAbort&&s.onAbort(e),k(e="Aborted("+e+")"),P=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw o(t),t}function ye(e){return e.startsWith("data:application/octet-stream;base64,")}function _e(e){return e.startsWith("file://")}function be(e){try{if(e==ce&&j)return new Uint8Array(j);if(l)return l(e);throw"both async and sync fetching of the wasm failed"}catch(e){ve(e)}}function we(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var r=t.func;"number"==typeof r?void 0===t.arg?Ee(r)():Ee(r)(t.arg):r(void 0===t.arg?null:t.arg)}else t(s)}}function Ee(e){return ne.get(e)}function ke(e,t){ne.set(e,t)}ye(ce="monero_wallet_keys.wasm")||(ce=function(e){return s.locateFile?s.locateFile(e,w):w+e}(ce));var Se=[],xe=0,je=0;function Ne(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){Z[this.ptr+4>>2]=e},this.get_type=function(){return Z[this.ptr+4>>2]},this.set_destructor=function(e){Z[this.ptr+8>>2]=e},this.get_destructor=function(){return Z[this.ptr+8>>2]},this.set_refcount=function(e){W[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,L[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=L[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,L[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=L[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=W[this.ptr>>2];W[this.ptr>>2]=e+1},this.release_ref=function(){var e=W[this.ptr>>2];return W[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){Z[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return Z[this.ptr+16>>2]},this.get_exception_ptr=function(){if(St(this.get_type()))return Z[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}function Me(e){return vt(new Ne(e).ptr)}var Ie={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=Ie.isAbs(e),r="/"===e.substr(-1);return(e=Ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=Ie.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=Ie.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return Ie.normalize(e.join("/"))},join2:(e,t)=>Ie.normalize(e+"/"+t)},Ae={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Pe.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=Ie.isAbs(i)}return(t?"/":"")+(e=Ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=Ae.resolve(e).substr(1),t=Ae.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),a=Math.min(i.length,n.length),o=a,s=0;s0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=dt(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(E(B(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(E(B(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(k(B(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(k(B(e.output,0)),e.output=[])}}},Re={ops_table:null,mount:function(e){return Re.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(Pe.isBlkdev(r)||Pe.isFIFO(r))throw new Pe.ErrnoError(63);Re.ops_table||(Re.ops_table={dir:{node:{getattr:Re.node_ops.getattr,setattr:Re.node_ops.setattr,lookup:Re.node_ops.lookup,mknod:Re.node_ops.mknod,rename:Re.node_ops.rename,unlink:Re.node_ops.unlink,rmdir:Re.node_ops.rmdir,readdir:Re.node_ops.readdir,symlink:Re.node_ops.symlink},stream:{llseek:Re.stream_ops.llseek}},file:{node:{getattr:Re.node_ops.getattr,setattr:Re.node_ops.setattr},stream:{llseek:Re.stream_ops.llseek,read:Re.stream_ops.read,write:Re.stream_ops.write,allocate:Re.stream_ops.allocate,mmap:Re.stream_ops.mmap,msync:Re.stream_ops.msync}},link:{node:{getattr:Re.node_ops.getattr,setattr:Re.node_ops.setattr,readlink:Re.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Re.node_ops.getattr,setattr:Re.node_ops.setattr},stream:Pe.chrdev_stream_ops}});var n=Pe.createNode(e,t,r,i);return Pe.isDir(n.mode)?(n.node_ops=Re.ops_table.dir.node,n.stream_ops=Re.ops_table.dir.stream,n.contents={}):Pe.isFile(n.mode)?(n.node_ops=Re.ops_table.file.node,n.stream_ops=Re.ops_table.file.stream,n.usedBytes=0,n.contents=null):Pe.isLink(n.mode)?(n.node_ops=Re.ops_table.link.node,n.stream_ops=Re.ops_table.link.stream):Pe.isChrdev(n.mode)&&(n.node_ops=Re.ops_table.chrdev.node,n.stream_ops=Re.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=Pe.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,Pe.isDir(e.mode)?t.size=4096:Pe.isFile(e.mode)?t.size=e.usedBytes:Pe.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&Re.resizeFileStorage(e,t.size)},lookup:function(e,t){throw Pe.genericErrors[44]},mknod:function(e,t,r,i){return Re.createNode(e,t,r,i)},rename:function(e,t,r){if(Pe.isDir(e.mode)){var i;try{i=Pe.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new Pe.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=Pe.lookupNode(e,t);for(var i in r.contents)throw new Pe.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=Re.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!Pe.isLink(e.mode))throw new Pe.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var a=e.node.contents;if(n>=e.node.usedBytes)return 0;var o=Math.min(e.node.usedBytes-n,i);if(o>8&&a.subarray)t.set(a.subarray(n,n+o),r);else for(var s=0;s0||i+r{if(!(e=Ae.resolve(Pe.cwd(),e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new Pe.ErrnoError(32);for(var r=Ie.normalizeArray(e.split("/").filter((e=>!!e)),!1),i=Pe.root,n="/",a=0;a40)throw new Pe.ErrnoError(32)}}return{path:n,node:i}},getPath:e=>{for(var t;;){if(Pe.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%Pe.nameTable.length},hashAddNode:e=>{var t=Pe.hashName(e.parent.id,e.name);e.name_next=Pe.nameTable[t],Pe.nameTable[t]=e},hashRemoveNode:e=>{var t=Pe.hashName(e.parent.id,e.name);if(Pe.nameTable[t]===e)Pe.nameTable[t]=e.name_next;else for(var r=Pe.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=Pe.mayLookup(e);if(r)throw new Pe.ErrnoError(r,e);for(var i=Pe.hashName(e.id,t),n=Pe.nameTable[i];n;n=n.name_next){var a=n.name;if(n.parent.id===e.id&&a===t)return n}return Pe.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new Pe.FSNode(e,t,r,i);return Pe.hashAddNode(n),n},destroyNode:e=>{Pe.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=Pe.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Pe.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>Pe.nodePermissions(e,"x")||(e.node_ops.lookup?0:2),mayCreate:(e,t)=>{try{return Pe.lookupNode(e,t),20}catch(e){}return Pe.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=Pe.lookupNode(e,t)}catch(e){return e.errno}var n=Pe.nodePermissions(e,"wx");if(n)return n;if(r){if(!Pe.isDir(i.mode))return 54;if(Pe.isRoot(i)||Pe.getPath(i)===Pe.cwd())return 10}else if(Pe.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Pe.isLink(e.mode)?32:Pe.isDir(e.mode)&&("r"!==Pe.flagsToPermissionString(t)||512&t)?31:Pe.nodePermissions(e,Pe.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,t=Pe.MAX_OPEN_FDS)=>{for(var r=e;r<=t;r++)if(!Pe.streams[r])return r;throw new Pe.ErrnoError(33)},getStream:e=>Pe.streams[e],createStream:(e,t,r)=>{Pe.FSStream||(Pe.FSStream=function(){this.shared={}},Pe.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get function(){return this.shared.position},set:function(e){this.shared.position=e}}}),e=Object.assign(new Pe.FSStream,e);var i=Pe.nextfd(t,r);return e.fd=i,Pe.streams[i]=e,e},closeStream:e=>{Pe.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=Pe.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new Pe.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{Pe.devices[e]={stream_ops:t}},getDevice:e=>Pe.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),Pe.syncFSRequests++,Pe.syncFSRequests>1&&k("warning: "+Pe.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=Pe.getMounts(Pe.root.mount),i=0;function n(e){return Pe.syncFSRequests--,t(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return a(null);t.type.syncfs(t,e,a)}))},mount:(e,t,r)=>{var i,n="/"===r,a=!r;if(n&&Pe.root)throw new Pe.ErrnoError(10);if(!n&&!a){var o=Pe.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,Pe.isMountpoint(i))throw new Pe.ErrnoError(10);if(!Pe.isDir(i.mode))throw new Pe.ErrnoError(54)}var s={type:e,opts:t,mountpoint:r,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,n?Pe.root=u:i&&(i.mounted=s,i.mount&&i.mount.mounts.push(s)),u},unmount:e=>{var t=Pe.lookupPath(e,{follow_mount:!1});if(!Pe.isMountpoint(t.node))throw new Pe.ErrnoError(28);var r=t.node,i=r.mounted,n=Pe.getMounts(i);Object.keys(Pe.nameTable).forEach((e=>{for(var t=Pe.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&Pe.destroyNode(t),t=r}})),r.mounted=null;var a=r.mount.mounts.indexOf(i);r.mount.mounts.splice(a,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=Pe.lookupPath(e,{parent:!0}).node,n=Ie.basename(e);if(!n||"."===n||".."===n)throw new Pe.ErrnoError(28);var a=Pe.mayCreate(i,n);if(a)throw new Pe.ErrnoError(a);if(!i.node_ops.mknod)throw new Pe.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Pe.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Pe.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,Pe.mknod(e,t,r)),symlink:(e,t)=>{if(!Ae.resolve(e))throw new Pe.ErrnoError(44);var r=Pe.lookupPath(t,{parent:!0}).node;if(!r)throw new Pe.ErrnoError(44);var i=Ie.basename(t),n=Pe.mayCreate(r,i);if(n)throw new Pe.ErrnoError(n);if(!r.node_ops.symlink)throw new Pe.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=Ie.dirname(e),a=Ie.dirname(t),o=Ie.basename(e),s=Ie.basename(t);if(r=Pe.lookupPath(e,{parent:!0}).node,i=Pe.lookupPath(t,{parent:!0}).node,!r||!i)throw new Pe.ErrnoError(44);if(r.mount!==i.mount)throw new Pe.ErrnoError(75);var u,c=Pe.lookupNode(r,o),l=Ae.relative(e,a);if("."!==l.charAt(0))throw new Pe.ErrnoError(28);if("."!==(l=Ae.relative(t,n)).charAt(0))throw new Pe.ErrnoError(55);try{u=Pe.lookupNode(i,s)}catch(e){}if(c!==u){var h=Pe.isDir(c.mode),p=Pe.mayDelete(r,o,h);if(p)throw new Pe.ErrnoError(p);if(p=u?Pe.mayDelete(i,s,h):Pe.mayCreate(i,s))throw new Pe.ErrnoError(p);if(!r.node_ops.rename)throw new Pe.ErrnoError(63);if(Pe.isMountpoint(c)||u&&Pe.isMountpoint(u))throw new Pe.ErrnoError(10);if(i!==r&&(p=Pe.nodePermissions(r,"w")))throw new Pe.ErrnoError(p);Pe.hashRemoveNode(c);try{r.node_ops.rename(c,i,s)}catch(e){throw e}finally{Pe.hashAddNode(c)}}},rmdir:e=>{var t=Pe.lookupPath(e,{parent:!0}).node,r=Ie.basename(e),i=Pe.lookupNode(t,r),n=Pe.mayDelete(t,r,!0);if(n)throw new Pe.ErrnoError(n);if(!t.node_ops.rmdir)throw new Pe.ErrnoError(63);if(Pe.isMountpoint(i))throw new Pe.ErrnoError(10);t.node_ops.rmdir(t,r),Pe.destroyNode(i)},readdir:e=>{var t=Pe.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Pe.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=Pe.lookupPath(e,{parent:!0}).node;if(!t)throw new Pe.ErrnoError(44);var r=Ie.basename(e),i=Pe.lookupNode(t,r),n=Pe.mayDelete(t,r,!1);if(n)throw new Pe.ErrnoError(n);if(!t.node_ops.unlink)throw new Pe.ErrnoError(63);if(Pe.isMountpoint(i))throw new Pe.ErrnoError(10);t.node_ops.unlink(t,r),Pe.destroyNode(i)},readlink:e=>{var t=Pe.lookupPath(e).node;if(!t)throw new Pe.ErrnoError(44);if(!t.node_ops.readlink)throw new Pe.ErrnoError(28);return Ae.resolve(Pe.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=Pe.lookupPath(e,{follow:!t}).node;if(!r)throw new Pe.ErrnoError(44);if(!r.node_ops.getattr)throw new Pe.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Pe.stat(e,!0),chmod:(e,t,r)=>{var i;if(!(i="string"==typeof e?Pe.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new Pe.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{Pe.chmod(e,t,!0)},fchmod:(e,t)=>{var r=Pe.getStream(e);if(!r)throw new Pe.ErrnoError(8);Pe.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;if(!(n="string"==typeof e?Pe.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new Pe.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{Pe.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=Pe.getStream(e);if(!i)throw new Pe.ErrnoError(8);Pe.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new Pe.ErrnoError(28);var r;if(!(r="string"==typeof e?Pe.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new Pe.ErrnoError(63);if(Pe.isDir(r.mode))throw new Pe.ErrnoError(31);if(!Pe.isFile(r.mode))throw new Pe.ErrnoError(28);var i=Pe.nodePermissions(r,"w");if(i)throw new Pe.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=Pe.getStream(e);if(!r)throw new Pe.ErrnoError(8);if(0==(2097155&r.flags))throw new Pe.ErrnoError(28);Pe.truncate(r.node,t)},utime:(e,t,r)=>{var i=Pe.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,t,r)=>{if(""===e)throw new Pe.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?Pe.modeStringToFlags(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=Ie.normalize(e);try{i=Pe.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var n=!1;if(64&t)if(i){if(128&t)throw new Pe.ErrnoError(20)}else i=Pe.mknod(e,r,0),n=!0;if(!i)throw new Pe.ErrnoError(44);if(Pe.isChrdev(i.mode)&&(t&=-513),65536&t&&!Pe.isDir(i.mode))throw new Pe.ErrnoError(54);if(!n){var a=Pe.mayOpen(i,t);if(a)throw new Pe.ErrnoError(a)}512&t&&!n&&Pe.truncate(i,0),t&=-131713;var o=Pe.createStream({node:i,path:Pe.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!s.logReadFiles||1&t||(Pe.readFiles||(Pe.readFiles={}),e in Pe.readFiles||(Pe.readFiles[e]=1)),o},close:e=>{if(Pe.isClosed(e))throw new Pe.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Pe.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(Pe.isClosed(e))throw new Pe.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Pe.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Pe.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new Pe.ErrnoError(28);if(Pe.isClosed(e))throw new Pe.ErrnoError(8);if(1==(2097155&e.flags))throw new Pe.ErrnoError(8);if(Pe.isDir(e.node.mode))throw new Pe.ErrnoError(31);if(!e.stream_ops.read)throw new Pe.ErrnoError(28);var a=void 0!==n;if(a){if(!e.seekable)throw new Pe.ErrnoError(70)}else n=e.position;var o=e.stream_ops.read(e,t,r,i,n);return a||(e.position+=o),o},write:(e,t,r,i,n,a)=>{if(i<0||n<0)throw new Pe.ErrnoError(28);if(Pe.isClosed(e))throw new Pe.ErrnoError(8);if(0==(2097155&e.flags))throw new Pe.ErrnoError(8);if(Pe.isDir(e.node.mode))throw new Pe.ErrnoError(31);if(!e.stream_ops.write)throw new Pe.ErrnoError(28);e.seekable&&1024&e.flags&&Pe.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new Pe.ErrnoError(70)}else n=e.position;var s=e.stream_ops.write(e,t,r,i,n,a);return o||(e.position+=s),s},allocate:(e,t,r)=>{if(Pe.isClosed(e))throw new Pe.ErrnoError(8);if(t<0||r<=0)throw new Pe.ErrnoError(28);if(0==(2097155&e.flags))throw new Pe.ErrnoError(8);if(!Pe.isFile(e.node.mode)&&!Pe.isDir(e.node.mode))throw new Pe.ErrnoError(43);if(!e.stream_ops.allocate)throw new Pe.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n,a)=>{if(0!=(2&n)&&0==(2&a)&&2!=(2097155&e.flags))throw new Pe.ErrnoError(2);if(1==(2097155&e.flags))throw new Pe.ErrnoError(2);if(!e.stream_ops.mmap)throw new Pe.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n,a)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new Pe.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:(e,t={})=>{if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=Pe.open(e,t.flags),n=Pe.stat(e).size,a=new Uint8Array(n);return Pe.read(i,a,0,n,0),"utf8"===t.encoding?r=B(a,0):"binary"===t.encoding&&(r=a),Pe.close(i),r},writeFile:(e,t,r={})=>{r.flags=r.flags||577;var i=Pe.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(D(t)+1),a=z(t,n,0,n.length);Pe.write(i,n,0,a,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Pe.write(i,t,0,t.byteLength,void 0,r.canOwn)}Pe.close(i)},cwd:()=>Pe.currentPath,chdir:e=>{var t=Pe.lookupPath(e,{follow:!0});if(null===t.node)throw new Pe.ErrnoError(44);if(!Pe.isDir(t.node.mode))throw new Pe.ErrnoError(54);var r=Pe.nodePermissions(t.node,"x");if(r)throw new Pe.ErrnoError(r);Pe.currentPath=t.path},createDefaultDirectories:()=>{Pe.mkdir("/tmp"),Pe.mkdir("/home"),Pe.mkdir("/home/web_user")},createDefaultDevices:()=>{Pe.mkdir("/dev"),Pe.registerDevice(Pe.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),Pe.mkdev("/dev/null",Pe.makedev(1,3)),Te.register(Pe.makedev(5,0),Te.default_tty_ops),Te.register(Pe.makedev(6,0),Te.default_tty1_ops),Pe.mkdev("/dev/tty",Pe.makedev(5,0)),Pe.mkdev("/dev/tty1",Pe.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(b)try{var t=r(55835);return function(){return t.randomBytes(1)[0]}}catch(e){}return function(){ve("randomDevice")}}();Pe.createDevice("/dev","random",e),Pe.createDevice("/dev","urandom",e),Pe.mkdir("/dev/shm"),Pe.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{Pe.mkdir("/proc");var e=Pe.mkdir("/proc/self");Pe.mkdir("/proc/self/fd"),Pe.mount({mount:()=>{var t=Pe.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=Pe.getStream(r);if(!i)throw new Pe.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{s.stdin?Pe.createDevice("/dev","stdin",s.stdin):Pe.symlink("/dev/tty","/dev/stdin"),s.stdout?Pe.createDevice("/dev","stdout",null,s.stdout):Pe.symlink("/dev/tty","/dev/stdout"),s.stderr?Pe.createDevice("/dev","stderr",null,s.stderr):Pe.symlink("/dev/tty1","/dev/stderr"),Pe.open("/dev/stdin",0),Pe.open("/dev/stdout",1),Pe.open("/dev/stderr",1)},ensureErrnoError:()=>{Pe.ErrnoError||(Pe.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Pe.ErrnoError.prototype=new Error,Pe.ErrnoError.prototype.constructor=Pe.ErrnoError,[44].forEach((e=>{Pe.genericErrors[e]=new Pe.ErrnoError(e),Pe.genericErrors[e].stack=""})))},staticInit:()=>{Pe.ensureErrnoError(),Pe.nameTable=new Array(4096),Pe.mount(Re,{},"/"),Pe.createDefaultDirectories(),Pe.createDefaultDevices(),Pe.createSpecialDirectories(),Pe.filesystems={MEMFS:Re}},init:(e,t,r)=>{Pe.init.initialized=!0,Pe.ensureErrnoError(),s.stdin=e||s.stdin,s.stdout=t||s.stdout,s.stderr=r||s.stderr,Pe.createStandardStreams()},quit:()=>{Pe.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=Pe.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=Pe.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=Pe.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=Ie.basename(e),i=Pe.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:Pe.getPath(e);for(var n=t.split("/").reverse();n.length;){var a=n.pop();if(a){var o=Ie.join2(e,a);try{Pe.mkdir(o)}catch(e){}e=o}}return o},createFile:(e,t,r,i,n)=>{var a=Ie.join2("string"==typeof e?e:Pe.getPath(e),t),o=Pe.getMode(i,n);return Pe.create(a,o)},createDataFile:(e,t,r,i,n,a)=>{var o=t;e&&(e="string"==typeof e?e:Pe.getPath(e),o=t?Ie.join2(e,t):e);var s=Pe.getMode(i,n),u=Pe.create(o,s);if(r){if("string"==typeof r){for(var c=new Array(r.length),l=0,h=r.length;l{var n=Ie.join2("string"==typeof e?e:Pe.getPath(e),t),a=Pe.getMode(!!r,!!i);Pe.createDevice.major||(Pe.createDevice.major=64);var o=Pe.makedev(Pe.createDevice.major++,0);return Pe.registerDevice(o,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,a)=>{for(var o=0,s=0;s{for(var o=0;o{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!u)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=dt(u(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new Pe.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,a=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,o=1048576;n||(o=i);var s=this;s.setDataGetter((e=>{var t=e*o,n=(e+1)*o-1;if(n=Math.min(n,i-1),void 0===s.chunks[e]&&(s.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==o&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):dt(n.responseText||"",!0)})(t,n)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!a&&i||(o=i=1,i=this.getter(0).length,o=i,E("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=o,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!_)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new a;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:o}}else s={isDevice:!1,url:r};var u=Pe.createFile(e,t,s,i,n);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};return Object.keys(u.stream_ops).forEach((e=>{var t=u.stream_ops[e];c[e]=function(){return Pe.forceLoadFile(u),t.apply(null,arguments)}})),c.read=(e,t,r,i,n)=>{Pe.forceLoadFile(u);var a=e.node.contents;if(n>=a.length)return 0;var o=Math.min(a.length-n,i);if(a.slice)for(var s=0;s{var h=t?Ae.resolve(Ie.join2(e,t)):e;function p(r){function c(r){l&&l(),s||Pe.createDataFile(e,t,r,i,n,u),a&&a(),ge()}Browser.handledByPreloadPlugin(r,h,c,(()=>{o&&o(),ge()}))||c(r)}me(),"string"==typeof r?function(e,t,r,i){var n="al "+e;c(e,(function(t){var r;r='Loading data file "'+e+'" failed (no arrayBuffer).',t||ve(r),p(new Uint8Array(t)),n&&ge()}),(function(t){if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&me()}(r,0,o):p(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=Pe.indexedDB();try{var n=i.open(Pe.DB_NAME(),Pe.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{E("creating db"),n.result.createObjectStore(Pe.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([Pe.DB_STORE_NAME],"readwrite"),a=i.objectStore(Pe.DB_STORE_NAME),o=0,s=0,u=e.length;function c(){0==s?t():r()}e.forEach((e=>{var t=a.put(Pe.analyzePath(e).object.contents,e);t.onsuccess=()=>{++o+s==u&&c()},t.onerror=()=>{s++,o+s==u&&c()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=Pe.indexedDB();try{var n=i.open(Pe.DB_NAME(),Pe.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var a=i.transaction([Pe.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var o=a.objectStore(Pe.DB_STORE_NAME),s=0,u=0,c=e.length;function l(){0==u?t():r()}e.forEach((e=>{var t=o.get(e);t.onsuccess=()=>{Pe.analyzePath(e).exists&&Pe.unlink(e),Pe.createDataFile(Ie.dirname(e),Ie.basename(e),t.result,!0,!0,!0),++s+u==c&&l()},t.onerror=()=>{u++,s+u==c&&l()}})),a.onerror=r},n.onerror=r}},Oe={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(Ie.isAbs(t))return t;var i;if(-100===e)i=Pe.cwd();else{var n=Pe.getStream(e);if(!n)throw new Pe.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new Pe.ErrnoError(44);return i}return Ie.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&Ie.normalize(t)!==Ie.normalize(Pe.getPath(e.node)))return-54;throw e}return W[r>>2]=i.dev,W[r+4>>2]=0,W[r+8>>2]=i.ino,W[r+12>>2]=i.mode,W[r+16>>2]=i.nlink,W[r+20>>2]=i.uid,W[r+24>>2]=i.gid,W[r+28>>2]=i.rdev,W[r+32>>2]=0,he=[i.size>>>0,(le=i.size,+Math.abs(le)>=1?le>0?(0|Math.min(+Math.floor(le/4294967296),4294967295))>>>0:~~+Math.ceil((le-+(~~le>>>0))/4294967296)>>>0:0)],W[r+40>>2]=he[0],W[r+44>>2]=he[1],W[r+48>>2]=4096,W[r+52>>2]=i.blocks,W[r+56>>2]=i.atime.getTime()/1e3|0,W[r+60>>2]=0,W[r+64>>2]=i.mtime.getTime()/1e3|0,W[r+68>>2]=0,W[r+72>>2]=i.ctime.getTime()/1e3|0,W[r+76>>2]=0,he=[i.ino>>>0,(le=i.ino,+Math.abs(le)>=1?le>0?(0|Math.min(+Math.floor(le/4294967296),4294967295))>>>0:~~+Math.ceil((le-+(~~le>>>0))/4294967296)>>>0:0)],W[r+80>>2]=he[0],W[r+84>>2]=he[1],0},doMsync:function(e,t,r,i,n){var a=U.slice(e,e+r);Pe.msync(t,a,n,r,i)},varargs:void 0,get:function(){return Oe.varargs+=4,W[Oe.varargs-4>>2]},getStr:function(e){return C(e)},getStreamFromFD:function(e){var t=Pe.getStream(e);if(!t)throw new Pe.ErrnoError(8);return t}};function Be(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var Ce=void 0;function ze(e){for(var t="",r=e;U[r];)t+=Ce[U[r++]];return t}var Fe={},De={},qe={};function Le(e,t){var r,i=(r=function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))},function(e){if(void 0===e)return"_unknown";(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0)}(t),function(){return r.apply(this,arguments)});return i.prototype=Object.create(e.prototype),i.prototype.constructor=i,i.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},i}var Ue=void 0;function He(e){throw new Ue(e)}var Ke=void 0;function We(e){throw new Ke(e)}function Ze(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||He('type "'+i+'" must have a positive integer typeid pointer'),De.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He("Cannot register type '"+i+"' twice")}if(De[e]=t,delete qe[e],Fe.hasOwnProperty(e)){var n=Fe[e];delete Fe[e],n.forEach((e=>e()))}}var Je=[],Ve=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function $e(e){e>4&&0==--Ve[e].refcount&&(Ve[e]=void 0,Je.push(e))}var Ge=e=>(e||He("Cannot use deleted val. handle = "+e),Ve[e].value),Qe=e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=Je.length?Je.pop():Ve.length;return Ve[t]={refcount:1,value:e},t}};function Xe(e){return this.fromWireType(Z[e>>2])}function Ye(e,t){switch(t){case 2:return function(e){return this.fromWireType(J[e>>2])};case 3:return function(e){return this.fromWireType(V[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function et(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function tt(e,t,r){return e.includes("j")?function(e,t,r){var i=s["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)}(e,t,r):Ee(t).apply(null,r)}var rt=void 0;function it(e){var t=_t(e),r=ze(t);return vt(t),r}function nt(e,t,r){switch(t){case 0:return r?function(e){return L[e]}:function(e){return U[e]};case 1:return r?function(e){return H[e>>1]}:function(e){return K[e>>1]};case 2:return r?function(e){return W[e>>2]}:function(e){return Z[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function at(e,t){var r=De[e];return void 0===r&&He(t+" has unknown type "+it(e)),r}function ot(e){try{return T.grow(e-q.byteLength+65535>>>16),ie(T.buffer),1}catch(e){}}var st={};function ut(){if(!ut.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:g||"./this.program"};for(var t in st)void 0===st[t]?delete e[t]:e[t]=st[t];var r=[];for(var t in e)r.push(t+"="+e[t]);ut.strings=r}return ut.strings}function ct(e){return e%4==0&&(e%100!=0||e%400==0)}var lt=[31,29,31,30,31,30,31,31,30,31,30,31],ht=[31,28,31,30,31,30,31,31,30,31,30,31];var pt=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Pe.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i};function dt(e,t,r){var i=r>0?r:D(e)+1,n=new Array(i),a=z(e,n,0,n.length);return t&&(n.length=a),n}Object.defineProperties(pt.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return Pe.isDir(this.mode)}},isDevice:{get:function(){return Pe.isChrdev(this.mode)}}}),Pe.FSNode=pt,Pe.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Ce=e}(),Ue=s.BindingError=Le(Error,"BindingError"),Ke=s.InternalError=Le(Error,"InternalError"),s.count_emval_handles=function(){for(var e=0,t=5;t>1]=2,0;case 16:case 8:default:return-28;case 9:return 28,W[yt()>>2]=28,-1}}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return-e.errno}},fa:function(e,t,r){Oe.varargs=r;try{var i=Oe.getStreamFromFD(e);switch(t){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:return i.tty?0:-59;case 21519:if(!i.tty)return-59;var n=Oe.get();return W[n>>2]=0,0;case 21520:return i.tty?-28:-59;case 21531:return n=Oe.get(),Pe.ioctl(i,t,n);default:ve("bad ioctl syscall "+t)}}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return-e.errno}},ma:function(e,t,r){try{return t=Oe.getStr(t),t=Oe.calculateAt(e,t),"/"===(t=Ie.normalize(t))[t.length-1]&&(t=t.substr(0,t.length-1)),Pe.mkdir(t,r,0),0}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return-e.errno}},R:function(e,t,r,i){Oe.varargs=i;try{t=Oe.getStr(t),t=Oe.calculateAt(e,t);var n=i?Oe.get():0;return Pe.open(t,r,n).fd}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return-e.errno}},ka:function(e,t){try{return e=Oe.getStr(e),Oe.doStat(Pe.stat,e,t)}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return-e.errno}},Z:function(e,t,r,i,n){},va:function(e,t,r,i,n){var a=Be(r);Ze(e,{name:t=ze(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=L;else if(2===r)i=H;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=W}return this.fromWireType(i[e>>a])},destructorFunction:null})},ua:function(e,t){Ze(e,{name:t=ze(t),fromWireType:function(e){var t=Ge(e);return $e(e),t},toWireType:function(e,t){return Qe(t)},argPackAdvance:8,readValueFromPointer:Xe,destructorFunction:null})},U:function(e,t,r){var i=Be(r);Ze(e,{name:t=ze(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:Ye(t,i),destructorFunction:null})},s:function(e,t,r,i,n,a){var o=function(e,t){for(var r=[],i=0;i>2)+i]);return r}(t,r);e=ze(e),n=function(e,t){var r,i,n,a=(e=ze(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),tt(r,i,n)}):Ee(t);return"function"!=typeof a&&He("unknown function pointer with signature "+e+": "+t),a}(i,n),function(e,t,r){s.hasOwnProperty(e)?((void 0===r||void 0!==s[e].overloadTable&&void 0!==s[e].overloadTable[r])&&He("Cannot register public name '"+e+"' twice"),function(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}(s,e,e),s.hasOwnProperty(r)&&He("Cannot register multiple overloads of a function with the same number of arguments ("+r+")!"),s[e].overloadTable[r]=t):(s[e]=t,void 0!==r&&(s[e].numArguments=r))}(e,(function(){!function(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||De[t]||(qe[t]?qe[t].forEach(e):(r.push(t),i[t]=!0))})),new rt(e+": "+r.map(it).join([", "]))}("Cannot call "+e+" due to unbound types",o)}),t-1),function(r,i,o){function u(i){var o=function(r){var i=[r[0],null].concat(r.slice(1));return function(e,t,r){s.hasOwnProperty(e)||We("Replacing nonexistant public symbol"),void 0!==s[e].overloadTable&&void 0!==r?s[e].overloadTable[r]=t:(s[e]=t,s[e].argCount=r)}(e,function(e,t,r,i,n){var a=t.length;a<2&&He("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,s=!1,u=1;u{De.hasOwnProperty(e)?c[t]=De[e]:(l.push(e),Fe.hasOwnProperty(e)||(Fe[e]=[]),Fe[e].push((()=>{c[t]=De[e],++h===l.length&&u(c)})))})),0===l.length&&u(c)}([],o)},x:function(e,t,r,i,n){t=ze(t),-1===n&&(n=4294967295);var a=Be(r),o=e=>e;if(0===i){var s=32-8*r;o=e=>e<>>s}var u=t.includes("unsigned");Ze(e,{name:t,fromWireType:o,toWireType:u?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:nt(t,a,0!==i),destructorFunction:null})},u:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=Z,r=t[e>>=2],n=t[e+1];return new i(q,n,r)}Ze(e,{name:r=ze(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},T:function(e,t){var r="std::string"===(t=ze(t));Ze(e,{name:t,fromWireType:function(e){var t,i=Z[e>>2];if(r)for(var n=e+4,a=0;a<=i;++a){var o=e+4+a;if(a==i||0==U[o]){var s=C(n,o-n);void 0===t?t=s:(t+=String.fromCharCode(0),t+=s),n=o+1}}else{var u=new Array(i);for(a=0;aD(t):()=>t.length)(),a=gt(4+n+1);if(Z[a>>2]=n,r&&i)F(t,a+4,n+1);else if(i)for(var o=0;o255&&(vt(a),He("String has UTF-16 code units that do not fit in 8 bits")),U[a+4+o]=s}else for(o=0;oK,s=1):4===t&&(i=Y,n=ee,o=te,a=()=>Z,s=2),Ze(e,{name:r,fromWireType:function(e){for(var r,n=Z[e>>2],o=a(),u=e+4,c=0;c<=n;++c){var l=e+4+c*t;if(c==n||0==o[l>>s]){var h=i(u,l-u);void 0===r?r=h:(r+=String.fromCharCode(0),r+=h),u=l+t}}return vt(e),r},toWireType:function(e,i){"string"!=typeof i&&He("Cannot pass non-string to C++ string type "+r);var a=o(i),u=gt(4+a+t);return Z[u>>2]=a>>s,n(i,u+4,a+t),null!==e&&e.push(vt,u),u},argPackAdvance:8,readValueFromPointer:Xe,destructorFunction:function(e){vt(e)}})},wa:function(e,t){Ze(e,{isVoid:!0,name:t=ze(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},H:function(){return Date.now()},pa:function(){return!0},la:function(e,t){F(g,e,t)},Da:function(e,t,r,i){e=Ge(e);for(var n=function(e,t){for(var r=new Array(e),i=0;i>2)+i],"parameter "+i);return r}(t,r),a=new Array(t),o=0;o4&&(Ve[e].refcount+=1)},za:function(e,t){var r=(e=at(e,"_emval_take_value")).readValueFromPointer(t);return Qe(r)},qa:function(e,t){var r=new Date(1e3*W[e>>2]);W[t>>2]=r.getUTCSeconds(),W[t+4>>2]=r.getUTCMinutes(),W[t+8>>2]=r.getUTCHours(),W[t+12>>2]=r.getUTCDate(),W[t+16>>2]=r.getUTCMonth(),W[t+20>>2]=r.getUTCFullYear()-1900,W[t+24>>2]=r.getUTCDay();var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/864e5|0;W[t+28>>2]=n},ra:function(e){var t=new Date(W[e+20>>2]+1900,W[e+16>>2],W[e+12>>2],W[e+8>>2],W[e+4>>2],W[e>>2],0),r=W[e+32>>2],i=t.getTimezoneOffset(),n=new Date(t.getFullYear(),0,1),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),o=n.getTimezoneOffset(),s=Math.min(o,a);if(r<0)W[e+32>>2]=Number(a!=o&&s==i);else if(r>0!=(s==i)){var u=Math.max(o,a),c=r>0?s:u;t.setTime(t.getTime()+6e4*(c-i))}W[e+24>>2]=t.getDay();var l=(t.getTime()-n.getTime())/864e5|0;return W[e+28>>2]=l,W[e>>2]=t.getSeconds(),W[e+4>>2]=t.getMinutes(),W[e+8>>2]=t.getHours(),W[e+12>>2]=t.getDate(),W[e+16>>2]=t.getMonth(),t.getTime()/1e3|0},sa:function e(t,r,i){e.called||(e.called=!0,function(e,t,r){var i=(new Date).getFullYear(),n=new Date(i,0,1),a=new Date(i,6,1),o=n.getTimezoneOffset(),s=a.getTimezoneOffset(),u=Math.max(o,s);function c(e){var t=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return t?t[1]:"GMT"}W[e>>2]=60*u,W[t>>2]=Number(o!=s);var l=c(n),h=c(a),p=re(l),d=re(h);s>2]=p,W[r+4>>2]=d):(W[r>>2]=d,W[r+4>>2]=p)}(t,r,i))},D:function(){ve("")},ja:function(){return 2147483648},ia:function(e){var t,r=U.length,i=2147483648;if((e>>>=0)>i)return!1;for(var n=1;n<=4;n*=2){var a=r*(1+.2/n);if(a=Math.min(a,e+100663296),ot(Math.min(i,(t=Math.max(e,a))+(65536-t%65536)%65536)))return!0}return!1},na:function(e,t){var r=0;return ut().forEach((function(i,n){var a=t+r;W[e+4*n>>2]=a,function(e,t,r){for(var i=0;i>0]=e.charCodeAt(i);L[t>>0]=0}(i,a),r+=i.length+1})),0},oa:function(e,t){var r=ut();W[e>>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),W[t>>2]=i,0},S:function(e){!function(e,t){Bt(e)}(e)},I:function(e){try{var t=Oe.getStreamFromFD(e);return Pe.close(t),0}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},Q:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,a=0;a>2],s=Z[t+4>>2];t+=8;var u=Pe.read(e,L,o,s,undefined);if(u<0)return-1;if(n+=u,u>2]=n,0}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},Y:function(e,t,r,i,n){try{var a=Oe.getStreamFromFD(e),o=4294967296*r+(t>>>0),s=9007199254740992;return o<=-s||o>=s?61:(Pe.llseek(a,o,i),he=[a.position>>>0,(le=a.position,+Math.abs(le)>=1?le>0?(0|Math.min(+Math.floor(le/4294967296),4294967295))>>>0:~~+Math.ceil((le-+(~~le>>>0))/4294967296)>>>0:0)],W[n>>2]=he[0],W[n+4>>2]=he[1],a.getdents&&0===o&&0===i&&(a.getdents=null),0)}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},P:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,a=0;a>2],s=Z[t+4>>2];t+=8;var u=Pe.write(e,L,o,s,undefined);if(u<0)return-1;n+=u}return n}(Oe.getStreamFromFD(e),t,r);return W[i>>2]=n,0}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},a:function(){return A()},K:function(e,t,r,i){var n=wt();try{return Ee(e)(t,r,i)}catch(e){if(Et(n),e!==e+0)throw e;bt(1,0)}},L:function(e,t,r,i){var n=wt();try{return Ee(e)(t,r,i)}catch(e){if(Et(n),e!==e+0)throw e;bt(1,0)}},t:function(e){var t=wt();try{return Ee(e)()}catch(e){if(Et(t),e!==e+0)throw e;bt(1,0)}},f:function(e,t){var r=wt();try{return Ee(e)(t)}catch(e){if(Et(r),e!==e+0)throw e;bt(1,0)}},g:function(e,t,r){var i=wt();try{return Ee(e)(t,r)}catch(e){if(Et(i),e!==e+0)throw e;bt(1,0)}},p:function(e,t,r,i){var n=wt();try{return Ee(e)(t,r,i)}catch(e){if(Et(n),e!==e+0)throw e;bt(1,0)}},o:function(e,t,r,i,n){var a=wt();try{return Ee(e)(t,r,i,n)}catch(e){if(Et(a),e!==e+0)throw e;bt(1,0)}},ga:function(e,t,r,i,n,a){var o=wt();try{return Ee(e)(t,r,i,n,a)}catch(e){if(Et(o),e!==e+0)throw e;bt(1,0)}},A:function(e,t,r,i,n,a){var o=wt();try{return Ee(e)(t,r,i,n,a)}catch(e){if(Et(o),e!==e+0)throw e;bt(1,0)}},v:function(e,t,r,i,n,a,o){var s=wt();try{return Ee(e)(t,r,i,n,a,o)}catch(e){if(Et(s),e!==e+0)throw e;bt(1,0)}},M:function(e,t,r,i,n,a,o,s){var u=wt();try{return Ee(e)(t,r,i,n,a,o,s)}catch(e){if(Et(u),e!==e+0)throw e;bt(1,0)}},F:function(e,t,r,i,n,a,o,s,u,c,l,h){var p=wt();try{return Ee(e)(t,r,i,n,a,o,s,u,c,l,h)}catch(e){if(Et(p),e!==e+0)throw e;bt(1,0)}},W:function(e,t,r,i,n,a,o){var s=wt();try{return Rt(e,t,r,i,n,a,o)}catch(e){if(Et(s),e!==e+0)throw e;bt(1,0)}},ba:function(e,t){var r=wt();try{return xt(e,t)}catch(e){if(Et(r),e!==e+0)throw e;bt(1,0)}},aa:function(e,t,r){var i=wt();try{return It(e,t,r)}catch(e){if(Et(i),e!==e+0)throw e;bt(1,0)}},$:function(e,t,r,i){var n=wt();try{return At(e,t,r,i)}catch(e){if(Et(n),e!==e+0)throw e;bt(1,0)}},da:function(e,t,r,i,n){var a=wt();try{return Nt(e,t,r,i,n)}catch(e){if(Et(a),e!==e+0)throw e;bt(1,0)}},l:function(e){var t=wt();try{Ee(e)()}catch(e){if(Et(t),e!==e+0)throw e;bt(1,0)}},r:function(e,t){var r=wt();try{Ee(e)(t)}catch(e){if(Et(r),e!==e+0)throw e;bt(1,0)}},h:function(e,t,r){var i=wt();try{Ee(e)(t,r)}catch(e){if(Et(i),e!==e+0)throw e;bt(1,0)}},k:function(e,t,r,i){var n=wt();try{Ee(e)(t,r,i)}catch(e){if(Et(n),e!==e+0)throw e;bt(1,0)}},z:function(e,t,r,i,n){var a=wt();try{Ee(e)(t,r,i,n)}catch(e){if(Et(a),e!==e+0)throw e;bt(1,0)}},G:function(e,t,r,i,n,a){var o=wt();try{Ee(e)(t,r,i,n,a)}catch(e){if(Et(o),e!==e+0)throw e;bt(1,0)}},Ba:function(e,t,r,i,n,a,o){var s=wt();try{Ee(e)(t,r,i,n,a,o)}catch(e){if(Et(s),e!==e+0)throw e;bt(1,0)}},y:function(e,t,r,i,n,a,o,s){var u=wt();try{Ee(e)(t,r,i,n,a,o,s)}catch(e){if(Et(u),e!==e+0)throw e;bt(1,0)}},B:function(e,t,r,i,n,a,o,s,u,c,l){var h=wt();try{Ee(e)(t,r,i,n,a,o,s,u,c,l)}catch(e){if(Et(h),e!==e+0)throw e;bt(1,0)}},E:function(e,t,r,i,n,a,o,s,u,c,l,h,p,d,f,m){var g=wt();try{Ee(e)(t,r,i,n,a,o,s,u,c,l,h,p,d,f,m)}catch(e){if(Et(g),e!==e+0)throw e;bt(1,0)}},_:function(e,t,r,i,n,a,o){var s=wt();try{Tt(e,t,r,i,n,a,o)}catch(e){if(Et(s),e!==e+0)throw e;bt(1,0)}},ca:function(e,t,r,i,n){var a=wt();try{Mt(e,t,r,i,n)}catch(e){if(Et(a),e!==e+0)throw e;bt(1,0)}},X:function(e,t,r,i,n,a,o){var s=wt();try{jt(e,t,r,i,n,a,o)}catch(e){if(Et(s),e!==e+0)throw e;bt(1,0)}},q:function(e){return e},ta:function(e){Bt(e)},C:function(e){I(e)},ea:function(e,t,r,i){return function(e,t,r,i){var n=W[i+40>>2],a={tm_sec:W[i>>2],tm_min:W[i+4>>2],tm_hour:W[i+8>>2],tm_mday:W[i+12>>2],tm_mon:W[i+16>>2],tm_year:W[i+20>>2],tm_wday:W[i+24>>2],tm_yday:W[i+28>>2],tm_isdst:W[i+32>>2],tm_gmtoff:W[i+36>>2],tm_zone:n?C(n):""},o=C(r),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)o=o.replace(new RegExp(u,"g"),s[u]);var c=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],l=["January","February","March","April","May","June","July","August","September","October","November","December"];function h(e,t,r){for(var i="number"==typeof e?e.toString():e||"";i.length0?1:0}var i;return 0===(i=r(e.getFullYear()-t.getFullYear()))&&0===(i=r(e.getMonth()-t.getMonth()))&&(i=r(e.getDate()-t.getDate())),i}function f(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function m(e){var t=function(e,t){for(var r=new Date(e.getTime());t>0;){var i=ct(r.getFullYear()),n=r.getMonth(),a=(i?lt:ht)[n];if(!(t>a-r.getDate()))return r.setDate(r.getDate()+t),r;t-=a-r.getDate()+1,r.setDate(1),n<11?r.setMonth(n+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1))}return r}(new Date(e.tm_year+1900,0,1),e.tm_yday),r=new Date(t.getFullYear(),0,4),i=new Date(t.getFullYear()+1,0,4),n=f(r),a=f(i);return d(n,t)<=0?d(a,t)<=0?t.getFullYear()+1:t.getFullYear():t.getFullYear()-1}var g={"%a":function(e){return c[e.tm_wday].substring(0,3)},"%A":function(e){return c[e.tm_wday]},"%b":function(e){return l[e.tm_mon].substring(0,3)},"%B":function(e){return l[e.tm_mon]},"%C":function(e){return p((e.tm_year+1900)/100|0,2)},"%d":function(e){return p(e.tm_mday,2)},"%e":function(e){return h(e.tm_mday,2," ")},"%g":function(e){return m(e).toString().substring(2)},"%G":function(e){return m(e)},"%H":function(e){return p(e.tm_hour,2)},"%I":function(e){var t=e.tm_hour;return 0==t?t=12:t>12&&(t-=12),p(t,2)},"%j":function(e){return p(e.tm_mday+function(e,t){for(var r=0,i=0;i<=t;r+=e[i++]);return r}(ct(e.tm_year+1900)?lt:ht,e.tm_mon-1),3)},"%m":function(e){return p(e.tm_mon+1,2)},"%M":function(e){return p(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return p(e.tm_sec,2)},"%t":function(){return"\t"},"%u":function(e){return e.tm_wday||7},"%U":function(e){var t=e.tm_yday+7-e.tm_wday;return p(Math.floor(t/7),2)},"%V":function(e){var t=Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7);if((e.tm_wday+371-e.tm_yday-2)%7<=2&&t++,t){if(53==t){var r=(e.tm_wday+371-e.tm_yday)%7;4==r||3==r&&ct(e.tm_year)||(t=1)}}else{t=52;var i=(e.tm_wday+7-e.tm_yday-1)%7;(4==i||5==i&&ct(e.tm_year%400-1))&&t++}return p(t,2)},"%w":function(e){return e.tm_wday},"%W":function(e){var t=e.tm_yday+7-(e.tm_wday+6)%7;return p(Math.floor(t/7),2)},"%y":function(e){return(e.tm_year+1900).toString().substring(2)},"%Y":function(e){return e.tm_year+1900},"%z":function(e){var t=e.tm_gmtoff,r=t>=0;return t=(t=Math.abs(t)/60)/60*100+t%60,(r?"+":"-")+String("0000"+t).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var u in o=o.replace(/%%/g,"\0\0"),g)o.includes(u)&&(o=o.replace(new RegExp(u,"g"),g[u](a)));var v=dt(o=o.replace(/\0\0/g,"%"),!1);return v.length>t?0:(function(e,t){L.set(e,t)}(v,e),v.length-1)}(e,t,r,i)},xa:function(){k("missing function: v4_generate_JIT_code"),ve(-1)}},gt=(function(){var e={a:mt};function t(e,t){var r,i=e.exports;s.asm=i,ie((T=s.asm.Fa).buffer),ne=s.asm.Ia,r=s.asm.Ga,oe.unshift(r),ge()}function r(e){t(e.instance)}function i(t){return function(){if(!j&&(y||_)){if("function"==typeof fetch&&!_e(ce))return fetch(ce,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+ce+"'";return e.arrayBuffer()})).catch((function(){return be(ce)}));if(c)return new Promise((function(e,t){c(ce,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return be(ce)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){k("failed to asynchronously prepare wasm: "+e),ve(e)}))}if(me(),s.instantiateWasm)try{return s.instantiateWasm(e,t)}catch(e){return k("Module.instantiateWasm callback failed with error: "+e),!1}(j||"function"!=typeof WebAssembly.instantiateStreaming||ye(ce)||_e(ce)||"function"!=typeof fetch?i(r):fetch(ce,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(r,(function(e){return k("wasm streaming compile failed: "+e),k("falling back to ArrayBuffer instantiation"),i(r)}))}))).catch(o)}(),s.___wasm_call_ctors=function(){return(s.___wasm_call_ctors=s.asm.Ga).apply(null,arguments)},s._malloc=function(){return(gt=s._malloc=s.asm.Ha).apply(null,arguments)}),vt=(s.__ZN5boost13serialization16singleton_module8get_lockEv=function(){return(s.__ZN5boost13serialization16singleton_module8get_lockEv=s.asm.Ja).apply(null,arguments)},s._free=function(){return(vt=s._free=s.asm.Ka).apply(null,arguments)}),yt=s.___errno_location=function(){return(yt=s.___errno_location=s.asm.La).apply(null,arguments)},_t=s.___getTypeName=function(){return(_t=s.___getTypeName=s.asm.Ma).apply(null,arguments)},bt=(s.___embind_register_native_and_builtin_types=function(){return(s.___embind_register_native_and_builtin_types=s.asm.Na).apply(null,arguments)},s._setThrew=function(){return(bt=s._setThrew=s.asm.Oa).apply(null,arguments)}),wt=s.stackSave=function(){return(wt=s.stackSave=s.asm.Pa).apply(null,arguments)},Et=s.stackRestore=function(){return(Et=s.stackRestore=s.asm.Qa).apply(null,arguments)},kt=s.___cxa_can_catch=function(){return(kt=s.___cxa_can_catch=s.asm.Ra).apply(null,arguments)},St=s.___cxa_is_pointer_type=function(){return(St=s.___cxa_is_pointer_type=s.asm.Sa).apply(null,arguments)},xt=s.dynCall_ji=function(){return(xt=s.dynCall_ji=s.asm.Ta).apply(null,arguments)},jt=(s.dynCall_vijjjdi=function(){return(s.dynCall_vijjjdi=s.asm.Ua).apply(null,arguments)},s.dynCall_vij=function(){return(s.dynCall_vij=s.asm.Va).apply(null,arguments)},s.dynCall_vijj=function(){return(s.dynCall_vijj=s.asm.Wa).apply(null,arguments)},s.dynCall_viijii=function(){return(jt=s.dynCall_viijii=s.asm.Xa).apply(null,arguments)}),Nt=s.dynCall_jiiii=function(){return(Nt=s.dynCall_jiiii=s.asm.Ya).apply(null,arguments)},Mt=s.dynCall_viij=function(){return(Mt=s.dynCall_viij=s.asm.Za).apply(null,arguments)},It=(s.dynCall_viiji=function(){return(s.dynCall_viiji=s.asm._a).apply(null,arguments)},s.dynCall_jii=function(){return(It=s.dynCall_jii=s.asm.$a).apply(null,arguments)}),At=s.dynCall_jiii=function(){return(At=s.dynCall_jiii=s.asm.ab).apply(null,arguments)},Tt=s.dynCall_viiiji=function(){return(Tt=s.dynCall_viiiji=s.asm.bb).apply(null,arguments)},Rt=(s.dynCall_vijiiii=function(){return(s.dynCall_vijiiii=s.asm.cb).apply(null,arguments)},s.dynCall_iiiij=function(){return(s.dynCall_iiiij=s.asm.db).apply(null,arguments)},s.dynCall_jiji=function(){return(s.dynCall_jiji=s.asm.eb).apply(null,arguments)},s.dynCall_iiiiij=function(){return(Rt=s.dynCall_iiiiij=s.asm.fb).apply(null,arguments)});function Pt(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Ot(e){function r(){ft||(ft=!0,s.calledRun=!0,P||(s.noFSInit||Pe.init.initialized||Pe.init(),Pe.ignorePermissions=!1,Te.init(),we(oe),t(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),function(){if(s.postRun)for("function"==typeof s.postRun&&(s.postRun=[s.postRun]);s.postRun.length;)e=s.postRun.shift(),se.unshift(e);var e;we(se)}()))}e=e||m,pe>0||(function(){if(s.preRun)for("function"==typeof s.preRun&&(s.preRun=[s.preRun]);s.preRun.length;)e=s.preRun.shift(),ae.unshift(e);var e;we(ae)}(),pe>0||(s.setStatus?(s.setStatus("Running..."),setTimeout((function(){setTimeout((function(){s.setStatus("")}),1),r()}),1)):r()))}function Bt(e){ue()||(s.onExit&&s.onExit(e),P=!0),v(e,new Pt(e))}if(s.dynCall_iiiiijj=function(){return(s.dynCall_iiiiijj=s.asm.gb).apply(null,arguments)},s.dynCall_iiiiiijj=function(){return(s.dynCall_iiiiiijj=s.asm.hb).apply(null,arguments)},s.UTF8ToString=C,s.stringToUTF8=F,s.lengthBytesUTF8=D,s.addFunction=function(e,t){if(x||(x=new WeakMap,function(e,t){for(var r=0;r<0+t;r++){var i=Ee(r);i&&x.set(i,r)}}(0,ne.length)),x.has(e))return x.get(e);var r=function(){if(N.length)return N.pop();try{ne.grow(1)}catch(e){if(!(e instanceof RangeError))throw e;throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH."}return ne.length-1}();try{ke(r,e)}catch(n){if(!(n instanceof TypeError))throw n;var i=function(e,t){if("function"==typeof WebAssembly.Function){for(var r={i:"i32",j:"i64",f:"f32",d:"f64"},i={parameters:[],results:"v"==t[0]?[]:[r[t[0]]]},n=1;n255&&(i&=255),t.push(String.fromCharCode(i))}return t.join("")},fe=function e(){ft||Ot(),ft||(fe=e)},s.run=Ot,s.preInit)for("function"==typeof s.preInit&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return Ot(),e.ready});e.exports=o},32142:(e,t,r)=>{"use strict";e.exports={},e.exports.GenUtils=r(93444),e.exports.BigInteger=r(63055).BigInteger,e.exports.Filter=r(17355),e.exports.MoneroError=r(91307),e.exports.HttpClient=r(28461),e.exports.LibraryUtils=r(85096),e.exports.MoneroRpcConnection=r(73717),e.exports.MoneroRpcError=r(27828),e.exports.SslOptions=r(13751),e.exports.TaskLooper=r(36693),e.exports.ThreadPool=r(28103),e.exports.ConnectionType=r(90666),e.exports.MoneroAltChain=r(24652),e.exports.MoneroBan=r(1305),e.exports.MoneroBlockHeader=r(29457),e.exports.MoneroBlock=r(36242),e.exports.MoneroBlockTemplate=r(91350),e.exports.MoneroConnectionSpan=r(84373),e.exports.MoneroDaemonInfo=r(88988),e.exports.MoneroDaemonListener=r(3104),e.exports.MoneroDaemonSyncInfo=r(7666),e.exports.MoneroDaemonUpdateCheckResult=r(44531),e.exports.MoneroDaemonUpdateDownloadResult=r(62230),e.exports.MoneroFeeEstimate=r(90176),e.exports.MoneroHardForkInfo=r(48936),e.exports.MoneroKeyImage=r(53011),e.exports.MoneroKeyImageSpentStatus=r(51147),e.exports.MoneroMinerTxSum=r(20465),e.exports.MoneroMiningStatus=r(15887),e.exports.MoneroNetworkType=r(79077),e.exports.MoneroOutput=r(42299),e.exports.MoneroOutputHistogramEntry=r(96909),e.exports.MoneroPruneResult=r(58400),e.exports.MoneroSubmitTxResult=r(38991),e.exports.MoneroTx=r(2624),e.exports.MoneroTxPoolStats=r(26046),e.exports.MoneroVersion=r(55540),e.exports.MoneroPeer=r(63374),e.exports.MoneroAccount=r(28753),e.exports.MoneroAccountTag=r(41235),e.exports.MoneroAddressBookEntry=r(30947),e.exports.MoneroCheck=r(88535),e.exports.MoneroCheckReserve=r(47766),e.exports.MoneroCheckTx=r(35404),e.exports.MoneroDestination=r(39407),e.exports.MoneroIntegratedAddress=r(64472),e.exports.MoneroKeyImageImportResult=r(34293),e.exports.MoneroMultisigInfo=r(26749),e.exports.MoneroMultisigInitResult=r(50957),e.exports.MoneroMultisigSignResult=r(63413),e.exports.MoneroOutputWallet=r(69459),e.exports.MoneroOutputQuery=r(39749),e.exports.MoneroTxPriority=r(57589),e.exports.MoneroTxConfig=r(36721),e.exports.MoneroSubaddress=r(44769),e.exports.MoneroSyncResult=r(17118),e.exports.MoneroTransfer=r(52387),e.exports.MoneroIncomingTransfer=r(31243),e.exports.MoneroOutgoingTransfer=r(69535),e.exports.MoneroTransferQuery=r(59692),e.exports.MoneroTxSet=r(61527),e.exports.MoneroTxWallet=r(18489),e.exports.MoneroTxQuery=r(31857),e.exports.MoneroWalletListener=r(63149),e.exports.MoneroWalletConfig=r(99919),e.exports.MoneroMessageSignatureType=r(64232),e.exports.MoneroMessageSignatureResult=r(57773),e.exports.MoneroConnectionManager=r(63086),e.exports.MoneroConnectionManagerListener=r(96771),e.exports.MoneroUtils=r(58012),e.exports.MoneroDaemon=r(77333),e.exports.MoneroWallet=r(54815),e.exports.MoneroDaemonRpc=r(63131),e.exports.MoneroWalletRpc=r(57987),e.exports.MoneroWalletKeys=r(28166),e.exports.MoneroWalletFull=r(78647),e.exports.getVersion=function(){return e.exports.MoneroUtils.getVersion()},e.exports.connectToDaemonRpc=function(){return e.exports.MoneroDaemonRpc._connectToDaemonRpc(...arguments)},e.exports.connectToWalletRpc=function(){return e.exports.MoneroWalletRpc._connectToWalletRpc(...arguments)},e.exports.createWalletFull=function(){return e.exports.MoneroWalletFull.createWallet(...arguments)},e.exports.openWalletFull=function(){return e.exports.MoneroWalletFull.openWallet(...arguments)},e.exports.createWalletKeys=function(){return e.exports.MoneroWalletKeys.createWallet(...arguments)}},17355:e=>{e.exports=class{meetsCriteria(e){throw new Error("Subclass must implement")}static apply(e,t){return t.filter((t=>!e||e.meetsCriteria(t)))}}},93444:(e,t,r)=>{const n=r(69282),a=r(63055).BigInteger;class o{static isDefined(e){return void 0!==e}static isUndefined(e){return void 0===e}static isInitialized(e){return null!=e}static isUninitialized(e){return!e}static isNumber(e){return!isNaN(parseFloat(e))&&isFinite(e)}static isInt(e){return e===parseInt(Number(e))&&!isNaN(e)&&!isNaN(parseInt(e,10))}static isArray(e){return e instanceof Array&&Array.isArray(e)}static isString(e){return"string"==typeof e}static isBoolean(e){return"boolean"==typeof e}static isFunction(e){return"static"==typeof e}static isObject(e,t){return!!e&&"object"==typeof e&&(!t||e instanceof t)}static isUpperCase(e){return e.toUpperCase()===e}static isLowerCase(e){return e.toLowerCase()===e}static assertHex(e,t){o.assertTrue(isHex(e),t||"Argument asserted as hex but is not hex")}static isHex(e){return"string"==typeof e&&0!==e.length&&(e.match(/([0-9]|[a-f])/gim)||[]).length===e.length}static isBase32(e){return"string"==typeof e&&(o.assertTrue(e.length>0,"Cannot determine if empty string is base32"),/^[ABCDEFGHIJKLMNOPQRSTUVWXYZ234567]+$/.test(e))}static assertBase58(e,t){o.assertTrue(isBase58(e),t||"Argument asserted as base58 but is not base58")}static isBase58(e){return"string"==typeof e&&(o.assertTrue(e.length>0,"Cannot determine if empty string is base58"),/^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+$/.test(e))}static assertBase64(e,t){o.assertTrue(isBase64(e),t||"Argument asserted as base64 but is not base64")}static isBase64(e){if("string"!=typeof e)return!1;o.assertTrue(e.length>0,"Cannot determine if empty string is base64");try{return btoa(atob(e))==e}catch(e){return!1}}static fail(e){throw new Error(e||"Failure (no message)")}static assertTrue(e,t){if("boolean"!=typeof e)throw new Error("Argument is not a boolean");if(!e)throw new Error(t||"Boolean asserted as true but was false")}static assertFalse(e,t){if("boolean"!=typeof e)throw new Error("Argument is not a boolean");if(e)throw new Error(t||"Boolean asserted as false but was true")}static assertNull(e,t){if(null!==e)throw new Error(t||"Argument asserted as null but was not null: "+e)}static assertNotNull(e,t){if(null===e)throw new Error(t||"Argument asserted as not null but was null")}static assertDefined(e,t){if(o.isUndefined(e))throw new Error(t||"Argument asserted as defined but was undefined")}static assertUndefined(e,t){if(o.isDefined(e))throw new Error(t||"Argument asserted as undefined but was defined: "+e)}static assertInitialized(e,t){if(o.isUninitialized(e))throw new Error(t||"Argument asserted as initialized but was "+e)}static assertUninitialized(e,t){if(o.isInitialized(e))throw new Error(t||"Argument asserted as uninitialized but was initialized")}static assertEquals(e,t,r){o.assertTrue(o.equals(e,t),r||"Arguments asserted as equal but are not equal: "+e+" vs "+t)}static assertNotEquals(e,t,r){if(e===t)throw new Error(r||"Arguments asserted as not equal but are equal: "+e+" vs "+t)}static assertInt(e,t){if(!o.isInt(e))throw new Error(t||"Argument asserted as an integer but is not an integer")}static assertNumber(e,t){if(!o.isNumber(e))throw new Error(t||"Argument asserted as a number but is not a number")}static assertBoolean(e,t){if(!o.isBoolean(e))throw new Error(t||"Argument asserted as a boolean but is not a boolean")}static assertString(e,t){if(!o.isString(e))throw new Error(t||"Argument asserted as a string but is not a string: "+e)}static assertArray(e,t){if(!o.isArray(e))throw new Error(t||"Argument asserted as an array but is not an array")}static assertFunction(e,t){if(!o.isFunction(e))throw new Error(t||"Argument asserted as a static but is not a static")}static assertObject(e,t,r){if(o.assertInitialized(e,r),t){if(!isObject(e,t))throw new Error(r||"Argument asserted as object '"+t.name+"' but was not")}else if(!isObject(e))throw new Error(r||"Argument asserted as object but was not")}static inheritsFrom(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e}static invoke(){let e=arguments[0],t=[];for(let e=1;e0&&(n[n.length]=i)},r=[];r.push([]);for(let i=0;i=1);let r=getPowerSet(e),i=[];for(let e=0;e=0;i--)e[i]===t&&(e.splice(i,1),r=!0,i--);return r}static toLowerCaseArray(e){let t=[];for(let r=0;r-1}static arraysEqual(e,t){if(e===t)return!0;if(null==e&&null==t)return!0;if(null==e||null==t)return!1;if(void 0===e&&void 0===t)return!0;if(void 0===e||void 0===t)return!1;if(!o.isArray(e))throw new Error("First argument is not an array");if(!o.isArray(t))throw new Error("Second argument is not an array");if(e.length!=t.length)return!1;for(let r=0;r=1);let r=getPowerSetOfLength(getIndices(e.length),t),i=[];for(let t=0;t").append($(e).clone()).html()}static copyProperties(e){return JSON.parse(JSON.stringify(e))}static deleteProperties(e){let t=[];for(let r in e)t.push(r);for(i=0;i"+e.title+"":"",t+=e.internalCss?"":"",e.dependencyPaths){let r=listify(e.dependencyPaths);for(let e=0;e<\/script>";else if(i.endsWith(".css"))t+="";else{if(!i.endsWith(".png")&&!i.endsWith(".img"))throw new Error("Unrecognized dependency path extension: "+i);t+=""}}}return t+="",e.div&&(t+=$("
").append(e.div.clone()).html()),t+="",t}static newWindow(e,t){let r=!1,i=window.open();function n(e,i){r||(r=!0,t&&t(e,i))}isInitialized(i)&&isInitialized(i.document)?(i.opener=null,i.document.write(buildHtmlDocument(e)),i.addEventListener("load",(function(){n(null,i)})),i.document.close()):n(new Error("Could not get window reference"))}static imgToDataUrl(e,t){let r=document.createElement("canvas");return r.height=e.naturalHeight,r.width=e.naturalWidth,r.getContext("2d").drawImage(e,0,0),r.toDataURL(t)}static isImageAccessible(e,t,r){let i=!1,n=new Image;function a(e){i||(i=!0,void 0===e||"error"===e.type?r(!1):r(!0))}n.onload=a,n.onerror=a,n.src=e+"?"+ +new Date,setTimeout((function(){setImmediate((function(){setImmediate((function(){setImmediate((function(){i||(i=!0,r(!1))}))}))}))}),t)}static isZipFile(e){return e.name.endsWith(".zip")||"application/zip"===e.type}static isJsonFile(e){return e.name.endsWith(".json")||"application/json"===e.type}static isCsvFile(e){return e.name.endsWith(".csv")||"text/csv"===e.type}static isTxtFile(e){return e.name.endsWith(".txt")||"text/plain"===e.type}static getImages(e,t){o.isArray(e)||(o.assertTrue(isString(e)),e=[e]);let r=[];for(let t=0;t0}static getIEVersion(){let e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);if(e.indexOf("Trident/")>0){let t=e.indexOf("rv:");return parseInt(e.substring(t+3,e.indexOf(".",t)),10)}let r=e.indexOf("Edge/");return r>0?parseInt(e.substring(r+5,e.indexOf(".",r)),10):null}static getParameterByName(e,t){t||(t=window.location.href),e=e.replace(/[\[\]]/g,"\\$&");let r=new RegExp("[?&]"+e+"(=([^&#]*)|&|#|$)").exec(t);return r?r[2]?decodeURIComponent(r[2].replace(/\+/g," ")):"":null}static getRandomInt(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e+1))+e}static getRandomInts(e,t,r){o.assertTrue("number"==typeof r);let i=[];for(let n=0;n=0),o.assertTrue(t-e+1>=r);i.length0;t--){var r=Math.floor(Math.random()*(t+1)),i=e[t];e[t]=e[r],e[r]=i}}static sort(e){e.sort(((e,t)=>e===t?0:e>t?1:-1))}static safeSet(e,t,r,i,n,a){let s=t.call(e),u=o.reconcile(s,i,n,a);s!==u&&r.call(e,u)}static reconcile(e,t,r,i){if(e===t)return e;let o;if(e instanceof a&&t instanceof a&&(o=e.compare(t),0===o))return e;if(void 0===e||void 0===t)return r&&!1===r.resolveDefined?void 0:void 0===e?t:e;if(r&&void 0!==r.resolveTrue&&"boolean"==typeof e&&"boolean"==typeof t)return n.equal(typeof r.resolveTrue,"boolean"),r.resolveTrue;if(r&&void 0!==r.resolveMax){if(n.equal(typeof r.resolveMax,"boolean"),"number"==typeof e&&"number"==typeof t)return r.resolveMax?Math.max(e,t):Math.min(e,t);if(e instanceof a&&t instanceof a)return r.resolveMax?o<0?t:e:o<0?e:t}return n.deepEqual(e,t,i||"Cannot reconcile values "+e+" and "+t+" with config: "+JSON.stringify(r)),e}static kvLine(e,t,r=0,i=!0,n=!0){return void 0===t&&n?"":o.getIndent(r)+e+": "+t+(i?"\n":"")}static stringifyBIs(e){return e.replace(/("[^"]*"\s*:\s*)(\d{16,})/g,'$1"$2"')}static printStackTrace(e){try{throw new Error(e)}catch(e){console.error(e.stack)}}static async waitFor(e){return new Promise((function(t){setTimeout(t,e)}))}static async killProcess(e,t){return new Promise(((r,i)=>{e.on("exit",(function(e,t){r(e)})),e.on("error",(function(e){i(e)}));try{e.kill(t||"SIGINT")||r()}catch(e){i(e)}}))}static normalizeUri(e){if(!e)throw Error("Must provide URI to normalize");return e=e.replace(/\/$/,""),new RegExp("^\\w+://.+").test(e)||(e="http://"+e),e}}e.exports=o},28461:(e,t,r)=>{r(93444);const i=r(85096),n=r(58012),a=r(28103),o=r(61761),s=r(8037);class u{static async request(e){if(e.proxyToWorker)try{return await i.invokeWorker(void 0,"httpRequest",e)}catch(e){if(e.message.length>0&&"{"===e.message.charAt(0)){let t=JSON.parse(e.message);e.message=t.statusMessage,e.statusCode=t.statusCode}throw e}e=Object.assign({},u._DEFAULT_REQUEST,e);try{e.host=new URL(e.uri).host}catch(t){throw new Error("Invalid request URL: "+e.uri)}if(e.body&&"string"!=typeof e.body&&"object"!=typeof e.body)throw new Error("Request body type is not string or object");u._TASK_QUEUES[e.host]||(u._TASK_QUEUES[e.host]=new a(1)),u._PROMISE_THROTTLES[e.host]||(u._PROMISE_THROTTLES[e.host]=new o({requestsPerSecond:n.MAX_REQUESTS_PER_SECOND,promiseImplementation:Promise}));let t=void 0===e.timeout?u._DEFAULT_TIMEOUT:0===e.timeout?u.MAX_TIMEOUT:e.timeout,r="fetch"===e.requestApi?u._requestFetch(e):u._requestXhr(e),s=new Promise(((e,r)=>{let i=setTimeout((()=>{clearTimeout(i),r("Request timed out in "+t+" milliseconds")}),t)}));return Promise.race([r,s])}static async _requestFetch(e){let t={method:e.method,uri:e.uri,body:e.body,agent:e.uri.startsWith("https")?u._getHttpsAgent():u._getHttpAgent(),rejectUnauthorized:e.rejectUnauthorized,resolveWithFullResponse:e.resolveWithFullResponse,requestCert:!0};e.username&&(t.forever=!0,t.auth={user:e.username,pass:e.password,sendImmediately:!1}),e.body instanceof Uint8Array&&(t.encoding=null);let r=e.host,i=await u._TASK_QUEUES[r].submit((async function(){return u._PROMISE_THROTTLES[r].add(function(e){return s(e)}.bind(this,t))})),n={};return e.resolveWithFullResponse?(n.statusCode=i.statusCode,n.statusText=i.statusMessage,n.headers=i.headers,n.body=i.body):n.body=i,n}static async _requestXhr(e){if(e.headers)throw new Error("Custom headers not implemented in XHR request");let t=e.method,r=e.uri,i=e.host,n=e.username,a=e.password,o=e.body,s=o instanceof Uint8Array,c=await u._TASK_QUEUES[i].submit((async function(){return u._PROMISE_THROTTLES[i].add(function(){return new Promise((function(e,i){new u.digestAuthRequest(t,r,n,a).request((function(t){e(t)}),(function(n){n.status?e(n):i(new Error("Request failed without response: "+t+" "+r))}),o)}))}.bind(this))})),l={};return l.statusCode=c.status,l.statusText=c.statusText,l.headers=u._parseXhrResponseHeaders(c.getAllResponseHeaders()),l.body=s?new Uint8Array(c.response):c.response,l.body instanceof ArrayBuffer&&(l.body=new Uint8Array(l.body)),l}static _getHttpAgent(){if(!u.HTTP_AGENT){let e=r(8501);u.HTTP_AGENT=new e.Agent({keepAlive:!0})}return u.HTTP_AGENT}static _getHttpsAgent(){if(!u.HTTPS_AGENT){let e=r(79267);u.HTTPS_AGENT=new e.Agent({keepAlive:!0})}return u.HTTPS_AGENT}static _parseXhrResponseHeaders(e){let t={},r=e.trim().split(/[\r\n]+/);for(let e of r){let r=e.split(": ");t[r[0]]=r[1]}return t}}u.digestAuthRequest=function(e,t,i,n){var a=this;if(void 0===o)var o=r(81354);this.scheme=null,this.nonce=null,this.realm=null,this.qop=null,this.response=null,this.opaque=null,this.nc=1,this.cnonce=null,this.timeout=6e4,this.loggingOn=!1,this.post=!1,"post"!==e.toLowerCase()&&"put"!==e.toLowerCase()||(this.post=!0),this.request=function(e,t,r){if(r)try{a.data=r instanceof Uint8Array||"string"==typeof r?r:JSON.stringify(r)}catch(e){throw console.error(e),e}a.successFn=e,a.errorFn=t,a.nonce?a.makeAuthenticatedRequest():a.makeUnauthenticatedRequest(a.data)},this.makeUnauthenticatedRequest=function(r){a.firstRequest=new XMLHttpRequest,a.firstRequest.open(e,t,!0),a.firstRequest.timeout=a.timeout,a.post&&r&&("string"==typeof r?a.firstRequest.setRequestHeader("Content-type","text/plain"):a.firstRequest.responseType="arraybuffer"),a.firstRequest.onreadystatechange=function(){if(2===a.firstRequest.readyState){var e,i=a.firstRequest.getAllResponseHeaders();i=i.split("\n");for(var n=0;n0&&(a.isJson(a.firstRequest.responseText),a.successFn(a.firstRequest)):a.successFn())},a.post?a.firstRequest.send(a.data):a.firstRequest.send(),a.log("Unauthenticated request to "+t),a.firstRequest.onerror=function(){401!==a.firstRequest.status&&(a.log("Error ("+a.firstRequest.status+") on unauthenticated request to "+t),a.errorFn(a.firstRequest))}},this.makeAuthenticatedRequest=function(){a.response=a.formulateResponse(),a.authenticatedRequest=new XMLHttpRequest,a.authenticatedRequest.open(e,t,!0),a.authenticatedRequest.timeout=a.timeout;var r=a.scheme+' username="'+i+'", realm="'+a.realm+'", nonce="'+a.nonce+'", uri="'+t+'", response="'+a.response+'", opaque="'+a.opaque+'", qop='+a.qop+", nc="+("00000000"+a.nc).slice(-8)+', cnonce="'+a.cnonce+'"';a.authenticatedRequest.setRequestHeader("Authorization",r),a.log("digest auth header response to be sent:"),a.log(r),a.post&&a.data&&("string"==typeof a.data?a.authenticatedRequest.setRequestHeader("Content-type","text/plain"):a.authenticatedRequest.responseType="arraybuffer"),a.authenticatedRequest.onload=function(){a.authenticatedRequest.status>=200&&a.authenticatedRequest.status<400?(a.nc++,a.data instanceof Uint8Array?a.successFn(a.authenticatedRequest):"undefined"!==a.authenticatedRequest.responseText&&a.authenticatedRequest.responseText.length>0?(a.isJson(a.authenticatedRequest.responseText),a.successFn(a.authenticatedRequest)):a.successFn()):(a.nonce=null,a.errorFn(a.authenticatedRequest))},a.authenticatedRequest.onerror=function(){a.log("Error ("+a.authenticatedRequest.status+") on authenticated request to "+t),a.nonce=null,a.errorFn(a.authenticatedRequest)},a.post?a.authenticatedRequest.send(a.data):a.authenticatedRequest.send(),a.log("Authenticated request to "+t)},this.formulateResponse=function(){var r=o.MD5(i+":"+a.realm+":"+n).toString(),s=o.MD5(e+":"+t).toString();return o.MD5(r+":"+a.nonce+":"+("00000000"+a.nc).slice(-8)+":"+a.cnonce+":"+a.qop+":"+s).toString()},this.generateCnonce=function(){for(var e="abcdef0123456789",t="",r=0;r<16;r++){var i=Math.round(Math.random()*e.length);t+=e.substr(i,1)}return t},this.abort=function(){a.log("[digestAuthRequest] Aborted request to "+t),null!=a.firstRequest&&4!=a.firstRequest.readyState&&a.firstRequest.abort(),null!=a.authenticatedRequest&&4!=a.authenticatedRequest.readyState&&a.authenticatedRequest.abort()},this.isJson=function(e){try{JSON.parse(e)}catch(e){return!1}return!0},this.log=function(e){a.loggingOn&&console.log("[digestAuthRequest] "+e)},this.version=function(){return"0.8.0"}},u._DEFAULT_REQUEST={method:"GET",requestApi:"fetch",resolveWithFullResponse:!1,rejectUnauthorized:!0},u._PROMISE_THROTTLES=[],u._TASK_QUEUES=[],u._DEFAULT_TIMEOUT=6e4,u.MAX_TIMEOUT=2147483647,e.exports=u},85096:(e,t,r)=>{const i=r(69282),n=r(93444),a=r(91307),o=r(28103);class s{static log(e,t){i(e===parseInt(e,10)&&e>=0,"Log level must be an integer >= 0"),s.LOG_LEVEL>=e&&console.log(t)}static async setLogLevel(e){i(e===parseInt(e,10)&&e>=0,"Log level must be an integer >= 0"),s.LOG_LEVEL=e,s.WASM_MODULE&&s.WASM_MODULE.set_log_level(e),s.WORKER&&await s.invokeWorker(void 0,"setLogLevel",[e])}static getLogLevel(){return s.LOG_LEVEL}static async getWasmMemoryUsed(){let e=0;return s.WORKER&&(e+=await s.invokeWorker(void 0,"getWasmMemoryUsed",[])),s.getWasmModule()&&s.getWasmModule().HEAP8&&(e+=s.getWasmModule().HEAP8.length),e}static getWasmModule(){return s.WASM_MODULE}static async loadKeysModule(){return s.WASM_MODULE?s.WASM_MODULE:(delete s.WASM_MODULE,s.WASM_MODULE=r(86192)(),new Promise((function(e,t){s.WASM_MODULE.then((t=>{s.WASM_MODULE=t,delete s.WASM_MODULE.then,s._initWasmModule(s.WASM_MODULE),e(s.WASM_MODULE)}))})))}static async loadFullModule(){return s.WASM_MODULE&&s.FULL_LOADED?s.WASM_MODULE:(delete s.WASM_MODULE,s.WASM_MODULE=r(9478)(),new Promise((function(e,t){s.WASM_MODULE.then((t=>{s.WASM_MODULE=t,delete s.WASM_MODULE.then,s.FULL_LOADED=!0,s._initWasmModule(s.WASM_MODULE),e(s.WASM_MODULE)}))})))}static setRejectUnauthorizedFn(e,t){s.REJECT_UNAUTHORIZED_FNS||(s.REJECT_UNAUTHORIZED_FNS=[]),void 0===t?delete s.REJECT_UNAUTHORIZED_FNS[e]:s.REJECT_UNAUTHORIZED_FNS[e]=t}static isRejectUnauthorized(e){if(!s.REJECT_UNAUTHORIZED_FNS[e])throw new Error("No function registered with id "+e+" to inform if unauthorized reqs should be rejected");return s.REJECT_UNAUTHORIZED_FNS[e]()}static setWorkerDistPath(e){let t=s._prefixWindowsPath(e||s.WORKER_DIST_PATH_DEFAULT);t!==s.WORKER_DIST_PATH&&delete s.WORKER,s.WORKER_DIST_PATH=t}static async getWorker(){if(!s.WORKER){if(n.isBrowser())s.WORKER=new Worker(s.WORKER_DIST_PATH);else{const e=r(84763);s.WORKER=new e(s.WORKER_DIST_PATH)}s.WORKER_OBJECTS={},s.WORKER.onerror=function(e){console.error("Error posting message to MoneroWebWorker.js; is it copied to the app's build directory (e.g. in the root)?"),console.log(e)},s.WORKER.onmessage=function(e){let t=null,r=s.WORKER_OBJECTS[e.data[0]].callbacks[e.data[1]];if(void 0===r)throw new Error("No worker callback function defined for key '"+e.data[1]+"'");r instanceof Array&&(t=r[1],r=r[0]),r.apply(t,e.data.slice(2))}}return s.WORKER}static async terminateWorker(){s.WORKER&&(s.WORKER.terminate(),delete s.WORKER,s.WORKER=void 0)}static async invokeWorker(e,t,r){i(t.length>=2);let a=await s.getWorker(),o=void 0===e;return o&&(e=n.getUUID()),s.WORKER_OBJECTS[e]||(s.WORKER_OBJECTS[e]={callbacks:{}}),await new Promise((function(i,u){let c=n.getUUID();s.WORKER_OBJECTS[e].callbacks[c]=function(t){t?t.error?u(s.deserializeError(t.error)):i(t.result):i(),delete s.WORKER_OBJECTS[e].callbacks[c],o&&delete s.WORKER_OBJECTS[e]},a.postMessage([e,t,c].concat(void 0===r?[]:n.listify(r)))}))}static serializeError(e){const t={name:e.name,message:e.message,stack:e.stack};return e instanceof a&&(t.type="MoneroError"),t}static deserializeError(e){const t="MoneroError"===e.type?new a(e.message):new Error(e.message);return t.name=e.name,t.stack=e.stack,t}static _initWasmModule(e){e.taskQueue=new o(1),e.queueTask=async function(t){return e.taskQueue.submit(t)}}static _prefixWindowsPath(e){return/^[A-Z]:/.test(e)&&-1==e.indexOf("file://")&&(e="file://"+e),e}}s.LOG_LEVEL=0,s.WORKER_DIST_PATH_DEFAULT=n.isBrowser()?"/monero_web_worker.js":function(){const e=r(26470);return s._prefixWindowsPath(e.join("/","./MoneroWebWorker.js"))}(),s.WORKER_DIST_PATH=s.WORKER_DIST_PATH_DEFAULT,e.exports=s},63086:(e,t,r)=>{const i=r(93444),n=r(91307),a=r(73717),o=r(36693),s=r(28103);class u{constructor(e){this._proxyToWorker=!1!==e,this._timeoutInMs=u.DEFAULT_TIMEOUT,this._connections=[],this._listeners=[]}addListener(e){return this._listeners.push(e),this}removeListener(e){if(!i.remove(this._listeners,e))throw new n("Monero connection manager does not contain listener to remove");return this}removeListeners(){return this._listeners.splice(0,this._listeners.length),this}async addConnection(e){for(let t of this._connections)if(t.getUri()===e.getUri())throw new n("Connection URI already exists");return void 0!==this._proxyToWorker&&e.setProxyToWorker(this._proxyToWorker),this._connections.push(e),this}async removeConnection(e){let t=this.getConnectionByUri(e);if(!t)throw new n("No connection exists with URI: "+e);return i.remove(this._connections,t),t===this._currentConnection&&(this._currentConnection=void 0,this._onConnectionChanged(this._currentConnection)),this}isConnected(){return!!this._currentConnection&&this._currentConnection.isConnected()}getConnection(){return this._currentConnection}getConnectionByUri(e){for(let t of this._connections)if(t.getUri()===e)return t}getConnections(){let e=i.copyArray(this._connections);return e.sort(this._compareConnections.bind(this)),e}async getBestAvailableConnection(e){for(let t of this._getConnectionsInAscendingPriority())try{let r=this,n=[];for(let a of t)e&&i.arrayContains(e,a)||n.push(new Promise((async function(e,t){await a.checkConnection(r._timeoutInMs),a.isConnected()?e(a):t()})));let a=await Promise.any(n);if(a)return a}catch(e){if(!(e instanceof AggregateError))throw new n(e)}}setConnection(e){if(e&&"string"==typeof e){let t=this.getConnectionByUri(e);return this.setConnection(void 0===t?new a(e):t)}let t=e;if(this._currentConnection===t)return this;if(!t)return this._currentConnection=void 0,this._onConnectionChanged(void 0),this;if(!(t instanceof a))throw new n("Must provide string or MoneroRpcConnection to set connection");if(!t.getUri())throw new n("Connection is missing URI");let r=this.getConnectionByUri(t.getUri());return r&&i.remove(this._connections,r),this.addConnection(t),this._currentConnection=t,this._onConnectionChanged(this._currentConnection),this}async checkConnection(){let e=!1,t=this.getConnection();if(t&&await t.checkConnection(this._timeoutInMs)&&(e=!0),this._autoSwitch&&!this.isConnected()){let e=await this.getBestAvailableConnection([t]);if(e)return this.setConnection(e),this}return e&&await this._onConnectionChanged(t),this}async checkConnections(){if(await Promise.all(this.checkConnectionPromises()),this._autoSwitch&&!this.isConnected())for(let e of this._getConnectionsInAscendingPriority()){let t;for(let r of e)r.isConnected()&&(!t||r.getResponseTime()parseInt(e[0])-parseInt(t[0])))),r=[];for(let e of t.values())r.push(e);return e.has(0)&&r.push(r.splice(0,1)[0]),r}_compareConnections(e,t){return e===this._currentConnection?-1:t===this._currentConnection?1:e.isOnline()===t.isOnline()?e.getPriority()===t.getPriority()?e.getUri().localeCompare(t.getUri()):0==e.getPriority()?1:0==t.getPriority()?-1:e.getPriority()-t.getPriority():e.isOnline()?-1:t.isOnline()?1:void 0===e.isOnline()?-1:1}}u.DEFAULT_TIMEOUT=5e3,u.DEFAULT_CHECK_CONNECTION_PERIOD=15e3,e.exports=u},96771:e=>{e.exports=class{async onConnectionChanged(e){}}},91307:e=>{class t extends Error{constructor(e,t){super(e),this.code=t}getCode(){return this.code}toString(){if(void 0===this.message&&void 0===this.getCode())return super.message;let e="";return void 0!==this.getCode()&&(e+=this.getCode()+": "),e+=this.message,e}}e.exports=t},73717:(e,t,r)=>{const i=r(93444),n=r(28461),a=r(85096),o=r(91307),s=r(27828),u=r(58012);class c{constructor(e,t,r,n,a){if("string"==typeof e)this._config={uri:e},this.setCredentials(t,r),void 0!==n&&(this._config.rejectUnauthorized=n),void 0!==a&&(this._config.proxyToWorker=a);else if("object"==typeof e){if(void 0!==t||void 0!==r||void 0!==n||void 0!==a)throw new o("Can provide config object or params but not both");this._config=e instanceof c?Object.assign({},e.getConfig()):Object.assign({},e),this.setCredentials(this._config.username,this._config.password)}else if(void 0!==e)throw new o("Invalid configuration to MoneroRpcConnection; must be string or MoneroRpcConnection or equivalent JS object");if(this._config=Object.assign({},c.DEFAULT_CONFIG,this._config),this._config.uri&&(this._config.uri=i.normalizeUri(this._config.uri)),this._config.user||this._config.pass)throw new o("Authentication fields 'user' and 'pass' have been renamed to 'username' and 'password'. Please update to the new api");for(let e of Object.keys(this._config))if(!i.arrayContains(c.SUPPORTED_FIELDS,e))throw new o("RPC connection includes unsupported field: '"+e+"'")}setCredentials(e,t){if(""===e&&(e=void 0),""===t&&(t=void 0),e||t){if(!e)throw new o("username must be defined because password is defined");if(!t)throw new o("password must be defined because username is defined")}return""===this._config.username&&(this._config.username=void 0),""===this._config.password&&(this._config.password=void 0),this._config.username===e&&this._config.password===t||(this._isOnline=void 0,this._isAuthenticated=void 0),this._config.username=e,this._config.password=t,this}getUri(){return this._config.uri}getUsername(){return this._config.username?this._config.username:""}getPassword(){return this._config.password?this._config.password:""}getRejectUnauthorized(){return this._config.rejectUnauthorized}setProxyToWorker(e){return this._config.proxyToWorker=e,this}getProxyToWorker(){return this._config.proxyToWorker}getConfig(){return this._config}getPriority(){return this._config.priority}setPriority(e){if(!(e>=0))throw new o("Priority must be >= 0");return this._config.priority=e,this}setAttribute(e,t){return this.attributes||(this.attributes=new Map),this.attributes.put(e,t),this}getAttribute(e){return this.attributes.get(e)}async checkConnection(e){let t=this._isOnline,r=this._isAuthenticated,i=Date.now();try{if(this._fakeDisconnected)throw new Error("Connection is fake disconnected");await this.sendJsonRequest("get_version",void 0,e),this._isOnline=!0,this._isAuthenticated=!0}catch(e){e instanceof s&&401===e.getCode()?(this._isOnline=!0,this._isAuthenticated=!1):(this._isOnline=!1,this._isAuthenticated=void 0,this._responseTime=void 0)}return this._isOnline&&(this._responseTime=Date.now()-i),t!==this._isOnline||r!==this._isAuthenticated}isConnected(){return void 0===this._isOnline?void 0:this._isOnline&&!1!==this._isAuthenticated}isOnline(){return this._isOnline}isAuthenticated(){return this._isAuthenticated}getResponseTime(){return this._responseTime}async sendJsonRequest(e,t,r){try{let o=JSON.stringify({id:"0",jsonrpc:"2.0",method:e,params:t});a.getLogLevel()>=2&&a.log(2,"Sending json request with method '"+e+"' and body: "+o);let s=(new Date).getTime(),u=await n.request({method:"POST",uri:this.getUri()+"/json_rpc",username:this.getUsername(),password:this.getPassword(),body:o,timeout:r,rejectUnauthorized:this._config.rejectUnauthorized,requestApi:i.isFirefox()?"xhr":"fetch",proxyToWorker:this._config.proxyToWorker});if(c._validateHttpResponse(u),"{"!=u.body[0])throw u.body;if(u=JSON.parse(u.body.replace(/("[^"]*"\s*:\s*)(\d{16,})/g,'$1"$2"')),a.getLogLevel()>=3){let t=JSON.stringify(u);a.log(3,"Received response from method='"+e+"', response="+t.substring(0,Math.min(1e3,t.length)+"("+((new Date).getTime()-s)+" ms)"))}return c._validateRpcResponse(u,e,t),u}catch(r){throw r instanceof s?r:new s(r,r.statusCode,e,t)}}async sendPathRequest(e,t,r){try{a.getLogLevel()>=2&&a.log(2,"Sending path request with path '"+e+"' and params: "+JSON.stringify(t));let o=(new Date).getTime(),s=await n.request({method:"POST",uri:this.getUri()+"/"+e,username:this.getUsername(),password:this.getPassword(),body:JSON.stringify(t),timeout:r,rejectUnauthorized:this._config.rejectUnauthorized,requestApi:i.isFirefox()?"xhr":"fetch",proxyToWorker:this._config.proxyToWorker});if(c._validateHttpResponse(s),"{"!=s.body[0])throw s.body;if(s=JSON.parse(s.body.replace(/("[^"]*"\s*:\s*)(\d{16,})/g,'$1"$2"')),"string"==typeof s&&(s=JSON.parse(s)),a.getLogLevel()>=3){let e=JSON.stringify(s);a.log(3,"Received response from path='"+method+"', response="+e.substring(0,Math.min(1e3,e.length)+"("+((new Date).getTime()-o)+" ms)"))}return c._validateRpcResponse(s,e,t),s}catch(r){throw r instanceof s?r:new s(r,r.statusCode,e,t)}}async sendBinaryRequest(e,t,r){let o=await u.jsonToBinary(t);try{a.getLogLevel()>=2&&a.log(2,"Sending binary request with path '"+e+"' and params: "+JSON.stringify(t));let u=await n.request({method:"POST",uri:this.getUri()+"/"+e,username:this.getUsername(),password:this.getPassword(),body:o,timeout:r,rejectUnauthorized:this._config.rejectUnauthorized,requestApi:i.isFirefox()?"xhr":"fetch",proxyToWorker:this._config.proxyToWorker});if(c._validateHttpResponse(u),u=u.body,u instanceof Uint8Array||(console.error("resp is not uint8array"),console.error(u)),u.error)throw new s(u.error.message,u.error.code,e,t);return u}catch(r){throw r instanceof s?r:new s(r,r.statusCode,e,t)}}toJson(){return this._config}toString(){return this.getUri()+" (username="+this.getUsername()+", password="+(this.getPassword()?"***":this.getPassword())+", priority="+this.getPriority()+", isOnline="+this.isOnline()+", isAuthenticated="+this.isAuthenticated()+")"}static _validateHttpResponse(e){let t=e.statusCode;if(t<200||t>299){let r=e.body;throw new s(t+" "+e.statusText+(r?": "+r:""),t,void 0,void 0)}}static _validateRpcResponse(e,t,r){if(e.error)throw new s(e.error.message,e.error.code,t,r)}_setFakeDisconnected(e){this._fakeDisconnected=e}}c.DEFAULT_CONFIG={uri:void 0,username:void 0,password:void 0,rejectUnauthorized:!0,proxyToWorker:!1,priority:0},c.SUPPORTED_FIELDS=["uri","username","password","rejectUnauthorized","priority","proxyToWorker"],e.exports=c},27828:(e,t,r)=>{const i=r(91307);e.exports=class extends i{constructor(e,t,r,i){super(e,t),this.rpcMethod=r,this.rpcParams=i}getRpcMethod(){return this.rpcMethod}getRpcParams(){return this.rpcParams}toString(){let e=super.toString();return(this.rpcMethod||this.rpcParams)&&(e+="\nRequest: '"+this.rpcMethod+"' with params: "+("object"==typeof this.rpcParams?JSON.stringify(this.rpcParams):this.rpcParams)),e}}},58012:(e,t,r)=>{var i=r(48764).Buffer;const n=r(69282),a=r(63055).BigInteger,o=r(93444),s=r(85096),u=r(91307),c=r(64472),l=r(79077);class h{static getVersion(){return"0.8.2"}static setProxyToWorker(e){h.PROXY_TO_WORKER=e||!1}static async validateMnemonic(e){n(e,"Mnemonic phrase is not initialized");let t=e.split(" ");if(t.length!==h.NUM_MNEMONIC_WORDS)throw new u("Mnemonic phrase is "+t.length+" words but must be "+h.NUM_MNEMONIC_WORDS)}static async isValidPrivateViewKey(e){try{return await h.validatePrivateViewKey(e),!0}catch(e){return!1}}static async isValidPublicViewKey(e){try{return await h.validatePublicViewKey(e),!0}catch(e){return!1}}static async isValidPrivateSpendKey(e){try{return await h.validatePrivateSpendKey(e),!0}catch(e){return!1}}static async isValidPublicSpendKey(e){try{return await h.validatePublicSpendKey(e),!0}catch(e){return!1}}static async validatePrivateViewKey(e){if(!h._isHex64(e))throw new u("private view key expected to be 64 hex characters")}static async validatePublicViewKey(e){if(!h._isHex64(e))throw new u("public view key expected to be 64 hex characters")}static async validatePrivateSpendKey(e){if(!h._isHex64(e))throw new u("private spend key expected to be 64 hex characters")}static async validatePublicSpendKey(e){if(!h._isHex64(e))throw new u("public spend key expected to be 64 hex characters")}static async getIntegratedAddress(e,t,r){return h.PROXY_TO_WORKER?new c(await s.invokeWorker(void 0,"moneroUtilsGetIntegratedAddress",Array.from(arguments))):(l.validate(e),n("string"==typeof t,"Address is not string"),n(t.length>0,"Address is empty"),n(o.isBase58(t),"Address is not base 58"),void 0===s.getWasmModule()&&await s.loadKeysModule(),s.getWasmModule().queueTask((async function(){let i=s.getWasmModule().get_integrated_address_util(e,t,r||"");if("{"!==i.charAt(0))throw new u(i);return new c(JSON.parse(i))})))}static async isValidAddress(e,t){try{return await h.validateAddress(e,t),!0}catch(e){return!1}}static async validateAddress(e,t){return h.PROXY_TO_WORKER?s.invokeWorker(void 0,"moneroUtilsValidateAddress",Array.from(arguments)):(n("string"==typeof e,"Address is not string"),n(e.length>0,"Address is empty"),n(o.isBase58(e),"Address is not base 58"),l.validate(t),void 0===s.getWasmModule()&&await s.loadKeysModule(),s.getWasmModule().queueTask((async function(){let r=s.getWasmModule().validate_address(e,t);if(r)throw new u(r)})))}static async isValidPaymentId(e){try{return await h.validatePaymentId(e),!0}catch(e){return!1}}static async validatePaymentId(e){n.equal(typeof e,"string"),n(16===e.length||64===e.length)}static async getLastTxPubKey(e){let t;for(let r=0;r=e.length&&"0"!==t[i])return!1;if(i>=t.length&&"0"!==e[i])return!1}return!0}static mergeTx(e,t){for(let r of e)if(r.getHash()===t.getHash())return void r.merge(t);e.push(t)}static async jsonToBinary(e){return h.PROXY_TO_WORKER?s.invokeWorker(void 0,"moneroUtilsJsonToBinary",Array.from(arguments)):(void 0===s.getWasmModule()&&await s.loadKeysModule(),s.getWasmModule().queueTask((async function(){let t=s.getWasmModule().malloc_binary_from_json(JSON.stringify(e)),r=JSON.parse(t);r.ptr=parseInt(r.ptr),r.length=parseInt(r.length);let i=new Uint8Array(r.length);for(let e=0;eJSON.parse(e))),a.txs=a.txs.map((e=>e?e.map((e=>JSON.parse(e.replace(",","{")+"}"))):[])),a})))}static xmrToAtomicUnits(e){if("number"==typeof e)e=""+e;else if("string"!=typeof e)throw new u("Must provide XMR amount as a string or js number to convert to atomic units");let t=1,r=e.indexOf(".");return r>-1&&(t=Math.pow(10,e.length-r-1),e=e.slice(0,r)+e.slice(r+1)),new a(e).multiply(new a(h.AU_PER_XMR)).divide(new a(t))}static atomicUnitsToXmr(e){if("string"==typeof e)e=new a(e);else if(!(e instanceof a))throw new u("Must provide atomic units as BigInteger or string to convert to XMR");let t=e.divRem(new a(h.AU_PER_XMR));return Number(t[0].toJSValue()+t[1].toJSValue()/h.AU_PER_XMR)}static _isHex64(e){return"string"==typeof e&&64===e.length&&o.isHex(e)}}h.PROXY_TO_WORKER=!0,h.NUM_MNEMONIC_WORDS=25,h.RING_SIZE=12,h.MAX_REQUESTS_PER_SECOND=50,h.AU_PER_XMR=1e12,e.exports=h},74755:(e,t,r)=>{const i=r(69282),n=r(93444),a=r(28461),o=r(85096),s=r(1305),u=r(36242),c=r(3104),l=r(63131),h=r(91307),p=r(53011),d=r(73717),f=r(36721),m=r(61527),g=r(58012),v=r(99919),y=r(63149),_=r(78647);onmessage=async function(e){await self.initOneTime();let t=e.data[0],r=e.data[1],n=e.data[2];if(i(r,"Must provide function name to worker"),i(n,"Must provide callback id to worker"),!self[r])throw new Error("Method '"+r+"' is not registered with worker");e.data.splice(1,2);try{postMessage([t,n,{result:await self[r].apply(null,e.data)}])}catch(e){e instanceof Error||(e=new Error(e)),postMessage([t,n,{error:o.serializeError(e)}])}},self.initOneTime=async function(){self.isInitialized||(self.WORKER_OBJECTS={},self.isInitialized=!0,g.PROXY_TO_WORKER=!1)},self.httpRequest=async function(e,t){try{return await a.request(Object.assign(t,{proxyToWorker:!1}))}catch(e){throw e.statusCode?new Error(JSON.stringify({statusCode:e.statusCode,statusMessage:e.message})):e}},self.setLogLevel=async function(e,t){return o.setLogLevel(t)},self.getWasmMemoryUsed=async function(e){return o.getWasmModule()&&o.getWasmModule().HEAP8?o.getWasmModule().HEAP8.length:void 0},self.moneroUtilsGetIntegratedAddress=async function(e,t,r,i){return(await g.getIntegratedAddress(t,r,i)).toJson()},self.moneroUtilsValidateAddress=async function(e,t,r){return g.validateAddress(t,r)},self.moneroUtilsJsonToBinary=async function(e,t){return g.jsonToBinary(t)},self.moneroUtilsBinaryToJson=async function(e,t){return g.binaryToJson(t)},self.moneroUtilsBinaryBlocksToJson=async function(e,t){return g.binaryBlocksToJson(t)},self.daemonAddListener=async function(e,t){let r=new class extends c{async onBlockHeader(r){self.postMessage([e,"onBlockHeader_"+t,r.toJson()])}};self.daemonListeners||(self.daemonListeners={}),self.daemonListeners[t]=r,await self.WORKER_OBJECTS[e].addListener(r)},self.daemonRemoveListener=async function(e,t){if(!self.daemonListeners[t])throw new h("No daemon worker listener registered with id: "+t);await self.WORKER_OBJECTS[e].removeListener(self.daemonListeners[t]),delete self.daemonListeners[t]},self.connectDaemonRpc=async function(e,t){self.WORKER_OBJECTS[e]=new l(t)},self.daemonGetRpcConnection=async function(e){let t=await self.WORKER_OBJECTS[e].getRpcConnection();return t?t.getConfig():void 0},self.daemonIsConnected=async function(e){return self.WORKER_OBJECTS[e].isConnected()},self.daemonGetVersion=async function(e){return(await self.WORKER_OBJECTS[e].getVersion()).toJson()},self.daemonIsTrusted=async function(e){return self.WORKER_OBJECTS[e].isTrusted()},self.daemonGetHeight=async function(e){return self.WORKER_OBJECTS[e].getHeight()},self.daemonGetBlockHash=async function(e,t){return self.WORKER_OBJECTS[e].getBlockHash(t)},self.daemonGetBlockTemplate=async function(e,t,r){return(await self.WORKER_OBJECTS[e].getBlockTemplate(t,r)).toJson()},self.daemonGetLastBlockHeader=async function(e){return(await self.WORKER_OBJECTS[e].getLastBlockHeader()).toJson()},self.daemonGetBlockHeaderByHash=async function(e,t){return(await self.WORKER_OBJECTS[e].getBlockHeaderByHash(t)).toJson()},self.daemonGetBlockHeaderByHeight=async function(e,t){return(await self.WORKER_OBJECTS[e].getBlockHeaderByHeight(t)).toJson()},self.daemonGetBlockHeadersByRange=async function(e,t,r){let i=[];for(let n of await self.WORKER_OBJECTS[e].getBlockHeadersByRange(t,r))i.push(n.toJson());return i},self.daemonGetBlockByHash=async function(e,t){return(await self.WORKER_OBJECTS[e].getBlockByHash(t)).toJson()},self.daemonGetBlocksByHash=async function(e,t,r,i){let n=[];for(let a of await self.WORKER_OBJECTS[e].getBlocksByHash(t,r,i))n.push(a.toJson());return n},self.daemonGetBlockByHeight=async function(e,t){return(await self.WORKER_OBJECTS[e].getBlockByHeight(t)).toJson()},self.daemonGetBlocksByHeight=async function(e,t){let r=[];for(let i of await self.WORKER_OBJECTS[e].getBlocksByHeight(t))r.push(i.toJson());return r},self.daemonGetBlocksByRange=async function(e,t,r){let i=[];for(let n of await self.WORKER_OBJECTS[e].getBlocksByRange(t,r))i.push(n.toJson());return i},self.daemonGetBlocksByRangeChunked=async function(e,t,r,i){let n=[];for(let a of await self.WORKER_OBJECTS[e].getBlocksByRangeChunked(t,r,i))n.push(a.toJson());return n},self.daemonGetBlockHashes=async function(e,t,r){throw new Error("worker.getBlockHashes not implemented")},self.daemonGetTxs=async function(e,t,r){let i,n=await self.WORKER_OBJECTS[e].getTxs(t,r),a=[],o=new Set;for(let e of n)e.getBlock()||(i||(i=(new u).setTxs([])),e.setBlock(i),i.getTxs().push(e)),o.has(e.getBlock())||(o.add(e.getBlock()),a.push(e.getBlock()));for(let e=0;e{e.exports=class{constructor(e){this.state=Object.assign({},e)}getPrivateKeyPath(){return this.state.privateKeyPath}setPrivateKeyPath(e){return this.state.privateKeyPath=e,this}getCertificatePath(){return this.state.certificatePath}setCertificatePath(e){return this.state.certificatePath=e,this}getCertificateAuthorityFile(){return this.state.certificateAuthorityFile}setCertificateAuthorityFile(e){return this.state.certificateAuthorityFile=e,this}getAllowedFingerprints(){return this.state.allowedFingerprints}setAllowedFingerprints(e){return this.state.allowedFingerprints=e,this}getAllowAnyCert(){return this.state.allowAnyCert}setAllowAnyCert(e){return this.state.allowAnyCert=e,this}}},36693:e=>{e.exports=class{constructor(e){this._task=e}getTask(){return this._task}start(e){return this._periodInMs=e,this._isStarted||(this._isStarted=!0,this._runLoop()),this}isStarted(){return this._isStarted}stop(){this._isStarted=!1}setPeriodInMs(e){this._periodInMs=e}async _runLoop(){if(this._isLooping)return;this._isLooping=!0;let e=this;for(;this._isStarted;){let t=Date.now();await this._task(),this._isStarted&&await new Promise((function(r){setTimeout(r,e._periodInMs-(Date.now()-t))}))}this._isLooping=!1}}},28103:(e,t,r)=>{const i=r(93444);e.exports=class{constructor(e){if(void 0===e&&(e=1),e<1)throw new Error("Max concurrency must be greater than or equal to 1");const t=r(81195);this.taskQueue=t.queue((function(e,t){e.then?e.then((e=>{t(e)})).catch((e=>{t(void 0,e)})):e().then((e=>{t(e)})).catch((e=>{t(void 0,e)}))}),e);let i=this;this.drainListeners=[],this.taskQueue.drain=function(){for(let e of i.drainListeners)e()}}async submit(e){let t=this;return new Promise((function(r,i){t.taskQueue.push(e,(function(e,t){void 0!==t?i(t):r(e)}))}))}async awaitAll(){if(0===this.taskQueue.length)return;let e=this;return new Promise((function(t){e.drainListeners.push((function(){i.remove(e.drainListeners,this),t()}))}))}}},63055:(e,t)=>{!function(e){"use strict";var t={};function r(e,i,a){if(a!==t)return e instanceof r?e:void 0===e?n:r.parse(e);for(e=e||[];e.length&&!e[e.length-1];)--e.length;this._d=e,this._s=e.length?i||1:0}r.CONSTRUCT=t,r._construct=function(e,i){return new r(e,i,t)};var i=1e7;r.base=i,r.base_log10=7;var n=new r([],0,t);r.ZERO=n;var a=new r([1],1,t);r.ONE=a;var o=new r(a._d,-1,t);r.M_ONE=o,r._0=n,r._1=a,r.small=[n,a,new r([2],1,t),new r([3],1,t),new r([4],1,t),new r([5],1,t),new r([6],1,t),new r([7],1,t),new r([8],1,t),new r([9],1,t),new r([10],1,t),new r([11],1,t),new r([12],1,t),new r([13],1,t),new r([14],1,t),new r([15],1,t),new r([16],1,t),new r([17],1,t),new r([18],1,t),new r([19],1,t),new r([20],1,t),new r([21],1,t),new r([22],1,t),new r([23],1,t),new r([24],1,t),new r([25],1,t),new r([26],1,t),new r([27],1,t),new r([28],1,t),new r([29],1,t),new r([30],1,t),new r([31],1,t),new r([32],1,t),new r([33],1,t),new r([34],1,t),new r([35],1,t),new r([36],1,t)],r.digits="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),r.prototype.toString=function(e){if((e=+e||10)<2||e>36)throw new Error("illegal radix "+e+".");if(0===this._s)return"0";if(10===e){var t=this._s<0?"-":"";t+=this._d[this._d.length-1].toString();for(var i=this._d.length-2;i>=0;i--){for(var n=this._d[i].toString();n.length<7;)n="0"+n;t+=n}return t}var a=r.digits;e=r.small[e];for(var o,s=this._s,u=this.abs(),c=[];0!==u._s;){var l=u.divRem(e);u=l[0],o=l[1],c.push(a[o.valueOf()])}return(s<0?"-":"")+c.reverse().join("")},r.radixRegex=[/^$/,/^$/,/^[01]*$/,/^[012]*$/,/^[0-3]*$/,/^[0-4]*$/,/^[0-5]*$/,/^[0-6]*$/,/^[0-7]*$/,/^[0-8]*$/,/^[0-9]*$/,/^[0-9aA]*$/,/^[0-9abAB]*$/,/^[0-9abcABC]*$/,/^[0-9a-dA-D]*$/,/^[0-9a-eA-E]*$/,/^[0-9a-fA-F]*$/,/^[0-9a-gA-G]*$/,/^[0-9a-hA-H]*$/,/^[0-9a-iA-I]*$/,/^[0-9a-jA-J]*$/,/^[0-9a-kA-K]*$/,/^[0-9a-lA-L]*$/,/^[0-9a-mA-M]*$/,/^[0-9a-nA-N]*$/,/^[0-9a-oA-O]*$/,/^[0-9a-pA-P]*$/,/^[0-9a-qA-Q]*$/,/^[0-9a-rA-R]*$/,/^[0-9a-sA-S]*$/,/^[0-9a-tA-T]*$/,/^[0-9a-uA-U]*$/,/^[0-9a-vA-V]*$/,/^[0-9a-wA-W]*$/,/^[0-9a-xA-X]*$/,/^[0-9a-yA-Y]*$/,/^[0-9a-zA-Z]*$/],r.parse=function(e,i){e=e.toString(),void 0!==i&&10!=+i||(e=e.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/,"e").replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/,(function(e,t,r,i,n){var a=(n=+n)<0,o=r.length+n;e=(a?r:i).length,n=(n=Math.abs(n))>=e?n-e+a:0;var s=new Array(n+1).join("0"),u=r+i;return(t||"")+(a?u=s+u:u+=s).substr(0,o+=a?s.length:0)+(o36)throw new Error("Illegal radix "+i+".");if(i=+i,!r.radixRegex[i].test(u))throw new Error("Bad digit for radix "+i);if(0===(u=u.replace(/^0+/,"").split("")).length)return n;if(o="-"===o?-1:1,10==i){for(var c=[];u.length>=7;)c.push(parseInt(u.splice(u.length-r.base_log10,r.base_log10).join(""),10));return c.push(parseInt(u.join(""),10)),new r(c,o,t)}c=n,i=r.small[i];for(var l=r.small,h=0;hs&&(a=o,s=u),p=l;h&&pi)return 1;for(var n=this._d,a=e._d,o=t-1;o>=0;o--)if(n[o]!==a[o])return n[o]=e._d.length,s=(o?this:e)._d,u=(o?e:this)._d,c=s.length,l=u.length,h=c+l,p=new Array(h);for(a=0;a=i?[a%i|0,a/i|0]:[a],1,t);if(2===e)return this.add(this);if(this.isUnit())return new r([e],1,t);for(var o=this._d,s=o.length,u=s+1,c=new Array(u),l=0;lc._d.length&&(g=(g+1)*i),s=Math.ceil(g/v)}do{var y=c.multiplySingleDigit(s);if(y.compareAbs(d)<=0)break;s--}while(s);if(p.push(s),s){var _=d.subtract(y);d._d=_._d.slice()}}return[new r(p.reverse(),u,t),new r(d._d,this._s,t)]},r.prototype.divRemSmall=function(e){var a;if(0==(e=+e))throw new Error("Divide by zero");var o=e<0?-1:1,s=this._s*o;if((e=Math.abs(e))<1||e>=i)throw new Error("Argument out of range");if(0===this._s)return[n,n];if(1===e||-1===e)return[1===s?this.abs():new r(this._d,s,t),n];if(1===this._d.length){var u=new r([this._d[0]/e|0],1,t);return a=new r([this._d[0]%e|0],1,t),s<0&&(u=u.negate()),this._s<0&&(a=a.negate()),[u,a]}for(var c,l=this._d.slice(),h=new Array(l.length),p=0,d=0,f=0;l.length;)(p=p*i+l[l.length-1])0},r.prototype.isNegative=function(){return this._s<0},r.prototype.isZero=function(){return 0===this._s},r.prototype.exp10=function(e){if(0==(e=+e))return this;if(Math.abs(e)>Number(s))throw new Error("exponent too large in BigInteger.exp10");if(0===this._s)return n;if(e>0){for(var i=new r(this._d.slice(),this._s,t);e>=7;e-=7)i._d.unshift(0);return 0==e?i:(i._s=1,i=i.multiplySingleDigit(Math.pow(10,e)),this._s<0?i.negate():i)}if(-e>=7*this._d.length)return n;for(i=new r(this._d.slice(),this._s,t),e=-e;e>=7;e-=7)i._d.shift();return 0==e?i:i.divRemSmall(Math.pow(10,e))[0]},r.prototype.pow=function(e){if(this.isUnit())return this._s>0||r(e).isOdd()?this:this.negate();if(0===(e=r(e))._s)return a;if(e._s<0){if(0===this._s)throw new Error("Divide by zero");return n}if(0===this._s)return n;if(e.isUnit())return this;if(e.compareAbs(s)>0)throw new Error("exponent too large in BigInteger.pow");for(var t=this,i=a,o=r.small[2];e.isPositive();){if(e.isOdd()&&(i=i.multiply(t),e.isUnit()))return i;t=t.square(),e=e.quotient(o)}return i},r.prototype.modPow=function(e,t){for(var i=a,n=this;e.isPositive();)e.isOdd()&&(i=i.multiply(n).remainder(t)),(e=e.quotient(r.small[2])).isPositive()&&(n=n.square().remainder(t));return i},r.prototype.log=function(){switch(this._s){case 0:return-1/0;case-1:return NaN}var e=this._d.length;if(7*e<30)return Math.log(this.valueOf());var n=Math.ceil(30/7),a=this._d.slice(e-n);return Math.log(new r(a,1,t).valueOf())+(e-n)*Math.log(i)},r.prototype.valueOf=function(){return parseInt(this.toString(),10)},r.prototype.toJSValue=function(){return parseInt(this.toString(),10)},r.prototype.lowVal=function(){return this._d[0]||0};var s=r(2147483647);r.MAX_EXP=s,function(){function e(e){return function(t){return e.call(r(t))}}function t(e){return function(t,i){return e.call(r(t),r(i))}}function i(e){return function(t,i,n){return e.call(r(t),r(i),r(n))}}!function(){var n,a,o="toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(","),s="compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(","),u=["modPow"];for(n=0;n{const i=r(91307);e.exports=class{async addListener(e){throw new i("Subclass must implement")}async removeListener(e){throw new i("Subclass must implement")}getListeners(){throw new i("Subclass must implement")}async isConnected(){throw new i("Subclass must implement")}async getVersion(){throw new i("Subclass must implement")}async isTrusted(){throw new i("Subclass must implement")}async getHeight(){throw new i("Subclass must implement")}async getBlockHash(e){throw new i("Subclass must implement")}async getBlockTemplate(e,t){throw new i("Subclass must implement")}async getLastBlockHeader(){throw new i("Subclass must implement")}async getBlockHeaderByHash(e){throw new i("Subclass must implement")}async getBlockHeaderByHeight(e){throw new i("Subclass must implement")}async getBlockHeadersByRange(e,t){throw new i("Subclass must implement")}async getBlockByHash(e){throw new i("Subclass must implement")}async getBlocksByHash(e,t,r){throw new i("Subclass must implement")}async getBlockByHeight(e){throw new i("Subclass must implement")}async getBlocksByHeight(e){throw new i("Subclass must implement")}async getBlocksByRange(e,t){throw new i("Subclass must implement")}async getBlocksByRangeChunked(e,t,r){throw new i("Subclass must implement")}async getBlockHashes(e,t){throw new i("Subclass must implement")}async getTx(e,t=!1){return(await this.getTxs([e],t))[0]}async getTxs(e,t=!1){throw new i("Subclass must implement")}async getTxHex(e,t=!1){return(await this.getTxHexes([e],t))[0]}async getTxHexes(e,t=!1){throw new i("Subclass must implement")}async getMinerTxSum(e,t){throw new i("Subclass must implement")}async getFeeEstimate(e){throw new i("Subclass must implement")}async submitTxHex(e,t){throw new i("Subclass must implement")}async relayTxByHash(e){r(69282).equal(typeof e,"string","Must provide a transaction hash"),await this.relayTxsByHash([e])}async relayTxsByHash(e){throw new i("Subclass must implement")}async getTxPool(){throw new i("Subclass must implement")}async getTxPoolHashes(){throw new i("Subclass must implement")}async getTxPoolBacklog(){throw new i("Subclass must implement")}async getTxPoolStats(){throw new i("Subclass must implement")}async flushTxPool(e){throw new i("Subclass must implement")}async getKeyImageSpentStatus(e){return(await this.getKeyImageSpentStatuses([e]))[0]}async getKeyImageSpentStatuses(e){throw new i("Subclass must implement")}async getOutputs(e){throw new i("Subclass must implement")}async getOutputHistogram(e,t,r,n,a){throw new i("Subclass must implement")}async getOutputDistribution(e,t,r,n){throw new i("Subclass must implement")}async getInfo(){throw new i("Subclass must implement")}async getSyncInfo(){throw new i("Subclass must implement")}async getHardForkInfo(){throw new i("Subclass must implement")}async getAltChains(){throw new i("Subclass must implement")}async getAltBlockHashes(){throw new i("Subclass must implement")}async getDownloadLimit(){throw new i("Subclass must implement")}async setDownloadLimit(e){throw new i("Subclass must implement")}async resetDownloadLimit(){throw new i("Subclass must implement")}async getUploadLimit(){throw new i("Subclass must implement")}async setUploadLimit(e){throw new i("Subclass must implement")}async resetUploadLimit(){throw new i("Subclass must implement")}async getPeers(){throw new i("Subclass must implement")}async getKnownPeers(){throw new i("Subclass must implement")}async setOutgoingPeerLimit(e){throw new i("Subclass must implement")}async setIncomingPeerLimit(e){throw new i("Subclass must implement")}async getPeerBans(){throw new i("Subclass must implement")}async setPeerBan(e){return await this.setPeerBans([e])}async setPeerBans(e){throw new i("Subclass must implement")}async startMining(e,t,r,n){throw new i("Subclass must implement")}async stopMining(){throw new i("Subclass must implement")}async getMiningStatus(){throw new i("Subclass must implement")}async submitBlock(e){await this.submitBlocks([e])}async pruneBlockchain(e){throw new i("Subclass must implement")}async submitBlocks(e){throw new i("Subclass must implement")}async checkForUpdate(){throw new i("Subclass must implement")}async downloadUpdate(e){throw new i("Subclass must implement")}async stop(){throw new i("Subclass must implement")}async waitForNextBlockHeader(){throw new i("Subclass must implement")}static parseNetworkType(e){const t=r(79077);if("mainnet"===e)return t.MAINNET;if("testnet"===e)return t.TESTNET;if("stagenet"===e)return t.STAGENET;throw new i("Invalid network type to parse: "+e)}}},63131:(e,t,r)=>{const i=r(69282),n=r(63055).BigInteger,a=r(93444),o=r(85096),s=r(36693),u=r(24652),c=r(1305),l=r(36242),h=r(29457),p=r(91350),d=r(77333),f=r(88988),m=r(3104),g=r(7666),v=r(91307),y=r(90176),_=r(48936),b=r(53011),w=r(20465),E=r(15887),k=r(79077),S=r(42299),x=r(96909),j=r(63374),N=r(58400),M=r(73717),I=r(38991),A=r(2624),T=r(26046),R=r(58012),P=r(55540);class O extends d{constructor(e,t,r,i,n,o){if(super(),a.isArray(e))throw new Error("Use monerojs.connectToDaemonRpc(...) to use terminal parameters");if(this.config=O._normalizeConfig(e,t,r,i,n,o),this.config.proxyToWorker)throw new Error("Use monerojs.connectToDaemonRpc(...) to proxy to worker");let s=Object.assign({},this.config);delete s.proxyToWorker,delete s.pollInterval,this.rpc=new M(s),this.listeners=[],this.cachedHeaders={}}static async _connectToDaemonRpc(e,t,r,i,n,o){if(a.isArray(e))return O._startMonerodProcess(e,i,n,o);let s=O._normalizeConfig(e,t,r,i,n,o);return s.proxyToWorker?B.connect(s):new O(s)}static async _startMonerodProcess(e,t,n,s){let u;i(a.isArray(e),"Must provide string array with command line parameters"),this.process=r(43448).spawn(e[0],e.slice(1),{}),this.process.stdout.setEncoding("utf8"),this.process.stderr.setEncoding("utf8");let c=this,l="";return new Promise((function(r,i){c.process.stdout.on("data",(async function(i){let a=i.toString();o.log(2,a),l+=a+"\n";let h="Binding on ",p=a.indexOf(h);if(p>=0){let t=a.substring(p+h.length,a.lastIndexOf(" ")),r=a.replace(/\u001b\[.*?m/g,"").trim(),i=r.substring(r.lastIndexOf(":")+1),n=e.indexOf("--rpc-ssl"),o=n>=0&&"enabled"==e[n+1].toLowerCase();u=(o?"https":"http")+"://"+t+":"+i}if(a.indexOf("core RPC server started ok")>=0){let i=e.indexOf("--rpc-login"),a=i>=0?e[i+1]:void 0,o=void 0===a?void 0:a.substring(0,a.indexOf(":")),l=void 0===a?void 0:a.substring(a.indexOf(":")+1),h=await c._connectToDaemonRpc(u,o,l,t,n,s);h.process=c.process,this.isResolved=!0,r(h)}})),c.process.stderr.on("data",(function(e){o.getLogLevel()>=2&&console.error(e)})),c.process.on("exit",(function(e){this.isResolved||i(new Error("monerod process terminated with exit code "+e+(l?":\n\n"+l:"")))})),c.process.on("error",(function(t){t.message.indexOf("ENOENT")>=0&&i(new Error("monerod does not exist at path '"+e[0]+"'")),this.isResolved||i(t)})),c.process.on("uncaughtException",(function(e,t){console.error("Uncaught exception in monerod process: "+e.message),console.error(t),i(e)}))}))}getProcess(){return this.process}async stopProcess(e){if(void 0===this.process)throw new v("MoneroDaemonRpc instance not created from new process");let t=a.copyArray(this.getListeners());for(let e of t)await this.removeListener(e);return a.killProcess(this.process,e?"sigkill":void 0)}async addListener(e){i(e instanceof m,"Listener must be instance of MoneroDaemonListener"),this.listeners.push(e),this._refreshListening()}async removeListener(e){i(e instanceof m,"Listener must be instance of MoneroDaemonListener");let t=this.listeners.indexOf(e);if(!(t>-1))throw new v("Listener is not registered with daemon");this.listeners.splice(t,1),this._refreshListening()}getListeners(){return this.listeners}async getRpcConnection(){return this.rpc}async isConnected(){try{return await this.getVersion(),!0}catch(e){return!1}}async getVersion(){let e=await this.rpc.sendJsonRequest("get_version");return O._checkResponseStatus(e.result),new P(e.result.version,e.result.release)}async isTrusted(){let e=await this.rpc.sendPathRequest("get_height");return O._checkResponseStatus(e),!e.untrusted}async getHeight(){let e=await this.rpc.sendJsonRequest("get_block_count");return O._checkResponseStatus(e.result),e.result.count}async getBlockHash(e){return(await this.rpc.sendJsonRequest("on_get_block_hash",[e])).result}async getBlockTemplate(e,t){i(e&&"string"==typeof e,"Must specify wallet address to be mined to");let r=await this.rpc.sendJsonRequest("get_block_template",{wallet_address:e,reserve_size:t});return O._checkResponseStatus(r.result),O._convertRpcBlockTemplate(r.result)}async getLastBlockHeader(){let e=await this.rpc.sendJsonRequest("get_last_block_header");return O._checkResponseStatus(e.result),O._convertRpcBlockHeader(e.result.block_header)}async getBlockHeaderByHash(e){let t=await this.rpc.sendJsonRequest("get_block_header_by_hash",{hash:e});return O._checkResponseStatus(t.result),O._convertRpcBlockHeader(t.result.block_header)}async getBlockHeaderByHeight(e){let t=await this.rpc.sendJsonRequest("get_block_header_by_height",{height:e});return O._checkResponseStatus(t.result),O._convertRpcBlockHeader(t.result.block_header)}async getBlockHeadersByRange(e,t){let r=await this.rpc.sendJsonRequest("get_block_headers_range",{start_height:e,end_height:t});O._checkResponseStatus(r.result);let i=[];for(let e of r.result.headers)i.push(O._convertRpcBlockHeader(e));return i}async getBlockByHash(e){let t=await this.rpc.sendJsonRequest("get_block",{hash:e});return O._checkResponseStatus(t.result),O._convertRpcBlock(t.result)}async getBlockByHeight(e){let t=await this.rpc.sendJsonRequest("get_block",{height:e});return O._checkResponseStatus(t.result),O._convertRpcBlock(t.result)}async getBlocksByHeight(e){let t=await this.rpc.sendBinaryRequest("get_blocks_by_height.bin",{heights:e}),r=await R.binaryBlocksToJson(t);O._checkResponseStatus(r),i.equal(r.txs.length,r.blocks.length);let n=[];for(let t=0;t0,"Must provide an array of transaction hashes"),i(void 0===t||"boolean"==typeof t,"Prune must be a boolean or undefined");let r=await this.rpc.sendPathRequest("get_transactions",{txs_hashes:e,decode_as_json:!0,prune:t});try{O._checkResponseStatus(r)}catch(e){if(e.message.indexOf("Failed to parse hex representation of transaction hash")>=0)throw new v("Invalid transaction hash");throw e}let n=[];if(r.txs)for(let e=0;e=0,"Height must be an integer >= 0"),void 0===t?t=await this.getHeight():i(t>=0,"Count must be an integer >= 0");let r=await this.rpc.sendJsonRequest("get_coinbase_tx_sum",{height:e,count:t});O._checkResponseStatus(r.result);let a=new w;return a.setEmissionSum(new n(r.result.emission_amount)),a.setFeeSum(new n(r.result.fee_amount)),a}async getFeeEstimate(e){let t=await this.rpc.sendJsonRequest("get_fee_estimate",{grace_blocks:e});O._checkResponseStatus(t.result);let r=new y;r.setFee(new n(t.result.fee));let i=[];for(let e=0;e0))throw new v("Download limit must be an integer greater than 0");return(await this._setBandwidthLimits(e,0))[0]}async resetDownloadLimit(){return(await this._setBandwidthLimits(-1,0))[0]}async getUploadLimit(){return(await this._getBandwidthLimits())[1]}async setUploadLimit(e){if(-1==e)return await this.resetUploadLimit();if(!(a.isInt(e)&&e>0))throw new v("Upload limit must be an integer greater than 0");return(await this._setBandwidthLimits(0,e))[1]}async resetUploadLimit(){return(await this._setBandwidthLimits(0,-1))[1]}async getPeers(){let e=await this.rpc.sendJsonRequest("get_connections");O._checkResponseStatus(e.result);let t=[];if(!e.result.connections)return t;for(let r of e.result.connections)t.push(O._convertRpcConnection(r));return t}async getKnownPeers(){let e=await this.rpc.sendPathRequest("get_peer_list");O._checkResponseStatus(e);let t=[];if(e.gray_list)for(let r of e.gray_list){let e=O._convertRpcPeer(r);e.setIsOnline(!1),t.push(e)}if(e.white_list)for(let r of e.white_list){let e=O._convertRpcPeer(r);e.setIsOnline(!0),t.push(e)}return t}async setOutgoingPeerLimit(e){if(!(a.isInt(e)&&e>=0))throw new v("Outgoing peer limit must be >= 0");let t=await this.rpc.sendPathRequest("out_peers",{out_peers:e});O._checkResponseStatus(t)}async setIncomingPeerLimit(e){if(!(a.isInt(e)&&e>=0))throw new v("Incoming peer limit must be >= 0");let t=await this.rpc.sendPathRequest("in_peers",{in_peers:e});O._checkResponseStatus(t)}async getPeerBans(){let e=await this.rpc.sendJsonRequest("get_bans");O._checkResponseStatus(e.result);let t=[];for(let r of e.result.bans){let e=new c;e.setHost(r.host),e.setIp(r.ip),e.setSeconds(r.seconds),t.push(e)}return t}async setPeerBans(e){let t=[];for(let r of e)t.push(O._convertToRpcBan(r));let r=await this.rpc.sendJsonRequest("set_bans",{bans:t});O._checkResponseStatus(r.result)}async startMining(e,t,r,n){i(e,"Must provide address to mine to"),i(a.isInt(t)&&t>0,"Number of threads must be an integer greater than 0"),i(void 0===r||"boolean"==typeof r),i(void 0===n||"boolean"==typeof n);let o=await this.rpc.sendPathRequest("start_mining",{miner_address:e,threads_count:t,do_background_mining:r,ignore_battery:n});O._checkResponseStatus(o)}async stopMining(){let e=await this.rpc.sendPathRequest("stop_mining");O._checkResponseStatus(e)}async getMiningStatus(){let e=await this.rpc.sendPathRequest("mining_status");return O._checkResponseStatus(e),O._convertRpcMiningStatus(e)}async submitBlocks(e){i(Array.isArray(e)&&e.length>0,"Must provide an array of mined block blobs to submit");let t=await this.rpc.sendJsonRequest("submit_block",e);O._checkResponseStatus(t.result)}async pruneBlockchain(e){let t=await this.rpc.sendJsonRequest("prune_blockchain",{check:e},0);O._checkResponseStatus(t.result);let r=new N;return r.setIsPruned(t.result.pruned),r.setPruningSeed(t.result.pruning_seed),r}async checkForUpdate(){let e=await this.rpc.sendPathRequest("update",{command:"check"});return O._checkResponseStatus(e),O._convertRpcUpdateCheckResult(e)}async downloadUpdate(e){let t=await this.rpc.sendPathRequest("update",{command:"download",path:e});return O._checkResponseStatus(t),O._convertRpcUpdateDownloadResult(t)}async stop(){let e=await this.rpc.sendPathRequest("stop_daemon");O._checkResponseStatus(e)}async waitForNextBlockHeader(){let e=this;return new Promise((async function(t){await e.addListener(new class extends m{async onBlockHeader(r){await e.removeListener(this),t(r)}})}))}async getTx(){return super.getTx(...arguments)}async getTxHex(){return super.getTxHex(...arguments)}async getKeyImageSpentStatus(){return super.getKeyImageSpentStatus(...arguments)}async setPeerBan(){return super.setPeerBan(...arguments)}async submitBlock(){return super.submitBlock(...arguments)}_refreshListening(){null==this.pollListener&&this.listeners.length&&(this.pollListener=new C(this)),void 0!==this.pollListener&&this.pollListener.setIsPolling(this.listeners.length>0)}async _getBandwidthLimits(){let e=await this.rpc.sendPathRequest("get_limit");return O._checkResponseStatus(e),[e.limit_down,e.limit_up]}async _setBandwidthLimits(e,t){void 0===e&&(e=0),void 0===t&&(t=0);let r=await this.rpc.sendPathRequest("set_limit",{limit_down:e,limit_up:t});return O._checkResponseStatus(r),[r.limit_down,r.limit_up]}async _getMaxBlocks(e,t,r){void 0===e&&(e=0),void 0===t&&(t=await this.getHeight()-1),void 0===r&&(r=O.MAX_REQ_SIZE);let n=0,a=e-1;for(;nr)break;n+=e.getSize(),a++}return a>=e?await this.getBlocksByRange(e,a):[]}async _getBlockHeaderByHeightCached(e,t){let r=this.cachedHeaders[e];if(r)return r;let i=Math.min(t,e+O.NUM_HEADERS_PER_REQ-1),n=await this.getBlockHeadersByRange(e,i);for(let e of n)this.cachedHeaders[e.getHeight()]=e;return this.cachedHeaders[e]}static _normalizeConfig(e,t,r,i,n,a){let o;if("string"==typeof e)o={uri:e,username:t,password:r,proxyToWorker:a,rejectUnauthorized:i,pollInterval:n};else{if("object"!=typeof e)throw new v("Invalid configuration to create rpc client; must be string, object, or MoneroRpcConnection");if(t||r||i||n||a)throw new v("Can provide config object or params or new MoneroDaemonRpc(...) but not both");o=e instanceof M?Object.assign({},e.getConfig()):Object.assign({},e)}return o.server&&(o=Object.assign(o,new M(o.server).getConfig()),delete o.server),void 0===o.pollInterval&&(o.pollInterval=5e3),void 0===o.proxyToWorker&&(o.proxyToWorker=!0),o}static _checkResponseStatus(e){if("OK"!==e.status)throw new v(e.status)}static _convertRpcBlockHeader(e){if(!e)return;let t=new h;for(let r of Object.keys(e)){let i=e[r];"block_size"===r?a.safeSet(t,t.getSize,t.setSize,i):"depth"===r?a.safeSet(t,t.getDepth,t.setDepth,i):"difficulty"===r||"cumulative_difficulty"===r||"difficulty_top64"===r||"cumulative_difficulty_top64"===r||("wide_difficulty"===r?t.setDifficulty(a.reconcile(t.getDifficulty(),O._prefixedHexToBI(i))):"wide_cumulative_difficulty"===r?t.setCumulativeDifficulty(a.reconcile(t.getCumulativeDifficulty(),O._prefixedHexToBI(i))):"hash"===r?a.safeSet(t,t.getHash,t.setHash,i):"height"===r?a.safeSet(t,t.getHeight,t.setHeight,i):"major_version"===r?a.safeSet(t,t.getMajorVersion,t.setMajorVersion,i):"minor_version"===r?a.safeSet(t,t.getMinorVersion,t.setMinorVersion,i):"nonce"===r?a.safeSet(t,t.getNonce,t.setNonce,i):"num_txes"===r?a.safeSet(t,t.getNumTxs,t.setNumTxs,i):"orphan_status"===r?a.safeSet(t,t.getOrphanStatus,t.setOrphanStatus,i):"prev_hash"===r||"prev_id"===r?a.safeSet(t,t.getPrevHash,t.setPrevHash,i):"reward"===r?a.safeSet(t,t.getReward,t.setReward,n.parse(i)):"timestamp"===r?a.safeSet(t,t.getTimestamp,t.setTimestamp,i):"block_weight"===r?a.safeSet(t,t.getWeight,t.setWeight,i):"long_term_weight"===r?a.safeSet(t,t.getLongTermWeight,t.setLongTermWeight,i):"pow_hash"===r?a.safeSet(t,t.getPowHash,t.setPowHash,""===i?void 0:i):"tx_hashes"===r||"miner_tx"===r||("miner_tx_hash"===r?t.setMinerTxHash(i):console.log("WARNING: ignoring unexpected block header field: '"+r+"': "+i)))}return t}static _convertRpcBlock(e){let t=new l(O._convertRpcBlockHeader(e.block_header?e.block_header:e));t.setHex(e.blob),t.setTxHashes(void 0===e.tx_hashes?[]:e.tx_hashes);let r=e.json?JSON.parse(e.json).miner_tx:e.miner_tx,i=new A;return t.setMinerTx(i),i.setIsConfirmed(!0),i.setIsMinerTx(!0),O._convertRpcTx(r,i),t}static _convertRpcTx(e,t){if(void 0===e)return;let r;void 0===t&&(t=new A);for(let i of Object.keys(e)){let o=e[i];"tx_hash"===i||"id_hash"===i?a.safeSet(t,t.getHash,t.setHash,o):"block_timestamp"===i?(r||(r=new h),a.safeSet(r,r.getTimestamp,r.setTimestamp,o)):"block_height"===i?(r||(r=new h),a.safeSet(r,r.getHeight,r.setHeight,o)):"last_relayed_time"===i?a.safeSet(t,t.getLastRelayedTimestamp,t.setLastRelayedTimestamp,o):"receive_time"===i||"received_timestamp"===i?a.safeSet(t,t.getReceivedTimestamp,t.setReceivedTimestamp,o):"confirmations"===i?a.safeSet(t,t.getNumConfirmations,t.setNumConfirmations,o):"in_pool"===i?(a.safeSet(t,t.isConfirmed,t.setIsConfirmed,!o),a.safeSet(t,t.inTxPool,t.setInTxPool,o)):"double_spend_seen"===i?a.safeSet(t,t.isDoubleSpendSeen,t.setIsDoubleSpend,o):"version"===i?a.safeSet(t,t.getVersion,t.setVersion,o):"extra"===i?"string"==typeof o?console.log("WARNING: extra field as string not being asigned to int[]: "+i+": "+o):a.safeSet(t,t.getExtra,t.setExtra,o):"vin"===i?1===o.length&&o[0].gen||t.setInputs(o.map((e=>O._convertRpcOutput(e,t)))):"vout"===i?t.setOutputs(o.map((e=>O._convertRpcOutput(e,t)))):"rct_signatures"===i?(a.safeSet(t,t.getRctSignatures,t.setRctSignatures,o),o.txnFee&&a.safeSet(t,t.getFee,t.setFee,n.parse(o.txnFee))):"rctsig_prunable"===i?a.safeSet(t,t.getRctSigPrunable,t.setRctSigPrunable,o):"unlock_time"===i?a.safeSet(t,t.getUnlockTime,t.setUnlockTime,o):"as_json"===i||"tx_json"===i||("as_hex"===i||"tx_blob"===i?a.safeSet(t,t.getFullHex,t.setFullHex,o||void 0):"blob_size"===i?a.safeSet(t,t.getSize,t.setSize,o):"weight"===i?a.safeSet(t,t.getWeight,t.setWeight,o):"fee"===i?a.safeSet(t,t.getFee,t.setFee,n.parse(o)):"relayed"===i?a.safeSet(t,t.isRelayed,t.setIsRelayed,o):"output_indices"===i?a.safeSet(t,t.getOutputIndices,t.setOutputIndices,o):"do_not_relay"===i?a.safeSet(t,t.getRelay,t.setRelay,!o):"kept_by_block"===i?a.safeSet(t,t.isKeptByBlock,t.setIsKeptByBlock,o):"signatures"===i?a.safeSet(t,t.getSignatures,t.setSignatures,o):"last_failed_height"===i?0===o?a.safeSet(t,t.isFailed,t.setIsFailed,!1):(a.safeSet(t,t.isFailed,t.setIsFailed,!0),a.safeSet(t,t.getLastFailedHeight,t.setLastFailedHeight,o)):"last_failed_id_hash"===i?o===O.DEFAULT_ID?a.safeSet(t,t.isFailed,t.setIsFailed,!1):(a.safeSet(t,t.isFailed,t.setIsFailed,!0),a.safeSet(t,t.getLastFailedHash,t.setLastFailedHash,o)):"max_used_block_height"===i?a.safeSet(t,t.getMaxUsedBlockHeight,t.setMaxUsedBlockHeight,o):"max_used_block_id_hash"===i?a.safeSet(t,t.getMaxUsedBlockHash,t.setMaxUsedBlockHash,o):"prunable_hash"===i?a.safeSet(t,t.getPrunableHash,t.setPrunableHash,o||void 0):"prunable_as_hex"===i?a.safeSet(t,t.getPrunableHex,t.setPrunableHex,o||void 0):"pruned_as_hex"===i?a.safeSet(t,t.getPrunedHex,t.setPrunedHex,o||void 0):console.log("WARNING: ignoring unexpected field in rpc tx: "+i+": "+o))}if(r&&t.setBlock(new l(r).setTxs([t])),t.getBlock()&&void 0!==t.getBlock().getHeight()&&t.getBlock().getHeight()===t.getBlock().getTimestamp()&&(t.setBlock(void 0),t.setIsConfirmed(!1)),t.isConfirmed()?(a.safeSet(t,t.isRelayed,t.setIsRelayed,!0),a.safeSet(t,t.getRelay,t.setRelay,!0),a.safeSet(t,t.isFailed,t.setIsFailed,!1)):t.setNumConfirmations(0),void 0===t.isFailed()&&t.setIsFailed(!1),t.getOutputIndices()&&t.getOutputs()){i.equal(t.getOutputs().length,t.getOutputIndices().length);for(let e=0;e0&&console.error("Ignoring non-empty 'overview' field (not implemented): "+e)}catch(t){console.error("Failed to parse 'overview' field: "+e+": "+t.message)}}else"credits"===r?t.setCredits(n.parse(i)):"top_hash"===r?t.setTopBlockHash(""===i?void 0:i):"untrusted"===r||console.log("WARNING: ignoring unexpected field in sync info: "+r+": "+i)}return t}static _convertRpcHardForkInfo(e){let t=new _;for(let r of Object.keys(e)){let i=e[r];"earliest_height"===r?t.setEarliestHeight(i):"enabled"===r?t.setIsEnabled(i):"state"===r?t.setState(i):"status"===r||"untrusted"===r||("threshold"===r?t.setThreshold(i):"version"===r?t.setVersion(i):"votes"===r?t.setNumVotes(i):"voting"===r?t.setVoting(i):"window"===r?t.setWindow(i):"credits"===r?t.setCredits(n.parse(i)):"top_hash"===r?t.setTopBlockHash(""===i?void 0:i):console.log("WARNING: ignoring unexpected field in hard fork info: "+r+": "+i))}return t}static _convertRpcConnectionSpan(e){let t=new MoneroConnectionSpan;for(let r of Object.keys(e)){let i=e[r];"connection_id"===r?t.setConnectionId(i):"nblocks"===r?t.setNumBlocks(i):"rate"===r?t.setRate(i):"remote_address"===r?""!==i&&t.setRemoteAddress(i):"size"===r?t.setSize(i):"speed"===r?t.setSpeed(i):"start_block_height"===r?t.setStartHeight(i):console.log("WARNING: ignoring unexpected field in daemon connection span: "+r+": "+i)}return t}static _convertRpcOutputHistogramEntry(e){let t=new x;for(let r of Object.keys(e)){let i=e[r];"amount"===r?t.setAmount(n.parse(i)):"total_instances"===r?t.setNumInstances(i):"unlocked_instances"===r?t.setNumUnlockedInstances(i):"recent_instances"===r?t.setNumRecentInstances(i):console.log("WARNING: ignoring unexpected field in output histogram: "+r+": "+i)}return t}static _convertRpcSubmitTxResult(e){i(e);let t=new I;for(let r of Object.keys(e)){let i=e[r];"double_spend"===r?t.setIsDoubleSpend(i):"fee_too_low"===r?t.setIsFeeTooLow(i):"invalid_input"===r?t.setHasInvalidInput(i):"invalid_output"===r?t.setHasInvalidOutput(i):"too_few_outputs"===r?t.setHasTooFewOutputs(i):"low_mixin"===r?t.setIsMixinTooLow(i):"not_relayed"===r?t.setIsRelayed(!i):"overspend"===r?t.setIsOverspend(i):"reason"===r?t.setReason(""===i?void 0:i):"too_big"===r?t.setIsTooBig(i):"sanity_check_failed"===r?t.setSanityCheckFailed(i):"credits"===r?t.setCredits(n.parse(i)):"status"===r||"untrusted"===r||("top_hash"===r?t.setTopBlockHash(""===i?void 0:i):"tx_extra_too_big"===r?t.setIsTxExtraTooBig(i):console.log("WARNING: ignoring unexpected field in submit tx hex result: "+r+": "+i))}return t}static _convertRpcTxPoolStats(e){i(e);let t=new T;for(let r of Object.keys(e)){let i=e[r];if("bytes_max"===r)t.setBytesMax(i);else if("bytes_med"===r)t.setBytesMed(i);else if("bytes_min"===r)t.setBytesMin(i);else if("bytes_total"===r)t.setBytesTotal(i);else if("histo_98pc"===r)t.setHisto98pc(i);else if("num_10m"===r)t.setNum10m(i);else if("num_double_spends"===r)t.setNumDoubleSpends(i);else if("num_failing"===r)t.setNumFailing(i);else if("num_not_relayed"===r)t.setNumNotRelayed(i);else if("oldest"===r)t.setOldestTimestamp(i);else if("txs_total"===r)t.setNumTxs(i);else if("fee_total"===r)t.setFeeTotal(n.parse(i));else if("histo"===r){t.setHisto(new Map);for(let e of i)t.getHisto().set(e.bytes,e.txs)}else console.log("WARNING: ignoring unexpected field in tx pool stats: "+r+": "+i)}return 0===t.getHisto98pc()&&t.setHisto98pc(void 0),0===t.getNumTxs()&&(t.setBytesMin(void 0),t.setBytesMed(void 0),t.setBytesMax(void 0),t.setHisto98pc(void 0),t.setOldestTimestamp(void 0)),t}static _convertRpcAltChain(e){i(e);let t=new u;for(let r of Object.keys(e)){let i=e[r];"block_hash"===r||"difficulty"===r||"difficulty_top64"===r||("wide_difficulty"===r?t.setDifficulty(a.reconcile(t.getDifficulty(),O._prefixedHexToBI(i))):"height"===r?t.setHeight(i):"length"===r?t.setLength(i):"block_hashes"===r?t.setBlockHashes(i):"main_chain_parent_block"===r?t.setMainChainParentBlockHash(i):console.log("WARNING: ignoring unexpected field in alternative chain: "+r+": "+i))}return t}static _convertRpcPeer(e){i(e);let t=new j;for(let r of Object.keys(e)){let i=e[r];"host"===r?t.setHost(i):"id"===r?t.setId(""+i):"ip"===r||("last_seen"===r?t.setLastSeenTimestamp(i):"port"===r?t.setPort(i):"rpc_port"===r?t.setRpcPort(i):"pruning_seed"===r?t.setPruningSeed(i):"rpc_credits_per_hash"===r?t.setRpcCreditsPerHash(n.parse(i)):console.log("WARNING: ignoring unexpected field in rpc peer: "+r+": "+i))}return t}static _convertRpcConnection(e){let t=new j;t.setIsOnline(!0);for(let r of Object.keys(e)){let i=e[r];"address"===r?t.setAddress(i):"avg_download"===r?t.setAvgDownload(i):"avg_upload"===r?t.setAvgUpload(i):"connection_id"===r?t.setId(i):"current_download"===r?t.setCurrentDownload(i):"current_upload"===r?t.setCurrentUpload(i):"height"===r?t.setHeight(i):"host"===r?t.setHost(i):"ip"===r||("incoming"===r?t.setIsIncoming(i):"live_time"===r?t.setLiveTime(i):"local_ip"===r?t.setIsLocalIp(i):"localhost"===r?t.setIsLocalHost(i):"peer_id"===r?t.setId(i):"port"===r?t.setPort(parseInt(i)):"rpc_port"===r?t.setRpcPort(i):"recv_count"===r?t.setNumReceives(i):"recv_idle_time"===r?t.setReceiveIdleTime(i):"send_count"===r?t.setNumSends(i):"send_idle_time"===r?t.setSendIdleTime(i):"state"===r?t.setState(i):"support_flags"===r?t.setNumSupportFlags(i):"pruning_seed"===r?t.setPruningSeed(i):"rpc_credits_per_hash"===r?t.setRpcCreditsPerHash(n.parse(i)):"address_type"===r?t.setType(i):console.log("WARNING: ignoring unexpected field in peer: "+r+": "+i))}return t}static _convertToRpcBan(e){let t={};return t.host=e.getHost(),t.ip=e.getIp(),t.ban=e.isBanned(),t.seconds=e.getSeconds(),t}static _convertRpcMiningStatus(e){let t=new E;return t.setIsActive(e.active),t.setSpeed(e.speed),t.setNumThreads(e.threads_count),e.active&&(t.setAddress(e.address),t.setIsBackground(e.is_background_mining_enabled)),t}static _convertRpcUpdateCheckResult(e){i(e);let t=new MoneroDaemonUpdateCheckResult;for(let r of Object.keys(e)){let i=e[r];"auto_uri"===r?t.setAutoUri(i):"hash"===r?t.setHash(i):"path"===r||"status"===r||("update"===r?t.setIsUpdateAvailable(i):"user_uri"===r?t.setUserUri(i):"version"===r?t.setVersion(i):"untrusted"===r||console.log("WARNING: ignoring unexpected field in rpc check update result: "+r+": "+i))}return""===t.getAutoUri()&&t.setAutoUri(void 0),""===t.getUserUri()&&t.setUserUri(void 0),""===t.getVersion()&&t.setVersion(void 0),""===t.getHash()&&t.setHash(void 0),t}static _convertRpcUpdateDownloadResult(e){let t=new MoneroDaemonUpdateDownloadResult(O._convertRpcUpdateCheckResult(e));return t.setDownloadPath(e.path),""===t.getDownloadPath()&&t.setDownloadPath(void 0),t}static _prefixedHexToBI(e){return i("0x"===e.substring(0,2)),n.parse(e,16)}}O.DEFAULT_ID="0000000000000000000000000000000000000000000000000000000000000000",O.MAX_REQ_SIZE="3000000",O.NUM_HEADERS_PER_REQ="750";class B extends d{static async connect(e){let t=a.getUUID();return e=Object.assign({},e,{proxyToWorker:!1}),await o.invokeWorker(t,"connectDaemonRpc",[e]),new B(t,await o.getWorker())}constructor(e,t){super(),this.daemonId=e,this.worker=t,this.wrappedListeners=[]}async getProcess(){}async stopProcess(e){if(void 0===this.process)throw new v("MoneroDaemonRpcProxy instance not created from new process");let t=a.copyArray(this.getListeners());for(let e of t)await this.removeListener(e);return a.killProcess(this.process,e?"sigkill":void 0)}async addListener(e){let t=new z(e),r=t.getId();return o.WORKER_OBJECTS[this.daemonId].callbacks["onBlockHeader_"+r]=[t.onBlockHeader,t],this.wrappedListeners.push(t),this._invokeWorker("daemonAddListener",[r])}async removeListener(e){for(let t=0;t{const i=r(69282);class n{static validate(e){i(0===e||1===e||2===e||3===e,"Connection type is invalid: "+e)}static isValid(e){return 0===e||1===e||2===e||3}}n.INVALID=0,n.IPV4=1,n.IPV6=2,n.TOR=3,n.I2P=4,e.exports=n},24652:(e,t,r)=>{const i=r(63055).BigInteger;e.exports=class{constructor(e){void 0===(e=Object.assign({},e)).difficulty||e.difficulty instanceof i||(e.difficulty=i.parse(e.difficulty)),this.state=e}toJson(){let e=Object.assign({},this.state);return this.getDifficulty()&&(e.difficulty=this.getDifficulty().toString()),e}getBlockHashes(e){return this.state.blockHashes}setBlockHashes(e){return this.state.blockHashes=e,this}getDifficulty(){return this.state.difficulty}setDifficulty(e){return this.state.difficulty=e,this}getHeight(){return this.state.height}setHeight(e){return this.state.height=e,this}getLength(){return this.state.length}setLength(e){return this.state.length=e,this}getMainChainParentBlockHash(){return this.state.mainChainParentBlockHash}setMainChainParentBlockHash(e){return this.state.mainChainParentBlockHash=e,this}}},1305:e=>{e.exports=class{constructor(e){this.state=Object.assign({},e)}toJson(){return Object.assign({},this.state)}getHost(){return this.state.host}setHost(e){return this.state.host=e,this}getIp(){return this.state.ip}setIp(e){return this.state.ip=e,this}isBanned(){return this.state.isBanned}setIsBanned(e){return this.state.isBanned=e,this}getSeconds(){return this.state.seconds}setSeconds(e){return this.state.seconds=e,this}}},36242:(e,t,r)=>{const i=r(69282),n=r(93444),a=r(29457),o=r(2624),s=r(31857),u=r(18489);class c extends a{constructor(e,t){if(super(e),!(e=this.state).minerTx||e.minerTx instanceof o||(e.minerTx=new o(e.minerTx).setBlock(this)),e.txs)for(let r=0;r{const i=r(69282),n=r(63055).BigInteger,a=r(93444);class o{constructor(e){if(e)if(e instanceof o)e=e.toJson();else{if("object"!=typeof e)throw new MoneroError("state must be a MoneroBlockHeader or JavaScript object");e=Object.assign({},e)}else e={};this.state=e,void 0===e.difficulty||e.difficulty instanceof n||(e.difficulty=n.parse(e.difficulty)),void 0===e.cumulativeDifficulty||e.cumulativeDifficulty instanceof n||(e.cumulativeDifficulty=n.parse(e.cumulativeDifficulty)),void 0===e.reward||e.reward instanceof n||(e.reward=n.parse(e.reward))}copy(){return new o(this)}toJson(){let e=Object.assign({},this.state);return this.getDifficulty()&&(e.difficulty=this.getDifficulty().toString()),this.getCumulativeDifficulty()&&(e.cumulativeDifficulty=this.getCumulativeDifficulty().toString()),this.getReward()&&(e.reward=this.getReward().toString()),e}getHash(){return this.state.hash}setHash(e){return this.state.hash=e,this}getHeight(){return this.state.height}setHeight(e){return this.state.height=e,this}getTimestamp(){return this.state.timestamp}setTimestamp(e){return this.state.timestamp=e,this}getSize(){return this.state.size}setSize(e){return this.state.size=e,this}getWeight(){return this.state.weight}setWeight(e){return this.state.weight=e,this}getLongTermWeight(){return this.state.longTermWeight}setLongTermWeight(e){return this.state.longTermWeight=e,this}getDepth(){return this.state.depth}setDepth(e){return this.state.depth=e,this}getDifficulty(){return this.state.difficulty}setDifficulty(e){return this.state.difficulty=e,this}getCumulativeDifficulty(){return this.state.cumulativeDifficulty}setCumulativeDifficulty(e){return this.state.cumulativeDifficulty=e,this}getMajorVersion(){return this.state.majorVersion}setMajorVersion(e){return this.state.majorVersion=e,this}getMinorVersion(){return this.state.minorVersion}setMinorVersion(e){return this.state.minorVersion=e,this}getNonce(){return this.state.nonce}setNonce(e){return this.state.nonce=e,this}getMinerTxHash(){return this.state.minerTxHash}setMinerTxHash(e){return this.state.minerTxHash=e,this}getNumTxs(){return this.state.numTxs}setNumTxs(e){return this.state.numTxs=e,this}getOrphanStatus(){return this.state.orphanStatus}setOrphanStatus(e){return this.state.orphanStatus=e,this}getPrevHash(){return this.state.prevHash}setPrevHash(e){return this.state.prevHash=e,this}getReward(){return this.state.reward}setReward(e){return this.state.reward=e,this}getPowHash(){return this.state.powHash}setPowHash(e){return this.state.powHash=e,this}merge(e){return i(e instanceof o),this===e||(this.setHash(a.reconcile(this.getHash(),e.getHash())),this.setHeight(a.reconcile(this.getHeight(),e.getHeight(),{resolveMax:!0})),this.setTimestamp(a.reconcile(this.getTimestamp(),e.getTimestamp(),{resolveMax:!0})),this.setSize(a.reconcile(this.getSize(),e.getSize())),this.setWeight(a.reconcile(this.getWeight(),e.getWeight())),this.setDepth(a.reconcile(this.getDepth(),e.getDepth())),this.setDifficulty(a.reconcile(this.getDifficulty(),e.getDifficulty())),this.setCumulativeDifficulty(a.reconcile(this.getCumulativeDifficulty(),e.getCumulativeDifficulty())),this.setMajorVersion(a.reconcile(this.getMajorVersion(),e.getMajorVersion())),this.setMinorVersion(a.reconcile(this.getMinorVersion(),e.getMinorVersion())),this.setNonce(a.reconcile(this.getNonce(),e.getNonce())),this.setMinerTxHash(a.reconcile(this.getMinerTxHash(),e.getMinerTxHash())),this.setNumTxs(a.reconcile(this.getNumTxs(),e.getNumTxs())),this.setOrphanStatus(a.reconcile(this.getOrphanStatus(),e.getOrphanStatus())),this.setPrevHash(a.reconcile(this.getPrevHash(),e.getPrevHash())),this.setReward(a.reconcile(this.getReward(),e.getReward())),this.setPowHash(a.reconcile(this.getPowHash(),e.getPowHash()))),this}toString(e=0){let t="";return t+=a.kvLine("Hash",this.getHash(),e),t+=a.kvLine("Height",this.getHeight(),e),t+=a.kvLine("Timestamp",this.getTimestamp(),e),t+=a.kvLine("Size",this.getSize(),e),t+=a.kvLine("Weight",this.getWeight(),e),t+=a.kvLine("Depth",this.getDepth(),e),t+=a.kvLine("Difficulty",this.getDifficulty(),e),t+=a.kvLine("Cumulative difficulty",this.getCumulativeDifficulty(),e),t+=a.kvLine("Major version",this.getMajorVersion(),e),t+=a.kvLine("Minor version",this.getMinorVersion(),e),t+=a.kvLine("Nonce",this.getNonce(),e),t+=a.kvLine("Miner tx hash",this.getMinerTxHash(),e),t+=a.kvLine("Num txs",this.getNumTxs(),e),t+=a.kvLine("Orphan status",this.getOrphanStatus(),e),t+=a.kvLine("Prev hash",this.getPrevHash(),e),t+=a.kvLine("Reward",this.getReward(),e),t+=a.kvLine("Pow hash",this.getPowHash(),e),"\n"===t[t.length-1]?t.slice(0,t.length-1):t}}e.exports=o},91350:(e,t,r)=>{const i=r(63055).BigInteger;e.exports=class{constructor(e){e=Object.assign({},e),this.state=e,void 0===e.expectedReward||e.expectedReward instanceof i||(e.expectedReward=i.parse(e.expectedReward)),void 0===e.difficulty||e.difficulty instanceof i||(e.difficulty=i.parse(e.difficulty))}toJson(){let e=Object.assign({},this.state);return this.getExpectedReward()&&(e.expectedReward=this.getExpectedReward().toString()),this.getDifficulty()&&(e.difficulty=this.getDifficulty().toString()),e}toJson(){let e=Object.assign({},this.state);return e.expectedReward&&(e.expectedReward=e.expectedReward.toString()),e.difficulty&&(e.difficulty=e.difficulty.toString()),e}getBlockTemplateBlob(){return this.state.blockTemplateBlob}setBlockTemplateBlob(e){return this.state.blockTemplateBlob=e,this}getBlockHashingBlob(){return this.state.blockHashingBlob}setBlockHashingBlob(e){return this.state.blockHashingBlob=e,this}getDifficulty(){return this.state.difficulty}setDifficulty(e){return this.state.difficulty=e,this}getExpectedReward(){return this.state.expectedReward}setExpectedReward(e){return this.state.expectedReward=e,this}getHeight(){return this.state.height}setHeight(e){return this.state.height=e,this}getPrevHash(){return this.state.prevId}setPrevHash(e){return this.state.prevId=e,this}getReservedOffset(){return this.state.reservedOffset}setReservedOffset(e){return this.state.reservedOffset=e,this}getSeedHeight(){return this.state.height}setSeedHeight(e){return this.state.seedHeight=e,this}getSeedHash(){return this.state.seedHash}setSeedHash(e){return this.state.seedHash=e,this}getNextSeedHash(){return this.state.nextSeedHash}setNextSeedHash(e){return this.state.nextSeedHash=e,this}}},84373:e=>{e.exports=class{constructor(e){this.state=Object.assign({},e)}toJson(){return Object.assign({},this.state)}getConnectionId(){return this.state.connectionId}setConnectionId(e){return this.state.connectionId=e,this}getNumBlocks(){return this.state.numBlocks}setNumBlocks(e){return this.state.numBlocks=e,this}getRemoteAddress(){return this.state.remoteAddress}setRemoteAddress(e){return this.state.remoteAddress=e,this}getRate(){return this.state.rate}setRate(e){return this.state.rate=e,this}getSpeed(){return this.state.speed}setSpeed(e){return this.state.speed=e,this}getSize(){return this.state.size}setSize(e){return this.state.size=e,this}getStartHeight(){return this.state.startHeight}setStartHeight(e){return this.state.startHeight=e,this}}},88988:(e,t,r)=>{const i=r(63055).BigInteger;e.exports=class{constructor(e){e=Object.assign({},e),this.state=e,void 0===e.difficulty||e.difficulty instanceof i||(e.difficulty=i.parse(e.difficulty)),void 0===e.cumulativeDifficulty||e.cumulativeDifficulty instanceof i||(e.cumulativeDifficulty=i.parse(e.cumulativeDifficulty)),void 0===e.credits||e.credits instanceof i||(e.credits=i.parse(e.credits))}toJson(){let e=Object.assign([],this.state);return e.difficulty&&(e.difficulty=e.difficulty.toString()),e.cumulativeDifficulty&&(e.cumulativeDifficulty=e.cumulativeDifficulty.toString()),e.credits&&(e.credits=e.credits.toString()),e}getVersion(){return this.state.version}setVersion(e){return this.state.version=e,this}getNumAltBlocks(){return this.state.numAltBlocks}setNumAltBlocks(e){return this.state.numAltBlocks=e,this}getBlockSizeLimit(){return this.state.blockSizeLimit}setBlockSizeLimit(e){return this.state.blockSizeLimit=e,this}getBlockSizeMedian(){return this.state.blockSizeMedian}setBlockSizeMedian(e){return this.state.blockSizeMedian=e,this}getBlockWeightLimit(){return this.state.blockWeightLimit}setBlockWeightLimit(e){return this.state.blockWeightLimit=e,this}getBlockWeightMedian(){return this.state.blockWeightMedian}setBlockWeightMedian(e){return this.state.blockWeightMedian=e,this}getBootstrapDaemonAddress(){return this.state.bootstrapDaemonAddress}setBootstrapDaemonAddress(e){return this.state.bootstrapDaemonAddress=e,this}getDifficulty(){return this.state.difficulty}setDifficulty(e){return this.state.difficulty=e,this}getCumulativeDifficulty(){return this.state.cumulativeDifficulty}setCumulativeDifficulty(e){return this.state.cumulativeDifficulty=e,this}getFreeSpace(){return this.state.freeSpace}setFreeSpace(e){return this.state.freeSpace=e,this}getNumOfflinePeers(){return this.state.numOfflinePeers}setNumOfflinePeers(e){return this.state.numOfflinePeers=e,this}getNumOnlinePeers(){return this.state.numOnlinePeers}setNumOnlinePeers(e){return this.state.numOnlinePeers=e,this}getHeight(){return this.state.height}setHeight(e){return this.state.height=e,this}getHeightWithoutBootstrap(){return this.state.heightWithoutBootstrap}setHeightWithoutBootstrap(e){return this.state.heightWithoutBootstrap=e,this}getNetworkType(){return this.state.networkType}setNetworkType(e){return this.state.networkType=e,this}isOffline(){return this.state.isOffline}setIsOffline(e){return this.state.isOffline=e,this}getNumIncomingConnections(){return this.state.numIncomingConnections}setNumIncomingConnections(e){return this.state.numIncomingConnections=e,this}getNumOutgoingConnections(){return this.state.numOutgoingConnections}setNumOutgoingConnections(e){return this.state.numOutgoingConnections=e,this}getNumRpcConnections(){return this.state.numRpcConnections}setNumRpcConnections(e){return this.state.numRpcConnections=e,this}getStartTimestamp(){return this.state.startTimestamp}setStartTimestamp(e){return this.state.startTimestamp=e,this}getAdjustedTimestamp(){return this.state.adjustedTimestamp}setAdjustedTimestamp(e){return this.state.adjustedTimestamp=e,this}getTarget(){return this.state.target}setTarget(e){return this.state.target=e,this}getTargetHeight(){return this.state.targetHeight}setTargetHeight(e){return this.state.targetHeight=e,this}getTopBlockHash(){return this.state.topBlockHash}setTopBlockHash(e){return this.state.topBlockHash=e,this}getNumTxs(){return this.state.numTxs}setNumTxs(e){return this.state.numTxs=e,this}getNumTxsPool(){return this.state.numTxsPool}setNumTxsPool(e){return this.state.numTxsPool=e,this}getWasBootstrapEverUsed(){return this.state.wasBootstrapEverUsed}setWasBootstrapEverUsed(e){return this.state.wasBootstrapEverUsed=e,this}getDatabaseSize(){return this.state.databaseSize}setDatabaseSize(e){return this.state.databaseSize=e,this}getUpdateAvailable(){return this.state.updateAvailable}setUpdateAvailable(e){return this.state.updateAvailable=e,this}getCredits(){return this.state.credits}setCredits(e){return this.state.credits=e,this}isBusySyncing(){return this.state.isBusySyncing}setIsBusySyncing(e){return this.state.isBusySyncing=e,this}isSynchronized(){return this.state.isSynchronized}setIsSynchronized(e){return this.state.isSynchronized=e,this}isRestricted(){return this.state.isRestricted}setIsRestricted(e){return this.state.isRestricted=e,this}}},3104:e=>{e.exports=class{async onBlockHeader(e){this.lastHeader=e}getLastBlockHeader(){return this.lastHeader}}},7666:(e,t,r)=>{const i=r(63055).BigInteger,n=r(84373),a=r(63374);e.exports=class{constructor(e){if((e=Object.assign({},e)).peers)for(let t=0;t{class t{constructor(e){this.state={},void 0!==e&&(assert(e instanceof t),this.setIsUpdateAvailable(e.isUpdateAvailable()),this.setVersion(e.getVersion()),this.setHash(e.getHash()),this.setAutoUri(e.getAutoUri()),this.setUserUri(e.getUserUri()))}isUpdateAvailable(){return this.state.isUpdateAvailable}setIsUpdateAvailable(e){return this.state.isUpdateAvailable=e,this}getVersion(){return this.state.version}setVersion(e){return this.state.version=e,this}getHash(){return this.state.hash}setHash(e){return this.state.hash=e,this}getAutoUri(){return this.state.autoUri}setAutoUri(e){return this.state.autoUri=e,this}getUserUri(){return this.state.userUri}setUserUri(e){return this.state.userUri=e,this}}e.exports=t},62230:(e,t,r)=>{const i=r(44531);e.exports=class extends i{constructor(e){super(e)}getDownloadPath(){return this.state.downloadPath}setDownloadPath(e){return this.state.downloadPath=e,this}}},90176:(e,t,r)=>{const i=r(63055).BigInteger,n=r(93444);class a{constructor(e){if(e)if(e instanceof a)this.state=e.toJson();else{if("object"!=typeof e)throw new MoneroError("state must be a MoneroFeeEstimate or JavaScript object");this.state=Object.assign({},e)}else this.state={};if(void 0===this.state.fee||this.state.fee instanceof i||(this.state.fee=i.parse(this.state.fee)),void 0!==this.state.fees)for(let e=0;e{const i=r(63055).BigInteger;e.exports=class{constructor(e){this.state=Object.assign({},e),void 0===this.state.credits||this.state.credits instanceof i||(this.state.credits=i.parse(this.state.credits))}toJson(){let e=Object.assign({},this.state);return e.credits&&(e.credits=e.credits.toString()),e}getEarliestHeight(){return this.state.earliestHeight}setEarliestHeight(e){return this.state.earliestHeight=e,this}isEnabled(){return this.state.isEnabled}setIsEnabled(e){return this.state.isEnabled=e,this}getState(){return this.state.state}setState(e){return this.state.state=e,this}getThreshold(){return this.state.threshold}setThreshold(e){return this.state.threshold=e,this}getVersion(){return this.state.version}setVersion(e){return this.state.version=e,this}getNumVotes(){return this.state.numVotes}setNumVotes(e){return this.state.numVotes=e,this}getWindow(){return this.state.window}setWindow(e){return this.state.window=e,this}getVoting(){return this.state.voting}setVoting(e){return this.state.voting=e,this}getCredits(){return this.state.credits}setCredits(e){return this.state.credits=e,this}getTopBlockHash(){return this.state.topBlockHash}setTopBlockHash(e){return this.state.topBlockHash=e,this}}},53011:(e,t,r)=>{const i=r(69282),n=r(93444);class a{constructor(e,t){if(e)if(e instanceof a)this.state=e.toJson();else if("object"==typeof e)this.state=Object.assign({},e);else{if("string"!=typeof e)throw new MoneroError("stateOrHex must be a MoneroKeyImage, JavaScript object, or string");this.state={},this.setHex(e),this.setSignature(t)}else this.state={}}getHex(){return this.state.hex}setHex(e){return this.state.hex=e,this}getSignature(){return this.state.signature}setSignature(e){return this.state.signature=e,this}copy(){return new a(this)}toJson(){return Object.assign({},this.state)}merge(e){return i(e instanceof a),e===this||(this.setHex(n.reconcile(this.getHex(),e.getHex())),this.setSignature(n.reconcile(this.getSignature(),e.getSignature()))),this}toString(e=0){let t="";return t+=n.kvLine("Hex",this.getHex(),e),t+=n.kvLine("Signature",this.getSignature(),e),t.slice(0,t.length-1)}}e.exports=a},51147:e=>{class t{}t.NOT_SPENT=0,t.CONFIRMED=1,t.TX_POOL=2,e.exports=t},20465:(e,t,r)=>{const i=r(63055).BigInteger;e.exports=class{constructor(e){e=Object.assign({},e),this.state=e,void 0===e.emissionSum||e.emissionSum instanceof i||(e.emissionSum=i.parse(e.emissionSum)),void 0===e.feeSum||e.feeSum instanceof i||(e.feeSum=i.parse(e.feeSum))}toJson(){let e=Object.assign({},this.state);return this.getEmissionSum()&&(e.emissionSum=this.getEmissionSum().toString()),this.getFeeSum()&&(e.feeSum=this.getFeeSum().toString()),e}getEmissionSum(){return this.state.emissionSum}setEmissionSum(e){return this.state.emissionSum=e,this}getFeeSum(){return this.state.feeSum}setFeeSum(e){return this.state.feeSum=e,this}}},15887:e=>{class t{constructor(e){if(e)if(e instanceof t)e=e.toJson();else{if("object"!=typeof e)throw new MoneroError("state must be a MoneroMiningStatus or JavaScript object");e=Object.assign({},e)}else e={};this.state=e}toJson(){return Object.assign({},this.state)}isActive(){return this.state.isActive}setIsActive(e){return this.state.isActive=e,this}getAddress(){return this.state.address}setAddress(e){return this.state.address=e,this}getSpeed(){return this.state.speed}setSpeed(e){return this.state.speed=e,this}getNumThreads(){return this.state.numThreads}setNumThreads(e){return this.state.numThreads=e,this}isBackground(){return this.state.isBackground}setIsBackground(e){return this.state.isBackground=e,this}}e.exports=t},79077:(e,t,r)=>{const i=r(91307);class n{static validate(e){if(0!==e&&1!==e&&2!==e)throw new i("Network type is invalid: "+e)}static isValid(e){return 0===e||1===e||2===e}static parse(e){switch((""+e).toLowerCase()){case"mainnet":return n.MAINNET;case"testnet":return n.TESTNET;case"stagenet":return n.STAGENET;default:throw new i("Invalid network type to parse: '"+e+"'")}}static toString(e){if(0===e)return"mainnet";if(1===e)return"testnet";if(2===e)return"stagenet";throw new i("Invalid network type: "+e)}}n.MAINNET=0,n.TESTNET=1,n.STAGENET=2,e.exports=n},42299:(e,t,r)=>{const i=r(69282),n=r(63055).BigInteger,a=r(93444),o=r(53011);class s{constructor(e){if(e)if(e instanceof s)e=e.toJson();else{if("object"!=typeof e)throw new MoneroError("state must be a MoneroOutput or JavaScript object");e=Object.assign({},e)}else e={};this.state=e,void 0===e.amount||e.amount instanceof n||(e.amount=n.parse(e.amount)),!e.keyImage||e.keyImage instanceof o||(e.keyImage=new o(e.keyImage))}getTx(){return this.state.tx}setTx(e){return this.state.tx=e,this}getKeyImage(){return this.state.keyImage}setKeyImage(e){return i(void 0===e||e instanceof o),this.state.keyImage=e,this}getAmount(){return this.state.amount}setAmount(e){return this.state.amount=e,this}getIndex(){return this.state.index}setIndex(e){return this.state.index=e,this}getRingOutputIndices(){return this.state.ringOutputIndices}setRingOutputIndices(e){return this.state.ringOutputIndices=e,this}getStealthPublicKey(){return this.state.stealthPublicKey}setStealthPublicKey(e){return this.state.stealthPublicKey=e,this}copy(){return new s(this)}toJson(){let e=Object.assign({},this.state);return this.getAmount()&&(e.amount=this.getAmount()?this.getAmount().toString():void 0),this.getKeyImage()&&(e.keyImage=this.getKeyImage()?this.getKeyImage().toJson():void 0),delete e.tx,e}merge(e){return i(e instanceof s),this===e||(this.getTx()!==e.getTx()?this.getTx().merge(e.getTx()):(void 0===this.getKeyImage()?this.setKeyImage(e.getKeyImage()):void 0!==e.getKeyImage()&&this.getKeyImage().merge(e.getKeyImage()),this.setAmount(a.reconcile(this.getAmount(),e.getAmount())),this.setIndex(a.reconcile(this.getIndex(),e.getIndex())))),this}toString(e=0){let t="";return this.getKeyImage()&&(t+=a.kvLine("Key image","",e),t+=this.getKeyImage().toString(e+1)+"\n"),t+=a.kvLine("Amount",this.getAmount(),e),t+=a.kvLine("Index",this.getIndex(),e),t+=a.kvLine("Ring output indices",this.getRingOutputIndices(),e),t+=a.kvLine("Stealth public key",this.getStealthPublicKey(),e),""===t?t:t.slice(0,t.length-1)}}e.exports=s},96909:(e,t,r)=>{const i=r(63055).BigInteger;e.exports=class{constructor(e){this.state=Object.assign({},e),void 0===this.state.amount||this.state.amount instanceof i||(this.state.amount=i.parse(this.state.amount))}toJson(){let e=Object.assign({},this.state);return e.amount&&(e.amount=e.amount.toString()),e}getAmount(){return this.state.amount}setAmount(e){return this.state.amount=e,this}getNumInstances(){return this.state.numInstances}setNumInstances(e){return this.state.numInstances=e,this}getNumUnlockedInstances(){return this.state.numUnlockedInstances}setNumUnlockedInstances(e){return this.state.numUnlockedInstances=e,this}getNumRecentInstances(){return this.state.numRecentInstances}setNumRecentInstances(e){return this.state.numRecentInstances=e,this}}},63374:(e,t,r)=>{const i=r(63055).BigInteger;e.exports=class{constructor(e){this.state=Object.assign({},e),void 0===this.state.rpcCreditsPerHash||this.state.rpcCreditsPerHash instanceof i||(this.state.rpcCreditsPerHash=i.parse(this.state.rpcCreditsPerHash))}toJson(){let e=Object.assign({},this.state);return e.rpcCreditsPerHash&&(e.rpcCreditsPerHash=e.rpcCreditsPerHash.toString()),e}getId(){return this.state.id}setId(e){return this.state.id=e,this}getAddress(){return this.state.address}setAddress(e){return this.state.address=e,this}getHost(){return this.state.host}setHost(e){return this.state.host=e,this}getPort(){return this.state.port}setPort(e){return this.state.port=e,this}isOnline(){return this.state.isOnline}setIsOnline(e){return this.state.isOnline=e,this}getLastSeenTimestamp(){return this.state.lastSeenTimestamp}setLastSeenTimestamp(e){return this.state.lastSeenTimestamp=e,this}getPruningSeed(){return this.state.pruningSeed}setPruningSeed(e){return this.state.pruningSeed=e,this}getRpcPort(){return this.state.rpcPort}setRpcPort(e){return this.state.rpcPort=e,this}getRpcCreditsPerHash(){return this.state.rpcCreditsPerHash}setRpcCreditsPerHash(e){return this.state.rpcCreditsPerHash=e,this}getId(){return this.state.id}setId(e){return this.state.id=e,this}getAvgDownload(){return this.state.avgDownload}setAvgDownload(e){return this.state.avgDownload=e,this}getAvgUpload(){return this.state.avgUpload}setAvgUpload(e){return this.state.avgUpload=e,this}getCurrentDownload(){return this.state.currentDownload}setCurrentDownload(e){return this.state.currentDownload=e,this}getCurrentUpload(){return this.state.currentUpload}setCurrentUpload(e){return this.state.currentUpload=e,this}getHeight(){return this.state.height}setHeight(e){return this.state.height=e,this}isIncoming(){return this.state.isIncoming}setIsIncoming(e){return this.state.isIncoming=e,this}getLiveTime(){return this.state.liveTime}setLiveTime(e){return this.state.liveTime=e,this}isLocalIp(){return this.state.isLocalIp}setIsLocalIp(e){return this.state.isLocalIp=e,this}isLocalHost(){return this.state.isLocalHost}setIsLocalHost(e){return this.state.isLocalHost=e,this}getNumReceives(){return this.state.numReceives}setNumReceives(e){return this.state.numReceives=e,this}getNumSends(){return this.state.numSends}setNumSends(e){return this.state.numSends=e,this}getReceiveIdleTime(){return this.state.receiveIdleTime}setReceiveIdleTime(e){return this.state.receiveIdleTime=e,this}getSendIdleTime(){return this.state.sendIdleTime}setSendIdleTime(e){return this.state.sendIdleTime=e,this}getState(){return this.state.state}setState(e){return this.state.state=e,this}getNumSupportFlags(){return this.state.numSupportFlags}setNumSupportFlags(e){return this.state.numSupportFlags=e,this}getType(){return this.state.type}setType(e){return this.state.type=e,this}}},58400:e=>{e.exports=class{constructor(e){e=Object.assign({},e),this.state=e}toJson(){let e=Object.assign({},this.state);return this.isPruned()&&(e.isPruned=this.isPruned()),this.getPruningSeed()&&(e.pruningSeed=this.getPruningSeed()),e}isPruned(){return this.state.isPruned}setIsPruned(e){return this.state.isPruned=e,this}getPruningSeed(){return this.state.pruningSeed}setPruningSeed(e){return this.state.pruningSeed=e,this}}},38991:(e,t,r)=>{const i=r(63055).BigInteger;e.exports=class{constructor(e){e=Object.assign({},e),this.state=e,void 0===e.credits||e.credits instanceof i||(e.credits=i.parse(e.credits))}toJson(){let e=Object.assign({},this.state);return e.credits&&(e.credits=e.credits.toString()),e}isGood(){return this.state.isGood}setIsGood(e){return this.state.isGood=e,this}isRelayed(){return this.state.isRelayed}setIsRelayed(e){return this.state.isRelayed=e,this}isDoubleSpendSeen(){return this.state.isDoubleSpendSeen}setIsDoubleSpend(e){return this.state.isDoubleSpendSeen=e,this}isFeeTooLow(){return this.state.isFeeTooLow}setIsFeeTooLow(e){return this.state.isFeeTooLow=e,this}isMixinTooLow(){return this.state.isMixinTooLow}setIsMixinTooLow(e){return this.state.isMixinTooLow=e,this}hasInvalidInput(){return this.state.hasInvalidInput}setHasInvalidInput(e){return this.state.hasInvalidInput=e,this}hasInvalidOutput(){return this.state.hasInvalidOutput}setHasInvalidOutput(e){return this.state.hasInvalidOutput=e,this}hasTooFewOutputs(){return this.state.hasTooFewOutputs}setHasTooFewOutputs(e){return this.state.hasTooFewOutputs=e,this}isOverspend(){return this.state.isOverspend}setIsOverspend(e){return this.state.isOverspend=e,this}getReason(){return this.state.reason}setReason(e){return this.state.reason=e,this}isTooBig(){return this.state.isTooBig}setIsTooBig(e){return this.state.isTooBig=e,this}getSanityCheckFailed(){return this.state.sanityCheckFailed}setSanityCheckFailed(e){return this.state.sanityCheckFailed=e,this}getCredits(){return this.state.credits}setCredits(e){return this.state.credits=e,this}getTopBlockHash(){return this.state.topBlockHash}setTopBlockHash(e){return this.state.topBlockHash=e,this}isTxExtraTooBig(){return this.state.isTxExtraTooBig}setIsTxExtraTooBig(e){return this.state.isTxExtraTooBig=e,this}}},2624:(e,t,r)=>{const i=r(69282),n=r(63055).BigInteger,a=r(93444),o=r(42299);class s{constructor(e){if(e)if(e instanceof s)e=e.toJson();else{if("object"!=typeof e)throw new MoneroError("state must be a MoneroTx or JavaScript object");e=Object.assign({},e)}else e={};if(this.state=e,void 0===e.fee||e.fee instanceof n||(e.fee=n.parse(e.fee)),void 0===e.unlockTime||e.unlockTime instanceof n||(e.unlockTime=n.parse(e.unlockTime)),e.inputs)for(let t=0;t{const i=r(63055).BigInteger;e.exports=class{constructor(e){this.state=Object.assign({},e),void 0===this.state.feeTotal||this.state.feeTotal instanceof i||(this.state.feeTotal=i.parse(this.state.feeTotal)),void 0===this.state.histo||this.state.histo instanceof Map||(this.state.histo=new Map(JSON.parse(this.state.histo)))}toJson(){let e=Object.assign({},this.state);return e.feeTotal&&(e.feeTotal=e.feeTotal.toString()),e.histo&&(e.histo=JSON.stringify([...e.histo])),e}getNumTxs(){return this.state.numTxs}setNumTxs(e){return this.state.numTxs=e,this}getNumNotRelayed(){return this.state.numNotRelayed}setNumNotRelayed(e){return this.state.numNotRelayed=e,this}getNumFailing(){return this.state.numFailing}setNumFailing(e){return this.state.numFailing=e,this}getNumDoubleSpends(){return this.state.numDoubleSpends}setNumDoubleSpends(e){return this.state.numDoubleSpends=e,this}getNum10m(){return this.state.num10m}setNum10m(e){return this.state.num10m=e,this}getFeeTotal(){return this.state.feeTotal}setFeeTotal(e){return this.state.feeTotal=e,this}getBytesMax(){return this.state.bytesMax}setBytesMax(e){return this.state.bytesMax=e,this}getBytesMed(){return this.state.bytesMed}setBytesMed(e){return this.state.bytesMed=e,this}getBytesMin(){return this.state.bytesMin}setBytesMin(e){return this.state.bytesMin=e,this}getBytesTotal(){return this.state.bytesTotal}setBytesTotal(e){return this.state.bytesTotal=e,this}getHisto(){return this.state.histo}setHisto(e){return this.state.histo=e,this}getHisto98pc(){return this.state.histo98pc}setHisto98pc(e){return this.state.histo98pc=e,this}getOldestTimestamp(){return this.state.oldestTimestamp}setOldestTimestamp(e){return this.state.oldestTimestamp=e,this}}},55540:e=>{e.exports=class{constructor(e,t){this.state={},this.state.number=e,this.state.isRelease=t}getNumber(){return this.state.number}setNumber(e){return this.state.number=e,this}isRelease(){return this.state.isRelease}setIsRelease(e){return this.state.isRelease=e,this}copy(){return new MoneroKeyImage(this)}toJson(){return Object.assign({},this.state)}}},54815:(e,t,r)=>{const i=r(69282),n=r(36242),a=r(63055).BigInteger,o=r(91307),s=r(39749),u=r(59692),c=r(36721),l=r(31857),h=r(61527);class p{async addListener(e){throw new Error("Not supported")}async removeListener(e){throw new Error("Not supported")}getListeners(){throw new Error("Not supported")}async isViewOnly(){throw new o("Not supported")}async setDaemonConnection(e,t,r){throw new o("Not supported")}async getDaemonConnection(){throw new o("Not supported")}async isConnectedToDaemon(){throw new o("Not supported")}async getVersion(){throw new o("Not supported")}async getPath(){throw new o("Not supported")}async getSeed(){throw new o("Not supported")}async getSeedLanguage(){throw new o("Not supported")}async getPrivateViewKey(){throw new o("Not supported")}async getPrivateSpendKey(){throw new o("Not supported")}async getPublicViewKey(){throw new o("Not supported")}async getPublicSpendKey(){throw new o("Not supported")}async getPrimaryAddress(){return await this.getAddress(0,0)}async getAddress(e,t){throw new o("Not supported")}async getAddressIndex(e){throw new o("Not supported")}async getIntegratedAddress(e,t){throw new o("Not supported")}async decodeIntegratedAddress(e){throw new o("Not supported")}async getHeight(){throw new o("Not supported")}async getDaemonHeight(){throw new o("Not supported")}async getHeightByDate(e,t,r){throw new o("Not supported")}async sync(e,t){throw new o("Not supported")}async startSyncing(e){throw new o("Not supported")}async stopSyncing(){throw new o("Not supported")}async scanTxs(e){throw new o("Not supported")}async rescanSpent(){throw new o("Not supported")}async rescanBlockchain(){throw new o("Not supported")}async getBalance(e,t){throw new o("Not supported")}async getUnlockedBalance(e,t){throw new o("Not supported")}async getNumBlocksToUnlock(){let e=await this.getBalance();if(0===e.compare(new a(0)))return[void 0,void 0];let t,r,i,n,o=await this.getUnlockedBalance();if(o.compare(new a(0))>0)i=0;else{t=await this.getTxs({isLocked:!0}),r=await this.getHeight();for(let e of t){let t=Math.max((e.isConfirmed()?e.getHeight():r)+10,e.getUnlockTime())-r;i=void 0===i?t:Math.min(i,t)}}if(0===e.compare(o))o.compare(new a(0))>0&&(n=0);else{t||(t=await this.getTxs({isLocked:!0}),r=await this.getHeight());for(let e of t){let t=Math.max((e.isConfirmed()?e.getHeight():r)+10,e.getUnlockTime())-r;n=void 0===n?t:Math.max(n,t)}}return[i,n]}async getAccounts(e,t){throw new o("Not supported")}async getAccount(e,t){throw new o("Not supported")}async createAccount(e){throw new o("Not supported")}async setAccountLabel(e,t){await this.setSubaddressLabel(e,0,t)}async getSubaddresses(e,t){throw new o("Not supported")}async getSubaddress(e,t){return i(e>=0),i(t>=0),(await this.getSubaddresses(e,t))[0]}async createSubaddress(e,t){throw new o("Not supported")}async setSubaddressLabel(e,t,r){throw new o("Not supported")}async getTx(e){let t=await this.getTxs([e]);return 0===t.length?void 0:t[0]}async getTxs(e){throw new o("Not supported")}async getTransfers(e){throw new o("Not supported")}async getIncomingTransfers(e){if(!1===(e=p._normalizeTransferQuery(e)).isIncoming())throw new o("Transfer query contradicts getting incoming transfers");return e.setIsIncoming(!0),this.getTransfers(e)}async getOutgoingTransfers(e){if(!1===(e=p._normalizeTransferQuery(e)).isOutgoing())throw new o("Transfer query contradicts getting outgoing transfers");return e.setIsOutgoing(!0),this.getTransfers(e)}async getOutputs(e){throw new o("Not supported")}async exportOutputs(e){throw new o("Not supported")}async importOutputs(e){throw new o("Not supported")}async exportKeyImages(e){throw new o("Not supported")}async importKeyImages(e){throw new o("Not supported")}async getNewKeyImagesFromLastImport(){throw new o("Not supported")}async freezeOutput(e){throw new o("Not supported")}async thawOutput(e){throw new o("Not supported")}async isOutputFrozen(e){throw new o("Not supported")}async createTx(e){return void 0!==(e=p._normalizeCreateTxsConfig(e)).getCanSplit()&&i.equal(e.getCanSplit(),!1,"Cannot split transactions using createTx(); use createTxs()"),e.setCanSplit(!1),(await this.createTxs(e))[0]}async createTxs(e){throw new o("Not supported")}async sweepOutput(e){throw new o("Not supported")}async sweepUnlocked(e){throw new o("Not supported")}async sweepDust(e){throw new o("Not supported")}async relayTx(e){return(await this.relayTxs([e]))[0]}async relayTxs(e){throw new o("Not supported")}async describeUnsignedTxSet(e){return this.describeTxSet((new h).setUnsignedTxHex(e))}async describeMultisigTxSet(e){return this.describeTxSet((new h).setMultisigTxHex(e))}async describeTxSet(e){throw new o("Not supported")}async signTxs(e){throw new o("Not supported")}async submitTxs(e){throw new o("Not supported")}async signMessage(e,t,r,i){throw new o("Not supported")}async verifyMessage(e,t,r){throw new o("Not supported")}async getTxKey(e){throw new o("Not supported")}async checkTxKey(e,t,r){throw new o("Not supported")}async getTxProof(e,t,r){throw new o("Not supported")}async checkTxProof(e,t,r,i){throw new o("Not supported")}async getSpendProof(e,t){throw new o("Not supported")}async checkSpendProof(e,t,r){throw new o("Not supported")}async getReserveProofWallet(e){throw new o("Not supported")}async getReserveProofAccount(e,t,r){throw new o("Not supported")}async checkReserveProof(e,t,r){throw new o("Not supported")}async getTxNote(e){return(await this.getTxNotes([e]))[0]}async getTxNotes(e){throw new o("Not supported")}async setTxNote(e,t){await this.setTxNotes([e],[t])}async setTxNotes(e,t){throw new o("Not supported")}async getAddressBookEntries(e){throw new o("Not supported")}async addAddressBookEntry(e,t){throw new o("Not supported")}async editAddressBookEntry(e,t,r,i,n){throw new o("Not supported")}async deleteAddressBookEntry(e){throw new o("Not supported")}async tagAccounts(e,t){throw new o("Not supported")}async untagAccounts(e){throw new o("Not supported")}async getAccountTags(){throw new o("Not supported")}async setAccountTagLabel(e,t){throw new o("Not supported")}async getPaymentUri(e){throw new o("Not supported")}async parsePaymentUri(e){throw new o("Not supported")}async getAttribute(e){throw new o("Not supported")}async setAttribute(e,t){throw new o("Not supported")}async startMining(e,t,r){throw new o("Not supported")}async stopMining(){throw new o("Not supported")}async isMultisigImportNeeded(){throw new o("Not supported")}async isMultisig(){return(await this.getMultisigInfo()).isMultisig()}async getMultisigInfo(){throw new o("Not supported")}async prepareMultisig(){throw new o("Not supported")}async makeMultisig(e,t,r){throw new o("Not supported")}async exchangeMultisigKeys(e,t){throw new o("Not supported")}async exportMultisigHex(){throw new o("Not supported?")}async importMultisigHex(e){throw new o("Not supported")}async signMultisigTxHex(e){throw new o("Not supported")}async submitMultisigTxHex(e){throw new o("Not supported")}async changePassword(e,t){throw new o("Not supported")}save(){throw new o("Not supported")}async close(e){throw new o("Not supported")}async isClosed(){throw new o("Not supported")}static _normalizeTxQuery(e){return e instanceof l?e=e.copy():Array.isArray(e)?e=(new l).setHashes(e):(e=Object.assign({},e),e=new l(e)),void 0===e.getBlock()&&e.setBlock((new n).setTxs([e])),e.getInputQuery()&&e.getInputQuery().setTxQuery(e),e.getOutputQuery()&&e.getOutputQuery().setTxQuery(e),e}static _normalizeTransferQuery(e){if(void 0===e)e=new u;else if(e instanceof u)if(void 0===e.getTxQuery())e=e.copy();else{let t=e.getTxQuery().copy();e.getTxQuery().getTransferQuery()===e?e=t.getTransferQuery():(i.equal(e.getTxQuery().getTransferQuery(),void 0,"Transfer query's tx query must be circular reference or null"),(e=e.copy()).setTxQuery(t))}else e=Object.assign({},e),e=new u(e);return void 0===e.getTxQuery()&&e.setTxQuery(new l),e.getTxQuery().setTransferQuery(e),void 0===e.getTxQuery().getBlock()&&e.getTxQuery().setBlock((new n).setTxs([e.getTxQuery()])),e}static _normalizeOutputQuery(e){if(void 0===e)e=new s;else if(e instanceof s)if(void 0===e.getTxQuery())e=e.copy();else{let t=e.getTxQuery().copy();e.getTxQuery().getOutputQuery()===e?e=t.getOutputQuery():(i.equal(e.getTxQuery().getOutputQuery(),void 0,"Output query's tx query must be circular reference or null"),(e=e.copy()).setTxQuery(t))}else e=Object.assign({},e),e=new s(e);return void 0===e.getTxQuery()&&e.setTxQuery(new l),e.getTxQuery().setOutputQuery(e),void 0===e.getTxQuery().getBlock()&&e.getTxQuery().setBlock((new n).setTxs([e.getTxQuery()])),e}static _normalizeCreateTxsConfig(e){if(void 0===e||!(e instanceof Object))throw new o("Must provide MoneroTxConfig or equivalent JS object");return e=new c(e),i(e.getDestinations()&&e.getDestinations().length>0,"Must provide destinations"),i.equal(e.getSweepEachSubaddress(),void 0),i.equal(e.getBelowAmount(),void 0),e}static _normalizeSweepOutputConfig(e){if(void 0===e||!(e instanceof Object))throw new o("Must provide MoneroTxConfig or equivalent JS object");if(e=new c(e),i.equal(e.getSweepEachSubaddress(),void 0),i.equal(e.getBelowAmount(),void 0),i.equal(e.getCanSplit(),void 0,"Cannot split transactions when sweeping an output"),!e.getDestinations()||1!==e.getDestinations().length||!e.getDestinations()[0].getAddress())throw new o("Must provide exactly one destination address to sweep output to");if(e.getSubtractFeeFrom()&&e.getSubtractFeeFrom().length>0)throw new o("Sweep transfers do not support subtracting fees from destinations");return e}static _normalizeSweepUnlockedConfig(e){if(void 0===e||!(e instanceof Object))throw new o("Must provide MoneroTxConfig or equivalent JS object");if(void 0===(e=new c(e)).getDestinations()||1!=e.getDestinations().length)throw new o("Must provide exactly one destination to sweep to");if(void 0===e.getDestinations()[0].getAddress())throw new o("Must provide destination address to sweep to");if(void 0!==e.getDestinations()[0].getAmount())throw new o("Cannot provide amount in sweep config");if(void 0!==e.getKeyImage())throw new o("Key image defined; use sweepOutput() to sweep an output by its key image");if(void 0!==e.getSubaddressIndices()&&0===e.getSubaddressIndices().length&&e.setSubaddressIndices(void 0),void 0===e.getAccountIndex()&&void 0!==e.getSubaddressIndices())throw new o("Must provide account index if subaddress indices are provided");return e}}p.DEFAULT_LANGUAGE="English",e.exports=p},78647:(e,t,r)=>{var i=r(48764).Buffer;const n=r(69282),a=r(63055).BigInteger,o=r(93444),s=r(85096),u=r(36693),c=r(28753),l=r(30947),h=r(36242),p=r(35404),d=r(47766),f=r(63131),m=r(91307),g=r(64472),v=r(53011),y=r(34293),_=r(26749),b=r(50957),w=r(63413),E=r(79077),k=r(69459),S=r(73717),x=r(44769),j=r(17118),N=r(36721),M=r(61527),I=r(18489),A=r(54815),T=r(99919),R=r(28166),P=r(63149),O=r(64232),B=r(57773);class C extends R{static walletExists(e,t){if(n(e,"Must provide a path to look for a wallet"),t||(t=C._getFs()),!t)throw new m("Must provide file system to check if wallet exists");let r=t.existsSync(e+".keys");return s.log(1,"Wallet exists at "+e+": "+r),r}static async openWallet(e,t,r,i,n,a){let o;if("object"==typeof e){if(o=e instanceof T?e:new T(e),void 0!==t||void 0!==r||void 0!==i||void 0!==n||void 0!==a)throw new m("Can specify config object or params but not both when opening WASM wallet")}else o=(new T).setPath(e).setPassword(t).setNetworkType(r).setProxyToWorker(n).setFs(a),"object"==typeof i?o.setServer(i):o.setServerUri(i);if(void 0===o.getProxyToWorker()&&o.setProxyToWorker(!0),void 0!==o.getSeed())throw new m("Cannot specify seed when opening wallet");if(void 0!==o.getSeedOffset())throw new m("Cannot specify seed offset when opening wallet");if(void 0!==o.getPrimaryAddress())throw new m("Cannot specify primary address when opening wallet");if(void 0!==o.getPrivateViewKey())throw new m("Cannot specify private view key when opening wallet");if(void 0!==o.getPrivateSpendKey())throw new m("Cannot specify private spend key when opening wallet");if(void 0!==o.getRestoreHeight())throw new m("Cannot specify restore height when opening wallet");if(void 0!==o.getLanguage())throw new m("Cannot specify language when opening wallet");if(!0===o.getSaveCurrent())throw new m("Cannot save current wallet when opening JNI wallet");if(!o.getKeysData()){let e=o.getFs()?o.getFs():C._getFs();if(!e)throw new m("Must provide file system to read wallet data from");if(!this.walletExists(o.getPath(),e))throw new m("Wallet does not exist at path: "+o.getPath());o.setKeysData(e.readFileSync(o.getPath()+".keys")),o.setCacheData(e.existsSync(o.getPath())?e.readFileSync(o.getPath()):"")}return C._openWalletData(o.getPath(),o.getPassword(),o.getNetworkType(),o.getKeysData(),o.getCacheData(),o.getServer(),o.getProxyToWorker(),o.getFs())}static async createWallet(e){if(void 0===e)throw new m("Must provide config to create wallet");if(void 0!==(e=e instanceof T?e:new T(e)).getSeed()&&(void 0!==e.getPrimaryAddress()||void 0!==e.getPrivateViewKey()||void 0!==e.getPrivateSpendKey()))throw new m("Wallet may be initialized with a seed or keys but not both");if(void 0===e.getNetworkType())throw new m("Must provide a networkType: 'mainnet', 'testnet' or 'stagenet'");if(E.validate(e.getNetworkType()),!0===e.getSaveCurrent())throw new m("Cannot save current wallet when creating full WASM wallet");if(void 0===e.getPath()&&e.setPath(""),e.getPath()&&C.walletExists(e.getPath(),e.getFs()))throw new m("Wallet already exists: "+e.getPath());if(void 0===e.getPassword()&&e.setPassword(""),void 0!==e.getSeed()){if(void 0!==e.getLanguage())throw new m("Cannot provide language when creating wallet from seed");return C._createWalletFromSeed(e)}if(void 0!==e.getPrivateSpendKey()||void 0!==e.getPrimaryAddress()){if(void 0!==e.getSeedOffset())throw new m("Cannot provide seedOffset when creating wallet from keys");return C._createWalletFromKeys(e)}if(void 0!==e.getSeedOffset())throw new m("Cannot provide seedOffset when creating random wallet");if(void 0!==e.getRestoreHeight())throw new m("Cannot provide restoreHeight when creating random wallet");return C._createWalletRandom(e)}static async _createWalletFromSeed(e){if(void 0===e.getProxyToWorker()&&e.setProxyToWorker(!0),e.getProxyToWorker())return z._createWallet(e);let t=e.getServer(),r=!t||t.getRejectUnauthorized();void 0===e.getRestoreHeight()&&e.setRestoreHeight(0),void 0===e.getSeedOffset()&&e.setSeedOffset("");let i=await s.loadFullModule(),n=await i.queueTask((async function(){return new Promise((function(t,n){let a=o.getUUID();s.setRejectUnauthorizedFn(a,(function(){return r})),i.create_full_wallet(JSON.stringify(e.toJson()),a,(async function(r){"string"==typeof r?n(new m(r)):t(new C(r,e.getPath(),e.getPassword(),e.getFs(),e.getRejectUnauthorized(),a))}))}))}));return e.getPath()&&await n.save(),n}static async _createWalletFromKeys(e){if(void 0===e.getProxyToWorker()&&e.setProxyToWorker(!0),e.getProxyToWorker())return z._createWallet(e);E.validate(e.getNetworkType()),void 0===e.getPrimaryAddress()&&e.setPrimaryAddress(""),void 0===e.getPrivateViewKey()&&e.setPrivateViewKey(""),void 0===e.getPrivateSpendKey()&&e.setPrivateSpendKey("");let t=e.getServer(),r=!t||t.getRejectUnauthorized();void 0===e.getRestoreHeight()&&e.setRestoreHeight(0),void 0===e.getLanguage()&&e.setLanguage("English");let i=await s.loadFullModule(),n=await i.queueTask((async function(){return new Promise((function(t,n){let a=o.getUUID();s.setRejectUnauthorizedFn(a,(function(){return r})),i.create_full_wallet(JSON.stringify(e.toJson()),a,(async function(r){"string"==typeof r?n(new m(r)):t(new C(r,e.getPath(),e.getPassword(),e.getFs(),e.getRejectUnauthorized(),a))}))}))}));return e.getPath()&&await n.save(),n}static async _createWalletRandom(e){if(void 0===e.getProxyToWorker()&&e.setProxyToWorker(!0),e.getProxyToWorker())return z._createWallet(e);void 0===e.getLanguage()&&e.setLanguage("English");let t=e.getServer(),r=!t||t.getRejectUnauthorized(),i=await s.loadFullModule(),n=await i.queueTask((async function(){return new Promise((function(t,n){let a=o.getUUID();s.setRejectUnauthorizedFn(a,(function(){return r})),i.create_full_wallet(JSON.stringify(e.toJson()),a,(async function(r){"string"==typeof r?n(new m(r)):t(new C(r,e.getPath(),e.getPassword(),e.getFs(),e.getRejectUnauthorized(),a))}))}))}));return e.getPath()&&await n.save(),n}static async getSeedLanguages(){let e=await s.loadFullModule();return e.queueTask((async function(){return JSON.parse(e.get_keys_wallet_seed_languages()).languages}))}constructor(e,t,r,i,n,a){super(e),this._path=t,this._password=r,this._listeners=[],this._fs=i||(t?C._getFs():void 0),this._isClosed=!1,this._fullListener=new F(this),this._fullListenerHandle=0,this._rejectUnauthorized=n,this._rejectUnauthorizedConfigId=a,this._syncPeriodInMs=C.DEFAULT_SYNC_PERIOD_IN_MS;let o=this;s.setRejectUnauthorizedFn(a,(function(){return o._rejectUnauthorized}))}async getDaemonMaxPeerHeight(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){e._module.get_daemon_max_peer_height(e._cppAddress,(function(e){t(e)}))}))}))}async isDaemonSynced(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){e._module.is_daemon_synced(e._cppAddress,(function(e){t(e)}))}))}))}async isSynced(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){e._module.is_synced(e._cppAddress,(function(e){t(e)}))}))}))}async getNetworkType(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),e._module.get_network_type(e._cppAddress)}))}async getRestoreHeight(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),e._module.get_restore_height(e._cppAddress)}))}async setRestoreHeight(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),t._module.set_restore_height(t._cppAddress,e)}))}async moveTo(e){return C._moveTo(e,this)}async addListener(e){this._assertNotClosed(),n(e instanceof P,"Listener must be instance of MoneroWalletListener"),this._listeners.push(e),await this._refreshListening()}async removeListener(e){this._assertNotClosed();let t=this._listeners.indexOf(e);if(!(t>-1))throw new m("Listener is not registered with wallet");this._listeners.splice(t,1),await this._refreshListening()}getListeners(){return this._assertNotClosed(),this._listeners}async setDaemonConnection(e){this._assertNotClosed();let t=e?e instanceof S?e:new S(e):void 0,r=t&&t.getUri()?t.getUri():"",i=t&&t.getUsername()?t.getUsername():"",n=t&&t.getPassword()?t.getPassword():"",a=t?t.getRejectUnauthorized():void 0;this._rejectUnauthorized=a;let o=this;return o._module.queueTask((async function(){return o._assertNotClosed(),new Promise((function(e,t){o._module.set_daemon_connection(o._cppAddress,r,i,n,(function(t){e()}))}))}))}async getDaemonConnection(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){let i=e._module.get_daemon_connection(e._cppAddress);if(i){let r=JSON.parse(i);t(new S(r.uri,r.username,r.password,e._rejectUnauthorized))}else t()}))}))}async isConnectedToDaemon(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){e._module.is_connected_to_daemon(e._cppAddress,(function(e){t(e)}))}))}))}async getVersion(){throw this._assertNotClosed(),new m("Not implemented")}async getPath(){return this._assertNotClosed(),this._path}async getIntegratedAddress(e,t){let r=this;return r._module.queueTask((async function(){r._assertNotClosed();try{let i=r._module.get_integrated_address(r._cppAddress,e||"",t||"");if("{"!==i.charAt(0))throw new m(i);return new g(JSON.parse(i))}catch(e){if(e.message.includes("Invalid payment ID"))throw new m("Invalid payment ID: "+t);throw new m(e.message)}}))}async decodeIntegratedAddress(e){let t=this;return t._module.queueTask((async function(){t._assertNotClosed();try{let r=t._module.decode_integrated_address(t._cppAddress,e);if("{"!==r.charAt(0))throw new m(r);return new g(JSON.parse(r))}catch(e){throw new m(e.message)}}))}async getHeight(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){e._module.get_height(e._cppAddress,(function(e){t(e)}))}))}))}async getDaemonHeight(){if(this._assertNotClosed(),!await this.isConnectedToDaemon())throw new m("Wallet is not connected to daemon");let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){e._module.get_daemon_height(e._cppAddress,(function(e){t(e)}))}))}))}async getHeightByDate(e,t,r){if(this._assertNotClosed(),!await this.isConnectedToDaemon())throw new m("Wallet is not connected to daemon");let i=this;return i._module.queueTask((async function(){return i._assertNotClosed(),new Promise((function(n,a){i._module.get_height_by_date(i._cppAddress,e,t,r,(function(e){"string"==typeof e?a(new m(e)):n(e)}))}))}))}async sync(e,t,r){if(this._assertNotClosed(),!await this.isConnectedToDaemon())throw new m("Wallet is not connected to daemon");let i,n,a=e instanceof P?e:void 0;void 0===(t=void 0===e||e instanceof P?t:e)&&(t=Math.max(await this.getHeight(),await this.getRestoreHeight())),a&&await this.addListener(a);try{let o=this;function s(){return o._assertNotClosed(),new Promise((function(e,r){o._module.sync(o._cppAddress,t,(async function(t){if("{"!==t.charAt(0))r(new m(t));else{let r=JSON.parse(t);e(new j(r.numBlocksFetched,r.receivedMoney))}}))}))}n=await(r?s():o._module.queueTask((async function(){return s()})))}catch(u){i=u}if(a&&await this.removeListener(a),i)throw i;return n}async startSyncing(e){if(this._assertNotClosed(),!await this.isConnectedToDaemon())throw new m("Wallet is not connected to daemon");this._syncPeriodInMs=void 0===e?C.DEFAULT_SYNC_PERIOD_IN_MS:e;let t=this;this._syncLooper||(this._syncLooper=new u((async function(){await t._backgroundSync()}))),this._syncLooper.start(this._syncPeriodInMs)}async stopSyncing(){this._assertNotClosed(),this._syncLooper&&this._syncLooper.stop(),this._module.stop_syncing(this._cppAddress)}async scanTxs(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.scan_txs(t._cppAddress,JSON.stringify({txHashes:e}),(function(e){e?i(new m(msg)):r()}))}))}))}async rescanSpent(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){e._module.rescan_spent(e._cppAddress,(function(){t()}))}))}))}async rescanBlockchain(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new Promise((function(t,r){e._module.rescan_blockchain(e._cppAddress,(function(){t()}))}))}))}async getBalance(e,t){let r=this;return r._module.queueTask((async function(){let i;return r._assertNotClosed(),void 0===e?(n(void 0===t,"Subaddress index must be undefined if account index is undefined"),i=r._module.get_balance_wallet(r._cppAddress)):i=void 0===t?r._module.get_balance_account(r._cppAddress,e):r._module.get_balance_subaddress(r._cppAddress,e,t),a.parse(JSON.parse(o.stringifyBIs(i)).balance)}))}async getUnlockedBalance(e,t){let r=this;return r._module.queueTask((async function(){let i;return r._assertNotClosed(),void 0===e?(n(void 0===t,"Subaddress index must be undefined if account index is undefined"),i=r._module.get_unlocked_balance_wallet(r._cppAddress)):i=void 0===t?r._module.get_unlocked_balance_account(r._cppAddress,e):r._module.get_unlocked_balance_subaddress(r._cppAddress,e,t),a.parse(JSON.parse(o.stringifyBIs(i)).unlockedBalance)}))}async getAccounts(e,t){let r=this;return r._module.queueTask((async function(){r._assertNotClosed();let i=r._module.get_accounts(r._cppAddress,!!e,t||""),n=[];for(let e of JSON.parse(o.stringifyBIs(i)).accounts)n.push(C._sanitizeAccount(new c(e)));return n}))}async getAccount(e,t){let r=this;return r._module.queueTask((async function(){r._assertNotClosed();let i=r._module.get_account(r._cppAddress,e,!!t),n=JSON.parse(o.stringifyBIs(i));return C._sanitizeAccount(new c(n))}))}async createAccount(e){void 0===e&&(e="");let t=this;return t._module.queueTask((async function(){t._assertNotClosed();let r=t._module.create_account(t._cppAddress,e),i=JSON.parse(o.stringifyBIs(r));return C._sanitizeAccount(new c(i))}))}async getSubaddresses(e,t){let r={accountIdx:e,subaddressIndices:void 0===t?[]:o.listify(t)},i=this;return i._module.queueTask((async function(){i._assertNotClosed();let e=JSON.parse(o.stringifyBIs(i._module.get_subaddresses(i._cppAddress,JSON.stringify(r)))).subaddresses,t=[];for(let r of e)t.push(C._sanitizeSubaddress(new x(r)));return t}))}async createSubaddress(e,t){void 0===t&&(t="");let r=this;return r._module.queueTask((async function(){r._assertNotClosed();let i=r._module.create_subaddress(r._cppAddress,e,t),n=JSON.parse(o.stringifyBIs(i));return C._sanitizeSubaddress(new x(n))}))}async setSubaddressLabel(e,t,r){void 0===r&&(r="");let i=this;return i._module.queueTask((async function(){i._assertNotClosed(),i._module.set_subaddress_label(i._cppAddress,e,t,r)}))}async getTxs(e){this._assertNotClosed(),e=A._normalizeTxQuery(e);let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.get_txs(t._cppAddress,JSON.stringify(e.getBlock().toJson()),(function(t){if("{"===t.charAt(0))try{r(C._deserializeTxs(e,t))}catch(e){i(e)}else i(new m(t))}))}))}))}async getTransfers(e){this._assertNotClosed(),e=A._normalizeTransferQuery(e);let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.get_transfers(t._cppAddress,JSON.stringify(e.getTxQuery().getBlock().toJson()),(function(t){if("{"===t.charAt(0))try{r(C._deserializeTransfers(e,t))}catch(e){i(e)}else i(new m(t))}))}))}))}async getOutputs(e){this._assertNotClosed(),e=A._normalizeOutputQuery(e);let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.get_outputs(t._cppAddress,JSON.stringify(e.getTxQuery().getBlock().toJson()),(function(t){if("{"===t.charAt(0))try{r(C._deserializeOutputs(e,t))}catch(e){i(e)}else i(new m(t))}))}))}))}async exportOutputs(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.export_outputs(t._cppAddress,e,(function(e){r(e)}))}))}))}async importOutputs(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.import_outputs(t._cppAddress,e,(function(e){r(e)}))}))}))}async exportKeyImages(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.export_key_images(t._cppAddress,e,(function(e){"{"!==e.charAt(0)&&i(new m(e));let t=[];for(let r of JSON.parse(o.stringifyBIs(e)).keyImages)t.push(new v(r));r(t)}))}))}))}async importKeyImages(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.import_key_images(t._cppAddress,JSON.stringify({keyImages:e.map((e=>e.toJson()))}),(function(e){r(new y(JSON.parse(o.stringifyBIs(e))))}))}))}))}async getNewKeyImagesFromLastImport(){throw this._assertNotClosed(),new m("Not implemented")}async freezeOutput(e){if(!e)throw new m("Must specify key image to freeze");let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.freeze_output(t._cppAddress,e,(function(){r()}))}))}))}async thawOutput(e){if(!e)throw new m("Must specify key image to thaw");let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.thaw_output(t._cppAddress,e,(function(){r()}))}))}))}async isOutputFrozen(e){if(!e)throw new m("Must specify key image to check if frozen");let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.is_output_frozen(t._cppAddress,e,(function(e){r(e)}))}))}))}async createTxs(e){this._assertNotClosed(),void 0===(e=A._normalizeCreateTxsConfig(e)).getCanSplit()&&e.setCanSplit(!0);let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.create_txs(t._cppAddress,JSON.stringify(e.toJson()),(function(e){"{"!==e.charAt(0)?i(new m(e)):r(new M(JSON.parse(o.stringifyBIs(e))).getTxs())}))}))}))}async sweepOutput(e){this._assertNotClosed(),e=A._normalizeSweepOutputConfig(e);let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.sweep_output(t._cppAddress,JSON.stringify(e.toJson()),(function(e){"{"!==e.charAt(0)?i(new m(e)):r(new M(JSON.parse(o.stringifyBIs(e))).getTxs()[0])}))}))}))}async sweepUnlocked(e){this._assertNotClosed(),e=A._normalizeSweepUnlockedConfig(e);let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.sweep_unlocked(t._cppAddress,JSON.stringify(e.toJson()),(function(e){if("{"!==e.charAt(0))i(new m(e));else{let t=[];for(let r of JSON.parse(o.stringifyBIs(e)).txSets)t.push(new M(r));let i=[];for(let e of t)for(let t of e.getTxs())i.push(t);r(i)}}))}))}))}async sweepDust(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.sweep_dust(t._cppAddress,e,(function(e){if("{"!==e.charAt(0))i(new m(e));else{let t=new M(JSON.parse(o.stringifyBIs(e)));void 0===t.getTxs()&&t.setTxs([]),r(t.getTxs())}}))}))}))}async relayTxs(e){this._assertNotClosed(),n(Array.isArray(e),"Must provide an array of txs or their metadata to relay");let t=[];for(let r of e)t.push(r instanceof I?r.getMetadata():r);let r=this;return r._module.queueTask((async function(){return r._assertNotClosed(),new Promise((function(e,i){r._module.relay_txs(r._cppAddress,JSON.stringify({txMetadatas:t}),(function(t){"{"!==t.charAt(0)?i(new m(t)):e(JSON.parse(t).txHashes)}))}))}))}async describeTxSet(e){let t=this;return t._module.queueTask((async function(){t._assertNotClosed(),e=(new M).setUnsignedTxHex(e.getUnsignedTxHex()).setSignedTxHex(e.getSignedTxHex()).setMultisigTxHex(e.getMultisigTxHex());try{return new M(JSON.parse(o.stringifyBIs(t._module.describe_tx_set(t._cppAddress,JSON.stringify(e.toJson())))))}catch(e){throw new m(t._module.get_exception_message(e))}}))}async signTxs(e){let t=this;return t._module.queueTask((async function(){t._assertNotClosed();try{return t._module.sign_txs(t._cppAddress,e)}catch(e){throw new m(t._module.get_exception_message(e))}}))}async submitTxs(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.submit_txs(t._cppAddress,e,(function(e){"{"!==e.charAt(0)?i(new m(e)):r(JSON.parse(e).txHashes)}))}))}))}async signMessage(e,t,r,i){t=t||O.SIGN_WITH_SPEND_KEY,r=r||0,i=i||0;let n=this;return n._module.queueTask((async function(){n._assertNotClosed();try{return n._module.sign_message(n._cppAddress,e,t===O.SIGN_WITH_SPEND_KEY?0:1,r,i)}catch(e){throw new m(n._module.get_exception_message(e))}}))}async verifyMessage(e,t,r){let i=this;return i._module.queueTask((async function(){let n;i._assertNotClosed();try{n=JSON.parse(i._module.verify_message(i._cppAddress,e,t,r))}catch(e){n={isGood:!1}}return new B(n.isGood,n.isGood?n.isOld:void 0,n.isGood?"spend"===n.signatureType?O.SIGN_WITH_SPEND_KEY:O.SIGN_WITH_VIEW_KEY:void 0,n.isGood?n.version:void 0)}))}async getTxKey(e){let t=this;return t._module.queueTask((async function(){t._assertNotClosed();try{return t._module.get_tx_key(t._cppAddress,e)}catch(e){throw new m(t._module.get_exception_message(e))}}))}async checkTxKey(e,t,r){let i=this;return i._module.queueTask((async function(){return i._assertNotClosed(),new Promise((function(n,a){i._module.check_tx_key(i._cppAddress,e,t,r,(function(e){"{"!==e.charAt(0)?a(new m(e)):n(new p(JSON.parse(o.stringifyBIs(e))))}))}))}))}async getTxProof(e,t,r){let i=this;return i._module.queueTask((async function(){return i._assertNotClosed(),new Promise((function(n,a){i._module.get_tx_proof(i._cppAddress,e||"",t||"",r||"",(function(e){let t="error: ";0===e.indexOf(t)?a(new m(e.substring(t.length))):n(e)}))}))}))}async checkTxProof(e,t,r,i){let n=this;return n._module.queueTask((async function(){return n._assertNotClosed(),new Promise((function(a,s){n._module.check_tx_proof(n._cppAddress,e||"",t||"",r||"",i||"",(function(e){"{"!==e.charAt(0)?s(new m(e)):a(new p(JSON.parse(o.stringifyBIs(e))))}))}))}))}async getSpendProof(e,t){let r=this;return r._module.queueTask((async function(){return r._assertNotClosed(),new Promise((function(i,n){r._module.get_spend_proof(r._cppAddress,e||"",t||"",(function(e){let t="error: ";0===e.indexOf(t)?n(new m(e.substring(t.length))):i(e)}))}))}))}async checkSpendProof(e,t,r){let i=this;return i._module.queueTask((async function(){return i._assertNotClosed(),new Promise((function(n,a){i._module.check_spend_proof(i._cppAddress,e||"",t||"",r||"",(function(e){"string"==typeof e?a(new m(e)):n(e)}))}))}))}async getReserveProofWallet(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.get_reserve_proof_wallet(t._cppAddress,e,(function(e){let t="error: ";0===e.indexOf(t)?i(new m(e.substring(t.length),-1)):r(e)}))}))}))}async getReserveProofAccount(e,t,r){let i=this;return i._module.queueTask((async function(){return i._assertNotClosed(),new Promise((function(n,a){i._module.get_reserve_proof_account(i._cppAddress,e,t.toString(),r,(function(e){let t="error: ";0===e.indexOf(t)?a(new m(e.substring(t.length),-1)):n(e)}))}))}))}async checkReserveProof(e,t,r){let i=this;return i._module.queueTask((async function(){return i._assertNotClosed(),new Promise((function(n,a){i._module.check_reserve_proof(i._cppAddress,e,t,r,(function(e){"{"!==e.charAt(0)?a(new m(e,-1)):n(new d(JSON.parse(o.stringifyBIs(e))))}))}))}))}async getTxNotes(e){let t=this;return t._module.queueTask((async function(){t._assertNotClosed();try{return JSON.parse(t._module.get_tx_notes(t._cppAddress,JSON.stringify({txHashes:e}))).txNotes}catch(e){throw new m(t._module.get_exception_message(e))}}))}async setTxNotes(e,t){let r=this;return r._module.queueTask((async function(){r._assertNotClosed();try{r._module.set_tx_notes(r._cppAddress,JSON.stringify({txHashes:e,txNotes:t}))}catch(e){throw new m(r._module.get_exception_message(e))}}))}async getAddressBookEntries(e){e||(e=[]);let t=this;return t._module.queueTask((async function(){t._assertNotClosed();let r=[];for(let i of JSON.parse(t._module.get_address_book_entries(t._cppAddress,JSON.stringify({entryIndices:e}))).entries)r.push(new l(i));return r}))}async addAddressBookEntry(e,t){e||(e=""),t||(t="");let r=this;return r._module.queueTask((async function(){return r._assertNotClosed(),r._module.add_address_book_entry(r._cppAddress,e,t)}))}async editAddressBookEntry(e,t,r,i,n){t||(t=!1),r||(r=""),i||(i=!1),n||(n="");let a=this;return a._module.queueTask((async function(){a._assertNotClosed(),a._module.edit_address_book_entry(a._cppAddress,e,t,r,i,n)}))}async deleteAddressBookEntry(e){let t=this;return t._module.queueTask((async function(){t._assertNotClosed(),t._module.delete_address_book_entry(t._cppAddress,e)}))}async tagAccounts(e,t){e||(e=""),t||(t=[]);let r=this;return r._module.queueTask((async function(){r._assertNotClosed(),r._module.tag_accounts(r._cppAddress,JSON.stringify({tag:e,accountIndices:t}))}))}async untagAccounts(e){e||(e=[]);let t=this;return t._module.queueTask((async function(){t._assertNotClosed(),t._module.tag_accounts(t._cppAddress,JSON.stringify({accountIndices:e}))}))}async getAccountTags(){let e=this;return e._module.queueTask((async function(){e._assertNotClosed();let t=[];for(let r of JSON.parse(e._module.get_account_tags(e._cppAddress)).accountTags)t.push(new MoneroAccountTag(r));return t}))}async setAccountTagLabel(e,t){e||(e=""),llabel||(t="");let r=this;return r._module.queueTask((async function(){r._assertNotClosed(),r._module.set_account_tag_label(r._cppAddress,e,t)}))}async getPaymentUri(e){e=A._normalizeCreateTxsConfig(e);let t=this;return t._module.queueTask((async function(){t._assertNotClosed();try{return t._module.get_payment_uri(t._cppAddress,JSON.stringify(e.toJson()))}catch(e){throw new m("Cannot make URI from supplied parameters")}}))}async parsePaymentUri(e){let t=this;return t._module.queueTask((async function(){t._assertNotClosed();try{return new N(JSON.parse(o.stringifyBIs(t._module.parse_payment_uri(t._cppAddress,e))),!0)}catch(e){throw new m(e.message)}}))}async getAttribute(e){this._assertNotClosed(),n("string"==typeof e,"Attribute key must be a string");let t=this;return t._module.queueTask((async function(){t._assertNotClosed();let r=t._module.get_attribute(t._cppAddress,e);return""===r?null:r}))}async setAttribute(e,t){this._assertNotClosed(),n("string"==typeof e,"Attribute key must be a string"),n("string"==typeof t,"Attribute value must be a string");let r=this;return r._module.queueTask((async function(){r._assertNotClosed(),r._module.set_attribute(r._cppAddress,e,t)}))}async startMining(e,t,r){this._assertNotClosed();let i=new f(Object.assign((await this.getDaemonConnection()).getConfig(),{proxyToWorker:!1}));await i.startMining(await this.getPrimaryAddress(),e,t,r)}async stopMining(){this._assertNotClosed();let e=new f(Object.assign((await this.getDaemonConnection()).getConfig(),{proxyToWorker:!1}));await e.stopMining()}async isMultisigImportNeeded(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),e._module.is_multisig_import_needed(e._cppAddress)}))}async isMultisig(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),e._module.is_multisig(e._cppAddress)}))}async getMultisigInfo(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),new _(JSON.parse(e._module.get_multisig_info(e._cppAddress)))}))}async prepareMultisig(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),e._module.prepare_multisig(e._cppAddress)}))}async makeMultisig(e,t,r){let i=this;return i._module.queueTask((async function(){return i._assertNotClosed(),new Promise((function(n,a){i._module.make_multisig(i._cppAddress,JSON.stringify({multisigHexes:e,threshold:t,password:r}),(e=>{let t="error: ";0===e.indexOf(t)?a(new m(e.substring(t.length))):n(e)}))}))}))}async exchangeMultisigKeys(e,t){let r=this;return r._module.queueTask((async function(){return r._assertNotClosed(),new Promise((function(i,n){r._module.exchange_multisig_keys(r._cppAddress,JSON.stringify({multisigHexes:e,password:t}),(e=>{let t="error: ";0===e.indexOf(t)?n(new m(e.substring(t.length))):i(new b(JSON.parse(e)))}))}))}))}async exportMultisigHex(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),e._module.export_multisig_hex(e._cppAddress)}))}async importMultisigHex(e){if(!o.isArray(e))throw new m("Must provide string[] to importMultisigHex()");let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.import_multisig_hex(t._cppAddress,JSON.stringify({multisigHexes:e}),(function(e){"string"==typeof e?i(new m(e)):r(e)}))}))}))}async signMultisigTxHex(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.sign_multisig_tx_hex(t._cppAddress,e,(async function(e){"{"!==e.charAt(0)?i(new m(e)):r(new w(JSON.parse(e)))}))}))}))}async submitMultisigTxHex(e){let t=this;return t._module.queueTask((async function(){return t._assertNotClosed(),new Promise((function(r,i){t._module.submit_multisig_tx_hex(t._cppAddress,e,(function(e){"{"!==e.charAt(0)?i(new m(e)):r(JSON.parse(e).txHashes)}))}))}))}async getData(){this._assertNotClosed();let e=await this.isViewOnly(),t=this;return t._module.queueTask((async function(){t._assertNotClosed();let r=[],n=JSON.parse(t._module.get_cache_file_buffer(t._cppAddress)),a=new DataView(new ArrayBuffer(n.length));for(let e=0;e0,t=this;if(!(0===t._fullListenerHandle&&!e||t._fullListenerHandle>0&&e))return t._module.queueTask((async function(){return new Promise((function(r,i){t._module.set_listener(t._cppAddress,t._fullListenerHandle,(e=>{"string"==typeof e?i(new m(e)):(t._fullListenerHandle=e,r())}),e?async function(e,r,i,n,a){await t._fullListener.onSyncProgress(e,r,i,n,a)}:void 0,e?async function(e){await t._fullListener.onNewBlock(e)}:void 0,e?async function(e,r){await t._fullListener.onBalancesChanged(e,r)}:void 0,e?async function(e,r,i,n,a,o,s,u){await t._fullListener.onOutputReceived(e,r,i,n,a,o,s,u)}:void 0,e?async function(e,r,i,n,a,o,s,u){await t._fullListener.onOutputSpent(e,r,i,n,a,o,s,u)}:void 0)}))}))}static _sanitizeBlock(e){for(let t of e.getTxs())C._sanitizeTxWallet(t);return e}static _sanitizeTxWallet(e){return n(e instanceof I),e}static _sanitizeAccount(e){if(e.getSubaddresses())for(let t of e.getSubaddresses())C._sanitizeSubaddress(t);return e}static _sanitizeSubaddress(e){return""===e.getLabel()&&e.setLabel(void 0),e}static _deserializeBlocks(e){let t=JSON.parse(o.stringifyBIs(e)),r={blocks:[]};if(t.blocks)for(let e of t.blocks)r.blocks.push(C._sanitizeBlock(new h(e,h.DeserializationType.TX_WALLET)));return r}static _deserializeTxs(e,t){let r=C._deserializeBlocks(t).blocks,i=[];for(let e of r){C._sanitizeBlock(e);for(let t of e.getTxs())void 0===e.getHeight()&&t.setBlock(void 0),i.push(t)}if(void 0!==e.getHashes()){let t=new Map;for(let e of i)t[e.getHash()]=e;let r=[];for(let i of e.getHashes())void 0!==t[i]&&r.push(t[i]);i=r}return i}static _deserializeTransfers(e,t){let r=C._deserializeBlocks(t).blocks,i=[];for(let e of r)for(let t of e.getTxs())if(void 0===e.getHeight()&&t.setBlock(void 0),void 0!==t.getOutgoingTransfer()&&i.push(t.getOutgoingTransfer()),void 0!==t.getIncomingTransfers())for(let e of t.getIncomingTransfers())i.push(e);return i}static _deserializeOutputs(e,t){let r=C._deserializeBlocks(t).blocks,i=[];for(let e of r)for(let t of e.getTxs())for(let e of t.getOutputs())i.push(e);return i}_setBrowserMainPath(e){this._browserMainPath=e}static async _moveTo(e,t){if(await t.isClosed())throw new m("Wallet is closed");if(!e)throw new m("Must provide path of destination wallet");const i=r(26470);if(i.normalize(t._path)===i.normalize(e))return void await t.save();let n=i.dirname(e);if(!t._fs.existsSync(n))try{t._fs.mkdirSync(n)}catch(t){throw new m("Destination path "+e+" does not exist and cannot be created: "+t.message)}let a=await t.getData();t._fs.writeFileSync(e+".keys",a[0],"binary"),t._fs.writeFileSync(e,a[1],"binary"),t._fs.writeFileSync(e+".address.txt",await t.getPrimaryAddress());let o=t._path;t._path=e,o&&(t._fs.unlinkSync(o+".address.txt"),t._fs.unlinkSync(o+".keys"),t._fs.unlinkSync(o))}static async _save(e){if(await e.isClosed())throw new m("Wallet is closed");let t=await e.getPath();if(!t)throw new m("Cannot save wallet because path is not set");let r=t+".new",i=await e.getData();e._fs.writeFileSync(r+".keys",i[0],"binary"),e._fs.writeFileSync(r,i[1],"binary"),e._fs.writeFileSync(r+".address.txt",await e.getPrimaryAddress()),e._fs.renameSync(r+".keys",t+".keys"),e._fs.renameSync(r,t,t+".keys"),e._fs.renameSync(r+".address.txt",t+".address.txt",t+".keys")}}class z extends A{static async openWalletData(e,t,r,i,n,a,u){let c=o.getUUID();void 0===t&&(t="");let l=a instanceof S?a.getConfig():a;await s.invokeWorker(c,"openWalletData",[e,t,r,i,n,l]);let h=new z(c,await s.getWorker(),e,u);return e&&await h.save(),h}static async _createWallet(e){if(e.getPath()&&C.walletExists(e.getPath(),e.getFs()))throw new m("Wallet already exists: "+path);let t=o.getUUID();await s.invokeWorker(t,"_createWallet",[e.toJson()]);let r=new z(t,await s.getWorker(),e.getPath(),e.getFs());return e.getPath()&&await r.save(),r}constructor(e,t,r,i){super(),this._walletId=e,this._worker=t,this._path=r,this._fs=i||(r?C._getFs():void 0),this._wrappedListeners=[]}async isViewOnly(){return this._invokeWorker("isViewOnly")}async getNetworkType(){return this._invokeWorker("getNetworkType")}async getVersion(){throw new m("Not implemented")}getPath(){return this._path}async getSeed(){return this._invokeWorker("getSeed")}async getSeedLanguage(){return this._invokeWorker("getSeedLanguage")}async getSeedLanguages(){return this._invokeWorker("getSeedLanguages")}async getPrivateSpendKey(){return this._invokeWorker("getPrivateSpendKey")}async getPrivateViewKey(){return this._invokeWorker("getPrivateViewKey")}async getPublicViewKey(){return this._invokeWorker("getPublicViewKey")}async getPublicSpendKey(){return this._invokeWorker("getPublicSpendKey")}async getAddress(e,t){return this._invokeWorker("getAddress",Array.from(arguments))}async getAddressIndex(e){let t=await this._invokeWorker("getAddressIndex",Array.from(arguments));return C._sanitizeSubaddress(new x(t))}async setSubaddressLabel(e,t,r){return this._invokeWorker("setSubaddressLabel",Array.from(arguments))}async getIntegratedAddress(e,t){return new g(await this._invokeWorker("getIntegratedAddress",Array.from(arguments)))}async decodeIntegratedAddress(e){return new g(await this._invokeWorker("decodeIntegratedAddress",Array.from(arguments)))}async setDaemonConnection(e){if(e){let t=e?e instanceof S?e:new S(e):void 0;await this._invokeWorker("setDaemonConnection",t?t.getConfig():void 0)}else await this._invokeWorker("setDaemonConnection")}async getDaemonConnection(){let e=await this._invokeWorker("getDaemonConnection");return e?new S(e):void 0}async isConnectedToDaemon(){return this._invokeWorker("isConnectedToDaemon")}async getRestoreHeight(){return this._invokeWorker("getRestoreHeight")}async setRestoreHeight(e){return this._invokeWorker("setRestoreHeight",[e])}async getDaemonHeight(){return this._invokeWorker("getDaemonHeight")}async getDaemonMaxPeerHeight(){return this._invokeWorker("getDaemonMaxPeerHeight")}async getHeightByDate(e,t,r){return this._invokeWorker("getHeightByDate",[e,t,r])}async isDaemonSynced(){return this._invokeWorker("isDaemonSynced")}async getHeight(){return this._invokeWorker("getHeight")}async addListener(e){let t=new D(e),r=t.getId();return s.WORKER_OBJECTS[this._walletId].callbacks["onSyncProgress_"+r]=[t.onSyncProgress,t],s.WORKER_OBJECTS[this._walletId].callbacks["onNewBlock_"+r]=[t.onNewBlock,t],s.WORKER_OBJECTS[this._walletId].callbacks["onBalancesChanged_"+r]=[t.onBalancesChanged,t],s.WORKER_OBJECTS[this._walletId].callbacks["onOutputReceived_"+r]=[t.onOutputReceived,t],s.WORKER_OBJECTS[this._walletId].callbacks["onOutputSpent_"+r]=[t.onOutputSpent,t],this._wrappedListeners.push(t),this._invokeWorker("addListener",[r])}async removeListener(e){for(let t=0;t0){let t=(new h).setHeight(e);t.setTxs([l]),l.setBlock(t),l.setIsConfirmed(!0),l.setInTxPool(!1),l.setIsFailed(!1)}else l.setIsConfirmed(!1),l.setInTxPool(!0);for(let e of this._wallet.getListeners())await e.onOutputReceived(l.getOutputs()[0])}async onOutputSpent(e,t,r,i,n,o,s,u){let c=new k;c.setAmount(a.parse(r)),i&&c.setAccountIndex(parseInt(i)),n&&c.setSubaddressIndex(parseInt(n));let l=new I;if(l.setHash(t),l.setVersion(o),l.setUnlockTime(s),l.setIsLocked(u),c.setTx(l),l.setInputs([c]),e>0){let t=(new h).setHeight(e);t.setTxs([l]),l.setBlock(t),l.setIsConfirmed(!0),l.setInTxPool(!1),l.setIsFailed(!1)}else l.setIsConfirmed(!1),l.setInTxPool(!0);for(let e of this._wallet.getListeners())await e.onOutputSpent(l.getInputs()[0])}}class D{constructor(e){this._id=o.getUUID(),this._listener=e}getId(){return this._id}getListener(){return this._listener}onSyncProgress(e,t,r,i,n){this._listener.onSyncProgress(e,t,r,i,n)}async onNewBlock(e){await this._listener.onNewBlock(e)}async onBalancesChanged(e,t){await this._listener.onBalancesChanged(a.parse(e),a.parse(t))}async onOutputReceived(e){let t=new h(e,h.DeserializationType.TX_WALLET);await this._listener.onOutputReceived(t.getTxs()[0].getOutputs()[0])}async onOutputSpent(e){let t=new h(e,h.DeserializationType.TX_WALLET);await this._listener.onOutputSpent(t.getTxs()[0].getInputs()[0])}}C.DEFAULT_SYNC_PERIOD_IN_MS=1e4,e.exports=C},28166:(e,t,r)=>{const i=r(69282),n=r(85096),a=r(91307),o=r(79077),s=r(44769),u=(r(58012),r(55540)),c=r(54815),l=r(99919);class h extends c{static async createWallet(e){if(void 0===e)throw new a("Must provide config to create wallet");if(void 0!==(e=e instanceof l?e:new l(e)).getSeed()&&(void 0!==e.getPrimaryAddress()||void 0!==e.getPrivateViewKey()||void 0!==e.getPrivateSpendKey()))throw new a("Wallet may be initialized with a seed or keys but not both");if(void 0===e.getNetworkType())throw new a("Must provide a networkType: 'mainnet', 'testnet' or 'stagenet'");if(!0===e.getSaveCurrent())throw new a("Cannot save current wallet when creating keys-only wallet");return void 0!==e.getSeed()?h._createWalletFromSeed(e):void 0!==e.getPrivateSpendKey()||void 0!==e.getPrimaryAddress()?h._createWalletFromKeys(e):h._createWalletRandom(e)}static async _createWalletRandom(e){if(void 0!==(e=e.copy()).getSeedOffset())throw new a("Cannot provide seedOffset when creating random wallet");if(void 0!==e.getRestoreHeight())throw new a("Cannot provide restoreHeight when creating random wallet");o.validate(e.getNetworkType()),void 0===e.getLanguage()&&e.setLanguage("English");let t=await n.loadKeysModule();return t.queueTask((async function(){return new Promise((function(r,i){t.create_keys_wallet_random(JSON.stringify(e.toJson()),(async function(e){"string"==typeof e?i(new a(e)):r(new h(e))}))}))}))}static async _createWalletFromSeed(e){if(o.validate(e.getNetworkType()),void 0===e.getSeed())throw Error("Must define seed to create wallet from");if(void 0===e.getSeedOffset()&&e.setSeedOffset(""),void 0!==e.getLanguage())throw new a("Cannot provide language when creating wallet from seed");let t=await n.loadKeysModule();return t.queueTask((async function(){return new Promise((function(r,i){t.create_keys_wallet_from_seed(JSON.stringify(e.toJson()),(async function(e){"string"==typeof e?i(new a(e)):r(new h(e))}))}))}))}static async _createWalletFromKeys(e){if(void 0!==e.getSeedOffset())throw new a("Cannot provide seedOffset when creating wallet from keys");o.validate(e.getNetworkType()),void 0===e.getPrimaryAddress()&&e.setPrimaryAddress(""),void 0===e.getPrivateViewKey()&&e.setPrivateViewKey(""),void 0===e.getPrivateSpendKey()&&e.setPrivateSpendKey(""),void 0===e.getLanguage()&&e.setLanguage("English");let t=await n.loadKeysModule();return t.queueTask((async function(){return new Promise((function(r,i){t.create_keys_wallet_from_keys(JSON.stringify(e.toJson()),(async function(e){"string"==typeof e?i(new a(e)):r(new h(e))}))}))}))}static async getSeedLanguages(){let e=await n.loadKeysModule();return e.queueTask((async function(){return JSON.parse(e.get_keys_wallet_seed_languages()).languages}))}constructor(e){if(super(),this._cppAddress=e,this._module=n.getWasmModule(),!this._module.create_full_wallet)throw new a("WASM module not loaded - create wallet instance using static utilities")}async addListener(e){throw new a("MoneroWalletKeys does not support adding listeners")}async removeListener(e){throw new a("MoneroWalletKeys does not support removing listeners")}async isViewOnly(){let e=this;return e._module.queueTask((async function(){return e._assertNotClosed(),e._module.is_view_only(e._cppAddress)}))}async isConnectedToDaemon(){return!1}async getVersion(){let e=this;return e._module.queueTask((async function(){e._assertNotClosed();let t=e._module.get_version(e._cppAddress),r=JSON.parse(t);return new u(r.number,r.isRelease)}))}getPath(){throw this._assertNotClosed(),new a("MoneroWalletKeys does not support a persisted path")}async getSeed(){let e=this;return e._module.queueTask((async function(){e._assertNotClosed();let t=e._module.get_seed(e._cppAddress);const r="error: ";if(0===t.indexOf(r))throw new a(t.substring(r.length));return t||void 0}))}async getSeedLanguage(){let e=this;return e._module.queueTask((async function(){e._assertNotClosed();let t=e._module.get_seed_language(e._cppAddress);if(0===t.indexOf("error: "))throw new a(t.substring(errorStr.length));return t||void 0}))}async getPrivateSpendKey(){let e=this;return e._module.queueTask((async function(){e._assertNotClosed();let t=e._module.get_private_spend_key(e._cppAddress);if(0===t.indexOf("error: "))throw new a(t.substring(errorStr.length));return t||void 0}))}async getPrivateViewKey(){let e=this;return e._module.queueTask((async function(){e._assertNotClosed();let t=e._module.get_private_view_key(e._cppAddress);if(0===t.indexOf("error: "))throw new a(t.substring(errorStr.length));return t||void 0}))}async getPublicViewKey(){let e=this;return e._module.queueTask((async function(){e._assertNotClosed();let t=e._module.get_public_view_key(e._cppAddress);if(0===t.indexOf("error: "))throw new a(t.substring(errorStr.length));return t||void 0}))}async getPublicSpendKey(){let e=this;return e._module.queueTask((async function(){e._assertNotClosed();let t=e._module.get_public_spend_key(e._cppAddress);if(0===t.indexOf("error: "))throw new a(t.substring(errorStr.length));return t||void 0}))}async getAddress(e,t){this._assertNotClosed(),i("number"==typeof e);let r=this;return r._module.queueTask((async function(){return r._assertNotClosed(),r._module.get_address(r._cppAddress,e,t)}))}async getAddressIndex(e){this._assertNotClosed();let t=this;return t._module.queueTask((async function(){t._assertNotClosed();let r=t._module.get_address_index(t._cppAddress,e);if("{"!==r.charAt(0))throw new a(r);return new s(JSON.parse(r))}))}getAccounts(){throw this._assertNotClosed(),new a("MoneroWalletKeys does not support getting an enumerable set of accounts; query specific accounts")}async close(e){if(this._isClosed)return;e&&await this.save();let t=this;return t._module.queueTask((async function(){return new Promise((function(e,r){t._isClosed?e():t._module.close(t._cppAddress,!1,(async function(){delete t._cppAddress,t._isClosed=!0,e()}))}))}))}async isClosed(){return this._isClosed}async getPrimaryAddress(){return super.getPrimaryAddress(...arguments)}async getSubaddress(){return super.getSubaddress(...arguments)}_assertNotClosed(){if(this._isClosed)throw new a("Wallet is closed")}}e.exports=h},57987:(e,t,r)=>{const i=r(69282),n=r(63055).BigInteger,a=r(93444),o=r(85096),s=r(36693),u=r(28753),c=r(41235),l=r(30947),h=r(36242),p=r(29457),d=r(47766),f=r(35404),m=r(39407),g=r(91307),v=r(31243),y=r(64472),_=r(53011),b=r(34293),w=r(26749),E=r(50957),k=r(63413),S=r(69535),x=r(39749),j=r(69459),N=r(73717),M=r(27828),I=r(44769),A=r(17118),T=r(59692),R=r(36721),P=r(31857),O=r(61527),B=r(18489),C=r(58012),z=r(55540),F=r(54815),D=r(99919),q=r(63149),L=r(64232),U=r(57773),H=r(28103),K=r(13751);class W extends F{constructor(e,t,r,i){if(super(),a.isArray(e))throw new g("Array with command parameters is invalid first parameter, use `await monerojs.connectToWalletRpc(...)`");this.config=W._normalizeConfig(e,t,r,i),this.rpc=new N(this.config),this.addressCache={},this.syncPeriodInMs=W.DEFAULT_SYNC_PERIOD_IN_MS,this.listeners=[]}static async _connectToWalletRpc(e,t,r,i){return a.isArray(e)?W._startWalletRpcProcess(e):new W(...arguments)}static async _startWalletRpcProcess(e){let t;i(a.isArray(e),"Must provide string array with command line parameters"),this.process=r(43448).spawn(e[0],e.slice(1),{}),this.process.stdout.setEncoding("utf8"),this.process.stderr.setEncoding("utf8");let n=this,s="";return new Promise((function(r,i){n.process.stdout.on("data",(function(i){let a=i.toString();o.log(2,a),s+=a+"\n";let u="Binding on ",c=a.indexOf(u);if(c>=0){let r=a.substring(c+u.length,a.lastIndexOf(" ")),i=a.replace(/\u001b\[.*?m/g,"").trim(),n=i.substring(i.lastIndexOf(":")+1),o=e.indexOf("--rpc-ssl"),s=o>=0&&"enabled"==e[o+1].toLowerCase();t=(s?"https":"http")+"://"+r+":"+n}if(a.indexOf("Starting wallet RPC server")>=0){let i=e.indexOf("--rpc-login"),a=i>=0?e[i+1]:void 0,o=void 0===a?void 0:a.substring(0,a.indexOf(":")),s=void 0===a?void 0:a.substring(a.indexOf(":")+1),u=new W(t,o,s);u.process=n.process,this.isResolved=!0,r(u)}})),n.process.stderr.on("data",(function(e){o.getLogLevel()>=2&&console.error(e)})),n.process.on("exit",(function(e){this.isResolved||i(new g("monero-wallet-rpc process terminated with exit code "+e+(s?":\n\n"+s:"")))})),n.process.on("error",(function(t){t.message.indexOf("ENOENT")>=0&&i(new g("monero-wallet-rpc does not exist at path '"+e[0]+"'")),this.isResolved||i(t)})),n.process.on("uncaughtException",(function(e,t){console.error("Uncaught exception in monero-wallet-rpc process: "+e.message),console.error(t),i(e)}))}))}getProcess(){return this.process}async stopProcess(e){if(void 0===this.process)throw new g("MoneroWalletRpc instance not created from new process");let t=a.copyArray(this.getListeners());for(let e of t)await this.removeListener(e);return a.killProcess(this.process,e?"sigkill":void 0)}getRpcConnection(){return this.rpc}async openWallet(e,t){let r=new D("string"==typeof e?{path:e,password:t||""}:e);if(!r.getPath())throw new g("Must provide name of wallet to open");return await this.rpc.sendJsonRequest("open_wallet",{filename:r.getPath(),password:r.getPassword()}),await this._clear(),this.path=r.getPath(),r.getServer()?this.setDaemonConnection(r.getServer()):this}async createWallet(e){if(void 0===e)throw new g("Must provide config to create wallet");if(void 0!==(e=new D(e)).getSeed()&&(void 0!==e.getPrimaryAddress()||void 0!==e.getPrivateViewKey()||void 0!==e.getPrivateSpendKey()))throw new g("Wallet may be initialized with a seed or keys but not both");if(void 0!==e.getNetworkType())throw new g("Cannot provide networkType when creating RPC wallet because server's network type is already set");if(void 0!==e.getAccountLookahead()||void 0!==e.getSubaddressLookahead())throw new g("monero-wallet-rpc does not support creating wallets with subaddress lookahead over rpc");return void 0===e.getPassword()&&e.setPassword(""),void 0!==e.getSeed()?await this._createWalletFromSeed(e):void 0!==e.getPrivateSpendKey()||void 0!==e.getPrimaryAddress()?await this._createWalletFromKeys(e):await this._createWalletRandom(e),e.getServer()?this.setDaemonConnection(e.getServer()):this}async _createWalletRandom(e){if(void 0!==e.getSeedOffset())throw new g("Cannot provide seedOffset when creating random wallet");if(void 0!==e.getRestoreHeight())throw new g("Cannot provide restoreHeight when creating random wallet");if(!1===e.getSaveCurrent())throw new g("Current wallet is saved automatically when creating random wallet");if(!e.getPath())throw new g("Name is not initialized");e.getLanguage()||e.setLanguage(F.DEFAULT_LANGUAGE);let t={filename:e.getPath(),password:e.getPassword(),language:e.getLanguage()};try{await this.rpc.sendJsonRequest("create_wallet",t)}catch(t){this._handleCreateWalletError(e.getPath(),t)}return await this._clear(),this.path=e.getPath(),this}async _createWalletFromSeed(e){try{await this.rpc.sendJsonRequest("restore_deterministic_wallet",{filename:e.getPath(),password:e.getPassword(),seed:e.getSeed(),seed_offset:e.getSeedOffset(),enable_multisig_experimental:e.isMultisig(),restore_height:e.getRestoreHeight(),language:e.getLanguage(),autosave_current:e.getSaveCurrent()})}catch(t){this._handleCreateWalletError(e.getPath(),t)}return await this._clear(),this.path=e.getPath(),this}async _createWalletFromKeys(e){if(void 0!==e.getSeedOffset())throw new g("Cannot provide seedOffset when creating wallet from keys");void 0===e.getRestoreHeight()&&e.setRestoreHeight(0),void 0===e.getLanguage()&&e.setLanguage(F.DEFAULT_LANGUAGE);try{await this.rpc.sendJsonRequest("generate_from_keys",{filename:e.getPath(),password:e.getPassword(),address:e.getPrimaryAddress(),viewkey:e.getPrivateViewKey(),spendkey:e.getPrivateSpendKey(),restore_height:e.getRestoreHeight(),autosave_current:e.getSaveCurrent()})}catch(t){this._handleCreateWalletError(e.getPath(),t)}return await this._clear(),this.path=e.getPath(),this}_handleCreateWalletError(e,t){if("Cannot create wallet. Already exists."===t.message)throw new M("Wallet already exists: "+e,t.getCode(),t.getRpcMethod(),t.getRpcParams());if("Electrum-style word list failed verification"===t.message)throw new M("Invalid mnemonic",t.getCode(),t.getRpcMethod(),t.getRpcParams());throw t}async isViewOnly(){try{return await this.rpc.sendJsonRequest("query_key",{key_type:"mnemonic"}),!1}catch(e){if(-29===e.getCode())return!0;if(-1===e.getCode())return!1;throw e}}async setDaemonConnection(e,t,r){let i=e?e instanceof N?e:new N(e):void 0;r||(r=new K);let n={};n.address=i?i.getUri():"bad_uri",n.username=i?i.getUsername():"",n.password=i?i.getPassword():"",n.trusted=t,n.ssl_support="autodetect",n.ssl_private_key_path=r.getPrivateKeyPath(),n.ssl_certificate_path=r.getCertificatePath(),n.ssl_ca_file=r.getCertificateAuthorityFile(),n.ssl_allowed_fingerprints=r.getAllowedFingerprints(),n.ssl_allow_any_cert=r.getAllowAnyCert(),await this.rpc.sendJsonRequest("set_daemon",n),this.daemonConnection=i}async getDaemonConnection(){return this.daemonConnection}async addListener(e){i(e instanceof q,"Listener must be instance of MoneroWalletListener"),this.listeners.push(e),this._refreshListening()}async removeListener(e){let t=this.listeners.indexOf(e);if(!(t>-1))throw new g("Listener is not registered with wallet");this.listeners.splice(t,1),this._refreshListening()}getListeners(){return this.listeners}async isConnectedToDaemon(){try{throw await this.checkReserveProof(await this.getPrimaryAddress(),"",""),new g("check reserve expected to fail")}catch(e){return e.message.indexOf("Failed to connect to daemon")<0}}async getVersion(){let e=await this.rpc.sendJsonRequest("get_version");return new z(e.result.version,e.result.release)}async getPath(){return this.path}async getSeed(){return(await this.rpc.sendJsonRequest("query_key",{key_type:"mnemonic"})).result.key}async getSeedLanguage(){if(void 0!==await this.getSeed())throw new g("MoneroWalletRpc.getSeedLanguage() not supported")}async getSeedLanguages(){return(await this.rpc.sendJsonRequest("get_languages")).result.languages}async getPrivateViewKey(){return(await this.rpc.sendJsonRequest("query_key",{key_type:"view_key"})).result.key}async getPrivateSpendKey(){return(await this.rpc.sendJsonRequest("query_key",{key_type:"spend_key"})).result.key}async getAddress(e,t){let r=this.addressCache[e];return r?r[t]||(await this.getSubaddresses(e,void 0,!0),this.addressCache[e][t]):(await this.getSubaddresses(e,void 0,!0),this.getAddress(e,t))}async getAddressIndex(e){let t;try{t=await this.rpc.sendJsonRequest("get_address_index",{address:e})}catch(e){if(-2===e.getCode())throw new g(e.message);throw e}let r=new I(e);return r.setAccountIndex(t.result.index.major),r.setIndex(t.result.index.minor),r}async getIntegratedAddress(e,t){try{let r=(await this.rpc.sendJsonRequest("make_integrated_address",{standard_address:e,payment_id:t})).result.integrated_address;return await this.decodeIntegratedAddress(r)}catch(e){if(e.message.includes("Invalid payment ID"))throw new g("Invalid payment ID: "+t);throw e}}async decodeIntegratedAddress(e){let t=await this.rpc.sendJsonRequest("split_integrated_address",{integrated_address:e});return(new y).setStandardAddress(t.result.standard_address).setPaymentId(t.result.payment_id).setIntegratedAddress(e)}async getHeight(){return(await this.rpc.sendJsonRequest("get_height")).result.height}async getDaemonHeight(){throw new g("monero-wallet-rpc does not support getting the chain height")}async getHeightByDate(e,t,r){throw new g("monero-wallet-rpc does not support getting a height by date")}async sync(e,t){i(void 0===t,"Monero Wallet RPC does not support reporting sync progress");try{let t=await this.rpc.sendJsonRequest("refresh",{start_height:e},0);return await this._poll(),new A(t.result.blocks_fetched,t.result.received_money)}catch(e){if("no connection to daemon"===e.message)throw new g("Wallet is not connected to daemon");throw e}}async startSyncing(e){let t=Math.round((void 0===e?W.DEFAULT_SYNC_PERIOD_IN_MS:e)/1e3);await this.rpc.sendJsonRequest("auto_refresh",{enable:!0,period:t}),this.syncPeriodInMs=1e3*t,void 0!==this.walletPoller&&this.walletPoller.setPeriodInMs(e),await this._poll()}async stopSyncing(){return this.rpc.sendJsonRequest("auto_refresh",{enable:!1})}async scanTxs(e){if(!e||!e.length)throw new g("No tx hashes given to scan");await this.rpc.sendJsonRequest("scan_tx",{txids:e}),await this._poll()}async rescanSpent(){await this.rpc.sendJsonRequest("rescan_spent",void 0,0)}async rescanBlockchain(){await this.rpc.sendJsonRequest("rescan_blockchain",void 0,0)}async getBalance(e,t){return(await this._getBalances(e,t))[0]}async getUnlockedBalance(e,t){return(await this._getBalances(e,t))[1]}async getAccounts(e,t,r){let a=await this.rpc.sendJsonRequest("get_accounts",{tag:t}),o=[];for(let t of a.result.subaddress_accounts){let r=W._convertRpcAccount(t);e&&r.setSubaddresses(await this.getSubaddresses(r.getIndex(),void 0,!0)),o.push(r)}if(e&&!r){for(let e of o)for(let t of e.getSubaddresses())t.setBalance(new n(0)),t.setUnlockedBalance(new n(0)),t.setNumUnspentOutputs(0),t.setNumBlocksToUnlock(0);if(a=await this.rpc.sendJsonRequest("get_balance",{all_accounts:!0}),a.result.per_subaddress)for(let e of a.result.per_subaddress){let t=W._convertRpcSubaddress(e),r=o[t.getAccountIndex()];i.equal(t.getAccountIndex(),r.getIndex(),"RPC accounts are out of order");let n=r.getSubaddresses()[t.getIndex()];i.equal(t.getIndex(),n.getIndex(),"RPC subaddresses are out of order"),void 0!==t.getBalance()&&n.setBalance(t.getBalance()),void 0!==t.getUnlockedBalance()&&n.setUnlockedBalance(t.getUnlockedBalance()),void 0!==t.getNumUnspentOutputs()&&n.setNumUnspentOutputs(t.getNumUnspentOutputs())}}return o}async getAccount(e,t,r){i(e>=0);for(let i of await this.getAccounts())if(i.getIndex()===e)return t&&i.setSubaddresses(await this.getSubaddresses(e,void 0,r)),i;throw new Exception("Account with index "+e+" does not exist")}async createAccount(e){e=e||void 0;let t=await this.rpc.sendJsonRequest("create_account",{label:e});return new u(t.result.account_index,t.result.address,new n(0),new n(0))}async getSubaddresses(e,t,r){let i={};i.account_index=e,t&&(i.address_index=a.listify(t));let o=await this.rpc.sendJsonRequest("get_address",i),s=[];for(let t of o.result.addresses){let r=W._convertRpcSubaddress(t);r.setAccountIndex(e),s.push(r)}if(!r){for(let e of s)e.setBalance(new n(0)),e.setUnlockedBalance(new n(0)),e.setNumUnspentOutputs(0),e.setNumBlocksToUnlock(0);if(o=await this.rpc.sendJsonRequest("get_balance",i),o.result.per_subaddress)for(let e of o.result.per_subaddress){let t=W._convertRpcSubaddress(e);for(let e of s)e.getIndex()===t.getIndex()&&(void 0!==t.getBalance()&&e.setBalance(t.getBalance()),void 0!==t.getUnlockedBalance()&&e.setUnlockedBalance(t.getUnlockedBalance()),void 0!==t.getNumUnspentOutputs()&&e.setNumUnspentOutputs(t.getNumUnspentOutputs()),void 0!==t.getNumBlocksToUnlock()&&e.setNumBlocksToUnlock(t.getNumBlocksToUnlock()))}}let u=this.addressCache[e];u||(u={},this.addressCache[e]=u);for(let e of s)u[e.getIndex()]=e.getAddress();return s}async getSubaddress(e,t,r){return i(e>=0),i(t>=0),(await this.getSubaddresses(e,t,r))[0]}async createSubaddress(e,t){let r=await this.rpc.sendJsonRequest("create_address",{account_index:e,label:t}),i=new I;return i.setAccountIndex(e),i.setIndex(r.result.address_index),i.setAddress(r.result.address),i.setLabel(t||void 0),i.setBalance(new n(0)),i.setUnlockedBalance(new n(0)),i.setNumUnspentOutputs(0),i.setIsUsed(!1),i.setNumBlocksToUnlock(0),i}async setSubaddressLabel(e,t,r){await this.rpc.sendJsonRequest("label_address",{index:{major:e,minor:t},label:r})}async getTxs(e){let t=(e=F._normalizeTxQuery(e)).getTransferQuery(),r=e.getInputQuery(),i=e.getOutputQuery();e.setTransferQuery(void 0),e.setInputQuery(void 0),e.setOutputQuery(void 0);let n=await this._getTransfersAux((new T).setTxQuery(W._decontextualize(e.copy()))),a=[],o=new Set;for(let e of n)o.has(e.getTx())||(a.push(e.getTx()),o.add(e.getTx()));let s={},u={};for(let e of a)W._mergeTx(e,s,u);if(e.getIncludeOutputs()||i){let t=(i?i.copy():new x).setTxQuery(W._decontextualize(e.copy())),r=await this._getOutputsAux(t),n=[];for(let e of r)n.includes(e.getTx())||(W._mergeTx(e.getTx(),s,u),n.push(e.getTx()))}e.setTransferQuery(t),e.setInputQuery(r),e.setOutputQuery(i);let c=[];for(let t of a)e.meetsCriteria(t)?c.push(t):void 0!==t.getBlock()&&t.getBlock().getTxs().splice(t.getBlock().getTxs().indexOf(t),1);a=c;for(let t of a)if(t.isConfirmed()&&void 0===t.getBlock()||!t.isConfirmed()&&void 0!==t.getBlock())return console.error("Inconsistency detected building txs from multiple rpc calls, re-fetching txs"),this.getTxs(e);if(e.getHashes()&&e.getHashes().length>0){let t=new Map;for(let e of a)t.set(e.getHash(),e);let r=[];for(let i of e.getHashes())t.get(i)&&r.push(t.get(i));a=r}return a}async getTransfers(e){if(e=F._normalizeTransferQuery(e),!W._isContextual(e))return this._getTransfersAux(e);let t=[];for(let r of await this.getTxs(e.getTxQuery()))for(let i of r.filterTransfers(e))t.push(i);return t}async getOutputs(e){if(e=F._normalizeOutputQuery(e),!W._isContextual(e))return this._getOutputsAux(e);let t=[];for(let r of await this.getTxs(e.getTxQuery()))for(let i of r.filterOutputs(e))t.push(i);return t}async exportOutputs(e){return(await this.rpc.sendJsonRequest("export_outputs",{all:e})).result.outputs_data_hex}async importOutputs(e){return(await this.rpc.sendJsonRequest("import_outputs",{outputs_data_hex:e})).result.num_imported}async exportKeyImages(e){return await this._rpcExportKeyImages(e)}async importKeyImages(e){let t=e.map((e=>({key_image:e.getHex(),signature:e.getSignature()}))),r=await this.rpc.sendJsonRequest("import_key_images",{signed_key_images:t}),i=new b;return i.setHeight(r.result.height),i.setSpentAmount(new n(r.result.spent)),i.setUnspentAmount(new n(r.result.unspent)),i}async getNewKeyImagesFromLastImport(){return await this._rpcExportKeyImages(!1)}async freezeOutput(e){return this.rpc.sendJsonRequest("freeze",{key_image:e})}async thawOutput(e){return this.rpc.sendJsonRequest("thaw",{key_image:e})}async isOutputFrozen(e){return!0===(await this.rpc.sendJsonRequest("frozen",{key_image:e})).result.frozen}async createTxs(e){if(void 0===(e=F._normalizeCreateTxsConfig(e)).getCanSplit()&&e.setCanSplit(!0),!0===e.getRelay()&&await this.isMultisig())throw new g("Cannot relay multisig transaction until co-signed");let t=e.getAccountIndex();if(void 0===t)throw new g("Must provide the account index to send from");let r,n,a=void 0===e.getSubaddressIndices()?void 0:e.getSubaddressIndices().slice(0),o={destinations:[]};for(let t of e.getDestinations())i(t.getAddress(),"Destination address is not defined"),i(t.getAmount(),"Destination amount is not defined"),o.destinations.push({address:t.getAddress(),amount:t.getAmount().toString()});if(e.getSubtractFeeFrom()&&(o.subtract_fee_from_outputs=e.getSubtractFeeFrom()),o.account_index=t,o.subaddr_indices=a,o.payment_id=e.getPaymentId(),void 0!==e.getUnlockTime()&&(o.unlock_time=e.getUnlockTime().toString()),o.do_not_relay=!0!==e.getRelay(),i(void 0===e.getPriority()||e.getPriority()>=0&&e.getPriority()<=3),o.priority=e.getPriority(),o.get_tx_hex=!0,o.get_tx_metadata=!0,e.getCanSplit()?o.get_tx_keys=!0:o.get_tx_key=!0,e.getCanSplit()&&e.getSubtractFeeFrom()&&e.getSubtractFeeFrom().length>0)throw new g("subtractfeefrom transfers cannot be split over multiple transactions yet");try{r=(await this.rpc.sendJsonRequest(e.getCanSplit()?"transfer_split":"transfer",o)).result}catch(e){if(e.message.indexOf("WALLET_RPC_ERROR_CODE_WRONG_ADDRESS")>-1)throw new g("Invalid destination address");throw e}let s=e.getCanSplit()?void 0!==r.fee_list?r.fee_list.length:0:void 0!==r.fee?1:0;s>0&&(n=[]);let u=1===s;for(let r=0;r=0&&e.getPriority()<=3),t.priority=e.getPriority(),t.payment_id=e.getPaymentId(),t.get_tx_key=!0,t.get_tx_hex=!0,t.get_tx_metadata=!0;let r=(await this.rpc.sendJsonRequest("sweep_single",t)).result;e.getRelay()&&await this._poll();let n=W._initSentTxWallet(e,void 0,!0);return W._convertRpcTxToTxSet(r,n,!0,e),n.getOutgoingTransfer().getDestinations()[0].setAmount(n.getOutgoingTransfer().getAmount()),n}async sweepUnlocked(e){e=F._normalizeSweepUnlockedConfig(e);let t=new Map;if(void 0!==e.getAccountIndex())if(void 0!==e.getSubaddressIndices())t.set(e.getAccountIndex(),e.getSubaddressIndices());else{let r=[];t.set(e.getAccountIndex(),r);for(let t of await this.getSubaddresses(e.getAccountIndex()))t.getUnlockedBalance().compare(new n(0))>0&&r.push(t.getIndex())}else{let e=await this.getAccounts(!0);for(let r of e)if(r.getUnlockedBalance().compare(new n(0))>0){let e=[];t.set(r.getIndex(),e);for(let t of r.getSubaddresses())t.getUnlockedBalance().compare(new n(0))>0&&e.push(t.getIndex())}}let r=[];for(let i of t.keys()){let n=e.copy();if(n.setAccountIndex(i),n.setSweepEachSubaddress(!1),!0!==n.getSweepEachSubaddress()){n.setSubaddressIndices(t.get(i));for(let e of await this._rpcSweepAccount(n))r.push(e)}else for(let e of t.get(i)){n.setSubaddressIndices([e]);for(let e of await this._rpcSweepAccount(n))r.push(e)}}return e.getRelay()&&await this._poll(),r}async sweepDust(e){void 0===e&&(e=!1);let t=await this.rpc.sendJsonRequest("sweep_dust",{do_not_relay:!e});e&&await this._poll();let r=t.result,i=W._convertRpcSentTxsToTxSet(r);if(void 0===i.getTxs())return[];for(let t of i.getTxs())t.setIsRelayed(!e),t.setInTxPool(t.isRelayed());return i.getTxs()}async relayTxs(e){i(Array.isArray(e),"Must provide an array of txs or their metadata to relay");let t=[];for(let r of e){let e=r instanceof B?r.getMetadata():r,i=await this.rpc.sendJsonRequest("relay_tx",{hex:e});t.push(i.result.tx_hash)}return await this._poll(),t}async describeTxSet(e){let t=await this.rpc.sendJsonRequest("describe_transfer",{unsigned_txset:e.getUnsignedTxHex(),multisig_txset:e.getMultisigTxHex()});return W._convertRpcDescribeTransfer(t.result)}async signTxs(e){let t=await this.rpc.sendJsonRequest("sign_transfer",{unsigned_txset:e,export_raw:!1});return await this._poll(),t.result.signed_txset}async submitTxs(e){let t=await this.rpc.sendJsonRequest("submit_transfer",{tx_data_hex:e});return await this._poll(),t.result.tx_hash_list}async signMessage(e,t,r,i){return(await this.rpc.sendJsonRequest("sign",{data:e,signature_type:t===L.SIGN_WITH_SPEND_KEY?"spend":"view",account_index:r,address_index:i})).result.signature}async verifyMessage(e,t,r){try{let i=await this.rpc.sendJsonRequest("verify",{data:e,address:t,signature:r});return new U(i.result.good,i.result.good?i.result.old:void 0,i.result.good&&i.result.signature_type?"view"===i.result.signature_type?L.SIGN_WITH_VIEW_KEY:L.SIGN_WITH_SPEND_KEY:void 0,i.result.good?i.result.version:void 0)}catch(e){if(-2===e.getCode())return new U(!1);throw e}}async getTxKey(e){try{return(await this.rpc.sendJsonRequest("get_tx_key",{txid:e})).result.tx_key}catch(e){throw e instanceof M&&-8===e.getCode()&&e.message.includes("TX ID has invalid format")&&(e=new M("TX hash has invalid format",e.getCode(),e.getRpcMethod(),e.getRpcParams())),e}}async checkTxKey(e,t,r){try{let i=await this.rpc.sendJsonRequest("check_tx_key",{txid:e,tx_key:t,address:r}),a=new f;return a.setIsGood(!0),a.setNumConfirmations(i.result.confirmations),a.setInTxPool(i.result.in_pool),a.setReceivedAmount(new n(i.result.received)),a}catch(e){throw e instanceof M&&-8===e.getCode()&&e.message.includes("TX ID has invalid format")&&(e=new M("TX hash has invalid format",e.getCode(),e.getRpcMethod(),e.getRpcParams())),e}}async getTxProof(e,t,r){try{return(await this.rpc.sendJsonRequest("get_tx_proof",{txid:e,address:t,message:r})).result.signature}catch(e){throw e instanceof M&&-8===e.getCode()&&e.message.includes("TX ID has invalid format")&&(e=new M("TX hash has invalid format",e.getCode(),e.getRpcMethod(),e.getRpcParams())),e}}async checkTxProof(e,t,r,i){try{let a=await this.rpc.sendJsonRequest("check_tx_proof",{txid:e,address:t,message:r,signature:i}),o=a.result.good,s=new f;return s.setIsGood(o),o&&(s.setNumConfirmations(a.result.confirmations),s.setInTxPool(a.result.in_pool),s.setReceivedAmount(new n(a.result.received))),s}catch(e){throw e instanceof M&&-1===e.getCode()&&"basic_string"===e.message&&(e=new M("Must provide signature to check tx proof",-1)),e instanceof M&&-8===e.getCode()&&e.message.includes("TX ID has invalid format")&&(e=new M("TX hash has invalid format",e.getCode(),e.getRpcMethod(),e.getRpcParams())),e}}async getSpendProof(e,t){try{return(await this.rpc.sendJsonRequest("get_spend_proof",{txid:e,message:t})).result.signature}catch(e){throw e instanceof M&&-8===e.getCode()&&e.message.includes("TX ID has invalid format")&&(e=new M("TX hash has invalid format",e.getCode(),e.getRpcMethod(),e.getRpcParams())),e}}async checkSpendProof(e,t,r){try{return(await this.rpc.sendJsonRequest("check_spend_proof",{txid:e,message:t,signature:r})).result.good}catch(e){throw e instanceof M&&-8===e.getCode()&&e.message.includes("TX ID has invalid format")&&(e=new M("TX hash has invalid format",e.getCode(),e.getRpcMethod(),e.getRpcParams())),e}}async getReserveProofWallet(e){return(await this.rpc.sendJsonRequest("get_reserve_proof",{all:!0,message:e})).result.signature}async getReserveProofAccount(e,t,r){return(await this.rpc.sendJsonRequest("get_reserve_proof",{account_index:e,amount:t.toString(),message:r})).result.signature}async checkReserveProof(e,t,r){let i=await this.rpc.sendJsonRequest("check_reserve_proof",{address:e,message:t,signature:r}),a=i.result.good,o=new d;return o.setIsGood(a),a&&(o.setUnconfirmedSpentAmount(new n(i.result.spent)),o.setTotalAmount(new n(i.result.total))),o}async getTxNotes(e){return(await this.rpc.sendJsonRequest("get_tx_notes",{txids:e})).result.notes}async setTxNotes(e,t){await this.rpc.sendJsonRequest("set_tx_notes",{txids:e,notes:t})}async getAddressBookEntries(e){let t=await this.rpc.sendJsonRequest("get_address_book",{entries:e});if(!t.result.entries)return[];let r=[];for(let e of t.result.entries)r.push((new l).setIndex(e.index).setAddress(e.address).setDescription(e.description).setPaymentId(e.payment_id));return r}async addAddressBookEntry(e,t){return(await this.rpc.sendJsonRequest("add_address_book",{address:e,description:t})).result.index}async editAddressBookEntry(e,t,r,i,n){await this.rpc.sendJsonRequest("edit_address_book",{index:e,set_address:t,address:r,set_description:i,description:n})}async deleteAddressBookEntry(e){await this.rpc.sendJsonRequest("delete_address_book",{index:e})}async tagAccounts(e,t){await this.rpc.sendJsonRequest("tag_accounts",{tag:e,accounts:t})}async untagAccounts(e){await this.rpc.sendJsonRequest("untag_accounts",{accounts:e})}async getAccountTags(){let e=[],t=await this.rpc.sendJsonRequest("get_account_tags");if(t.result.account_tags)for(let r of t.result.account_tags)e.push(new c(r.tag?r.tag:void 0,r.label?r.label:void 0,r.accounts));return e}async setAccountTagLabel(e,t){await this.rpc.sendJsonRequest("set_account_tag_description",{tag:e,description:t})}async getPaymentUri(e){return e=F._normalizeCreateTxsConfig(e),(await this.rpc.sendJsonRequest("make_uri",{address:e.getDestinations()[0].getAddress(),amount:e.getDestinations()[0].getAmount()?e.getDestinations()[0].getAmount().toString():void 0,payment_id:e.getPaymentId(),recipient_name:e.getRecipientName(),tx_description:e.getNote()})).result.uri}async parsePaymentUri(e){i(e,"Must provide URI to parse");let t=await this.rpc.sendJsonRequest("parse_uri",{uri:e}),r=new R({address:t.result.uri.address,amount:new n(t.result.uri.amount)});return r.setPaymentId(t.result.uri.payment_id),r.setRecipientName(t.result.uri.recipient_name),r.setNote(t.result.uri.tx_description),""===r.getDestinations()[0].getAddress()&&r.getDestinations()[0].setAddress(void 0),""===r.getPaymentId()&&r.setPaymentId(void 0),""===r.getRecipientName()&&r.setRecipientName(void 0),""===r.getNote()&&r.setNote(void 0),r}async getAttribute(e){try{let t=await this.rpc.sendJsonRequest("get_attribute",{key:e});return""===t.result.value?void 0:t.result.value}catch(e){if(e instanceof M&&-45===e.getCode())return;throw e}}async setAttribute(e,t){await this.rpc.sendJsonRequest("set_attribute",{key:e,value:t})}async startMining(e,t,r){await this.rpc.sendJsonRequest("start_mining",{threads_count:e,do_background_mining:t,ignore_battery:r})}async stopMining(){await this.rpc.sendJsonRequest("stop_mining")}async isMultisigImportNeeded(){return!0===(await this.rpc.sendJsonRequest("get_balance")).result.multisig_import_needed}async getMultisigInfo(){let e=(await this.rpc.sendJsonRequest("is_multisig")).result,t=new w;return t.setIsMultisig(e.multisig),t.setIsReady(e.ready),t.setThreshold(e.threshold),t.setNumParticipants(e.total),t}async prepareMultisig(){let e=await this.rpc.sendJsonRequest("prepare_multisig",{enable_multisig_experimental:!0});return this.addressCache={},e.result.multisig_info}async makeMultisig(e,t,r){let i=await this.rpc.sendJsonRequest("make_multisig",{multisig_info:e,threshold:t,password:r});return this.addressCache={},i.result.multisig_info}async exchangeMultisigKeys(e,t){let r=await this.rpc.sendJsonRequest("exchange_multisig_keys",{multisig_info:e,password:t});this.addressCache={};let i=new E;return i.setAddress(r.result.address),i.setMultisigHex(r.result.multisig_info),0===i.getAddress().length&&i.setAddress(void 0),0===i.getMultisigHex().length&&i.setMultisigHex(void 0),i}async exportMultisigHex(){return(await this.rpc.sendJsonRequest("export_multisig_info")).result.info}async importMultisigHex(e){if(!a.isArray(e))throw new g("Must provide string[] to importMultisigHex()");return(await this.rpc.sendJsonRequest("import_multisig_info",{info:e})).result.n_outputs}async signMultisigTxHex(e){let t=(await this.rpc.sendJsonRequest("sign_multisig",{tx_data_hex:e})).result,r=new k;return r.setSignedMultisigTxHex(t.tx_data_hex),r.setTxHashes(t.tx_hash_list),r}async submitMultisigTxHex(e){return(await this.rpc.sendJsonRequest("submit_multisig",{tx_data_hex:e})).result.tx_hash_list}async changePassword(e,t){return this.rpc.sendJsonRequest("change_wallet_password",{old_password:e||"",new_password:t||""})}async save(){await this.rpc.sendJsonRequest("store")}async close(e){void 0===e&&(e=!1),await this._clear(),await this.rpc.sendJsonRequest("close_wallet",{autosave_current:e})}async isClosed(){try{await this.getPrimaryAddress()}catch(e){return e instanceof M&&-13===e.getCode()&&e.message.indexOf("No wallet file")>-1}return!1}async stop(){await this._clear(),await this.rpc.sendJsonRequest("stop_wallet")}async getNumBlocksToUnlock(){return super.getNumBlocksToUnlock(...arguments)}async getTx(){return super.getTx(...arguments)}async getIncomingTransfers(){return super.getIncomingTransfers(...arguments)}async getOutgoingTransfers(){return super.getOutgoingTransfers(...arguments)}async createTx(){return super.createTx(...arguments)}async relayTx(){return super.relayTx(...arguments)}async getTxNote(){return super.getTxNote(...arguments)}async setTxNote(){return super.setTxNote(...arguments)}async _clear(){this.listeners.splice(0,this.listeners.length),this._refreshListening(),delete this.addressCache,this.addressCache={},this.path=void 0}async _getBalances(e,t){if(void 0===e){i.equal(t,void 0,"Must provide account index with subaddress index");let e=new n(0),r=new n(0);for(let t of await this.getAccounts())e=e.add(t.getBalance()),r=r.add(t.getUnlockedBalance());return[e,r]}{let r={account_index:e,address_indices:void 0===t?void 0:[t]},i=await this.rpc.sendJsonRequest("get_balance",r);return void 0===t?[new n(i.result.balance),new n(i.result.unlocked_balance)]:[new n(i.result.per_subaddress[0].balance),new n(i.result.per_subaddress[0].unlocked_balance)]}}async _getAccountIndices(e){let t=new Map;for(let r of await this.getAccounts())t.set(r.getIndex(),e?await this._getSubaddressIndices(r.getIndex()):void 0);return t}async _getSubaddressIndices(e){let t=[],r=await this.rpc.sendJsonRequest("get_address",{account_index:e});for(let e of r.result.addresses)t.push(e.address_index);return t}async _getTransfersAux(e){let t=e.getTxQuery(),r=!1!==t.isConfirmed()&&!0!==t.inTxPool()&&!0!==t.isFailed()&&!1!==t.isRelayed(),a=!0!==t.isConfirmed()&&!1!==t.inTxPool()&&!0!==t.isFailed()&&void 0===t.getHeight()&&void 0===t.getMaxHeight()&&!1!==t.isLocked(),o=!1!==e.isIncoming()&&!0!==e.isOutgoing()&&!0!==e.hasDestinations(),s=!1!==e.isOutgoing()&&!0!==e.isIncoming();if(!0===t.inTxPool()&&!a)throw new g("Cannot fetch pool transactions because it contradicts configuration");let u={};if(u.in=o&&r,u.out=s&&r,u.pool=o&&a,u.pending=s&&a,u.failed=!1!==t.isFailed()&&!0!==t.isConfirmed()&&1!=t.inTxPool(),void 0!==t.getMinHeight()&&(t.getMinHeight()>0?u.min_height=t.getMinHeight()-1:u.min_height=t.getMinHeight()),void 0!==t.getMaxHeight()&&(u.max_height=t.getMaxHeight()),u.filter_by_height=void 0!==t.getMinHeight()||void 0!==t.getMaxHeight(),void 0===e.getAccountIndex())i(void 0===e.getSubaddressIndex()&&void 0===e.getSubaddressIndices(),"Query specifies a subaddress index but not an account index"),u.all_accounts=!0;else{u.account_index=e.getAccountIndex();let t=new Set;void 0!==e.getSubaddressIndex()&&t.add(e.getSubaddressIndex()),void 0!==e.getSubaddressIndices()&&e.getSubaddressIndices().map((e=>t.add(e))),t.size&&(u.subaddr_indices=Array.from(t))}let c={},l={},h=await this.rpc.sendJsonRequest("get_transfers",u);for(let e of Object.keys(h.result))for(let t of h.result[e]){let e=W._convertRpcTxWithTransfer(t);if(e.isConfirmed()&&i(e.getBlock().getTxs().indexOf(e)>-1),void 0!==e.getOutgoingTransfer()&&e.isRelayed()&&!e.isFailed()&&e.getOutgoingTransfer().getDestinations()&&0===e.getOutgoingAmount().compare(new n(0))){let t=e.getOutgoingTransfer(),r=new n(0);for(let e of t.getDestinations())r=r.add(e.getAmount());e.getOutgoingTransfer().setAmount(r)}W._mergeTx(e,c,l)}let p=Object.values(c);p.sort(W._compareTxsByHeight);let d=[];for(let t of p){void 0===t.isIncoming()&&t.setIsIncoming(!1),void 0===t.isOutgoing()&&t.setIsOutgoing(!1),void 0!==t.getIncomingTransfers()&&t.getIncomingTransfers().sort(W._compareIncomingTransfers);for(let r of t.filterTransfers(e))d.push(r);void 0!==t.getBlock()&&void 0===t.getOutgoingTransfer()&&void 0===t.getIncomingTransfers()&&t.getBlock().getTxs().splice(t.getBlock().getTxs().indexOf(t),1)}return d}async _getOutputsAux(e){let t=new Map;if(void 0!==e.getAccountIndex()){let r=new Set;void 0!==e.getSubaddressIndex()&&r.add(e.getSubaddressIndex()),void 0!==e.getSubaddressIndices()&&e.getSubaddressIndices().map((e=>r.add(e))),t.set(e.getAccountIndex(),r.size?Array.from(r):void 0)}else i.equal(e.getSubaddressIndex(),void 0,"Query specifies a subaddress index but not an account index"),i(void 0===e.getSubaddressIndices()||0===e.getSubaddressIndices().length,"Query specifies subaddress indices but not an account index"),t=await this._getAccountIndices();let r={},n={},a={};a.transfer_type=!0===e.isSpent()?"unavailable":!1===e.isSpent()?"available":"all",a.verbose=!0;for(let e of t.keys()){a.account_index=e,a.subaddr_indices=t.get(e);let i=await this.rpc.sendJsonRequest("incoming_transfers",a);if(void 0!==i.result.transfers)for(let e of i.result.transfers){let t=W._convertRpcTxWalletWithOutput(e);W._mergeTx(t,r,n)}}let o=Object.values(r);o.sort(W._compareTxsByHeight);let s=[];for(let t of o){void 0!==t.getOutputs()&&t.getOutputs().sort(W._compareOutputs);for(let r of t.filterOutputs(e))s.push(r);void 0===t.getOutputs()&&void 0!==t.getBlock()&&t.getBlock().getTxs().splice(t.getBlock().getTxs().indexOf(t),1)}return s}async _rpcExportKeyImages(e){let t=await this.rpc.sendJsonRequest("export_key_images",{all:e});return t.result.signed_key_images?t.result.signed_key_images.map((e=>new _(e.key_image,e.signature))):[]}async _rpcSweepAccount(e){if(void 0===e)throw new g("Must provide sweep config");if(void 0===e.getAccountIndex())throw new g("Must provide an account index to sweep from");if(void 0===e.getDestinations()||1!=e.getDestinations().length)throw new g("Must provide exactly one destination to sweep to");if(void 0===e.getDestinations()[0].getAddress())throw new g("Must provide destination address to sweep to");if(void 0!==e.getDestinations()[0].getAmount())throw new g("Cannot specify amount in sweep config");if(void 0!==e.getKeyImage())throw new g("Key image defined; use sweepOutput() to sweep an output by its key image");if(void 0!==e.getSubaddressIndices()&&0===e.getSubaddressIndices().length)throw new g("Empty list given for subaddresses indices to sweep");if(e.getSweepEachSubaddress())throw new g("Cannot sweep each subaddress with RPC `sweep_all`");if(void 0!==e.getSubtractFeeFrom()&&e.getSubtractFeeFrom().length>0)throw new g("Sweeping output does not support subtracting fees from destinations");if(void 0===e.getSubaddressIndices()){e.setSubaddressIndices([]);for(let t of await this.getSubaddresses(e.getAccountIndex()))e.getSubaddressIndices().push(t.getIndex())}if(0===e.getSubaddressIndices().length)throw new g("No subaddresses to sweep from");let t={},r=!0===e.getRelay();t.account_index=e.getAccountIndex(),t.subaddr_indices=e.getSubaddressIndices(),t.address=e.getDestinations()[0].getAddress(),i(void 0===e.getPriority()||e.getPriority()>=0&&e.getPriority()<=3),t.priority=e.getPriority(),void 0!==e.getUnlockTime()&&(t.unlock_time=e.getUnlockTime()),t.payment_id=e.getPaymentId(),t.do_not_relay=!r,t.below_amount=e.getBelowAmount(),t.get_tx_keys=!0,t.get_tx_hex=!0,t.get_tx_metadata=!0;let a=(await this.rpc.sendJsonRequest("sweep_all",t)).result,o=W._convertRpcSentTxsToTxSet(a,void 0,e);for(let t of o.getTxs()){t.setIsLocked(!0),t.setIsConfirmed(!1),t.setNumConfirmations(0),t.setRelay(r),t.setInTxPool(r),t.setIsRelayed(r),t.setIsMinerTx(!1),t.setIsFailed(!1),t.setRingSize(C.RING_SIZE);let i=t.getOutgoingTransfer();i.setAccountIndex(e.getAccountIndex()),1===e.getSubaddressIndices().length&&i.setSubaddressIndices(e.getSubaddressIndices());let a=new m(e.getDestinations()[0].getAddress(),new n(i.getAmount()));i.setDestinations([a]),t.setOutgoingTransfer(i),t.setPaymentId(e.getPaymentId()),void 0===t.getUnlockTime()&&t.setUnlockTime(void 0===e.getUnlockTime()?0:e.getUnlockTime()),t.getRelay()&&(void 0===t.getLastRelayedTimestamp()&&t.setLastRelayedTimestamp(+(new Date).getTime()),void 0===t.isDoubleSpendSeen()&&t.setIsDoubleSpend(!1))}return o.getTxs()}_refreshListening(){null==this.walletPoller&&this.listeners.length&&(this.walletPoller=new Z(this)),void 0!==this.walletPoller&&this.walletPoller.setIsPolling(this.listeners.length>0)}async _poll(){void 0!==this.walletPoller&&this.walletPoller._isPolling&&await this.walletPoller.poll()}static _normalizeConfig(e,t,r,i){let n;if("string"==typeof e)n={uri:e,username:t,password:r,rejectUnauthorized:i};else{if("object"!=typeof e)throw new g("Invalid configuration to create rpc client; must be string, object, or MoneroRpcConnection");if(t||r||i)throw new g("Can provide config object or params or new MoneroDaemonRpc(...) but not both");n=e instanceof N?Object.assign({},e.getConfig()):Object.assign({},e)}return n.server&&(n=Object.assign(n,new N(n.server).getConfig()),delete n.server),n}static _decontextualize(e){return e.setIsIncoming(void 0),e.setIsOutgoing(void 0),e.setTransferQuery(void 0),e.setInputQuery(void 0),e.setOutputQuery(void 0),e}static _isContextual(e){if(!e)return!1;if(!e.getTxQuery())return!1;if(void 0!==e.getTxQuery().isIncoming())return!0;if(void 0!==e.getTxQuery().isOutgoing())return!0;if(e instanceof T){if(void 0!==e.getTxQuery().getOutputQuery())return!0}else{if(!(e instanceof x))throw new g("query must be tx or transfer query");if(void 0!==e.getTxQuery().getTransferQuery())return!0}return!1}static _convertRpcAccount(e){let t=new u;for(let r of Object.keys(e)){let i=e[r];"account_index"===r?t.setIndex(i):"balance"===r?t.setBalance(new n(i)):"unlocked_balance"===r?t.setUnlockedBalance(new n(i)):"base_address"===r?t.setPrimaryAddress(i):"tag"===r?t.setTag(i):"label"===r||console.log("WARNING: ignoring unexpected account field: "+r+": "+i)}return""===t.getTag()&&t.setTag(void 0),t}static _convertRpcSubaddress(e){let t=new I;for(let r of Object.keys(e)){let i=e[r];"account_index"===r?t.setAccountIndex(i):"address_index"===r?t.setIndex(i):"address"===r?t.setAddress(i):"balance"===r?t.setBalance(new n(i)):"unlocked_balance"===r?t.setUnlockedBalance(new n(i)):"num_unspent_outputs"===r?t.setNumUnspentOutputs(i):"label"===r?i&&t.setLabel(i):"used"===r?t.setIsUsed(i):"blocks_to_unlock"===r?t.setNumBlocksToUnlock(i):"time_to_unlock"==r||console.log("WARNING: ignoring unexpected subaddress field: "+r+": "+i)}return t}static _initSentTxWallet(e,t,r){t||(t=new B);let i=!0===e.getRelay();t.setIsOutgoing(!0),t.setIsConfirmed(!1),t.setNumConfirmations(0),t.setInTxPool(i),t.setRelay(i),t.setIsRelayed(i),t.setIsMinerTx(!1),t.setIsFailed(!1),t.setIsLocked(!0),t.setRingSize(C.RING_SIZE);let n=(new S).setTx(t);if(e.getSubaddressIndices()&&1===e.getSubaddressIndices().length&&n.setSubaddressIndices(e.getSubaddressIndices().slice(0)),r){let t=[];for(let r of e.getDestinations())t.push(r.copy());n.setDestinations(t)}return t.setOutgoingTransfer(n),t.setPaymentId(e.getPaymentId()),void 0===t.getUnlockTime()&&t.setUnlockTime(void 0===e.getUnlockTime()?0:e.getUnlockTime()),e.getRelay()&&(void 0===t.getLastRelayedTimestamp()&&t.setLastRelayedTimestamp(+(new Date).getTime()),void 0===t.isDoubleSpendSeen()&&t.setIsDoubleSpend(!1)),t}static _convertRpcTxSet(e){let t=new O;return t.setMultisigTxHex(e.multisig_txset),t.setUnsignedTxHex(e.unsigned_txset),t.setSignedTxHex(e.signed_txset),void 0!==t.getMultisigTxHex()&&0===t.getMultisigTxHex().length&&t.setMultisigTxHex(void 0),void 0!==t.getUnsignedTxHex()&&0===t.getUnsignedTxHex().length&&t.setUnsignedTxHex(void 0),void 0!==t.getSignedTxHex()&&0===t.getSignedTxHex().length&&t.setSignedTxHex(void 0),t}static _convertRpcSentTxsToTxSet(e,t,r){let o=W._convertRpcTxSet(e),s=e.fee_list?e.fee_list.length:0;if(0===s)return i.equal(t,void 0),o;if(t)o.setTxs(t);else{t=[];for(let e=0;e1)return;this._numPolling++;let e=this;return this._threadPool.submit((async function(){try{if(await e._wallet.isClosed())return void e._numPolling--;if(void 0===e._prevHeight)return e._prevHeight=await e._wallet.getHeight(),e._prevLockedTxs=await e._wallet.getTxs((new P).setIsLocked(!0)),e._prevBalances=await e._wallet._getBalances(),void e._numPolling--;let t=await e._wallet.getHeight();if(e._prevHeight!==t){for(let r=e._prevHeight;r0)for(let t of e.getOutputs())for(let e of this._wallet.getListeners())await e.onOutputReceived(t);else{let t=[];for(let r of e.getIncomingTransfers())t.push((new j).setAccountIndex(r.getAccountIndex()).setSubaddressIndex(r.getSubaddressIndex()).setAmount(r.getAmount()).setTx(e));e.setOutputs(t);for(let t of this._wallet.getListeners())for(let r of e.getOutputs())await t.onOutputReceived(r)}}_getTx(e,t){for(let r of e)if(t===r.getHash())return r}async _checkForChangedBalances(){let e=await this._wallet._getBalances();if(0!==e[0].compare(this._prevBalances[0])||0!==e[1].compare(this._prevBalances[1])){this._prevBalances=e;for(let t of await this._wallet.getListeners())await t.onBalancesChanged(e[0],e[1]);return!0}return!1}}W.DEFAULT_SYNC_PERIOD_IN_MS=2e4,e.exports=W},28753:(e,t,r)=>{const i=r(69282),n=r(63055).BigInteger,a=r(44769);e.exports=class{constructor(e,t,r,i,o){if("object"==typeof e){if(this.state=e,void 0===this.state.balance||this.state.balance instanceof n||(this.state.balance=n.parse(this.state.balance)),void 0===this.state.unlockedBalance||this.state.unlockedBalance instanceof n||(this.state.unlockedBalance=n.parse(this.state.unlockedBalance)),this.state.subaddresses)for(let e=0;e{e.exports=class{constructor(e,t,r){this.tag=e,this.label=t,this.accountIndices=r}getTag(){return this.tag}setTag(e){return this.tag=e,this}getLabel(){return this.label}setLabel(e){return this.label=e,this}getAccountIndices(){return this.accountIndices}setAccountIndices(e){return this.accoutIndices=e,this}}},30947:e=>{e.exports=class{constructor(e){this.state=Object.assign({},e)}toJson(){return Object.assign({},this.state)}getIndex(){return this.state.index}setIndex(e){return this.state.index=e,this}getAddress(){return this.state.address}setAddress(e){return this.state.address=e,this}getDescription(){return this.state.description}setDescription(e){return this.state.description=e,this}getPaymentId(){return this.state.paymentId}setPaymentId(e){return this.state.paymentId=e,this}}},88535:e=>{e.exports=class{constructor(e){this.state=Object.assign({},e)}isGood(){return this.state.isGood}setIsGood(e){return this.state.isGood=e,this}}},47766:(e,t,r)=>{const i=r(63055).BigInteger,n=r(88535);e.exports=class extends n{constructor(e){super(e),void 0===this.state.totalAmount||this.state.totalAmount instanceof i||(this.state.totalAmount=i.parse(this.state.totalAmount)),void 0===this.state.unconfirmedSpentAmount||this.state.unconfirmedSpentAmount instanceof i||(this.state.unconfirmedSpentAmount=i.parse(this.state.unconfirmedSpentAmount))}toJson(){let e=Object.assign({},this.state);return this.getTotalAmount()&&(e.totalAmount=this.getTotalAmount().toString()),this.getUnconfirmedSpentAmount()&&(e.unconfirmedSpentAmount=this.getUnconfirmedSpentAmount().toString()),e}getTotalAmount(){return this.state.totalAmount}setTotalAmount(e){return this.state.totalAmount=e,this}getUnconfirmedSpentAmount(){return this.state.unconfirmedSpentAmount}setUnconfirmedSpentAmount(e){return this.state.unconfirmedSpentAmount=e,this}}},35404:(e,t,r)=>{const i=r(88535),n=r(63055).BigInteger;e.exports=class extends i{constructor(e){super(e),void 0===this.state.receivedAmount||this.state.receivedAmount instanceof n||(this.state.receivedAmount=n.parse(this.state.receivedAmount))}toJson(){let e=Object.assign({},this.state);return this.getReceivedAmount()&&(e.receivedAmount=this.getReceivedAmount().toString()),e}inTxPool(){return this.state.inTxPool}setInTxPool(e){return this.state.inTxPool=e,this}getNumConfirmations(){return this.state.numConfirmations}setNumConfirmations(e){return this.state.numConfirmations=e,this}getReceivedAmount(){return this.state.receivedAmount}setReceivedAmount(e){return this.state.receivedAmount=e,this}}},39407:(e,t,r)=>{const i=r(63055).BigInteger,n=r(93444),a=r(91307);class o{constructor(e,t){if(e)if(e instanceof o)this.state=e.toJson();else if("object"==typeof e)this.state=Object.assign({},e),"number"==typeof this.state.amount&&(this.state.amount=i.parse(this.state.amount));else{if("string"!=typeof e)throw new a("stateOrAddress must be a MoneroDestination, JavaScript object, or hex string");this.state={},this.setAddress(e)}else this.state={};t&&(this.state.amount=t),this.setAmount(this.state.amount)}getAddress(){return this.state.address}setAddress(e){return this.state.address=e,this}getAmount(){return this.state.amount}setAmount(e){if(void 0!==e&&!(this.state.amount instanceof i)){if("number"==typeof e)throw new a("Destination amount must be BigInteger or string");try{e=i.parse(e)}catch(t){throw new a("Invalid destination amount: "+e)}}return this.state.amount=e,this}copy(){return new o(this)}toJson(){let e=Object.assign({},this.state);return this.getAmount()&&(e.amount=this.getAmount().toString()),e}toString(e=0){let t=n.kvLine("Address",this.getAddress(),e);return t+=n.kvLine("Amount",this.getAmount()?this.getAmount().toString():void 0,e),t.slice(0,t.length-1)}}e.exports=o},31243:(e,t,r)=>{const i=r(69282),n=r(93444),a=r(52387);class o extends a{constructor(e){super(e)}isIncoming(){return!0}getSubaddressIndex(){return this.state.subaddressIndex}setSubaddressIndex(e){return this.state.subaddressIndex=e,this}getAddress(){return this.state.address}setAddress(e){return this.state.address=e,this}getNumSuggestedConfirmations(){return this.state.numSuggestedConfirmations}setNumSuggestedConfirmations(e){return this.state.numSuggestedConfirmations=e,this}copy(){return new o(this.toJson())}merge(e){return super.merge(e),i(e instanceof o),this===e||(this.setSubaddressIndex(n.reconcile(this.getSubaddressIndex(),e.getSubaddressIndex())),this.setAddress(n.reconcile(this.getAddress(),e.getAddress())),this.setNumSuggestedConfirmations(n.reconcile(this.getNumSuggestedConfirmations(),e.getNumSuggestedConfirmations(),{resolveMax:!1}))),this}toString(){return this.toString(0)}toString(e){let t=super.toString(e)+"\n";return t+=n.kvLine("Subaddress index",this.getSubaddressIndex(),e),t+=n.kvLine("Address",this.getAddress(),e),t+=n.kvLine("Num suggested confirmations",this.getNumSuggestedConfirmations(),e),t.slice(0,t.length-1)}}e.exports=o},64472:e=>{e.exports=class{constructor(e){this.state=Object.assign({},e)}toJson(){return Object.assign({},this.state)}getStandardAddress(){return this.state.standardAddress}setStandardAddress(e){return this.state.standardAddress=e,this}getPaymentId(){return this.state.paymentId}setPaymentId(e){return this.state.paymentId=e,this}getIntegratedAddress(){return this.state.integratedAddress}setIntegratedAddress(e){return this.state.integratedAddress=e,this}toString(){return this.state.integratedAddress}}},34293:(e,t,r)=>{const i=r(63055).BigInteger;e.exports=class{constructor(e){void 0===(e=Object.assign({},e)).spentAmount||e.spentAmount instanceof i||(e.spentAmount=i.parse(e.spentAmount)),void 0===e.unspentAmount||e.unspentAmount instanceof i||(e.unspentAmount=i.parse(e.unspentAmount)),this.state=e}toJson(){let e=Object.assign({},this.state);return this.getSpentAmount()&&(e.spentAmount=this.getSpentAmount().toString()),this.getUnspentAmount()&&(e.unspentAmount=this.getUnspentAmount().toString()),e}getHeight(){return this.state.height}setHeight(e){return this.state.height=e,this}getSpentAmount(){return this.state.spentAmount}setSpentAmount(e){return this.state.spentAmount=e,this}getUnspentAmount(){return this.state.unspentAmount}setUnspentAmount(e){return this.state.unspentAmount=e,this}}},57773:e=>{e.exports=class{constructor(e,t,r,i){"boolean"==typeof e?(this.state={},this.state.isGood=e,this.state.isOld=t,this.state.signatureType=r,this.state.version=i):this.state=e}toJson(){return Object.assign({},this.state)}isGood(){return this.state.isGood}setIsGood(e){return this.state.isGood=e,this}isOld(){return this.state.isOld}setIsOld(e){return this.state.isOld=e,this}getSignatureType(){return this.state.signatureType}setSignatureType(e){return this.state.signatureType=e,this}getVersion(){return this.state.version}setVersion(e){return this.state.version=e,this}}},64232:e=>{class t{}t.SIGN_WITH_SPEND_KEY=0,t.SIGN_WITH_VIEW_KEY=1,e.exports=t},26749:e=>{e.exports=class{constructor(e){this.state=Object.assign({},e)}toJson(){return Object.assign({},this.state)}isMultisig(){return this.state.isMultisig}setIsMultisig(e){return this.state.isMultisig=e,this}isReady(){return this.state.isReady}setIsReady(e){this.state.isReady=e}getThreshold(){return this.state.threshold}setThreshold(e){this.state.threshold=e}getNumParticipants(){return this.state.numParticipants}setNumParticipants(e){this.state.numParticipants=e}}},50957:e=>{e.exports=class{constructor(e){this.state=Object.assign({},e)}toJson(){return Object.assign({},this.state)}getAddress(){return this.state.address}setAddress(e){return this.state.address=e,this}getMultisigHex(){return this.state.multisigHex}setMultisigHex(e){return this.state.multisigHex=e,this}}},63413:e=>{e.exports=class{constructor(e){this.state=Object.assign({},e)}toJson(){return Object.assign({},this.state)}getSignedMultisigTxHex(){return this.state.signedMultisigTxHex}setSignedMultisigTxHex(e){this.state.signedMultisigTxHex=e}getTxHashes(){return this.state.txHashes}setTxHashes(e){this.state.txHashes=e}}},69535:(e,t,r)=>{const i=r(69282),n=r(93444),a=r(39407),o=r(52387);class s extends o{constructor(e){if(super(e),(e=this.state).destinations)for(let t=0;t{const i=r(63055).BigInteger,n=r(91307),a=r(69459);class o extends a{constructor(e){super(e);const t=r(31857);if(void 0===this.state.minAmount||this.state.minAmount instanceof i||(this.state.minAmount=i.parse(this.state.minAmount)),void 0===this.state.maxAmount||this.state.maxAmount instanceof i||(this.state.maxAmount=i.parse(this.state.maxAmount)),!this.state.txQuery||this.state.txQuery instanceof t||(this.state.txQuery=new t(this.state.txQuery)),this.state.txQuery&&this.state.txQuery.setOutputQuery(this),void 0!==this.state.isLocked)throw new n("isLocked must be part of tx query, not output query")}copy(){return new o(this)}toJson(){let e=Object.assign({},this.state,super.toJson());return this.getMinAmount()&&(e.minAmount=this.getMinAmount().toString()),this.getMaxAmount()&&(e.maxAmount=this.getMaxAmount().toString()),delete e.txQuery,e}getMinAmount(){return this.state.minAmount}setMinAmount(e){return this.state.minAmount=e,this}getMaxAmount(){return this.state.maxAmount}setMaxAmount(e){return this.state.maxAmount=e,this}getTxQuery(){return this.state.txQuery}setTxQuery(e){return this.state.txQuery=e,e&&(e.state.outputQuery=this),this}getSubaddressIndices(){return this.state.subaddressIndices}setSubaddressIndices(e){return this.state.subaddressIndices=e,this}meetsCriteria(e,t){if(!(e instanceof a))throw new Error("Output not given to MoneroOutputQuery.meetsCriteria(output)");if(void 0===t&&(t=!0),void 0!==this.getAccountIndex()&&this.getAccountIndex()!==e.getAccountIndex())return!1;if(void 0!==this.getSubaddressIndex()&&this.getSubaddressIndex()!==e.getSubaddressIndex())return!1;if(void 0!==this.getAmount()&&0!==this.getAmount().compare(e.getAmount()))return!1;if(void 0!==this.isSpent()&&this.isSpent()!==e.isSpent())return!1;if(void 0!==this.isFrozen()&&this.isFrozen()!==e.isFrozen())return!1;if(void 0!==this.getKeyImage()){if(void 0===e.getKeyImage())return!1;if(void 0!==this.getKeyImage().getHex()&&this.getKeyImage().getHex()!==e.getKeyImage().getHex())return!1;if(void 0!==this.getKeyImage().getSignature()&&this.getKeyImage().getSignature()!==e.getKeyImage().getSignature())return!1}return!(void 0!==this.getSubaddressIndices()&&!this.getSubaddressIndices().includes(e.getSubaddressIndex())||this.getTxQuery()&&!this.getTxQuery().meetsCriteria(e.getTx(),!1)||void 0!==this.getMinAmount()&&(void 0===e.getAmount()||e.getAmount().compare(this.getMinAmount())<0)||void 0!==this.getMaxAmount()&&(void 0===e.getAmount()||e.getAmount().compare(this.getMaxAmount())>0))}}o._EMPTY_OUTPUT=new a,e.exports=o},69459:(e,t,r)=>{const i=r(69282),n=r(93444),a=r(42299);class o extends a{constructor(e){super(e)}getAccountIndex(){return this.state.accountIndex}setAccountIndex(e){return this.state.accountIndex=e,this}getSubaddressIndex(){return this.state.subaddressIndex}setSubaddressIndex(e){return this.state.subaddressIndex=e,this}isSpent(){return this.state.isSpent}setIsSpent(e){return this.state.isSpent=e,this}isFrozen(){return this.state.isFrozen}setIsFrozen(e){return this.state.isFrozen=e,this}isLocked(){if(void 0!==this.getTx())return this.getTx().isLocked()}copy(){return new o(this.toJson())}toJson(){let e=Object.assign({},this.state,super.toJson());return delete e.tx,e}merge(e){if(i(e instanceof o),this!==e)return super.merge(e),this.setAccountIndex(n.reconcile(this.getAccountIndex(),e.getAccountIndex())),this.setSubaddressIndex(n.reconcile(this.getSubaddressIndex(),e.getSubaddressIndex())),this.setIsSpent(n.reconcile(this.isSpent(),e.isSpent(),{resolveTrue:!0})),this.setIsFrozen(n.reconcile(this.isFrozen(),e.isFrozen())),this}toString(e){let t=super.toString(e)+"\n";return t+=n.kvLine("Account index",this.getAccountIndex(),e),t+=n.kvLine("Subaddress index",this.getSubaddressIndex(),e),t+=n.kvLine("Is spent",this.isSpent(),e),t+=n.kvLine("Is frozen",this.isFrozen(),e),t.slice(0,t.length-1)}}e.exports=o},44769:(e,t,r)=>{const i=r(63055).BigInteger,n=r(93444),a=r(69282);e.exports=class{constructor(e,t,r){void 0===e||"string"==typeof e?(this.state={},this.setAddress(e),this.setAccountIndex(t),this.setIndex(r)):(this.state=e,a(void 0===t&&void 0===r,"Can construct MoneroSubaddress with object or params but not both"),void 0===this.state.balance||this.state.balance instanceof i||(this.state.balance=i.parse(this.state.balance)),void 0===this.state.unlockedBalance||this.state.unlockedBalance instanceof i||(this.state.unlockedBalance=i.parse(this.state.unlockedBalance)))}toJson(){let e=Object.assign({},this.state);return e.balance&&(e.balance=e.balance.toString()),e.unlockedBalance&&(e.unlockedBalance=e.unlockedBalance.toString()),e}getAccountIndex(){return this.state.accountIndex}setAccountIndex(e){return this.state.accountIndex=e,this}getIndex(){return this.state.index}setIndex(e){return this.state.index=e,this}getAddress(){return this.state.address}setAddress(e){return this.state.address=e,this}getLabel(){return this.state.label}setLabel(e){return this.state.label=e,this}getBalance(){return this.state.balance}setBalance(e){return this.state.balance=e,this}getUnlockedBalance(){return this.state.unlockedBalance}setUnlockedBalance(e){return this.state.unlockedBalance=e,this}getNumUnspentOutputs(){return this.state.numUnspentOutputs}setNumUnspentOutputs(e){return this.state.numUnspentOutputs=e,this}isUsed(){return this.state.isUsed}setIsUsed(e){return this.state.isUsed=e,this}getNumBlocksToUnlock(){return this.state.numBlocksToUnlock}setNumBlocksToUnlock(e){return this.state.numBlocksToUnlock=e,this}toString(e){let t="";return t+=n.kvLine("Account index",this.getAccountIndex(),e),t+=n.kvLine("Subaddress index",this.getIndex(),e),t+=n.kvLine("Address",this.getAddress(),e),t+=n.kvLine("Label",this.getLabel(),e),t+=n.kvLine("Balance",this.getBalance(),e),t+=n.kvLine("Unlocked balance",this.getUnlockedBalance(),e),t+=n.kvLine("Num unspent outputs",this.getNumUnspentOutputs(),e),t+=n.kvLine("Is used",this.isUsed(),e),t+=n.kvLine("Num blocks to unlock",this.getNumBlocksToUnlock(),e),t.slice(0,t.length-1)}}},17118:e=>{e.exports=class{constructor(e,t){this.setNumBlocksFetched(e),this.setReceivedMoney(t)}getNumBlocksFetched(){return this.numBlocksFetched}setNumBlocksFetched(e){return this.numBlocksFetched=e,this}getReceivedMoney(){return this.receivedMoney}setReceivedMoney(e){return this.receivedMoney=e,this}}},52387:(e,t,r)=>{const i=r(69282),n=r(63055).BigInteger,a=r(93444);class o{constructor(e){if(e)if(e instanceof o)e=e.toJson();else{if("object"!=typeof e)throw new MoneroError("state must be a MoneroTransfer or JavaScript object");e=Object.assign({},e)}else e={};this.state=e,void 0===e.amount||e.amount instanceof n||(e.amount=n.parse(e.amount)),this._validate()}copy(){return new o(this)}toJson(){let e=Object.assign({},this.state);return this.getAmount()&&(e.amount=this.getAmount().toString()),delete e.tx,e}getTx(){return this.state.tx}setTx(e){return this.state.tx=e,this}isOutgoing(){let e=this.isIncoming();return i("boolean"==typeof e),!e}isIncoming(){throw new Error("Subclass must implement")}getAccountIndex(){return this.state.accountIndex}setAccountIndex(e){return this.state.accountIndex=e,this._validate(),this}getAmount(){return this.state.amount}setAmount(e){return this.state.amount=e,this}merge(e){return i(e instanceof o),this===e?this:this.getTx()!==e.getTx()?(this.getTx().merge(e.getTx()),this):(this.setAccountIndex(a.reconcile(this.getAccountIndex(),e.getAccountIndex())),void 0===this.getAmount()||void 0===e.getAmount()||0===this.getAmount().compare(e.getAmount())||0!==this.getAmount().compare(n.parse("0"))&&0!==e.getAmount().compare(n.parse("0"))?this.setAmount(a.reconcile(this.getAmount(),e.getAmount())):console.warn("monero-project returning transfers with 0 amount/numSuggestedConfirmations"),this)}toString(e=0){let t="";return t+=a.kvLine("Is incoming",this.isIncoming(),e),t+=a.kvLine("Account index",this.getAccountIndex(),e),t+=a.kvLine("Amount",this.getAmount()?this.getAmount().toString():void 0,e),""===t?t:t.slice(0,t.length-1)}_validate(){if(void 0!==this.getAccountIndex()&&this.getAccountIndex()<0)throw new MoneroError("Account index must be >= 0")}}e.exports=o},59692:(e,t,r)=>{const i=r(31243),n=r(69535),a=r(52387),o=r(91307);class s extends a{constructor(e){super(e);const t=r(31857);!this.state.txQuery||this.state.txQuery instanceof t||(this.state.txQuery=new t(this.state.txQuery)),this.state.txQuery&&this.state.txQuery.setTransferQuery(this),void 0!==this.state.isOutgoing&&(this.state.isIncoming=!this.state.isOutgoing),this._validate()}copy(){return new s(this)}toJson(){let e=Object.assign({},this.state,super.toJson());return delete e.txQuery,e}getTxQuery(){return this.state.txQuery}setTxQuery(e){return this.state.txQuery=e,e&&(e.state.transferQuery=this),this}isIncoming(){return this.state.isIncoming}setIsIncoming(e){return this.state.isIncoming=e,this}isOutgoing(){return void 0===this.state.isIncoming?void 0:!this.state.isIncoming}setIsOutgoing(e){return this.state.isIncoming=void 0===e?void 0:!e,this}getAddress(){return this.state.address}setAddress(e){return this.state.address=e,this}getAddresses(){return this.state.addresses}setAddresses(e){return this.state.addresses=e,this}getSubaddressIndex(){return this.state.subaddressIndex}setSubaddressIndex(e){return this.state.subaddressIndex=e,this._validate(),this}getSubaddressIndices(){return this.state.subaddressIndices}setSubaddressIndices(e){return this.state.subaddressIndices=e,this._validate(),this}getDestinations(){return this.state.destinations}setDestinations(e){return this.state.destinations=e,this}hasDestinations(){return this.state.hasDestinations}setHasDestinations(e){return this.state.hasDestinations=e,this}setIsLocked(e){return void 0===this.state.txQuery&&(this.state.txQuery=new MoneroTxQuery),this.state.txQuery.setIsLocked(e),this}meetsCriteria(e,t){if(!(e instanceof a))throw new Error("Transfer not given to MoneroTransferQuery.meetsCriteria(transfer)");if(void 0===t&&(t=!0),void 0!==this.isIncoming()&&this.isIncoming()!==e.isIncoming())return!1;if(void 0!==this.isOutgoing()&&this.isOutgoing()!==e.isOutgoing())return!1;if(void 0!==this.getAmount()&&0!==this.getAmount().compare(e.getAmount()))return!1;if(void 0!==this.getAccountIndex()&&this.getAccountIndex()!==e.getAccountIndex())return!1;if(e instanceof i){if(this.hasDestinations())return!1;if(void 0!==this.getAddress()&&this.getAddress()!==e.getAddress())return!1;if(void 0!==this.getAddresses()&&!this.getAddresses().includes(e.getAddress()))return!1;if(void 0!==this.getSubaddressIndex()&&this.getSubaddressIndex()!==e.getSubaddressIndex())return!1;if(void 0!==this.getSubaddressIndices()&&!this.getSubaddressIndices().includes(e.getSubaddressIndex()))return!1}else{if(!(e instanceof n))throw new Error("Transfer must be MoneroIncomingTransfer or MoneroOutgoingTransfer");if(void 0!==this.getAddress()&&(void 0===e.getAddresses()||!e.getAddresses().includes(this.getAddress())))return!1;if(void 0!==this.getAddresses()){if(!e.getAddresses())return!1;if(!this.getAddresses().some((t=>e.getAddresses().includes(t))))return!1}if(void 0!==this.getSubaddressIndex()&&(void 0===e.getSubaddressIndices()||!e.getSubaddressIndices().includes(this.getSubaddressIndex())))return!1;if(void 0!==this.getSubaddressIndices()){if(!e.getSubaddressIndices())return!1;if(!this.getSubaddressIndices().some((t=>e.getSubaddressIndices().includes(t))))return!1}if(void 0!==this.hasDestinations()){if(this.hasDestinations()&&void 0===e.getDestinations())return!1;if(!this.hasDestinations()&&void 0!==e.getDestinations())return!1}}return!(t&&void 0!==this.getTxQuery()&&!this.getTxQuery().meetsCriteria(e.getTx()))}_validate(){if(void 0!==this.getSubaddressIndex()&&this.getSubaddressIndex()<0)throw new o("Subaddress index must be >= 0");if(void 0!==this.getSubaddressIndices())for(let e of this.getSubaddressIndices())if(e<0)throw new o("Subaddress indices must be >= 0")}}e.exports=s},36721:(e,t,r)=>{const i=r(69282),n=r(63055).BigInteger,a=r(93444),o=r(39407),s=r(91307);class u{constructor(e,t){if(arguments.length>2)throw new s("MoneroTxConfig can be constructed with only two parameters but was given "+arguments.length);if(e)if(e instanceof u)this.state=e.toJson();else{if("object"!=typeof e)throw new s("Invalid argument given to MoneroTxConfig: "+typeof e);this.state=Object.assign({},e),t&&("number"==typeof this.state.amount&&(this.state.amount=n.parse(this.state.amount)),"number"==typeof this.state.unlockTime&&(this.state.unlockTime=n.parse(this.state.unlockTime)),"number"==typeof this.state.belowAmount&&(this.state.belowAmount=n.parse(this.state.belowAmount)));for(let t of Object.keys(e))if(!a.arrayContains(u.SUPPORTED_FIELDS,t))throw new s("Unsupported field in MoneroTxConfig: '"+t+"'")}else this.state={};void 0===this.state.fee||this.state.fee instanceof n||(this.state.fee=n.parse(this.state.fee)),void 0===this.state.unlockTime||this.state.unlockTime instanceof n||(this.state.unlockTime=n.parse(this.state.unlockTime)),void 0===this.state.belowAmount||this.state.belowAmount instanceof n||(this.state.belowAmount=n.parse(this.state.belowAmount)),this.state.destinations&&(i(void 0===this.state.address&&void 0===this.state.amount,"Tx configuration may specify destinations or an address/amount but not both"),this.setDestinations(this.state.destinations.map((e=>e instanceof o?e:new o(e))))),(this.state.address||this.state.amount)&&(i(!this.state.destinations,"Tx configuration may specify destinations or an address/amount but not both"),this.setAddress(this.state.address),this.setAmount(this.state.amount),delete this.state.address,delete this.state.amount),void 0!==this.state.subaddressIndex&&(this.setSubaddressIndices([this.state.subaddressIndex]),delete this.state.subaddressIndex)}copy(){return new u(this)}toJson(){let e=Object.assign({},this.state);if(this.getDestinations()){e.destinations=[];for(let t of this.getDestinations())e.destinations.push(t.toJson())}return this.getFee()&&(e.fee=this.getFee().toString()),this.getUnlockTime()&&(e.unlockTime=this.getUnlockTime().toString()),this.getBelowAmount()&&(e.belowAmount=this.getBelowAmount().toString()),e}setAddress(e){if(void 0!==this.state.destinations&&this.state.destinations.length>1)throw new s("Cannot set address because MoneroTxConfig already has multiple destinations");return void 0===this.state.destinations||0===this.state.destinations.length?this.addDestination(new o(e)):this.state.destinations[0].setAddress(e),this}getAddress(){if(void 0===this.state.destinations||1!==this.state.destinations.length)throw new s("Cannot get address because MoneroTxConfig does not have exactly one destination");return this.state.destinations[0].getAddress()}setAmount(e){if(void 0!==e&&!(this.state.amount instanceof n)){if("number"==typeof e)throw new s("Destination amount must be BigInteger or string");try{e=n.parse(e)}catch(t){throw new s("Invalid destination amount: "+e)}}if(void 0!==this.state.destinations&&this.state.destinations.length>1)throw new s("Cannot set amount because MoneroTxConfig already has multiple destinations");return void 0===this.state.destinations||0===this.state.destinations.length?this.addDestination(new o(void 0,e)):this.state.destinations[0].setAmount(e),this}getAmount(){if(void 0===this.state.destinations||1!==this.state.destinations.length)throw new s("Cannot get amount because MoneroTxConfig does not have exactly one destination");return this.state.destinations[0].getAmount()}addDestination(e,t){return"string"==typeof e?this.addDestination(new o(e,t)):(i(e instanceof o),void 0===this.state.destinations&&(this.state.destinations=[]),this.state.destinations.push(e),this)}getDestinations(){return this.state.destinations}setDestinations(e){return arguments.length>1&&(e=Array.from(arguments)),this.state.destinations=e,this}setDestination(e){return this.setDestinations(e?[e]:e)}getSubtractFeeFrom(){return this.state.subtractFeeFrom}setSubtractFeeFrom(e){return arguments.length>1&&(e=Array.from(arguments)),this.state.subtractFeeFrom=e,this}getPaymentId(){return this.state.paymentId}setPaymentId(e){return this.state.paymentId=e,this}getPriority(){return this.state.priority}setPriority(e){return this.state.priority=e,this}getFee(){return this.state.fee}setFee(e){return this.state.fee=e,this}getAccountIndex(){return this.state.accountIndex}setAccountIndex(e){return this.state.accountIndex=e,this}setSubaddressIndex(e){return this.setSubaddressIndices([e]),this}getSubaddressIndices(){return this.state.subaddressIndices}setSubaddressIndices(e){return arguments.length>1&&(e=Array.from(arguments)),this.state.subaddressIndices=e,this}getUnlockTime(){return this.state.unlockTime}setUnlockTime(e){if(void 0!==e&&("number"==typeof e&&(e=""+e),!(e instanceof n)))try{e=n.parse(e)}catch(t){throw new s("Invalid unlock time: "+e)}return this.state.unlockTime=e,this}getRelay(){return this.state.relay}setRelay(e){return this.state.relay=e,this}getCanSplit(){return this.state.canSplit}setCanSplit(e){return this.state.canSplit=e,this}getNote(){return this.state.note}setNote(e){return this.state.note=e,this}getRecipientName(){return this.state.recipientName}setRecipientName(e){return this.state.recipientName=e,this}getBelowAmount(){return this.state.belowAmount}setBelowAmount(e){return this.state.belowAmount=e,this}getSweepEachSubaddress(){return this.state.sweepEachSubaddress}setSweepEachSubaddress(e){return this.state.sweepEachSubaddress=e,this}getKeyImage(){return this.state.keyImage}setKeyImage(e){return this.state.keyImage=e,this}}u.SUPPORTED_FIELDS=["address","amount","accountIndex","subaddressIndex","subaddressIndices","relay","priority","destinations","subtractFeeFrom","paymentId","unlockTime","note","recipientName","canSplit","belowAmount","sweepEachSubaddress","keyImage"],e.exports=u},57589:e=>{class t{}t.DEFAULT=0,t.UNIMPORTANT=1,t.NORMAL=2,t.ELEVATED=3,e.exports=t},31857:(e,t,r)=>{const i=r(69282),n=r(39749),a=r(59692),o=r(18489);class s extends o{constructor(e){super(e),!this.state.transferQuery||this.state.transferQuery instanceof a||(this.state.transferQuery=new a(this.state.transferQuery)),!this.state.inputQuery||this.state.inputQuery instanceof n||(this.state.inputQuery=new n(this.state.inputQuery)),!this.state.outputQuery||this.state.outputQuery instanceof n||(this.state.outputQuery=new n(this.state.outputQuery)),this.state.transferQuery&&this.state.transferQuery.setTxQuery(this),this.state.inputQuery&&this.state.inputQuery.setTxQuery(this),this.state.outputQuery&&this.state.outputQuery.setTxQuery(this),this.state.hash&&(this.setHashes([this.state.hash]),delete this.state.hash)}copy(){return new s(this)}toJson(){let e=Object.assign({},this.state,super.toJson());return this.getTransferQuery()&&(e.transferQuery=this.getTransferQuery().toJson()),this.getInputQuery()&&(e.inputQuery=this.getInputQuery().toJson()),this.getOutputQuery()&&(e.outputQuery=this.getOutputQuery().toJson()),delete e.block,e}isIncoming(){return this.state.isIncoming}setIsIncoming(e){return this.state.isIncoming=e,this}isOutgoing(){return this.state.isOutgoing}setIsOutgoing(e){return this.state.isOutgoing=e,this}getHashes(){return this.state.hashes}setHashes(e){return this.state.hashes=e,this}setHash(e){return void 0===e?this.setHashes(void 0):(i("string"==typeof e),this.setHashes([e]))}hasPaymentId(){return this.state.hasPaymentId}setHasPaymentId(){return this.state.hasPaymentId=hasPaymentId,this}getPaymentIds(){return this.state.paymentIds}setPaymentIds(e){return this.state.paymentIds=e,this}setPaymentId(e){return void 0===e?this.setPaymentIds(void 0):(i("string"==typeof e),this.setPaymentIds([e]))}getHeight(){return this.state.height}setHeight(e){return this.state.height=e,this}getMinHeight(){return this.state.minHeight}setMinHeight(e){return this.state.minHeight=e,this}getMaxHeight(){return this.state.maxHeight}setMaxHeight(e){return this.state.maxHeight=e,this}getIncludeOutputs(){return this.state.includeOutputs}setIncludeOutputs(e){return this.state.includeOutputs=e,this}getTransferQuery(){return this.state.transferQuery}setTransferQuery(e){return this.state.transferQuery=e,e&&(e.state.txQuery=this),this}getInputQuery(){return this.state.inputQuery}setInputQuery(e){return this.state.inputQuery=e,e&&(e.state.txQuery=this),this}getOutputQuery(){return this.state.outputQuery}setOutputQuery(e){return this.state.outputQuery=e,e&&(e.state.txQuery=this),this}meetsCriteria(e,t){if(!(e instanceof o))throw new Error("Tx not given to MoneroTxQuery.meetsCriteria(tx)");if(void 0===t&&(t=!0),void 0!==this.getHash()&&this.getHash()!==e.getHash())return!1;if(void 0!==this.getPaymentId()&&this.getPaymentId()!==e.getPaymentId())return!1;if(void 0!==this.isConfirmed()&&this.isConfirmed()!==e.isConfirmed())return!1;if(void 0!==this.inTxPool()&&this.inTxPool()!==e.inTxPool())return!1;if(void 0!==this.getRelay()&&this.getRelay()!==e.getRelay())return!1;if(void 0!==this.isRelayed()&&this.isRelayed()!==e.isRelayed())return!1;if(void 0!==this.isFailed()&&this.isFailed()!==e.isFailed())return!1;if(void 0!==this.isMinerTx()&&this.isMinerTx()!==e.isMinerTx())return!1;if(void 0!==this.isLocked()&&this.isLocked()!==e.isLocked())return!1;if(void 0!==this.hasPaymentId()){if(this.hasPaymentId()&&void 0===e.getPaymentId())return!1;if(!this.hasPaymentId()&&void 0!==e.getPaymentId())return!1}if(void 0!==this.isIncoming()){if(this.isIncoming()&&!e.isIncoming())return!1;if(!this.isIncoming()&&e.isIncoming())return!1}if(void 0!==this.isOutgoing()){if(this.isOutgoing()&&!e.isOutgoing())return!1;if(!this.isOutgoing()&&e.isOutgoing())return!1}let r=void 0===e.getBlock()?void 0:e.getBlock().getHeight();if(void 0!==this.getHashes()&&!this.getHashes().includes(e.getHash()))return!1;if(void 0!==this.getPaymentIds()&&!this.getPaymentIds().includes(e.getPaymentId()))return!1;if(void 0!==this.getHeight()&&(void 0===r||r!==this.getHeight()))return!1;if(void 0!==this.getMinHeight()&&void 0!==r&&rthis.getMaxHeight()))return!1;if(!t)return!0;if(this.getTransferQuery()){let t=!1;if(e.getOutgoingTransfer()&&this.getTransferQuery().meetsCriteria(e.getOutgoingTransfer(),!1))t=!0;else if(e.getIncomingTransfers())for(let r of e.getIncomingTransfers())if(this.getTransferQuery().meetsCriteria(r,!1)){t=!0;break}if(!t)return!1}if(void 0!==this.getInputQuery()){if(void 0===e.getInputs()||0===e.getInputs().length)return!1;let t=!1;for(let r of e.getInputs())if(this.getInputQuery().meetsCriteria(r,!1)){t=!0;break}if(!t)return!1}if(void 0!==this.getOutputQuery()){if(void 0===e.getOutputs()||0===e.getOutputs().length)return!1;let t=!1;for(let r of e.getOutputs())if(this.getOutputQuery().meetsCriteria(r,!1)){t=!0;break}if(!t)return!1}return!0}}e.exports=s},61527:(e,t,r)=>{const i=r(69282),n=r(93444),a=r(18489),o=r(58012);class s{constructor(e){if(e){if("object"!=typeof e)throw new MoneroError("state must be JavaScript object");e=Object.assign({},e)}else e={};if(this.state=e,e.txs)for(let t=0;t{const i=r(69282),n=r(63055).BigInteger,a=r(93444),o=r(31243),s=r(69535),u=r(69459),c=r(2624);class l extends c{constructor(e){if(super(e),e instanceof l&&e.getTxSet()&&this.setTxSet(e.getTxSet()),(e=this.state).incomingTransfers)for(let t=0;t{const i=r(93444),n=r(91307),a=r(79077),o=r(73717);class s{constructor(e){if(e)if(e instanceof s)e=e.toJson();else{if("object"!=typeof e)throw new n("config must be a MoneroWalletConfig or JavaScript object");e=Object.assign({},e)}else e={};this.config=e,this.setNetworkType(e.networkType),e.server?this.setServer(e.server):e.serverUri&&this.setServer({uri:e.serverUri,username:e.serverUsername,password:e.serverPassword,rejectUnauthorized:e.rejectUnauthorized}),this.setProxyToWorker(e.proxyToWorker),this.config.serverUri=void 0,this.config.serverUsername=void 0,this.config.serverPassword=void 0,this.config.rejectUnauthorized=void 0;for(let e of Object.keys(this.config))if(!i.arrayContains(s.SUPPORTED_FIELDS,e))throw new n("Unsupported field in MoneroWalletConfig: '"+e+"'")}copy(){return new s(this.toJson())}toJson(){let e=Object.assign({},this.config);return e.server&&(e.server=e.server.toJson()),e.fs=void 0,e}getPath(){return this.config.path}setPath(e){return this.config.path=e,this}getPassword(){return this.config.password}setPassword(e){return this.config.password=e,this}getNetworkType(){return this.config.networkType}setNetworkType(e){return this.config.networkType="string"==typeof e?a.parse(e):e,this}getServer(){return this.config.server}setServer(e){return!e||e instanceof o||(e=new o(e)),this.config.server=e,this.config.serverUsername=void 0===e?void 0:e.getUsername(),this.config.serverPassword=void 0===e?void 0:e.getPassword(),this}getServerUri(){return this.config.server?this.config.server.getUri():void 0}setServerUri(e){return this.config.server?this.config.server.setUri(e):this.setServer(new o(e)),this}getServerUsername(){return this.server?server.getUsername():void 0}setServerUsername(e){return this.config.serverUsername=e,this.config.serverUsername&&this.config.serverPassword&&this.config.server.setCredentials(this.config.serverUsername,this.config.serverPassword),this}getServerPassword(){return this.server?server.getPassword():void 0}setServerPassword(e){return this.config.serverPassword=e,this.config.serverUsername&&this.config.serverPassword&&this.config.server.setCredentials(this.config.serverUsername,this.config.serverPassword),this}getRejectUnauthorized(){return this.config.rejectUnauthorized}setRejectUnauthorized(e){return this.config.rejectUnauthorized=e,this}getSeed(){return this.config.seed}setSeed(e){return this.config.seed=e,this}getSeedOffset(){return this.config.seedOffset}setSeedOffset(e){return this.config.seedOffset=e,this}isMultisig(){return this.config.isMultisig}setIsMultisig(e){return this.config.isMultisig=e,this}getPrimaryAddress(){return this.config.primaryAddress}setPrimaryAddress(e){return this.config.primaryAddress=e,this}getPrivateViewKey(){return this.config.privateViewKey}setPrivateViewKey(e){return this.config.privateViewKey=e,this}getPrivateSpendKey(){return this.config.privateSpendKey}setPrivateSpendKey(e){return this.config.privateSpendKey=e,this}getRestoreHeight(){return this.config.restoreHeight}setRestoreHeight(e){return this.config.restoreHeight=e,this}getLanguage(){return this.config.language}setLanguage(e){return this.config.language=e,this}getSaveCurrent(){return this.config.saveCurrent}setSaveCurrent(e){return this.config.saveCurrent=e,this}getProxyToWorker(){return this.config.proxyToWorker}setProxyToWorker(e){return this.config.proxyToWorker=e,this.config.server&&this.config.server.setProxyToWorker(e),this}getFs(){return this.config.fs}setFs(e){return this.config.fs=e,this}getKeysData(){return this.config.keysData}setKeysData(e){return this.config.keysData=e,this}getCacheData(){return this.config.cacheData}setCacheData(e){return this.config.cacheData=e,this}getAccountLookahead(){return this.config.accountLookahead}setAccountLookahead(e){return this.config.accountLookahead=e,this}getSubaddressLookahead(){return this.config.subaddressLookahead}setSubaddressLookahead(e){return this.config.subaddressLookahead=e,this}}s.SUPPORTED_FIELDS=["path","password","networkType","server","serverUri","serverUsername","serverPassword","rejectUnauthorized","seed","seedOffset","isMultisig","primaryAddress","privateViewKey","privateSpendKey","restoreHeight","language","saveCurrent","proxyToWorker","fs","keysData","cacheData","accountLookahead","subaddressLookahead"],e.exports=s},63149:e=>{e.exports=class{async onSyncProgress(e,t,r,i,n){}async onNewBlock(e){}async onBalancesChanged(e,t){}async onOutputReceived(e){}async onOutputSpent(e){}}},79742:(e,t)=>{"use strict";t.byteLength=function(e){var t=u(e),r=t[0],i=t[1];return 3*(r+i)/4-i},t.toByteArray=function(e){var t,r,a=u(e),o=a[0],s=a[1],c=new n(function(e,t,r){return 3*(t+r)/4-r}(0,o,s)),l=0,h=s>0?o-4:o;for(r=0;r>16&255,c[l++]=t>>8&255,c[l++]=255&t;return 2===s&&(t=i[e.charCodeAt(r)]<<2|i[e.charCodeAt(r+1)]>>4,c[l++]=255&t),1===s&&(t=i[e.charCodeAt(r)]<<10|i[e.charCodeAt(r+1)]<<4|i[e.charCodeAt(r+2)]>>2,c[l++]=t>>8&255,c[l++]=255&t),c},t.fromByteArray=function(e){for(var t,i=e.length,n=i%3,a=[],o=16383,s=0,u=i-n;su?u:s+o));return 1===n?(t=e[i-1],a.push(r[t>>2]+r[t<<4&63]+"==")):2===n&&(t=(e[i-2]<<8)+e[i-1],a.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"=")),a.join("")};for(var r=[],i=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,s=a.length;o0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function c(e,t,i){for(var n,a,o=[],s=t;s>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);return o.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},62703:(e,t,r)=>{"use strict";var i=r(50780).lowlevel.crypto_hash,n=0,a=function(){this.S=[new Uint32Array([3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946]),new Uint32Array([1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055]),new Uint32Array([3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504]),new Uint32Array([976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462])],this.P=new Uint32Array([608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731])};function o(e,t,r){return(e[0][t[r+3]]+e[1][t[r+2]]^e[2][t[r+1]])+e[3][t[r]]}function s(e,t){var r,i=0;for(r=0;r<4;r++,n++)n>=t&&(n=0),i=i<<8|e[n];return i}function u(e,t,r){var i,n=new a,o=new Uint32Array(8),u=new Uint8Array([79,120,121,99,104,114,111,109,97,116,105,99,66,108,111,119,102,105,115,104,83,119,97,116,68,121,110,97,109,105,116,101]);for(n.expandstate(t,64,e,64),i=0;i<64;i++)n.expand0state(t,64),n.expand0state(e,64);for(i=0;i<8;i++)o[i]=s(u,u.byteLength);for(i=0;i<64;i++)n.enc(o,o.byteLength/8);for(i=0;i<8;i++)r[4*i+3]=o[i]>>>24,r[4*i+2]=o[i]>>>16,r[4*i+1]=o[i]>>>8,r[4*i+0]=o[i]}a.prototype.encipher=function(e,t){void 0===t&&(t=new Uint8Array(e.buffer),0!==e.byteOffset&&(t=t.subarray(e.byteOffset))),e[0]^=this.P[0];for(var r=1;r<16;r+=2)e[1]^=o(this.S,t,0)^this.P[r],e[0]^=o(this.S,t,4)^this.P[r+1];var i=e[0];e[0]=e[1]^this.P[17],e[1]=i},a.prototype.decipher=function(e){var t=new Uint8Array(e.buffer);0!==e.byteOffset&&(t=t.subarray(e.byteOffset)),e[0]^=this.P[17];for(var r=16;r>0;r-=2)e[1]^=o(this.S,t,0)^this.P[r],e[0]^=o(this.S,t,4)^this.P[r-1];var i=e[0];e[0]=e[1]^this.P[0],e[1]=i},a.prototype.expand0state=function(e,t){var r,i,a=new Uint32Array(2),o=new Uint8Array(a.buffer);for(r=0,n=0;r<18;r++)this.P[r]^=s(e,t);for(n=0,r=0;r<18;r+=2)this.encipher(a,o),this.P[r]=a[0],this.P[r+1]=a[1];for(r=0;r<4;r++)for(i=0;i<256;i+=2)this.encipher(a,o),this.S[r][i]=a[0],this.S[r][i+1]=a[1]},a.prototype.expandstate=function(e,t,r,i){var a,o,u=new Uint32Array(2);for(a=0,n=0;a<18;a++)this.P[a]^=s(r,i);for(a=0,n=0;a<18;a+=2)u[0]^=s(e,t),u[1]^=s(e,t),this.encipher(u),this.P[a]=u[0],this.P[a+1]=u[1];for(a=0;a<4;a++)for(o=0;o<256;o+=2)u[0]^=s(e,t),u[1]^=s(e,t),this.encipher(u),this.S[a][o]=u[0],this.S[a][o+1]=u[1];n=0},a.prototype.enc=function(e,t){for(var r=0;rv.byteLength*v.byteLength||n>1<<20)return-1;for(p=Math.floor((o+v.byteLength-1)/v.byteLength),h=Math.floor((o+p-1)/p),c=0;c0;f++){for(_[n+0]=f>>>24,_[n+1]=f>>>16,_[n+2]=f>>>8,_[n+3]=f,i(g,_,n+4),u(m,g,y),c=v.byteLength;c--;)v[c]=y[c];for(c=1;c=b);c++)a[d]=v[c];o-=c}return 0}}},96624:(e,t,r)=>{var i,n=r(34155);i=function(){return function e(t,r,i){function n(o,s){if(!r[o]){if(!t[o]){var u="function"==typeof _dereq_&&_dereq_;if(!s&&u)return u(o,!0);if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var l=r[o]={exports:{}};t[o][0].call(l.exports,(function(e){return n(t[o][1][e]||e)}),l,l.exports,e,t,r,i)}return r[o].exports}for(var a="function"==typeof _dereq_&&_dereq_,o=0;o0;)c(e)}function c(e){var t=e.shift();if("function"!=typeof t)t._settlePromises();else{var r=e.shift(),i=e.shift();t.call(r,i)}}s.prototype.setScheduler=function(e){var t=this._schedule;return this._schedule=e,this._customScheduler=!0,t},s.prototype.hasCustomScheduler=function(){return this._customScheduler},s.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},s.prototype.fatalError=function(e,t){t?(n.stderr.write("Fatal "+(e instanceof Error?e.stack:e)+"\n"),n.exit(2)):this.throwLater(e)},s.prototype.throwLater=function(e,t){if(1===arguments.length&&(t=e,e=function(){throw t}),"undefined"!=typeof setTimeout)setTimeout((function(){e(t)}),0);else try{this._schedule((function(){e(t)}))}catch(e){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},s.prototype.invokeLater=function(e,t,r){this._lateQueue.push(e,t,r),this._queueTick()},s.prototype.invoke=function(e,t,r){this._normalQueue.push(e,t,r),this._queueTick()},s.prototype.settlePromises=function(e){this._normalQueue._pushOne(e),this._queueTick()},s.prototype._drainQueues=function(){u(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,u(this._lateQueue)},s.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},s.prototype._reset=function(){this._isTickUsed=!1},t.exports=s,t.exports.firstLineError=i},{"./queue":26,"./schedule":29}],3:[function(e,t,r){"use strict";t.exports=function(e,t,r,i){var n=!1,a=function(e,t){this._reject(t)},o=function(e,t){t.promiseRejectionQueued=!0,t.bindingPromise._then(a,a,null,this,e)},s=function(e,t){0==(50397184&this._bitField)&&this._resolveCallback(t.target)},u=function(e,t){t.promiseRejectionQueued||this._reject(e)};e.prototype.bind=function(a){n||(n=!0,e.prototype._propagateFrom=i.propagateFromFunction(),e.prototype._boundValue=i.boundValueFunction());var c=r(a),l=new e(t);l._propagateFrom(this,1);var h=this._target();if(l._setBoundTo(c),c instanceof e){var p={promiseRejectionQueued:!1,promise:l,target:h,bindingPromise:c};h._then(t,o,void 0,l,p),c._then(s,u,void 0,l,p),l._setOnCancel(c)}else l._resolveCallback(h);return l},e.prototype._setBoundTo=function(e){void 0!==e?(this._bitField=2097152|this._bitField,this._boundTo=e):this._bitField=-2097153&this._bitField},e.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},e.bind=function(t,r){return e.resolve(r).bind(t)}}},{}],4:[function(e,t,r){"use strict";var i;"undefined"!=typeof Promise&&(i=Promise);var n=e("./promise")();n.noConflict=function(){try{Promise===n&&(Promise=i)}catch(e){}return n},t.exports=n},{"./promise":22}],5:[function(e,t,r){"use strict";var i=Object.create;if(i){var n=i(null),a=i(null);n[" size"]=a[" size"]=0}t.exports=function(t){var r=e("./util"),i=r.canEvaluate;function n(e){var i=function(e,i){var n;if(null!=e&&(n=e[i]),"function"!=typeof n){var a="Object "+r.classString(e)+" has no method '"+r.toString(i)+"'";throw new t.TypeError(a)}return n}(e,this.pop());return i.apply(e,this)}function a(e){return e[this]}function o(e){var t=+this;return t<0&&(t=Math.max(0,t+e.length)),e[t]}r.isIdentifier,t.prototype.call=function(e){var t=[].slice.call(arguments,1);return t.push(e),this._then(n,void 0,void 0,t,void 0)},t.prototype.get=function(e){var t;if("number"==typeof e)t=o;else if(i){var r=(void 0)(e);t=null!==r?r:a}else t=a;return this._then(t,void 0,void 0,e,void 0)}}},{"./util":36}],6:[function(e,t,r){"use strict";t.exports=function(t,r,i,n){var a=e("./util"),o=a.tryCatch,s=a.errorObj,u=t._async;t.prototype.break=t.prototype.cancel=function(){if(!n.cancellation())return this._warn("cancellation is disabled");for(var e=this,t=e;e._isCancellable();){if(!e._cancelBy(t)){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}var r=e._cancellationParent;if(null==r||!r._isCancellable()){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}e._isFollowing()&&e._followee().cancel(),e._setWillBeCancelled(),t=e,e=r}},t.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},t.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},t.prototype._cancelBy=function(e){return e===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},t.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},t.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),u.invoke(this._cancelPromises,this,void 0))},t.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},t.prototype._unsetOnCancel=function(){this._onCancelField=void 0},t.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},t.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},t.prototype._doInvokeOnCancel=function(e,t){if(a.isArray(e))for(var r=0;r=0)return r[e]}return e.prototype._promiseCreated=function(){},e.prototype._pushContext=function(){},e.prototype._popContext=function(){return null},e._peekContext=e.prototype._peekContext=function(){},i.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,r.push(this._trace))},i.prototype._popContext=function(){if(void 0!==this._trace){var e=r.pop(),t=e._promiseCreated;return e._promiseCreated=null,t}return null},i.CapturedTrace=null,i.create=function(){if(t)return new i},i.deactivateLongStackTraces=function(){},i.activateLongStackTraces=function(){var r=e.prototype._pushContext,a=e.prototype._popContext,o=e._peekContext,s=e.prototype._peekContext,u=e.prototype._promiseCreated;i.deactivateLongStackTraces=function(){e.prototype._pushContext=r,e.prototype._popContext=a,e._peekContext=o,e.prototype._peekContext=s,e.prototype._promiseCreated=u,t=!1},t=!0,e.prototype._pushContext=i.prototype._pushContext,e.prototype._popContext=i.prototype._popContext,e._peekContext=e.prototype._peekContext=n,e.prototype._promiseCreated=function(){var e=this._peekContext();e&&null==e._promiseCreated&&(e._promiseCreated=this)}},i}},{}],9:[function(e,t,r){"use strict";t.exports=function(t,r,i,a){var o,s,u,c,l=t._async,h=e("./errors").Warning,p=e("./util"),d=e("./es5"),f=p.canAttachTrace,m=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,g=/\((?:timers\.js):\d+:\d+\)/,v=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,y=null,_=null,b=!1,w=!(0==p.env("BLUEBIRD_DEBUG")),E=!(0==p.env("BLUEBIRD_WARNINGS")||!w&&!p.env("BLUEBIRD_WARNINGS")),k=!(0==p.env("BLUEBIRD_LONG_STACK_TRACES")||!w&&!p.env("BLUEBIRD_LONG_STACK_TRACES")),S=0!=p.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(E||!!p.env("BLUEBIRD_W_FORGOTTEN_RETURN"));!function(){var e=[];function r(){for(var t=0;t0},t.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},t.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},t.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},t.prototype._warn=function(e,t,r){return K(e,t,r||this)},t.onPossiblyUnhandledRejection=function(e){var r=t._getContext();s=p.contextBind(r,e)},t.onUnhandledRejectionHandled=function(e){var r=t._getContext();o=p.contextBind(r,e)};var x=function(){};t.longStackTraces=function(){if(l.haveItemsQueued()&&!re.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!re.longStackTraces&&G()){var e=t.prototype._captureStackTrace,i=t.prototype._attachExtraTrace,n=t.prototype._dereferenceTrace;re.longStackTraces=!0,x=function(){if(l.haveItemsQueued()&&!re.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");t.prototype._captureStackTrace=e,t.prototype._attachExtraTrace=i,t.prototype._dereferenceTrace=n,r.deactivateLongStackTraces(),re.longStackTraces=!1},t.prototype._captureStackTrace=L,t.prototype._attachExtraTrace=U,t.prototype._dereferenceTrace=H,r.activateLongStackTraces()}},t.hasLongStackTraces=function(){return re.longStackTraces&&G()};var j={unhandledrejection:{before:function(){var e=p.global.onunhandledrejection;return p.global.onunhandledrejection=null,e},after:function(e){p.global.onunhandledrejection=e}},rejectionhandled:{before:function(){var e=p.global.onrejectionhandled;return p.global.onrejectionhandled=null,e},after:function(e){p.global.onrejectionhandled=e}}},N=function(){var e=function(e,t){if(!e)return!p.global.dispatchEvent(t);var r;try{return r=e.before(),!p.global.dispatchEvent(t)}finally{e.after(r)}};try{if("function"==typeof CustomEvent){var t=new CustomEvent("CustomEvent");return p.global.dispatchEvent(t),function(t,r){t=t.toLowerCase();var i=new CustomEvent(t,{detail:r,cancelable:!0});return d.defineProperty(i,"promise",{value:r.promise}),d.defineProperty(i,"reason",{value:r.reason}),e(j[t],i)}}return"function"==typeof Event?(t=new Event("CustomEvent"),p.global.dispatchEvent(t),function(t,r){t=t.toLowerCase();var i=new Event(t,{cancelable:!0});return i.detail=r,d.defineProperty(i,"promise",{value:r.promise}),d.defineProperty(i,"reason",{value:r.reason}),e(j[t],i)}):((t=document.createEvent("CustomEvent")).initCustomEvent("testingtheevent",!1,!0,{}),p.global.dispatchEvent(t),function(t,r){t=t.toLowerCase();var i=document.createEvent("CustomEvent");return i.initCustomEvent(t,!1,!0,r),e(j[t],i)})}catch(e){}return function(){return!1}}(),M=p.isNode?function(){return n.emit.apply(n,arguments)}:p.global?function(e){var t="on"+e.toLowerCase(),r=p.global[t];return!!r&&(r.apply(p.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function I(e,t){return{promise:t}}var A={promiseCreated:I,promiseFulfilled:I,promiseRejected:I,promiseResolved:I,promiseCancelled:I,promiseChained:function(e,t,r){return{promise:t,child:r}},warning:function(e,t){return{warning:t}},unhandledRejection:function(e,t,r){return{reason:t,promise:r}},rejectionHandled:I},T=function(e){var t=!1;try{t=M.apply(null,arguments)}catch(e){l.throwLater(e),t=!0}var r=!1;try{r=N(e,A[e].apply(null,arguments))}catch(e){l.throwLater(e),r=!0}return r||t};function R(){return!1}function P(e,t,r){var i=this;try{e(t,r,(function(e){if("function"!=typeof e)throw new TypeError("onCancel must be a function, got: "+p.toString(e));i._attachCancellationCallback(e)}))}catch(e){return e}}function O(e){if(!this._isCancellable())return this;var t=this._onCancel();void 0!==t?p.isArray(t)?t.push(e):this._setOnCancel([t,e]):this._setOnCancel(e)}function B(){return this._onCancelField}function C(e){this._onCancelField=e}function z(){this._cancellationParent=void 0,this._onCancelField=void 0}function F(e,t){if(0!=(1&t)){this._cancellationParent=e;var r=e._branchesRemainingToCancel;void 0===r&&(r=0),e._branchesRemainingToCancel=r+1}0!=(2&t)&&e._isBound()&&this._setBoundTo(e._boundTo)}t.config=function(e){if("longStackTraces"in(e=Object(e))&&(e.longStackTraces?t.longStackTraces():!e.longStackTraces&&t.hasLongStackTraces()&&x()),"warnings"in e){var r=e.warnings;re.warnings=!!r,S=re.warnings,p.isObject(r)&&"wForgottenReturn"in r&&(S=!!r.wForgottenReturn)}if("cancellation"in e&&e.cancellation&&!re.cancellation){if(l.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");t.prototype._clearCancellationData=z,t.prototype._propagateFrom=F,t.prototype._onCancel=B,t.prototype._setOnCancel=C,t.prototype._attachCancellationCallback=O,t.prototype._execute=P,D=F,re.cancellation=!0}if("monitoring"in e&&(e.monitoring&&!re.monitoring?(re.monitoring=!0,t.prototype._fireEvent=T):!e.monitoring&&re.monitoring&&(re.monitoring=!1,t.prototype._fireEvent=R)),"asyncHooks"in e&&p.nodeSupportsAsyncResource){var n=re.asyncHooks,o=!!e.asyncHooks;n!==o&&(re.asyncHooks=o,o?i():a())}return t},t.prototype._fireEvent=R,t.prototype._execute=function(e,t,r){try{e(t,r)}catch(e){return e}},t.prototype._onCancel=function(){},t.prototype._setOnCancel=function(e){},t.prototype._attachCancellationCallback=function(e){},t.prototype._captureStackTrace=function(){},t.prototype._attachExtraTrace=function(){},t.prototype._dereferenceTrace=function(){},t.prototype._clearCancellationData=function(){},t.prototype._propagateFrom=function(e,t){};var D=function(e,t){0!=(2&t)&&e._isBound()&&this._setBoundTo(e._boundTo)};function q(){var e=this._boundTo;return void 0!==e&&e instanceof t?e.isFulfilled()?e.value():void 0:e}function L(){this._trace=new ee(this._peekContext())}function U(e,t){if(f(e)){var r=this._trace;if(void 0!==r&&t&&(r=r._parent),void 0!==r)r.attachExtraTrace(e);else if(!e.__stackCleaned__){var i=Z(e);p.notEnumerableProp(e,"stack",i.message+"\n"+i.stack.join("\n")),p.notEnumerableProp(e,"__stackCleaned__",!0)}}}function H(){this._trace=void 0}function K(e,r,i){if(re.warnings){var n,a=new h(e);if(r)i._attachExtraTrace(a);else if(re.longStackTraces&&(n=t._peekContext()))n.attachExtraTrace(a);else{var o=Z(a);a.stack=o.message+"\n"+o.stack.join("\n")}T("warning",a)||J(a,"",!0)}}function W(e){for(var t=[],r=0;r0?function(e){for(var t=e.stack.replace(/\s+$/g,"").split("\n"),r=0;r0&&"SyntaxError"!=e.name&&(t=t.slice(r)),t}(e):[" (No stack trace)"],{message:r,stack:"SyntaxError"==e.name?t:W(t)}}function J(e,t,r){if("undefined"!=typeof console){var i;if(p.isObject(e)){var n=e.stack;i=t+_(n,e)}else i=t+String(e);"function"==typeof u?u(i,r):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(i)}}function V(e,t,r,i){var n=!1;try{"function"==typeof t&&(n=!0,"rejectionHandled"===e?t(i):t(r,i))}catch(e){l.throwLater(e)}"unhandledRejection"===e?T(e,r,i)||n||J(r,"Unhandled rejection "):T(e,i)}function $(e){var t;if("function"==typeof e)t="[function "+(e.name||"anonymous")+"]";else{if(t=e&&"function"==typeof e.toString?e.toString():p.toString(e),/\[object [a-zA-Z0-9$_]+\]/.test(t))try{t=JSON.stringify(e)}catch(e){}0===t.length&&(t="(empty array)")}return"(<"+function(e){return e.length<41?e:e.substr(0,38)+"..."}(t)+">, no stack trace)"}function G(){return"function"==typeof te}var Q=function(){return!1},X=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function Y(e){var t=e.match(X);if(t)return{fileName:t[1],line:parseInt(t[2],10)}}function ee(e){this._parent=e,this._promisesCreated=0;var t=this._length=1+(void 0===e?0:e._length);te(this,ee),t>32&&this.uncycle()}p.inherits(ee,Error),r.CapturedTrace=ee,ee.prototype.uncycle=function(){var e=this._length;if(!(e<2)){for(var t=[],r={},i=0,n=this;void 0!==n;++i)t.push(n),n=n._parent;for(i=(e=this._length=i)-1;i>=0;--i){var a=t[i].stack;void 0===r[a]&&(r[a]=i)}for(i=0;i0&&(t[o-1]._parent=void 0,t[o-1]._length=1),t[i]._parent=void 0,t[i]._length=1;var s=i>0?t[i-1]:this;o=0;--c)t[c]._length=u,u++;return}}}},ee.prototype.attachExtraTrace=function(e){if(!e.__stackCleaned__){this.uncycle();for(var t=Z(e),r=t.message,i=[t.stack],n=this;void 0!==n;)i.push(W(n.stack.split("\n"))),n=n._parent;!function(e){for(var t=e[0],r=1;r=0;--s)if(i[s]===a){o=s;break}for(s=o;s>=0;--s){var u=i[s];if(t[n]!==u)break;t.pop(),n--}t=i}}(i),function(e){for(var t=0;t=0)return y=/@/,_=t,b=!0,function(e){e.stack=(new Error).stack};try{throw new Error}catch(e){i="stack"in e}return!("stack"in n)&&i&&"number"==typeof Error.stackTraceLimit?(y=e,_=t,function(e){Error.stackTraceLimit+=6;try{throw new Error}catch(t){e.stack=t.stack}Error.stackTraceLimit-=6}):(_=function(e,t){return"string"==typeof e?e:"object"!=typeof t&&"function"!=typeof t||void 0===t.name||void 0===t.message?$(t):t.toString()},null)}();"undefined"!=typeof console&&void 0!==console.warn&&(u=function(e){console.warn(e)},p.isNode&&n.stderr.isTTY?u=function(e,t){var r=t?"":"";console.warn(r+e+"\n")}:p.isNode||"string"!=typeof(new Error).stack||(u=function(e,t){console.warn("%c"+e,t?"color: darkorange":"color: red")}));var re={warnings:E,longStackTraces:!1,cancellation:!1,monitoring:!1,asyncHooks:!1};return k&&t.longStackTraces(),{asyncHooks:function(){return re.asyncHooks},longStackTraces:function(){return re.longStackTraces},warnings:function(){return re.warnings},cancellation:function(){return re.cancellation},monitoring:function(){return re.monitoring},propagateFromFunction:function(){return D},boundValueFunction:function(){return q},checkForgottenReturns:function(e,t,r,i,n){if(void 0===e&&null!==t&&S){if(void 0!==n&&n._returnedNonUndefined())return;if(0==(65535&i._bitField))return;r&&(r+=" ");var a="",o="";if(t._trace){for(var s=t._trace.stack.split("\n"),u=W(s),c=u.length-1;c>=0;--c){var l=u[c];if(!g.test(l)){var h=l.match(v);h&&(a="at "+h[1]+":"+h[2]+":"+h[3]+" ");break}}if(u.length>0){var p=u[0];for(c=0;c0&&(o="\n"+s[c-1]);break}}}var d="a promise was created in a "+r+"handler "+a+"but was not returned from it, see http://goo.gl/rRqMUw"+o;i._warn(d,!0,t)}},setBounds:function(e,t){if(G()){for(var r,i,n=(e.stack||"").split("\n"),a=(t.stack||"").split("\n"),o=-1,s=-1,u=0;u=s||(Q=function(e){if(m.test(e))return!0;var t=Y(e);return!!(t&&t.fileName===r&&o<=t.line&&t.line<=s)})}},warn:K,deprecated:function(e,t){var r=e+" is deprecated and will be removed in a future version.";return t&&(r+=" Use "+t+" instead."),K(r)},CapturedTrace:ee,fireDomEvent:N,fireGlobalEvent:M}}},{"./errors":12,"./es5":13,"./util":36}],10:[function(e,t,r){"use strict";t.exports=function(e){function t(){return this.value}function r(){throw this.reason}e.prototype.return=e.prototype.thenReturn=function(r){return r instanceof e&&r.suppressUnhandledRejections(),this._then(t,void 0,void 0,{value:r},void 0)},e.prototype.throw=e.prototype.thenThrow=function(e){return this._then(r,void 0,void 0,{reason:e},void 0)},e.prototype.catchThrow=function(e){if(arguments.length<=1)return this._then(void 0,r,void 0,{reason:e},void 0);var t=arguments[1],i=function(){throw t};return this.caught(e,i)},e.prototype.catchReturn=function(r){if(arguments.length<=1)return r instanceof e&&r.suppressUnhandledRejections(),this._then(void 0,t,void 0,{value:r},void 0);var i=arguments[1];i instanceof e&&i.suppressUnhandledRejections();var n=function(){return i};return this.caught(r,n)}}},{}],11:[function(e,t,r){"use strict";t.exports=function(e,t){var r=e.reduce,i=e.all;function n(){return i(this)}e.prototype.each=function(e){return r(this,e,t,0)._then(n,void 0,void 0,this,void 0)},e.prototype.mapSeries=function(e){return r(this,e,t,t)},e.each=function(e,i){return r(e,i,t,0)._then(n,void 0,void 0,e,void 0)},e.mapSeries=function(e,i){return r(e,i,t,t)}}},{}],12:[function(e,t,r){"use strict";var i,n,a=e("./es5"),o=a.freeze,s=e("./util"),u=s.inherits,c=s.notEnumerableProp;function l(e,t){function r(i){if(!(this instanceof r))return new r(i);c(this,"message","string"==typeof i?i:t),c(this,"name",e),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return u(r,Error),r}var h=l("Warning","warning"),p=l("CancellationError","cancellation error"),d=l("TimeoutError","timeout error"),f=l("AggregateError","aggregate error");try{i=TypeError,n=RangeError}catch(e){i=l("TypeError","type error"),n=l("RangeError","range error")}for(var m="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),g=0;g1?e.cancelPromise._reject(t):e.cancelPromise._cancel(),e.cancelPromise=null,!0)}function h(){return d.call(this,this.promise._target()._settledValue())}function p(e){if(!l(this,e))return o.e=e,o}function d(e){var n=this.promise,s=this.handler;if(!this.called){this.called=!0;var u=this.isFinallyHandler()?s.call(n._boundValue()):s.call(n._boundValue(),e);if(u===i)return u;if(void 0!==u){n._setReturnedNonUndefined();var d=r(u,n);if(d instanceof t){if(null!=this.cancelPromise){if(d._isCancelled()){var f=new a("late cancellation observer");return n._attachExtraTrace(f),o.e=f,o}d.isPending()&&d._attachCancellationCallback(new c(this))}return d._then(h,p,void 0,this,void 0)}}}return n.isRejected()?(l(this),o.e=e,o):(l(this),e)}return u.prototype.isFinallyHandler=function(){return 0===this.type},c.prototype._resultCancelled=function(){l(this.finallyHandler)},t.prototype._passThrough=function(e,t,r,i){return"function"!=typeof e?this.then():this._then(r,i,void 0,new u(this,t,e),void 0)},t.prototype.lastly=t.prototype.finally=function(e){return this._passThrough(e,0,d,d)},t.prototype.tap=function(e){return this._passThrough(e,1,d)},t.prototype.tapCatch=function(e){var r=arguments.length;if(1===r)return this._passThrough(e,1,void 0,d);var i,a=new Array(r-1),o=0;for(i=0;i0&&"function"==typeof arguments[t]&&(e=arguments[t]);var i=[].slice.call(arguments);e&&i.pop();var n=new r(i).promise();return void 0!==e?n.spread(e):n}}},{"./util":36}],18:[function(e,t,r){"use strict";t.exports=function(t,r,i,n,a,o){var s=e("./util"),u=s.tryCatch,c=s.errorObj,l=t._async;function h(e,r,i,n){this.constructor$(e),this._promise._captureStackTrace();var o=t._getContext();if(this._callback=s.contextBind(o,r),this._preservedValues=n===a?new Array(this.length()):null,this._limit=i,this._inFlight=0,this._queue=[],l.invoke(this._asyncInit,this,void 0),s.isArray(e))for(var u=0;u=1?o:0,a).promise()}s.inherits(h,r),h.prototype._asyncInit=function(){this._init$(void 0,-2)},h.prototype._init=function(){},h.prototype._promiseFulfilled=function(e,r){var i=this._values,a=this.length(),s=this._preservedValues,l=this._limit;if(r<0){if(i[r=-1*r-1]=e,l>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(l>=1&&this._inFlight>=l)return i[r]=e,this._queue.push(r),!1;null!==s&&(s[r]=e);var h=this._promise,p=this._callback,d=h._boundValue();h._pushContext();var f=u(p).call(d,e,r,a),m=h._popContext();if(o.checkForgottenReturns(f,m,null!==s?"Promise.filter":"Promise.map",h),f===c)return this._reject(f.e),!0;var g=n(f,this._promise);if(g instanceof t){var v=(g=g._target())._bitField;if(0==(50397184&v))return l>=1&&this._inFlight++,i[r]=g,g._proxy(this,-1*(r+1)),!1;if(0==(33554432&v))return 0!=(16777216&v)?(this._reject(g._reason()),!0):(this._cancel(),!0);f=g._value()}i[r]=f}return++this._totalResolved>=a&&(null!==s?this._filter(i,s):this._resolve(i),!0)},h.prototype._drainQueue=function(){for(var e=this._queue,t=this._limit,r=this._values;e.length>0&&this._inFlight1){a.deprecated("calling Promise.try with more than 1 argument");var c=arguments[1],l=arguments[2];i=o.isArray(c)?s(e).apply(l,c):s(e).call(l,c)}else i=s(e)();var h=u._popContext();return a.checkForgottenReturns(i,h,"Promise.try",u),u._resolveFromSyncValue(i),u},t.prototype._resolveFromSyncValue=function(e){e===o.errorObj?this._rejectCallback(e.e,!1):this._resolveCallback(e,!0)}}},{"./util":36}],20:[function(e,t,r){"use strict";var i=e("./util"),n=i.maybeWrapAsError,a=e("./errors").OperationalError,o=e("./es5"),s=/^(?:name|message|stack|cause)$/;function u(e){var t;if(function(e){return e instanceof Error&&o.getPrototypeOf(e)===Error.prototype}(e)){(t=new a(e)).name=e.name,t.message=e.message,t.stack=e.stack;for(var r=o.keys(e),n=0;n1){var r,i=new Array(t-1),n=0;for(r=0;r0&&"function"!=typeof e&&"function"!=typeof t){var r=".then() only accepts functions but was passed: "+u.classString(e);arguments.length>1&&(r+=", "+u.classString(t)),this._warn(r)}return this._then(e,t,void 0,void 0,void 0)},P.prototype.done=function(e,t){this._then(e,t,void 0,void 0,void 0)._setIsFinal()},P.prototype.spread=function(e){return"function"!=typeof e?a("expecting a function but got "+u.classString(e)):this.all()._then(e,void 0,void 0,w,void 0)},P.prototype.toJSON=function(){var e={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(e.fulfillmentValue=this.value(),e.isFulfilled=!0):this.isRejected()&&(e.rejectionReason=this.reason(),e.isRejected=!0),e},P.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new S(this).promise()},P.prototype.error=function(e){return this.caught(u.originatesFromRejection,e)},P.getNewLibraryCopy=t.exports,P.is=function(e){return e instanceof P},P.fromNode=P.fromCallback=function(e){var t=new P(b);t._captureStackTrace();var r=arguments.length>1&&!!Object(arguments[1]).multiArgs,i=R(e)(A(t,r));return i===T&&t._rejectCallback(i.e,!0),t._isFateSealed()||t._setAsyncGuaranteed(),t},P.all=function(e){return new S(e).promise()},P.cast=function(e){var t=k(e);return t instanceof P||((t=new P(b))._captureStackTrace(),t._setFulfilled(),t._rejectionHandler0=e),t},P.resolve=P.fulfilled=P.cast,P.reject=P.rejected=function(e){var t=new P(b);return t._captureStackTrace(),t._rejectCallback(e,!0),t},P.setScheduler=function(e){if("function"!=typeof e)throw new y("expecting a function but got "+u.classString(e));return g.setScheduler(e)},P.prototype._then=function(e,t,r,i,n){var a=void 0!==n,o=a?n:new P(b),s=this._target(),c=s._bitField;a||(o._propagateFrom(this,3),o._captureStackTrace(),void 0===i&&0!=(2097152&this._bitField)&&(i=0!=(50397184&c)?this._boundValue():s===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,o));var l=d();if(0!=(50397184&c)){var h,p,f=s._settlePromiseCtx;0!=(33554432&c)?(p=s._rejectionHandler0,h=e):0!=(16777216&c)?(p=s._fulfillmentHandler0,h=t,s._unsetRejectionIsUnhandled()):(f=s._settlePromiseLateCancellationObserver,p=new _("late cancellation observer"),s._attachExtraTrace(p),h=t),g.invoke(f,s,{handler:u.contextBind(l,h),promise:o,receiver:i,value:p})}else s._addCallbacks(e,t,o,i,l);return o},P.prototype._length=function(){return 65535&this._bitField},P.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},P.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},P.prototype._setLength=function(e){this._bitField=-65536&this._bitField|65535&e},P.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},P.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},P.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},P.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},P.prototype._isFinal=function(){return(4194304&this._bitField)>0},P.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},P.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},P.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},P.prototype._setAsyncGuaranteed=function(){if(!g.hasCustomScheduler()){var e=this._bitField;this._bitField=e|(536870912&e)>>2^134217728}},P.prototype._setNoAsyncGuarantee=function(){this._bitField=-134217729&(536870912|this._bitField)},P.prototype._receiverAt=function(e){var t=0===e?this._receiver0:this[4*e-4+3];if(t!==s)return void 0===t&&this._isBound()?this._boundValue():t},P.prototype._promiseAt=function(e){return this[4*e-4+2]},P.prototype._fulfillmentHandlerAt=function(e){return this[4*e-4+0]},P.prototype._rejectionHandlerAt=function(e){return this[4*e-4+1]},P.prototype._boundValue=function(){},P.prototype._migrateCallback0=function(e){e._bitField;var t=e._fulfillmentHandler0,r=e._rejectionHandler0,i=e._promise0,n=e._receiverAt(0);void 0===n&&(n=s),this._addCallbacks(t,r,i,n,null)},P.prototype._migrateCallbackAt=function(e,t){var r=e._fulfillmentHandlerAt(t),i=e._rejectionHandlerAt(t),n=e._promiseAt(t),a=e._receiverAt(t);void 0===a&&(a=s),this._addCallbacks(r,i,n,a,null)},P.prototype._addCallbacks=function(e,t,r,i,n){var a=this._length();if(a>=65531&&(a=0,this._setLength(0)),0===a)this._promise0=r,this._receiver0=i,"function"==typeof e&&(this._fulfillmentHandler0=u.contextBind(n,e)),"function"==typeof t&&(this._rejectionHandler0=u.contextBind(n,t));else{var o=4*a-4;this[o+2]=r,this[o+3]=i,"function"==typeof e&&(this[o+0]=u.contextBind(n,e)),"function"==typeof t&&(this[o+1]=u.contextBind(n,t))}return this._setLength(a+1),a},P.prototype._proxy=function(e,t){this._addCallbacks(void 0,void 0,t,e,null)},P.prototype._resolveCallback=function(e,t){if(0==(117506048&this._bitField)){if(e===this)return this._rejectCallback(r(),!1);var i=k(e,this);if(!(i instanceof P))return this._fulfill(e);t&&this._propagateFrom(i,2);var n=i._target();if(n!==this){var a=n._bitField;if(0==(50397184&a)){var o=this._length();o>0&&n._migrateCallback0(this);for(var s=1;s>>16)){if(e===this){var i=r();return this._attachExtraTrace(i),this._reject(i)}this._setFulfilled(),this._rejectionHandler0=e,(65535&t)>0&&(0!=(134217728&t)?this._settlePromises():g.settlePromises(this),this._dereferenceTrace())}},P.prototype._reject=function(e){var t=this._bitField;if(!((117506048&t)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=e,this._isFinal())return g.fatalError(e,u.isNode);(65535&t)>0?g.settlePromises(this):this._ensurePossibleRejectionHandled()}},P.prototype._fulfillPromises=function(e,t){for(var r=1;r0){if(0!=(16842752&e)){var r=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,r,e),this._rejectPromises(t,r)}else{var i=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,i,e),this._fulfillPromises(t,i)}this._setLength(0)}this._clearCancellationData()},P.prototype._settledValue=function(){var e=this._bitField;return 0!=(33554432&e)?this._rejectionHandler0:0!=(16777216&e)?this._fulfillmentHandler0:void 0},"undefined"!=typeof Symbol&&Symbol.toStringTag&&f.defineProperty(P.prototype,Symbol.toStringTag,{get:function(){return"Object"}}),P.defer=P.pending=function(){return N.deprecated("Promise.defer","new Promise"),{promise:new P(b),resolve:O,reject:B}},u.notEnumerableProp(P,"_makeSelfResolutionError",r),e("./method")(P,b,k,a,N),e("./bind")(P,b,k,N),e("./cancel")(P,S,a,N),e("./direct_resolve")(P),e("./synchronous_inspection")(P),e("./join")(P,S,k,b,g),P.Promise=P,P.version="3.7.2",e("./call_get.js")(P),e("./generators.js")(P,a,b,k,o,N),e("./map.js")(P,S,a,k,b,N),e("./nodeify.js")(P),e("./promisify.js")(P,b),e("./props.js")(P,S,k,a),e("./race.js")(P,b,k,a),e("./reduce.js")(P,S,a,k,b,N),e("./settle.js")(P,S,N),e("./some.js")(P,S,a),e("./timers.js")(P,b,N),e("./using.js")(P,a,k,j,b,N),e("./any.js")(P),e("./each.js")(P,b),e("./filter.js")(P,b),u.toFastProperties(P),u.toFastProperties(P.prototype),C({a:1}),C({b:2}),C({c:3}),C(1),C((function(){})),C(void 0),C(!1),C(new P(b)),N.setBounds(m.firstLineError,u.lastLineError),P}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36,async_hooks:void 0}],23:[function(e,t,r){"use strict";t.exports=function(t,r,i,n,a){var o=e("./util");function s(e){var i=this._promise=new t(r);e instanceof t&&(i._propagateFrom(e,3),e.suppressUnhandledRejections()),i._setOnCancel(this),this._values=e,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return o.isArray,o.inherits(s,a),s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function e(r,a){var s=i(this._values,this._promise);if(s instanceof t){var u=(s=s._target())._bitField;if(this._values=s,0==(50397184&u))return this._promise._setAsyncGuaranteed(),s._then(e,this._reject,void 0,this,a);if(0==(33554432&u))return 0!=(16777216&u)?this._reject(s._reason()):this._cancel();s=s._value()}if(null!==(s=o.asArray(s)))0!==s.length?this._iterate(s):-5===a?this._resolveEmptyArray():this._resolve(function(e){switch(e){case-2:return[];case-3:return{};case-6:return new Map}}(a));else{var c=n("expecting an array or an iterable object but got "+o.classString(s)).reason();this._promise._rejectCallback(c,!1)}},s.prototype._iterate=function(e){var r=this.getActualLength(e.length);this._length=r,this._values=this.shouldCopyValues()?new Array(r):this._values;for(var n=this._promise,a=!1,o=null,s=0;s=this._length&&(this._resolve(this._values),!0)},s.prototype._promiseCancelled=function(){return this._cancel(),!0},s.prototype._promiseRejected=function(e){return this._totalResolved++,this._reject(e),!0},s.prototype._resultCancelled=function(){if(!this._isResolved()){var e=this._values;if(this._cancel(),e instanceof t)e.cancel();else for(var r=0;r=this._length){var r;if(this._isMap)r=function(e){for(var t=new a,r=e.length/2|0,i=0;i>1},t.prototype.props=function(){return h(this)},t.props=function(e){return h(e)}}},{"./es5":13,"./util":36}],26:[function(e,t,r){"use strict";function i(e){this._capacity=e,this._length=0,this._front=0}i.prototype._willBeOverCapacity=function(e){return this._capacity=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseFulfilled=function(e,t){var r=new n;return r._bitField=33554432,r._settledValueField=e,this._promiseResolved(t,r)},a.prototype._promiseRejected=function(e,t){var r=new n;return r._bitField=16777216,r._settledValueField=e,this._promiseResolved(t,r)},t.settle=function(e){return i.deprecated(".settle()",".reflect()"),new a(e).promise()},t.allSettled=function(e){return new a(e).promise()},t.prototype.settle=function(){return t.settle(this)}}},{"./util":36}],31:[function(e,t,r){"use strict";t.exports=function(t,r,i){var n=e("./util"),a=e("./errors").RangeError,o=e("./errors").AggregateError,s=n.isArray,u={};function c(e){this.constructor$(e),this._howMany=0,this._unwrap=!1,this._initialized=!1}function l(e,t){if((0|t)!==t||t<0)return i("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var r=new c(e),n=r.promise();return r.setHowMany(t),r.init(),n}n.inherits(c,r),c.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var e=s(this._values);!this._isResolved()&&e&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},c.prototype.init=function(){this._initialized=!0,this._init()},c.prototype.setUnwrap=function(){this._unwrap=!0},c.prototype.howMany=function(){return this._howMany},c.prototype.setHowMany=function(e){this._howMany=e},c.prototype._promiseFulfilled=function(e){return this._addFulfilled(e),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},c.prototype._promiseRejected=function(e){return this._addRejected(e),this._checkOutcome()},c.prototype._promiseCancelled=function(){return this._values instanceof t||null==this._values?this._cancel():(this._addRejected(u),this._checkOutcome())},c.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var e=new o,t=this.length();t0?this._reject(e):this._cancel(),!0}return!1},c.prototype._fulfilled=function(){return this._totalResolved},c.prototype._rejected=function(){return this._values.length-this.length()},c.prototype._addRejected=function(e){this._values.push(e)},c.prototype._addFulfilled=function(e){this._values[this._totalResolved++]=e},c.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},c.prototype._getRangeError=function(e){var t="Input array must contain at least "+this._howMany+" items but contains only "+e+" items";return new a(t)},c.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},t.some=function(e,t){return l(e,t)},t.prototype.some=function(e){return l(this,e)},t._SomePromiseArray=c}},{"./errors":12,"./util":36}],32:[function(e,t,r){"use strict";t.exports=function(e){function t(e){void 0!==e?(e=e._target(),this._bitField=e._bitField,this._settledValueField=e._isFateSealed()?e._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}t.prototype._settledValue=function(){return this._settledValueField};var r=t.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},i=t.prototype.error=t.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},n=t.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},a=t.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},o=t.prototype.isPending=function(){return 0==(50397184&this._bitField)},s=t.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};t.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},e.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},e.prototype._isCancelled=function(){return this._target().__isCancelled()},e.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},e.prototype.isPending=function(){return o.call(this._target())},e.prototype.isRejected=function(){return a.call(this._target())},e.prototype.isFulfilled=function(){return n.call(this._target())},e.prototype.isResolved=function(){return s.call(this._target())},e.prototype.value=function(){return r.call(this._target())},e.prototype.reason=function(){var e=this._target();return e._unsetRejectionIsUnhandled(),i.call(e)},e.prototype._value=function(){return this._settledValue()},e.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},e.PromiseInspection=t}},{}],33:[function(e,t,r){"use strict";t.exports=function(t,r){var i=e("./util"),n=i.errorObj,a=i.isObject,o={}.hasOwnProperty;return function(e,s){if(a(e)){if(e instanceof t)return e;var u=function(e){try{return function(e){return e.then}(e)}catch(e){return n.e=e,n}}(e);if(u===n){s&&s._pushContext();var c=t.reject(u.e);return s&&s._popContext(),c}if("function"==typeof u)return function(e){try{return o.call(e,"_promise0")}catch(e){return!1}}(e)?(c=new t(r),e._then(c._fulfill,c._reject,void 0,c,null),c):function(e,a,o){var s=new t(r),u=s;o&&o._pushContext(),s._captureStackTrace(),o&&o._popContext();var c=!0,l=i.tryCatch(a).call(e,(function(e){s&&(s._resolveCallback(e),s=null)}),(function(e){s&&(s._rejectCallback(e,c,!0),s=null)}));return c=!1,s&&l===n&&(s._rejectCallback(l.e,!0,!0),s=null),u}(e,u,s)}return e}}},{"./util":36}],34:[function(e,t,r){"use strict";t.exports=function(t,r,i){var n=e("./util"),a=t.TimeoutError;function o(e){this.handle=e}o.prototype._resultCancelled=function(){clearTimeout(this.handle)};var s=function(e){return u(+this).thenReturn(e)},u=t.delay=function(e,n){var a,u;return void 0!==n?(a=t.resolve(n)._then(s,null,null,e,void 0),i.cancellation()&&n instanceof t&&a._setOnCancel(n)):(a=new t(r),u=setTimeout((function(){a._fulfill()}),+e),i.cancellation()&&a._setOnCancel(new o(u)),a._captureStackTrace()),a._setAsyncGuaranteed(),a};function c(e){return clearTimeout(this.handle),e}function l(e){throw clearTimeout(this.handle),e}t.prototype.delay=function(e){return u(e,this)},t.prototype.timeout=function(e,t){var r,s;e=+e;var u=new o(setTimeout((function(){r.isPending()&&function(e,t,r){var i;i="string"!=typeof t?t instanceof Error?t:new a("operation timed out"):new a(t),n.markAsOriginatingFromRejection(i),e._attachExtraTrace(i),e._reject(i),null!=r&&r.cancel()}(r,t,s)}),e));return i.cancellation()?(s=this.then(),(r=s._then(c,l,void 0,u,void 0))._setOnCancel(u)):r=this._then(c,l,void 0,u,void 0),r}}},{"./util":36}],35:[function(e,t,r){"use strict";t.exports=function(t,r,i,n,a,o){var s=e("./util"),u=e("./errors").TypeError,c=e("./util").inherits,l=s.errorObj,h=s.tryCatch,p={};function d(e){setTimeout((function(){throw e}),0)}function f(e,r){var n=0,o=e.length,s=new t(a);return function a(){if(n>=o)return s._fulfill();var u=function(e){var t=i(e);return t!==e&&"function"==typeof e._isDisposable&&"function"==typeof e._getDisposer&&e._isDisposable()&&t._setDisposable(e._getDisposer()),t}(e[n++]);if(u instanceof t&&u._isDisposable()){try{u=i(u._getDisposer().tryDispose(r),e.promise)}catch(e){return d(e)}if(u instanceof t)return u._then(a,d,null,null,null)}a()}(),s}function m(e,t,r){this._data=e,this._promise=t,this._context=r}function g(e,t,r){this.constructor$(e,t,r)}function v(e){return m.isDisposer(e)?(this.resources[this.index]._setDisposable(e),e.promise()):e}function y(e){this.length=e,this.promise=null,this[e-1]=null}m.prototype.data=function(){return this._data},m.prototype.promise=function(){return this._promise},m.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():p},m.prototype.tryDispose=function(e){var t=this.resource(),r=this._context;void 0!==r&&r._pushContext();var i=t!==p?this.doDispose(t,e):null;return void 0!==r&&r._popContext(),this._promise._unsetDisposable(),this._data=null,i},m.isDisposer=function(e){return null!=e&&"function"==typeof e.resource&&"function"==typeof e.tryDispose},c(g,m),g.prototype.doDispose=function(e,t){return this.data().call(e,e,t)},y.prototype._resultCancelled=function(){for(var e=this.length,r=0;r0},t.prototype._getDisposer=function(){return this._disposer},t.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},t.prototype.disposer=function(e){if("function"==typeof e)return new g(e,this,n());throw new u}}},{"./errors":12,"./util":36}],36:[function(e,t,i){"use strict";var a,o=e("./es5"),s="undefined"==typeof navigator,u={e:{}},c="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==r.g?r.g:void 0!==this?this:null;function l(){try{var e=a;return a=null,e.apply(this,arguments)}catch(e){return u.e=e,u}}function h(e){return null==e||!0===e||!1===e||"string"==typeof e||"number"==typeof e}function p(e,t,r){if(h(e))return e;var i={value:r,configurable:!0,enumerable:!1,writable:!0};return o.defineProperty(e,t,i),e}var d=function(){var e=[Array.prototype,Object.prototype,Function.prototype],t=function(t){for(var r=0;r1,i=t.length>0&&!(1===t.length&&"constructor"===t[0]),n=f.test(e+"")&&o.names(e).length>0;if(r||i||n)return!0}return!1}catch(e){return!1}},isIdentifier:function(e){return m.test(e)},inheritedDataKeys:d,getDataPropertyOrDefault:function(e,t,r){if(!o.isES5)return{}.hasOwnProperty.call(e,t)?e[t]:void 0;var i=Object.getOwnPropertyDescriptor(e,t);return null!=i?null==i.get&&null==i.set?i.value:r:void 0},thrower:function(e){throw e},isArray:o.isArray,asArray:w,notEnumerableProp:p,isPrimitive:h,isObject:function(e){return"function"==typeof e||"object"==typeof e&&null!==e},isError:v,canEvaluate:s,errorObj:u,tryCatch:function(e){return a=e,l},inherits:function(e,t){var r={}.hasOwnProperty;function i(){for(var i in this.constructor=e,this.constructor$=t,t.prototype)r.call(t.prototype,i)&&"$"!==i.charAt(i.length-1)&&(this[i+"$"]=t.prototype[i])}return i.prototype=t.prototype,e.prototype=new i,e.prototype},withAppended:function(e,t){var r,i=e.length,n=new Array(i+1);for(r=0;r10||j[0]>0),N.nodeSupportsAsyncResource=N.isNode&&function(){var t=!1;try{t="function"==typeof e("async_hooks").AsyncResource.prototype.runInAsyncScope}catch(e){t=!1}return t}(),N.isNode&&N.toFastProperties(n);try{throw new Error}catch(e){N.lastLineError=e}t.exports=N},{"./es5":13,async_hooks:void 0}]},{},[4])(4)},e.exports=i(),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)},13550:function(e,t,r){!function(e,t){"use strict";function i(e,t){if(!e)throw new Error(t||"Assertion failed")}function n(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}function a(e,t,r){if(a.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(r=t,t=10),this._init(e||0,t||10,r||"be"))}var o;"object"==typeof e?e.exports=a:t.BN=a,a.BN=a,a.wordSize=26;try{o="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(46601).Buffer}catch(e){}function s(e,t){var r=e.charCodeAt(t);return r>=48&&r<=57?r-48:r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:void i(!1,"Invalid character in "+e)}function u(e,t,r){var i=s(e,r);return r-1>=t&&(i|=s(e,r-1)<<4),i}function c(e,t,r,n){for(var a=0,o=0,s=Math.min(e.length,r),u=t;u=49?c-49+10:c>=17?c-17+10:c,i(c>=0&&o0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)o=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this._strip()},a.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)n=u(e,t,i)<=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;this._strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,o=a%i,s=Math.min(a,a-o)+r,u=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{a.prototype[Symbol.for("nodejs.util.inspect.custom")]=h}catch(e){a.prototype.inspect=h}else a.prototype.inspect=h;function h(){return(this.red?""}var p=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function m(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],o=n*a,s=67108863&o,u=o/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&u,p=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=p;d++){var f=c-d|0;l+=(o=(n=0|e.words[f])*(a=0|t.words[d])+h)/67108864|0,h=67108863&o}r.words[c]=0|h,u=0|l}return 0!==u?r.words[c]=0|u:r.length--,r._strip()}a.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,a=0,o=0;o>>24-n&16777215,(n+=2)>=26&&(n-=26,o--),r=0!==a||o!==this.length-1?p[6-u.length]+u+r:u+r}for(0!==a&&(r=a.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var c=d[e],l=f[e];r="";var h=this.clone();for(h.negative=0;!h.isZero();){var m=h.modrn(l).toString(e);r=(h=h.idivn(l)).isZero()?m+r:p[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16,2)},o&&(a.prototype.toBuffer=function(e,t){return this.toArrayLike(o,e,t)}),a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},a.prototype.toArrayLike=function(e,t,r){this._strip();var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0");var o=function(e,t){return e.allocUnsafe?e.allocUnsafe(t):new e(t)}(e,a);return this["_toArrayLike"+("le"===t?"LE":"BE")](o,n),o},a.prototype._toArrayLikeLE=function(e,t){for(var r=0,i=0,n=0,a=0;n>8&255),r>16&255),6===a?(r>24&255),i=0,a=0):(i=o>>>24,a+=2)}if(r=0&&(e[r--]=o>>8&255),r>=0&&(e[r--]=o>>16&255),6===a?(r>=0&&(e[r--]=o>>24&255),i=0,a=0):(i=o>>>24,a+=2)}if(r>=0)for(e[r--]=i;r>=0;)e[r--]=0},Math.clz32?a.prototype._countBits=function(e){return 32-Math.clz32(e)}:a.prototype._countBits=function(e){var t=e,r=0;return t>=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this._strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==a&&o>26,this.words[o]=67108863&t;if(0===a&&o>>13,d=0|o[1],f=8191&d,m=d>>>13,g=0|o[2],v=8191&g,y=g>>>13,_=0|o[3],b=8191&_,w=_>>>13,E=0|o[4],k=8191&E,S=E>>>13,x=0|o[5],j=8191&x,N=x>>>13,M=0|o[6],I=8191&M,A=M>>>13,T=0|o[7],R=8191&T,P=T>>>13,O=0|o[8],B=8191&O,C=O>>>13,z=0|o[9],F=8191&z,D=z>>>13,q=0|s[0],L=8191&q,U=q>>>13,H=0|s[1],K=8191&H,W=H>>>13,Z=0|s[2],J=8191&Z,V=Z>>>13,$=0|s[3],G=8191&$,Q=$>>>13,X=0|s[4],Y=8191&X,ee=X>>>13,te=0|s[5],re=8191&te,ie=te>>>13,ne=0|s[6],ae=8191&ne,oe=ne>>>13,se=0|s[7],ue=8191&se,ce=se>>>13,le=0|s[8],he=8191&le,pe=le>>>13,de=0|s[9],fe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ge=(c+(i=Math.imul(h,L))|0)+((8191&(n=(n=Math.imul(h,U))+Math.imul(p,L)|0))<<13)|0;c=((a=Math.imul(p,U))+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(f,L),n=(n=Math.imul(f,U))+Math.imul(m,L)|0,a=Math.imul(m,U);var ve=(c+(i=i+Math.imul(h,K)|0)|0)+((8191&(n=(n=n+Math.imul(h,W)|0)+Math.imul(p,K)|0))<<13)|0;c=((a=a+Math.imul(p,W)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(v,L),n=(n=Math.imul(v,U))+Math.imul(y,L)|0,a=Math.imul(y,U),i=i+Math.imul(f,K)|0,n=(n=n+Math.imul(f,W)|0)+Math.imul(m,K)|0,a=a+Math.imul(m,W)|0;var ye=(c+(i=i+Math.imul(h,J)|0)|0)+((8191&(n=(n=n+Math.imul(h,V)|0)+Math.imul(p,J)|0))<<13)|0;c=((a=a+Math.imul(p,V)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(b,L),n=(n=Math.imul(b,U))+Math.imul(w,L)|0,a=Math.imul(w,U),i=i+Math.imul(v,K)|0,n=(n=n+Math.imul(v,W)|0)+Math.imul(y,K)|0,a=a+Math.imul(y,W)|0,i=i+Math.imul(f,J)|0,n=(n=n+Math.imul(f,V)|0)+Math.imul(m,J)|0,a=a+Math.imul(m,V)|0;var _e=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(n=(n=n+Math.imul(h,Q)|0)+Math.imul(p,G)|0))<<13)|0;c=((a=a+Math.imul(p,Q)|0)+(n>>>13)|0)+(_e>>>26)|0,_e&=67108863,i=Math.imul(k,L),n=(n=Math.imul(k,U))+Math.imul(S,L)|0,a=Math.imul(S,U),i=i+Math.imul(b,K)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(w,K)|0,a=a+Math.imul(w,W)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,V)|0)+Math.imul(y,J)|0,a=a+Math.imul(y,V)|0,i=i+Math.imul(f,G)|0,n=(n=n+Math.imul(f,Q)|0)+Math.imul(m,G)|0,a=a+Math.imul(m,Q)|0;var be=(c+(i=i+Math.imul(h,Y)|0)|0)+((8191&(n=(n=n+Math.imul(h,ee)|0)+Math.imul(p,Y)|0))<<13)|0;c=((a=a+Math.imul(p,ee)|0)+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(j,L),n=(n=Math.imul(j,U))+Math.imul(N,L)|0,a=Math.imul(N,U),i=i+Math.imul(k,K)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(S,K)|0,a=a+Math.imul(S,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,V)|0)+Math.imul(w,J)|0,a=a+Math.imul(w,V)|0,i=i+Math.imul(v,G)|0,n=(n=n+Math.imul(v,Q)|0)+Math.imul(y,G)|0,a=a+Math.imul(y,Q)|0,i=i+Math.imul(f,Y)|0,n=(n=n+Math.imul(f,ee)|0)+Math.imul(m,Y)|0,a=a+Math.imul(m,ee)|0;var we=(c+(i=i+Math.imul(h,re)|0)|0)+((8191&(n=(n=n+Math.imul(h,ie)|0)+Math.imul(p,re)|0))<<13)|0;c=((a=a+Math.imul(p,ie)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(I,L),n=(n=Math.imul(I,U))+Math.imul(A,L)|0,a=Math.imul(A,U),i=i+Math.imul(j,K)|0,n=(n=n+Math.imul(j,W)|0)+Math.imul(N,K)|0,a=a+Math.imul(N,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,V)|0)+Math.imul(S,J)|0,a=a+Math.imul(S,V)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,Q)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,Q)|0,i=i+Math.imul(v,Y)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(y,Y)|0,a=a+Math.imul(y,ee)|0,i=i+Math.imul(f,re)|0,n=(n=n+Math.imul(f,ie)|0)+Math.imul(m,re)|0,a=a+Math.imul(m,ie)|0;var Ee=(c+(i=i+Math.imul(h,ae)|0)|0)+((8191&(n=(n=n+Math.imul(h,oe)|0)+Math.imul(p,ae)|0))<<13)|0;c=((a=a+Math.imul(p,oe)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(R,L),n=(n=Math.imul(R,U))+Math.imul(P,L)|0,a=Math.imul(P,U),i=i+Math.imul(I,K)|0,n=(n=n+Math.imul(I,W)|0)+Math.imul(A,K)|0,a=a+Math.imul(A,W)|0,i=i+Math.imul(j,J)|0,n=(n=n+Math.imul(j,V)|0)+Math.imul(N,J)|0,a=a+Math.imul(N,V)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,Q)|0)+Math.imul(S,G)|0,a=a+Math.imul(S,Q)|0,i=i+Math.imul(b,Y)|0,n=(n=n+Math.imul(b,ee)|0)+Math.imul(w,Y)|0,a=a+Math.imul(w,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(y,re)|0,a=a+Math.imul(y,ie)|0,i=i+Math.imul(f,ae)|0,n=(n=n+Math.imul(f,oe)|0)+Math.imul(m,ae)|0,a=a+Math.imul(m,oe)|0;var ke=(c+(i=i+Math.imul(h,ue)|0)|0)+((8191&(n=(n=n+Math.imul(h,ce)|0)+Math.imul(p,ue)|0))<<13)|0;c=((a=a+Math.imul(p,ce)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(B,L),n=(n=Math.imul(B,U))+Math.imul(C,L)|0,a=Math.imul(C,U),i=i+Math.imul(R,K)|0,n=(n=n+Math.imul(R,W)|0)+Math.imul(P,K)|0,a=a+Math.imul(P,W)|0,i=i+Math.imul(I,J)|0,n=(n=n+Math.imul(I,V)|0)+Math.imul(A,J)|0,a=a+Math.imul(A,V)|0,i=i+Math.imul(j,G)|0,n=(n=n+Math.imul(j,Q)|0)+Math.imul(N,G)|0,a=a+Math.imul(N,Q)|0,i=i+Math.imul(k,Y)|0,n=(n=n+Math.imul(k,ee)|0)+Math.imul(S,Y)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(b,re)|0,n=(n=n+Math.imul(b,ie)|0)+Math.imul(w,re)|0,a=a+Math.imul(w,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,oe)|0)+Math.imul(y,ae)|0,a=a+Math.imul(y,oe)|0,i=i+Math.imul(f,ue)|0,n=(n=n+Math.imul(f,ce)|0)+Math.imul(m,ue)|0,a=a+Math.imul(m,ce)|0;var Se=(c+(i=i+Math.imul(h,he)|0)|0)+((8191&(n=(n=n+Math.imul(h,pe)|0)+Math.imul(p,he)|0))<<13)|0;c=((a=a+Math.imul(p,pe)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(F,L),n=(n=Math.imul(F,U))+Math.imul(D,L)|0,a=Math.imul(D,U),i=i+Math.imul(B,K)|0,n=(n=n+Math.imul(B,W)|0)+Math.imul(C,K)|0,a=a+Math.imul(C,W)|0,i=i+Math.imul(R,J)|0,n=(n=n+Math.imul(R,V)|0)+Math.imul(P,J)|0,a=a+Math.imul(P,V)|0,i=i+Math.imul(I,G)|0,n=(n=n+Math.imul(I,Q)|0)+Math.imul(A,G)|0,a=a+Math.imul(A,Q)|0,i=i+Math.imul(j,Y)|0,n=(n=n+Math.imul(j,ee)|0)+Math.imul(N,Y)|0,a=a+Math.imul(N,ee)|0,i=i+Math.imul(k,re)|0,n=(n=n+Math.imul(k,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(b,ae)|0,n=(n=n+Math.imul(b,oe)|0)+Math.imul(w,ae)|0,a=a+Math.imul(w,oe)|0,i=i+Math.imul(v,ue)|0,n=(n=n+Math.imul(v,ce)|0)+Math.imul(y,ue)|0,a=a+Math.imul(y,ce)|0,i=i+Math.imul(f,he)|0,n=(n=n+Math.imul(f,pe)|0)+Math.imul(m,he)|0,a=a+Math.imul(m,pe)|0;var xe=(c+(i=i+Math.imul(h,fe)|0)|0)+((8191&(n=(n=n+Math.imul(h,me)|0)+Math.imul(p,fe)|0))<<13)|0;c=((a=a+Math.imul(p,me)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(F,K),n=(n=Math.imul(F,W))+Math.imul(D,K)|0,a=Math.imul(D,W),i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,V)|0)+Math.imul(C,J)|0,a=a+Math.imul(C,V)|0,i=i+Math.imul(R,G)|0,n=(n=n+Math.imul(R,Q)|0)+Math.imul(P,G)|0,a=a+Math.imul(P,Q)|0,i=i+Math.imul(I,Y)|0,n=(n=n+Math.imul(I,ee)|0)+Math.imul(A,Y)|0,a=a+Math.imul(A,ee)|0,i=i+Math.imul(j,re)|0,n=(n=n+Math.imul(j,ie)|0)+Math.imul(N,re)|0,a=a+Math.imul(N,ie)|0,i=i+Math.imul(k,ae)|0,n=(n=n+Math.imul(k,oe)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,oe)|0,i=i+Math.imul(b,ue)|0,n=(n=n+Math.imul(b,ce)|0)+Math.imul(w,ue)|0,a=a+Math.imul(w,ce)|0,i=i+Math.imul(v,he)|0,n=(n=n+Math.imul(v,pe)|0)+Math.imul(y,he)|0,a=a+Math.imul(y,pe)|0;var je=(c+(i=i+Math.imul(f,fe)|0)|0)+((8191&(n=(n=n+Math.imul(f,me)|0)+Math.imul(m,fe)|0))<<13)|0;c=((a=a+Math.imul(m,me)|0)+(n>>>13)|0)+(je>>>26)|0,je&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,V))+Math.imul(D,J)|0,a=Math.imul(D,V),i=i+Math.imul(B,G)|0,n=(n=n+Math.imul(B,Q)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,Q)|0,i=i+Math.imul(R,Y)|0,n=(n=n+Math.imul(R,ee)|0)+Math.imul(P,Y)|0,a=a+Math.imul(P,ee)|0,i=i+Math.imul(I,re)|0,n=(n=n+Math.imul(I,ie)|0)+Math.imul(A,re)|0,a=a+Math.imul(A,ie)|0,i=i+Math.imul(j,ae)|0,n=(n=n+Math.imul(j,oe)|0)+Math.imul(N,ae)|0,a=a+Math.imul(N,oe)|0,i=i+Math.imul(k,ue)|0,n=(n=n+Math.imul(k,ce)|0)+Math.imul(S,ue)|0,a=a+Math.imul(S,ce)|0,i=i+Math.imul(b,he)|0,n=(n=n+Math.imul(b,pe)|0)+Math.imul(w,he)|0,a=a+Math.imul(w,pe)|0;var Ne=(c+(i=i+Math.imul(v,fe)|0)|0)+((8191&(n=(n=n+Math.imul(v,me)|0)+Math.imul(y,fe)|0))<<13)|0;c=((a=a+Math.imul(y,me)|0)+(n>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,i=Math.imul(F,G),n=(n=Math.imul(F,Q))+Math.imul(D,G)|0,a=Math.imul(D,Q),i=i+Math.imul(B,Y)|0,n=(n=n+Math.imul(B,ee)|0)+Math.imul(C,Y)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(R,re)|0,n=(n=n+Math.imul(R,ie)|0)+Math.imul(P,re)|0,a=a+Math.imul(P,ie)|0,i=i+Math.imul(I,ae)|0,n=(n=n+Math.imul(I,oe)|0)+Math.imul(A,ae)|0,a=a+Math.imul(A,oe)|0,i=i+Math.imul(j,ue)|0,n=(n=n+Math.imul(j,ce)|0)+Math.imul(N,ue)|0,a=a+Math.imul(N,ce)|0,i=i+Math.imul(k,he)|0,n=(n=n+Math.imul(k,pe)|0)+Math.imul(S,he)|0,a=a+Math.imul(S,pe)|0;var Me=(c+(i=i+Math.imul(b,fe)|0)|0)+((8191&(n=(n=n+Math.imul(b,me)|0)+Math.imul(w,fe)|0))<<13)|0;c=((a=a+Math.imul(w,me)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(F,Y),n=(n=Math.imul(F,ee))+Math.imul(D,Y)|0,a=Math.imul(D,ee),i=i+Math.imul(B,re)|0,n=(n=n+Math.imul(B,ie)|0)+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(R,ae)|0,n=(n=n+Math.imul(R,oe)|0)+Math.imul(P,ae)|0,a=a+Math.imul(P,oe)|0,i=i+Math.imul(I,ue)|0,n=(n=n+Math.imul(I,ce)|0)+Math.imul(A,ue)|0,a=a+Math.imul(A,ce)|0,i=i+Math.imul(j,he)|0,n=(n=n+Math.imul(j,pe)|0)+Math.imul(N,he)|0,a=a+Math.imul(N,pe)|0;var Ie=(c+(i=i+Math.imul(k,fe)|0)|0)+((8191&(n=(n=n+Math.imul(k,me)|0)+Math.imul(S,fe)|0))<<13)|0;c=((a=a+Math.imul(S,me)|0)+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(F,re),n=(n=Math.imul(F,ie))+Math.imul(D,re)|0,a=Math.imul(D,ie),i=i+Math.imul(B,ae)|0,n=(n=n+Math.imul(B,oe)|0)+Math.imul(C,ae)|0,a=a+Math.imul(C,oe)|0,i=i+Math.imul(R,ue)|0,n=(n=n+Math.imul(R,ce)|0)+Math.imul(P,ue)|0,a=a+Math.imul(P,ce)|0,i=i+Math.imul(I,he)|0,n=(n=n+Math.imul(I,pe)|0)+Math.imul(A,he)|0,a=a+Math.imul(A,pe)|0;var Ae=(c+(i=i+Math.imul(j,fe)|0)|0)+((8191&(n=(n=n+Math.imul(j,me)|0)+Math.imul(N,fe)|0))<<13)|0;c=((a=a+Math.imul(N,me)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(F,ae),n=(n=Math.imul(F,oe))+Math.imul(D,ae)|0,a=Math.imul(D,oe),i=i+Math.imul(B,ue)|0,n=(n=n+Math.imul(B,ce)|0)+Math.imul(C,ue)|0,a=a+Math.imul(C,ce)|0,i=i+Math.imul(R,he)|0,n=(n=n+Math.imul(R,pe)|0)+Math.imul(P,he)|0,a=a+Math.imul(P,pe)|0;var Te=(c+(i=i+Math.imul(I,fe)|0)|0)+((8191&(n=(n=n+Math.imul(I,me)|0)+Math.imul(A,fe)|0))<<13)|0;c=((a=a+Math.imul(A,me)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(F,ue),n=(n=Math.imul(F,ce))+Math.imul(D,ue)|0,a=Math.imul(D,ce),i=i+Math.imul(B,he)|0,n=(n=n+Math.imul(B,pe)|0)+Math.imul(C,he)|0,a=a+Math.imul(C,pe)|0;var Re=(c+(i=i+Math.imul(R,fe)|0)|0)+((8191&(n=(n=n+Math.imul(R,me)|0)+Math.imul(P,fe)|0))<<13)|0;c=((a=a+Math.imul(P,me)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(F,he),n=(n=Math.imul(F,pe))+Math.imul(D,he)|0,a=Math.imul(D,pe);var Pe=(c+(i=i+Math.imul(B,fe)|0)|0)+((8191&(n=(n=n+Math.imul(B,me)|0)+Math.imul(C,fe)|0))<<13)|0;c=((a=a+Math.imul(C,me)|0)+(n>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var Oe=(c+(i=Math.imul(F,fe))|0)+((8191&(n=(n=Math.imul(F,me))+Math.imul(D,fe)|0))<<13)|0;return c=((a=Math.imul(D,me))+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ve,u[2]=ye,u[3]=_e,u[4]=be,u[5]=we,u[6]=Ee,u[7]=ke,u[8]=Se,u[9]=xe,u[10]=je,u[11]=Ne,u[12]=Me,u[13]=Ie,u[14]=Ae,u[15]=Te,u[16]=Re,u[17]=Pe,u[18]=Oe,0!==c&&(u[19]=c,r.length++),r};function v(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,i=o,o=n}return 0!==i?r.words[a]=i:r.length--,r._strip()}function y(e,t,r){return v(e,t,r)}function _(e,t){this.x=e,this.y=t}Math.imul||(g=m),a.prototype.mulTo=function(e,t){var r=this.length+e.length;return 10===this.length&&10===e.length?g(this,e,t):r<63?m(this,e,t):r<1024?v(this,e,t):y(this,e,t)},_.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},_.prototype.permute=function(e,t,r,i,n,a){for(var o=0;o>>=1)n++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*t;o>=26,r+=a/67108864|0,r+=o>>>26,this.words[n]=67108863&o}return 0!==r&&(this.words[n]=r,this.length++),t?this.ineg():this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n&1}return t}(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,o=Math.min((e-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,c=0;c=0&&(0!==l||c>=n);c--){var h=0|this.words[c];this.words[c]=l<<26-a|h>>>a,l=h&s}return u&&0!==l&&(u.words[u.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===s)return this._strip();for(i(-1===s),s=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this._strip()},a.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,o=0|n.words[n.length-1];0!=(r=26-this._countBits(o))&&(n=n.ushln(r),i.iushln(r),o=0|n.words[n.length-1]);var s,u=i.length-n.length;if("mod"!==t){(s=new a(null)).length=u+1,s.words=new Array(s.length);for(var c=0;c=0;h--){var p=67108864*(0|i.words[n.length+h])+(0|i.words[n.length+h-1]);for(p=Math.min(p/o|0,67108863),i._ishlnsubmul(n,p,h);0!==i.negative;)p--,i.negative=0,i._ishlnsubmul(n,1,h),i.isZero()||(i.negative^=1);s&&(s.words[h]=p)}return s&&s._strip(),i._strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(n=s.div.neg()),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:n,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modrn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modrn(e.words[0]))}:this._wordDiv(e,t);var n,o,s},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modrn=function(e){var t=e<0;t&&(e=-e),i(e<=67108863);for(var r=(1<<26)%e,n=0,a=this.length-1;a>=0;a--)n=(r*n+(0|this.words[a]))%e;return t?-n:n},a.prototype.modn=function(e){return this.modrn(e)},a.prototype.idivn=function(e){var t=e<0;t&&(e=-e),i(e<=67108863);for(var r=0,n=this.length-1;n>=0;n--){var a=(0|this.words[n])+67108864*r;this.words[n]=a/e|0,r=a%e}return this._strip(),t?this.ineg():this},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new a(1),o=new a(0),s=new a(0),u=new a(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var l=r.clone(),h=t.clone();!t.isZero();){for(var p=0,d=1;0==(t.words[0]&d)&&p<26;++p,d<<=1);if(p>0)for(t.iushrn(p);p-- >0;)(n.isOdd()||o.isOdd())&&(n.iadd(l),o.isub(h)),n.iushrn(1),o.iushrn(1);for(var f=0,m=1;0==(r.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(r.iushrn(f);f-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(l),u.isub(h)),s.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(s),o.isub(u)):(r.isub(t),s.isub(n),u.isub(o))}return{a:s,b:u,gcd:r.iushln(c)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,o=new a(1),s=new a(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,l=1;0==(t.words[0]&l)&&c<26;++c,l<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);for(var h=0,p=1;0==(r.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s)):(r.isub(t),s.isub(o))}return(n=0===t.cmpn(1)?o:s).cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this._strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new j(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var b={k256:null,p224:null,p192:null,p25519:null};function w(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function E(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function k(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function S(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function x(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function j(e){if("string"==typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function N(e){j.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},w.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(e,t){e.iushrn(this.n,0,t)},w.prototype.imulK=function(e){return e.imul(this.k)},n(E,w),E.prototype.split=function(e,t){for(var r=4194303,i=Math.min(e.length,9),n=0;n>>22,a=o}a>>>=22,e.words[n-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},E.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(b[e])return b[e];var t;if("k256"===e)t=new E;else if("p224"===e)t=new k;else if("p192"===e)t=new S;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new x}return b[e]=t,t},j.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},j.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},j.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):(l(e,e.umod(this.m)._forceRed(this)),e)},j.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},j.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},j.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},j.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},j.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},j.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},j.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},j.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},j.prototype.isqr=function(e){return this.imul(e,e.clone())},j.prototype.sqr=function(e){return this.mul(e,e)},j.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),o=0;!n.isZero()&&0===n.andln(1);)o++,n.iushrn(1);i(!n.isZero());var s=new a(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new a(2*l*l).toRed(this);0!==this.pow(l,c).cmp(u);)l.redIAdd(u);for(var h=this.pow(l,n),p=this.pow(e,n.addn(1).iushrn(1)),d=this.pow(e,n),f=o;0!==d.cmp(s);){for(var m=d,g=0;0!==m.cmp(s);g++)m=m.redSqr();i(g=0;i--){for(var c=t.words[i],l=u-1;l>=0;l--){var h=c>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==h||0!==o?(o<<=1,o|=h,(4==++s||0===i&&0===l)&&(n=this.mul(n,r[o]),s=0,o=0)):s=0}u=26}return n},j.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},j.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new N(e)},n(N,j),N.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},N.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},N.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},N.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},N.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=r.nmd(e),this)},29931:(e,t,r)=>{var i;function n(e){this.rand=e}if(e.exports=function(e){return i||(i=new n(null)),i.generate(e)},e.exports.Rand=n,n.prototype.generate=function(e){return this._rand(e)},n.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var t=new Uint8Array(e),r=0;r{var i=r(89509).Buffer;function n(e){i.isBuffer(e)||(e=i.from(e));for(var t=e.length/4|0,r=new Array(t),n=0;n>>24]^l[f>>>16&255]^h[m>>>8&255]^p[255&g]^t[v++],o=c[f>>>24]^l[m>>>16&255]^h[g>>>8&255]^p[255&d]^t[v++],s=c[m>>>24]^l[g>>>16&255]^h[d>>>8&255]^p[255&f]^t[v++],u=c[g>>>24]^l[d>>>16&255]^h[f>>>8&255]^p[255&m]^t[v++],d=a,f=o,m=s,g=u;return a=(i[d>>>24]<<24|i[f>>>16&255]<<16|i[m>>>8&255]<<8|i[255&g])^t[v++],o=(i[f>>>24]<<24|i[m>>>16&255]<<16|i[g>>>8&255]<<8|i[255&d])^t[v++],s=(i[m>>>24]<<24|i[g>>>16&255]<<16|i[d>>>8&255]<<8|i[255&f])^t[v++],u=(i[g>>>24]<<24|i[d>>>16&255]<<16|i[f>>>8&255]<<8|i[255&m])^t[v++],[a>>>=0,o>>>=0,s>>>=0,u>>>=0]}var s=[0,1,2,4,8,16,32,64,128,27,54],u=function(){for(var e=new Array(256),t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;for(var r=[],i=[],n=[[],[],[],[]],a=[[],[],[],[]],o=0,s=0,u=0;u<256;++u){var c=s^s<<1^s<<2^s<<3^s<<4;c=c>>>8^255&c^99,r[o]=c,i[c]=o;var l=e[o],h=e[l],p=e[h],d=257*e[c]^16843008*c;n[0][o]=d<<24|d>>>8,n[1][o]=d<<16|d>>>16,n[2][o]=d<<8|d>>>24,n[3][o]=d,d=16843009*p^65537*h^257*l^16843008*o,a[0][c]=d<<24|d>>>8,a[1][c]=d<<16|d>>>16,a[2][c]=d<<8|d>>>24,a[3][c]=d,0===o?o=s=1:(o=l^e[e[e[p^l]]],s^=e[e[s]])}return{SBOX:r,INV_SBOX:i,SUB_MIX:n,INV_SUB_MIX:a}}();function c(e){this._key=n(e),this._reset()}c.blockSize=16,c.keySize=32,c.prototype.blockSize=c.blockSize,c.prototype.keySize=c.keySize,c.prototype._reset=function(){for(var e=this._key,t=e.length,r=t+6,i=4*(r+1),n=[],a=0;a>>24,o=u.SBOX[o>>>24]<<24|u.SBOX[o>>>16&255]<<16|u.SBOX[o>>>8&255]<<8|u.SBOX[255&o],o^=s[a/t|0]<<24):t>6&&a%t==4&&(o=u.SBOX[o>>>24]<<24|u.SBOX[o>>>16&255]<<16|u.SBOX[o>>>8&255]<<8|u.SBOX[255&o]),n[a]=n[a-t]^o}for(var c=[],l=0;l>>24]]^u.INV_SUB_MIX[1][u.SBOX[p>>>16&255]]^u.INV_SUB_MIX[2][u.SBOX[p>>>8&255]]^u.INV_SUB_MIX[3][u.SBOX[255&p]]}this._nRounds=r,this._keySchedule=n,this._invKeySchedule=c},c.prototype.encryptBlockRaw=function(e){return o(e=n(e),this._keySchedule,u.SUB_MIX,u.SBOX,this._nRounds)},c.prototype.encryptBlock=function(e){var t=this.encryptBlockRaw(e),r=i.allocUnsafe(16);return r.writeUInt32BE(t[0],0),r.writeUInt32BE(t[1],4),r.writeUInt32BE(t[2],8),r.writeUInt32BE(t[3],12),r},c.prototype.decryptBlock=function(e){var t=(e=n(e))[1];e[1]=e[3],e[3]=t;var r=o(e,this._invKeySchedule,u.INV_SUB_MIX,u.INV_SBOX,this._nRounds),a=i.allocUnsafe(16);return a.writeUInt32BE(r[0],0),a.writeUInt32BE(r[3],4),a.writeUInt32BE(r[2],8),a.writeUInt32BE(r[1],12),a},c.prototype.scrub=function(){a(this._keySchedule),a(this._invKeySchedule),a(this._key)},e.exports.AES=c},62422:(e,t,r)=>{var i=r(74497),n=r(89509).Buffer,a=r(71027),o=r(35717),s=r(83288),u=r(67295),c=r(20685);function l(e,t,r,o){a.call(this);var u=n.alloc(4,0);this._cipher=new i.AES(t);var l=this._cipher.encryptBlock(u);this._ghash=new s(l),r=function(e,t,r){if(12===t.length)return e._finID=n.concat([t,n.from([0,0,0,1])]),n.concat([t,n.from([0,0,0,2])]);var i=new s(r),a=t.length,o=a%16;i.update(t),o&&(o=16-o,i.update(n.alloc(o,0))),i.update(n.alloc(8,0));var u=8*a,l=n.alloc(8);l.writeUIntBE(u,0,8),i.update(l),e._finID=i.state;var h=n.from(e._finID);return c(h),h}(this,r,l),this._prev=n.from(r),this._cache=n.allocUnsafe(0),this._secCache=n.allocUnsafe(0),this._decrypt=o,this._alen=0,this._len=0,this._mode=e,this._authTag=null,this._called=!1}o(l,a),l.prototype._update=function(e){if(!this._called&&this._alen){var t=16-this._alen%16;t<16&&(t=n.alloc(t,0),this._ghash.update(t))}this._called=!0;var r=this._mode.encrypt(this,e);return this._decrypt?this._ghash.update(e):this._ghash.update(r),this._len+=e.length,r},l.prototype._final=function(){if(this._decrypt&&!this._authTag)throw new Error("Unsupported state or unable to authenticate data");var e=u(this._ghash.final(8*this._alen,8*this._len),this._cipher.encryptBlock(this._finID));if(this._decrypt&&function(e,t){var r=0;e.length!==t.length&&r++;for(var i=Math.min(e.length,t.length),n=0;n{var i=r(71494),n=r(66193),a=r(44946);t.createCipher=t.Cipher=i.createCipher,t.createCipheriv=t.Cipheriv=i.createCipheriv,t.createDecipher=t.Decipher=n.createDecipher,t.createDecipheriv=t.Decipheriv=n.createDecipheriv,t.listCiphers=t.getCiphers=function(){return Object.keys(a)}},66193:(e,t,r)=>{var i=r(62422),n=r(89509).Buffer,a=r(45),o=r(25969),s=r(71027),u=r(74497),c=r(13048);function l(e,t,r){s.call(this),this._cache=new h,this._last=void 0,this._cipher=new u.AES(t),this._prev=n.from(r),this._mode=e,this._autopadding=!0}function h(){this.cache=n.allocUnsafe(0)}function p(e,t,r){var s=a[e.toLowerCase()];if(!s)throw new TypeError("invalid suite type");if("string"==typeof r&&(r=n.from(r)),"GCM"!==s.mode&&r.length!==s.iv)throw new TypeError("invalid iv length "+r.length);if("string"==typeof t&&(t=n.from(t)),t.length!==s.key/8)throw new TypeError("invalid key length "+t.length);return"stream"===s.type?new o(s.module,t,r,!0):"auth"===s.type?new i(s.module,t,r,!0):new l(s.module,t,r)}r(35717)(l,s),l.prototype._update=function(e){var t,r;this._cache.add(e);for(var i=[];t=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,t),i.push(r);return n.concat(i)},l.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return function(e){var t=e[15];if(t<1||t>16)throw new Error("unable to decrypt data");for(var r=-1;++r16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t}else if(this.cache.length>=16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t;return null},h.prototype.flush=function(){if(this.cache.length)return this.cache},t.createDecipher=function(e,t){var r=a[e.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var i=c(t,!1,r.key,r.iv);return p(e,i.key,i.iv)},t.createDecipheriv=p},71494:(e,t,r)=>{var i=r(45),n=r(62422),a=r(89509).Buffer,o=r(25969),s=r(71027),u=r(74497),c=r(13048);function l(e,t,r){s.call(this),this._cache=new p,this._cipher=new u.AES(t),this._prev=a.from(r),this._mode=e,this._autopadding=!0}r(35717)(l,s),l.prototype._update=function(e){var t,r;this._cache.add(e);for(var i=[];t=this._cache.get();)r=this._mode.encrypt(this,t),i.push(r);return a.concat(i)};var h=a.alloc(16,16);function p(){this.cache=a.allocUnsafe(0)}function d(e,t,r){var s=i[e.toLowerCase()];if(!s)throw new TypeError("invalid suite type");if("string"==typeof t&&(t=a.from(t)),t.length!==s.key/8)throw new TypeError("invalid key length "+t.length);if("string"==typeof r&&(r=a.from(r)),"GCM"!==s.mode&&r.length!==s.iv)throw new TypeError("invalid iv length "+r.length);return"stream"===s.type?new o(s.module,t,r):"auth"===s.type?new n(s.module,t,r):new l(s.module,t,r)}l.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return e=this._mode.encrypt(this,e),this._cipher.scrub(),e;if(!e.equals(h))throw this._cipher.scrub(),new Error("data not multiple of block length")},l.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this},p.prototype.add=function(e){this.cache=a.concat([this.cache,e])},p.prototype.get=function(){if(this.cache.length>15){var e=this.cache.slice(0,16);return this.cache=this.cache.slice(16),e}return null},p.prototype.flush=function(){for(var e=16-this.cache.length,t=a.allocUnsafe(e),r=-1;++r{var i=r(89509).Buffer,n=i.alloc(16,0);function a(e){var t=i.allocUnsafe(16);return t.writeUInt32BE(e[0]>>>0,0),t.writeUInt32BE(e[1]>>>0,4),t.writeUInt32BE(e[2]>>>0,8),t.writeUInt32BE(e[3]>>>0,12),t}function o(e){this.h=e,this.state=i.alloc(16,0),this.cache=i.allocUnsafe(0)}o.prototype.ghash=function(e){for(var t=-1;++t0;t--)i[t]=i[t]>>>1|(1&i[t-1])<<31;i[0]=i[0]>>>1,r&&(i[0]=i[0]^225<<24)}this.state=a(n)},o.prototype.update=function(e){var t;for(this.cache=i.concat([this.cache,e]);this.cache.length>=16;)t=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(t)},o.prototype.final=function(e,t){return this.cache.length&&this.ghash(i.concat([this.cache,n],16)),this.ghash(a([0,e,0,t])),this.state},e.exports=o},20685:e=>{e.exports=function(e){for(var t,r=e.length;r--;){if(255!==(t=e.readUInt8(r))){t++,e.writeUInt8(t,r);break}e.writeUInt8(0,r)}}},25292:(e,t,r)=>{var i=r(67295);t.encrypt=function(e,t){var r=i(t,e._prev);return e._prev=e._cipher.encryptBlock(r),e._prev},t.decrypt=function(e,t){var r=e._prev;e._prev=t;var n=e._cipher.decryptBlock(t);return i(n,r)}},86311:(e,t,r)=>{var i=r(89509).Buffer,n=r(67295);function a(e,t,r){var a=t.length,o=n(t,e._cache);return e._cache=e._cache.slice(a),e._prev=i.concat([e._prev,r?t:o]),o}t.encrypt=function(e,t,r){for(var n,o=i.allocUnsafe(0);t.length;){if(0===e._cache.length&&(e._cache=e._cipher.encryptBlock(e._prev),e._prev=i.allocUnsafe(0)),!(e._cache.length<=t.length)){o=i.concat([o,a(e,t,r)]);break}n=e._cache.length,o=i.concat([o,a(e,t.slice(0,n),r)]),t=t.slice(n)}return o}},21510:(e,t,r)=>{var i=r(89509).Buffer;function n(e,t,r){for(var i,n,o=-1,s=0;++o<8;)i=t&1<<7-o?128:0,s+=(128&(n=e._cipher.encryptBlock(e._prev)[0]^i))>>o%8,e._prev=a(e._prev,r?i:n);return s}function a(e,t){var r=e.length,n=-1,a=i.allocUnsafe(e.length);for(e=i.concat([e,i.from([t])]);++n>7;return a}t.encrypt=function(e,t,r){for(var a=t.length,o=i.allocUnsafe(a),s=-1;++s{var i=r(89509).Buffer;function n(e,t,r){var n=e._cipher.encryptBlock(e._prev)[0]^t;return e._prev=i.concat([e._prev.slice(1),i.from([r?t:n])]),n}t.encrypt=function(e,t,r){for(var a=t.length,o=i.allocUnsafe(a),s=-1;++s{var i=r(67295),n=r(89509).Buffer,a=r(20685);function o(e){var t=e._cipher.encryptBlockRaw(e._prev);return a(e._prev),t}t.encrypt=function(e,t){var r=Math.ceil(t.length/16),a=e._cache.length;e._cache=n.concat([e._cache,n.allocUnsafe(16*r)]);for(var s=0;s{t.encrypt=function(e,t){return e._cipher.encryptBlock(t)},t.decrypt=function(e,t){return e._cipher.decryptBlock(t)}},45:(e,t,r)=>{var i={ECB:r(11084),CBC:r(25292),CFB:r(86311),CFB8:r(71964),CFB1:r(21510),OFB:r(18861),CTR:r(96009),GCM:r(96009)},n=r(44946);for(var a in n)n[a].module=i[n[a].mode];e.exports=n},18861:(e,t,r)=>{var i=r(48764).Buffer,n=r(67295);function a(e){return e._prev=e._cipher.encryptBlock(e._prev),e._prev}t.encrypt=function(e,t){for(;e._cache.length{var i=r(74497),n=r(89509).Buffer,a=r(71027);function o(e,t,r,o){a.call(this),this._cipher=new i.AES(t),this._prev=n.from(r),this._cache=n.allocUnsafe(0),this._secCache=n.allocUnsafe(0),this._decrypt=o,this._mode=e}r(35717)(o,a),o.prototype._update=function(e){return this._mode.encrypt(this,e,this._decrypt)},o.prototype._final=function(){this._cipher.scrub()},e.exports=o},53614:(e,t,r)=>{var i=r(47667),n=r(44696),a=r(45),o=r(99715),s=r(13048);function u(e,t,r){if(e=e.toLowerCase(),a[e])return n.createCipheriv(e,t,r);if(o[e])return new i({key:t,iv:r,mode:e});throw new TypeError("invalid suite type")}function c(e,t,r){if(e=e.toLowerCase(),a[e])return n.createDecipheriv(e,t,r);if(o[e])return new i({key:t,iv:r,mode:e,decrypt:!0});throw new TypeError("invalid suite type")}t.createCipher=t.Cipher=function(e,t){var r,i;if(e=e.toLowerCase(),a[e])r=a[e].key,i=a[e].iv;else{if(!o[e])throw new TypeError("invalid suite type");r=8*o[e].key,i=o[e].iv}var n=s(t,!1,r,i);return u(e,n.key,n.iv)},t.createCipheriv=t.Cipheriv=u,t.createDecipher=t.Decipher=function(e,t){var r,i;if(e=e.toLowerCase(),a[e])r=a[e].key,i=a[e].iv;else{if(!o[e])throw new TypeError("invalid suite type");r=8*o[e].key,i=o[e].iv}var n=s(t,!1,r,i);return c(e,n.key,n.iv)},t.createDecipheriv=t.Decipheriv=c,t.listCiphers=t.getCiphers=function(){return Object.keys(o).concat(n.getCiphers())}},47667:(e,t,r)=>{var i=r(71027),n=r(15251),a=r(35717),o=r(89509).Buffer,s={"des-ede3-cbc":n.CBC.instantiate(n.EDE),"des-ede3":n.EDE,"des-ede-cbc":n.CBC.instantiate(n.EDE),"des-ede":n.EDE,"des-cbc":n.CBC.instantiate(n.DES),"des-ecb":n.DES};function u(e){i.call(this);var t,r=e.mode.toLowerCase(),n=s[r];t=e.decrypt?"decrypt":"encrypt";var a=e.key;o.isBuffer(a)||(a=o.from(a)),"des-ede"!==r&&"des-ede-cbc"!==r||(a=o.concat([a,a.slice(0,8)]));var u=e.iv;o.isBuffer(u)||(u=o.from(u)),this._des=n.create({key:a,iv:u,type:t})}s.des=s["des-cbc"],s.des3=s["des-ede3-cbc"],e.exports=u,a(u,i),u.prototype._update=function(e){return o.from(this._des.update(e))},u.prototype._final=function(){return o.from(this._des.final())}},99715:(e,t)=>{t["des-ecb"]={key:8,iv:0},t["des-cbc"]=t.des={key:8,iv:8},t["des-ede3-cbc"]=t.des3={key:24,iv:8},t["des-ede3"]={key:24,iv:0},t["des-ede-cbc"]={key:16,iv:8},t["des-ede"]={key:16,iv:0}},23663:(e,t,r)=>{var i=r(48764).Buffer,n=r(13550),a=r(61798);function o(e){var t,r=e.modulus.byteLength();do{t=new n(a(r))}while(t.cmp(e.modulus)>=0||!t.umod(e.prime1)||!t.umod(e.prime2));return t}function s(e,t){var r=function(e){var t=o(e);return{blinder:t.toRed(n.mont(e.modulus)).redPow(new n(e.publicExponent)).fromRed(),unblinder:t.invm(e.modulus)}}(t),a=t.modulus.byteLength(),s=new n(e).mul(r.blinder).umod(t.modulus),u=s.toRed(n.mont(t.prime1)),c=s.toRed(n.mont(t.prime2)),l=t.coefficient,h=t.prime1,p=t.prime2,d=u.redPow(t.exponent1).fromRed(),f=c.redPow(t.exponent2).fromRed(),m=d.isub(f).imul(l).umod(h).imul(p);return f.iadd(m).imul(r.unblinder).umod(t.modulus).toArrayLike(i,"be",a)}s.getr=o,e.exports=s},56042:(e,t,r)=>{e.exports=r(75207)},64743:(e,t,r)=>{var i=r(25679).Buffer,n=r(23482),a=r(88473),o=r(35717),s=r(82957),u=r(47753),c=r(75207);function l(e){a.Writable.call(this);var t=c[e];if(!t)throw new Error("Unknown message digest");this._hashType=t.hash,this._hash=n(t.hash),this._tag=t.id,this._signType=t.sign}function h(e){a.Writable.call(this);var t=c[e];if(!t)throw new Error("Unknown message digest");this._hash=n(t.hash),this._tag=t.id,this._signType=t.sign}function p(e){return new l(e)}function d(e){return new h(e)}Object.keys(c).forEach((function(e){c[e].id=i.from(c[e].id,"hex"),c[e.toLowerCase()]=c[e]})),o(l,a.Writable),l.prototype._write=function(e,t,r){this._hash.update(e),r()},l.prototype.update=function(e,t){return"string"==typeof e&&(e=i.from(e,t)),this._hash.update(e),this},l.prototype.sign=function(e,t){this.end();var r=this._hash.digest(),i=s(r,e,this._hashType,this._signType,this._tag);return t?i.toString(t):i},o(h,a.Writable),h.prototype._write=function(e,t,r){this._hash.update(e),r()},h.prototype.update=function(e,t){return"string"==typeof e&&(e=i.from(e,t)),this._hash.update(e),this},h.prototype.verify=function(e,t,r){"string"==typeof t&&(t=i.from(t,r)),this.end();var n=this._hash.digest();return u(t,n,e,this._signType,this._tag)},e.exports={Sign:p,Verify:d,createSign:p,createVerify:d}},82957:(e,t,r)=>{var i=r(25679).Buffer,n=r(58355),a=r(23663),o=r(86266).ec,s=r(13550),u=r(70980),c=r(1308);function l(e,t,r,a){if((e=i.from(e.toArray())).length0&&r.ishrn(i),r}function p(e,t,r){var a,o;do{for(a=i.alloc(0);8*a.length{var i=r(25679).Buffer,n=r(13550),a=r(86266).ec,o=r(70980),s=r(1308);function u(e,t){if(e.cmpn(0)<=0)throw new Error("invalid sig");if(e.cmp(t)>=t)throw new Error("invalid sig")}e.exports=function(e,t,r,c,l){var h=o(r);if("ec"===h.type){if("ecdsa"!==c&&"ecdsa/rsa"!==c)throw new Error("wrong public key type");return function(e,t,r){var i=s[r.data.algorithm.curve.join(".")];if(!i)throw new Error("unknown curve "+r.data.algorithm.curve.join("."));var n=new a(i),o=r.data.subjectPrivateKey.data;return n.verify(t,e,o)}(e,t,h)}if("dsa"===h.type){if("dsa"!==c)throw new Error("wrong public key type");return function(e,t,r){var i=r.data.p,a=r.data.q,s=r.data.g,c=r.data.pub_key,l=o.signature.decode(e,"der"),h=l.s,p=l.r;u(h,a),u(p,a);var d=n.mont(i),f=h.invm(a);return 0===s.toRed(d).redPow(new n(t).mul(f).mod(a)).fromRed().mul(c.toRed(d).redPow(p.mul(f).mod(a)).fromRed()).mod(i).mod(a).cmp(p)}(e,t,h)}if("rsa"!==c&&"ecdsa/rsa"!==c)throw new Error("wrong public key type");t=i.concat([l,t]);for(var p=h.modulus.byteLength(),d=[1],f=0;t.length+d.length+2{var i=r(48764),n=i.Buffer;function a(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=i:(a(i,t),t.Buffer=o),o.prototype=Object.create(n.prototype),a(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i.SlowBuffer(e)}},74505:(e,t,r)=>{"use strict";var i=r(48764).Buffer,n=r(34155),a=r(69282),o=r(62292),s=r(30405),u=r(27948),c=r(71619);for(var l in c)t[l]=c[l];function h(e){if("number"!=typeof e||et.UNZIP)throw new TypeError("Bad argument");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=e,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}t.NONE=0,t.DEFLATE=1,t.INFLATE=2,t.GZIP=3,t.GUNZIP=4,t.DEFLATERAW=5,t.INFLATERAW=6,t.UNZIP=7,h.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,a(this.init_done,"close before init"),a(this.mode<=t.UNZIP),this.mode===t.DEFLATE||this.mode===t.GZIP||this.mode===t.DEFLATERAW?s.deflateEnd(this.strm):this.mode!==t.INFLATE&&this.mode!==t.GUNZIP&&this.mode!==t.INFLATERAW&&this.mode!==t.UNZIP||u.inflateEnd(this.strm),this.mode=t.NONE,this.dictionary=null)},h.prototype.write=function(e,t,r,i,n,a,o){return this._write(!0,e,t,r,i,n,a,o)},h.prototype.writeSync=function(e,t,r,i,n,a,o){return this._write(!1,e,t,r,i,n,a,o)},h.prototype._write=function(e,r,o,s,u,c,l,h){if(a.equal(arguments.length,8),a(this.init_done,"write before init"),a(this.mode!==t.NONE,"already finalized"),a.equal(!1,this.write_in_progress,"write already in progress"),a.equal(!1,this.pending_close,"close is pending"),this.write_in_progress=!0,a.equal(!1,void 0===r,"must provide flush value"),this.write_in_progress=!0,r!==t.Z_NO_FLUSH&&r!==t.Z_PARTIAL_FLUSH&&r!==t.Z_SYNC_FLUSH&&r!==t.Z_FULL_FLUSH&&r!==t.Z_FINISH&&r!==t.Z_BLOCK)throw new Error("Invalid flush value");if(null==o&&(o=i.alloc(0),u=0,s=0),this.strm.avail_in=u,this.strm.input=o,this.strm.next_in=s,this.strm.avail_out=h,this.strm.output=c,this.strm.next_out=l,this.flush=r,!e)return this._process(),this._checkError()?this._afterSync():void 0;var p=this;return n.nextTick((function(){p._process(),p._after()})),this},h.prototype._afterSync=function(){var e=this.strm.avail_out,t=this.strm.avail_in;return this.write_in_progress=!1,[t,e]},h.prototype._process=function(){var e=null;switch(this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=s.deflate(this.strm,this.flush);break;case t.UNZIP:switch(this.strm.avail_in>0&&(e=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===e)break;if(31!==this.strm.input[e]){this.mode=t.INFLATE;break}if(this.gzip_id_bytes_read=1,e++,1===this.strm.avail_in)break;case 1:if(null===e)break;139===this.strm.input[e]?(this.gzip_id_bytes_read=2,this.mode=t.GUNZIP):this.mode=t.INFLATE;break;default:throw new Error("invalid number of gzip magic number bytes read")}case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:for(this.err=u.inflate(this.strm,this.flush),this.err===t.Z_NEED_DICT&&this.dictionary&&(this.err=u.inflateSetDictionary(this.strm,this.dictionary),this.err===t.Z_OK?this.err=u.inflate(this.strm,this.flush):this.err===t.Z_DATA_ERROR&&(this.err=t.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===t.GUNZIP&&this.err===t.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=u.inflate(this.strm,this.flush);break;default:throw new Error("Unknown mode "+this.mode)}},h.prototype._checkError=function(){switch(this.err){case t.Z_OK:case t.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===t.Z_FINISH)return this._error("unexpected end of file"),!1;break;case t.Z_STREAM_END:break;case t.Z_NEED_DICT:return null==this.dictionary?this._error("Missing dictionary"):this._error("Bad dictionary"),!1;default:return this._error("Zlib error"),!1}return!0},h.prototype._after=function(){if(this._checkError()){var e=this.strm.avail_out,t=this.strm.avail_in;this.write_in_progress=!1,this.callback(t,e),this.pending_close&&this.close()}},h.prototype._error=function(e){this.strm.msg&&(e=this.strm.msg),this.onerror(e,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},h.prototype.init=function(e,r,i,n,o){a(4===arguments.length||5===arguments.length,"init(windowBits, level, memLevel, strategy, [dictionary])"),a(e>=8&&e<=15,"invalid windowBits"),a(r>=-1&&r<=9,"invalid compression level"),a(i>=1&&i<=9,"invalid memlevel"),a(n===t.Z_FILTERED||n===t.Z_HUFFMAN_ONLY||n===t.Z_RLE||n===t.Z_FIXED||n===t.Z_DEFAULT_STRATEGY,"invalid strategy"),this._init(r,e,i,n,o),this._setDictionary()},h.prototype.params=function(){throw new Error("deflateParams Not supported")},h.prototype.reset=function(){this._reset(),this._setDictionary()},h.prototype._init=function(e,r,i,n,a){switch(this.level=e,this.windowBits=r,this.memLevel=i,this.strategy=n,this.flush=t.Z_NO_FLUSH,this.err=t.Z_OK,this.mode!==t.GZIP&&this.mode!==t.GUNZIP||(this.windowBits+=16),this.mode===t.UNZIP&&(this.windowBits+=32),this.mode!==t.DEFLATERAW&&this.mode!==t.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new o,this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=s.deflateInit2(this.strm,this.level,t.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:case t.UNZIP:this.err=u.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}this.err!==t.Z_OK&&this._error("Init error"),this.dictionary=a,this.write_in_progress=!1,this.init_done=!0},h.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:this.err=s.deflateSetDictionary(this.strm,this.dictionary)}this.err!==t.Z_OK&&this._error("Failed to set dictionary")}},h.prototype._reset=function(){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:case t.GZIP:this.err=s.deflateReset(this.strm);break;case t.INFLATE:case t.INFLATERAW:case t.GUNZIP:this.err=u.inflateReset(this.strm)}this.err!==t.Z_OK&&this._error("Failed to reset stream")},t.Zlib=h},42635:(e,t,r)=>{"use strict";var i=r(34155),n=r(48764).Buffer,a=r(42830).Transform,o=r(74505),s=r(89539),u=r(69282).ok,c=r(48764).kMaxLength,l="Cannot create final Buffer. It would be larger than 0x"+c.toString(16)+" bytes";o.Z_MIN_WINDOWBITS=8,o.Z_MAX_WINDOWBITS=15,o.Z_DEFAULT_WINDOWBITS=15,o.Z_MIN_CHUNK=64,o.Z_MAX_CHUNK=1/0,o.Z_DEFAULT_CHUNK=16384,o.Z_MIN_MEMLEVEL=1,o.Z_MAX_MEMLEVEL=9,o.Z_DEFAULT_MEMLEVEL=8,o.Z_MIN_LEVEL=-1,o.Z_MAX_LEVEL=9,o.Z_DEFAULT_LEVEL=o.Z_DEFAULT_COMPRESSION;for(var h=Object.keys(o),p=0;p=c?o=new RangeError(l):t=n.concat(i,a),i=[],e.close(),r(o,t)}e.on("error",(function(t){e.removeListener("end",s),e.removeListener("readable",o),r(t)})),e.on("end",s),e.end(t),o()}function _(e,t){if("string"==typeof t&&(t=n.from(t)),!n.isBuffer(t))throw new TypeError("Not a string or buffer");var r=e._finishFlushFlag;return e._processChunk(t,r)}function b(e){if(!(this instanceof b))return new b(e);M.call(this,e,o.DEFLATE)}function w(e){if(!(this instanceof w))return new w(e);M.call(this,e,o.INFLATE)}function E(e){if(!(this instanceof E))return new E(e);M.call(this,e,o.GZIP)}function k(e){if(!(this instanceof k))return new k(e);M.call(this,e,o.GUNZIP)}function S(e){if(!(this instanceof S))return new S(e);M.call(this,e,o.DEFLATERAW)}function x(e){if(!(this instanceof x))return new x(e);M.call(this,e,o.INFLATERAW)}function j(e){if(!(this instanceof j))return new j(e);M.call(this,e,o.UNZIP)}function N(e){return e===o.Z_NO_FLUSH||e===o.Z_PARTIAL_FLUSH||e===o.Z_SYNC_FLUSH||e===o.Z_FULL_FLUSH||e===o.Z_FINISH||e===o.Z_BLOCK}function M(e,r){var i=this;if(this._opts=e=e||{},this._chunkSize=e.chunkSize||t.Z_DEFAULT_CHUNK,a.call(this,e),e.flush&&!N(e.flush))throw new Error("Invalid flush flag: "+e.flush);if(e.finishFlush&&!N(e.finishFlush))throw new Error("Invalid flush flag: "+e.finishFlush);if(this._flushFlag=e.flush||o.Z_NO_FLUSH,this._finishFlushFlag=void 0!==e.finishFlush?e.finishFlush:o.Z_FINISH,e.chunkSize&&(e.chunkSizet.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+e.chunkSize);if(e.windowBits&&(e.windowBitst.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+e.windowBits);if(e.level&&(e.levelt.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+e.level);if(e.memLevel&&(e.memLevelt.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+e.memLevel);if(e.strategy&&e.strategy!=t.Z_FILTERED&&e.strategy!=t.Z_HUFFMAN_ONLY&&e.strategy!=t.Z_RLE&&e.strategy!=t.Z_FIXED&&e.strategy!=t.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+e.strategy);if(e.dictionary&&!n.isBuffer(e.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._handle=new o.Zlib(r);var s=this;this._hadError=!1,this._handle.onerror=function(e,r){I(s),s._hadError=!0;var i=new Error(e);i.errno=r,i.code=t.codes[r],s.emit("error",i)};var u=t.Z_DEFAULT_COMPRESSION;"number"==typeof e.level&&(u=e.level);var c=t.Z_DEFAULT_STRATEGY;"number"==typeof e.strategy&&(c=e.strategy),this._handle.init(e.windowBits||t.Z_DEFAULT_WINDOWBITS,u,e.memLevel||t.Z_DEFAULT_MEMLEVEL,c,e.dictionary),this._buffer=n.allocUnsafe(this._chunkSize),this._offset=0,this._level=u,this._strategy=c,this.once("end",this.close),Object.defineProperty(this,"_closed",{get:function(){return!i._handle},configurable:!0,enumerable:!0})}function I(e,t){t&&i.nextTick(t),e._handle&&(e._handle.close(),e._handle=null)}function A(e){e.emit("close")}Object.defineProperty(t,"codes",{enumerable:!0,value:Object.freeze(f),writable:!1}),t.Deflate=b,t.Inflate=w,t.Gzip=E,t.Gunzip=k,t.DeflateRaw=S,t.InflateRaw=x,t.Unzip=j,t.createDeflate=function(e){return new b(e)},t.createInflate=function(e){return new w(e)},t.createDeflateRaw=function(e){return new S(e)},t.createInflateRaw=function(e){return new x(e)},t.createGzip=function(e){return new E(e)},t.createGunzip=function(e){return new k(e)},t.createUnzip=function(e){return new j(e)},t.deflate=function(e,t,r){return"function"==typeof t&&(r=t,t={}),y(new b(t),e,r)},t.deflateSync=function(e,t){return _(new b(t),e)},t.gzip=function(e,t,r){return"function"==typeof t&&(r=t,t={}),y(new E(t),e,r)},t.gzipSync=function(e,t){return _(new E(t),e)},t.deflateRaw=function(e,t,r){return"function"==typeof t&&(r=t,t={}),y(new S(t),e,r)},t.deflateRawSync=function(e,t){return _(new S(t),e)},t.unzip=function(e,t,r){return"function"==typeof t&&(r=t,t={}),y(new j(t),e,r)},t.unzipSync=function(e,t){return _(new j(t),e)},t.inflate=function(e,t,r){return"function"==typeof t&&(r=t,t={}),y(new w(t),e,r)},t.inflateSync=function(e,t){return _(new w(t),e)},t.gunzip=function(e,t,r){return"function"==typeof t&&(r=t,t={}),y(new k(t),e,r)},t.gunzipSync=function(e,t){return _(new k(t),e)},t.inflateRaw=function(e,t,r){return"function"==typeof t&&(r=t,t={}),y(new x(t),e,r)},t.inflateRawSync=function(e,t){return _(new x(t),e)},s.inherits(M,a),M.prototype.params=function(e,r,n){if(et.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+e);if(r!=t.Z_FILTERED&&r!=t.Z_HUFFMAN_ONLY&&r!=t.Z_RLE&&r!=t.Z_FIXED&&r!=t.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+r);if(this._level!==e||this._strategy!==r){var a=this;this.flush(o.Z_SYNC_FLUSH,(function(){u(a._handle,"zlib binding closed"),a._handle.params(e,r),a._hadError||(a._level=e,a._strategy=r,n&&n())}))}else i.nextTick(n)},M.prototype.reset=function(){return u(this._handle,"zlib binding closed"),this._handle.reset()},M.prototype._flush=function(e){this._transform(n.alloc(0),"",e)},M.prototype.flush=function(e,t){var r=this,a=this._writableState;("function"==typeof e||void 0===e&&!t)&&(t=e,e=o.Z_FULL_FLUSH),a.ended?t&&i.nextTick(t):a.ending?t&&this.once("end",t):a.needDrain?t&&this.once("drain",(function(){return r.flush(e,t)})):(this._flushFlag=e,this.write(n.alloc(0),"",t))},M.prototype.close=function(e){I(this,e),i.nextTick(A,this)},M.prototype._transform=function(e,t,r){var i,a=this._writableState,s=(a.ending||a.ended)&&(!e||a.length===e.length);return null===e||n.isBuffer(e)?this._handle?(s?i=this._finishFlushFlag:(i=this._flushFlag,e.length>=a.length&&(this._flushFlag=this._opts.flush||o.Z_NO_FLUSH)),void this._processChunk(e,i,r)):r(new Error("zlib binding closed")):r(new Error("invalid input"))},M.prototype._processChunk=function(e,t,r){var i=e&&e.length,a=this._chunkSize-this._offset,o=0,s=this,h="function"==typeof r;if(!h){var p,d=[],f=0;this.on("error",(function(e){p=e})),u(this._handle,"zlib binding closed");do{var m=this._handle.writeSync(t,e,o,i,this._buffer,this._offset,a)}while(!this._hadError&&y(m[0],m[1]));if(this._hadError)throw p;if(f>=c)throw I(this),new RangeError(l);var g=n.concat(d,f);return I(this),g}u(this._handle,"zlib binding closed");var v=this._handle.write(t,e,o,i,this._buffer,this._offset,a);function y(c,l){if(this&&(this.buffer=null,this.callback=null),!s._hadError){var p=a-l;if(u(p>=0,"have should not go down"),p>0){var m=s._buffer.slice(s._offset,s._offset+p);s._offset+=p,h?s.push(m):(d.push(m),f+=m.length)}if((0===l||s._offset>=s._chunkSize)&&(a=s._chunkSize,s._offset=0,s._buffer=n.allocUnsafe(s._chunkSize)),0===l){if(o+=i-c,i=c,!h)return!0;var g=s._handle.write(t,e,o,i,s._buffer,s._offset,s._chunkSize);return g.callback=y,void(g.buffer=e)}if(!h)return!1;r()}}v.buffer=e,v.callback=y},s.inherits(b,M),s.inherits(w,M),s.inherits(E,M),s.inherits(k,M),s.inherits(S,M),s.inherits(x,M),s.inherits(j,M)},67295:(e,t,r)=>{var i=r(48764).Buffer;e.exports=function(e,t){for(var r=Math.min(e.length,t.length),n=new i(r),a=0;a{"use strict";const i=r(79742),n=r(80645),a="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=u,t.SlowBuffer=function(e){return+e!=e&&(e=0),u.alloc(+e)},t.INSPECT_MAX_BYTES=50;const o=2147483647;function s(e){if(e>o)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,u.prototype),t}function u(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return h(e)}return c(e,t,r)}function c(e,t,r){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!u.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const r=0|m(e,t);let i=s(r);const n=i.write(e,t);return n!==r&&(i=i.slice(0,n)),i}(e,t);if(ArrayBuffer.isView(e))return function(e){if($(e,Uint8Array)){const t=new Uint8Array(e);return d(t.buffer,t.byteOffset,t.byteLength)}return p(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if($(e,ArrayBuffer)||e&&$(e.buffer,ArrayBuffer))return d(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&($(e,SharedArrayBuffer)||e&&$(e.buffer,SharedArrayBuffer)))return d(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const i=e.valueOf&&e.valueOf();if(null!=i&&i!==e)return u.from(i,t,r);const n=function(e){if(u.isBuffer(e)){const t=0|f(e.length),r=s(t);return 0===r.length||e.copy(r,0,0,t),r}return void 0!==e.length?"number"!=typeof e.length||G(e.length)?s(0):p(e):"Buffer"===e.type&&Array.isArray(e.data)?p(e.data):void 0}(e);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return u.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function l(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function h(e){return l(e),s(e<0?0:0|f(e))}function p(e){const t=e.length<0?0:0|f(e.length),r=s(t);for(let i=0;i=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|e}function m(e,t){if(u.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||$(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const r=e.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===r)return 0;let n=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return Z(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return J(e).length;default:if(n)return i?-1:Z(e).length;t=(""+t).toLowerCase(),n=!0}}function g(e,t,r){let i=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return A(this,t,r);case"utf8":case"utf-8":return j(this,t,r);case"ascii":return M(this,t,r);case"latin1":case"binary":return I(this,t,r);case"base64":return x(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,r);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),i=!0}}function v(e,t,r){const i=e[t];e[t]=e[r],e[r]=i}function y(e,t,r,i,n){if(0===e.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),G(r=+r)&&(r=n?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(n)return-1;r=e.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof t&&(t=u.from(t,i)),u.isBuffer(t))return 0===t.length?-1:_(e,t,r,i,n);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):_(e,[t],r,i,n);throw new TypeError("val must be string, number or Buffer")}function _(e,t,r,i,n){let a,o=1,s=e.length,u=t.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||t.length<2)return-1;o=2,s/=2,u/=2,r/=2}function c(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(n){let i=-1;for(a=r;as&&(r=s-u),a=r;a>=0;a--){let r=!0;for(let i=0;in&&(i=n):i=n;const a=t.length;let o;for(i>a/2&&(i=a/2),o=0;o>8,n=r%256,a.push(n),a.push(i);return a}(t,e.length-r),e,r,i)}function x(e,t,r){return 0===t&&r===e.length?i.fromByteArray(e):i.fromByteArray(e.slice(t,r))}function j(e,t,r){r=Math.min(e.length,r);const i=[];let n=t;for(;n239?4:t>223?3:t>191?2:1;if(n+o<=r){let r,i,s,u;switch(o){case 1:t<128&&(a=t);break;case 2:r=e[n+1],128==(192&r)&&(u=(31&t)<<6|63&r,u>127&&(a=u));break;case 3:r=e[n+1],i=e[n+2],128==(192&r)&&128==(192&i)&&(u=(15&t)<<12|(63&r)<<6|63&i,u>2047&&(u<55296||u>57343)&&(a=u));break;case 4:r=e[n+1],i=e[n+2],s=e[n+3],128==(192&r)&&128==(192&i)&&128==(192&s)&&(u=(15&t)<<18|(63&r)<<12|(63&i)<<6|63&s,u>65535&&u<1114112&&(a=u))}}null===a?(a=65533,o=1):a>65535&&(a-=65536,i.push(a>>>10&1023|55296),a=56320|1023&a),i.push(a),n+=o}return function(e){const t=e.length;if(t<=N)return String.fromCharCode.apply(String,e);let r="",i=0;for(;ii.length?(u.isBuffer(t)||(t=u.from(t)),t.copy(i,n)):Uint8Array.prototype.set.call(i,t,n);else{if(!u.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(i,n)}n+=t.length}return i},u.byteLength=m,u.prototype._isBuffer=!0,u.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tr&&(e+=" ... "),""},a&&(u.prototype[a]=u.prototype.inspect),u.prototype.compare=function(e,t,r,i,n){if($(e,Uint8Array)&&(e=u.from(e,e.offset,e.byteLength)),!u.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),t<0||r>e.length||i<0||n>this.length)throw new RangeError("out of range index");if(i>=n&&t>=r)return 0;if(i>=n)return-1;if(t>=r)return 1;if(this===e)return 0;let a=(n>>>=0)-(i>>>=0),o=(r>>>=0)-(t>>>=0);const s=Math.min(a,o),c=this.slice(i,n),l=e.slice(t,r);for(let e=0;e>>=0,isFinite(r)?(r>>>=0,void 0===i&&(i="utf8")):(i=r,r=void 0)}const n=this.length-t;if((void 0===r||r>n)&&(r=n),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let a=!1;for(;;)switch(i){case"hex":return b(this,e,t,r);case"utf8":case"utf-8":return w(this,e,t,r);case"ascii":case"latin1":case"binary":return E(this,e,t,r);case"base64":return k(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,r);default:if(a)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),a=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const N=4096;function M(e,t,r){let i="";r=Math.min(e.length,r);for(let n=t;ni)&&(r=i);let n="";for(let i=t;ir)throw new RangeError("Trying to access beyond buffer length")}function P(e,t,r,i,n,a){if(!u.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>n||te.length)throw new RangeError("Index out of range")}function O(e,t,r,i,n){U(t,i,n,e,r,7);let a=Number(t&BigInt(4294967295));e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,r}function B(e,t,r,i,n){U(t,i,n,e,r,7);let a=Number(t&BigInt(4294967295));e[r+7]=a,a>>=8,e[r+6]=a,a>>=8,e[r+5]=a,a>>=8,e[r+4]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=o,o>>=8,e[r+2]=o,o>>=8,e[r+1]=o,o>>=8,e[r]=o,r+8}function C(e,t,r,i,n,a){if(r+i>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function z(e,t,r,i,a){return t=+t,r>>>=0,a||C(e,0,r,4),n.write(e,t,r,i,23,4),r+4}function F(e,t,r,i,a){return t=+t,r>>>=0,a||C(e,0,r,8),n.write(e,t,r,i,52,8),r+8}u.prototype.slice=function(e,t){const r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||R(e,t,this.length);let i=this[e],n=1,a=0;for(;++a>>=0,t>>>=0,r||R(e,t,this.length);let i=this[e+--t],n=1;for(;t>0&&(n*=256);)i+=this[e+--t]*n;return i},u.prototype.readUint8=u.prototype.readUInt8=function(e,t){return e>>>=0,t||R(e,1,this.length),this[e]},u.prototype.readUint16LE=u.prototype.readUInt16LE=function(e,t){return e>>>=0,t||R(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUint16BE=u.prototype.readUInt16BE=function(e,t){return e>>>=0,t||R(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUint32LE=u.prototype.readUInt32LE=function(e,t){return e>>>=0,t||R(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUint32BE=u.prototype.readUInt32BE=function(e,t){return e>>>=0,t||R(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readBigUInt64LE=X((function(e){H(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||K(e,this.length-8);const i=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,n=this[++e]+256*this[++e]+65536*this[++e]+r*2**24;return BigInt(i)+(BigInt(n)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||K(e,this.length-8);const i=t*2**24+65536*this[++e]+256*this[++e]+this[++e],n=this[++e]*2**24+65536*this[++e]+256*this[++e]+r;return(BigInt(i)<>>=0,t>>>=0,r||R(e,t,this.length);let i=this[e],n=1,a=0;for(;++a=n&&(i-=Math.pow(2,8*t)),i},u.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||R(e,t,this.length);let i=t,n=1,a=this[e+--i];for(;i>0&&(n*=256);)a+=this[e+--i]*n;return n*=128,a>=n&&(a-=Math.pow(2,8*t)),a},u.prototype.readInt8=function(e,t){return e>>>=0,t||R(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function(e,t){e>>>=0,t||R(e,2,this.length);const r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt16BE=function(e,t){e>>>=0,t||R(e,2,this.length);const r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt32LE=function(e,t){return e>>>=0,t||R(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function(e,t){return e>>>=0,t||R(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readBigInt64LE=X((function(e){H(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||K(e,this.length-8);const i=this[e+4]+256*this[e+5]+65536*this[e+6]+(r<<24);return(BigInt(i)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||K(e,this.length-8);const i=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(i)<>>=0,t||R(e,4,this.length),n.read(this,e,!0,23,4)},u.prototype.readFloatBE=function(e,t){return e>>>=0,t||R(e,4,this.length),n.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function(e,t){return e>>>=0,t||R(e,8,this.length),n.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function(e,t){return e>>>=0,t||R(e,8,this.length),n.read(this,e,!1,52,8)},u.prototype.writeUintLE=u.prototype.writeUIntLE=function(e,t,r,i){e=+e,t>>>=0,r>>>=0,i||P(this,e,t,r,Math.pow(2,8*r)-1,0);let n=1,a=0;for(this[t]=255&e;++a>>=0,r>>>=0,i||P(this,e,t,r,Math.pow(2,8*r)-1,0);let n=r-1,a=1;for(this[t+n]=255&e;--n>=0&&(a*=256);)this[t+n]=e/a&255;return t+r},u.prototype.writeUint8=u.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,1,255,0),this[t]=255&e,t+1},u.prototype.writeUint16LE=u.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},u.prototype.writeUint16BE=u.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},u.prototype.writeUint32LE=u.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},u.prototype.writeUint32BE=u.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},u.prototype.writeBigUInt64LE=X((function(e,t=0){return O(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),u.prototype.writeBigUInt64BE=X((function(e,t=0){return B(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),u.prototype.writeIntLE=function(e,t,r,i){if(e=+e,t>>>=0,!i){const i=Math.pow(2,8*r-1);P(this,e,t,r,i-1,-i)}let n=0,a=1,o=0;for(this[t]=255&e;++n>0)-o&255;return t+r},u.prototype.writeIntBE=function(e,t,r,i){if(e=+e,t>>>=0,!i){const i=Math.pow(2,8*r-1);P(this,e,t,r,i-1,-i)}let n=r-1,a=1,o=0;for(this[t+n]=255&e;--n>=0&&(a*=256);)e<0&&0===o&&0!==this[t+n+1]&&(o=1),this[t+n]=(e/a>>0)-o&255;return t+r},u.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},u.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},u.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},u.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},u.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},u.prototype.writeBigInt64LE=X((function(e,t=0){return O(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),u.prototype.writeBigInt64BE=X((function(e,t=0){return B(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),u.prototype.writeFloatLE=function(e,t,r){return z(this,e,t,!0,r)},u.prototype.writeFloatBE=function(e,t,r){return z(this,e,t,!1,r)},u.prototype.writeDoubleLE=function(e,t,r){return F(this,e,t,!0,r)},u.prototype.writeDoubleBE=function(e,t,r){return F(this,e,t,!1,r)},u.prototype.copy=function(e,t,r,i){if(!u.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(n=t;n=i+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function U(e,t,r,i,n,a){if(e>r||e3?0===t||t===BigInt(0)?`>= 0${i} and < 2${i} ** ${8*(a+1)}${i}`:`>= -(2${i} ** ${8*(a+1)-1}${i}) and < 2 ** ${8*(a+1)-1}${i}`:`>= ${t}${i} and <= ${r}${i}`,new D.ERR_OUT_OF_RANGE("value",n,e)}!function(e,t,r){H(t,"offset"),void 0!==e[t]&&void 0!==e[t+r]||K(t,e.length-(r+1))}(i,n,a)}function H(e,t){if("number"!=typeof e)throw new D.ERR_INVALID_ARG_TYPE(t,"number",e)}function K(e,t,r){if(Math.floor(e)!==e)throw H(e,r),new D.ERR_OUT_OF_RANGE(r||"offset","an integer",e);if(t<0)throw new D.ERR_BUFFER_OUT_OF_BOUNDS;throw new D.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}q("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),q("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),q("ERR_OUT_OF_RANGE",(function(e,t,r){let i=`The value of "${e}" is out of range.`,n=r;return Number.isInteger(r)&&Math.abs(r)>2**32?n=L(String(r)):"bigint"==typeof r&&(n=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(n=L(n)),n+="n"),i+=` It must be ${t}. Received ${n}`,i}),RangeError);const W=/[^+/0-9A-Za-z-_]/g;function Z(e,t){let r;t=t||1/0;const i=e.length;let n=null;const a=[];for(let o=0;o55295&&r<57344){if(!n){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===i){(t-=3)>-1&&a.push(239,191,189);continue}n=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(t-=3)>-1&&a.push(239,191,189);if(n=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function J(e){return i.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(W,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function V(e,t,r,i){let n;for(n=0;n=t.length||n>=e.length);++n)t[n+r]=e[n];return n}function $(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function G(e){return e!=e}const Q=function(){const e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){const i=16*r;for(let n=0;n<16;++n)t[i+n]=e[r]+e[n]}return t}();function X(e){return"undefined"==typeof BigInt?Y:e}function Y(){throw new Error("BigInt not supported")}},50584:e=>{e.exports={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"}},21924:(e,t,r)=>{"use strict";var i=r(40210),n=r(55559),a=n(i("String.prototype.indexOf"));e.exports=function(e,t){var r=i(e,!!t);return"function"==typeof r&&a(e,".prototype.")>-1?n(r):r}},55559:(e,t,r)=>{"use strict";var i=r(58612),n=r(40210),a=n("%Function.prototype.apply%"),o=n("%Function.prototype.call%"),s=n("%Reflect.apply%",!0)||i.call(o,a),u=n("%Object.getOwnPropertyDescriptor%",!0),c=n("%Object.defineProperty%",!0),l=n("%Math.max%");if(c)try{c({},"a",{value:1})}catch(e){c=null}e.exports=function(e){var t=s(i,o,arguments);if(u&&c){var r=u(t,"length");r.configurable&&c(t,"length",{value:1+l(0,e.length-(arguments.length-1))})}return t};var h=function(){return s(i,a,arguments)};c?c(e.exports,"apply",{value:h}):e.exports.apply=h},9894:e=>{function t(e){this.dict=e||{}}t.prototype.set=function(e,t,r){if("object"!=typeof e){void 0===r&&(r=!0);var i=this.has(e);return!r&&i?this.dict[i]=this.dict[i]+","+t:this.dict[i||e]=t,i}for(var n in e)this.set(n,e[n],t)},t.prototype.has=function(e){for(var t=Object.keys(this.dict),r=(e=e.toLowerCase(),0);r{var i=r(89509).Buffer,n=r(42830).Transform,a=r(32553).s;function o(e){n.call(this),this.hashMode="string"==typeof e,this.hashMode?this[e]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}r(35717)(o,n),o.prototype.update=function(e,t,r){"string"==typeof e&&(e=i.from(e,t));var n=this._update(e);return this.hashMode?this:(r&&(n=this._toString(n,r)),n)},o.prototype.setAutoPadding=function(){},o.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},o.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},o.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},o.prototype._transform=function(e,t,r){var i;try{this.hashMode?this._update(e):this.push(this._update(e))}catch(e){i=e}finally{r(i)}},o.prototype._flush=function(e){var t;try{this.push(this.__final())}catch(e){t=e}e(t)},o.prototype._finalOrDigest=function(e){var t=this.__final()||i.alloc(0);return e&&(t=this._toString(t,e,!0)),t},o.prototype._toString=function(e,t,r){if(this._decoder||(this._decoder=new a(t),this._encoding=t),this._encoding!==t)throw new Error("can't switch encodings");var i=this._decoder.write(e);return r&&(i+=this._decoder.end()),i},e.exports=o},9779:(e,t,r)=>{var i=r(48764).Buffer,n=r(89539),a=r(42830).Stream,o=r(63463);function s(){this.writable=!1,this.readable=!0,this.dataSize=0,this.maxDataSize=2097152,this.pauseStreams=!0,this._released=!1,this._streams=[],this._currentStream=null,this._insideLoop=!1,this._pendingNext=!1}e.exports=s,n.inherits(s,a),s.create=function(e){var t=new this;for(var r in e=e||{})t[r]=e[r];return t},s.isStreamLike=function(e){return"function"!=typeof e&&"string"!=typeof e&&"boolean"!=typeof e&&"number"!=typeof e&&!i.isBuffer(e)},s.prototype.append=function(e){if(s.isStreamLike(e)){if(!(e instanceof o)){var t=o.create(e,{maxDataSize:1/0,pauseStream:this.pauseStreams});e.on("data",this._checkDataSize.bind(this)),e=t}this._handleErrors(e),this.pauseStreams&&e.pause()}return this._streams.push(e),this},s.prototype.pipe=function(e,t){return a.prototype.pipe.call(this,e,t),this.resume(),e},s.prototype._getNext=function(){if(this._currentStream=null,this._insideLoop)this._pendingNext=!0;else{this._insideLoop=!0;try{do{this._pendingNext=!1,this._realGetNext()}while(this._pendingNext)}finally{this._insideLoop=!1}}},s.prototype._realGetNext=function(){var e=this._streams.shift();void 0!==e?"function"==typeof e?e(function(e){s.isStreamLike(e)&&(e.on("data",this._checkDataSize.bind(this)),this._handleErrors(e)),this._pipeNext(e)}.bind(this)):this._pipeNext(e):this.end()},s.prototype._pipeNext=function(e){if(this._currentStream=e,s.isStreamLike(e))return e.on("end",this._getNext.bind(this)),void e.pipe(this,{end:!1});var t=e;this.write(t),this._getNext()},s.prototype._handleErrors=function(e){var t=this;e.on("error",(function(e){t._emitError(e)}))},s.prototype.write=function(e){this.emit("data",e)},s.prototype.pause=function(){this.pauseStreams&&(this.pauseStreams&&this._currentStream&&"function"==typeof this._currentStream.pause&&this._currentStream.pause(),this.emit("pause"))},s.prototype.resume=function(){this._released||(this._released=!0,this.writable=!0,this._getNext()),this.pauseStreams&&this._currentStream&&"function"==typeof this._currentStream.resume&&this._currentStream.resume(),this.emit("resume")},s.prototype.end=function(){this._reset(),this.emit("end")},s.prototype.destroy=function(){this._reset(),this.emit("close")},s.prototype._reset=function(){this.writable=!1,this._streams=[],this._currentStream=null},s.prototype._checkDataSize=function(){if(this._updateDataSize(),!(this.dataSize<=this.maxDataSize)){var e="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this._emitError(new Error(e))}},s.prototype._updateDataSize=function(){this.dataSize=0;var e=this;this._streams.forEach((function(t){t.dataSize&&(e.dataSize+=t.dataSize)})),this._currentStream&&this._currentStream.dataSize&&(this.dataSize+=this._currentStream.dataSize)},s.prototype._emitError=function(e){this._reset(),this.emit("error",e)}},16497:(e,t,r)=>{var i=r(48764).Buffer;t.VZ=function(e){return"[object Error]"===(t=e,Object.prototype.toString.call(t))||e instanceof Error;var t},i.isBuffer},76393:(e,t,r)=>{var i=r(48764).Buffer,n=r(86266),a=r(16426);e.exports=function(e){return new s(e)};var o={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};function s(e){this.curveType=o[e],this.curveType||(this.curveType={name:e}),this.curve=new n.ec(this.curveType.name),this.keys=void 0}function u(e,t,r){Array.isArray(e)||(e=e.toArray());var n=new i(e);if(r&&n.length=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function u(e,t,r){var i=s(e,r);return r-1>=t&&(i|=s(e,r-1)<<4),i}function c(e,t,r,i){for(var n=0,a=Math.min(e.length,r),o=t;o=49?s-49+10:s>=17?s-17+10:s}return n}a.isBN=function(e){return e instanceof a||null!==e&&"object"==typeof e&&e.constructor.wordSize===a.wordSize&&Array.isArray(e.words)},a.max=function(e,t){return e.cmp(t)>0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)o=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)n=u(e,t,i)<=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;this.strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,o=a%i,s=Math.min(a,a-o)+r,u=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],o=n*a,s=67108863&o,u=o/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&u,p=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=p;d++){var f=c-d|0;l+=(o=(n=0|e.words[f])*(a=0|t.words[d])+h)/67108864|0,h=67108863&o}r.words[c]=0|h,u=0|l}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}a.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,a=0,o=0;o>>24-n&16777215)||o!==this.length-1?l[6-u.length]+u+r:u+r,(n+=2)>=26&&(n-=26,o--)}for(0!==a&&(r=a.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var c=h[e],d=p[e];r="";var f=this.clone();for(f.negative=0;!f.isZero();){var m=f.modn(d).toString(e);r=(f=f.idivn(d)).isZero()?m+r:l[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(e,t){return i(void 0!==o),this.toArrayLike(o,e,t)},a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},a.prototype.toArrayLike=function(e,t,r){var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0"),this.strip();var o,s,u="le"===t,c=new e(a),l=this.clone();if(u){for(s=0;!l.isZero();s++)o=l.andln(255),l.iushrn(8),c[s]=o;for(;s=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==a&&o>26,this.words[o]=67108863&t;if(0===a&&o>>13,d=0|o[1],f=8191&d,m=d>>>13,g=0|o[2],v=8191&g,y=g>>>13,_=0|o[3],b=8191&_,w=_>>>13,E=0|o[4],k=8191&E,S=E>>>13,x=0|o[5],j=8191&x,N=x>>>13,M=0|o[6],I=8191&M,A=M>>>13,T=0|o[7],R=8191&T,P=T>>>13,O=0|o[8],B=8191&O,C=O>>>13,z=0|o[9],F=8191&z,D=z>>>13,q=0|s[0],L=8191&q,U=q>>>13,H=0|s[1],K=8191&H,W=H>>>13,Z=0|s[2],J=8191&Z,V=Z>>>13,$=0|s[3],G=8191&$,Q=$>>>13,X=0|s[4],Y=8191&X,ee=X>>>13,te=0|s[5],re=8191&te,ie=te>>>13,ne=0|s[6],ae=8191&ne,oe=ne>>>13,se=0|s[7],ue=8191&se,ce=se>>>13,le=0|s[8],he=8191&le,pe=le>>>13,de=0|s[9],fe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ge=(c+(i=Math.imul(h,L))|0)+((8191&(n=(n=Math.imul(h,U))+Math.imul(p,L)|0))<<13)|0;c=((a=Math.imul(p,U))+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(f,L),n=(n=Math.imul(f,U))+Math.imul(m,L)|0,a=Math.imul(m,U);var ve=(c+(i=i+Math.imul(h,K)|0)|0)+((8191&(n=(n=n+Math.imul(h,W)|0)+Math.imul(p,K)|0))<<13)|0;c=((a=a+Math.imul(p,W)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(v,L),n=(n=Math.imul(v,U))+Math.imul(y,L)|0,a=Math.imul(y,U),i=i+Math.imul(f,K)|0,n=(n=n+Math.imul(f,W)|0)+Math.imul(m,K)|0,a=a+Math.imul(m,W)|0;var ye=(c+(i=i+Math.imul(h,J)|0)|0)+((8191&(n=(n=n+Math.imul(h,V)|0)+Math.imul(p,J)|0))<<13)|0;c=((a=a+Math.imul(p,V)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(b,L),n=(n=Math.imul(b,U))+Math.imul(w,L)|0,a=Math.imul(w,U),i=i+Math.imul(v,K)|0,n=(n=n+Math.imul(v,W)|0)+Math.imul(y,K)|0,a=a+Math.imul(y,W)|0,i=i+Math.imul(f,J)|0,n=(n=n+Math.imul(f,V)|0)+Math.imul(m,J)|0,a=a+Math.imul(m,V)|0;var _e=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(n=(n=n+Math.imul(h,Q)|0)+Math.imul(p,G)|0))<<13)|0;c=((a=a+Math.imul(p,Q)|0)+(n>>>13)|0)+(_e>>>26)|0,_e&=67108863,i=Math.imul(k,L),n=(n=Math.imul(k,U))+Math.imul(S,L)|0,a=Math.imul(S,U),i=i+Math.imul(b,K)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(w,K)|0,a=a+Math.imul(w,W)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,V)|0)+Math.imul(y,J)|0,a=a+Math.imul(y,V)|0,i=i+Math.imul(f,G)|0,n=(n=n+Math.imul(f,Q)|0)+Math.imul(m,G)|0,a=a+Math.imul(m,Q)|0;var be=(c+(i=i+Math.imul(h,Y)|0)|0)+((8191&(n=(n=n+Math.imul(h,ee)|0)+Math.imul(p,Y)|0))<<13)|0;c=((a=a+Math.imul(p,ee)|0)+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(j,L),n=(n=Math.imul(j,U))+Math.imul(N,L)|0,a=Math.imul(N,U),i=i+Math.imul(k,K)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(S,K)|0,a=a+Math.imul(S,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,V)|0)+Math.imul(w,J)|0,a=a+Math.imul(w,V)|0,i=i+Math.imul(v,G)|0,n=(n=n+Math.imul(v,Q)|0)+Math.imul(y,G)|0,a=a+Math.imul(y,Q)|0,i=i+Math.imul(f,Y)|0,n=(n=n+Math.imul(f,ee)|0)+Math.imul(m,Y)|0,a=a+Math.imul(m,ee)|0;var we=(c+(i=i+Math.imul(h,re)|0)|0)+((8191&(n=(n=n+Math.imul(h,ie)|0)+Math.imul(p,re)|0))<<13)|0;c=((a=a+Math.imul(p,ie)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(I,L),n=(n=Math.imul(I,U))+Math.imul(A,L)|0,a=Math.imul(A,U),i=i+Math.imul(j,K)|0,n=(n=n+Math.imul(j,W)|0)+Math.imul(N,K)|0,a=a+Math.imul(N,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,V)|0)+Math.imul(S,J)|0,a=a+Math.imul(S,V)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,Q)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,Q)|0,i=i+Math.imul(v,Y)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(y,Y)|0,a=a+Math.imul(y,ee)|0,i=i+Math.imul(f,re)|0,n=(n=n+Math.imul(f,ie)|0)+Math.imul(m,re)|0,a=a+Math.imul(m,ie)|0;var Ee=(c+(i=i+Math.imul(h,ae)|0)|0)+((8191&(n=(n=n+Math.imul(h,oe)|0)+Math.imul(p,ae)|0))<<13)|0;c=((a=a+Math.imul(p,oe)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(R,L),n=(n=Math.imul(R,U))+Math.imul(P,L)|0,a=Math.imul(P,U),i=i+Math.imul(I,K)|0,n=(n=n+Math.imul(I,W)|0)+Math.imul(A,K)|0,a=a+Math.imul(A,W)|0,i=i+Math.imul(j,J)|0,n=(n=n+Math.imul(j,V)|0)+Math.imul(N,J)|0,a=a+Math.imul(N,V)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,Q)|0)+Math.imul(S,G)|0,a=a+Math.imul(S,Q)|0,i=i+Math.imul(b,Y)|0,n=(n=n+Math.imul(b,ee)|0)+Math.imul(w,Y)|0,a=a+Math.imul(w,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(y,re)|0,a=a+Math.imul(y,ie)|0,i=i+Math.imul(f,ae)|0,n=(n=n+Math.imul(f,oe)|0)+Math.imul(m,ae)|0,a=a+Math.imul(m,oe)|0;var ke=(c+(i=i+Math.imul(h,ue)|0)|0)+((8191&(n=(n=n+Math.imul(h,ce)|0)+Math.imul(p,ue)|0))<<13)|0;c=((a=a+Math.imul(p,ce)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(B,L),n=(n=Math.imul(B,U))+Math.imul(C,L)|0,a=Math.imul(C,U),i=i+Math.imul(R,K)|0,n=(n=n+Math.imul(R,W)|0)+Math.imul(P,K)|0,a=a+Math.imul(P,W)|0,i=i+Math.imul(I,J)|0,n=(n=n+Math.imul(I,V)|0)+Math.imul(A,J)|0,a=a+Math.imul(A,V)|0,i=i+Math.imul(j,G)|0,n=(n=n+Math.imul(j,Q)|0)+Math.imul(N,G)|0,a=a+Math.imul(N,Q)|0,i=i+Math.imul(k,Y)|0,n=(n=n+Math.imul(k,ee)|0)+Math.imul(S,Y)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(b,re)|0,n=(n=n+Math.imul(b,ie)|0)+Math.imul(w,re)|0,a=a+Math.imul(w,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,oe)|0)+Math.imul(y,ae)|0,a=a+Math.imul(y,oe)|0,i=i+Math.imul(f,ue)|0,n=(n=n+Math.imul(f,ce)|0)+Math.imul(m,ue)|0,a=a+Math.imul(m,ce)|0;var Se=(c+(i=i+Math.imul(h,he)|0)|0)+((8191&(n=(n=n+Math.imul(h,pe)|0)+Math.imul(p,he)|0))<<13)|0;c=((a=a+Math.imul(p,pe)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(F,L),n=(n=Math.imul(F,U))+Math.imul(D,L)|0,a=Math.imul(D,U),i=i+Math.imul(B,K)|0,n=(n=n+Math.imul(B,W)|0)+Math.imul(C,K)|0,a=a+Math.imul(C,W)|0,i=i+Math.imul(R,J)|0,n=(n=n+Math.imul(R,V)|0)+Math.imul(P,J)|0,a=a+Math.imul(P,V)|0,i=i+Math.imul(I,G)|0,n=(n=n+Math.imul(I,Q)|0)+Math.imul(A,G)|0,a=a+Math.imul(A,Q)|0,i=i+Math.imul(j,Y)|0,n=(n=n+Math.imul(j,ee)|0)+Math.imul(N,Y)|0,a=a+Math.imul(N,ee)|0,i=i+Math.imul(k,re)|0,n=(n=n+Math.imul(k,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(b,ae)|0,n=(n=n+Math.imul(b,oe)|0)+Math.imul(w,ae)|0,a=a+Math.imul(w,oe)|0,i=i+Math.imul(v,ue)|0,n=(n=n+Math.imul(v,ce)|0)+Math.imul(y,ue)|0,a=a+Math.imul(y,ce)|0,i=i+Math.imul(f,he)|0,n=(n=n+Math.imul(f,pe)|0)+Math.imul(m,he)|0,a=a+Math.imul(m,pe)|0;var xe=(c+(i=i+Math.imul(h,fe)|0)|0)+((8191&(n=(n=n+Math.imul(h,me)|0)+Math.imul(p,fe)|0))<<13)|0;c=((a=a+Math.imul(p,me)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(F,K),n=(n=Math.imul(F,W))+Math.imul(D,K)|0,a=Math.imul(D,W),i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,V)|0)+Math.imul(C,J)|0,a=a+Math.imul(C,V)|0,i=i+Math.imul(R,G)|0,n=(n=n+Math.imul(R,Q)|0)+Math.imul(P,G)|0,a=a+Math.imul(P,Q)|0,i=i+Math.imul(I,Y)|0,n=(n=n+Math.imul(I,ee)|0)+Math.imul(A,Y)|0,a=a+Math.imul(A,ee)|0,i=i+Math.imul(j,re)|0,n=(n=n+Math.imul(j,ie)|0)+Math.imul(N,re)|0,a=a+Math.imul(N,ie)|0,i=i+Math.imul(k,ae)|0,n=(n=n+Math.imul(k,oe)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,oe)|0,i=i+Math.imul(b,ue)|0,n=(n=n+Math.imul(b,ce)|0)+Math.imul(w,ue)|0,a=a+Math.imul(w,ce)|0,i=i+Math.imul(v,he)|0,n=(n=n+Math.imul(v,pe)|0)+Math.imul(y,he)|0,a=a+Math.imul(y,pe)|0;var je=(c+(i=i+Math.imul(f,fe)|0)|0)+((8191&(n=(n=n+Math.imul(f,me)|0)+Math.imul(m,fe)|0))<<13)|0;c=((a=a+Math.imul(m,me)|0)+(n>>>13)|0)+(je>>>26)|0,je&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,V))+Math.imul(D,J)|0,a=Math.imul(D,V),i=i+Math.imul(B,G)|0,n=(n=n+Math.imul(B,Q)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,Q)|0,i=i+Math.imul(R,Y)|0,n=(n=n+Math.imul(R,ee)|0)+Math.imul(P,Y)|0,a=a+Math.imul(P,ee)|0,i=i+Math.imul(I,re)|0,n=(n=n+Math.imul(I,ie)|0)+Math.imul(A,re)|0,a=a+Math.imul(A,ie)|0,i=i+Math.imul(j,ae)|0,n=(n=n+Math.imul(j,oe)|0)+Math.imul(N,ae)|0,a=a+Math.imul(N,oe)|0,i=i+Math.imul(k,ue)|0,n=(n=n+Math.imul(k,ce)|0)+Math.imul(S,ue)|0,a=a+Math.imul(S,ce)|0,i=i+Math.imul(b,he)|0,n=(n=n+Math.imul(b,pe)|0)+Math.imul(w,he)|0,a=a+Math.imul(w,pe)|0;var Ne=(c+(i=i+Math.imul(v,fe)|0)|0)+((8191&(n=(n=n+Math.imul(v,me)|0)+Math.imul(y,fe)|0))<<13)|0;c=((a=a+Math.imul(y,me)|0)+(n>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,i=Math.imul(F,G),n=(n=Math.imul(F,Q))+Math.imul(D,G)|0,a=Math.imul(D,Q),i=i+Math.imul(B,Y)|0,n=(n=n+Math.imul(B,ee)|0)+Math.imul(C,Y)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(R,re)|0,n=(n=n+Math.imul(R,ie)|0)+Math.imul(P,re)|0,a=a+Math.imul(P,ie)|0,i=i+Math.imul(I,ae)|0,n=(n=n+Math.imul(I,oe)|0)+Math.imul(A,ae)|0,a=a+Math.imul(A,oe)|0,i=i+Math.imul(j,ue)|0,n=(n=n+Math.imul(j,ce)|0)+Math.imul(N,ue)|0,a=a+Math.imul(N,ce)|0,i=i+Math.imul(k,he)|0,n=(n=n+Math.imul(k,pe)|0)+Math.imul(S,he)|0,a=a+Math.imul(S,pe)|0;var Me=(c+(i=i+Math.imul(b,fe)|0)|0)+((8191&(n=(n=n+Math.imul(b,me)|0)+Math.imul(w,fe)|0))<<13)|0;c=((a=a+Math.imul(w,me)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(F,Y),n=(n=Math.imul(F,ee))+Math.imul(D,Y)|0,a=Math.imul(D,ee),i=i+Math.imul(B,re)|0,n=(n=n+Math.imul(B,ie)|0)+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(R,ae)|0,n=(n=n+Math.imul(R,oe)|0)+Math.imul(P,ae)|0,a=a+Math.imul(P,oe)|0,i=i+Math.imul(I,ue)|0,n=(n=n+Math.imul(I,ce)|0)+Math.imul(A,ue)|0,a=a+Math.imul(A,ce)|0,i=i+Math.imul(j,he)|0,n=(n=n+Math.imul(j,pe)|0)+Math.imul(N,he)|0,a=a+Math.imul(N,pe)|0;var Ie=(c+(i=i+Math.imul(k,fe)|0)|0)+((8191&(n=(n=n+Math.imul(k,me)|0)+Math.imul(S,fe)|0))<<13)|0;c=((a=a+Math.imul(S,me)|0)+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(F,re),n=(n=Math.imul(F,ie))+Math.imul(D,re)|0,a=Math.imul(D,ie),i=i+Math.imul(B,ae)|0,n=(n=n+Math.imul(B,oe)|0)+Math.imul(C,ae)|0,a=a+Math.imul(C,oe)|0,i=i+Math.imul(R,ue)|0,n=(n=n+Math.imul(R,ce)|0)+Math.imul(P,ue)|0,a=a+Math.imul(P,ce)|0,i=i+Math.imul(I,he)|0,n=(n=n+Math.imul(I,pe)|0)+Math.imul(A,he)|0,a=a+Math.imul(A,pe)|0;var Ae=(c+(i=i+Math.imul(j,fe)|0)|0)+((8191&(n=(n=n+Math.imul(j,me)|0)+Math.imul(N,fe)|0))<<13)|0;c=((a=a+Math.imul(N,me)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(F,ae),n=(n=Math.imul(F,oe))+Math.imul(D,ae)|0,a=Math.imul(D,oe),i=i+Math.imul(B,ue)|0,n=(n=n+Math.imul(B,ce)|0)+Math.imul(C,ue)|0,a=a+Math.imul(C,ce)|0,i=i+Math.imul(R,he)|0,n=(n=n+Math.imul(R,pe)|0)+Math.imul(P,he)|0,a=a+Math.imul(P,pe)|0;var Te=(c+(i=i+Math.imul(I,fe)|0)|0)+((8191&(n=(n=n+Math.imul(I,me)|0)+Math.imul(A,fe)|0))<<13)|0;c=((a=a+Math.imul(A,me)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(F,ue),n=(n=Math.imul(F,ce))+Math.imul(D,ue)|0,a=Math.imul(D,ce),i=i+Math.imul(B,he)|0,n=(n=n+Math.imul(B,pe)|0)+Math.imul(C,he)|0,a=a+Math.imul(C,pe)|0;var Re=(c+(i=i+Math.imul(R,fe)|0)|0)+((8191&(n=(n=n+Math.imul(R,me)|0)+Math.imul(P,fe)|0))<<13)|0;c=((a=a+Math.imul(P,me)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(F,he),n=(n=Math.imul(F,pe))+Math.imul(D,he)|0,a=Math.imul(D,pe);var Pe=(c+(i=i+Math.imul(B,fe)|0)|0)+((8191&(n=(n=n+Math.imul(B,me)|0)+Math.imul(C,fe)|0))<<13)|0;c=((a=a+Math.imul(C,me)|0)+(n>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var Oe=(c+(i=Math.imul(F,fe))|0)+((8191&(n=(n=Math.imul(F,me))+Math.imul(D,fe)|0))<<13)|0;return c=((a=Math.imul(D,me))+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ve,u[2]=ye,u[3]=_e,u[4]=be,u[5]=we,u[6]=Ee,u[7]=ke,u[8]=Se,u[9]=xe,u[10]=je,u[11]=Ne,u[12]=Me,u[13]=Ie,u[14]=Ae,u[15]=Te,u[16]=Re,u[17]=Pe,u[18]=Oe,0!==c&&(u[19]=c,r.length++),r};function m(e,t,r){return(new g).mulp(e,t,r)}function g(e,t){this.x=e,this.y=t}Math.imul||(f=d),a.prototype.mulTo=function(e,t){var r,i=this.length+e.length;return r=10===this.length&&10===e.length?f(this,e,t):i<63?d(this,e,t):i<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,i=o,o=n}return 0!==i?r.words[a]=i:r.length--,r.strip()}(this,e,t):m(this,e,t),r},g.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},g.prototype.permute=function(e,t,r,i,n,a){for(var o=0;o>>=1)n++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*t;o>=26,t+=n/67108864|0,t+=a>>>26,this.words[r]=67108863&a}return 0!==t&&(this.words[r]=t,this.length++),this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n}return t}(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,o=Math.min((e-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,c=0;c=0&&(0!==l||c>=n);c--){var h=0|this.words[c];this.words[c]=l<<26-a|h>>>a,l=h&s}return u&&0!==l&&(u.words[u.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===s)return this.strip();for(i(-1===s),s=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,o=0|n.words[n.length-1];0!=(r=26-this._countBits(o))&&(n=n.ushln(r),i.iushln(r),o=0|n.words[n.length-1]);var s,u=i.length-n.length;if("mod"!==t){(s=new a(null)).length=u+1,s.words=new Array(s.length);for(var c=0;c=0;h--){var p=67108864*(0|i.words[n.length+h])+(0|i.words[n.length+h-1]);for(p=Math.min(p/o|0,67108863),i._ishlnsubmul(n,p,h);0!==i.negative;)p--,i.negative=0,i._ishlnsubmul(n,1,h),i.isZero()||(i.negative^=1);s&&(s.words[h]=p)}return s&&s.strip(),i.strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(n=s.div.neg()),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:n,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modn(e.words[0]))}:this._wordDiv(e,t);var n,o,s},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modn=function(e){i(e<=67108863);for(var t=(1<<26)%e,r=0,n=this.length-1;n>=0;n--)r=(t*r+(0|this.words[n]))%e;return r},a.prototype.idivn=function(e){i(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*t;this.words[r]=n/e|0,t=n%e}return this.strip()},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new a(1),o=new a(0),s=new a(0),u=new a(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var l=r.clone(),h=t.clone();!t.isZero();){for(var p=0,d=1;0==(t.words[0]&d)&&p<26;++p,d<<=1);if(p>0)for(t.iushrn(p);p-- >0;)(n.isOdd()||o.isOdd())&&(n.iadd(l),o.isub(h)),n.iushrn(1),o.iushrn(1);for(var f=0,m=1;0==(r.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(r.iushrn(f);f-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(l),u.isub(h)),s.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(s),o.isub(u)):(r.isub(t),s.isub(n),u.isub(o))}return{a:s,b:u,gcd:r.iushln(c)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,o=new a(1),s=new a(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,l=1;0==(t.words[0]&l)&&c<26;++c,l<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);for(var h=0,p=1;0==(r.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s)):(r.isub(t),s.isub(o))}return(n=0===t.cmpn(1)?o:s).cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new k(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var v={k256:null,p224:null,p192:null,p25519:null};function y(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function _(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function E(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(e){if("string"==typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function S(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},y.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},y.prototype.split=function(e,t){e.iushrn(this.n,0,t)},y.prototype.imulK=function(e){return e.imul(this.k)},n(_,y),_.prototype.split=function(e,t){for(var r=4194303,i=Math.min(e.length,9),n=0;n>>22,a=o}a>>>=22,e.words[n-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},_.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(v[e])return v[e];var t;if("k256"===e)t=new _;else if("p224"===e)t=new b;else if("p192"===e)t=new w;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new E}return v[e]=t,t},k.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},k.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),o=0;!n.isZero()&&0===n.andln(1);)o++,n.iushrn(1);i(!n.isZero());var s=new a(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new a(2*l*l).toRed(this);0!==this.pow(l,c).cmp(u);)l.redIAdd(u);for(var h=this.pow(l,n),p=this.pow(e,n.addn(1).iushrn(1)),d=this.pow(e,n),f=o;0!==d.cmp(s);){for(var m=d,g=0;0!==m.cmp(s);g++)m=m.redSqr();i(g=0;i--){for(var c=t.words[i],l=u-1;l>=0;l--){var h=c>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==h||0!==o?(o<<=1,o|=h,(4==++s||0===i&&0===l)&&(n=this.mul(n,r[o]),s=0,o=0)):s=0}u=26}return n},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new S(e)},n(S,k),S.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},S.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},S.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},S.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=r.nmd(e),this)},23482:(e,t,r)=>{"use strict";var i=r(35717),n=r(62318),a=r(79785),o=r(89072),s=r(71027);function u(e){s.call(this,"digest"),this._hash=e}i(u,s),u.prototype._update=function(e){this._hash.update(e)},u.prototype._final=function(){return this._hash.digest()},e.exports=function(e){return"md5"===(e=e.toLowerCase())?new n:"rmd160"===e||"ripemd160"===e?new a:new u(o(e))}},78028:(e,t,r)=>{var i=r(62318);e.exports=function(e){return(new i).update(e).digest()}},58355:(e,t,r)=>{"use strict";var i=r(35717),n=r(51031),a=r(71027),o=r(89509).Buffer,s=r(78028),u=r(79785),c=r(89072),l=o.alloc(128);function h(e,t){a.call(this,"digest"),"string"==typeof t&&(t=o.from(t));var r="sha512"===e||"sha384"===e?128:64;this._alg=e,this._key=t,t.length>r?t=("rmd160"===e?new u:c(e)).update(t).digest():t.length{"use strict";var i=r(35717),n=r(89509).Buffer,a=r(71027),o=n.alloc(128),s=64;function u(e,t){a.call(this,"digest"),"string"==typeof t&&(t=n.from(t)),this._alg=e,this._key=t,t.length>s?t=e(t):t.length{"use strict";t.randomBytes=t.rng=t.pseudoRandomBytes=t.prng=r(61798),t.createHash=t.Hash=r(23482),t.createHmac=t.Hmac=r(58355);var i=r(56042),n=Object.keys(i),a=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(n);t.getHashes=function(){return a};var o=r(25632);t.pbkdf2=o.pbkdf2,t.pbkdf2Sync=o.pbkdf2Sync;var s=r(53614);t.Cipher=s.Cipher,t.createCipher=s.createCipher,t.Cipheriv=s.Cipheriv,t.createCipheriv=s.createCipheriv,t.Decipher=s.Decipher,t.createDecipher=s.createDecipher,t.Decipheriv=s.Decipheriv,t.createDecipheriv=s.createDecipheriv,t.getCiphers=s.getCiphers,t.listCiphers=s.listCiphers;var u=r(62607);t.DiffieHellmanGroup=u.DiffieHellmanGroup,t.createDiffieHellmanGroup=u.createDiffieHellmanGroup,t.getDiffieHellman=u.getDiffieHellman,t.createDiffieHellman=u.createDiffieHellman,t.DiffieHellman=u.DiffieHellman;var c=r(64743);t.createSign=c.createSign,t.Sign=c.Sign,t.createVerify=c.createVerify,t.Verify=c.Verify,t.createECDH=r(76393);var l=r(7900);t.publicEncrypt=l.publicEncrypt,t.privateEncrypt=l.privateEncrypt,t.publicDecrypt=l.publicDecrypt,t.privateDecrypt=l.privateDecrypt;var h=r(77963);t.randomFill=h.randomFill,t.randomFillSync=h.randomFillSync,t.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join("\n"))},t.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},40452:function(e,t,r){var i;e.exports=(i=r(78249),r(98269),r(68214),r(90888),r(75109),function(){var e=i,t=e.lib.BlockCipher,r=e.algo,n=[],a=[],o=[],s=[],u=[],c=[],l=[],h=[],p=[],d=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var f=i^i<<1^i<<2^i<<3^i<<4;f=f>>>8^255&f^99,n[r]=f,a[f]=r;var m=e[r],g=e[m],v=e[g],y=257*e[f]^16843008*f;o[r]=y<<24|y>>>8,s[r]=y<<16|y>>>16,u[r]=y<<8|y>>>24,c[r]=y,y=16843009*v^65537*g^257*m^16843008*r,l[f]=y<<24|y>>>8,h[f]=y<<16|y>>>16,p[f]=y<<8|y>>>24,d[f]=y,r?(r=m^e[e[e[v^m]]],i^=e[e[i]]):r=i=1}}();var f=[0,1,2,4,8,16,32,64,128,27,54],m=r.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),a=this._keySchedule=[],o=0;o6&&o%r==4&&(c=n[c>>>24]<<24|n[c>>>16&255]<<16|n[c>>>8&255]<<8|n[255&c]):(c=n[(c=c<<8|c>>>24)>>>24]<<24|n[c>>>16&255]<<16|n[c>>>8&255]<<8|n[255&c],c^=f[o/r|0]<<24),a[o]=a[o-r]^c);for(var s=this._invKeySchedule=[],u=0;u>>24]]^h[n[c>>>16&255]]^p[n[c>>>8&255]]^d[n[255&c]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,s,u,c,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,l,h,p,d,a),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,a,o,s){for(var u=this._nRounds,c=e[t]^r[0],l=e[t+1]^r[1],h=e[t+2]^r[2],p=e[t+3]^r[3],d=4,f=1;f>>24]^n[l>>>16&255]^a[h>>>8&255]^o[255&p]^r[d++],g=i[l>>>24]^n[h>>>16&255]^a[p>>>8&255]^o[255&c]^r[d++],v=i[h>>>24]^n[p>>>16&255]^a[c>>>8&255]^o[255&l]^r[d++],y=i[p>>>24]^n[c>>>16&255]^a[l>>>8&255]^o[255&h]^r[d++];c=m,l=g,h=v,p=y}m=(s[c>>>24]<<24|s[l>>>16&255]<<16|s[h>>>8&255]<<8|s[255&p])^r[d++],g=(s[l>>>24]<<24|s[h>>>16&255]<<16|s[p>>>8&255]<<8|s[255&c])^r[d++],v=(s[h>>>24]<<24|s[p>>>16&255]<<16|s[c>>>8&255]<<8|s[255&l])^r[d++],y=(s[p>>>24]<<24|s[c>>>16&255]<<16|s[l>>>8&255]<<8|s[255&h])^r[d++],e[t]=m,e[t+1]=g,e[t+2]=v,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),i.AES)},75109:function(e,t,r){var i,n,a,o,s,u,c,l,h,p,d,f,m,g,v,y,_,b,w;e.exports=(i=r(78249),r(90888),void(i.lib.Cipher||(n=i,a=n.lib,o=a.Base,s=a.WordArray,u=a.BufferedBlockAlgorithm,c=n.enc,c.Utf8,l=c.Base64,h=n.algo.EvpKDF,p=a.Cipher=u.extend({cfg:o.extend(),createEncryptor:function(e,t){return this.create(this._ENC_XFORM_MODE,e,t)},createDecryptor:function(e,t){return this.create(this._DEC_XFORM_MODE,e,t)},init:function(e,t,r){this.cfg=this.cfg.extend(r),this._xformMode=e,this._key=t,this.reset()},reset:function(){u.reset.call(this),this._doReset()},process:function(e){return this._append(e),this._process()},finalize:function(e){return e&&this._append(e),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function e(e){return"string"==typeof e?w:_}return function(t){return{encrypt:function(r,i,n){return e(i).encrypt(t,r,i,n)},decrypt:function(r,i,n){return e(i).decrypt(t,r,i,n)}}}}()}),a.StreamCipher=p.extend({_doFinalize:function(){return this._process(!0)},blockSize:1}),d=n.mode={},f=a.BlockCipherMode=o.extend({createEncryptor:function(e,t){return this.Encryptor.create(e,t)},createDecryptor:function(e,t){return this.Decryptor.create(e,t)},init:function(e,t){this._cipher=e,this._iv=t}}),m=d.CBC=function(){var e=f.extend();function t(e,t,r){var i,n=this._iv;n?(i=n,this._iv=void 0):i=this._prevBlock;for(var a=0;a>>2];e.sigBytes-=t}},a.BlockCipher=p.extend({cfg:p.cfg.extend({mode:m,padding:g}),reset:function(){var e;p.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4}),v=a.CipherParams=o.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),y=(n.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(l)},parse:function(e){var t,r=l.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),v.create({ciphertext:r,salt:t})}},_=a.SerializableCipher=o.extend({cfg:o.extend({format:y}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),a=n.finalize(t),o=n.cfg;return v.create({ciphertext:a,key:r,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),b=(n.kdf={}).OpenSSL={execute:function(e,t,r,i){i||(i=s.random(8));var n=h.create({keySize:t+r}).compute(e,i),a=s.create(n.words.slice(t),4*r);return n.sigBytes=4*t,v.create({key:n,iv:a,salt:i})}},w=a.PasswordBasedCipher=_.extend({cfg:_.cfg.extend({kdf:b}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize);i.iv=n.iv;var a=_.encrypt.call(this,e,t,n.key,i);return a.mixIn(n),a},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt);return i.iv=n.iv,_.decrypt.call(this,e,t,n.key,i)}}))))},78249:function(e,t,r){var i;e.exports=(i=i||function(e,t){var i;if("undefined"!=typeof window&&window.crypto&&(i=window.crypto),"undefined"!=typeof self&&self.crypto&&(i=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(i=globalThis.crypto),!i&&"undefined"!=typeof window&&window.msCrypto&&(i=window.msCrypto),!i&&void 0!==r.g&&r.g.crypto&&(i=r.g.crypto),!i)try{i=r(42480)}catch(e){}var n=function(){if(i){if("function"==typeof i.getRandomValues)try{return i.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof i.randomBytes)try{return i.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")},a=Object.create||function(){function e(){}return function(t){var r;return e.prototype=t,r=new e,e.prototype=null,r}}(),o={},s=o.lib={},u=s.Base={extend:function(e){var t=a(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},c=s.WordArray=u.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:4*e.length},toString:function(e){return(e||h).stringify(this)},concat:function(e){var t=this.words,r=e.words,i=this.sigBytes,n=e.sigBytes;if(this.clamp(),i%4)for(var a=0;a>>2]>>>24-a%4*8&255;t[i+a>>>2]|=o<<24-(i+a)%4*8}else for(var s=0;s>>2]=r[s>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=u.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((a>>>4).toString(16)),i.push((15&a).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new c.init(r,t/2)}},p=l.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new c.init(r,t)}},d=l.Utf8={stringify:function(e){try{return decodeURIComponent(escape(p.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return p.parse(unescape(encodeURIComponent(e)))}},f=s.BufferedBlockAlgorithm=u.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=d.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,a=i.sigBytes,o=this.blockSize,s=a/(4*o),u=(s=t?e.ceil(s):e.max((0|s)-this._minBufferSize,0))*o,l=e.min(4*u,a);if(u){for(var h=0;h>>2]>>>24-a%4*8&255)<<16|(t[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|t[a+2>>>2]>>>24-(a+2)%4*8&255,s=0;s<4&&a+.75*s>>6*(3-s)&63));var u=i.charAt(64);if(u)for(;n.length%4;)n.push(u);return n.join("")},parse:function(e){var t=e.length,r=this._map,i=this._reverseMap;if(!i){i=this._reverseMap=[];for(var n=0;n>>6-o%4*2;i[n>>>2]|=s<<24-n%4*8,n++}return a.create(i,n)}(e,t,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},i.enc.Base64)},43786:function(e,t,r){var i,n,a;e.exports=(i=r(78249),a=(n=i).lib.WordArray,n.enc.Base64url={stringify:function(e,t=!0){var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var a=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(r[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|r[o+2>>>2]>>>24-(o+2)%4*8&255,u=0;u<4&&o+.75*u>>6*(3-u)&63));var c=n.charAt(64);if(c)for(;a.length%4;)a.push(c);return a.join("")},parse:function(e,t=!0){var r=e.length,i=t?this._safe_map:this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-o%4*2;i[n>>>2]|=s<<24-n%4*8,n++}return a.create(i,n)}(e,r,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_safe_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"},i.enc.Base64url)},50298:function(e,t,r){var i;e.exports=(i=r(78249),function(){var e=i,t=e.lib.WordArray,r=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}r.Utf16=r.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},r.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],a=0;a>>2]>>>16-a%4*8&65535);i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var r=e.length,i=[],a=0;a>>1]|=n(e.charCodeAt(a)<<16-a%2*16);return t.create(i,2*r)}}}(),i.enc.Utf16)},90888:function(e,t,r){var i,n,a,o,s,u,c,l;e.exports=(l=r(78249),r(62783),r(89824),a=(n=(i=l).lib).Base,o=n.WordArray,u=(s=i.algo).MD5,c=s.EvpKDF=a.extend({cfg:a.extend({keySize:4,hasher:u,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var r,i=this.cfg,n=i.hasher.create(),a=o.create(),s=a.words,u=i.keySize,c=i.iterations;s.lengthi&&(t=e.finalize(t)),t.clamp();for(var n=this._oKey=t.clone(),o=this._iKey=t.clone(),s=n.words,u=o.words,c=0;c>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};r.prototype=e}}(),i.lib.WordArray)},68214:function(e,t,r){var i;e.exports=(i=r(78249),function(e){var t=i,r=t.lib,n=r.WordArray,a=r.Hasher,o=t.algo,s=[];!function(){for(var t=0;t<64;t++)s[t]=4294967296*e.abs(e.sin(t+1))|0}();var u=o.MD5=a.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var a=this._hash.words,o=e[t+0],u=e[t+1],d=e[t+2],f=e[t+3],m=e[t+4],g=e[t+5],v=e[t+6],y=e[t+7],_=e[t+8],b=e[t+9],w=e[t+10],E=e[t+11],k=e[t+12],S=e[t+13],x=e[t+14],j=e[t+15],N=a[0],M=a[1],I=a[2],A=a[3];N=c(N,M,I,A,o,7,s[0]),A=c(A,N,M,I,u,12,s[1]),I=c(I,A,N,M,d,17,s[2]),M=c(M,I,A,N,f,22,s[3]),N=c(N,M,I,A,m,7,s[4]),A=c(A,N,M,I,g,12,s[5]),I=c(I,A,N,M,v,17,s[6]),M=c(M,I,A,N,y,22,s[7]),N=c(N,M,I,A,_,7,s[8]),A=c(A,N,M,I,b,12,s[9]),I=c(I,A,N,M,w,17,s[10]),M=c(M,I,A,N,E,22,s[11]),N=c(N,M,I,A,k,7,s[12]),A=c(A,N,M,I,S,12,s[13]),I=c(I,A,N,M,x,17,s[14]),N=l(N,M=c(M,I,A,N,j,22,s[15]),I,A,u,5,s[16]),A=l(A,N,M,I,v,9,s[17]),I=l(I,A,N,M,E,14,s[18]),M=l(M,I,A,N,o,20,s[19]),N=l(N,M,I,A,g,5,s[20]),A=l(A,N,M,I,w,9,s[21]),I=l(I,A,N,M,j,14,s[22]),M=l(M,I,A,N,m,20,s[23]),N=l(N,M,I,A,b,5,s[24]),A=l(A,N,M,I,x,9,s[25]),I=l(I,A,N,M,f,14,s[26]),M=l(M,I,A,N,_,20,s[27]),N=l(N,M,I,A,S,5,s[28]),A=l(A,N,M,I,d,9,s[29]),I=l(I,A,N,M,y,14,s[30]),N=h(N,M=l(M,I,A,N,k,20,s[31]),I,A,g,4,s[32]),A=h(A,N,M,I,_,11,s[33]),I=h(I,A,N,M,E,16,s[34]),M=h(M,I,A,N,x,23,s[35]),N=h(N,M,I,A,u,4,s[36]),A=h(A,N,M,I,m,11,s[37]),I=h(I,A,N,M,y,16,s[38]),M=h(M,I,A,N,w,23,s[39]),N=h(N,M,I,A,S,4,s[40]),A=h(A,N,M,I,o,11,s[41]),I=h(I,A,N,M,f,16,s[42]),M=h(M,I,A,N,v,23,s[43]),N=h(N,M,I,A,b,4,s[44]),A=h(A,N,M,I,k,11,s[45]),I=h(I,A,N,M,j,16,s[46]),N=p(N,M=h(M,I,A,N,d,23,s[47]),I,A,o,6,s[48]),A=p(A,N,M,I,y,10,s[49]),I=p(I,A,N,M,x,15,s[50]),M=p(M,I,A,N,g,21,s[51]),N=p(N,M,I,A,k,6,s[52]),A=p(A,N,M,I,f,10,s[53]),I=p(I,A,N,M,w,15,s[54]),M=p(M,I,A,N,u,21,s[55]),N=p(N,M,I,A,_,6,s[56]),A=p(A,N,M,I,j,10,s[57]),I=p(I,A,N,M,v,15,s[58]),M=p(M,I,A,N,S,21,s[59]),N=p(N,M,I,A,m,6,s[60]),A=p(A,N,M,I,E,10,s[61]),I=p(I,A,N,M,d,15,s[62]),M=p(M,I,A,N,b,21,s[63]),a[0]=a[0]+N|0,a[1]=a[1]+M|0,a[2]=a[2]+I|0,a[3]=a[3]+A|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var a=e.floor(i/4294967296),o=i;r[15+(n+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),r[14+(n+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(r.length+1),this._process();for(var s=this._hash,u=s.words,c=0;c<4;c++){var l=u[c];u[c]=16711935&(l<<8|l>>>24)|4278255360&(l<<24|l>>>8)}return s},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function c(e,t,r,i,n,a,o){var s=e+(t&r|~t&i)+n+o;return(s<>>32-a)+t}function l(e,t,r,i,n,a,o){var s=e+(t&i|r&~i)+n+o;return(s<>>32-a)+t}function h(e,t,r,i,n,a,o){var s=e+(t^r^i)+n+o;return(s<>>32-a)+t}function p(e,t,r,i,n,a,o){var s=e+(r^(t|~i))+n+o;return(s<>>32-a)+t}t.MD5=a._createHelper(u),t.HmacMD5=a._createHmacHelper(u)}(Math),i.MD5)},8568:function(e,t,r){var i;e.exports=(i=r(78249),r(75109),i.mode.CFB=function(){var e=i.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,a=this._iv;a?(n=a.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var o=0;o>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}var r=e.Encryptor=e.extend({processBlock:function(e,r){var i=this._cipher,n=i.blockSize,a=this._iv,o=this._counter;a&&(o=this._counter=a.slice(0),this._iv=void 0),function(e){0===(e[0]=t(e[0]))&&(e[1]=t(e[1]))}(o);var s=o.slice(0);i.encryptBlock(s,0);for(var u=0;u>>2]|=n<<24-a%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Ansix923)},92807:function(e,t,r){var i;e.exports=(i=r(78249),r(75109),i.pad.Iso10126={pad:function(e,t){var r=4*t,n=r-e.sigBytes%r;e.concat(i.lib.WordArray.random(n-1)).concat(i.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Iso10126)},71077:function(e,t,r){var i;e.exports=(i=r(78249),r(75109),i.pad.Iso97971={pad:function(e,t){e.concat(i.lib.WordArray.create([2147483648],1)),i.pad.ZeroPadding.pad(e,t)},unpad:function(e){i.pad.ZeroPadding.unpad(e),e.sigBytes--}},i.pad.Iso97971)},16991:function(e,t,r){var i;e.exports=(i=r(78249),r(75109),i.pad.NoPadding={pad:function(){},unpad:function(){}},i.pad.NoPadding)},56475:function(e,t,r){var i;e.exports=(i=r(78249),r(75109),i.pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},i.pad.ZeroPadding)},2112:function(e,t,r){var i,n,a,o,s,u,c,l,h;e.exports=(h=r(78249),r(62783),r(89824),a=(n=(i=h).lib).Base,o=n.WordArray,u=(s=i.algo).SHA1,c=s.HMAC,l=s.PBKDF2=a.extend({cfg:a.extend({keySize:4,hasher:u,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var r=this.cfg,i=c.create(r.hasher,e),n=o.create(),a=o.create([1]),s=n.words,u=a.words,l=r.keySize,h=r.iterations;s.length>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)u.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var a=t.words,o=a[0],s=a[1],c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),l=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),h=c>>>16|4294901760&l,p=l<<16|65535&c;for(i[0]^=c,i[1]^=h,i[2]^=l,i[3]^=p,i[4]^=c,i[5]^=h,i[6]^=l,i[7]^=p,n=0;n<4;n++)u.call(this)}},_doProcessBlock:function(e,t){var r=this._X;u.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function u(){for(var e=this._X,t=this._C,r=0;r<8;r++)a[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,s=i>>>16,u=((n*n>>>17)+n*s>>>15)+s*s,c=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=u^c}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.RabbitLegacy=t._createHelper(s)}(),i.RabbitLegacy)},84454:function(e,t,r){var i;e.exports=(i=r(78249),r(98269),r(68214),r(90888),r(75109),function(){var e=i,t=e.lib.StreamCipher,r=e.algo,n=[],a=[],o=[],s=r.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)u.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var a=t.words,o=a[0],s=a[1],c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),l=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),h=c>>>16|4294901760&l,p=l<<16|65535&c;for(n[0]^=c,n[1]^=h,n[2]^=l,n[3]^=p,n[4]^=c,n[5]^=h,n[6]^=l,n[7]^=p,r=0;r<4;r++)u.call(this)}},_doProcessBlock:function(e,t){var r=this._X;u.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function u(){for(var e=this._X,t=this._C,r=0;r<8;r++)a[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,s=i>>>16,u=((n*n>>>17)+n*s>>>15)+s*s,c=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=u^c}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.Rabbit=t._createHelper(s)}(),i.Rabbit)},51857:function(e,t,r){var i;e.exports=(i=r(78249),r(98269),r(68214),r(90888),r(75109),function(){var e=i,t=e.lib.StreamCipher,r=e.algo,n=r.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var a=0;n<256;n++){var o=n%r,s=t[o>>>2]>>>24-o%4*8&255;a=(a+i[n]+s)%256;var u=i[n];i[n]=i[a],i[a]=u}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=a.call(this)},keySize:8,ivSize:0});function a(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var a=e[t];e[t]=e[r],e[r]=a,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var o=r.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)a.call(this)}});e.RC4Drop=t._createHelper(o)}(),i.RC4)},30706:function(e,t,r){var i;e.exports=(i=r(78249),function(e){var t=i,r=t.lib,n=r.WordArray,a=r.Hasher,o=t.algo,s=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),u=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),c=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),l=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),h=n.create([0,1518500249,1859775393,2400959708,2840853838]),p=n.create([1352829926,1548603684,1836072691,2053994217,0]),d=o.RIPEMD160=a.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var a,o,d,b,w,E,k,S,x,j,N,M=this._hash.words,I=h.words,A=p.words,T=s.words,R=u.words,P=c.words,O=l.words;for(E=a=M[0],k=o=M[1],S=d=M[2],x=b=M[3],j=w=M[4],r=0;r<80;r+=1)N=a+e[t+T[r]]|0,N+=r<16?f(o,d,b)+I[0]:r<32?m(o,d,b)+I[1]:r<48?g(o,d,b)+I[2]:r<64?v(o,d,b)+I[3]:y(o,d,b)+I[4],N=(N=_(N|=0,P[r]))+w|0,a=w,w=b,b=_(d,10),d=o,o=N,N=E+e[t+R[r]]|0,N+=r<16?y(k,S,x)+A[0]:r<32?v(k,S,x)+A[1]:r<48?g(k,S,x)+A[2]:r<64?m(k,S,x)+A[3]:f(k,S,x)+A[4],N=(N=_(N|=0,O[r]))+j|0,E=j,j=x,x=_(S,10),S=k,k=N;N=M[1]+d+x|0,M[1]=M[2]+b+j|0,M[2]=M[3]+w+E|0,M[3]=M[4]+a+k|0,M[4]=M[0]+o+S|0,M[0]=N},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,a=n.words,o=0;o<5;o++){var s=a[o];a[o]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}return n},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function f(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function g(e,t,r){return(e|~t)^r}function v(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function _(e,t){return e<>>32-t}t.RIPEMD160=a._createHelper(d),t.HmacRIPEMD160=a._createHmacHelper(d)}(Math),i.RIPEMD160)},62783:function(e,t,r){var i,n,a,o,s,u,c,l;e.exports=(n=(i=l=r(78249)).lib,a=n.WordArray,o=n.Hasher,s=i.algo,u=[],c=s.SHA1=o.extend({_doReset:function(){this._hash=new a.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],a=r[2],o=r[3],s=r[4],c=0;c<80;c++){if(c<16)u[c]=0|e[t+c];else{var l=u[c-3]^u[c-8]^u[c-14]^u[c-16];u[c]=l<<1|l>>>31}var h=(i<<5|i>>>27)+s+u[c];h+=c<20?1518500249+(n&a|~n&o):c<40?1859775393+(n^a^o):c<60?(n&a|n&o|a&o)-1894007588:(n^a^o)-899497514,s=o,o=a,a=n<<30|n>>>2,n=i,i=h}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+a|0,r[3]=r[3]+o|0,r[4]=r[4]+s|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}}),i.SHA1=o._createHelper(c),i.HmacSHA1=o._createHmacHelper(c),l.SHA1)},87792:function(e,t,r){var i,n,a,o,s,u;e.exports=(u=r(78249),r(52153),n=(i=u).lib.WordArray,a=i.algo,o=a.SHA256,s=a.SHA224=o.extend({_doReset:function(){this._hash=new n.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=4,e}}),i.SHA224=o._createHelper(s),i.HmacSHA224=o._createHmacHelper(s),u.SHA224)},52153:function(e,t,r){var i;e.exports=(i=r(78249),function(e){var t=i,r=t.lib,n=r.WordArray,a=r.Hasher,o=t.algo,s=[],u=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(s[n]=r(e.pow(i,.5))),u[n]=r(e.pow(i,1/3)),n++),i++}();var c=[],l=o.SHA256=a.extend({_doReset:function(){this._hash=new n.init(s.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],a=r[2],o=r[3],s=r[4],l=r[5],h=r[6],p=r[7],d=0;d<64;d++){if(d<16)c[d]=0|e[t+d];else{var f=c[d-15],m=(f<<25|f>>>7)^(f<<14|f>>>18)^f>>>3,g=c[d-2],v=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;c[d]=m+c[d-7]+v+c[d-16]}var y=i&n^i&a^n&a,_=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=p+((s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25))+(s&l^~s&h)+u[d]+c[d];p=h,h=l,l=s,s=o+b|0,o=a,a=n,n=i,i=b+(_+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+a|0,r[3]=r[3]+o|0,r[4]=r[4]+s|0,r[5]=r[5]+l|0,r[6]=r[6]+h|0,r[7]=r[7]+p|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=a._createHelper(l),t.HmacSHA256=a._createHmacHelper(l)}(Math),i.SHA256)},13327:function(e,t,r){var i;e.exports=(i=r(78249),r(64938),function(e){var t=i,r=t.lib,n=r.WordArray,a=r.Hasher,o=t.x64.Word,s=t.algo,u=[],c=[],l=[];!function(){for(var e=1,t=0,r=0;r<24;r++){u[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)c[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,a=0;a<24;a++){for(var s=0,h=0,p=0;p<7;p++){if(1&n){var d=(1<>>24)|4278255360&(a<<24|a>>>8),o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),(M=r[n]).high^=o,M.low^=a}for(var s=0;s<24;s++){for(var p=0;p<5;p++){for(var d=0,f=0,m=0;m<5;m++)d^=(M=r[p+5*m]).high,f^=M.low;var g=h[p];g.high=d,g.low=f}for(p=0;p<5;p++){var v=h[(p+4)%5],y=h[(p+1)%5],_=y.high,b=y.low;for(d=v.high^(_<<1|b>>>31),f=v.low^(b<<1|_>>>31),m=0;m<5;m++)(M=r[p+5*m]).high^=d,M.low^=f}for(var w=1;w<25;w++){var E=(M=r[w]).high,k=M.low,S=u[w];S<32?(d=E<>>32-S,f=k<>>32-S):(d=k<>>64-S,f=E<>>64-S);var x=h[c[w]];x.high=d,x.low=f}var j=h[0],N=r[0];for(j.high=N.high,j.low=N.low,p=0;p<5;p++)for(m=0;m<5;m++){var M=r[w=p+5*m],I=h[w],A=h[(p+1)%5+5*m],T=h[(p+2)%5+5*m];M.high=I.high^~A.high&T.high,M.low=I.low^~A.low&T.low}M=r[0];var R=l[s];M.high^=R.high,M.low^=R.low}},_doFinalize:function(){var t=this._data,r=t.words,i=(this._nDataBytes,8*t.sigBytes),a=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/a)*a>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var o=this._state,s=this.cfg.outputLength/8,u=s/8,c=[],l=0;l>>24)|4278255360&(p<<24|p>>>8),d=16711935&(d<<8|d>>>24)|4278255360&(d<<24|d>>>8),c.push(d),c.push(p)}return new n.init(c,s)},clone:function(){for(var e=a.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=a._createHelper(p),t.HmacSHA3=a._createHmacHelper(p)}(Math),i.SHA3)},17460:function(e,t,r){var i,n,a,o,s,u,c,l;e.exports=(l=r(78249),r(64938),r(70034),n=(i=l).x64,a=n.Word,o=n.WordArray,s=i.algo,u=s.SHA512,c=s.SHA384=u.extend({_doReset:function(){this._hash=new o.init([new a.init(3418070365,3238371032),new a.init(1654270250,914150663),new a.init(2438529370,812702999),new a.init(355462360,4144912697),new a.init(1731405415,4290775857),new a.init(2394180231,1750603025),new a.init(3675008525,1694076839),new a.init(1203062813,3204075428)])},_doFinalize:function(){var e=u._doFinalize.call(this);return e.sigBytes-=16,e}}),i.SHA384=u._createHelper(c),i.HmacSHA384=u._createHmacHelper(c),l.SHA384)},70034:function(e,t,r){var i;e.exports=(i=r(78249),r(64938),function(){var e=i,t=e.lib.Hasher,r=e.x64,n=r.Word,a=r.WordArray,o=e.algo;function s(){return n.create.apply(n,arguments)}var u=[s(1116352408,3609767458),s(1899447441,602891725),s(3049323471,3964484399),s(3921009573,2173295548),s(961987163,4081628472),s(1508970993,3053834265),s(2453635748,2937671579),s(2870763221,3664609560),s(3624381080,2734883394),s(310598401,1164996542),s(607225278,1323610764),s(1426881987,3590304994),s(1925078388,4068182383),s(2162078206,991336113),s(2614888103,633803317),s(3248222580,3479774868),s(3835390401,2666613458),s(4022224774,944711139),s(264347078,2341262773),s(604807628,2007800933),s(770255983,1495990901),s(1249150122,1856431235),s(1555081692,3175218132),s(1996064986,2198950837),s(2554220882,3999719339),s(2821834349,766784016),s(2952996808,2566594879),s(3210313671,3203337956),s(3336571891,1034457026),s(3584528711,2466948901),s(113926993,3758326383),s(338241895,168717936),s(666307205,1188179964),s(773529912,1546045734),s(1294757372,1522805485),s(1396182291,2643833823),s(1695183700,2343527390),s(1986661051,1014477480),s(2177026350,1206759142),s(2456956037,344077627),s(2730485921,1290863460),s(2820302411,3158454273),s(3259730800,3505952657),s(3345764771,106217008),s(3516065817,3606008344),s(3600352804,1432725776),s(4094571909,1467031594),s(275423344,851169720),s(430227734,3100823752),s(506948616,1363258195),s(659060556,3750685593),s(883997877,3785050280),s(958139571,3318307427),s(1322822218,3812723403),s(1537002063,2003034995),s(1747873779,3602036899),s(1955562222,1575990012),s(2024104815,1125592928),s(2227730452,2716904306),s(2361852424,442776044),s(2428436474,593698344),s(2756734187,3733110249),s(3204031479,2999351573),s(3329325298,3815920427),s(3391569614,3928383900),s(3515267271,566280711),s(3940187606,3454069534),s(4118630271,4000239992),s(116418474,1914138554),s(174292421,2731055270),s(289380356,3203993006),s(460393269,320620315),s(685471733,587496836),s(852142971,1086792851),s(1017036298,365543100),s(1126000580,2618297676),s(1288033470,3409855158),s(1501505948,4234509866),s(1607167915,987167468),s(1816402316,1246189591)],c=[];!function(){for(var e=0;e<80;e++)c[e]=s()}();var l=o.SHA512=t.extend({_doReset:function(){this._hash=new a.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],a=r[2],o=r[3],s=r[4],l=r[5],h=r[6],p=r[7],d=i.high,f=i.low,m=n.high,g=n.low,v=a.high,y=a.low,_=o.high,b=o.low,w=s.high,E=s.low,k=l.high,S=l.low,x=h.high,j=h.low,N=p.high,M=p.low,I=d,A=f,T=m,R=g,P=v,O=y,B=_,C=b,z=w,F=E,D=k,q=S,L=x,U=j,H=N,K=M,W=0;W<80;W++){var Z,J,V=c[W];if(W<16)J=V.high=0|e[t+2*W],Z=V.low=0|e[t+2*W+1];else{var $=c[W-15],G=$.high,Q=$.low,X=(G>>>1|Q<<31)^(G>>>8|Q<<24)^G>>>7,Y=(Q>>>1|G<<31)^(Q>>>8|G<<24)^(Q>>>7|G<<25),ee=c[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),ae=c[W-7],oe=ae.high,se=ae.low,ue=c[W-16],ce=ue.high,le=ue.low;J=(J=(J=X+oe+((Z=Y+se)>>>0>>0?1:0))+ie+((Z+=ne)>>>0>>0?1:0))+ce+((Z+=le)>>>0>>0?1:0),V.high=J,V.low=Z}var he,pe=z&D^~z&L,de=F&q^~F&U,fe=I&T^I&P^T&P,me=A&R^A&O^R&O,ge=(I>>>28|A<<4)^(I<<30|A>>>2)^(I<<25|A>>>7),ve=(A>>>28|I<<4)^(A<<30|I>>>2)^(A<<25|I>>>7),ye=(z>>>14|F<<18)^(z>>>18|F<<14)^(z<<23|F>>>9),_e=(F>>>14|z<<18)^(F>>>18|z<<14)^(F<<23|z>>>9),be=u[W],we=be.high,Ee=be.low,ke=H+ye+((he=K+_e)>>>0>>0?1:0),Se=ve+me;H=L,K=U,L=D,U=q,D=z,q=F,z=B+(ke=(ke=(ke=ke+pe+((he+=de)>>>0>>0?1:0))+we+((he+=Ee)>>>0>>0?1:0))+J+((he+=Z)>>>0>>0?1:0))+((F=C+he|0)>>>0>>0?1:0)|0,B=P,C=O,P=T,O=R,T=I,R=A,I=ke+(ge+fe+(Se>>>0>>0?1:0))+((A=he+Se|0)>>>0>>0?1:0)|0}f=i.low=f+A,i.high=d+I+(f>>>0>>0?1:0),g=n.low=g+R,n.high=m+T+(g>>>0>>0?1:0),y=a.low=y+O,a.high=v+P+(y>>>0>>0?1:0),b=o.low=b+C,o.high=_+B+(b>>>0>>0?1:0),E=s.low=E+F,s.high=w+z+(E>>>0>>0?1:0),S=l.low=S+q,l.high=k+D+(S>>>0>>0?1:0),j=h.low=j+U,h.high=x+L+(j>>>0>>0?1:0),M=p.low=M+K,p.high=N+H+(M>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(l),e.HmacSHA512=t._createHmacHelper(l)}(),i.SHA512)},94253:function(e,t,r){var i;e.exports=(i=r(78249),r(98269),r(68214),r(90888),r(75109),function(){var e=i,t=e.lib,r=t.WordArray,n=t.BlockCipher,a=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],s=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],u=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],c=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],l=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],h=a.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=o[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],a=0;a<16;a++){var c=n[a]=[],l=u[a];for(r=0;r<24;r++)c[r/6|0]|=t[(s[r]-1+l)%28]<<31-r%6,c[4+(r/6|0)]|=t[28+(s[r+24]-1+l)%28]<<31-r%6;for(c[0]=c[0]<<1|c[0]>>>31,r=1;r<7;r++)c[r]=c[r]>>>4*(r-1)+3;c[7]=c[7]<<5|c[7]>>>27}var h=this._invSubKeys=[];for(r=0;r<16;r++)h[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],p.call(this,4,252645135),p.call(this,16,65535),d.call(this,2,858993459),d.call(this,8,16711935),p.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],a=this._lBlock,o=this._rBlock,s=0,u=0;u<8;u++)s|=c[u][((o^n[u])&l[u])>>>0];this._lBlock=o,this._rBlock=a^s}var h=this._lBlock;this._lBlock=this._rBlock,this._rBlock=h,p.call(this,1,1431655765),d.call(this,8,16711935),d.call(this,2,858993459),p.call(this,16,65535),p.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function p(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),i=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=h.createEncryptor(r.create(t)),this._des2=h.createEncryptor(r.create(i)),this._des3=h.createEncryptor(r.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(f)}(),i.TripleDES)},64938:function(e,t,r){var i,n,a,o,s,u;e.exports=(i=r(78249),a=(n=i).lib,o=a.Base,s=a.WordArray,(u=n.x64={}).Word=o.extend({init:function(e,t){this.high=e,this.low=t}}),u.WordArray=o.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:8*e.length},toX32:function(){for(var e=this.words,t=e.length,r=[],i=0;i{"use strict";var i=r(82215),n="function"==typeof Symbol&&"symbol"==typeof Symbol("foo"),a=Object.prototype.toString,o=Array.prototype.concat,s=Object.defineProperty,u=r(31044)(),c=s&&u,l=function(e,t,r,i){var n;(!(t in e)||"function"==typeof(n=i)&&"[object Function]"===a.call(n)&&i())&&(c?s(e,t,{configurable:!0,enumerable:!1,value:r,writable:!0}):e[t]=r)},h=function(e,t){var r=arguments.length>2?arguments[2]:{},a=i(t);n&&(a=o.call(a,Object.getOwnPropertySymbols(t)));for(var s=0;s{var i=r(42830).Stream,n=r(89539);function a(){this.source=null,this.dataSize=0,this.maxDataSize=1048576,this.pauseStream=!0,this._maxDataSizeExceeded=!1,this._released=!1,this._bufferedEvents=[]}e.exports=a,n.inherits(a,i),a.create=function(e,t){var r=new this;for(var i in t=t||{})r[i]=t[i];r.source=e;var n=e.emit;return e.emit=function(){return r._handleEmit(arguments),n.apply(e,arguments)},e.on("error",(function(){})),r.pauseStream&&e.pause(),r},Object.defineProperty(a.prototype,"readable",{configurable:!0,enumerable:!0,get:function(){return this.source.readable}}),a.prototype.setEncoding=function(){return this.source.setEncoding.apply(this.source,arguments)},a.prototype.resume=function(){this._released||this.release(),this.source.resume()},a.prototype.pause=function(){this.source.pause()},a.prototype.release=function(){this._released=!0,this._bufferedEvents.forEach(function(e){this.emit.apply(this,e)}.bind(this)),this._bufferedEvents=[]},a.prototype.pipe=function(){var e=i.prototype.pipe.apply(this,arguments);return this.resume(),e},a.prototype._handleEmit=function(e){this._released?this.emit.apply(this,e):("data"===e[0]&&(this.dataSize+=e[1].length,this._checkIfMaxDataSizeExceeded()),this._bufferedEvents.push(e))},a.prototype._checkIfMaxDataSizeExceeded=function(){if(!(this._maxDataSizeExceeded||this.dataSize<=this.maxDataSize)){this._maxDataSizeExceeded=!0;var e="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this.emit("error",new Error(e))}}},15251:(e,t,r)=>{"use strict";t.utils=r(11278),t.Cipher=r(55756),t.DES=r(70778),t.CBC=r(39051),t.EDE=r(50651)},39051:(e,t,r)=>{"use strict";var i=r(79746),n=r(35717),a={};function o(e){i.equal(e.length,8,"Invalid IV length"),this.iv=new Array(8);for(var t=0;t{"use strict";var i=r(79746);function n(e){this.options=e,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}e.exports=n,n.prototype._init=function(){},n.prototype.update=function(e){return 0===e.length?[]:"decrypt"===this.type?this._updateDecrypt(e):this._updateEncrypt(e)},n.prototype._buffer=function(e,t){for(var r=Math.min(this.buffer.length-this.bufferOff,e.length-t),i=0;i0;i--)t+=this._buffer(e,t),r+=this._flushBuffer(n,r);return t+=this._buffer(e,t),n},n.prototype.final=function(e){var t,r;return e&&(t=this.update(e)),r="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),t?t.concat(r):r},n.prototype._pad=function(e,t){if(0===t)return!1;for(;t{"use strict";var i=r(79746),n=r(35717),a=r(11278),o=r(55756);function s(){this.tmp=new Array(2),this.keys=null}function u(e){o.call(this,e);var t=new s;this._desState=t,this.deriveKeys(t,e.key)}n(u,o),e.exports=u,u.create=function(e){return new u(e)};var c=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];u.prototype.deriveKeys=function(e,t){e.keys=new Array(32),i.equal(t.length,this.blockSize,"Invalid key length");var r=a.readUInt32BE(t,0),n=a.readUInt32BE(t,4);a.pc1(r,n,e.tmp,0),r=e.tmp[0],n=e.tmp[1];for(var o=0;o>>1];r=a.r28shl(r,s),n=a.r28shl(n,s),a.pc2(r,n,e.keys,o)}},u.prototype._update=function(e,t,r,i){var n=this._desState,o=a.readUInt32BE(e,t),s=a.readUInt32BE(e,t+4);a.ip(o,s,n.tmp,0),o=n.tmp[0],s=n.tmp[1],"encrypt"===this.type?this._encrypt(n,o,s,n.tmp,0):this._decrypt(n,o,s,n.tmp,0),o=n.tmp[0],s=n.tmp[1],a.writeUInt32BE(r,o,i),a.writeUInt32BE(r,s,i+4)},u.prototype._pad=function(e,t){for(var r=e.length-t,i=t;i>>0,o=p}a.rip(s,o,i,n)},u.prototype._decrypt=function(e,t,r,i,n){for(var o=r,s=t,u=e.keys.length-2;u>=0;u-=2){var c=e.keys[u],l=e.keys[u+1];a.expand(o,e.tmp,0),c^=e.tmp[0],l^=e.tmp[1];var h=a.substitute(c,l),p=o;o=(s^a.permute(h))>>>0,s=p}a.rip(o,s,i,n)}},50651:(e,t,r)=>{"use strict";var i=r(79746),n=r(35717),a=r(55756),o=r(70778);function s(e,t){i.equal(t.length,24,"Invalid key length");var r=t.slice(0,8),n=t.slice(8,16),a=t.slice(16,24);this.ciphers="encrypt"===e?[o.create({type:"encrypt",key:r}),o.create({type:"decrypt",key:n}),o.create({type:"encrypt",key:a})]:[o.create({type:"decrypt",key:a}),o.create({type:"encrypt",key:n}),o.create({type:"decrypt",key:r})]}function u(e){a.call(this,e);var t=new s(this.type,this.options.key);this._edeState=t}n(u,a),e.exports=u,u.create=function(e){return new u(e)},u.prototype._update=function(e,t,r,i){var n=this._edeState;n.ciphers[0]._update(e,t,r,i),n.ciphers[1]._update(r,i,r,i),n.ciphers[2]._update(r,i,r,i)},u.prototype._pad=o.prototype._pad,u.prototype._unpad=o.prototype._unpad},11278:(e,t)=>{"use strict";t.readUInt32BE=function(e,t){return(e[0+t]<<24|e[1+t]<<16|e[2+t]<<8|e[3+t])>>>0},t.writeUInt32BE=function(e,t,r){e[0+r]=t>>>24,e[1+r]=t>>>16&255,e[2+r]=t>>>8&255,e[3+r]=255&t},t.ip=function(e,t,r,i){for(var n=0,a=0,o=6;o>=0;o-=2){for(var s=0;s<=24;s+=8)n<<=1,n|=t>>>s+o&1;for(s=0;s<=24;s+=8)n<<=1,n|=e>>>s+o&1}for(o=6;o>=0;o-=2){for(s=1;s<=25;s+=8)a<<=1,a|=t>>>s+o&1;for(s=1;s<=25;s+=8)a<<=1,a|=e>>>s+o&1}r[i+0]=n>>>0,r[i+1]=a>>>0},t.rip=function(e,t,r,i){for(var n=0,a=0,o=0;o<4;o++)for(var s=24;s>=0;s-=8)n<<=1,n|=t>>>s+o&1,n<<=1,n|=e>>>s+o&1;for(o=4;o<8;o++)for(s=24;s>=0;s-=8)a<<=1,a|=t>>>s+o&1,a<<=1,a|=e>>>s+o&1;r[i+0]=n>>>0,r[i+1]=a>>>0},t.pc1=function(e,t,r,i){for(var n=0,a=0,o=7;o>=5;o--){for(var s=0;s<=24;s+=8)n<<=1,n|=t>>s+o&1;for(s=0;s<=24;s+=8)n<<=1,n|=e>>s+o&1}for(s=0;s<=24;s+=8)n<<=1,n|=t>>s+o&1;for(o=1;o<=3;o++){for(s=0;s<=24;s+=8)a<<=1,a|=t>>s+o&1;for(s=0;s<=24;s+=8)a<<=1,a|=e>>s+o&1}for(s=0;s<=24;s+=8)a<<=1,a|=e>>s+o&1;r[i+0]=n>>>0,r[i+1]=a>>>0},t.r28shl=function(e,t){return e<>>28-t};var r=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];t.pc2=function(e,t,i,n){for(var a=0,o=0,s=r.length>>>1,u=0;u>>r[u]&1;for(u=s;u>>r[u]&1;i[n+0]=a>>>0,i[n+1]=o>>>0},t.expand=function(e,t,r){var i=0,n=0;i=(1&e)<<5|e>>>27;for(var a=23;a>=15;a-=4)i<<=6,i|=e>>>a&63;for(a=11;a>=3;a-=4)n|=e>>>a&63,n<<=6;n|=(31&e)<<1|e>>>31,t[r+0]=i>>>0,t[r+1]=n>>>0};var i=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];t.substitute=function(e,t){for(var r=0,n=0;n<4;n++)r<<=4,r|=i[64*n+(e>>>18-6*n&63)];for(n=0;n<4;n++)r<<=4,r|=i[256+64*n+(t>>>18-6*n&63)];return r>>>0};var n=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];t.permute=function(e){for(var t=0,r=0;r>>n[r]&1;return t>>>0},t.padSplit=function(e,t,r){for(var i=e.toString(2);i.length{var i=r(48764).Buffer,n=r(43590),a=r(29799),o=r(57426),s={binary:!0,hex:!0,base64:!0};t.DiffieHellmanGroup=t.createDiffieHellmanGroup=t.getDiffieHellman=function(e){var t=new i(a[e].prime,"hex"),r=new i(a[e].gen,"hex");return new o(t,r)},t.createDiffieHellman=t.DiffieHellman=function e(t,r,a,u){return i.isBuffer(r)||void 0===s[r]?e(t,"binary",r,a):(r=r||"binary",u=u||"binary",a=a||new i([2]),i.isBuffer(a)||(a=new i(a,u)),"number"==typeof t?new o(n(t,a),a,!0):(i.isBuffer(t)||(t=new i(t,r)),new o(t,a,!0)))}},57426:(e,t,r)=>{var i=r(48764).Buffer,n=r(83620),a=new(r(63047)),o=new n(24),s=new n(11),u=new n(10),c=new n(3),l=new n(7),h=r(43590),p=r(61798);function d(e,t){return t=t||"utf8",i.isBuffer(e)||(e=new i(e,t)),this._pub=new n(e),this}function f(e,t){return t=t||"utf8",i.isBuffer(e)||(e=new i(e,t)),this._priv=new n(e),this}e.exports=g;var m={};function g(e,t,r){this.setGenerator(t),this.__prime=new n(e),this._prime=n.mont(this.__prime),this._primeLen=e.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=d,this.setPrivateKey=f):this._primeCode=8}function v(e,t){var r=new i(e.toArray());return t?r.toString(t):r}Object.defineProperty(g.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=function(e,t){var r=t.toString("hex"),i=[r,e.toString(16)].join("_");if(i in m)return m[i];var n,p=0;if(e.isEven()||!h.simpleSieve||!h.fermatTest(e)||!a.test(e))return p+=1,p+="02"===r||"05"===r?8:4,m[i]=p,p;switch(a.test(e.shrn(1))||(p+=2),r){case"02":e.mod(o).cmp(s)&&(p+=8);break;case"05":(n=e.mod(u)).cmp(c)&&n.cmp(l)&&(p+=8);break;default:p+=4}return m[i]=p,p}(this.__prime,this.__gen)),this._primeCode}}),g.prototype.generateKeys=function(){return this._priv||(this._priv=new n(p(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},g.prototype.computeSecret=function(e){var t=(e=(e=new n(e)).toRed(this._prime)).redPow(this._priv).fromRed(),r=new i(t.toArray()),a=this.getPrime();if(r.length{var i=r(61798);e.exports=y,y.simpleSieve=g,y.fermatTest=v;var n=r(83620),a=new n(24),o=new(r(63047)),s=new n(1),u=new n(2),c=new n(5),l=(new n(16),new n(8),new n(10)),h=new n(3),p=(new n(7),new n(11)),d=new n(4),f=(new n(12),null);function m(){if(null!==f)return f;var e=[];e[0]=2;for(var t=1,r=3;r<1048576;r+=2){for(var i=Math.ceil(Math.sqrt(r)),n=0;ne;)r.ishrn(1);if(r.isEven()&&r.iadd(s),r.testn(1)||r.iadd(u),t.cmp(u)){if(!t.cmp(c))for(;r.mod(l).cmp(h);)r.iadd(d)}else for(;r.mod(a).cmp(p);)r.iadd(d);if(g(f=r.shrn(1))&&g(r)&&v(f)&&v(r)&&o.test(f)&&o.test(r))return r}}},83620:function(e,t,r){!function(e,t){"use strict";function i(e,t){if(!e)throw new Error(t||"Assertion failed")}function n(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}function a(e,t,r){if(a.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(r=t,t=10),this._init(e||0,t||10,r||"be"))}var o;"object"==typeof e?e.exports=a:t.BN=a,a.BN=a,a.wordSize=26;try{o="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(7748).Buffer}catch(e){}function s(e,t){var r=e.charCodeAt(t);return r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function u(e,t,r){var i=s(e,r);return r-1>=t&&(i|=s(e,r-1)<<4),i}function c(e,t,r,i){for(var n=0,a=Math.min(e.length,r),o=t;o=49?s-49+10:s>=17?s-17+10:s}return n}a.isBN=function(e){return e instanceof a||null!==e&&"object"==typeof e&&e.constructor.wordSize===a.wordSize&&Array.isArray(e.words)},a.max=function(e,t){return e.cmp(t)>0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)o=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)n=u(e,t,i)<=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;this.strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,o=a%i,s=Math.min(a,a-o)+r,u=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],o=n*a,s=67108863&o,u=o/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&u,p=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=p;d++){var f=c-d|0;l+=(o=(n=0|e.words[f])*(a=0|t.words[d])+h)/67108864|0,h=67108863&o}r.words[c]=0|h,u=0|l}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}a.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,a=0,o=0;o>>24-n&16777215)||o!==this.length-1?l[6-u.length]+u+r:u+r,(n+=2)>=26&&(n-=26,o--)}for(0!==a&&(r=a.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var c=h[e],d=p[e];r="";var f=this.clone();for(f.negative=0;!f.isZero();){var m=f.modn(d).toString(e);r=(f=f.idivn(d)).isZero()?m+r:l[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(e,t){return i(void 0!==o),this.toArrayLike(o,e,t)},a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},a.prototype.toArrayLike=function(e,t,r){var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0"),this.strip();var o,s,u="le"===t,c=new e(a),l=this.clone();if(u){for(s=0;!l.isZero();s++)o=l.andln(255),l.iushrn(8),c[s]=o;for(;s=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==a&&o>26,this.words[o]=67108863&t;if(0===a&&o>>13,d=0|o[1],f=8191&d,m=d>>>13,g=0|o[2],v=8191&g,y=g>>>13,_=0|o[3],b=8191&_,w=_>>>13,E=0|o[4],k=8191&E,S=E>>>13,x=0|o[5],j=8191&x,N=x>>>13,M=0|o[6],I=8191&M,A=M>>>13,T=0|o[7],R=8191&T,P=T>>>13,O=0|o[8],B=8191&O,C=O>>>13,z=0|o[9],F=8191&z,D=z>>>13,q=0|s[0],L=8191&q,U=q>>>13,H=0|s[1],K=8191&H,W=H>>>13,Z=0|s[2],J=8191&Z,V=Z>>>13,$=0|s[3],G=8191&$,Q=$>>>13,X=0|s[4],Y=8191&X,ee=X>>>13,te=0|s[5],re=8191&te,ie=te>>>13,ne=0|s[6],ae=8191&ne,oe=ne>>>13,se=0|s[7],ue=8191&se,ce=se>>>13,le=0|s[8],he=8191&le,pe=le>>>13,de=0|s[9],fe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ge=(c+(i=Math.imul(h,L))|0)+((8191&(n=(n=Math.imul(h,U))+Math.imul(p,L)|0))<<13)|0;c=((a=Math.imul(p,U))+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(f,L),n=(n=Math.imul(f,U))+Math.imul(m,L)|0,a=Math.imul(m,U);var ve=(c+(i=i+Math.imul(h,K)|0)|0)+((8191&(n=(n=n+Math.imul(h,W)|0)+Math.imul(p,K)|0))<<13)|0;c=((a=a+Math.imul(p,W)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(v,L),n=(n=Math.imul(v,U))+Math.imul(y,L)|0,a=Math.imul(y,U),i=i+Math.imul(f,K)|0,n=(n=n+Math.imul(f,W)|0)+Math.imul(m,K)|0,a=a+Math.imul(m,W)|0;var ye=(c+(i=i+Math.imul(h,J)|0)|0)+((8191&(n=(n=n+Math.imul(h,V)|0)+Math.imul(p,J)|0))<<13)|0;c=((a=a+Math.imul(p,V)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(b,L),n=(n=Math.imul(b,U))+Math.imul(w,L)|0,a=Math.imul(w,U),i=i+Math.imul(v,K)|0,n=(n=n+Math.imul(v,W)|0)+Math.imul(y,K)|0,a=a+Math.imul(y,W)|0,i=i+Math.imul(f,J)|0,n=(n=n+Math.imul(f,V)|0)+Math.imul(m,J)|0,a=a+Math.imul(m,V)|0;var _e=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(n=(n=n+Math.imul(h,Q)|0)+Math.imul(p,G)|0))<<13)|0;c=((a=a+Math.imul(p,Q)|0)+(n>>>13)|0)+(_e>>>26)|0,_e&=67108863,i=Math.imul(k,L),n=(n=Math.imul(k,U))+Math.imul(S,L)|0,a=Math.imul(S,U),i=i+Math.imul(b,K)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(w,K)|0,a=a+Math.imul(w,W)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,V)|0)+Math.imul(y,J)|0,a=a+Math.imul(y,V)|0,i=i+Math.imul(f,G)|0,n=(n=n+Math.imul(f,Q)|0)+Math.imul(m,G)|0,a=a+Math.imul(m,Q)|0;var be=(c+(i=i+Math.imul(h,Y)|0)|0)+((8191&(n=(n=n+Math.imul(h,ee)|0)+Math.imul(p,Y)|0))<<13)|0;c=((a=a+Math.imul(p,ee)|0)+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(j,L),n=(n=Math.imul(j,U))+Math.imul(N,L)|0,a=Math.imul(N,U),i=i+Math.imul(k,K)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(S,K)|0,a=a+Math.imul(S,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,V)|0)+Math.imul(w,J)|0,a=a+Math.imul(w,V)|0,i=i+Math.imul(v,G)|0,n=(n=n+Math.imul(v,Q)|0)+Math.imul(y,G)|0,a=a+Math.imul(y,Q)|0,i=i+Math.imul(f,Y)|0,n=(n=n+Math.imul(f,ee)|0)+Math.imul(m,Y)|0,a=a+Math.imul(m,ee)|0;var we=(c+(i=i+Math.imul(h,re)|0)|0)+((8191&(n=(n=n+Math.imul(h,ie)|0)+Math.imul(p,re)|0))<<13)|0;c=((a=a+Math.imul(p,ie)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(I,L),n=(n=Math.imul(I,U))+Math.imul(A,L)|0,a=Math.imul(A,U),i=i+Math.imul(j,K)|0,n=(n=n+Math.imul(j,W)|0)+Math.imul(N,K)|0,a=a+Math.imul(N,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,V)|0)+Math.imul(S,J)|0,a=a+Math.imul(S,V)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,Q)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,Q)|0,i=i+Math.imul(v,Y)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(y,Y)|0,a=a+Math.imul(y,ee)|0,i=i+Math.imul(f,re)|0,n=(n=n+Math.imul(f,ie)|0)+Math.imul(m,re)|0,a=a+Math.imul(m,ie)|0;var Ee=(c+(i=i+Math.imul(h,ae)|0)|0)+((8191&(n=(n=n+Math.imul(h,oe)|0)+Math.imul(p,ae)|0))<<13)|0;c=((a=a+Math.imul(p,oe)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(R,L),n=(n=Math.imul(R,U))+Math.imul(P,L)|0,a=Math.imul(P,U),i=i+Math.imul(I,K)|0,n=(n=n+Math.imul(I,W)|0)+Math.imul(A,K)|0,a=a+Math.imul(A,W)|0,i=i+Math.imul(j,J)|0,n=(n=n+Math.imul(j,V)|0)+Math.imul(N,J)|0,a=a+Math.imul(N,V)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,Q)|0)+Math.imul(S,G)|0,a=a+Math.imul(S,Q)|0,i=i+Math.imul(b,Y)|0,n=(n=n+Math.imul(b,ee)|0)+Math.imul(w,Y)|0,a=a+Math.imul(w,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(y,re)|0,a=a+Math.imul(y,ie)|0,i=i+Math.imul(f,ae)|0,n=(n=n+Math.imul(f,oe)|0)+Math.imul(m,ae)|0,a=a+Math.imul(m,oe)|0;var ke=(c+(i=i+Math.imul(h,ue)|0)|0)+((8191&(n=(n=n+Math.imul(h,ce)|0)+Math.imul(p,ue)|0))<<13)|0;c=((a=a+Math.imul(p,ce)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(B,L),n=(n=Math.imul(B,U))+Math.imul(C,L)|0,a=Math.imul(C,U),i=i+Math.imul(R,K)|0,n=(n=n+Math.imul(R,W)|0)+Math.imul(P,K)|0,a=a+Math.imul(P,W)|0,i=i+Math.imul(I,J)|0,n=(n=n+Math.imul(I,V)|0)+Math.imul(A,J)|0,a=a+Math.imul(A,V)|0,i=i+Math.imul(j,G)|0,n=(n=n+Math.imul(j,Q)|0)+Math.imul(N,G)|0,a=a+Math.imul(N,Q)|0,i=i+Math.imul(k,Y)|0,n=(n=n+Math.imul(k,ee)|0)+Math.imul(S,Y)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(b,re)|0,n=(n=n+Math.imul(b,ie)|0)+Math.imul(w,re)|0,a=a+Math.imul(w,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,oe)|0)+Math.imul(y,ae)|0,a=a+Math.imul(y,oe)|0,i=i+Math.imul(f,ue)|0,n=(n=n+Math.imul(f,ce)|0)+Math.imul(m,ue)|0,a=a+Math.imul(m,ce)|0;var Se=(c+(i=i+Math.imul(h,he)|0)|0)+((8191&(n=(n=n+Math.imul(h,pe)|0)+Math.imul(p,he)|0))<<13)|0;c=((a=a+Math.imul(p,pe)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(F,L),n=(n=Math.imul(F,U))+Math.imul(D,L)|0,a=Math.imul(D,U),i=i+Math.imul(B,K)|0,n=(n=n+Math.imul(B,W)|0)+Math.imul(C,K)|0,a=a+Math.imul(C,W)|0,i=i+Math.imul(R,J)|0,n=(n=n+Math.imul(R,V)|0)+Math.imul(P,J)|0,a=a+Math.imul(P,V)|0,i=i+Math.imul(I,G)|0,n=(n=n+Math.imul(I,Q)|0)+Math.imul(A,G)|0,a=a+Math.imul(A,Q)|0,i=i+Math.imul(j,Y)|0,n=(n=n+Math.imul(j,ee)|0)+Math.imul(N,Y)|0,a=a+Math.imul(N,ee)|0,i=i+Math.imul(k,re)|0,n=(n=n+Math.imul(k,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(b,ae)|0,n=(n=n+Math.imul(b,oe)|0)+Math.imul(w,ae)|0,a=a+Math.imul(w,oe)|0,i=i+Math.imul(v,ue)|0,n=(n=n+Math.imul(v,ce)|0)+Math.imul(y,ue)|0,a=a+Math.imul(y,ce)|0,i=i+Math.imul(f,he)|0,n=(n=n+Math.imul(f,pe)|0)+Math.imul(m,he)|0,a=a+Math.imul(m,pe)|0;var xe=(c+(i=i+Math.imul(h,fe)|0)|0)+((8191&(n=(n=n+Math.imul(h,me)|0)+Math.imul(p,fe)|0))<<13)|0;c=((a=a+Math.imul(p,me)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(F,K),n=(n=Math.imul(F,W))+Math.imul(D,K)|0,a=Math.imul(D,W),i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,V)|0)+Math.imul(C,J)|0,a=a+Math.imul(C,V)|0,i=i+Math.imul(R,G)|0,n=(n=n+Math.imul(R,Q)|0)+Math.imul(P,G)|0,a=a+Math.imul(P,Q)|0,i=i+Math.imul(I,Y)|0,n=(n=n+Math.imul(I,ee)|0)+Math.imul(A,Y)|0,a=a+Math.imul(A,ee)|0,i=i+Math.imul(j,re)|0,n=(n=n+Math.imul(j,ie)|0)+Math.imul(N,re)|0,a=a+Math.imul(N,ie)|0,i=i+Math.imul(k,ae)|0,n=(n=n+Math.imul(k,oe)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,oe)|0,i=i+Math.imul(b,ue)|0,n=(n=n+Math.imul(b,ce)|0)+Math.imul(w,ue)|0,a=a+Math.imul(w,ce)|0,i=i+Math.imul(v,he)|0,n=(n=n+Math.imul(v,pe)|0)+Math.imul(y,he)|0,a=a+Math.imul(y,pe)|0;var je=(c+(i=i+Math.imul(f,fe)|0)|0)+((8191&(n=(n=n+Math.imul(f,me)|0)+Math.imul(m,fe)|0))<<13)|0;c=((a=a+Math.imul(m,me)|0)+(n>>>13)|0)+(je>>>26)|0,je&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,V))+Math.imul(D,J)|0,a=Math.imul(D,V),i=i+Math.imul(B,G)|0,n=(n=n+Math.imul(B,Q)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,Q)|0,i=i+Math.imul(R,Y)|0,n=(n=n+Math.imul(R,ee)|0)+Math.imul(P,Y)|0,a=a+Math.imul(P,ee)|0,i=i+Math.imul(I,re)|0,n=(n=n+Math.imul(I,ie)|0)+Math.imul(A,re)|0,a=a+Math.imul(A,ie)|0,i=i+Math.imul(j,ae)|0,n=(n=n+Math.imul(j,oe)|0)+Math.imul(N,ae)|0,a=a+Math.imul(N,oe)|0,i=i+Math.imul(k,ue)|0,n=(n=n+Math.imul(k,ce)|0)+Math.imul(S,ue)|0,a=a+Math.imul(S,ce)|0,i=i+Math.imul(b,he)|0,n=(n=n+Math.imul(b,pe)|0)+Math.imul(w,he)|0,a=a+Math.imul(w,pe)|0;var Ne=(c+(i=i+Math.imul(v,fe)|0)|0)+((8191&(n=(n=n+Math.imul(v,me)|0)+Math.imul(y,fe)|0))<<13)|0;c=((a=a+Math.imul(y,me)|0)+(n>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,i=Math.imul(F,G),n=(n=Math.imul(F,Q))+Math.imul(D,G)|0,a=Math.imul(D,Q),i=i+Math.imul(B,Y)|0,n=(n=n+Math.imul(B,ee)|0)+Math.imul(C,Y)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(R,re)|0,n=(n=n+Math.imul(R,ie)|0)+Math.imul(P,re)|0,a=a+Math.imul(P,ie)|0,i=i+Math.imul(I,ae)|0,n=(n=n+Math.imul(I,oe)|0)+Math.imul(A,ae)|0,a=a+Math.imul(A,oe)|0,i=i+Math.imul(j,ue)|0,n=(n=n+Math.imul(j,ce)|0)+Math.imul(N,ue)|0,a=a+Math.imul(N,ce)|0,i=i+Math.imul(k,he)|0,n=(n=n+Math.imul(k,pe)|0)+Math.imul(S,he)|0,a=a+Math.imul(S,pe)|0;var Me=(c+(i=i+Math.imul(b,fe)|0)|0)+((8191&(n=(n=n+Math.imul(b,me)|0)+Math.imul(w,fe)|0))<<13)|0;c=((a=a+Math.imul(w,me)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(F,Y),n=(n=Math.imul(F,ee))+Math.imul(D,Y)|0,a=Math.imul(D,ee),i=i+Math.imul(B,re)|0,n=(n=n+Math.imul(B,ie)|0)+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(R,ae)|0,n=(n=n+Math.imul(R,oe)|0)+Math.imul(P,ae)|0,a=a+Math.imul(P,oe)|0,i=i+Math.imul(I,ue)|0,n=(n=n+Math.imul(I,ce)|0)+Math.imul(A,ue)|0,a=a+Math.imul(A,ce)|0,i=i+Math.imul(j,he)|0,n=(n=n+Math.imul(j,pe)|0)+Math.imul(N,he)|0,a=a+Math.imul(N,pe)|0;var Ie=(c+(i=i+Math.imul(k,fe)|0)|0)+((8191&(n=(n=n+Math.imul(k,me)|0)+Math.imul(S,fe)|0))<<13)|0;c=((a=a+Math.imul(S,me)|0)+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(F,re),n=(n=Math.imul(F,ie))+Math.imul(D,re)|0,a=Math.imul(D,ie),i=i+Math.imul(B,ae)|0,n=(n=n+Math.imul(B,oe)|0)+Math.imul(C,ae)|0,a=a+Math.imul(C,oe)|0,i=i+Math.imul(R,ue)|0,n=(n=n+Math.imul(R,ce)|0)+Math.imul(P,ue)|0,a=a+Math.imul(P,ce)|0,i=i+Math.imul(I,he)|0,n=(n=n+Math.imul(I,pe)|0)+Math.imul(A,he)|0,a=a+Math.imul(A,pe)|0;var Ae=(c+(i=i+Math.imul(j,fe)|0)|0)+((8191&(n=(n=n+Math.imul(j,me)|0)+Math.imul(N,fe)|0))<<13)|0;c=((a=a+Math.imul(N,me)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(F,ae),n=(n=Math.imul(F,oe))+Math.imul(D,ae)|0,a=Math.imul(D,oe),i=i+Math.imul(B,ue)|0,n=(n=n+Math.imul(B,ce)|0)+Math.imul(C,ue)|0,a=a+Math.imul(C,ce)|0,i=i+Math.imul(R,he)|0,n=(n=n+Math.imul(R,pe)|0)+Math.imul(P,he)|0,a=a+Math.imul(P,pe)|0;var Te=(c+(i=i+Math.imul(I,fe)|0)|0)+((8191&(n=(n=n+Math.imul(I,me)|0)+Math.imul(A,fe)|0))<<13)|0;c=((a=a+Math.imul(A,me)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(F,ue),n=(n=Math.imul(F,ce))+Math.imul(D,ue)|0,a=Math.imul(D,ce),i=i+Math.imul(B,he)|0,n=(n=n+Math.imul(B,pe)|0)+Math.imul(C,he)|0,a=a+Math.imul(C,pe)|0;var Re=(c+(i=i+Math.imul(R,fe)|0)|0)+((8191&(n=(n=n+Math.imul(R,me)|0)+Math.imul(P,fe)|0))<<13)|0;c=((a=a+Math.imul(P,me)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(F,he),n=(n=Math.imul(F,pe))+Math.imul(D,he)|0,a=Math.imul(D,pe);var Pe=(c+(i=i+Math.imul(B,fe)|0)|0)+((8191&(n=(n=n+Math.imul(B,me)|0)+Math.imul(C,fe)|0))<<13)|0;c=((a=a+Math.imul(C,me)|0)+(n>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var Oe=(c+(i=Math.imul(F,fe))|0)+((8191&(n=(n=Math.imul(F,me))+Math.imul(D,fe)|0))<<13)|0;return c=((a=Math.imul(D,me))+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ve,u[2]=ye,u[3]=_e,u[4]=be,u[5]=we,u[6]=Ee,u[7]=ke,u[8]=Se,u[9]=xe,u[10]=je,u[11]=Ne,u[12]=Me,u[13]=Ie,u[14]=Ae,u[15]=Te,u[16]=Re,u[17]=Pe,u[18]=Oe,0!==c&&(u[19]=c,r.length++),r};function m(e,t,r){return(new g).mulp(e,t,r)}function g(e,t){this.x=e,this.y=t}Math.imul||(f=d),a.prototype.mulTo=function(e,t){var r,i=this.length+e.length;return r=10===this.length&&10===e.length?f(this,e,t):i<63?d(this,e,t):i<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,i=o,o=n}return 0!==i?r.words[a]=i:r.length--,r.strip()}(this,e,t):m(this,e,t),r},g.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},g.prototype.permute=function(e,t,r,i,n,a){for(var o=0;o>>=1)n++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*t;o>=26,t+=n/67108864|0,t+=a>>>26,this.words[r]=67108863&a}return 0!==t&&(this.words[r]=t,this.length++),this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n}return t}(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,o=Math.min((e-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,c=0;c=0&&(0!==l||c>=n);c--){var h=0|this.words[c];this.words[c]=l<<26-a|h>>>a,l=h&s}return u&&0!==l&&(u.words[u.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===s)return this.strip();for(i(-1===s),s=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,o=0|n.words[n.length-1];0!=(r=26-this._countBits(o))&&(n=n.ushln(r),i.iushln(r),o=0|n.words[n.length-1]);var s,u=i.length-n.length;if("mod"!==t){(s=new a(null)).length=u+1,s.words=new Array(s.length);for(var c=0;c=0;h--){var p=67108864*(0|i.words[n.length+h])+(0|i.words[n.length+h-1]);for(p=Math.min(p/o|0,67108863),i._ishlnsubmul(n,p,h);0!==i.negative;)p--,i.negative=0,i._ishlnsubmul(n,1,h),i.isZero()||(i.negative^=1);s&&(s.words[h]=p)}return s&&s.strip(),i.strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(n=s.div.neg()),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:n,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modn(e.words[0]))}:this._wordDiv(e,t);var n,o,s},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modn=function(e){i(e<=67108863);for(var t=(1<<26)%e,r=0,n=this.length-1;n>=0;n--)r=(t*r+(0|this.words[n]))%e;return r},a.prototype.idivn=function(e){i(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*t;this.words[r]=n/e|0,t=n%e}return this.strip()},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new a(1),o=new a(0),s=new a(0),u=new a(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var l=r.clone(),h=t.clone();!t.isZero();){for(var p=0,d=1;0==(t.words[0]&d)&&p<26;++p,d<<=1);if(p>0)for(t.iushrn(p);p-- >0;)(n.isOdd()||o.isOdd())&&(n.iadd(l),o.isub(h)),n.iushrn(1),o.iushrn(1);for(var f=0,m=1;0==(r.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(r.iushrn(f);f-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(l),u.isub(h)),s.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(s),o.isub(u)):(r.isub(t),s.isub(n),u.isub(o))}return{a:s,b:u,gcd:r.iushln(c)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,o=new a(1),s=new a(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,l=1;0==(t.words[0]&l)&&c<26;++c,l<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);for(var h=0,p=1;0==(r.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s)):(r.isub(t),s.isub(o))}return(n=0===t.cmpn(1)?o:s).cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new k(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var v={k256:null,p224:null,p192:null,p25519:null};function y(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function _(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function E(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(e){if("string"==typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function S(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},y.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},y.prototype.split=function(e,t){e.iushrn(this.n,0,t)},y.prototype.imulK=function(e){return e.imul(this.k)},n(_,y),_.prototype.split=function(e,t){for(var r=4194303,i=Math.min(e.length,9),n=0;n>>22,a=o}a>>>=22,e.words[n-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},_.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(v[e])return v[e];var t;if("k256"===e)t=new _;else if("p224"===e)t=new b;else if("p192"===e)t=new w;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new E}return v[e]=t,t},k.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},k.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),o=0;!n.isZero()&&0===n.andln(1);)o++,n.iushrn(1);i(!n.isZero());var s=new a(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new a(2*l*l).toRed(this);0!==this.pow(l,c).cmp(u);)l.redIAdd(u);for(var h=this.pow(l,n),p=this.pow(e,n.addn(1).iushrn(1)),d=this.pow(e,n),f=o;0!==d.cmp(s);){for(var m=d,g=0;0!==m.cmp(s);g++)m=m.redSqr();i(g=0;i--){for(var c=t.words[i],l=u-1;l>=0;l--){var h=c>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==h||0!==o?(o<<=1,o|=h,(4==++s||0===i&&0===l)&&(n=this.mul(n,r[o]),s=0,o=0)):s=0}u=26}return n},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new S(e)},n(S,k),S.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},S.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},S.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},S.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=r.nmd(e),this)},66245:(e,t,r)=>{var i=r(55835),n=r(36077).BigInteger,a=(r(62241).ECPointFp,r(2399).Buffer);function o(e,t){return e.length>=t?e:o("0"+e,t)}t.ECCurves=r(75528),t.ECKey=function(e,t,r){var s,u=e(),c=u.getN(),l=Math.floor(c.bitLength()/8);if(t)if(r)e=u.getCurve(),this.P=e.decodePointHex(t.toString("hex"));else{if(t.length!=l)return!1;s=new n(t.toString("hex"),16)}else{var h=c.subtract(n.ONE),p=new n(i.randomBytes(c.bitLength()));s=p.mod(h).add(n.ONE),this.P=u.getG().multiply(s)}this.P&&(this.PublicKey=a.from(u.getCurve().encodeCompressedPointHex(this.P),"hex")),s&&(this.PrivateKey=a.from(o(s.toString(16),2*l),"hex"),this.deriveSharedSecret=function(e){if(!e||!e.P)return!1;var t=e.P.multiply(s);return a.from(o(t.getX().toBigInteger().toString(16),2*l),"hex")})}},62241:(e,t,r)=>{var i=r(36077).BigInteger,n=i.prototype.Barrett;function a(e,t){this.x=t,this.q=e}function o(e,t,r,n){this.curve=e,this.x=t,this.y=r,this.z=null==n?i.ONE:n,this.zinv=null}function s(e,t,r){this.q=e,this.a=this.fromBigInteger(t),this.b=this.fromBigInteger(r),this.infinity=new o(this,null,null),this.reducer=new n(this.q)}a.prototype.equals=function(e){return e==this||this.q.equals(e.q)&&this.x.equals(e.x)},a.prototype.toBigInteger=function(){return this.x},a.prototype.negate=function(){return new a(this.q,this.x.negate().mod(this.q))},a.prototype.add=function(e){return new a(this.q,this.x.add(e.toBigInteger()).mod(this.q))},a.prototype.subtract=function(e){return new a(this.q,this.x.subtract(e.toBigInteger()).mod(this.q))},a.prototype.multiply=function(e){return new a(this.q,this.x.multiply(e.toBigInteger()).mod(this.q))},a.prototype.square=function(){return new a(this.q,this.x.square().mod(this.q))},a.prototype.divide=function(e){return new a(this.q,this.x.multiply(e.toBigInteger().modInverse(this.q)).mod(this.q))},o.prototype.getX=function(){null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q));var e=this.x.toBigInteger().multiply(this.zinv);return this.curve.reduce(e),this.curve.fromBigInteger(e)},o.prototype.getY=function(){null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q));var e=this.y.toBigInteger().multiply(this.zinv);return this.curve.reduce(e),this.curve.fromBigInteger(e)},o.prototype.equals=function(e){return e==this||(this.isInfinity()?e.isInfinity():e.isInfinity()?this.isInfinity():!!e.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(e.z)).mod(this.curve.q).equals(i.ZERO)&&e.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(e.z)).mod(this.curve.q).equals(i.ZERO))},o.prototype.isInfinity=function(){return null==this.x&&null==this.y||this.z.equals(i.ZERO)&&!this.y.toBigInteger().equals(i.ZERO)},o.prototype.negate=function(){return new o(this.curve,this.x,this.y.negate(),this.z)},o.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(e.z)).mod(this.curve.q),r=e.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(e.z)).mod(this.curve.q);if(i.ZERO.equals(r))return i.ZERO.equals(t)?this.twice():this.curve.getInfinity();var n=new i("3"),a=this.x.toBigInteger(),s=this.y.toBigInteger(),u=(e.x.toBigInteger(),e.y.toBigInteger(),r.square()),c=u.multiply(r),l=a.multiply(u),h=t.square().multiply(this.z),p=h.subtract(l.shiftLeft(1)).multiply(e.z).subtract(c).multiply(r).mod(this.curve.q),d=l.multiply(n).multiply(t).subtract(s.multiply(c)).subtract(h.multiply(t)).multiply(e.z).add(t.multiply(c)).mod(this.curve.q),f=c.multiply(this.z).multiply(e.z).mod(this.curve.q);return new o(this.curve,this.curve.fromBigInteger(p),this.curve.fromBigInteger(d),f)},o.prototype.twice=function(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var e=new i("3"),t=this.x.toBigInteger(),r=this.y.toBigInteger(),n=r.multiply(this.z),a=n.multiply(r).mod(this.curve.q),s=this.curve.a.toBigInteger(),u=t.square().multiply(e);i.ZERO.equals(s)||(u=u.add(this.z.square().multiply(s)));var c=(u=u.mod(this.curve.q)).square().subtract(t.shiftLeft(3).multiply(a)).shiftLeft(1).multiply(n).mod(this.curve.q),l=u.multiply(e).multiply(t).subtract(a.shiftLeft(1)).shiftLeft(2).multiply(a).subtract(u.square().multiply(u)).mod(this.curve.q),h=n.square().multiply(n).shiftLeft(3).mod(this.curve.q);return new o(this.curve,this.curve.fromBigInteger(c),this.curve.fromBigInteger(l),h)},o.prototype.multiply=function(e){if(this.isInfinity())return this;if(0==e.signum())return this.curve.getInfinity();var t,r=e,n=r.multiply(new i("3")),a=this.negate(),o=this;for(t=n.bitLength()-2;t>0;--t){o=o.twice();var s=n.testBit(t);s!=r.testBit(t)&&(o=o.add(s?this:a))}return o},o.prototype.multiplyTwo=function(e,t,r){var i;i=e.bitLength()>r.bitLength()?e.bitLength()-1:r.bitLength()-1;for(var n=this.curve.getInfinity(),a=this.add(t);i>=0;)n=n.twice(),e.testBit(i)?n=r.testBit(i)?n.add(a):n.add(this):r.testBit(i)&&(n=n.add(t)),--i;return n},s.prototype.getQ=function(){return this.q},s.prototype.getA=function(){return this.a},s.prototype.getB=function(){return this.b},s.prototype.equals=function(e){return e==this||this.q.equals(e.q)&&this.a.equals(e.a)&&this.b.equals(e.b)},s.prototype.getInfinity=function(){return this.infinity},s.prototype.fromBigInteger=function(e){return new a(this.q,e)},s.prototype.reduce=function(e){this.reducer.reduce(e)},s.prototype.encodePointHex=function(e){if(e.isInfinity())return"00";var t=e.getX().toBigInteger().toString(16),r=e.getY().toBigInteger().toString(16),i=this.getQ().toString(16).length;for(i%2!=0&&i++;t.length128&&-1==this.q.shiftRight(e-64).intValue()&&(this.r=i.ONE.shiftLeft(e).subtract(this.q)),this.r},a.prototype.modMult=function(e,t){return this.modReduce(e.multiply(t))},a.prototype.modReduce=function(e){if(null!=this.getR()){for(var t=q.bitLength();e.bitLength()>t+1;){var r=e.shiftRight(t),n=e.subtract(r.shiftLeft(t));this.getR().equals(i.ONE)||(r=r.multiply(this.getR())),e=r.add(n)}for(;e.compareTo(q)>=0;)e=e.subtract(q)}else e=e.mod(q);return e},a.prototype.sqrt=function(){if(!this.q.testBit(0))throw"unsupported";if(this.q.testBit(1)){var e=new a(this.q,this.x.modPow(this.q.shiftRight(2).add(i.ONE),this.q));return e.square().equals(this)?e:null}var t=this.q.subtract(i.ONE),r=t.shiftRight(1);if(!this.x.modPow(r,this.q).equals(i.ONE))return null;var n,o,s=t.shiftRight(2).shiftLeft(1).add(i.ONE),u=this.x,c=modDouble(modDouble(u));do{var l;do{l=new i(this.q.bitLength(),new SecureRandom)}while(l.compareTo(this.q)>=0||!l.multiply(l).subtract(c).modPow(r,this.q).equals(t));var h=this.lucasSequence(l,u,s);if(n=h[0],o=h[1],this.modMult(o,o).equals(c))return o.testBit(0)&&(o=o.add(q)),o=o.shiftRight(1),new a(q,o)}while(n.equals(i.ONE)||n.equals(t));return null},a.prototype.lucasSequence=function(e,t,r){for(var n=r.bitLength(),a=r.getLowestSetBit(),o=i.ONE,s=i.TWO,u=e,c=i.ONE,l=i.ONE,h=n-1;h>=a+1;--h)c=this.modMult(c,l),r.testBit(h)?(l=this.modMult(c,t),o=this.modMult(o,u),s=this.modReduce(u.multiply(s).subtract(e.multiply(c))),u=this.modReduce(u.multiply(u).subtract(l.shiftLeft(1)))):(l=c,o=this.modReduce(o.multiply(s).subtract(c)),u=this.modReduce(u.multiply(s).subtract(e.multiply(c))),s=this.modReduce(s.multiply(s).subtract(c.shiftLeft(1))));for(c=this.modMult(c,l),l=this.modMult(c,t),o=this.modReduce(o.multiply(s).subtract(c)),s=this.modReduce(u.multiply(s).subtract(e.multiply(c))),c=this.modMult(c,l),h=1;h<=a;++h)o=this.modMult(o,s),s=this.modReduce(s.multiply(s).subtract(c.shiftLeft(1))),c=this.modMult(c,c);return[o,s]};var u={ECCurveFp:s,ECPointFp:o,ECFieldElementFp:a};e.exports=u},75528:(e,t,r)=>{var i=r(36077).BigInteger,n=r(62241).ECCurveFp;function a(e,t,r,i){this.curve=e,this.g=t,this.n=r,this.h=i}function o(e){return new i(e,16)}a.prototype.getCurve=function(){return this.curve},a.prototype.getG=function(){return this.g},a.prototype.getN=function(){return this.n},a.prototype.getH=function(){return this.h},e.exports={secp128r1:function(){var e=o("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF"),t=o("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC"),r=o("E87579C11079F43DD824993C2CEE5ED3"),s=o("FFFFFFFE0000000075A30D1B9038A115"),u=i.ONE,c=new n(e,t,r),l=c.decodePointHex("04161FF7528B899B2D0C28607CA52C5B86CF5AC8395BAFEB13C02DA292DDED7A83");return new a(c,l,s,u)},secp160k1:function(){var e=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73"),t=i.ZERO,r=o("7"),s=o("0100000000000000000001B8FA16DFAB9ACA16B6B3"),u=i.ONE,c=new n(e,t,r),l=c.decodePointHex("043B4C382CE37AA192A4019E763036F4F5DD4D7EBB938CF935318FDCED6BC28286531733C3F03C4FEE");return new a(c,l,s,u)},secp160r1:function(){var e=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF"),t=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC"),r=o("1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45"),s=o("0100000000000000000001F4C8F927AED3CA752257"),u=i.ONE,c=new n(e,t,r),l=c.decodePointHex("044A96B5688EF573284664698968C38BB913CBFC8223A628553168947D59DCC912042351377AC5FB32");return new a(c,l,s,u)},secp192k1:function(){var e=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37"),t=i.ZERO,r=o("3"),s=o("FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D"),u=i.ONE,c=new n(e,t,r),l=c.decodePointHex("04DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D");return new a(c,l,s,u)},secp192r1:function(){var e=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF"),t=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC"),r=o("64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1"),s=o("FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831"),u=i.ONE,c=new n(e,t,r),l=c.decodePointHex("04188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF101207192B95FFC8DA78631011ED6B24CDD573F977A11E794811");return new a(c,l,s,u)},secp224r1:function(){var e=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001"),t=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE"),r=o("B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4"),s=o("FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D"),u=i.ONE,c=new n(e,t,r),l=c.decodePointHex("04B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34");return new a(c,l,s,u)},secp256r1:function(){var e=o("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF"),t=o("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC"),r=o("5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B"),s=o("FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"),u=i.ONE,c=new n(e,t,r),l=c.decodePointHex("046B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C2964FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5");return new a(c,l,s,u)}}},86266:(e,t,r)=>{"use strict";var i=t;i.version=r(18597).i8,i.utils=r(80953),i.rand=r(29931),i.curve=r(88254),i.curves=r(45427),i.ec=r(57954),i.eddsa=r(65980)},4918:(e,t,r)=>{"use strict";var i=r(73785),n=r(80953),a=n.getNAF,o=n.getJSF,s=n.assert;function u(e,t){this.type=e,this.p=new i(t.p,16),this.red=t.prime?i.red(t.prime):i.mont(this.p),this.zero=new i(0).toRed(this.red),this.one=new i(1).toRed(this.red),this.two=new i(2).toRed(this.red),this.n=t.n&&new i(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function c(e,t){this.curve=e,this.type=t,this.precomputed=null}e.exports=u,u.prototype.point=function(){throw new Error("Not implemented")},u.prototype.validate=function(){throw new Error("Not implemented")},u.prototype._fixedNafMul=function(e,t){s(e.precomputed);var r=e._getDoubles(),i=a(t,1,this._bitLength),n=(1<=o;l--)u=(u<<1)+i[l];c.push(u)}for(var h=this.jpoint(null,null,null),p=this.jpoint(null,null,null),d=n;d>0;d--){for(o=0;o=0;c--){for(var l=0;c>=0&&0===o[c];c--)l++;if(c>=0&&l++,u=u.dblp(l),c<0)break;var h=o[c];s(0!==h),u="affine"===e.type?h>0?u.mixedAdd(n[h-1>>1]):u.mixedAdd(n[-h-1>>1].neg()):h>0?u.add(n[h-1>>1]):u.add(n[-h-1>>1].neg())}return"affine"===e.type?u.toP():u},u.prototype._wnafMulAdd=function(e,t,r,i,n){var s,u,c,l=this._wnafT1,h=this._wnafT2,p=this._wnafT3,d=0;for(s=0;s=1;s-=2){var m=s-1,g=s;if(1===l[m]&&1===l[g]){var v=[t[m],null,null,t[g]];0===t[m].y.cmp(t[g].y)?(v[1]=t[m].add(t[g]),v[2]=t[m].toJ().mixedAdd(t[g].neg())):0===t[m].y.cmp(t[g].y.redNeg())?(v[1]=t[m].toJ().mixedAdd(t[g]),v[2]=t[m].add(t[g].neg())):(v[1]=t[m].toJ().mixedAdd(t[g]),v[2]=t[m].toJ().mixedAdd(t[g].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],_=o(r[m],r[g]);for(d=Math.max(_[0].length,d),p[m]=new Array(d),p[g]=new Array(d),u=0;u=0;s--){for(var S=0;s>=0;){var x=!0;for(u=0;u=0&&S++,E=E.dblp(S),s<0)break;for(u=0;u0?c=h[u][j-1>>1]:j<0&&(c=h[u][-j-1>>1].neg()),E="affine"===c.type?E.mixedAdd(c):E.add(c))}}for(s=0;s=Math.ceil((e.bitLength()+1)/t.step)},c.prototype._getDoubles=function(e,t){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],i=this,n=0;n{"use strict";var i=r(80953),n=r(73785),a=r(35717),o=r(4918),s=i.assert;function u(e){this.twisted=1!=(0|e.a),this.mOneA=this.twisted&&-1==(0|e.a),this.extended=this.mOneA,o.call(this,"edwards",e),this.a=new n(e.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new n(e.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new n(e.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),s(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|e.c)}function c(e,t,r,i,a){o.BasePoint.call(this,e,"projective"),null===t&&null===r&&null===i?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new n(t,16),this.y=new n(r,16),this.z=i?new n(i,16):this.curve.one,this.t=a&&new n(a,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}a(u,o),e.exports=u,u.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},u.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)},u.prototype.jpoint=function(e,t,r,i){return this.point(e,t,r,i)},u.prototype.pointFromX=function(e,t){(e=new n(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr(),i=this.c2.redSub(this.a.redMul(r)),a=this.one.redSub(this.c2.redMul(this.d).redMul(r)),o=i.redMul(a.redInvm()),s=o.redSqrt();if(0!==s.redSqr().redSub(o).cmp(this.zero))throw new Error("invalid point");var u=s.fromRed().isOdd();return(t&&!u||!t&&u)&&(s=s.redNeg()),this.point(e,s)},u.prototype.pointFromY=function(e,t){(e=new n(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr(),i=r.redSub(this.c2),a=r.redMul(this.d).redMul(this.c2).redSub(this.a),o=i.redMul(a.redInvm());if(0===o.cmp(this.zero)){if(t)throw new Error("invalid point");return this.point(this.zero,e)}var s=o.redSqrt();if(0!==s.redSqr().redSub(o).cmp(this.zero))throw new Error("invalid point");return s.fromRed().isOdd()!==t&&(s=s.redNeg()),this.point(s,e)},u.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var t=e.x.redSqr(),r=e.y.redSqr(),i=t.redMul(this.a).redAdd(r),n=this.c2.redMul(this.one.redAdd(this.d.redMul(t).redMul(r)));return 0===i.cmp(n)},a(c,o.BasePoint),u.prototype.pointFromJSON=function(e){return c.fromJSON(this,e)},u.prototype.point=function(e,t,r,i){return new c(this,e,t,r,i)},c.fromJSON=function(e,t){return new c(e,t[0],t[1],t[2])},c.prototype.inspect=function(){return this.isInfinity()?"":""},c.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},c.prototype._extDbl=function(){var e=this.x.redSqr(),t=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(e),n=this.x.redAdd(this.y).redSqr().redISub(e).redISub(t),a=i.redAdd(t),o=a.redSub(r),s=i.redSub(t),u=n.redMul(o),c=a.redMul(s),l=n.redMul(s),h=o.redMul(a);return this.curve.point(u,c,h,l)},c.prototype._projDbl=function(){var e,t,r,i,n,a,o=this.x.redAdd(this.y).redSqr(),s=this.x.redSqr(),u=this.y.redSqr();if(this.curve.twisted){var c=(i=this.curve._mulA(s)).redAdd(u);this.zOne?(e=o.redSub(s).redSub(u).redMul(c.redSub(this.curve.two)),t=c.redMul(i.redSub(u)),r=c.redSqr().redSub(c).redSub(c)):(n=this.z.redSqr(),a=c.redSub(n).redISub(n),e=o.redSub(s).redISub(u).redMul(a),t=c.redMul(i.redSub(u)),r=c.redMul(a))}else i=s.redAdd(u),n=this.curve._mulC(this.z).redSqr(),a=i.redSub(n).redSub(n),e=this.curve._mulC(o.redISub(i)).redMul(a),t=this.curve._mulC(i).redMul(s.redISub(u)),r=i.redMul(a);return this.curve.point(e,t,r)},c.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},c.prototype._extAdd=function(e){var t=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),r=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),i=this.t.redMul(this.curve.dd).redMul(e.t),n=this.z.redMul(e.z.redAdd(e.z)),a=r.redSub(t),o=n.redSub(i),s=n.redAdd(i),u=r.redAdd(t),c=a.redMul(o),l=s.redMul(u),h=a.redMul(u),p=o.redMul(s);return this.curve.point(c,l,p,h)},c.prototype._projAdd=function(e){var t,r,i=this.z.redMul(e.z),n=i.redSqr(),a=this.x.redMul(e.x),o=this.y.redMul(e.y),s=this.curve.d.redMul(a).redMul(o),u=n.redSub(s),c=n.redAdd(s),l=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(a).redISub(o),h=i.redMul(u).redMul(l);return this.curve.twisted?(t=i.redMul(c).redMul(o.redSub(this.curve._mulA(a))),r=u.redMul(c)):(t=i.redMul(c).redMul(o.redSub(a)),r=this.curve._mulC(u).redMul(c)),this.curve.point(h,t,r)},c.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},c.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},c.prototype.mulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!1)},c.prototype.jmulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!0)},c.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},c.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},c.prototype.getX=function(){return this.normalize(),this.x.fromRed()},c.prototype.getY=function(){return this.normalize(),this.y.fromRed()},c.prototype.eq=function(e){return this===e||0===this.getX().cmp(e.getX())&&0===this.getY().cmp(e.getY())},c.prototype.eqXToP=function(e){var t=e.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(t))return!0;for(var r=e.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(t.redIAdd(i),0===this.x.cmp(t))return!0}},c.prototype.toP=c.prototype.normalize,c.prototype.mixedAdd=c.prototype.add},88254:(e,t,r)=>{"use strict";var i=t;i.base=r(4918),i.short=r(6673),i.mont=r(22881),i.edwards=r(31138)},22881:(e,t,r)=>{"use strict";var i=r(73785),n=r(35717),a=r(4918),o=r(80953);function s(e){a.call(this,"mont",e),this.a=new i(e.a,16).toRed(this.red),this.b=new i(e.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function u(e,t,r){a.BasePoint.call(this,e,"projective"),null===t&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(t,16),this.z=new i(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}n(s,a),e.exports=s,s.prototype.validate=function(e){var t=e.normalize().x,r=t.redSqr(),i=r.redMul(t).redAdd(r.redMul(this.a)).redAdd(t);return 0===i.redSqrt().redSqr().cmp(i)},n(u,a.BasePoint),s.prototype.decodePoint=function(e,t){return this.point(o.toArray(e,t),1)},s.prototype.point=function(e,t){return new u(this,e,t)},s.prototype.pointFromJSON=function(e){return u.fromJSON(this,e)},u.prototype.precompute=function(){},u.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},u.fromJSON=function(e,t){return new u(e,t[0],t[1]||e.one)},u.prototype.inspect=function(){return this.isInfinity()?"":""},u.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},u.prototype.dbl=function(){var e=this.x.redAdd(this.z).redSqr(),t=this.x.redSub(this.z).redSqr(),r=e.redSub(t),i=e.redMul(t),n=r.redMul(t.redAdd(this.curve.a24.redMul(r)));return this.curve.point(i,n)},u.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},u.prototype.diffAdd=function(e,t){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),n=e.x.redAdd(e.z),a=e.x.redSub(e.z).redMul(r),o=n.redMul(i),s=t.z.redMul(a.redAdd(o).redSqr()),u=t.x.redMul(a.redISub(o).redSqr());return this.curve.point(s,u)},u.prototype.mul=function(e){for(var t=e.clone(),r=this,i=this.curve.point(null,null),n=[];0!==t.cmpn(0);t.iushrn(1))n.push(t.andln(1));for(var a=n.length-1;a>=0;a--)0===n[a]?(r=r.diffAdd(i,this),i=i.dbl()):(i=r.diffAdd(i,this),r=r.dbl());return i},u.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},u.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},u.prototype.eq=function(e){return 0===this.getX().cmp(e.getX())},u.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},u.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},6673:(e,t,r)=>{"use strict";var i=r(80953),n=r(73785),a=r(35717),o=r(4918),s=i.assert;function u(e){o.call(this,"short",e),this.a=new n(e.a,16).toRed(this.red),this.b=new n(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(e),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function c(e,t,r,i){o.BasePoint.call(this,e,"affine"),null===t&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new n(t,16),this.y=new n(r,16),i&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function l(e,t,r,i){o.BasePoint.call(this,e,"jacobian"),null===t&&null===r&&null===i?(this.x=this.curve.one,this.y=this.curve.one,this.z=new n(0)):(this.x=new n(t,16),this.y=new n(r,16),this.z=new n(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}a(u,o),e.exports=u,u.prototype._getEndomorphism=function(e){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var t,r;if(e.beta)t=new n(e.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);t=(t=i[0].cmp(i[1])<0?i[0]:i[1]).toRed(this.red)}if(e.lambda)r=new n(e.lambda,16);else{var a=this._getEndoRoots(this.n);0===this.g.mul(a[0]).x.cmp(this.g.x.redMul(t))?r=a[0]:(r=a[1],s(0===this.g.mul(r).x.cmp(this.g.x.redMul(t))))}return{beta:t,lambda:r,basis:e.basis?e.basis.map((function(e){return{a:new n(e.a,16),b:new n(e.b,16)}})):this._getEndoBasis(r)}}},u.prototype._getEndoRoots=function(e){var t=e===this.p?this.red:n.mont(e),r=new n(2).toRed(t).redInvm(),i=r.redNeg(),a=new n(3).toRed(t).redNeg().redSqrt().redMul(r);return[i.redAdd(a).fromRed(),i.redSub(a).fromRed()]},u.prototype._getEndoBasis=function(e){for(var t,r,i,a,o,s,u,c,l,h=this.n.ushrn(Math.floor(this.n.bitLength()/2)),p=e,d=this.n.clone(),f=new n(1),m=new n(0),g=new n(0),v=new n(1),y=0;0!==p.cmpn(0);){var _=d.div(p);c=d.sub(_.mul(p)),l=g.sub(_.mul(f));var b=v.sub(_.mul(m));if(!i&&c.cmp(h)<0)t=u.neg(),r=f,i=c.neg(),a=l;else if(i&&2==++y)break;u=c,d=p,p=c,g=f,f=l,v=m,m=b}o=c.neg(),s=l;var w=i.sqr().add(a.sqr());return o.sqr().add(s.sqr()).cmp(w)>=0&&(o=t,s=r),i.negative&&(i=i.neg(),a=a.neg()),o.negative&&(o=o.neg(),s=s.neg()),[{a:i,b:a},{a:o,b:s}]},u.prototype._endoSplit=function(e){var t=this.endo.basis,r=t[0],i=t[1],n=i.b.mul(e).divRound(this.n),a=r.b.neg().mul(e).divRound(this.n),o=n.mul(r.a),s=a.mul(i.a),u=n.mul(r.b),c=a.mul(i.b);return{k1:e.sub(o).sub(s),k2:u.add(c).neg()}},u.prototype.pointFromX=function(e,t){(e=new n(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(0!==i.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var a=i.fromRed().isOdd();return(t&&!a||!t&&a)&&(i=i.redNeg()),this.point(e,i)},u.prototype.validate=function(e){if(e.inf)return!0;var t=e.x,r=e.y,i=this.a.redMul(t),n=t.redSqr().redMul(t).redIAdd(i).redIAdd(this.b);return 0===r.redSqr().redISub(n).cmpn(0)},u.prototype._endoWnafMulAdd=function(e,t,r){for(var i=this._endoWnafT1,n=this._endoWnafT2,a=0;a":""},c.prototype.isInfinity=function(){return this.inf},c.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(0===this.x.cmp(e.x))return this.curve.point(null,null);var t=this.y.redSub(e.y);0!==t.cmpn(0)&&(t=t.redMul(this.x.redSub(e.x).redInvm()));var r=t.redSqr().redISub(this.x).redISub(e.x),i=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},c.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(0===e.cmpn(0))return this.curve.point(null,null);var t=this.curve.a,r=this.x.redSqr(),i=e.redInvm(),n=r.redAdd(r).redIAdd(r).redIAdd(t).redMul(i),a=n.redSqr().redISub(this.x.redAdd(this.x)),o=n.redMul(this.x.redSub(a)).redISub(this.y);return this.curve.point(a,o)},c.prototype.getX=function(){return this.x.fromRed()},c.prototype.getY=function(){return this.y.fromRed()},c.prototype.mul=function(e){return e=new n(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},c.prototype.mulAdd=function(e,t,r){var i=[this,t],n=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n):this.curve._wnafMulAdd(1,i,n,2)},c.prototype.jmulAdd=function(e,t,r){var i=[this,t],n=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n,!0):this.curve._wnafMulAdd(1,i,n,2,!0)},c.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||0===this.x.cmp(e.x)&&0===this.y.cmp(e.y))},c.prototype.neg=function(e){if(this.inf)return this;var t=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed,i=function(e){return e.neg()};t.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return t},c.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},a(l,o.BasePoint),u.prototype.jpoint=function(e,t,r){return new l(this,e,t,r)},l.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),t=e.redSqr(),r=this.x.redMul(t),i=this.y.redMul(t).redMul(e);return this.curve.point(r,i)},l.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},l.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(t),n=e.x.redMul(r),a=this.y.redMul(t.redMul(e.z)),o=e.y.redMul(r.redMul(this.z)),s=i.redSub(n),u=a.redSub(o);if(0===s.cmpn(0))return 0!==u.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=s.redSqr(),l=c.redMul(s),h=i.redMul(c),p=u.redSqr().redIAdd(l).redISub(h).redISub(h),d=u.redMul(h.redISub(p)).redISub(a.redMul(l)),f=this.z.redMul(e.z).redMul(s);return this.curve.jpoint(p,d,f)},l.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var t=this.z.redSqr(),r=this.x,i=e.x.redMul(t),n=this.y,a=e.y.redMul(t).redMul(this.z),o=r.redSub(i),s=n.redSub(a);if(0===o.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=o.redSqr(),c=u.redMul(o),l=r.redMul(u),h=s.redSqr().redIAdd(c).redISub(l).redISub(l),p=s.redMul(l.redISub(h)).redISub(n.redMul(c)),d=this.z.redMul(o);return this.curve.jpoint(h,p,d)},l.prototype.dblp=function(e){if(0===e)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var t;if(this.curve.zeroA||this.curve.threeA){var r=this;for(t=0;t=0)return!1;if(r.redIAdd(n),0===this.x.cmp(r))return!0}},l.prototype.inspect=function(){return this.isInfinity()?"":""},l.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},45427:(e,t,r)=>{"use strict";var i,n=t,a=r(33715),o=r(88254),s=r(80953).assert;function u(e){"short"===e.type?this.curve=new o.short(e):"edwards"===e.type?this.curve=new o.edwards(e):this.curve=new o.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,s(this.g.validate(),"Invalid curve"),s(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function c(e,t){Object.defineProperty(n,e,{configurable:!0,enumerable:!0,get:function(){var r=new u(t);return Object.defineProperty(n,e,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=u,c("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:a.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),c("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:a.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),c("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:a.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),c("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:a.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),c("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:a.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),c("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["9"]}),c("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{i=r(91037)}catch(e){i=void 0}c("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:a.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",i]})},57954:(e,t,r)=>{"use strict";var i=r(73785),n=r(2156),a=r(80953),o=r(45427),s=r(29931),u=a.assert,c=r(31251),l=r(90611);function h(e){if(!(this instanceof h))return new h(e);"string"==typeof e&&(u(Object.prototype.hasOwnProperty.call(o,e),"Unknown curve "+e),e=o[e]),e instanceof o.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}e.exports=h,h.prototype.keyPair=function(e){return new c(this,e)},h.prototype.keyFromPrivate=function(e,t){return c.fromPrivate(this,e,t)},h.prototype.keyFromPublic=function(e,t){return c.fromPublic(this,e,t)},h.prototype.genKeyPair=function(e){e||(e={});for(var t=new n({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||s(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),a=this.n.sub(new i(2));;){var o=new i(t.generate(r));if(!(o.cmp(a)>0))return o.iaddn(1),this.keyFromPrivate(o)}},h.prototype._truncateToN=function(e,t){var r=8*e.byteLength()-this.n.bitLength();return r>0&&(e=e.ushrn(r)),!t&&e.cmp(this.n)>=0?e.sub(this.n):e},h.prototype.sign=function(e,t,r,a){"object"==typeof r&&(a=r,r=null),a||(a={}),t=this.keyFromPrivate(t,r),e=this._truncateToN(new i(e,16));for(var o=this.n.byteLength(),s=t.getPrivate().toArray("be",o),u=e.toArray("be",o),c=new n({hash:this.hash,entropy:s,nonce:u,pers:a.pers,persEnc:a.persEnc||"utf8"}),h=this.n.sub(new i(1)),p=0;;p++){var d=a.k?a.k(p):new i(c.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(h)>=0)){var f=this.g.mul(d);if(!f.isInfinity()){var m=f.getX(),g=m.umod(this.n);if(0!==g.cmpn(0)){var v=d.invm(this.n).mul(g.mul(t.getPrivate()).iadd(e));if(0!==(v=v.umod(this.n)).cmpn(0)){var y=(f.getY().isOdd()?1:0)|(0!==m.cmp(g)?2:0);return a.canonical&&v.cmp(this.nh)>0&&(v=this.n.sub(v),y^=1),new l({r:g,s:v,recoveryParam:y})}}}}}},h.prototype.verify=function(e,t,r,n){e=this._truncateToN(new i(e,16)),r=this.keyFromPublic(r,n);var a=(t=new l(t,"hex")).r,o=t.s;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;var s,u=o.invm(this.n),c=u.mul(e).umod(this.n),h=u.mul(a).umod(this.n);return this.curve._maxwellTrick?!(s=this.g.jmulAdd(c,r.getPublic(),h)).isInfinity()&&s.eqXToP(a):!(s=this.g.mulAdd(c,r.getPublic(),h)).isInfinity()&&0===s.getX().umod(this.n).cmp(a)},h.prototype.recoverPubKey=function(e,t,r,n){u((3&r)===r,"The recovery param is more than two bits"),t=new l(t,n);var a=this.n,o=new i(e),s=t.r,c=t.s,h=1&r,p=r>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&p)throw new Error("Unable to find sencond key candinate");s=p?this.curve.pointFromX(s.add(this.curve.n),h):this.curve.pointFromX(s,h);var d=t.r.invm(a),f=a.sub(o).mul(d).umod(a),m=c.mul(d).umod(a);return this.g.mulAdd(f,s,m)},h.prototype.getKeyRecoveryParam=function(e,t,r,i){if(null!==(t=new l(t,i)).recoveryParam)return t.recoveryParam;for(var n=0;n<4;n++){var a;try{a=this.recoverPubKey(e,t,n)}catch(e){continue}if(a.eq(r))return n}throw new Error("Unable to find valid recovery factor")}},31251:(e,t,r)=>{"use strict";var i=r(73785),n=r(80953).assert;function a(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}e.exports=a,a.fromPublic=function(e,t,r){return t instanceof a?t:new a(e,{pub:t,pubEnc:r})},a.fromPrivate=function(e,t,r){return t instanceof a?t:new a(e,{priv:t,privEnc:r})},a.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},a.prototype.getPublic=function(e,t){return"string"==typeof e&&(t=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),t?this.pub.encode(t,e):this.pub},a.prototype.getPrivate=function(e){return"hex"===e?this.priv.toString(16,2):this.priv},a.prototype._importPrivate=function(e,t){this.priv=new i(e,t||16),this.priv=this.priv.umod(this.ec.curve.n)},a.prototype._importPublic=function(e,t){if(e.x||e.y)return"mont"===this.ec.curve.type?n(e.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||n(e.x&&e.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(e.x,e.y));this.pub=this.ec.curve.decodePoint(e,t)},a.prototype.derive=function(e){return e.validate()||n(e.validate(),"public point not validated"),e.mul(this.priv).getX()},a.prototype.sign=function(e,t,r){return this.ec.sign(e,this,t,r)},a.prototype.verify=function(e,t){return this.ec.verify(e,t,this)},a.prototype.inspect=function(){return""}},90611:(e,t,r)=>{"use strict";var i=r(73785),n=r(80953),a=n.assert;function o(e,t){if(e instanceof o)return e;this._importDER(e,t)||(a(e.r&&e.s,"Signature without r or s"),this.r=new i(e.r,16),this.s=new i(e.s,16),void 0===e.recoveryParam?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}function s(){this.place=0}function u(e,t){var r=e[t.place++];if(!(128&r))return r;var i=15&r;if(0===i||i>4)return!1;for(var n=0,a=0,o=t.place;a>>=0;return!(n<=127)&&(t.place=o,n)}function c(e){for(var t=0,r=e.length-1;!e[t]&&!(128&e[t+1])&&t>>3);for(e.push(128|r);--r;)e.push(t>>>(r<<3)&255);e.push(t)}}e.exports=o,o.prototype._importDER=function(e,t){e=n.toArray(e,t);var r=new s;if(48!==e[r.place++])return!1;var a=u(e,r);if(!1===a)return!1;if(a+r.place!==e.length)return!1;if(2!==e[r.place++])return!1;var o=u(e,r);if(!1===o)return!1;var c=e.slice(r.place,o+r.place);if(r.place+=o,2!==e[r.place++])return!1;var l=u(e,r);if(!1===l)return!1;if(e.length!==l+r.place)return!1;var h=e.slice(r.place,l+r.place);if(0===c[0]){if(!(128&c[1]))return!1;c=c.slice(1)}if(0===h[0]){if(!(128&h[1]))return!1;h=h.slice(1)}return this.r=new i(c),this.s=new i(h),this.recoveryParam=null,!0},o.prototype.toDER=function(e){var t=this.r.toArray(),r=this.s.toArray();for(128&t[0]&&(t=[0].concat(t)),128&r[0]&&(r=[0].concat(r)),t=c(t),r=c(r);!(r[0]||128&r[1]);)r=r.slice(1);var i=[2];l(i,t.length),(i=i.concat(t)).push(2),l(i,r.length);var a=i.concat(r),o=[48];return l(o,a.length),o=o.concat(a),n.encode(o,e)}},65980:(e,t,r)=>{"use strict";var i=r(33715),n=r(45427),a=r(80953),o=a.assert,s=a.parseBytes,u=r(79087),c=r(23622);function l(e){if(o("ed25519"===e,"only tested with ed25519 so far"),!(this instanceof l))return new l(e);e=n[e].curve,this.curve=e,this.g=e.g,this.g.precompute(e.n.bitLength()+1),this.pointClass=e.point().constructor,this.encodingLength=Math.ceil(e.n.bitLength()/8),this.hash=i.sha512}e.exports=l,l.prototype.sign=function(e,t){e=s(e);var r=this.keyFromSecret(t),i=this.hashInt(r.messagePrefix(),e),n=this.g.mul(i),a=this.encodePoint(n),o=this.hashInt(a,r.pubBytes(),e).mul(r.priv()),u=i.add(o).umod(this.curve.n);return this.makeSignature({R:n,S:u,Rencoded:a})},l.prototype.verify=function(e,t,r){e=s(e),t=this.makeSignature(t);var i=this.keyFromPublic(r),n=this.hashInt(t.Rencoded(),i.pubBytes(),e),a=this.g.mul(t.S());return t.R().add(i.pub().mul(n)).eq(a)},l.prototype.hashInt=function(){for(var e=this.hash(),t=0;t{"use strict";var i=r(80953),n=i.assert,a=i.parseBytes,o=i.cachedProperty;function s(e,t){this.eddsa=e,this._secret=a(t.secret),e.isPoint(t.pub)?this._pub=t.pub:this._pubBytes=a(t.pub)}s.fromPublic=function(e,t){return t instanceof s?t:new s(e,{pub:t})},s.fromSecret=function(e,t){return t instanceof s?t:new s(e,{secret:t})},s.prototype.secret=function(){return this._secret},o(s,"pubBytes",(function(){return this.eddsa.encodePoint(this.pub())})),o(s,"pub",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),o(s,"privBytes",(function(){var e=this.eddsa,t=this.hash(),r=e.encodingLength-1,i=t.slice(0,e.encodingLength);return i[0]&=248,i[r]&=127,i[r]|=64,i})),o(s,"priv",(function(){return this.eddsa.decodeInt(this.privBytes())})),o(s,"hash",(function(){return this.eddsa.hash().update(this.secret()).digest()})),o(s,"messagePrefix",(function(){return this.hash().slice(this.eddsa.encodingLength)})),s.prototype.sign=function(e){return n(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)},s.prototype.verify=function(e,t){return this.eddsa.verify(e,t,this)},s.prototype.getSecret=function(e){return n(this._secret,"KeyPair is public only"),i.encode(this.secret(),e)},s.prototype.getPublic=function(e){return i.encode(this.pubBytes(),e)},e.exports=s},23622:(e,t,r)=>{"use strict";var i=r(73785),n=r(80953),a=n.assert,o=n.cachedProperty,s=n.parseBytes;function u(e,t){this.eddsa=e,"object"!=typeof t&&(t=s(t)),Array.isArray(t)&&(t={R:t.slice(0,e.encodingLength),S:t.slice(e.encodingLength)}),a(t.R&&t.S,"Signature without R or S"),e.isPoint(t.R)&&(this._R=t.R),t.S instanceof i&&(this._S=t.S),this._Rencoded=Array.isArray(t.R)?t.R:t.Rencoded,this._Sencoded=Array.isArray(t.S)?t.S:t.Sencoded}o(u,"S",(function(){return this.eddsa.decodeInt(this.Sencoded())})),o(u,"R",(function(){return this.eddsa.decodePoint(this.Rencoded())})),o(u,"Rencoded",(function(){return this.eddsa.encodePoint(this.R())})),o(u,"Sencoded",(function(){return this.eddsa.encodeInt(this.S())})),u.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},u.prototype.toHex=function(){return n.encode(this.toBytes(),"hex").toUpperCase()},e.exports=u},91037:e=>{e.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}},80953:(e,t,r)=>{"use strict";var i=t,n=r(73785),a=r(79746),o=r(34504);i.assert=a,i.toArray=o.toArray,i.zero2=o.zero2,i.toHex=o.toHex,i.encode=o.encode,i.getNAF=function(e,t,r){var i=new Array(Math.max(e.bitLength(),r)+1);i.fill(0);for(var n=1<(n>>1)-1?(n>>1)-u:u,a.isubn(s)):s=0,i[o]=s,a.iushrn(1)}return i},i.getJSF=function(e,t){var r=[[],[]];e=e.clone(),t=t.clone();for(var i,n=0,a=0;e.cmpn(-n)>0||t.cmpn(-a)>0;){var o,s,u=e.andln(3)+n&3,c=t.andln(3)+a&3;3===u&&(u=-1),3===c&&(c=-1),o=0==(1&u)?0:3!=(i=e.andln(7)+n&7)&&5!==i||2!==c?u:-u,r[0].push(o),s=0==(1&c)?0:3!=(i=t.andln(7)+a&7)&&5!==i||2!==u?c:-c,r[1].push(s),2*n===o+1&&(n=1-n),2*a===s+1&&(a=1-a),e.iushrn(1),t.iushrn(1)}return r},i.cachedProperty=function(e,t,r){var i="_"+t;e.prototype[t]=function(){return void 0!==this[i]?this[i]:this[i]=r.call(this)}},i.parseBytes=function(e){return"string"==typeof e?i.toArray(e,"hex"):e},i.intFromLE=function(e){return new n(e,"hex","le")}},73785:function(e,t,r){!function(e,t){"use strict";function i(e,t){if(!e)throw new Error(t||"Assertion failed")}function n(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}function a(e,t,r){if(a.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(r=t,t=10),this._init(e||0,t||10,r||"be"))}var o;"object"==typeof e?e.exports=a:t.BN=a,a.BN=a,a.wordSize=26;try{o="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(85568).Buffer}catch(e){}function s(e,t){var r=e.charCodeAt(t);return r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function u(e,t,r){var i=s(e,r);return r-1>=t&&(i|=s(e,r-1)<<4),i}function c(e,t,r,i){for(var n=0,a=Math.min(e.length,r),o=t;o=49?s-49+10:s>=17?s-17+10:s}return n}a.isBN=function(e){return e instanceof a||null!==e&&"object"==typeof e&&e.constructor.wordSize===a.wordSize&&Array.isArray(e.words)},a.max=function(e,t){return e.cmp(t)>0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)o=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)n=u(e,t,i)<=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;this.strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,o=a%i,s=Math.min(a,a-o)+r,u=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],o=n*a,s=67108863&o,u=o/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&u,p=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=p;d++){var f=c-d|0;l+=(o=(n=0|e.words[f])*(a=0|t.words[d])+h)/67108864|0,h=67108863&o}r.words[c]=0|h,u=0|l}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}a.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,a=0,o=0;o>>24-n&16777215)||o!==this.length-1?l[6-u.length]+u+r:u+r,(n+=2)>=26&&(n-=26,o--)}for(0!==a&&(r=a.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var c=h[e],d=p[e];r="";var f=this.clone();for(f.negative=0;!f.isZero();){var m=f.modn(d).toString(e);r=(f=f.idivn(d)).isZero()?m+r:l[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(e,t){return i(void 0!==o),this.toArrayLike(o,e,t)},a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},a.prototype.toArrayLike=function(e,t,r){var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0"),this.strip();var o,s,u="le"===t,c=new e(a),l=this.clone();if(u){for(s=0;!l.isZero();s++)o=l.andln(255),l.iushrn(8),c[s]=o;for(;s=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==a&&o>26,this.words[o]=67108863&t;if(0===a&&o>>13,d=0|o[1],f=8191&d,m=d>>>13,g=0|o[2],v=8191&g,y=g>>>13,_=0|o[3],b=8191&_,w=_>>>13,E=0|o[4],k=8191&E,S=E>>>13,x=0|o[5],j=8191&x,N=x>>>13,M=0|o[6],I=8191&M,A=M>>>13,T=0|o[7],R=8191&T,P=T>>>13,O=0|o[8],B=8191&O,C=O>>>13,z=0|o[9],F=8191&z,D=z>>>13,q=0|s[0],L=8191&q,U=q>>>13,H=0|s[1],K=8191&H,W=H>>>13,Z=0|s[2],J=8191&Z,V=Z>>>13,$=0|s[3],G=8191&$,Q=$>>>13,X=0|s[4],Y=8191&X,ee=X>>>13,te=0|s[5],re=8191&te,ie=te>>>13,ne=0|s[6],ae=8191&ne,oe=ne>>>13,se=0|s[7],ue=8191&se,ce=se>>>13,le=0|s[8],he=8191&le,pe=le>>>13,de=0|s[9],fe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ge=(c+(i=Math.imul(h,L))|0)+((8191&(n=(n=Math.imul(h,U))+Math.imul(p,L)|0))<<13)|0;c=((a=Math.imul(p,U))+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(f,L),n=(n=Math.imul(f,U))+Math.imul(m,L)|0,a=Math.imul(m,U);var ve=(c+(i=i+Math.imul(h,K)|0)|0)+((8191&(n=(n=n+Math.imul(h,W)|0)+Math.imul(p,K)|0))<<13)|0;c=((a=a+Math.imul(p,W)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(v,L),n=(n=Math.imul(v,U))+Math.imul(y,L)|0,a=Math.imul(y,U),i=i+Math.imul(f,K)|0,n=(n=n+Math.imul(f,W)|0)+Math.imul(m,K)|0,a=a+Math.imul(m,W)|0;var ye=(c+(i=i+Math.imul(h,J)|0)|0)+((8191&(n=(n=n+Math.imul(h,V)|0)+Math.imul(p,J)|0))<<13)|0;c=((a=a+Math.imul(p,V)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(b,L),n=(n=Math.imul(b,U))+Math.imul(w,L)|0,a=Math.imul(w,U),i=i+Math.imul(v,K)|0,n=(n=n+Math.imul(v,W)|0)+Math.imul(y,K)|0,a=a+Math.imul(y,W)|0,i=i+Math.imul(f,J)|0,n=(n=n+Math.imul(f,V)|0)+Math.imul(m,J)|0,a=a+Math.imul(m,V)|0;var _e=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(n=(n=n+Math.imul(h,Q)|0)+Math.imul(p,G)|0))<<13)|0;c=((a=a+Math.imul(p,Q)|0)+(n>>>13)|0)+(_e>>>26)|0,_e&=67108863,i=Math.imul(k,L),n=(n=Math.imul(k,U))+Math.imul(S,L)|0,a=Math.imul(S,U),i=i+Math.imul(b,K)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(w,K)|0,a=a+Math.imul(w,W)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,V)|0)+Math.imul(y,J)|0,a=a+Math.imul(y,V)|0,i=i+Math.imul(f,G)|0,n=(n=n+Math.imul(f,Q)|0)+Math.imul(m,G)|0,a=a+Math.imul(m,Q)|0;var be=(c+(i=i+Math.imul(h,Y)|0)|0)+((8191&(n=(n=n+Math.imul(h,ee)|0)+Math.imul(p,Y)|0))<<13)|0;c=((a=a+Math.imul(p,ee)|0)+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(j,L),n=(n=Math.imul(j,U))+Math.imul(N,L)|0,a=Math.imul(N,U),i=i+Math.imul(k,K)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(S,K)|0,a=a+Math.imul(S,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,V)|0)+Math.imul(w,J)|0,a=a+Math.imul(w,V)|0,i=i+Math.imul(v,G)|0,n=(n=n+Math.imul(v,Q)|0)+Math.imul(y,G)|0,a=a+Math.imul(y,Q)|0,i=i+Math.imul(f,Y)|0,n=(n=n+Math.imul(f,ee)|0)+Math.imul(m,Y)|0,a=a+Math.imul(m,ee)|0;var we=(c+(i=i+Math.imul(h,re)|0)|0)+((8191&(n=(n=n+Math.imul(h,ie)|0)+Math.imul(p,re)|0))<<13)|0;c=((a=a+Math.imul(p,ie)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(I,L),n=(n=Math.imul(I,U))+Math.imul(A,L)|0,a=Math.imul(A,U),i=i+Math.imul(j,K)|0,n=(n=n+Math.imul(j,W)|0)+Math.imul(N,K)|0,a=a+Math.imul(N,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,V)|0)+Math.imul(S,J)|0,a=a+Math.imul(S,V)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,Q)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,Q)|0,i=i+Math.imul(v,Y)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(y,Y)|0,a=a+Math.imul(y,ee)|0,i=i+Math.imul(f,re)|0,n=(n=n+Math.imul(f,ie)|0)+Math.imul(m,re)|0,a=a+Math.imul(m,ie)|0;var Ee=(c+(i=i+Math.imul(h,ae)|0)|0)+((8191&(n=(n=n+Math.imul(h,oe)|0)+Math.imul(p,ae)|0))<<13)|0;c=((a=a+Math.imul(p,oe)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(R,L),n=(n=Math.imul(R,U))+Math.imul(P,L)|0,a=Math.imul(P,U),i=i+Math.imul(I,K)|0,n=(n=n+Math.imul(I,W)|0)+Math.imul(A,K)|0,a=a+Math.imul(A,W)|0,i=i+Math.imul(j,J)|0,n=(n=n+Math.imul(j,V)|0)+Math.imul(N,J)|0,a=a+Math.imul(N,V)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,Q)|0)+Math.imul(S,G)|0,a=a+Math.imul(S,Q)|0,i=i+Math.imul(b,Y)|0,n=(n=n+Math.imul(b,ee)|0)+Math.imul(w,Y)|0,a=a+Math.imul(w,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(y,re)|0,a=a+Math.imul(y,ie)|0,i=i+Math.imul(f,ae)|0,n=(n=n+Math.imul(f,oe)|0)+Math.imul(m,ae)|0,a=a+Math.imul(m,oe)|0;var ke=(c+(i=i+Math.imul(h,ue)|0)|0)+((8191&(n=(n=n+Math.imul(h,ce)|0)+Math.imul(p,ue)|0))<<13)|0;c=((a=a+Math.imul(p,ce)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(B,L),n=(n=Math.imul(B,U))+Math.imul(C,L)|0,a=Math.imul(C,U),i=i+Math.imul(R,K)|0,n=(n=n+Math.imul(R,W)|0)+Math.imul(P,K)|0,a=a+Math.imul(P,W)|0,i=i+Math.imul(I,J)|0,n=(n=n+Math.imul(I,V)|0)+Math.imul(A,J)|0,a=a+Math.imul(A,V)|0,i=i+Math.imul(j,G)|0,n=(n=n+Math.imul(j,Q)|0)+Math.imul(N,G)|0,a=a+Math.imul(N,Q)|0,i=i+Math.imul(k,Y)|0,n=(n=n+Math.imul(k,ee)|0)+Math.imul(S,Y)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(b,re)|0,n=(n=n+Math.imul(b,ie)|0)+Math.imul(w,re)|0,a=a+Math.imul(w,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,oe)|0)+Math.imul(y,ae)|0,a=a+Math.imul(y,oe)|0,i=i+Math.imul(f,ue)|0,n=(n=n+Math.imul(f,ce)|0)+Math.imul(m,ue)|0,a=a+Math.imul(m,ce)|0;var Se=(c+(i=i+Math.imul(h,he)|0)|0)+((8191&(n=(n=n+Math.imul(h,pe)|0)+Math.imul(p,he)|0))<<13)|0;c=((a=a+Math.imul(p,pe)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(F,L),n=(n=Math.imul(F,U))+Math.imul(D,L)|0,a=Math.imul(D,U),i=i+Math.imul(B,K)|0,n=(n=n+Math.imul(B,W)|0)+Math.imul(C,K)|0,a=a+Math.imul(C,W)|0,i=i+Math.imul(R,J)|0,n=(n=n+Math.imul(R,V)|0)+Math.imul(P,J)|0,a=a+Math.imul(P,V)|0,i=i+Math.imul(I,G)|0,n=(n=n+Math.imul(I,Q)|0)+Math.imul(A,G)|0,a=a+Math.imul(A,Q)|0,i=i+Math.imul(j,Y)|0,n=(n=n+Math.imul(j,ee)|0)+Math.imul(N,Y)|0,a=a+Math.imul(N,ee)|0,i=i+Math.imul(k,re)|0,n=(n=n+Math.imul(k,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(b,ae)|0,n=(n=n+Math.imul(b,oe)|0)+Math.imul(w,ae)|0,a=a+Math.imul(w,oe)|0,i=i+Math.imul(v,ue)|0,n=(n=n+Math.imul(v,ce)|0)+Math.imul(y,ue)|0,a=a+Math.imul(y,ce)|0,i=i+Math.imul(f,he)|0,n=(n=n+Math.imul(f,pe)|0)+Math.imul(m,he)|0,a=a+Math.imul(m,pe)|0;var xe=(c+(i=i+Math.imul(h,fe)|0)|0)+((8191&(n=(n=n+Math.imul(h,me)|0)+Math.imul(p,fe)|0))<<13)|0;c=((a=a+Math.imul(p,me)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(F,K),n=(n=Math.imul(F,W))+Math.imul(D,K)|0,a=Math.imul(D,W),i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,V)|0)+Math.imul(C,J)|0,a=a+Math.imul(C,V)|0,i=i+Math.imul(R,G)|0,n=(n=n+Math.imul(R,Q)|0)+Math.imul(P,G)|0,a=a+Math.imul(P,Q)|0,i=i+Math.imul(I,Y)|0,n=(n=n+Math.imul(I,ee)|0)+Math.imul(A,Y)|0,a=a+Math.imul(A,ee)|0,i=i+Math.imul(j,re)|0,n=(n=n+Math.imul(j,ie)|0)+Math.imul(N,re)|0,a=a+Math.imul(N,ie)|0,i=i+Math.imul(k,ae)|0,n=(n=n+Math.imul(k,oe)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,oe)|0,i=i+Math.imul(b,ue)|0,n=(n=n+Math.imul(b,ce)|0)+Math.imul(w,ue)|0,a=a+Math.imul(w,ce)|0,i=i+Math.imul(v,he)|0,n=(n=n+Math.imul(v,pe)|0)+Math.imul(y,he)|0,a=a+Math.imul(y,pe)|0;var je=(c+(i=i+Math.imul(f,fe)|0)|0)+((8191&(n=(n=n+Math.imul(f,me)|0)+Math.imul(m,fe)|0))<<13)|0;c=((a=a+Math.imul(m,me)|0)+(n>>>13)|0)+(je>>>26)|0,je&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,V))+Math.imul(D,J)|0,a=Math.imul(D,V),i=i+Math.imul(B,G)|0,n=(n=n+Math.imul(B,Q)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,Q)|0,i=i+Math.imul(R,Y)|0,n=(n=n+Math.imul(R,ee)|0)+Math.imul(P,Y)|0,a=a+Math.imul(P,ee)|0,i=i+Math.imul(I,re)|0,n=(n=n+Math.imul(I,ie)|0)+Math.imul(A,re)|0,a=a+Math.imul(A,ie)|0,i=i+Math.imul(j,ae)|0,n=(n=n+Math.imul(j,oe)|0)+Math.imul(N,ae)|0,a=a+Math.imul(N,oe)|0,i=i+Math.imul(k,ue)|0,n=(n=n+Math.imul(k,ce)|0)+Math.imul(S,ue)|0,a=a+Math.imul(S,ce)|0,i=i+Math.imul(b,he)|0,n=(n=n+Math.imul(b,pe)|0)+Math.imul(w,he)|0,a=a+Math.imul(w,pe)|0;var Ne=(c+(i=i+Math.imul(v,fe)|0)|0)+((8191&(n=(n=n+Math.imul(v,me)|0)+Math.imul(y,fe)|0))<<13)|0;c=((a=a+Math.imul(y,me)|0)+(n>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,i=Math.imul(F,G),n=(n=Math.imul(F,Q))+Math.imul(D,G)|0,a=Math.imul(D,Q),i=i+Math.imul(B,Y)|0,n=(n=n+Math.imul(B,ee)|0)+Math.imul(C,Y)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(R,re)|0,n=(n=n+Math.imul(R,ie)|0)+Math.imul(P,re)|0,a=a+Math.imul(P,ie)|0,i=i+Math.imul(I,ae)|0,n=(n=n+Math.imul(I,oe)|0)+Math.imul(A,ae)|0,a=a+Math.imul(A,oe)|0,i=i+Math.imul(j,ue)|0,n=(n=n+Math.imul(j,ce)|0)+Math.imul(N,ue)|0,a=a+Math.imul(N,ce)|0,i=i+Math.imul(k,he)|0,n=(n=n+Math.imul(k,pe)|0)+Math.imul(S,he)|0,a=a+Math.imul(S,pe)|0;var Me=(c+(i=i+Math.imul(b,fe)|0)|0)+((8191&(n=(n=n+Math.imul(b,me)|0)+Math.imul(w,fe)|0))<<13)|0;c=((a=a+Math.imul(w,me)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(F,Y),n=(n=Math.imul(F,ee))+Math.imul(D,Y)|0,a=Math.imul(D,ee),i=i+Math.imul(B,re)|0,n=(n=n+Math.imul(B,ie)|0)+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(R,ae)|0,n=(n=n+Math.imul(R,oe)|0)+Math.imul(P,ae)|0,a=a+Math.imul(P,oe)|0,i=i+Math.imul(I,ue)|0,n=(n=n+Math.imul(I,ce)|0)+Math.imul(A,ue)|0,a=a+Math.imul(A,ce)|0,i=i+Math.imul(j,he)|0,n=(n=n+Math.imul(j,pe)|0)+Math.imul(N,he)|0,a=a+Math.imul(N,pe)|0;var Ie=(c+(i=i+Math.imul(k,fe)|0)|0)+((8191&(n=(n=n+Math.imul(k,me)|0)+Math.imul(S,fe)|0))<<13)|0;c=((a=a+Math.imul(S,me)|0)+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(F,re),n=(n=Math.imul(F,ie))+Math.imul(D,re)|0,a=Math.imul(D,ie),i=i+Math.imul(B,ae)|0,n=(n=n+Math.imul(B,oe)|0)+Math.imul(C,ae)|0,a=a+Math.imul(C,oe)|0,i=i+Math.imul(R,ue)|0,n=(n=n+Math.imul(R,ce)|0)+Math.imul(P,ue)|0,a=a+Math.imul(P,ce)|0,i=i+Math.imul(I,he)|0,n=(n=n+Math.imul(I,pe)|0)+Math.imul(A,he)|0,a=a+Math.imul(A,pe)|0;var Ae=(c+(i=i+Math.imul(j,fe)|0)|0)+((8191&(n=(n=n+Math.imul(j,me)|0)+Math.imul(N,fe)|0))<<13)|0;c=((a=a+Math.imul(N,me)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(F,ae),n=(n=Math.imul(F,oe))+Math.imul(D,ae)|0,a=Math.imul(D,oe),i=i+Math.imul(B,ue)|0,n=(n=n+Math.imul(B,ce)|0)+Math.imul(C,ue)|0,a=a+Math.imul(C,ce)|0,i=i+Math.imul(R,he)|0,n=(n=n+Math.imul(R,pe)|0)+Math.imul(P,he)|0,a=a+Math.imul(P,pe)|0;var Te=(c+(i=i+Math.imul(I,fe)|0)|0)+((8191&(n=(n=n+Math.imul(I,me)|0)+Math.imul(A,fe)|0))<<13)|0;c=((a=a+Math.imul(A,me)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(F,ue),n=(n=Math.imul(F,ce))+Math.imul(D,ue)|0,a=Math.imul(D,ce),i=i+Math.imul(B,he)|0,n=(n=n+Math.imul(B,pe)|0)+Math.imul(C,he)|0,a=a+Math.imul(C,pe)|0;var Re=(c+(i=i+Math.imul(R,fe)|0)|0)+((8191&(n=(n=n+Math.imul(R,me)|0)+Math.imul(P,fe)|0))<<13)|0;c=((a=a+Math.imul(P,me)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(F,he),n=(n=Math.imul(F,pe))+Math.imul(D,he)|0,a=Math.imul(D,pe);var Pe=(c+(i=i+Math.imul(B,fe)|0)|0)+((8191&(n=(n=n+Math.imul(B,me)|0)+Math.imul(C,fe)|0))<<13)|0;c=((a=a+Math.imul(C,me)|0)+(n>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var Oe=(c+(i=Math.imul(F,fe))|0)+((8191&(n=(n=Math.imul(F,me))+Math.imul(D,fe)|0))<<13)|0;return c=((a=Math.imul(D,me))+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ve,u[2]=ye,u[3]=_e,u[4]=be,u[5]=we,u[6]=Ee,u[7]=ke,u[8]=Se,u[9]=xe,u[10]=je,u[11]=Ne,u[12]=Me,u[13]=Ie,u[14]=Ae,u[15]=Te,u[16]=Re,u[17]=Pe,u[18]=Oe,0!==c&&(u[19]=c,r.length++),r};function m(e,t,r){return(new g).mulp(e,t,r)}function g(e,t){this.x=e,this.y=t}Math.imul||(f=d),a.prototype.mulTo=function(e,t){var r,i=this.length+e.length;return r=10===this.length&&10===e.length?f(this,e,t):i<63?d(this,e,t):i<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,i=o,o=n}return 0!==i?r.words[a]=i:r.length--,r.strip()}(this,e,t):m(this,e,t),r},g.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},g.prototype.permute=function(e,t,r,i,n,a){for(var o=0;o>>=1)n++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*t;o>=26,t+=n/67108864|0,t+=a>>>26,this.words[r]=67108863&a}return 0!==t&&(this.words[r]=t,this.length++),this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n}return t}(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,o=Math.min((e-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,c=0;c=0&&(0!==l||c>=n);c--){var h=0|this.words[c];this.words[c]=l<<26-a|h>>>a,l=h&s}return u&&0!==l&&(u.words[u.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===s)return this.strip();for(i(-1===s),s=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,o=0|n.words[n.length-1];0!=(r=26-this._countBits(o))&&(n=n.ushln(r),i.iushln(r),o=0|n.words[n.length-1]);var s,u=i.length-n.length;if("mod"!==t){(s=new a(null)).length=u+1,s.words=new Array(s.length);for(var c=0;c=0;h--){var p=67108864*(0|i.words[n.length+h])+(0|i.words[n.length+h-1]);for(p=Math.min(p/o|0,67108863),i._ishlnsubmul(n,p,h);0!==i.negative;)p--,i.negative=0,i._ishlnsubmul(n,1,h),i.isZero()||(i.negative^=1);s&&(s.words[h]=p)}return s&&s.strip(),i.strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(n=s.div.neg()),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:n,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modn(e.words[0]))}:this._wordDiv(e,t);var n,o,s},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modn=function(e){i(e<=67108863);for(var t=(1<<26)%e,r=0,n=this.length-1;n>=0;n--)r=(t*r+(0|this.words[n]))%e;return r},a.prototype.idivn=function(e){i(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*t;this.words[r]=n/e|0,t=n%e}return this.strip()},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new a(1),o=new a(0),s=new a(0),u=new a(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var l=r.clone(),h=t.clone();!t.isZero();){for(var p=0,d=1;0==(t.words[0]&d)&&p<26;++p,d<<=1);if(p>0)for(t.iushrn(p);p-- >0;)(n.isOdd()||o.isOdd())&&(n.iadd(l),o.isub(h)),n.iushrn(1),o.iushrn(1);for(var f=0,m=1;0==(r.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(r.iushrn(f);f-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(l),u.isub(h)),s.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(s),o.isub(u)):(r.isub(t),s.isub(n),u.isub(o))}return{a:s,b:u,gcd:r.iushln(c)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,o=new a(1),s=new a(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,l=1;0==(t.words[0]&l)&&c<26;++c,l<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);for(var h=0,p=1;0==(r.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s)):(r.isub(t),s.isub(o))}return(n=0===t.cmpn(1)?o:s).cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new k(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var v={k256:null,p224:null,p192:null,p25519:null};function y(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function _(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function E(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(e){if("string"==typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function S(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},y.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},y.prototype.split=function(e,t){e.iushrn(this.n,0,t)},y.prototype.imulK=function(e){return e.imul(this.k)},n(_,y),_.prototype.split=function(e,t){for(var r=4194303,i=Math.min(e.length,9),n=0;n>>22,a=o}a>>>=22,e.words[n-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},_.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(v[e])return v[e];var t;if("k256"===e)t=new _;else if("p224"===e)t=new b;else if("p192"===e)t=new w;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new E}return v[e]=t,t},k.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},k.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),o=0;!n.isZero()&&0===n.andln(1);)o++,n.iushrn(1);i(!n.isZero());var s=new a(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new a(2*l*l).toRed(this);0!==this.pow(l,c).cmp(u);)l.redIAdd(u);for(var h=this.pow(l,n),p=this.pow(e,n.addn(1).iushrn(1)),d=this.pow(e,n),f=o;0!==d.cmp(s);){for(var m=d,g=0;0!==m.cmp(s);g++)m=m.redSqr();i(g=0;i--){for(var c=t.words[i],l=u-1;l>=0;l--){var h=c>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==h||0!==o?(o<<=1,o|=h,(4==++s||0===i&&0===l)&&(n=this.mul(n,r[o]),s=0,o=0)):s=0}u=26}return n},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new S(e)},n(S,k),S.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},S.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},S.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},S.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=r.nmd(e),this)},8091:e=>{"use strict";function t(e,t){if(null==e)throw new TypeError("Cannot convert first argument to object");for(var r=Object(e),i=1;i{"use strict";var t,r="object"==typeof Reflect?Reflect:null,i=r&&"function"==typeof r.apply?r.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};t=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var n=Number.isNaN||function(e){return e!=e};function a(){a.init.call(this)}e.exports=a,e.exports.once=function(e,t){return new Promise((function(r,i){function n(r){e.removeListener(t,a),i(r)}function a(){"function"==typeof e.removeListener&&e.removeListener("error",n),r([].slice.call(arguments))}m(e,t,a,{once:!0}),"error"!==t&&function(e,t,r){"function"==typeof e.on&&m(e,"error",t,{once:!0})}(e,n)}))},a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var o=10;function s(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function u(e){return void 0===e._maxListeners?a.defaultMaxListeners:e._maxListeners}function c(e,t,r,i){var n,a,o,c;if(s(r),void 0===(a=e._events)?(a=e._events=Object.create(null),e._eventsCount=0):(void 0!==a.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),a=e._events),o=a[t]),void 0===o)o=a[t]=r,++e._eventsCount;else if("function"==typeof o?o=a[t]=i?[r,o]:[o,r]:i?o.unshift(r):o.push(r),(n=u(e))>0&&o.length>n&&!o.warned){o.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=o.length,c=l,console&&console.warn&&console.warn(c)}return e}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function h(e,t,r){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},n=l.bind(i);return n.listener=r,i.wrapFn=n,n}function p(e,t,r){var i=e._events;if(void 0===i)return[];var n=i[t];return void 0===n?[]:"function"==typeof n?r?[n.listener||n]:[n]:r?function(e){for(var t=new Array(e.length),r=0;r0&&(o=t[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var u=a[e];if(void 0===u)return!1;if("function"==typeof u)i(u,this,t);else{var c=u.length,l=f(u,c);for(r=0;r=0;a--)if(r[a]===t||r[a].listener===t){o=r[a].listener,n=a;break}if(n<0)return this;0===n?r.shift():function(e,t){for(;t+1=0;i--)this.removeListener(e,t[i]);return this},a.prototype.listeners=function(e){return p(this,e,!0)},a.prototype.rawListeners=function(e){return p(this,e,!1)},a.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):d.call(e,t)},a.prototype.listenerCount=d,a.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},13048:(e,t,r)=>{var i=r(89509).Buffer,n=r(62318);e.exports=function(e,t,r,a){if(i.isBuffer(e)||(e=i.from(e,"binary")),t&&(i.isBuffer(t)||(t=i.from(t,"binary")),8!==t.length))throw new RangeError("salt should be Buffer with 8 byte length");for(var o=r/8,s=i.alloc(o),u=i.alloc(a||0),c=i.alloc(0);o>0||a>0;){var l=new n;l.update(c),l.update(e),t&&l.update(t),c=l.digest();var h=0;if(o>0){var p=s.length-o;h=Math.min(o,c.length),c.copy(s,p,0,h),o-=h}if(h0){var d=u.length-a,f=Math.min(a,c.length-h);c.copy(u,d,h,h+f),a-=f}}return c.fill(0),{key:s,iv:u}}},94470:e=>{"use strict";var t=Object.prototype.hasOwnProperty,r=Object.prototype.toString,i=Object.defineProperty,n=Object.getOwnPropertyDescriptor,a=function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===r.call(e)},o=function(e){if(!e||"[object Object]"!==r.call(e))return!1;var i,n=t.call(e,"constructor"),a=e.constructor&&e.constructor.prototype&&t.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!n&&!a)return!1;for(i in e);return void 0===i||t.call(e,i)},s=function(e,t){i&&"__proto__"===t.name?i(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},u=function(e,r){if("__proto__"===r){if(!t.call(e,r))return;if(n)return n(e,r).value}return e[r]};e.exports=function e(){var t,r,i,n,c,l,h=arguments[0],p=1,d=arguments.length,f=!1;for("boolean"==typeof h&&(f=h,h=arguments[1]||{},p=2),(null==h||"object"!=typeof h&&"function"!=typeof h)&&(h={});p{var i=r(34155),n=r(69282),a=r(89539);function o(e){var t,r,i,o,s,l,h,p,d,f=["([^%]*)","%","(['\\-+ #0]*?)","([1-9]\\d*)?","(\\.([1-9]\\d*))?","[lhjztL]*?","([diouxXfFeEgGaAcCsSp%jr])"].join(""),m=new RegExp(f),g=Array.prototype.slice.call(arguments,1),v="",y=1;for(n.equal("string",typeof e);null!==(d=m.exec(e));)if(v+=d[1],e=e.substring(d[0].length),t=d[2]||"",r=d[3]||0,i=d[4]||"",s=!1,h=!1,l=" ","%"!=(o=d[6])){if(0===g.length)throw new Error("too few args to sprintf");if(p=g.shift(),y++,t.match(/[\' #]/))throw new Error("unsupported flags: "+t);if(i.length>0)throw new Error("non-zero precision not supported");switch(t.match(/-/)&&(s=!0),t.match(/0/)&&(l="0"),t.match(/\+/)&&(h=!0),o){case"s":if(null==p)throw new Error("argument "+y+": attempted to print undefined or null as a string");v+=u(l,r,s,p.toString());break;case"d":p=Math.floor(p);case"f":v+=(h=h&&p>0?"+":"")+u(l,r,s,p.toString());break;case"x":v+=u(l,r,s,p.toString(16));break;case"j":0===r&&(r=10),v+=a.inspect(p,!1,r);break;case"r":v+=c(p);break;default:throw new Error("unsupported conversion: "+o)}}else v+="%";return v+e}function s(e){var t=Array.prototype.slice.call(arguments,1);return e.write(o.apply(this,t))}function u(e,t,r,i){for(var n=i;n.length{"use strict";e.exports=function e(t,r){if(t===r)return!0;if(t&&r&&"object"==typeof t&&"object"==typeof r){if(t.constructor!==r.constructor)return!1;var i,n,a;if(Array.isArray(t)){if((i=t.length)!=r.length)return!1;for(n=i;0!=n--;)if(!e(t[n],r[n]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if((i=(a=Object.keys(t)).length)!==Object.keys(r).length)return!1;for(n=i;0!=n--;)if(!Object.prototype.hasOwnProperty.call(r,a[n]))return!1;for(n=i;0!=n--;){var o=a[n];if(!e(t[o],r[o]))return!1}return!0}return t!=t&&r!=r}},35035:e=>{"use strict";e.exports=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var r,i="boolean"==typeof t.cycles&&t.cycles,n=t.cmp&&(r=t.cmp,function(e){return function(t,i){var n={key:t,value:e[t]},a={key:i,value:e[i]};return r(n,a)}}),a=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var r,o;if(Array.isArray(t)){for(o="[",r=0;r{"use strict";var i=r(95320),n=Object.prototype.toString,a=Object.prototype.hasOwnProperty,o=function(e,t,r){for(var i=0,n=e.length;i=3&&(a=r),"[object Array]"===n.call(e)?o(e,t,a):"string"==typeof e?s(e,t,a):u(e,t,a)}},43281:(e,t,r)=>{e.exports=c,c.SSL=l;var i=r(89539),n=r(8501).Agent,a=r(85456),o=r(18760),s=r(79267).Agent;function u(e,t){return"string"==typeof e?e+":"+t:e.host+":"+e.port+":"+(e.localAddress?e.localAddress+":":":")}function c(e){var t=this;t.options=e||{},t.requests={},t.sockets={},t.freeSockets={},t.maxSockets=t.options.maxSockets||n.defaultMaxSockets,t.minSockets=t.options.minSockets||c.defaultMinSockets,t.on("free",(function(e,r,i){var n=u(r,i);if(t.requests[n]&&t.requests[n].length)t.requests[n].shift().onSocket(e);else if(t.sockets[n].length0&&!e.useChunkedEncodingByDefault){var a=this.freeSockets[i].pop();a.removeListener("error",a._onIdleError),delete a._onIdleError,e._reusedSocket=!0,e.onSocket(a)}else this.addRequestNoreuse(e,t,r)},c.prototype.removeSocket=function(e,t,r,i){var n;this.sockets[t]?-1!==(n=this.sockets[t].indexOf(e))&&this.sockets[t].splice(n,1):this.sockets[t]&&0===this.sockets[t].length&&(delete this.sockets[t],delete this.requests[t]),this.freeSockets[t]&&-1!==(n=this.freeSockets[t].indexOf(e))&&(this.freeSockets[t].splice(n,1),0===this.freeSockets[t].length&&delete this.freeSockets[t]),this.requests[t]&&this.requests[t].length&&this.createSocket(t,r,i).emit("free")},i.inherits(l,c),l.prototype.createConnection=function(e,t,r){return"object"==typeof e?r=e:"object"==typeof t?r=t:"object"==typeof r||(r={}),"number"==typeof e&&(r.port=e),"string"==typeof t&&(r.host=t),o.connect(r)},l.prototype.addRequestNoreuse=s.prototype.addRequest},6230:e=>{e.exports="object"==typeof self?self.FormData:window.FormData},17648:e=>{"use strict";var t="Function.prototype.bind called on incompatible ",r=Array.prototype.slice,i=Object.prototype.toString,n="[object Function]";e.exports=function(e){var a=this;if("function"!=typeof a||i.call(a)!==n)throw new TypeError(t+a);for(var o,s=r.call(arguments,1),u=function(){if(this instanceof o){var t=a.apply(this,s.concat(r.call(arguments)));return Object(t)===t?t:this}return a.apply(e,s.concat(r.call(arguments)))},c=Math.max(0,a.length-s.length),l=[],h=0;h{"use strict";var i=r(17648);e.exports=Function.prototype.bind||i},40210:(e,t,r)=>{"use strict";var i,n=SyntaxError,a=Function,o=TypeError,s=function(e){try{return a('"use strict"; return ('+e+").constructor;")()}catch(e){}},u=Object.getOwnPropertyDescriptor;if(u)try{u({},"")}catch(e){u=null}var c=function(){throw new o},l=u?function(){try{return c}catch(e){try{return u(arguments,"callee").get}catch(e){return c}}}():c,h=r(41405)(),p=Object.getPrototypeOf||function(e){return e.__proto__},d={},f="undefined"==typeof Uint8Array?i:p(Uint8Array),m={"%AggregateError%":"undefined"==typeof AggregateError?i:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?i:ArrayBuffer,"%ArrayIteratorPrototype%":h?p([][Symbol.iterator]()):i,"%AsyncFromSyncIteratorPrototype%":i,"%AsyncFunction%":d,"%AsyncGenerator%":d,"%AsyncGeneratorFunction%":d,"%AsyncIteratorPrototype%":d,"%Atomics%":"undefined"==typeof Atomics?i:Atomics,"%BigInt%":"undefined"==typeof BigInt?i:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?i:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?i:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?i:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?i:FinalizationRegistry,"%Function%":a,"%GeneratorFunction%":d,"%Int8Array%":"undefined"==typeof Int8Array?i:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?i:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?i:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":h?p(p([][Symbol.iterator]())):i,"%JSON%":"object"==typeof JSON?JSON:i,"%Map%":"undefined"==typeof Map?i:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&h?p((new Map)[Symbol.iterator]()):i,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?i:Promise,"%Proxy%":"undefined"==typeof Proxy?i:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?i:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?i:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&h?p((new Set)[Symbol.iterator]()):i,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?i:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":h?p(""[Symbol.iterator]()):i,"%Symbol%":h?Symbol:i,"%SyntaxError%":n,"%ThrowTypeError%":l,"%TypedArray%":f,"%TypeError%":o,"%Uint8Array%":"undefined"==typeof Uint8Array?i:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?i:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?i:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?i:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?i:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?i:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?i:WeakSet},g=function e(t){var r;if("%AsyncFunction%"===t)r=s("async function () {}");else if("%GeneratorFunction%"===t)r=s("function* () {}");else if("%AsyncGeneratorFunction%"===t)r=s("async function* () {}");else if("%AsyncGenerator%"===t){var i=e("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===t){var n=e("%AsyncGenerator%");n&&(r=p(n.prototype))}return m[t]=r,r},v={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},y=r(58612),_=r(17642),b=y.call(Function.call,Array.prototype.concat),w=y.call(Function.apply,Array.prototype.splice),E=y.call(Function.call,String.prototype.replace),k=y.call(Function.call,String.prototype.slice),S=y.call(Function.call,RegExp.prototype.exec),x=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,j=/\\(\\)?/g,N=function(e){var t=k(e,0,1),r=k(e,-1);if("%"===t&&"%"!==r)throw new n("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new n("invalid intrinsic syntax, expected opening `%`");var i=[];return E(e,x,(function(e,t,r,n){i[i.length]=r?E(n,j,"$1"):t||e})),i},M=function(e,t){var r,i=e;if(_(v,i)&&(i="%"+(r=v[i])[0]+"%"),_(m,i)){var a=m[i];if(a===d&&(a=g(i)),void 0===a&&!t)throw new o("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:a}}throw new n("intrinsic "+e+" does not exist!")};e.exports=function(e,t){if("string"!=typeof e||0===e.length)throw new o("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new o('"allowMissing" argument must be a boolean');if(null===S(/^%?[^%]*%?$/g,e))throw new n("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=N(e),i=r.length>0?r[0]:"",a=M("%"+i+"%",t),s=a.name,c=a.value,l=!1,h=a.alias;h&&(i=h[0],w(r,b([0,1],h)));for(var p=1,d=!0;p=r.length){var y=u(c,f);c=(d=!!y)&&"get"in y&&!("originalValue"in y.get)?y.get:c[f]}else d=_(c,f),c=c[f];d&&!l&&(m[s]=c)}}return c}},8023:(e,t,r)=>{"use strict";e.exports={afterRequest:r(83932),beforeRequest:r(36136),browser:r(805),cache:r(51632),content:r(61567),cookie:r(25725),creator:r(47218),entry:r(74560),har:r(75579),header:r(75147),log:r(53013),page:r(34777),pageTimings:r(5538),postData:r(12096),query:r(21251),request:r(99646),response:r(9103),timings:r(22007)}},88300:e=>{function t(e){var t="validation failed";this.name="HARError",this.message=t,this.errors=e,"function"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error(t).stack}t.prototype=Error.prototype,e.exports=t},86056:(e,t,r)=>{var i,n=r(65096),a=r(88300),o=r(8023);function s(e,t){t=t||{};var s=(i=i||function(){var e=new n({allErrors:!0});return e.addMetaSchema(r(96273)),e.addSchema(o),e}()).getSchema(e+".json");return new Promise((function(e,r){s(t)?e(t):r(new a(s.errors))}))}t.afterRequest=function(e){return s("afterRequest",e)},t.beforeRequest=function(e){return s("beforeRequest",e)},t.browser=function(e){return s("browser",e)},t.cache=function(e){return s("cache",e)},t.content=function(e){return s("content",e)},t.cookie=function(e){return s("cookie",e)},t.creator=function(e){return s("creator",e)},t.entry=function(e){return s("entry",e)},t.har=function(e){return s("har",e)},t.header=function(e){return s("header",e)},t.log=function(e){return s("log",e)},t.page=function(e){return s("page",e)},t.pageTimings=function(e){return s("pageTimings",e)},t.postData=function(e){return s("postData",e)},t.query=function(e){return s("query",e)},t.request=function(e){return s("request",e)},t.response=function(e){return s("response",e)},t.timings=function(e){return s("timings",e)}},31044:(e,t,r)=>{"use strict";var i=r(40210)("%Object.defineProperty%",!0),n=function(){if(i)try{return i({},"a",{value:1}),!0}catch(e){return!1}return!1};n.hasArrayLengthDefineBug=function(){if(!n())return null;try{return 1!==i([],"length",{value:1}).length}catch(e){return!0}},e.exports=n},41405:(e,t,r)=>{"use strict";var i="undefined"!=typeof Symbol&&Symbol,n=r(55419);e.exports=function(){return"function"==typeof i&&"function"==typeof Symbol&&"symbol"==typeof i("foo")&&"symbol"==typeof Symbol("bar")&&n()}},55419:e=>{"use strict";e.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var i=Object.getOwnPropertySymbols(e);if(1!==i.length||i[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var n=Object.getOwnPropertyDescriptor(e,t);if(42!==n.value||!0!==n.enumerable)return!1}return!0}},96410:(e,t,r)=>{"use strict";var i=r(55419);e.exports=function(){return i()&&!!Symbol.toStringTag}},17642:(e,t,r)=>{"use strict";var i=r(58612);e.exports=i.call(Function.call,Object.prototype.hasOwnProperty)},3349:(e,t,r)=>{"use strict";var i=r(50213).Buffer,n=r(88473).Transform;function a(e){n.call(this),this._block=i.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}r(35717)(a,n),a.prototype._transform=function(e,t,r){var i=null;try{this.update(e,t)}catch(e){i=e}r(i)},a.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},a.prototype.update=function(e,t){if(function(e,t){if(!i.isBuffer(e)&&"string"!=typeof e)throw new TypeError("Data must be a string or a buffer")}(e),this._finalized)throw new Error("Digest already called");i.isBuffer(e)||(e=i.from(e,t));for(var r=this._block,n=0;this._blockOffset+e.length-n>=this._blockSize;){for(var a=this._blockOffset;a0;++o)this._length[o]+=s,(s=this._length[o]/4294967296|0)>0&&(this._length[o]-=4294967296*s);return this},a.prototype._update=function(){throw new Error("_update is not implemented")},a.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},a.prototype._digest=function(){throw new Error("_digest is not implemented")},e.exports=a},50213:(e,t,r)=>{var i=r(48764),n=i.Buffer;function a(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=i:(a(i,t),t.Buffer=o),o.prototype=Object.create(n.prototype),a(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i.SlowBuffer(e)}},33715:(e,t,r)=>{var i=t;i.utils=r(26436),i.common=r(95772),i.sha=r(89041),i.ripemd=r(12949),i.hmac=r(52344),i.sha1=i.sha.sha1,i.sha256=i.sha.sha256,i.sha224=i.sha.sha224,i.sha384=i.sha.sha384,i.sha512=i.sha.sha512,i.ripemd160=i.ripemd.ripemd160},95772:(e,t,r)=>{"use strict";var i=r(26436),n=r(79746);function a(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}t.BlockHash=a,a.prototype.update=function(e,t){if(e=i.toArray(e,t),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var r=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-r,e.length),0===this.pending.length&&(this.pending=null),e=i.join32(e,0,e.length-r,this.endian);for(var n=0;n>>24&255,i[n++]=e>>>16&255,i[n++]=e>>>8&255,i[n++]=255&e}else for(i[n++]=255&e,i[n++]=e>>>8&255,i[n++]=e>>>16&255,i[n++]=e>>>24&255,i[n++]=0,i[n++]=0,i[n++]=0,i[n++]=0,a=8;a{"use strict";var i=r(26436),n=r(79746);function a(e,t,r){if(!(this instanceof a))return new a(e,t,r);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(i.toArray(t,r))}e.exports=a,a.prototype._init=function(e){e.length>this.blockSize&&(e=(new this.Hash).update(e).digest()),n(e.length<=this.blockSize);for(var t=e.length;t{"use strict";var i=r(26436),n=r(95772),a=i.rotl32,o=i.sum32,s=i.sum32_3,u=i.sum32_4,c=n.BlockHash;function l(){if(!(this instanceof l))return new l;c.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function h(e,t,r,i){return e<=15?t^r^i:e<=31?t&r|~t&i:e<=47?(t|~r)^i:e<=63?t&i|r&~i:t^(r|~i)}function p(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function d(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}i.inherits(l,c),t.ripemd160=l,l.blockSize=512,l.outSize=160,l.hmacStrength=192,l.padLength=64,l.prototype._update=function(e,t){for(var r=this.h[0],i=this.h[1],n=this.h[2],c=this.h[3],l=this.h[4],y=r,_=i,b=n,w=c,E=l,k=0;k<80;k++){var S=o(a(u(r,h(k,i,n,c),e[f[k]+t],p(k)),g[k]),l);r=l,l=c,c=a(n,10),n=i,i=S,S=o(a(u(y,h(79-k,_,b,w),e[m[k]+t],d(k)),v[k]),E),y=E,E=w,w=a(b,10),b=_,_=S}S=s(this.h[1],n,w),this.h[1]=s(this.h[2],c,E),this.h[2]=s(this.h[3],l,y),this.h[3]=s(this.h[4],r,_),this.h[4]=s(this.h[0],i,b),this.h[0]=S},l.prototype._digest=function(e){return"hex"===e?i.toHex32(this.h,"little"):i.split32(this.h,"little")};var f=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],m=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],g=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],v=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},89041:(e,t,r)=>{"use strict";t.sha1=r(84761),t.sha224=r(10799),t.sha256=r(89344),t.sha384=r(80772),t.sha512=r(45900)},84761:(e,t,r)=>{"use strict";var i=r(26436),n=r(95772),a=r(37038),o=i.rotl32,s=i.sum32,u=i.sum32_5,c=a.ft_1,l=n.BlockHash,h=[1518500249,1859775393,2400959708,3395469782];function p(){if(!(this instanceof p))return new p;l.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}i.inherits(p,l),e.exports=p,p.blockSize=512,p.outSize=160,p.hmacStrength=80,p.padLength=64,p.prototype._update=function(e,t){for(var r=this.W,i=0;i<16;i++)r[i]=e[t+i];for(;i{"use strict";var i=r(26436),n=r(89344);function a(){if(!(this instanceof a))return new a;n.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}i.inherits(a,n),e.exports=a,a.blockSize=512,a.outSize=224,a.hmacStrength=192,a.padLength=64,a.prototype._digest=function(e){return"hex"===e?i.toHex32(this.h.slice(0,7),"big"):i.split32(this.h.slice(0,7),"big")}},89344:(e,t,r)=>{"use strict";var i=r(26436),n=r(95772),a=r(37038),o=r(79746),s=i.sum32,u=i.sum32_4,c=i.sum32_5,l=a.ch32,h=a.maj32,p=a.s0_256,d=a.s1_256,f=a.g0_256,m=a.g1_256,g=n.BlockHash,v=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function y(){if(!(this instanceof y))return new y;g.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=v,this.W=new Array(64)}i.inherits(y,g),e.exports=y,y.blockSize=512,y.outSize=256,y.hmacStrength=192,y.padLength=64,y.prototype._update=function(e,t){for(var r=this.W,i=0;i<16;i++)r[i]=e[t+i];for(;i{"use strict";var i=r(26436),n=r(45900);function a(){if(!(this instanceof a))return new a;n.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}i.inherits(a,n),e.exports=a,a.blockSize=1024,a.outSize=384,a.hmacStrength=192,a.padLength=128,a.prototype._digest=function(e){return"hex"===e?i.toHex32(this.h.slice(0,12),"big"):i.split32(this.h.slice(0,12),"big")}},45900:(e,t,r)=>{"use strict";var i=r(26436),n=r(95772),a=r(79746),o=i.rotr64_hi,s=i.rotr64_lo,u=i.shr64_hi,c=i.shr64_lo,l=i.sum64,h=i.sum64_hi,p=i.sum64_lo,d=i.sum64_4_hi,f=i.sum64_4_lo,m=i.sum64_5_hi,g=i.sum64_5_lo,v=n.BlockHash,y=[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];function _(){if(!(this instanceof _))return new _;v.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=y,this.W=new Array(160)}function b(e,t,r,i,n){var a=e&r^~e&n;return a<0&&(a+=4294967296),a}function w(e,t,r,i,n,a){var o=t&i^~t&a;return o<0&&(o+=4294967296),o}function E(e,t,r,i,n){var a=e&r^e&n^r&n;return a<0&&(a+=4294967296),a}function k(e,t,r,i,n,a){var o=t&i^t&a^i&a;return o<0&&(o+=4294967296),o}function S(e,t){var r=o(e,t,28)^o(t,e,2)^o(t,e,7);return r<0&&(r+=4294967296),r}function x(e,t){var r=s(e,t,28)^s(t,e,2)^s(t,e,7);return r<0&&(r+=4294967296),r}function j(e,t){var r=s(e,t,14)^s(e,t,18)^s(t,e,9);return r<0&&(r+=4294967296),r}function N(e,t){var r=o(e,t,1)^o(e,t,8)^u(e,t,7);return r<0&&(r+=4294967296),r}function M(e,t){var r=s(e,t,1)^s(e,t,8)^c(e,t,7);return r<0&&(r+=4294967296),r}function I(e,t){var r=s(e,t,19)^s(t,e,29)^c(e,t,6);return r<0&&(r+=4294967296),r}i.inherits(_,v),e.exports=_,_.blockSize=1024,_.outSize=512,_.hmacStrength=192,_.padLength=128,_.prototype._prepareBlock=function(e,t){for(var r=this.W,i=0;i<32;i++)r[i]=e[t+i];for(;i{"use strict";var i=r(26436).rotr32;function n(e,t,r){return e&t^~e&r}function a(e,t,r){return e&t^e&r^t&r}function o(e,t,r){return e^t^r}t.ft_1=function(e,t,r,i){return 0===e?n(t,r,i):1===e||3===e?o(t,r,i):2===e?a(t,r,i):void 0},t.ch32=n,t.maj32=a,t.p32=o,t.s0_256=function(e){return i(e,2)^i(e,13)^i(e,22)},t.s1_256=function(e){return i(e,6)^i(e,11)^i(e,25)},t.g0_256=function(e){return i(e,7)^i(e,18)^e>>>3},t.g1_256=function(e){return i(e,17)^i(e,19)^e>>>10}},26436:(e,t,r)=>{"use strict";var i=r(79746),n=r(35717);function a(e,t){return 55296==(64512&e.charCodeAt(t))&&!(t<0||t+1>=e.length)&&56320==(64512&e.charCodeAt(t+1))}function o(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function s(e){return 1===e.length?"0"+e:e}function u(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}t.inherits=n,t.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if("string"==typeof e)if(t){if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),n=0;n>6|192,r[i++]=63&o|128):a(e,n)?(o=65536+((1023&o)<<10)+(1023&e.charCodeAt(++n)),r[i++]=o>>18|240,r[i++]=o>>12&63|128,r[i++]=o>>6&63|128,r[i++]=63&o|128):(r[i++]=o>>12|224,r[i++]=o>>6&63|128,r[i++]=63&o|128)}else for(n=0;n>>0}return o},t.split32=function(e,t){for(var r=new Array(4*e.length),i=0,n=0;i>>24,r[n+1]=a>>>16&255,r[n+2]=a>>>8&255,r[n+3]=255&a):(r[n+3]=a>>>24,r[n+2]=a>>>16&255,r[n+1]=a>>>8&255,r[n]=255&a)}return r},t.rotr32=function(e,t){return e>>>t|e<<32-t},t.rotl32=function(e,t){return e<>>32-t},t.sum32=function(e,t){return e+t>>>0},t.sum32_3=function(e,t,r){return e+t+r>>>0},t.sum32_4=function(e,t,r,i){return e+t+r+i>>>0},t.sum32_5=function(e,t,r,i,n){return e+t+r+i+n>>>0},t.sum64=function(e,t,r,i){var n=e[t],a=i+e[t+1]>>>0,o=(a>>0,e[t+1]=a},t.sum64_hi=function(e,t,r,i){return(t+i>>>0>>0},t.sum64_lo=function(e,t,r,i){return t+i>>>0},t.sum64_4_hi=function(e,t,r,i,n,a,o,s){var u=0,c=t;return u+=(c=c+i>>>0)>>0)>>0)>>0},t.sum64_4_lo=function(e,t,r,i,n,a,o,s){return t+i+a+s>>>0},t.sum64_5_hi=function(e,t,r,i,n,a,o,s,u,c){var l=0,h=t;return l+=(h=h+i>>>0)>>0)>>0)>>0)>>0},t.sum64_5_lo=function(e,t,r,i,n,a,o,s,u,c){return t+i+a+s+c>>>0},t.rotr64_hi=function(e,t,r){return(t<<32-r|e>>>r)>>>0},t.rotr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0},t.shr64_hi=function(e,t,r){return e>>>r},t.shr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0}},2156:(e,t,r)=>{"use strict";var i=r(33715),n=r(34504),a=r(79746);function o(e){if(!(this instanceof o))return new o(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=n.toArray(e.entropy,e.entropyEnc||"hex"),r=n.toArray(e.nonce,e.nonceEnc||"hex"),i=n.toArray(e.pers,e.persEnc||"hex");a(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,i)}e.exports=o,o.prototype._init=function(e,t,r){var i=e.concat(t).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(r||[])),this._reseed=1},o.prototype.generate=function(e,t,r,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof t&&(i=r,r=t,t=null),r&&(r=n.toArray(r,i||"hex"),this._update(r));for(var a=[];a.length{"use strict";var i=r(4716),n=r(26470),a=r(21382),o=i.wrapSuccess,s=i.wrapFail;t.getFsInstance=a.getInstance,t.appendFile=function(e,t,r){a.writeFile(e,t,r,!0)},t.writeFile=function(e,t,r){a.writeFile(e,t,r,!1)},t.readFile=function(e,t,r){"function"==typeof t&&(r=t,t={encoding:"utf8"});var i=o(r),n=s(r);a.getFile(e,(function(e,r){r.file((function(e){var r=new FileReader;r.onloadend=function(e){i(e.target.result)},r.onerror=function(e){n(e)},"utf8"===t.encoding?r.readAsText(e):r.readAsDataURL(e)}),n)}))},t.unlink=function(e,t){var r=o(t),i=s(t);a.getFile(e,(function(e,t){e?i(e):t.remove(r,i)}))},t.readdir=function(e,t){var r=o(t),i=s(t);a.getDirectory(e,(function(e,t){e?i(e):t.createReader().readEntries(r,i)}))},t.mkdir=function(e,t){var r=n.basename(e),o=n.dirname(e),s=i.wrapSuccess(t),u=i.wrapFail(t),c={create:!0,exclusive:!0};"."===o?a.getDirectory(r,c,t):a.getDirectory(o,(function(e,i){e?t(e,null):i.getDirectory(r,c,s,u)}))},t.rmdir=function(e,t){var r=o(t),i=s(t);this.readdir(e,(function(t,n){t?i(t):n&&n.length>0?i("ENOTEMPTY: Directory must be empty"):a.getDirectory(e,(function(e,t){e?i(e):t.remove(r,i)}))}))},t.exists=function(e,t){var r=s(t);a.getFile(e,{create:!1},(function(e){e&&(window.FileError&&1===e.code||"NotFoundError"===e.name)?t(!1):e?r(e):t(!0)}))},t.stat=function(e,t){var r=o(t),n=s(t),u=a.getFile;i.isDirectory(e)&&(u=a.getDirectory),u(e,(function(e,t){e?n(e):t.getMetadata(r,n)}))},t.init=function(e,t){a.init(e,(function(e){e?t(e,null):a.getInstance((function(e){t(e,null)}))}))}},21382:(e,t,r)=>{"use strict";var i=r(4716),n=r(26470),a=null;t.getInstance=function(e){a?e(null,a):o(null,e)};var o=t.init=function(e,t){!function(e,t){function r(e){t(null,e)}function n(e){t(e,null)}e=e||10485760,navigator.webkitPersistentStorage&&navigator.webkitPersistentStorage.requestQuota?navigator.webkitPersistentStorage.requestQuota(e,r,n):window.webkitStorageInfo&&window.webkitStorageInfo.requestQuota?window.webkitStorageInfo.requestQuota(window.PERSISTENT,e,r,n):window.requestFileSystem?(!0===i.isPhoneGap()&&(e=0),r(e)):n("NO_SUPPORT")}(e,(function(e,r){if(e)return t(e,null);!function(e,t,r){window.navigator.webkitRequestFileSystem?window.navigator.webkitRequestFileSystem(e,t,r):window.requestFileSystem?window.requestFileSystem(window.LocalFileSystem.PERSISTENT,e,t,r):window.webkitRequestFileSystem?window.webkitRequestFileSystem(window.PERSISTENT,e,t,r):r("NO_SUPPORT")}(r,(function(e){a=e,t(null,r)}),(function(e){t(e,null)}))}))};t.writeFile=function(e,t,r,n){var a=i.wrapFail(r),o=i.wrapSuccess(r);this.getFile(e,{create:!0,exclusive:!1},(function(e,s){if(e)return r(e,null);s.createWriter((function(e){e.onwrite=function(){o(s.toURL())},e.onerror=function(e){a(e.target.error)},!0===n&&e.seek(e.length),i.isMobile()?e.write(t):e.write(new Blob([t]))}),a)}))},t.getDirectory=function(e,t,r){r||(r=t,t={create:!1});var n=i.wrapSuccess(r),o=i.wrapFail(r);a.root.getDirectory(e,t,n,o)},t.getFile=function(e,t,r){r||(r=t,t={create:!1});var o=n.basename(e),s=n.dirname(e),u=i.wrapSuccess(r),c=i.wrapFail(r);function l(e){e.getFile(o,t,u,c)}"."===s?l(a.root):this.getDirectory(s,t,(function(e,t){e?r(e,null):l(t)}))}},4716:(e,t)=>{"use strict";t.isMobile=function(){return null!==window.navigator.userAgent.match(/Android|iPad|iPhone|iPod|Windows Phone/)},t.isPhoneGap=function(){var e=window.location.protocol;return this.isMobile()&&-1!==e.indexOf("file")},t.supportsFileSystem=function(){return!0===this.isPhoneGap()||window.navigator.userAgent.match(/Chrome|Opera/)},t.wrapSuccess=function(e){return function(){var t=[null].concat(Array.prototype.slice.call(arguments));e.apply(e,t)}},t.wrapFail=function(e){return function(){var t=Array.prototype.slice.call(arguments),r=t[0];e.apply(e,[r,null])}},t.isDirectory=function(e){return e.lastIndexOf("/")===e.length-1}},68007:(e,t,r)=>{var i=r(15534),n=r(12751),a=r(67388),o=r(14071);e.exports={parse:i.parseRequest,parseRequest:i.parseRequest,sign:n.signRequest,signRequest:n.signRequest,createSigner:n.createSigner,isSigner:n.isSigner,sshKeyToPEM:o.sshKeyToPEM,sshKeyFingerprint:o.fingerprint,pemToRsaSSHKey:o.pemToRsaSSHKey,verify:a.verifySignature,verifySignature:a.verifySignature,verifyHMAC:a.verifyHMAC}},15534:(e,t,r)=>{var i=r(6144),n=r(89539),a=r(14071),o=(a.HASH_ALGOS,a.PK_ALGOS,a.HttpSignatureError),s=a.InvalidAlgorithmError,u=a.validateAlgorithm;function c(e){o.call(this,e,c)}function l(e){o.call(this,e,l)}function h(e){o.call(this,e,h)}function p(e){o.call(this,e,p)}function d(e){o.call(this,e,d)}n.inherits(c,o),n.inherits(l,o),n.inherits(h,o),n.inherits(p,o),n.inherits(d,o),e.exports={parseRequest:function(e,t){i.object(e,"request"),i.object(e.headers,"request.headers"),void 0===t&&(t={}),void 0===t.headers&&(t.headers=[e.headers["x-date"]?"x-date":"date"]),i.object(t,"options"),i.arrayOfString(t.headers,"options.headers"),i.optionalFinite(t.clockSkew,"options.clockSkew");var r=t.authorizationHeaderName||"authorization";if(!e.headers[r])throw new p("no "+r+" header present in the request");t.clockSkew=t.clockSkew||300;var n,a=0,o=0,f=0,m="",g="",v={scheme:"",params:{},signingString:""},y=e.headers[r];for(a=0;a=65&&b<=90||b>=97&&b<=122)m+=_;else{if("="!==_)throw new l("bad param format");if(0===m.length)throw new l("bad param format");f=1}break;case 1:if('"'!==_)throw new l("bad param format");g="",f=2;break;case 2:'"'===_?(v.params[m]=g,f=3):g+=_;break;case 3:if(","!==_)throw new l("bad param format");m="",f=0;break;default:throw new Error("Invalid substate")}break;default:throw new Error("Invalid substate")}}if(v.params.headers&&""!==v.params.headers?v.params.headers=v.params.headers.split(" "):e.headers["x-date"]?v.params.headers=["x-date"]:v.params.headers=["date"],!v.scheme||"Signature"!==v.scheme)throw new l('scheme was not "Signature"');if(!v.params.keyId)throw new l("keyId was not specified");if(!v.params.algorithm)throw new l("algorithm was not specified");if(!v.params.signature)throw new l("signature was not specified");v.params.algorithm=v.params.algorithm.toLowerCase();try{u(v.params.algorithm)}catch(e){throw e instanceof s?new h(v.params.algorithm+" is not supported"):e}for(a=0;a1e3*t.clockSkew)throw new c("clock skew of "+S/1e3+"s was greater than "+t.clockSkew+"s")}if(t.headers.forEach((function(e){if(v.params.headers.indexOf(e.toLowerCase())<0)throw new p(e+" was not a signed header")})),t.algorithms&&-1===t.algorithms.indexOf(v.params.algorithm))throw new h(v.params.algorithm+" is not a supported algorithm");return v.algorithm=v.params.algorithm.toUpperCase(),v.keyId=v.params.keyId,v}}},12751:(e,t,r)=>{var i=r(48764).Buffer,n=r(6144),a=r(55835),o=(r(8501),r(89539)),s=r(7518),u=r(37954),c=r(14071),l=r(89539).format,h=c.HASH_ALGOS,p=c.PK_ALGOS,d=c.InvalidAlgorithmError,f=c.HttpSignatureError,m=c.validateAlgorithm,g='Signature keyId="%s",algorithm="%s",headers="%s",signature="%s"';function v(e){f.call(this,e,v)}function y(e){f.call(this,e,y)}function _(e){n.object(e,"options");var t=[];if(void 0!==e.algorithm&&(n.string(e.algorithm,"options.algorithm"),t=m(e.algorithm)),this.rs_alg=t,void 0!==e.sign)n.func(e.sign,"options.sign"),this.rs_signFunc=e.sign;else if("hmac"===t[0]&&void 0!==e.key){if(n.string(e.keyId,"options.keyId"),this.rs_keyId=e.keyId,"string"!=typeof e.key&&!i.isBuffer(e.key))throw new TypeError("options.key for HMAC must be a string or Buffer");this.rs_signer=a.createHmac(t[1].toUpperCase(),e.key),this.rs_signer.sign=function(){var e=this.digest("base64");return{hashAlgorithm:t[1],toString:function(){return e}}}}else{if(void 0===e.key)throw new TypeError("options.sign (func) or options.key is required");var r=e.key;if(("string"==typeof r||i.isBuffer(r))&&(r=s.parsePrivateKey(r)),n.ok(s.PrivateKey.isPrivateKey(r,[1,2]),"options.key must be a sshpk.PrivateKey"),this.rs_key=r,n.string(e.keyId,"options.keyId"),this.rs_keyId=e.keyId,!p[r.type])throw new d(r.type.toUpperCase()+" type keys are not supported");if(void 0!==t[0]&&r.type!==t[0])throw new d("options.key must be a "+t[0].toUpperCase()+" key, was given a "+r.type.toUpperCase()+" key instead");this.rs_signer=r.createSign(t[1])}this.rs_headers=[],this.rs_lines=[]}o.inherits(v,f),o.inherits(y,f),_.prototype.writeHeader=function(e,t){if(n.string(e,"header"),e=e.toLowerCase(),n.string(t,"value"),this.rs_headers.push(e),this.rs_signFunc)this.rs_lines.push(e+": "+t);else{var r=e+": "+t;this.rs_headers.length>0&&(r="\n"+r),this.rs_signer.update(r)}return t},_.prototype.writeDateHeader=function(){return this.writeHeader("date",u.rfc1123(new Date))},_.prototype.writeTarget=function(e,t){n.string(e,"method"),n.string(t,"path"),e=e.toLowerCase(),this.writeHeader("(request-target)",e+" "+t)},_.prototype.sign=function(e){if(n.func(e,"callback"),this.rs_headers.length<1)throw new Error("At least one header must be signed");var t,r;if(this.rs_signFunc){var i=this.rs_lines.join("\n"),a=this;this.rs_signFunc(i,(function(i,o){if(i)e(i);else{try{n.object(o,"signature"),n.string(o.keyId,"signature.keyId"),n.string(o.algorithm,"signature.algorithm"),n.string(o.signature,"signature.signature"),t=m(o.algorithm),r=l(g,o.keyId,o.algorithm,a.rs_headers.join(" "),o.signature)}catch(t){return void e(t)}e(null,r)}}))}else{try{var o=this.rs_signer.sign()}catch(t){return void e(t)}t=(this.rs_alg[0]||this.rs_key.type)+"-"+o.hashAlgorithm;var s=o.toString();r=l(g,this.rs_keyId,t,this.rs_headers.join(" "),s),e(null,r)}},e.exports={isSigner:function(e){return"object"==typeof e&&e instanceof _},createSigner:function(e){return new _(e)},signRequest:function(e,t){n.object(e,"request"),n.object(t,"options"),n.optionalString(t.algorithm,"options.algorithm"),n.string(t.keyId,"options.keyId"),n.optionalArrayOfString(t.headers,"options.headers"),n.optionalString(t.httpVersion,"options.httpVersion"),e.getHeader("Date")||e.setHeader("Date",u.rfc1123(new Date)),t.headers||(t.headers=["date"]),t.httpVersion||(t.httpVersion="1.1");var r,o=[];t.algorithm&&(t.algorithm=t.algorithm.toLowerCase(),o=m(t.algorithm));var c,f="";for(r=0;r{var i=r(6144),n=r(7518),a=r(89539),o={sha1:!0,sha256:!0,sha512:!0},s={rsa:!0,dsa:!0,ecdsa:!0};function u(e,t){Error.captureStackTrace&&Error.captureStackTrace(this,t||u),this.message=e,this.name=t.name}function c(e){u.call(this,e,c)}a.inherits(u,Error),a.inherits(c,u),e.exports={HASH_ALGOS:o,PK_ALGOS:s,HttpSignatureError:u,InvalidAlgorithmError:c,validateAlgorithm:function(e){var t=e.toLowerCase().split("-");if(2!==t.length)throw new c(t[0].toUpperCase()+" is not a valid algorithm");if("hmac"!==t[0]&&!s[t[0]])throw new c(t[0].toUpperCase()+" type keys are not supported");if(!o[t[1]])throw new c(t[1].toUpperCase()+" is not a supported hash algorithm");return t},sshKeyToPEM:function(e){return i.string(e,"ssh_key"),n.parseKey(e,"ssh").toString("pem")},fingerprint:function(e){return i.string(e,"ssh_key"),n.parseKey(e,"ssh").fingerprint("md5").toString("hex")},pemToRsaSSHKey:function(e,t){i.equal("string",typeof e,"typeof pem");var r=n.parseKey(e,"pem");return r.comment=t,r.toString("ssh")}}},67388:(e,t,r)=>{var i=r(48764).Buffer,n=r(6144),a=r(55835),o=r(7518),s=r(14071),u=(s.HASH_ALGOS,s.PK_ALGOS,s.InvalidAlgorithmError,s.HttpSignatureError,s.validateAlgorithm);e.exports={verifySignature:function(e,t){n.object(e,"parsedSignature"),("string"==typeof t||i.isBuffer(t))&&(t=o.parseKey(t)),n.ok(o.Key.isKey(t,[1,1]),"pubkey must be a sshpk.Key");var r=u(e.algorithm);if("hmac"===r[0]||r[0]!==t.type)return!1;var a=t.createVerify(r[1]);return a.update(e.signingString),a.verify(e.params.signature,"base64")},verifyHMAC:function(e,t){n.object(e,"parsedHMAC"),n.string(t,"secret");var r=u(e.algorithm);if("hmac"!==r[0])return!1;var o=r[1].toUpperCase(),s=a.createHmac(o,t);s.update(e.signingString);var c=a.createHmac(o,t);c.update(s.digest()),c=c.digest();var l=a.createHmac(o,t);return l.update(new i(e.params.signature,"base64")),l=l.digest(),"string"==typeof c?c===l:i.isBuffer(c)&&!c.equals?c.toString("binary")===l.toString("binary"):c.equals(l)}}},79267:(e,t,r)=>{var i=r(8501),n=r(8575),a=e.exports;for(var o in i)i.hasOwnProperty(o)&&(a[o]=i[o]);function s(e){if("string"==typeof e&&(e=n.parse(e)),e.protocol||(e.protocol="https:"),"https:"!==e.protocol)throw new Error('Protocol "'+e.protocol+'" not supported. Expected "https:"');return e}a.request=function(e,t){return e=s(e),i.request.call(this,e,t)},a.get=function(e,t){return e=s(e),i.get.call(this,e,t)}},80645:(e,t)=>{t.read=function(e,t,r,i,n){var a,o,s=8*n-i-1,u=(1<>1,l=-7,h=r?n-1:0,p=r?-1:1,d=e[t+h];for(h+=p,a=d&(1<<-l)-1,d>>=-l,l+=s;l>0;a=256*a+e[t+h],h+=p,l-=8);for(o=a&(1<<-l)-1,a>>=-l,l+=i;l>0;o=256*o+e[t+h],h+=p,l-=8);if(0===a)a=1-c;else{if(a===u)return o?NaN:1/0*(d?-1:1);o+=Math.pow(2,i),a-=c}return(d?-1:1)*o*Math.pow(2,a-i)},t.write=function(e,t,r,i,n,a){var o,s,u,c=8*a-n-1,l=(1<>1,p=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,d=i?0:a-1,f=i?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-o))<1&&(o--,u*=2),(t+=o+h>=1?p/u:p*Math.pow(2,1-h))*u>=2&&(o++,u/=2),o+h>=l?(s=0,o=l):o+h>=1?(s=(t*u-1)*Math.pow(2,n),o+=h):(s=t*Math.pow(2,h-1)*Math.pow(2,n),o=0));n>=8;e[r+d]=255&s,d+=f,s/=256,n-=8);for(o=o<0;e[r+d]=255&o,d+=f,o/=256,c-=8);e[r+d-f]|=128*m}},35717:e=>{"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}},82584:(e,t,r)=>{"use strict";var i=r(96410)(),n=r(21924)("Object.prototype.toString"),a=function(e){return!(i&&e&&"object"==typeof e&&Symbol.toStringTag in e)&&"[object Arguments]"===n(e)},o=function(e){return!!a(e)||null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Array]"!==n(e)&&"[object Function]"===n(e.callee)},s=function(){return a(arguments)}();a.isLegacyArguments=o,e.exports=s?a:o},95320:e=>{"use strict";var t,r,i=Function.prototype.toString,n="object"==typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"==typeof n&&"function"==typeof Object.defineProperty)try{t=Object.defineProperty({},"length",{get:function(){throw r}}),r={},n((function(){throw 42}),null,t)}catch(e){e!==r&&(n=null)}else n=null;var a=/^\s*class\b/,o=function(e){try{var t=i.call(e);return a.test(t)}catch(e){return!1}},s=Object.prototype.toString,u="function"==typeof Symbol&&!!Symbol.toStringTag,c="object"==typeof document&&void 0===document.all&&void 0!==document.all?document.all:{};e.exports=n?function(e){if(e===c)return!0;if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;if("function"==typeof e&&!e.prototype)return!0;try{n(e,null,t)}catch(e){if(e!==r)return!1}return!o(e)}:function(e){if(e===c)return!0;if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;if("function"==typeof e&&!e.prototype)return!0;if(u)return function(e){try{return!o(e)&&(i.call(e),!0)}catch(e){return!1}}(e);if(o(e))return!1;var t=s.call(e);return"[object Function]"===t||"[object GeneratorFunction]"===t}},48662:(e,t,r)=>{"use strict";var i,n=Object.prototype.toString,a=Function.prototype.toString,o=/^\s*(?:function)?\*/,s=r(96410)(),u=Object.getPrototypeOf;e.exports=function(e){if("function"!=typeof e)return!1;if(o.test(a.call(e)))return!0;if(!s)return"[object GeneratorFunction]"===n.call(e);if(!u)return!1;if(void 0===i){var t=function(){if(!s)return!1;try{return Function("return function*() {}")()}catch(e){}}();i=!!t&&u(t)}return u(e)===i}},98611:e=>{"use strict";e.exports=function(e){return e!=e}},20360:(e,t,r)=>{"use strict";var i=r(55559),n=r(4289),a=r(98611),o=r(29415),s=r(23194),u=i(o(),Number);n(u,{getPolyfill:o,implementation:a,shim:s}),e.exports=u},29415:(e,t,r)=>{"use strict";var i=r(98611);e.exports=function(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:i}},23194:(e,t,r)=>{"use strict";var i=r(4289),n=r(29415);e.exports=function(){var e=n();return i(Number,{isNaN:e},{isNaN:function(){return Number.isNaN!==e}}),e}},85692:(e,t,r)=>{"use strict";var i=r(94029),n=r(63083),a=r(21924),o=a("Object.prototype.toString"),s=r(96410)(),u="undefined"==typeof globalThis?r.g:globalThis,c=n(),l=a("Array.prototype.indexOf",!0)||function(e,t){for(var r=0;r-1}return!!d&&function(e){var t=!1;return i(p,(function(r,i){if(!t)try{t=r.call(e)===i}catch(e){}})),t}(e)}},4501:e=>{e.exports=i,i.strict=n,i.loose=a;var t=Object.prototype.toString,r={"[object Int8Array]":!0,"[object Int16Array]":!0,"[object Int32Array]":!0,"[object Uint8Array]":!0,"[object Uint8ClampedArray]":!0,"[object Uint16Array]":!0,"[object Uint32Array]":!0,"[object Float32Array]":!0,"[object Float64Array]":!0};function i(e){return n(e)||a(e)}function n(e){return e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Uint16Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array}function a(e){return r[t.call(e)]}},97356:(e,t,r)=>{var i=r(42830);function n(e){return e instanceof i.Stream}function a(e){return n(e)&&"function"==typeof e._read&&"object"==typeof e._readableState}function o(e){return n(e)&&"function"==typeof e._write&&"object"==typeof e._writableState}e.exports=n,e.exports.isReadable=a,e.exports.isWritable=o,e.exports.isDuplex=function(e){return a(e)&&o(e)}},36077:function(e,t){(function(){var t;function r(e,t,r){null!=e&&("number"==typeof e?this.fromNumber(e,t,r):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function i(){return new r(null)}var n="undefined"!=typeof navigator;n&&"Microsoft Internet Explorer"==navigator.appName?(r.prototype.am=function(e,t,r,i,n,a){for(var o=32767&t,s=t>>15;--a>=0;){var u=32767&this[e],c=this[e++]>>15,l=s*u+c*o;n=((u=o*u+((32767&l)<<15)+r[i]+(1073741823&n))>>>30)+(l>>>15)+s*c+(n>>>30),r[i++]=1073741823&u}return n},t=30):n&&"Netscape"!=navigator.appName?(r.prototype.am=function(e,t,r,i,n,a){for(;--a>=0;){var o=t*this[e++]+r[i]+n;n=Math.floor(o/67108864),r[i++]=67108863&o}return n},t=26):(r.prototype.am=function(e,t,r,i,n,a){for(var o=16383&t,s=t>>14;--a>=0;){var u=16383&this[e],c=this[e++]>>14,l=s*u+c*o;n=((u=o*u+((16383&l)<<14)+r[i]+n)>>28)+(l>>14)+s*c,r[i++]=268435455&u}return n},t=28),r.prototype.DB=t,r.prototype.DM=(1<>>16)&&(e=t,r+=16),0!=(t=e>>8)&&(e=t,r+=8),0!=(t=e>>4)&&(e=t,r+=4),0!=(t=e>>2)&&(e=t,r+=2),0!=(t=e>>1)&&(e=t,r+=1),r}function p(e){this.m=e}function d(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function _(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function b(){}function w(e){return e}function E(e){this.r2=i(),this.q3=i(),r.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}p.prototype.convert=function(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e},p.prototype.revert=function(e){return e},p.prototype.reduce=function(e){e.divRemTo(this.m,null,e)},p.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},p.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},d.prototype.convert=function(e){var t=i();return e.abs().dlShiftTo(this.m.t,t),t.divRemTo(this.m,null,t),e.s<0&&t.compareTo(r.ZERO)>0&&this.m.subTo(t,t),t},d.prototype.revert=function(e){var t=i();return e.copyTo(t),this.reduce(t),t},d.prototype.reduce=function(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t>15)*this.mpl&this.um)<<15)&e.DM;for(e[r=t+this.m.t]+=this.m.am(0,i,e,t,0,this.m.t);e[r]>=e.DV;)e[r]-=e.DV,e[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)},d.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},d.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},r.prototype.copyTo=function(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s},r.prototype.fromInt=function(e){this.t=1,this.s=e<0?-1:0,e>0?this[0]=e:e<-1?this[0]=e+this.DV:this.t=0},r.prototype.fromString=function(e,t){var i;if(16==t)i=4;else if(8==t)i=3;else if(256==t)i=8;else if(2==t)i=1;else if(32==t)i=5;else{if(4!=t)return void this.fromRadix(e,t);i=2}this.t=0,this.s=0;for(var n=e.length,a=!1,o=0;--n>=0;){var s=8==i?255&e[n]:c(e,n);s<0?"-"==e.charAt(n)&&(a=!0):(a=!1,0==o?this[this.t++]=s:o+i>this.DB?(this[this.t-1]|=(s&(1<>this.DB-o):this[this.t-1]|=s<=this.DB&&(o-=this.DB))}8==i&&0!=(128&e[0])&&(this.s=-1,o>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==e;)--this.t},r.prototype.dlShiftTo=function(e,t){var r;for(r=this.t-1;r>=0;--r)t[r+e]=this[r];for(r=e-1;r>=0;--r)t[r]=0;t.t=this.t+e,t.s=this.s},r.prototype.drShiftTo=function(e,t){for(var r=e;r=0;--r)t[r+o+1]=this[r]>>n|s,s=(this[r]&a)<=0;--r)t[r]=0;t[o]=s,t.t=this.t+o+1,t.s=this.s,t.clamp()},r.prototype.rShiftTo=function(e,t){t.s=this.s;var r=Math.floor(e/this.DB);if(r>=this.t)t.t=0;else{var i=e%this.DB,n=this.DB-i,a=(1<>i;for(var o=r+1;o>i;i>0&&(t[this.t-r-1]|=(this.s&a)<>=this.DB;if(e.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i-=e.s}t.s=i<0?-1:0,i<-1?t[r++]=this.DV+i:i>0&&(t[r++]=i),t.t=r,t.clamp()},r.prototype.multiplyTo=function(e,t){var i=this.abs(),n=e.abs(),a=i.t;for(t.t=a+n.t;--a>=0;)t[a]=0;for(a=0;a=0;)e[r]=0;for(r=0;r=t.DV&&(e[r+t.t]-=t.DV,e[r+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(r,t[r],e,2*r,0,1)),e.s=0,e.clamp()},r.prototype.divRemTo=function(e,t,n){var a=e.abs();if(!(a.t<=0)){var o=this.abs();if(o.t0?(a.lShiftTo(l,s),o.lShiftTo(l,n)):(a.copyTo(s),o.copyTo(n));var p=s.t,d=s[p-1];if(0!=d){var f=d*(1<1?s[p-2]>>this.F2:0),m=this.FV/f,g=(1<=0&&(n[n.t++]=1,n.subTo(b,n)),r.ONE.dlShiftTo(p,b),b.subTo(s,s);s.t=0;){var w=n[--y]==d?this.DM:Math.floor(n[y]*m+(n[y-1]+v)*g);if((n[y]+=s.am(0,w,n,_,0,p))0&&n.rShiftTo(l,n),u<0&&r.ZERO.subTo(n,n)}}},r.prototype.invDigit=function(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return(t=(t=(t=(t=t*(2-(15&e)*t)&15)*(2-(255&e)*t)&255)*(2-((65535&e)*t&65535))&65535)*(2-e*t%this.DV)%this.DV)>0?this.DV-t:-t},r.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},r.prototype.exp=function(e,t){if(e>4294967295||e<1)return r.ONE;var n=i(),a=i(),o=t.convert(this),s=h(e)-1;for(o.copyTo(n);--s>=0;)if(t.sqrTo(n,a),(e&1<0)t.mulTo(a,o,n);else{var u=n;n=a,a=u}return t.revert(n)},r.prototype.toString=function(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var r,i=(1<0)for(s>s)>0&&(n=!0,a=u(r));o>=0;)s>(s+=this.DB-t)):(r=this[o]>>(s-=t)&i,s<=0&&(s+=this.DB,--o)),r>0&&(n=!0),n&&(a+=u(r));return n?a:"0"},r.prototype.negate=function(){var e=i();return r.ZERO.subTo(this,e),e},r.prototype.abs=function(){return this.s<0?this.negate():this},r.prototype.compareTo=function(e){var t=this.s-e.s;if(0!=t)return t;var r=this.t;if(0!=(t=r-e.t))return this.s<0?-t:t;for(;--r>=0;)if(0!=(t=this[r]-e[r]))return t;return 0},r.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+h(this[this.t-1]^this.s&this.DM)},r.prototype.mod=function(e){var t=i();return this.abs().divRemTo(e,null,t),this.s<0&&t.compareTo(r.ZERO)>0&&e.subTo(t,t),t},r.prototype.modPowInt=function(e,t){var r;return r=e<256||t.isEven()?new p(t):new d(t),this.exp(e,r)},r.ZERO=l(0),r.ONE=l(1),b.prototype.convert=w,b.prototype.revert=w,b.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},b.prototype.sqrTo=function(e,t){e.squareTo(t)},E.prototype.convert=function(e){if(e.s<0||e.t>2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=i();return e.copyTo(t),this.reduce(t),t},E.prototype.revert=function(e){return e},E.prototype.reduce=function(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)},E.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},E.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)};var k,S,x,j=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],N=(1<<26)/j[j.length-1];function M(){var e;e=(new Date).getTime(),S[x++]^=255&e,S[x++]^=e>>8&255,S[x++]^=e>>16&255,S[x++]^=e>>24&255,x>=B&&(x-=B)}if(r.prototype.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))},r.prototype.toRadix=function(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),r=Math.pow(e,t),n=l(r),a=i(),o=i(),s="";for(this.divRemTo(n,a,o);a.signum()>0;)s=(r+o.intValue()).toString(e).substr(1)+s,a.divRemTo(n,a,o);return o.intValue().toString(e)+s},r.prototype.fromRadix=function(e,t){this.fromInt(0),null==t&&(t=10);for(var i=this.chunkSize(t),n=Math.pow(t,i),a=!1,o=0,s=0,u=0;u=i&&(this.dMultiply(n),this.dAddOffset(s,0),o=0,s=0))}o>0&&(this.dMultiply(Math.pow(t,o)),this.dAddOffset(s,0)),a&&r.ZERO.subTo(this,this)},r.prototype.fromNumber=function(e,t,i){if("number"==typeof t)if(e<2)this.fromInt(1);else for(this.fromNumber(e,i),this.testBit(e-1)||this.bitwiseTo(r.ONE.shiftLeft(e-1),m,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(t);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(r.ONE.shiftLeft(e-1),this);else{var n=new Array,a=7&e;n.length=1+(e>>3),t.nextBytes(n),a>0?n[0]&=(1<>=this.DB;if(e.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i+=e.s}t.s=i<0?-1:0,i>0?t[r++]=i:i<-1&&(t[r++]=this.DV+i),t.t=r,t.clamp()},r.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},r.prototype.dAddOffset=function(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}},r.prototype.multiplyLowerTo=function(e,t,r){var i,n=Math.min(this.t+e.t,t);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n=0;)r[i]=0;for(i=Math.max(t-this.t,0);i0)if(0==t)r=this[0]%e;else for(var i=this.t-1;i>=0;--i)r=(t*r+this[i])%e;return r},r.prototype.millerRabin=function(e){var t=this.subtract(r.ONE),n=t.getLowestSetBit();if(n<=0)return!1;var a=t.shiftRight(n);(e=e+1>>1)>j.length&&(e=j.length);for(var o=i(),s=0;s>24},r.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},r.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},r.prototype.toByteArray=function(){var e=this.t,t=new Array;t[0]=this.s;var r,i=this.DB-e*this.DB%8,n=0;if(e-- >0)for(i>i)!=(this.s&this.DM)>>i&&(t[n++]=r|this.s<=0;)i<8?(r=(this[e]&(1<>(i+=this.DB-8)):(r=this[e]>>(i-=8)&255,i<=0&&(i+=this.DB,--e)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(t[n++]=r);return t},r.prototype.equals=function(e){return 0==this.compareTo(e)},r.prototype.min=function(e){return this.compareTo(e)<0?this:e},r.prototype.max=function(e){return this.compareTo(e)>0?this:e},r.prototype.and=function(e){var t=i();return this.bitwiseTo(e,f,t),t},r.prototype.or=function(e){var t=i();return this.bitwiseTo(e,m,t),t},r.prototype.xor=function(e){var t=i();return this.bitwiseTo(e,g,t),t},r.prototype.andNot=function(e){var t=i();return this.bitwiseTo(e,v,t),t},r.prototype.not=function(){for(var e=i(),t=0;t=this.t?0!=this.s:0!=(this[t]&1<1){var m=i();for(n.sqrTo(s[1],m);u<=f;)s[u]=i(),n.mulTo(m,s[u-2],s[u]),u+=2}var g,v,y=e.t-1,_=!0,b=i();for(a=h(e[y])-1;y>=0;){for(a>=c?g=e[y]>>a-c&f:(g=(e[y]&(1<0&&(g|=e[y-1]>>this.DB+a-c)),u=r;0==(1&g);)g>>=1,--u;if((a-=u)<0&&(a+=this.DB,--y),_)s[g].copyTo(o),_=!1;else{for(;u>1;)n.sqrTo(o,b),n.sqrTo(b,o),u-=2;u>0?n.sqrTo(o,b):(v=o,o=b,b=v),n.mulTo(b,s[g],o)}for(;y>=0&&0==(e[y]&1<=0?(i.subTo(n,i),t&&a.subTo(s,a),o.subTo(u,o)):(n.subTo(i,n),t&&s.subTo(a,s),u.subTo(o,u))}return 0!=n.compareTo(r.ONE)?r.ZERO:u.compareTo(e)>=0?u.subtract(e):u.signum()<0?(u.addTo(e,u),u.signum()<0?u.add(e):u):u},r.prototype.pow=function(e){return this.exp(e,new b)},r.prototype.gcd=function(e){var t=this.s<0?this.negate():this.clone(),r=e.s<0?e.negate():e.clone();if(t.compareTo(r)<0){var i=t;t=r,r=i}var n=t.getLowestSetBit(),a=r.getLowestSetBit();if(a<0)return t;for(n0&&(t.rShiftTo(a,t),r.rShiftTo(a,r));t.signum()>0;)(n=t.getLowestSetBit())>0&&t.rShiftTo(n,t),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),t.compareTo(r)>=0?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return a>0&&r.lShiftTo(a,r),r},r.prototype.isProbablePrime=function(e){var t,r=this.abs();if(1==r.t&&r[0]<=j[j.length-1]){for(t=0;t>>8,S[x++]=255&I;x=0,M()}function R(){if(null==k){for(M(),(k=new O).init(S),x=0;x{"use strict";var t=e.exports=function(e,t,i){"function"==typeof t&&(i=t,t={}),r(t,"function"==typeof(i=t.cb||i)?i:i.pre||function(){},i.post||function(){},e,"",e)};function r(e,i,n,a,o,s,u,c,l,h){if(a&&"object"==typeof a&&!Array.isArray(a)){for(var p in i(a,o,s,u,c,l,h),a){var d=a[p];if(Array.isArray(d)){if(p in t.arrayKeywords)for(var f=0;ft.maxItems&&l("There must be a maximum of "+t.maxItems+" in the array")}else(t.properties||t.additionalProperties)&&o.concat(function(e,t,r,a){if("object"==typeof t)for(var u in("object"!=typeof e||e instanceof Array)&&o.push({property:r,message:"an object is required"}),t)if(t.hasOwnProperty(u)&&"__proto__"!=u&&"constructor"!=u){var c=e.hasOwnProperty(u)?e[u]:void 0;if(void 0===c&&i.existingOnly)continue;var l=t[u];void 0===c&&l.default&&(c=e[u]=l.default),i.coerce&&u in e&&(c=e[u]=i.coerce(c,l)),s(c,l,r,u)}for(u in e){if(e.hasOwnProperty(u)&&("_"!=u.charAt(0)||"_"!=u.charAt(1))&&t&&!t[u]&&!1===a){if(i.filter){delete e[u];continue}o.push({property:r,message:"The property "+u+" is not defined in the schema and the schema does not allow additional properties"})}var h=t&&t[u]&&t[u].requires;h&&!(h in e)&&o.push({property:r,message:"the presence of the property "+u+" requires that "+h+" also be present"}),c=e[u],!a||t&&"object"==typeof t&&u in t||(i.coerce&&(c=e[u]=i.coerce(c,a)),s(c,a,r,u)),!n&&c&&c.$schema&&(o=o.concat(s(c,c.$schema,r,u)))}return o}(e,t.properties,r,t.additionalProperties));if(t.pattern&&"string"==typeof e&&!e.match(t.pattern)&&l("does not match the regex pattern "+t.pattern),t.maxLength&&"string"==typeof e&&e.length>t.maxLength&&l("may only be "+t.maxLength+" characters long"),t.minLength&&"string"==typeof e&&e.lengthe&&l("must have a minimum value of "+t.minimum),void 0!==t.maximum&&typeof e==typeof t.maximum&&t.maximum{function r(e,t){var r=[],i=[];return null==t&&(t=function(e,t){return r[0]===t?"[Circular ~]":"[Circular ~."+i.slice(0,r.indexOf(t)).join(".")+"]"}),function(n,a){if(r.length>0){var o=r.indexOf(this);~o?r.splice(o+1):r.push(this),~o?i.splice(o,1/0,n):i.push(n),~r.indexOf(a)&&(a=t.call(this,n,a))}else r.push(a);return null==e?a:e.call(this,n,a)}}(e.exports=function(e,t,i,n){return JSON.stringify(e,r(t,n),i)}).getSerialize=r},37954:(e,t,r)=>{var i=r(6144),n=(r(89539),r(29031)),a=r(43552),o=r(19856);function s(e,t){return i.equal(typeof t,"string"),Object.prototype.hasOwnProperty.call(e,t)}function u(e,t){if(null!==e&&"object"==typeof e){if(e.hasOwnProperty(t))return e[t];var r=t.indexOf(".");if(-1!=r){var i=t.substr(0,r);if(e.hasOwnProperty(i))return u(e[i],t.substr(r+1))}}}function c(e,t,r,n){var a,o;if(0===t)return(a=r.slice(0)).push(e),void n(a);for(o in i.ok(null!==e),i.equal(typeof e,"object"),i.equal(typeof t,"number"),i.ok(t>=0),e)(a=r.slice(0)).push(o),c(e[o],t-1,a,n)}t.deepCopy=function e(t){var r,i,n="__deepCopy";if(t&&t[n])throw new Error("attempted deep copy of cyclic object");if(t&&t.constructor==Object){for(i in r={},t[n]=!0,t)i!=n&&(r[i]=e(t[i]));return delete t[n],r}if(t&&t.constructor==Array){for(r=[],t[n]=!0,i=0;i=0);var n,a=[];for(n in t)e(t[n],r-1).forEach((function(e){a.push([n].concat(e))}));return a},t.flattenIter=function(e,t,r){c(e,t,[],r)},t.validateJsonObject=g,t.validateJsonObjectJS=g,t.randElt=function(e){return i.ok(Array.isArray(e)&&e.length>0,"randElt argument must be a non-empty array"),e[Math.floor(Math.random()*e.length)]},t.extraProperties=function(e,t){i.ok("object"==typeof e&&null!==e,"obj argument must be a non-null object"),i.ok(Array.isArray(t),"allowed argument must be an array of strings");for(var r=0;r=2,"options.base >= 2"),i.ok(a.base<=36,"options.base <= 36"),i.bool(a.allowSign,"options.allowSign"),i.bool(a.allowPrefix,"options.allowPrefix"),i.bool(a.allowTrailing,"options.allowTrailing"),i.bool(a.allowImprecise,"options.allowImprecise"),i.bool(a.trimWhitespace,"options.trimWhitespace"),i.bool(a.leadingZeroIsOctal,"options.leadingZeroIsOctal"),a.leadingZeroIsOctal&&i.ok(!n,'"base" and "leadingZeroIsOctal" are mutually exclusive'));var o,u,c=-1,l=a.base,h=1,g=0,v=0,y=e.length;if(a.trimWhitespace)for(;v=48&&u<=57?u-48:u>=65&&u<=90?u-55:u>=97&&u<=122?u-87:-1)&&rp||_=9&&e<=13||160===e||5760===e||6158===e||e>=8192&&e<=8202||8232===e||8233===e||8239===e||8287===e||12288===e||65279===e}function g(e,t){var r=o.validate(t,e);if(0===r.errors.length)return null;var i,n,s=r.errors[0],u=s.property,c=s.message.toLowerCase();-1!=(i=c.indexOf("the property "))&&-1!=(n=c.indexOf(" is not defined in the schema and the schema does not allow additional properties"))&&(i+="the property ".length,u=""===u?c.substr(i,n-i):u+"."+c.substr(i,n-i),c="unsupported property");var l=new a.VError('property "%s": %s',u,c);return l.jsv_details=s,l}function v(e){i.ok(e[0]>=0&&e[1]>=0,"negative numbers not allowed in hrtimes"),i.ok(e[1]<1e9,"nanoseconds column overflow")}function y(e,t){v(e),v(t),i.ok(e[0]>t[0]||e[0]==t[0]&&e[1]>=t[1],"negative differences not allowed");var r=[e[0]-t[0],0];return e[1]>=t[1]?r[1]=e[1]-t[1]:(r[0]--,r[1]=1e9-(t[1]-e[1])),r}function _(e,t){return v(e),v(t),e[1]+=t[1],e[1]>=1e9&&(e[0]++,e[1]-=1e9),e[0]+=t[0],e}function b(e,t,r){var i,n;if(i={},r)for(n in r)i[n]=r[n];if(e)for(n in e)i[n]=e[n];if(t)for(n in t)i[n]=t[n];return i}},62705:(e,t,r)=>{var i=r(55639).Symbol;e.exports=i},44239:(e,t,r)=>{var i=r(62705),n=r(89607),a=r(2333),o=i?i.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":o&&o in Object(e)?n(e):a(e)}},31957:(e,t,r)=>{var i="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g;e.exports=i},89607:(e,t,r)=>{var i=r(62705),n=Object.prototype,a=n.hasOwnProperty,o=n.toString,s=i?i.toStringTag:void 0;e.exports=function(e){var t=a.call(e,s),r=e[s];try{e[s]=void 0;var i=!0}catch(e){}var n=o.call(e);return i&&(t?e[s]=r:delete e[s]),n}},2333:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},55639:(e,t,r)=>{var i=r(31957),n="object"==typeof self&&self&&self.Object===Object&&self,a=i||n||Function("return this")();e.exports=a},1469:e=>{var t=Array.isArray;e.exports=t},23560:(e,t,r)=>{var i=r(44239),n=r(13218);e.exports=function(e){if(!n(e))return!1;var t=i(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},13218:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},37005:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},47037:(e,t,r)=>{var i=r(44239),n=r(1469),a=r(37005);e.exports=function(e){return"string"==typeof e||!n(e)&&a(e)&&"[object String]"==i(e)}},52353:e=>{e.exports=function(e){return void 0===e}},62318:(e,t,r)=>{"use strict";var i=r(35717),n=r(3349),a=r(89509).Buffer,o=new Array(16);function s(){n.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function u(e,t){return e<>>32-t}function c(e,t,r,i,n,a,o){return u(e+(t&r|~t&i)+n+a|0,o)+t|0}function l(e,t,r,i,n,a,o){return u(e+(t&i|r&~i)+n+a|0,o)+t|0}function h(e,t,r,i,n,a,o){return u(e+(t^r^i)+n+a|0,o)+t|0}function p(e,t,r,i,n,a,o){return u(e+(r^(t|~i))+n+a|0,o)+t|0}i(s,n),s.prototype._update=function(){for(var e=o,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,i=this._b,n=this._c,a=this._d;r=c(r,i,n,a,e[0],3614090360,7),a=c(a,r,i,n,e[1],3905402710,12),n=c(n,a,r,i,e[2],606105819,17),i=c(i,n,a,r,e[3],3250441966,22),r=c(r,i,n,a,e[4],4118548399,7),a=c(a,r,i,n,e[5],1200080426,12),n=c(n,a,r,i,e[6],2821735955,17),i=c(i,n,a,r,e[7],4249261313,22),r=c(r,i,n,a,e[8],1770035416,7),a=c(a,r,i,n,e[9],2336552879,12),n=c(n,a,r,i,e[10],4294925233,17),i=c(i,n,a,r,e[11],2304563134,22),r=c(r,i,n,a,e[12],1804603682,7),a=c(a,r,i,n,e[13],4254626195,12),n=c(n,a,r,i,e[14],2792965006,17),r=l(r,i=c(i,n,a,r,e[15],1236535329,22),n,a,e[1],4129170786,5),a=l(a,r,i,n,e[6],3225465664,9),n=l(n,a,r,i,e[11],643717713,14),i=l(i,n,a,r,e[0],3921069994,20),r=l(r,i,n,a,e[5],3593408605,5),a=l(a,r,i,n,e[10],38016083,9),n=l(n,a,r,i,e[15],3634488961,14),i=l(i,n,a,r,e[4],3889429448,20),r=l(r,i,n,a,e[9],568446438,5),a=l(a,r,i,n,e[14],3275163606,9),n=l(n,a,r,i,e[3],4107603335,14),i=l(i,n,a,r,e[8],1163531501,20),r=l(r,i,n,a,e[13],2850285829,5),a=l(a,r,i,n,e[2],4243563512,9),n=l(n,a,r,i,e[7],1735328473,14),r=h(r,i=l(i,n,a,r,e[12],2368359562,20),n,a,e[5],4294588738,4),a=h(a,r,i,n,e[8],2272392833,11),n=h(n,a,r,i,e[11],1839030562,16),i=h(i,n,a,r,e[14],4259657740,23),r=h(r,i,n,a,e[1],2763975236,4),a=h(a,r,i,n,e[4],1272893353,11),n=h(n,a,r,i,e[7],4139469664,16),i=h(i,n,a,r,e[10],3200236656,23),r=h(r,i,n,a,e[13],681279174,4),a=h(a,r,i,n,e[0],3936430074,11),n=h(n,a,r,i,e[3],3572445317,16),i=h(i,n,a,r,e[6],76029189,23),r=h(r,i,n,a,e[9],3654602809,4),a=h(a,r,i,n,e[12],3873151461,11),n=h(n,a,r,i,e[15],530742520,16),r=p(r,i=h(i,n,a,r,e[2],3299628645,23),n,a,e[0],4096336452,6),a=p(a,r,i,n,e[7],1126891415,10),n=p(n,a,r,i,e[14],2878612391,15),i=p(i,n,a,r,e[5],4237533241,21),r=p(r,i,n,a,e[12],1700485571,6),a=p(a,r,i,n,e[3],2399980690,10),n=p(n,a,r,i,e[10],4293915773,15),i=p(i,n,a,r,e[1],2240044497,21),r=p(r,i,n,a,e[8],1873313359,6),a=p(a,r,i,n,e[15],4264355552,10),n=p(n,a,r,i,e[6],2734768916,15),i=p(i,n,a,r,e[13],1309151649,21),r=p(r,i,n,a,e[4],4149444226,6),a=p(a,r,i,n,e[11],3174756917,10),n=p(n,a,r,i,e[2],718787259,15),i=p(i,n,a,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+i|0,this._c=this._c+n|0,this._d=this._d+a|0},s.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=a.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e},e.exports=s},63047:(e,t,r)=>{var i=r(96240),n=r(29931);function a(e){this.rand=e||new n.Rand}e.exports=a,a.create=function(e){return new a(e)},a.prototype._randbelow=function(e){var t=e.bitLength(),r=Math.ceil(t/8);do{var n=new i(this.rand.generate(r))}while(n.cmp(e)>=0);return n},a.prototype._randrange=function(e,t){var r=t.sub(e);return e.add(this._randbelow(r))},a.prototype.test=function(e,t,r){var n=e.bitLength(),a=i.mont(e),o=new i(1).toRed(a);t||(t=Math.max(1,n/48|0));for(var s=e.subn(1),u=0;!s.testn(u);u++);for(var c=e.shrn(u),l=s.toRed(a);t>0;t--){var h=this._randrange(new i(2),s);r&&r(h);var p=h.toRed(a).redPow(c);if(0!==p.cmp(o)&&0!==p.cmp(l)){for(var d=1;d0;t--){var l=this._randrange(new i(2),o),h=e.gcd(l);if(0!==h.cmpn(1))return h;var p=l.toRed(n).redPow(u);if(0!==p.cmp(a)&&0!==p.cmp(c)){for(var d=1;d=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function u(e,t,r){var i=s(e,r);return r-1>=t&&(i|=s(e,r-1)<<4),i}function c(e,t,r,i){for(var n=0,a=Math.min(e.length,r),o=t;o=49?s-49+10:s>=17?s-17+10:s}return n}a.isBN=function(e){return e instanceof a||null!==e&&"object"==typeof e&&e.constructor.wordSize===a.wordSize&&Array.isArray(e.words)},a.max=function(e,t){return e.cmp(t)>0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)o=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)n=u(e,t,i)<=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;this.strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,o=a%i,s=Math.min(a,a-o)+r,u=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],o=n*a,s=67108863&o,u=o/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&u,p=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=p;d++){var f=c-d|0;l+=(o=(n=0|e.words[f])*(a=0|t.words[d])+h)/67108864|0,h=67108863&o}r.words[c]=0|h,u=0|l}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}a.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,a=0,o=0;o>>24-n&16777215)||o!==this.length-1?l[6-u.length]+u+r:u+r,(n+=2)>=26&&(n-=26,o--)}for(0!==a&&(r=a.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var c=h[e],d=p[e];r="";var f=this.clone();for(f.negative=0;!f.isZero();){var m=f.modn(d).toString(e);r=(f=f.idivn(d)).isZero()?m+r:l[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(e,t){return i(void 0!==o),this.toArrayLike(o,e,t)},a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},a.prototype.toArrayLike=function(e,t,r){var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0"),this.strip();var o,s,u="le"===t,c=new e(a),l=this.clone();if(u){for(s=0;!l.isZero();s++)o=l.andln(255),l.iushrn(8),c[s]=o;for(;s=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==a&&o>26,this.words[o]=67108863&t;if(0===a&&o>>13,d=0|o[1],f=8191&d,m=d>>>13,g=0|o[2],v=8191&g,y=g>>>13,_=0|o[3],b=8191&_,w=_>>>13,E=0|o[4],k=8191&E,S=E>>>13,x=0|o[5],j=8191&x,N=x>>>13,M=0|o[6],I=8191&M,A=M>>>13,T=0|o[7],R=8191&T,P=T>>>13,O=0|o[8],B=8191&O,C=O>>>13,z=0|o[9],F=8191&z,D=z>>>13,q=0|s[0],L=8191&q,U=q>>>13,H=0|s[1],K=8191&H,W=H>>>13,Z=0|s[2],J=8191&Z,V=Z>>>13,$=0|s[3],G=8191&$,Q=$>>>13,X=0|s[4],Y=8191&X,ee=X>>>13,te=0|s[5],re=8191&te,ie=te>>>13,ne=0|s[6],ae=8191&ne,oe=ne>>>13,se=0|s[7],ue=8191&se,ce=se>>>13,le=0|s[8],he=8191&le,pe=le>>>13,de=0|s[9],fe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ge=(c+(i=Math.imul(h,L))|0)+((8191&(n=(n=Math.imul(h,U))+Math.imul(p,L)|0))<<13)|0;c=((a=Math.imul(p,U))+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(f,L),n=(n=Math.imul(f,U))+Math.imul(m,L)|0,a=Math.imul(m,U);var ve=(c+(i=i+Math.imul(h,K)|0)|0)+((8191&(n=(n=n+Math.imul(h,W)|0)+Math.imul(p,K)|0))<<13)|0;c=((a=a+Math.imul(p,W)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(v,L),n=(n=Math.imul(v,U))+Math.imul(y,L)|0,a=Math.imul(y,U),i=i+Math.imul(f,K)|0,n=(n=n+Math.imul(f,W)|0)+Math.imul(m,K)|0,a=a+Math.imul(m,W)|0;var ye=(c+(i=i+Math.imul(h,J)|0)|0)+((8191&(n=(n=n+Math.imul(h,V)|0)+Math.imul(p,J)|0))<<13)|0;c=((a=a+Math.imul(p,V)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(b,L),n=(n=Math.imul(b,U))+Math.imul(w,L)|0,a=Math.imul(w,U),i=i+Math.imul(v,K)|0,n=(n=n+Math.imul(v,W)|0)+Math.imul(y,K)|0,a=a+Math.imul(y,W)|0,i=i+Math.imul(f,J)|0,n=(n=n+Math.imul(f,V)|0)+Math.imul(m,J)|0,a=a+Math.imul(m,V)|0;var _e=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(n=(n=n+Math.imul(h,Q)|0)+Math.imul(p,G)|0))<<13)|0;c=((a=a+Math.imul(p,Q)|0)+(n>>>13)|0)+(_e>>>26)|0,_e&=67108863,i=Math.imul(k,L),n=(n=Math.imul(k,U))+Math.imul(S,L)|0,a=Math.imul(S,U),i=i+Math.imul(b,K)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(w,K)|0,a=a+Math.imul(w,W)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,V)|0)+Math.imul(y,J)|0,a=a+Math.imul(y,V)|0,i=i+Math.imul(f,G)|0,n=(n=n+Math.imul(f,Q)|0)+Math.imul(m,G)|0,a=a+Math.imul(m,Q)|0;var be=(c+(i=i+Math.imul(h,Y)|0)|0)+((8191&(n=(n=n+Math.imul(h,ee)|0)+Math.imul(p,Y)|0))<<13)|0;c=((a=a+Math.imul(p,ee)|0)+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(j,L),n=(n=Math.imul(j,U))+Math.imul(N,L)|0,a=Math.imul(N,U),i=i+Math.imul(k,K)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(S,K)|0,a=a+Math.imul(S,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,V)|0)+Math.imul(w,J)|0,a=a+Math.imul(w,V)|0,i=i+Math.imul(v,G)|0,n=(n=n+Math.imul(v,Q)|0)+Math.imul(y,G)|0,a=a+Math.imul(y,Q)|0,i=i+Math.imul(f,Y)|0,n=(n=n+Math.imul(f,ee)|0)+Math.imul(m,Y)|0,a=a+Math.imul(m,ee)|0;var we=(c+(i=i+Math.imul(h,re)|0)|0)+((8191&(n=(n=n+Math.imul(h,ie)|0)+Math.imul(p,re)|0))<<13)|0;c=((a=a+Math.imul(p,ie)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(I,L),n=(n=Math.imul(I,U))+Math.imul(A,L)|0,a=Math.imul(A,U),i=i+Math.imul(j,K)|0,n=(n=n+Math.imul(j,W)|0)+Math.imul(N,K)|0,a=a+Math.imul(N,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,V)|0)+Math.imul(S,J)|0,a=a+Math.imul(S,V)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,Q)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,Q)|0,i=i+Math.imul(v,Y)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(y,Y)|0,a=a+Math.imul(y,ee)|0,i=i+Math.imul(f,re)|0,n=(n=n+Math.imul(f,ie)|0)+Math.imul(m,re)|0,a=a+Math.imul(m,ie)|0;var Ee=(c+(i=i+Math.imul(h,ae)|0)|0)+((8191&(n=(n=n+Math.imul(h,oe)|0)+Math.imul(p,ae)|0))<<13)|0;c=((a=a+Math.imul(p,oe)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(R,L),n=(n=Math.imul(R,U))+Math.imul(P,L)|0,a=Math.imul(P,U),i=i+Math.imul(I,K)|0,n=(n=n+Math.imul(I,W)|0)+Math.imul(A,K)|0,a=a+Math.imul(A,W)|0,i=i+Math.imul(j,J)|0,n=(n=n+Math.imul(j,V)|0)+Math.imul(N,J)|0,a=a+Math.imul(N,V)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,Q)|0)+Math.imul(S,G)|0,a=a+Math.imul(S,Q)|0,i=i+Math.imul(b,Y)|0,n=(n=n+Math.imul(b,ee)|0)+Math.imul(w,Y)|0,a=a+Math.imul(w,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(y,re)|0,a=a+Math.imul(y,ie)|0,i=i+Math.imul(f,ae)|0,n=(n=n+Math.imul(f,oe)|0)+Math.imul(m,ae)|0,a=a+Math.imul(m,oe)|0;var ke=(c+(i=i+Math.imul(h,ue)|0)|0)+((8191&(n=(n=n+Math.imul(h,ce)|0)+Math.imul(p,ue)|0))<<13)|0;c=((a=a+Math.imul(p,ce)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(B,L),n=(n=Math.imul(B,U))+Math.imul(C,L)|0,a=Math.imul(C,U),i=i+Math.imul(R,K)|0,n=(n=n+Math.imul(R,W)|0)+Math.imul(P,K)|0,a=a+Math.imul(P,W)|0,i=i+Math.imul(I,J)|0,n=(n=n+Math.imul(I,V)|0)+Math.imul(A,J)|0,a=a+Math.imul(A,V)|0,i=i+Math.imul(j,G)|0,n=(n=n+Math.imul(j,Q)|0)+Math.imul(N,G)|0,a=a+Math.imul(N,Q)|0,i=i+Math.imul(k,Y)|0,n=(n=n+Math.imul(k,ee)|0)+Math.imul(S,Y)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(b,re)|0,n=(n=n+Math.imul(b,ie)|0)+Math.imul(w,re)|0,a=a+Math.imul(w,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,oe)|0)+Math.imul(y,ae)|0,a=a+Math.imul(y,oe)|0,i=i+Math.imul(f,ue)|0,n=(n=n+Math.imul(f,ce)|0)+Math.imul(m,ue)|0,a=a+Math.imul(m,ce)|0;var Se=(c+(i=i+Math.imul(h,he)|0)|0)+((8191&(n=(n=n+Math.imul(h,pe)|0)+Math.imul(p,he)|0))<<13)|0;c=((a=a+Math.imul(p,pe)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(F,L),n=(n=Math.imul(F,U))+Math.imul(D,L)|0,a=Math.imul(D,U),i=i+Math.imul(B,K)|0,n=(n=n+Math.imul(B,W)|0)+Math.imul(C,K)|0,a=a+Math.imul(C,W)|0,i=i+Math.imul(R,J)|0,n=(n=n+Math.imul(R,V)|0)+Math.imul(P,J)|0,a=a+Math.imul(P,V)|0,i=i+Math.imul(I,G)|0,n=(n=n+Math.imul(I,Q)|0)+Math.imul(A,G)|0,a=a+Math.imul(A,Q)|0,i=i+Math.imul(j,Y)|0,n=(n=n+Math.imul(j,ee)|0)+Math.imul(N,Y)|0,a=a+Math.imul(N,ee)|0,i=i+Math.imul(k,re)|0,n=(n=n+Math.imul(k,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(b,ae)|0,n=(n=n+Math.imul(b,oe)|0)+Math.imul(w,ae)|0,a=a+Math.imul(w,oe)|0,i=i+Math.imul(v,ue)|0,n=(n=n+Math.imul(v,ce)|0)+Math.imul(y,ue)|0,a=a+Math.imul(y,ce)|0,i=i+Math.imul(f,he)|0,n=(n=n+Math.imul(f,pe)|0)+Math.imul(m,he)|0,a=a+Math.imul(m,pe)|0;var xe=(c+(i=i+Math.imul(h,fe)|0)|0)+((8191&(n=(n=n+Math.imul(h,me)|0)+Math.imul(p,fe)|0))<<13)|0;c=((a=a+Math.imul(p,me)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(F,K),n=(n=Math.imul(F,W))+Math.imul(D,K)|0,a=Math.imul(D,W),i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,V)|0)+Math.imul(C,J)|0,a=a+Math.imul(C,V)|0,i=i+Math.imul(R,G)|0,n=(n=n+Math.imul(R,Q)|0)+Math.imul(P,G)|0,a=a+Math.imul(P,Q)|0,i=i+Math.imul(I,Y)|0,n=(n=n+Math.imul(I,ee)|0)+Math.imul(A,Y)|0,a=a+Math.imul(A,ee)|0,i=i+Math.imul(j,re)|0,n=(n=n+Math.imul(j,ie)|0)+Math.imul(N,re)|0,a=a+Math.imul(N,ie)|0,i=i+Math.imul(k,ae)|0,n=(n=n+Math.imul(k,oe)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,oe)|0,i=i+Math.imul(b,ue)|0,n=(n=n+Math.imul(b,ce)|0)+Math.imul(w,ue)|0,a=a+Math.imul(w,ce)|0,i=i+Math.imul(v,he)|0,n=(n=n+Math.imul(v,pe)|0)+Math.imul(y,he)|0,a=a+Math.imul(y,pe)|0;var je=(c+(i=i+Math.imul(f,fe)|0)|0)+((8191&(n=(n=n+Math.imul(f,me)|0)+Math.imul(m,fe)|0))<<13)|0;c=((a=a+Math.imul(m,me)|0)+(n>>>13)|0)+(je>>>26)|0,je&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,V))+Math.imul(D,J)|0,a=Math.imul(D,V),i=i+Math.imul(B,G)|0,n=(n=n+Math.imul(B,Q)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,Q)|0,i=i+Math.imul(R,Y)|0,n=(n=n+Math.imul(R,ee)|0)+Math.imul(P,Y)|0,a=a+Math.imul(P,ee)|0,i=i+Math.imul(I,re)|0,n=(n=n+Math.imul(I,ie)|0)+Math.imul(A,re)|0,a=a+Math.imul(A,ie)|0,i=i+Math.imul(j,ae)|0,n=(n=n+Math.imul(j,oe)|0)+Math.imul(N,ae)|0,a=a+Math.imul(N,oe)|0,i=i+Math.imul(k,ue)|0,n=(n=n+Math.imul(k,ce)|0)+Math.imul(S,ue)|0,a=a+Math.imul(S,ce)|0,i=i+Math.imul(b,he)|0,n=(n=n+Math.imul(b,pe)|0)+Math.imul(w,he)|0,a=a+Math.imul(w,pe)|0;var Ne=(c+(i=i+Math.imul(v,fe)|0)|0)+((8191&(n=(n=n+Math.imul(v,me)|0)+Math.imul(y,fe)|0))<<13)|0;c=((a=a+Math.imul(y,me)|0)+(n>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,i=Math.imul(F,G),n=(n=Math.imul(F,Q))+Math.imul(D,G)|0,a=Math.imul(D,Q),i=i+Math.imul(B,Y)|0,n=(n=n+Math.imul(B,ee)|0)+Math.imul(C,Y)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(R,re)|0,n=(n=n+Math.imul(R,ie)|0)+Math.imul(P,re)|0,a=a+Math.imul(P,ie)|0,i=i+Math.imul(I,ae)|0,n=(n=n+Math.imul(I,oe)|0)+Math.imul(A,ae)|0,a=a+Math.imul(A,oe)|0,i=i+Math.imul(j,ue)|0,n=(n=n+Math.imul(j,ce)|0)+Math.imul(N,ue)|0,a=a+Math.imul(N,ce)|0,i=i+Math.imul(k,he)|0,n=(n=n+Math.imul(k,pe)|0)+Math.imul(S,he)|0,a=a+Math.imul(S,pe)|0;var Me=(c+(i=i+Math.imul(b,fe)|0)|0)+((8191&(n=(n=n+Math.imul(b,me)|0)+Math.imul(w,fe)|0))<<13)|0;c=((a=a+Math.imul(w,me)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(F,Y),n=(n=Math.imul(F,ee))+Math.imul(D,Y)|0,a=Math.imul(D,ee),i=i+Math.imul(B,re)|0,n=(n=n+Math.imul(B,ie)|0)+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(R,ae)|0,n=(n=n+Math.imul(R,oe)|0)+Math.imul(P,ae)|0,a=a+Math.imul(P,oe)|0,i=i+Math.imul(I,ue)|0,n=(n=n+Math.imul(I,ce)|0)+Math.imul(A,ue)|0,a=a+Math.imul(A,ce)|0,i=i+Math.imul(j,he)|0,n=(n=n+Math.imul(j,pe)|0)+Math.imul(N,he)|0,a=a+Math.imul(N,pe)|0;var Ie=(c+(i=i+Math.imul(k,fe)|0)|0)+((8191&(n=(n=n+Math.imul(k,me)|0)+Math.imul(S,fe)|0))<<13)|0;c=((a=a+Math.imul(S,me)|0)+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(F,re),n=(n=Math.imul(F,ie))+Math.imul(D,re)|0,a=Math.imul(D,ie),i=i+Math.imul(B,ae)|0,n=(n=n+Math.imul(B,oe)|0)+Math.imul(C,ae)|0,a=a+Math.imul(C,oe)|0,i=i+Math.imul(R,ue)|0,n=(n=n+Math.imul(R,ce)|0)+Math.imul(P,ue)|0,a=a+Math.imul(P,ce)|0,i=i+Math.imul(I,he)|0,n=(n=n+Math.imul(I,pe)|0)+Math.imul(A,he)|0,a=a+Math.imul(A,pe)|0;var Ae=(c+(i=i+Math.imul(j,fe)|0)|0)+((8191&(n=(n=n+Math.imul(j,me)|0)+Math.imul(N,fe)|0))<<13)|0;c=((a=a+Math.imul(N,me)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(F,ae),n=(n=Math.imul(F,oe))+Math.imul(D,ae)|0,a=Math.imul(D,oe),i=i+Math.imul(B,ue)|0,n=(n=n+Math.imul(B,ce)|0)+Math.imul(C,ue)|0,a=a+Math.imul(C,ce)|0,i=i+Math.imul(R,he)|0,n=(n=n+Math.imul(R,pe)|0)+Math.imul(P,he)|0,a=a+Math.imul(P,pe)|0;var Te=(c+(i=i+Math.imul(I,fe)|0)|0)+((8191&(n=(n=n+Math.imul(I,me)|0)+Math.imul(A,fe)|0))<<13)|0;c=((a=a+Math.imul(A,me)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(F,ue),n=(n=Math.imul(F,ce))+Math.imul(D,ue)|0,a=Math.imul(D,ce),i=i+Math.imul(B,he)|0,n=(n=n+Math.imul(B,pe)|0)+Math.imul(C,he)|0,a=a+Math.imul(C,pe)|0;var Re=(c+(i=i+Math.imul(R,fe)|0)|0)+((8191&(n=(n=n+Math.imul(R,me)|0)+Math.imul(P,fe)|0))<<13)|0;c=((a=a+Math.imul(P,me)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(F,he),n=(n=Math.imul(F,pe))+Math.imul(D,he)|0,a=Math.imul(D,pe);var Pe=(c+(i=i+Math.imul(B,fe)|0)|0)+((8191&(n=(n=n+Math.imul(B,me)|0)+Math.imul(C,fe)|0))<<13)|0;c=((a=a+Math.imul(C,me)|0)+(n>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var Oe=(c+(i=Math.imul(F,fe))|0)+((8191&(n=(n=Math.imul(F,me))+Math.imul(D,fe)|0))<<13)|0;return c=((a=Math.imul(D,me))+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ve,u[2]=ye,u[3]=_e,u[4]=be,u[5]=we,u[6]=Ee,u[7]=ke,u[8]=Se,u[9]=xe,u[10]=je,u[11]=Ne,u[12]=Me,u[13]=Ie,u[14]=Ae,u[15]=Te,u[16]=Re,u[17]=Pe,u[18]=Oe,0!==c&&(u[19]=c,r.length++),r};function m(e,t,r){return(new g).mulp(e,t,r)}function g(e,t){this.x=e,this.y=t}Math.imul||(f=d),a.prototype.mulTo=function(e,t){var r,i=this.length+e.length;return r=10===this.length&&10===e.length?f(this,e,t):i<63?d(this,e,t):i<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,i=o,o=n}return 0!==i?r.words[a]=i:r.length--,r.strip()}(this,e,t):m(this,e,t),r},g.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},g.prototype.permute=function(e,t,r,i,n,a){for(var o=0;o>>=1)n++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*t;o>=26,t+=n/67108864|0,t+=a>>>26,this.words[r]=67108863&a}return 0!==t&&(this.words[r]=t,this.length++),this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n}return t}(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,o=Math.min((e-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,c=0;c=0&&(0!==l||c>=n);c--){var h=0|this.words[c];this.words[c]=l<<26-a|h>>>a,l=h&s}return u&&0!==l&&(u.words[u.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===s)return this.strip();for(i(-1===s),s=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,o=0|n.words[n.length-1];0!=(r=26-this._countBits(o))&&(n=n.ushln(r),i.iushln(r),o=0|n.words[n.length-1]);var s,u=i.length-n.length;if("mod"!==t){(s=new a(null)).length=u+1,s.words=new Array(s.length);for(var c=0;c=0;h--){var p=67108864*(0|i.words[n.length+h])+(0|i.words[n.length+h-1]);for(p=Math.min(p/o|0,67108863),i._ishlnsubmul(n,p,h);0!==i.negative;)p--,i.negative=0,i._ishlnsubmul(n,1,h),i.isZero()||(i.negative^=1);s&&(s.words[h]=p)}return s&&s.strip(),i.strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(n=s.div.neg()),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:n,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modn(e.words[0]))}:this._wordDiv(e,t);var n,o,s},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modn=function(e){i(e<=67108863);for(var t=(1<<26)%e,r=0,n=this.length-1;n>=0;n--)r=(t*r+(0|this.words[n]))%e;return r},a.prototype.idivn=function(e){i(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*t;this.words[r]=n/e|0,t=n%e}return this.strip()},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new a(1),o=new a(0),s=new a(0),u=new a(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var l=r.clone(),h=t.clone();!t.isZero();){for(var p=0,d=1;0==(t.words[0]&d)&&p<26;++p,d<<=1);if(p>0)for(t.iushrn(p);p-- >0;)(n.isOdd()||o.isOdd())&&(n.iadd(l),o.isub(h)),n.iushrn(1),o.iushrn(1);for(var f=0,m=1;0==(r.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(r.iushrn(f);f-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(l),u.isub(h)),s.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(s),o.isub(u)):(r.isub(t),s.isub(n),u.isub(o))}return{a:s,b:u,gcd:r.iushln(c)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,o=new a(1),s=new a(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,l=1;0==(t.words[0]&l)&&c<26;++c,l<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);for(var h=0,p=1;0==(r.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s)):(r.isub(t),s.isub(o))}return(n=0===t.cmpn(1)?o:s).cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new k(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var v={k256:null,p224:null,p192:null,p25519:null};function y(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function _(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function E(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(e){if("string"==typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function S(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},y.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},y.prototype.split=function(e,t){e.iushrn(this.n,0,t)},y.prototype.imulK=function(e){return e.imul(this.k)},n(_,y),_.prototype.split=function(e,t){for(var r=4194303,i=Math.min(e.length,9),n=0;n>>22,a=o}a>>>=22,e.words[n-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},_.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(v[e])return v[e];var t;if("k256"===e)t=new _;else if("p224"===e)t=new b;else if("p192"===e)t=new w;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new E}return v[e]=t,t},k.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},k.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),o=0;!n.isZero()&&0===n.andln(1);)o++,n.iushrn(1);i(!n.isZero());var s=new a(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new a(2*l*l).toRed(this);0!==this.pow(l,c).cmp(u);)l.redIAdd(u);for(var h=this.pow(l,n),p=this.pow(e,n.addn(1).iushrn(1)),d=this.pow(e,n),f=o;0!==d.cmp(s);){for(var m=d,g=0;0!==m.cmp(s);g++)m=m.redSqr();i(g=0;i--){for(var c=t.words[i],l=u-1;l>=0;l--){var h=c>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==h||0!==o?(o<<=1,o|=h,(4==++s||0===i&&0===l)&&(n=this.mul(n,r[o]),s=0,o=0)):s=0}u=26}return n},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new S(e)},n(S,k),S.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},S.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},S.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},S.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=r.nmd(e),this)},55234:(e,t,r)=>{e.exports=r(53765)},80983:(e,t,r)=>{"use strict";var i,n,a,o=r(55234),s=r(26470).extname,u=/^\s*([^;\s]*)(?:;|\s|$)/,c=/^text\//i;function l(e){if(!e||"string"!=typeof e)return!1;var t=u.exec(e),r=t&&o[t[1].toLowerCase()];return r&&r.charset?r.charset:!(!t||!c.test(t[1]))&&"UTF-8"}t.charset=l,t.charsets={lookup:l},t.contentType=function(e){if(!e||"string"!=typeof e)return!1;var r=-1===e.indexOf("/")?t.lookup(e):e;if(!r)return!1;if(-1===r.indexOf("charset")){var i=t.charset(r);i&&(r+="; charset="+i.toLowerCase())}return r},t.extension=function(e){if(!e||"string"!=typeof e)return!1;var r=u.exec(e),i=r&&t.extensions[r[1].toLowerCase()];return!(!i||!i.length)&&i[0]},t.extensions=Object.create(null),t.lookup=function(e){if(!e||"string"!=typeof e)return!1;var r=s("x."+e).toLowerCase().substr(1);return r&&t.types[r]||!1},t.types=Object.create(null),i=t.extensions,n=t.types,a=["nginx","apache",void 0,"iana"],Object.keys(o).forEach((function(e){var t=o[e],r=t.extensions;if(r&&r.length){i[e]=r;for(var s=0;sl||c===l&&"application/"===n[u].substr(0,12)))continue}n[u]=e}}}))},79746:e=>{function t(e,t){if(!e)throw new Error(t||"Assertion failed")}e.exports=t,t.equal=function(e,t,r){if(e!=t)throw new Error(r||"Assertion failed: "+e+" != "+t)}},34504:(e,t)=>{"use strict";var r=t;function i(e){return 1===e.length?"0"+e:e}function n(e){for(var t="",r=0;r>8,o=255&n;a?r.push(a,o):r.push(o)}return r},r.zero2=i,r.toHex=n,r.encode=function(e,t){return"hex"===t?n(e):e}},85456:(e,t,r)=>{var i=r(85456);for(k in i)r.g[k]=i[k]},54586:(e,t,r)=>{var i=r(55835);function n(e,t,r){return i.createHmac(r,e).update(t).digest("base64")}function a(e){return encodeURIComponent(e).replace(/!/g,"%21").replace(/\*/g,"%2A").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/'/g,"%27")}function o(e,t){return e>t?1:e{"use strict";var t=function(e){return e!=e};e.exports=function(e,r){return 0===e&&0===r?1/e==1/r:e===r||!(!t(e)||!t(r))}},20609:(e,t,r)=>{"use strict";var i=r(4289),n=r(55559),a=r(24244),o=r(75624),s=r(52281),u=n(o(),Object);i(u,{getPolyfill:o,implementation:a,shim:s}),e.exports=u},75624:(e,t,r)=>{"use strict";var i=r(24244);e.exports=function(){return"function"==typeof Object.is?Object.is:i}},52281:(e,t,r)=>{"use strict";var i=r(75624),n=r(4289);e.exports=function(){var e=i();return n(Object,{is:e},{is:function(){return Object.is!==e}}),e}},18987:(e,t,r)=>{"use strict";var i;if(!Object.keys){var n=Object.prototype.hasOwnProperty,a=Object.prototype.toString,o=r(21414),s=Object.prototype.propertyIsEnumerable,u=!s.call({toString:null},"toString"),c=s.call((function(){}),"prototype"),l=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],h=function(e){var t=e.constructor;return t&&t.prototype===e},p={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},d=function(){if("undefined"==typeof window)return!1;for(var e in window)try{if(!p["$"+e]&&n.call(window,e)&&null!==window[e]&&"object"==typeof window[e])try{h(window[e])}catch(e){return!0}}catch(e){return!0}return!1}();i=function(e){var t=null!==e&&"object"==typeof e,r="[object Function]"===a.call(e),i=o(e),s=t&&"[object String]"===a.call(e),p=[];if(!t&&!r&&!i)throw new TypeError("Object.keys called on a non-object");var f=c&&r;if(s&&e.length>0&&!n.call(e,0))for(var m=0;m0)for(var g=0;g{"use strict";var i=Array.prototype.slice,n=r(21414),a=Object.keys,o=a?function(e){return a(e)}:r(18987),s=Object.keys;o.shim=function(){if(Object.keys){var e=function(){var e=Object.keys(arguments);return e&&e.length===arguments.length}(1,2);e||(Object.keys=function(e){return n(e)?s(i.call(e)):s(e)})}else Object.keys=o;return Object.keys||o},e.exports=o},21414:e=>{"use strict";var t=Object.prototype.toString;e.exports=function(e){var r=t.call(e),i="[object Arguments]"===r;return i||(i="[object Array]"!==r&&null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Function]"===t.call(e.callee)),i}},67435:(e,t)=>{t.bW="\n"},24236:(e,t)=>{"use strict";var r="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(var n in r)i(r,n)&&(e[n]=r[n])}}return e},t.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var n={arraySet:function(e,t,r,i,n){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+i),n);else for(var a=0;a{"use strict";e.exports=function(e,t,r,i){for(var n=65535&e|0,a=e>>>16&65535|0,o=0;0!==r;){r-=o=r>2e3?2e3:r;do{a=a+(n=n+t[i++]|0)|0}while(--o);n%=65521,a%=65521}return n|a<<16|0}},71619:e=>{"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},2869:e=>{"use strict";var t=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var i=0;i<8;i++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();e.exports=function(e,r,i,n){var a=t,o=n+i;e^=-1;for(var s=n;s>>8^a[255&(e^r[s])];return-1^e}},30405:(e,t,r)=>{"use strict";var i,n=r(24236),a=r(10342),o=r(66069),s=r(2869),u=r(48898),c=-2,l=258,h=262,p=103,d=113,f=666;function m(e,t){return e.msg=u[t],t}function g(e){return(e<<1)-(e>4?9:0)}function v(e){for(var t=e.length;--t>=0;)e[t]=0}function y(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(n.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function _(e,t){a._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,y(e.strm)}function b(e,t){e.pending_buf[e.pending++]=t}function w(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function E(e,t){var r,i,n=e.max_chain_length,a=e.strstart,o=e.prev_length,s=e.nice_match,u=e.strstart>e.w_size-h?e.strstart-(e.w_size-h):0,c=e.window,p=e.w_mask,d=e.prev,f=e.strstart+l,m=c[a+o-1],g=c[a+o];e.prev_length>=e.good_match&&(n>>=2),s>e.lookahead&&(s=e.lookahead);do{if(c[(r=t)+o]===g&&c[r+o-1]===m&&c[r]===c[a]&&c[++r]===c[a+1]){a+=2,r++;do{}while(c[++a]===c[++r]&&c[++a]===c[++r]&&c[++a]===c[++r]&&c[++a]===c[++r]&&c[++a]===c[++r]&&c[++a]===c[++r]&&c[++a]===c[++r]&&c[++a]===c[++r]&&ao){if(e.match_start=t,o=i,i>=s)break;m=c[a+o-1],g=c[a+o]}}}while((t=d[t&p])>u&&0!=--n);return o<=e.lookahead?o:e.lookahead}function k(e){var t,r,i,a,u,c,l,p,d,f,m=e.w_size;do{if(a=e.window_size-e.lookahead-e.strstart,e.strstart>=m+(m-h)){n.arraySet(e.window,e.window,m,m,0),e.match_start-=m,e.strstart-=m,e.block_start-=m,t=r=e.hash_size;do{i=e.head[--t],e.head[t]=i>=m?i-m:0}while(--r);t=r=m;do{i=e.prev[--t],e.prev[t]=i>=m?i-m:0}while(--r);a+=m}if(0===e.strm.avail_in)break;if(c=e.strm,l=e.window,p=e.strstart+e.lookahead,d=a,f=void 0,(f=c.avail_in)>d&&(f=d),r=0===f?0:(c.avail_in-=f,n.arraySet(l,c.input,c.next_in,f,p),1===c.state.wrap?c.adler=o(c.adler,l,f,p):2===c.state.wrap&&(c.adler=s(c.adler,l,f,p)),c.next_in+=f,c.total_in+=f,f),e.lookahead+=r,e.lookahead+e.insert>=3)for(u=e.strstart-e.insert,e.ins_h=e.window[u],e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<=3)if(i=a._tr_tally(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){n=e.strstart+e.lookahead-3,i=a._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=n&&(e.ins_h=(e.ins_h<15&&(s=2,i-=16),a<1||a>9||8!==r||i<8||i>15||t<0||t>9||o<0||o>4)return m(e,c);8===i&&(i=9);var u=new N;return e.state=u,u.strm=e,u.wrap=s,u.gzhead=null,u.w_bits=i,u.w_size=1<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(k(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var i=e.block_start+r;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,_(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-h&&(_(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(_(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(_(e,!1),e.strm.avail_out),1)})),new j(4,4,8,4,S),new j(4,5,16,8,S),new j(4,6,32,32,S),new j(4,4,16,16,x),new j(8,16,32,32,x),new j(8,16,128,128,x),new j(8,32,128,256,x),new j(32,128,258,1024,x),new j(32,258,258,4096,x)],t.deflateInit=function(e,t){return A(e,t,8,15,8,0)},t.deflateInit2=A,t.deflateReset=I,t.deflateResetKeep=M,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?c:(e.state.gzhead=t,0):c},t.deflate=function(e,t){var r,n,o,u;if(!e||!e.state||t>5||t<0)return e?m(e,c):c;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||n.status===f&&4!==t)return m(e,0===e.avail_out?-5:c);if(n.strm=e,r=n.last_flush,n.last_flush=t,42===n.status)if(2===n.wrap)e.adler=0,b(n,31),b(n,139),b(n,8),n.gzhead?(b(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),b(n,255&n.gzhead.time),b(n,n.gzhead.time>>8&255),b(n,n.gzhead.time>>16&255),b(n,n.gzhead.time>>24&255),b(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),b(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(b(n,255&n.gzhead.extra.length),b(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=s(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(b(n,0),b(n,0),b(n,0),b(n,0),b(n,0),b(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),b(n,3),n.status=d);else{var h=8+(n.w_bits-8<<4)<<8;h|=(n.strategy>=2||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(h|=32),h+=31-h%31,n.status=d,w(n,h),0!==n.strstart&&(w(n,e.adler>>>16),w(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(o=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>o&&(e.adler=s(e.adler,n.pending_buf,n.pending-o,o)),y(e),o=n.pending,n.pending!==n.pending_buf_size));)b(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>o&&(e.adler=s(e.adler,n.pending_buf,n.pending-o,o)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){o=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>o&&(e.adler=s(e.adler,n.pending_buf,n.pending-o,o)),y(e),o=n.pending,n.pending===n.pending_buf_size)){u=1;break}u=n.gzindexo&&(e.adler=s(e.adler,n.pending_buf,n.pending-o,o)),0===u&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){o=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>o&&(e.adler=s(e.adler,n.pending_buf,n.pending-o,o)),y(e),o=n.pending,n.pending===n.pending_buf_size)){u=1;break}u=n.gzindexo&&(e.adler=s(e.adler,n.pending_buf,n.pending-o,o)),0===u&&(n.status=p)}else n.status=p;if(n.status===p&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&y(e),n.pending+2<=n.pending_buf_size&&(b(n,255&e.adler),b(n,e.adler>>8&255),e.adler=0,n.status=d)):n.status=d),0!==n.pending){if(y(e),0===e.avail_out)return n.last_flush=-1,0}else if(0===e.avail_in&&g(t)<=g(r)&&4!==t)return m(e,-5);if(n.status===f&&0!==e.avail_in)return m(e,-5);if(0!==e.avail_in||0!==n.lookahead||0!==t&&n.status!==f){var E=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(k(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(_(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(_(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(_(e,!1),0===e.strm.avail_out)?1:2}(n,t):3===n.strategy?function(e,t){for(var r,i,n,o,s=e.window;;){if(e.lookahead<=l){if(k(e),e.lookahead<=l&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(i=s[n=e.strstart-1])===s[++n]&&i===s[++n]&&i===s[++n]){o=e.strstart+l;do{}while(i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&ne.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(r=a._tr_tally(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(_(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(_(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(_(e,!1),0===e.strm.avail_out)?1:2}(n,t):i[n.level].func(n,t);if(3!==E&&4!==E||(n.status=f),1===E||3===E)return 0===e.avail_out&&(n.last_flush=-1),0;if(2===E&&(1===t?a._tr_align(n):5!==t&&(a._tr_stored_block(n,0,0,!1),3===t&&(v(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),y(e),0===e.avail_out))return n.last_flush=-1,0}return 4!==t?0:n.wrap<=0?1:(2===n.wrap?(b(n,255&e.adler),b(n,e.adler>>8&255),b(n,e.adler>>16&255),b(n,e.adler>>24&255),b(n,255&e.total_in),b(n,e.total_in>>8&255),b(n,e.total_in>>16&255),b(n,e.total_in>>24&255)):(w(n,e.adler>>>16),w(n,65535&e.adler)),y(e),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?0:1)},t.deflateEnd=function(e){var t;return e&&e.state?42!==(t=e.state.status)&&69!==t&&73!==t&&91!==t&&t!==p&&t!==d&&t!==f?m(e,c):(e.state=null,t===d?m(e,-3):0):c},t.deflateSetDictionary=function(e,t){var r,i,a,s,u,l,h,p,d=t.length;if(!e||!e.state)return c;if(2===(s=(r=e.state).wrap)||1===s&&42!==r.status||r.lookahead)return c;for(1===s&&(e.adler=o(e.adler,t,d,0)),r.wrap=0,d>=r.w_size&&(0===s&&(v(r.head),r.strstart=0,r.block_start=0,r.insert=0),p=new n.Buf8(r.w_size),n.arraySet(p,t,d-r.w_size,r.w_size,0),t=p,d=r.w_size),u=e.avail_in,l=e.next_in,h=e.input,e.avail_in=d,e.next_in=0,e.input=t,k(r);r.lookahead>=3;){i=r.strstart,a=r.lookahead-2;do{r.ins_h=(r.ins_h<{"use strict";e.exports=function(e,t){var r,i,n,a,o,s,u,c,l,h,p,d,f,m,g,v,y,_,b,w,E,k,S,x,j;r=e.state,i=e.next_in,x=e.input,n=i+(e.avail_in-5),a=e.next_out,j=e.output,o=a-(t-e.avail_out),s=a+(e.avail_out-257),u=r.dmax,c=r.wsize,l=r.whave,h=r.wnext,p=r.window,d=r.hold,f=r.bits,m=r.lencode,g=r.distcode,v=(1<>>=b=_>>>24,f-=b,0==(b=_>>>16&255))j[a++]=65535&_;else{if(!(16&b)){if(0==(64&b)){_=m[(65535&_)+(d&(1<>>=b,f-=b),f<15&&(d+=x[i++]<>>=b=_>>>24,f-=b,!(16&(b=_>>>16&255))){if(0==(64&b)){_=g[(65535&_)+(d&(1<u){e.msg="invalid distance too far back",r.mode=30;break e}if(d>>>=b,f-=b,E>(b=a-o)){if((b=E-b)>l&&r.sane){e.msg="invalid distance too far back",r.mode=30;break e}if(k=0,S=p,0===h){if(k+=c-b,b2;)j[a++]=S[k++],j[a++]=S[k++],j[a++]=S[k++],w-=3;w&&(j[a++]=S[k++],w>1&&(j[a++]=S[k++]))}else{k=a-E;do{j[a++]=j[k++],j[a++]=j[k++],j[a++]=j[k++],w-=3}while(w>2);w&&(j[a++]=j[k++],w>1&&(j[a++]=j[k++]))}break}}break}}while(i>3,d&=(1<<(f-=w<<3))-1,e.next_in=i,e.next_out=a,e.avail_in=i{"use strict";var i=r(24236),n=r(66069),a=r(2869),o=r(94264),s=r(9241),u=-2,c=12,l=30;function h(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function p(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function d(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new i.Buf32(852),t.distcode=t.distdyn=new i.Buf32(592),t.sane=1,t.back=-1,0):u}function f(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,d(e)):u}function m(e,t){var r,i;return e&&e.state?(i=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?u:(null!==i.window&&i.wbits!==t&&(i.window=null),i.wrap=r,i.wbits=t,f(e))):u}function g(e,t){var r,i;return e?(i=new p,e.state=i,i.window=null,0!==(r=m(e,t))&&(e.state=null),r):u}var v,y,_=!0;function b(e){if(_){var t;for(v=new i.Buf32(512),y=new i.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(s(1,e.lens,0,288,v,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;s(2,e.lens,0,32,y,0,e.work,{bits:5}),_=!1}e.lencode=v,e.lenbits=9,e.distcode=y,e.distbits=5}function w(e,t,r,n){var a,o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(i.arraySet(o.window,t,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((a=o.wsize-o.wnext)>n&&(a=n),i.arraySet(o.window,t,r-n,a,o.wnext),(n-=a)?(i.arraySet(o.window,t,r-n,n,0),o.wnext=n,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,r.check=a(r.check,F,2,0),y=0,_=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&y)<<8)+(y>>8))%31){e.msg="incorrect header check",r.mode=l;break}if(8!=(15&y)){e.msg="unknown compression method",r.mode=l;break}if(_-=4,P=8+(15&(y>>>=4)),0===r.wbits)r.wbits=P;else if(P>r.wbits){e.msg="invalid window size",r.mode=l;break}r.dmax=1<>8&1),512&r.flags&&(F[0]=255&y,F[1]=y>>>8&255,r.check=a(r.check,F,2,0)),y=0,_=0,r.mode=3;case 3:for(;_<32;){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}r.head&&(r.head.time=y),512&r.flags&&(F[0]=255&y,F[1]=y>>>8&255,F[2]=y>>>16&255,F[3]=y>>>24&255,r.check=a(r.check,F,4,0)),y=0,_=0,r.mode=4;case 4:for(;_<16;){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}r.head&&(r.head.xflags=255&y,r.head.os=y>>8),512&r.flags&&(F[0]=255&y,F[1]=y>>>8&255,r.check=a(r.check,F,2,0)),y=0,_=0,r.mode=5;case 5:if(1024&r.flags){for(;_<16;){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}r.length=y,r.head&&(r.head.extra_len=y),512&r.flags&&(F[0]=255&y,F[1]=y>>>8&255,r.check=a(r.check,F,2,0)),y=0,_=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((S=r.length)>g&&(S=g),S&&(r.head&&(P=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),i.arraySet(r.head.extra,p,f,S,P)),512&r.flags&&(r.check=a(r.check,p,S,f)),g-=S,f+=S,r.length-=S),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===g)break e;S=0;do{P=p[f+S++],r.head&&P&&r.length<65536&&(r.head.name+=String.fromCharCode(P))}while(P&&S>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=c;break;case 10:for(;_<32;){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}e.adler=r.check=h(y),y=0,_=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=m,e.avail_out=v,e.next_in=f,e.avail_in=g,r.hold=y,r.bits=_,2;e.adler=r.check=1,r.mode=c;case c:if(5===t||6===t)break e;case 13:if(r.last){y>>>=7&_,_-=7&_,r.mode=27;break}for(;_<3;){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}switch(r.last=1&y,_-=1,3&(y>>>=1)){case 0:r.mode=14;break;case 1:if(b(r),r.mode=20,6===t){y>>>=2,_-=2;break e}break;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=l}y>>>=2,_-=2;break;case 14:for(y>>>=7&_,_-=7&_;_<32;){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}if((65535&y)!=(y>>>16^65535)){e.msg="invalid stored block lengths",r.mode=l;break}if(r.length=65535&y,y=0,_=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(S=r.length){if(S>g&&(S=g),S>v&&(S=v),0===S)break e;i.arraySet(d,p,f,S,m),g-=S,f+=S,v-=S,m+=S,r.length-=S;break}r.mode=c;break;case 17:for(;_<14;){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}if(r.nlen=257+(31&y),y>>>=5,_-=5,r.ndist=1+(31&y),y>>>=5,_-=5,r.ncode=4+(15&y),y>>>=4,_-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=l;break}r.have=0,r.mode=18;case 18:for(;r.have>>=3,_-=3}for(;r.have<19;)r.lens[D[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,B={bits:r.lenbits},O=s(0,r.lens,0,19,r.lencode,0,r.work,B),r.lenbits=B.bits,O){e.msg="invalid code lengths set",r.mode=l;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,I=65535&z,!((N=z>>>24)<=_);){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}if(I<16)y>>>=N,_-=N,r.lens[r.have++]=I;else{if(16===I){for(C=N+2;_>>=N,_-=N,0===r.have){e.msg="invalid bit length repeat",r.mode=l;break}P=r.lens[r.have-1],S=3+(3&y),y>>>=2,_-=2}else if(17===I){for(C=N+3;_>>=N)),y>>>=3,_-=3}else{for(C=N+7;_>>=N)),y>>>=7,_-=7}if(r.have+S>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=l;break}for(;S--;)r.lens[r.have++]=P}}if(r.mode===l)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=l;break}if(r.lenbits=9,B={bits:r.lenbits},O=s(1,r.lens,0,r.nlen,r.lencode,0,r.work,B),r.lenbits=B.bits,O){e.msg="invalid literal/lengths set",r.mode=l;break}if(r.distbits=6,r.distcode=r.distdyn,B={bits:r.distbits},O=s(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,B),r.distbits=B.bits,O){e.msg="invalid distances set",r.mode=l;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(g>=6&&v>=258){e.next_out=m,e.avail_out=v,e.next_in=f,e.avail_in=g,r.hold=y,r.bits=_,o(e,k),m=e.next_out,d=e.output,v=e.avail_out,f=e.next_in,p=e.input,g=e.avail_in,y=r.hold,_=r.bits,r.mode===c&&(r.back=-1);break}for(r.back=0;M=(z=r.lencode[y&(1<>>16&255,I=65535&z,!((N=z>>>24)<=_);){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}if(M&&0==(240&M)){for(A=N,T=M,R=I;M=(z=r.lencode[R+((y&(1<>A)])>>>16&255,I=65535&z,!(A+(N=z>>>24)<=_);){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}y>>>=A,_-=A,r.back+=A}if(y>>>=N,_-=N,r.back+=N,r.length=I,0===M){r.mode=26;break}if(32&M){r.back=-1,r.mode=c;break}if(64&M){e.msg="invalid literal/length code",r.mode=l;break}r.extra=15&M,r.mode=22;case 22:if(r.extra){for(C=r.extra;_>>=r.extra,_-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;M=(z=r.distcode[y&(1<>>16&255,I=65535&z,!((N=z>>>24)<=_);){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}if(0==(240&M)){for(A=N,T=M,R=I;M=(z=r.distcode[R+((y&(1<>A)])>>>16&255,I=65535&z,!(A+(N=z>>>24)<=_);){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}y>>>=A,_-=A,r.back+=A}if(y>>>=N,_-=N,r.back+=N,64&M){e.msg="invalid distance code",r.mode=l;break}r.offset=I,r.extra=15&M,r.mode=24;case 24:if(r.extra){for(C=r.extra;_>>=r.extra,_-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=l;break}r.mode=25;case 25:if(0===v)break e;if(S=k-v,r.offset>S){if((S=r.offset-S)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=l;break}S>r.wnext?(S-=r.wnext,x=r.wsize-S):x=r.wnext-S,S>r.length&&(S=r.length),j=r.window}else j=d,x=m-r.offset,S=r.length;S>v&&(S=v),v-=S,r.length-=S;do{d[m++]=j[x++]}while(--S);0===r.length&&(r.mode=21);break;case 26:if(0===v)break e;d[m++]=r.length,v--,r.mode=21;break;case 27:if(r.wrap){for(;_<32;){if(0===g)break e;g--,y|=p[f++]<<_,_+=8}if(k-=v,e.total_out+=k,r.total+=k,k&&(e.adler=r.check=r.flags?a(r.check,d,k,m-k):n(r.check,d,k,m-k)),k=v,(r.flags?y:h(y))!==r.check){e.msg="incorrect data check",r.mode=l;break}y=0,_=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;_<32;){if(0===g)break e;g--,y+=p[f++]<<_,_+=8}if(y!==(4294967295&r.total)){e.msg="incorrect length check",r.mode=l;break}y=0,_=0}r.mode=29;case 29:O=1;break e;case l:O=-3;break e;case 31:return-4;default:return u}return e.next_out=m,e.avail_out=v,e.next_in=f,e.avail_in=g,r.hold=y,r.bits=_,(r.wsize||k!==e.avail_out&&r.mode{"use strict";var i=r(24236),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],a=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],s=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(e,t,r,u,c,l,h,p){var d,f,m,g,v,y,_,b,w,E=p.bits,k=0,S=0,x=0,j=0,N=0,M=0,I=0,A=0,T=0,R=0,P=null,O=0,B=new i.Buf16(16),C=new i.Buf16(16),z=null,F=0;for(k=0;k<=15;k++)B[k]=0;for(S=0;S=1&&0===B[j];j--);if(N>j&&(N=j),0===j)return c[l++]=20971520,c[l++]=20971520,p.bits=1,0;for(x=1;x0&&(0===e||1!==j))return-1;for(C[1]=0,k=1;k<15;k++)C[k+1]=C[k]+B[k];for(S=0;S852||2===e&&T>592)return 1;for(;;){_=k-I,h[S]y?(b=z[F+h[S]],w=P[O+h[S]]):(b=96,w=0),d=1<>I)+(f-=d)]=_<<24|b<<16|w|0}while(0!==f);for(d=1<>=1;if(0!==d?(R&=d-1,R+=d):R=0,S++,0==--B[k]){if(k===j)break;k=t[r+h[S]]}if(k>N&&(R&g)!==m){for(0===I&&(I=N),v+=x,A=1<<(M=k-I);M+I852||2===e&&T>592)return 1;c[m=R&g]=N<<24|M<<16|v-l|0}}return 0!==R&&(c[v+R]=k-I<<24|64<<16|0),p.bits=N,0}},48898:e=>{"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},10342:(e,t,r)=>{"use strict";var i=r(24236);function n(e){for(var t=e.length;--t>=0;)e[t]=0}var a=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],o=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],u=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],c=new Array(576);n(c);var l=new Array(60);n(l);var h=new Array(512);n(h);var p=new Array(256);n(p);var d=new Array(29);n(d);var f,m,g,v=new Array(30);function y(e,t,r,i,n){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=i,this.max_length=n,this.has_stree=e&&e.length}function _(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function b(e){return e<256?h[e]:h[256+(e>>>7)]}function w(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function E(e,t,r){e.bi_valid>16-r?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=r-16):(e.bi_buf|=t<>>=1,r<<=1}while(--t>0);return r>>>1}function x(e,t,r){var i,n,a=new Array(16),o=0;for(i=1;i<=15;i++)a[i]=o=o+r[i-1]<<1;for(n=0;n<=t;n++){var s=e[2*n+1];0!==s&&(e[2*n]=S(a[s]++,s))}}function j(e){var t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function N(e){e.bi_valid>8?w(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function M(e,t,r,i){var n=2*t,a=2*r;return e[n]>1;r>=1;r--)I(e,a,r);n=u;do{r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],I(e,a,1),i=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=i,a[2*n]=a[2*r]+a[2*i],e.depth[n]=(e.depth[r]>=e.depth[i]?e.depth[r]:e.depth[i])+1,a[2*r+1]=a[2*i+1]=n,e.heap[1]=n++,I(e,a,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,i,n,a,o,s,u=t.dyn_tree,c=t.max_code,l=t.stat_desc.static_tree,h=t.stat_desc.has_stree,p=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,f=t.stat_desc.max_length,m=0;for(a=0;a<=15;a++)e.bl_count[a]=0;for(u[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<573;r++)(a=u[2*u[2*(i=e.heap[r])+1]+1]+1)>f&&(a=f,m++),u[2*i+1]=a,i>c||(e.bl_count[a]++,o=0,i>=d&&(o=p[i-d]),s=u[2*i],e.opt_len+=s*(a+o),h&&(e.static_len+=s*(l[2*i+1]+o)));if(0!==m){do{for(a=f-1;0===e.bl_count[a];)a--;e.bl_count[a]--,e.bl_count[a+1]+=2,e.bl_count[f]--,m-=2}while(m>0);for(a=f;0!==a;a--)for(i=e.bl_count[a];0!==i;)(n=e.heap[--r])>c||(u[2*n+1]!==a&&(e.opt_len+=(a-u[2*n+1])*u[2*n],u[2*n+1]=a),i--)}}(e,t),x(a,c,e.bl_count)}function R(e,t,r){var i,n,a=-1,o=t[1],s=0,u=7,c=4;for(0===o&&(u=138,c=3),t[2*(r+1)+1]=65535,i=0;i<=r;i++)n=o,o=t[2*(i+1)+1],++s>=7;i<30;i++)for(v[i]=n<<7,e=0;e<1<0?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),T(e,e.l_desc),T(e,e.d_desc),o=function(e){var t;for(R(e,e.dyn_ltree,e.l_desc.max_code),R(e,e.dyn_dtree,e.d_desc.max_code),T(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*u[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),n=e.opt_len+3+7>>>3,(a=e.static_len+3+7>>>3)<=n&&(n=a)):n=a=r+5,r+4<=n&&-1!==t?B(e,t,r,i):4===e.strategy||a===n?(E(e,2+(i?1:0),3),A(e,c,l)):(E(e,4+(i?1:0),3),function(e,t,r,i){var n;for(E(e,t-257,5),E(e,r-1,5),E(e,i-4,4),n=0;n>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(p[r]+256+1)]++,e.dyn_dtree[2*b(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){E(e,2,3),k(e,256,c),function(e){16===e.bi_valid?(w(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},62292:e=>{"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},52818:(e,t,r)=>{"use strict";var i=r(39809);t.certificate=r(41934);var n=i.define("RSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())}));t.RSAPrivateKey=n;var a=i.define("RSAPublicKey",(function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())}));t.RSAPublicKey=a;var o=i.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(s),this.key("subjectPublicKey").bitstr())}));t.PublicKey=o;var s=i.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())})),u=i.define("PrivateKeyInfo",(function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(s),this.key("subjectPrivateKey").octstr())}));t.PrivateKey=u;var c=i.define("EncryptedPrivateKeyInfo",(function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())}));t.EncryptedPrivateKey=c;var l=i.define("DSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())}));t.DSAPrivateKey=l,t.DSAparam=i.define("DSAparam",(function(){this.int()}));var h=i.define("ECPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(p),this.key("publicKey").optional().explicit(1).bitstr())}));t.ECPrivateKey=h;var p=i.define("ECParameters",(function(){this.choice({namedCurve:this.objid()})}));t.signature=i.define("signature",(function(){this.seq().obj(this.key("r").int(),this.key("s").int())}))},41934:(e,t,r)=>{"use strict";var i=r(39809),n=i.define("Time",(function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})})),a=i.define("AttributeTypeValue",(function(){this.seq().obj(this.key("type").objid(),this.key("value").any())})),o=i.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())})),s=i.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(o),this.key("subjectPublicKey").bitstr())})),u=i.define("RelativeDistinguishedName",(function(){this.setof(a)})),c=i.define("RDNSequence",(function(){this.seqof(u)})),l=i.define("Name",(function(){this.choice({rdnSequence:this.use(c)})})),h=i.define("Validity",(function(){this.seq().obj(this.key("notBefore").use(n),this.key("notAfter").use(n))})),p=i.define("Extension",(function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())})),d=i.define("TBSCertificate",(function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(o),this.key("issuer").use(l),this.key("validity").use(h),this.key("subject").use(l),this.key("subjectPublicKeyInfo").use(s),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(p).optional())})),f=i.define("X509Certificate",(function(){this.seq().obj(this.key("tbsCertificate").use(d),this.key("signatureAlgorithm").use(o),this.key("signatureValue").bitstr())}));e.exports=f},77631:(e,t,r)=>{var i=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,n=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,a=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,o=r(13048),s=r(44696),u=r(89509).Buffer;e.exports=function(e,t){var r,c=e.toString(),l=c.match(i);if(l){var h="aes"+l[1],p=u.from(l[2],"hex"),d=u.from(l[3].replace(/[\r\n]/g,""),"base64"),f=o(t,p.slice(0,8),parseInt(l[1],10)).key,m=[],g=s.createDecipheriv(h,f,p);m.push(g.update(d)),m.push(g.final()),r=u.concat(m)}else{var v=c.match(a);r=u.from(v[2].replace(/[\r\n]/g,""),"base64")}return{tag:c.match(n)[1],data:r}}},70980:(e,t,r)=>{var i=r(52818),n=r(22562),a=r(77631),o=r(44696),s=r(25632),u=r(89509).Buffer;function c(e){var t;"object"!=typeof e||u.isBuffer(e)||(t=e.passphrase,e=e.key),"string"==typeof e&&(e=u.from(e));var r,c,l=a(e,t),h=l.tag,p=l.data;switch(h){case"CERTIFICATE":c=i.certificate.decode(p,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(c||(c=i.PublicKey.decode(p,"der")),r=c.algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return i.RSAPublicKey.decode(c.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return c.subjectPrivateKey=c.subjectPublicKey,{type:"ec",data:c};case"1.2.840.10040.4.1":return c.algorithm.params.pub_key=i.DSAparam.decode(c.subjectPublicKey.data,"der"),{type:"dsa",data:c.algorithm.params};default:throw new Error("unknown key id "+r)}case"ENCRYPTED PRIVATE KEY":p=function(e,t){var r=e.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(e.algorithm.decrypt.kde.kdeparams.iters.toString(),10),a=n[e.algorithm.decrypt.cipher.algo.join(".")],c=e.algorithm.decrypt.cipher.iv,l=e.subjectPrivateKey,h=parseInt(a.split("-")[1],10)/8,p=s.pbkdf2Sync(t,r,i,h,"sha1"),d=o.createDecipheriv(a,p,c),f=[];return f.push(d.update(l)),f.push(d.final()),u.concat(f)}(p=i.EncryptedPrivateKey.decode(p,"der"),t);case"PRIVATE KEY":switch(r=(c=i.PrivateKey.decode(p,"der")).algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return i.RSAPrivateKey.decode(c.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:c.algorithm.curve,privateKey:i.ECPrivateKey.decode(c.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return c.algorithm.params.priv_key=i.DSAparam.decode(c.subjectPrivateKey,"der"),{type:"dsa",params:c.algorithm.params};default:throw new Error("unknown key id "+r)}case"RSA PUBLIC KEY":return i.RSAPublicKey.decode(p,"der");case"RSA PRIVATE KEY":return i.RSAPrivateKey.decode(p,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:i.DSAPrivateKey.decode(p,"der")};case"EC PRIVATE KEY":return{curve:(p=i.ECPrivateKey.decode(p,"der")).parameters.value,privateKey:p.privateKey};default:throw new Error("unknown key type "+h)}}e.exports=c,c.signature=i.signature},26470:(e,t,r)=>{"use strict";var i=r(34155);function n(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function a(e,t){for(var r,i="",n=0,a=-1,o=0,s=0;s<=e.length;++s){if(s2){var u=i.lastIndexOf("/");if(u!==i.length-1){-1===u?(i="",n=0):n=(i=i.slice(0,u)).length-1-i.lastIndexOf("/"),a=s,o=0;continue}}else if(2===i.length||1===i.length){i="",n=0,a=s,o=0;continue}t&&(i.length>0?i+="/..":i="..",n=2)}else i.length>0?i+="/"+e.slice(a+1,s):i=e.slice(a+1,s),n=s-a-1;a=s,o=0}else 46===r&&-1!==o?++o:o=-1}return i}var o={resolve:function(){for(var e,t="",r=!1,o=arguments.length-1;o>=-1&&!r;o--){var s;o>=0?s=arguments[o]:(void 0===e&&(e=i.cwd()),s=e),n(s),0!==s.length&&(t=s+"/"+t,r=47===s.charCodeAt(0))}return t=a(t,!r),r?t.length>0?"/"+t:"/":t.length>0?t:"."},normalize:function(e){if(n(e),0===e.length)return".";var t=47===e.charCodeAt(0),r=47===e.charCodeAt(e.length-1);return 0!==(e=a(e,!t)).length||t||(e="."),e.length>0&&r&&(e+="/"),t?"/"+e:e},isAbsolute:function(e){return n(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,t=0;t0&&(void 0===e?e=r:e+="/"+r)}return void 0===e?".":o.normalize(e)},relative:function(e,t){if(n(e),n(t),e===t)return"";if((e=o.resolve(e))===(t=o.resolve(t)))return"";for(var r=1;rc){if(47===t.charCodeAt(s+h))return t.slice(s+h+1);if(0===h)return t.slice(s+h)}else a>c&&(47===e.charCodeAt(r+h)?l=h:0===h&&(l=0));break}var p=e.charCodeAt(r+h);if(p!==t.charCodeAt(s+h))break;47===p&&(l=h)}var d="";for(h=r+l+1;h<=i;++h)h!==i&&47!==e.charCodeAt(h)||(0===d.length?d+="..":d+="/..");return d.length>0?d+t.slice(s+l):(s+=l,47===t.charCodeAt(s)&&++s,t.slice(s))},_makeLong:function(e){return e},dirname:function(e){if(n(e),0===e.length)return".";for(var t=e.charCodeAt(0),r=47===t,i=-1,a=!0,o=e.length-1;o>=1;--o)if(47===(t=e.charCodeAt(o))){if(!a){i=o;break}}else a=!1;return-1===i?r?"/":".":r&&1===i?"//":e.slice(0,i)},basename:function(e,t){if(void 0!==t&&"string"!=typeof t)throw new TypeError('"ext" argument must be a string');n(e);var r,i=0,a=-1,o=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t.length===e.length&&t===e)return"";var s=t.length-1,u=-1;for(r=e.length-1;r>=0;--r){var c=e.charCodeAt(r);if(47===c){if(!o){i=r+1;break}}else-1===u&&(o=!1,u=r+1),s>=0&&(c===t.charCodeAt(s)?-1==--s&&(a=r):(s=-1,a=u))}return i===a?a=u:-1===a&&(a=e.length),e.slice(i,a)}for(r=e.length-1;r>=0;--r)if(47===e.charCodeAt(r)){if(!o){i=r+1;break}}else-1===a&&(o=!1,a=r+1);return-1===a?"":e.slice(i,a)},extname:function(e){n(e);for(var t=-1,r=0,i=-1,a=!0,o=0,s=e.length-1;s>=0;--s){var u=e.charCodeAt(s);if(47!==u)-1===i&&(a=!1,i=s+1),46===u?-1===t?t=s:1!==o&&(o=1):-1!==t&&(o=-1);else if(!a){r=s+1;break}}return-1===t||-1===i||0===o||1===o&&t===i-1&&t===r+1?"":e.slice(t,i)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var r=t.dir||t.root,i=t.base||(t.name||"")+(t.ext||"");return r?r===t.root?r+i:r+"/"+i:i}(0,e)},parse:function(e){n(e);var t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;var r,i=e.charCodeAt(0),a=47===i;a?(t.root="/",r=1):r=0;for(var o=-1,s=0,u=-1,c=!0,l=e.length-1,h=0;l>=r;--l)if(47!==(i=e.charCodeAt(l)))-1===u&&(c=!1,u=l+1),46===i?-1===o?o=l:1!==h&&(h=1):-1!==o&&(h=-1);else if(!c){s=l+1;break}return-1===o||-1===u||0===h||1===h&&o===u-1&&o===s+1?-1!==u&&(t.base=t.name=0===s&&a?e.slice(1,u):e.slice(s,u)):(0===s&&a?(t.name=e.slice(1,o),t.base=e.slice(1,u)):(t.name=e.slice(s,o),t.base=e.slice(s,u)),t.ext=e.slice(o,u)),s>0?t.dir=e.slice(0,s-1):a&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};o.posix=o,e.exports=o},25632:(e,t,r)=>{t.pbkdf2=r(88638),t.pbkdf2Sync=r(91257)},88638:(e,t,r)=>{var i,n,a=r(89509).Buffer,o=r(77357),s=r(12368),u=r(91257),c=r(57777),l=r.g.crypto&&r.g.crypto.subtle,h={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},p=[];function d(){return n||(n=r.g.process&&r.g.process.nextTick?r.g.process.nextTick:r.g.queueMicrotask?r.g.queueMicrotask:r.g.setImmediate?r.g.setImmediate:r.g.setTimeout)}function f(e,t,r,i,n){return l.importKey("raw",e,{name:"PBKDF2"},!1,["deriveBits"]).then((function(e){return l.deriveBits({name:"PBKDF2",salt:t,iterations:r,hash:{name:n}},e,i<<3)})).then((function(e){return a.from(e)}))}e.exports=function(e,t,n,m,g,v){"function"==typeof g&&(v=g,g=void 0);var y=h[(g=g||"sha1").toLowerCase()];if(y&&"function"==typeof r.g.Promise){if(o(n,m),e=c(e,s,"Password"),t=c(t,s,"Salt"),"function"!=typeof v)throw new Error("No callback provided to pbkdf2");!function(e,t){e.then((function(e){d()((function(){t(null,e)}))}),(function(e){d()((function(){t(e)}))}))}(function(e){if(r.g.process&&!r.g.process.browser)return Promise.resolve(!1);if(!l||!l.importKey||!l.deriveBits)return Promise.resolve(!1);if(void 0!==p[e])return p[e];var t=f(i=i||a.alloc(8),i,10,128,e).then((function(){return!0})).catch((function(){return!1}));return p[e]=t,t}(y).then((function(r){return r?f(e,t,n,m,y):u(e,t,n,m,g)})),v)}else d()((function(){var r;try{r=u(e,t,n,m,g)}catch(e){return v(e)}v(null,r)}))}},12368:(e,t,r)=>{var i,n=r(34155);i=r.g.process&&r.g.process.browser?"utf-8":r.g.process&&r.g.process.version?parseInt(n.version.split(".")[0].slice(1),10)>=6?"utf-8":"binary":"utf-8",e.exports=i},77357:e=>{var t=Math.pow(2,30)-1;e.exports=function(e,r){if("number"!=typeof e)throw new TypeError("Iterations not a number");if(e<0)throw new TypeError("Bad iterations");if("number"!=typeof r)throw new TypeError("Key length not a number");if(r<0||r>t||r!=r)throw new TypeError("Bad key length")}},91257:(e,t,r)=>{var i=r(78028),n=r(79785),a=r(89072),o=r(89509).Buffer,s=r(77357),u=r(12368),c=r(57777),l=o.alloc(128),h={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function p(e,t,r){var s=function(e){return"rmd160"===e||"ripemd160"===e?function(e){return(new n).update(e).digest()}:"md5"===e?i:function(t){return a(e).update(t).digest()}}(e),u="sha512"===e||"sha384"===e?128:64;t.length>u?t=s(t):t.length{var i=r(89509).Buffer;e.exports=function(e,t,r){if(i.isBuffer(e))return e;if("string"==typeof e)return i.from(e,t);if(ArrayBuffer.isView(e))return i.from(e.buffer);throw new TypeError(r+" must be a string, a Buffer, a typed array or a DataView")}},75:function(e,t,r){var i=r(34155);(function(){var t,r,n,a,o,s;"undefined"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:null!=i&&i.hrtime?(e.exports=function(){return(t()-o)/1e6},r=i.hrtime,a=(t=function(){var e;return 1e9*(e=r())[0]+e[1]})(),s=1e9*i.uptime(),o=a-s):Date.now?(e.exports=function(){return Date.now()-n},n=Date.now()):(e.exports=function(){return(new Date).getTime()-n},n=(new Date).getTime())}).call(this)},34155:e=>{var t,r,i=e.exports={};function n(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function o(e){if(t===setTimeout)return setTimeout(e,0);if((t===n||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:n}catch(e){t=n}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var s,u=[],c=!1,l=-1;function h(){c&&s&&(c=!1,s.length?u=s.concat(u):l=-1,u.length&&p())}function p(){if(!c){var e=o(h);c=!0;for(var t=u.length;t;){for(s=u,u=[];++l1)for(var r=1;r{"use strict";function t(e){this.requestsPerSecond=e.requestsPerSecond,this.promiseImplementation=e.promiseImplementation||Promise,this.lastStartTime=0,this.queued=[]}t.prototype.add=function(e,t){var r=this,i=t||{};return new r.promiseImplementation((function(t,n){r.queued.push({resolve:t,reject:n,promise:e,weight:i.weight||1,signal:i.signal}),r.dequeue()}))},t.prototype.addAll=function(e,t){var r=e.map(function(e){return this.add(e,t)}.bind(this));return Promise.all(r)},t.prototype.dequeue=function(){if(this.queued.length>0){var e=new Date,t=this.queued[0].weight,r=1e3/this.requestsPerSecond*t,i=e-this.lastStartTime;i>=r?this._execute():setTimeout(function(){this.dequeue()}.bind(this),r-i)}},t.prototype._execute=function(){this.lastStartTime=new Date;var e=this.queued.shift();e.signal&&e.signal.aborted?e.reject(new DOMException("","AbortError")):e.promise().then((function(t){e.resolve(t)})).catch((function(t){e.reject(t)}))},e.exports=t},16244:(e,t,r)=>{"use strict";var i=r(3689),n={};n.rules=r(3704).map((function(e){return{rule:e,suffix:e.replace(/^(\*\.|\!)/,""),punySuffix:-1,wildcard:"*"===e.charAt(0),exception:"!"===e.charAt(0)}})),n.endsWith=function(e,t){return-1!==e.indexOf(t,e.length-t.length)},n.findRule=function(e){var t=i.toASCII(e);return n.rules.reduce((function(e,r){return-1===r.punySuffix&&(r.punySuffix=i.toASCII(r.suffix)),n.endsWith(t,"."+r.punySuffix)||t===r.punySuffix?r:e}),null)},t.errorCodes={DOMAIN_TOO_SHORT:"Domain name too short.",DOMAIN_TOO_LONG:"Domain name too long. It should be no more than 255 chars.",LABEL_STARTS_WITH_DASH:"Domain name label can not start with a dash.",LABEL_ENDS_WITH_DASH:"Domain name label can not end with a dash.",LABEL_TOO_LONG:"Domain name label should be at most 63 chars long.",LABEL_TOO_SHORT:"Domain name label should be at least 1 character long.",LABEL_INVALID_CHARS:"Domain name label can only contain alphanumeric characters or dashes."},n.validate=function(e){var t=i.toASCII(e);if(t.length<1)return"DOMAIN_TOO_SHORT";if(t.length>255)return"DOMAIN_TOO_LONG";for(var r,n=t.split("."),a=0;a63)return"LABEL_TOO_LONG";if("-"===r.charAt(0))return"LABEL_STARTS_WITH_DASH";if("-"===r.charAt(r.length-1))return"LABEL_ENDS_WITH_DASH";if(!/^[a-z0-9\-]+$/.test(r))return"LABEL_INVALID_CHARS"}},t.parse=function(e){if("string"!=typeof e)throw new TypeError("Domain name must be a string.");var r=e.slice(0).toLowerCase();"."===r.charAt(r.length-1)&&(r=r.slice(0,r.length-1));var a=n.validate(r);if(a)return{input:e,error:{message:t.errorCodes[a],code:a}};var o={input:e,tld:null,sld:null,domain:null,subdomain:null,listed:!1},s=r.split(".");if("local"===s[s.length-1])return o;var u=function(){return/xn--/.test(r)?(o.domain&&(o.domain=i.toASCII(o.domain)),o.subdomain&&(o.subdomain=i.toASCII(o.subdomain)),o):o},c=n.findRule(r);if(!c)return s.length<2?o:(o.tld=s.pop(),o.sld=s.pop(),o.domain=[o.sld,o.tld].join("."),s.length&&(o.subdomain=s.pop()),u());o.listed=!0;var l=c.suffix.split("."),h=s.slice(0,s.length-l.length);return c.exception&&h.push(l.shift()),o.tld=l.join("."),h.length?(c.wildcard&&(l.unshift(h.pop()),o.tld=l.join(".")),h.length?(o.sld=h.pop(),o.domain=[o.sld,o.tld].join("."),h.length&&(o.subdomain=h.join(".")),u()):u()):u()},t.get=function(e){return e&&t.parse(e).domain||null},t.isValid=function(e){var r=t.parse(e);return Boolean(r.domain&&r.listed)}},7900:(e,t,r)=>{t.publicEncrypt=r(16559),t.privateDecrypt=r(26138),t.privateEncrypt=function(e,r){return t.publicEncrypt(e,r,!0)},t.publicDecrypt=function(e,r){return t.privateDecrypt(e,r,!0)}},99199:(e,t,r)=>{var i=r(23482),n=r(89509).Buffer;function a(e){var t=n.allocUnsafe(4);return t.writeUInt32BE(e,0),t}e.exports=function(e,t){for(var r,o=n.alloc(0),s=0;o.length=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function u(e,t,r){var i=s(e,r);return r-1>=t&&(i|=s(e,r-1)<<4),i}function c(e,t,r,i){for(var n=0,a=Math.min(e.length,r),o=t;o=49?s-49+10:s>=17?s-17+10:s}return n}a.isBN=function(e){return e instanceof a||null!==e&&"object"==typeof e&&e.constructor.wordSize===a.wordSize&&Array.isArray(e.words)},a.max=function(e,t){return e.cmp(t)>0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)o=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)n=u(e,t,i)<=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;this.strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,o=a%i,s=Math.min(a,a-o)+r,u=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],o=n*a,s=67108863&o,u=o/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&u,p=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=p;d++){var f=c-d|0;l+=(o=(n=0|e.words[f])*(a=0|t.words[d])+h)/67108864|0,h=67108863&o}r.words[c]=0|h,u=0|l}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}a.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,a=0,o=0;o>>24-n&16777215)||o!==this.length-1?l[6-u.length]+u+r:u+r,(n+=2)>=26&&(n-=26,o--)}for(0!==a&&(r=a.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var c=h[e],d=p[e];r="";var f=this.clone();for(f.negative=0;!f.isZero();){var m=f.modn(d).toString(e);r=(f=f.idivn(d)).isZero()?m+r:l[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(e,t){return i(void 0!==o),this.toArrayLike(o,e,t)},a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},a.prototype.toArrayLike=function(e,t,r){var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0"),this.strip();var o,s,u="le"===t,c=new e(a),l=this.clone();if(u){for(s=0;!l.isZero();s++)o=l.andln(255),l.iushrn(8),c[s]=o;for(;s=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==a&&o>26,this.words[o]=67108863&t;if(0===a&&o>>13,d=0|o[1],f=8191&d,m=d>>>13,g=0|o[2],v=8191&g,y=g>>>13,_=0|o[3],b=8191&_,w=_>>>13,E=0|o[4],k=8191&E,S=E>>>13,x=0|o[5],j=8191&x,N=x>>>13,M=0|o[6],I=8191&M,A=M>>>13,T=0|o[7],R=8191&T,P=T>>>13,O=0|o[8],B=8191&O,C=O>>>13,z=0|o[9],F=8191&z,D=z>>>13,q=0|s[0],L=8191&q,U=q>>>13,H=0|s[1],K=8191&H,W=H>>>13,Z=0|s[2],J=8191&Z,V=Z>>>13,$=0|s[3],G=8191&$,Q=$>>>13,X=0|s[4],Y=8191&X,ee=X>>>13,te=0|s[5],re=8191&te,ie=te>>>13,ne=0|s[6],ae=8191&ne,oe=ne>>>13,se=0|s[7],ue=8191&se,ce=se>>>13,le=0|s[8],he=8191&le,pe=le>>>13,de=0|s[9],fe=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ge=(c+(i=Math.imul(h,L))|0)+((8191&(n=(n=Math.imul(h,U))+Math.imul(p,L)|0))<<13)|0;c=((a=Math.imul(p,U))+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(f,L),n=(n=Math.imul(f,U))+Math.imul(m,L)|0,a=Math.imul(m,U);var ve=(c+(i=i+Math.imul(h,K)|0)|0)+((8191&(n=(n=n+Math.imul(h,W)|0)+Math.imul(p,K)|0))<<13)|0;c=((a=a+Math.imul(p,W)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(v,L),n=(n=Math.imul(v,U))+Math.imul(y,L)|0,a=Math.imul(y,U),i=i+Math.imul(f,K)|0,n=(n=n+Math.imul(f,W)|0)+Math.imul(m,K)|0,a=a+Math.imul(m,W)|0;var ye=(c+(i=i+Math.imul(h,J)|0)|0)+((8191&(n=(n=n+Math.imul(h,V)|0)+Math.imul(p,J)|0))<<13)|0;c=((a=a+Math.imul(p,V)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(b,L),n=(n=Math.imul(b,U))+Math.imul(w,L)|0,a=Math.imul(w,U),i=i+Math.imul(v,K)|0,n=(n=n+Math.imul(v,W)|0)+Math.imul(y,K)|0,a=a+Math.imul(y,W)|0,i=i+Math.imul(f,J)|0,n=(n=n+Math.imul(f,V)|0)+Math.imul(m,J)|0,a=a+Math.imul(m,V)|0;var _e=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(n=(n=n+Math.imul(h,Q)|0)+Math.imul(p,G)|0))<<13)|0;c=((a=a+Math.imul(p,Q)|0)+(n>>>13)|0)+(_e>>>26)|0,_e&=67108863,i=Math.imul(k,L),n=(n=Math.imul(k,U))+Math.imul(S,L)|0,a=Math.imul(S,U),i=i+Math.imul(b,K)|0,n=(n=n+Math.imul(b,W)|0)+Math.imul(w,K)|0,a=a+Math.imul(w,W)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,V)|0)+Math.imul(y,J)|0,a=a+Math.imul(y,V)|0,i=i+Math.imul(f,G)|0,n=(n=n+Math.imul(f,Q)|0)+Math.imul(m,G)|0,a=a+Math.imul(m,Q)|0;var be=(c+(i=i+Math.imul(h,Y)|0)|0)+((8191&(n=(n=n+Math.imul(h,ee)|0)+Math.imul(p,Y)|0))<<13)|0;c=((a=a+Math.imul(p,ee)|0)+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(j,L),n=(n=Math.imul(j,U))+Math.imul(N,L)|0,a=Math.imul(N,U),i=i+Math.imul(k,K)|0,n=(n=n+Math.imul(k,W)|0)+Math.imul(S,K)|0,a=a+Math.imul(S,W)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,V)|0)+Math.imul(w,J)|0,a=a+Math.imul(w,V)|0,i=i+Math.imul(v,G)|0,n=(n=n+Math.imul(v,Q)|0)+Math.imul(y,G)|0,a=a+Math.imul(y,Q)|0,i=i+Math.imul(f,Y)|0,n=(n=n+Math.imul(f,ee)|0)+Math.imul(m,Y)|0,a=a+Math.imul(m,ee)|0;var we=(c+(i=i+Math.imul(h,re)|0)|0)+((8191&(n=(n=n+Math.imul(h,ie)|0)+Math.imul(p,re)|0))<<13)|0;c=((a=a+Math.imul(p,ie)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(I,L),n=(n=Math.imul(I,U))+Math.imul(A,L)|0,a=Math.imul(A,U),i=i+Math.imul(j,K)|0,n=(n=n+Math.imul(j,W)|0)+Math.imul(N,K)|0,a=a+Math.imul(N,W)|0,i=i+Math.imul(k,J)|0,n=(n=n+Math.imul(k,V)|0)+Math.imul(S,J)|0,a=a+Math.imul(S,V)|0,i=i+Math.imul(b,G)|0,n=(n=n+Math.imul(b,Q)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,Q)|0,i=i+Math.imul(v,Y)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(y,Y)|0,a=a+Math.imul(y,ee)|0,i=i+Math.imul(f,re)|0,n=(n=n+Math.imul(f,ie)|0)+Math.imul(m,re)|0,a=a+Math.imul(m,ie)|0;var Ee=(c+(i=i+Math.imul(h,ae)|0)|0)+((8191&(n=(n=n+Math.imul(h,oe)|0)+Math.imul(p,ae)|0))<<13)|0;c=((a=a+Math.imul(p,oe)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(R,L),n=(n=Math.imul(R,U))+Math.imul(P,L)|0,a=Math.imul(P,U),i=i+Math.imul(I,K)|0,n=(n=n+Math.imul(I,W)|0)+Math.imul(A,K)|0,a=a+Math.imul(A,W)|0,i=i+Math.imul(j,J)|0,n=(n=n+Math.imul(j,V)|0)+Math.imul(N,J)|0,a=a+Math.imul(N,V)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,Q)|0)+Math.imul(S,G)|0,a=a+Math.imul(S,Q)|0,i=i+Math.imul(b,Y)|0,n=(n=n+Math.imul(b,ee)|0)+Math.imul(w,Y)|0,a=a+Math.imul(w,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(y,re)|0,a=a+Math.imul(y,ie)|0,i=i+Math.imul(f,ae)|0,n=(n=n+Math.imul(f,oe)|0)+Math.imul(m,ae)|0,a=a+Math.imul(m,oe)|0;var ke=(c+(i=i+Math.imul(h,ue)|0)|0)+((8191&(n=(n=n+Math.imul(h,ce)|0)+Math.imul(p,ue)|0))<<13)|0;c=((a=a+Math.imul(p,ce)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(B,L),n=(n=Math.imul(B,U))+Math.imul(C,L)|0,a=Math.imul(C,U),i=i+Math.imul(R,K)|0,n=(n=n+Math.imul(R,W)|0)+Math.imul(P,K)|0,a=a+Math.imul(P,W)|0,i=i+Math.imul(I,J)|0,n=(n=n+Math.imul(I,V)|0)+Math.imul(A,J)|0,a=a+Math.imul(A,V)|0,i=i+Math.imul(j,G)|0,n=(n=n+Math.imul(j,Q)|0)+Math.imul(N,G)|0,a=a+Math.imul(N,Q)|0,i=i+Math.imul(k,Y)|0,n=(n=n+Math.imul(k,ee)|0)+Math.imul(S,Y)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(b,re)|0,n=(n=n+Math.imul(b,ie)|0)+Math.imul(w,re)|0,a=a+Math.imul(w,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,oe)|0)+Math.imul(y,ae)|0,a=a+Math.imul(y,oe)|0,i=i+Math.imul(f,ue)|0,n=(n=n+Math.imul(f,ce)|0)+Math.imul(m,ue)|0,a=a+Math.imul(m,ce)|0;var Se=(c+(i=i+Math.imul(h,he)|0)|0)+((8191&(n=(n=n+Math.imul(h,pe)|0)+Math.imul(p,he)|0))<<13)|0;c=((a=a+Math.imul(p,pe)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(F,L),n=(n=Math.imul(F,U))+Math.imul(D,L)|0,a=Math.imul(D,U),i=i+Math.imul(B,K)|0,n=(n=n+Math.imul(B,W)|0)+Math.imul(C,K)|0,a=a+Math.imul(C,W)|0,i=i+Math.imul(R,J)|0,n=(n=n+Math.imul(R,V)|0)+Math.imul(P,J)|0,a=a+Math.imul(P,V)|0,i=i+Math.imul(I,G)|0,n=(n=n+Math.imul(I,Q)|0)+Math.imul(A,G)|0,a=a+Math.imul(A,Q)|0,i=i+Math.imul(j,Y)|0,n=(n=n+Math.imul(j,ee)|0)+Math.imul(N,Y)|0,a=a+Math.imul(N,ee)|0,i=i+Math.imul(k,re)|0,n=(n=n+Math.imul(k,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(b,ae)|0,n=(n=n+Math.imul(b,oe)|0)+Math.imul(w,ae)|0,a=a+Math.imul(w,oe)|0,i=i+Math.imul(v,ue)|0,n=(n=n+Math.imul(v,ce)|0)+Math.imul(y,ue)|0,a=a+Math.imul(y,ce)|0,i=i+Math.imul(f,he)|0,n=(n=n+Math.imul(f,pe)|0)+Math.imul(m,he)|0,a=a+Math.imul(m,pe)|0;var xe=(c+(i=i+Math.imul(h,fe)|0)|0)+((8191&(n=(n=n+Math.imul(h,me)|0)+Math.imul(p,fe)|0))<<13)|0;c=((a=a+Math.imul(p,me)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(F,K),n=(n=Math.imul(F,W))+Math.imul(D,K)|0,a=Math.imul(D,W),i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,V)|0)+Math.imul(C,J)|0,a=a+Math.imul(C,V)|0,i=i+Math.imul(R,G)|0,n=(n=n+Math.imul(R,Q)|0)+Math.imul(P,G)|0,a=a+Math.imul(P,Q)|0,i=i+Math.imul(I,Y)|0,n=(n=n+Math.imul(I,ee)|0)+Math.imul(A,Y)|0,a=a+Math.imul(A,ee)|0,i=i+Math.imul(j,re)|0,n=(n=n+Math.imul(j,ie)|0)+Math.imul(N,re)|0,a=a+Math.imul(N,ie)|0,i=i+Math.imul(k,ae)|0,n=(n=n+Math.imul(k,oe)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,oe)|0,i=i+Math.imul(b,ue)|0,n=(n=n+Math.imul(b,ce)|0)+Math.imul(w,ue)|0,a=a+Math.imul(w,ce)|0,i=i+Math.imul(v,he)|0,n=(n=n+Math.imul(v,pe)|0)+Math.imul(y,he)|0,a=a+Math.imul(y,pe)|0;var je=(c+(i=i+Math.imul(f,fe)|0)|0)+((8191&(n=(n=n+Math.imul(f,me)|0)+Math.imul(m,fe)|0))<<13)|0;c=((a=a+Math.imul(m,me)|0)+(n>>>13)|0)+(je>>>26)|0,je&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,V))+Math.imul(D,J)|0,a=Math.imul(D,V),i=i+Math.imul(B,G)|0,n=(n=n+Math.imul(B,Q)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,Q)|0,i=i+Math.imul(R,Y)|0,n=(n=n+Math.imul(R,ee)|0)+Math.imul(P,Y)|0,a=a+Math.imul(P,ee)|0,i=i+Math.imul(I,re)|0,n=(n=n+Math.imul(I,ie)|0)+Math.imul(A,re)|0,a=a+Math.imul(A,ie)|0,i=i+Math.imul(j,ae)|0,n=(n=n+Math.imul(j,oe)|0)+Math.imul(N,ae)|0,a=a+Math.imul(N,oe)|0,i=i+Math.imul(k,ue)|0,n=(n=n+Math.imul(k,ce)|0)+Math.imul(S,ue)|0,a=a+Math.imul(S,ce)|0,i=i+Math.imul(b,he)|0,n=(n=n+Math.imul(b,pe)|0)+Math.imul(w,he)|0,a=a+Math.imul(w,pe)|0;var Ne=(c+(i=i+Math.imul(v,fe)|0)|0)+((8191&(n=(n=n+Math.imul(v,me)|0)+Math.imul(y,fe)|0))<<13)|0;c=((a=a+Math.imul(y,me)|0)+(n>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,i=Math.imul(F,G),n=(n=Math.imul(F,Q))+Math.imul(D,G)|0,a=Math.imul(D,Q),i=i+Math.imul(B,Y)|0,n=(n=n+Math.imul(B,ee)|0)+Math.imul(C,Y)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(R,re)|0,n=(n=n+Math.imul(R,ie)|0)+Math.imul(P,re)|0,a=a+Math.imul(P,ie)|0,i=i+Math.imul(I,ae)|0,n=(n=n+Math.imul(I,oe)|0)+Math.imul(A,ae)|0,a=a+Math.imul(A,oe)|0,i=i+Math.imul(j,ue)|0,n=(n=n+Math.imul(j,ce)|0)+Math.imul(N,ue)|0,a=a+Math.imul(N,ce)|0,i=i+Math.imul(k,he)|0,n=(n=n+Math.imul(k,pe)|0)+Math.imul(S,he)|0,a=a+Math.imul(S,pe)|0;var Me=(c+(i=i+Math.imul(b,fe)|0)|0)+((8191&(n=(n=n+Math.imul(b,me)|0)+Math.imul(w,fe)|0))<<13)|0;c=((a=a+Math.imul(w,me)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(F,Y),n=(n=Math.imul(F,ee))+Math.imul(D,Y)|0,a=Math.imul(D,ee),i=i+Math.imul(B,re)|0,n=(n=n+Math.imul(B,ie)|0)+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(R,ae)|0,n=(n=n+Math.imul(R,oe)|0)+Math.imul(P,ae)|0,a=a+Math.imul(P,oe)|0,i=i+Math.imul(I,ue)|0,n=(n=n+Math.imul(I,ce)|0)+Math.imul(A,ue)|0,a=a+Math.imul(A,ce)|0,i=i+Math.imul(j,he)|0,n=(n=n+Math.imul(j,pe)|0)+Math.imul(N,he)|0,a=a+Math.imul(N,pe)|0;var Ie=(c+(i=i+Math.imul(k,fe)|0)|0)+((8191&(n=(n=n+Math.imul(k,me)|0)+Math.imul(S,fe)|0))<<13)|0;c=((a=a+Math.imul(S,me)|0)+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(F,re),n=(n=Math.imul(F,ie))+Math.imul(D,re)|0,a=Math.imul(D,ie),i=i+Math.imul(B,ae)|0,n=(n=n+Math.imul(B,oe)|0)+Math.imul(C,ae)|0,a=a+Math.imul(C,oe)|0,i=i+Math.imul(R,ue)|0,n=(n=n+Math.imul(R,ce)|0)+Math.imul(P,ue)|0,a=a+Math.imul(P,ce)|0,i=i+Math.imul(I,he)|0,n=(n=n+Math.imul(I,pe)|0)+Math.imul(A,he)|0,a=a+Math.imul(A,pe)|0;var Ae=(c+(i=i+Math.imul(j,fe)|0)|0)+((8191&(n=(n=n+Math.imul(j,me)|0)+Math.imul(N,fe)|0))<<13)|0;c=((a=a+Math.imul(N,me)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(F,ae),n=(n=Math.imul(F,oe))+Math.imul(D,ae)|0,a=Math.imul(D,oe),i=i+Math.imul(B,ue)|0,n=(n=n+Math.imul(B,ce)|0)+Math.imul(C,ue)|0,a=a+Math.imul(C,ce)|0,i=i+Math.imul(R,he)|0,n=(n=n+Math.imul(R,pe)|0)+Math.imul(P,he)|0,a=a+Math.imul(P,pe)|0;var Te=(c+(i=i+Math.imul(I,fe)|0)|0)+((8191&(n=(n=n+Math.imul(I,me)|0)+Math.imul(A,fe)|0))<<13)|0;c=((a=a+Math.imul(A,me)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(F,ue),n=(n=Math.imul(F,ce))+Math.imul(D,ue)|0,a=Math.imul(D,ce),i=i+Math.imul(B,he)|0,n=(n=n+Math.imul(B,pe)|0)+Math.imul(C,he)|0,a=a+Math.imul(C,pe)|0;var Re=(c+(i=i+Math.imul(R,fe)|0)|0)+((8191&(n=(n=n+Math.imul(R,me)|0)+Math.imul(P,fe)|0))<<13)|0;c=((a=a+Math.imul(P,me)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(F,he),n=(n=Math.imul(F,pe))+Math.imul(D,he)|0,a=Math.imul(D,pe);var Pe=(c+(i=i+Math.imul(B,fe)|0)|0)+((8191&(n=(n=n+Math.imul(B,me)|0)+Math.imul(C,fe)|0))<<13)|0;c=((a=a+Math.imul(C,me)|0)+(n>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var Oe=(c+(i=Math.imul(F,fe))|0)+((8191&(n=(n=Math.imul(F,me))+Math.imul(D,fe)|0))<<13)|0;return c=((a=Math.imul(D,me))+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,u[0]=ge,u[1]=ve,u[2]=ye,u[3]=_e,u[4]=be,u[5]=we,u[6]=Ee,u[7]=ke,u[8]=Se,u[9]=xe,u[10]=je,u[11]=Ne,u[12]=Me,u[13]=Ie,u[14]=Ae,u[15]=Te,u[16]=Re,u[17]=Pe,u[18]=Oe,0!==c&&(u[19]=c,r.length++),r};function m(e,t,r){return(new g).mulp(e,t,r)}function g(e,t){this.x=e,this.y=t}Math.imul||(f=d),a.prototype.mulTo=function(e,t){var r,i=this.length+e.length;return r=10===this.length&&10===e.length?f(this,e,t):i<63?d(this,e,t):i<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,i=o,o=n}return 0!==i?r.words[a]=i:r.length--,r.strip()}(this,e,t):m(this,e,t),r},g.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},g.prototype.permute=function(e,t,r,i,n,a){for(var o=0;o>>=1)n++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*t;o>=26,t+=n/67108864|0,t+=a>>>26,this.words[r]=67108863&a}return 0!==t&&(this.words[r]=t,this.length++),this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n}return t}(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,o=Math.min((e-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,c=0;c=0&&(0!==l||c>=n);c--){var h=0|this.words[c];this.words[c]=l<<26-a|h>>>a,l=h&s}return u&&0!==l&&(u.words[u.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===s)return this.strip();for(i(-1===s),s=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,o=0|n.words[n.length-1];0!=(r=26-this._countBits(o))&&(n=n.ushln(r),i.iushln(r),o=0|n.words[n.length-1]);var s,u=i.length-n.length;if("mod"!==t){(s=new a(null)).length=u+1,s.words=new Array(s.length);for(var c=0;c=0;h--){var p=67108864*(0|i.words[n.length+h])+(0|i.words[n.length+h-1]);for(p=Math.min(p/o|0,67108863),i._ishlnsubmul(n,p,h);0!==i.negative;)p--,i.negative=0,i._ishlnsubmul(n,1,h),i.isZero()||(i.negative^=1);s&&(s.words[h]=p)}return s&&s.strip(),i.strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(n=s.div.neg()),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:n,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modn(e.words[0]))}:this._wordDiv(e,t);var n,o,s},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modn=function(e){i(e<=67108863);for(var t=(1<<26)%e,r=0,n=this.length-1;n>=0;n--)r=(t*r+(0|this.words[n]))%e;return r},a.prototype.idivn=function(e){i(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*t;this.words[r]=n/e|0,t=n%e}return this.strip()},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new a(1),o=new a(0),s=new a(0),u=new a(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var l=r.clone(),h=t.clone();!t.isZero();){for(var p=0,d=1;0==(t.words[0]&d)&&p<26;++p,d<<=1);if(p>0)for(t.iushrn(p);p-- >0;)(n.isOdd()||o.isOdd())&&(n.iadd(l),o.isub(h)),n.iushrn(1),o.iushrn(1);for(var f=0,m=1;0==(r.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(r.iushrn(f);f-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(l),u.isub(h)),s.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(s),o.isub(u)):(r.isub(t),s.isub(n),u.isub(o))}return{a:s,b:u,gcd:r.iushln(c)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,o=new a(1),s=new a(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,l=1;0==(t.words[0]&l)&&c<26;++c,l<<=1);if(c>0)for(t.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);for(var h=0,p=1;0==(r.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s)):(r.isub(t),s.isub(o))}return(n=0===t.cmpn(1)?o:s).cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new k(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var v={k256:null,p224:null,p192:null,p25519:null};function y(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function _(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function E(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(e){if("string"==typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function S(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},y.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},y.prototype.split=function(e,t){e.iushrn(this.n,0,t)},y.prototype.imulK=function(e){return e.imul(this.k)},n(_,y),_.prototype.split=function(e,t){for(var r=4194303,i=Math.min(e.length,9),n=0;n>>22,a=o}a>>>=22,e.words[n-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},_.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(v[e])return v[e];var t;if("k256"===e)t=new _;else if("p224"===e)t=new b;else if("p192"===e)t=new w;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new E}return v[e]=t,t},k.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},k.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),o=0;!n.isZero()&&0===n.andln(1);)o++,n.iushrn(1);i(!n.isZero());var s=new a(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new a(2*l*l).toRed(this);0!==this.pow(l,c).cmp(u);)l.redIAdd(u);for(var h=this.pow(l,n),p=this.pow(e,n.addn(1).iushrn(1)),d=this.pow(e,n),f=o;0!==d.cmp(s);){for(var m=d,g=0;0!==m.cmp(s);g++)m=m.redSqr();i(g=0;i--){for(var c=t.words[i],l=u-1;l>=0;l--){var h=c>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==h||0!==o?(o<<=1,o|=h,(4==++s||0===i&&0===l)&&(n=this.mul(n,r[o]),s=0,o=0)):s=0}u=26}return n},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new S(e)},n(S,k),S.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},S.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},S.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},S.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=r.nmd(e),this)},26138:(e,t,r)=>{var i=r(70980),n=r(99199),a=r(57859),o=r(92144),s=r(23663),u=r(23482),c=r(84818),l=r(89509).Buffer;e.exports=function(e,t,r){var h;h=e.padding?e.padding:r?1:4;var p,d=i(e),f=d.modulus.byteLength();if(t.length>f||new o(t).cmp(d.modulus)>=0)throw new Error("decryption error");p=r?c(new o(t),d):s(t,d);var m=l.alloc(f-p.length);if(p=l.concat([m,p],f),4===h)return function(e,t){var r=e.modulus.byteLength(),i=u("sha1").update(l.alloc(0)).digest(),o=i.length;if(0!==t[0])throw new Error("decryption error");var s=t.slice(1,o+1),c=t.slice(o+1),h=a(s,n(c,o)),p=a(c,n(h,r-o-1));if(function(e,t){e=l.from(e),t=l.from(t);var r=0,i=e.length;e.length!==t.length&&(r++,i=Math.min(e.length,t.length));for(var n=-1;++n=t.length){a++;break}var o=t.slice(2,n-1);if(("0002"!==i.toString("hex")&&!r||"0001"!==i.toString("hex")&&r)&&a++,o.length<8&&a++,a)throw new Error("decryption error");return t.slice(n)}(0,p,r);if(3===h)return p;throw new Error("unknown padding")}},16559:(e,t,r)=>{var i=r(70980),n=r(61798),a=r(23482),o=r(99199),s=r(57859),u=r(92144),c=r(84818),l=r(23663),h=r(89509).Buffer;e.exports=function(e,t,r){var p;p=e.padding?e.padding:r?1:4;var d,f=i(e);if(4===p)d=function(e,t){var r=e.modulus.byteLength(),i=t.length,c=a("sha1").update(h.alloc(0)).digest(),l=c.length,p=2*l;if(i>r-p-2)throw new Error("message too long");var d=h.alloc(r-i-p-2),f=r-l-1,m=n(l),g=s(h.concat([c,d,h.alloc(1,1),t],f),o(m,f)),v=s(m,o(g,l));return new u(h.concat([h.alloc(1),v,g],r))}(f,t);else if(1===p)d=function(e,t,r){var i,a=t.length,o=e.modulus.byteLength();if(a>o-11)throw new Error("message too long");return i=r?h.alloc(o-a-3,255):function(e){for(var t,r=h.allocUnsafe(e),i=0,a=n(2*e),o=0;i=0)throw new Error("data too long for modulus")}return r?l(d,f):c(d,f)}},84818:(e,t,r)=>{var i=r(92144),n=r(89509).Buffer;e.exports=function(e,t){return n.from(e.toRed(i.mont(t.modulus)).redPow(new i(t.publicExponent)).fromRed().toArray())}},57859:e=>{e.exports=function(e,t){for(var r=e.length,i=-1;++i{"use strict";r.r(t),r.d(t,{decode:()=>v,default:()=>w,encode:()=>y,toASCII:()=>b,toUnicode:()=>_,ucs2decode:()=>d,ucs2encode:()=>f});const i=2147483647,n=36,a=/^xn--/,o=/[^\0-\x7E]/,s=/[\x2E\u3002\uFF0E\uFF61]/g,u={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},c=Math.floor,l=String.fromCharCode;function h(e){throw new RangeError(u[e])}function p(e,t){const r=e.split("@");let i="";r.length>1&&(i=r[0]+"@",e=r[1]);const n=function(e,t){const r=[];let i=e.length;for(;i--;)r[i]=t(e[i]);return r}((e=e.replace(s,".")).split("."),t).join(".");return i+n}function d(e){const t=[];let r=0;const i=e.length;for(;r=55296&&n<=56319&&rString.fromCodePoint(...e),m=function(e,t){return e+22+75*(e<26)-((0!=t)<<5)},g=function(e,t,r){let i=0;for(e=r?c(e/700):e>>1,e+=c(e/t);e>455;i+=n)e=c(e/35);return c(i+36*e/(e+38))},v=function(e){const t=[],r=e.length;let a=0,o=128,s=72,u=e.lastIndexOf("-");u<0&&(u=0);for(let r=0;r=128&&h("not-basic"),t.push(e.charCodeAt(r));for(let p=u>0?u+1:0;p=r&&h("invalid-input");const u=(l=e.charCodeAt(p++))-48<10?l-22:l-65<26?l-65:l-97<26?l-97:n;(u>=n||u>c((i-a)/t))&&h("overflow"),a+=u*t;const d=o<=s?1:o>=s+26?26:o-s;if(uc(i/f)&&h("overflow"),t*=f}const d=t.length+1;s=g(a-u,d,0==u),c(a/d)>i-o&&h("overflow"),o+=c(a/d),a%=d,t.splice(a++,0,o)}var l;return String.fromCodePoint(...t)},y=function(e){const t=[];let r=(e=d(e)).length,a=128,o=0,s=72;for(const r of e)r<128&&t.push(l(r));let u=t.length,p=u;for(u&&t.push("-");p=a&&tc((i-o)/d)&&h("overflow"),o+=(r-a)*d,a=r;for(const r of e)if(ri&&h("overflow"),r==a){let e=o;for(let r=n;;r+=n){const i=r<=s?1:r>=s+26?26:r-s;if(e{"use strict";var t=String.prototype.replace,r=/%20/g;e.exports={default:"RFC3986",formatters:{RFC1738:function(e){return t.call(e,r,"+")},RFC3986:function(e){return String(e)}},RFC1738:"RFC1738",RFC3986:"RFC3986"}},80129:(e,t,r)=>{"use strict";var i=r(58261),n=r(55235),a=r(55798);e.exports={formats:a,parse:n,stringify:i}},55235:(e,t,r)=>{"use strict";var i=r(12769),n=Object.prototype.hasOwnProperty,a={allowDots:!1,allowPrototypes:!1,arrayLimit:20,decoder:i.decode,delimiter:"&",depth:5,parameterLimit:1e3,plainObjects:!1,strictNullHandling:!1},o=function(e,t,r){if(e){var i=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,a=/(\[[^[\]]*])/g,o=/(\[[^[\]]*])/.exec(i),s=o?i.slice(0,o.index):i,u=[];if(s){if(!r.plainObjects&&n.call(Object.prototype,s)&&!r.allowPrototypes)return;u.push(s)}for(var c=0;null!==(o=a.exec(i))&&c=0;--n){var a,o=e[n];if("[]"===o&&r.parseArrays)a=[].concat(i);else{a=r.plainObjects?Object.create(null):{};var s="["===o.charAt(0)&&"]"===o.charAt(o.length-1)?o.slice(1,-1):o,u=parseInt(s,10);r.parseArrays||""!==s?!isNaN(u)&&o!==s&&String(u)===s&&u>=0&&r.parseArrays&&u<=r.arrayLimit?(a=[])[u]=i:"__proto__"!==s&&(a[s]=i):a={0:i}}i=a}return i}(u,t,r)}};e.exports=function(e,t){var r=t?i.assign({},t):{};if(null!==r.decoder&&void 0!==r.decoder&&"function"!=typeof r.decoder)throw new TypeError("Decoder has to be a function.");if(r.ignoreQueryPrefix=!0===r.ignoreQueryPrefix,r.delimiter="string"==typeof r.delimiter||i.isRegExp(r.delimiter)?r.delimiter:a.delimiter,r.depth="number"==typeof r.depth?r.depth:a.depth,r.arrayLimit="number"==typeof r.arrayLimit?r.arrayLimit:a.arrayLimit,r.parseArrays=!1!==r.parseArrays,r.decoder="function"==typeof r.decoder?r.decoder:a.decoder,r.allowDots="boolean"==typeof r.allowDots?r.allowDots:a.allowDots,r.plainObjects="boolean"==typeof r.plainObjects?r.plainObjects:a.plainObjects,r.allowPrototypes="boolean"==typeof r.allowPrototypes?r.allowPrototypes:a.allowPrototypes,r.parameterLimit="number"==typeof r.parameterLimit?r.parameterLimit:a.parameterLimit,r.strictNullHandling="boolean"==typeof r.strictNullHandling?r.strictNullHandling:a.strictNullHandling,""===e||null==e)return r.plainObjects?Object.create(null):{};for(var s="string"==typeof e?function(e,t){for(var r={},i=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,o=t.parameterLimit===1/0?void 0:t.parameterLimit,s=i.split(t.delimiter,o),u=0;u{"use strict";var i=r(12769),n=r(55798),a={brackets:function(e){return e+"[]"},indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},o=Array.isArray,s=Array.prototype.push,u=function(e,t){s.apply(e,o(t)?t:[t])},c=Date.prototype.toISOString,l={delimiter:"&",encode:!0,encoder:i.encode,encodeValuesOnly:!1,serializeDate:function(e){return c.call(e)},skipNulls:!1,strictNullHandling:!1},h=function e(t,r,n,a,s,c,h,p,d,f,m,g){var v=t;if("function"==typeof h?v=h(r,v):v instanceof Date&&(v=f(v)),null===v){if(a)return c&&!g?c(r,l.encoder):r;v=""}if("string"==typeof v||"number"==typeof v||"boolean"==typeof v||i.isBuffer(v))return c?[m(g?r:c(r,l.encoder))+"="+m(c(v,l.encoder))]:[m(r)+"="+m(String(v))];var y,_=[];if(void 0===v)return _;if(o(h))y=h;else{var b=Object.keys(v);y=p?b.sort(p):b}for(var w=0;w0?I+M:""}},12769:e=>{"use strict";var t=Object.prototype.hasOwnProperty,r=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),i=function(e,t){for(var r=t&&t.plainObjects?Object.create(null):{},i=0;i=48&&a<=57||a>=65&&a<=90||a>=97&&a<=122?i+=t.charAt(n):a<128?i+=r[a]:a<2048?i+=r[192|a>>6]+r[128|63&a]:a<55296||a>=57344?i+=r[224|a>>12]+r[128|a>>6&63]+r[128|63&a]:(n+=1,a=65536+((1023&a)<<10|1023&t.charCodeAt(n)),i+=r[240|a>>18]+r[128|a>>12&63]+r[128|a>>6&63]+r[128|63&a])}return i},isBuffer:function(e){return null!=e&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},merge:function e(r,n,a){if(!n)return r;if("object"!=typeof n){if(Array.isArray(r))r.push(n);else{if(!r||"object"!=typeof r)return[r,n];(a&&(a.plainObjects||a.allowPrototypes)||!t.call(Object.prototype,n))&&(r[n]=!0)}return r}if(!r||"object"!=typeof r)return[r].concat(n);var o=r;return Array.isArray(r)&&!Array.isArray(n)&&(o=i(r,a)),Array.isArray(r)&&Array.isArray(n)?(n.forEach((function(i,n){if(t.call(r,n)){var o=r[n];o&&"object"==typeof o&&i&&"object"==typeof i?r[n]=e(o,i,a):r.push(i)}else r[n]=i})),r):Object.keys(n).reduce((function(r,i){var o=n[i];return t.call(r,i)?r[i]=e(r[i],o,a):r[i]=o,r}),o)}}},62587:e=>{"use strict";function t(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,r,i,n){r=r||"&",i=i||"=";var a={};if("string"!=typeof e||0===e.length)return a;var o=/\+/g;e=e.split(r);var s=1e3;n&&"number"==typeof n.maxKeys&&(s=n.maxKeys);var u=e.length;s>0&&u>s&&(u=s);for(var c=0;c=0?(l=f.substr(0,m),h=f.substr(m+1)):(l=f,h=""),p=decodeURIComponent(l),d=decodeURIComponent(h),t(a,p)?Array.isArray(a[p])?a[p].push(d):a[p]=[a[p],d]:a[p]=d}return a}},12361:e=>{"use strict";var t=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,r,i,n){return r=r||"&",i=i||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map((function(n){var a=encodeURIComponent(t(n))+i;return Array.isArray(e[n])?e[n].map((function(e){return a+encodeURIComponent(t(e))})).join(r):a+encodeURIComponent(t(e[n]))})).join(r):n?encodeURIComponent(t(n))+i+encodeURIComponent(t(e)):""}},17673:(e,t,r)=>{"use strict";t.decode=t.parse=r(62587),t.encode=t.stringify=r(12361)},61798:(e,t,r)=>{"use strict";var i=r(34155),n=65536,a=r(89509).Buffer,o=r.g.crypto||r.g.msCrypto;o&&o.getRandomValues?e.exports=function(e,t){if(e>4294967295)throw new RangeError("requested too many random bytes");var r=a.allocUnsafe(e);if(e>0)if(e>n)for(var s=0;s{"use strict";var i=r(34155);function n(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var a=r(89509),o=r(61798),s=a.Buffer,u=a.kMaxLength,c=r.g.crypto||r.g.msCrypto,l=Math.pow(2,32)-1;function h(e,t){if("number"!=typeof e||e!=e)throw new TypeError("offset must be a number");if(e>l||e<0)throw new TypeError("offset must be a uint32");if(e>u||e>t)throw new RangeError("offset out of range")}function p(e,t,r){if("number"!=typeof e||e!=e)throw new TypeError("size must be a number");if(e>l||e<0)throw new TypeError("size must be a uint32");if(e+t>r||e>u)throw new RangeError("buffer too small")}function d(e,t,r,n){if(i.browser){var a=e.buffer,s=new Uint8Array(a,t,r);return c.getRandomValues(s),n?void i.nextTick((function(){n(null,e)})):e}if(!n)return o(r).copy(e,t),e;o(r,(function(r,i){if(r)return n(r);i.copy(e,t),n(null,e)}))}c&&c.getRandomValues||!i.browser?(t.randomFill=function(e,t,i,n){if(!(s.isBuffer(e)||e instanceof r.g.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"==typeof t)n=t,t=0,i=e.length;else if("function"==typeof i)n=i,i=e.length-t;else if("function"!=typeof n)throw new TypeError('"cb" argument must be a function');return h(t,e.length),p(i,t,e.length),d(e,t,i,n)},t.randomFillSync=function(e,t,i){if(void 0===t&&(t=0),!(s.isBuffer(e)||e instanceof r.g.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return h(t,e.length),void 0===i&&(i=e.length-t),p(i,t,e.length),d(e,t,i)}):(t.randomFill=n,t.randomFillSync=n)},94281:e=>{"use strict";var t={};function r(e,r,i){i||(i=Error);var n=function(e){var t,i;function n(t,i,n){return e.call(this,function(e,t,i){return"string"==typeof r?r:r(e,t,i)}(t,i,n))||this}return i=e,(t=n).prototype=Object.create(i.prototype),t.prototype.constructor=t,t.__proto__=i,n}(i);n.prototype.name=i.name,n.prototype.code=e,t[e]=n}function i(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map((function(e){return String(e)})),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:2===r?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}return"of ".concat(t," ").concat(String(e))}r("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),r("ERR_INVALID_ARG_TYPE",(function(e,t,r){var n,a,o,s,u;if("string"==typeof t&&(a="not ",t.substr(0,a.length)===a)?(n="must not be",t=t.replace(/^not /,"")):n="must be",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e," argument"))o="The ".concat(e," ").concat(n," ").concat(i(t,"type"));else{var c=("number"!=typeof u&&(u=0),u+".".length>(s=e).length||-1===s.indexOf(".",u)?"argument":"property");o='The "'.concat(e,'" ').concat(c," ").concat(n," ").concat(i(t,"type"))}return o+". Received type ".concat(typeof r)}),TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),e.exports.q=t},56753:(e,t,r)=>{"use strict";var i=r(34155),n=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=l;var a=r(79481),o=r(64229);r(35717)(l,a);for(var s=n(o.prototype),u=0;u{"use strict";e.exports=n;var i=r(74605);function n(e){if(!(this instanceof n))return new n(e);i.call(this,e)}r(35717)(n,i),n.prototype._transform=function(e,t,r){r(null,e)}},79481:(e,t,r)=>{"use strict";var i,n=r(34155);e.exports=x,x.ReadableState=S,r(17187).EventEmitter;var a,o=function(e,t){return e.listeners(t).length},s=r(22503),u=r(48764).Buffer,c=r.g.Uint8Array||function(){},l=r(94616);a=l&&l.debuglog?l.debuglog("stream"):function(){};var h,p,d,f=r(57327),m=r(61195),g=r(82457).getHighWaterMark,v=r(94281).q,y=v.ERR_INVALID_ARG_TYPE,_=v.ERR_STREAM_PUSH_AFTER_EOF,b=v.ERR_METHOD_NOT_IMPLEMENTED,w=v.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;r(35717)(x,s);var E=m.errorOrDestroy,k=["error","close","destroy","pause","resume"];function S(e,t,n){i=i||r(56753),e=e||{},"boolean"!=typeof n&&(n=t instanceof i),this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=g(this,e,"readableHighWaterMark",n),this.buffer=new f,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(h||(h=r(32553).s),this.decoder=new h(e.encoding),this.encoding=e.encoding)}function x(e){if(i=i||r(56753),!(this instanceof x))return new x(e);var t=this instanceof i;this._readableState=new S(e,this,t),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),s.call(this)}function j(e,t,r,i,n){a("readableAddChunk",t);var o,s=e._readableState;if(null===t)s.reading=!1,function(e,t){if(a("onEofChunk"),!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?A(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,T(e)))}}(e,s);else if(n||(o=function(e,t){var r,i;return i=t,u.isBuffer(i)||i instanceof c||"string"==typeof t||void 0===t||e.objectMode||(r=new y("chunk",["string","Buffer","Uint8Array"],t)),r}(s,t)),o)E(e,o);else if(s.objectMode||t&&t.length>0)if("string"==typeof t||s.objectMode||Object.getPrototypeOf(t)===u.prototype||(t=function(e){return u.from(e)}(t)),i)s.endEmitted?E(e,new w):N(e,s,t,!0);else if(s.ended)E(e,new _);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!r?(t=s.decoder.write(t),s.objectMode||0!==t.length?N(e,s,t,!1):R(e,s)):N(e,s,t,!1)}else i||(s.reading=!1,R(e,s));return!s.ended&&(s.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=M?e=M:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function A(e){var t=e._readableState;a("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(a("emitReadable",t.flowing),t.emittedReadable=!0,n.nextTick(T,e))}function T(e){var t=e._readableState;a("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,z(e)}function R(e,t){t.readingMore||(t.readingMore=!0,n.nextTick(P,e,t))}function P(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function B(e){a("readable nexttick read 0"),e.read(0)}function C(e,t){a("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),z(e),t.flowing&&!t.reading&&e.read(0)}function z(e){var t=e._readableState;for(a("flow",t.flowing);t.flowing&&null!==e.read(););}function F(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function D(e){var t=e._readableState;a("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,n.nextTick(q,t,e))}function q(e,t){if(a("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function L(e,t){for(var r=0,i=e.length;r=t.highWaterMark:t.length>0)||t.ended))return a("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?D(this):A(this),null;if(0===(e=I(e,t))&&t.ended)return 0===t.length&&D(this),null;var i,n=t.needReadable;return a("need readable",n),(0===t.length||t.length-e0?F(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&D(this)),null!==i&&this.emit("data",i),i},x.prototype._read=function(e){E(this,new b("_read()"))},x.prototype.pipe=function(e,t){var r=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e)}i.pipesCount+=1,a("pipe count=%d opts=%j",i.pipesCount,t);var s=t&&!1===t.end||e===n.stdout||e===n.stderr?m:u;function u(){a("onend"),e.end()}i.endEmitted?n.nextTick(s):r.once("end",s),e.on("unpipe",(function t(n,o){a("onunpipe"),n===r&&o&&!1===o.hasUnpiped&&(o.hasUnpiped=!0,a("cleanup"),e.removeListener("close",d),e.removeListener("finish",f),e.removeListener("drain",c),e.removeListener("error",p),e.removeListener("unpipe",t),r.removeListener("end",u),r.removeListener("end",m),r.removeListener("data",h),l=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||c())}));var c=function(e){return function(){var t=e._readableState;a("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&o(e,"data")&&(t.flowing=!0,z(e))}}(r);e.on("drain",c);var l=!1;function h(t){a("ondata");var n=e.write(t);a("dest.write",n),!1===n&&((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==L(i.pipes,e))&&!l&&(a("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function p(t){a("onerror",t),m(),e.removeListener("error",p),0===o(e,"error")&&E(e,t)}function d(){e.removeListener("finish",f),m()}function f(){a("onfinish"),e.removeListener("close",d),m()}function m(){a("unpipe"),r.unpipe(e)}return r.on("data",h),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events.error?Array.isArray(e._events.error)?e._events.error.unshift(r):e._events.error=[r,e._events.error]:e.on(t,r)}(e,"error",p),e.once("close",d),e.once("finish",f),e.emit("pipe",r),i.flowing||(a("pipe resume"),r.resume()),e},x.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;if(!e){var i=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a0,!1!==i.flowing&&this.resume()):"readable"===e&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,a("on readable",i.length,i.reading),i.length?A(this):i.reading||n.nextTick(B,this))),r},x.prototype.addListener=x.prototype.on,x.prototype.removeListener=function(e,t){var r=s.prototype.removeListener.call(this,e,t);return"readable"===e&&n.nextTick(O,this),r},x.prototype.removeAllListeners=function(e){var t=s.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||n.nextTick(O,this),t},x.prototype.resume=function(){var e=this._readableState;return e.flowing||(a("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,n.nextTick(C,e,t))}(this,e)),e.paused=!1,this},x.prototype.pause=function(){return a("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(a("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},x.prototype.wrap=function(e){var t=this,r=this._readableState,i=!1;for(var n in e.on("end",(function(){if(a("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(n){a("wrapped data"),r.decoder&&(n=r.decoder.write(n)),r.objectMode&&null==n||(r.objectMode||n&&n.length)&&(t.push(n)||(i=!0,e.pause()))})),e)void 0===this[n]&&"function"==typeof e[n]&&(this[n]=function(t){return function(){return e[t].apply(e,arguments)}}(n));for(var o=0;o{"use strict";e.exports=l;var i=r(94281).q,n=i.ERR_METHOD_NOT_IMPLEMENTED,a=i.ERR_MULTIPLE_CALLBACK,o=i.ERR_TRANSFORM_ALREADY_TRANSFORMING,s=i.ERR_TRANSFORM_WITH_LENGTH_0,u=r(56753);function c(e,t){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(null===i)return this.emit("error",new a);r.writechunk=null,r.writecb=null,null!=t&&this.push(t),i(e);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";var i,n=r(34155);function a(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var i=e.entry;for(e.entry=null;i;){var n=i.callback;t.pendingcb--,n(undefined),i=i.next}t.corkedRequestsFree.next=e}(t,e)}}e.exports=x,x.WritableState=S;var o,s={deprecate:r(94927)},u=r(22503),c=r(48764).Buffer,l=r.g.Uint8Array||function(){},h=r(61195),p=r(82457).getHighWaterMark,d=r(94281).q,f=d.ERR_INVALID_ARG_TYPE,m=d.ERR_METHOD_NOT_IMPLEMENTED,g=d.ERR_MULTIPLE_CALLBACK,v=d.ERR_STREAM_CANNOT_PIPE,y=d.ERR_STREAM_DESTROYED,_=d.ERR_STREAM_NULL_VALUES,b=d.ERR_STREAM_WRITE_AFTER_END,w=d.ERR_UNKNOWN_ENCODING,E=h.errorOrDestroy;function k(){}function S(e,t,o){i=i||r(56753),e=e||{},"boolean"!=typeof o&&(o=t instanceof i),this.objectMode=!!e.objectMode,o&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=p(this,e,"writableHighWaterMark",o),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=!1===e.decodeStrings;this.decodeStrings=!s,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,i=r.sync,a=r.writecb;if("function"!=typeof a)throw new g;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,i,a){--t.pendingcb,r?(n.nextTick(a,i),n.nextTick(T,e,t),e._writableState.errorEmitted=!0,E(e,i)):(a(i),e._writableState.errorEmitted=!0,E(e,i),T(e,t))}(e,r,i,t,a);else{var o=I(r)||e.destroyed;o||r.corked||r.bufferProcessing||!r.bufferedRequest||M(e,r),i?n.nextTick(N,e,r,o,a):N(e,r,o,a)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new a(this)}function x(e){var t=this instanceof(i=i||r(56753));if(!t&&!o.call(x,this))return new x(e);this._writableState=new S(e,this,t),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),u.call(this)}function j(e,t,r,i,n,a,o){t.writelen=i,t.writecb=o,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new y("write")):r?e._writev(n,t.onwrite):e._write(n,a,t.onwrite),t.sync=!1}function N(e,t,r,i){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,i(),T(e,t)}function M(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var i=t.bufferedRequestCount,n=new Array(i),o=t.corkedRequestsFree;o.entry=r;for(var s=0,u=!0;r;)n[s]=r,r.isBuf||(u=!1),r=r.next,s+=1;n.allBuffers=u,j(e,t,!0,t.length,n,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new a(t),t.bufferedRequestCount=0}else{for(;r;){var c=r.chunk,l=r.encoding,h=r.callback;if(j(e,t,!1,t.objectMode?1:c.length,c,l,h),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function I(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function A(e,t){e._final((function(r){t.pendingcb--,r&&E(e,r),t.prefinished=!0,e.emit("prefinish"),T(e,t)}))}function T(e,t){var r=I(t);if(r&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,n.nextTick(A,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"),t.autoDestroy))){var i=e._readableState;(!i||i.autoDestroy&&i.endEmitted)&&e.destroy()}return r}r(35717)(x,u),S.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(S.prototype,"buffer",{get:s.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(o=Function.prototype[Symbol.hasInstance],Object.defineProperty(x,Symbol.hasInstance,{value:function(e){return!!o.call(this,e)||this===x&&e&&e._writableState instanceof S}})):o=function(e){return e instanceof this},x.prototype.pipe=function(){E(this,new v)},x.prototype.write=function(e,t,r){var i,a=this._writableState,o=!1,s=!a.objectMode&&(i=e,c.isBuffer(i)||i instanceof l);return s&&!c.isBuffer(e)&&(e=function(e){return c.from(e)}(e)),"function"==typeof t&&(r=t,t=null),s?t="buffer":t||(t=a.defaultEncoding),"function"!=typeof r&&(r=k),a.ending?function(e,t){var r=new b;E(e,r),n.nextTick(t,r)}(this,r):(s||function(e,t,r,i){var a;return null===r?a=new _:"string"==typeof r||t.objectMode||(a=new f("chunk",["string","Buffer"],r)),!a||(E(e,a),n.nextTick(i,a),!1)}(this,a,e,r))&&(a.pendingcb++,o=function(e,t,r,i,n,a){if(!r){var o=function(e,t,r){return e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=c.from(t,r)),t}(t,i,n);i!==o&&(r=!0,n="buffer",i=o)}var s=t.objectMode?1:i.length;t.length+=s;var u=t.length-1))throw new w(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(x.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(x.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),x.prototype._write=function(e,t,r){r(new m("_write()"))},x.prototype._writev=null,x.prototype.end=function(e,t,r){var i=this._writableState;return"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),i.corked&&(i.corked=1,this.uncork()),i.ending||function(e,t,r){t.ending=!0,T(e,t),r&&(t.finished?n.nextTick(r):e.once("finish",r)),t.ended=!0,e.writable=!1}(this,i,r),this},Object.defineProperty(x.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(x.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),x.prototype.destroy=h.destroy,x.prototype._undestroy=h.undestroy,x.prototype._destroy=function(e,t){t(e)}},45850:(e,t,r)=>{"use strict";var i,n=r(34155);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var o=r(8610),s=Symbol("lastResolve"),u=Symbol("lastReject"),c=Symbol("error"),l=Symbol("ended"),h=Symbol("lastPromise"),p=Symbol("handlePromise"),d=Symbol("stream");function f(e,t){return{value:e,done:t}}function m(e){var t=e[s];if(null!==t){var r=e[d].read();null!==r&&(e[h]=null,e[s]=null,e[u]=null,t(f(r,!1)))}}function g(e){n.nextTick(m,e)}var v=Object.getPrototypeOf((function(){})),y=Object.setPrototypeOf((a(i={get stream(){return this[d]},next:function(){var e=this,t=this[c];if(null!==t)return Promise.reject(t);if(this[l])return Promise.resolve(f(void 0,!0));if(this[d].destroyed)return new Promise((function(t,r){n.nextTick((function(){e[c]?r(e[c]):t(f(void 0,!0))}))}));var r,i=this[h];if(i)r=new Promise(function(e,t){return function(r,i){e.then((function(){t[l]?r(f(void 0,!0)):t[p](r,i)}),i)}}(i,this));else{var a=this[d].read();if(null!==a)return Promise.resolve(f(a,!1));r=new Promise(this[p])}return this[h]=r,r}},Symbol.asyncIterator,(function(){return this})),a(i,"return",(function(){var e=this;return new Promise((function(t,r){e[d].destroy(null,(function(e){e?r(e):t(f(void 0,!0))}))}))})),i),v);e.exports=function(e){var t,r=Object.create(y,(a(t={},d,{value:e,writable:!0}),a(t,s,{value:null,writable:!0}),a(t,u,{value:null,writable:!0}),a(t,c,{value:null,writable:!0}),a(t,l,{value:e._readableState.endEmitted,writable:!0}),a(t,p,{value:function(e,t){var i=r[d].read();i?(r[h]=null,r[s]=null,r[u]=null,e(f(i,!1))):(r[s]=e,r[u]=t)},writable:!0}),t));return r[h]=null,o(e,(function(e){if(e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code){var t=r[u];return null!==t&&(r[h]=null,r[s]=null,r[u]=null,t(e)),void(r[c]=e)}var i=r[s];null!==i&&(r[h]=null,r[s]=null,r[u]=null,i(f(void 0,!0))),r[l]=!0})),e.on("readable",g.bind(null,r)),r}},57327:(e,t,r)=>{"use strict";function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){for(var r=0;r0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r}},{key:"concat",value:function(e){if(0===this.length)return o.alloc(0);for(var t,r,i,n=o.allocUnsafe(e>>>0),a=this.head,s=0;a;)t=a.data,r=n,i=s,o.prototype.copy.call(t,r,i),s+=a.data.length,a=a.next;return n}},{key:"consume",value:function(e,t){var r;return en.length?n.length:e;if(a===n.length?i+=n:i+=n.slice(0,e),0==(e-=a)){a===n.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=n.slice(a));break}++r}return this.length-=r,i}},{key:"_getBuffer",value:function(e){var t=o.allocUnsafe(e),r=this.head,i=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var n=r.data,a=e>n.length?n.length:e;if(n.copy(t,t.length-e,0,a),0==(e-=a)){a===n.length?(++i,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=n.slice(a));break}++i}return this.length-=i,t}},{key:u,value:function(e,t){return s(this,function(e){for(var t=1;t{"use strict";var i=r(34155);function n(e,t){o(e,t),a(e)}function a(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function o(e,t){e.emit("error",t)}e.exports={destroy:function(e,t){var r=this,s=this._readableState&&this._readableState.destroyed,u=this._writableState&&this._writableState.destroyed;return s||u?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,i.nextTick(o,this,e)):i.nextTick(o,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!t&&e?r._writableState?r._writableState.errorEmitted?i.nextTick(a,r):(r._writableState.errorEmitted=!0,i.nextTick(n,r,e)):i.nextTick(n,r,e):t?(i.nextTick(a,r),t(e)):i.nextTick(a,r)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(e,t){var r=e._readableState,i=e._writableState;r&&r.autoDestroy||i&&i.autoDestroy?e.destroy(t):e.emit("error",t)}}},8610:(e,t,r)=>{"use strict";var i=r(94281).q.ERR_STREAM_PREMATURE_CLOSE;function n(){}e.exports=function e(t,r,a){if("function"==typeof r)return e(t,null,r);r||(r={}),a=function(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,i=new Array(r),n=0;n{e.exports=function(){throw new Error("Readable.from is not available in the browser")}},59946:(e,t,r)=>{"use strict";var i,n=r(94281).q,a=n.ERR_MISSING_ARGS,o=n.ERR_STREAM_DESTROYED;function s(e){if(e)throw e}function u(e,t,n,a){a=function(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}(a);var s=!1;e.on("close",(function(){s=!0})),void 0===i&&(i=r(8610)),i(e,{readable:t,writable:n},(function(e){if(e)return a(e);s=!0,a()}));var u=!1;return function(t){if(!s&&!u)return u=!0,function(e){return e.setHeader&&"function"==typeof e.abort}(e)?e.abort():"function"==typeof e.destroy?e.destroy():void a(t||new o("pipe"))}}function c(e){e()}function l(e,t){return e.pipe(t)}function h(e){return e.length?"function"!=typeof e[e.length-1]?s:e.pop():s}e.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;r0,(function(e){i||(i=e),e&&o.forEach(c),a||(o.forEach(c),n(i))}))}));return t.reduce(l)}},82457:(e,t,r)=>{"use strict";var i=r(94281).q.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(e,t,r,n){var a=function(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,n,r);if(null!=a){if(!isFinite(a)||Math.floor(a)!==a||a<0)throw new i(n?r:"highWaterMark",a);return Math.floor(a)}return e.objectMode?16:16384}}},22503:(e,t,r)=>{e.exports=r(17187).EventEmitter},88473:(e,t,r)=>{(t=e.exports=r(79481)).Stream=t,t.Readable=t,t.Writable=r(64229),t.Duplex=r(56753),t.Transform=r(74605),t.PassThrough=r(82725),t.finished=r(8610),t.pipeline=r(59946)},79066:(e,t,r)=>{"use strict";var i=r(80556),n=r(1469),a=r(23560),o=r(37005);e.exports=function(e){var t="Please verify options";if(!o(e))throw new TypeError(t);if(!a(e.request))throw new TypeError(t+".request");if(!n(e.expose)||0===e.expose.length)throw new TypeError(t+".expose");var r=i({PromiseImpl:e.PromiseImpl,constructorMixin:e.constructorMixin}),s=e.request.Request.prototype.init;e.request.Request.prototype.init=function(e){return!o(e)||this._callback||this._rp_promise||r.init.call(this,e),s.apply(this,arguments)};for(var u=!1,c=0;c{"use strict";function t(e,t,r){this.name="RequestError",this.message=String(e),this.cause=e,this.error=e,this.options=t,this.response=r,Error.captureStackTrace&&Error.captureStackTrace(this)}function r(e,t,r,i){this.name="StatusCodeError",this.statusCode=e,this.message=e+" - "+(JSON&&JSON.stringify?JSON.stringify(t):t),this.error=t,this.options=r,this.response=i,Error.captureStackTrace&&Error.captureStackTrace(this)}function i(e,t,r){this.name="TransformError",this.message=String(e),this.cause=e,this.error=e,this.options=t,this.response=r,Error.captureStackTrace&&Error.captureStackTrace(this)}t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,e.exports={RequestError:t,StatusCodeError:r,TransformError:i}},80556:(e,t,r)=>{"use strict";var i=r(72561),n=r(23560),a=r(37005),o=r(47037),s=r(52353);e.exports=function(e){var t="Please verify options";if(!a(e))throw new TypeError(t);if(!n(e.PromiseImpl))throw new TypeError(t+".PromiseImpl");if(!s(e.constructorMixin)&&!n(e.constructorMixin))throw new TypeError(t+".PromiseImpl");var r=e.PromiseImpl,u=e.constructorMixin,c={init:function(e){var t=this;t._rp_promise=new r((function(e,r){t._rp_resolve=e,t._rp_reject=r,u&&u.apply(t,arguments)})),t._rp_callbackOrig=e.callback,e.callback=t.callback=function(e,r,i){c.callback.call(t,e,r,i)},o(e.method)&&(e.method=e.method.toUpperCase()),e.transform=e.transform||c.defaultTransformations[e.method],t._rp_options=e,t._rp_options.simple=!1!==e.simple,t._rp_options.resolveWithFullResponse=!0===e.resolveWithFullResponse,t._rp_options.transform2xxOnly=!0===e.transform2xxOnly},defaultTransformations:{HEAD:function(e,t,r){return r?t:t.headers}},callback:function(e,t,a){var o=this,s=!1,u=null;if(n(o._rp_callbackOrig))try{o._rp_callbackOrig.apply(o,arguments)}catch(e){s=!0,u=e}var c=!e&&/^2/.test(""+t.statusCode);if(e?o._rp_reject(new i.RequestError(e,o._rp_options,t)):o._rp_options.simple&&!c?n(o._rp_options.transform)&&!1===o._rp_options.transform2xxOnly?new r((function(e){e(o._rp_options.transform(a,t,o._rp_options.resolveWithFullResponse))})).then((function(e){o._rp_reject(new i.StatusCodeError(t.statusCode,a,o._rp_options,e))})).catch((function(e){o._rp_reject(new i.TransformError(e,o._rp_options,t))})):o._rp_reject(new i.StatusCodeError(t.statusCode,a,o._rp_options,t)):n(o._rp_options.transform)&&(c||!1===o._rp_options.transform2xxOnly)?new r((function(e){e(o._rp_options.transform(a,t,o._rp_options.resolveWithFullResponse))})).then((function(e){o._rp_resolve(e)})).catch((function(e){o._rp_reject(new i.TransformError(e,o._rp_options,t))})):o._rp_options.resolveWithFullResponse?o._rp_resolve(t):o._rp_resolve(a),s)throw u},exposePromiseMethod:function(e,t,r,i,n){if((n=n||i)in e)throw new Error('Unable to expose method "'+n+'"');e[n]=function(){var e=t||this;return e[r][i].apply(e[r],arguments)}},exposePromise:function(e,t,r,i){if((i=i||"promise")in e)throw new Error('Unable to expose method "'+i+'"');e[i]=function(){return(t||this)[r]}}};return c}},8037:(e,t,r)=>{"use strict";e=r.nmd(e);var i=r(96624).getNewLibraryCopy(),n=r(79066),a=r(8799);try{var o=a(r.c,(function(){return r(34079)}),(function(){r(47857)}),e)}catch(e){var s=r(67435).bW;throw console.error(s+"###"+s+'### The "request" library is not installed automatically anymore.'+s+'### But is a dependency of "request-promise".'+s+"### Please install it with:"+s+"### npm install request --save"+s+"###"+s),e}i.config({cancellation:!0}),n({request:o,PromiseImpl:i,expose:["then","catch","finally","cancel","promise"],constructorMixin:function(e,t,r){var i=this;r((function(){i.abort()}))}}),o.bindCLS=function(){throw new Error("CLS support was dropped. To get it back read: https://github.com/request/request-promise/wiki/Getting-Back-Support-for-Continuation-Local-Storage")},e.exports=o},34079:(e,t,r)=>{"use strict";var i=r(94470),n=r(64220),a=r(89578).paramsHaveRequestBody;function o(e,t,r){"function"==typeof t&&(r=t);var n={};return null!==t&&"object"==typeof t?i(n,t,{uri:e}):i(n,"string"==typeof e?{uri:e}:e),n.callback=r||n.callback,n}function s(e,t,r){if(void 0===e)throw new Error("undefined is not a valid uri or options object.");var i=o(e,t,r);if("HEAD"===i.method&&a(i))throw new Error("HTTP HEAD requests MUST NOT include a request body.");return new s.Request(i)}function u(e){var t=e.toUpperCase();return function(e,r,i){var n=o(e,r,i);return n.method=t,s(n,n.callback)}}function c(e,t,r,n){return function(a,s,u){var c=o(a,s,u),l={};return i(!0,l,t,c),l.pool=c.pool||t.pool,n&&(l.method=n.toUpperCase()),"function"==typeof r&&(e=r),e(l,l.callback)}}s.get=u("get"),s.head=u("head"),s.options=u("options"),s.post=u("post"),s.put=u("put"),s.patch=u("patch"),s.del=u("delete"),s.delete=u("delete"),s.jar=function(e){return n.jar(e)},s.cookie=function(e){return n.parse(e)},s.defaults=function(e,t){var r=this;"function"==typeof(e=e||{})&&(t=e,e={});var i=c(r,e,t);return["get","head","post","put","patch","del","delete"].forEach((function(n){i[n]=c(r[n],e,t,n)})),i.cookie=c(r.cookie,e,t),i.jar=r.jar,i.defaults=r.defaults,i},s.forever=function(e,t){var r={};return t&&i(r,t),e&&(r.agentOptions=e),r.forever=!0,s.defaults(r)},e.exports=s,s.Request=r(79517),s.initParams=o,Object.defineProperty(s,"debug",{enumerable:!0,get:function(){return s.Request.debug},set:function(e){s.Request.debug=e}})},92169:(e,t,r)=>{"use strict";var i=r(9894),n=r(71171),a=r(89578),o=a.md5,s=a.toBase64;function u(e){this.request=e,this.hasAuth=!1,this.sentAuth=!1,this.bearerToken=null,this.user=null,this.pass=null}u.prototype.basic=function(e,t,r){var i=this;if(("string"!=typeof e||void 0!==t&&"string"!=typeof t)&&i.request.emit("error",new Error("auth() received invalid user or password")),i.user=e,i.pass=t,i.hasAuth=!0,r||void 0===r){var n="Basic "+s(e+":"+(t||""));return i.sentAuth=!0,n}},u.prototype.bearer=function(e,t){var r=this;if(r.bearerToken=e,r.hasAuth=!0,t||void 0===t){"function"==typeof e&&(e=e());var i="Bearer "+(e||"");return r.sentAuth=!0,i}},u.prototype.digest=function(e,t,r){for(var i=this,a={},s=/([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi;;){var u=s.exec(r);if(!u)break;a[u[1]]=u[2]||u[3]}var c=/(^|,)\s*auth\s*($|,)/.test(a.qop)&&"auth",l=c&&"00000001",h=c&&n().replace(/-/g,""),p=function(e,t,r,i,n,a){var s=o(t+":"+r+":"+i);return e&&"md5-sess"===e.toLowerCase()?o(s+":"+n+":"+a):s}(a.algorithm,i.user,a.realm,i.pass,a.nonce,h),d=o(e+":"+t),f=o(c?p+":"+a.nonce+":"+l+":"+h+":"+c+":"+d:p+":"+a.nonce+":"+d),m={username:i.user,realm:a.realm,nonce:a.nonce,uri:t,qop:c,response:f,nc:l,cnonce:h,algorithm:a.algorithm,opaque:a.opaque};for(var g in r=[],m)m[g]&&("qop"===g||"nc"===g||"algorithm"===g?r.push(g+"="+m[g]):r.push(g+'="'+m[g]+'"'));return r="Digest "+r.join(", "),i.sentAuth=!0,r},u.prototype.onRequest=function(e,t,r,i){var n,a=this,o=a.request;void 0===i&&void 0===e?a.request.emit("error",new Error("no auth mechanism defined")):n=void 0!==i?a.bearer(i,r):a.basic(e,t,r),n&&o.setHeader("authorization",n)},u.prototype.onResponse=function(e){var t=this,r=t.request;if(!t.hasAuth||t.sentAuth)return null;var n=i(e.headers).get("www-authenticate"),a=n&&n.split(" ")[0].toLowerCase();switch(r.debug("reauth",a),a){case"basic":return t.basic(t.user,t.pass,!0);case"bearer":return t.bearer(t.bearerToken,!0);case"digest":return t.digest(r.method,r.path,n)}},t.g=u},64220:(e,t,r)=>{"use strict";var i=r(47857),n=i.Cookie,a=i.CookieJar;function o(e){this._jar=new a(e,{looseMode:!0})}t.parse=function(e){if(e&&e.uri&&(e=e.uri),"string"!=typeof e)throw new Error("The cookie function only accepts STRING as param");return n.parse(e,{loose:!0})},o.prototype.setCookie=function(e,t,r){return this._jar.setCookieSync(e,t,r||{})},o.prototype.getCookieString=function(e){return this._jar.getCookieStringSync(e)},o.prototype.getCookies=function(e){return this._jar.getCookiesSync(e)},t.jar=function(e){return new o(e)}},26289:(e,t,r)=>{"use strict";var i=r(34155);function n(e){return e.replace(/^\.*/,".").toLowerCase()}function a(e){var t=(e=e.trim().toLowerCase()).split(":",2);return{hostname:n(t[0]),port:t[1],hasPort:e.indexOf(":")>-1}}e.exports=function(e){var t=i.env.NO_PROXY||i.env.no_proxy||"";return"*"===t||""!==t&&function(e,t){var r=e.port||("https:"===e.protocol?"443":"80"),i=n(e.hostname);return t.split(",").map(a).some((function(e){var t=i.indexOf(e.hostname),n=t>-1&&t===i.length-e.hostname.length;return e.hasPort?r===e.port&&n:n}))}(e,t)?null:"http:"===e.protocol?i.env.HTTP_PROXY||i.env.http_proxy||null:"https:"===e.protocol&&(i.env.HTTPS_PROXY||i.env.https_proxy||i.env.HTTP_PROXY||i.env.http_proxy)||null}},8107:(e,t,r)=>{"use strict";var i=r(76614),n=r(17673),a=r(86056),o=r(94470);function s(e){this.request=e}s.prototype.reducer=function(e,t){if(void 0===e[t.name])return e[t.name]=t.value,e;var r=[e[t.name],t.value];return e[t.name]=r,e},s.prototype.prep=function(e){if(e.queryObj={},e.headersObj={},e.postData.jsonObj=!1,e.postData.paramsObj=!1,e.queryString&&e.queryString.length&&(e.queryObj=e.queryString.reduce(this.reducer,{})),e.headers&&e.headers.length&&(e.headersObj=e.headers.reduceRight((function(e,t){return e[t.name]=t.value,e}),{})),e.cookies&&e.cookies.length){var t=e.cookies.map((function(e){return e.name+"="+e.value}));t.length&&(e.headersObj.cookie=t.join("; "))}function r(t){return t.some((function(t){return 0===e.postData.mimeType.indexOf(t)}))}if(r(["multipart/mixed","multipart/related","multipart/form-data","multipart/alternative"]))e.postData.mimeType="multipart/form-data";else if(r(["application/x-www-form-urlencoded"]))e.postData.params?(e.postData.paramsObj=e.postData.params.reduce(this.reducer,{}),e.postData.text=n.stringify(e.postData.paramsObj)):e.postData.text="";else if(r(["text/json","text/x-json","application/json","application/x-json"])&&(e.postData.mimeType="application/json",e.postData.text))try{e.postData.jsonObj=JSON.parse(e.postData.text)}catch(t){this.request.debug(t),e.postData.mimeType="text/plain"}return e},s.prototype.options=function(e){if(!e.har)return e;var t={};if(o(t,e.har),t.log&&t.log.entries&&(t=t.log.entries[0]),t.url=t.url||e.url||e.uri||e.baseUrl||"/",t.httpVersion=t.httpVersion||"HTTP/1.1",t.queryString=t.queryString||[],t.headers=t.headers||[],t.cookies=t.cookies||[],t.postData=t.postData||{},t.postData.mimeType=t.postData.mimeType||"application/octet-stream",t.bodySize=0,t.headersSize=0,t.postData.size=0,!a.request(t))return e;var r=this.prep(t);function n(e){return 0===r.postData.mimeType.indexOf(e)}return r.url&&(e.url=r.url),r.method&&(e.method=r.method),Object.keys(r.queryObj).length&&(e.qs=r.queryObj),Object.keys(r.headersObj).length&&(e.headers=r.headersObj),n("application/x-www-form-urlencoded")?e.form=r.postData.paramsObj:n("application/json")?r.postData.jsonObj&&(e.body=r.postData.jsonObj,e.json=!0):n("multipart/form-data")?(e.formData={},r.postData.params.forEach((function(t){var r={};t.fileName||t.contentType?(t.fileName&&!t.value?r.value=i.createReadStream(t.fileName):t.value&&(r.value=t.value),t.fileName&&(r.options={filename:t.fileName,contentType:t.contentType?t.contentType:null}),e.formData[t.name]=r):e.formData[t.name]=t.value}))):r.postData.text&&(e.body=r.postData.text),e},t.t=s},76514:(e,t,r)=>{"use strict";var i=r(55835);t.calculateMac=function(e,t){var r="hawk.1.header\n"+t.ts+"\n"+t.nonce+"\n"+(t.method||"").toUpperCase()+"\n"+t.resource+"\n"+t.host.toLowerCase()+"\n"+t.port+"\n"+(t.hash||"")+"\n";return t.ext&&(r+=t.ext.replace("\\","\\\\").replace("\n","\\n")),r+="\n",t.app&&(r=r+t.app+"\n"+(t.dlg||"")+"\n"),i.createHmac(e.algorithm,e.key).update(r).digest("base64")},t.header=function(e,r,n){var a=n.timestamp||Math.floor((Date.now()+(n.localtimeOffsetMsec||0))/1e3),o=n.credentials;if(!(o&&o.id&&o.key&&o.algorithm))return"";if(-1===["sha1","sha256"].indexOf(o.algorithm))return"";var s,u,c,l,h={ts:a,nonce:n.nonce||(6,42,i.randomBytes(Math.ceil(5.25)).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"").slice(0,6)),method:r,resource:e.pathname+(e.search||""),host:e.hostname,port:e.port||("http:"===e.protocol?80:443),hash:n.hash,ext:n.ext,app:n.app,dlg:n.dlg};h.hash||!n.payload&&""!==n.payload||(h.hash=(s=n.payload,u=o.algorithm,c=n.contentType,(l=i.createHash(u)).update("hawk.1.payload\n"),l.update((c?c.split(";")[0].trim().toLowerCase():"")+"\n"),l.update(s||""),l.update("\n"),l.digest("base64")));var p=t.calculateMac(o,h),d=null!==h.ext&&void 0!==h.ext&&""!==h.ext,f='Hawk id="'+o.id+'", ts="'+h.ts+'", nonce="'+h.nonce+(h.hash?'", hash="'+h.hash:"")+(d?'", ext="'+h.ext.replace(/\\/g,"\\\\").replace(/"/g,'\\"'):"")+'", mac="'+p+'"';return h.app&&(f=f+', app="'+h.app+(h.dlg?'", dlg="'+h.dlg:"")+'"'),f}},89578:(e,t,r)=>{"use strict";var i=r(34155),n=r(64530),a=r(55835),o=r(89509).Buffer,s="undefined"==typeof setImmediate?i.nextTick:setImmediate;t.paramsHaveRequestBody=function(e){return e.body||e.requestBodyStream||e.json&&"boolean"!=typeof e.json||e.multipart},t.safeStringify=function(e,t){var r;try{r=JSON.stringify(e,t)}catch(i){r=n(e,t)}return r},t.md5=function(e){return a.createHash("md5").update(e).digest("hex")},t.isReadStream=function(e){return e.readable&&e.path&&e.mode},t.toBase64=function(e){return o.from(e||"","utf8").toString("base64")},t.copy=function(e){var t={};return Object.keys(e).forEach((function(r){t[r]=e[r]})),t},t.version=function(){var e=i.version.replace("v","").split(".");return{major:parseInt(e[0],10),minor:parseInt(e[1],10),patch:parseInt(e[2],10)}},t.defer=s},46434:(e,t,r)=>{"use strict";var i=r(71171),n=r(9779),a=r(97356),o=r(89509).Buffer;function s(e){this.request=e,this.boundary=i(),this.chunked=!1,this.body=null}s.prototype.isChunked=function(e){var t=this,r=!1,i=e.data||e;return i.forEach||t.request.emit("error",new Error("Argument error, options.multipart.")),void 0!==e.chunked&&(r=e.chunked),"chunked"===t.request.getHeader("transfer-encoding")&&(r=!0),r||i.forEach((function(e){void 0===e.body&&t.request.emit("error",new Error("Body attribute missing in multipart.")),a(e.body)&&(r=!0)})),r},s.prototype.setHeaders=function(e){var t=this;e&&!t.request.hasHeader("transfer-encoding")&&t.request.setHeader("transfer-encoding","chunked");var r=t.request.getHeader("content-type");r&&-1!==r.indexOf("multipart")?-1!==r.indexOf("boundary")?t.boundary=r.replace(/.*boundary=([^\s;]+).*/,"$1"):t.request.setHeader("content-type",r+"; boundary="+t.boundary):t.request.setHeader("content-type","multipart/related; boundary="+t.boundary)},s.prototype.build=function(e,t){var r=this,i=t?new n:[];function a(e){return"number"==typeof e&&(e=e.toString()),t?i.append(e):i.push(o.from(e))}return r.request.preambleCRLF&&a("\r\n"),e.forEach((function(e){var t="--"+r.boundary+"\r\n";Object.keys(e).forEach((function(r){"body"!==r&&(t+=r+": "+e[r]+"\r\n")})),a(t+="\r\n"),a(e.body),a("\r\n")})),a("--"+r.boundary+"--"),r.request.postambleCRLF&&a("\r\n"),i},s.prototype.onRequest=function(e){var t=this,r=t.isChunked(e),i=e.data||e;t.setHeaders(r),t.chunked=r,t.body=t.build(i,r)},t.$=s},95756:(e,t,r)=>{"use strict";var i=r(8575),n=r(80129),a=r(9894),o=r(71171),s=r(54586),u=r(55835),c=r(89509).Buffer;function l(e){this.request=e,this.params=null}l.prototype.buildParams=function(e,t,r,i,n,a){var u={};for(var c in e)u["oauth_"+c]=e[c];u.oauth_version||(u.oauth_version="1.0"),u.oauth_timestamp||(u.oauth_timestamp=Math.floor(Date.now()/1e3).toString()),u.oauth_nonce||(u.oauth_nonce=o().replace(/-/g,"")),u.oauth_signature_method||(u.oauth_signature_method="HMAC-SHA1");var l=u.oauth_consumer_secret||u.oauth_private_key;delete u.oauth_consumer_secret,delete u.oauth_private_key;var h=u.oauth_token_secret;delete u.oauth_token_secret;var p=u.oauth_realm;delete u.oauth_realm,delete u.oauth_transport_method;var d=t.protocol+"//"+t.host+t.pathname,f=a.parse([].concat(i,n,a.stringify(u)).join("&"));return u.oauth_signature=s.sign(u.oauth_signature_method,r,d,f,l,h),p&&(u.realm=p),u},l.prototype.buildBodyHash=function(e,t){["HMAC-SHA1","RSA-SHA1"].indexOf(e.signature_method||"HMAC-SHA1")<0&&this.request.emit("error",new Error("oauth: "+e.signature_method+" signature_method not supported with body_hash signing."));var r=u.createHash("sha1");r.update(t||"");var i=r.digest("hex");return c.from(i,"hex").toString("base64")},l.prototype.concatParams=function(e,t,r){r=r||"";var i=Object.keys(e).filter((function(e){return"realm"!==e&&"oauth_signature"!==e})).sort();return e.realm&&i.splice(0,0,"realm"),i.push("oauth_signature"),i.map((function(t){return t+"="+r+s.rfc3986(e[t])+r})).join(t)},l.prototype.onRequest=function(e){var t=this;t.params=e;var r,o,s=t.request.uri||{},u=t.request.method||"",c=a(t.request.headers),l=t.request.body||"",h=t.request.qsLib||n,p=c.get("content-type")||"",d="application/x-www-form-urlencoded",f=e.transport_method||"header";p.slice(0,d.length)===d&&(p=d,r=l),s.query&&(o=s.query),"body"!==f||"POST"===u&&p===d||t.request.emit("error",new Error("oauth: transport_method of body requires POST and content-type "+d)),r||"boolean"!=typeof e.body_hash||(e.body_hash=t.buildBodyHash(e,t.request.body.toString()));var m=t.buildParams(e,s,u,o,r,h);switch(f){case"header":t.request.setHeader("Authorization","OAuth "+t.concatParams(m,",",'"'));break;case"query":var g=t.request.uri.href+=(o?"&":"?")+t.concatParams(m,"&");t.request.uri=i.parse(g),t.request.path=t.request.uri.path;break;case"body":t.request.body=(r?r+"&":"")+t.concatParams(m,"&");break;default:t.request.emit("error",new Error("oauth: transport_method invalid"))}},t.f=l},24252:(e,t,r)=>{"use strict";var i=r(80129),n=r(17673);function a(e){this.request=e,this.lib=null,this.useQuerystring=null,this.parseOptions=null,this.stringifyOptions=null}a.prototype.init=function(e){this.lib||(this.useQuerystring=e.useQuerystring,this.lib=this.useQuerystring?n:i,this.parseOptions=e.qsParseOptions||{},this.stringifyOptions=e.qsStringifyOptions||{})},a.prototype.stringify=function(e){return this.useQuerystring?this.rfc3986(this.lib.stringify(e,this.stringifyOptions.sep||null,this.stringifyOptions.eq||null,this.stringifyOptions)):this.lib.stringify(e,this.stringifyOptions)},a.prototype.parse=function(e){return this.useQuerystring?this.lib.parse(e,this.parseOptions.sep||null,this.parseOptions.eq||null,this.parseOptions):this.lib.parse(e,this.parseOptions)},a.prototype.rfc3986=function(e){return e.replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))},a.prototype.unescape=n.unescape,t.h=a},76927:(e,t,r)=>{"use strict";var i=r(8575),n=/^https?:/;function a(e){this.request=e,this.followRedirect=!0,this.followRedirects=!0,this.followAllRedirects=!1,this.followOriginalHttpMethod=!1,this.allowRedirect=function(){return!0},this.maxRedirects=10,this.redirects=[],this.redirectsFollowed=0,this.removeRefererHeader=!1}a.prototype.onRequest=function(e){var t=this;void 0!==e.maxRedirects&&(t.maxRedirects=e.maxRedirects),"function"==typeof e.followRedirect&&(t.allowRedirect=e.followRedirect),void 0!==e.followRedirect&&(t.followRedirects=!!e.followRedirect),void 0!==e.followAllRedirects&&(t.followAllRedirects=e.followAllRedirects),(t.followRedirects||t.followAllRedirects)&&(t.redirects=t.redirects||[]),void 0!==e.removeRefererHeader&&(t.removeRefererHeader=e.removeRefererHeader),void 0!==e.followOriginalHttpMethod&&(t.followOriginalHttpMethod=e.followOriginalHttpMethod)},a.prototype.redirectTo=function(e){var t=this,r=t.request,i=null;if(e.statusCode>=300&&e.statusCode<400&&e.caseless.has("location")){var n=e.caseless.get("location");if(r.debug("redirect",n),t.followAllRedirects)i=n;else if(t.followRedirects)switch(r.method){case"PATCH":case"PUT":case"POST":case"DELETE":break;default:i=n}}else if(401===e.statusCode){var a=r._auth.onResponse(e);a&&(r.setHeader("authorization",a),i=r.uri)}return i},a.prototype.onResponse=function(e){var t=this,r=t.request,a=t.redirectTo(e);if(!a||!t.allowRedirect.call(r,e))return!1;if(r.debug("redirect to",a),e.resume&&e.resume(),t.redirectsFollowed>=t.maxRedirects)return r.emit("error",new Error("Exceeded maxRedirects. Probably stuck in a redirect loop "+r.uri.href)),!1;t.redirectsFollowed+=1,n.test(a)||(a=i.resolve(r.uri.href,a));var o=r.uri;return r.uri=i.parse(a),r.uri.protocol!==o.protocol&&delete r.agent,t.redirects.push({statusCode:e.statusCode,redirectUri:a}),t.followAllRedirects&&"HEAD"!==r.method&&401!==e.statusCode&&307!==e.statusCode&&(r.method=t.followOriginalHttpMethod?r.method:"GET"),delete r.src,delete r.req,delete r._started,401!==e.statusCode&&307!==e.statusCode&&(delete r.body,delete r._form,r.headers&&(r.removeHeader("host"),r.removeHeader("content-type"),r.removeHeader("content-length"),r.uri.hostname!==r.originalHost.split(":")[0]&&r.removeHeader("authorization"))),t.removeRefererHeader||r.setHeader("referer",o.href),r.emit("redirect"),r.init(),!0},t.l=a},86839:(e,t,r)=>{"use strict";var i=r(8575),n=r(37437),a=["accept","accept-charset","accept-encoding","accept-language","accept-ranges","cache-control","content-encoding","content-language","content-location","content-md5","content-range","content-type","connection","date","expect","max-forwards","pragma","referer","te","user-agent","via"],o=["proxy-authorization"];function s(e){this.request=e,this.proxyHeaderWhiteList=a,this.proxyHeaderExclusiveList=[],void 0!==e.tunnel&&(this.tunnelOverride=e.tunnel)}s.prototype.isEnabled=function(){var e=this,t=e.request;return void 0!==e.tunnelOverride?e.tunnelOverride:"https:"===t.uri.protocol},s.prototype.setup=function(e){var t=this,r=t.request;if(e=e||{},"string"==typeof r.proxy&&(r.proxy=i.parse(r.proxy)),!r.proxy||!r.tunnel)return!1;e.proxyHeaderWhiteList&&(t.proxyHeaderWhiteList=e.proxyHeaderWhiteList),e.proxyHeaderExclusiveList&&(t.proxyHeaderExclusiveList=e.proxyHeaderExclusiveList);var a,s,u,c=t.proxyHeaderExclusiveList.concat(o),l=t.proxyHeaderWhiteList.concat(c),h=function(e,t){var r=t.reduce((function(e,t){return e[t.toLowerCase()]=!0,e}),{});return Object.keys(e).filter((function(e){return r[e.toLowerCase()]})).reduce((function(t,r){return t[r]=e[r],t}),{})}(r.headers,l);h.host=(s=(a=r.uri).port,u=a.protocol,a.hostname+":"+(s||("https:"===u?"443":"80"))),c.forEach(r.removeHeader,r);var p=function(e){var t,r,i=(t=e.uri,r=e.proxy,["https:"===t.protocol?"https":"http","https:"===r.protocol?"Https":"Http"].join("Over"));return n[i]}(r),d=function(e,t){var r=e.proxy;return{proxy:{host:r.hostname,port:+r.port,proxyAuth:r.auth,headers:t},headers:e.headers,ca:e.ca,cert:e.cert,key:e.key,passphrase:e.passphrase,pfx:e.pfx,ciphers:e.ciphers,rejectUnauthorized:e.rejectUnauthorized,secureOptions:e.secureOptions,secureProtocol:e.secureProtocol}}(r,h);return r.agent=p(d),!0},s.defaultProxyHeaderWhiteList=a,s.defaultProxyHeaderExclusiveList=o,t.n=s},79517:(e,t,r)=>{"use strict";var i=r(34155),n=r(8501),a=r(79267),o=r(8575),s=r(89539),u=r(42830),c=r(42635),l=r(17555),h=r(95195),p=r(68007),d=r(80983),f=r(9894),m=r(43281),g=r(6230),v=r(94470),y=r(97356),_=r(4501).strict,b=r(89578),w=r(64220),E=r(26289),k=r(24252).h,S=r(8107).t,x=r(92169).g,j=r(95756).f,N=r(76514),M=r(46434).$,I=r(76927).l,A=r(86839).n,T=r(75),R=r(89509).Buffer,P=b.safeStringify,O=b.isReadStream,B=b.toBase64,C=b.defer,z=b.copy,F=b.version,D=w.jar(),q={};function L(){var e=this;return{uri:e.uri,method:e.method,headers:e.headers}}function U(){var e=this;return{statusCode:e.statusCode,body:e.body,headers:e.headers,request:L.call(e.request)}}function H(e){var t=this;e.har&&(t._har=new S(t),e=t._har.options(e)),u.Stream.call(t);var r=Object.keys(H.prototype),i=function(e,t){var r={};for(var i in t)-1===e.indexOf(i)&&(r[i]=t[i]);return r}(r,e);v(t,i),e=function(e,t){var r={};for(var i in t){var n=!(-1===e.indexOf(i)),a="function"==typeof t[i];n&&a||(r[i]=t[i])}return r}(r,e),t.readable=!0,t.writable=!0,e.method&&(t.explicitMethod=!0),t._qs=new k(t),t._auth=new x(t),t._oauth=new j(t),t._multipart=new M(t),t._redirect=new I(t),t._tunnel=new A(t),t.init(e)}function K(){H.debug&&console.error("REQUEST %s",s.format.apply(s,arguments))}s.inherits(H,u.Stream),H.debug=i.env.NODE_DEBUG&&/\brequest\b/.test(i.env.NODE_DEBUG),H.prototype.debug=K,H.prototype.init=function(e){var t=this;for(var r in e||(e={}),t.headers=t.headers?z(t.headers):{},t.headers)void 0===t.headers[r]&&delete t.headers[r];if(f.httpify(t,t.headers),t.method||(t.method=e.method||"GET"),t.localAddress||(t.localAddress=e.localAddress),t._qs.init(e),K(e),t.pool||!1===t.pool||(t.pool=q),t.dests=t.dests||[],t.__isRequestRequest=!0,!t._callback&&t.callback&&(t._callback=t.callback,t.callback=function(){t._callbackCalled||(t._callbackCalled=!0,t._callback.apply(t,arguments))},t.on("error",t.callback.bind()),t.on("complete",t.callback.bind(t,null))),!t.uri&&t.url&&(t.uri=t.url,delete t.url),t.baseUrl){if("string"!=typeof t.baseUrl)return t.emit("error",new Error("options.baseUrl must be a string"));if("string"!=typeof t.uri)return t.emit("error",new Error("options.uri must be a string when using options.baseUrl"));if(0===t.uri.indexOf("//")||-1!==t.uri.indexOf("://"))return t.emit("error",new Error("options.uri must be a path when using options.baseUrl"));var i=t.baseUrl.lastIndexOf("/")===t.baseUrl.length-1,s=0===t.uri.indexOf("/");i&&s?t.uri=t.baseUrl+t.uri.slice(1):i||s?t.uri=t.baseUrl+t.uri:""===t.uri?t.uri=t.baseUrl:t.uri=t.baseUrl+"/"+t.uri,delete t.baseUrl}if(!t.uri)return t.emit("error",new Error("options.uri is a required argument"));if("string"==typeof t.uri&&(t.uri=o.parse(t.uri)),t.uri.href||(t.uri.href=o.format(t.uri)),"unix:"===t.uri.protocol)return t.emit("error",new Error("`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`"));if("unix"===t.uri.host&&t.enableUnixSocket(),!1===t.strictSSL&&(t.rejectUnauthorized=!1),t.uri.pathname||(t.uri.pathname="/"),!(t.uri.host||t.uri.hostname&&t.uri.port||t.uri.isUnix)){var u='Invalid URI "'+o.format(t.uri)+'"';return 0===Object.keys(e).length&&(u+=". This can be caused by a crappy redirection."),t.abort(),t.emit("error",new Error(u))}if(t.hasOwnProperty("proxy")||(t.proxy=E(t.uri)),t.tunnel=t._tunnel.isEnabled(),t.proxy&&t._tunnel.setup(e),t._redirect.onRequest(e),t.setHost=!1,!t.hasHeader("host")){var c=t.originalHostHeaderName||"host";t.setHeader(c,t.uri.host),t.uri.port&&("80"===t.uri.port&&"http:"===t.uri.protocol||"443"===t.uri.port&&"https:"===t.uri.protocol)&&t.setHeader(c,t.uri.hostname),t.setHost=!0}if(t.jar(t._jar||e.jar),t.uri.port||("http:"===t.uri.protocol?t.uri.port=80:"https:"===t.uri.protocol&&(t.uri.port=443)),t.proxy&&!t.tunnel?(t.port=t.proxy.port,t.host=t.proxy.hostname):(t.port=t.uri.port,t.host=t.uri.hostname),e.form&&t.form(e.form),e.formData){var l=e.formData,h=t.form(),p=function(e,t){t&&t.hasOwnProperty("value")&&t.hasOwnProperty("options")?h.append(e,t.value,t.options):h.append(e,t)};for(var g in l)if(l.hasOwnProperty(g)){var v=l[g];if(v instanceof Array)for(var b=0;b=100&&s<200||204===s||304===s))o=e;else{var u=e.headers["content-encoding"]||"identity";u=u.trim().toLowerCase();var l={flush:c.Z_SYNC_FLUSH,finishFlush:c.Z_SYNC_FLUSH};"gzip"===u?(o=c.createGunzip(l),e.pipe(o)):"deflate"===u?(o=c.createInflate(l),e.pipe(o)):("identity"!==u&&K("ignoring unrecognized Content-Encoding "+u),o=e)}t.encoding&&(0!==t.dests.length?console.error("Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid."):o.setEncoding(t.encoding)),t._paused&&o.pause(),t.responseContent=o,t.emit("response",e),t.dests.forEach((function(e){t.pipeDest(e)})),o.on("data",(function(r){t.timing&&!t.responseStarted&&(t.responseStartTime=(new Date).getTime(),e.responseStartTime=t.responseStartTime),t._destdata=!0,t.emit("data",r)})),o.once("end",(function(e){t.emit("end",e)})),o.on("error",(function(e){t.emit("error",e)})),o.on("close",(function(){t.emit("close")})),t.callback?t.readResponseBody(e):t.on("end",(function(){t._aborted?K("aborted",t.uri.href):t.emit("complete",e)})),K("finish init function",t.uri.href)}}else{K("strict ssl error",t.uri.href);var h=e.hasOwnProperty("socket")?e.socket.authorizationError:t.uri.href+" does not support SSL";t.emit("error",new Error("SSL Error: "+h))}},H.prototype.readResponseBody=function(e){var t=this;K("reading response's body");var r=[],i=0,n=[];t.on("data",(function(e){R.isBuffer(e)?e.length&&(i+=e.length,r.push(e)):n.push(e)})),t.on("end",(function(){if(K("end event",t.uri.href),t._aborted)return K("aborted",t.uri.href),r=[],void(i=0);if(i?(K("has body",t.uri.href,i),e.body=R.concat(r,i),null!==t.encoding&&(e.body=e.body.toString(t.encoding)),r=[],i=0):n.length&&("utf8"===t.encoding&&n[0].length>0&&"\ufeff"===n[0][0]&&(n[0]=n[0].substring(1)),e.body=n.join("")),t._json)try{e.body=JSON.parse(e.body,t._jsonReviver)}catch(e){K("invalid JSON received",t.uri.href)}K("emitting complete",t.uri.href),void 0!==e.body||t._json||(e.body=null===t.encoding?R.alloc(0):""),t.emit("complete",e,e.body)}))},H.prototype.abort=function(){var e=this;e._aborted=!0,e.req?e.req.abort():e.response&&e.response.destroy(),e.clearTimeout(),e.emit("abort")},H.prototype.pipeDest=function(e){var t=this,r=t.response;if(e.headers&&!e.headersSent){if(r.caseless.has("content-type")){var i=r.caseless.has("content-type");e.setHeader?e.setHeader(i,r.headers[i]):e.headers[i]=r.headers[i]}if(r.caseless.has("content-length")){var n=r.caseless.has("content-length");e.setHeader?e.setHeader(n,r.headers[n]):e.headers[n]=r.headers[n]}}if(e.setHeader&&!e.headersSent){for(var a in r.headers)t.gzip&&"content-encoding"===a||e.setHeader(a,r.headers[a]);e.statusCode=r.statusCode}t.pipefilter&&t.pipefilter(r,e)},H.prototype.qs=function(e,t){var r,i=this;for(var n in r=!t&&i.uri.query?i._qs.parse(i.uri.query):{},e)r[n]=e[n];var a=i._qs.stringify(r);return""===a||(i.uri=o.parse(i.uri.href.split("?")[0]+"?"+a),i.url=i.uri,i.path=i.uri.path,"unix"===i.uri.host&&i.enableUnixSocket()),i},H.prototype.form=function(e){var t=this;return e?(/^application\/x-www-form-urlencoded\b/.test(t.getHeader("content-type"))||t.setHeader("content-type","application/x-www-form-urlencoded"),t.body="string"==typeof e?t._qs.rfc3986(e.toString("utf8")):t._qs.stringify(e).toString("utf8"),t):(t._form=new g,t._form.on("error",(function(e){e.message="form-data: "+e.message,t.emit("error",e),t.abort()})),t._form)},H.prototype.multipart=function(e){var t=this;return t._multipart.onRequest(e),t._multipart.chunked||(t.body=t._multipart.body),t},H.prototype.json=function(e){var t=this;return t.hasHeader("accept")||t.setHeader("accept","application/json"),"function"==typeof t.jsonReplacer&&(t._jsonReplacer=t.jsonReplacer),t._json=!0,"boolean"==typeof e?void 0!==t.body&&(/^application\/x-www-form-urlencoded\b/.test(t.getHeader("content-type"))?t.body=t._qs.rfc3986(t.body):t.body=P(t.body,t._jsonReplacer),t.hasHeader("content-type")||t.setHeader("content-type","application/json")):(t.body=P(e,t._jsonReplacer),t.hasHeader("content-type")||t.setHeader("content-type","application/json")),"function"==typeof t.jsonReviver&&(t._jsonReviver=t.jsonReviver),t},H.prototype.getHeader=function(e,t){var r,i;return t||(t=this.headers),Object.keys(t).forEach((function(n){n.length===e.length&&(i=new RegExp(e,"i"),n.match(i)&&(r=t[n]))})),r},H.prototype.enableUnixSocket=function(){var e=this.uri.path.split(":"),t=e[0],r=e[1];this.socketPath=t,this.uri.pathname=r,this.uri.path=r,this.uri.host=t,this.uri.hostname=t,this.uri.isUnix=!0},H.prototype.auth=function(e,t,r,i){return this._auth.onRequest(e,t,r,i),this},H.prototype.aws=function(e,t){var r=this;if(!t)return r._aws=e,r;if(4===e.sign_version||"4"===e.sign_version){var i={host:r.uri.host,path:r.uri.path,method:r.method,headers:r.headers,body:r.body};e.service&&(i.service=e.service);var n=h.sign(i,{accessKeyId:e.key,secretAccessKey:e.secret,sessionToken:e.session});r.setHeader("authorization",n.headers.Authorization),r.setHeader("x-amz-date",n.headers["X-Amz-Date"]),n.headers["X-Amz-Security-Token"]&&r.setHeader("x-amz-security-token",n.headers["X-Amz-Security-Token"])}else{var a=new Date;r.setHeader("date",a.toUTCString());var o={key:e.key,secret:e.secret,verb:r.method.toUpperCase(),date:a,contentType:r.getHeader("content-type")||"",md5:r.getHeader("content-md5")||"",amazonHeaders:l.canonicalizeHeaders(r.headers)},s=r.uri.path;e.bucket&&s?o.resource="/"+e.bucket+s:e.bucket&&!s?o.resource="/"+e.bucket:!e.bucket&&s?o.resource=s:e.bucket||s||(o.resource="/"),o.resource=l.canonicalizeResource(o.resource),r.setHeader("authorization",l.authorization(o))}return r},H.prototype.httpSignature=function(e){var t=this;return p.signRequest({getHeader:function(e){return t.getHeader(e,t.headers)},setHeader:function(e,r){t.setHeader(e,r)},method:t.method,path:t.path},e),K("httpSignature authorization",t.getHeader("authorization")),t},H.prototype.hawk=function(e){var t=this;t.setHeader("Authorization",N.header(t.uri,t.method,e))},H.prototype.oauth=function(e){return this._oauth.onRequest(e),this},H.prototype.jar=function(e){var t,r=this;if(0===r._redirect.redirectsFollowed&&(r.originalCookieHeader=r.getHeader("cookie")),e){var i=e.getCookieString?e:D,n=r.uri.href;i&&(t=i.getCookieString(n))}else t=!1,r._disableCookies=!0;return t&&t.length&&(r.originalCookieHeader?r.setHeader("cookie",r.originalCookieHeader+"; "+t):r.setHeader("cookie",t)),r._jar=e,r},H.prototype.pipe=function(e,t){var r=this;if(!r.response)return r.dests.push(e),u.Stream.prototype.pipe.call(r,e,t),e;if(r._destdata)r.emit("error",new Error("You cannot pipe after data has been emitted from the response."));else{if(!r._ended)return u.Stream.prototype.pipe.call(r,e,t),r.pipeDest(e),e;r.emit("error",new Error("You cannot pipe after the response has been ended."))}},H.prototype.write=function(){var e=this;if(!e._aborted)return e._started||e.start(),e.req?e.req.write.apply(e.req,arguments):void 0},H.prototype.end=function(e){var t=this;t._aborted||(e&&t.write(e),t._started||t.start(),t.req&&t.req.end())},H.prototype.pause=function(){var e=this;e.responseContent?e.responseContent.pause.apply(e.responseContent,arguments):e._paused=!0},H.prototype.resume=function(){var e=this;e.responseContent?e.responseContent.resume.apply(e.responseContent,arguments):e._paused=!1},H.prototype.destroy=function(){var e=this;this.clearTimeout(),e._ended?e.response&&e.response.destroy():e.end()},H.prototype.clearTimeout=function(){this.timeoutTimer&&(clearTimeout(this.timeoutTimer),this.timeoutTimer=null)},H.defaultProxyHeaderWhiteList=A.defaultProxyHeaderWhiteList.slice(),H.defaultProxyHeaderExclusiveList=A.defaultProxyHeaderExclusiveList.slice(),H.prototype.toJSON=L,e.exports=H},79785:(e,t,r)=>{"use strict";var i=r(48764).Buffer,n=r(35717),a=r(3349),o=new Array(16),s=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],u=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],c=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],l=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],h=[0,1518500249,1859775393,2400959708,2840853838],p=[1352829926,1548603684,1836072691,2053994217,0];function d(){a.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function f(e,t){return e<>>32-t}function m(e,t,r,i,n,a,o,s){return f(e+(t^r^i)+a+o|0,s)+n|0}function g(e,t,r,i,n,a,o,s){return f(e+(t&r|~t&i)+a+o|0,s)+n|0}function v(e,t,r,i,n,a,o,s){return f(e+((t|~r)^i)+a+o|0,s)+n|0}function y(e,t,r,i,n,a,o,s){return f(e+(t&i|r&~i)+a+o|0,s)+n|0}function _(e,t,r,i,n,a,o,s){return f(e+(t^(r|~i))+a+o|0,s)+n|0}n(d,a),d.prototype._update=function(){for(var e=o,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var r=0|this._a,i=0|this._b,n=0|this._c,a=0|this._d,d=0|this._e,b=0|this._a,w=0|this._b,E=0|this._c,k=0|this._d,S=0|this._e,x=0;x<80;x+=1){var j,N;x<16?(j=m(r,i,n,a,d,e[s[x]],h[0],c[x]),N=_(b,w,E,k,S,e[u[x]],p[0],l[x])):x<32?(j=g(r,i,n,a,d,e[s[x]],h[1],c[x]),N=y(b,w,E,k,S,e[u[x]],p[1],l[x])):x<48?(j=v(r,i,n,a,d,e[s[x]],h[2],c[x]),N=v(b,w,E,k,S,e[u[x]],p[2],l[x])):x<64?(j=y(r,i,n,a,d,e[s[x]],h[3],c[x]),N=g(b,w,E,k,S,e[u[x]],p[3],l[x])):(j=_(r,i,n,a,d,e[s[x]],h[4],c[x]),N=m(b,w,E,k,S,e[u[x]],p[4],l[x])),r=d,d=a,a=f(n,10),n=i,i=j,b=S,S=k,k=f(E,10),E=w,w=N}var M=this._b+n+k|0;this._b=this._c+a+S|0,this._c=this._d+d+b|0,this._d=this._e+r+w|0,this._e=this._a+i+E|0,this._a=M},d.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=i.alloc?i.alloc(20):new i(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e},e.exports=d},89509:(e,t,r)=>{var i=r(48764),n=i.Buffer;function a(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=i:(a(i,t),t.Buffer=o),a(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i.SlowBuffer(e)}},2399:(e,t,r)=>{"use strict";var i,n=r(34155),a=r(48764),o=a.Buffer,s={};for(i in a)a.hasOwnProperty(i)&&"SlowBuffer"!==i&&"Buffer"!==i&&(s[i]=a[i]);var u=s.Buffer={};for(i in o)o.hasOwnProperty(i)&&"allocUnsafe"!==i&&"allocUnsafeSlow"!==i&&(u[i]=o[i]);if(s.Buffer.prototype=o.prototype,u.from&&u.from!==Uint8Array.from||(u.from=function(e,t,r){if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type '+typeof e);if(e&&void 0===e.length)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);return o(e,t,r)}),u.alloc||(u.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError('The "size" argument must be of type number. Received type '+typeof e);if(e<0||e>=2*(1<<30))throw new RangeError('The value "'+e+'" is invalid for option "size"');var i=o(e);return t&&0!==t.length?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i}),!s.kStringMaxLength)try{s.kStringMaxLength=n.binding("buffer").kStringMaxLength}catch(e){}s.constants||(s.constants={MAX_LENGTH:s.kMaxLength},s.kStringMaxLength&&(s.constants.MAX_STRING_LENGTH=s.kStringMaxLength)),e.exports=s},24189:(e,t,r)=>{var i=r(89509).Buffer;function n(e,t){this._block=i.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}n.prototype.update=function(e,t){"string"==typeof e&&(t=t||"utf8",e=i.from(e,t));for(var r=this._block,n=this._blockSize,a=e.length,o=this._len,s=0;s=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var i=(4294967295&r)>>>0,n=(r-i)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var a=this._hash();return e?a.toString(e):a},n.prototype._update=function(){throw new Error("_update must be implemented by subclass")},e.exports=n},89072:(e,t,r)=>{var i=e.exports=function(e){e=e.toLowerCase();var t=i[e];if(!t)throw new Error(e+" is not supported (we accept pull requests)");return new t};i.sha=r(74448),i.sha1=r(18336),i.sha224=r(48432),i.sha256=r(67499),i.sha384=r(51686),i.sha512=r(87816)},74448:(e,t,r)=>{var i=r(35717),n=r(24189),a=r(89509).Buffer,o=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function u(){this.init(),this._w=s,n.call(this,64,56)}function c(e){return e<<30|e>>>2}function l(e,t,r,i){return 0===e?t&r|~t&i:2===e?t&r|t&i|r&i:t^r^i}i(u,n),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(e){for(var t,r=this._w,i=0|this._a,n=0|this._b,a=0|this._c,s=0|this._d,u=0|this._e,h=0;h<16;++h)r[h]=e.readInt32BE(4*h);for(;h<80;++h)r[h]=r[h-3]^r[h-8]^r[h-14]^r[h-16];for(var p=0;p<80;++p){var d=~~(p/20),f=0|((t=i)<<5|t>>>27)+l(d,n,a,s)+u+r[p]+o[d];u=s,s=a,a=c(n),n=i,i=f}this._a=i+this._a|0,this._b=n+this._b|0,this._c=a+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0},u.prototype._hash=function(){var e=a.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=u},18336:(e,t,r)=>{var i=r(35717),n=r(24189),a=r(89509).Buffer,o=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function u(){this.init(),this._w=s,n.call(this,64,56)}function c(e){return e<<5|e>>>27}function l(e){return e<<30|e>>>2}function h(e,t,r,i){return 0===e?t&r|~t&i:2===e?t&r|t&i|r&i:t^r^i}i(u,n),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(e){for(var t,r=this._w,i=0|this._a,n=0|this._b,a=0|this._c,s=0|this._d,u=0|this._e,p=0;p<16;++p)r[p]=e.readInt32BE(4*p);for(;p<80;++p)r[p]=(t=r[p-3]^r[p-8]^r[p-14]^r[p-16])<<1|t>>>31;for(var d=0;d<80;++d){var f=~~(d/20),m=c(i)+h(f,n,a,s)+u+r[d]+o[f]|0;u=s,s=a,a=l(n),n=i,i=m}this._a=i+this._a|0,this._b=n+this._b|0,this._c=a+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0},u.prototype._hash=function(){var e=a.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=u},48432:(e,t,r)=>{var i=r(35717),n=r(67499),a=r(24189),o=r(89509).Buffer,s=new Array(64);function u(){this.init(),this._w=s,a.call(this,64,56)}i(u,n),u.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},u.prototype._hash=function(){var e=o.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e},e.exports=u},67499:(e,t,r)=>{var i=r(35717),n=r(24189),a=r(89509).Buffer,o=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],s=new Array(64);function u(){this.init(),this._w=s,n.call(this,64,56)}function c(e,t,r){return r^e&(t^r)}function l(e,t,r){return e&t|r&(e|t)}function h(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function p(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function d(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}i(u,n),u.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},u.prototype._update=function(e){for(var t,r=this._w,i=0|this._a,n=0|this._b,a=0|this._c,s=0|this._d,u=0|this._e,f=0|this._f,m=0|this._g,g=0|this._h,v=0;v<16;++v)r[v]=e.readInt32BE(4*v);for(;v<64;++v)r[v]=0|(((t=r[v-2])>>>17|t<<15)^(t>>>19|t<<13)^t>>>10)+r[v-7]+d(r[v-15])+r[v-16];for(var y=0;y<64;++y){var _=g+p(u)+c(u,f,m)+o[y]+r[y]|0,b=h(i)+l(i,n,a)|0;g=m,m=f,f=u,u=s+_|0,s=a,a=n,n=i,i=_+b|0}this._a=i+this._a|0,this._b=n+this._b|0,this._c=a+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0,this._f=f+this._f|0,this._g=m+this._g|0,this._h=g+this._h|0},u.prototype._hash=function(){var e=a.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e},e.exports=u},51686:(e,t,r)=>{var i=r(35717),n=r(87816),a=r(24189),o=r(89509).Buffer,s=new Array(160);function u(){this.init(),this._w=s,a.call(this,128,112)}i(u,n),u.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},u.prototype._hash=function(){var e=o.allocUnsafe(48);function t(t,r,i){e.writeInt32BE(t,i),e.writeInt32BE(r,i+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e},e.exports=u},87816:(e,t,r)=>{var i=r(35717),n=r(24189),a=r(89509).Buffer,o=[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],s=new Array(160);function u(){this.init(),this._w=s,n.call(this,128,112)}function c(e,t,r){return r^e&(t^r)}function l(e,t,r){return e&t|r&(e|t)}function h(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function p(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function d(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function f(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function m(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function g(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function v(e,t){return e>>>0>>0?1:0}i(u,n),u.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},u.prototype._update=function(e){for(var t=this._w,r=0|this._ah,i=0|this._bh,n=0|this._ch,a=0|this._dh,s=0|this._eh,u=0|this._fh,y=0|this._gh,_=0|this._hh,b=0|this._al,w=0|this._bl,E=0|this._cl,k=0|this._dl,S=0|this._el,x=0|this._fl,j=0|this._gl,N=0|this._hl,M=0;M<32;M+=2)t[M]=e.readInt32BE(4*M),t[M+1]=e.readInt32BE(4*M+4);for(;M<160;M+=2){var I=t[M-30],A=t[M-30+1],T=d(I,A),R=f(A,I),P=m(I=t[M-4],A=t[M-4+1]),O=g(A,I),B=t[M-14],C=t[M-14+1],z=t[M-32],F=t[M-32+1],D=R+C|0,q=T+B+v(D,R)|0;q=(q=q+P+v(D=D+O|0,O)|0)+z+v(D=D+F|0,F)|0,t[M]=q,t[M+1]=D}for(var L=0;L<160;L+=2){q=t[L],D=t[L+1];var U=l(r,i,n),H=l(b,w,E),K=h(r,b),W=h(b,r),Z=p(s,S),J=p(S,s),V=o[L],$=o[L+1],G=c(s,u,y),Q=c(S,x,j),X=N+J|0,Y=_+Z+v(X,N)|0;Y=(Y=(Y=Y+G+v(X=X+Q|0,Q)|0)+V+v(X=X+$|0,$)|0)+q+v(X=X+D|0,D)|0;var ee=W+H|0,te=K+U+v(ee,W)|0;_=y,N=j,y=u,j=x,u=s,x=S,s=a+Y+v(S=k+X|0,k)|0,a=n,k=E,n=i,E=w,i=r,w=b,r=Y+te+v(b=X+ee|0,X)|0}this._al=this._al+b|0,this._bl=this._bl+w|0,this._cl=this._cl+E|0,this._dl=this._dl+k|0,this._el=this._el+S|0,this._fl=this._fl+x|0,this._gl=this._gl+j|0,this._hl=this._hl+N|0,this._ah=this._ah+r+v(this._al,b)|0,this._bh=this._bh+i+v(this._bl,w)|0,this._ch=this._ch+n+v(this._cl,E)|0,this._dh=this._dh+a+v(this._dl,k)|0,this._eh=this._eh+s+v(this._el,S)|0,this._fh=this._fh+u+v(this._fl,x)|0,this._gh=this._gh+y+v(this._gl,j)|0,this._hh=this._hh+_+v(this._hl,N)|0},u.prototype._hash=function(){var e=a.allocUnsafe(64);function t(t,r,i){e.writeInt32BE(t,i),e.writeInt32BE(r,i+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e},e.exports=u},95280:(e,t,r)=>{var i=r(2399).Buffer,n={dsa:{parts:["p","q","g","y"],sizePart:"p"},rsa:{parts:["e","n"],sizePart:"n"},ecdsa:{parts:["curve","Q"],sizePart:"Q"},ed25519:{parts:["A"],sizePart:"A"}};n.curve25519=n.ed25519;var a={dsa:{parts:["p","q","g","y","x"]},rsa:{parts:["n","e","d","iqmp","p","q"]},ecdsa:{parts:["curve","Q","d"]},ed25519:{parts:["A","k"]}};a.curve25519=a.ed25519;var o={nistp256:{size:256,pkcs8oid:"1.2.840.10045.3.1.7",p:i.from("00ffffffff 00000001 00000000 0000000000000000 ffffffff ffffffff ffffffff".replace(/ /g,""),"hex"),a:i.from("00FFFFFFFF 00000001 00000000 0000000000000000 FFFFFFFF FFFFFFFF FFFFFFFC".replace(/ /g,""),"hex"),b:i.from("5ac635d8 aa3a93e7 b3ebbd55 769886bc651d06b0 cc53b0f6 3bce3c3e 27d2604b".replace(/ /g,""),"hex"),s:i.from("00c49d3608 86e70493 6a6678e1 139d26b7819f7e90".replace(/ /g,""),"hex"),n:i.from("00ffffffff 00000000 ffffffff ffffffffbce6faad a7179e84 f3b9cac2 fc632551".replace(/ /g,""),"hex"),G:i.from("046b17d1f2 e12c4247 f8bce6e5 63a440f277037d81 2deb33a0 f4a13945 d898c2964fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e162bce3357 6b315ece cbb64068 37bf51f5".replace(/ /g,""),"hex")},nistp384:{size:384,pkcs8oid:"1.3.132.0.34",p:i.from("00ffffffff ffffffff ffffffff ffffffffffffffff ffffffff ffffffff fffffffeffffffff 00000000 00000000 ffffffff".replace(/ /g,""),"hex"),a:i.from("00FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFEFFFFFFFF 00000000 00000000 FFFFFFFC".replace(/ /g,""),"hex"),b:i.from("b3312fa7 e23ee7e4 988e056b e3f82d19181d9c6e fe814112 0314088f 5013875ac656398d 8a2ed19d 2a85c8ed d3ec2aef".replace(/ /g,""),"hex"),s:i.from("00a335926a a319a27a 1d00896a 6773a4827acdac73".replace(/ /g,""),"hex"),n:i.from("00ffffffff ffffffff ffffffff ffffffffffffffff ffffffff c7634d81 f4372ddf581a0db2 48b0a77a ecec196a ccc52973".replace(/ /g,""),"hex"),G:i.from("04aa87ca22 be8b0537 8eb1c71e f320ad746e1d3b62 8ba79b98 59f741e0 82542a385502f25d bf55296c 3a545e38 72760ab73617de4a 96262c6f 5d9e98bf 9292dc29f8f41dbd 289a147c e9da3113 b5f0b8c00a60b1ce 1d7e819d 7a431d7c 90ea0e5f".replace(/ /g,""),"hex")},nistp521:{size:521,pkcs8oid:"1.3.132.0.35",p:i.from("01ffffff ffffffff ffffffff ffffffffffffffff ffffffff ffffffff ffffffffffffffff ffffffff ffffffff ffffffffffffffff ffffffff ffffffff ffffffffffff".replace(/ /g,""),"hex"),a:i.from("01FFFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFC".replace(/ /g,""),"hex"),b:i.from("51953eb961 8e1c9a1f 929a21a0 b68540eea2da725b 99b315f3 b8b48991 8ef109e156193951 ec7e937b 1652c0bd 3bb1bf073573df88 3d2c34f1 ef451fd4 6b503f00".replace(/ /g,""),"hex"),s:i.from("00d09e8800 291cb853 96cc6717 393284aaa0da64ba".replace(/ /g,""),"hex"),n:i.from("01ffffffffff ffffffff ffffffff ffffffffffffffff ffffffff ffffffff fffffffa51868783 bf2f966b 7fcc0148 f709a5d03bb5c9b8 899c47ae bb6fb71e 91386409".replace(/ /g,""),"hex"),G:i.from("0400c6 858e06b7 0404e9cd 9e3ecb66 2395b4429c648139 053fb521 f828af60 6b4d3dbaa14b5e77 efe75928 fe1dc127 a2ffa8de3348b3c1 856a429b f97e7e31 c2e5bd660118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd998f54449 579b4468 17afbd17 273e662c97ee7299 5ef42640 c550b901 3fad0761353c7086 a272c240 88be9476 9fd16650".replace(/ /g,""),"hex")}};e.exports={info:n,privInfo:a,hashAlgs:{md5:!0,sha1:!0,sha256:!0,sha384:!0,sha512:!0},curves:o}},90312:(e,t,r)=>{e.exports=g;var i=r(6144),n=r(2399).Buffer,a=r(95280),o=r(55835),s=r(40500),u=(r(15270),r(23004)),c=(r(89539),r(2743)),l=r(67721),h=r(73079),p=r(85279),d={};d.openssh=r(85716),d.x509=r(67026),d.pem=r(65221);var f=u.CertificateParseError,m=u.InvalidAlgorithmError;function g(e){i.object(e,"options"),i.arrayOfObject(e.subjects,"options.subjects"),c.assertCompatible(e.subjects[0],p,[1,0],"options.subjects"),c.assertCompatible(e.subjectKey,l,[1,0],"options.subjectKey"),c.assertCompatible(e.issuer,p,[1,0],"options.issuer"),void 0!==e.issuerKey&&c.assertCompatible(e.issuerKey,l,[1,0],"options.issuerKey"),i.object(e.signatures,"options.signatures"),i.buffer(e.serial,"options.serial"),i.date(e.validFrom,"options.validFrom"),i.date(e.validUntil,"optons.validUntil"),i.optionalArrayOfString(e.purposes,"options.purposes"),this._hashCache={},this.subjects=e.subjects,this.issuer=e.issuer,this.subjectKey=e.subjectKey,this.issuerKey=e.issuerKey,this.signatures=e.signatures,this.serial=e.serial,this.validFrom=e.validFrom,this.validUntil=e.validUntil,this.purposes=e.purposes}g.formats=d,g.prototype.toBuffer=function(e,t){return void 0===e&&(e="x509"),i.string(e,"format"),i.object(d[e],"formats[format]"),i.optionalObject(t,"options"),d[e].write(this,t)},g.prototype.toString=function(e,t){return void 0===e&&(e="pem"),this.toBuffer(e,t).toString()},g.prototype.fingerprint=function(e){void 0===e&&(e="sha256"),i.string(e,"algorithm");var t={type:"certificate",hash:this.hash(e),algorithm:e};return new s(t)},g.prototype.hash=function(e){if(i.string(e,"algorithm"),e=e.toLowerCase(),void 0===a.hashAlgs[e])throw new m(e);if(this._hashCache[e])return this._hashCache[e];var t=o.createHash(e).update(this.toBuffer("x509")).digest();return this._hashCache[e]=t,t},g.prototype.isExpired=function(e){return void 0===e&&(e=new Date),!(e.getTime()>=this.validFrom.getTime()&&e.getTime()0&&-1===this.issuer.purposes.indexOf("ca"))&&this.isSignedByKey(e.subjectKey)},g.prototype.getExtension=function(e){return i.string(e,"keyOrOid"),this.getExtensions().filter((function(t){return"x509"===t.format?t.oid===e:"openssh"===t.format&&t.name===e}))[0]},g.prototype.getExtensions=function(){var e=[],t=this.signatures.x509;t&&t.extras&&t.extras.exts&&t.extras.exts.forEach((function(t){t.format="x509",e.push(t)}));var r=this.signatures.openssh;return r&&r.exts&&r.exts.forEach((function(t){t.format="openssh",e.push(t)})),e},g.prototype.isSignedByKey=function(e){if(c.assertCompatible(e,l,[1,2],"issuerKey"),void 0!==this.issuerKey)return this.issuerKey.fingerprint("sha512").matches(e);var t=Object.keys(this.signatures)[0],r=d[t].verify(this,e);return r&&(this.issuerKey=e),r},g.prototype.signWith=function(e){c.assertCompatible(e,h,[1,2],"key");for(var t=Object.keys(d),r=!1,i=0;i0&&-1===d.indexOf("serverAuth")&&d.push("serverAuth"),m.length>0&&-1===d.indexOf("clientAuth")&&d.push("clientAuth"),(m.length>0||f.length>0)&&(-1===d.indexOf("keyAgreement")&&d.push("keyAgreement"),"rsa"===t.type&&-1===d.indexOf("encryption")&&d.push("encryption"))}var v=new g({subjects:a,issuer:a[0],subjectKey:t.toPublic(),issuerKey:t.toPublic(),signatures:{},serial:l,validFrom:o,validUntil:s,purposes:d});return v.signWith(t),v},g.create=function(e,t,r,a,o){var s;s=Array.isArray(e)?e:[e],i.arrayOfObject(s),s.forEach((function(e){c.assertCompatible(e,p,[1,0],"subject")})),c.assertCompatible(t,l,[1,0],"key"),h.isPrivateKey(t)&&(t=t.toPublic()),c.assertCompatible(r,p,[1,0],"issuer"),c.assertCompatible(a,h,[1,2],"issuer key"),i.optionalObject(o,"options"),void 0===o&&(o={}),i.optionalObject(o.validFrom,"options.validFrom"),i.optionalObject(o.validUntil,"options.validUntil");var u=o.validFrom,d=o.validUntil;if(void 0===u&&(u=new Date),void 0===d){i.optionalNumber(o.lifetime,"options.lifetime");var f=o.lifetime;void 0===f&&(f=31536e4),(d=new Date).setTime(d.getTime()+1e3*f)}i.optionalBuffer(o.serial,"options.serial");var m=o.serial;void 0===m&&(m=n.from("0000000000000001","hex"));var v=o.purposes;void 0===v&&(v=[]),-1===v.indexOf("signature")&&v.push("signature"),!0===o.ca&&(-1===v.indexOf("ca")&&v.push("ca"),-1===v.indexOf("crl")&&v.push("crl"));var y=s.filter((function(e){return"host"===e.type})),_=s.filter((function(e){return"user"===e.type}));y.length>0&&-1===v.indexOf("serverAuth")&&v.push("serverAuth"),_.length>0&&-1===v.indexOf("clientAuth")&&v.push("clientAuth"),(_.length>0||y.length>0)&&(-1===v.indexOf("keyAgreement")&&v.push("keyAgreement"),"rsa"===t.type&&-1===v.indexOf("encryption")&&v.push("encryption"));var b=new g({subjects:s,issuer:r,subjectKey:t,issuerKey:a.toPublic(),signatures:{},serial:m,validFrom:u,validUntil:d,purposes:v});return b.signWith(a),b},g.parse=function(e,t,r){"string"!=typeof e&&i.buffer(e,"data"),void 0===t&&(t="auto"),i.string(t,"format"),"string"==typeof r&&(r={filename:r}),i.optionalObject(r,"options"),void 0===r&&(r={}),i.optionalString(r.filename,"options.filename"),void 0===r.filename&&(r.filename="(unnamed)"),i.object(d[t],"formats[format]");try{return d[t].read(e,r)}catch(e){throw new f(r.filename,t,e)}},g.isCertificate=function(e,t){return c.isCompatible(e,g,t)},g.prototype._sshpkApiVersion=[1,1],g._oldVersionDetect=function(e){return[1,0]}},78849:(e,t,r)=>{e.exports={DiffieHellman:f,generateECDSA:function(e){var t=[];if(h){var r={nistp256:"prime256v1",nistp384:"secp384r1",nistp521:"secp521r1"}[e],i=n.createECDH(r);return i.generateKeys(),t.push({name:"curve",data:a.from(e)}),t.push({name:"Q",data:i.getPublicKey()}),t.push({name:"d",data:i.getPrivateKey()}),new l({type:"ecdsa",curve:e,parts:t})}var o=new m(e),s=o.getN(),u=Math.ceil((s.bitLength()+64)/8),c=new d(n.randomBytes(u)),p=s.subtract(d.ONE),f=c.mod(p).add(d.ONE),g=o.getG().multiply(f);return f=a.from(f.toByteArray()),g=a.from(o.getCurve().encodePointHex(g),"hex"),t.push({name:"curve",data:a.from(e)}),t.push({name:"Q",data:g}),t.push({name:"d",data:f}),new l({type:"ecdsa",curve:e,parts:t})},generateED25519:function(){var e=u.sign.keyPair(),t=a.from(e.secretKey),r=a.from(e.publicKey);i.strictEqual(t.length,64),i.strictEqual(r.length,32);var n=[];return n.push({name:"A",data:r}),n.push({name:"k",data:t.slice(0,32)}),new l({type:"ed25519",parts:n})}};var i=r(6144),n=r(55835),a=r(2399).Buffer,o=r(95280),s=r(2743),u=r(50780),c=r(67721),l=r(73079),h=void 0!==n.createECDH,p=(r(66245),r(62241)),d=r(36077).BigInteger;function f(e){if(s.assertCompatible(e,c,[1,4],"key"),this._isPriv=l.isPrivateKey(e,[1,3]),this._algo=e.type,this._curve=e.curve,this._key=e,"dsa"===e.type){if(!h)throw new Error("Due to bugs in the node 0.10 crypto API, node 0.12.x or later is required to use DH");this._dh=n.createDiffieHellman(e.part.p.data,void 0,e.part.g.data,void 0),this._p=e.part.p,this._g=e.part.g,this._isPriv&&this._dh.setPrivateKey(e.part.x.data),this._dh.setPublicKey(e.part.y.data)}else if("ecdsa"===e.type){if(!h)return this._ecParams=new m(this._curve),void(this._isPriv&&(this._priv=new v(this._ecParams,e.part.d.data)));var t={nistp256:"prime256v1",nistp384:"secp384r1",nistp521:"secp521r1"}[e.curve];if(this._dh=n.createECDH(t),"object"!=typeof this._dh||"function"!=typeof this._dh.setPrivateKey)return h=!1,void f.call(this,e);this._isPriv&&this._dh.setPrivateKey(e.part.d.data),this._dh.setPublicKey(e.part.Q.data)}else{if("curve25519"!==e.type)throw new Error("DH not supported for "+e.type+" keys");this._isPriv&&(s.assertCompatible(e,l,[1,5],"key"),this._priv=e.part.k.data)}}function m(e){var t=o.curves[e];i.object(t);var r=new d(t.p),n=new d(t.a),a=new d(t.b),s=new d(t.n),u=d.ONE,c=new p.ECCurveFp(r,n,a),l=c.decodePointHex(t.G.toString("hex"));this.curve=c,this.g=l,this.n=s,this.h=u}function g(e,t){this._params=e,0===t[0]&&(t=t.slice(1)),this._pub=e.getCurve().decodePointHex(t.toString("hex"))}function v(e,t){this._params=e,this._priv=new d(s.mpNormalize(t))}f.prototype.getPublicKey=function(){return this._isPriv?this._key.toPublic():this._key},f.prototype.getPrivateKey=function(){return this._isPriv?this._key:void 0},f.prototype.getKey=f.prototype.getPrivateKey,f.prototype._keyCheck=function(e,t){if(i.object(e,"key"),t||s.assertCompatible(e,l,[1,3],"key"),s.assertCompatible(e,c,[1,4],"key"),e.type!==this._algo)throw new Error("A "+e.type+" key cannot be used in "+this._algo+" Diffie-Hellman");if(e.curve!==this._curve)throw new Error("A key from the "+e.curve+" curve cannot be used with a "+this._curve+" Diffie-Hellman");"dsa"===e.type&&(i.deepEqual(e.part.p,this._p,"DSA key prime does not match"),i.deepEqual(e.part.g,this._g,"DSA key generator does not match"))},f.prototype.setKey=function(e){if(this._keyCheck(e),"dsa"===e.type)this._dh.setPrivateKey(e.part.x.data),this._dh.setPublicKey(e.part.y.data);else if("ecdsa"===e.type)h?(this._dh.setPrivateKey(e.part.d.data),this._dh.setPublicKey(e.part.Q.data)):this._priv=new v(this._ecParams,e.part.d.data);else if("curve25519"===e.type){var t=e.part.k;e.part.k||(t=e.part.r),this._priv=t.data,0===this._priv[0]&&(this._priv=this._priv.slice(1)),this._priv=this._priv.slice(0,32)}this._key=e,this._isPriv=!0},f.prototype.setPrivateKey=f.prototype.setKey,f.prototype.computeSecret=function(e){if(this._keyCheck(e,!0),!this._isPriv)throw new Error("DH exchange has not been initialized with a private key yet");var t;if("dsa"===this._algo)return this._dh.computeSecret(e.part.y.data);if("ecdsa"===this._algo)return h?this._dh.computeSecret(e.part.Q.data):(t=new g(this._ecParams,e.part.Q.data),this._priv.deriveSharedSecret(t));if("curve25519"===this._algo){for(t=e.part.A.data;0===t[0]&&t.length>32;)t=t.slice(1);var r=this._priv;i.strictEqual(t.length,32),i.strictEqual(r.length,32);var n=u.box.before(new Uint8Array(t),new Uint8Array(r));return a.from(n)}throw new Error("Invalid algorithm: "+this._algo)},f.prototype.generateKey=function(){var e,t,r=[];if("dsa"===this._algo)return this._dh.generateKeys(),r.push({name:"p",data:this._p.data}),r.push({name:"q",data:this._key.part.q.data}),r.push({name:"g",data:this._g.data}),r.push({name:"y",data:this._dh.getPublicKey()}),r.push({name:"x",data:this._dh.getPrivateKey()}),this._key=new l({type:"dsa",parts:r}),this._isPriv=!0,this._key;if("ecdsa"===this._algo){if(h)return this._dh.generateKeys(),r.push({name:"curve",data:a.from(this._curve)}),r.push({name:"Q",data:this._dh.getPublicKey()}),r.push({name:"d",data:this._dh.getPrivateKey()}),this._key=new l({type:"ecdsa",curve:this._curve,parts:r}),this._isPriv=!0,this._key;var o=this._ecParams.getN(),s=new d(n.randomBytes(o.bitLength())),c=o.subtract(d.ONE);return e=s.mod(c).add(d.ONE),t=this._ecParams.getG().multiply(e),e=a.from(e.toByteArray()),t=a.from(this._ecParams.getCurve().encodePointHex(t),"hex"),this._priv=new v(this._ecParams,e),r.push({name:"curve",data:a.from(this._curve)}),r.push({name:"Q",data:t}),r.push({name:"d",data:e}),this._key=new l({type:"ecdsa",curve:this._curve,parts:r}),this._isPriv=!0,this._key}if("curve25519"===this._algo){var p=u.box.keyPair();return e=a.from(p.secretKey),t=a.from(p.publicKey),e=a.concat([e,t]),i.strictEqual(e.length,64),i.strictEqual(t.length,32),r.push({name:"A",data:t}),r.push({name:"k",data:e}),this._key=new l({type:"curve25519",parts:r}),this._isPriv=!0,this._key}throw new Error("Invalid algorithm: "+this._algo)},f.prototype.generateKeys=f.prototype.generateKey,m.prototype.getCurve=function(){return this.curve},m.prototype.getG=function(){return this.g},m.prototype.getN=function(){return this.n},m.prototype.getH=function(){return this.h},v.prototype.deriveSharedSecret=function(e){i.ok(e instanceof g);var t=e._pub.multiply(this._priv);return a.from(t.getX().toBigInteger().toByteArray())}},14744:(e,t,r)=>{e.exports={Verifier:c,Signer:l};var i=r(50780),n=r(42830),a=r(89539),o=r(6144),s=r(2399).Buffer,u=r(15270);function c(e,t){if("sha512"!==t.toLowerCase())throw new Error("ED25519 only supports the use of SHA-512 hashes");this.key=e,this.chunks=[],n.Writable.call(this,{})}function l(e,t){if("sha512"!==t.toLowerCase())throw new Error("ED25519 only supports the use of SHA-512 hashes");this.key=e,this.chunks=[],n.Writable.call(this,{})}a.inherits(c,n.Writable),c.prototype._write=function(e,t,r){this.chunks.push(e),r()},c.prototype.update=function(e){"string"==typeof e&&(e=s.from(e,"binary")),this.chunks.push(e)},c.prototype.verify=function(e,t){var r;if(u.isSignature(e,[2,0])){if("ed25519"!==e.type)return!1;r=e.toBuffer("raw")}else if("string"==typeof e)r=s.from(e,"base64");else if(u.isSignature(e,[1,0]))throw new Error("signature was created by too old a version of sshpk and cannot be verified");return o.buffer(r),i.sign.detached.verify(new Uint8Array(s.concat(this.chunks)),new Uint8Array(r),new Uint8Array(this.key.part.A.data))},a.inherits(l,n.Writable),l.prototype._write=function(e,t,r){this.chunks.push(e),r()},l.prototype.update=function(e){"string"==typeof e&&(e=s.from(e,"binary")),this.chunks.push(e)},l.prototype.sign=function(){var e=i.sign.detached(new Uint8Array(s.concat(this.chunks)),new Uint8Array(s.concat([this.key.part.k.data,this.key.part.A.data]))),t=s.from(e),r=u.parse(t,"ed25519","raw");return r.hashAlgorithm="sha512",r}},23004:(e,t,r)=>{r(6144);var i=r(89539);function n(e,t){Error.captureStackTrace&&Error.captureStackTrace(this,n),this.name="FingerprintFormatError",this.fingerprint=e,this.format=t,this.message="Fingerprint format is not supported, or is invalid: ",void 0!==e&&(this.message+=" fingerprint = "+e),void 0!==t&&(this.message+=" format = "+t)}function a(e){Error.captureStackTrace&&Error.captureStackTrace(this,a),this.name="InvalidAlgorithmError",this.algorithm=e,this.message='Algorithm "'+e+'" is not supported'}function o(e,t,r){Error.captureStackTrace&&Error.captureStackTrace(this,o),this.name="KeyParseError",this.format=t,this.keyName=e,this.innerErr=r,this.message="Failed to parse "+e+" as a valid "+t+" format key: "+r.message}function s(e,t,r){Error.captureStackTrace&&Error.captureStackTrace(this,s),this.name="SignatureParseError",this.type=e,this.format=t,this.innerErr=r,this.message="Failed to parse the given data as a "+e+" signature in "+t+" format: "+r.message}function u(e,t,r){Error.captureStackTrace&&Error.captureStackTrace(this,u),this.name="CertificateParseError",this.format=t,this.certName=e,this.innerErr=r,this.message="Failed to parse "+e+" as a valid "+t+" format certificate: "+r.message}function c(e,t){Error.captureStackTrace&&Error.captureStackTrace(this,c),this.name="KeyEncryptedError",this.format=t,this.keyName=e,this.message="The "+t+" format key "+e+" is encrypted (password-protected), and no passphrase was provided in `options`"}i.inherits(n,Error),i.inherits(a,Error),i.inherits(o,Error),i.inherits(s,Error),i.inherits(u,Error),i.inherits(c,Error),e.exports={FingerprintFormatError:n,InvalidAlgorithmError:a,KeyParseError:o,SignatureParseError:s,KeyEncryptedError:c,CertificateParseError:u}},40500:(e,t,r)=>{e.exports=f;var i=r(6144),n=r(2399).Buffer,a=r(95280),o=r(55835),s=r(23004),u=r(67721),c=r(73079),l=r(90312),h=r(2743),p=s.FingerprintFormatError,d=s.InvalidAlgorithmError;function f(e){if(i.object(e,"options"),i.string(e.type,"options.type"),i.buffer(e.hash,"options.hash"),i.string(e.algorithm,"options.algorithm"),this.algorithm=e.algorithm.toLowerCase(),!0!==a.hashAlgs[this.algorithm])throw new d(this.algorithm);this.hash=e.hash,this.type=e.type,this.hashType=e.hashType}f.prototype.toString=function(e){switch(void 0===e&&(e="md5"===this.algorithm||"spki"===this.hashType?"hex":"base64"),i.string(e),e){case"hex":return"spki"===this.hashType?this.hash.toString("hex"):this.hash.toString("hex").replace(/(.{2})(?=.)/g,"$1:");case"base64":return"spki"===this.hashType?this.hash.toString("base64"):(t=this.algorithm,r=this.hash.toString("base64"),t.toUpperCase()+":"+r.replace(/=*$/,""));default:throw new p(void 0,e)}var t,r},f.prototype.matches=function(e){i.object(e,"key or certificate"),"key"===this.type&&"ssh"!==this.hashType?(h.assertCompatible(e,u,[1,7],"key with spki"),c.isPrivateKey(e)&&h.assertCompatible(e,c,[1,6],"privatekey with spki support")):"key"===this.type?h.assertCompatible(e,u,[1,0],"key"):h.assertCompatible(e,l,[1,0],"certificate");var t=e.hash(this.algorithm,this.hashType),r=o.createHash(this.algorithm).update(t).digest("base64");return void 0===this.hash2&&(this.hash2=o.createHash(this.algorithm).update(this.hash).digest("base64")),this.hash2===r};var m=/^[A-Za-z0-9+\/=]+$/,g=/^[a-fA-F0-9]+$/;f.parse=function(e,t){var r,o,s;i.string(e,"fingerprint"),Array.isArray(t)&&(s=t,t={}),i.optionalObject(t,"options"),void 0===t&&(t={}),void 0!==t.enAlgs&&(s=t.enAlgs),void 0!==t.algorithms&&(s=t.algorithms),i.optionalArrayOfString(s,"algorithms");var u="ssh";void 0!==t.hashType&&(u=t.hashType),i.string(u,"options.hashType");var c=e.split(":");if(2==c.length){if(r=c[0].toLowerCase(),!m.test(c[1]))throw new p(e);try{o=n.from(c[1],"base64")}catch(t){throw new p(e)}}else if(c.length>2){if(r="md5","md5"===c[0].toLowerCase()&&(c=c.slice(1)),c=(c=c.map((function(t){for(;t.length<2;)t="0"+t;if(t.length>2)throw new p(e);return t}))).join(""),!g.test(c)||c.length%2!=0)throw new p(e);try{o=n.from(c,"hex")}catch(t){throw new p(e)}}else{if(g.test(e))o=n.from(e,"hex");else{if(!m.test(e))throw new p(e);o=n.from(e,"base64")}switch(o.length){case 32:r="sha256";break;case 16:r="md5";break;case 20:r="sha1";break;case 64:r="sha512";break;default:throw new p(e)}void 0===t.hashType&&(u="spki")}if(void 0===r)throw new p(e);if(void 0===a.hashAlgs[r])throw new d(r);if(void 0!==s&&-1===(s=s.map((function(e){return e.toLowerCase()}))).indexOf(r))throw new d(r);return new f({algorithm:r,hash:o,type:t.type||"key",hashType:u})},f.isFingerprint=function(e,t){return h.isCompatible(e,f,t)},f.prototype._sshpkApiVersion=[1,2],f._oldVersionDetect=function(e){return i.func(e.toString),i.func(e.matches),[1,0]}},31683:(e,t,r)=>{e.exports={read:function(e,t){if("string"==typeof e){if(e.trim().match(/^[-]+[ ]*BEGIN/))return a.read(e,t);if(e.match(/^\s*ssh-[a-z]/))return o.read(e,t);if(e.match(/^\s*ecdsa-/))return o.read(e,t);if(e.match(/^putty-user-key-file-2:/i))return c.read(e,t);if(h(e))return u.read(e,t);e=n.from(e,"binary")}else{if(i.buffer(e),function(e){for(var t=0;te.length||"BEGIN"!==e.slice(t,t+5).toString("ascii"))}(e))return a.read(e,t);if(function(e){for(var t=0;t{e.exports={read:function(e,t){"string"!=typeof e&&(i.buffer(e,"buf"),e=e.toString("ascii"));var r=e.split("\n");if(r[0].match(/^Private-key-format\: v1/)){var u=r[1].split(" "),h=parseInt(u[1],10),p=u[2];if(!c[h])throw new Error("Unsupported algorithm: "+p);return function(e,t){if(c[e].match(/^RSA-/))return function(e){var t={};e.forEach((function(e){"Modulus:"===e.split(" ")[0]?t.n=l(e):"PublicExponent:"===e.split(" ")[0]?t.e=l(e):"PrivateExponent:"===e.split(" ")[0]?t.d=l(e):"Prime1:"===e.split(" ")[0]?t.p=l(e):"Prime2:"===e.split(" ")[0]?t.q=l(e):"Exponent1:"===e.split(" ")[0]?t.dmodp=l(e):"Exponent2:"===e.split(" ")[0]?t.dmodq=l(e):"Coefficient:"===e.split(" ")[0]&&(t.iqmp=l(e))}));var r={type:"rsa",parts:[{name:"e",data:s.mpNormalize(t.e)},{name:"n",data:s.mpNormalize(t.n)},{name:"d",data:s.mpNormalize(t.d)},{name:"p",data:s.mpNormalize(t.p)},{name:"q",data:s.mpNormalize(t.q)},{name:"dmodp",data:s.mpNormalize(t.dmodp)},{name:"dmodq",data:s.mpNormalize(t.dmodq)},{name:"iqmp",data:s.mpNormalize(t.iqmp)}]};return new o(r)}(t);if("ECDSA-P384-SHA384"===c[e]||"ECDSA-P256-SHA256"===c[e]){var r=n.from(t[0].split(" ")[1],"base64"),i="nistp384",a=384;"ECDSA-P256-SHA256"===c[e]&&(i="nistp256",a=256);var u=s.publicFromPrivateECDSA(i,r).part.Q.data,h={type:"ecdsa",curve:i,size:a,parts:[{name:"curve",data:n.from(i)},{name:"d",data:r},{name:"Q",data:u}]};return new o(h)}throw new Error("Unsupported algorithm: "+c[e])}(h,r.slice(2))}for(var d=0;r[d].match(/^\;/);)d++;if((r[d].match(/\. IN KEY /)||r[d].match(/\. IN DNSKEY /))&&0===r[d+1].length)return function(e){var t=e.split(" "),r=parseInt(t[5],10);if(!c[r])throw new Error("Unsupported algorithm: "+r);var i=t.slice(6,t.length).join(),o=n.from(i,"base64");if(c[r].match(/^RSA-/)){var u=o.readUInt8(0);if(3!=u&&1!=u)throw new Error("Cannot parse dnssec key: unsupported exponent length");var l=o.slice(1,u+1);l=s.mpNormalize(l);var h=o.slice(1+u);h=s.mpNormalize(h);var p={type:"rsa",parts:[]};return p.parts.push({name:"e",data:l}),p.parts.push({name:"n",data:h}),new a(p)}if("ECDSA-P384-SHA384"===c[r]||"ECDSA-P256-SHA256"===c[r]){var d="nistp384",f=384;c[r].match(/^ECDSA-P256-SHA256/)&&(d="nistp256",f=256);var m={type:"ecdsa",curve:d,size:f,parts:[{name:"curve",data:n.from(d)},{name:"Q",data:s.ecNormalize(o)}]};return new a(m)}throw new Error("Unsupported algorithm: "+c[r])}(r[d]);throw new Error("Cannot parse dnssec key")},write:function(e,t){if(o.isPrivateKey(e)){if("rsa"===e.type)return function(e,t){e.part.dmodp&&e.part.dmodq||s.addRSAMissing(e);var r="";r+="Private-key-format: v1.3\n",r+="Algorithm: "+function(e){if(e&&e.hashAlgo&&"sha1"!==e.hashAlgo){if("sha256"===e.hashAlgo)return"8 (RSASHA256)";if("sha512"===e.hashAlgo)return"10 (RSASHA512)";throw new Error("Unknown or unsupported hash: "+e.hashAlgo)}return"5 (RSASHA1)"}(t)+"\n",r+="Modulus: "+s.mpDenormalize(e.part.n.data).toString("base64")+"\n",r+="PublicExponent: "+s.mpDenormalize(e.part.e.data).toString("base64")+"\n",r+="PrivateExponent: "+s.mpDenormalize(e.part.d.data).toString("base64")+"\n",r+="Prime1: "+s.mpDenormalize(e.part.p.data).toString("base64")+"\n",r+="Prime2: "+s.mpDenormalize(e.part.q.data).toString("base64")+"\n",r+="Exponent1: "+s.mpDenormalize(e.part.dmodp.data).toString("base64")+"\n",r+="Exponent2: "+s.mpDenormalize(e.part.dmodq.data).toString("base64")+"\n",r+="Coefficient: "+s.mpDenormalize(e.part.iqmp.data).toString("base64")+"\n";var i=new Date;return r+="Created: "+h(i)+"\n",r+="Publish: "+h(i)+"\n",r+="Activate: "+h(i)+"\n",n.from(r,"ascii")}(e,t);if("ecdsa"===e.type)return function(e,t){var r="";if(r+="Private-key-format: v1.3\n","nistp256"===e.curve)r+="Algorithm: 13 (ECDSAP256SHA256)\n";else{if("nistp384"!==e.curve)throw new Error("Unsupported curve");r+="Algorithm: 14 (ECDSAP384SHA384)\n"}r+="PrivateKey: "+e.part.d.data.toString("base64")+"\n";var i=new Date;return r+="Created: "+h(i)+"\n",r+="Publish: "+h(i)+"\n",r+="Activate: "+h(i)+"\n",n.from(r,"ascii")}(e);throw new Error("Unsupported algorithm: "+e.type)}throw a.isKey(e)?new Error('Format "dnssec" only supports writing private keys'):new Error("key is not a Key or PrivateKey")}};var i=r(6144),n=r(2399).Buffer,a=r(67721),o=r(73079),s=r(2743),u=(r(34840),r(78849),{"rsa-sha1":5,"rsa-sha256":8,"rsa-sha512":10,"ecdsa-p256-sha256":13,"ecdsa-p384-sha384":14}),c={};function l(e){return n.from(e.split(" ")[1],"base64")}function h(e){var t=e.getFullYear()+""+(e.getMonth()+1)+e.getUTCDate();return(t+=""+e.getUTCHours()+e.getUTCMinutes())+e.getUTCSeconds()}Object.keys(u).forEach((function(e){c[u[e]]=e.toUpperCase()}))},85716:(e,t,r)=>{e.exports={read:function(e,t){o.isBuffer(e)&&(e=e.toString("ascii"));var r=e.trim().split(/[ \t\n]+/g);if(r.length<2||r.length>3)throw new Error("Not a valid SSH certificate line");var i=r[0],n=r[1];return g(n=o.from(n,"base64"),i)},verify:function(e,t){return!1},sign:function(e,t){void 0===e.signatures.openssh&&(e.signatures.openssh={});try{var r=_(e,!0)}catch(t){return delete e.signatures.openssh,!1}var i=e.signatures.openssh,n=void 0;"rsa"!==t.type&&"dsa"!==t.type||(n="sha1");var a=t.createSign(n);return a.write(r),i.signature=a.sign(),!0},signAsync:function(e,t,r){void 0===e.signatures.openssh&&(e.signatures.openssh={});try{var i=_(e,!0)}catch(t){return delete e.signatures.openssh,void r(t)}var n=e.signatures.openssh;t(i,(function(e,t){if(e)r(e);else{try{t.toBuffer("ssh")}catch(e){return void r(e)}n.signature=t,r()}}))},write:function(e,t){void 0===t&&(t={});var r=_(e),i=b(e.subjectKey)+" "+r.toString("base64");return t.comment&&(i=i+" "+t.comment),i},fromBuffer:g,toBuffer:_};var i=r(6144),n=r(34840),a=r(55835),o=r(2399).Buffer,s=r(95280),u=r(67721),c=(r(73079),r(85279)),l=r(84274),h=r(15270),p=r(2743),d=r(90312),f={user:1,host:2};Object.keys(f).forEach((function(e){f[f[e]]=e}));var m=/^ecdsa-sha2-([^@-]+)-cert-v01@openssh.com$/;function g(e,t,r){var a=new n({buffer:e}),o=a.readString();if(void 0!==t&&o!==t)throw new Error("SSH certificate algorithm mismatch");void 0===t&&(t=o);var g={signatures:{}};g.signatures.openssh={},g.signatures.openssh.nonce=a.readBuffer();var y={},_=y.parts=[];y.type=function(e){if("ssh-rsa-cert-v01@openssh.com"===e)return"rsa";if("ssh-dss-cert-v01@openssh.com"===e)return"dsa";if(e.match(m))return"ecdsa";if("ssh-ed25519-cert-v01@openssh.com"===e)return"ed25519";throw new Error("Unsupported cert type "+e)}(t);for(var b=s.info[y.type].parts.length;_.length=1,"key must have at least one part");var w=s.info[y.type];if("ecdsa"===y.type){var E=m.exec(t);i.ok(null!==E),i.strictEqual(E[1],_[0].data.toString())}for(var k=0;k{e.exports={read:function(e,t,r){var u=e;"string"!=typeof e&&(i.buffer(e,"buf"),e=e.toString("ascii"));for(var c,g,y=e.trim().split(/[\r\n]+/g),_=-1;!c&&_0;)g=y[--b].match(/[-]+[ ]*END ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/);i.ok(g,"invalid PEM footer"),i.equal(c[2],g[2]);var w,E=c[2].toLowerCase();c[1]&&(i.equal(c[1],g[1],"PEM header and footer mismatch"),w=c[1].trim()),y=y.slice(_,b+1);for(var k,S,x,j={};c=(y=y.slice(1))[0].match(/^([A-Za-z0-9-]+): (.+)$/);)j[c[1].toLowerCase()]=c[2];if(y=y.slice(0,-1).join(""),e=o.from(y,"base64"),j["proc-type"]){var N=j["proc-type"].split(",");if("4"===N[0]&&"ENCRYPTED"===N[1]){if("string"==typeof t.passphrase&&(t.passphrase=o.from(t.passphrase,"utf-8")),!o.isBuffer(t.passphrase))throw new f.KeyEncryptedError(t.filename,"PEM");N=j["dek-info"].split(","),i.ok(2===N.length),k=N[0].toLowerCase(),x=o.from(N[1],"hex"),S=s.opensslKeyDeriv(k,x,t.passphrase,1).key}}if(w&&"encrypted"===w.toLowerCase()){var M,I=new n.BerReader(e);I.readSequence(),I.readSequence(),M=I.offset+I.length;var A=I.readOID();if("1.2.840.113549.1.5.13"!==A)throw new Error("Unsupported PEM/PKCS8 encryption scheme: "+A);I.readSequence(),I.readSequence();var T=I.offset+I.length,R=I.readOID();if("1.2.840.113549.1.5.12"!==R)throw new Error("Unsupported PBES2 KDF: "+R);I.readSequence();var P=I.readString(n.Ber.OctetString,!0),O=I.readInt(),B="sha1";if(I.offsetd.length&&(y=d.length),g+=m.write(d.slice(v,y),g),m[g++]=10,v=y}return g+=m.write("-----END "+a+"-----\n",g),m.slice(0,g)}};var i=r(6144),n=r(90476),a=r(55835),o=r(2399).Buffer,s=(r(95280),r(2743)),u=r(67721),c=r(73079),l=r(50562),h=r(92693),p=r(53176),d=r(84274),f=r(23004),m={"1.2.840.113549.3.7":"3des-cbc","2.16.840.1.101.3.4.1.2":"aes128-cbc","2.16.840.1.101.3.4.1.42":"aes256-cbc"},g={};Object.keys(m).forEach((function(e){g[m[e]]=e}));var v={"1.2.840.113549.2.7":"sha1","1.2.840.113549.2.9":"sha256","1.2.840.113549.2.11":"sha512"},y={};Object.keys(v).forEach((function(e){y[v[e]]=e}))},50562:(e,t,r)=>{e.exports={read:function(e,t){return l.read(e,t,"pkcs1")},readPkcs1:function(e,t,r){switch(e){case"RSA":if("public"===t)return function(e){var t=p(e,"modulus"),r=p(e,"exponent");return new u({type:"rsa",parts:[{name:"e",data:r},{name:"n",data:t}]})}(r);if("private"===t)return function(e){var t=p(e,"version");i.strictEqual(t[0],0);var r=p(e,"modulus"),n=p(e,"public exponent"),a=p(e,"private exponent"),o=p(e,"prime1"),s=p(e,"prime2"),u=p(e,"exponent1"),l=p(e,"exponent2"),h=p(e,"iqmp");return new c({type:"rsa",parts:[{name:"n",data:r},{name:"e",data:n},{name:"d",data:a},{name:"iqmp",data:h},{name:"p",data:o},{name:"q",data:s},{name:"dmodp",data:u},{name:"dmodq",data:l}]})}(r);throw new Error("Unknown key type: "+t);case"DSA":if("public"===t)return function(e){var t=p(e,"y"),r=p(e,"p"),i=p(e,"q"),n=p(e,"g");return new u({type:"dsa",parts:[{name:"y",data:t},{name:"p",data:r},{name:"q",data:i},{name:"g",data:n}]})}(r);if("private"===t)return function(e){var t=p(e,"version");i.strictEqual(t.readUInt8(0),0);var r=p(e,"p"),n=p(e,"q"),a=p(e,"g"),o=p(e,"y"),s=p(e,"x");return new c({type:"dsa",parts:[{name:"p",data:r},{name:"q",data:n},{name:"g",data:a},{name:"y",data:o},{name:"x",data:s}]})}(r);throw new Error("Unknown key type: "+t);case"EC":case"ECDSA":if("private"===t)return function(e){var t=p(e,"version");i.strictEqual(t.readUInt8(0),1);var r=e.readString(n.Ber.OctetString,!0);e.readSequence(160);var o=h(e);i.string(o,"a known elliptic curve"),e.readSequence(161);var u=e.readString(n.Ber.BitString,!0);u=s.ecNormalize(u);var l={type:"ecdsa",parts:[{name:"curve",data:a.from(o)},{name:"Q",data:u},{name:"d",data:r}]};return new c(l)}(r);if("public"===t)return function(e){e.readSequence();var t=e.readOID();i.strictEqual(t,"1.2.840.10045.2.1","must be ecPublicKey");for(var r,c=e.readOID(),l=Object.keys(o.curves),h=0;h{e.exports={read:function(e,t){return l.read(e,t,"pkcs8")},readPkcs8:function(e,t,r){r.peek()===n.Ber.Integer&&(i.strictEqual(t,"private","unexpected Integer at start of public key"),r.readString(n.Ber.Integer,!0)),r.readSequence();var o=r.offset+r.length,l=r.readOID();switch(l){case"1.2.840.113549.1.1.1":return r._offset=o,"public"===t?function(e){e.readSequence(n.Ber.BitString),e.readByte(),e.readSequence();var t=h(e,"modulus"),r=h(e,"exponent"),i={type:"rsa",source:e.originalInput,parts:[{name:"e",data:r},{name:"n",data:t}]};return new u(i)}(r):function(e){e.readSequence(n.Ber.OctetString),e.readSequence();var t=h(e,"version");i.equal(t[0],0,"unknown RSA private key version");var r=h(e,"modulus"),a=h(e,"public exponent"),o=h(e,"private exponent"),s=h(e,"prime1"),u=h(e,"prime2"),l=h(e,"exponent1"),p=h(e,"exponent2"),d=h(e,"iqmp");return new c({type:"rsa",parts:[{name:"n",data:r},{name:"e",data:a},{name:"d",data:o},{name:"iqmp",data:d},{name:"p",data:s},{name:"q",data:u},{name:"dmodp",data:l},{name:"dmodq",data:p}]})}(r);case"1.2.840.10040.4.1":return"public"===t?function(e){e.readSequence();var t=h(e,"p"),r=h(e,"q"),i=h(e,"g");e.readSequence(n.Ber.BitString),e.readByte();var a=h(e,"y");return new u({type:"dsa",parts:[{name:"p",data:t},{name:"q",data:r},{name:"g",data:i},{name:"y",data:a}]})}(r):function(e){e.readSequence();var t=h(e,"p"),r=h(e,"q"),i=h(e,"g");e.readSequence(n.Ber.OctetString);var a=h(e,"x"),o=s.calculateDSAPublic(i,t,a);return new c({type:"dsa",parts:[{name:"p",data:t},{name:"q",data:r},{name:"g",data:i},{name:"y",data:o},{name:"x",data:a}]})}(r);case"1.2.840.10045.2.1":return"public"===t?function(e){var t=p(e);i.string(t,"a known elliptic curve");var r=e.readString(n.Ber.BitString,!0);r=s.ecNormalize(r);var o={type:"ecdsa",parts:[{name:"curve",data:a.from(t)},{name:"Q",data:r}]};return new u(o)}(r):function(e){var t=p(e);i.string(t,"a known elliptic curve"),e.readSequence(n.Ber.OctetString),e.readSequence();var r=h(e,"version");i.equal(r[0],1,"unknown version of ECDSA key");var o,u=e.readString(n.Ber.OctetString,!0);160==e.peek()&&(e.readSequence(160),e._offset+=e.length),161==e.peek()&&(e.readSequence(161),o=e.readString(n.Ber.BitString,!0),o=s.ecNormalize(o)),void 0===o&&(o=s.publicFromPrivateECDSA(t,u).part.Q.data);var l={type:"ecdsa",parts:[{name:"curve",data:a.from(t)},{name:"Q",data:o},{name:"d",data:u}]};return new c(l)}(r);case"1.3.101.112":return"public"===t?function(e){0===e.peek()&&e.readByte();var t=s.readBitString(e),r={type:"ed25519",parts:[{name:"A",data:s.zeroPadToLength(t,32)}]};return new u(r)}(r):function(e){0===e.peek()&&e.readByte(),e.readSequence(n.Ber.OctetString);var t,r=e.readString(n.Ber.OctetString,!0);r=s.zeroPadToLength(r,32),e.peek()===n.Ber.BitString?(t=s.readBitString(e),t=s.zeroPadToLength(t,32)):t=s.calculateED25519Public(r);var i={type:"ed25519",parts:[{name:"A",data:s.zeroPadToLength(t,32)},{name:"k",data:s.zeroPadToLength(r,32)}]};return new c(i)}(r);case"1.3.101.110":return"public"===t?function(e){var t=s.readBitString(e),r={type:"curve25519",parts:[{name:"A",data:s.zeroPadToLength(t,32)}]};return new u(r)}(r):function(e){0===e.peek()&&e.readByte(),e.readSequence(n.Ber.OctetString);var t=e.readString(n.Ber.OctetString,!0);t=s.zeroPadToLength(t,32);var r=s.calculateX25519Public(t),i={type:"curve25519",parts:[{name:"A",data:s.zeroPadToLength(r,32)},{name:"k",data:s.zeroPadToLength(t,32)}]};return new c(i)}(r);default:throw new Error("Unknown key type OID "+l)}},write:function(e,t){return l.write(e,t,"pkcs8")},writePkcs8:d,pkcs8ToBuffer:function(e){var t=new n.BerWriter;return d(t,e),t.buffer},readECDSACurve:p,writeECDSACurve:f};var i=r(6144),n=r(90476),a=r(2399).Buffer,o=r(95280),s=r(2743),u=r(67721),c=r(73079),l=r(68256);function h(e,t){return i.strictEqual(e.peek(),n.Ber.Integer,t+" is not an Integer"),s.mpNormalize(e.readString(n.Ber.Integer,!0))}function p(e){var t,r,u,c,l;if(e.peek()===n.Ber.OID){var h=e.readOID();for(r=Object.keys(o.curves),u=0;u{e.exports={read:function(e,t){for(var r,o,p=e.toString("ascii").split(/[\r\n]+/),d=!1,f=0;fp.length)throw new Error("Invalid public-lines count");var _,b,w,E=n.from(p.slice(f,f+y).join(""),"base64"),k=a.algToKeyType(m),S=a.read(E);if(S.type!==k)throw new Error("Outer key algorithm mismatch");if(p[f+=y]){r=h(p[f++]),i.equal(r[0].toLowerCase(),"private-lines");var x=parseInt(r[1],10);if(!isFinite(x)||x<0||x>p.length)throw new Error("Invalid private-lines count");var j=n.from(p.slice(f,f+x).join(""),"base64");if("none"!==g&&3===o)throw new Error("Encrypted keys arenot supported for PuTTY format version 3");if("aes256-cbc"===g){if(!t.passphrase)throw new l.KeyEncryptedError(t.filename,"PEM");var N=n.alloc(16,0),M=u.createDecipheriv("aes-256-cbc",(_=t.passphrase,b=u.createHash("sha1").update(n.concat([n.from([0,0,0,0]),n.from(_)])).digest(),w=u.createHash("sha1").update(n.concat([n.from([0,0,0,1]),n.from(_)])).digest(),n.concat([b,w]).slice(0,32)),N);M.setAutoPadding(!1),j=n.concat([M.update(j),M.final()])}if((S=new c(S)).type!==k)throw new Error("Outer key algorithm mismatch");var I,A=new s({buffer:j});if("ssh-dss"===m)I=[{name:"x",data:A.readBuffer()}];else if("ssh-rsa"===m)I=[{name:"d",data:A.readBuffer()},{name:"p",data:A.readBuffer()},{name:"q",data:A.readBuffer()},{name:"iqmp",data:A.readBuffer()}];else if(m.match(/^ecdsa-sha2-nistp/))I=[{name:"d",data:A.readBuffer()}];else{if("ssh-ed25519"!==m)throw new Error("Unsupported PPK key type: "+m);I=[{name:"k",data:A.readBuffer()}]}S=new c({type:S.type,parts:S.parts.concat(I)})}return S.comment=v,S},write:function(e,t){if(i.object(e),!o.isKey(e))throw new Error("Must be a public key");var r=a.keyTypeToAlg(e),s=a.write(e),u=e.comment||"",c=function(e,t){for(var r=[],i=0;i{e.exports={read:p.bind(void 0,!1,void 0),readType:p.bind(void 0,!1),write:function(e,t){i.object(e);var r,s=h(e),l=a.info[e.type];u.isPrivateKey(e)&&(l=a.privInfo[e.type]);var p=l.parts,d=new c({});for(d.writeString(s),r=0;r=1,"key must have at least one part"),i.ok(e||f.atEnd(),"leftover bytes at end of key");var v=s,y=a.info[p.type];if("private"!==t&&y.parts.length===d.length||(y=a.privInfo[p.type],v=u),i.strictEqual(y.parts.length,d.length),"ecdsa"===p.type){var _=/^ecdsa-sha2-(.+)$/.exec(m);i.ok(null!==_),i.strictEqual(_[1],d[0].data.toString())}for(var b=!0,w=0;w{e.exports={read:function(e,t){return c.read(e,t)},readSSHPrivate:function(e,t,u){var c=(t=new h({buffer:t})).readCString();n.strictEqual(c,d,"bad magic string");var f=t.readString(),m=t.readString(),g=t.readBuffer();if(1!==t.readInt())throw new Error("OpenSSH-format key file contains multiple keys: this is unsupported.");var v=t.readBuffer();if("public"===e)return n.ok(t.atEnd(),"excess bytes left after key"),l.read(v);var y=t.readBuffer();n.ok(t.atEnd(),"excess bytes left after key");var _=new h({buffer:g});switch(m){case"none":if("none"!==f)throw new Error('OpenSSH-format key uses KDF "none" but specifies a cipher other than "none"');break;case"bcrypt":var b=_.readBuffer(),w=_.readInt(),E=o.opensshCipherInfo(f);if(void 0===i&&(i=r(62703)),"string"==typeof u.passphrase&&(u.passphrase=a.from(u.passphrase,"utf-8")),!a.isBuffer(u.passphrase))throw new p.KeyEncryptedError(u.filename,"OpenSSH");var k=new Uint8Array(u.passphrase),S=new Uint8Array(b),x=new Uint8Array(E.keySize+E.blockSize);if(0!==i.pbkdf(k,k.length,S,S.length,x,x.length,w))throw new Error("bcrypt_pbkdf function returned failure, parameters invalid");var j=(x=a.from(x)).slice(0,E.keySize),N=x.slice(E.keySize,E.keySize+E.blockSize),M=s.createDecipheriv(E.opensslName,j,N);M.setAutoPadding(!1);var I,A=[];for(M.once("error",(function(e){if(-1!==e.toString().indexOf("bad decrypt"))throw new Error("Incorrect passphrase supplied, could not decrypt key");throw e})),M.write(y),M.end();null!==(I=M.read());)A.push(I);y=a.concat(A);break;default:throw new Error('OpenSSH-format key uses unknown KDF "'+m+'"')}if((t=new h({buffer:y})).readInt()!==t.readInt())throw new Error("Incorrect passphrase supplied, could not decrypt key");var T={},R=l.readInternal(T,"private",t.remainder());t.skip(T.consumed);var P=t.readString();return R.comment=P,R},write:function(e,t){var c;c=u.isPrivateKey(e)?e.toPublic():e;var l,p,f="none",m="none",g=a.alloc(0),v={blockSize:8};if(void 0!==t&&("string"==typeof(l=t.passphrase)&&(l=a.from(l,"utf-8")),void 0!==l&&(n.buffer(l,"options.passphrase"),n.optionalString(t.cipher,"options.cipher"),void 0===(f=t.cipher)&&(f="aes128-ctr"),v=o.opensshCipherInfo(f),m="bcrypt")),u.isPrivateKey(e)){p=new h({});var y=s.randomBytes(4).readUInt32BE(0);p.writeInt(y),p.writeInt(y),p.write(e.toBuffer("rfc4253")),p.writeString(e.comment||"");for(var _=1;p._offset%v.blockSize!=0;)p.writeChar(_++);p=p.toBuffer()}switch(m){case"none":break;case"bcrypt":var b=s.randomBytes(16),w=new h({});w.writeBuffer(b),w.writeInt(16),g=w.toBuffer(),void 0===i&&(i=r(62703));var E=new Uint8Array(l),k=new Uint8Array(b),S=new Uint8Array(v.keySize+v.blockSize);if(0!==i.pbkdf(E,E.length,k,k.length,S,S.length,16))throw new Error("bcrypt_pbkdf function returned failure, parameters invalid");var x=(S=a.from(S)).slice(0,v.keySize),j=S.slice(v.keySize,v.keySize+v.blockSize),N=s.createCipheriv(v.opensslName,x,j);N.setAutoPadding(!1);var M,I=[];for(N.once("error",(function(e){throw e})),N.write(p),N.end();null!==(M=N.read());)I.push(M);p=a.concat(I);break;default:throw new Error("Unsupported kdf "+m)}var A,T=new h({});T.writeCString(d),T.writeString(f),T.writeString(m),T.writeBuffer(g),T.writeInt(1),T.writeBuffer(c.toBuffer("rfc4253")),p&&T.writeBuffer(p),T=T.toBuffer(),A=u.isPrivateKey(e)?"OPENSSH PRIVATE KEY":"OPENSSH PUBLIC KEY";var R=T.toString("base64"),P=R.length+R.length/70+18+16+2*A.length+10,O=0;O+=(T=a.alloc(P)).write("-----BEGIN "+A+"-----\n",O);for(var B=0;BR.length&&(C=R.length),O+=T.write(R.slice(B,C),O),T[O++]=10,B=C}return O+=T.write("-----END "+A+"-----\n",O),T.slice(0,O)}};var i,n=r(6144),a=(r(90476),r(2399).Buffer),o=(r(95280),r(2743)),s=r(55835),u=(r(67721),r(73079)),c=r(68256),l=r(84274),h=r(34840),p=r(23004),d="openssh-key-v1"},26550:(e,t,r)=>{e.exports={read:function(e,t){"string"!=typeof e&&(i.buffer(e,"buf"),e=e.toString("ascii"));var r=e.trim().replace(/[\\\r]/g,""),o=r.match(s);o||(o=r.match(u)),i.ok(o,"key must match regex");var c,l=a.algToKeyType(o[1]),h=n.from(o[2],"base64"),p={};if(o[4])try{c=a.read(h)}catch(e){o=r.match(u),i.ok(o,"key must match regex"),h=n.from(o[2],"base64"),c=a.readInternal(p,"public",h)}else c=a.readInternal(p,"public",h);if(i.strictEqual(l,c.type),o[4]&&o[4].length>0)c.comment=o[4];else if(p.consumed){var d=o[2]+(o[3]?o[3]:""),f=4*Math.ceil(p.consumed/3);for(d=d.slice(0,f-2).replace(/[^a-zA-Z0-9+\/=]/g,"")+d.slice(f-2),p.consumed%3>0&&"="!==d.slice(f-1,f)&&f--;"="===d.slice(f,f+1);)f++;var m=d.slice(f);(m=m.replace(/[\r\n]/g," ").replace(/^\s+/,"")).match(/^[a-zA-Z0-9]/)&&(c.comment=m)}return c},write:function(e,t){if(i.object(e),!o.isKey(e))throw new Error("Must be a public key");var r=[],s=a.keyTypeToAlg(e);r.push(s);var u=a.write(e);return r.push(u.toString("base64")),e.comment&&r.push(e.comment),n.from(r.join(" "))}};var i=r(6144),n=r(2399).Buffer,a=r(84274),o=(r(2743),r(67721)),s=(r(73079),r(53176),/^([a-z0-9-]+)[ \t]+([a-zA-Z0-9+\/]+[=]*)([ \t]+([^ \t][^\n]*[\n]*)?)?$/),u=/^([a-z0-9-]+)[ \t\n]+([a-zA-Z0-9+\/][a-zA-Z0-9+\/ \t\n=]*)([^a-zA-Z0-9+\/ \t\n=].*)?$/},65221:(e,t,r)=>{var i=r(67026);e.exports={read:function(e,t){"string"!=typeof e&&(n.buffer(e,"buf"),e=e.toString("ascii"));for(var r,o,s=e.trim().split(/[\r\n]+/g),u=-1;!r&&u0;)o=s[--c].match(/[-]+[ ]*END CERTIFICATE[ ]*[-]+/);n.ok(o,"invalid PEM footer"),s=s.slice(u,c+1);for(var l={};r=(s=s.slice(1))[0].match(/^([A-Za-z0-9-]+): (.+)$/);)l[r[1].toLowerCase()]=r[2];return s=s.slice(0,-1).join(""),e=a.from(s,"base64"),i.read(e,t)},verify:i.verify,sign:i.sign,write:function(e,t){var r="CERTIFICATE",n=i.write(e,t).toString("base64"),o=n.length+n.length/64+18+16+2*r.length+10,s=a.alloc(o),u=0;u+=s.write("-----BEGIN "+r+"-----\n",u);for(var c=0;cn.length&&(l=n.length),u+=s.write(n.slice(c,l),u),s[u++]=10,c=l}return u+=s.write("-----END "+r+"-----\n",u),s.slice(0,u)}};var n=r(6144),a=(r(90476),r(2399).Buffer);r(95280),r(2743),r(67721),r(73079),r(68256),r(85279),r(15270),r(90312)},67026:(e,t,r)=>{e.exports={read:function(e,t){"string"==typeof e&&(e=a.from(e,"binary")),i.buffer(e,"buf");var r=new n.BerReader(e);if(r.readSequence(),Math.abs(r.length-r.remain)>1)throw new Error("DER sequence does not contain whole byte stream");var p=r.offset;r.readSequence();var f=r.offset+r.length,m=f;if(r.peek()===h(0)){r.readSequence(h(0));var g=r.readInt();i.ok(g<=3,"only x.509 versions up to v3 supported")}var v={signatures:{}},_=v.signatures.x509={};_.extras={},v.serial=function(e,t){return i.strictEqual(e.peek(),n.Ber.Integer,"serial is not an Integer"),o.mpNormalize(e.readString(n.Ber.Integer,!0))}(r),r.readSequence();var b=r.offset+r.length,w=r.readOID();if(void 0===d[w])throw new Error("unknown signature algorithm "+w);if(r._offset=b,v.issuer=s.parseAsn1(r),r.readSequence(),v.validFrom=y(r),v.validUntil=y(r),v.subjects=[s.parseAsn1(r)],r.readSequence(),b=r.offset+r.length,v.subjectKey=l.readPkcs8(void 0,"public",r),r._offset=b,r.peek()===h(1)&&(r.readSequence(h(1)),_.extras.issuerUniqueID=e.slice(r.offset,r.offset+r.length),r._offset+=r.length),r.peek()===h(2)&&(r.readSequence(h(2)),_.extras.subjectUniqueID=e.slice(r.offset,r.offset+r.length),r._offset+=r.length),r.peek()===h(3)){r.readSequence(h(3));var E=r.offset+r.length;for(r.readSequence();r.offset=60?a-1:a,r.setUTCFullYear(o,parseInt(t[2],10)-1,parseInt(t[3],10)),r.setUTCHours(parseInt(t[4],10),parseInt(t[5],10)),t[6]&&t[6].length>0&&r.setUTCSeconds(parseInt(t[6],10)),r}(e.readString(n.Ber.UTCTime));if(e.peek()===n.Ber.GeneralizedTime)return function(e){var t=e.match(j);i.ok(t);var r=new Date;return r.setUTCFullYear(parseInt(t[1],10),parseInt(t[2],10)-1,parseInt(t[3],10)),r.setUTCHours(parseInt(t[4],10),parseInt(t[5],10)),t[6]&&t[6].length>0&&r.setUTCSeconds(parseInt(t[6],10)),r}(e.readString(n.Ber.GeneralizedTime));throw new Error("Unsupported date format")}function _(e,t){var r,i;t.getUTCFullYear()>=2050||t.getUTCFullYear()<1950?e.writeString((i="",i+=N((r=t).getUTCFullYear(),4),i+=N(r.getUTCMonth()+1),i+=N(r.getUTCDate()),i+=N(r.getUTCHours()),i+=N(r.getUTCMinutes()),i+=N(r.getUTCSeconds()),i+="Z"),n.Ber.GeneralizedTime):e.writeString(function(e){var t="";return t+=N(e.getUTCFullYear()%100),t+=N(e.getUTCMonth()+1),t+=N(e.getUTCDate()),t+=N(e.getUTCHours()),t+=N(e.getUTCMinutes()),(t+=N(e.getUTCSeconds()))+"Z"}(t),n.Ber.UTCTime)}var b={OtherName:h(0),RFC822Name:p(1),DNSName:p(2),X400Address:h(3),DirectoryName:h(4),EDIPartyName:h(5),URI:p(6),IPAddress:p(7),OID:p(8)},w={serverAuth:"1.3.6.1.5.5.7.3.1",clientAuth:"1.3.6.1.5.5.7.3.2",codeSigning:"1.3.6.1.5.5.7.3.3",joyentDocker:"1.3.6.1.4.1.38678.1.4.1",joyentCmon:"1.3.6.1.4.1.38678.1.4.2"},E={};Object.keys(w).forEach((function(e){E[w[e]]=e}));var k=["signature","identity","keyEncryption","encryption","keyAgreement","ca","crl"];function S(e,t,r){r.readSequence();var i,a,o=r.offset+r.length,u=r.readOID(),c=e.signatures.x509;switch(c.extras.exts||(c.extras.exts=[]),r.peek()===n.Ber.Boolean&&(a=r.readBoolean()),u){case m:r.readSequence(n.Ber.OctetString),r.readSequence();var l=r.offset+r.length,h=!1;r.peek()===n.Ber.Boolean&&(h=r.readBoolean()),void 0===e.purposes&&(e.purposes=[]),!0===h&&e.purposes.push("ca");var p={oid:u,critical:a};r.offset0||"host"===a.type||void 0!==e.purposes&&e.purposes.length>0||r.extras&&r.extras.exts){t.startSequence(h(3)),t.startSequence();var u=[];void 0!==e.purposes&&e.purposes.length>0&&(u.push({oid:m,critical:!0}),u.push({oid:g,critical:!0}),u.push({oid:v,critical:!0})),u.push({oid:f}),r.extras&&r.extras.exts&&(u=r.extras.exts);for(var c=0;c{e.exports=l;var i=r(6144),n=(r(95280),r(55835),r(40500),r(15270),r(23004),r(89539),r(2743)),a=r(90476),o=r(2399).Buffer,s=/^([*]|[a-z0-9][a-z0-9\-]{0,62})(?:\.([*]|[a-z0-9][a-z0-9\-]{0,62}))*$/i,u={cn:"2.5.4.3",o:"2.5.4.10",ou:"2.5.4.11",l:"2.5.4.7",s:"2.5.4.8",c:"2.5.4.6",sn:"2.5.4.4",postalCode:"2.5.4.17",serialNumber:"2.5.4.5",street:"2.5.4.9",x500UniqueIdentifier:"2.5.4.45",role:"2.5.4.72",telephoneNumber:"2.5.4.20",description:"2.5.4.13",dc:"0.9.2342.19200300.100.1.25",uid:"0.9.2342.19200300.100.1.1",mail:"0.9.2342.19200300.100.1.3",title:"2.5.4.12",gn:"2.5.4.42",initials:"2.5.4.43",pseudonym:"2.5.4.65",emailAddress:"1.2.840.113549.1.9.1"},c={};function l(e){var t=this;if(i.object(e,"options"),i.arrayOfObject(e.components,"options.components"),this.components=e.components,this.componentLookup={},this.components.forEach((function(e){e.name&&!e.oid&&(e.oid=u[e.name]),e.oid&&!e.name&&(e.name=c[e.oid]),void 0===t.componentLookup[e.name]&&(t.componentLookup[e.name]=[]),t.componentLookup[e.name].push(e)})),this.componentLookup.cn&&this.componentLookup.cn.length>0&&(this.cn=this.componentLookup.cn[0].value),i.optionalString(e.type,"options.type"),void 0===e.type)1===this.components.length&&this.componentLookup.cn&&1===this.componentLookup.cn.length&&this.componentLookup.cn[0].value.match(s)?(this.type="host",this.hostname=this.componentLookup.cn[0].value):this.componentLookup.dc&&this.components.length===this.componentLookup.dc.length?(this.type="host",this.hostname=this.componentLookup.dc.map((function(e){return e.value})).join(".")):this.componentLookup.uid&&this.components.length===this.componentLookup.uid.length?(this.type="user",this.uid=this.componentLookup.uid[0].value):this.componentLookup.cn&&1===this.componentLookup.cn.length&&this.componentLookup.cn[0].value.match(s)?(this.type="host",this.hostname=this.componentLookup.cn[0].value):this.componentLookup.uid&&1===this.componentLookup.uid.length?(this.type="user",this.uid=this.componentLookup.uid[0].value):this.componentLookup.mail&&1===this.componentLookup.mail.length?(this.type="email",this.email=this.componentLookup.mail[0].value):this.componentLookup.cn&&1===this.componentLookup.cn.length?(this.type="user",this.uid=this.componentLookup.cn[0].value):this.type="unknown";else if(this.type=e.type,"host"===this.type)this.hostname=e.hostname;else if("user"===this.type)this.uid=e.uid;else{if("email"!==this.type)throw new Error("Unknown type "+this.type);this.email=e.email}}Object.keys(u).forEach((function(e){c[u[e]]=e})),l.prototype.toString=function(){return this.components.map((function(e){var t=e.name.toUpperCase();t=t.replace(/=/g,"\\=");var r=e.value;return t+"="+r.replace(/,/g,"\\,")})).join(", ")},l.prototype.get=function(e,t){i.string(e,"name");var r=this.componentLookup[e];if(void 0!==r&&0!==r.length){if(!t&&r.length>1)throw new Error("Multiple values for attribute "+e);return t?r.map((function(e){return e.value})):r[0].value}},l.prototype.toArray=function(e){return this.components.map((function(e){return{name:e.name,value:e.value}}))};var h=/[^a-zA-Z0-9 '(),+.\/:=?-]/,p=/[^\x00-\x7f]/;function d(e,t){if("**"===e||"**"===t)return!0;var r=e.split("."),i=t.split(".");if(r.length!==i.length)return!1;for(var n=0;n0;){var a;if(null!==(a=/^,/.exec(n)))t[++r]="",n=n.slice(a[0].length);else if(null!==(a=/^\\,/.exec(n)))t[r]+=",",n=n.slice(a[0].length);else if(null!==(a=/^\\./.exec(n)))t[r]+=a[0],n=n.slice(a[0].length);else{if(null===(a=/^[^\\,]+/.exec(n)))throw new Error("Failed to parse DN");t[r]+=a[0],n=n.slice(a[0].length)}}return new l({components:t.map((function(e){for(var t=(e=e.trim()).indexOf("=");t>0&&"\\"===e.charAt(t-1);)t=e.indexOf("=",t+1);if(-1===t)throw new Error("Failed to parse DN");return{name:e.slice(0,t).toLowerCase().replace(/\\=/g,"="),value:e.slice(t+1)}}))})},l.fromArray=function(e){return i.arrayOfObject(e,"components"),e.forEach((function(e){if(i.object(e,"component"),i.string(e.name,"component.name"),!o.isBuffer(e.value)&&"string"!=typeof e.value)throw new Error("Invalid component value")})),new l({components:e})},l.parseAsn1=function(e,t){var r=[];e.readSequence(t);for(var i=e.offset+e.length;e.offset{var i=r(67721),n=r(40500),a=r(15270),o=r(73079),s=r(90312),u=r(85279),c=r(23004);e.exports={Key:i,parseKey:i.parse,Fingerprint:n,parseFingerprint:n.parse,Signature:a,parseSignature:a.parse,PrivateKey:o,parsePrivateKey:o.parse,generatePrivateKey:o.generate,Certificate:s,parseCertificate:s.parse,createSelfSignedCertificate:s.createSelfSigned,createCertificate:s.create,Identity:u,identityFromDN:u.parseDN,identityForHost:u.forHost,identityForUser:u.forUser,identityForEmail:u.forEmail,identityFromArray:u.fromArray,FingerprintFormatError:c.FingerprintFormatError,InvalidAlgorithmError:c.InvalidAlgorithmError,KeyParseError:c.KeyParseError,SignatureParseError:c.SignatureParseError,KeyEncryptedError:c.KeyEncryptedError,CertificateParseError:c.CertificateParseError}},67721:(e,t,r)=>{var i=r(48764).Buffer;e.exports=v;var n,a=r(6144),o=r(95280),s=r(55835),u=r(40500),c=r(15270),l=r(78849).DiffieHellman,h=r(23004),p=r(2743),d=r(73079);try{n=r(14744)}catch(e){}var f=h.InvalidAlgorithmError,m=h.KeyParseError,g={};function v(e){a.object(e,"options"),a.arrayOfObject(e.parts,"options.parts"),a.string(e.type,"options.type"),a.optionalString(e.comment,"options.comment");var t=o.info[e.type];if("object"!=typeof t)throw new f(e.type);for(var r,i={},n=0;n1024&&(e="sha256"),"ed25519"===this.type&&(e="sha512"),"ecdsa"===this.type&&(e=this.size<=256?"sha256":this.size<=384?"sha384":"sha512"),e},v.prototype.createVerify=function(e){if(void 0===e&&(e=this.defaultHashAlgorithm()),a.string(e,"hash algorithm"),"ed25519"===this.type&&void 0!==n)return new n.Verifier(this,e);if("curve25519"===this.type)throw new Error("Curve25519 keys are not suitable for signing or verification");var t,r,o;try{r=e.toUpperCase(),t=s.createVerify(r)}catch(e){o=e}(void 0===t||o instanceof Error&&o.message.match(/Unknown message digest/))&&(r="RSA-",r+=e.toUpperCase(),t=s.createVerify(r)),a.ok(t,"failed to create verifier");var u=t.verify.bind(t),l=this.toBuffer("pkcs8"),h=this.curve,p=this;return t.verify=function(t,r){if(c.isSignature(t,[2,0]))return t.type===p.type&&(!t.hashAlgorithm||t.hashAlgorithm===e)&&(!t.curve||"ecdsa"!==p.type||t.curve===h)&&u(l,t.toBuffer("asn1"));if("string"==typeof t||i.isBuffer(t))return u(l,t,r);throw c.isSignature(t,[1,0])?new Error("signature was created by too old a version of sshpk and cannot be verified"):new TypeError("signature must be a string, Buffer, or Signature object")},t},v.prototype.createDiffieHellman=function(){if("rsa"===this.type)throw new Error("RSA keys do not support Diffie-Hellman");return new l(this)},v.prototype.createDH=v.prototype.createDiffieHellman,v.parse=function(e,t,r){"string"!=typeof e&&a.buffer(e,"data"),void 0===t&&(t="auto"),a.string(t,"format"),"string"==typeof r&&(r={filename:r}),a.optionalObject(r,"options"),void 0===r&&(r={}),a.optionalString(r.filename,"options.filename"),void 0===r.filename&&(r.filename="(unnamed)"),a.object(g[t],"formats[format]");try{var i=g[t].read(e,r);return i instanceof d&&(i=i.toPublic()),i.comment||(i.comment=r.filename),i}catch(e){if("KeyEncryptedError"===e.name)throw e;throw new m(r.filename,t,e)}},v.isKey=function(e,t){return p.isCompatible(e,v,t)},v.prototype._sshpkApiVersion=[1,7],v._oldVersionDetect=function(e){return a.func(e.toBuffer),a.func(e.fingerprint),e.createDH?[1,4]:e.defaultHashAlgorithm?[1,3]:e.formats.auto?[1,2]:e.formats.pkcs1?[1,1]:[1,0]}},73079:(e,t,r)=>{e.exports=_;var i=r(6144),n=r(2399).Buffer,a=r(95280),o=r(55835),s=(r(40500),r(15270)),u=r(23004),c=r(89539),l=r(2743),h=r(78849),p=h.generateECDSA,d=h.generateED25519,f=r(14744),m=r(50780),g=r(67721),v=(u.InvalidAlgorithmError,u.KeyParseError),y=(u.KeyEncryptedError,{});function _(e){i.object(e,"options"),g.call(this,e),this._pubCache=void 0}y.auto=r(31683),y.pem=r(68256),y.pkcs1=r(50562),y.pkcs8=r(92693),y.rfc4253=r(84274),y["ssh-private"]=r(53176),y.openssh=y["ssh-private"],y.ssh=y["ssh-private"],y.dnssec=r(64486),y.putty=r(95052),c.inherits(_,g),_.formats=y,_.prototype.toBuffer=function(e,t){return void 0===e&&(e="pkcs1"),i.string(e,"format"),i.object(y[e],"formats[format]"),i.optionalObject(t,"options"),y[e].write(this,t)},_.prototype.hash=function(e,t){return this.toPublic().hash(e,t)},_.prototype.fingerprint=function(e,t){return this.toPublic().fingerprint(e,t)},_.prototype.toPublic=function(){if(this._pubCache)return this._pubCache;for(var e=a.info[this.type],t=[],r=0;r{e.exports=h;var i=r(6144),n=r(2399).Buffer,a=(r(95280),r(55835),r(23004)),o=r(2743),s=r(90476),u=r(34840),c=a.InvalidAlgorithmError,l=a.SignatureParseError;function h(e){i.object(e,"options"),i.arrayOfObject(e.parts,"options.parts"),i.string(e.type,"options.type");for(var t={},r=0;r20&&0===a[0]&&(a=a.slice(1)),(c=this.part.s.data).length>20&&0===c[0]&&(c=c.slice(1)),this.hashAlgorithm&&"sha1"!==this.hashAlgorithm||a.length+c.length!==40)throw new Error("OpenSSH only supports DSA signatures with SHA1 hash");return t.writeBuffer(n.concat([a,c])),t.toBuffer()}if("ssh"===e&&"ecdsa"===this.type){var h,p=new u({});a=this.part.r.data,p.writeBuffer(a),p.writePart(this.part.s),t=new u({}),0===a[0]&&(a=a.slice(1));var d=8*a.length;return 256===d?h="nistp256":384===d?h="nistp384":528===d&&(h="nistp521"),t.writeString("ecdsa-sha2-"+h),t.writeBuffer(p.toBuffer()),t.toBuffer()}throw new Error("Invalid signature format");default:throw new Error("Invalid signature data")}},h.prototype.toString=function(e){return i.optionalString(e,"format"),this.toBuffer(e).toString("base64")},h.parse=function(e,t,r){"string"==typeof e&&(e=n.from(e,"base64")),i.buffer(e,"data"),i.string(r,"format"),i.string(t,"type");var a={};a.type=t.toLowerCase(),a.parts=[];try{switch(i.ok(e.length>0,"signature must not be empty"),a.type){case"rsa":case"ed25519":return function(e,t,r,n){if("ssh"===r){try{var a=new u({buffer:e}),o=a.readString()}catch(e){}if(void 0!==a){var s="SSH signature does not match expected type (expected "+t+", got "+o+")";switch(o){case"ssh-rsa":i.strictEqual(t,"rsa",s),n.hashAlgo="sha1";break;case"rsa-sha2-256":i.strictEqual(t,"rsa",s),n.hashAlgo="sha256";break;case"rsa-sha2-512":i.strictEqual(t,"rsa",s),n.hashAlgo="sha512";break;case"ssh-ed25519":i.strictEqual(t,"ed25519",s),n.hashAlgo="sha512";break;default:throw new Error("Unknown SSH signature type: "+o)}var c=a.readPart();return i.ok(a.atEnd(),"extra trailing bytes"),c.name="sig",n.parts.push(c),new h(n)}}return n.parts.push({name:"sig",data:e}),new h(n)}(e,t,r,a);case"dsa":case"ecdsa":return"asn1"===r?function(e,t,r,i){var n=new s.BerReader(e);n.readSequence();var a=n.readString(s.Ber.Integer,!0),u=n.readString(s.Ber.Integer,!0);return i.parts.push({name:"r",data:o.mpNormalize(a)}),i.parts.push({name:"s",data:o.mpNormalize(u)}),new h(i)}(e,0,0,a):"dsa"===a.type?function(e,t,r,n){if(40!=e.length){var a=new u({buffer:e}),o=a.readBuffer();"ssh-dss"===o.toString("ascii")&&(o=a.readBuffer()),i.ok(a.atEnd(),"extra trailing bytes"),i.strictEqual(o.length,40,"invalid inner length"),e=o}return n.parts.push({name:"r",data:e.slice(0,20)}),n.parts.push({name:"s",data:e.slice(20,40)}),new h(n)}(e,0,0,a):function(e,t,r,n){var a,o,s=new u({buffer:e}),c=s.readBuffer(),l=c.toString("ascii");if("ecdsa-"===l.slice(0,6)){var p=l.split("-");switch(i.strictEqual(p[0],"ecdsa"),i.strictEqual(p[1],"sha2"),n.curve=p[2],n.curve){case"nistp256":n.hashAlgo="sha256";break;case"nistp384":n.hashAlgo="sha384";break;case"nistp521":n.hashAlgo="sha512";break;default:throw new Error("Unsupported ECDSA curve: "+n.curve)}c=s.readBuffer(),i.ok(s.atEnd(),"extra trailing bytes on outer"),a=(s=new u({buffer:c})).readPart()}else a={data:c};return o=s.readPart(),i.ok(s.atEnd(),"extra trailing bytes"),a.name="r",o.name="s",n.parts.push(a),n.parts.push(o),new h(n)}(e,0,0,a);default:throw new c(t)}}catch(e){if(e instanceof c)throw e;throw new l(t,r,e)}},h.isSignature=function(e,t){return o.isCompatible(e,h,t)},h.prototype._sshpkApiVersion=[2,1],h._oldVersionDetect=function(e){return i.func(e.toBuffer),e.hasOwnProperty("hashAlgorithm")?[2,0]:[1,0]}},34840:(e,t,r)=>{e.exports=a;var i=r(6144),n=r(2399).Buffer;function a(e){i.object(e,"options"),void 0!==e.buffer&&i.buffer(e.buffer,"options.buffer"),this._size=e.buffer?e.buffer.length:1024,this._buffer=e.buffer||n.alloc(this._size),this._offset=0}a.prototype.toBuffer=function(){return this._buffer.slice(0,this._offset)},a.prototype.atEnd=function(){return this._offset>=this._buffer.length},a.prototype.remainder=function(){return this._buffer.slice(this._offset)},a.prototype.skip=function(e){this._offset+=e},a.prototype.expand=function(){this._size*=2;var e=n.alloc(this._size);this._buffer.copy(e,0),this._buffer=e},a.prototype.readPart=function(){return{data:this.readBuffer()}},a.prototype.readBuffer=function(){var e=this._buffer.readUInt32BE(this._offset);this._offset+=4,i.ok(this._offset+e<=this._buffer.length,"length out of bounds at +0x"+this._offset.toString(16)+" (data truncated?)");var t=this._buffer.slice(this._offset,this._offset+e);return this._offset+=e,t},a.prototype.readString=function(){return this.readBuffer().toString()},a.prototype.readCString=function(){for(var e=this._offset;ethis._size;)this.expand();this._buffer.writeUInt32BE(e.length,this._offset),this._offset+=4,e.copy(this._buffer,this._offset),this._offset+=e.length},a.prototype.writeString=function(e){this.writeBuffer(n.from(e,"utf8"))},a.prototype.writeCString=function(e){for(;this._offset+1+e.length>this._size;)this.expand();this._buffer.write(e,this._offset),this._offset+=e.length,this._buffer[this._offset++]=0},a.prototype.writeInt=function(e){for(;this._offset+4>this._size;)this.expand();this._buffer.writeUInt32BE(e,this._offset),this._offset+=4},a.prototype.writeInt64=function(e){if(i.buffer(e,"value"),e.length>8){for(var t=e.slice(0,e.length-8),r=0;rthis._size;)this.expand();e.copy(this._buffer,this._offset),this._offset+=8},a.prototype.writeChar=function(e){for(;this._offset+1>this._size;)this.expand();this._buffer[this._offset++]=e},a.prototype.writePart=function(e){this.writeBuffer(e.data)},a.prototype.write=function(e){for(;this._offset+e.length>this._size;)this.expand();e.copy(this._buffer,this._offset),this._offset+=e.length}},2743:(e,t,r)=>{e.exports={bufferSplit:function(e,t){i.buffer(e),i.string(t);for(var r=[],n=0,a=0,o=0;o=t.length){var s=o+1;r.push(e.slice(n,s-a)),n=s,a=0}return n<=e.length&&r.push(e.slice(n,e.length)),r},addRSAMissing:function(e){i.object(e),d(e,a,[1,1]);var t,r=new h(e.part.d.data);if(!e.part.dmodp){var n=new h(e.part.p.data);t=g(r.mod(n.subtract(1))),e.part.dmodp={name:"dmodp",data:t},e.parts.push(e.part.dmodp)}if(!e.part.dmodq){var o=new h(e.part.q.data);t=g(r.mod(o.subtract(1))),e.part.dmodq={name:"dmodq",data:t},e.parts.push(e.part.dmodq)}},calculateDSAPublic:function(e,t,r){return i.buffer(e),i.buffer(t),i.buffer(r),e=new h(e),t=new h(t),r=new h(r),g(e.modPow(r,t))},calculateED25519Public:function(e){i.buffer(e);var t=p.sign.keyPair.fromSeed(new Uint8Array(e));return n.from(t.publicKey)},calculateX25519Public:function(e){i.buffer(e);var t=p.box.keyPair.fromSeed(new Uint8Array(e));return n.from(t.publicKey)},mpNormalize:m,mpDenormalize:function(e){for(i.buffer(e);e.length>1&&0===e[0];)e=e.slice(1);return e},ecNormalize:function(e,t){if(i.buffer(e),0===e[0]&&4===e[1])return t?e:e.slice(1);if(4===e[0]){if(!t)return e}else{for(;0===e[0];)e=e.slice(1);if(2===e[0]||3===e[0])throw new Error("Compressed elliptic curve points are not supported");if(4!==e[0])throw new Error("Not a valid elliptic curve point");if(!t)return e}var r=n.alloc(e.length+1);return r[0]=0,e.copy(r,1),r},countZeros:function(e){for(var t=0,r=8;t3)return!1;if(i.constructor.name!==t.name)return!1;var a=i._sshpkApiVersion;return void 0===a&&(a=t._oldVersionDetect(e)),!(a[0]!=r[0]||a[1]t;)i.equal(e[0],0),e=e.slice(1);for(;e.length=r[1],n+" must be compatible with "+t.name+" klass version "+r[0]+"."+r[1])}}var f={"des-ede3-cbc":{key:24,iv:8},"aes-128-cbc":{key:16,iv:16},"aes-256-cbc":{key:32,iv:16}};function m(e){for(i.buffer(e);e.length>1&&0===e[0]&&0==(128&e[1]);)e=e.slice(1);if(128==(128&e[0])){var t=n.alloc(e.length+1);t[0]=0,e.copy(t,1),e=t}return e}function g(e){var t=n.from(e.toByteArray());return m(t)}},8799:e=>{"use strict";var t=/\.node$/;function r(e,t){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t(r)}function i(e,t){return r(t,(function(r){e[r]=t[r]})),e}function n(e){r(e,(function(r){t.test(r)||delete e[r]}))}e.exports=function(e,t,a,o){var s=i({},e);if(n(e),a){var u=!!o.children&&o.children.slice();a();var c=[];r(e,(function(e){c.push(e)})),n(e),o.children&&(o.children=u);for(var l=0;l{e.exports=n;var i=r(17187).EventEmitter;function n(){i.call(this)}r(35717)(n,i),n.Readable=r(79481),n.Writable=r(64229),n.Duplex=r(56753),n.Transform=r(74605),n.PassThrough=r(82725),n.finished=r(8610),n.pipeline=r(59946),n.Stream=n,n.prototype.pipe=function(e,t){var r=this;function n(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function a(){r.readable&&r.resume&&r.resume()}r.on("data",n),e.on("drain",a),e._isStdio||t&&!1===t.end||(r.on("end",s),r.on("close",u));var o=!1;function s(){o||(o=!0,e.end())}function u(){o||(o=!0,"function"==typeof e.destroy&&e.destroy())}function c(e){if(l(),0===i.listenerCount(this,"error"))throw e}function l(){r.removeListener("data",n),e.removeListener("drain",a),r.removeListener("end",s),r.removeListener("close",u),r.removeListener("error",c),e.removeListener("error",c),r.removeListener("end",l),r.removeListener("close",l),e.removeListener("close",l)}return r.on("error",c),e.on("error",c),r.on("end",l),r.on("close",l),e.on("close",l),e.emit("pipe",r),e}},8501:(e,t,r)=>{var i=r(11989),n=r(55676),a=r(47529),o=r(50584),s=r(8575),u=t;u.request=function(e,t){e="string"==typeof e?s.parse(e):a(e);var n=-1===r.g.location.protocol.search(/^https?:$/)?"http:":"",o=e.protocol||n,u=e.hostname||e.host,c=e.port,l=e.path||"/";u&&-1!==u.indexOf(":")&&(u="["+u+"]"),e.url=(u?o+"//"+u:"")+(c?":"+c:"")+l,e.method=(e.method||"GET").toUpperCase(),e.headers=e.headers||{};var h=new i(e);return t&&h.on("response",t),h},u.get=function(e,t){var r=u.request(e,t);return r.end(),r},u.ClientRequest=i,u.IncomingMessage=n.IncomingMessage,u.Agent=function(){},u.Agent.defaultMaxSockets=4,u.globalAgent=new u.Agent,u.STATUS_CODES=o,u.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]},8725:(e,t,r)=>{var i;function n(){if(void 0!==i)return i;if(r.g.XMLHttpRequest){i=new r.g.XMLHttpRequest;try{i.open("GET",r.g.XDomainRequest?"/":"https://example.com")}catch(e){i=null}}else i=null;return i}function a(e){var t=n();if(!t)return!1;try{return t.responseType=e,t.responseType===e}catch(e){}return!1}function o(e){return"function"==typeof e}t.fetch=o(r.g.fetch)&&o(r.g.ReadableStream),t.writableStream=o(r.g.WritableStream),t.abortController=o(r.g.AbortController),t.arraybuffer=t.fetch||a("arraybuffer"),t.msstream=!t.fetch&&a("ms-stream"),t.mozchunkedarraybuffer=!t.fetch&&a("moz-chunked-arraybuffer"),t.overrideMimeType=t.fetch||!!n()&&o(n().overrideMimeType),i=null},11989:(e,t,r)=>{var i=r(48764).Buffer,n=r(34155),a=r(8725),o=r(35717),s=r(55676),u=r(88473),c=s.IncomingMessage,l=s.readyStates,h=e.exports=function(e){var t,r=this;u.Writable.call(r),r._opts=e,r._body=[],r._headers={},e.auth&&r.setHeader("Authorization","Basic "+i.from(e.auth).toString("base64")),Object.keys(e.headers).forEach((function(t){r.setHeader(t,e.headers[t])}));var n=!0;if("disable-fetch"===e.mode||"requestTimeout"in e&&!a.abortController)n=!1,t=!0;else if("prefer-streaming"===e.mode)t=!1;else if("allow-wrong-content-type"===e.mode)t=!a.overrideMimeType;else{if(e.mode&&"default"!==e.mode&&"prefer-fast"!==e.mode)throw new Error("Invalid value for opts.mode");t=!0}r._mode=function(e,t){return a.fetch&&t?"fetch":a.mozchunkedarraybuffer?"moz-chunked-arraybuffer":a.msstream?"ms-stream":a.arraybuffer&&e?"arraybuffer":"text"}(t,n),r._fetchTimer=null,r._socketTimeout=null,r._socketTimer=null,r.on("finish",(function(){r._onFinish()}))};o(h,u.Writable),h.prototype.setHeader=function(e,t){var r=e.toLowerCase();-1===p.indexOf(r)&&(this._headers[r]={name:e,value:t})},h.prototype.getHeader=function(e){var t=this._headers[e.toLowerCase()];return t?t.value:null},h.prototype.removeHeader=function(e){delete this._headers[e.toLowerCase()]},h.prototype._onFinish=function(){var e=this;if(!e._destroyed){var t=e._opts;"timeout"in t&&0!==t.timeout&&e.setTimeout(t.timeout);var i=e._headers,o=null;"GET"!==t.method&&"HEAD"!==t.method&&(o=new Blob(e._body,{type:(i["content-type"]||{}).value||""}));var s=[];if(Object.keys(i).forEach((function(e){var t=i[e].name,r=i[e].value;Array.isArray(r)?r.forEach((function(e){s.push([t,e])})):s.push([t,r])})),"fetch"===e._mode){var u=null;if(a.abortController){var c=new AbortController;u=c.signal,e._fetchAbortController=c,"requestTimeout"in t&&0!==t.requestTimeout&&(e._fetchTimer=r.g.setTimeout((function(){e.emit("requestTimeout"),e._fetchAbortController&&e._fetchAbortController.abort()}),t.requestTimeout))}r.g.fetch(e._opts.url,{method:e._opts.method,headers:s,body:o||void 0,mode:"cors",credentials:t.withCredentials?"include":"same-origin",signal:u}).then((function(t){e._fetchResponse=t,e._resetTimers(!1),e._connect()}),(function(t){e._resetTimers(!0),e._destroyed||e.emit("error",t)}))}else{var h=e._xhr=new r.g.XMLHttpRequest;try{h.open(e._opts.method,e._opts.url,!0)}catch(t){return void n.nextTick((function(){e.emit("error",t)}))}"responseType"in h&&(h.responseType=e._mode),"withCredentials"in h&&(h.withCredentials=!!t.withCredentials),"text"===e._mode&&"overrideMimeType"in h&&h.overrideMimeType("text/plain; charset=x-user-defined"),"requestTimeout"in t&&(h.timeout=t.requestTimeout,h.ontimeout=function(){e.emit("requestTimeout")}),s.forEach((function(e){h.setRequestHeader(e[0],e[1])})),e._response=null,h.onreadystatechange=function(){switch(h.readyState){case l.LOADING:case l.DONE:e._onXHRProgress()}},"moz-chunked-arraybuffer"===e._mode&&(h.onprogress=function(){e._onXHRProgress()}),h.onerror=function(){e._destroyed||(e._resetTimers(!0),e.emit("error",new Error("XHR error")))};try{h.send(o)}catch(t){return void n.nextTick((function(){e.emit("error",t)}))}}}},h.prototype._onXHRProgress=function(){var e=this;e._resetTimers(!1),function(e){try{var t=e.status;return null!==t&&0!==t}catch(e){return!1}}(e._xhr)&&!e._destroyed&&(e._response||e._connect(),e._response._onXHRProgress(e._resetTimers.bind(e)))},h.prototype._connect=function(){var e=this;e._destroyed||(e._response=new c(e._xhr,e._fetchResponse,e._mode,e._resetTimers.bind(e)),e._response.on("error",(function(t){e.emit("error",t)})),e.emit("response",e._response))},h.prototype._write=function(e,t,r){this._body.push(e),r()},h.prototype._resetTimers=function(e){var t=this;r.g.clearTimeout(t._socketTimer),t._socketTimer=null,e?(r.g.clearTimeout(t._fetchTimer),t._fetchTimer=null):t._socketTimeout&&(t._socketTimer=r.g.setTimeout((function(){t.emit("timeout")}),t._socketTimeout))},h.prototype.abort=h.prototype.destroy=function(e){var t=this;t._destroyed=!0,t._resetTimers(!0),t._response&&(t._response._destroyed=!0),t._xhr?t._xhr.abort():t._fetchAbortController&&t._fetchAbortController.abort(),e&&t.emit("error",e)},h.prototype.end=function(e,t,r){"function"==typeof e&&(r=e,e=void 0),u.Writable.prototype.end.call(this,e,t,r)},h.prototype.setTimeout=function(e,t){var r=this;t&&r.once("timeout",t),r._socketTimeout=e,r._resetTimers(!1)},h.prototype.flushHeaders=function(){},h.prototype.setNoDelay=function(){},h.prototype.setSocketKeepAlive=function(){};var p=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"]},55676:(e,t,r)=>{var i=r(34155),n=r(48764).Buffer,a=r(8725),o=r(35717),s=r(88473),u=t.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},c=t.IncomingMessage=function(e,t,r,o){var u=this;if(s.Readable.call(u),u._mode=r,u.headers={},u.rawHeaders=[],u.trailers={},u.rawTrailers=[],u.on("end",(function(){i.nextTick((function(){u.emit("close")}))})),"fetch"===r){if(u._fetchResponse=t,u.url=t.url,u.statusCode=t.status,u.statusMessage=t.statusText,t.headers.forEach((function(e,t){u.headers[t.toLowerCase()]=e,u.rawHeaders.push(t,e)})),a.writableStream){var c=new WritableStream({write:function(e){return o(!1),new Promise((function(t,r){u._destroyed?r():u.push(n.from(e))?t():u._resumeFetch=t}))},close:function(){o(!0),u._destroyed||u.push(null)},abort:function(e){o(!0),u._destroyed||u.emit("error",e)}});try{return void t.body.pipeTo(c).catch((function(e){o(!0),u._destroyed||u.emit("error",e)}))}catch(e){}}var l=t.body.getReader();!function e(){l.read().then((function(t){u._destroyed||(o(t.done),t.done?u.push(null):(u.push(n.from(t.value)),e()))})).catch((function(e){o(!0),u._destroyed||u.emit("error",e)}))}()}else if(u._xhr=e,u._pos=0,u.url=e.responseURL,u.statusCode=e.status,u.statusMessage=e.statusText,e.getAllResponseHeaders().split(/\r?\n/).forEach((function(e){var t=e.match(/^([^:]+):\s*(.*)/);if(t){var r=t[1].toLowerCase();"set-cookie"===r?(void 0===u.headers[r]&&(u.headers[r]=[]),u.headers[r].push(t[2])):void 0!==u.headers[r]?u.headers[r]+=", "+t[2]:u.headers[r]=t[2],u.rawHeaders.push(t[1],t[2])}})),u._charset="x-user-defined",!a.overrideMimeType){var h=u.rawHeaders["mime-type"];if(h){var p=h.match(/;\s*charset=([^;])(;|$)/);p&&(u._charset=p[1].toLowerCase())}u._charset||(u._charset="utf-8")}};o(c,s.Readable),c.prototype._read=function(){var e=this._resumeFetch;e&&(this._resumeFetch=null,e())},c.prototype._onXHRProgress=function(e){var t=this,i=t._xhr,a=null;switch(t._mode){case"text":if((a=i.responseText).length>t._pos){var o=a.substr(t._pos);if("x-user-defined"===t._charset){for(var s=n.alloc(o.length),c=0;ct._pos&&(t.push(n.from(new Uint8Array(l.result.slice(t._pos)))),t._pos=l.result.byteLength)},l.onload=function(){e(!0),t.push(null)},l.readAsArrayBuffer(a)}t._xhr.readyState===u.DONE&&"ms-stream"!==t._mode&&(e(!0),t.push(null))}},32553:(e,t,r)=>{"use strict";var i=r(40396).Buffer,n=i.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function a(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(i.isEncoding===n||!n(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=u,this.end=c,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=l,this.end=h,t=3;break;default:return this.write=p,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=i.allocUnsafe(t)}function o(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function u(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function c(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function l(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function h(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function p(e){return e.toString(this.encoding)}function d(e){return e&&e.length?this.write(e):""}t.s=a,a.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(n>0&&(e.lastNeed=n-1),n):--i=0?(n>0&&(e.lastNeed=n-2),n):--i=0?(n>0&&(2===n?n=0:e.lastNeed=n-3),n):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var i=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,i),e.toString("utf8",t,i)},a.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},40396:(e,t,r)=>{var i=r(48764),n=i.Buffer;function a(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=i:(a(i,t),t.Buffer=o),o.prototype=Object.create(n.prototype),a(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i.SlowBuffer(e)}},18760:(e,t)=>{var r=Function.prototype.bind,i=Array.prototype.slice,n=Object.prototype.toString;function a(e){return e="[object "+e+"]",function(t){return n.call(t)===e}}t.bind=function(e,t){var n=i.call(arguments,2);return r?(n.unshift(t),r.apply(e,n)):function(){return e.apply(t,n.concat(i.call(arguments)))}},t.slice=function(e,t,r){return i.call(e,t,r)},t.toString=function(e){return n.call(e)},t.isNull=a("Null"),t.isDate=a("Date"),t.isMath=a("Math"),t.isJSON=a("JSON"),t.isError=a("Error"),t.isArray=Array.isArray||a("Array"),t.isObject=a("Object"),t.isRegExp=a("RegExp"),t.isNumber=a("Number"),t.isString=a("String"),t.isBoolean=a("Boolean"),t.isFunction=a("Function"),t.isArguments=a("Arguments"),t.isUndefined=a("Undefined"),t.isValid=function(e){return!t.isInvalid(e)},t.isInvalid=function(e){return t.isNull(e)||t.isUndefined(e)},t.isImmutable=function(e){return!t.isMutable(e)},t.isMutable=function(e){return e&&!t.isNumber(e)&&!t.isString(e)&&!t.isBoolean(e)},t.isEnumerable=function(e){return!!e&&(t.isNumber(e)?t.isInteger(e):t.isInteger(e.length)?e.length>=0:t.isEnumerableObject(e))},t.isEnumerableObject=function(e){for(var t in e)return!0;return!1},t.isEmpty=function(e){return t.isObject(e)?!t.isEnumerableObject(e):!t.isEnumerable(e)},t.isFiniteNumber=function(e){return t.isNumber(e)&&isFinite(e)},t.isInteger=function(e){return t.isFiniteNumber(e)&&Math.floor(e)===e},t.isVague=function(e){return e&&"object"==typeof e},t.isList=function(e){return t.isVague(e)&&t.isInteger(e.length)&&e.length>=0},t.isNaN=isNaN,t.nativeTypeOf=function(e){var t=e.toString(e);return t.substring(8,t.length-1)},t.typeOf=function(e){return t.isObject(e)?e.constructor.name||"Object":t.nativeTypeOf(e)},t.safeApply=function(e,r,i){return t.isFunction(e)?e.apply(i||this,r):void 0},t.enumerate=function(e,r,i,n){if(!e)return e;if(i=i||this,!n&&t.isFunction(e.forEach))return e.forEach(r,i);var a=0,o=e.length;if(t.isString(e))for(;at||t>=i}))):void 0}},47857:(e,t,r)=>{"use strict";var i,n=r(85456),a=r(8575).parse,o=r(89539),s=r(10752),u=r(82224).y,c=r(25761).m,l=r(88971).U,h=r(456);try{i=r(3689)}catch(e){console.warn("tough-cookie: can't load punycode; won't use punycode for domain normalization")}var p=/^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/,d=/[\x00-\x1F]/,f=["\n","\r","\0"],m=/[\x20-\x3A\x3C-\x7E]+/,g=/[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/,v={jan:0,feb:1,mar:2,apr:3,may:4,jun:5,jul:6,aug:7,sep:8,oct:9,nov:10,dec:11},y=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],_=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],b=2147483647e3;function w(e,t,r,i){for(var n=0;n=58)break;n++}return nr?null:i||n==e.length?parseInt(e.substr(0,n),10):null}function E(e){var t=e.split(":"),r=[0,0,0];if(3!==t.length)return null;for(var i=0;i<3;i++){var n=2==i,a=w(t[i],1,2,n);if(null===a)return null;r[i]=a}return r}function k(e){e=String(e).substr(0,3).toLowerCase();var t=v[e];return t>=0?t:null}function S(e){if(e){var t=e.split(g);if(t){for(var r=null,i=null,n=null,a=null,o=null,s=null,u=0;u=70&&s<=99?s+=1900:s>=0&&s<=69&&(s+=2e3)):o=c:a=c)}if(!(null===a||null===o||null===s||null===n||a<1||a>31||s<1601||r>23||i>59||n>59))return new Date(Date.UTC(s,o,a,r,i,n))}}}function x(e){var t=e.getUTCDate();t=t>=10?t:"0"+t;var r=e.getUTCHours();r=r>=10?r:"0"+r;var i=e.getUTCMinutes();i=i>=10?i:"0"+i;var n=e.getUTCSeconds();return n=n>=10?n:"0"+n,_[e.getUTCDay()]+", "+t+" "+y[e.getUTCMonth()]+" "+e.getUTCFullYear()+" "+r+":"+i+":"+n+" GMT"}function j(e){return null==e?null:(e=e.trim().replace(/^\./,""),i&&/[^\u0001-\u007f]/.test(e)&&(e=i.toASCII(e)),e.toLowerCase())}function N(e,t,r){if(null==e||null==t)return null;if(!1!==r&&(e=j(e),t=j(t)),e==t)return!0;if(n.isIP(e))return!1;var i=e.indexOf(t);return!(i<=0)&&e.length===t.length+i&&"."===e.substr(i-1,1)}function M(e){if(!e||"/"!==e.substr(0,1))return"/";if("/"===e)return e;var t=e.lastIndexOf("/");return 0===t?"/":e.slice(0,t)}function I(e,t){t&&"object"==typeof t||(t={});var r=(e=e.trim()).indexOf(";"),i=function(e,t){var r,i,n=(e=function(e){for(var t=0;t1;){var r=e.lastIndexOf("/");if(0===r)break;e=e.substr(0,r),t.push(e)}return t.push("/"),t},t.canonicalDomain=j},25761:(e,t,r)=>{"use strict";var i=r(82224).y,n=r(87324).permuteDomain,a=r(88971).U,o=r(89539);function s(){i.call(this),this.idx={}}o.inherits(s,i),t.m=s,s.prototype.idx=null,s.prototype.synchronous=!0,s.prototype.inspect=function(){return"{ idx: "+o.inspect(this.idx,!1,2)+" }"},o.inspect.custom&&(s.prototype[o.inspect.custom]=s.prototype.inspect),s.prototype.findCookie=function(e,t,r,i){return this.idx[e]&&this.idx[e][t]?i(null,this.idx[e][t][r]||null):i(null,void 0)},s.prototype.findCookies=function(e,t,r){var i,o=[];if(!e)return r(null,[]);i=t?function(e){Object.keys(e).forEach((function(r){if(a(t,r)){var i=e[r];for(var n in i)o.push(i[n])}}))}:function(e){for(var t in e){var r=e[t];for(var i in r)o.push(r[i])}};var s=n(e)||[e],u=this.idx;s.forEach((function(e){var t=u[e];t&&i(t)})),r(null,o)},s.prototype.putCookie=function(e,t){this.idx[e.domain]||(this.idx[e.domain]={}),this.idx[e.domain][e.path]||(this.idx[e.domain][e.path]={}),this.idx[e.domain][e.path][e.key]=e,t(null)},s.prototype.updateCookie=function(e,t,r){this.putCookie(t,r)},s.prototype.removeCookie=function(e,t,r,i){this.idx[e]&&this.idx[e][t]&&this.idx[e][t][r]&&delete this.idx[e][t][r],i(null)},s.prototype.removeCookies=function(e,t,r){return this.idx[e]&&(t?delete this.idx[e][t]:delete this.idx[e]),r(null)},s.prototype.removeAllCookies=function(e){return this.idx={},e(null)},s.prototype.getAllCookies=function(e){var t=[],r=this.idx;Object.keys(r).forEach((function(e){Object.keys(r[e]).forEach((function(i){Object.keys(r[e][i]).forEach((function(n){null!==n&&t.push(r[e][i][n])}))}))})),t.sort((function(e,t){return(e.creationIndex||0)-(t.creationIndex||0)})),e(null,t)}},88971:(e,t)=>{"use strict";t.U=function(e,t){if(t===e)return!0;if(0===e.indexOf(t)){if("/"===t.substr(-1))return!0;if("/"===e.substr(t.length,1))return!0}return!1}},87324:(e,t,r)=>{"use strict";var i=r(10752);t.permuteDomain=function(e){var t=i.getPublicSuffix(e);if(!t)return null;if(t==e)return[e];for(var r=e.slice(0,-(t.length+1)).split(".").reverse(),n=t,a=[n];r.length;)n=r.shift()+"."+n,a.push(n);return a}},10752:(e,t,r)=>{"use strict";var i=r(16244);t.getPublicSuffix=function(e){return i.get(e)}},82224:(e,t)=>{"use strict";function r(){}t.y=r,r.prototype.synchronous=!1,r.prototype.findCookie=function(e,t,r,i){throw new Error("findCookie is not implemented")},r.prototype.findCookies=function(e,t,r){throw new Error("findCookies is not implemented")},r.prototype.putCookie=function(e,t){throw new Error("putCookie is not implemented")},r.prototype.updateCookie=function(e,t,r){throw new Error("updateCookie is not implemented")},r.prototype.removeCookie=function(e,t,r,i){throw new Error("removeCookie is not implemented")},r.prototype.removeCookies=function(e,t,r){throw new Error("removeCookies is not implemented")},r.prototype.removeAllCookies=function(e){throw new Error("removeAllCookies is not implemented")},r.prototype.getAllCookies=function(e){throw new Error("getAllCookies is not implemented (therefore jar cannot be serialized)")}},456:e=>{e.exports="2.5.0"},37437:(e,t,r)=>{"use strict";var i,n=r(34155),a=(r(85456),r(18760)),o=r(8501),s=r(79267),u=r(17187),c=r(69282),l=r(89539),h=r(89509).Buffer;function p(e){var t=this;t.options=e||{},t.proxyOptions=t.options.proxy||{},t.maxSockets=t.options.maxSockets||o.Agent.defaultMaxSockets,t.requests=[],t.sockets=[],t.on("free",(function(e,r,i){for(var n=0,a=t.requests.length;n=this.maxSockets?r.requests.push({host:t.host,port:t.port,request:e}):r.createConnection({host:t.host,port:t.port,request:e})},p.prototype.createConnection=function(e){var t=this;t.createSocket(e,(function(r){function i(){t.emit("free",r,e.host,e.port)}function n(e){t.removeSocket(r),r.removeListener("free",i),r.removeListener("close",n),r.removeListener("agentRemove",n)}r.on("free",i),r.on("close",n),r.on("agentRemove",n),e.request.onSocket(r)}))},p.prototype.createSocket=function(e,t){var r=this,a={};r.sockets.push(a);var o=f({},r.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1});o.proxyAuth&&(o.headers=o.headers||{},o.headers["Proxy-Authorization"]="Basic "+h.from(o.proxyAuth).toString("base64")),i("making CONNECT request");var s=r.request(o);function u(n,o,u){if(s.removeAllListeners(),o.removeAllListeners(),200===n.statusCode)c.equal(u.length,0),i("tunneling connection has established"),r.sockets[r.sockets.indexOf(a)]=o,t(o);else{i("tunneling socket could not be established, statusCode=%d",n.statusCode);var l=new Error("tunneling socket could not be established, statusCode="+n.statusCode);l.code="ECONNRESET",e.request.emit("error",l),r.removeSocket(a)}}s.useChunkedEncodingByDefault=!1,s.once("response",(function(e){e.upgrade=!0})),s.once("upgrade",(function(e,t,r){n.nextTick((function(){u(e,t,r)}))})),s.once("connect",u),s.once("error",(function(t){s.removeAllListeners(),i("tunneling socket could not be established, cause=%s\n",t.message,t.stack);var n=new Error("tunneling socket could not be established, cause="+t.message);n.code="ECONNRESET",e.request.emit("error",n),r.removeSocket(a)})),s.end()},p.prototype.removeSocket=function(e){var t=this.sockets.indexOf(e);if(-1!==t){this.sockets.splice(t,1);var r=this.requests.shift();r&&this.createConnection(r)}},i=n.env.NODE_DEBUG&&/\btunnel\b/.test(n.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments);"string"==typeof e[0]?e[0]="TUNNEL: "+e[0]:e.unshift("TUNNEL:"),console.error.apply(console,e)}:function(){},t.debug=i},50780:(e,t,r)=>{!function(e){"use strict";var t=function(e){var t,r=new Float64Array(16);if(e)for(t=0;t>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r,e[t+4]=i>>24&255,e[t+5]=i>>16&255,e[t+6]=i>>8&255,e[t+7]=255&i}function m(e,t,r,i,n){var a,o=0;for(a=0;a>>8)-1}function g(e,t,r,i){return m(e,t,r,i,16)}function v(e,t,r,i){return m(e,t,r,i,32)}function y(e,t,r,i){!function(e,t,r,i){for(var n,a=255&i[0]|(255&i[1])<<8|(255&i[2])<<16|(255&i[3])<<24,o=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,c=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&i[4]|(255&i[5])<<8|(255&i[6])<<16|(255&i[7])<<24,h=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,p=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,f=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,m=255&i[8]|(255&i[9])<<8|(255&i[10])<<16|(255&i[11])<<24,g=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,v=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,y=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,_=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,b=255&i[12]|(255&i[13])<<8|(255&i[14])<<16|(255&i[15])<<24,w=a,E=o,k=s,S=u,x=c,j=l,N=h,M=p,I=d,A=f,T=m,R=g,P=v,O=y,B=_,C=b,z=0;z<20;z+=2)w^=(n=(P^=(n=(I^=(n=(x^=(n=w+P|0)<<7|n>>>25)+w|0)<<9|n>>>23)+x|0)<<13|n>>>19)+I|0)<<18|n>>>14,j^=(n=(E^=(n=(O^=(n=(A^=(n=j+E|0)<<7|n>>>25)+j|0)<<9|n>>>23)+A|0)<<13|n>>>19)+O|0)<<18|n>>>14,T^=(n=(N^=(n=(k^=(n=(B^=(n=T+N|0)<<7|n>>>25)+T|0)<<9|n>>>23)+B|0)<<13|n>>>19)+k|0)<<18|n>>>14,C^=(n=(R^=(n=(M^=(n=(S^=(n=C+R|0)<<7|n>>>25)+C|0)<<9|n>>>23)+S|0)<<13|n>>>19)+M|0)<<18|n>>>14,w^=(n=(S^=(n=(k^=(n=(E^=(n=w+S|0)<<7|n>>>25)+w|0)<<9|n>>>23)+E|0)<<13|n>>>19)+k|0)<<18|n>>>14,j^=(n=(x^=(n=(M^=(n=(N^=(n=j+x|0)<<7|n>>>25)+j|0)<<9|n>>>23)+N|0)<<13|n>>>19)+M|0)<<18|n>>>14,T^=(n=(A^=(n=(I^=(n=(R^=(n=T+A|0)<<7|n>>>25)+T|0)<<9|n>>>23)+R|0)<<13|n>>>19)+I|0)<<18|n>>>14,C^=(n=(B^=(n=(O^=(n=(P^=(n=C+B|0)<<7|n>>>25)+C|0)<<9|n>>>23)+P|0)<<13|n>>>19)+O|0)<<18|n>>>14;w=w+a|0,E=E+o|0,k=k+s|0,S=S+u|0,x=x+c|0,j=j+l|0,N=N+h|0,M=M+p|0,I=I+d|0,A=A+f|0,T=T+m|0,R=R+g|0,P=P+v|0,O=O+y|0,B=B+_|0,C=C+b|0,e[0]=w>>>0&255,e[1]=w>>>8&255,e[2]=w>>>16&255,e[3]=w>>>24&255,e[4]=E>>>0&255,e[5]=E>>>8&255,e[6]=E>>>16&255,e[7]=E>>>24&255,e[8]=k>>>0&255,e[9]=k>>>8&255,e[10]=k>>>16&255,e[11]=k>>>24&255,e[12]=S>>>0&255,e[13]=S>>>8&255,e[14]=S>>>16&255,e[15]=S>>>24&255,e[16]=x>>>0&255,e[17]=x>>>8&255,e[18]=x>>>16&255,e[19]=x>>>24&255,e[20]=j>>>0&255,e[21]=j>>>8&255,e[22]=j>>>16&255,e[23]=j>>>24&255,e[24]=N>>>0&255,e[25]=N>>>8&255,e[26]=N>>>16&255,e[27]=N>>>24&255,e[28]=M>>>0&255,e[29]=M>>>8&255,e[30]=M>>>16&255,e[31]=M>>>24&255,e[32]=I>>>0&255,e[33]=I>>>8&255,e[34]=I>>>16&255,e[35]=I>>>24&255,e[36]=A>>>0&255,e[37]=A>>>8&255,e[38]=A>>>16&255,e[39]=A>>>24&255,e[40]=T>>>0&255,e[41]=T>>>8&255,e[42]=T>>>16&255,e[43]=T>>>24&255,e[44]=R>>>0&255,e[45]=R>>>8&255,e[46]=R>>>16&255,e[47]=R>>>24&255,e[48]=P>>>0&255,e[49]=P>>>8&255,e[50]=P>>>16&255,e[51]=P>>>24&255,e[52]=O>>>0&255,e[53]=O>>>8&255,e[54]=O>>>16&255,e[55]=O>>>24&255,e[56]=B>>>0&255,e[57]=B>>>8&255,e[58]=B>>>16&255,e[59]=B>>>24&255,e[60]=C>>>0&255,e[61]=C>>>8&255,e[62]=C>>>16&255,e[63]=C>>>24&255}(e,t,r,i)}function _(e,t,r,i){!function(e,t,r,i){for(var n,a=255&i[0]|(255&i[1])<<8|(255&i[2])<<16|(255&i[3])<<24,o=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,c=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&i[4]|(255&i[5])<<8|(255&i[6])<<16|(255&i[7])<<24,h=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,p=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,f=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,m=255&i[8]|(255&i[9])<<8|(255&i[10])<<16|(255&i[11])<<24,g=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,v=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,y=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,_=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,b=255&i[12]|(255&i[13])<<8|(255&i[14])<<16|(255&i[15])<<24,w=0;w<20;w+=2)a^=(n=(v^=(n=(d^=(n=(c^=(n=a+v|0)<<7|n>>>25)+a|0)<<9|n>>>23)+c|0)<<13|n>>>19)+d|0)<<18|n>>>14,l^=(n=(o^=(n=(y^=(n=(f^=(n=l+o|0)<<7|n>>>25)+l|0)<<9|n>>>23)+f|0)<<13|n>>>19)+y|0)<<18|n>>>14,m^=(n=(h^=(n=(s^=(n=(_^=(n=m+h|0)<<7|n>>>25)+m|0)<<9|n>>>23)+_|0)<<13|n>>>19)+s|0)<<18|n>>>14,b^=(n=(g^=(n=(p^=(n=(u^=(n=b+g|0)<<7|n>>>25)+b|0)<<9|n>>>23)+u|0)<<13|n>>>19)+p|0)<<18|n>>>14,a^=(n=(u^=(n=(s^=(n=(o^=(n=a+u|0)<<7|n>>>25)+a|0)<<9|n>>>23)+o|0)<<13|n>>>19)+s|0)<<18|n>>>14,l^=(n=(c^=(n=(p^=(n=(h^=(n=l+c|0)<<7|n>>>25)+l|0)<<9|n>>>23)+h|0)<<13|n>>>19)+p|0)<<18|n>>>14,m^=(n=(f^=(n=(d^=(n=(g^=(n=m+f|0)<<7|n>>>25)+m|0)<<9|n>>>23)+g|0)<<13|n>>>19)+d|0)<<18|n>>>14,b^=(n=(_^=(n=(y^=(n=(v^=(n=b+_|0)<<7|n>>>25)+b|0)<<9|n>>>23)+v|0)<<13|n>>>19)+y|0)<<18|n>>>14;e[0]=a>>>0&255,e[1]=a>>>8&255,e[2]=a>>>16&255,e[3]=a>>>24&255,e[4]=l>>>0&255,e[5]=l>>>8&255,e[6]=l>>>16&255,e[7]=l>>>24&255,e[8]=m>>>0&255,e[9]=m>>>8&255,e[10]=m>>>16&255,e[11]=m>>>24&255,e[12]=b>>>0&255,e[13]=b>>>8&255,e[14]=b>>>16&255,e[15]=b>>>24&255,e[16]=h>>>0&255,e[17]=h>>>8&255,e[18]=h>>>16&255,e[19]=h>>>24&255,e[20]=p>>>0&255,e[21]=p>>>8&255,e[22]=p>>>16&255,e[23]=p>>>24&255,e[24]=d>>>0&255,e[25]=d>>>8&255,e[26]=d>>>16&255,e[27]=d>>>24&255,e[28]=f>>>0&255,e[29]=f>>>8&255,e[30]=f>>>16&255,e[31]=f>>>24&255}(e,t,r,i)}var b=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function w(e,t,r,i,n,a,o){var s,u,c=new Uint8Array(16),l=new Uint8Array(64);for(u=0;u<16;u++)c[u]=0;for(u=0;u<8;u++)c[u]=a[u];for(;n>=64;){for(y(l,c,o,b),u=0;u<64;u++)e[t+u]=r[i+u]^l[u];for(s=1,u=8;u<16;u++)s=s+(255&c[u])|0,c[u]=255&s,s>>>=8;n-=64,t+=64,i+=64}if(n>0)for(y(l,c,o,b),u=0;u=64;){for(y(u,s,n,b),o=0;o<64;o++)e[t+o]=u[o];for(a=1,o=8;o<16;o++)a=a+(255&s[o])|0,s[o]=255&a,a>>>=8;r-=64,t+=64}if(r>0)for(y(u,s,n,b),o=0;o>>13|r<<3),i=255&e[4]|(255&e[5])<<8,this.r[2]=7939&(r>>>10|i<<6),n=255&e[6]|(255&e[7])<<8,this.r[3]=8191&(i>>>7|n<<9),a=255&e[8]|(255&e[9])<<8,this.r[4]=255&(n>>>4|a<<12),this.r[5]=a>>>1&8190,o=255&e[10]|(255&e[11])<<8,this.r[6]=8191&(a>>>14|o<<2),s=255&e[12]|(255&e[13])<<8,this.r[7]=8065&(o>>>11|s<<5),u=255&e[14]|(255&e[15])<<8,this.r[8]=8191&(s>>>8|u<<8),this.r[9]=u>>>5&127,this.pad[0]=255&e[16]|(255&e[17])<<8,this.pad[1]=255&e[18]|(255&e[19])<<8,this.pad[2]=255&e[20]|(255&e[21])<<8,this.pad[3]=255&e[22]|(255&e[23])<<8,this.pad[4]=255&e[24]|(255&e[25])<<8,this.pad[5]=255&e[26]|(255&e[27])<<8,this.pad[6]=255&e[28]|(255&e[29])<<8,this.pad[7]=255&e[30]|(255&e[31])<<8};function j(e,t,r,i,n,a){var o=new x(a);return o.update(r,i,n),o.finish(e,t),0}function N(e,t,r,i,n,a){var o=new Uint8Array(16);return j(o,0,r,i,n,a),g(e,t,o,0)}function M(e,t,r,i,n){var a;if(r<32)return-1;for(S(e,0,t,0,r,i,n),j(e,16,e,32,r-32,e),a=0;a<16;a++)e[a]=0;return 0}function I(e,t,r,i,n){var a,o=new Uint8Array(32);if(r<32)return-1;if(k(o,0,32,i,n),0!==N(t,16,t,32,r-32,o))return-1;for(S(e,0,t,0,r,i,n),a=0;a<32;a++)e[a]=0;return 0}function A(e,t){var r;for(r=0;r<16;r++)e[r]=0|t[r]}function T(e){var t,r,i=1;for(t=0;t<16;t++)r=e[t]+i+65535,i=Math.floor(r/65536),e[t]=r-65536*i;e[0]+=i-1+37*(i-1)}function R(e,t,r){for(var i,n=~(r-1),a=0;a<16;a++)i=n&(e[a]^t[a]),e[a]^=i,t[a]^=i}function P(e,r){var i,n,a,o=t(),s=t();for(i=0;i<16;i++)s[i]=r[i];for(T(s),T(s),T(s),n=0;n<2;n++){for(o[0]=s[0]-65517,i=1;i<15;i++)o[i]=s[i]-65535-(o[i-1]>>16&1),o[i-1]&=65535;o[15]=s[15]-32767-(o[14]>>16&1),a=o[15]>>16&1,o[14]&=65535,R(s,o,1-a)}for(i=0;i<16;i++)e[2*i]=255&s[i],e[2*i+1]=s[i]>>8}function O(e,t){var r=new Uint8Array(32),i=new Uint8Array(32);return P(r,e),P(i,t),v(r,0,i,0)}function B(e){var t=new Uint8Array(32);return P(t,e),1&t[0]}function C(e,t){var r;for(r=0;r<16;r++)e[r]=t[2*r]+(t[2*r+1]<<8);e[15]&=32767}function z(e,t,r){for(var i=0;i<16;i++)e[i]=t[i]+r[i]}function F(e,t,r){for(var i=0;i<16;i++)e[i]=t[i]-r[i]}function D(e,t,r){var i,n,a=0,o=0,s=0,u=0,c=0,l=0,h=0,p=0,d=0,f=0,m=0,g=0,v=0,y=0,_=0,b=0,w=0,E=0,k=0,S=0,x=0,j=0,N=0,M=0,I=0,A=0,T=0,R=0,P=0,O=0,B=0,C=r[0],z=r[1],F=r[2],D=r[3],q=r[4],L=r[5],U=r[6],H=r[7],K=r[8],W=r[9],Z=r[10],J=r[11],V=r[12],$=r[13],G=r[14],Q=r[15];a+=(i=t[0])*C,o+=i*z,s+=i*F,u+=i*D,c+=i*q,l+=i*L,h+=i*U,p+=i*H,d+=i*K,f+=i*W,m+=i*Z,g+=i*J,v+=i*V,y+=i*$,_+=i*G,b+=i*Q,o+=(i=t[1])*C,s+=i*z,u+=i*F,c+=i*D,l+=i*q,h+=i*L,p+=i*U,d+=i*H,f+=i*K,m+=i*W,g+=i*Z,v+=i*J,y+=i*V,_+=i*$,b+=i*G,w+=i*Q,s+=(i=t[2])*C,u+=i*z,c+=i*F,l+=i*D,h+=i*q,p+=i*L,d+=i*U,f+=i*H,m+=i*K,g+=i*W,v+=i*Z,y+=i*J,_+=i*V,b+=i*$,w+=i*G,E+=i*Q,u+=(i=t[3])*C,c+=i*z,l+=i*F,h+=i*D,p+=i*q,d+=i*L,f+=i*U,m+=i*H,g+=i*K,v+=i*W,y+=i*Z,_+=i*J,b+=i*V,w+=i*$,E+=i*G,k+=i*Q,c+=(i=t[4])*C,l+=i*z,h+=i*F,p+=i*D,d+=i*q,f+=i*L,m+=i*U,g+=i*H,v+=i*K,y+=i*W,_+=i*Z,b+=i*J,w+=i*V,E+=i*$,k+=i*G,S+=i*Q,l+=(i=t[5])*C,h+=i*z,p+=i*F,d+=i*D,f+=i*q,m+=i*L,g+=i*U,v+=i*H,y+=i*K,_+=i*W,b+=i*Z,w+=i*J,E+=i*V,k+=i*$,S+=i*G,x+=i*Q,h+=(i=t[6])*C,p+=i*z,d+=i*F,f+=i*D,m+=i*q,g+=i*L,v+=i*U,y+=i*H,_+=i*K,b+=i*W,w+=i*Z,E+=i*J,k+=i*V,S+=i*$,x+=i*G,j+=i*Q,p+=(i=t[7])*C,d+=i*z,f+=i*F,m+=i*D,g+=i*q,v+=i*L,y+=i*U,_+=i*H,b+=i*K,w+=i*W,E+=i*Z,k+=i*J,S+=i*V,x+=i*$,j+=i*G,N+=i*Q,d+=(i=t[8])*C,f+=i*z,m+=i*F,g+=i*D,v+=i*q,y+=i*L,_+=i*U,b+=i*H,w+=i*K,E+=i*W,k+=i*Z,S+=i*J,x+=i*V,j+=i*$,N+=i*G,M+=i*Q,f+=(i=t[9])*C,m+=i*z,g+=i*F,v+=i*D,y+=i*q,_+=i*L,b+=i*U,w+=i*H,E+=i*K,k+=i*W,S+=i*Z,x+=i*J,j+=i*V,N+=i*$,M+=i*G,I+=i*Q,m+=(i=t[10])*C,g+=i*z,v+=i*F,y+=i*D,_+=i*q,b+=i*L,w+=i*U,E+=i*H,k+=i*K,S+=i*W,x+=i*Z,j+=i*J,N+=i*V,M+=i*$,I+=i*G,A+=i*Q,g+=(i=t[11])*C,v+=i*z,y+=i*F,_+=i*D,b+=i*q,w+=i*L,E+=i*U,k+=i*H,S+=i*K,x+=i*W,j+=i*Z,N+=i*J,M+=i*V,I+=i*$,A+=i*G,T+=i*Q,v+=(i=t[12])*C,y+=i*z,_+=i*F,b+=i*D,w+=i*q,E+=i*L,k+=i*U,S+=i*H,x+=i*K,j+=i*W,N+=i*Z,M+=i*J,I+=i*V,A+=i*$,T+=i*G,R+=i*Q,y+=(i=t[13])*C,_+=i*z,b+=i*F,w+=i*D,E+=i*q,k+=i*L,S+=i*U,x+=i*H,j+=i*K,N+=i*W,M+=i*Z,I+=i*J,A+=i*V,T+=i*$,R+=i*G,P+=i*Q,_+=(i=t[14])*C,b+=i*z,w+=i*F,E+=i*D,k+=i*q,S+=i*L,x+=i*U,j+=i*H,N+=i*K,M+=i*W,I+=i*Z,A+=i*J,T+=i*V,R+=i*$,P+=i*G,O+=i*Q,b+=(i=t[15])*C,o+=38*(E+=i*F),s+=38*(k+=i*D),u+=38*(S+=i*q),c+=38*(x+=i*L),l+=38*(j+=i*U),h+=38*(N+=i*H),p+=38*(M+=i*K),d+=38*(I+=i*W),f+=38*(A+=i*Z),m+=38*(T+=i*J),g+=38*(R+=i*V),v+=38*(P+=i*$),y+=38*(O+=i*G),_+=38*(B+=i*Q),a=(i=(a+=38*(w+=i*z))+(n=1)+65535)-65536*(n=Math.floor(i/65536)),o=(i=o+n+65535)-65536*(n=Math.floor(i/65536)),s=(i=s+n+65535)-65536*(n=Math.floor(i/65536)),u=(i=u+n+65535)-65536*(n=Math.floor(i/65536)),c=(i=c+n+65535)-65536*(n=Math.floor(i/65536)),l=(i=l+n+65535)-65536*(n=Math.floor(i/65536)),h=(i=h+n+65535)-65536*(n=Math.floor(i/65536)),p=(i=p+n+65535)-65536*(n=Math.floor(i/65536)),d=(i=d+n+65535)-65536*(n=Math.floor(i/65536)),f=(i=f+n+65535)-65536*(n=Math.floor(i/65536)),m=(i=m+n+65535)-65536*(n=Math.floor(i/65536)),g=(i=g+n+65535)-65536*(n=Math.floor(i/65536)),v=(i=v+n+65535)-65536*(n=Math.floor(i/65536)),y=(i=y+n+65535)-65536*(n=Math.floor(i/65536)),_=(i=_+n+65535)-65536*(n=Math.floor(i/65536)),b=(i=b+n+65535)-65536*(n=Math.floor(i/65536)),a=(i=(a+=n-1+37*(n-1))+(n=1)+65535)-65536*(n=Math.floor(i/65536)),o=(i=o+n+65535)-65536*(n=Math.floor(i/65536)),s=(i=s+n+65535)-65536*(n=Math.floor(i/65536)),u=(i=u+n+65535)-65536*(n=Math.floor(i/65536)),c=(i=c+n+65535)-65536*(n=Math.floor(i/65536)),l=(i=l+n+65535)-65536*(n=Math.floor(i/65536)),h=(i=h+n+65535)-65536*(n=Math.floor(i/65536)),p=(i=p+n+65535)-65536*(n=Math.floor(i/65536)),d=(i=d+n+65535)-65536*(n=Math.floor(i/65536)),f=(i=f+n+65535)-65536*(n=Math.floor(i/65536)),m=(i=m+n+65535)-65536*(n=Math.floor(i/65536)),g=(i=g+n+65535)-65536*(n=Math.floor(i/65536)),v=(i=v+n+65535)-65536*(n=Math.floor(i/65536)),y=(i=y+n+65535)-65536*(n=Math.floor(i/65536)),_=(i=_+n+65535)-65536*(n=Math.floor(i/65536)),b=(i=b+n+65535)-65536*(n=Math.floor(i/65536)),a+=n-1+37*(n-1),e[0]=a,e[1]=o,e[2]=s,e[3]=u,e[4]=c,e[5]=l,e[6]=h,e[7]=p,e[8]=d,e[9]=f,e[10]=m,e[11]=g,e[12]=v,e[13]=y,e[14]=_,e[15]=b}function q(e,t){D(e,t,t)}function L(e,r){var i,n=t();for(i=0;i<16;i++)n[i]=r[i];for(i=253;i>=0;i--)q(n,n),2!==i&&4!==i&&D(n,n,r);for(i=0;i<16;i++)e[i]=n[i]}function U(e,r,i){var n,a,o=new Uint8Array(32),s=new Float64Array(80),c=t(),l=t(),h=t(),p=t(),d=t(),f=t();for(a=0;a<31;a++)o[a]=r[a];for(o[31]=127&r[31]|64,o[0]&=248,C(s,i),a=0;a<16;a++)l[a]=s[a],p[a]=c[a]=h[a]=0;for(c[0]=p[0]=1,a=254;a>=0;--a)R(c,l,n=o[a>>>3]>>>(7&a)&1),R(h,p,n),z(d,c,h),F(c,c,h),z(h,l,p),F(l,l,p),q(p,d),q(f,c),D(c,h,c),D(h,l,d),z(d,c,h),F(c,c,h),q(l,c),F(h,p,f),D(c,h,u),z(c,c,p),D(h,h,c),D(c,p,f),D(p,l,s),q(l,d),R(c,l,n),R(h,p,n);for(a=0;a<16;a++)s[a+16]=c[a],s[a+32]=h[a],s[a+48]=l[a],s[a+64]=p[a];var m=s.subarray(32),g=s.subarray(16);return L(m,m),D(g,g,m),P(e,g),0}function H(e,t){return U(e,t,a)}function K(e,t){return i(t,32),H(e,t)}function W(e,t,r){var i=new Uint8Array(32);return U(i,r,t),_(e,n,i,b)}x.prototype.blocks=function(e,t,r){for(var i,n,a,o,s,u,c,l,h,p,d,f,m,g,v,y,_,b,w,E=this.fin?0:2048,k=this.h[0],S=this.h[1],x=this.h[2],j=this.h[3],N=this.h[4],M=this.h[5],I=this.h[6],A=this.h[7],T=this.h[8],R=this.h[9],P=this.r[0],O=this.r[1],B=this.r[2],C=this.r[3],z=this.r[4],F=this.r[5],D=this.r[6],q=this.r[7],L=this.r[8],U=this.r[9];r>=16;)p=h=0,p+=(k+=8191&(i=255&e[t+0]|(255&e[t+1])<<8))*P,p+=(S+=8191&(i>>>13|(n=255&e[t+2]|(255&e[t+3])<<8)<<3))*(5*U),p+=(x+=8191&(n>>>10|(a=255&e[t+4]|(255&e[t+5])<<8)<<6))*(5*L),p+=(j+=8191&(a>>>7|(o=255&e[t+6]|(255&e[t+7])<<8)<<9))*(5*q),h=(p+=(N+=8191&(o>>>4|(s=255&e[t+8]|(255&e[t+9])<<8)<<12))*(5*D))>>>13,p&=8191,p+=(M+=s>>>1&8191)*(5*F),p+=(I+=8191&(s>>>14|(u=255&e[t+10]|(255&e[t+11])<<8)<<2))*(5*z),p+=(A+=8191&(u>>>11|(c=255&e[t+12]|(255&e[t+13])<<8)<<5))*(5*C),p+=(T+=8191&(c>>>8|(l=255&e[t+14]|(255&e[t+15])<<8)<<8))*(5*B),d=h+=(p+=(R+=l>>>5|E)*(5*O))>>>13,d+=k*O,d+=S*P,d+=x*(5*U),d+=j*(5*L),h=(d+=N*(5*q))>>>13,d&=8191,d+=M*(5*D),d+=I*(5*F),d+=A*(5*z),d+=T*(5*C),h+=(d+=R*(5*B))>>>13,d&=8191,f=h,f+=k*B,f+=S*O,f+=x*P,f+=j*(5*U),h=(f+=N*(5*L))>>>13,f&=8191,f+=M*(5*q),f+=I*(5*D),f+=A*(5*F),f+=T*(5*z),m=h+=(f+=R*(5*C))>>>13,m+=k*C,m+=S*B,m+=x*O,m+=j*P,h=(m+=N*(5*U))>>>13,m&=8191,m+=M*(5*L),m+=I*(5*q),m+=A*(5*D),m+=T*(5*F),g=h+=(m+=R*(5*z))>>>13,g+=k*z,g+=S*C,g+=x*B,g+=j*O,h=(g+=N*P)>>>13,g&=8191,g+=M*(5*U),g+=I*(5*L),g+=A*(5*q),g+=T*(5*D),v=h+=(g+=R*(5*F))>>>13,v+=k*F,v+=S*z,v+=x*C,v+=j*B,h=(v+=N*O)>>>13,v&=8191,v+=M*P,v+=I*(5*U),v+=A*(5*L),v+=T*(5*q),y=h+=(v+=R*(5*D))>>>13,y+=k*D,y+=S*F,y+=x*z,y+=j*C,h=(y+=N*B)>>>13,y&=8191,y+=M*O,y+=I*P,y+=A*(5*U),y+=T*(5*L),_=h+=(y+=R*(5*q))>>>13,_+=k*q,_+=S*D,_+=x*F,_+=j*z,h=(_+=N*C)>>>13,_&=8191,_+=M*B,_+=I*O,_+=A*P,_+=T*(5*U),b=h+=(_+=R*(5*L))>>>13,b+=k*L,b+=S*q,b+=x*D,b+=j*F,h=(b+=N*z)>>>13,b&=8191,b+=M*C,b+=I*B,b+=A*O,b+=T*P,w=h+=(b+=R*(5*U))>>>13,w+=k*U,w+=S*L,w+=x*q,w+=j*D,h=(w+=N*F)>>>13,w&=8191,w+=M*z,w+=I*C,w+=A*B,w+=T*O,k=p=8191&(h=(h=((h+=(w+=R*P)>>>13)<<2)+h|0)+(p&=8191)|0),S=d+=h>>>=13,x=f&=8191,j=m&=8191,N=g&=8191,M=v&=8191,I=y&=8191,A=_&=8191,T=b&=8191,R=w&=8191,t+=16,r-=16;this.h[0]=k,this.h[1]=S,this.h[2]=x,this.h[3]=j,this.h[4]=N,this.h[5]=M,this.h[6]=I,this.h[7]=A,this.h[8]=T,this.h[9]=R},x.prototype.finish=function(e,t){var r,i,n,a,o=new Uint16Array(10);if(this.leftover){for(a=this.leftover,this.buffer[a++]=1;a<16;a++)this.buffer[a]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(r=this.h[1]>>>13,this.h[1]&=8191,a=2;a<10;a++)this.h[a]+=r,r=this.h[a]>>>13,this.h[a]&=8191;for(this.h[0]+=5*r,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,o[0]=this.h[0]+5,r=o[0]>>>13,o[0]&=8191,a=1;a<10;a++)o[a]=this.h[a]+r,r=o[a]>>>13,o[a]&=8191;for(o[9]-=8192,i=(1^r)-1,a=0;a<10;a++)o[a]&=i;for(i=~i,a=0;a<10;a++)this.h[a]=this.h[a]&i|o[a];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),n=this.h[0]+this.pad[0],this.h[0]=65535&n,a=1;a<8;a++)n=(this.h[a]+this.pad[a]|0)+(n>>>16)|0,this.h[a]=65535&n;e[t+0]=this.h[0]>>>0&255,e[t+1]=this.h[0]>>>8&255,e[t+2]=this.h[1]>>>0&255,e[t+3]=this.h[1]>>>8&255,e[t+4]=this.h[2]>>>0&255,e[t+5]=this.h[2]>>>8&255,e[t+6]=this.h[3]>>>0&255,e[t+7]=this.h[3]>>>8&255,e[t+8]=this.h[4]>>>0&255,e[t+9]=this.h[4]>>>8&255,e[t+10]=this.h[5]>>>0&255,e[t+11]=this.h[5]>>>8&255,e[t+12]=this.h[6]>>>0&255,e[t+13]=this.h[6]>>>8&255,e[t+14]=this.h[7]>>>0&255,e[t+15]=this.h[7]>>>8&255},x.prototype.update=function(e,t,r){var i,n;if(this.leftover){for((n=16-this.leftover)>r&&(n=r),i=0;i=16&&(n=r-r%16,this.blocks(e,t,n),t+=n,r-=n),r){for(i=0;i=128;){for(E=0;E<16;E++)k=8*E+$,A[E]=r[k+0]<<24|r[k+1]<<16|r[k+2]<<8|r[k+3],T[E]=r[k+4]<<24|r[k+5]<<16|r[k+6]<<8|r[k+7];for(E=0;E<80;E++)if(n=R,a=P,o=O,s=B,u=C,c=z,l=F,p=q,d=L,f=U,m=H,g=K,v=W,y=Z,j=65535&(x=J),N=x>>>16,M=65535&(S=D),I=S>>>16,j+=65535&(x=(K>>>14|C<<18)^(K>>>18|C<<14)^(C>>>9|K<<23)),N+=x>>>16,M+=65535&(S=(C>>>14|K<<18)^(C>>>18|K<<14)^(K>>>9|C<<23)),I+=S>>>16,j+=65535&(x=K&W^~K&Z),N+=x>>>16,M+=65535&(S=C&z^~C&F),I+=S>>>16,j+=65535&(x=V[2*E+1]),N+=x>>>16,M+=65535&(S=V[2*E]),I+=S>>>16,S=A[E%16],N+=(x=T[E%16])>>>16,M+=65535&S,I+=S>>>16,M+=(N+=(j+=65535&x)>>>16)>>>16,j=65535&(x=w=65535&j|N<<16),N=x>>>16,M=65535&(S=b=65535&M|(I+=M>>>16)<<16),I=S>>>16,j+=65535&(x=(q>>>28|R<<4)^(R>>>2|q<<30)^(R>>>7|q<<25)),N+=x>>>16,M+=65535&(S=(R>>>28|q<<4)^(q>>>2|R<<30)^(q>>>7|R<<25)),I+=S>>>16,N+=(x=q&L^q&U^L&U)>>>16,M+=65535&(S=R&P^R&O^P&O),I+=S>>>16,h=65535&(M+=(N+=(j+=65535&x)>>>16)>>>16)|(I+=M>>>16)<<16,_=65535&j|N<<16,j=65535&(x=m),N=x>>>16,M=65535&(S=s),I=S>>>16,N+=(x=w)>>>16,M+=65535&(S=b),I+=S>>>16,P=n,O=a,B=o,C=s=65535&(M+=(N+=(j+=65535&x)>>>16)>>>16)|(I+=M>>>16)<<16,z=u,F=c,D=l,R=h,L=p,U=d,H=f,K=m=65535&j|N<<16,W=g,Z=v,J=y,q=_,E%16==15)for(k=0;k<16;k++)S=A[k],j=65535&(x=T[k]),N=x>>>16,M=65535&S,I=S>>>16,S=A[(k+9)%16],j+=65535&(x=T[(k+9)%16]),N+=x>>>16,M+=65535&S,I+=S>>>16,b=A[(k+1)%16],j+=65535&(x=((w=T[(k+1)%16])>>>1|b<<31)^(w>>>8|b<<24)^(w>>>7|b<<25)),N+=x>>>16,M+=65535&(S=(b>>>1|w<<31)^(b>>>8|w<<24)^b>>>7),I+=S>>>16,b=A[(k+14)%16],N+=(x=((w=T[(k+14)%16])>>>19|b<<13)^(b>>>29|w<<3)^(w>>>6|b<<26))>>>16,M+=65535&(S=(b>>>19|w<<13)^(w>>>29|b<<3)^b>>>6),I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,A[k]=65535&M|I<<16,T[k]=65535&j|N<<16;j=65535&(x=q),N=x>>>16,M=65535&(S=R),I=S>>>16,S=e[0],N+=(x=t[0])>>>16,M+=65535&S,I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,e[0]=R=65535&M|I<<16,t[0]=q=65535&j|N<<16,j=65535&(x=L),N=x>>>16,M=65535&(S=P),I=S>>>16,S=e[1],N+=(x=t[1])>>>16,M+=65535&S,I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,e[1]=P=65535&M|I<<16,t[1]=L=65535&j|N<<16,j=65535&(x=U),N=x>>>16,M=65535&(S=O),I=S>>>16,S=e[2],N+=(x=t[2])>>>16,M+=65535&S,I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,e[2]=O=65535&M|I<<16,t[2]=U=65535&j|N<<16,j=65535&(x=H),N=x>>>16,M=65535&(S=B),I=S>>>16,S=e[3],N+=(x=t[3])>>>16,M+=65535&S,I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,e[3]=B=65535&M|I<<16,t[3]=H=65535&j|N<<16,j=65535&(x=K),N=x>>>16,M=65535&(S=C),I=S>>>16,S=e[4],N+=(x=t[4])>>>16,M+=65535&S,I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,e[4]=C=65535&M|I<<16,t[4]=K=65535&j|N<<16,j=65535&(x=W),N=x>>>16,M=65535&(S=z),I=S>>>16,S=e[5],N+=(x=t[5])>>>16,M+=65535&S,I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,e[5]=z=65535&M|I<<16,t[5]=W=65535&j|N<<16,j=65535&(x=Z),N=x>>>16,M=65535&(S=F),I=S>>>16,S=e[6],N+=(x=t[6])>>>16,M+=65535&S,I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,e[6]=F=65535&M|I<<16,t[6]=Z=65535&j|N<<16,j=65535&(x=J),N=x>>>16,M=65535&(S=D),I=S>>>16,S=e[7],N+=(x=t[7])>>>16,M+=65535&S,I+=S>>>16,I+=(M+=(N+=(j+=65535&x)>>>16)>>>16)>>>16,e[7]=D=65535&M|I<<16,t[7]=J=65535&j|N<<16,$+=128,i-=128}return i}function G(e,t,r){var i,n=new Int32Array(8),a=new Int32Array(8),o=new Uint8Array(256),s=r;for(n[0]=1779033703,n[1]=3144134277,n[2]=1013904242,n[3]=2773480762,n[4]=1359893119,n[5]=2600822924,n[6]=528734635,n[7]=1541459225,a[0]=4089235720,a[1]=2227873595,a[2]=4271175723,a[3]=1595750129,a[4]=2917565137,a[5]=725511199,a[6]=4215389547,a[7]=327033209,$(n,a,t,r),r%=128,i=0;i=0;--n)X(e,t,i=r[n/8|0]>>(7&n)&1),Q(t,e),Q(e,e),X(e,t,i)}function te(e,r){var i=[t(),t(),t(),t()];A(i[0],h),A(i[1],p),A(i[2],s),D(i[3],h,p),ee(e,i,r)}function re(e,r,n){var a,o=new Uint8Array(64),s=[t(),t(),t(),t()];for(n||i(r,32),G(o,r,32),o[0]&=248,o[31]&=127,o[31]|=64,te(s,o),Y(e,s),a=0;a<32;a++)r[a+32]=e[a];return 0}var ie=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function ne(e,t){var r,i,n,a;for(i=63;i>=32;--i){for(r=0,n=i-32,a=i-12;n>8,t[n]-=256*r;t[n]+=r,t[i]=0}for(r=0,n=0;n<32;n++)t[n]+=r-(t[31]>>4)*ie[n],r=t[n]>>8,t[n]&=255;for(n=0;n<32;n++)t[n]-=r*ie[n];for(i=0;i<32;i++)t[i+1]+=t[i]>>8,e[i]=255&t[i]}function ae(e){var t,r=new Float64Array(64);for(t=0;t<64;t++)r[t]=e[t];for(t=0;t<64;t++)e[t]=0;ne(e,r)}function oe(e,r,i,n){var a,o,s=new Uint8Array(64),u=new Uint8Array(64),c=new Uint8Array(64),l=new Float64Array(64),h=[t(),t(),t(),t()];G(s,n,32),s[0]&=248,s[31]&=127,s[31]|=64;var p=i+64;for(a=0;a=0;i--)q(n,n),1!==i&&D(n,n,r);for(i=0;i<16;i++)e[i]=n[i]}(i,i),D(i,i,a),D(i,i,u),D(i,i,u),D(e[0],i,u),q(n,e[0]),D(n,n,u),O(n,a)&&D(e[0],e[0],d),q(n,e[0]),D(n,n,u),O(n,a)?-1:(B(e[0])===r[31]>>7&&F(e[0],o,e[0]),D(e[3],e[0],e[1]),0)}(p,n))return-1;for(a=0;a=0},e.sign.keyPair=function(){var e=new Uint8Array(ce),t=new Uint8Array(le);return re(e,t),{publicKey:e,secretKey:t}},e.sign.keyPair.fromSecretKey=function(e){if(pe(e),e.length!==le)throw new Error("bad secret key size");for(var t=new Uint8Array(ce),r=0;r1){t[0]=t[0].slice(0,-1);for(var i=t.length-1,n=1;n= 0x80 (not a basic code point)","invalid-input":"Invalid input"},m=Math.floor,g=String.fromCharCode;function v(e){throw new RangeError(f[e])}function y(e,t){var r=e.split("@"),i="";return r.length>1&&(i=r[0]+"@",e=r[1]),i+function(e,t){for(var r=[],i=e.length;i--;)r[i]=t(e[i]);return r}((e=e.replace(d,".")).split("."),t).join(".")}function _(e){for(var t=[],r=0,i=e.length;r=55296&&n<=56319&&r>1,e+=m(e/t);e>455;i+=l)e=m(e/35);return m(i+36*e/(e+38))},E=function(e){var t,r=[],i=e.length,n=0,a=128,o=72,s=e.lastIndexOf("-");s<0&&(s=0);for(var u=0;u=128&&v("not-basic"),r.push(e.charCodeAt(u));for(var h=s>0?s+1:0;h=i&&v("invalid-input");var g=(t=e.charCodeAt(h++))-48<10?t-22:t-65<26?t-65:t-97<26?t-97:l;(g>=l||g>m((c-n)/d))&&v("overflow"),n+=g*d;var y=f<=o?1:f>=o+26?26:f-o;if(gm(c/_)&&v("overflow"),d*=_}var b=r.length+1;o=w(n-p,b,0==p),m(n/b)>c-a&&v("overflow"),a+=m(n/b),n%=b,r.splice(n++,0,a)}return String.fromCodePoint.apply(String,r)},k=function(e){var t=[],r=(e=_(e)).length,i=128,n=0,a=72,o=!0,s=!1,u=void 0;try{for(var h,p=e[Symbol.iterator]();!(o=(h=p.next()).done);o=!0){var d=h.value;d<128&&t.push(g(d))}}catch(e){s=!0,u=e}finally{try{!o&&p.return&&p.return()}finally{if(s)throw u}}var f=t.length,y=f;for(f&&t.push("-");y=i&&Mm((c-n)/I)&&v("overflow"),n+=(E-i)*I,i=E;var A=!0,T=!1,R=void 0;try{for(var P,O=e[Symbol.iterator]();!(A=(P=O.next()).done);A=!0){var B=P.value;if(Bc&&v("overflow"),B==i){for(var C=n,z=l;;z+=l){var F=z<=a?1:z>=a+26?26:z-a;if(C>6|192).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase():"%"+(t>>12|224).toString(16).toUpperCase()+"%"+(t>>6&63|128).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase()}function M(e){for(var t="",r=0,i=e.length;r=194&&n<224){if(i-r>=6){var a=parseInt(e.substr(r+4,2),16);t+=String.fromCharCode((31&n)<<6|63&a)}else t+=e.substr(r,6);r+=6}else if(n>=224){if(i-r>=9){var o=parseInt(e.substr(r+4,2),16),s=parseInt(e.substr(r+7,2),16);t+=String.fromCharCode((15&n)<<12|(63&o)<<6|63&s)}else t+=e.substr(r,9);r+=9}else t+=e.substr(r,3),r+=3}return t}function I(e,t){function r(e){var r=M(e);return r.match(t.UNRESERVED)?r:e}return e.scheme&&(e.scheme=String(e.scheme).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_SCHEME,"")),void 0!==e.userinfo&&(e.userinfo=String(e.userinfo).replace(t.PCT_ENCODED,r).replace(t.NOT_USERINFO,N).replace(t.PCT_ENCODED,n)),void 0!==e.host&&(e.host=String(e.host).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_HOST,N).replace(t.PCT_ENCODED,n)),void 0!==e.path&&(e.path=String(e.path).replace(t.PCT_ENCODED,r).replace(e.scheme?t.NOT_PATH:t.NOT_PATH_NOSCHEME,N).replace(t.PCT_ENCODED,n)),void 0!==e.query&&(e.query=String(e.query).replace(t.PCT_ENCODED,r).replace(t.NOT_QUERY,N).replace(t.PCT_ENCODED,n)),void 0!==e.fragment&&(e.fragment=String(e.fragment).replace(t.PCT_ENCODED,r).replace(t.NOT_FRAGMENT,N).replace(t.PCT_ENCODED,n)),e}function A(e){return e.replace(/^0*(.*)/,"$1")||"0"}function T(e,t){var r=e.match(t.IPV4ADDRESS)||[],i=u(r,2)[1];return i?i.split(".").map(A).join("."):e}function R(e,t){var r=e.match(t.IPV6ADDRESS)||[],i=u(r,3),n=i[1],a=i[2];if(n){for(var o=n.toLowerCase().split("::").reverse(),s=u(o,2),c=s[0],l=s[1],h=l?l.split(":").map(A):[],p=c.split(":").map(A),d=t.IPV4ADDRESS.test(p[p.length-1]),f=d?7:8,m=p.length-f,g=Array(f),v=0;v1){var b=g.slice(0,y.index),w=g.slice(y.index+y.length);_=b.join(":")+"::"+w.join(":")}else _=g.join(":");return a&&(_+="%"+a),_}return e}var P=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,O=void 0==="".match(/(){0}/)[1];function B(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r={},i=!1!==t.iri?s:o;"suffix"===t.reference&&(e=(t.scheme?t.scheme+":":"")+"//"+e);var n=e.match(P);if(n){O?(r.scheme=n[1],r.userinfo=n[3],r.host=n[4],r.port=parseInt(n[5],10),r.path=n[6]||"",r.query=n[7],r.fragment=n[8],isNaN(r.port)&&(r.port=n[5])):(r.scheme=n[1]||void 0,r.userinfo=-1!==e.indexOf("@")?n[3]:void 0,r.host=-1!==e.indexOf("//")?n[4]:void 0,r.port=parseInt(n[5],10),r.path=n[6]||"",r.query=-1!==e.indexOf("?")?n[7]:void 0,r.fragment=-1!==e.indexOf("#")?n[8]:void 0,isNaN(r.port)&&(r.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?n[4]:void 0)),r.host&&(r.host=R(T(r.host,i),i)),void 0!==r.scheme||void 0!==r.userinfo||void 0!==r.host||void 0!==r.port||r.path||void 0!==r.query?void 0===r.scheme?r.reference="relative":void 0===r.fragment?r.reference="absolute":r.reference="uri":r.reference="same-document",t.reference&&"suffix"!==t.reference&&t.reference!==r.reference&&(r.error=r.error||"URI is not a "+t.reference+" reference.");var a=j[(t.scheme||r.scheme||"").toLowerCase()];if(t.unicodeSupport||a&&a.unicodeSupport)I(r,i);else{if(r.host&&(t.domainHost||a&&a.domainHost))try{r.host=S(r.host.replace(i.PCT_ENCODED,M).toLowerCase())}catch(e){r.error=r.error||"Host's domain name can not be converted to ASCII via punycode: "+e}I(r,o)}a&&a.parse&&a.parse(r,t)}else r.error=r.error||"URI can not be parsed.";return r}function C(e,t){var r=!1!==t.iri?s:o,i=[];return void 0!==e.userinfo&&(i.push(e.userinfo),i.push("@")),void 0!==e.host&&i.push(R(T(String(e.host),r),r).replace(r.IPV6ADDRESS,(function(e,t,r){return"["+t+(r?"%25"+r:"")+"]"}))),"number"!=typeof e.port&&"string"!=typeof e.port||(i.push(":"),i.push(String(e.port))),i.length?i.join(""):void 0}var z=/^\.\.?\//,F=/^\/\.(\/|$)/,D=/^\/\.\.(\/|$)/,q=/^\/?(?:.|\n)*?(?=\/|$)/;function L(e){for(var t=[];e.length;)if(e.match(z))e=e.replace(z,"");else if(e.match(F))e=e.replace(F,"/");else if(e.match(D))e=e.replace(D,"/"),t.pop();else if("."===e||".."===e)e="";else{var r=e.match(q);if(!r)throw new Error("Unexpected dot segment condition");var i=r[0];e=e.slice(i.length),t.push(i)}return t.join("")}function U(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.iri?s:o,i=[],n=j[(t.scheme||e.scheme||"").toLowerCase()];if(n&&n.serialize&&n.serialize(e,t),e.host)if(r.IPV6ADDRESS.test(e.host));else if(t.domainHost||n&&n.domainHost)try{e.host=t.iri?x(e.host):S(e.host.replace(r.PCT_ENCODED,M).toLowerCase())}catch(r){e.error=e.error||"Host's domain name can not be converted to "+(t.iri?"Unicode":"ASCII")+" via punycode: "+r}I(e,r),"suffix"!==t.reference&&e.scheme&&(i.push(e.scheme),i.push(":"));var a=C(e,t);if(void 0!==a&&("suffix"!==t.reference&&i.push("//"),i.push(a),e.path&&"/"!==e.path.charAt(0)&&i.push("/")),void 0!==e.path){var u=e.path;t.absolutePath||n&&n.absolutePath||(u=L(u)),void 0===a&&(u=u.replace(/^\/\//,"/%2F")),i.push(u)}return void 0!==e.query&&(i.push("?"),i.push(e.query)),void 0!==e.fragment&&(i.push("#"),i.push(e.fragment)),i.join("")}function H(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i={};return arguments[3]||(e=B(U(e,r),r),t=B(U(t,r),r)),!(r=r||{}).tolerant&&t.scheme?(i.scheme=t.scheme,i.userinfo=t.userinfo,i.host=t.host,i.port=t.port,i.path=L(t.path||""),i.query=t.query):(void 0!==t.userinfo||void 0!==t.host||void 0!==t.port?(i.userinfo=t.userinfo,i.host=t.host,i.port=t.port,i.path=L(t.path||""),i.query=t.query):(t.path?("/"===t.path.charAt(0)?i.path=L(t.path):(void 0===e.userinfo&&void 0===e.host&&void 0===e.port||e.path?e.path?i.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path:i.path=t.path:i.path="/"+t.path,i.path=L(i.path)),i.query=t.query):(i.path=e.path,void 0!==t.query?i.query=t.query:i.query=e.query),i.userinfo=e.userinfo,i.host=e.host,i.port=e.port),i.scheme=e.scheme),i.fragment=t.fragment,i}function K(e,t){return e&&e.toString().replace(t&&t.iri?s.PCT_ENCODED:o.PCT_ENCODED,M)}var W={scheme:"http",domainHost:!0,parse:function(e,t){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e},serialize:function(e,t){var r="https"===String(e.scheme).toLowerCase();return e.port!==(r?443:80)&&""!==e.port||(e.port=void 0),e.path||(e.path="/"),e}},Z={scheme:"https",domainHost:W.domainHost,parse:W.parse,serialize:W.serialize};function J(e){return"boolean"==typeof e.secure?e.secure:"wss"===String(e.scheme).toLowerCase()}var V={scheme:"ws",domainHost:!0,parse:function(e,t){var r=e;return r.secure=J(r),r.resourceName=(r.path||"/")+(r.query?"?"+r.query:""),r.path=void 0,r.query=void 0,r},serialize:function(e,t){if(e.port!==(J(e)?443:80)&&""!==e.port||(e.port=void 0),"boolean"==typeof e.secure&&(e.scheme=e.secure?"wss":"ws",e.secure=void 0),e.resourceName){var r=e.resourceName.split("?"),i=u(r,2),n=i[0],a=i[1];e.path=n&&"/"!==n?n:void 0,e.query=a,e.resourceName=void 0}return e.fragment=void 0,e}},$={scheme:"wss",domainHost:V.domainHost,parse:V.parse,serialize:V.serialize},G={},Q="[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]",X="[0-9A-Fa-f]",Y=r(r("%[EFef][0-9A-Fa-f]%"+X+X+"%"+X+X)+"|"+r("%[89A-Fa-f][0-9A-Fa-f]%"+X+X)+"|"+r("%"+X+X)),ee=t("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",'[\\"\\\\]'),te=new RegExp(Q,"g"),re=new RegExp(Y,"g"),ie=new RegExp(t("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',ee),"g"),ne=new RegExp(t("[^]",Q,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),ae=ne;function oe(e){var t=M(e);return t.match(te)?t:e}var se={scheme:"mailto",parse:function(e,t){var r=e,i=r.to=r.path?r.path.split(","):[];if(r.path=void 0,r.query){for(var n=!1,a={},o=r.query.split("&"),s=0,u=o.length;s= 0x80 (not a basic code point)","invalid-input":"Invalid input"},d=Math.floor,f=String.fromCharCode;function m(e){throw RangeError(p[e])}function g(e,t){for(var r=e.length,i=[];r--;)i[r]=t(e[r]);return i}function v(e,t){var r=e.split("@"),i="";return r.length>1&&(i=r[0]+"@",e=r[1]),i+g((e=e.replace(h,".")).split("."),t).join(".")}function y(e){for(var t,r,i=[],n=0,a=e.length;n=55296&&t<=56319&&n65535&&(t+=f((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+f(e)})).join("")}function b(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function w(e,t,r){var i=0;for(e=r?d(e/700):e>>1,e+=d(e/t);e>455;i+=u)e=d(e/35);return d(i+36*e/(e+38))}function E(e){var t,r,i,n,a,o,c,l,h,p,f,g=[],v=e.length,y=0,b=128,E=72;for((r=e.lastIndexOf("-"))<0&&(r=0),i=0;i=128&&m("not-basic"),g.push(e.charCodeAt(i));for(n=r>0?r+1:0;n=v&&m("invalid-input"),((l=(f=e.charCodeAt(n++))-48<10?f-22:f-65<26?f-65:f-97<26?f-97:u)>=u||l>d((s-y)/o))&&m("overflow"),y+=l*o,!(l<(h=c<=E?1:c>=E+26?26:c-E));c+=u)o>d(s/(p=u-h))&&m("overflow"),o*=p;E=w(y-a,t=g.length+1,0==a),d(y/t)>s-b&&m("overflow"),b+=d(y/t),y%=t,g.splice(y++,0,b)}return _(g)}function k(e){var t,r,i,n,a,o,c,l,h,p,g,v,_,E,k,S=[];for(v=(e=y(e)).length,t=128,r=0,a=72,o=0;o=t&&gd((s-r)/(_=i+1))&&m("overflow"),r+=(c-t)*_,t=c,o=0;os&&m("overflow"),g==t){for(l=r,h=u;!(l<(p=h<=a?1:h>=a+26?26:h-a));h+=u)k=l-p,E=u-p,S.push(f(b(p+k%E,0))),l=d(k/E);S.push(f(b(l,0))),a=w(r,_,i==n),r=0,++i}++r,++t}return S.join("")}o={version:"1.3.2",ucs2:{decode:y,encode:_},decode:E,encode:k,toASCII:function(e){return v(e,(function(e){return l.test(e)?"xn--"+k(e):e}))},toUnicode:function(e){return v(e,(function(e){return c.test(e)?E(e.slice(4).toLowerCase()):e}))}},void 0===(i=function(){return o}.call(t,r,t,e))||(e.exports=i)}()},8575:(e,t,r)=>{"use strict";var i=r(52511),n=r(62502);function a(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=_,t.resolve=function(e,t){return _(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?_(e,!1,!0).resolveObject(t):t},t.format=function(e){return n.isString(e)&&(e=_(e)),e instanceof a?e.format():a.prototype.format.call(e)},t.Url=a;var o=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,u=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,c=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(c),h=["%","/","?",";","#"].concat(l),p=["/","?","#"],d=/^[+a-z0-9A-Z_-]{0,63}$/,f=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,m={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},v={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=r(17673);function _(e,t,r){if(e&&n.isObject(e)&&e instanceof a)return e;var i=new a;return i.parse(e,t,r),i}a.prototype.parse=function(e,t,r){if(!n.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var a=e.indexOf("?"),s=-1!==a&&a127?P+="x":P+=R[O];if(!P.match(d)){var C=A.slice(0,N),z=A.slice(N+1),F=R.match(f);F&&(C.push(F[1]),z.unshift(F[2])),z.length&&(_="/"+z.join(".")+_),this.hostname=C.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),I||(this.hostname=i.toASCII(this.hostname));var D=this.port?":"+this.port:"",q=this.hostname||"";this.host=q+D,this.href+=this.host,I&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==_[0]&&(_="/"+_))}if(!m[E])for(N=0,T=l.length;N0)&&r.host.split("@"))&&(r.auth=I.shift(),r.host=r.hostname=I.shift())),r.search=e.search,r.query=e.query,n.isNull(r.pathname)&&n.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!k.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var x=k.slice(-1)[0],j=(r.host||e.host||k.length>1)&&("."===x||".."===x)||""===x,N=0,M=k.length;M>=0;M--)"."===(x=k[M])?k.splice(M,1):".."===x?(k.splice(M,1),N++):N&&(k.splice(M,1),N--);if(!w&&!E)for(;N--;N)k.unshift("..");!w||""===k[0]||k[0]&&"/"===k[0].charAt(0)||k.unshift(""),j&&"/"!==k.join("/").substr(-1)&&k.push("");var I,A=""===k[0]||k[0]&&"/"===k[0].charAt(0);return S&&(r.hostname=r.host=A?"":k.length?k.shift():"",(I=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=I.shift(),r.host=r.hostname=I.shift())),(w=w||r.host&&k.length)&&!A&&k.unshift(""),k.length?r.pathname=k.join("/"):(r.pathname=null,r.path=null),n.isNull(r.pathname)&&n.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},a.prototype.parseHost=function(){var e=this.host,t=s.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},62502:e=>{"use strict";e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},94927:(e,t,r)=>{function i(e){try{if(!r.g.localStorage)return!1}catch(e){return!1}var t=r.g.localStorage[e];return null!=t&&"true"===String(t).toLowerCase()}e.exports=function(e,t){if(i("noDeprecation"))return e;var r=!1;return function(){if(!r){if(i("throwDeprecation"))throw new Error(t);i("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}}},20384:e=>{e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},55955:(e,t,r)=>{"use strict";var i=r(82584),n=r(48662),a=r(86430),o=r(85692);function s(e){return e.call.bind(e)}var u="undefined"!=typeof BigInt,c="undefined"!=typeof Symbol,l=s(Object.prototype.toString),h=s(Number.prototype.valueOf),p=s(String.prototype.valueOf),d=s(Boolean.prototype.valueOf);if(u)var f=s(BigInt.prototype.valueOf);if(c)var m=s(Symbol.prototype.valueOf);function g(e,t){if("object"!=typeof e)return!1;try{return t(e),!0}catch(e){return!1}}function v(e){return"[object Map]"===l(e)}function y(e){return"[object Set]"===l(e)}function _(e){return"[object WeakMap]"===l(e)}function b(e){return"[object WeakSet]"===l(e)}function w(e){return"[object ArrayBuffer]"===l(e)}function E(e){return"undefined"!=typeof ArrayBuffer&&(w.working?w(e):e instanceof ArrayBuffer)}function k(e){return"[object DataView]"===l(e)}function S(e){return"undefined"!=typeof DataView&&(k.working?k(e):e instanceof DataView)}t.isArgumentsObject=i,t.isGeneratorFunction=n,t.isTypedArray=o,t.isPromise=function(e){return"undefined"!=typeof Promise&&e instanceof Promise||null!==e&&"object"==typeof e&&"function"==typeof e.then&&"function"==typeof e.catch},t.isArrayBufferView=function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):o(e)||S(e)},t.isUint8Array=function(e){return"Uint8Array"===a(e)},t.isUint8ClampedArray=function(e){return"Uint8ClampedArray"===a(e)},t.isUint16Array=function(e){return"Uint16Array"===a(e)},t.isUint32Array=function(e){return"Uint32Array"===a(e)},t.isInt8Array=function(e){return"Int8Array"===a(e)},t.isInt16Array=function(e){return"Int16Array"===a(e)},t.isInt32Array=function(e){return"Int32Array"===a(e)},t.isFloat32Array=function(e){return"Float32Array"===a(e)},t.isFloat64Array=function(e){return"Float64Array"===a(e)},t.isBigInt64Array=function(e){return"BigInt64Array"===a(e)},t.isBigUint64Array=function(e){return"BigUint64Array"===a(e)},v.working="undefined"!=typeof Map&&v(new Map),t.isMap=function(e){return"undefined"!=typeof Map&&(v.working?v(e):e instanceof Map)},y.working="undefined"!=typeof Set&&y(new Set),t.isSet=function(e){return"undefined"!=typeof Set&&(y.working?y(e):e instanceof Set)},_.working="undefined"!=typeof WeakMap&&_(new WeakMap),t.isWeakMap=function(e){return"undefined"!=typeof WeakMap&&(_.working?_(e):e instanceof WeakMap)},b.working="undefined"!=typeof WeakSet&&b(new WeakSet),t.isWeakSet=function(e){return b(e)},w.working="undefined"!=typeof ArrayBuffer&&w(new ArrayBuffer),t.isArrayBuffer=E,k.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&k(new DataView(new ArrayBuffer(1),0,1)),t.isDataView=S;var x="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function j(e){return"[object SharedArrayBuffer]"===l(e)}function N(e){return void 0!==x&&(void 0===j.working&&(j.working=j(new x)),j.working?j(e):e instanceof x)}function M(e){return g(e,h)}function I(e){return g(e,p)}function A(e){return g(e,d)}function T(e){return u&&g(e,f)}function R(e){return c&&g(e,m)}t.isSharedArrayBuffer=N,t.isAsyncFunction=function(e){return"[object AsyncFunction]"===l(e)},t.isMapIterator=function(e){return"[object Map Iterator]"===l(e)},t.isSetIterator=function(e){return"[object Set Iterator]"===l(e)},t.isGeneratorObject=function(e){return"[object Generator]"===l(e)},t.isWebAssemblyCompiledModule=function(e){return"[object WebAssembly.Module]"===l(e)},t.isNumberObject=M,t.isStringObject=I,t.isBooleanObject=A,t.isBigIntObject=T,t.isSymbolObject=R,t.isBoxedPrimitive=function(e){return M(e)||I(e)||A(e)||T(e)||R(e)},t.isAnyArrayBuffer=function(e){return"undefined"!=typeof Uint8Array&&(E(e)||N(e))},["isProxy","isExternal","isModuleNamespaceObject"].forEach((function(e){Object.defineProperty(t,e,{enumerable:!1,value:function(){throw new Error(e+" is not supported in userland")}})}))},89539:(e,t,r)=>{var i=r(34155),n=Object.getOwnPropertyDescriptors||function(e){for(var t=Object.keys(e),r={},i=0;i=n)return e;switch(e){case"%s":return String(i[r++]);case"%d":return Number(i[r++]);case"%j":try{return JSON.stringify(i[r++])}catch(e){return"[Circular]"}default:return e}})),s=i[r];r=3&&(i.depth=arguments[2]),arguments.length>=4&&(i.colors=arguments[3]),g(r)?i.showHidden=r:r&&t._extend(i,r),b(i.showHidden)&&(i.showHidden=!1),b(i.depth)&&(i.depth=2),b(i.colors)&&(i.colors=!1),b(i.customInspect)&&(i.customInspect=!0),i.colors&&(i.stylize=l),p(i,e,i.depth)}function l(e,t){var r=c.styles[t];return r?"["+c.colors[r][0]+"m"+e+"["+c.colors[r][1]+"m":e}function h(e,t){return e}function p(e,r,i){if(e.customInspect&&r&&x(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var n=r.inspect(i,e);return _(n)||(n=p(e,n,i)),n}var a=function(e,t){if(b(t))return e.stylize("undefined","undefined");if(_(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}return y(t)?e.stylize(""+t,"number"):g(t)?e.stylize(""+t,"boolean"):v(t)?e.stylize("null","null"):void 0}(e,r);if(a)return a;var o=Object.keys(r),s=function(e){var t={};return e.forEach((function(e,r){t[e]=!0})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(r)),S(r)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return d(r);if(0===o.length){if(x(r)){var u=r.name?": "+r.name:"";return e.stylize("[Function"+u+"]","special")}if(w(r))return e.stylize(RegExp.prototype.toString.call(r),"regexp");if(k(r))return e.stylize(Date.prototype.toString.call(r),"date");if(S(r))return d(r)}var c,l="",h=!1,E=["{","}"];return m(r)&&(h=!0,E=["[","]"]),x(r)&&(l=" [Function"+(r.name?": "+r.name:"")+"]"),w(r)&&(l=" "+RegExp.prototype.toString.call(r)),k(r)&&(l=" "+Date.prototype.toUTCString.call(r)),S(r)&&(l=" "+d(r)),0!==o.length||h&&0!=r.length?i<0?w(r)?e.stylize(RegExp.prototype.toString.call(r),"regexp"):e.stylize("[Object]","special"):(e.seen.push(r),c=h?function(e,t,r,i,n){for(var a=[],o=0,s=t.length;o60?r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}(c,l,E)):E[0]+l+E[1]}function d(e){return"["+Error.prototype.toString.call(e)+"]"}function f(e,t,r,i,n,a){var o,s,u;if((u=Object.getOwnPropertyDescriptor(t,n)||{value:t[n]}).get?s=u.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):u.set&&(s=e.stylize("[Setter]","special")),A(i,n)||(o="["+n+"]"),s||(e.seen.indexOf(u.value)<0?(s=v(r)?p(e,u.value,null):p(e,u.value,r-1)).indexOf("\n")>-1&&(s=a?s.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+s.split("\n").map((function(e){return" "+e})).join("\n")):s=e.stylize("[Circular]","special")),b(o)){if(a&&n.match(/^\d+$/))return s;(o=JSON.stringify(""+n)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+s}function m(e){return Array.isArray(e)}function g(e){return"boolean"==typeof e}function v(e){return null===e}function y(e){return"number"==typeof e}function _(e){return"string"==typeof e}function b(e){return void 0===e}function w(e){return E(e)&&"[object RegExp]"===j(e)}function E(e){return"object"==typeof e&&null!==e}function k(e){return E(e)&&"[object Date]"===j(e)}function S(e){return E(e)&&("[object Error]"===j(e)||e instanceof Error)}function x(e){return"function"==typeof e}function j(e){return Object.prototype.toString.call(e)}function N(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(e=e.toUpperCase(),!o[e])if(s.test(e)){var r=i.pid;o[e]=function(){var i=t.format.apply(t,arguments);console.error("%s %d: %s",e,r,i)}}else o[e]=function(){};return o[e]},t.inspect=c,c.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},c.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.types=r(55955),t.isArray=m,t.isBoolean=g,t.isNull=v,t.isNullOrUndefined=function(e){return null==e},t.isNumber=y,t.isString=_,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=b,t.isRegExp=w,t.types.isRegExp=w,t.isObject=E,t.isDate=k,t.types.isDate=k,t.isError=S,t.types.isNativeError=S,t.isFunction=x,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=r(20384);var M=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function I(){var e=new Date,t=[N(e.getHours()),N(e.getMinutes()),N(e.getSeconds())].join(":");return[e.getDate(),M[e.getMonth()],t].join(" ")}function A(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",I(),t.format.apply(t,arguments))},t.inherits=r(35717),t._extend=function(e,t){if(!t||!E(t))return e;for(var r=Object.keys(t),i=r.length;i--;)e[r[i]]=t[r[i]];return e};var T="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function R(e,t){if(!e){var r=new Error("Promise was rejected with a falsy value");r.reason=e,e=r}return t(e)}t.promisify=function(e){if("function"!=typeof e)throw new TypeError('The "original" argument must be of type Function');if(T&&e[T]){var t;if("function"!=typeof(t=e[T]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(t,T,{value:t,enumerable:!1,writable:!1,configurable:!0}),t}function t(){for(var t,r,i=new Promise((function(e,i){t=e,r=i})),n=[],a=0;a{for(var t=[],r=0;r<256;++r)t[r]=(r+256).toString(16).substr(1);e.exports=function(e,r){var i=r||0,n=t;return[n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]]].join("")}},85217:e=>{var t="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(t){var r=new Uint8Array(16);e.exports=function(){return t(r),r}}else{var i=new Array(16);e.exports=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),i[t]=e>>>((3&t)<<3)&255;return i}}},71171:(e,t,r)=>{var i=r(85217),n=r(45327);e.exports=function(e,t,r){var a=t&&r||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var o=(e=e||{}).random||(e.rng||i)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t)for(var s=0;s<16;++s)t[a+s]=o[s];return t||n(o)}},43552:(e,t,r)=>{var i=r(6144),n=r(89539),a=r(29031),o=r(16497).VZ,s=a.sprintf;function u(e){var t,r,n,a;if(i.object(e,"args"),i.bool(e.strict,"args.strict"),i.array(e.argv,"args.argv"),0===(t=e.argv).length)r={},n=[];else if(o(t[0]))r={cause:t[0]},n=t.slice(1);else if("object"==typeof t[0]){for(a in r={},t[0])r[a]=t[0][a];n=t.slice(1)}else i.string(t[0],"first argument to VError, SError, or WError constructor must be a string, object, or Error"),r={},n=t;return i.object(r),r.strict||e.strict||(n=n.map((function(e){return null===e?"null":void 0===e?"undefined":e}))),{options:r,shortmessage:0===n.length?"":s.apply(null,n)}}function c(){var e,t,r,n,a,s,l;if(e=Array.prototype.slice.call(arguments,0),!(this instanceof c))return t=Object.create(c.prototype),c.apply(t,arguments),t;if((r=u({argv:e,strict:!1})).options.name&&(i.string(r.options.name,'error\'s "name" must be a string'),this.name=r.options.name),this.jse_shortmsg=r.shortmessage,s=r.shortmessage,(n=r.options.cause)&&(i.ok(o(n),"cause is not an Error"),this.jse_cause=n,r.options.skipCauseMessage||(s+=": "+n.message)),this.jse_info={},r.options.info)for(l in r.options.info)this.jse_info[l]=r.options.info[l];return this.message=s,Error.call(this,s),Error.captureStackTrace&&(a=r.options.constructorOpt||this.constructor,Error.captureStackTrace(this,a)),this}function l(){var e,t,r,i;return e=Array.prototype.slice.call(arguments,0),this instanceof l?(i=(r=u({argv:e,strict:!0})).options,c.call(this,i,"%s",r.shortmessage),this):(t=Object.create(l.prototype),l.apply(t,arguments),t)}function h(e){i.array(e,"list of errors"),i.ok(e.length>0,"must be at least one error"),this.ase_errors=e,c.call(this,{cause:e[0]},"first of %d error%s",e.length,1==e.length?"":"s")}function p(){var e,t,r,i;return e=Array.prototype.slice.call(arguments,0),this instanceof p?((i=(r=u({argv:e,strict:!1})).options).skipCauseMessage=!0,c.call(this,i,"%s",r.shortmessage),this):(t=Object.create(p.prototype),p.apply(t,e),t)}e.exports=c,c.VError=c,c.SError=l,c.WError=p,c.MultiError=h,n.inherits(c,Error),c.prototype.name="VError",c.prototype.toString=function(){var e=this.hasOwnProperty("name")&&this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(e+=": "+this.message),e},c.prototype.cause=function(){var e=c.cause(this);return null===e?void 0:e},c.cause=function(e){return i.ok(o(e),"err must be an Error"),o(e.jse_cause)?e.jse_cause:null},c.info=function(e){var t,r,n;if(i.ok(o(e),"err must be an Error"),t=null!==(r=c.cause(e))?c.info(r):{},"object"==typeof e.jse_info&&null!==e.jse_info)for(n in e.jse_info)t[n]=e.jse_info[n];return t},c.findCauseByName=function(e,t){var r;for(i.ok(o(e),"err must be an Error"),i.string(t,"name"),i.ok(t.length>0,"name cannot be empty"),r=e;null!==r;r=c.cause(r))if(i.ok(o(r)),r.name==t)return r;return null},c.hasCauseWithName=function(e,t){return null!==c.findCauseByName(e,t)},c.fullStack=function(e){i.ok(o(e),"err must be an Error");var t=c.cause(e);return t?e.stack+"\ncaused by: "+c.fullStack(t):e.stack},c.errorFromList=function(e){return i.arrayOfObject(e,"errors"),0===e.length?null:(e.forEach((function(e){i.ok(o(e))})),1==e.length?e[0]:new h(e))},c.errorForEach=function(e,t){i.ok(o(e),"err must be an Error"),i.func(t,"func"),e instanceof h?e.errors().forEach((function(e){t(e)})):t(e)},n.inherits(l,c),n.inherits(h,c),h.prototype.name="MultiError",h.prototype.errors=function(){return this.ase_errors.slice(0)},n.inherits(p,c),p.prototype.name="WError",p.prototype.toString=function(){var e=this.hasOwnProperty("name")&&this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(e+=": "+this.message),this.jse_cause&&this.jse_cause.message&&(e+="; caused by "+this.jse_cause.toString()),e},p.prototype.cause=function(e){return o(e)&&(this.jse_cause=e),this.jse_cause}},84763:e=>{e.exports=Worker},86430:(e,t,r)=>{"use strict";var i=r(94029),n=r(63083),a=r(21924),o=a("Object.prototype.toString"),s=r(96410)(),u="undefined"==typeof globalThis?r.g:globalThis,c=n(),l=a("String.prototype.slice"),h={},p=r(20882),d=Object.getPrototypeOf;s&&p&&d&&i(c,(function(e){if("function"==typeof u[e]){var t=new u[e];if(Symbol.toStringTag in t){var r=d(t),i=p(r,Symbol.toStringTag);if(!i){var n=d(r);i=p(n,Symbol.toStringTag)}h[e]=i.get}}}));var f=r(85692);e.exports=function(e){return!!f(e)&&(s&&Symbol.toStringTag in e?function(e){var t=!1;return i(h,(function(r,i){if(!t)try{var n=r.call(e);n===i&&(t=n)}catch(e){}})),t}(e):l(o(e),8,-1))}},47529:e=>{e.exports=function(){for(var e={},r=0;r{"use strict";e.exports=child_process},80950:()=>{},46601:()=>{},89214:()=>{},8623:()=>{},42480:()=>{},7748:()=>{},85568:()=>{},56619:()=>{},77108:()=>{},52361:()=>{},94616:()=>{},55024:()=>{},63083:(e,t,r)=>{"use strict";var i=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],n="undefined"==typeof globalThis?r.g:globalThis;e.exports=function(){for(var e=[],t=0;t{"use strict";var i=r(40210)("%Object.getOwnPropertyDescriptor%",!0);if(i)try{i([],"length")}catch(e){i=null}e.exports=i},894:e=>{"use strict";e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#","description":"Meta-schema for $data reference (JSON Schema extension proposal)","type":"object","required":["$data"],"properties":{"$data":{"type":"string","anyOf":[{"format":"relative-json-pointer"},{"format":"json-pointer"}]}},"additionalProperties":false}')},96273:e=>{"use strict";e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-06/schema#","$id":"http://json-schema.org/draft-06/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"title":{"type":"string"},"description":{"type":"string"},"default":{},"examples":{"type":"array","items":{}},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":{}},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":{},"enum":{"type":"array","minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":{}}')},6680:e=>{"use strict";e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"http://json-schema.org/draft-07/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"$comment":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":true,"readOnly":{"type":"boolean","default":false},"examples":{"type":"array","items":true},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":true},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"propertyNames":{"format":"regex"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":true,"enum":{"type":"array","items":true,"minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"contentMediaType":{"type":"string"},"contentEncoding":{"type":"string"},"if":{"$ref":"#"},"then":{"$ref":"#"},"else":{"$ref":"#"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":true}')},44946:e=>{"use strict";e.exports=JSON.parse('{"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}}')},75207:e=>{"use strict";e.exports=JSON.parse('{"sha224WithRSAEncryption":{"sign":"rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"RSA-SHA224":{"sign":"ecdsa/rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"sha256WithRSAEncryption":{"sign":"rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"RSA-SHA256":{"sign":"ecdsa/rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"sha384WithRSAEncryption":{"sign":"rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"RSA-SHA384":{"sign":"ecdsa/rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"sha512WithRSAEncryption":{"sign":"rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA512":{"sign":"ecdsa/rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA1":{"sign":"rsa","hash":"sha1","id":"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{"sign":"ecdsa","hash":"sha1","id":""},"sha256":{"sign":"ecdsa","hash":"sha256","id":""},"sha224":{"sign":"ecdsa","hash":"sha224","id":""},"sha384":{"sign":"ecdsa","hash":"sha384","id":""},"sha512":{"sign":"ecdsa","hash":"sha512","id":""},"DSA-SHA":{"sign":"dsa","hash":"sha1","id":""},"DSA-SHA1":{"sign":"dsa","hash":"sha1","id":""},"DSA":{"sign":"dsa","hash":"sha1","id":""},"DSA-WITH-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-WITH-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-WITH-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-WITH-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-RIPEMD160":{"sign":"dsa","hash":"rmd160","id":""},"ripemd160WithRSA":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"RSA-RIPEMD160":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"md5WithRSAEncryption":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"},"RSA-MD5":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"}}')},1308:e=>{"use strict";e.exports=JSON.parse('{"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}')},29799:e=>{"use strict";e.exports=JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}')},18597:e=>{"use strict";e.exports={i8:"6.5.4"}},83932:e=>{"use strict";e.exports=JSON.parse('{"$id":"afterRequest.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["lastAccess","eTag","hitCount"],"properties":{"expires":{"type":"string","pattern":"^(\\\\d{4})(-)?(\\\\d\\\\d)(-)?(\\\\d\\\\d)(T)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(\\\\.\\\\d+)?(Z|([+-])(\\\\d\\\\d)(:)?(\\\\d\\\\d))?"},"lastAccess":{"type":"string","pattern":"^(\\\\d{4})(-)?(\\\\d\\\\d)(-)?(\\\\d\\\\d)(T)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(\\\\.\\\\d+)?(Z|([+-])(\\\\d\\\\d)(:)?(\\\\d\\\\d))?"},"eTag":{"type":"string"},"hitCount":{"type":"integer"},"comment":{"type":"string"}}}')},36136:e=>{"use strict";e.exports=JSON.parse('{"$id":"beforeRequest.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["lastAccess","eTag","hitCount"],"properties":{"expires":{"type":"string","pattern":"^(\\\\d{4})(-)?(\\\\d\\\\d)(-)?(\\\\d\\\\d)(T)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(\\\\.\\\\d+)?(Z|([+-])(\\\\d\\\\d)(:)?(\\\\d\\\\d))?"},"lastAccess":{"type":"string","pattern":"^(\\\\d{4})(-)?(\\\\d\\\\d)(-)?(\\\\d\\\\d)(T)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(\\\\.\\\\d+)?(Z|([+-])(\\\\d\\\\d)(:)?(\\\\d\\\\d))?"},"eTag":{"type":"string"},"hitCount":{"type":"integer"},"comment":{"type":"string"}}}')},805:e=>{"use strict";e.exports=JSON.parse('{"$id":"browser.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","version"],"properties":{"name":{"type":"string"},"version":{"type":"string"},"comment":{"type":"string"}}}')},51632:e=>{"use strict";e.exports=JSON.parse('{"$id":"cache.json#","$schema":"http://json-schema.org/draft-06/schema#","properties":{"beforeRequest":{"oneOf":[{"type":"null"},{"$ref":"beforeRequest.json#"}]},"afterRequest":{"oneOf":[{"type":"null"},{"$ref":"afterRequest.json#"}]},"comment":{"type":"string"}}}')},61567:e=>{"use strict";e.exports=JSON.parse('{"$id":"content.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["size","mimeType"],"properties":{"size":{"type":"integer"},"compression":{"type":"integer"},"mimeType":{"type":"string"},"text":{"type":"string"},"encoding":{"type":"string"},"comment":{"type":"string"}}}')},25725:e=>{"use strict";e.exports=JSON.parse('{"$id":"cookie.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"path":{"type":"string"},"domain":{"type":"string"},"expires":{"type":["string","null"],"format":"date-time"},"httpOnly":{"type":"boolean"},"secure":{"type":"boolean"},"comment":{"type":"string"}}}')},47218:e=>{"use strict";e.exports=JSON.parse('{"$id":"creator.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","version"],"properties":{"name":{"type":"string"},"version":{"type":"string"},"comment":{"type":"string"}}}')},74560:e=>{"use strict";e.exports=JSON.parse('{"$id":"entry.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["startedDateTime","time","request","response","cache","timings"],"properties":{"pageref":{"type":"string"},"startedDateTime":{"type":"string","format":"date-time","pattern":"^(\\\\d{4})(-)?(\\\\d\\\\d)(-)?(\\\\d\\\\d)(T)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(\\\\.\\\\d+)?(Z|([+-])(\\\\d\\\\d)(:)?(\\\\d\\\\d))"},"time":{"type":"number","min":0},"request":{"$ref":"request.json#"},"response":{"$ref":"response.json#"},"cache":{"$ref":"cache.json#"},"timings":{"$ref":"timings.json#"},"serverIPAddress":{"type":"string","oneOf":[{"format":"ipv4"},{"format":"ipv6"}]},"connection":{"type":"string"},"comment":{"type":"string"}}}')},75579:e=>{"use strict";e.exports=JSON.parse('{"$id":"har.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["log"],"properties":{"log":{"$ref":"log.json#"}}}')},75147:e=>{"use strict";e.exports=JSON.parse('{"$id":"header.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"comment":{"type":"string"}}}')},53013:e=>{"use strict";e.exports=JSON.parse('{"$id":"log.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["version","creator","entries"],"properties":{"version":{"type":"string"},"creator":{"$ref":"creator.json#"},"browser":{"$ref":"browser.json#"},"pages":{"type":"array","items":{"$ref":"page.json#"}},"entries":{"type":"array","items":{"$ref":"entry.json#"}},"comment":{"type":"string"}}}')},34777:e=>{"use strict";e.exports=JSON.parse('{"$id":"page.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["startedDateTime","id","title","pageTimings"],"properties":{"startedDateTime":{"type":"string","format":"date-time","pattern":"^(\\\\d{4})(-)?(\\\\d\\\\d)(-)?(\\\\d\\\\d)(T)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(:)?(\\\\d\\\\d)(\\\\.\\\\d+)?(Z|([+-])(\\\\d\\\\d)(:)?(\\\\d\\\\d))"},"id":{"type":"string","unique":true},"title":{"type":"string"},"pageTimings":{"$ref":"pageTimings.json#"},"comment":{"type":"string"}}}')},5538:e=>{"use strict";e.exports=JSON.parse('{"$id":"pageTimings.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","properties":{"onContentLoad":{"type":"number","min":-1},"onLoad":{"type":"number","min":-1},"comment":{"type":"string"}}}')},12096:e=>{"use strict";e.exports=JSON.parse('{"$id":"postData.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["mimeType"],"properties":{"mimeType":{"type":"string"},"text":{"type":"string"},"params":{"type":"array","required":["name"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"fileName":{"type":"string"},"contentType":{"type":"string"},"comment":{"type":"string"}}},"comment":{"type":"string"}}}')},21251:e=>{"use strict";e.exports=JSON.parse('{"$id":"query.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"comment":{"type":"string"}}}')},99646:e=>{"use strict";e.exports=JSON.parse('{"$id":"request.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["method","url","httpVersion","cookies","headers","queryString","headersSize","bodySize"],"properties":{"method":{"type":"string"},"url":{"type":"string","format":"uri"},"httpVersion":{"type":"string"},"cookies":{"type":"array","items":{"$ref":"cookie.json#"}},"headers":{"type":"array","items":{"$ref":"header.json#"}},"queryString":{"type":"array","items":{"$ref":"query.json#"}},"postData":{"$ref":"postData.json#"},"headersSize":{"type":"integer"},"bodySize":{"type":"integer"},"comment":{"type":"string"}}}')},9103:e=>{"use strict";e.exports=JSON.parse('{"$id":"response.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["status","statusText","httpVersion","cookies","headers","content","redirectURL","headersSize","bodySize"],"properties":{"status":{"type":"integer"},"statusText":{"type":"string"},"httpVersion":{"type":"string"},"cookies":{"type":"array","items":{"$ref":"cookie.json#"}},"headers":{"type":"array","items":{"$ref":"header.json#"}},"content":{"$ref":"content.json#"},"redirectURL":{"type":"string"},"headersSize":{"type":"integer"},"bodySize":{"type":"integer"},"comment":{"type":"string"}}}')},22007:e=>{"use strict";e.exports=JSON.parse('{"$id":"timings.json#","$schema":"http://json-schema.org/draft-06/schema#","required":["send","wait","receive"],"properties":{"dns":{"type":"number","min":-1},"connect":{"type":"number","min":-1},"blocked":{"type":"number","min":-1},"send":{"type":"number","min":-1},"wait":{"type":"number","min":-1},"receive":{"type":"number","min":-1},"ssl":{"type":"number","min":-1},"comment":{"type":"string"}}}')},53765:e=>{"use strict";e.exports=JSON.parse('{"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/3gpphal+json":{"source":"iana","compressible":true},"application/3gpphalforms+json":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/ace+cbor":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/at+jwt":{"source":"iana"},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/captive+json":{"source":"iana","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/city+json":{"source":"iana","compressible":true},"application/clr":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true,"extensions":["cpl"]},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dash-patch+xml":{"source":"iana","compressible":true,"extensions":["mpp"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["es","ecma"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/elm+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/elm+xml":{"source":"iana","compressible":true},"application/emergencycalldata.cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/express":{"source":"iana","extensions":["exp"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/jscalendar+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true,"extensions":["mpf"]},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/missing-blocks+cbor-seq":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/oauth-authz-req+jwt":{"source":"iana"},"application/oblivious-dns-message":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{"source":"iana","compressible":true},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p21":{"source":"iana"},"application/p21+zip":{"source":"iana","compressible":false},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana","extensions":["asc"]},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.cyn":{"source":"iana","charset":"7-BIT"},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sarif+json":{"source":"iana","compressible":true},"application/sarif-external-properties+json":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spdx+json":{"source":"iana","compressible":true},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/token-introspection+jwt":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana","extensions":["trig"]},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ubjson":{"compressible":false,"extensions":["ubj"]},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true,"extensions":["td"]},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gnas":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gtpc":{"source":"iana"},"application/vnd.3gpp.interworking-data":{"source":"iana"},"application/vnd.3gpp.lpp":{"source":"iana"},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ngap":{"source":"iana"},"application/vnd.3gpp.pfcp":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.s1ap":{"source":"iana"},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.cmoca-cmresource":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-cmtable":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.age":{"source":"iana","extensions":["age"]},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.arrow.file":{"source":"iana"},"application/vnd.apache.arrow.stream":{"source":"iana"},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["key"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.cryptomator.encrypted":{"source":"iana"},"application/vnd.cryptomator.vault":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.cyclonedx+json":{"source":"iana","compressible":true},"application/vnd.cyclonedx+xml":{"source":"iana","compressible":true},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.d3m-dataset":{"source":"iana"},"application/vnd.d3m-problem":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana","extensions":["dbf"]},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.eclipse.ditto+json":{"source":"iana","compressible":true},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eu.kasparian.car+json":{"source":"iana","compressible":true},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.familysearch.gedcom+zip":{"source":"iana","compressible":false},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujifilm.fb.docuworks":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.container":{"source":"iana"},"application/vnd.fujifilm.fb.jfi+xml":{"source":"iana","compressible":true},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.slides":{"source":"iana"},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hl7cda+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hl7v2+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana","extensions":["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxar.archive.3tz+zip":{"source":"iana","compressible":false},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.nacamar.ybrid+json":{"source":"iana","compressible":true},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nebumind.line":{"source":"iana"},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+cbor":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.opentimestamps.ots":{"source":"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana","extensions":["rar"]},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.resilient.logic":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.seis+json":{"source":"iana","compressible":true},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.sycle+xml":{"source":"iana","compressible":true},"application/vnd.syft+json":{"source":"iana","compressible":true},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veritone.aion+json":{"source":"iana","compressible":true},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.dpp":{"source":"iana"},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"source":"iana","compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true,"extensions":["wif"]},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-iwork-keynote-sffkey":{"extensions":["key"]},"application/x-iwork-numbers-sffnumbers":{"extensions":["numbers"]},"application/x-iwork-pages-sffpages":{"extensions":["pages"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xsl","xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana","extensions":["amr"]},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx","opus"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/scip":{"source":"iana"},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sofa":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/tsvcis":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana","extensions":["avci"]},"image/avcs":{"source":"iana","extensions":["avcs"]},"image/avif":{"source":"iana","compressible":false,"extensions":["avif"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/ktx2":{"source":"iana","extensions":["ktx2"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","compressible":true,"extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"compressible":true,"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.pco.b16":{"source":"iana","extensions":["b16"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/e57":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/step":{"source":"iana"},"model/step+xml":{"source":"iana","compressible":true,"extensions":["stpx"]},"model/step+zip":{"source":"iana","compressible":false,"extensions":["stpz"]},"model/step-xml+zip":{"source":"iana","compressible":false,"extensions":["stpxz"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.pytha.pyox":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.sap.vds":{"source":"iana","extensions":["vds"]},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/cql":{"source":"iana"},"text/cql-expression":{"source":"iana"},"text/cql-identifier":{"source":"iana"},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fhirpath":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/gff3":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shaclc":{"source":"iana"},"text/shex":{"source":"iana","extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/spdx":{"source":"iana","extensions":["spdx"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.familysearch.gedcom":{"source":"iana","extensions":["ged"]},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hans":{"source":"iana"},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"compressible":true,"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/av1":{"source":"iana"},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/ffv1":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana","extensions":["m4s"]},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/jxsv":{"source":"iana"},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/scip":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/vp9":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}')},22562:e=>{"use strict";e.exports=JSON.parse('{"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}')},3704:e=>{"use strict";e.exports=JSON.parse('["ac","com.ac","edu.ac","gov.ac","net.ac","mil.ac","org.ac","ad","nom.ad","ae","co.ae","net.ae","org.ae","sch.ae","ac.ae","gov.ae","mil.ae","aero","accident-investigation.aero","accident-prevention.aero","aerobatic.aero","aeroclub.aero","aerodrome.aero","agents.aero","aircraft.aero","airline.aero","airport.aero","air-surveillance.aero","airtraffic.aero","air-traffic-control.aero","ambulance.aero","amusement.aero","association.aero","author.aero","ballooning.aero","broker.aero","caa.aero","cargo.aero","catering.aero","certification.aero","championship.aero","charter.aero","civilaviation.aero","club.aero","conference.aero","consultant.aero","consulting.aero","control.aero","council.aero","crew.aero","design.aero","dgca.aero","educator.aero","emergency.aero","engine.aero","engineer.aero","entertainment.aero","equipment.aero","exchange.aero","express.aero","federation.aero","flight.aero","fuel.aero","gliding.aero","government.aero","groundhandling.aero","group.aero","hanggliding.aero","homebuilt.aero","insurance.aero","journal.aero","journalist.aero","leasing.aero","logistics.aero","magazine.aero","maintenance.aero","media.aero","microlight.aero","modelling.aero","navigation.aero","parachuting.aero","paragliding.aero","passenger-association.aero","pilot.aero","press.aero","production.aero","recreation.aero","repbody.aero","res.aero","research.aero","rotorcraft.aero","safety.aero","scientist.aero","services.aero","show.aero","skydiving.aero","software.aero","student.aero","trader.aero","trading.aero","trainer.aero","union.aero","workinggroup.aero","works.aero","af","gov.af","com.af","org.af","net.af","edu.af","ag","com.ag","org.ag","net.ag","co.ag","nom.ag","ai","off.ai","com.ai","net.ai","org.ai","al","com.al","edu.al","gov.al","mil.al","net.al","org.al","am","co.am","com.am","commune.am","net.am","org.am","ao","ed.ao","gv.ao","og.ao","co.ao","pb.ao","it.ao","aq","ar","bet.ar","com.ar","coop.ar","edu.ar","gob.ar","gov.ar","int.ar","mil.ar","musica.ar","mutual.ar","net.ar","org.ar","senasa.ar","tur.ar","arpa","e164.arpa","in-addr.arpa","ip6.arpa","iris.arpa","uri.arpa","urn.arpa","as","gov.as","asia","at","ac.at","co.at","gv.at","or.at","sth.ac.at","au","com.au","net.au","org.au","edu.au","gov.au","asn.au","id.au","info.au","conf.au","oz.au","act.au","nsw.au","nt.au","qld.au","sa.au","tas.au","vic.au","wa.au","act.edu.au","catholic.edu.au","nsw.edu.au","nt.edu.au","qld.edu.au","sa.edu.au","tas.edu.au","vic.edu.au","wa.edu.au","qld.gov.au","sa.gov.au","tas.gov.au","vic.gov.au","wa.gov.au","schools.nsw.edu.au","aw","com.aw","ax","az","com.az","net.az","int.az","gov.az","org.az","edu.az","info.az","pp.az","mil.az","name.az","pro.az","biz.az","ba","com.ba","edu.ba","gov.ba","mil.ba","net.ba","org.ba","bb","biz.bb","co.bb","com.bb","edu.bb","gov.bb","info.bb","net.bb","org.bb","store.bb","tv.bb","*.bd","be","ac.be","bf","gov.bf","bg","a.bg","b.bg","c.bg","d.bg","e.bg","f.bg","g.bg","h.bg","i.bg","j.bg","k.bg","l.bg","m.bg","n.bg","o.bg","p.bg","q.bg","r.bg","s.bg","t.bg","u.bg","v.bg","w.bg","x.bg","y.bg","z.bg","0.bg","1.bg","2.bg","3.bg","4.bg","5.bg","6.bg","7.bg","8.bg","9.bg","bh","com.bh","edu.bh","net.bh","org.bh","gov.bh","bi","co.bi","com.bi","edu.bi","or.bi","org.bi","biz","bj","asso.bj","barreau.bj","gouv.bj","bm","com.bm","edu.bm","gov.bm","net.bm","org.bm","bn","com.bn","edu.bn","gov.bn","net.bn","org.bn","bo","com.bo","edu.bo","gob.bo","int.bo","org.bo","net.bo","mil.bo","tv.bo","web.bo","academia.bo","agro.bo","arte.bo","blog.bo","bolivia.bo","ciencia.bo","cooperativa.bo","democracia.bo","deporte.bo","ecologia.bo","economia.bo","empresa.bo","indigena.bo","industria.bo","info.bo","medicina.bo","movimiento.bo","musica.bo","natural.bo","nombre.bo","noticias.bo","patria.bo","politica.bo","profesional.bo","plurinacional.bo","pueblo.bo","revista.bo","salud.bo","tecnologia.bo","tksat.bo","transporte.bo","wiki.bo","br","9guacu.br","abc.br","adm.br","adv.br","agr.br","aju.br","am.br","anani.br","aparecida.br","app.br","arq.br","art.br","ato.br","b.br","barueri.br","belem.br","bhz.br","bib.br","bio.br","blog.br","bmd.br","boavista.br","bsb.br","campinagrande.br","campinas.br","caxias.br","cim.br","cng.br","cnt.br","com.br","contagem.br","coop.br","coz.br","cri.br","cuiaba.br","curitiba.br","def.br","des.br","det.br","dev.br","ecn.br","eco.br","edu.br","emp.br","enf.br","eng.br","esp.br","etc.br","eti.br","far.br","feira.br","flog.br","floripa.br","fm.br","fnd.br","fortal.br","fot.br","foz.br","fst.br","g12.br","geo.br","ggf.br","goiania.br","gov.br","ac.gov.br","al.gov.br","am.gov.br","ap.gov.br","ba.gov.br","ce.gov.br","df.gov.br","es.gov.br","go.gov.br","ma.gov.br","mg.gov.br","ms.gov.br","mt.gov.br","pa.gov.br","pb.gov.br","pe.gov.br","pi.gov.br","pr.gov.br","rj.gov.br","rn.gov.br","ro.gov.br","rr.gov.br","rs.gov.br","sc.gov.br","se.gov.br","sp.gov.br","to.gov.br","gru.br","imb.br","ind.br","inf.br","jab.br","jampa.br","jdf.br","joinville.br","jor.br","jus.br","leg.br","lel.br","log.br","londrina.br","macapa.br","maceio.br","manaus.br","maringa.br","mat.br","med.br","mil.br","morena.br","mp.br","mus.br","natal.br","net.br","niteroi.br","*.nom.br","not.br","ntr.br","odo.br","ong.br","org.br","osasco.br","palmas.br","poa.br","ppg.br","pro.br","psc.br","psi.br","pvh.br","qsl.br","radio.br","rec.br","recife.br","rep.br","ribeirao.br","rio.br","riobranco.br","riopreto.br","salvador.br","sampa.br","santamaria.br","santoandre.br","saobernardo.br","saogonca.br","seg.br","sjc.br","slg.br","slz.br","sorocaba.br","srv.br","taxi.br","tc.br","tec.br","teo.br","the.br","tmp.br","trd.br","tur.br","tv.br","udi.br","vet.br","vix.br","vlog.br","wiki.br","zlg.br","bs","com.bs","net.bs","org.bs","edu.bs","gov.bs","bt","com.bt","edu.bt","gov.bt","net.bt","org.bt","bv","bw","co.bw","org.bw","by","gov.by","mil.by","com.by","of.by","bz","com.bz","net.bz","org.bz","edu.bz","gov.bz","ca","ab.ca","bc.ca","mb.ca","nb.ca","nf.ca","nl.ca","ns.ca","nt.ca","nu.ca","on.ca","pe.ca","qc.ca","sk.ca","yk.ca","gc.ca","cat","cc","cd","gov.cd","cf","cg","ch","ci","org.ci","or.ci","com.ci","co.ci","edu.ci","ed.ci","ac.ci","net.ci","go.ci","asso.ci","aéroport.ci","int.ci","presse.ci","md.ci","gouv.ci","*.ck","!www.ck","cl","co.cl","gob.cl","gov.cl","mil.cl","cm","co.cm","com.cm","gov.cm","net.cm","cn","ac.cn","com.cn","edu.cn","gov.cn","net.cn","org.cn","mil.cn","公司.cn","网络.cn","網絡.cn","ah.cn","bj.cn","cq.cn","fj.cn","gd.cn","gs.cn","gz.cn","gx.cn","ha.cn","hb.cn","he.cn","hi.cn","hl.cn","hn.cn","jl.cn","js.cn","jx.cn","ln.cn","nm.cn","nx.cn","qh.cn","sc.cn","sd.cn","sh.cn","sn.cn","sx.cn","tj.cn","xj.cn","xz.cn","yn.cn","zj.cn","hk.cn","mo.cn","tw.cn","co","arts.co","com.co","edu.co","firm.co","gov.co","info.co","int.co","mil.co","net.co","nom.co","org.co","rec.co","web.co","com","coop","cr","ac.cr","co.cr","ed.cr","fi.cr","go.cr","or.cr","sa.cr","cu","com.cu","edu.cu","org.cu","net.cu","gov.cu","inf.cu","cv","com.cv","edu.cv","int.cv","nome.cv","org.cv","cw","com.cw","edu.cw","net.cw","org.cw","cx","gov.cx","cy","ac.cy","biz.cy","com.cy","ekloges.cy","gov.cy","ltd.cy","mil.cy","net.cy","org.cy","press.cy","pro.cy","tm.cy","cz","de","dj","dk","dm","com.dm","net.dm","org.dm","edu.dm","gov.dm","do","art.do","com.do","edu.do","gob.do","gov.do","mil.do","net.do","org.do","sld.do","web.do","dz","art.dz","asso.dz","com.dz","edu.dz","gov.dz","org.dz","net.dz","pol.dz","soc.dz","tm.dz","ec","com.ec","info.ec","net.ec","fin.ec","k12.ec","med.ec","pro.ec","org.ec","edu.ec","gov.ec","gob.ec","mil.ec","edu","ee","edu.ee","gov.ee","riik.ee","lib.ee","med.ee","com.ee","pri.ee","aip.ee","org.ee","fie.ee","eg","com.eg","edu.eg","eun.eg","gov.eg","mil.eg","name.eg","net.eg","org.eg","sci.eg","*.er","es","com.es","nom.es","org.es","gob.es","edu.es","et","com.et","gov.et","org.et","edu.et","biz.et","name.et","info.et","net.et","eu","fi","aland.fi","fj","ac.fj","biz.fj","com.fj","gov.fj","info.fj","mil.fj","name.fj","net.fj","org.fj","pro.fj","*.fk","com.fm","edu.fm","net.fm","org.fm","fm","fo","fr","asso.fr","com.fr","gouv.fr","nom.fr","prd.fr","tm.fr","aeroport.fr","avocat.fr","avoues.fr","cci.fr","chambagri.fr","chirurgiens-dentistes.fr","experts-comptables.fr","geometre-expert.fr","greta.fr","huissier-justice.fr","medecin.fr","notaires.fr","pharmacien.fr","port.fr","veterinaire.fr","ga","gb","edu.gd","gov.gd","gd","ge","com.ge","edu.ge","gov.ge","org.ge","mil.ge","net.ge","pvt.ge","gf","gg","co.gg","net.gg","org.gg","gh","com.gh","edu.gh","gov.gh","org.gh","mil.gh","gi","com.gi","ltd.gi","gov.gi","mod.gi","edu.gi","org.gi","gl","co.gl","com.gl","edu.gl","net.gl","org.gl","gm","gn","ac.gn","com.gn","edu.gn","gov.gn","org.gn","net.gn","gov","gp","com.gp","net.gp","mobi.gp","edu.gp","org.gp","asso.gp","gq","gr","com.gr","edu.gr","net.gr","org.gr","gov.gr","gs","gt","com.gt","edu.gt","gob.gt","ind.gt","mil.gt","net.gt","org.gt","gu","com.gu","edu.gu","gov.gu","guam.gu","info.gu","net.gu","org.gu","web.gu","gw","gy","co.gy","com.gy","edu.gy","gov.gy","net.gy","org.gy","hk","com.hk","edu.hk","gov.hk","idv.hk","net.hk","org.hk","公司.hk","教育.hk","敎育.hk","政府.hk","個人.hk","个��.hk","箇人.hk","網络.hk","网络.hk","组織.hk","網絡.hk","网絡.hk","组织.hk","組織.hk","組织.hk","hm","hn","com.hn","edu.hn","org.hn","net.hn","mil.hn","gob.hn","hr","iz.hr","from.hr","name.hr","com.hr","ht","com.ht","shop.ht","firm.ht","info.ht","adult.ht","net.ht","pro.ht","org.ht","med.ht","art.ht","coop.ht","pol.ht","asso.ht","edu.ht","rel.ht","gouv.ht","perso.ht","hu","co.hu","info.hu","org.hu","priv.hu","sport.hu","tm.hu","2000.hu","agrar.hu","bolt.hu","casino.hu","city.hu","erotica.hu","erotika.hu","film.hu","forum.hu","games.hu","hotel.hu","ingatlan.hu","jogasz.hu","konyvelo.hu","lakas.hu","media.hu","news.hu","reklam.hu","sex.hu","shop.hu","suli.hu","szex.hu","tozsde.hu","utazas.hu","video.hu","id","ac.id","biz.id","co.id","desa.id","go.id","mil.id","my.id","net.id","or.id","ponpes.id","sch.id","web.id","ie","gov.ie","il","ac.il","co.il","gov.il","idf.il","k12.il","muni.il","net.il","org.il","im","ac.im","co.im","com.im","ltd.co.im","net.im","org.im","plc.co.im","tt.im","tv.im","in","co.in","firm.in","net.in","org.in","gen.in","ind.in","nic.in","ac.in","edu.in","res.in","gov.in","mil.in","info","int","eu.int","io","com.io","iq","gov.iq","edu.iq","mil.iq","com.iq","org.iq","net.iq","ir","ac.ir","co.ir","gov.ir","id.ir","net.ir","org.ir","sch.ir","ایران.ir","ايران.ir","is","net.is","com.is","edu.is","gov.is","org.is","int.is","it","gov.it","edu.it","abr.it","abruzzo.it","aosta-valley.it","aostavalley.it","bas.it","basilicata.it","cal.it","calabria.it","cam.it","campania.it","emilia-romagna.it","emiliaromagna.it","emr.it","friuli-v-giulia.it","friuli-ve-giulia.it","friuli-vegiulia.it","friuli-venezia-giulia.it","friuli-veneziagiulia.it","friuli-vgiulia.it","friuliv-giulia.it","friulive-giulia.it","friulivegiulia.it","friulivenezia-giulia.it","friuliveneziagiulia.it","friulivgiulia.it","fvg.it","laz.it","lazio.it","lig.it","liguria.it","lom.it","lombardia.it","lombardy.it","lucania.it","mar.it","marche.it","mol.it","molise.it","piedmont.it","piemonte.it","pmn.it","pug.it","puglia.it","sar.it","sardegna.it","sardinia.it","sic.it","sicilia.it","sicily.it","taa.it","tos.it","toscana.it","trentin-sud-tirol.it","trentin-süd-tirol.it","trentin-sudtirol.it","trentin-südtirol.it","trentin-sued-tirol.it","trentin-suedtirol.it","trentino-a-adige.it","trentino-aadige.it","trentino-alto-adige.it","trentino-altoadige.it","trentino-s-tirol.it","trentino-stirol.it","trentino-sud-tirol.it","trentino-süd-tirol.it","trentino-sudtirol.it","trentino-südtirol.it","trentino-sued-tirol.it","trentino-suedtirol.it","trentino.it","trentinoa-adige.it","trentinoaadige.it","trentinoalto-adige.it","trentinoaltoadige.it","trentinos-tirol.it","trentinostirol.it","trentinosud-tirol.it","trentinosüd-tirol.it","trentinosudtirol.it","trentinosüdtirol.it","trentinosued-tirol.it","trentinosuedtirol.it","trentinsud-tirol.it","trentinsüd-tirol.it","trentinsudtirol.it","trentinsüdtirol.it","trentinsued-tirol.it","trentinsuedtirol.it","tuscany.it","umb.it","umbria.it","val-d-aosta.it","val-daosta.it","vald-aosta.it","valdaosta.it","valle-aosta.it","valle-d-aosta.it","valle-daosta.it","valleaosta.it","valled-aosta.it","valledaosta.it","vallee-aoste.it","vallée-aoste.it","vallee-d-aoste.it","vallée-d-aoste.it","valleeaoste.it","valléeaoste.it","valleedaoste.it","valléedaoste.it","vao.it","vda.it","ven.it","veneto.it","ag.it","agrigento.it","al.it","alessandria.it","alto-adige.it","altoadige.it","an.it","ancona.it","andria-barletta-trani.it","andria-trani-barletta.it","andriabarlettatrani.it","andriatranibarletta.it","ao.it","aosta.it","aoste.it","ap.it","aq.it","aquila.it","ar.it","arezzo.it","ascoli-piceno.it","ascolipiceno.it","asti.it","at.it","av.it","avellino.it","ba.it","balsan-sudtirol.it","balsan-südtirol.it","balsan-suedtirol.it","balsan.it","bari.it","barletta-trani-andria.it","barlettatraniandria.it","belluno.it","benevento.it","bergamo.it","bg.it","bi.it","biella.it","bl.it","bn.it","bo.it","bologna.it","bolzano-altoadige.it","bolzano.it","bozen-sudtirol.it","bozen-südtirol.it","bozen-suedtirol.it","bozen.it","br.it","brescia.it","brindisi.it","bs.it","bt.it","bulsan-sudtirol.it","bulsan-südtirol.it","bulsan-suedtirol.it","bulsan.it","bz.it","ca.it","cagliari.it","caltanissetta.it","campidano-medio.it","campidanomedio.it","campobasso.it","carbonia-iglesias.it","carboniaiglesias.it","carrara-massa.it","carraramassa.it","caserta.it","catania.it","catanzaro.it","cb.it","ce.it","cesena-forli.it","cesena-forlì.it","cesenaforli.it","cesenaforlì.it","ch.it","chieti.it","ci.it","cl.it","cn.it","co.it","como.it","cosenza.it","cr.it","cremona.it","crotone.it","cs.it","ct.it","cuneo.it","cz.it","dell-ogliastra.it","dellogliastra.it","en.it","enna.it","fc.it","fe.it","fermo.it","ferrara.it","fg.it","fi.it","firenze.it","florence.it","fm.it","foggia.it","forli-cesena.it","forlì-cesena.it","forlicesena.it","forlìcesena.it","fr.it","frosinone.it","ge.it","genoa.it","genova.it","go.it","gorizia.it","gr.it","grosseto.it","iglesias-carbonia.it","iglesiascarbonia.it","im.it","imperia.it","is.it","isernia.it","kr.it","la-spezia.it","laquila.it","laspezia.it","latina.it","lc.it","le.it","lecce.it","lecco.it","li.it","livorno.it","lo.it","lodi.it","lt.it","lu.it","lucca.it","macerata.it","mantova.it","massa-carrara.it","massacarrara.it","matera.it","mb.it","mc.it","me.it","medio-campidano.it","mediocampidano.it","messina.it","mi.it","milan.it","milano.it","mn.it","mo.it","modena.it","monza-brianza.it","monza-e-della-brianza.it","monza.it","monzabrianza.it","monzaebrianza.it","monzaedellabrianza.it","ms.it","mt.it","na.it","naples.it","napoli.it","no.it","novara.it","nu.it","nuoro.it","og.it","ogliastra.it","olbia-tempio.it","olbiatempio.it","or.it","oristano.it","ot.it","pa.it","padova.it","padua.it","palermo.it","parma.it","pavia.it","pc.it","pd.it","pe.it","perugia.it","pesaro-urbino.it","pesarourbino.it","pescara.it","pg.it","pi.it","piacenza.it","pisa.it","pistoia.it","pn.it","po.it","pordenone.it","potenza.it","pr.it","prato.it","pt.it","pu.it","pv.it","pz.it","ra.it","ragusa.it","ravenna.it","rc.it","re.it","reggio-calabria.it","reggio-emilia.it","reggiocalabria.it","reggioemilia.it","rg.it","ri.it","rieti.it","rimini.it","rm.it","rn.it","ro.it","roma.it","rome.it","rovigo.it","sa.it","salerno.it","sassari.it","savona.it","si.it","siena.it","siracusa.it","so.it","sondrio.it","sp.it","sr.it","ss.it","suedtirol.it","südtirol.it","sv.it","ta.it","taranto.it","te.it","tempio-olbia.it","tempioolbia.it","teramo.it","terni.it","tn.it","to.it","torino.it","tp.it","tr.it","trani-andria-barletta.it","trani-barletta-andria.it","traniandriabarletta.it","tranibarlettaandria.it","trapani.it","trento.it","treviso.it","trieste.it","ts.it","turin.it","tv.it","ud.it","udine.it","urbino-pesaro.it","urbinopesaro.it","va.it","varese.it","vb.it","vc.it","ve.it","venezia.it","venice.it","verbania.it","vercelli.it","verona.it","vi.it","vibo-valentia.it","vibovalentia.it","vicenza.it","viterbo.it","vr.it","vs.it","vt.it","vv.it","je","co.je","net.je","org.je","*.jm","jo","com.jo","org.jo","net.jo","edu.jo","sch.jo","gov.jo","mil.jo","name.jo","jobs","jp","ac.jp","ad.jp","co.jp","ed.jp","go.jp","gr.jp","lg.jp","ne.jp","or.jp","aichi.jp","akita.jp","aomori.jp","chiba.jp","ehime.jp","fukui.jp","fukuoka.jp","fukushima.jp","gifu.jp","gunma.jp","hiroshima.jp","hokkaido.jp","hyogo.jp","ibaraki.jp","ishikawa.jp","iwate.jp","kagawa.jp","kagoshima.jp","kanagawa.jp","kochi.jp","kumamoto.jp","kyoto.jp","mie.jp","miyagi.jp","miyazaki.jp","nagano.jp","nagasaki.jp","nara.jp","niigata.jp","oita.jp","okayama.jp","okinawa.jp","osaka.jp","saga.jp","saitama.jp","shiga.jp","shimane.jp","shizuoka.jp","tochigi.jp","tokushima.jp","tokyo.jp","tottori.jp","toyama.jp","wakayama.jp","yamagata.jp","yamaguchi.jp","yamanashi.jp","栃木.jp","愛知.jp","愛媛.jp","兵庫.jp","熊本.jp","茨城.jp","北海道.jp","千葉.jp","和歌山.jp","長崎.jp","長野.jp","新潟.jp","青森.jp","静岡.jp","東京.jp","石川.jp","埼玉.jp","三重.jp","京都.jp","佐賀.jp","大分.jp","大阪.jp","奈良.jp","宮城.jp","宮崎.jp","富山.jp","山口.jp","山形.jp","山梨.jp","岩手.jp","岐阜.jp","岡山.jp","島根.jp","広島.jp","徳島.jp","沖縄.jp","滋賀.jp","神奈川.jp","福井.jp","福岡.jp","福島.jp","秋田.jp","群馬.jp","香川.jp","高知.jp","鳥取.jp","鹿児島.jp","*.kawasaki.jp","*.kitakyushu.jp","*.kobe.jp","*.nagoya.jp","*.sapporo.jp","*.sendai.jp","*.yokohama.jp","!city.kawasaki.jp","!city.kitakyushu.jp","!city.kobe.jp","!city.nagoya.jp","!city.sapporo.jp","!city.sendai.jp","!city.yokohama.jp","aisai.aichi.jp","ama.aichi.jp","anjo.aichi.jp","asuke.aichi.jp","chiryu.aichi.jp","chita.aichi.jp","fuso.aichi.jp","gamagori.aichi.jp","handa.aichi.jp","hazu.aichi.jp","hekinan.aichi.jp","higashiura.aichi.jp","ichinomiya.aichi.jp","inazawa.aichi.jp","inuyama.aichi.jp","isshiki.aichi.jp","iwakura.aichi.jp","kanie.aichi.jp","kariya.aichi.jp","kasugai.aichi.jp","kira.aichi.jp","kiyosu.aichi.jp","komaki.aichi.jp","konan.aichi.jp","kota.aichi.jp","mihama.aichi.jp","miyoshi.aichi.jp","nishio.aichi.jp","nisshin.aichi.jp","obu.aichi.jp","oguchi.aichi.jp","oharu.aichi.jp","okazaki.aichi.jp","owariasahi.aichi.jp","seto.aichi.jp","shikatsu.aichi.jp","shinshiro.aichi.jp","shitara.aichi.jp","tahara.aichi.jp","takahama.aichi.jp","tobishima.aichi.jp","toei.aichi.jp","togo.aichi.jp","tokai.aichi.jp","tokoname.aichi.jp","toyoake.aichi.jp","toyohashi.aichi.jp","toyokawa.aichi.jp","toyone.aichi.jp","toyota.aichi.jp","tsushima.aichi.jp","yatomi.aichi.jp","akita.akita.jp","daisen.akita.jp","fujisato.akita.jp","gojome.akita.jp","hachirogata.akita.jp","happou.akita.jp","higashinaruse.akita.jp","honjo.akita.jp","honjyo.akita.jp","ikawa.akita.jp","kamikoani.akita.jp","kamioka.akita.jp","katagami.akita.jp","kazuno.akita.jp","kitaakita.akita.jp","kosaka.akita.jp","kyowa.akita.jp","misato.akita.jp","mitane.akita.jp","moriyoshi.akita.jp","nikaho.akita.jp","noshiro.akita.jp","odate.akita.jp","oga.akita.jp","ogata.akita.jp","semboku.akita.jp","yokote.akita.jp","yurihonjo.akita.jp","aomori.aomori.jp","gonohe.aomori.jp","hachinohe.aomori.jp","hashikami.aomori.jp","hiranai.aomori.jp","hirosaki.aomori.jp","itayanagi.aomori.jp","kuroishi.aomori.jp","misawa.aomori.jp","mutsu.aomori.jp","nakadomari.aomori.jp","noheji.aomori.jp","oirase.aomori.jp","owani.aomori.jp","rokunohe.aomori.jp","sannohe.aomori.jp","shichinohe.aomori.jp","shingo.aomori.jp","takko.aomori.jp","towada.aomori.jp","tsugaru.aomori.jp","tsuruta.aomori.jp","abiko.chiba.jp","asahi.chiba.jp","chonan.chiba.jp","chosei.chiba.jp","choshi.chiba.jp","chuo.chiba.jp","funabashi.chiba.jp","futtsu.chiba.jp","hanamigawa.chiba.jp","ichihara.chiba.jp","ichikawa.chiba.jp","ichinomiya.chiba.jp","inzai.chiba.jp","isumi.chiba.jp","kamagaya.chiba.jp","kamogawa.chiba.jp","kashiwa.chiba.jp","katori.chiba.jp","katsuura.chiba.jp","kimitsu.chiba.jp","kisarazu.chiba.jp","kozaki.chiba.jp","kujukuri.chiba.jp","kyonan.chiba.jp","matsudo.chiba.jp","midori.chiba.jp","mihama.chiba.jp","minamiboso.chiba.jp","mobara.chiba.jp","mutsuzawa.chiba.jp","nagara.chiba.jp","nagareyama.chiba.jp","narashino.chiba.jp","narita.chiba.jp","noda.chiba.jp","oamishirasato.chiba.jp","omigawa.chiba.jp","onjuku.chiba.jp","otaki.chiba.jp","sakae.chiba.jp","sakura.chiba.jp","shimofusa.chiba.jp","shirako.chiba.jp","shiroi.chiba.jp","shisui.chiba.jp","sodegaura.chiba.jp","sosa.chiba.jp","tako.chiba.jp","tateyama.chiba.jp","togane.chiba.jp","tohnosho.chiba.jp","tomisato.chiba.jp","urayasu.chiba.jp","yachimata.chiba.jp","yachiyo.chiba.jp","yokaichiba.chiba.jp","yokoshibahikari.chiba.jp","yotsukaido.chiba.jp","ainan.ehime.jp","honai.ehime.jp","ikata.ehime.jp","imabari.ehime.jp","iyo.ehime.jp","kamijima.ehime.jp","kihoku.ehime.jp","kumakogen.ehime.jp","masaki.ehime.jp","matsuno.ehime.jp","matsuyama.ehime.jp","namikata.ehime.jp","niihama.ehime.jp","ozu.ehime.jp","saijo.ehime.jp","seiyo.ehime.jp","shikokuchuo.ehime.jp","tobe.ehime.jp","toon.ehime.jp","uchiko.ehime.jp","uwajima.ehime.jp","yawatahama.ehime.jp","echizen.fukui.jp","eiheiji.fukui.jp","fukui.fukui.jp","ikeda.fukui.jp","katsuyama.fukui.jp","mihama.fukui.jp","minamiechizen.fukui.jp","obama.fukui.jp","ohi.fukui.jp","ono.fukui.jp","sabae.fukui.jp","sakai.fukui.jp","takahama.fukui.jp","tsuruga.fukui.jp","wakasa.fukui.jp","ashiya.fukuoka.jp","buzen.fukuoka.jp","chikugo.fukuoka.jp","chikuho.fukuoka.jp","chikujo.fukuoka.jp","chikushino.fukuoka.jp","chikuzen.fukuoka.jp","chuo.fukuoka.jp","dazaifu.fukuoka.jp","fukuchi.fukuoka.jp","hakata.fukuoka.jp","higashi.fukuoka.jp","hirokawa.fukuoka.jp","hisayama.fukuoka.jp","iizuka.fukuoka.jp","inatsuki.fukuoka.jp","kaho.fukuoka.jp","kasuga.fukuoka.jp","kasuya.fukuoka.jp","kawara.fukuoka.jp","keisen.fukuoka.jp","koga.fukuoka.jp","kurate.fukuoka.jp","kurogi.fukuoka.jp","kurume.fukuoka.jp","minami.fukuoka.jp","miyako.fukuoka.jp","miyama.fukuoka.jp","miyawaka.fukuoka.jp","mizumaki.fukuoka.jp","munakata.fukuoka.jp","nakagawa.fukuoka.jp","nakama.fukuoka.jp","nishi.fukuoka.jp","nogata.fukuoka.jp","ogori.fukuoka.jp","okagaki.fukuoka.jp","okawa.fukuoka.jp","oki.fukuoka.jp","omuta.fukuoka.jp","onga.fukuoka.jp","onojo.fukuoka.jp","oto.fukuoka.jp","saigawa.fukuoka.jp","sasaguri.fukuoka.jp","shingu.fukuoka.jp","shinyoshitomi.fukuoka.jp","shonai.fukuoka.jp","soeda.fukuoka.jp","sue.fukuoka.jp","tachiarai.fukuoka.jp","tagawa.fukuoka.jp","takata.fukuoka.jp","toho.fukuoka.jp","toyotsu.fukuoka.jp","tsuiki.fukuoka.jp","ukiha.fukuoka.jp","umi.fukuoka.jp","usui.fukuoka.jp","yamada.fukuoka.jp","yame.fukuoka.jp","yanagawa.fukuoka.jp","yukuhashi.fukuoka.jp","aizubange.fukushima.jp","aizumisato.fukushima.jp","aizuwakamatsu.fukushima.jp","asakawa.fukushima.jp","bandai.fukushima.jp","date.fukushima.jp","fukushima.fukushima.jp","furudono.fukushima.jp","futaba.fukushima.jp","hanawa.fukushima.jp","higashi.fukushima.jp","hirata.fukushima.jp","hirono.fukushima.jp","iitate.fukushima.jp","inawashiro.fukushima.jp","ishikawa.fukushima.jp","iwaki.fukushima.jp","izumizaki.fukushima.jp","kagamiishi.fukushima.jp","kaneyama.fukushima.jp","kawamata.fukushima.jp","kitakata.fukushima.jp","kitashiobara.fukushima.jp","koori.fukushima.jp","koriyama.fukushima.jp","kunimi.fukushima.jp","miharu.fukushima.jp","mishima.fukushima.jp","namie.fukushima.jp","nango.fukushima.jp","nishiaizu.fukushima.jp","nishigo.fukushima.jp","okuma.fukushima.jp","omotego.fukushima.jp","ono.fukushima.jp","otama.fukushima.jp","samegawa.fukushima.jp","shimogo.fukushima.jp","shirakawa.fukushima.jp","showa.fukushima.jp","soma.fukushima.jp","sukagawa.fukushima.jp","taishin.fukushima.jp","tamakawa.fukushima.jp","tanagura.fukushima.jp","tenei.fukushima.jp","yabuki.fukushima.jp","yamato.fukushima.jp","yamatsuri.fukushima.jp","yanaizu.fukushima.jp","yugawa.fukushima.jp","anpachi.gifu.jp","ena.gifu.jp","gifu.gifu.jp","ginan.gifu.jp","godo.gifu.jp","gujo.gifu.jp","hashima.gifu.jp","hichiso.gifu.jp","hida.gifu.jp","higashishirakawa.gifu.jp","ibigawa.gifu.jp","ikeda.gifu.jp","kakamigahara.gifu.jp","kani.gifu.jp","kasahara.gifu.jp","kasamatsu.gifu.jp","kawaue.gifu.jp","kitagata.gifu.jp","mino.gifu.jp","minokamo.gifu.jp","mitake.gifu.jp","mizunami.gifu.jp","motosu.gifu.jp","nakatsugawa.gifu.jp","ogaki.gifu.jp","sakahogi.gifu.jp","seki.gifu.jp","sekigahara.gifu.jp","shirakawa.gifu.jp","tajimi.gifu.jp","takayama.gifu.jp","tarui.gifu.jp","toki.gifu.jp","tomika.gifu.jp","wanouchi.gifu.jp","yamagata.gifu.jp","yaotsu.gifu.jp","yoro.gifu.jp","annaka.gunma.jp","chiyoda.gunma.jp","fujioka.gunma.jp","higashiagatsuma.gunma.jp","isesaki.gunma.jp","itakura.gunma.jp","kanna.gunma.jp","kanra.gunma.jp","katashina.gunma.jp","kawaba.gunma.jp","kiryu.gunma.jp","kusatsu.gunma.jp","maebashi.gunma.jp","meiwa.gunma.jp","midori.gunma.jp","minakami.gunma.jp","naganohara.gunma.jp","nakanojo.gunma.jp","nanmoku.gunma.jp","numata.gunma.jp","oizumi.gunma.jp","ora.gunma.jp","ota.gunma.jp","shibukawa.gunma.jp","shimonita.gunma.jp","shinto.gunma.jp","showa.gunma.jp","takasaki.gunma.jp","takayama.gunma.jp","tamamura.gunma.jp","tatebayashi.gunma.jp","tomioka.gunma.jp","tsukiyono.gunma.jp","tsumagoi.gunma.jp","ueno.gunma.jp","yoshioka.gunma.jp","asaminami.hiroshima.jp","daiwa.hiroshima.jp","etajima.hiroshima.jp","fuchu.hiroshima.jp","fukuyama.hiroshima.jp","hatsukaichi.hiroshima.jp","higashihiroshima.hiroshima.jp","hongo.hiroshima.jp","jinsekikogen.hiroshima.jp","kaita.hiroshima.jp","kui.hiroshima.jp","kumano.hiroshima.jp","kure.hiroshima.jp","mihara.hiroshima.jp","miyoshi.hiroshima.jp","naka.hiroshima.jp","onomichi.hiroshima.jp","osakikamijima.hiroshima.jp","otake.hiroshima.jp","saka.hiroshima.jp","sera.hiroshima.jp","seranishi.hiroshima.jp","shinichi.hiroshima.jp","shobara.hiroshima.jp","takehara.hiroshima.jp","abashiri.hokkaido.jp","abira.hokkaido.jp","aibetsu.hokkaido.jp","akabira.hokkaido.jp","akkeshi.hokkaido.jp","asahikawa.hokkaido.jp","ashibetsu.hokkaido.jp","ashoro.hokkaido.jp","assabu.hokkaido.jp","atsuma.hokkaido.jp","bibai.hokkaido.jp","biei.hokkaido.jp","bifuka.hokkaido.jp","bihoro.hokkaido.jp","biratori.hokkaido.jp","chippubetsu.hokkaido.jp","chitose.hokkaido.jp","date.hokkaido.jp","ebetsu.hokkaido.jp","embetsu.hokkaido.jp","eniwa.hokkaido.jp","erimo.hokkaido.jp","esan.hokkaido.jp","esashi.hokkaido.jp","fukagawa.hokkaido.jp","fukushima.hokkaido.jp","furano.hokkaido.jp","furubira.hokkaido.jp","haboro.hokkaido.jp","hakodate.hokkaido.jp","hamatonbetsu.hokkaido.jp","hidaka.hokkaido.jp","higashikagura.hokkaido.jp","higashikawa.hokkaido.jp","hiroo.hokkaido.jp","hokuryu.hokkaido.jp","hokuto.hokkaido.jp","honbetsu.hokkaido.jp","horokanai.hokkaido.jp","horonobe.hokkaido.jp","ikeda.hokkaido.jp","imakane.hokkaido.jp","ishikari.hokkaido.jp","iwamizawa.hokkaido.jp","iwanai.hokkaido.jp","kamifurano.hokkaido.jp","kamikawa.hokkaido.jp","kamishihoro.hokkaido.jp","kamisunagawa.hokkaido.jp","kamoenai.hokkaido.jp","kayabe.hokkaido.jp","kembuchi.hokkaido.jp","kikonai.hokkaido.jp","kimobetsu.hokkaido.jp","kitahiroshima.hokkaido.jp","kitami.hokkaido.jp","kiyosato.hokkaido.jp","koshimizu.hokkaido.jp","kunneppu.hokkaido.jp","kuriyama.hokkaido.jp","kuromatsunai.hokkaido.jp","kushiro.hokkaido.jp","kutchan.hokkaido.jp","kyowa.hokkaido.jp","mashike.hokkaido.jp","matsumae.hokkaido.jp","mikasa.hokkaido.jp","minamifurano.hokkaido.jp","mombetsu.hokkaido.jp","moseushi.hokkaido.jp","mukawa.hokkaido.jp","muroran.hokkaido.jp","naie.hokkaido.jp","nakagawa.hokkaido.jp","nakasatsunai.hokkaido.jp","nakatombetsu.hokkaido.jp","nanae.hokkaido.jp","nanporo.hokkaido.jp","nayoro.hokkaido.jp","nemuro.hokkaido.jp","niikappu.hokkaido.jp","niki.hokkaido.jp","nishiokoppe.hokkaido.jp","noboribetsu.hokkaido.jp","numata.hokkaido.jp","obihiro.hokkaido.jp","obira.hokkaido.jp","oketo.hokkaido.jp","okoppe.hokkaido.jp","otaru.hokkaido.jp","otobe.hokkaido.jp","otofuke.hokkaido.jp","otoineppu.hokkaido.jp","oumu.hokkaido.jp","ozora.hokkaido.jp","pippu.hokkaido.jp","rankoshi.hokkaido.jp","rebun.hokkaido.jp","rikubetsu.hokkaido.jp","rishiri.hokkaido.jp","rishirifuji.hokkaido.jp","saroma.hokkaido.jp","sarufutsu.hokkaido.jp","shakotan.hokkaido.jp","shari.hokkaido.jp","shibecha.hokkaido.jp","shibetsu.hokkaido.jp","shikabe.hokkaido.jp","shikaoi.hokkaido.jp","shimamaki.hokkaido.jp","shimizu.hokkaido.jp","shimokawa.hokkaido.jp","shinshinotsu.hokkaido.jp","shintoku.hokkaido.jp","shiranuka.hokkaido.jp","shiraoi.hokkaido.jp","shiriuchi.hokkaido.jp","sobetsu.hokkaido.jp","sunagawa.hokkaido.jp","taiki.hokkaido.jp","takasu.hokkaido.jp","takikawa.hokkaido.jp","takinoue.hokkaido.jp","teshikaga.hokkaido.jp","tobetsu.hokkaido.jp","tohma.hokkaido.jp","tomakomai.hokkaido.jp","tomari.hokkaido.jp","toya.hokkaido.jp","toyako.hokkaido.jp","toyotomi.hokkaido.jp","toyoura.hokkaido.jp","tsubetsu.hokkaido.jp","tsukigata.hokkaido.jp","urakawa.hokkaido.jp","urausu.hokkaido.jp","uryu.hokkaido.jp","utashinai.hokkaido.jp","wakkanai.hokkaido.jp","wassamu.hokkaido.jp","yakumo.hokkaido.jp","yoichi.hokkaido.jp","aioi.hyogo.jp","akashi.hyogo.jp","ako.hyogo.jp","amagasaki.hyogo.jp","aogaki.hyogo.jp","asago.hyogo.jp","ashiya.hyogo.jp","awaji.hyogo.jp","fukusaki.hyogo.jp","goshiki.hyogo.jp","harima.hyogo.jp","himeji.hyogo.jp","ichikawa.hyogo.jp","inagawa.hyogo.jp","itami.hyogo.jp","kakogawa.hyogo.jp","kamigori.hyogo.jp","kamikawa.hyogo.jp","kasai.hyogo.jp","kasuga.hyogo.jp","kawanishi.hyogo.jp","miki.hyogo.jp","minamiawaji.hyogo.jp","nishinomiya.hyogo.jp","nishiwaki.hyogo.jp","ono.hyogo.jp","sanda.hyogo.jp","sannan.hyogo.jp","sasayama.hyogo.jp","sayo.hyogo.jp","shingu.hyogo.jp","shinonsen.hyogo.jp","shiso.hyogo.jp","sumoto.hyogo.jp","taishi.hyogo.jp","taka.hyogo.jp","takarazuka.hyogo.jp","takasago.hyogo.jp","takino.hyogo.jp","tamba.hyogo.jp","tatsuno.hyogo.jp","toyooka.hyogo.jp","yabu.hyogo.jp","yashiro.hyogo.jp","yoka.hyogo.jp","yokawa.hyogo.jp","ami.ibaraki.jp","asahi.ibaraki.jp","bando.ibaraki.jp","chikusei.ibaraki.jp","daigo.ibaraki.jp","fujishiro.ibaraki.jp","hitachi.ibaraki.jp","hitachinaka.ibaraki.jp","hitachiomiya.ibaraki.jp","hitachiota.ibaraki.jp","ibaraki.ibaraki.jp","ina.ibaraki.jp","inashiki.ibaraki.jp","itako.ibaraki.jp","iwama.ibaraki.jp","joso.ibaraki.jp","kamisu.ibaraki.jp","kasama.ibaraki.jp","kashima.ibaraki.jp","kasumigaura.ibaraki.jp","koga.ibaraki.jp","miho.ibaraki.jp","mito.ibaraki.jp","moriya.ibaraki.jp","naka.ibaraki.jp","namegata.ibaraki.jp","oarai.ibaraki.jp","ogawa.ibaraki.jp","omitama.ibaraki.jp","ryugasaki.ibaraki.jp","sakai.ibaraki.jp","sakuragawa.ibaraki.jp","shimodate.ibaraki.jp","shimotsuma.ibaraki.jp","shirosato.ibaraki.jp","sowa.ibaraki.jp","suifu.ibaraki.jp","takahagi.ibaraki.jp","tamatsukuri.ibaraki.jp","tokai.ibaraki.jp","tomobe.ibaraki.jp","tone.ibaraki.jp","toride.ibaraki.jp","tsuchiura.ibaraki.jp","tsukuba.ibaraki.jp","uchihara.ibaraki.jp","ushiku.ibaraki.jp","yachiyo.ibaraki.jp","yamagata.ibaraki.jp","yawara.ibaraki.jp","yuki.ibaraki.jp","anamizu.ishikawa.jp","hakui.ishikawa.jp","hakusan.ishikawa.jp","kaga.ishikawa.jp","kahoku.ishikawa.jp","kanazawa.ishikawa.jp","kawakita.ishikawa.jp","komatsu.ishikawa.jp","nakanoto.ishikawa.jp","nanao.ishikawa.jp","nomi.ishikawa.jp","nonoichi.ishikawa.jp","noto.ishikawa.jp","shika.ishikawa.jp","suzu.ishikawa.jp","tsubata.ishikawa.jp","tsurugi.ishikawa.jp","uchinada.ishikawa.jp","wajima.ishikawa.jp","fudai.iwate.jp","fujisawa.iwate.jp","hanamaki.iwate.jp","hiraizumi.iwate.jp","hirono.iwate.jp","ichinohe.iwate.jp","ichinoseki.iwate.jp","iwaizumi.iwate.jp","iwate.iwate.jp","joboji.iwate.jp","kamaishi.iwate.jp","kanegasaki.iwate.jp","karumai.iwate.jp","kawai.iwate.jp","kitakami.iwate.jp","kuji.iwate.jp","kunohe.iwate.jp","kuzumaki.iwate.jp","miyako.iwate.jp","mizusawa.iwate.jp","morioka.iwate.jp","ninohe.iwate.jp","noda.iwate.jp","ofunato.iwate.jp","oshu.iwate.jp","otsuchi.iwate.jp","rikuzentakata.iwate.jp","shiwa.iwate.jp","shizukuishi.iwate.jp","sumita.iwate.jp","tanohata.iwate.jp","tono.iwate.jp","yahaba.iwate.jp","yamada.iwate.jp","ayagawa.kagawa.jp","higashikagawa.kagawa.jp","kanonji.kagawa.jp","kotohira.kagawa.jp","manno.kagawa.jp","marugame.kagawa.jp","mitoyo.kagawa.jp","naoshima.kagawa.jp","sanuki.kagawa.jp","tadotsu.kagawa.jp","takamatsu.kagawa.jp","tonosho.kagawa.jp","uchinomi.kagawa.jp","utazu.kagawa.jp","zentsuji.kagawa.jp","akune.kagoshima.jp","amami.kagoshima.jp","hioki.kagoshima.jp","isa.kagoshima.jp","isen.kagoshima.jp","izumi.kagoshima.jp","kagoshima.kagoshima.jp","kanoya.kagoshima.jp","kawanabe.kagoshima.jp","kinko.kagoshima.jp","kouyama.kagoshima.jp","makurazaki.kagoshima.jp","matsumoto.kagoshima.jp","minamitane.kagoshima.jp","nakatane.kagoshima.jp","nishinoomote.kagoshima.jp","satsumasendai.kagoshima.jp","soo.kagoshima.jp","tarumizu.kagoshima.jp","yusui.kagoshima.jp","aikawa.kanagawa.jp","atsugi.kanagawa.jp","ayase.kanagawa.jp","chigasaki.kanagawa.jp","ebina.kanagawa.jp","fujisawa.kanagawa.jp","hadano.kanagawa.jp","hakone.kanagawa.jp","hiratsuka.kanagawa.jp","isehara.kanagawa.jp","kaisei.kanagawa.jp","kamakura.kanagawa.jp","kiyokawa.kanagawa.jp","matsuda.kanagawa.jp","minamiashigara.kanagawa.jp","miura.kanagawa.jp","nakai.kanagawa.jp","ninomiya.kanagawa.jp","odawara.kanagawa.jp","oi.kanagawa.jp","oiso.kanagawa.jp","sagamihara.kanagawa.jp","samukawa.kanagawa.jp","tsukui.kanagawa.jp","yamakita.kanagawa.jp","yamato.kanagawa.jp","yokosuka.kanagawa.jp","yugawara.kanagawa.jp","zama.kanagawa.jp","zushi.kanagawa.jp","aki.kochi.jp","geisei.kochi.jp","hidaka.kochi.jp","higashitsuno.kochi.jp","ino.kochi.jp","kagami.kochi.jp","kami.kochi.jp","kitagawa.kochi.jp","kochi.kochi.jp","mihara.kochi.jp","motoyama.kochi.jp","muroto.kochi.jp","nahari.kochi.jp","nakamura.kochi.jp","nankoku.kochi.jp","nishitosa.kochi.jp","niyodogawa.kochi.jp","ochi.kochi.jp","okawa.kochi.jp","otoyo.kochi.jp","otsuki.kochi.jp","sakawa.kochi.jp","sukumo.kochi.jp","susaki.kochi.jp","tosa.kochi.jp","tosashimizu.kochi.jp","toyo.kochi.jp","tsuno.kochi.jp","umaji.kochi.jp","yasuda.kochi.jp","yusuhara.kochi.jp","amakusa.kumamoto.jp","arao.kumamoto.jp","aso.kumamoto.jp","choyo.kumamoto.jp","gyokuto.kumamoto.jp","kamiamakusa.kumamoto.jp","kikuchi.kumamoto.jp","kumamoto.kumamoto.jp","mashiki.kumamoto.jp","mifune.kumamoto.jp","minamata.kumamoto.jp","minamioguni.kumamoto.jp","nagasu.kumamoto.jp","nishihara.kumamoto.jp","oguni.kumamoto.jp","ozu.kumamoto.jp","sumoto.kumamoto.jp","takamori.kumamoto.jp","uki.kumamoto.jp","uto.kumamoto.jp","yamaga.kumamoto.jp","yamato.kumamoto.jp","yatsushiro.kumamoto.jp","ayabe.kyoto.jp","fukuchiyama.kyoto.jp","higashiyama.kyoto.jp","ide.kyoto.jp","ine.kyoto.jp","joyo.kyoto.jp","kameoka.kyoto.jp","kamo.kyoto.jp","kita.kyoto.jp","kizu.kyoto.jp","kumiyama.kyoto.jp","kyotamba.kyoto.jp","kyotanabe.kyoto.jp","kyotango.kyoto.jp","maizuru.kyoto.jp","minami.kyoto.jp","minamiyamashiro.kyoto.jp","miyazu.kyoto.jp","muko.kyoto.jp","nagaokakyo.kyoto.jp","nakagyo.kyoto.jp","nantan.kyoto.jp","oyamazaki.kyoto.jp","sakyo.kyoto.jp","seika.kyoto.jp","tanabe.kyoto.jp","uji.kyoto.jp","ujitawara.kyoto.jp","wazuka.kyoto.jp","yamashina.kyoto.jp","yawata.kyoto.jp","asahi.mie.jp","inabe.mie.jp","ise.mie.jp","kameyama.mie.jp","kawagoe.mie.jp","kiho.mie.jp","kisosaki.mie.jp","kiwa.mie.jp","komono.mie.jp","kumano.mie.jp","kuwana.mie.jp","matsusaka.mie.jp","meiwa.mie.jp","mihama.mie.jp","minamiise.mie.jp","misugi.mie.jp","miyama.mie.jp","nabari.mie.jp","shima.mie.jp","suzuka.mie.jp","tado.mie.jp","taiki.mie.jp","taki.mie.jp","tamaki.mie.jp","toba.mie.jp","tsu.mie.jp","udono.mie.jp","ureshino.mie.jp","watarai.mie.jp","yokkaichi.mie.jp","furukawa.miyagi.jp","higashimatsushima.miyagi.jp","ishinomaki.miyagi.jp","iwanuma.miyagi.jp","kakuda.miyagi.jp","kami.miyagi.jp","kawasaki.miyagi.jp","marumori.miyagi.jp","matsushima.miyagi.jp","minamisanriku.miyagi.jp","misato.miyagi.jp","murata.miyagi.jp","natori.miyagi.jp","ogawara.miyagi.jp","ohira.miyagi.jp","onagawa.miyagi.jp","osaki.miyagi.jp","rifu.miyagi.jp","semine.miyagi.jp","shibata.miyagi.jp","shichikashuku.miyagi.jp","shikama.miyagi.jp","shiogama.miyagi.jp","shiroishi.miyagi.jp","tagajo.miyagi.jp","taiwa.miyagi.jp","tome.miyagi.jp","tomiya.miyagi.jp","wakuya.miyagi.jp","watari.miyagi.jp","yamamoto.miyagi.jp","zao.miyagi.jp","aya.miyazaki.jp","ebino.miyazaki.jp","gokase.miyazaki.jp","hyuga.miyazaki.jp","kadogawa.miyazaki.jp","kawaminami.miyazaki.jp","kijo.miyazaki.jp","kitagawa.miyazaki.jp","kitakata.miyazaki.jp","kitaura.miyazaki.jp","kobayashi.miyazaki.jp","kunitomi.miyazaki.jp","kushima.miyazaki.jp","mimata.miyazaki.jp","miyakonojo.miyazaki.jp","miyazaki.miyazaki.jp","morotsuka.miyazaki.jp","nichinan.miyazaki.jp","nishimera.miyazaki.jp","nobeoka.miyazaki.jp","saito.miyazaki.jp","shiiba.miyazaki.jp","shintomi.miyazaki.jp","takaharu.miyazaki.jp","takanabe.miyazaki.jp","takazaki.miyazaki.jp","tsuno.miyazaki.jp","achi.nagano.jp","agematsu.nagano.jp","anan.nagano.jp","aoki.nagano.jp","asahi.nagano.jp","azumino.nagano.jp","chikuhoku.nagano.jp","chikuma.nagano.jp","chino.nagano.jp","fujimi.nagano.jp","hakuba.nagano.jp","hara.nagano.jp","hiraya.nagano.jp","iida.nagano.jp","iijima.nagano.jp","iiyama.nagano.jp","iizuna.nagano.jp","ikeda.nagano.jp","ikusaka.nagano.jp","ina.nagano.jp","karuizawa.nagano.jp","kawakami.nagano.jp","kiso.nagano.jp","kisofukushima.nagano.jp","kitaaiki.nagano.jp","komagane.nagano.jp","komoro.nagano.jp","matsukawa.nagano.jp","matsumoto.nagano.jp","miasa.nagano.jp","minamiaiki.nagano.jp","minamimaki.nagano.jp","minamiminowa.nagano.jp","minowa.nagano.jp","miyada.nagano.jp","miyota.nagano.jp","mochizuki.nagano.jp","nagano.nagano.jp","nagawa.nagano.jp","nagiso.nagano.jp","nakagawa.nagano.jp","nakano.nagano.jp","nozawaonsen.nagano.jp","obuse.nagano.jp","ogawa.nagano.jp","okaya.nagano.jp","omachi.nagano.jp","omi.nagano.jp","ookuwa.nagano.jp","ooshika.nagano.jp","otaki.nagano.jp","otari.nagano.jp","sakae.nagano.jp","sakaki.nagano.jp","saku.nagano.jp","sakuho.nagano.jp","shimosuwa.nagano.jp","shinanomachi.nagano.jp","shiojiri.nagano.jp","suwa.nagano.jp","suzaka.nagano.jp","takagi.nagano.jp","takamori.nagano.jp","takayama.nagano.jp","tateshina.nagano.jp","tatsuno.nagano.jp","togakushi.nagano.jp","togura.nagano.jp","tomi.nagano.jp","ueda.nagano.jp","wada.nagano.jp","yamagata.nagano.jp","yamanouchi.nagano.jp","yasaka.nagano.jp","yasuoka.nagano.jp","chijiwa.nagasaki.jp","futsu.nagasaki.jp","goto.nagasaki.jp","hasami.nagasaki.jp","hirado.nagasaki.jp","iki.nagasaki.jp","isahaya.nagasaki.jp","kawatana.nagasaki.jp","kuchinotsu.nagasaki.jp","matsuura.nagasaki.jp","nagasaki.nagasaki.jp","obama.nagasaki.jp","omura.nagasaki.jp","oseto.nagasaki.jp","saikai.nagasaki.jp","sasebo.nagasaki.jp","seihi.nagasaki.jp","shimabara.nagasaki.jp","shinkamigoto.nagasaki.jp","togitsu.nagasaki.jp","tsushima.nagasaki.jp","unzen.nagasaki.jp","ando.nara.jp","gose.nara.jp","heguri.nara.jp","higashiyoshino.nara.jp","ikaruga.nara.jp","ikoma.nara.jp","kamikitayama.nara.jp","kanmaki.nara.jp","kashiba.nara.jp","kashihara.nara.jp","katsuragi.nara.jp","kawai.nara.jp","kawakami.nara.jp","kawanishi.nara.jp","koryo.nara.jp","kurotaki.nara.jp","mitsue.nara.jp","miyake.nara.jp","nara.nara.jp","nosegawa.nara.jp","oji.nara.jp","ouda.nara.jp","oyodo.nara.jp","sakurai.nara.jp","sango.nara.jp","shimoichi.nara.jp","shimokitayama.nara.jp","shinjo.nara.jp","soni.nara.jp","takatori.nara.jp","tawaramoto.nara.jp","tenkawa.nara.jp","tenri.nara.jp","uda.nara.jp","yamatokoriyama.nara.jp","yamatotakada.nara.jp","yamazoe.nara.jp","yoshino.nara.jp","aga.niigata.jp","agano.niigata.jp","gosen.niigata.jp","itoigawa.niigata.jp","izumozaki.niigata.jp","joetsu.niigata.jp","kamo.niigata.jp","kariwa.niigata.jp","kashiwazaki.niigata.jp","minamiuonuma.niigata.jp","mitsuke.niigata.jp","muika.niigata.jp","murakami.niigata.jp","myoko.niigata.jp","nagaoka.niigata.jp","niigata.niigata.jp","ojiya.niigata.jp","omi.niigata.jp","sado.niigata.jp","sanjo.niigata.jp","seiro.niigata.jp","seirou.niigata.jp","sekikawa.niigata.jp","shibata.niigata.jp","tagami.niigata.jp","tainai.niigata.jp","tochio.niigata.jp","tokamachi.niigata.jp","tsubame.niigata.jp","tsunan.niigata.jp","uonuma.niigata.jp","yahiko.niigata.jp","yoita.niigata.jp","yuzawa.niigata.jp","beppu.oita.jp","bungoono.oita.jp","bungotakada.oita.jp","hasama.oita.jp","hiji.oita.jp","himeshima.oita.jp","hita.oita.jp","kamitsue.oita.jp","kokonoe.oita.jp","kuju.oita.jp","kunisaki.oita.jp","kusu.oita.jp","oita.oita.jp","saiki.oita.jp","taketa.oita.jp","tsukumi.oita.jp","usa.oita.jp","usuki.oita.jp","yufu.oita.jp","akaiwa.okayama.jp","asakuchi.okayama.jp","bizen.okayama.jp","hayashima.okayama.jp","ibara.okayama.jp","kagamino.okayama.jp","kasaoka.okayama.jp","kibichuo.okayama.jp","kumenan.okayama.jp","kurashiki.okayama.jp","maniwa.okayama.jp","misaki.okayama.jp","nagi.okayama.jp","niimi.okayama.jp","nishiawakura.okayama.jp","okayama.okayama.jp","satosho.okayama.jp","setouchi.okayama.jp","shinjo.okayama.jp","shoo.okayama.jp","soja.okayama.jp","takahashi.okayama.jp","tamano.okayama.jp","tsuyama.okayama.jp","wake.okayama.jp","yakage.okayama.jp","aguni.okinawa.jp","ginowan.okinawa.jp","ginoza.okinawa.jp","gushikami.okinawa.jp","haebaru.okinawa.jp","higashi.okinawa.jp","hirara.okinawa.jp","iheya.okinawa.jp","ishigaki.okinawa.jp","ishikawa.okinawa.jp","itoman.okinawa.jp","izena.okinawa.jp","kadena.okinawa.jp","kin.okinawa.jp","kitadaito.okinawa.jp","kitanakagusuku.okinawa.jp","kumejima.okinawa.jp","kunigami.okinawa.jp","minamidaito.okinawa.jp","motobu.okinawa.jp","nago.okinawa.jp","naha.okinawa.jp","nakagusuku.okinawa.jp","nakijin.okinawa.jp","nanjo.okinawa.jp","nishihara.okinawa.jp","ogimi.okinawa.jp","okinawa.okinawa.jp","onna.okinawa.jp","shimoji.okinawa.jp","taketomi.okinawa.jp","tarama.okinawa.jp","tokashiki.okinawa.jp","tomigusuku.okinawa.jp","tonaki.okinawa.jp","urasoe.okinawa.jp","uruma.okinawa.jp","yaese.okinawa.jp","yomitan.okinawa.jp","yonabaru.okinawa.jp","yonaguni.okinawa.jp","zamami.okinawa.jp","abeno.osaka.jp","chihayaakasaka.osaka.jp","chuo.osaka.jp","daito.osaka.jp","fujiidera.osaka.jp","habikino.osaka.jp","hannan.osaka.jp","higashiosaka.osaka.jp","higashisumiyoshi.osaka.jp","higashiyodogawa.osaka.jp","hirakata.osaka.jp","ibaraki.osaka.jp","ikeda.osaka.jp","izumi.osaka.jp","izumiotsu.osaka.jp","izumisano.osaka.jp","kadoma.osaka.jp","kaizuka.osaka.jp","kanan.osaka.jp","kashiwara.osaka.jp","katano.osaka.jp","kawachinagano.osaka.jp","kishiwada.osaka.jp","kita.osaka.jp","kumatori.osaka.jp","matsubara.osaka.jp","minato.osaka.jp","minoh.osaka.jp","misaki.osaka.jp","moriguchi.osaka.jp","neyagawa.osaka.jp","nishi.osaka.jp","nose.osaka.jp","osakasayama.osaka.jp","sakai.osaka.jp","sayama.osaka.jp","sennan.osaka.jp","settsu.osaka.jp","shijonawate.osaka.jp","shimamoto.osaka.jp","suita.osaka.jp","tadaoka.osaka.jp","taishi.osaka.jp","tajiri.osaka.jp","takaishi.osaka.jp","takatsuki.osaka.jp","tondabayashi.osaka.jp","toyonaka.osaka.jp","toyono.osaka.jp","yao.osaka.jp","ariake.saga.jp","arita.saga.jp","fukudomi.saga.jp","genkai.saga.jp","hamatama.saga.jp","hizen.saga.jp","imari.saga.jp","kamimine.saga.jp","kanzaki.saga.jp","karatsu.saga.jp","kashima.saga.jp","kitagata.saga.jp","kitahata.saga.jp","kiyama.saga.jp","kouhoku.saga.jp","kyuragi.saga.jp","nishiarita.saga.jp","ogi.saga.jp","omachi.saga.jp","ouchi.saga.jp","saga.saga.jp","shiroishi.saga.jp","taku.saga.jp","tara.saga.jp","tosu.saga.jp","yoshinogari.saga.jp","arakawa.saitama.jp","asaka.saitama.jp","chichibu.saitama.jp","fujimi.saitama.jp","fujimino.saitama.jp","fukaya.saitama.jp","hanno.saitama.jp","hanyu.saitama.jp","hasuda.saitama.jp","hatogaya.saitama.jp","hatoyama.saitama.jp","hidaka.saitama.jp","higashichichibu.saitama.jp","higashimatsuyama.saitama.jp","honjo.saitama.jp","ina.saitama.jp","iruma.saitama.jp","iwatsuki.saitama.jp","kamiizumi.saitama.jp","kamikawa.saitama.jp","kamisato.saitama.jp","kasukabe.saitama.jp","kawagoe.saitama.jp","kawaguchi.saitama.jp","kawajima.saitama.jp","kazo.saitama.jp","kitamoto.saitama.jp","koshigaya.saitama.jp","kounosu.saitama.jp","kuki.saitama.jp","kumagaya.saitama.jp","matsubushi.saitama.jp","minano.saitama.jp","misato.saitama.jp","miyashiro.saitama.jp","miyoshi.saitama.jp","moroyama.saitama.jp","nagatoro.saitama.jp","namegawa.saitama.jp","niiza.saitama.jp","ogano.saitama.jp","ogawa.saitama.jp","ogose.saitama.jp","okegawa.saitama.jp","omiya.saitama.jp","otaki.saitama.jp","ranzan.saitama.jp","ryokami.saitama.jp","saitama.saitama.jp","sakado.saitama.jp","satte.saitama.jp","sayama.saitama.jp","shiki.saitama.jp","shiraoka.saitama.jp","soka.saitama.jp","sugito.saitama.jp","toda.saitama.jp","tokigawa.saitama.jp","tokorozawa.saitama.jp","tsurugashima.saitama.jp","urawa.saitama.jp","warabi.saitama.jp","yashio.saitama.jp","yokoze.saitama.jp","yono.saitama.jp","yorii.saitama.jp","yoshida.saitama.jp","yoshikawa.saitama.jp","yoshimi.saitama.jp","aisho.shiga.jp","gamo.shiga.jp","higashiomi.shiga.jp","hikone.shiga.jp","koka.shiga.jp","konan.shiga.jp","kosei.shiga.jp","koto.shiga.jp","kusatsu.shiga.jp","maibara.shiga.jp","moriyama.shiga.jp","nagahama.shiga.jp","nishiazai.shiga.jp","notogawa.shiga.jp","omihachiman.shiga.jp","otsu.shiga.jp","ritto.shiga.jp","ryuoh.shiga.jp","takashima.shiga.jp","takatsuki.shiga.jp","torahime.shiga.jp","toyosato.shiga.jp","yasu.shiga.jp","akagi.shimane.jp","ama.shimane.jp","gotsu.shimane.jp","hamada.shimane.jp","higashiizumo.shimane.jp","hikawa.shimane.jp","hikimi.shimane.jp","izumo.shimane.jp","kakinoki.shimane.jp","masuda.shimane.jp","matsue.shimane.jp","misato.shimane.jp","nishinoshima.shimane.jp","ohda.shimane.jp","okinoshima.shimane.jp","okuizumo.shimane.jp","shimane.shimane.jp","tamayu.shimane.jp","tsuwano.shimane.jp","unnan.shimane.jp","yakumo.shimane.jp","yasugi.shimane.jp","yatsuka.shimane.jp","arai.shizuoka.jp","atami.shizuoka.jp","fuji.shizuoka.jp","fujieda.shizuoka.jp","fujikawa.shizuoka.jp","fujinomiya.shizuoka.jp","fukuroi.shizuoka.jp","gotemba.shizuoka.jp","haibara.shizuoka.jp","hamamatsu.shizuoka.jp","higashiizu.shizuoka.jp","ito.shizuoka.jp","iwata.shizuoka.jp","izu.shizuoka.jp","izunokuni.shizuoka.jp","kakegawa.shizuoka.jp","kannami.shizuoka.jp","kawanehon.shizuoka.jp","kawazu.shizuoka.jp","kikugawa.shizuoka.jp","kosai.shizuoka.jp","makinohara.shizuoka.jp","matsuzaki.shizuoka.jp","minamiizu.shizuoka.jp","mishima.shizuoka.jp","morimachi.shizuoka.jp","nishiizu.shizuoka.jp","numazu.shizuoka.jp","omaezaki.shizuoka.jp","shimada.shizuoka.jp","shimizu.shizuoka.jp","shimoda.shizuoka.jp","shizuoka.shizuoka.jp","susono.shizuoka.jp","yaizu.shizuoka.jp","yoshida.shizuoka.jp","ashikaga.tochigi.jp","bato.tochigi.jp","haga.tochigi.jp","ichikai.tochigi.jp","iwafune.tochigi.jp","kaminokawa.tochigi.jp","kanuma.tochigi.jp","karasuyama.tochigi.jp","kuroiso.tochigi.jp","mashiko.tochigi.jp","mibu.tochigi.jp","moka.tochigi.jp","motegi.tochigi.jp","nasu.tochigi.jp","nasushiobara.tochigi.jp","nikko.tochigi.jp","nishikata.tochigi.jp","nogi.tochigi.jp","ohira.tochigi.jp","ohtawara.tochigi.jp","oyama.tochigi.jp","sakura.tochigi.jp","sano.tochigi.jp","shimotsuke.tochigi.jp","shioya.tochigi.jp","takanezawa.tochigi.jp","tochigi.tochigi.jp","tsuga.tochigi.jp","ujiie.tochigi.jp","utsunomiya.tochigi.jp","yaita.tochigi.jp","aizumi.tokushima.jp","anan.tokushima.jp","ichiba.tokushima.jp","itano.tokushima.jp","kainan.tokushima.jp","komatsushima.tokushima.jp","matsushige.tokushima.jp","mima.tokushima.jp","minami.tokushima.jp","miyoshi.tokushima.jp","mugi.tokushima.jp","nakagawa.tokushima.jp","naruto.tokushima.jp","sanagochi.tokushima.jp","shishikui.tokushima.jp","tokushima.tokushima.jp","wajiki.tokushima.jp","adachi.tokyo.jp","akiruno.tokyo.jp","akishima.tokyo.jp","aogashima.tokyo.jp","arakawa.tokyo.jp","bunkyo.tokyo.jp","chiyoda.tokyo.jp","chofu.tokyo.jp","chuo.tokyo.jp","edogawa.tokyo.jp","fuchu.tokyo.jp","fussa.tokyo.jp","hachijo.tokyo.jp","hachioji.tokyo.jp","hamura.tokyo.jp","higashikurume.tokyo.jp","higashimurayama.tokyo.jp","higashiyamato.tokyo.jp","hino.tokyo.jp","hinode.tokyo.jp","hinohara.tokyo.jp","inagi.tokyo.jp","itabashi.tokyo.jp","katsushika.tokyo.jp","kita.tokyo.jp","kiyose.tokyo.jp","kodaira.tokyo.jp","koganei.tokyo.jp","kokubunji.tokyo.jp","komae.tokyo.jp","koto.tokyo.jp","kouzushima.tokyo.jp","kunitachi.tokyo.jp","machida.tokyo.jp","meguro.tokyo.jp","minato.tokyo.jp","mitaka.tokyo.jp","mizuho.tokyo.jp","musashimurayama.tokyo.jp","musashino.tokyo.jp","nakano.tokyo.jp","nerima.tokyo.jp","ogasawara.tokyo.jp","okutama.tokyo.jp","ome.tokyo.jp","oshima.tokyo.jp","ota.tokyo.jp","setagaya.tokyo.jp","shibuya.tokyo.jp","shinagawa.tokyo.jp","shinjuku.tokyo.jp","suginami.tokyo.jp","sumida.tokyo.jp","tachikawa.tokyo.jp","taito.tokyo.jp","tama.tokyo.jp","toshima.tokyo.jp","chizu.tottori.jp","hino.tottori.jp","kawahara.tottori.jp","koge.tottori.jp","kotoura.tottori.jp","misasa.tottori.jp","nanbu.tottori.jp","nichinan.tottori.jp","sakaiminato.tottori.jp","tottori.tottori.jp","wakasa.tottori.jp","yazu.tottori.jp","yonago.tottori.jp","asahi.toyama.jp","fuchu.toyama.jp","fukumitsu.toyama.jp","funahashi.toyama.jp","himi.toyama.jp","imizu.toyama.jp","inami.toyama.jp","johana.toyama.jp","kamiichi.toyama.jp","kurobe.toyama.jp","nakaniikawa.toyama.jp","namerikawa.toyama.jp","nanto.toyama.jp","nyuzen.toyama.jp","oyabe.toyama.jp","taira.toyama.jp","takaoka.toyama.jp","tateyama.toyama.jp","toga.toyama.jp","tonami.toyama.jp","toyama.toyama.jp","unazuki.toyama.jp","uozu.toyama.jp","yamada.toyama.jp","arida.wakayama.jp","aridagawa.wakayama.jp","gobo.wakayama.jp","hashimoto.wakayama.jp","hidaka.wakayama.jp","hirogawa.wakayama.jp","inami.wakayama.jp","iwade.wakayama.jp","kainan.wakayama.jp","kamitonda.wakayama.jp","katsuragi.wakayama.jp","kimino.wakayama.jp","kinokawa.wakayama.jp","kitayama.wakayama.jp","koya.wakayama.jp","koza.wakayama.jp","kozagawa.wakayama.jp","kudoyama.wakayama.jp","kushimoto.wakayama.jp","mihama.wakayama.jp","misato.wakayama.jp","nachikatsuura.wakayama.jp","shingu.wakayama.jp","shirahama.wakayama.jp","taiji.wakayama.jp","tanabe.wakayama.jp","wakayama.wakayama.jp","yuasa.wakayama.jp","yura.wakayama.jp","asahi.yamagata.jp","funagata.yamagata.jp","higashine.yamagata.jp","iide.yamagata.jp","kahoku.yamagata.jp","kaminoyama.yamagata.jp","kaneyama.yamagata.jp","kawanishi.yamagata.jp","mamurogawa.yamagata.jp","mikawa.yamagata.jp","murayama.yamagata.jp","nagai.yamagata.jp","nakayama.yamagata.jp","nanyo.yamagata.jp","nishikawa.yamagata.jp","obanazawa.yamagata.jp","oe.yamagata.jp","oguni.yamagata.jp","ohkura.yamagata.jp","oishida.yamagata.jp","sagae.yamagata.jp","sakata.yamagata.jp","sakegawa.yamagata.jp","shinjo.yamagata.jp","shirataka.yamagata.jp","shonai.yamagata.jp","takahata.yamagata.jp","tendo.yamagata.jp","tozawa.yamagata.jp","tsuruoka.yamagata.jp","yamagata.yamagata.jp","yamanobe.yamagata.jp","yonezawa.yamagata.jp","yuza.yamagata.jp","abu.yamaguchi.jp","hagi.yamaguchi.jp","hikari.yamaguchi.jp","hofu.yamaguchi.jp","iwakuni.yamaguchi.jp","kudamatsu.yamaguchi.jp","mitou.yamaguchi.jp","nagato.yamaguchi.jp","oshima.yamaguchi.jp","shimonoseki.yamaguchi.jp","shunan.yamaguchi.jp","tabuse.yamaguchi.jp","tokuyama.yamaguchi.jp","toyota.yamaguchi.jp","ube.yamaguchi.jp","yuu.yamaguchi.jp","chuo.yamanashi.jp","doshi.yamanashi.jp","fuefuki.yamanashi.jp","fujikawa.yamanashi.jp","fujikawaguchiko.yamanashi.jp","fujiyoshida.yamanashi.jp","hayakawa.yamanashi.jp","hokuto.yamanashi.jp","ichikawamisato.yamanashi.jp","kai.yamanashi.jp","kofu.yamanashi.jp","koshu.yamanashi.jp","kosuge.yamanashi.jp","minami-alps.yamanashi.jp","minobu.yamanashi.jp","nakamichi.yamanashi.jp","nanbu.yamanashi.jp","narusawa.yamanashi.jp","nirasaki.yamanashi.jp","nishikatsura.yamanashi.jp","oshino.yamanashi.jp","otsuki.yamanashi.jp","showa.yamanashi.jp","tabayama.yamanashi.jp","tsuru.yamanashi.jp","uenohara.yamanashi.jp","yamanakako.yamanashi.jp","yamanashi.yamanashi.jp","ke","ac.ke","co.ke","go.ke","info.ke","me.ke","mobi.ke","ne.ke","or.ke","sc.ke","kg","org.kg","net.kg","com.kg","edu.kg","gov.kg","mil.kg","*.kh","ki","edu.ki","biz.ki","net.ki","org.ki","gov.ki","info.ki","com.ki","km","org.km","nom.km","gov.km","prd.km","tm.km","edu.km","mil.km","ass.km","com.km","coop.km","asso.km","presse.km","medecin.km","notaires.km","pharmaciens.km","veterinaire.km","gouv.km","kn","net.kn","org.kn","edu.kn","gov.kn","kp","com.kp","edu.kp","gov.kp","org.kp","rep.kp","tra.kp","kr","ac.kr","co.kr","es.kr","go.kr","hs.kr","kg.kr","mil.kr","ms.kr","ne.kr","or.kr","pe.kr","re.kr","sc.kr","busan.kr","chungbuk.kr","chungnam.kr","daegu.kr","daejeon.kr","gangwon.kr","gwangju.kr","gyeongbuk.kr","gyeonggi.kr","gyeongnam.kr","incheon.kr","jeju.kr","jeonbuk.kr","jeonnam.kr","seoul.kr","ulsan.kr","kw","com.kw","edu.kw","emb.kw","gov.kw","ind.kw","net.kw","org.kw","ky","com.ky","edu.ky","net.ky","org.ky","kz","org.kz","edu.kz","net.kz","gov.kz","mil.kz","com.kz","la","int.la","net.la","info.la","edu.la","gov.la","per.la","com.la","org.la","lb","com.lb","edu.lb","gov.lb","net.lb","org.lb","lc","com.lc","net.lc","co.lc","org.lc","edu.lc","gov.lc","li","lk","gov.lk","sch.lk","net.lk","int.lk","com.lk","org.lk","edu.lk","ngo.lk","soc.lk","web.lk","ltd.lk","assn.lk","grp.lk","hotel.lk","ac.lk","lr","com.lr","edu.lr","gov.lr","org.lr","net.lr","ls","ac.ls","biz.ls","co.ls","edu.ls","gov.ls","info.ls","net.ls","org.ls","sc.ls","lt","gov.lt","lu","lv","com.lv","edu.lv","gov.lv","org.lv","mil.lv","id.lv","net.lv","asn.lv","conf.lv","ly","com.ly","net.ly","gov.ly","plc.ly","edu.ly","sch.ly","med.ly","org.ly","id.ly","ma","co.ma","net.ma","gov.ma","org.ma","ac.ma","press.ma","mc","tm.mc","asso.mc","md","me","co.me","net.me","org.me","edu.me","ac.me","gov.me","its.me","priv.me","mg","org.mg","nom.mg","gov.mg","prd.mg","tm.mg","edu.mg","mil.mg","com.mg","co.mg","mh","mil","mk","com.mk","org.mk","net.mk","edu.mk","gov.mk","inf.mk","name.mk","ml","com.ml","edu.ml","gouv.ml","gov.ml","net.ml","org.ml","presse.ml","*.mm","mn","gov.mn","edu.mn","org.mn","mo","com.mo","net.mo","org.mo","edu.mo","gov.mo","mobi","mp","mq","mr","gov.mr","ms","com.ms","edu.ms","gov.ms","net.ms","org.ms","mt","com.mt","edu.mt","net.mt","org.mt","mu","com.mu","net.mu","org.mu","gov.mu","ac.mu","co.mu","or.mu","museum","academy.museum","agriculture.museum","air.museum","airguard.museum","alabama.museum","alaska.museum","amber.museum","ambulance.museum","american.museum","americana.museum","americanantiques.museum","americanart.museum","amsterdam.museum","and.museum","annefrank.museum","anthro.museum","anthropology.museum","antiques.museum","aquarium.museum","arboretum.museum","archaeological.museum","archaeology.museum","architecture.museum","art.museum","artanddesign.museum","artcenter.museum","artdeco.museum","arteducation.museum","artgallery.museum","arts.museum","artsandcrafts.museum","asmatart.museum","assassination.museum","assisi.museum","association.museum","astronomy.museum","atlanta.museum","austin.museum","australia.museum","automotive.museum","aviation.museum","axis.museum","badajoz.museum","baghdad.museum","bahn.museum","bale.museum","baltimore.museum","barcelona.museum","baseball.museum","basel.museum","baths.museum","bauern.museum","beauxarts.museum","beeldengeluid.museum","bellevue.museum","bergbau.museum","berkeley.museum","berlin.museum","bern.museum","bible.museum","bilbao.museum","bill.museum","birdart.museum","birthplace.museum","bonn.museum","boston.museum","botanical.museum","botanicalgarden.museum","botanicgarden.museum","botany.museum","brandywinevalley.museum","brasil.museum","bristol.museum","british.museum","britishcolumbia.museum","broadcast.museum","brunel.museum","brussel.museum","brussels.museum","bruxelles.museum","building.museum","burghof.museum","bus.museum","bushey.museum","cadaques.museum","california.museum","cambridge.museum","can.museum","canada.museum","capebreton.museum","carrier.museum","cartoonart.museum","casadelamoneda.museum","castle.museum","castres.museum","celtic.museum","center.museum","chattanooga.museum","cheltenham.museum","chesapeakebay.museum","chicago.museum","children.museum","childrens.museum","childrensgarden.museum","chiropractic.museum","chocolate.museum","christiansburg.museum","cincinnati.museum","cinema.museum","circus.museum","civilisation.museum","civilization.museum","civilwar.museum","clinton.museum","clock.museum","coal.museum","coastaldefence.museum","cody.museum","coldwar.museum","collection.museum","colonialwilliamsburg.museum","coloradoplateau.museum","columbia.museum","columbus.museum","communication.museum","communications.museum","community.museum","computer.museum","computerhistory.museum","comunicações.museum","contemporary.museum","contemporaryart.museum","convent.museum","copenhagen.museum","corporation.museum","correios-e-telecomunicações.museum","corvette.museum","costume.museum","countryestate.museum","county.museum","crafts.museum","cranbrook.museum","creation.museum","cultural.museum","culturalcenter.museum","culture.museum","cyber.museum","cymru.museum","dali.museum","dallas.museum","database.museum","ddr.museum","decorativearts.museum","delaware.museum","delmenhorst.museum","denmark.museum","depot.museum","design.museum","detroit.museum","dinosaur.museum","discovery.museum","dolls.museum","donostia.museum","durham.museum","eastafrica.museum","eastcoast.museum","education.museum","educational.museum","egyptian.museum","eisenbahn.museum","elburg.museum","elvendrell.museum","embroidery.museum","encyclopedic.museum","england.museum","entomology.museum","environment.museum","environmentalconservation.museum","epilepsy.museum","essex.museum","estate.museum","ethnology.museum","exeter.museum","exhibition.museum","family.museum","farm.museum","farmequipment.museum","farmers.museum","farmstead.museum","field.museum","figueres.museum","filatelia.museum","film.museum","fineart.museum","finearts.museum","finland.museum","flanders.museum","florida.museum","force.museum","fortmissoula.museum","fortworth.museum","foundation.museum","francaise.museum","frankfurt.museum","franziskaner.museum","freemasonry.museum","freiburg.museum","fribourg.museum","frog.museum","fundacio.museum","furniture.museum","gallery.museum","garden.museum","gateway.museum","geelvinck.museum","gemological.museum","geology.museum","georgia.museum","giessen.museum","glas.museum","glass.museum","gorge.museum","grandrapids.museum","graz.museum","guernsey.museum","halloffame.museum","hamburg.museum","handson.museum","harvestcelebration.museum","hawaii.museum","health.museum","heimatunduhren.museum","hellas.museum","helsinki.museum","hembygdsforbund.museum","heritage.museum","histoire.museum","historical.museum","historicalsociety.museum","historichouses.museum","historisch.museum","historisches.museum","history.museum","historyofscience.museum","horology.museum","house.museum","humanities.museum","illustration.museum","imageandsound.museum","indian.museum","indiana.museum","indianapolis.museum","indianmarket.museum","intelligence.museum","interactive.museum","iraq.museum","iron.museum","isleofman.museum","jamison.museum","jefferson.museum","jerusalem.museum","jewelry.museum","jewish.museum","jewishart.museum","jfk.museum","journalism.museum","judaica.museum","judygarland.museum","juedisches.museum","juif.museum","karate.museum","karikatur.museum","kids.museum","koebenhavn.museum","koeln.museum","kunst.museum","kunstsammlung.museum","kunstunddesign.museum","labor.museum","labour.museum","lajolla.museum","lancashire.museum","landes.museum","lans.museum","läns.museum","larsson.museum","lewismiller.museum","lincoln.museum","linz.museum","living.museum","livinghistory.museum","localhistory.museum","london.museum","losangeles.museum","louvre.museum","loyalist.museum","lucerne.museum","luxembourg.museum","luzern.museum","mad.museum","madrid.museum","mallorca.museum","manchester.museum","mansion.museum","mansions.museum","manx.museum","marburg.museum","maritime.museum","maritimo.museum","maryland.museum","marylhurst.museum","media.museum","medical.museum","medizinhistorisches.museum","meeres.museum","memorial.museum","mesaverde.museum","michigan.museum","midatlantic.museum","military.museum","mill.museum","miners.museum","mining.museum","minnesota.museum","missile.museum","missoula.museum","modern.museum","moma.museum","money.museum","monmouth.museum","monticello.museum","montreal.museum","moscow.museum","motorcycle.museum","muenchen.museum","muenster.museum","mulhouse.museum","muncie.museum","museet.museum","museumcenter.museum","museumvereniging.museum","music.museum","national.museum","nationalfirearms.museum","nationalheritage.museum","nativeamerican.museum","naturalhistory.museum","naturalhistorymuseum.museum","naturalsciences.museum","nature.museum","naturhistorisches.museum","natuurwetenschappen.museum","naumburg.museum","naval.museum","nebraska.museum","neues.museum","newhampshire.museum","newjersey.museum","newmexico.museum","newport.museum","newspaper.museum","newyork.museum","niepce.museum","norfolk.museum","north.museum","nrw.museum","nyc.museum","nyny.museum","oceanographic.museum","oceanographique.museum","omaha.museum","online.museum","ontario.museum","openair.museum","oregon.museum","oregontrail.museum","otago.museum","oxford.museum","pacific.museum","paderborn.museum","palace.museum","paleo.museum","palmsprings.museum","panama.museum","paris.museum","pasadena.museum","pharmacy.museum","philadelphia.museum","philadelphiaarea.museum","philately.museum","phoenix.museum","photography.museum","pilots.museum","pittsburgh.museum","planetarium.museum","plantation.museum","plants.museum","plaza.museum","portal.museum","portland.museum","portlligat.museum","posts-and-telecommunications.museum","preservation.museum","presidio.museum","press.museum","project.museum","public.museum","pubol.museum","quebec.museum","railroad.museum","railway.museum","research.museum","resistance.museum","riodejaneiro.museum","rochester.museum","rockart.museum","roma.museum","russia.museum","saintlouis.museum","salem.museum","salvadordali.museum","salzburg.museum","sandiego.museum","sanfrancisco.museum","santabarbara.museum","santacruz.museum","santafe.museum","saskatchewan.museum","satx.museum","savannahga.museum","schlesisches.museum","schoenbrunn.museum","schokoladen.museum","school.museum","schweiz.museum","science.museum","scienceandhistory.museum","scienceandindustry.museum","sciencecenter.museum","sciencecenters.museum","science-fiction.museum","sciencehistory.museum","sciences.museum","sciencesnaturelles.museum","scotland.museum","seaport.museum","settlement.museum","settlers.museum","shell.museum","sherbrooke.museum","sibenik.museum","silk.museum","ski.museum","skole.museum","society.museum","sologne.museum","soundandvision.museum","southcarolina.museum","southwest.museum","space.museum","spy.museum","square.museum","stadt.museum","stalbans.museum","starnberg.museum","state.museum","stateofdelaware.museum","station.museum","steam.museum","steiermark.museum","stjohn.museum","stockholm.museum","stpetersburg.museum","stuttgart.museum","suisse.museum","surgeonshall.museum","surrey.museum","svizzera.museum","sweden.museum","sydney.museum","tank.museum","tcm.museum","technology.museum","telekommunikation.museum","television.museum","texas.museum","textile.museum","theater.museum","time.museum","timekeeping.museum","topology.museum","torino.museum","touch.museum","town.museum","transport.museum","tree.museum","trolley.museum","trust.museum","trustee.museum","uhren.museum","ulm.museum","undersea.museum","university.museum","usa.museum","usantiques.museum","usarts.museum","uscountryestate.museum","usculture.museum","usdecorativearts.museum","usgarden.museum","ushistory.museum","ushuaia.museum","uslivinghistory.museum","utah.museum","uvic.museum","valley.museum","vantaa.museum","versailles.museum","viking.museum","village.museum","virginia.museum","virtual.museum","virtuel.museum","vlaanderen.museum","volkenkunde.museum","wales.museum","wallonie.museum","war.museum","washingtondc.museum","watchandclock.museum","watch-and-clock.museum","western.museum","westfalen.museum","whaling.museum","wildlife.museum","williamsburg.museum","windmill.museum","workshop.museum","york.museum","yorkshire.museum","yosemite.museum","youth.museum","zoological.museum","zoology.museum","ירושלים.museum","иком.museum","mv","aero.mv","biz.mv","com.mv","coop.mv","edu.mv","gov.mv","info.mv","int.mv","mil.mv","museum.mv","name.mv","net.mv","org.mv","pro.mv","mw","ac.mw","biz.mw","co.mw","com.mw","coop.mw","edu.mw","gov.mw","int.mw","museum.mw","net.mw","org.mw","mx","com.mx","org.mx","gob.mx","edu.mx","net.mx","my","biz.my","com.my","edu.my","gov.my","mil.my","name.my","net.my","org.my","mz","ac.mz","adv.mz","co.mz","edu.mz","gov.mz","mil.mz","net.mz","org.mz","na","info.na","pro.na","name.na","school.na","or.na","dr.na","us.na","mx.na","ca.na","in.na","cc.na","tv.na","ws.na","mobi.na","co.na","com.na","org.na","name","nc","asso.nc","nom.nc","ne","net","nf","com.nf","net.nf","per.nf","rec.nf","web.nf","arts.nf","firm.nf","info.nf","other.nf","store.nf","ng","com.ng","edu.ng","gov.ng","i.ng","mil.ng","mobi.ng","name.ng","net.ng","org.ng","sch.ng","ni","ac.ni","biz.ni","co.ni","com.ni","edu.ni","gob.ni","in.ni","info.ni","int.ni","mil.ni","net.ni","nom.ni","org.ni","web.ni","nl","no","fhs.no","vgs.no","fylkesbibl.no","folkebibl.no","museum.no","idrett.no","priv.no","mil.no","stat.no","dep.no","kommune.no","herad.no","aa.no","ah.no","bu.no","fm.no","hl.no","hm.no","jan-mayen.no","mr.no","nl.no","nt.no","of.no","ol.no","oslo.no","rl.no","sf.no","st.no","svalbard.no","tm.no","tr.no","va.no","vf.no","gs.aa.no","gs.ah.no","gs.bu.no","gs.fm.no","gs.hl.no","gs.hm.no","gs.jan-mayen.no","gs.mr.no","gs.nl.no","gs.nt.no","gs.of.no","gs.ol.no","gs.oslo.no","gs.rl.no","gs.sf.no","gs.st.no","gs.svalbard.no","gs.tm.no","gs.tr.no","gs.va.no","gs.vf.no","akrehamn.no","åkrehamn.no","algard.no","ålgård.no","arna.no","brumunddal.no","bryne.no","bronnoysund.no","brønnøysund.no","drobak.no","drøbak.no","egersund.no","fetsund.no","floro.no","florø.no","fredrikstad.no","hokksund.no","honefoss.no","hønefoss.no","jessheim.no","jorpeland.no","jørpeland.no","kirkenes.no","kopervik.no","krokstadelva.no","langevag.no","langevåg.no","leirvik.no","mjondalen.no","mjøndalen.no","mo-i-rana.no","mosjoen.no","mosjøen.no","nesoddtangen.no","orkanger.no","osoyro.no","osøyro.no","raholt.no","råholt.no","sandnessjoen.no","sandnessjøen.no","skedsmokorset.no","slattum.no","spjelkavik.no","stathelle.no","stavern.no","stjordalshalsen.no","stjørdalshalsen.no","tananger.no","tranby.no","vossevangen.no","afjord.no","åfjord.no","agdenes.no","al.no","ål.no","alesund.no","ålesund.no","alstahaug.no","alta.no","áltá.no","alaheadju.no","álaheadju.no","alvdal.no","amli.no","åmli.no","amot.no","åmot.no","andebu.no","andoy.no","andøy.no","andasuolo.no","ardal.no","årdal.no","aremark.no","arendal.no","ås.no","aseral.no","åseral.no","asker.no","askim.no","askvoll.no","askoy.no","askøy.no","asnes.no","åsnes.no","audnedaln.no","aukra.no","aure.no","aurland.no","aurskog-holand.no","aurskog-høland.no","austevoll.no","austrheim.no","averoy.no","averøy.no","balestrand.no","ballangen.no","balat.no","bálát.no","balsfjord.no","bahccavuotna.no","báhccavuotna.no","bamble.no","bardu.no","beardu.no","beiarn.no","bajddar.no","bájddar.no","baidar.no","báidár.no","berg.no","bergen.no","berlevag.no","berlevåg.no","bearalvahki.no","bearalváhki.no","bindal.no","birkenes.no","bjarkoy.no","bjarkøy.no","bjerkreim.no","bjugn.no","bodo.no","bodø.no","badaddja.no","bådåddjå.no","budejju.no","bokn.no","bremanger.no","bronnoy.no","brønnøy.no","bygland.no","bykle.no","barum.no","bærum.no","bo.telemark.no","bø.telemark.no","bo.nordland.no","bø.nordland.no","bievat.no","bievát.no","bomlo.no","bømlo.no","batsfjord.no","båtsfjord.no","bahcavuotna.no","báhcavuotna.no","dovre.no","drammen.no","drangedal.no","dyroy.no","dyrøy.no","donna.no","dønna.no","eid.no","eidfjord.no","eidsberg.no","eidskog.no","eidsvoll.no","eigersund.no","elverum.no","enebakk.no","engerdal.no","etne.no","etnedal.no","evenes.no","evenassi.no","evenášši.no","evje-og-hornnes.no","farsund.no","fauske.no","fuossko.no","fuoisku.no","fedje.no","fet.no","finnoy.no","finnøy.no","fitjar.no","fjaler.no","fjell.no","flakstad.no","flatanger.no","flekkefjord.no","flesberg.no","flora.no","fla.no","flå.no","folldal.no","forsand.no","fosnes.no","frei.no","frogn.no","froland.no","frosta.no","frana.no","fræna.no","froya.no","frøya.no","fusa.no","fyresdal.no","forde.no","førde.no","gamvik.no","gangaviika.no","gáŋgaviika.no","gaular.no","gausdal.no","gildeskal.no","gildeskål.no","giske.no","gjemnes.no","gjerdrum.no","gjerstad.no","gjesdal.no","gjovik.no","gjøvik.no","gloppen.no","gol.no","gran.no","grane.no","granvin.no","gratangen.no","grimstad.no","grong.no","kraanghke.no","kråanghke.no","grue.no","gulen.no","hadsel.no","halden.no","halsa.no","hamar.no","hamaroy.no","habmer.no","hábmer.no","hapmir.no","hápmir.no","hammerfest.no","hammarfeasta.no","hámmárfeasta.no","haram.no","hareid.no","harstad.no","hasvik.no","aknoluokta.no","ákŋoluokta.no","hattfjelldal.no","aarborte.no","haugesund.no","hemne.no","hemnes.no","hemsedal.no","heroy.more-og-romsdal.no","herøy.møre-og-romsdal.no","heroy.nordland.no","herøy.nordland.no","hitra.no","hjartdal.no","hjelmeland.no","hobol.no","hobøl.no","hof.no","hol.no","hole.no","holmestrand.no","holtalen.no","holtålen.no","hornindal.no","horten.no","hurdal.no","hurum.no","hvaler.no","hyllestad.no","hagebostad.no","hægebostad.no","hoyanger.no","høyanger.no","hoylandet.no","høylandet.no","ha.no","hå.no","ibestad.no","inderoy.no","inderøy.no","iveland.no","jevnaker.no","jondal.no","jolster.no","jølster.no","karasjok.no","karasjohka.no","kárášjohka.no","karlsoy.no","galsa.no","gálsá.no","karmoy.no","karmøy.no","kautokeino.no","guovdageaidnu.no","klepp.no","klabu.no","klæbu.no","kongsberg.no","kongsvinger.no","kragero.no","kragerø.no","kristiansand.no","kristiansund.no","krodsherad.no","krødsherad.no","kvalsund.no","rahkkeravju.no","ráhkkerávju.no","kvam.no","kvinesdal.no","kvinnherad.no","kviteseid.no","kvitsoy.no","kvitsøy.no","kvafjord.no","kvæfjord.no","giehtavuoatna.no","kvanangen.no","kvænangen.no","navuotna.no","návuotna.no","kafjord.no","kåfjord.no","gaivuotna.no","gáivuotna.no","larvik.no","lavangen.no","lavagis.no","loabat.no","loabát.no","lebesby.no","davvesiida.no","leikanger.no","leirfjord.no","leka.no","leksvik.no","lenvik.no","leangaviika.no","leaŋgaviika.no","lesja.no","levanger.no","lier.no","lierne.no","lillehammer.no","lillesand.no","lindesnes.no","lindas.no","lindås.no","lom.no","loppa.no","lahppi.no","láhppi.no","lund.no","lunner.no","luroy.no","lurøy.no","luster.no","lyngdal.no","lyngen.no","ivgu.no","lardal.no","lerdal.no","lærdal.no","lodingen.no","lødingen.no","lorenskog.no","lørenskog.no","loten.no","løten.no","malvik.no","masoy.no","måsøy.no","muosat.no","muosát.no","mandal.no","marker.no","marnardal.no","masfjorden.no","meland.no","meldal.no","melhus.no","meloy.no","meløy.no","meraker.no","meråker.no","moareke.no","moåreke.no","midsund.no","midtre-gauldal.no","modalen.no","modum.no","molde.no","moskenes.no","moss.no","mosvik.no","malselv.no","målselv.no","malatvuopmi.no","málatvuopmi.no","namdalseid.no","aejrie.no","namsos.no","namsskogan.no","naamesjevuemie.no","nååmesjevuemie.no","laakesvuemie.no","nannestad.no","narvik.no","narviika.no","naustdal.no","nedre-eiker.no","nes.akershus.no","nes.buskerud.no","nesna.no","nesodden.no","nesseby.no","unjarga.no","unjárga.no","nesset.no","nissedal.no","nittedal.no","nord-aurdal.no","nord-fron.no","nord-odal.no","norddal.no","nordkapp.no","davvenjarga.no","davvenjárga.no","nordre-land.no","nordreisa.no","raisa.no","ráisa.no","nore-og-uvdal.no","notodden.no","naroy.no","nærøy.no","notteroy.no","nøtterøy.no","odda.no","oksnes.no","øksnes.no","oppdal.no","oppegard.no","oppegård.no","orkdal.no","orland.no","ørland.no","orskog.no","ørskog.no","orsta.no","ørsta.no","os.hedmark.no","os.hordaland.no","osen.no","osteroy.no","osterøy.no","ostre-toten.no","østre-toten.no","overhalla.no","ovre-eiker.no","øvre-eiker.no","oyer.no","øyer.no","oygarden.no","øygarden.no","oystre-slidre.no","øystre-slidre.no","porsanger.no","porsangu.no","porsáŋgu.no","porsgrunn.no","radoy.no","radøy.no","rakkestad.no","rana.no","ruovat.no","randaberg.no","rauma.no","rendalen.no","rennebu.no","rennesoy.no","rennesøy.no","rindal.no","ringebu.no","ringerike.no","ringsaker.no","rissa.no","risor.no","risør.no","roan.no","rollag.no","rygge.no","ralingen.no","rælingen.no","rodoy.no","rødøy.no","romskog.no","rømskog.no","roros.no","røros.no","rost.no","røst.no","royken.no","røyken.no","royrvik.no","røyrvik.no","rade.no","råde.no","salangen.no","siellak.no","saltdal.no","salat.no","sálát.no","sálat.no","samnanger.no","sande.more-og-romsdal.no","sande.møre-og-romsdal.no","sande.vestfold.no","sandefjord.no","sandnes.no","sandoy.no","sandøy.no","sarpsborg.no","sauda.no","sauherad.no","sel.no","selbu.no","selje.no","seljord.no","sigdal.no","siljan.no","sirdal.no","skaun.no","skedsmo.no","ski.no","skien.no","skiptvet.no","skjervoy.no","skjervøy.no","skierva.no","skiervá.no","skjak.no","skjåk.no","skodje.no","skanland.no","skånland.no","skanit.no","skánit.no","smola.no","smøla.no","snillfjord.no","snasa.no","snåsa.no","snoasa.no","snaase.no","snåase.no","sogndal.no","sokndal.no","sola.no","solund.no","songdalen.no","sortland.no","spydeberg.no","stange.no","stavanger.no","steigen.no","steinkjer.no","stjordal.no","stjørdal.no","stokke.no","stor-elvdal.no","stord.no","stordal.no","storfjord.no","omasvuotna.no","strand.no","stranda.no","stryn.no","sula.no","suldal.no","sund.no","sunndal.no","surnadal.no","sveio.no","svelvik.no","sykkylven.no","sogne.no","søgne.no","somna.no","sømna.no","sondre-land.no","søndre-land.no","sor-aurdal.no","sør-aurdal.no","sor-fron.no","sør-fron.no","sor-odal.no","sør-odal.no","sor-varanger.no","sør-varanger.no","matta-varjjat.no","mátta-várjjat.no","sorfold.no","sørfold.no","sorreisa.no","sørreisa.no","sorum.no","sørum.no","tana.no","deatnu.no","time.no","tingvoll.no","tinn.no","tjeldsund.no","dielddanuorri.no","tjome.no","tjøme.no","tokke.no","tolga.no","torsken.no","tranoy.no","tranøy.no","tromso.no","tromsø.no","tromsa.no","romsa.no","trondheim.no","troandin.no","trysil.no","trana.no","træna.no","trogstad.no","trøgstad.no","tvedestrand.no","tydal.no","tynset.no","tysfjord.no","divtasvuodna.no","divttasvuotna.no","tysnes.no","tysvar.no","tysvær.no","tonsberg.no","tønsberg.no","ullensaker.no","ullensvang.no","ulvik.no","utsira.no","vadso.no","vadsø.no","cahcesuolo.no","čáhcesuolo.no","vaksdal.no","valle.no","vang.no","vanylven.no","vardo.no","vardø.no","varggat.no","várggát.no","vefsn.no","vaapste.no","vega.no","vegarshei.no","vegårshei.no","vennesla.no","verdal.no","verran.no","vestby.no","vestnes.no","vestre-slidre.no","vestre-toten.no","vestvagoy.no","vestvågøy.no","vevelstad.no","vik.no","vikna.no","vindafjord.no","volda.no","voss.no","varoy.no","værøy.no","vagan.no","vågan.no","voagat.no","vagsoy.no","vågsøy.no","vaga.no","vågå.no","valer.ostfold.no","våler.østfold.no","valer.hedmark.no","våler.hedmark.no","*.np","nr","biz.nr","info.nr","gov.nr","edu.nr","org.nr","net.nr","com.nr","nu","nz","ac.nz","co.nz","cri.nz","geek.nz","gen.nz","govt.nz","health.nz","iwi.nz","kiwi.nz","maori.nz","mil.nz","māori.nz","net.nz","org.nz","parliament.nz","school.nz","om","co.om","com.om","edu.om","gov.om","med.om","museum.om","net.om","org.om","pro.om","onion","org","pa","ac.pa","gob.pa","com.pa","org.pa","sld.pa","edu.pa","net.pa","ing.pa","abo.pa","med.pa","nom.pa","pe","edu.pe","gob.pe","nom.pe","mil.pe","org.pe","com.pe","net.pe","pf","com.pf","org.pf","edu.pf","*.pg","ph","com.ph","net.ph","org.ph","gov.ph","edu.ph","ngo.ph","mil.ph","i.ph","pk","com.pk","net.pk","edu.pk","org.pk","fam.pk","biz.pk","web.pk","gov.pk","gob.pk","gok.pk","gon.pk","gop.pk","gos.pk","info.pk","pl","com.pl","net.pl","org.pl","aid.pl","agro.pl","atm.pl","auto.pl","biz.pl","edu.pl","gmina.pl","gsm.pl","info.pl","mail.pl","miasta.pl","media.pl","mil.pl","nieruchomosci.pl","nom.pl","pc.pl","powiat.pl","priv.pl","realestate.pl","rel.pl","sex.pl","shop.pl","sklep.pl","sos.pl","szkola.pl","targi.pl","tm.pl","tourism.pl","travel.pl","turystyka.pl","gov.pl","ap.gov.pl","ic.gov.pl","is.gov.pl","us.gov.pl","kmpsp.gov.pl","kppsp.gov.pl","kwpsp.gov.pl","psp.gov.pl","wskr.gov.pl","kwp.gov.pl","mw.gov.pl","ug.gov.pl","um.gov.pl","umig.gov.pl","ugim.gov.pl","upow.gov.pl","uw.gov.pl","starostwo.gov.pl","pa.gov.pl","po.gov.pl","psse.gov.pl","pup.gov.pl","rzgw.gov.pl","sa.gov.pl","so.gov.pl","sr.gov.pl","wsa.gov.pl","sko.gov.pl","uzs.gov.pl","wiih.gov.pl","winb.gov.pl","pinb.gov.pl","wios.gov.pl","witd.gov.pl","wzmiuw.gov.pl","piw.gov.pl","wiw.gov.pl","griw.gov.pl","wif.gov.pl","oum.gov.pl","sdn.gov.pl","zp.gov.pl","uppo.gov.pl","mup.gov.pl","wuoz.gov.pl","konsulat.gov.pl","oirm.gov.pl","augustow.pl","babia-gora.pl","bedzin.pl","beskidy.pl","bialowieza.pl","bialystok.pl","bielawa.pl","bieszczady.pl","boleslawiec.pl","bydgoszcz.pl","bytom.pl","cieszyn.pl","czeladz.pl","czest.pl","dlugoleka.pl","elblag.pl","elk.pl","glogow.pl","gniezno.pl","gorlice.pl","grajewo.pl","ilawa.pl","jaworzno.pl","jelenia-gora.pl","jgora.pl","kalisz.pl","kazimierz-dolny.pl","karpacz.pl","kartuzy.pl","kaszuby.pl","katowice.pl","kepno.pl","ketrzyn.pl","klodzko.pl","kobierzyce.pl","kolobrzeg.pl","konin.pl","konskowola.pl","kutno.pl","lapy.pl","lebork.pl","legnica.pl","lezajsk.pl","limanowa.pl","lomza.pl","lowicz.pl","lubin.pl","lukow.pl","malbork.pl","malopolska.pl","mazowsze.pl","mazury.pl","mielec.pl","mielno.pl","mragowo.pl","naklo.pl","nowaruda.pl","nysa.pl","olawa.pl","olecko.pl","olkusz.pl","olsztyn.pl","opoczno.pl","opole.pl","ostroda.pl","ostroleka.pl","ostrowiec.pl","ostrowwlkp.pl","pila.pl","pisz.pl","podhale.pl","podlasie.pl","polkowice.pl","pomorze.pl","pomorskie.pl","prochowice.pl","pruszkow.pl","przeworsk.pl","pulawy.pl","radom.pl","rawa-maz.pl","rybnik.pl","rzeszow.pl","sanok.pl","sejny.pl","slask.pl","slupsk.pl","sosnowiec.pl","stalowa-wola.pl","skoczow.pl","starachowice.pl","stargard.pl","suwalki.pl","swidnica.pl","swiebodzin.pl","swinoujscie.pl","szczecin.pl","szczytno.pl","tarnobrzeg.pl","tgory.pl","turek.pl","tychy.pl","ustka.pl","walbrzych.pl","warmia.pl","warszawa.pl","waw.pl","wegrow.pl","wielun.pl","wlocl.pl","wloclawek.pl","wodzislaw.pl","wolomin.pl","wroclaw.pl","zachpomor.pl","zagan.pl","zarow.pl","zgora.pl","zgorzelec.pl","pm","pn","gov.pn","co.pn","org.pn","edu.pn","net.pn","post","pr","com.pr","net.pr","org.pr","gov.pr","edu.pr","isla.pr","pro.pr","biz.pr","info.pr","name.pr","est.pr","prof.pr","ac.pr","pro","aaa.pro","aca.pro","acct.pro","avocat.pro","bar.pro","cpa.pro","eng.pro","jur.pro","law.pro","med.pro","recht.pro","ps","edu.ps","gov.ps","sec.ps","plo.ps","com.ps","org.ps","net.ps","pt","net.pt","gov.pt","org.pt","edu.pt","int.pt","publ.pt","com.pt","nome.pt","pw","co.pw","ne.pw","or.pw","ed.pw","go.pw","belau.pw","py","com.py","coop.py","edu.py","gov.py","mil.py","net.py","org.py","qa","com.qa","edu.qa","gov.qa","mil.qa","name.qa","net.qa","org.qa","sch.qa","re","asso.re","com.re","nom.re","ro","arts.ro","com.ro","firm.ro","info.ro","nom.ro","nt.ro","org.ro","rec.ro","store.ro","tm.ro","www.ro","rs","ac.rs","co.rs","edu.rs","gov.rs","in.rs","org.rs","ru","rw","ac.rw","co.rw","coop.rw","gov.rw","mil.rw","net.rw","org.rw","sa","com.sa","net.sa","org.sa","gov.sa","med.sa","pub.sa","edu.sa","sch.sa","sb","com.sb","edu.sb","gov.sb","net.sb","org.sb","sc","com.sc","gov.sc","net.sc","org.sc","edu.sc","sd","com.sd","net.sd","org.sd","edu.sd","med.sd","tv.sd","gov.sd","info.sd","se","a.se","ac.se","b.se","bd.se","brand.se","c.se","d.se","e.se","f.se","fh.se","fhsk.se","fhv.se","g.se","h.se","i.se","k.se","komforb.se","kommunalforbund.se","komvux.se","l.se","lanbib.se","m.se","n.se","naturbruksgymn.se","o.se","org.se","p.se","parti.se","pp.se","press.se","r.se","s.se","t.se","tm.se","u.se","w.se","x.se","y.se","z.se","sg","com.sg","net.sg","org.sg","gov.sg","edu.sg","per.sg","sh","com.sh","net.sh","gov.sh","org.sh","mil.sh","si","sj","sk","sl","com.sl","net.sl","edu.sl","gov.sl","org.sl","sm","sn","art.sn","com.sn","edu.sn","gouv.sn","org.sn","perso.sn","univ.sn","so","com.so","edu.so","gov.so","me.so","net.so","org.so","sr","ss","biz.ss","com.ss","edu.ss","gov.ss","me.ss","net.ss","org.ss","sch.ss","st","co.st","com.st","consulado.st","edu.st","embaixada.st","mil.st","net.st","org.st","principe.st","saotome.st","store.st","su","sv","com.sv","edu.sv","gob.sv","org.sv","red.sv","sx","gov.sx","sy","edu.sy","gov.sy","net.sy","mil.sy","com.sy","org.sy","sz","co.sz","ac.sz","org.sz","tc","td","tel","tf","tg","th","ac.th","co.th","go.th","in.th","mi.th","net.th","or.th","tj","ac.tj","biz.tj","co.tj","com.tj","edu.tj","go.tj","gov.tj","int.tj","mil.tj","name.tj","net.tj","nic.tj","org.tj","test.tj","web.tj","tk","tl","gov.tl","tm","com.tm","co.tm","org.tm","net.tm","nom.tm","gov.tm","mil.tm","edu.tm","tn","com.tn","ens.tn","fin.tn","gov.tn","ind.tn","info.tn","intl.tn","mincom.tn","nat.tn","net.tn","org.tn","perso.tn","tourism.tn","to","com.to","gov.to","net.to","org.to","edu.to","mil.to","tr","av.tr","bbs.tr","bel.tr","biz.tr","com.tr","dr.tr","edu.tr","gen.tr","gov.tr","info.tr","mil.tr","k12.tr","kep.tr","name.tr","net.tr","org.tr","pol.tr","tel.tr","tsk.tr","tv.tr","web.tr","nc.tr","gov.nc.tr","tt","co.tt","com.tt","org.tt","net.tt","biz.tt","info.tt","pro.tt","int.tt","coop.tt","jobs.tt","mobi.tt","travel.tt","museum.tt","aero.tt","name.tt","gov.tt","edu.tt","tv","tw","edu.tw","gov.tw","mil.tw","com.tw","net.tw","org.tw","idv.tw","game.tw","ebiz.tw","club.tw","網路.tw","組織.tw","商業.tw","tz","ac.tz","co.tz","go.tz","hotel.tz","info.tz","me.tz","mil.tz","mobi.tz","ne.tz","or.tz","sc.tz","tv.tz","ua","com.ua","edu.ua","gov.ua","in.ua","net.ua","org.ua","cherkassy.ua","cherkasy.ua","chernigov.ua","chernihiv.ua","chernivtsi.ua","chernovtsy.ua","ck.ua","cn.ua","cr.ua","crimea.ua","cv.ua","dn.ua","dnepropetrovsk.ua","dnipropetrovsk.ua","donetsk.ua","dp.ua","if.ua","ivano-frankivsk.ua","kh.ua","kharkiv.ua","kharkov.ua","kherson.ua","khmelnitskiy.ua","khmelnytskyi.ua","kiev.ua","kirovograd.ua","km.ua","kr.ua","krym.ua","ks.ua","kv.ua","kyiv.ua","lg.ua","lt.ua","lugansk.ua","lutsk.ua","lv.ua","lviv.ua","mk.ua","mykolaiv.ua","nikolaev.ua","od.ua","odesa.ua","odessa.ua","pl.ua","poltava.ua","rivne.ua","rovno.ua","rv.ua","sb.ua","sebastopol.ua","sevastopol.ua","sm.ua","sumy.ua","te.ua","ternopil.ua","uz.ua","uzhgorod.ua","vinnica.ua","vinnytsia.ua","vn.ua","volyn.ua","yalta.ua","zaporizhzhe.ua","zaporizhzhia.ua","zhitomir.ua","zhytomyr.ua","zp.ua","zt.ua","ug","co.ug","or.ug","ac.ug","sc.ug","go.ug","ne.ug","com.ug","org.ug","uk","ac.uk","co.uk","gov.uk","ltd.uk","me.uk","net.uk","nhs.uk","org.uk","plc.uk","police.uk","*.sch.uk","us","dni.us","fed.us","isa.us","kids.us","nsn.us","ak.us","al.us","ar.us","as.us","az.us","ca.us","co.us","ct.us","dc.us","de.us","fl.us","ga.us","gu.us","hi.us","ia.us","id.us","il.us","in.us","ks.us","ky.us","la.us","ma.us","md.us","me.us","mi.us","mn.us","mo.us","ms.us","mt.us","nc.us","nd.us","ne.us","nh.us","nj.us","nm.us","nv.us","ny.us","oh.us","ok.us","or.us","pa.us","pr.us","ri.us","sc.us","sd.us","tn.us","tx.us","ut.us","vi.us","vt.us","va.us","wa.us","wi.us","wv.us","wy.us","k12.ak.us","k12.al.us","k12.ar.us","k12.as.us","k12.az.us","k12.ca.us","k12.co.us","k12.ct.us","k12.dc.us","k12.de.us","k12.fl.us","k12.ga.us","k12.gu.us","k12.ia.us","k12.id.us","k12.il.us","k12.in.us","k12.ks.us","k12.ky.us","k12.la.us","k12.ma.us","k12.md.us","k12.me.us","k12.mi.us","k12.mn.us","k12.mo.us","k12.ms.us","k12.mt.us","k12.nc.us","k12.ne.us","k12.nh.us","k12.nj.us","k12.nm.us","k12.nv.us","k12.ny.us","k12.oh.us","k12.ok.us","k12.or.us","k12.pa.us","k12.pr.us","k12.sc.us","k12.tn.us","k12.tx.us","k12.ut.us","k12.vi.us","k12.vt.us","k12.va.us","k12.wa.us","k12.wi.us","k12.wy.us","cc.ak.us","cc.al.us","cc.ar.us","cc.as.us","cc.az.us","cc.ca.us","cc.co.us","cc.ct.us","cc.dc.us","cc.de.us","cc.fl.us","cc.ga.us","cc.gu.us","cc.hi.us","cc.ia.us","cc.id.us","cc.il.us","cc.in.us","cc.ks.us","cc.ky.us","cc.la.us","cc.ma.us","cc.md.us","cc.me.us","cc.mi.us","cc.mn.us","cc.mo.us","cc.ms.us","cc.mt.us","cc.nc.us","cc.nd.us","cc.ne.us","cc.nh.us","cc.nj.us","cc.nm.us","cc.nv.us","cc.ny.us","cc.oh.us","cc.ok.us","cc.or.us","cc.pa.us","cc.pr.us","cc.ri.us","cc.sc.us","cc.sd.us","cc.tn.us","cc.tx.us","cc.ut.us","cc.vi.us","cc.vt.us","cc.va.us","cc.wa.us","cc.wi.us","cc.wv.us","cc.wy.us","lib.ak.us","lib.al.us","lib.ar.us","lib.as.us","lib.az.us","lib.ca.us","lib.co.us","lib.ct.us","lib.dc.us","lib.fl.us","lib.ga.us","lib.gu.us","lib.hi.us","lib.ia.us","lib.id.us","lib.il.us","lib.in.us","lib.ks.us","lib.ky.us","lib.la.us","lib.ma.us","lib.md.us","lib.me.us","lib.mi.us","lib.mn.us","lib.mo.us","lib.ms.us","lib.mt.us","lib.nc.us","lib.nd.us","lib.ne.us","lib.nh.us","lib.nj.us","lib.nm.us","lib.nv.us","lib.ny.us","lib.oh.us","lib.ok.us","lib.or.us","lib.pa.us","lib.pr.us","lib.ri.us","lib.sc.us","lib.sd.us","lib.tn.us","lib.tx.us","lib.ut.us","lib.vi.us","lib.vt.us","lib.va.us","lib.wa.us","lib.wi.us","lib.wy.us","pvt.k12.ma.us","chtr.k12.ma.us","paroch.k12.ma.us","ann-arbor.mi.us","cog.mi.us","dst.mi.us","eaton.mi.us","gen.mi.us","mus.mi.us","tec.mi.us","washtenaw.mi.us","uy","com.uy","edu.uy","gub.uy","mil.uy","net.uy","org.uy","uz","co.uz","com.uz","net.uz","org.uz","va","vc","com.vc","net.vc","org.vc","gov.vc","mil.vc","edu.vc","ve","arts.ve","bib.ve","co.ve","com.ve","e12.ve","edu.ve","firm.ve","gob.ve","gov.ve","info.ve","int.ve","mil.ve","net.ve","nom.ve","org.ve","rar.ve","rec.ve","store.ve","tec.ve","web.ve","vg","vi","co.vi","com.vi","k12.vi","net.vi","org.vi","vn","com.vn","net.vn","org.vn","edu.vn","gov.vn","int.vn","ac.vn","biz.vn","info.vn","name.vn","pro.vn","health.vn","vu","com.vu","edu.vu","net.vu","org.vu","wf","ws","com.ws","net.ws","org.ws","gov.ws","edu.ws","yt","امارات","հայ","বাংলা","бг","البحرين","бел","中国","中國","الجزائر","مصر","ею","ευ","موريتانيا","გე","ελ","香港","公司.香港","教育.香港","政府.香港","個人.香港","網絡.香港","組織.香港","ಭಾರತ","ଭାରତ","ভাৰত","भारतम्","भारोत","ڀارت","ഭാരതം","भारत","بارت","بھارت","భారత్","ભારત","ਭਾਰਤ","ভারত","இந்தியா","ایران","ايران","عراق","الاردن","한국","қаз","ລາວ","ලංකා","இலங்கை","المغرب","мкд","мон","澳門","澳门","مليسيا","عمان","پاکستان","پاكستان","فلسطين","срб","пр.срб","орг.срб","обр.срб","од.срб","упр.срб","ак.срб","рф","قطر","السعودية","السعودیة","السعودیۃ","السعوديه","سودان","新加坡","சிங்கப்பூர்","سورية","سوريا","ไทย","ศึกษา.ไทย","ธุรกิจ.ไทย","รัฐบาล.ไทย","ทหาร.ไทย","เน็ต.ไทย","องค์กร.ไทย","تونس","台灣","台湾","臺灣","укр","اليمن","xxx","ye","com.ye","edu.ye","gov.ye","net.ye","mil.ye","org.ye","ac.za","agric.za","alt.za","co.za","edu.za","gov.za","grondar.za","law.za","mil.za","net.za","ngo.za","nic.za","nis.za","nom.za","org.za","school.za","tm.za","web.za","zm","ac.zm","biz.zm","co.zm","com.zm","edu.zm","gov.zm","info.zm","mil.zm","net.zm","org.zm","sch.zm","zw","ac.zw","co.zw","gov.zw","mil.zw","org.zw","aaa","aarp","abarth","abb","abbott","abbvie","abc","able","abogado","abudhabi","academy","accenture","accountant","accountants","aco","actor","adac","ads","adult","aeg","aetna","afl","africa","agakhan","agency","aig","airbus","airforce","airtel","akdn","alfaromeo","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","aol","apartments","app","apple","aquarelle","arab","aramco","archi","army","art","arte","asda","associates","athleta","attorney","auction","audi","audible","audio","auspost","author","auto","autos","avianca","aws","axa","azure","baby","baidu","banamex","bananarepublic","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bbc","bbt","bbva","bcg","bcn","beats","beauty","beer","bentley","berlin","best","bestbuy","bet","bharti","bible","bid","bike","bing","bingo","bio","black","blackfriday","blockbuster","blog","bloomberg","blue","bms","bmw","bnpparibas","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","bradesco","bridgestone","broadway","broker","brother","brussels","bugatti","build","builders","business","buy","buzz","bzh","cab","cafe","cal","call","calvinklein","cam","camera","camp","cancerresearch","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","cash","casino","catering","catholic","cba","cbn","cbre","cbs","center","ceo","cern","cfa","cfd","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","cipriani","circle","cisco","citadel","citi","citic","city","cityeats","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","coach","codes","coffee","college","cologne","comcast","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cookingchannel","cool","corsica","country","coupon","coupons","courses","cpa","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","cuisinella","cymru","cyou","dabur","dad","dance","data","date","dating","datsun","day","dclk","dds","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dnp","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","dunlop","dupont","durban","dvag","dvr","earth","eat","eco","edeka","education","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","ericsson","erni","esq","estate","etisalat","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fiat","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","flickr","flights","flir","florist","flowers","fly","foo","food","foodnetwork","football","ford","forex","forsale","forum","foundation","fox","free","fresenius","frl","frogans","frontdoor","frontier","ftr","fujitsu","fun","fund","furniture","futbol","fyi","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gbiz","gdn","gea","gent","genting","george","ggee","gift","gifts","gives","giving","glass","gle","global","globo","gmail","gmbh","gmo","gmx","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","grainger","graphics","gratis","green","gripe","grocery","group","guardian","gucci","guge","guide","guitars","guru","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hgtv","hiphop","hisamitsu","hitachi","hiv","hkt","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hoteles","hotels","hotmail","house","how","hsbc","hughes","hyatt","hyundai","ibm","icbc","ice","icu","ieee","ifm","ikano","imamat","imdb","immo","immobilien","inc","industries","infiniti","ing","ink","institute","insurance","insure","international","intuit","investments","ipiranga","irish","ismaili","ist","istanbul","itau","itv","jaguar","java","jcb","jeep","jetzt","jewelry","jio","jll","jmp","jnj","joburg","jot","joy","jpmorgan","jprs","juegos","juniper","kaufen","kddi","kerryhotels","kerrylogistics","kerryproperties","kfh","kia","kids","kim","kinder","kindle","kitchen","kiwi","koeln","komatsu","kosher","kpmg","kpn","krd","kred","kuokgroup","kyoto","lacaixa","lamborghini","lamer","lancaster","lancia","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","linde","link","lipsy","live","living","llc","llp","loan","loans","locker","locus","loft","lol","london","lotte","lotto","love","lpl","lplfinancial","ltd","ltda","lundbeck","luxe","luxury","macys","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","maserati","mattel","mba","mckinsey","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","miami","microsoft","mini","mint","mit","mitsubishi","mlb","mls","mma","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","msd","mtn","mtr","music","mutual","nab","nagoya","natura","navy","nba","nec","netbank","netflix","network","neustar","new","news","next","nextdirect","nexus","nfl","ngo","nhk","nico","nike","nikon","ninja","nissan","nissay","nokia","northwesternmutual","norton","now","nowruz","nowtv","nra","nrw","ntt","nyc","obi","observer","office","okinawa","olayan","olayangroup","oldnavy","ollo","omega","one","ong","onl","online","ooo","open","oracle","orange","organic","origins","osaka","otsuka","ott","ovh","page","panasonic","paris","pars","partners","parts","party","passagens","pay","pccw","pet","pfizer","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","place","play","playstation","plumbing","plus","pnc","pohl","poker","politie","porn","pramerica","praxi","press","prime","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","pub","pwc","qpon","quebec","quest","racing","radio","read","realestate","realtor","realty","recipes","red","redstone","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","ril","rio","rip","rocher","rocks","rodeo","rogers","room","rsvp","rugby","ruhr","run","rwe","ryukyu","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sbi","sbs","sca","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scot","search","seat","secure","security","seek","select","sener","services","ses","seven","sew","sex","sexy","sfr","shangrila","sharp","shaw","shell","shia","shiksha","shoes","shop","shopping","shouji","show","showtime","silk","sina","singles","site","ski","skin","sky","skype","sling","smart","smile","sncf","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","srl","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","sucks","supplies","supply","support","surf","surgery","suzuki","swatch","swiss","sydney","systems","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tci","tdk","team","tech","technology","temasek","tennis","teva","thd","theater","theatre","tiaa","tickets","tienda","tiffany","tips","tires","tirol","tjmaxx","tjx","tkmaxx","tmall","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","trade","trading","training","travel","travelchannel","travelers","travelersinsurance","trust","trv","tube","tui","tunes","tushu","tvs","ubank","ubs","unicom","university","uno","uol","ups","vacations","vana","vanguard","vegas","ventures","verisign","versicherung","vet","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","viva","vivo","vlaanderen","vodka","volkswagen","volvo","vote","voting","voto","voyage","vuelos","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wedding","weibo","weir","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","wtc","wtf","xbox","xerox","xfinity","xihuan","xin","कॉम","セール","佛山","慈善","集团","在线","点看","คอม","八卦","موقع","公益","公司","香格里拉","网站","移动","我爱你","москва","католик","онлайн","сайт","联通","קום","时尚","微博","淡马锡","ファッション","орг","नेट","ストア","アマゾン","삼성","商标","商店","商城","дети","ポイント","新闻","家電","كوم","中文网","中信","娱乐","谷歌","電訊盈科","购物","クラウド","通販","网店","संगठन","餐厅","网络","ком","亚马逊","诺基亚","食品","飞利浦","手机","ارامكو","العليان","اتصالات","بازار","ابوظبي","كاثوليك","همراه","닷컴","政府","شبكة","بيتك","عرب","机构","组织机构","健康","招聘","рус","大拿","みんな","グーグル","世界","書籍","网址","닷넷","コム","天主教","游戏","vermögensberater","vermögensberatung","企业","信息","嘉里大酒店","嘉里","广东","政务","xyz","yachts","yahoo","yamaxun","yandex","yodobashi","yoga","yokohama","you","youtube","yun","zappos","zara","zero","zip","zone","zuerich","cc.ua","inf.ua","ltd.ua","611.to","graphox.us","*.devcdnaccesso.com","adobeaemcloud.com","*.dev.adobeaemcloud.com","hlx.live","adobeaemcloud.net","hlx.page","hlx3.page","beep.pl","airkitapps.com","airkitapps-au.com","airkitapps.eu","aivencloud.com","barsy.ca","*.compute.estate","*.alces.network","kasserver.com","altervista.org","alwaysdata.net","cloudfront.net","*.compute.amazonaws.com","*.compute-1.amazonaws.com","*.compute.amazonaws.com.cn","us-east-1.amazonaws.com","cn-north-1.eb.amazonaws.com.cn","cn-northwest-1.eb.amazonaws.com.cn","elasticbeanstalk.com","ap-northeast-1.elasticbeanstalk.com","ap-northeast-2.elasticbeanstalk.com","ap-northeast-3.elasticbeanstalk.com","ap-south-1.elasticbeanstalk.com","ap-southeast-1.elasticbeanstalk.com","ap-southeast-2.elasticbeanstalk.com","ca-central-1.elasticbeanstalk.com","eu-central-1.elasticbeanstalk.com","eu-west-1.elasticbeanstalk.com","eu-west-2.elasticbeanstalk.com","eu-west-3.elasticbeanstalk.com","sa-east-1.elasticbeanstalk.com","us-east-1.elasticbeanstalk.com","us-east-2.elasticbeanstalk.com","us-gov-west-1.elasticbeanstalk.com","us-west-1.elasticbeanstalk.com","us-west-2.elasticbeanstalk.com","*.elb.amazonaws.com","*.elb.amazonaws.com.cn","awsglobalaccelerator.com","s3.amazonaws.com","s3-ap-northeast-1.amazonaws.com","s3-ap-northeast-2.amazonaws.com","s3-ap-south-1.amazonaws.com","s3-ap-southeast-1.amazonaws.com","s3-ap-southeast-2.amazonaws.com","s3-ca-central-1.amazonaws.com","s3-eu-central-1.amazonaws.com","s3-eu-west-1.amazonaws.com","s3-eu-west-2.amazonaws.com","s3-eu-west-3.amazonaws.com","s3-external-1.amazonaws.com","s3-fips-us-gov-west-1.amazonaws.com","s3-sa-east-1.amazonaws.com","s3-us-gov-west-1.amazonaws.com","s3-us-east-2.amazonaws.com","s3-us-west-1.amazonaws.com","s3-us-west-2.amazonaws.com","s3.ap-northeast-2.amazonaws.com","s3.ap-south-1.amazonaws.com","s3.cn-north-1.amazonaws.com.cn","s3.ca-central-1.amazonaws.com","s3.eu-central-1.amazonaws.com","s3.eu-west-2.amazonaws.com","s3.eu-west-3.amazonaws.com","s3.us-east-2.amazonaws.com","s3.dualstack.ap-northeast-1.amazonaws.com","s3.dualstack.ap-northeast-2.amazonaws.com","s3.dualstack.ap-south-1.amazonaws.com","s3.dualstack.ap-southeast-1.amazonaws.com","s3.dualstack.ap-southeast-2.amazonaws.com","s3.dualstack.ca-central-1.amazonaws.com","s3.dualstack.eu-central-1.amazonaws.com","s3.dualstack.eu-west-1.amazonaws.com","s3.dualstack.eu-west-2.amazonaws.com","s3.dualstack.eu-west-3.amazonaws.com","s3.dualstack.sa-east-1.amazonaws.com","s3.dualstack.us-east-1.amazonaws.com","s3.dualstack.us-east-2.amazonaws.com","s3-website-us-east-1.amazonaws.com","s3-website-us-west-1.amazonaws.com","s3-website-us-west-2.amazonaws.com","s3-website-ap-northeast-1.amazonaws.com","s3-website-ap-southeast-1.amazonaws.com","s3-website-ap-southeast-2.amazonaws.com","s3-website-eu-west-1.amazonaws.com","s3-website-sa-east-1.amazonaws.com","s3-website.ap-northeast-2.amazonaws.com","s3-website.ap-south-1.amazonaws.com","s3-website.ca-central-1.amazonaws.com","s3-website.eu-central-1.amazonaws.com","s3-website.eu-west-2.amazonaws.com","s3-website.eu-west-3.amazonaws.com","s3-website.us-east-2.amazonaws.com","t3l3p0rt.net","tele.amune.org","apigee.io","siiites.com","appspacehosted.com","appspaceusercontent.com","appudo.net","on-aptible.com","user.aseinet.ne.jp","gv.vc","d.gv.vc","user.party.eus","pimienta.org","poivron.org","potager.org","sweetpepper.org","myasustor.com","cdn.prod.atlassian-dev.net","translated.page","myfritz.net","onavstack.net","*.awdev.ca","*.advisor.ws","ecommerce-shop.pl","b-data.io","backplaneapp.io","balena-devices.com","rs.ba","*.banzai.cloud","app.banzaicloud.io","*.backyards.banzaicloud.io","base.ec","official.ec","buyshop.jp","fashionstore.jp","handcrafted.jp","kawaiishop.jp","supersale.jp","theshop.jp","shopselect.net","base.shop","*.beget.app","betainabox.com","bnr.la","bitbucket.io","blackbaudcdn.net","of.je","bluebite.io","boomla.net","boutir.com","boxfuse.io","square7.ch","bplaced.com","bplaced.de","square7.de","bplaced.net","square7.net","shop.brendly.rs","browsersafetymark.io","uk0.bigv.io","dh.bytemark.co.uk","vm.bytemark.co.uk","cafjs.com","mycd.eu","drr.ac","uwu.ai","carrd.co","crd.co","ju.mp","ae.org","br.com","cn.com","com.de","com.se","de.com","eu.com","gb.net","hu.net","jp.net","jpn.com","mex.com","ru.com","sa.com","se.net","uk.com","uk.net","us.com","za.bz","za.com","ar.com","hu.com","kr.com","no.com","qc.com","uy.com","africa.com","gr.com","in.net","web.in","us.org","co.com","aus.basketball","nz.basketball","radio.am","radio.fm","c.la","certmgr.org","cx.ua","discourse.group","discourse.team","cleverapps.io","clerk.app","clerkstage.app","*.lcl.dev","*.lclstage.dev","*.stg.dev","*.stgstage.dev","clickrising.net","c66.me","cloud66.ws","cloud66.zone","jdevcloud.com","wpdevcloud.com","cloudaccess.host","freesite.host","cloudaccess.net","cloudcontrolled.com","cloudcontrolapp.com","*.cloudera.site","pages.dev","trycloudflare.com","workers.dev","wnext.app","co.ca","*.otap.co","co.cz","c.cdn77.org","cdn77-ssl.net","r.cdn77.net","rsc.cdn77.org","ssl.origin.cdn77-secure.org","cloudns.asia","cloudns.biz","cloudns.club","cloudns.cc","cloudns.eu","cloudns.in","cloudns.info","cloudns.org","cloudns.pro","cloudns.pw","cloudns.us","cnpy.gdn","codeberg.page","co.nl","co.no","webhosting.be","hosting-cluster.nl","ac.ru","edu.ru","gov.ru","int.ru","mil.ru","test.ru","dyn.cosidns.de","dynamisches-dns.de","dnsupdater.de","internet-dns.de","l-o-g-i-n.de","dynamic-dns.info","feste-ip.net","knx-server.net","static-access.net","realm.cz","*.cryptonomic.net","cupcake.is","curv.dev","*.customer-oci.com","*.oci.customer-oci.com","*.ocp.customer-oci.com","*.ocs.customer-oci.com","cyon.link","cyon.site","fnwk.site","folionetwork.site","platform0.app","daplie.me","localhost.daplie.me","dattolocal.com","dattorelay.com","dattoweb.com","mydatto.com","dattolocal.net","mydatto.net","biz.dk","co.dk","firm.dk","reg.dk","store.dk","dyndns.dappnode.io","*.dapps.earth","*.bzz.dapps.earth","builtwithdark.com","demo.datadetect.com","instance.datadetect.com","edgestack.me","ddns5.com","debian.net","deno.dev","deno-staging.dev","dedyn.io","deta.app","deta.dev","*.rss.my.id","*.diher.solutions","discordsays.com","discordsez.com","jozi.biz","dnshome.de","online.th","shop.th","drayddns.com","shoparena.pl","dreamhosters.com","mydrobo.com","drud.io","drud.us","duckdns.org","bip.sh","bitbridge.net","dy.fi","tunk.org","dyndns-at-home.com","dyndns-at-work.com","dyndns-blog.com","dyndns-free.com","dyndns-home.com","dyndns-ip.com","dyndns-mail.com","dyndns-office.com","dyndns-pics.com","dyndns-remote.com","dyndns-server.com","dyndns-web.com","dyndns-wiki.com","dyndns-work.com","dyndns.biz","dyndns.info","dyndns.org","dyndns.tv","at-band-camp.net","ath.cx","barrel-of-knowledge.info","barrell-of-knowledge.info","better-than.tv","blogdns.com","blogdns.net","blogdns.org","blogsite.org","boldlygoingnowhere.org","broke-it.net","buyshouses.net","cechire.com","dnsalias.com","dnsalias.net","dnsalias.org","dnsdojo.com","dnsdojo.net","dnsdojo.org","does-it.net","doesntexist.com","doesntexist.org","dontexist.com","dontexist.net","dontexist.org","doomdns.com","doomdns.org","dvrdns.org","dyn-o-saur.com","dynalias.com","dynalias.net","dynalias.org","dynathome.net","dyndns.ws","endofinternet.net","endofinternet.org","endoftheinternet.org","est-a-la-maison.com","est-a-la-masion.com","est-le-patron.com","est-mon-blogueur.com","for-better.biz","for-more.biz","for-our.info","for-some.biz","for-the.biz","forgot.her.name","forgot.his.name","from-ak.com","from-al.com","from-ar.com","from-az.net","from-ca.com","from-co.net","from-ct.com","from-dc.com","from-de.com","from-fl.com","from-ga.com","from-hi.com","from-ia.com","from-id.com","from-il.com","from-in.com","from-ks.com","from-ky.com","from-la.net","from-ma.com","from-md.com","from-me.org","from-mi.com","from-mn.com","from-mo.com","from-ms.com","from-mt.com","from-nc.com","from-nd.com","from-ne.com","from-nh.com","from-nj.com","from-nm.com","from-nv.com","from-ny.net","from-oh.com","from-ok.com","from-or.com","from-pa.com","from-pr.com","from-ri.com","from-sc.com","from-sd.com","from-tn.com","from-tx.com","from-ut.com","from-va.com","from-vt.com","from-wa.com","from-wi.com","from-wv.com","from-wy.com","ftpaccess.cc","fuettertdasnetz.de","game-host.org","game-server.cc","getmyip.com","gets-it.net","go.dyndns.org","gotdns.com","gotdns.org","groks-the.info","groks-this.info","ham-radio-op.net","here-for-more.info","hobby-site.com","hobby-site.org","home.dyndns.org","homedns.org","homeftp.net","homeftp.org","homeip.net","homelinux.com","homelinux.net","homelinux.org","homeunix.com","homeunix.net","homeunix.org","iamallama.com","in-the-band.net","is-a-anarchist.com","is-a-blogger.com","is-a-bookkeeper.com","is-a-bruinsfan.org","is-a-bulls-fan.com","is-a-candidate.org","is-a-caterer.com","is-a-celticsfan.org","is-a-chef.com","is-a-chef.net","is-a-chef.org","is-a-conservative.com","is-a-cpa.com","is-a-cubicle-slave.com","is-a-democrat.com","is-a-designer.com","is-a-doctor.com","is-a-financialadvisor.com","is-a-geek.com","is-a-geek.net","is-a-geek.org","is-a-green.com","is-a-guru.com","is-a-hard-worker.com","is-a-hunter.com","is-a-knight.org","is-a-landscaper.com","is-a-lawyer.com","is-a-liberal.com","is-a-libertarian.com","is-a-linux-user.org","is-a-llama.com","is-a-musician.com","is-a-nascarfan.com","is-a-nurse.com","is-a-painter.com","is-a-patsfan.org","is-a-personaltrainer.com","is-a-photographer.com","is-a-player.com","is-a-republican.com","is-a-rockstar.com","is-a-socialist.com","is-a-soxfan.org","is-a-student.com","is-a-teacher.com","is-a-techie.com","is-a-therapist.com","is-an-accountant.com","is-an-actor.com","is-an-actress.com","is-an-anarchist.com","is-an-artist.com","is-an-engineer.com","is-an-entertainer.com","is-by.us","is-certified.com","is-found.org","is-gone.com","is-into-anime.com","is-into-cars.com","is-into-cartoons.com","is-into-games.com","is-leet.com","is-lost.org","is-not-certified.com","is-saved.org","is-slick.com","is-uberleet.com","is-very-bad.org","is-very-evil.org","is-very-good.org","is-very-nice.org","is-very-sweet.org","is-with-theband.com","isa-geek.com","isa-geek.net","isa-geek.org","isa-hockeynut.com","issmarterthanyou.com","isteingeek.de","istmein.de","kicks-ass.net","kicks-ass.org","knowsitall.info","land-4-sale.us","lebtimnetz.de","leitungsen.de","likes-pie.com","likescandy.com","merseine.nu","mine.nu","misconfused.org","mypets.ws","myphotos.cc","neat-url.com","office-on-the.net","on-the-web.tv","podzone.net","podzone.org","readmyblog.org","saves-the-whales.com","scrapper-site.net","scrapping.cc","selfip.biz","selfip.com","selfip.info","selfip.net","selfip.org","sells-for-less.com","sells-for-u.com","sells-it.net","sellsyourhome.org","servebbs.com","servebbs.net","servebbs.org","serveftp.net","serveftp.org","servegame.org","shacknet.nu","simple-url.com","space-to-rent.com","stuff-4-sale.org","stuff-4-sale.us","teaches-yoga.com","thruhere.net","traeumtgerade.de","webhop.biz","webhop.info","webhop.net","webhop.org","worse-than.tv","writesthisblog.com","ddnss.de","dyn.ddnss.de","dyndns.ddnss.de","dyndns1.de","dyn-ip24.de","home-webserver.de","dyn.home-webserver.de","myhome-server.de","ddnss.org","definima.net","definima.io","ondigitalocean.app","*.digitaloceanspaces.com","bci.dnstrace.pro","ddnsfree.com","ddnsgeek.com","giize.com","gleeze.com","kozow.com","loseyourip.com","ooguy.com","theworkpc.com","casacam.net","dynu.net","accesscam.org","camdvr.org","freeddns.org","mywire.org","webredirect.org","myddns.rocks","blogsite.xyz","dynv6.net","e4.cz","eero.online","eero-stage.online","elementor.cloud","elementor.cool","en-root.fr","mytuleap.com","tuleap-partners.com","encr.app","encoreapi.com","onred.one","staging.onred.one","eu.encoway.cloud","eu.org","al.eu.org","asso.eu.org","at.eu.org","au.eu.org","be.eu.org","bg.eu.org","ca.eu.org","cd.eu.org","ch.eu.org","cn.eu.org","cy.eu.org","cz.eu.org","de.eu.org","dk.eu.org","edu.eu.org","ee.eu.org","es.eu.org","fi.eu.org","fr.eu.org","gr.eu.org","hr.eu.org","hu.eu.org","ie.eu.org","il.eu.org","in.eu.org","int.eu.org","is.eu.org","it.eu.org","jp.eu.org","kr.eu.org","lt.eu.org","lu.eu.org","lv.eu.org","mc.eu.org","me.eu.org","mk.eu.org","mt.eu.org","my.eu.org","net.eu.org","ng.eu.org","nl.eu.org","no.eu.org","nz.eu.org","paris.eu.org","pl.eu.org","pt.eu.org","q-a.eu.org","ro.eu.org","ru.eu.org","se.eu.org","si.eu.org","sk.eu.org","tr.eu.org","uk.eu.org","us.eu.org","eurodir.ru","eu-1.evennode.com","eu-2.evennode.com","eu-3.evennode.com","eu-4.evennode.com","us-1.evennode.com","us-2.evennode.com","us-3.evennode.com","us-4.evennode.com","twmail.cc","twmail.net","twmail.org","mymailer.com.tw","url.tw","onfabrica.com","apps.fbsbx.com","ru.net","adygeya.ru","bashkiria.ru","bir.ru","cbg.ru","com.ru","dagestan.ru","grozny.ru","kalmykia.ru","kustanai.ru","marine.ru","mordovia.ru","msk.ru","mytis.ru","nalchik.ru","nov.ru","pyatigorsk.ru","spb.ru","vladikavkaz.ru","vladimir.ru","abkhazia.su","adygeya.su","aktyubinsk.su","arkhangelsk.su","armenia.su","ashgabad.su","azerbaijan.su","balashov.su","bashkiria.su","bryansk.su","bukhara.su","chimkent.su","dagestan.su","east-kazakhstan.su","exnet.su","georgia.su","grozny.su","ivanovo.su","jambyl.su","kalmykia.su","kaluga.su","karacol.su","karaganda.su","karelia.su","khakassia.su","krasnodar.su","kurgan.su","kustanai.su","lenug.su","mangyshlak.su","mordovia.su","msk.su","murmansk.su","nalchik.su","navoi.su","north-kazakhstan.su","nov.su","obninsk.su","penza.su","pokrovsk.su","sochi.su","spb.su","tashkent.su","termez.su","togliatti.su","troitsk.su","tselinograd.su","tula.su","tuva.su","vladikavkaz.su","vladimir.su","vologda.su","channelsdvr.net","u.channelsdvr.net","edgecompute.app","fastly-terrarium.com","fastlylb.net","map.fastlylb.net","freetls.fastly.net","map.fastly.net","a.prod.fastly.net","global.prod.fastly.net","a.ssl.fastly.net","b.ssl.fastly.net","global.ssl.fastly.net","fastvps-server.com","fastvps.host","myfast.host","fastvps.site","myfast.space","fedorainfracloud.org","fedorapeople.org","cloud.fedoraproject.org","app.os.fedoraproject.org","app.os.stg.fedoraproject.org","conn.uk","copro.uk","hosp.uk","mydobiss.com","fh-muenster.io","filegear.me","filegear-au.me","filegear-de.me","filegear-gb.me","filegear-ie.me","filegear-jp.me","filegear-sg.me","firebaseapp.com","fireweb.app","flap.id","onflashdrive.app","fldrv.com","fly.dev","edgeapp.net","shw.io","flynnhosting.net","forgeblocks.com","id.forgerock.io","framer.app","framercanvas.com","*.frusky.de","ravpage.co.il","0e.vc","freebox-os.com","freeboxos.com","fbx-os.fr","fbxos.fr","freebox-os.fr","freeboxos.fr","freedesktop.org","freemyip.com","wien.funkfeuer.at","*.futurecms.at","*.ex.futurecms.at","*.in.futurecms.at","futurehosting.at","futuremailing.at","*.ex.ortsinfo.at","*.kunden.ortsinfo.at","*.statics.cloud","independent-commission.uk","independent-inquest.uk","independent-inquiry.uk","independent-panel.uk","independent-review.uk","public-inquiry.uk","royal-commission.uk","campaign.gov.uk","service.gov.uk","api.gov.uk","gehirn.ne.jp","usercontent.jp","gentapps.com","gentlentapis.com","lab.ms","cdn-edges.net","ghost.io","gsj.bz","githubusercontent.com","githubpreview.dev","github.io","gitlab.io","gitapp.si","gitpage.si","glitch.me","nog.community","co.ro","shop.ro","lolipop.io","angry.jp","babyblue.jp","babymilk.jp","backdrop.jp","bambina.jp","bitter.jp","blush.jp","boo.jp","boy.jp","boyfriend.jp","but.jp","candypop.jp","capoo.jp","catfood.jp","cheap.jp","chicappa.jp","chillout.jp","chips.jp","chowder.jp","chu.jp","ciao.jp","cocotte.jp","coolblog.jp","cranky.jp","cutegirl.jp","daa.jp","deca.jp","deci.jp","digick.jp","egoism.jp","fakefur.jp","fem.jp","flier.jp","floppy.jp","fool.jp","frenchkiss.jp","girlfriend.jp","girly.jp","gloomy.jp","gonna.jp","greater.jp","hacca.jp","heavy.jp","her.jp","hiho.jp","hippy.jp","holy.jp","hungry.jp","icurus.jp","itigo.jp","jellybean.jp","kikirara.jp","kill.jp","kilo.jp","kuron.jp","littlestar.jp","lolipopmc.jp","lolitapunk.jp","lomo.jp","lovepop.jp","lovesick.jp","main.jp","mods.jp","mond.jp","mongolian.jp","moo.jp","namaste.jp","nikita.jp","nobushi.jp","noor.jp","oops.jp","parallel.jp","parasite.jp","pecori.jp","peewee.jp","penne.jp","pepper.jp","perma.jp","pigboat.jp","pinoko.jp","punyu.jp","pupu.jp","pussycat.jp","pya.jp","raindrop.jp","readymade.jp","sadist.jp","schoolbus.jp","secret.jp","staba.jp","stripper.jp","sub.jp","sunnyday.jp","thick.jp","tonkotsu.jp","under.jp","upper.jp","velvet.jp","verse.jp","versus.jp","vivian.jp","watson.jp","weblike.jp","whitesnow.jp","zombie.jp","heteml.net","cloudapps.digital","london.cloudapps.digital","pymnt.uk","homeoffice.gov.uk","ro.im","goip.de","run.app","a.run.app","web.app","*.0emm.com","appspot.com","*.r.appspot.com","codespot.com","googleapis.com","googlecode.com","pagespeedmobilizer.com","publishproxy.com","withgoogle.com","withyoutube.com","*.gateway.dev","cloud.goog","translate.goog","*.usercontent.goog","cloudfunctions.net","blogspot.ae","blogspot.al","blogspot.am","blogspot.ba","blogspot.be","blogspot.bg","blogspot.bj","blogspot.ca","blogspot.cf","blogspot.ch","blogspot.cl","blogspot.co.at","blogspot.co.id","blogspot.co.il","blogspot.co.ke","blogspot.co.nz","blogspot.co.uk","blogspot.co.za","blogspot.com","blogspot.com.ar","blogspot.com.au","blogspot.com.br","blogspot.com.by","blogspot.com.co","blogspot.com.cy","blogspot.com.ee","blogspot.com.eg","blogspot.com.es","blogspot.com.mt","blogspot.com.ng","blogspot.com.tr","blogspot.com.uy","blogspot.cv","blogspot.cz","blogspot.de","blogspot.dk","blogspot.fi","blogspot.fr","blogspot.gr","blogspot.hk","blogspot.hr","blogspot.hu","blogspot.ie","blogspot.in","blogspot.is","blogspot.it","blogspot.jp","blogspot.kr","blogspot.li","blogspot.lt","blogspot.lu","blogspot.md","blogspot.mk","blogspot.mr","blogspot.mx","blogspot.my","blogspot.nl","blogspot.no","blogspot.pe","blogspot.pt","blogspot.qa","blogspot.re","blogspot.ro","blogspot.rs","blogspot.ru","blogspot.se","blogspot.sg","blogspot.si","blogspot.sk","blogspot.sn","blogspot.td","blogspot.tw","blogspot.ug","blogspot.vn","goupile.fr","gov.nl","awsmppl.com","günstigbestellen.de","günstigliefern.de","fin.ci","free.hr","caa.li","ua.rs","conf.se","hs.zone","hs.run","hashbang.sh","hasura.app","hasura-app.io","pages.it.hs-heilbronn.de","hepforge.org","herokuapp.com","herokussl.com","ravendb.cloud","myravendb.com","ravendb.community","ravendb.me","development.run","ravendb.run","homesklep.pl","secaas.hk","hoplix.shop","orx.biz","biz.gl","col.ng","firm.ng","gen.ng","ltd.ng","ngo.ng","edu.scot","sch.so","hostyhosting.io","häkkinen.fi","*.moonscale.io","moonscale.net","iki.fi","ibxos.it","iliadboxos.it","impertrixcdn.com","impertrix.com","smushcdn.com","wphostedmail.com","wpmucdn.com","tempurl.host","wpmudev.host","dyn-berlin.de","in-berlin.de","in-brb.de","in-butter.de","in-dsl.de","in-dsl.net","in-dsl.org","in-vpn.de","in-vpn.net","in-vpn.org","biz.at","info.at","info.cx","ac.leg.br","al.leg.br","am.leg.br","ap.leg.br","ba.leg.br","ce.leg.br","df.leg.br","es.leg.br","go.leg.br","ma.leg.br","mg.leg.br","ms.leg.br","mt.leg.br","pa.leg.br","pb.leg.br","pe.leg.br","pi.leg.br","pr.leg.br","rj.leg.br","rn.leg.br","ro.leg.br","rr.leg.br","rs.leg.br","sc.leg.br","se.leg.br","sp.leg.br","to.leg.br","pixolino.com","na4u.ru","iopsys.se","ipifony.net","iservschule.de","mein-iserv.de","schulplattform.de","schulserver.de","test-iserv.de","iserv.dev","iobb.net","mel.cloudlets.com.au","cloud.interhostsolutions.be","users.scale.virtualcloud.com.br","mycloud.by","alp1.ae.flow.ch","appengine.flow.ch","es-1.axarnet.cloud","diadem.cloud","vip.jelastic.cloud","jele.cloud","it1.eur.aruba.jenv-aruba.cloud","it1.jenv-aruba.cloud","keliweb.cloud","cs.keliweb.cloud","oxa.cloud","tn.oxa.cloud","uk.oxa.cloud","primetel.cloud","uk.primetel.cloud","ca.reclaim.cloud","uk.reclaim.cloud","us.reclaim.cloud","ch.trendhosting.cloud","de.trendhosting.cloud","jele.club","amscompute.com","clicketcloud.com","dopaas.com","hidora.com","paas.hosted-by-previder.com","rag-cloud.hosteur.com","rag-cloud-ch.hosteur.com","jcloud.ik-server.com","jcloud-ver-jpc.ik-server.com","demo.jelastic.com","kilatiron.com","paas.massivegrid.com","jed.wafaicloud.com","lon.wafaicloud.com","ryd.wafaicloud.com","j.scaleforce.com.cy","jelastic.dogado.eu","fi.cloudplatform.fi","demo.datacenter.fi","paas.datacenter.fi","jele.host","mircloud.host","paas.beebyte.io","sekd1.beebyteapp.io","jele.io","cloud-fr1.unispace.io","jc.neen.it","cloud.jelastic.open.tim.it","jcloud.kz","upaas.kazteleport.kz","cloudjiffy.net","fra1-de.cloudjiffy.net","west1-us.cloudjiffy.net","jls-sto1.elastx.net","jls-sto2.elastx.net","jls-sto3.elastx.net","faststacks.net","fr-1.paas.massivegrid.net","lon-1.paas.massivegrid.net","lon-2.paas.massivegrid.net","ny-1.paas.massivegrid.net","ny-2.paas.massivegrid.net","sg-1.paas.massivegrid.net","jelastic.saveincloud.net","nordeste-idc.saveincloud.net","j.scaleforce.net","jelastic.tsukaeru.net","sdscloud.pl","unicloud.pl","mircloud.ru","jelastic.regruhosting.ru","enscaled.sg","jele.site","jelastic.team","orangecloud.tn","j.layershift.co.uk","phx.enscaled.us","mircloud.us","myjino.ru","*.hosting.myjino.ru","*.landing.myjino.ru","*.spectrum.myjino.ru","*.vps.myjino.ru","jotelulu.cloud","*.triton.zone","*.cns.joyent.com","js.org","kaas.gg","khplay.nl","ktistory.com","kapsi.fi","keymachine.de","kinghost.net","uni5.net","knightpoint.systems","koobin.events","oya.to","kuleuven.cloud","ezproxy.kuleuven.be","co.krd","edu.krd","krellian.net","webthings.io","git-repos.de","lcube-server.de","svn-repos.de","leadpages.co","lpages.co","lpusercontent.com","lelux.site","co.business","co.education","co.events","co.financial","co.network","co.place","co.technology","app.lmpm.com","linkyard.cloud","linkyard-cloud.ch","members.linode.com","*.nodebalancer.linode.com","*.linodeobjects.com","ip.linodeusercontent.com","we.bs","*.user.localcert.dev","localzone.xyz","loginline.app","loginline.dev","loginline.io","loginline.services","loginline.site","servers.run","lohmus.me","krasnik.pl","leczna.pl","lubartow.pl","lublin.pl","poniatowa.pl","swidnik.pl","glug.org.uk","lug.org.uk","lugs.org.uk","barsy.bg","barsy.co.uk","barsyonline.co.uk","barsycenter.com","barsyonline.com","barsy.club","barsy.de","barsy.eu","barsy.in","barsy.info","barsy.io","barsy.me","barsy.menu","barsy.mobi","barsy.net","barsy.online","barsy.org","barsy.pro","barsy.pub","barsy.ro","barsy.shop","barsy.site","barsy.support","barsy.uk","*.magentosite.cloud","mayfirst.info","mayfirst.org","hb.cldmail.ru","cn.vu","mazeplay.com","mcpe.me","mcdir.me","mcdir.ru","mcpre.ru","vps.mcdir.ru","mediatech.by","mediatech.dev","hra.health","miniserver.com","memset.net","messerli.app","*.cloud.metacentrum.cz","custom.metacentrum.cz","flt.cloud.muni.cz","usr.cloud.muni.cz","meteorapp.com","eu.meteorapp.com","co.pl","*.azurecontainer.io","azurewebsites.net","azure-mobile.net","cloudapp.net","azurestaticapps.net","1.azurestaticapps.net","centralus.azurestaticapps.net","eastasia.azurestaticapps.net","eastus2.azurestaticapps.net","westeurope.azurestaticapps.net","westus2.azurestaticapps.net","csx.cc","mintere.site","forte.id","mozilla-iot.org","bmoattachments.org","net.ru","org.ru","pp.ru","hostedpi.com","customer.mythic-beasts.com","caracal.mythic-beasts.com","fentiger.mythic-beasts.com","lynx.mythic-beasts.com","ocelot.mythic-beasts.com","oncilla.mythic-beasts.com","onza.mythic-beasts.com","sphinx.mythic-beasts.com","vs.mythic-beasts.com","x.mythic-beasts.com","yali.mythic-beasts.com","cust.retrosnub.co.uk","ui.nabu.casa","pony.club","of.fashion","in.london","of.london","from.marketing","with.marketing","for.men","repair.men","and.mom","for.mom","for.one","under.one","for.sale","that.win","from.work","to.work","cloud.nospamproxy.com","netlify.app","4u.com","ngrok.io","nh-serv.co.uk","nfshost.com","*.developer.app","noop.app","*.northflank.app","*.build.run","*.code.run","*.database.run","*.migration.run","noticeable.news","dnsking.ch","mypi.co","n4t.co","001www.com","ddnslive.com","myiphost.com","forumz.info","16-b.it","32-b.it","64-b.it","soundcast.me","tcp4.me","dnsup.net","hicam.net","now-dns.net","ownip.net","vpndns.net","dynserv.org","now-dns.org","x443.pw","now-dns.top","ntdll.top","freeddns.us","crafting.xyz","zapto.xyz","nsupdate.info","nerdpol.ovh","blogsyte.com","brasilia.me","cable-modem.org","ciscofreak.com","collegefan.org","couchpotatofries.org","damnserver.com","ddns.me","ditchyourip.com","dnsfor.me","dnsiskinky.com","dvrcam.info","dynns.com","eating-organic.net","fantasyleague.cc","geekgalaxy.com","golffan.us","health-carereform.com","homesecuritymac.com","homesecuritypc.com","hopto.me","ilovecollege.info","loginto.me","mlbfan.org","mmafan.biz","myactivedirectory.com","mydissent.net","myeffect.net","mymediapc.net","mypsx.net","mysecuritycamera.com","mysecuritycamera.net","mysecuritycamera.org","net-freaks.com","nflfan.org","nhlfan.net","no-ip.ca","no-ip.co.uk","no-ip.net","noip.us","onthewifi.com","pgafan.net","point2this.com","pointto.us","privatizehealthinsurance.net","quicksytes.com","read-books.org","securitytactics.com","serveexchange.com","servehumour.com","servep2p.com","servesarcasm.com","stufftoread.com","ufcfan.org","unusualperson.com","workisboring.com","3utilities.com","bounceme.net","ddns.net","ddnsking.com","gotdns.ch","hopto.org","myftp.biz","myftp.org","myvnc.com","no-ip.biz","no-ip.info","no-ip.org","noip.me","redirectme.net","servebeer.com","serveblog.net","servecounterstrike.com","serveftp.com","servegame.com","servehalflife.com","servehttp.com","serveirc.com","serveminecraft.net","servemp3.com","servepics.com","servequake.com","sytes.net","webhop.me","zapto.org","stage.nodeart.io","pcloud.host","nyc.mn","static.observableusercontent.com","cya.gg","omg.lol","cloudycluster.net","omniwe.site","service.one","nid.io","opensocial.site","opencraft.hosting","orsites.com","operaunite.com","tech.orange","authgear-staging.com","authgearapps.com","skygearapp.com","outsystemscloud.com","*.webpaas.ovh.net","*.hosting.ovh.net","ownprovider.com","own.pm","*.owo.codes","ox.rs","oy.lc","pgfog.com","pagefrontapp.com","pagexl.com","*.paywhirl.com","bar0.net","bar1.net","bar2.net","rdv.to","art.pl","gliwice.pl","krakow.pl","poznan.pl","wroc.pl","zakopane.pl","pantheonsite.io","gotpantheon.com","mypep.link","perspecta.cloud","lk3.ru","on-web.fr","bc.platform.sh","ent.platform.sh","eu.platform.sh","us.platform.sh","*.platformsh.site","*.tst.site","platter-app.com","platter-app.dev","platterp.us","pdns.page","plesk.page","pleskns.com","dyn53.io","onporter.run","co.bn","postman-echo.com","pstmn.io","mock.pstmn.io","httpbin.org","prequalifyme.today","xen.prgmr.com","priv.at","prvcy.page","*.dweb.link","protonet.io","chirurgiens-dentistes-en-france.fr","byen.site","pubtls.org","pythonanywhere.com","eu.pythonanywhere.com","qoto.io","qualifioapp.com","qbuser.com","cloudsite.builders","instances.spawn.cc","instantcloud.cn","ras.ru","qa2.com","qcx.io","*.sys.qcx.io","dev-myqnapcloud.com","alpha-myqnapcloud.com","myqnapcloud.com","*.quipelements.com","vapor.cloud","vaporcloud.io","rackmaze.com","rackmaze.net","g.vbrplsbx.io","*.on-k3s.io","*.on-rancher.cloud","*.on-rio.io","readthedocs.io","rhcloud.com","app.render.com","onrender.com","repl.co","id.repl.co","repl.run","resindevice.io","devices.resinstaging.io","hzc.io","wellbeingzone.eu","wellbeingzone.co.uk","adimo.co.uk","itcouldbewor.se","git-pages.rit.edu","rocky.page","биз.рус","ком.рус","крым.рус","мир.рус","мск.рус","орг.рус","самара.рус","сочи.рус","спб.рус","я.рус","*.builder.code.com","*.dev-builder.code.com","*.stg-builder.code.com","sandcats.io","logoip.de","logoip.com","fr-par-1.baremetal.scw.cloud","fr-par-2.baremetal.scw.cloud","nl-ams-1.baremetal.scw.cloud","fnc.fr-par.scw.cloud","functions.fnc.fr-par.scw.cloud","k8s.fr-par.scw.cloud","nodes.k8s.fr-par.scw.cloud","s3.fr-par.scw.cloud","s3-website.fr-par.scw.cloud","whm.fr-par.scw.cloud","priv.instances.scw.cloud","pub.instances.scw.cloud","k8s.scw.cloud","k8s.nl-ams.scw.cloud","nodes.k8s.nl-ams.scw.cloud","s3.nl-ams.scw.cloud","s3-website.nl-ams.scw.cloud","whm.nl-ams.scw.cloud","k8s.pl-waw.scw.cloud","nodes.k8s.pl-waw.scw.cloud","s3.pl-waw.scw.cloud","s3-website.pl-waw.scw.cloud","scalebook.scw.cloud","smartlabeling.scw.cloud","dedibox.fr","schokokeks.net","gov.scot","service.gov.scot","scrysec.com","firewall-gateway.com","firewall-gateway.de","my-gateway.de","my-router.de","spdns.de","spdns.eu","firewall-gateway.net","my-firewall.org","myfirewall.org","spdns.org","seidat.net","sellfy.store","senseering.net","minisite.ms","magnet.page","biz.ua","co.ua","pp.ua","shiftcrypto.dev","shiftcrypto.io","shiftedit.io","myshopblocks.com","myshopify.com","shopitsite.com","shopware.store","mo-siemens.io","1kapp.com","appchizi.com","applinzi.com","sinaapp.com","vipsinaapp.com","siteleaf.net","bounty-full.com","alpha.bounty-full.com","beta.bounty-full.com","small-web.org","vp4.me","try-snowplow.com","srht.site","stackhero-network.com","musician.io","novecore.site","static.land","dev.static.land","sites.static.land","storebase.store","vps-host.net","atl.jelastic.vps-host.net","njs.jelastic.vps-host.net","ric.jelastic.vps-host.net","playstation-cloud.com","apps.lair.io","*.stolos.io","spacekit.io","customer.speedpartner.de","myspreadshop.at","myspreadshop.com.au","myspreadshop.be","myspreadshop.ca","myspreadshop.ch","myspreadshop.com","myspreadshop.de","myspreadshop.dk","myspreadshop.es","myspreadshop.fi","myspreadshop.fr","myspreadshop.ie","myspreadshop.it","myspreadshop.net","myspreadshop.nl","myspreadshop.no","myspreadshop.pl","myspreadshop.se","myspreadshop.co.uk","api.stdlib.com","storj.farm","utwente.io","soc.srcf.net","user.srcf.net","temp-dns.com","supabase.co","supabase.in","supabase.net","su.paba.se","*.s5y.io","*.sensiosite.cloud","syncloud.it","dscloud.biz","direct.quickconnect.cn","dsmynas.com","familyds.com","diskstation.me","dscloud.me","i234.me","myds.me","synology.me","dscloud.mobi","dsmynas.net","familyds.net","dsmynas.org","familyds.org","vpnplus.to","direct.quickconnect.to","tabitorder.co.il","taifun-dns.de","beta.tailscale.net","ts.net","gda.pl","gdansk.pl","gdynia.pl","med.pl","sopot.pl","site.tb-hosting.com","edugit.io","s3.teckids.org","telebit.app","telebit.io","*.telebit.xyz","gwiddle.co.uk","*.firenet.ch","*.svc.firenet.ch","reservd.com","thingdustdata.com","cust.dev.thingdust.io","cust.disrec.thingdust.io","cust.prod.thingdust.io","cust.testing.thingdust.io","reservd.dev.thingdust.io","reservd.disrec.thingdust.io","reservd.testing.thingdust.io","tickets.io","arvo.network","azimuth.network","tlon.network","torproject.net","pages.torproject.net","bloxcms.com","townnews-staging.com","tbits.me","12hp.at","2ix.at","4lima.at","lima-city.at","12hp.ch","2ix.ch","4lima.ch","lima-city.ch","trafficplex.cloud","de.cool","12hp.de","2ix.de","4lima.de","lima-city.de","1337.pictures","clan.rip","lima-city.rocks","webspace.rocks","lima.zone","*.transurl.be","*.transurl.eu","*.transurl.nl","site.transip.me","tuxfamily.org","dd-dns.de","diskstation.eu","diskstation.org","dray-dns.de","draydns.de","dyn-vpn.de","dynvpn.de","mein-vigor.de","my-vigor.de","my-wan.de","syno-ds.de","synology-diskstation.de","synology-ds.de","typedream.app","pro.typeform.com","uber.space","*.uberspace.de","hk.com","hk.org","ltd.hk","inc.hk","name.pm","sch.tf","biz.wf","sch.wf","org.yt","virtualuser.de","virtual-user.de","upli.io","urown.cloud","dnsupdate.info","lib.de.us","2038.io","vercel.app","vercel.dev","now.sh","router.management","v-info.info","voorloper.cloud","neko.am","nyaa.am","be.ax","cat.ax","es.ax","eu.ax","gg.ax","mc.ax","us.ax","xy.ax","nl.ci","xx.gl","app.gp","blog.gt","de.gt","to.gt","be.gy","cc.hn","blog.kg","io.kg","jp.kg","tv.kg","uk.kg","us.kg","de.ls","at.md","de.md","jp.md","to.md","indie.porn","vxl.sh","ch.tc","me.tc","we.tc","nyan.to","at.vg","blog.vu","dev.vu","me.vu","v.ua","*.vultrobjects.com","wafflecell.com","*.webhare.dev","reserve-online.net","reserve-online.com","bookonline.app","hotelwithflight.com","wedeploy.io","wedeploy.me","wedeploy.sh","remotewd.com","pages.wiardweb.com","wmflabs.org","toolforge.org","wmcloud.org","panel.gg","daemon.panel.gg","messwithdns.com","woltlab-demo.com","myforum.community","community-pro.de","diskussionsbereich.de","community-pro.net","meinforum.net","affinitylottery.org.uk","raffleentry.org.uk","weeklylottery.org.uk","wpenginepowered.com","js.wpenginepowered.com","wixsite.com","editorx.io","half.host","xnbay.com","u2.xnbay.com","u2-local.xnbay.com","cistron.nl","demon.nl","xs4all.space","yandexcloud.net","storage.yandexcloud.net","website.yandexcloud.net","official.academy","yolasite.com","ybo.faith","yombo.me","homelink.one","ybo.party","ybo.review","ybo.science","ybo.trade","ynh.fr","nohost.me","noho.st","za.net","za.org","bss.design","basicserver.io","virtualserver.io","enterprisecloud.nu"]')}},t={};function r(i){var n=t[i];if(void 0!==n)return n.exports;var a=t[i]={id:i,loaded:!1,exports:{}};return e[i].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.c=t,r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);r(74755)})(); //# sourceMappingURL=monero_web_worker.js.map \ No newline at end of file diff --git a/dist/monero_web_worker.js.map b/dist/monero_web_worker.js.map index 72649fa73..436c8fb72 100644 --- a/dist/monero_web_worker.js.map +++ b/dist/monero_web_worker.js.map @@ -1 +1 @@ -{"version":3,"file":"monero_web_worker.js","mappings":"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I,YACE,OAAOlsI,KAAKynB,MAAMykH,SACnB,CAEDxN,aAAawN,GAEX,OADAlsI,KAAKynB,MAAMykH,UAAYA,EAChBlsI,IACR,CAEDmsI,4BACE,OAAOnsI,KAAKynB,MAAM2kH,sBACnB,CAED3N,0BAA0B2N,GAExB,OADApsI,KAAKynB,MAAM2kH,uBAAyBA,EAC7BpsI,IACR,CAEDqsI,4BACE,OAAOrsI,KAAKynB,MAAM6kH,sBACnB,CAED3N,0BAA0B2N,GAExB,OADAtsI,KAAKynB,MAAM6kH,uBAAyBA,EAC7BtsI,IACR,CAEDusI,uBACE,OAAOvsI,KAAKynB,MAAM+kH,iBACnB,CAED5N,qBAAqB4N,GAEnB,OADAxsI,KAAKynB,MAAM+kH,kBAAoBA,EACxBxsI,IACR,CAEDysI,oBACE,OAAOzsI,KAAKynB,MAAMilH,cACnB,CAED7N,kBAAkB6N,GAEhB,OADA1sI,KAAKynB,MAAMilH,eAAiBA,EACrB1sI,IACR,CAED2sI,uBACE,OAAO3sI,KAAKynB,MAAMmlH,iBACnB,CAED9N,qBAAqB8N,GAEnB,OADA5sI,KAAKynB,MAAMmlH,kBAAoBA,EACxB5sI,IACR,CAED6sI,YACE,OAAO7sI,KAAKynB,MAAMktB,MACnB,CAEDoqF,UAAUpqF,GAER,OADA30C,KAAKynB,MAAMktB,OAASA,EACb30C,IACR,CAED8sI,kBACE,OAAO9sI,KAAKynB,MAAMslH,YACnB,CAED/N,gBAAgB+N,GAEd,OADA/sI,KAAKynB,MAAMslH,aAAeA,EACnB/sI,IACR,CAEDy/H,kBACE,OAAOz/H,KAAKynB,MAAMulH,YACnB,CAED/N,gBAAgB+N,GAEd,OADAhtI,KAAKynB,MAAMulH,aAAeA,EACnBhtI,IACR,CAEDy3H,YACE,OAAOz3H,KAAKynB,MAAMyhH,MACnB,CAEDxR,UAAUwR,GAER,OADAlpI,KAAKynB,MAAMyhH,OAASA,EACblpI,IACR,CAEDitI,gBACE,OAAOjtI,KAAKynB,MAAMylH,UACnB,CAEDhO,cAAcgO,GAEZ,OADAltI,KAAKynB,MAAMylH,WAAaA,EACjBltI,IACR,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AAKynB,MAAM4I,KAAOA,EACXrwB,IACR,CAEDm4H,YACE,OAAOn4H,KAAKynB,MAAMmhH,MACnB,CAEDxQ,UAAUwQ,GAER,OADA5oI,KAAKynB,MAAMmhH,OAASA,EACb5oI,IACR,CAED00I,YACE,OAAO10I,KAAKynB,MAAMgsH,MACnB,CAED3Z,UAAU2Z,GAER,OADAzzI,KAAKynB,MAAMgsH,OAASA,EACbzzI,IACR,CAEDqiH,aACE,OAAOriH,KAAKynB,MAAM86F,OACnB,CAED0X,WAAW1X,GAET,OADAviH,KAAKynB,MAAM86F,QAAUA,EACdviH,IACR,CAED66H,mBACE,OAAO76H,KAAKynB,MAAMktH,aACnB,CAED7Z,iBAAiB6Z,GAEf,OADA30I,KAAKynB,MAAMktH,cAAgBA,EACpB30I,IACR,CAED40I,cACE,OAAO50I,KAAKynB,MAAMotH,QACnB,CAEDC,YAAYD,GAEV,OADA70I,KAAKynB,MAAMotH,SAAWA,EACf70I,IACR,CAED25H,WACE,OAAO35H,KAAKynB,MAAMstH,KACnB,CAEDnb,SAASmb,GAEP,OADA/0I,KAAKynB,MAAMstH,MAAQA,EACZ/0I,IACR,CAEDm6H,mBACE,OAAOn6H,KAAKynB,MAAMutH,aACnB,CAED5a,iBAAiB4a,GAEf,OADAh1I,KAAKynB,MAAMutH,cAAgBA,EACpBh1I,IACR,CAEDu6H,oBACE,OAAOv6H,KAAKynB,MAAMwtH,cACnB,CAEDza,kBAAkBya,GAEhB,OADAj1I,KAAKynB,MAAMwtH,eAAiBA,EACrBj1I,IACR,CAEDg7H,gBACE,OAAQh7H,KAAKynB,MAAMuzG,aACpB,CAEDC,iBAAiBD,GAEf,OADAh7H,KAAKynB,MAAMuzG,cAAgBA,EACpBh7H,IACR,CAEDo7H,WACE,OAAOp7H,KAAKynB,MAAM2zG,QACnB,CAED/K,YAAY+K,GAEV,OADAp7H,KAAKynB,MAAM2zG,SAAWA,EACfp7H,IACR,CAEDq7H,sBACE,OAAOr7H,KAAKynB,MAAMytH,gBACnB,CAED5Z,oBAAoB4Z,GAElB,OADAl1I,KAAKynB,MAAMytH,iBAAmBA,E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AGse,cAAa,GAChBte,EAAGqe,UAAS,GACZre,EAAGue,aAAY,GACfve,EAAGoe,cAAa,QACX,GAAgB,QAAZmmC,EACTze,GAAa,EACb9lC,EAAGke,gBAAe,GAClBle,EAAGme,aAAY,GACfne,EAAGse,cAAa,GAChBte,EAAGqe,UAAS,GACZre,EAAGue,aAAY,GACfve,EAAGoe,cAAa,QACX,GAAgB,SAAZmmC,EACTze,GAAa,EACb9lC,EAAGke,gBAAe,GAClBle,EAAGme,aAAY,GACfne,EAAGse,cAAa,GAChBte,EAAGqe,UAAS,GACZre,EAAGue,aAAY,GACfve,EAAGoe,cAAa,QACX,GAAgB,YAAZmmC,EACTze,GAAa,EACb9lC,EAAGke,gBAAe,GAClBle,EAAGme,aAAY,GACfne,EAAGse,cAAa,GAChBte,EAAGqe,UAAS,GACZre,EAAGue,aAAY,GACfve,EAAGoe,cAAa,QACX,GAAgB,UAAZmmC,EACTze,GAAa,EACb9lC,EAAGke,gBAAe,GAClBle,EAAGme,aAAY,GACfne,EAAGse,cAAa,GAChBte,EAAGqe,UAAS,GACZre,EAAGue,aAAY,GACfve,EAAGoe,cAAa,OACX,IAAgB,WAAZmmC,EAST,MAAM,IAAIhgE,EAAY,+BAAiCggE,GARvDze,GAAa,EACb9lC,EAAGke,gBAAe,GAClBle,EAAGme,aAAY,GACfne,EAAGse,cAAa,GAChBte,EAAGqe,UAAS,GACZre,EAAGue,aAAY,GACfve,EAAGoe,cAAa,EAGjB,CACD,OAAO0nB,CACR,CASc,gBAAC9lC,EAAIi1C,EAAOuG,GACzBjmI,OAAwBzmB,IAAjBkxG,EAAGE,WAGV,IAAID,EAAMg1C,EAAMj1C,EAAGE,WAKnB,QAJYpxG,IAARmxG,EAAmBg1C,EAAMj1C,EAAGE,WAAaF,EACxCC,EAAIE,MAAMH,QAGQlxG,IAAnBkxG,EAAGqD,YAA2B,CAChC,IAAImhD,EAAShJ,EAASx7C,EAAGqD,kBACVv0G,IAAX01J,EAAsBhJ,EAASx7C,EAAGqD,aAAerD,EAAG+F,WACnDy+C,EAAOrkD,MAAMH,EAAG+F,WACtB,CACF,CAK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ACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINN,IAAK,CACHnxL,IAAK,EACLyxL,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mE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","sources":["webpack://monero-javascript/./node_modules/ajv/lib/ajv.js","webpack://monero-javascript/./node_modules/ajv/lib/cache.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/async.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/error_classes.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/formats.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/index.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/resolve.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/rules.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/schema_obj.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/ucs2length.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/util.js","webpack://monero-javascript/./node_modules/ajv/lib/data.js","webpack://monero-javascript/./node_modules/ajv/lib/definition_schema.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/_limit.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/_limitItems.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/_limitLength.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/_limitProperties.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/allOf.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/anyOf.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/comment.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/const.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/contains.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/custom.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/dependencies.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/enum.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/format.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/if.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/index.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/items.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/multipleOf.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/not.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/oneOf.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/pattern.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/properties.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/propertyNames.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/ref.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/required.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/uniqueItems.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/validate.js","webpack://monero-javascript/./node_modules/ajv/lib/keyword.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/api.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/base/buffer.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/base/index.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/base/node.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/base/reporter.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/constants/der.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/constants/index.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/decoders/der.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/decoders/index.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/encoders/der.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/encoders/index.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack://monero-javascript/./node_modules/asn1.js/node_modules/bn.js/lib/bn.js","webpack://monero-javascript/./node_modules/asn1/lib/ber/errors.js","webpack://monero-javascript/./node_modules/asn1/lib/ber/index.js","webpack://monero-javascript/./node_modules/asn1/lib/ber/reader.js","webpack://monero-javascript/./node_modules/asn1/lib/ber/types.js","webpack://monero-javascript/./node_modules/asn1/lib/ber/writer.js","webpack://monero-javascript/./node_modules/asn1/lib/index.js","webpack://monero-javascript/./node_modules/assert-plus/assert.js","webpack://monero-javascript/./node_modules/assert/build/assert.js","webpack://monero-javascript/./node_modules/assert/build/internal/assert/assertion_error.js","webpack://monero-javascript/./node_modules/assert/build/internal/errors.js","webpack://monero-javascript/./node_modules/assert/build/internal/util/comparisons.js","webpack://monero-javascript/./node_modules/async/dist/async.js","webpack://monero-javascript/./node_modules/aws-sign2/index.js","webpack://monero-javascript/./node_modules/aws4/aws4.js","webpack://monero-javascript/./node_modules/aws4/lru.js","webpack://monero-javascript/./dist/monero_wallet_full.js","webpack://monero-javascript/./dist/monero_wallet_keys.js","webpack://monero-javascript/./index.js","webpack://monero-javascript/./src/main/js/common/Filter.js","webpack://monero-javascript/./src/main/js/common/GenUtils.js","webpack://monero-javascript/./src/main/js/common/HttpClient.js","webpack://monero-javascript/./src/main/js/common/LibraryUtils.js","webpack://monero-javascript/./src/main/js/common/MoneroConnectionManager.js","webpack://monero-javascript/./src/main/js/common/MoneroConnectionManagerListener.js","webpack://monero-javascript/./src/main/js/common/MoneroError.js","webpack://monero-javascript/./src/main/js/common/MoneroRpcConnection.js","webpack://monero-javascript/./src/main/js/common/MoneroRpcError.js","webpack://monero-javascript/./src/main/js/common/MoneroUtils.js","webpack://monero-javascript/./src/main/js/common/MoneroWebWorker.js","webpack://monero-javascript/./src/main/js/common/SslOptions.js","webpack://monero-javascript/./src/main/js/common/TaskLooper.js","webpack://monero-javascript/./src/main/js/common/ThreadPool.js","webpack://monero-javascript/./src/main/js/common/biginteger.js","webpack://monero-javascript/./src/main/js/daemon/MoneroDaemon.js","webpack://monero-javascript/./src/main/js/daemon/MoneroDaemonRpc.js","webpack://monero-javascript/./src/main/js/daemon/model/ConnectionType.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroAltChain.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroBan.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroBlock.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroBlockHeader.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroBlockTemplate.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroConnectionSpan.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroDaemonInfo.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroDaemonListener.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroDaemonSyncInfo.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroDaemonUpdateCheckResult.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroDaemonUpdateDownloadResult.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroFeeEstimate.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroHardForkInfo.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroKeyImage.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroKeyImageSpentStatus.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroMinerTxSum.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroMiningStatus.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroNetworkType.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroOutput.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroOutputHistogramEntry.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroPeer.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroPruneResult.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroSubmitTxResult.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroTx.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroTxPoolStats.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroVersion.js","webpack://monero-javascript/./src/main/js/wallet/MoneroWallet.js","webpack://monero-javascript/./src/main/js/wallet/MoneroWalletFull.js","webpack://monero-javascript/./src/main/js/wallet/MoneroWalletKeys.js","webpack://monero-javascript/./src/main/js/wallet/MoneroWalletRpc.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroAccount.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroAccountTag.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroAddressBookEntry.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroCheck.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroCheckReserve.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroCheckTx.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroDestination.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroIncomingTransfer.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroIntegratedAddress.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroKeyImageImportResult.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroMessageSignatureResult.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroMessageSignatureType.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroMultisigInfo.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroMultisigInitResult.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroMultisigSignResult.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroOutgoingTransfer.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroOutputQuery.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroOutputWallet.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroSubaddress.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroSyncResult.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroTransfer.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroTransferQuery.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroTxConfig.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroTxPriority.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroTxQuery.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroTxSet.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroTxWallet.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroWalletConfig.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroWalletListener.js","webpack://monero-javascript/./node_modules/base64-js/index.js","webpack://monero-javascript/./node_modules/bcrypt-pbkdf/index.js","webpack://monero-javascript/./node_modules/bluebird/js/browser/bluebird.js","webpack://monero-javascript/./node_modules/bn.js/lib/bn.js","webpack://monero-javascript/./node_modules/brorand/index.js","webpack://monero-javascript/./node_modules/browserify-aes/aes.js","webpack://monero-javascript/./node_modules/browserify-aes/authCipher.js","webpack://monero-javascript/./node_modules/browserify-aes/browser.js","webpack://monero-javascript/./node_modules/browserify-aes/decrypter.js","webpack://monero-javascript/./node_modules/browserify-aes/encrypter.js","webpack://monero-javascript/./node_modules/browserify-aes/ghash.js","webpack://monero-javascript/./node_modules/browserify-aes/incr32.js","webpack://monero-javascript/./node_modules/browserify-aes/modes/cbc.js","webpack://monero-javascript/./node_modules/browserify-aes/modes/cfb.js","webpack://monero-javascript/./node_modules/browserify-aes/modes/cfb1.js","webpack://monero-javascript/./node_modules/browserify-aes/modes/cfb8.js","webpack://monero-javascript/./node_modules/browserify-aes/modes/ctr.js","webpack://monero-javascript/./node_modules/browserify-aes/modes/ecb.js","webpack://monero-javascript/./node_modules/browserify-aes/modes/index.js","webpack://monero-javascript/./node_modules/browserify-aes/modes/ofb.js","webpack://monero-javascript/./node_modules/browserify-aes/streamCipher.js","webpack://monero-javascript/./node_modules/browserify-cipher/browser.js","webpack://monero-javascript/./node_modules/browserify-des/index.js","webpack://monero-javascript/./node_modules/browserify-des/modes.js","webpack://monero-javascript/./node_modules/browserify-rsa/index.js","webpack://monero-javascript/./node_modules/browserify-sign/algos.js","webpack://monero-javascript/./node_modules/browserify-sign/browser/index.js","webpack://monero-javascript/./node_modules/browserify-sign/browser/sign.js","webpack://monero-javascript/./node_modules/browserify-sign/browser/verify.js","webpack://monero-javascript/./node_modules/browserify-sign/node_modules/safe-buffer/index.js","webpack://monero-javascript/./node_modules/browserify-zlib/lib/binding.js","webpack://monero-javascript/./node_modules/browserify-zlib/lib/index.js","webpack://monero-javascript/./node_modules/buffer-xor/index.js","webpack://monero-javascript/./node_modules/buffer/index.js","webpack://monero-javascript/./node_modules/builtin-status-codes/browser.js","webpack://monero-javascript/./node_modules/call-bind/callBound.js","webpack://monero-javascript/./node_modules/call-bind/index.js","webpack://monero-javascript/./node_modules/caseless/index.js","webpack://monero-javascript/./node_modules/cipher-base/index.js","webpack://monero-javascript/./node_modules/combined-stream/lib/combined_stream.js","webpack://monero-javascript/./node_modules/core-util-is/lib/util.js","webpack://monero-javascript/./node_modules/create-ecdh/browser.js","webpack://monero-javascript/./node_modules/create-ecdh/node_modules/bn.js/lib/bn.js","webpack://monero-javascript/./node_modules/create-hash/browser.js","webpack://monero-javascript/./node_modules/create-hash/md5.js","webpack://monero-javascript/./node_modules/create-hmac/browser.js","webpack://monero-javascript/./node_modules/create-hmac/legacy.js","webpack://monero-javascript/./node_modules/crypto-browserify/index.js","webpack://monero-javascript/./node_modules/crypto-js/aes.js","webpack://monero-javascript/./node_modules/crypto-js/cipher-core.js","webpack://monero-javascript/./node_modules/crypto-js/core.js","webpack://monero-javascript/./node_modules/crypto-js/enc-base64.js","webpack://monero-javascript/./node_modules/crypto-js/enc-base64url.js","webpack://monero-javascript/./node_modules/crypto-js/enc-utf16.js","webpack://monero-javascript/./node_modules/crypto-js/evpkdf.js","webpack://monero-javascript/./node_modules/crypto-js/format-hex.js","webpack://monero-javascript/./node_modules/crypto-js/hmac.js","webpack://monero-javascript/./node_modules/crypto-js/index.js","webpack://monero-javascript/./node_modules/crypto-js/lib-typedarrays.js","webpack://monero-javascript/./node_modules/crypto-js/md5.js","webpack://monero-javascript/./node_modules/crypto-js/mode-cfb.js","webpack://monero-javascript/./node_modules/crypto-js/mode-ctr-gladman.js","webpack://monero-javascript/./node_modules/crypto-js/mode-ctr.js","webpack://monero-javascript/./node_modules/crypto-js/mode-ecb.js","webpack://monero-javascript/./node_modules/crypto-js/mode-ofb.js","webpack://monero-javascript/./node_modules/crypto-js/pad-ansix923.js","webpack://monero-javascript/./node_modules/crypto-js/pad-iso10126.js","webpack://monero-javascript/./node_modules/crypto-js/pad-iso97971.js","webpack://monero-javascript/./node_modules/crypto-js/pad-nopadding.js","webpack://monero-javascript/./node_modules/crypto-js/pad-zeropadding.js","webpack://monero-javascript/./node_modules/crypto-js/pbkdf2.js","webpack://monero-javascript/./node_modules/crypto-js/rabbit-legacy.js","webpack://monero-javascript/./node_modules/crypto-js/rabbit.js","webpack://monero-javascript/./node_modules/crypto-js/rc4.js","webpack://monero-javascript/./node_modules/crypto-js/ripemd160.js","webpack://monero-javascript/./node_modules/crypto-js/sha1.js","webpack://monero-javascript/./node_modules/crypto-js/sha224.js","webpack://monero-javascript/./node_modules/crypto-js/sha256.js","webpack://monero-javascript/./node_modules/crypto-js/sha3.js","webpack://monero-javascript/./node_modules/crypto-js/sha384.js","webpack://monero-javascript/./node_modules/crypto-js/sha512.js","webpack://monero-javascript/./node_modules/crypto-js/tripledes.js","webpack://monero-javascript/./node_modules/crypto-js/x64-core.js","webpack://monero-javascript/./node_modules/define-properties/index.js","webpack://monero-javascript/./node_modules/delayed-stream/lib/delayed_stream.js","webpack://monero-javascript/./node_modules/des.js/lib/des.js","webpack://monero-javascript/./node_modules/des.js/lib/des/cbc.js","webpack://monero-javascript/./node_modules/des.js/lib/des/cipher.js","webpack://monero-javascript/./node_modules/des.js/lib/des/des.js","webpack://monero-javascript/./node_modules/des.js/lib/des/ede.js","webpack://monero-javascript/./node_modules/des.js/lib/des/utils.js","webpack://monero-javascript/./node_modules/diffie-hellman/browser.js","webpack://monero-javascript/./node_modules/diffie-hellman/lib/dh.js","webpack://monero-javascript/./node_modules/diffie-hellman/lib/generatePrime.js","webpack://monero-javascript/./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js","webpack://monero-javascript/./node_modules/ecc-jsbn/index.js","webpack://monero-javascript/./node_modules/ecc-jsbn/lib/ec.js","webpack://monero-javascript/./node_modules/ecc-jsbn/lib/sec.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/curve/base.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/curve/index.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/curve/mont.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/curve/short.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/curves.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/ec/index.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/ec/key.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/ec/signature.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/utils.js","webpack://monero-javascript/./node_modules/elliptic/node_modules/bn.js/lib/bn.js","webpack://monero-javascript/./node_modules/es6-object-assign/index.js","webpack://monero-javascript/./node_modules/events/events.js","webpack://monero-javascript/./node_modules/evp_bytestokey/index.js","webpack://monero-javascript/./node_modules/extend/index.js","webpack://monero-javascript/./node_modules/extsprintf/lib/extsprintf.js","webpack://monero-javascript/./node_modules/fast-deep-equal/index.js","webpack://monero-javascript/./node_modules/fast-json-stable-stringify/index.js","webpack://monero-javascript/./node_modules/for-each/index.js","webpack://monero-javascript/./node_modules/forever-agent/index.js","webpack://monero-javascript/./node_modules/form-data/lib/browser.js","webpack://monero-javascript/./node_modules/function-bind/implementation.js","webpack://monero-javascript/./node_modules/function-bind/index.js","webpack://monero-javascript/./node_modules/get-intrinsic/index.js","webpack://monero-javascript/./node_modules/har-schema/lib/index.js","webpack://monero-javascript/./node_modules/har-validator/lib/error.js","webpack://monero-javascript/./node_modules/har-validator/lib/promise.js","webpack://monero-javascript/./node_modules/has-property-descriptors/index.js","webpack://monero-javascript/./node_modules/has-symbols/index.js","webpack://monero-javascript/./node_modules/has-symbols/shams.js","webpack://monero-javascript/./node_modules/has-tostringtag/shams.js","webpack://monero-javascript/./node_modules/has/src/index.js","webpack://monero-javascript/./node_modules/hash-base/index.js","webpack://monero-javascript/./node_modules/hash-base/node_modules/safe-buffer/index.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/common.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/hmac.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/ripemd.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/sha.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/sha/1.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/sha/224.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/sha/256.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/sha/384.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/sha/512.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/sha/common.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/utils.js","webpack://monero-javascript/./node_modules/hmac-drbg/lib/hmac-drbg.js","webpack://monero-javascript/./node_modules/html5-fs/src/api.js","webpack://monero-javascript/./node_modules/html5-fs/src/fileSystem.js","webpack://monero-javascript/./node_modules/html5-fs/src/utils.js","webpack://monero-javascript/./node_modules/http-signature/lib/index.js","webpack://monero-javascript/./node_modules/http-signature/lib/parser.js","webpack://monero-javascript/./node_modules/http-signature/lib/signer.js","webpack://monero-javascript/./node_modules/http-signature/lib/utils.js","webpack://monero-javascript/./node_modules/http-signature/lib/verify.js","webpack://monero-javascript/./node_modules/https-browserify/index.js","webpack://monero-javascript/./node_modules/ieee754/index.js","webpack://monero-javascript/./node_modules/inherits/inherits_browser.js","webpack://monero-javascript/./node_modules/is-arguments/index.js","webpack://monero-javascript/./node_modules/is-callable/index.js","webpack://monero-javascript/./node_modules/is-generator-function/index.js","webpack://monero-javascript/./node_modules/is-nan/implementation.js","webpack://monero-javascript/./node_modules/is-nan/index.js","webpack://monero-javascript/./node_modules/is-nan/polyfill.js","webpack://monero-javascript/./node_modules/is-nan/shim.js","webpack://monero-javascript/./node_modules/is-typed-array/index.js","webpack://monero-javascript/./node_modules/is-typedarray/index.js","webpack://monero-javascript/./node_modules/isstream/isstream.js","webpack://monero-javascript/./node_modules/jsbn/index.js","webpack://monero-javascript/./node_modules/json-schema-traverse/index.js","webpack://monero-javascript/./node_modules/json-schema/lib/validate.js","webpack://monero-javascript/./node_modules/json-stringify-safe/stringify.js","webpack://monero-javascript/./node_modules/jsprim/lib/jsprim.js","webpack://monero-javascript/./node_modules/lodash/_Symbol.js","webpack://monero-javascript/./node_modules/lodash/_baseGetTag.js","webpack://monero-javascript/./node_modules/lodash/_freeGlobal.js","webpack://monero-javascript/./node_modules/lodash/_getRawTag.js","webpack://monero-javascript/./node_modules/lodash/_objectToString.js","webpack://monero-javascript/./node_modules/lodash/_root.js","webpack://monero-javascript/./node_modules/lodash/isArray.js","webpack://monero-javascript/./node_modules/lodash/isFunction.js","webpack://monero-javascript/./node_modules/lodash/isObject.js","webpack://monero-javascript/./node_modules/lodash/isObjectLike.js","webpack://monero-javascript/./node_modules/lodash/isString.js","webpack://monero-javascript/./node_modules/lodash/isUndefined.js","webpack://monero-javascript/./node_modules/md5.js/index.js","webpack://monero-javascript/./node_modules/miller-rabin/lib/mr.js","webpack://monero-javascript/./node_modules/miller-rabin/node_modules/bn.js/lib/bn.js","webpack://monero-javascript/./node_modules/mime-db/index.js","webpack://monero-javascript/./node_modules/mime-types/index.js","webpack://monero-javascript/./node_modules/minimalistic-assert/index.js","webpack://monero-javascript/./node_modules/minimalistic-crypto-utils/lib/utils.js","webpack://monero-javascript/./node_modules/net/index.js","webpack://monero-javascript/./node_modules/oauth-sign/index.js","webpack://monero-javascript/./node_modules/object-is/implementation.js","webpack://monero-javascript/./node_modules/object-is/index.js","webpack://monero-javascript/./node_modules/object-is/polyfill.js","webpack://monero-javascript/./node_modules/object-is/shim.js","webpack://monero-javascript/./node_modules/object-keys/implementation.js","webpack://monero-javascript/./node_modules/object-keys/index.js","webpack://monero-javascript/./node_modules/object-keys/isArguments.js","webpack://monero-javascript/./node_modules/os-browserify/browser.js","webpack://monero-javascript/./node_modules/pako/lib/utils/common.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/adler32.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/constants.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/crc32.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/deflate.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/inffast.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/inflate.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/inftrees.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/messages.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/trees.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/zstream.js","webpack://monero-javascript/./node_modules/parse-asn1/asn1.js","webpack://monero-javascript/./node_modules/parse-asn1/certificate.js","webpack://monero-javascript/./node_modules/parse-asn1/fixProc.js","webpack://monero-javascript/./node_modules/parse-asn1/index.js","webpack://monero-javascript/./node_modules/path-browserify/index.js","webpack://monero-javascript/./node_modules/pbkdf2/browser.js","webpack://monero-javascript/./node_modules/pbkdf2/lib/async.js","webpack://monero-javascript/./node_modules/pbkdf2/lib/default-encoding.js","webpack://monero-javascript/./node_modules/pbkdf2/lib/precondition.js","webpack://monero-javascript/./node_modules/pbkdf2/lib/sync-browser.js","webpack://monero-javascript/./node_modules/pbkdf2/lib/to-buffer.js","webpack://monero-javascript/./node_modules/performance-now/lib/performance-now.js","webpack://monero-javascript/./node_modules/process/browser.js","webpack://monero-javascript/./node_modules/promise-throttle/lib/main.js","webpack://monero-javascript/./node_modules/psl/index.js","webpack://monero-javascript/./node_modules/public-encrypt/browser.js","webpack://monero-javascript/./node_modules/public-encrypt/mgf.js","webpack://monero-javascript/./node_modules/public-encrypt/node_modules/bn.js/lib/bn.js","webpack://monero-javascript/./node_modules/public-encrypt/privateDecrypt.js","webpack://monero-javascript/./node_modules/public-encrypt/publicEncrypt.js","webpack://monero-javascript/./node_modules/public-encrypt/withPublic.js","webpack://monero-javascript/./node_modules/public-encrypt/xor.js","webpack://monero-javascript/./node_modules/punycode/punycode.es6.js","webpack://monero-javascript/./node_modules/qs/lib/formats.js","webpack://monero-javascript/./node_modules/qs/lib/index.js","webpack://monero-javascript/./node_modules/qs/lib/parse.js","webpack://monero-javascript/./node_modules/qs/lib/stringify.js","webpack://monero-javascript/./node_modules/qs/lib/utils.js","webpack://monero-javascript/./node_modules/querystring/decode.js","webpack://monero-javascript/./node_modules/querystring/encode.js","webpack://monero-javascript/./node_modules/querystring/index.js","webpack://monero-javascript/./node_modules/randombytes/browser.js","webpack://monero-javascript/./node_modules/randomfill/browser.js","webpack://monero-javascript/./node_modules/readable-stream/errors-browser.js","webpack://monero-javascript/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://monero-javascript/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://monero-javascript/./node_modules/readable-stream/lib/_stream_readable.js","webpack://monero-javascript/./node_modules/readable-stream/lib/_stream_transform.js","webpack://monero-javascript/./node_modules/readable-stream/lib/_stream_writable.js","webpack://monero-javascript/./node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://monero-javascript/./node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://monero-javascript/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://monero-javascript/./node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://monero-javascript/./node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://monero-javascript/./node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://monero-javascript/./node_modules/readable-stream/lib/internal/streams/state.js","webpack://monero-javascript/./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://monero-javascript/./node_modules/readable-stream/readable-browser.js","webpack://monero-javascript/./node_modules/request-promise-core/configure/request2.js","webpack://monero-javascript/./node_modules/request-promise-core/lib/errors.js","webpack://monero-javascript/./node_modules/request-promise-core/lib/plumbing.js","webpack://monero-javascript/./node_modules/request-promise/lib/rp.js","webpack://monero-javascript/./node_modules/request/index.js","webpack://monero-javascript/./node_modules/request/lib/auth.js","webpack://monero-javascript/./node_modules/request/lib/cookies.js","webpack://monero-javascript/./node_modules/request/lib/getProxyFromURI.js","webpack://monero-javascript/./node_modules/request/lib/har.js","webpack://monero-javascript/./node_modules/request/lib/hawk.js","webpack://monero-javascript/./node_modules/request/lib/helpers.js","webpack://monero-javascript/./node_modules/request/lib/multipart.js","webpack://monero-javascript/./node_modules/request/lib/oauth.js","webpack://monero-javascript/./node_modules/request/lib/querystring.js","webpack://monero-javascript/./node_modules/request/lib/redirect.js","webpack://monero-javascript/./node_modules/request/lib/tunnel.js","webpack://monero-javascript/./node_modules/request/request.js","webpack://monero-javascript/./node_modules/ripemd160/index.js","webpack://monero-javascript/./node_modules/safe-buffer/index.js","webpack://monero-javascript/./node_modules/safer-buffer/safer.js","webpack://monero-javascript/./node_modules/sha.js/hash.js","webpack://monero-javascript/./node_modules/sha.js/index.js","webpack://monero-javascript/./node_modules/sha.js/sha.js","webpack://monero-javascript/./node_modules/sha.js/sha1.js","webpack://monero-javascript/./node_modules/sha.js/sha224.js","webpack://monero-javascript/./node_modules/sha.js/sha256.js","webpack://monero-javascript/./node_modules/sha.js/sha384.js","webpack://monero-javascript/./node_modules/sha.js/sha512.js","webpack://monero-javascript/./node_modules/sshpk/lib/algs.js","webpack://monero-javascript/./node_modules/sshpk/lib/certificate.js","webpack://monero-javascript/./node_modules/sshpk/lib/dhe.js","webpack://monero-javascript/./node_modules/sshpk/lib/ed-compat.js","webpack://monero-javascript/./node_modules/sshpk/lib/errors.js","webpack://monero-javascript/./node_modules/sshpk/lib/fingerprint.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/auto.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/dnssec.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/openssh-cert.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/pem.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/pkcs1.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/pkcs8.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/putty.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/rfc4253.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/ssh-private.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/ssh.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/x509-pem.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/x509.js","webpack://monero-javascript/./node_modules/sshpk/lib/identity.js","webpack://monero-javascript/./node_modules/sshpk/lib/index.js","webpack://monero-javascript/./node_modules/sshpk/lib/key.js","webpack://monero-javascript/./node_modules/sshpk/lib/private-key.js","webpack://monero-javascript/./node_modules/sshpk/lib/signature.js","webpack://monero-javascript/./node_modules/sshpk/lib/ssh-buffer.js","webpack://monero-javascript/./node_modules/sshpk/lib/utils.js","webpack://monero-javascript/./node_modules/stealthy-require/lib/index.js","webpack://monero-javascript/./node_modules/stream-browserify/index.js","webpack://monero-javascript/./node_modules/stream-http/index.js","webpack://monero-javascript/./node_modules/stream-http/lib/capability.js","webpack://monero-javascript/./node_modules/stream-http/lib/request.js","webpack://monero-javascript/./node_modules/stream-http/lib/response.js","webpack://monero-javascript/./node_modules/string_decoder/lib/string_decoder.js","webpack://monero-javascript/./node_modules/string_decoder/node_modules/safe-buffer/index.js","webpack://monero-javascript/./node_modules/tls/index.js","webpack://monero-javascript/./node_modules/tough-cookie/lib/cookie.js","webpack://monero-javascript/./node_modules/tough-cookie/lib/memstore.js","webpack://monero-javascript/./node_modules/tough-cookie/lib/pathMatch.js","webpack://monero-javascript/./node_modules/tough-cookie/lib/permuteDomain.js","webpack://monero-javascript/./node_modules/tough-cookie/lib/pubsuffix-psl.js","webpack://monero-javascript/./node_modules/tough-cookie/lib/store.js","webpack://monero-javascript/./node_modules/tough-cookie/lib/version.js","webpack://monero-javascript/./node_modules/tunnel-agent/index.js","webpack://monero-javascript/./node_modules/tweetnacl/nacl-fast.js","webpack://monero-javascript/./node_modules/uri-js/dist/es5/uri.all.js","webpack://monero-javascript/./node_modules/url/node_modules/punycode/punycode.js","webpack://monero-javascript/./node_modules/url/url.js","webpack://monero-javascript/./node_modules/url/util.js","webpack://monero-javascript/./node_modules/util-deprecate/browser.js","webpack://monero-javascript/./node_modules/util/support/isBufferBrowser.js","webpack://monero-javascript/./node_modules/util/support/types.js","webpack://monero-javascript/./node_modules/util/util.js","webpack://monero-javascript/./node_modules/uuid/lib/bytesToUuid.js","webpack://monero-javascript/./node_modules/uuid/lib/rng-browser.js","webpack://monero-javascript/./node_modules/uuid/v4.js","webpack://monero-javascript/./node_modules/verror/lib/verror.js","webpack://monero-javascript/./node_modules/web-worker/cjs/browser.js","webpack://monero-javascript/./node_modules/which-typed-array/index.js","webpack://monero-javascript/./node_modules/xtend/immutable.js","webpack://monero-javascript/external var \"child_process\"","webpack://monero-javascript/./node_modules/available-typed-arrays/index.js","webpack://monero-javascript/./node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js","webpack://monero-javascript/webpack/bootstrap","webpack://monero-javascript/webpack/runtime/define property getters","webpack://monero-javascript/webpack/runtime/global","webpack://monero-javascript/webpack/runtime/hasOwnProperty shorthand","webpack://monero-javascript/webpack/runtime/make namespace object","webpack://monero-javascript/webpack/runtime/node module decorator","webpack://monero-javascript/webpack/startup"],"sourcesContent":["'use strict';\n\nvar compileSchema = require('./compile')\n , resolve = require('./compile/resolve')\n , Cache = require('./cache')\n , SchemaObject = require('./compile/schema_obj')\n , stableStringify = require('fast-json-stable-stringify')\n , formats = require('./compile/formats')\n , rules = require('./compile/rules')\n , $dataMetaSchema = require('./data')\n , util = require('./compile/util');\n\nmodule.exports = Ajv;\n\nAjv.prototype.validate = validate;\nAjv.prototype.compile = compile;\nAjv.prototype.addSchema = addSchema;\nAjv.prototype.addMetaSchema = addMetaSchema;\nAjv.prototype.validateSchema = validateSchema;\nAjv.prototype.getSchema = getSchema;\nAjv.prototype.removeSchema = removeSchema;\nAjv.prototype.addFormat = addFormat;\nAjv.prototype.errorsText = errorsText;\n\nAjv.prototype._addSchema = _addSchema;\nAjv.prototype._compile = _compile;\n\nAjv.prototype.compileAsync = require('./compile/async');\nvar customKeyword = require('./keyword');\nAjv.prototype.addKeyword = customKeyword.add;\nAjv.prototype.getKeyword = customKeyword.get;\nAjv.prototype.removeKeyword = customKeyword.remove;\nAjv.prototype.validateKeyword = customKeyword.validate;\n\nvar errorClasses = require('./compile/error_classes');\nAjv.ValidationError = errorClasses.Validation;\nAjv.MissingRefError = errorClasses.MissingRef;\nAjv.$dataMetaSchema = $dataMetaSchema;\n\nvar META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema';\n\nvar META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes', 'strictDefaults' ];\nvar META_SUPPORT_DATA = ['/properties'];\n\n/**\n * Creates validator instance.\n * Usage: `Ajv(opts)`\n * @param {Object} opts optional options\n * @return {Object} ajv instance\n */\nfunction Ajv(opts) {\n if (!(this instanceof Ajv)) return new Ajv(opts);\n opts = this._opts = util.copy(opts) || {};\n setLogger(this);\n this._schemas = {};\n this._refs = {};\n this._fragments = {};\n this._formats = formats(opts.format);\n\n this._cache = opts.cache || new Cache;\n this._loadingSchemas = {};\n this._compilations = [];\n this.RULES = rules();\n this._getId = chooseGetId(opts);\n\n opts.loopRequired = opts.loopRequired || Infinity;\n if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true;\n if (opts.serialize === undefined) opts.serialize = stableStringify;\n this._metaOpts = getMetaSchemaOptions(this);\n\n if (opts.formats) addInitialFormats(this);\n if (opts.keywords) addInitialKeywords(this);\n addDefaultMetaSchema(this);\n if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);\n if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}});\n addInitialSchemas(this);\n}\n\n\n\n/**\n * Validate data using schema\n * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize.\n * @this Ajv\n * @param {String|Object} schemaKeyRef key, ref or schema object\n * @param {Any} data to be validated\n * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).\n */\nfunction validate(schemaKeyRef, data) {\n var v;\n if (typeof schemaKeyRef == 'string') {\n v = this.getSchema(schemaKeyRef);\n if (!v) throw new Error('no schema with key or ref \"' + schemaKeyRef + '\"');\n } else {\n var schemaObj = this._addSchema(schemaKeyRef);\n v = schemaObj.validate || this._compile(schemaObj);\n }\n\n var valid = v(data);\n if (v.$async !== true) this.errors = v.errors;\n return valid;\n}\n\n\n/**\n * Create validating function for passed schema.\n * @this Ajv\n * @param {Object} schema schema object\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords.\n * @return {Function} validating function\n */\nfunction compile(schema, _meta) {\n var schemaObj = this._addSchema(schema, undefined, _meta);\n return schemaObj.validate || this._compile(schemaObj);\n}\n\n\n/**\n * Adds schema to the instance.\n * @this Ajv\n * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.\n * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead.\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n * @return {Ajv} this for method chaining\n */\nfunction addSchema(schema, key, _skipValidation, _meta) {\n if (Array.isArray(schema)){\n for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used.\n * @param {Object} options optional options with properties `separator` and `dataVar`.\n * @return {String} human readable string with all errors descriptions\n */\nfunction errorsText(errors, options) {\n errors = errors || this.errors;\n if (!errors) return 'No errors';\n options = options || {};\n var separator = options.separator === undefined ? ', ' : options.separator;\n var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;\n\n var text = '';\n for (var i=0; i%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i;\n// For the source: https://gist.github.com/dperini/729294\n// For test cases: https://mathiasbynens.be/demo/url-regex\n// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.\n// var URL = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!10(?:\\.\\d{1,3}){3})(?!127(?:\\.\\d{1,3}){3})(?!169\\.254(?:\\.\\d{1,3}){2})(?!192\\.168(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-)*[a-z\\u{00a1}-\\u{ffff}0-9]+)(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-)*[a-z\\u{00a1}-\\u{ffff}0-9]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu;\nvar URL = /^(?:(?:http[s\\u017F]?|ftp):\\/\\/)(?:(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+(?::(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?@)?(?:(?!10(?:\\.[0-9]{1,3}){3})(?!127(?:\\.[0-9]{1,3}){3})(?!169\\.254(?:\\.[0-9]{1,3}){2})(?!192\\.168(?:\\.[0-9]{1,3}){2})(?!172\\.(?:1[6-9]|2[0-9]|3[01])(?:\\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)(?:\\.(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)*(?:\\.(?:(?:[a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\\/(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?$/i;\nvar UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;\nvar JSON_POINTER = /^(?:\\/(?:[^~/]|~0|~1)*)*$/;\nvar JSON_POINTER_URI_FRAGMENT = /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;\nvar RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/;\n\n\nmodule.exports = formats;\n\nfunction formats(mode) {\n mode = mode == 'full' ? 'full' : 'fast';\n return util.copy(formats[mode]);\n}\n\n\nformats.fast = {\n // date: http://tools.ietf.org/html/rfc3339#section-5.6\n date: /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/,\n // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n time: /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n 'date-time': /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n uri: /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n 'uri-reference': /^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n 'uri-template': URITEMPLATE,\n url: URL,\n // email (sources from jsen validator):\n // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')\n email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n hostname: HOSTNAME,\n // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses\n ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n regex: regex,\n // uuid: http://tools.ietf.org/html/rfc4122\n uuid: UUID,\n // JSON-pointer: https://tools.ietf.org/html/rfc6901\n // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n 'json-pointer': JSON_POINTER,\n 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n 'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nformats.full = {\n date: date,\n time: time,\n 'date-time': date_time,\n uri: uri,\n 'uri-reference': URIREF,\n 'uri-template': URITEMPLATE,\n url: URL,\n email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n hostname: HOSTNAME,\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n regex: regex,\n uuid: UUID,\n 'json-pointer': JSON_POINTER,\n 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n 'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nfunction isLeapYear(year) {\n // https://tools.ietf.org/html/rfc3339#appendix-C\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\n\nfunction date(str) {\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n var matches = str.match(DATE);\n if (!matches) return false;\n\n var year = +matches[1];\n var month = +matches[2];\n var day = +matches[3];\n\n return month >= 1 && month <= 12 && day >= 1 &&\n day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]);\n}\n\n\nfunction time(str, full) {\n var matches = str.match(TIME);\n if (!matches) return false;\n\n var hour = matches[1];\n var minute = matches[2];\n var second = matches[3];\n var timeZone = matches[5];\n return ((hour <= 23 && minute <= 59 && second <= 59) ||\n (hour == 23 && minute == 59 && second == 60)) &&\n (!full || timeZone);\n}\n\n\nvar DATE_TIME_SEPARATOR = /t|\\s/i;\nfunction date_time(str) {\n // http://tools.ietf.org/html/rfc3339#section-5.6\n var dateTime = str.split(DATE_TIME_SEPARATOR);\n return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true);\n}\n\n\nvar NOT_URI_FRAGMENT = /\\/|:/;\nfunction uri(str) {\n // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n return NOT_URI_FRAGMENT.test(str) && URI.test(str);\n}\n\n\nvar Z_ANCHOR = /[^\\\\]\\\\Z/;\nfunction regex(str) {\n if (Z_ANCHOR.test(str)) return false;\n try {\n new RegExp(str);\n return true;\n } catch(e) {\n return false;\n }\n}\n","'use strict';\n\nvar resolve = require('./resolve')\n , util = require('./util')\n , errorClasses = require('./error_classes')\n , stableStringify = require('fast-json-stable-stringify');\n\nvar validateGenerator = require('../dotjs/validate');\n\n/**\n * Functions below are used inside compiled validations function\n */\n\nvar ucs2length = util.ucs2length;\nvar equal = require('fast-deep-equal');\n\n// this error is thrown by async schemas to return validation errors via exception\nvar ValidationError = errorClasses.Validation;\n\nmodule.exports = compile;\n\n\n/**\n * Compiles schema to validation function\n * @this Ajv\n * @param {Object} schema schema object\n * @param {Object} root object with information about the root schema for this schema\n * @param {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution\n * @param {String} baseId base ID for IDs in the schema\n * @return {Function} validation function\n */\nfunction compile(schema, root, localRefs, baseId) {\n /* jshint validthis: true, evil: true */\n /* eslint no-shadow: 0 */\n var self = this\n , opts = this._opts\n , refVal = [ undefined ]\n , refs = {}\n , patterns = []\n , patternsHash = {}\n , defaults = []\n , defaultsHash = {}\n , customRules = [];\n\n root = root || { schema: schema, refVal: refVal, refs: refs };\n\n var c = checkCompiling.call(this, schema, root, baseId);\n var compilation = this._compilations[c.index];\n if (c.compiling) return (compilation.callValidate = callValidate);\n\n var formats = this._formats;\n var RULES = this.RULES;\n\n try {\n var v = localCompile(schema, root, localRefs, baseId);\n compilation.validate = v;\n var cv = compilation.callValidate;\n if (cv) {\n cv.schema = v.schema;\n cv.errors = null;\n cv.refs = v.refs;\n cv.refVal = v.refVal;\n cv.root = v.root;\n cv.$async = v.$async;\n if (opts.sourceCode) cv.source = v.source;\n }\n return v;\n } finally {\n endCompiling.call(this, schema, root, baseId);\n }\n\n /* @this {*} - custom context, see passContext option */\n function callValidate() {\n /* jshint validthis: true */\n var validate = compilation.validate;\n var result = validate.apply(this, arguments);\n callValidate.errors = validate.errors;\n return result;\n }\n\n function localCompile(_schema, _root, localRefs, baseId) {\n var isRoot = !_root || (_root && _root.schema == _schema);\n if (_root.schema != root.schema)\n return compile.call(self, _schema, _root, localRefs, baseId);\n\n var $async = _schema.$async === true;\n\n var sourceCode = validateGenerator({\n isTop: true,\n schema: _schema,\n isRoot: isRoot,\n baseId: baseId,\n root: _root,\n schemaPath: '',\n errSchemaPath: '#',\n errorPath: '\"\"',\n MissingRefError: errorClasses.MissingRef,\n RULES: RULES,\n validate: validateGenerator,\n util: util,\n resolve: resolve,\n resolveRef: resolveRef,\n usePattern: usePattern,\n useDefault: useDefault,\n useCustomRule: useCustomRule,\n opts: opts,\n formats: formats,\n logger: self.logger,\n self: self\n });\n\n sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode)\n + vars(defaults, defaultCode) + vars(customRules, customRuleCode)\n + sourceCode;\n\n if (opts.processCode) sourceCode = opts.processCode(sourceCode, _schema);\n // console.log('\\n\\n\\n *** \\n', JSON.stringify(sourceCode));\n var validate;\n try {\n var makeValidate = new Function(\n 'self',\n 'RULES',\n 'formats',\n 'root',\n 'refVal',\n 'defaults',\n 'customRules',\n 'equal',\n 'ucs2length',\n 'ValidationError',\n sourceCode\n );\n\n validate = makeValidate(\n self,\n RULES,\n formats,\n root,\n refVal,\n defaults,\n customRules,\n equal,\n ucs2length,\n ValidationError\n );\n\n refVal[0] = validate;\n } catch(e) {\n self.logger.error('Error compiling schema, function code:', sourceCode);\n throw e;\n }\n\n validate.schema = _schema;\n validate.errors = null;\n validate.refs = refs;\n validate.refVal = refVal;\n validate.root = isRoot ? validate : _root;\n if ($async) validate.$async = true;\n if (opts.sourceCode === true) {\n validate.source = {\n code: sourceCode,\n patterns: patterns,\n defaults: defaults\n };\n }\n\n return validate;\n }\n\n function resolveRef(baseId, ref, isRoot) {\n ref = resolve.url(baseId, ref);\n var refIndex = refs[ref];\n var _refVal, refCode;\n if (refIndex !== undefined) {\n _refVal = refVal[refIndex];\n refCode = 'refVal[' + refIndex + ']';\n return resolvedRef(_refVal, refCode);\n }\n if (!isRoot && root.refs) {\n var rootRefId = root.refs[ref];\n if (rootRefId !== undefined) {\n _refVal = root.refVal[rootRefId];\n refCode = addLocalRef(ref, _refVal);\n return resolvedRef(_refVal, refCode);\n }\n }\n\n refCode = addLocalRef(ref);\n var v = resolve.call(self, localCompile, root, ref);\n if (v === undefined) {\n var localSchema = localRefs && localRefs[ref];\n if (localSchema) {\n v = resolve.inlineRef(localSchema, opts.inlineRefs)\n ? localSchema\n : compile.call(self, localSchema, root, localRefs, baseId);\n }\n }\n\n if (v === undefined) {\n removeLocalRef(ref);\n } else {\n replaceLocalRef(ref, v);\n return resolvedRef(v, refCode);\n }\n }\n\n function addLocalRef(ref, v) {\n var refId = refVal.length;\n refVal[refId] = v;\n refs[ref] = refId;\n return 'refVal' + refId;\n }\n\n function removeLocalRef(ref) {\n delete refs[ref];\n }\n\n function replaceLocalRef(ref, v) {\n var refId = refs[ref];\n refVal[refId] = v;\n }\n\n function resolvedRef(refVal, code) {\n return typeof refVal == 'object' || typeof refVal == 'boolean'\n ? { code: code, schema: refVal, inline: true }\n : { code: code, $async: refVal && !!refVal.$async };\n }\n\n function usePattern(regexStr) {\n var index = patternsHash[regexStr];\n if (index === undefined) {\n index = patternsHash[regexStr] = patterns.length;\n patterns[index] = regexStr;\n }\n return 'pattern' + index;\n }\n\n function useDefault(value) {\n switch (typeof value) {\n case 'boolean':\n case 'number':\n return '' + value;\n case 'string':\n return util.toQuotedString(value);\n case 'object':\n if (value === null) return 'null';\n var valueStr = stableStringify(value);\n var index = defaultsHash[valueStr];\n if (index === undefined) {\n index = defaultsHash[valueStr] = defaults.length;\n defaults[index] = value;\n }\n return 'default' + index;\n }\n }\n\n function useCustomRule(rule, schema, parentSchema, it) {\n if (self._opts.validateSchema !== false) {\n var deps = rule.definition.dependencies;\n if (deps && !deps.every(function(keyword) {\n return Object.prototype.hasOwnProperty.call(parentSchema, keyword);\n }))\n throw new Error('parent schema must have all required keywords: ' + deps.join(','));\n\n var validateSchema = rule.definition.validateSchema;\n if (validateSchema) {\n var valid = validateSchema(schema);\n if (!valid) {\n var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);\n if (self._opts.validateSchema == 'log') self.logger.error(message);\n else throw new Error(message);\n }\n }\n }\n\n var compile = rule.definition.compile\n , inline = rule.definition.inline\n , macro = rule.definition.macro;\n\n var validate;\n if (compile) {\n validate = compile.call(self, schema, parentSchema, it);\n } else if (macro) {\n validate = macro.call(self, schema, parentSchema, it);\n if (opts.validateSchema !== false) self.validateSchema(validate, true);\n } else if (inline) {\n validate = inline.call(self, it, rule.keyword, schema, parentSchema);\n } else {\n validate = rule.definition.validate;\n if (!validate) return;\n }\n\n if (validate === undefined)\n throw new Error('custom keyword \"' + rule.keyword + '\"failed to compile');\n\n var index = customRules.length;\n customRules[index] = validate;\n\n return {\n code: 'customRule' + index,\n validate: validate\n };\n }\n}\n\n\n/**\n * Checks if the schema is currently compiled\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n * @return {Object} object with properties \"index\" (compilation index) and \"compiling\" (boolean)\n */\nfunction checkCompiling(schema, root, baseId) {\n /* jshint validthis: true */\n var index = compIndex.call(this, schema, root, baseId);\n if (index >= 0) return { index: index, compiling: true };\n index = this._compilations.length;\n this._compilations[index] = {\n schema: schema,\n root: root,\n baseId: baseId\n };\n return { index: index, compiling: false };\n}\n\n\n/**\n * Removes the schema from the currently compiled list\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n */\nfunction endCompiling(schema, root, baseId) {\n /* jshint validthis: true */\n var i = compIndex.call(this, schema, root, baseId);\n if (i >= 0) this._compilations.splice(i, 1);\n}\n\n\n/**\n * Index of schema compilation in the currently compiled list\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n * @return {Integer} compilation index\n */\nfunction compIndex(schema, root, baseId) {\n /* jshint validthis: true */\n for (var i=0; i= 0xD800 && value <= 0xDBFF && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos);\n if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate\n }\n }\n return length;\n};\n","'use strict';\n\n\nmodule.exports = {\n copy: copy,\n checkDataType: checkDataType,\n checkDataTypes: checkDataTypes,\n coerceToTypes: coerceToTypes,\n toHash: toHash,\n getProperty: getProperty,\n escapeQuotes: escapeQuotes,\n equal: require('fast-deep-equal'),\n ucs2length: require('./ucs2length'),\n varOccurences: varOccurences,\n varReplace: varReplace,\n schemaHasRules: schemaHasRules,\n schemaHasRulesExcept: schemaHasRulesExcept,\n schemaUnknownRules: schemaUnknownRules,\n toQuotedString: toQuotedString,\n getPathExpr: getPathExpr,\n getPath: getPath,\n getData: getData,\n unescapeFragment: unescapeFragment,\n unescapeJsonPointer: unescapeJsonPointer,\n escapeFragment: escapeFragment,\n escapeJsonPointer: escapeJsonPointer\n};\n\n\nfunction copy(o, to) {\n to = to || {};\n for (var key in o) to[key] = o[key];\n return to;\n}\n\n\nfunction checkDataType(dataType, data, strictNumbers, negate) {\n var EQUAL = negate ? ' !== ' : ' === '\n , AND = negate ? ' || ' : ' && '\n , OK = negate ? '!' : ''\n , NOT = negate ? '' : '!';\n switch (dataType) {\n case 'null': return data + EQUAL + 'null';\n case 'array': return OK + 'Array.isArray(' + data + ')';\n case 'object': return '(' + OK + data + AND +\n 'typeof ' + data + EQUAL + '\"object\"' + AND +\n NOT + 'Array.isArray(' + data + '))';\n case 'integer': return '(typeof ' + data + EQUAL + '\"number\"' + AND +\n NOT + '(' + data + ' % 1)' +\n AND + data + EQUAL + data +\n (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n case 'number': return '(typeof ' + data + EQUAL + '\"' + dataType + '\"' +\n (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n default: return 'typeof ' + data + EQUAL + '\"' + dataType + '\"';\n }\n}\n\n\nfunction checkDataTypes(dataTypes, data, strictNumbers) {\n switch (dataTypes.length) {\n case 1: return checkDataType(dataTypes[0], data, strictNumbers, true);\n default:\n var code = '';\n var types = toHash(dataTypes);\n if (types.array && types.object) {\n code = types.null ? '(': '(!' + data + ' || ';\n code += 'typeof ' + data + ' !== \"object\")';\n delete types.null;\n delete types.array;\n delete types.object;\n }\n if (types.number) delete types.integer;\n for (var t in types)\n code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true);\n\n return code;\n }\n}\n\n\nvar COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);\nfunction coerceToTypes(optionCoerceTypes, dataTypes) {\n if (Array.isArray(dataTypes)) {\n var types = [];\n for (var i=0; i= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);\n return paths[lvl - up];\n }\n\n if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);\n data = 'data' + ((lvl - up) || '');\n if (!jsonPointer) return data;\n }\n\n var expr = data;\n var segments = jsonPointer.split('/');\n for (var i=0; i',\n $notOp = $isMax ? '>' : '<',\n $errorKeyword = undefined;\n if (!($isData || typeof $schema == 'number' || $schema === undefined)) {\n throw new Error($keyword + ' must be number');\n }\n if (!($isDataExcl || $schemaExcl === undefined || typeof $schemaExcl == 'number' || typeof $schemaExcl == 'boolean')) {\n throw new Error($exclusiveKeyword + ' must be number or boolean');\n }\n if ($isDataExcl) {\n var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),\n $exclusive = 'exclusive' + $lvl,\n $exclType = 'exclType' + $lvl,\n $exclIsNumber = 'exclIsNumber' + $lvl,\n $opExpr = 'op' + $lvl,\n $opStr = '\\' + ' + $opExpr + ' + \\'';\n out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';\n $schemaValueExcl = 'schemaExcl' + $lvl;\n out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \\'boolean\\' && ' + ($exclType) + ' != \\'undefined\\' && ' + ($exclType) + ' != \\'number\\') { ';\n var $errorKeyword = $exclusiveKeyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_exclusiveLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'' + ($exclusiveKeyword) + ' should be boolean\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($exclType) + ' == \\'number\\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \\'' + ($op) + '\\' : \\'' + ($op) + '=\\'; ';\n if ($schema === undefined) {\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $schemaValue = $schemaValueExcl;\n $isData = $isDataExcl;\n }\n } else {\n var $exclIsNumber = typeof $schemaExcl == 'number',\n $opStr = $op;\n if ($exclIsNumber && $isData) {\n var $opExpr = '\\'' + $opStr + '\\'';\n out += ' if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { ';\n } else {\n if ($exclIsNumber && $schema === undefined) {\n $exclusive = true;\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $schemaValue = $schemaExcl;\n $notOp += '=';\n } else {\n if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);\n if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {\n $exclusive = true;\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $notOp += '=';\n } else {\n $exclusive = false;\n $opStr += '=';\n }\n }\n var $opExpr = '\\'' + $opStr + '\\'';\n out += ' if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { ';\n }\n }\n $errorKeyword = $errorKeyword || $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ' + ($opStr) + ' ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue);\n } else {\n out += '' + ($schemaValue) + '\\'';\n }\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate__limitItems(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxItems' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have ';\n if ($keyword == 'maxItems') {\n out += 'more';\n } else {\n out += 'fewer';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' items\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate__limitLength(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxLength' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n if (it.opts.unicode === false) {\n out += ' ' + ($data) + '.length ';\n } else {\n out += ' ucs2length(' + ($data) + ') ';\n }\n out += ' ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitLength') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be ';\n if ($keyword == 'maxLength') {\n out += 'longer';\n } else {\n out += 'shorter';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' characters\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate__limitProperties(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxProperties' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have ';\n if ($keyword == 'maxProperties') {\n out += 'more';\n } else {\n out += 'fewer';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' properties\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_allOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $currentBaseId = $it.baseId,\n $allSchemasEmpty = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n $allSchemasEmpty = false;\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if ($breakOnError) {\n if ($allSchemasEmpty) {\n out += ' if (true) { ';\n } else {\n out += ' ' + ($closingBraces.slice(0, -1)) + ' ';\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_anyOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $noEmptySchema = $schema.every(function($sch) {\n return (it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all));\n });\n if ($noEmptySchema) {\n var $currentBaseId = $it.baseId;\n out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { ';\n $closingBraces += '}';\n }\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('anyOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match some schema in anyOf\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_comment(it, $keyword, $ruleType) {\n var out = ' ';\n var $schema = it.schema[$keyword];\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $comment = it.util.toQuotedString($schema);\n if (it.opts.$comment === true) {\n out += ' console.log(' + ($comment) + ');';\n } else if (typeof it.opts.$comment == 'function') {\n out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_const(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!$isData) {\n out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';\n }\n out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('const') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be equal to constant\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' }';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_contains(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $idx = 'i' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $currentBaseId = it.baseId,\n $nonEmptySchema = (it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all));\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if ($nonEmptySchema) {\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' if (' + ($nextValid) + ') break; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {';\n } else {\n out += ' if (' + ($data) + '.length == 0) {';\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('contains') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should contain a valid item\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n if ($nonEmptySchema) {\n out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n }\n if (it.opts.allErrors) {\n out += ' } ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_custom(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $rule = this,\n $definition = 'definition' + $lvl,\n $rDef = $rule.definition,\n $closingBraces = '';\n var $compile, $inline, $macro, $ruleValidate, $validateCode;\n if ($isData && $rDef.$data) {\n $validateCode = 'keywordValidate' + $lvl;\n var $validateSchema = $rDef.validateSchema;\n out += ' var ' + ($definition) + ' = RULES.custom[\\'' + ($keyword) + '\\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;';\n } else {\n $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);\n if (!$ruleValidate) return;\n $schemaValue = 'validate.schema' + $schemaPath;\n $validateCode = $ruleValidate.code;\n $compile = $rDef.compile;\n $inline = $rDef.inline;\n $macro = $rDef.macro;\n }\n var $ruleErrs = $validateCode + '.errors',\n $i = 'i' + $lvl,\n $ruleErr = 'ruleErr' + $lvl,\n $asyncKeyword = $rDef.async;\n if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema');\n if (!($inline || $macro)) {\n out += '' + ($ruleErrs) + ' = null;';\n }\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if ($isData && $rDef.$data) {\n $closingBraces += '}';\n out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { ';\n if ($validateSchema) {\n $closingBraces += '}';\n out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { ';\n }\n }\n if ($inline) {\n if ($rDef.statements) {\n out += ' ' + ($ruleValidate.validate) + ' ';\n } else {\n out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; ';\n }\n } else if ($macro) {\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n $it.schema = $ruleValidate.validate;\n $it.schemaPath = '';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var $code = it.validate($it).replace(/validate\\.schema/g, $validateCode);\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($code);\n } else {\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = '';\n out += ' ' + ($validateCode) + '.call( ';\n if (it.opts.passContext) {\n out += 'this';\n } else {\n out += 'self';\n }\n if ($compile || $rDef.schema === false) {\n out += ' , ' + ($data) + ' ';\n } else {\n out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' ';\n }\n out += ' , (dataPath || \\'\\')';\n if (it.errorPath != '\"\"') {\n out += ' + ' + (it.errorPath);\n }\n var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData ) ';\n var def_callRuleValidate = out;\n out = $$outStack.pop();\n if ($rDef.errors === false) {\n out += ' ' + ($valid) + ' = ';\n if ($asyncKeyword) {\n out += 'await ';\n }\n out += '' + (def_callRuleValidate) + '; ';\n } else {\n if ($asyncKeyword) {\n $ruleErrs = 'customErrors' + $lvl;\n out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = await ' + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } ';\n } else {\n out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; ';\n }\n }\n }\n if ($rDef.modifying) {\n out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];';\n }\n out += '' + ($closingBraces);\n if ($rDef.valid) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n } else {\n out += ' if ( ';\n if ($rDef.valid === undefined) {\n out += ' !';\n if ($macro) {\n out += '' + ($nextValid);\n } else {\n out += '' + ($valid);\n }\n } else {\n out += ' ' + (!$rDef.valid) + ' ';\n }\n out += ') { ';\n $errorKeyword = $rule.keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = '';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'custom') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \\'' + ($rule.keyword) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should pass \"' + ($rule.keyword) + '\" keyword validation\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n var def_customError = out;\n out = $$outStack.pop();\n if ($inline) {\n if ($rDef.errors) {\n if ($rDef.errors != 'full') {\n out += ' for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + ' 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n }\n out += ') { ';\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + it.util.getProperty($property);\n $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_enum(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $i = 'i' + $lvl,\n $vSchema = 'schema' + $lvl;\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';';\n }\n out += 'var ' + ($valid) + ';';\n if ($isData) {\n out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n }\n out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('enum') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be equal to one of the allowed values\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' }';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_format(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n if (it.opts.format === false) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n }\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $unknownFormats = it.opts.unknownFormats,\n $allowUnknown = Array.isArray($unknownFormats);\n if ($isData) {\n var $format = 'format' + $lvl,\n $isObject = 'isObject' + $lvl,\n $formatType = 'formatType' + $lvl;\n out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \\'object\\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \\'string\\'; if (' + ($isObject) + ') { ';\n if (it.async) {\n out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; ';\n }\n out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n }\n out += ' (';\n if ($unknownFormats != 'ignore') {\n out += ' (' + ($schemaValue) + ' && !' + ($format) + ' ';\n if ($allowUnknown) {\n out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 ';\n }\n out += ') || ';\n }\n out += ' (' + ($format) + ' && ' + ($formatType) + ' == \\'' + ($ruleType) + '\\' && !(typeof ' + ($format) + ' == \\'function\\' ? ';\n if (it.async) {\n out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) ';\n } else {\n out += ' ' + ($format) + '(' + ($data) + ') ';\n }\n out += ' : ' + ($format) + '.test(' + ($data) + '))))) {';\n } else {\n var $format = it.formats[$schema];\n if (!$format) {\n if ($unknownFormats == 'ignore') {\n it.logger.warn('unknown format \"' + $schema + '\" ignored in schema at path \"' + it.errSchemaPath + '\"');\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n } else {\n throw new Error('unknown format \"' + $schema + '\" is used in schema at path \"' + it.errSchemaPath + '\"');\n }\n }\n var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate;\n var $formatType = $isObject && $format.type || 'string';\n if ($isObject) {\n var $async = $format.async === true;\n $format = $format.validate;\n }\n if ($formatType != $ruleType) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n }\n if ($async) {\n if (!it.async) throw new Error('async format in sync schema');\n var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';\n out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { ';\n } else {\n out += ' if (! ';\n var $formatRef = 'formats' + it.util.getProperty($schema);\n if ($isObject) $formatRef += '.validate';\n if (typeof $format == 'function') {\n out += ' ' + ($formatRef) + '(' + ($data) + ') ';\n } else {\n out += ' ' + ($formatRef) + '.test(' + ($data) + ') ';\n }\n out += ') { ';\n }\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('format') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: ';\n if ($isData) {\n out += '' + ($schemaValue);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match format \"';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + (it.util.escapeQuotes($schema));\n }\n out += '\"\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_if(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $thenSch = it.schema['then'],\n $elseSch = it.schema['else'],\n $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? (typeof $thenSch == 'object' && Object.keys($thenSch).length > 0) || $thenSch === false : it.util.schemaHasRules($thenSch, it.RULES.all)),\n $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? (typeof $elseSch == 'object' && Object.keys($elseSch).length > 0) || $elseSch === false : it.util.schemaHasRules($elseSch, it.RULES.all)),\n $currentBaseId = $it.baseId;\n if ($thenPresent || $elsePresent) {\n var $ifClause;\n $it.createErrors = false;\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n $it.createErrors = true;\n out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n if ($thenPresent) {\n out += ' if (' + ($nextValid) + ') { ';\n $it.schema = it.schema['then'];\n $it.schemaPath = it.schemaPath + '.then';\n $it.errSchemaPath = it.errSchemaPath + '/then';\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n if ($thenPresent && $elsePresent) {\n $ifClause = 'ifClause' + $lvl;\n out += ' var ' + ($ifClause) + ' = \\'then\\'; ';\n } else {\n $ifClause = '\\'then\\'';\n }\n out += ' } ';\n if ($elsePresent) {\n out += ' else { ';\n }\n } else {\n out += ' if (!' + ($nextValid) + ') { ';\n }\n if ($elsePresent) {\n $it.schema = it.schema['else'];\n $it.schemaPath = it.schemaPath + '.else';\n $it.errSchemaPath = it.errSchemaPath + '/else';\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n if ($thenPresent && $elsePresent) {\n $ifClause = 'ifClause' + $lvl;\n out += ' var ' + ($ifClause) + ' = \\'else\\'; ';\n } else {\n $ifClause = '\\'else\\'';\n }\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('if') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match \"\\' + ' + ($ifClause) + ' + \\'\" schema\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n","'use strict';\n\n//all requires must be explicit because browserify won't work with dynamic requires\nmodule.exports = {\n '$ref': require('./ref'),\n allOf: require('./allOf'),\n anyOf: require('./anyOf'),\n '$comment': require('./comment'),\n const: require('./const'),\n contains: require('./contains'),\n dependencies: require('./dependencies'),\n 'enum': require('./enum'),\n format: require('./format'),\n 'if': require('./if'),\n items: require('./items'),\n maximum: require('./_limit'),\n minimum: require('./_limit'),\n maxItems: require('./_limitItems'),\n minItems: require('./_limitItems'),\n maxLength: require('./_limitLength'),\n minLength: require('./_limitLength'),\n maxProperties: require('./_limitProperties'),\n minProperties: require('./_limitProperties'),\n multipleOf: require('./multipleOf'),\n not: require('./not'),\n oneOf: require('./oneOf'),\n pattern: require('./pattern'),\n properties: require('./properties'),\n propertyNames: require('./propertyNames'),\n required: require('./required'),\n uniqueItems: require('./uniqueItems'),\n validate: require('./validate')\n};\n","'use strict';\nmodule.exports = function generate_items(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $idx = 'i' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $currentBaseId = it.baseId;\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if (Array.isArray($schema)) {\n var $additionalItems = it.schema.additionalItems;\n if ($additionalItems === false) {\n out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; ';\n var $currErrSchemaPath = $errSchemaPath;\n $errSchemaPath = it.errSchemaPath + '/additionalItems';\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('additionalItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have more than ' + ($schema.length) + ' items\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n $errSchemaPath = $currErrSchemaPath;\n if ($breakOnError) {\n $closingBraces += '}';\n out += ' else { ';\n }\n }\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { ';\n var $passData = $data + '[' + $i + ']';\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);\n $it.dataPathArr[$dataNxt] = $i;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? (typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0) || $additionalItems === false : it.util.schemaHasRules($additionalItems, it.RULES.all))) {\n $it.schema = $additionalItems;\n $it.schemaPath = it.schemaPath + '.additionalItems';\n $it.errSchemaPath = it.errSchemaPath + '/additionalItems';\n out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' } } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n } else if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' }';\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_multipleOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n out += 'var division' + ($lvl) + ';if (';\n if ($isData) {\n out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \\'number\\' || ';\n }\n out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', ';\n if (it.opts.multipleOfPrecision) {\n out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' ';\n } else {\n out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') ';\n }\n out += ' ) ';\n if ($isData) {\n out += ' ) ';\n }\n out += ' ) { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('multipleOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be multiple of ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue);\n } else {\n out += '' + ($schemaValue) + '\\'';\n }\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_not(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($errs) + ' = errors; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.createErrors = false;\n var $allErrorsOption;\n if ($it.opts.allErrors) {\n $allErrorsOption = $it.opts.allErrors;\n $it.opts.allErrors = false;\n }\n out += ' ' + (it.validate($it)) + ' ';\n $it.createErrors = true;\n if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' if (' + ($nextValid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be valid\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n } else {\n out += ' var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be valid\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if ($breakOnError) {\n out += ' if (false) { ';\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_oneOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $currentBaseId = $it.baseId,\n $prevValid = 'prevValid' + $lvl,\n $passingSchemas = 'passingSchemas' + $lvl;\n out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n } else {\n out += ' var ' + ($nextValid) + ' = true; ';\n }\n if ($i) {\n out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { ';\n $closingBraces += '}';\n }\n out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }';\n }\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('oneOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match exactly one schema in oneOf\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_pattern(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema);\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n }\n out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('pattern') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: ';\n if ($isData) {\n out += '' + ($schemaValue);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match pattern \"';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + (it.util.escapeQuotes($schema));\n }\n out += '\"\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_properties(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $key = 'key' + $lvl,\n $idx = 'idx' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $dataProperties = 'dataProperties' + $lvl;\n var $schemaKeys = Object.keys($schema || {}).filter(notProto),\n $pProperties = it.schema.patternProperties || {},\n $pPropertyKeys = Object.keys($pProperties).filter(notProto),\n $aProperties = it.schema.additionalProperties,\n $someProperties = $schemaKeys.length || $pPropertyKeys.length,\n $noAdditional = $aProperties === false,\n $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,\n $removeAdditional = it.opts.removeAdditional,\n $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional,\n $ownProperties = it.opts.ownProperties,\n $currentBaseId = it.baseId;\n var $required = it.schema.required;\n if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) {\n var $requiredHash = it.util.toHash($required);\n }\n\n function notProto(p) {\n return p !== '__proto__';\n }\n out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;';\n if ($ownProperties) {\n out += ' var ' + ($dataProperties) + ' = undefined;';\n }\n if ($checkAdditional) {\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n if ($someProperties) {\n out += ' var isAdditional' + ($lvl) + ' = !(false ';\n if ($schemaKeys.length) {\n if ($schemaKeys.length > 8) {\n out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') ';\n } else {\n var arr1 = $schemaKeys;\n if (arr1) {\n var $propertyKey, i1 = -1,\n l1 = arr1.length - 1;\n while (i1 < l1) {\n $propertyKey = arr1[i1 += 1];\n out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';\n }\n }\n }\n }\n if ($pPropertyKeys.length) {\n var arr2 = $pPropertyKeys;\n if (arr2) {\n var $pProperty, $i = -1,\n l2 = arr2.length - 1;\n while ($i < l2) {\n $pProperty = arr2[$i += 1];\n out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') ';\n }\n }\n }\n out += ' ); if (isAdditional' + ($lvl) + ') { ';\n }\n if ($removeAdditional == 'all') {\n out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n } else {\n var $currentErrorPath = it.errorPath;\n var $additionalProperty = '\\' + ' + $key + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n }\n if ($noAdditional) {\n if ($removeAdditional) {\n out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n } else {\n out += ' ' + ($nextValid) + ' = false; ';\n var $currErrSchemaPath = $errSchemaPath;\n $errSchemaPath = it.errSchemaPath + '/additionalProperties';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('additionalProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \\'' + ($additionalProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is an invalid additional property';\n } else {\n out += 'should NOT have additional properties';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n $errSchemaPath = $currErrSchemaPath;\n if ($breakOnError) {\n out += ' break; ';\n }\n }\n } else if ($additionalIsSchema) {\n if ($removeAdditional == 'failing') {\n out += ' var ' + ($errs) + ' = errors; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.schema = $aProperties;\n $it.schemaPath = it.schemaPath + '.additionalProperties';\n $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n } else {\n $it.schema = $aProperties;\n $it.schemaPath = it.schemaPath + '.additionalProperties';\n $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n }\n }\n it.errorPath = $currentErrorPath;\n }\n if ($someProperties) {\n out += ' } ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n var $useDefaults = it.opts.useDefaults && !it.compositeRule;\n if ($schemaKeys.length) {\n var arr3 = $schemaKeys;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $sch = $schema[$propertyKey];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n var $prop = it.util.getProperty($propertyKey),\n $passData = $data + $prop,\n $hasDefault = $useDefaults && $sch.default !== undefined;\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + $prop;\n $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);\n $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);\n $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n $code = it.util.varReplace($code, $nextData, $passData);\n var $useData = $passData;\n } else {\n var $useData = $nextData;\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';\n }\n if ($hasDefault) {\n out += ' ' + ($code) + ' ';\n } else {\n if ($requiredHash && $requiredHash[$propertyKey]) {\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { ' + ($nextValid) + ' = false; ';\n var $currentErrorPath = it.errorPath,\n $currErrSchemaPath = $errSchemaPath,\n $missingProperty = it.util.escapeQuotes($propertyKey);\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n $errSchemaPath = it.errSchemaPath + '/required';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n $errSchemaPath = $currErrSchemaPath;\n it.errorPath = $currentErrorPath;\n out += ' } else { ';\n } else {\n if ($breakOnError) {\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { ' + ($nextValid) + ' = true; } else { ';\n } else {\n out += ' if (' + ($useData) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ' ) { ';\n }\n }\n out += ' ' + ($code) + ' } ';\n }\n }\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if ($pPropertyKeys.length) {\n var arr4 = $pPropertyKeys;\n if (arr4) {\n var $pProperty, i4 = -1,\n l4 = arr4.length - 1;\n while (i4 < l4) {\n $pProperty = arr4[i4 += 1];\n var $sch = $pProperties[$pProperty];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n $it.schema = $sch;\n $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);\n $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else ' + ($nextValid) + ' = true; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_propertyNames(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n out += 'var ' + ($errs) + ' = errors;';\n if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n var $key = 'key' + $lvl,\n $idx = 'idx' + $lvl,\n $i = 'i' + $lvl,\n $invalidName = '\\' + ' + $key + ' + \\'',\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $dataProperties = 'dataProperties' + $lvl,\n $ownProperties = it.opts.ownProperties,\n $currentBaseId = it.baseId;\n if ($ownProperties) {\n out += ' var ' + ($dataProperties) + ' = undefined; ';\n }\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n out += ' var startErrs' + ($lvl) + ' = errors; ';\n var $passData = $key;\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + ' 0) || $propertySch === false : it.util.schemaHasRules($propertySch, it.RULES.all)))) {\n $required[$required.length] = $property;\n }\n }\n }\n } else {\n var $required = $schema;\n }\n }\n if ($isData || $required.length) {\n var $currentErrorPath = it.errorPath,\n $loopRequired = $isData || $required.length >= it.opts.loopRequired,\n $ownProperties = it.opts.ownProperties;\n if ($breakOnError) {\n out += ' var missing' + ($lvl) + '; ';\n if ($loopRequired) {\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n }\n var $i = 'i' + $lvl,\n $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n }\n out += ' var ' + ($valid) + ' = true; ';\n if ($isData) {\n out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n }\n out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n }\n out += '; if (!' + ($valid) + ') break; } ';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n } else {\n out += ' if ( ';\n var arr2 = $required;\n if (arr2) {\n var $propertyKey, $i = -1,\n l2 = arr2.length - 1;\n while ($i < l2) {\n $propertyKey = arr2[$i += 1];\n if ($i) {\n out += ' || ';\n }\n var $prop = it.util.getProperty($propertyKey),\n $useData = $data + $prop;\n out += ' ( ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n }\n }\n out += ') { ';\n var $propertyPath = 'missing' + $lvl,\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n }\n } else {\n if ($loopRequired) {\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n }\n var $i = 'i' + $lvl,\n $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n }\n if ($isData) {\n out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { ';\n }\n out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';\n if ($isData) {\n out += ' } ';\n }\n } else {\n var arr3 = $required;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $prop = it.util.getProperty($propertyKey),\n $missingProperty = it.util.escapeQuotes($propertyKey),\n $useData = $data + $prop;\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n }\n }\n }\n }\n it.errorPath = $currentErrorPath;\n } else if ($breakOnError) {\n out += ' if (true) {';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_uniqueItems(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (($schema || $isData) && it.opts.uniqueItems !== false) {\n if ($isData) {\n out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'boolean\\') ' + ($valid) + ' = false; else { ';\n }\n out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { ';\n var $itemType = it.schema.items && it.schema.items.type,\n $typeIsArray = Array.isArray($itemType);\n if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) {\n out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } ';\n } else {\n out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; ';\n var $method = 'checkDataType' + ($typeIsArray ? 's' : '');\n out += ' if (' + (it.util[$method]($itemType, 'item', it.opts.strictNumbers, true)) + ') continue; ';\n if ($typeIsArray) {\n out += ' if (typeof item == \\'string\\') item = \\'\"\\' + item; ';\n }\n out += ' if (typeof itemIndices[item] == \\'number\\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ';\n }\n out += ' } ';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('uniqueItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have duplicate items (items ## \\' + j + \\' and \\' + i + \\' are identical)\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_validate(it, $keyword, $ruleType) {\n var out = '';\n var $async = it.schema.$async === true,\n $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'),\n $id = it.self._getId(it.schema);\n if (it.opts.strictKeywords) {\n var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords);\n if ($unknownKwd) {\n var $keywordsMsg = 'unknown keyword: ' + $unknownKwd;\n if (it.opts.strictKeywords === 'log') it.logger.warn($keywordsMsg);\n else throw new Error($keywordsMsg);\n }\n }\n if (it.isTop) {\n out += ' var validate = ';\n if ($async) {\n it.async = true;\n out += 'async ';\n }\n out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \\'use strict\\'; ';\n if ($id && (it.opts.sourceCode || it.opts.processCode)) {\n out += ' ' + ('/\\*# sourceURL=' + $id + ' */') + ' ';\n }\n }\n if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) {\n var $keyword = 'false schema';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n if (it.schema === false) {\n if (it.isTop) {\n $breakOnError = true;\n } else {\n out += ' var ' + ($valid) + ' = false; ';\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'false schema') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'boolean schema is false\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n } else {\n if (it.isTop) {\n if ($async) {\n out += ' return data; ';\n } else {\n out += ' validate.errors = null; return true; ';\n }\n } else {\n out += ' var ' + ($valid) + ' = true; ';\n }\n }\n if (it.isTop) {\n out += ' }; return validate; ';\n }\n return out;\n }\n if (it.isTop) {\n var $top = it.isTop,\n $lvl = it.level = 0,\n $dataLvl = it.dataLevel = 0,\n $data = 'data';\n it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema));\n it.baseId = it.baseId || it.rootId;\n delete it.isTop;\n it.dataPathArr = [\"\"];\n if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) {\n var $defaultMsg = 'default is ignored in the schema root';\n if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n else throw new Error($defaultMsg);\n }\n out += ' var vErrors = null; ';\n out += ' var errors = 0; ';\n out += ' if (rootData === undefined) rootData = data; ';\n } else {\n var $lvl = it.level,\n $dataLvl = it.dataLevel,\n $data = 'data' + ($dataLvl || '');\n if ($id) it.baseId = it.resolve.url(it.baseId, $id);\n if ($async && !it.async) throw new Error('async schema in sync schema');\n out += ' var errs_' + ($lvl) + ' = errors;';\n }\n var $valid = 'valid' + $lvl,\n $breakOnError = !it.opts.allErrors,\n $closingBraces1 = '',\n $closingBraces2 = '';\n var $errorKeyword;\n var $typeSchema = it.schema.type,\n $typeIsArray = Array.isArray($typeSchema);\n if ($typeSchema && it.opts.nullable && it.schema.nullable === true) {\n if ($typeIsArray) {\n if ($typeSchema.indexOf('null') == -1) $typeSchema = $typeSchema.concat('null');\n } else if ($typeSchema != 'null') {\n $typeSchema = [$typeSchema, 'null'];\n $typeIsArray = true;\n }\n }\n if ($typeIsArray && $typeSchema.length == 1) {\n $typeSchema = $typeSchema[0];\n $typeIsArray = false;\n }\n if (it.schema.$ref && $refKeywords) {\n if (it.opts.extendRefs == 'fail') {\n throw new Error('$ref: validation keywords used in schema at path \"' + it.errSchemaPath + '\" (see option extendRefs)');\n } else if (it.opts.extendRefs !== true) {\n $refKeywords = false;\n it.logger.warn('$ref: keywords ignored in schema at path \"' + it.errSchemaPath + '\"');\n }\n }\n if (it.schema.$comment && it.opts.$comment) {\n out += ' ' + (it.RULES.all.$comment.code(it, '$comment'));\n }\n if ($typeSchema) {\n if (it.opts.coerceTypes) {\n var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema);\n }\n var $rulesGroup = it.RULES.types[$typeSchema];\n if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) {\n var $schemaPath = it.schemaPath + '.type',\n $errSchemaPath = it.errSchemaPath + '/type';\n var $schemaPath = it.schemaPath + '.type',\n $errSchemaPath = it.errSchemaPath + '/type',\n $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType';\n out += ' if (' + (it.util[$method]($typeSchema, $data, it.opts.strictNumbers, true)) + ') { ';\n if ($coerceToTypes) {\n var $dataType = 'dataType' + $lvl,\n $coerced = 'coerced' + $lvl;\n out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; var ' + ($coerced) + ' = undefined; ';\n if (it.opts.coerceTypes == 'array') {\n out += ' if (' + ($dataType) + ' == \\'object\\' && Array.isArray(' + ($data) + ') && ' + ($data) + '.length == 1) { ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; if (' + (it.util.checkDataType(it.schema.type, $data, it.opts.strictNumbers)) + ') ' + ($coerced) + ' = ' + ($data) + '; } ';\n }\n out += ' if (' + ($coerced) + ' !== undefined) ; ';\n var arr1 = $coerceToTypes;\n if (arr1) {\n var $type, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $type = arr1[$i += 1];\n if ($type == 'string') {\n out += ' else if (' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\') ' + ($coerced) + ' = \\'\\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \\'\\'; ';\n } else if ($type == 'number' || $type == 'integer') {\n out += ' else if (' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \\'string\\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' ';\n if ($type == 'integer') {\n out += ' && !(' + ($data) + ' % 1)';\n }\n out += ')) ' + ($coerced) + ' = +' + ($data) + '; ';\n } else if ($type == 'boolean') {\n out += ' else if (' + ($data) + ' === \\'false\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \\'true\\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; ';\n } else if ($type == 'null') {\n out += ' else if (' + ($data) + ' === \\'\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; ';\n } else if (it.opts.coerceTypes == 'array' && $type == 'array') {\n out += ' else if (' + ($dataType) + ' == \\'string\\' || ' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; ';\n }\n }\n }\n out += ' else { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } if (' + ($coerced) + ' !== undefined) { ';\n var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n out += ' ' + ($data) + ' = ' + ($coerced) + '; ';\n if (!$dataLvl) {\n out += 'if (' + ($parentData) + ' !== undefined)';\n }\n out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } ';\n } else {\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n }\n out += ' } ';\n }\n }\n if (it.schema.$ref && !$refKeywords) {\n out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' ';\n if ($breakOnError) {\n out += ' } if (errors === ';\n if ($top) {\n out += '0';\n } else {\n out += 'errs_' + ($lvl);\n }\n out += ') { ';\n $closingBraces2 += '}';\n }\n } else {\n var arr2 = it.RULES;\n if (arr2) {\n var $rulesGroup, i2 = -1,\n l2 = arr2.length - 1;\n while (i2 < l2) {\n $rulesGroup = arr2[i2 += 1];\n if ($shouldUseGroup($rulesGroup)) {\n if ($rulesGroup.type) {\n out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data, it.opts.strictNumbers)) + ') { ';\n }\n if (it.opts.useDefaults) {\n if ($rulesGroup.type == 'object' && it.schema.properties) {\n var $schema = it.schema.properties,\n $schemaKeys = Object.keys($schema);\n var arr3 = $schemaKeys;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $sch = $schema[$propertyKey];\n if ($sch.default !== undefined) {\n var $passData = $data + it.util.getProperty($propertyKey);\n if (it.compositeRule) {\n if (it.opts.strictDefaults) {\n var $defaultMsg = 'default is ignored for: ' + $passData;\n if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n else throw new Error($defaultMsg);\n }\n } else {\n out += ' if (' + ($passData) + ' === undefined ';\n if (it.opts.useDefaults == 'empty') {\n out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \\'\\' ';\n }\n out += ' ) ' + ($passData) + ' = ';\n if (it.opts.useDefaults == 'shared') {\n out += ' ' + (it.useDefault($sch.default)) + ' ';\n } else {\n out += ' ' + (JSON.stringify($sch.default)) + ' ';\n }\n out += '; ';\n }\n }\n }\n }\n } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) {\n var arr4 = it.schema.items;\n if (arr4) {\n var $sch, $i = -1,\n l4 = arr4.length - 1;\n while ($i < l4) {\n $sch = arr4[$i += 1];\n if ($sch.default !== undefined) {\n var $passData = $data + '[' + $i + ']';\n if (it.compositeRule) {\n if (it.opts.strictDefaults) {\n var $defaultMsg = 'default is ignored for: ' + $passData;\n if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n else throw new Error($defaultMsg);\n }\n } else {\n out += ' if (' + ($passData) + ' === undefined ';\n if (it.opts.useDefaults == 'empty') {\n out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \\'\\' ';\n }\n out += ' ) ' + ($passData) + ' = ';\n if (it.opts.useDefaults == 'shared') {\n out += ' ' + (it.useDefault($sch.default)) + ' ';\n } else {\n out += ' ' + (JSON.stringify($sch.default)) + ' ';\n }\n out += '; ';\n }\n }\n }\n }\n }\n }\n var arr5 = $rulesGroup.rules;\n if (arr5) {\n var $rule, i5 = -1,\n l5 = arr5.length - 1;\n while (i5 < l5) {\n $rule = arr5[i5 += 1];\n if ($shouldUseRule($rule)) {\n var $code = $rule.code(it, $rule.keyword, $rulesGroup.type);\n if ($code) {\n out += ' ' + ($code) + ' ';\n if ($breakOnError) {\n $closingBraces1 += '}';\n }\n }\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces1) + ' ';\n $closingBraces1 = '';\n }\n if ($rulesGroup.type) {\n out += ' } ';\n if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) {\n out += ' else { ';\n var $schemaPath = it.schemaPath + '.type',\n $errSchemaPath = it.errSchemaPath + '/type';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n }\n }\n if ($breakOnError) {\n out += ' if (errors === ';\n if ($top) {\n out += '0';\n } else {\n out += 'errs_' + ($lvl);\n }\n out += ') { ';\n $closingBraces2 += '}';\n }\n }\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces2) + ' ';\n }\n if ($top) {\n if ($async) {\n out += ' if (errors === 0) return data; ';\n out += ' else throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; ';\n out += ' return errors === 0; ';\n }\n out += ' }; return validate;';\n } else {\n out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';';\n }\n\n function $shouldUseGroup($rulesGroup) {\n var rules = $rulesGroup.rules;\n for (var i = 0; i < rules.length; i++)\n if ($shouldUseRule(rules[i])) return true;\n }\n\n function $shouldUseRule($rule) {\n return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule));\n }\n\n function $ruleImplementsSomeKeyword($rule) {\n var impl = $rule.implements;\n for (var i = 0; i < impl.length; i++)\n if (it.schema[impl[i]] !== undefined) return true;\n }\n return out;\n}\n","'use strict';\n\nvar IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i;\nvar customRuleCode = require('./dotjs/custom');\nvar definitionSchema = require('./definition_schema');\n\nmodule.exports = {\n add: addKeyword,\n get: getKeyword,\n remove: removeKeyword,\n validate: validateKeyword\n};\n\n\n/**\n * Define custom keyword\n * @this Ajv\n * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords).\n * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`.\n * @return {Ajv} this for method chaining\n */\nfunction addKeyword(keyword, definition) {\n /* jshint validthis: true */\n /* eslint no-shadow: 0 */\n var RULES = this.RULES;\n if (RULES.keywords[keyword])\n throw new Error('Keyword ' + keyword + ' is already defined');\n\n if (!IDENTIFIER.test(keyword))\n throw new Error('Keyword ' + keyword + ' is not a valid identifier');\n\n if (definition) {\n this.validateKeyword(definition, true);\n\n var dataType = definition.type;\n if (Array.isArray(dataType)) {\n for (var i=0; i> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","// Copyright 2011 Mark Cavage All rights reserved.\n\n\nmodule.exports = {\n\n newInvalidAsn1Error: function (msg) {\n var e = new Error();\n e.name = 'InvalidAsn1Error';\n e.message = msg || '';\n return e;\n }\n\n};\n","// Copyright 2011 Mark Cavage All rights reserved.\n\nvar errors = require('./errors');\nvar types = require('./types');\n\nvar Reader = require('./reader');\nvar Writer = require('./writer');\n\n\n// --- Exports\n\nmodule.exports = {\n\n Reader: Reader,\n\n Writer: Writer\n\n};\n\nfor (var t in types) {\n if (types.hasOwnProperty(t))\n module.exports[t] = types[t];\n}\nfor (var e in errors) {\n if (errors.hasOwnProperty(e))\n module.exports[e] = errors[e];\n}\n","// Copyright 2011 Mark Cavage All rights reserved.\n\nvar assert = require('assert');\nvar Buffer = require('safer-buffer').Buffer;\n\nvar ASN1 = require('./types');\nvar errors = require('./errors');\n\n\n// --- Globals\n\nvar newInvalidAsn1Error = errors.newInvalidAsn1Error;\n\n\n\n// --- API\n\nfunction Reader(data) {\n if (!data || !Buffer.isBuffer(data))\n throw new TypeError('data must be a node Buffer');\n\n this._buf = data;\n this._size = data.length;\n\n // These hold the \"current\" state\n this._len = 0;\n this._offset = 0;\n}\n\nObject.defineProperty(Reader.prototype, 'length', {\n enumerable: true,\n get: function () { return (this._len); }\n});\n\nObject.defineProperty(Reader.prototype, 'offset', {\n enumerable: true,\n get: function () { return (this._offset); }\n});\n\nObject.defineProperty(Reader.prototype, 'remain', {\n get: function () { return (this._size - this._offset); }\n});\n\nObject.defineProperty(Reader.prototype, 'buffer', {\n get: function () { return (this._buf.slice(this._offset)); }\n});\n\n\n/**\n * Reads a single byte and advances offset; you can pass in `true` to make this\n * a \"peek\" operation (i.e., get the byte, but don't advance the offset).\n *\n * @param {Boolean} peek true means don't move offset.\n * @return {Number} the next byte, null if not enough data.\n */\nReader.prototype.readByte = function (peek) {\n if (this._size - this._offset < 1)\n return null;\n\n var b = this._buf[this._offset] & 0xff;\n\n if (!peek)\n this._offset += 1;\n\n return b;\n};\n\n\nReader.prototype.peek = function () {\n return this.readByte(true);\n};\n\n\n/**\n * Reads a (potentially) variable length off the BER buffer. This call is\n * not really meant to be called directly, as callers have to manipulate\n * the internal buffer afterwards.\n *\n * As a result of this call, you can call `Reader.length`, until the\n * next thing called that does a readLength.\n *\n * @return {Number} the amount of offset to advance the buffer.\n * @throws {InvalidAsn1Error} on bad ASN.1\n */\nReader.prototype.readLength = function (offset) {\n if (offset === undefined)\n offset = this._offset;\n\n if (offset >= this._size)\n return null;\n\n var lenB = this._buf[offset++] & 0xff;\n if (lenB === null)\n return null;\n\n if ((lenB & 0x80) === 0x80) {\n lenB &= 0x7f;\n\n if (lenB === 0)\n throw newInvalidAsn1Error('Indefinite length not supported');\n\n if (lenB > 4)\n throw newInvalidAsn1Error('encoding too long');\n\n if (this._size - offset < lenB)\n return null;\n\n this._len = 0;\n for (var i = 0; i < lenB; i++)\n this._len = (this._len << 8) + (this._buf[offset++] & 0xff);\n\n } else {\n // Wasn't a variable length\n this._len = lenB;\n }\n\n return offset;\n};\n\n\n/**\n * Parses the next sequence in this BER buffer.\n *\n * To get the length of the sequence, call `Reader.length`.\n *\n * @return {Number} the sequence's tag.\n */\nReader.prototype.readSequence = function (tag) {\n var seq = this.peek();\n if (seq === null)\n return null;\n if (tag !== undefined && tag !== seq)\n throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +\n ': got 0x' + seq.toString(16));\n\n var o = this.readLength(this._offset + 1); // stored in `length`\n if (o === null)\n return null;\n\n this._offset = o;\n return seq;\n};\n\n\nReader.prototype.readInt = function () {\n return this._readTag(ASN1.Integer);\n};\n\n\nReader.prototype.readBoolean = function () {\n return (this._readTag(ASN1.Boolean) === 0 ? false : true);\n};\n\n\nReader.prototype.readEnumeration = function () {\n return this._readTag(ASN1.Enumeration);\n};\n\n\nReader.prototype.readString = function (tag, retbuf) {\n if (!tag)\n tag = ASN1.OctetString;\n\n var b = this.peek();\n if (b === null)\n return null;\n\n if (b !== tag)\n throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +\n ': got 0x' + b.toString(16));\n\n var o = this.readLength(this._offset + 1); // stored in `length`\n\n if (o === null)\n return null;\n\n if (this.length > this._size - o)\n return null;\n\n this._offset = o;\n\n if (this.length === 0)\n return retbuf ? Buffer.alloc(0) : '';\n\n var str = this._buf.slice(this._offset, this._offset + this.length);\n this._offset += this.length;\n\n return retbuf ? str : str.toString('utf8');\n};\n\nReader.prototype.readOID = function (tag) {\n if (!tag)\n tag = ASN1.OID;\n\n var b = this.readString(tag, true);\n if (b === null)\n return null;\n\n var values = [];\n var value = 0;\n\n for (var i = 0; i < b.length; i++) {\n var byte = b[i] & 0xff;\n\n value <<= 7;\n value += byte & 0x7f;\n if ((byte & 0x80) === 0) {\n values.push(value);\n value = 0;\n }\n }\n\n value = values.shift();\n values.unshift(value % 40);\n values.unshift((value / 40) >> 0);\n\n return values.join('.');\n};\n\n\nReader.prototype._readTag = function (tag) {\n assert.ok(tag !== undefined);\n\n var b = this.peek();\n\n if (b === null)\n return null;\n\n if (b !== tag)\n throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +\n ': got 0x' + b.toString(16));\n\n var o = this.readLength(this._offset + 1); // stored in `length`\n if (o === null)\n return null;\n\n if (this.length > 4)\n throw newInvalidAsn1Error('Integer too long: ' + this.length);\n\n if (this.length > this._size - o)\n return null;\n this._offset = o;\n\n var fb = this._buf[this._offset];\n var value = 0;\n\n for (var i = 0; i < this.length; i++) {\n value <<= 8;\n value |= (this._buf[this._offset++] & 0xff);\n }\n\n if ((fb & 0x80) === 0x80 && i !== 4)\n value -= (1 << (i * 8));\n\n return value >> 0;\n};\n\n\n\n// --- Exported API\n\nmodule.exports = Reader;\n","// Copyright 2011 Mark Cavage All rights reserved.\n\n\nmodule.exports = {\n EOC: 0,\n Boolean: 1,\n Integer: 2,\n BitString: 3,\n OctetString: 4,\n Null: 5,\n OID: 6,\n ObjectDescriptor: 7,\n External: 8,\n Real: 9, // float\n Enumeration: 10,\n PDV: 11,\n Utf8String: 12,\n RelativeOID: 13,\n Sequence: 16,\n Set: 17,\n NumericString: 18,\n PrintableString: 19,\n T61String: 20,\n VideotexString: 21,\n IA5String: 22,\n UTCTime: 23,\n GeneralizedTime: 24,\n GraphicString: 25,\n VisibleString: 26,\n GeneralString: 28,\n UniversalString: 29,\n CharacterString: 30,\n BMPString: 31,\n Constructor: 32,\n Context: 128\n};\n","// Copyright 2011 Mark Cavage All rights reserved.\n\nvar assert = require('assert');\nvar Buffer = require('safer-buffer').Buffer;\nvar ASN1 = require('./types');\nvar errors = require('./errors');\n\n\n// --- Globals\n\nvar newInvalidAsn1Error = errors.newInvalidAsn1Error;\n\nvar DEFAULT_OPTS = {\n size: 1024,\n growthFactor: 8\n};\n\n\n// --- Helpers\n\nfunction merge(from, to) {\n assert.ok(from);\n assert.equal(typeof (from), 'object');\n assert.ok(to);\n assert.equal(typeof (to), 'object');\n\n var keys = Object.getOwnPropertyNames(from);\n keys.forEach(function (key) {\n if (to[key])\n return;\n\n var value = Object.getOwnPropertyDescriptor(from, key);\n Object.defineProperty(to, key, value);\n });\n\n return to;\n}\n\n\n\n// --- API\n\nfunction Writer(options) {\n options = merge(DEFAULT_OPTS, options || {});\n\n this._buf = Buffer.alloc(options.size || 1024);\n this._size = this._buf.length;\n this._offset = 0;\n this._options = options;\n\n // A list of offsets in the buffer where we need to insert\n // sequence tag/len pairs.\n this._seq = [];\n}\n\nObject.defineProperty(Writer.prototype, 'buffer', {\n get: function () {\n if (this._seq.length)\n throw newInvalidAsn1Error(this._seq.length + ' unended sequence(s)');\n\n return (this._buf.slice(0, this._offset));\n }\n});\n\nWriter.prototype.writeByte = function (b) {\n if (typeof (b) !== 'number')\n throw new TypeError('argument must be a Number');\n\n this._ensure(1);\n this._buf[this._offset++] = b;\n};\n\n\nWriter.prototype.writeInt = function (i, tag) {\n if (typeof (i) !== 'number')\n throw new TypeError('argument must be a Number');\n if (typeof (tag) !== 'number')\n tag = ASN1.Integer;\n\n var sz = 4;\n\n while ((((i & 0xff800000) === 0) || ((i & 0xff800000) === 0xff800000 >> 0)) &&\n (sz > 1)) {\n sz--;\n i <<= 8;\n }\n\n if (sz > 4)\n throw newInvalidAsn1Error('BER ints cannot be > 0xffffffff');\n\n this._ensure(2 + sz);\n this._buf[this._offset++] = tag;\n this._buf[this._offset++] = sz;\n\n while (sz-- > 0) {\n this._buf[this._offset++] = ((i & 0xff000000) >>> 24);\n i <<= 8;\n }\n\n};\n\n\nWriter.prototype.writeNull = function () {\n this.writeByte(ASN1.Null);\n this.writeByte(0x00);\n};\n\n\nWriter.prototype.writeEnumeration = function (i, tag) {\n if (typeof (i) !== 'number')\n throw new TypeError('argument must be a Number');\n if (typeof (tag) !== 'number')\n tag = ASN1.Enumeration;\n\n return this.writeInt(i, tag);\n};\n\n\nWriter.prototype.writeBoolean = function (b, tag) {\n if (typeof (b) !== 'boolean')\n throw new TypeError('argument must be a Boolean');\n if (typeof (tag) !== 'number')\n tag = ASN1.Boolean;\n\n this._ensure(3);\n this._buf[this._offset++] = tag;\n this._buf[this._offset++] = 0x01;\n this._buf[this._offset++] = b ? 0xff : 0x00;\n};\n\n\nWriter.prototype.writeString = function (s, tag) {\n if (typeof (s) !== 'string')\n throw new TypeError('argument must be a string (was: ' + typeof (s) + ')');\n if (typeof (tag) !== 'number')\n tag = ASN1.OctetString;\n\n var len = Buffer.byteLength(s);\n this.writeByte(tag);\n this.writeLength(len);\n if (len) {\n this._ensure(len);\n this._buf.write(s, this._offset);\n this._offset += len;\n }\n};\n\n\nWriter.prototype.writeBuffer = function (buf, tag) {\n if (typeof (tag) !== 'number')\n throw new TypeError('tag must be a number');\n if (!Buffer.isBuffer(buf))\n throw new TypeError('argument must be a buffer');\n\n this.writeByte(tag);\n this.writeLength(buf.length);\n this._ensure(buf.length);\n buf.copy(this._buf, this._offset, 0, buf.length);\n this._offset += buf.length;\n};\n\n\nWriter.prototype.writeStringArray = function (strings) {\n if ((!strings instanceof Array))\n throw new TypeError('argument must be an Array[String]');\n\n var self = this;\n strings.forEach(function (s) {\n self.writeString(s);\n });\n};\n\n// This is really to solve DER cases, but whatever for now\nWriter.prototype.writeOID = function (s, tag) {\n if (typeof (s) !== 'string')\n throw new TypeError('argument must be a string');\n if (typeof (tag) !== 'number')\n tag = ASN1.OID;\n\n if (!/^([0-9]+\\.){3,}[0-9]+$/.test(s))\n throw new Error('argument is not a valid OID string');\n\n function encodeOctet(bytes, octet) {\n if (octet < 128) {\n bytes.push(octet);\n } else if (octet < 16384) {\n bytes.push((octet >>> 7) | 0x80);\n bytes.push(octet & 0x7F);\n } else if (octet < 2097152) {\n bytes.push((octet >>> 14) | 0x80);\n bytes.push(((octet >>> 7) | 0x80) & 0xFF);\n bytes.push(octet & 0x7F);\n } else if (octet < 268435456) {\n bytes.push((octet >>> 21) | 0x80);\n bytes.push(((octet >>> 14) | 0x80) & 0xFF);\n bytes.push(((octet >>> 7) | 0x80) & 0xFF);\n bytes.push(octet & 0x7F);\n } else {\n bytes.push(((octet >>> 28) | 0x80) & 0xFF);\n bytes.push(((octet >>> 21) | 0x80) & 0xFF);\n bytes.push(((octet >>> 14) | 0x80) & 0xFF);\n bytes.push(((octet >>> 7) | 0x80) & 0xFF);\n bytes.push(octet & 0x7F);\n }\n }\n\n var tmp = s.split('.');\n var bytes = [];\n bytes.push(parseInt(tmp[0], 10) * 40 + parseInt(tmp[1], 10));\n tmp.slice(2).forEach(function (b) {\n encodeOctet(bytes, parseInt(b, 10));\n });\n\n var self = this;\n this._ensure(2 + bytes.length);\n this.writeByte(tag);\n this.writeLength(bytes.length);\n bytes.forEach(function (b) {\n self.writeByte(b);\n });\n};\n\n\nWriter.prototype.writeLength = function (len) {\n if (typeof (len) !== 'number')\n throw new TypeError('argument must be a Number');\n\n this._ensure(4);\n\n if (len <= 0x7f) {\n this._buf[this._offset++] = len;\n } else if (len <= 0xff) {\n this._buf[this._offset++] = 0x81;\n this._buf[this._offset++] = len;\n } else if (len <= 0xffff) {\n this._buf[this._offset++] = 0x82;\n this._buf[this._offset++] = len >> 8;\n this._buf[this._offset++] = len;\n } else if (len <= 0xffffff) {\n this._buf[this._offset++] = 0x83;\n this._buf[this._offset++] = len >> 16;\n this._buf[this._offset++] = len >> 8;\n this._buf[this._offset++] = len;\n } else {\n throw newInvalidAsn1Error('Length too long (> 4 bytes)');\n }\n};\n\nWriter.prototype.startSequence = function (tag) {\n if (typeof (tag) !== 'number')\n tag = ASN1.Sequence | ASN1.Constructor;\n\n this.writeByte(tag);\n this._seq.push(this._offset);\n this._ensure(3);\n this._offset += 3;\n};\n\n\nWriter.prototype.endSequence = function () {\n var seq = this._seq.pop();\n var start = seq + 3;\n var len = this._offset - start;\n\n if (len <= 0x7f) {\n this._shift(start, len, -2);\n this._buf[seq] = len;\n } else if (len <= 0xff) {\n this._shift(start, len, -1);\n this._buf[seq] = 0x81;\n this._buf[seq + 1] = len;\n } else if (len <= 0xffff) {\n this._buf[seq] = 0x82;\n this._buf[seq + 1] = len >> 8;\n this._buf[seq + 2] = len;\n } else if (len <= 0xffffff) {\n this._shift(start, len, 1);\n this._buf[seq] = 0x83;\n this._buf[seq + 1] = len >> 16;\n this._buf[seq + 2] = len >> 8;\n this._buf[seq + 3] = len;\n } else {\n throw newInvalidAsn1Error('Sequence too long');\n }\n};\n\n\nWriter.prototype._shift = function (start, len, shift) {\n assert.ok(start !== undefined);\n assert.ok(len !== undefined);\n assert.ok(shift);\n\n this._buf.copy(this._buf, start + shift, start, start + len);\n this._offset += shift;\n};\n\nWriter.prototype._ensure = function (len) {\n assert.ok(len);\n\n if (this._size - this._offset < len) {\n var sz = this._size * this._options.growthFactor;\n if (sz - this._offset < len)\n sz += len;\n\n var buf = Buffer.alloc(sz);\n\n this._buf.copy(buf, 0, 0, this._offset);\n this._buf = buf;\n this._size = sz;\n }\n};\n\n\n\n// --- Exported API\n\nmodule.exports = Writer;\n","// Copyright 2011 Mark Cavage All rights reserved.\n\n// If you have no idea what ASN.1 or BER is, see this:\n// ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc\n\nvar Ber = require('./ber/index');\n\n\n\n// --- Exported API\n\nmodule.exports = {\n\n Ber: Ber,\n\n BerReader: Ber.Reader,\n\n BerWriter: Ber.Writer\n\n};\n","// Copyright (c) 2012, Mark Cavage. All rights reserved.\n// Copyright 2015 Joyent, Inc.\n\nvar assert = require('assert');\nvar Stream = require('stream').Stream;\nvar util = require('util');\n\n\n///--- Globals\n\n/* JSSTYLED */\nvar UUID_REGEXP = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;\n\n\n///--- Internal\n\nfunction _capitalize(str) {\n return (str.charAt(0).toUpperCase() + str.slice(1));\n}\n\nfunction _toss(name, expected, oper, arg, actual) {\n throw new assert.AssertionError({\n message: util.format('%s (%s) is required', name, expected),\n actual: (actual === undefined) ? typeof (arg) : actual(arg),\n expected: expected,\n operator: oper || '===',\n stackStartFunction: _toss.caller\n });\n}\n\nfunction _getClass(arg) {\n return (Object.prototype.toString.call(arg).slice(8, -1));\n}\n\nfunction noop() {\n // Why even bother with asserts?\n}\n\n\n///--- Exports\n\nvar types = {\n bool: {\n check: function (arg) { return typeof (arg) === 'boolean'; }\n },\n func: {\n check: function (arg) { return typeof (arg) === 'function'; }\n },\n string: {\n check: function (arg) { return typeof (arg) === 'string'; }\n },\n object: {\n check: function (arg) {\n return typeof (arg) === 'object' && arg !== null;\n }\n },\n number: {\n check: function (arg) {\n return typeof (arg) === 'number' && !isNaN(arg);\n }\n },\n finite: {\n check: function (arg) {\n return typeof (arg) === 'number' && !isNaN(arg) && isFinite(arg);\n }\n },\n buffer: {\n check: function (arg) { return Buffer.isBuffer(arg); },\n operator: 'Buffer.isBuffer'\n },\n array: {\n check: function (arg) { return Array.isArray(arg); },\n operator: 'Array.isArray'\n },\n stream: {\n check: function (arg) { return arg instanceof Stream; },\n operator: 'instanceof',\n actual: _getClass\n },\n date: {\n check: function (arg) { return arg instanceof Date; },\n operator: 'instanceof',\n actual: _getClass\n },\n regexp: {\n check: function (arg) { return arg instanceof RegExp; },\n operator: 'instanceof',\n actual: _getClass\n },\n uuid: {\n check: function (arg) {\n return typeof (arg) === 'string' && UUID_REGEXP.test(arg);\n },\n operator: 'isUUID'\n }\n};\n\nfunction _setExports(ndebug) {\n var keys = Object.keys(types);\n var out;\n\n /* re-export standard assert */\n if (process.env.NODE_NDEBUG) {\n out = noop;\n } else {\n out = function (arg, msg) {\n if (!arg) {\n _toss(msg, 'true', arg);\n }\n };\n }\n\n /* standard checks */\n keys.forEach(function (k) {\n if (ndebug) {\n out[k] = noop;\n return;\n }\n var type = types[k];\n out[k] = function (arg, msg) {\n if (!type.check(arg)) {\n _toss(msg, k, type.operator, arg, type.actual);\n }\n };\n });\n\n /* optional checks */\n keys.forEach(function (k) {\n var name = 'optional' + _capitalize(k);\n if (ndebug) {\n out[name] = noop;\n return;\n }\n var type = types[k];\n out[name] = function (arg, msg) {\n if (arg === undefined || arg === null) {\n return;\n }\n if (!type.check(arg)) {\n _toss(msg, k, type.operator, arg, type.actual);\n }\n };\n });\n\n /* arrayOf checks */\n keys.forEach(function (k) {\n var name = 'arrayOf' + _capitalize(k);\n if (ndebug) {\n out[name] = noop;\n return;\n }\n var type = types[k];\n var expected = '[' + k + ']';\n out[name] = function (arg, msg) {\n if (!Array.isArray(arg)) {\n _toss(msg, expected, type.operator, arg, type.actual);\n }\n var i;\n for (i = 0; i < arg.length; i++) {\n if (!type.check(arg[i])) {\n _toss(msg, expected, type.operator, arg, type.actual);\n }\n }\n };\n });\n\n /* optionalArrayOf checks */\n keys.forEach(function (k) {\n var name = 'optionalArrayOf' + _capitalize(k);\n if (ndebug) {\n out[name] = noop;\n return;\n }\n var type = types[k];\n var expected = '[' + k + ']';\n out[name] = function (arg, msg) {\n if (arg === undefined || arg === null) {\n return;\n }\n if (!Array.isArray(arg)) {\n _toss(msg, expected, type.operator, arg, type.actual);\n }\n var i;\n for (i = 0; i < arg.length; i++) {\n if (!type.check(arg[i])) {\n _toss(msg, expected, type.operator, arg, type.actual);\n }\n }\n };\n });\n\n /* re-export built-in assertions */\n Object.keys(assert).forEach(function (k) {\n if (k === 'AssertionError') {\n out[k] = assert[k];\n return;\n }\n if (ndebug) {\n out[k] = noop;\n return;\n }\n out[k] = assert[k];\n });\n\n /* export ourselves (for unit tests _only_) */\n out._setExports = _setExports;\n\n return out;\n}\n\nmodule.exports = _setExports(process.env.NODE_NDEBUG);\n","// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = require('./internal/errors'),\n _require$codes = _require.codes,\n ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\n\nvar AssertionError = require('./internal/assert/assertion_error');\n\nvar _require2 = require('util/'),\n inspect = _require2.inspect;\n\nvar _require$types = require('util/').types,\n isPromise = _require$types.isPromise,\n isRegExp = _require$types.isRegExp;\n\nvar objectAssign = Object.assign ? Object.assign : require('es6-object-assign').assign;\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\n\nfunction lazyLoadComparison() {\n var comparison = require('./internal/util/comparisons');\n\n isDeepEqual = comparison.isDeepEqual;\n isDeepStrictEqual = comparison.isDeepStrictEqual;\n} // Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\n\n\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = [\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", '\\\\b', '', '', \"\\\\u000b\", '\\\\f', '', \"\\\\u000e\", \"\\\\u000f\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001a\", \"\\\\u001b\", \"\\\\u001c\", \"\\\\u001d\", \"\\\\u001e\", \"\\\\u001f\"];\n\nvar escapeFn = function escapeFn(str) {\n return meta[str.charCodeAt(0)];\n};\n\nvar warned = false; // The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {}; // All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n if (obj.message instanceof Error) throw obj.message;\n throw new AssertionError(obj);\n}\n\nfunction fail(actual, expected, message, operator, stackStartFn) {\n var argsLen = arguments.length;\n var internalMessage;\n\n if (argsLen === 0) {\n internalMessage = 'Failed';\n } else if (argsLen === 1) {\n message = actual;\n actual = undefined;\n } else {\n if (warned === false) {\n warned = true;\n var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n }\n\n if (argsLen === 2) operator = '!=';\n }\n\n if (message instanceof Error) throw message;\n var errArgs = {\n actual: actual,\n expected: expected,\n operator: operator === undefined ? 'fail' : operator,\n stackStartFn: stackStartFn || fail\n };\n\n if (message !== undefined) {\n errArgs.message = message;\n }\n\n var err = new AssertionError(errArgs);\n\n if (internalMessage) {\n err.message = internalMessage;\n err.generatedMessage = true;\n }\n\n throw err;\n}\n\nassert.fail = fail; // The AssertionError is defined in internal/error.\n\nassert.AssertionError = AssertionError;\n\nfunction innerOk(fn, argLen, value, message) {\n if (!value) {\n var generatedMessage = false;\n\n if (argLen === 0) {\n generatedMessage = true;\n message = 'No value argument passed to `assert.ok()`';\n } else if (message instanceof Error) {\n throw message;\n }\n\n var err = new AssertionError({\n actual: value,\n expected: true,\n message: message,\n operator: '==',\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n} // Pure assertion tests whether a value is truthy, as determined\n// by !!value.\n\n\nfunction ok() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n innerOk.apply(void 0, [ok, args.length].concat(args));\n}\n\nassert.ok = ok; // The equality assertion tests shallow, coercive equality with ==.\n\n/* eslint-disable no-restricted-properties */\n\nassert.equal = function equal(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual != expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '==',\n stackStartFn: equal\n });\n }\n}; // The non-equality assertion tests for whether two objects are not\n// equal with !=.\n\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual == expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '!=',\n stackStartFn: notEqual\n });\n }\n}; // The equivalence assertion tests a deep equality relation.\n\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepEqual',\n stackStartFn: deepEqual\n });\n }\n}; // The non-equivalence assertion tests for any deep inequality.\n\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepEqual',\n stackStartFn: notDeepEqual\n });\n }\n};\n/* eslint-enable */\n\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepStrictEqual',\n stackStartFn: deepStrictEqual\n });\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\n\nfunction notDeepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepStrictEqual',\n stackStartFn: notDeepStrictEqual\n });\n }\n}\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (!objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'strictEqual',\n stackStartFn: strictEqual\n });\n }\n};\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notStrictEqual',\n stackStartFn: notStrictEqual\n });\n }\n};\n\nvar Comparison = function Comparison(obj, keys, actual) {\n var _this = this;\n\n _classCallCheck(this, Comparison);\n\n keys.forEach(function (key) {\n if (key in obj) {\n if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && obj[key].test(actual[key])) {\n _this[key] = actual[key];\n } else {\n _this[key] = obj[key];\n }\n }\n });\n};\n\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n if (!message) {\n // Create placeholder objects to create a nice output.\n var a = new Comparison(actual, keys);\n var b = new Comparison(expected, keys, actual);\n var err = new AssertionError({\n actual: a,\n expected: b,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.actual = actual;\n err.expected = expected;\n err.operator = fn.name;\n throw err;\n }\n\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: fn.name,\n stackStartFn: fn\n });\n }\n}\n\nfunction expectedException(actual, expected, msg, fn) {\n if (typeof expected !== 'function') {\n if (isRegExp(expected)) return expected.test(actual); // assert.doesNotThrow does not accept objects.\n\n if (arguments.length === 2) {\n throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n } // Handle primitives properly.\n\n\n if (_typeof(actual) !== 'object' || actual === null) {\n var err = new AssertionError({\n actual: actual,\n expected: expected,\n message: msg,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.operator = fn.name;\n throw err;\n }\n\n var keys = Object.keys(expected); // Special handle errors to make sure the name and the message are compared\n // as well.\n\n if (expected instanceof Error) {\n keys.push('name', 'message');\n } else if (keys.length === 0) {\n throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n keys.forEach(function (key) {\n if (typeof actual[key] === 'string' && isRegExp(expected[key]) && expected[key].test(actual[key])) {\n return;\n }\n\n compareExceptionKey(actual, expected, key, msg, keys, fn);\n });\n return true;\n } // Guard instanceof against arrow functions as they don't have a prototype.\n\n\n if (expected.prototype !== undefined && actual instanceof expected) {\n return true;\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction getActual(fn) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n }\n\n try {\n fn();\n } catch (e) {\n return e;\n }\n\n return NO_EXCEPTION_SENTINEL;\n}\n\nfunction checkIsPromise(obj) {\n // Accept native ES6 promises and promises that are implemented in a similar\n // way. Do not accept thenables that use a function as `obj` and that have no\n // `catch` handler.\n // TODO: thenables are checked up until they have the correct methods,\n // but according to documentation, the `then` method should receive\n // the `fulfill` and `reject` arguments as well or it may be never resolved.\n return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\n\nfunction waitForActual(promiseFn) {\n return Promise.resolve().then(function () {\n var resultPromise;\n\n if (typeof promiseFn === 'function') {\n // Return a rejected promise if `promiseFn` throws synchronously.\n resultPromise = promiseFn(); // Fail in case no promise is returned.\n\n if (!checkIsPromise(resultPromise)) {\n throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n }\n } else if (checkIsPromise(promiseFn)) {\n resultPromise = promiseFn;\n } else {\n throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n }\n\n return Promise.resolve().then(function () {\n return resultPromise;\n }).then(function () {\n return NO_EXCEPTION_SENTINEL;\n }).catch(function (e) {\n return e;\n });\n });\n}\n\nfunction expectsError(stackStartFn, actual, error, message) {\n if (typeof error === 'string') {\n if (arguments.length === 4) {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (_typeof(actual) === 'object' && actual !== null) {\n if (actual.message === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n }\n } else if (actual === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n }\n\n message = error;\n error = undefined;\n } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (actual === NO_EXCEPTION_SENTINEL) {\n var details = '';\n\n if (error && error.name) {\n details += \" (\".concat(error.name, \")\");\n }\n\n details += message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n innerFail({\n actual: undefined,\n expected: error,\n operator: stackStartFn.name,\n message: \"Missing expected \".concat(fnType).concat(details),\n stackStartFn: stackStartFn\n });\n }\n\n if (error && !expectedException(actual, error, message, stackStartFn)) {\n throw actual;\n }\n}\n\nfunction expectsNoError(stackStartFn, actual, error, message) {\n if (actual === NO_EXCEPTION_SENTINEL) return;\n\n if (typeof error === 'string') {\n message = error;\n error = undefined;\n }\n\n if (!error || expectedException(actual, error)) {\n var details = message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n innerFail({\n actual: actual,\n expected: error,\n operator: stackStartFn.name,\n message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n stackStartFn: stackStartFn\n });\n }\n\n throw actual;\n}\n\nassert.throws = function throws(promiseFn) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\n\nassert.rejects = function rejects(promiseFn) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return waitForActual(promiseFn).then(function (result) {\n return expectsError.apply(void 0, [rejects, result].concat(args));\n });\n};\n\nassert.doesNotThrow = function doesNotThrow(fn) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\n\nassert.doesNotReject = function doesNotReject(fn) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n\n return waitForActual(fn).then(function (result) {\n return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n });\n};\n\nassert.ifError = function ifError(err) {\n if (err !== null && err !== undefined) {\n var message = 'ifError got unwanted exception: ';\n\n if (_typeof(err) === 'object' && typeof err.message === 'string') {\n if (err.message.length === 0 && err.constructor) {\n message += err.constructor.name;\n } else {\n message += err.message;\n }\n } else {\n message += inspect(err);\n }\n\n var newErr = new AssertionError({\n actual: err,\n expected: null,\n operator: 'ifError',\n message: message,\n stackStartFn: ifError\n }); // Make sure we actually have a stack trace!\n\n var origStack = err.stack;\n\n if (typeof origStack === 'string') {\n // This will remove any duplicated frames from the error frames taken\n // from within `ifError` and add the original error frames to the newly\n // created ones.\n var tmp2 = origStack.split('\\n');\n tmp2.shift(); // Filter all frames existing in err.stack.\n\n var tmp1 = newErr.stack.split('\\n');\n\n for (var i = 0; i < tmp2.length; i++) {\n // Find the first occurrence of the frame.\n var pos = tmp1.indexOf(tmp2[i]);\n\n if (pos !== -1) {\n // Only keep new frames.\n tmp1 = tmp1.slice(0, pos);\n break;\n }\n }\n\n newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n }\n\n throw newErr;\n }\n}; // Expose a strict only variant of assert\n\n\nfunction strict() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n innerOk.apply(void 0, [strict, args.length].concat(args));\n}\n\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;","// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar _require = require('util/'),\n inspect = _require.inspect;\n\nvar _require2 = require('../errors'),\n ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\n\n\nfunction repeat(str, count) {\n count = Math.floor(count);\n if (str.length == 0 || count == 0) return '';\n var maxCount = str.length * count;\n count = Math.floor(Math.log(count) / Math.log(2));\n\n while (count) {\n str += str;\n count--;\n }\n\n str += str.substring(0, maxCount - str.length);\n return str;\n}\n\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n deepStrictEqual: 'Expected values to be strictly deep-equal:',\n strictEqual: 'Expected values to be strictly equal:',\n strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n deepEqual: 'Expected values to be loosely deep-equal:',\n equal: 'Expected values to be loosely equal:',\n notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n notEqual: 'Expected \"actual\" to be loosely unequal to:',\n notIdentical: 'Values identical but not reference-equal:'\n}; // Comparing short primitives should just show === / !== instead of using the\n// diff.\n\nvar kMaxShortLength = 10;\n\nfunction copyError(source) {\n var keys = Object.keys(source);\n var target = Object.create(Object.getPrototypeOf(source));\n keys.forEach(function (key) {\n target[key] = source[key];\n });\n Object.defineProperty(target, 'message', {\n value: source.message\n });\n return target;\n}\n\nfunction inspectValue(val) {\n // The util.inspect default values could be changed. This makes sure the\n // error messages contain the necessary information nevertheless.\n return inspect(val, {\n compact: false,\n customInspect: false,\n depth: 1000,\n maxArrayLength: Infinity,\n // Assert compares only enumerable properties (with a few exceptions).\n showHidden: false,\n // Having a long line as error is better than wrapping the line for\n // comparison for now.\n // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n // have meta information about the inspected properties (i.e., know where\n // in what line the property starts and ends).\n breakLength: Infinity,\n // Assert does not detect proxies currently.\n showProxy: false,\n sorted: true,\n // Inspect getters as we also check them when comparing entries.\n getters: true\n });\n}\n\nfunction createErrDiff(actual, expected, operator) {\n var other = '';\n var res = '';\n var lastPos = 0;\n var end = '';\n var skipped = false;\n var actualInspected = inspectValue(actual);\n var actualLines = actualInspected.split('\\n');\n var expectedLines = inspectValue(expected).split('\\n');\n var i = 0;\n var indicator = ''; // In case both values are objects explicitly mark them as not reference equal\n // for the `strictEqual` operator.\n\n if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n operator = 'strictEqualObject';\n } // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n // equal, check further special handling.\n\n\n if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n var inputLength = actualLines[0].length + expectedLines[0].length; // If the character length of \"actual\" and \"expected\" together is less than\n // kMaxShortLength and if neither is an object and at least one of them is\n // not `zero`, use the strict equal comparison to visualize the output.\n\n if (inputLength <= kMaxShortLength) {\n if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n // -0 === +0\n return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n }\n } else if (operator !== 'strictEqualObject') {\n // If the stderr is a tty and the input length is lower than the current\n // columns per line, add a mismatch indicator below the output. If it is\n // not a tty, use a default value of 80 characters.\n var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n\n if (inputLength < maxLength) {\n while (actualLines[0][i] === expectedLines[0][i]) {\n i++;\n } // Ignore the first characters.\n\n\n if (i > 2) {\n // Add position indicator for the first mismatch in case it is a\n // single line and the input length is less than the column length.\n indicator = \"\\n \".concat(repeat(' ', i), \"^\");\n i = 0;\n }\n }\n }\n } // Remove all ending lines that match (this optimizes the output for\n // readability by reducing the number of total changed lines).\n\n\n var a = actualLines[actualLines.length - 1];\n var b = expectedLines[expectedLines.length - 1];\n\n while (a === b) {\n if (i++ < 2) {\n end = \"\\n \".concat(a).concat(end);\n } else {\n other = a;\n }\n\n actualLines.pop();\n expectedLines.pop();\n if (actualLines.length === 0 || expectedLines.length === 0) break;\n a = actualLines[actualLines.length - 1];\n b = expectedLines[expectedLines.length - 1];\n }\n\n var maxLines = Math.max(actualLines.length, expectedLines.length); // Strict equal with identical objects that are not identical by reference.\n // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n\n if (maxLines === 0) {\n // We have to get the result again. The lines were all removed before.\n var _actualLines = actualInspected.split('\\n'); // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (_actualLines.length > 30) {\n _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (_actualLines.length > 27) {\n _actualLines.pop();\n }\n }\n\n return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n }\n\n if (i > 3) {\n end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n skipped = true;\n }\n\n if (other !== '') {\n end = \"\\n \".concat(other).concat(end);\n other = '';\n }\n\n var printedLines = 0;\n var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n\n for (i = 0; i < maxLines; i++) {\n // Only extra expected lines exist\n var cur = i - lastPos;\n\n if (actualLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(expectedLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(expectedLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the expected line to the cache.\n\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n printedLines++; // Only extra actual lines exist\n } else if (expectedLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n printedLines++; // Lines diverge\n } else {\n var expectedLine = expectedLines[i];\n var actualLine = actualLines[i]; // If the lines diverge, specifically check for lines that only diverge by\n // a trailing comma. In that case it is actually identical and we should\n // mark it as such.\n\n var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine); // If the expected line has a trailing comma but is otherwise identical,\n // add a comma at the end of the actual line. Otherwise the output could\n // look weird as in:\n //\n // [\n // 1 // No comma at the end!\n // + 2\n // ]\n //\n\n if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n divergingLines = false;\n actualLine += ',';\n }\n\n if (divergingLines) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result and cache the expected diverging\n // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n printedLines += 2; // Lines are identical\n } else {\n // Add all cached information to the result before adding other things\n // and reset the cache.\n res += other;\n other = ''; // If the last diverging line is exactly one line above or if it is the\n // very first line, add the line to the result.\n\n if (cur === 1 || i === 0) {\n res += \"\\n \".concat(actualLine);\n printedLines++;\n }\n }\n } // Inspected object to big (Show ~20 rows max)\n\n\n if (printedLines > 20 && i < maxLines - 2) {\n return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n }\n }\n\n return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\n\nvar AssertionError =\n/*#__PURE__*/\nfunction (_Error) {\n _inherits(AssertionError, _Error);\n\n function AssertionError(options) {\n var _this;\n\n _classCallCheck(this, AssertionError);\n\n if (_typeof(options) !== 'object' || options === null) {\n throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n }\n\n var message = options.message,\n operator = options.operator,\n stackStartFn = options.stackStartFn;\n var actual = options.actual,\n expected = options.expected;\n var limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 0;\n\n if (message != null) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, String(message)));\n } else {\n if (process.stderr && process.stderr.isTTY) {\n // Reset on each call to make sure we handle dynamically set environment\n // variables correct.\n if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n blue = \"\\x1B[34m\";\n green = \"\\x1B[32m\";\n white = \"\\x1B[39m\";\n red = \"\\x1B[31m\";\n } else {\n blue = '';\n green = '';\n white = '';\n red = '';\n }\n } // Prevent the error stack from being visible by duplicating the error\n // in a very close way to the original in case both sides are actually\n // instances of Error.\n\n\n if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n actual = copyError(actual);\n expected = copyError(expected);\n }\n\n if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, createErrDiff(actual, expected, operator)));\n } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n // In case the objects are equal but the operator requires unequal, show\n // the first object and say A equals B\n var base = kReadableOperator[operator];\n var res = inspectValue(actual).split('\\n'); // In case \"actual\" is an object, it should not be reference equal.\n\n if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n base = kReadableOperator.notStrictEqualObject;\n } // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (res.length > 30) {\n res[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (res.length > 27) {\n res.pop();\n }\n } // Only print a single input.\n\n\n if (res.length === 1) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \" \").concat(res[0])));\n } else {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\")));\n }\n } else {\n var _res = inspectValue(actual);\n\n var other = '';\n var knownOperators = kReadableOperator[operator];\n\n if (operator === 'notDeepEqual' || operator === 'notEqual') {\n _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n\n if (_res.length > 1024) {\n _res = \"\".concat(_res.slice(0, 1021), \"...\");\n }\n } else {\n other = \"\".concat(inspectValue(expected));\n\n if (_res.length > 512) {\n _res = \"\".concat(_res.slice(0, 509), \"...\");\n }\n\n if (other.length > 512) {\n other = \"\".concat(other.slice(0, 509), \"...\");\n }\n\n if (operator === 'deepEqual' || operator === 'equal') {\n _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n } else {\n other = \" \".concat(operator, \" \").concat(other);\n }\n }\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(_res).concat(other)));\n }\n }\n\n Error.stackTraceLimit = limit;\n _this.generatedMessage = !message;\n Object.defineProperty(_assertThisInitialized(_this), 'name', {\n value: 'AssertionError [ERR_ASSERTION]',\n enumerable: false,\n writable: true,\n configurable: true\n });\n _this.code = 'ERR_ASSERTION';\n _this.actual = actual;\n _this.expected = expected;\n _this.operator = operator;\n\n if (Error.captureStackTrace) {\n // eslint-disable-next-line no-restricted-syntax\n Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n } // Create error message including the error code in the name.\n\n\n _this.stack; // Reset the name.\n\n _this.name = 'AssertionError';\n return _possibleConstructorReturn(_this);\n }\n\n _createClass(AssertionError, [{\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n }\n }, {\n key: inspect.custom,\n value: function value(recurseTimes, ctx) {\n // This limits the `actual` and `expected` property default inspection to\n // the minimum depth. Otherwise those values would be too verbose compared\n // to the actual error message which contains a combined view of these two\n // input values.\n return inspect(this, _objectSpread({}, ctx, {\n customInspect: false,\n depth: 0\n }));\n }\n }]);\n\n return AssertionError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = AssertionError;","// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n\n/* eslint node-core/alphabetize-errors: \"error\" */\n\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n'use strict'; // The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar codes = {}; // Lazy loaded\n\nvar assert;\nvar util;\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inherits(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n var _this;\n\n _classCallCheck(this, NodeError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NodeError).call(this, getMessage(arg1, arg2, arg3)));\n _this.code = code;\n return _this;\n }\n\n return NodeError;\n }(Base);\n\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n if (assert === undefined) assert = require('../assert');\n assert(typeof name === 'string', \"'name' must be a string\"); // determiner: 'must be' or 'must not be'\n\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } // TODO(BridgeAR): Improve the output by showing `null` and similar.\n\n\n msg += \". Received type \".concat(_typeof(actual));\n return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n if (util === undefined) util = require('util/');\n var inspected = util.inspect(value);\n\n if (inspected.length > 128) {\n inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n }\n\n return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n var type;\n\n if (value && value.constructor && value.constructor.name) {\n type = \"instance of \".concat(value.constructor.name);\n } else {\n type = \"type \".concat(_typeof(value));\n }\n\n return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (assert === undefined) assert = require('../assert');\n assert(args.length > 0, 'At least one arg needs to be specified');\n var msg = 'The ';\n var len = args.length;\n args = args.map(function (a) {\n return \"\\\"\".concat(a, \"\\\"\");\n });\n\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n\n default:\n msg += args.slice(0, len - 1).join(', ');\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n\n return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;","// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar regexFlagsSupported = /a/g.flags !== undefined;\n\nvar arrayFromSet = function arrayFromSet(set) {\n var array = [];\n set.forEach(function (value) {\n return array.push(value);\n });\n return array;\n};\n\nvar arrayFromMap = function arrayFromMap(map) {\n var array = [];\n map.forEach(function (value, key) {\n return array.push([key, value]);\n });\n return array;\n};\n\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : require('is-nan');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\n\nvar _require$types = require('util/').types,\n isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n isArrayBufferView = _require$types.isArrayBufferView,\n isDate = _require$types.isDate,\n isMap = _require$types.isMap,\n isRegExp = _require$types.isRegExp,\n isSet = _require$types.isSet,\n isNativeError = _require$types.isNativeError,\n isBoxedPrimitive = _require$types.isBoxedPrimitive,\n isNumberObject = _require$types.isNumberObject,\n isStringObject = _require$types.isStringObject,\n isBooleanObject = _require$types.isBooleanObject,\n isBigIntObject = _require$types.isBigIntObject,\n isSymbolObject = _require$types.isSymbolObject,\n isFloat32Array = _require$types.isFloat32Array,\n isFloat64Array = _require$types.isFloat64Array;\n\nfunction isNonIndex(key) {\n if (key.length === 0 || key.length > 10) return true;\n\n for (var i = 0; i < key.length; i++) {\n var code = key.charCodeAt(i);\n if (code < 48 || code > 57) return true;\n } // The maximum size for an array is 2 ** 32 -1.\n\n\n return key.length === 10 && key >= Math.pow(2, 32);\n}\n\nfunction getOwnNonIndexProperties(value) {\n return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n} // Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n\n if (y < x) {\n return 1;\n }\n\n return 0;\n}\n\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3; // Check if they have the same source and flags\n\nfunction areSimilarRegExps(a, b) {\n return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\n\nfunction areSimilarFloatArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n for (var offset = 0; offset < a.byteLength; offset++) {\n if (a[offset] !== b[offset]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction areSimilarTypedArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\n\nfunction areEqualArrayBuffers(buf1, buf2) {\n return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\n\nfunction isEqualBoxedPrimitive(val1, val2) {\n if (isNumberObject(val1)) {\n return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n }\n\n if (isStringObject(val1)) {\n return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n }\n\n if (isBooleanObject(val1)) {\n return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n }\n\n if (isBigIntObject(val1)) {\n return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n }\n\n return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n} // Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n // All identical values are equivalent, as determined by ===.\n if (val1 === val2) {\n if (val1 !== 0) return true;\n return strict ? objectIs(val1, val2) : true;\n } // Check more closely if val1 and val2 are equal.\n\n\n if (strict) {\n if (_typeof(val1) !== 'object') {\n return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n }\n\n if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n return false;\n }\n\n if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n return false;\n }\n } else {\n if (val1 === null || _typeof(val1) !== 'object') {\n if (val2 === null || _typeof(val2) !== 'object') {\n // eslint-disable-next-line eqeqeq\n return val1 == val2;\n }\n\n return false;\n }\n\n if (val2 === null || _typeof(val2) !== 'object') {\n return false;\n }\n }\n\n var val1Tag = objectToString(val1);\n var val2Tag = objectToString(val2);\n\n if (val1Tag !== val2Tag) {\n return false;\n }\n\n if (Array.isArray(val1)) {\n // Check for sparse arrays and general fast path\n if (val1.length !== val2.length) {\n return false;\n }\n\n var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n } // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n // wan't to early return out of the rest of the checks. However we can check\n // if the second value is one of these values and the first isn't.\n\n\n if (val1Tag === '[object Object]') {\n // return keyCheck(val1, val2, strict, memos, kNoIterator);\n if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n return false;\n }\n }\n\n if (isDate(val1)) {\n if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n return false;\n }\n } else if (isRegExp(val1)) {\n if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n return false;\n }\n } else if (isNativeError(val1) || val1 instanceof Error) {\n // Do not compare the stack as it might differ even though the error itself\n // is otherwise identical.\n if (val1.message !== val2.message || val1.name !== val2.name) {\n return false;\n }\n } else if (isArrayBufferView(val1)) {\n if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n if (!areSimilarFloatArrays(val1, val2)) {\n return false;\n }\n } else if (!areSimilarTypedArrays(val1, val2)) {\n return false;\n } // Buffer.compare returns true, so val1.length === val2.length. If they both\n // only contain numeric keys, we don't need to exam further than checking\n // the symbols.\n\n\n var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n\n var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (_keys.length !== _keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n } else if (isSet(val1)) {\n if (!isSet(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsSet);\n } else if (isMap(val1)) {\n if (!isMap(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsMap);\n } else if (isAnyArrayBuffer(val1)) {\n if (!areEqualArrayBuffers(val1, val2)) {\n return false;\n }\n } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\n\nfunction getEnumerables(val, keys) {\n return keys.filter(function (k) {\n return propertyIsEnumerable(val, k);\n });\n}\n\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n // For all remaining Object pairs, including Array, objects and Maps,\n // equivalence is determined by having:\n // a) The same number of owned enumerable properties\n // b) The same set of keys/indexes (although not necessarily the same order)\n // c) Equivalent values for every corresponding key/index\n // d) For Sets and Maps, equal contents\n // Note: this accounts for both named and indexed properties on Arrays.\n if (arguments.length === 5) {\n aKeys = Object.keys(val1);\n var bKeys = Object.keys(val2); // The pair must have the same number of owned properties.\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n } // Cheap key test\n\n\n var i = 0;\n\n for (; i < aKeys.length; i++) {\n if (!hasOwnProperty(val2, aKeys[i])) {\n return false;\n }\n }\n\n if (strict && arguments.length === 5) {\n var symbolKeysA = objectGetOwnPropertySymbols(val1);\n\n if (symbolKeysA.length !== 0) {\n var count = 0;\n\n for (i = 0; i < symbolKeysA.length; i++) {\n var key = symbolKeysA[i];\n\n if (propertyIsEnumerable(val1, key)) {\n if (!propertyIsEnumerable(val2, key)) {\n return false;\n }\n\n aKeys.push(key);\n count++;\n } else if (propertyIsEnumerable(val2, key)) {\n return false;\n }\n }\n\n var symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n return false;\n }\n } else {\n var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n return false;\n }\n }\n }\n\n if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n return true;\n } // Use memos to handle cycles.\n\n\n if (memos === undefined) {\n memos = {\n val1: new Map(),\n val2: new Map(),\n position: 0\n };\n } else {\n // We prevent up to two map.has(x) calls by directly retrieving the value\n // and checking for undefined. The map can only contain numbers, so it is\n // safe to check for undefined only.\n var val2MemoA = memos.val1.get(val1);\n\n if (val2MemoA !== undefined) {\n var val2MemoB = memos.val2.get(val2);\n\n if (val2MemoB !== undefined) {\n return val2MemoA === val2MemoB;\n }\n }\n\n memos.position++;\n }\n\n memos.val1.set(val1, memos.position);\n memos.val2.set(val2, memos.position);\n var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n memos.val1.delete(val1);\n memos.val2.delete(val2);\n return areEq;\n}\n\nfunction setHasEqualElement(set, val1, strict, memo) {\n // Go looking.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var val2 = setValues[i];\n\n if (innerDeepEqual(val1, val2, strict, memo)) {\n // Remove the matching element to make sure we do not check that again.\n set.delete(val2);\n return true;\n }\n }\n\n return false;\n} // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\n\n\nfunction findLooseMatchingPrimitives(prim) {\n switch (_typeof(prim)) {\n case 'undefined':\n return null;\n\n case 'object':\n // Only pass in null as object!\n return undefined;\n\n case 'symbol':\n return false;\n\n case 'string':\n prim = +prim;\n // Loose equal entries exist only if the string is possible to convert to\n // a regular number and not NaN.\n // Fall through\n\n case 'number':\n if (numberIsNaN(prim)) {\n return false;\n }\n\n }\n\n return true;\n}\n\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) return altValue;\n return b.has(altValue) && !a.has(altValue);\n}\n\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n var altValue = findLooseMatchingPrimitives(prim);\n\n if (altValue != null) {\n return altValue;\n }\n\n var curB = b.get(altValue);\n\n if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n return false;\n }\n\n return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\n\nfunction setEquiv(a, b, strict, memo) {\n // This is a lazily initiated Set of entries which have to be compared\n // pairwise.\n var set = null;\n var aValues = arrayFromSet(a);\n\n for (var i = 0; i < aValues.length; i++) {\n var val = aValues[i]; // Note: Checking for the objects first improves the performance for object\n // heavy sets but it is a minor slow down for primitives. As they are fast\n // to check this improves the worst case scenario instead.\n\n if (_typeof(val) === 'object' && val !== null) {\n if (set === null) {\n set = new Set();\n } // If the specified value doesn't exist in the second set its an not null\n // object (or non strict only: a not matching primitive) we'll need to go\n // hunting for something thats deep-(strict-)equal to it. To make this\n // O(n log n) complexity we have to copy these values in a new set first.\n\n\n set.add(val);\n } else if (!b.has(val)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null values.\n\n if (!setMightHaveLoosePrim(a, b, val)) {\n return false;\n }\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(val);\n }\n }\n\n if (set !== null) {\n var bValues = arrayFromSet(b);\n\n for (var _i = 0; _i < bValues.length; _i++) {\n var _val = bValues[_i]; // We have to check if a primitive value is already\n // matching and only if it's not, go hunting for it.\n\n if (_typeof(_val) === 'object' && _val !== null) {\n if (!setHasEqualElement(set, _val, strict, memo)) return false;\n } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n // To be able to handle cases like:\n // Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n // ... we need to consider *all* matching keys, not just the first we find.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var key2 = setValues[i];\n\n if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n set.delete(key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction mapEquiv(a, b, strict, memo) {\n var set = null;\n var aEntries = arrayFromMap(a);\n\n for (var i = 0; i < aEntries.length; i++) {\n var _aEntries$i = _slicedToArray(aEntries[i], 2),\n key = _aEntries$i[0],\n item1 = _aEntries$i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n } else {\n // By directly retrieving the value we prevent another b.has(key) check in\n // almost all possible cases.\n var item2 = b.get(key);\n\n if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null\n // keys.\n\n if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n }\n }\n }\n\n if (set !== null) {\n var bEntries = arrayFromMap(b);\n\n for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n key = _bEntries$_i[0],\n item = _bEntries$_i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (!mapHasEqualEntry(set, a, key, item, strict, memo)) return false;\n } else if (!strict && (!a.has(key) || !innerDeepEqual(a.get(key), item, false, memo)) && !mapHasEqualEntry(set, a, key, item, false, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n // Sets and maps don't have their entries accessible via normal object\n // properties.\n var i = 0;\n\n if (iterationType === kIsSet) {\n if (!setEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsMap) {\n if (!mapEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsArray) {\n for (; i < a.length; i++) {\n if (hasOwnProperty(a, i)) {\n if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n return false;\n }\n } else if (hasOwnProperty(b, i)) {\n return false;\n } else {\n // Array is sparse.\n var keysA = Object.keys(a);\n\n for (; i < keysA.length; i++) {\n var key = keysA[i];\n\n if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n return false;\n }\n }\n\n if (keysA.length !== Object.keys(b).length) {\n return false;\n }\n\n return true;\n }\n }\n } // The pair must have equivalent values for every corresponding key.\n // Possibly expensive deep test:\n\n\n for (i = 0; i < keys.length; i++) {\n var _key = keys[i];\n\n if (!innerDeepEqual(a[_key], b[_key], strict, memos)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kLoose);\n}\n\nfunction isDeepStrictEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kStrict);\n}\n\nmodule.exports = {\n isDeepEqual: isDeepEqual,\n isDeepStrictEqual: isDeepStrictEqual\n};","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.async = global.async || {})));\n}(this, (function (exports) { 'use strict';\n\nfunction slice(arrayLike, start) {\n start = start|0;\n var newLen = Math.max(arrayLike.length - start, 0);\n var newArr = Array(newLen);\n for(var idx = 0; idx < newLen; idx++) {\n newArr[idx] = arrayLike[start + idx];\n }\n return newArr;\n}\n\n/**\n * Creates a continuation function with some arguments already applied.\n *\n * Useful as a shorthand when combined with other control flow functions. Any\n * arguments passed to the returned function are added to the arguments\n * originally passed to apply.\n *\n * @name apply\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {Function} fn - The function you want to eventually apply all\n * arguments to. Invokes with (arguments...).\n * @param {...*} arguments... - Any number of arguments to automatically apply\n * when the continuation is called.\n * @returns {Function} the partially-applied function\n * @example\n *\n * // using apply\n * async.parallel([\n * async.apply(fs.writeFile, 'testfile1', 'test1'),\n * async.apply(fs.writeFile, 'testfile2', 'test2')\n * ]);\n *\n *\n * // the same process without using apply\n * async.parallel([\n * function(callback) {\n * fs.writeFile('testfile1', 'test1', callback);\n * },\n * function(callback) {\n * fs.writeFile('testfile2', 'test2', callback);\n * }\n * ]);\n *\n * // It's possible to pass any number of additional arguments when calling the\n * // continuation:\n *\n * node> var fn = async.apply(sys.puts, 'one');\n * node> fn('two', 'three');\n * one\n * two\n * three\n */\nvar apply = function(fn/*, ...args*/) {\n var args = slice(arguments, 1);\n return function(/*callArgs*/) {\n var callArgs = slice(arguments);\n return fn.apply(null, args.concat(callArgs));\n };\n};\n\nvar initialParams = function (fn) {\n return function (/*...args, callback*/) {\n var args = slice(arguments);\n var callback = args.pop();\n fn.call(this, args, callback);\n };\n};\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nvar hasSetImmediate = typeof setImmediate === 'function' && setImmediate;\nvar hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function';\n\nfunction fallback(fn) {\n setTimeout(fn, 0);\n}\n\nfunction wrap(defer) {\n return function (fn/*, ...args*/) {\n var args = slice(arguments, 1);\n defer(function () {\n fn.apply(null, args);\n });\n };\n}\n\nvar _defer;\n\nif (hasSetImmediate) {\n _defer = setImmediate;\n} else if (hasNextTick) {\n _defer = process.nextTick;\n} else {\n _defer = fallback;\n}\n\nvar setImmediate$1 = wrap(_defer);\n\n/**\n * Take a sync function and make it async, passing its return value to a\n * callback. This is useful for plugging sync functions into a waterfall,\n * series, or other async functions. Any arguments passed to the generated\n * function will be passed to the wrapped function (except for the final\n * callback argument). Errors thrown will be passed to the callback.\n *\n * If the function passed to `asyncify` returns a Promise, that promises's\n * resolved/rejected state will be used to call the callback, rather than simply\n * the synchronous return value.\n *\n * This also means you can asyncify ES2017 `async` functions.\n *\n * @name asyncify\n * @static\n * @memberOf module:Utils\n * @method\n * @alias wrapSync\n * @category Util\n * @param {Function} func - The synchronous function, or Promise-returning\n * function to convert to an {@link AsyncFunction}.\n * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be\n * invoked with `(args..., callback)`.\n * @example\n *\n * // passing a regular synchronous function\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(JSON.parse),\n * function (data, next) {\n * // data is the result of parsing the text.\n * // If there was a parsing error, it would have been caught.\n * }\n * ], callback);\n *\n * // passing a function returning a promise\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(function (contents) {\n * return db.model.create(contents);\n * }),\n * function (model, next) {\n * // `model` is the instantiated model object.\n * // If there was an error, this function would be skipped.\n * }\n * ], callback);\n *\n * // es2017 example, though `asyncify` is not needed if your JS environment\n * // supports async functions out of the box\n * var q = async.queue(async.asyncify(async function(file) {\n * var intermediateStep = await processFile(file);\n * return await somePromise(intermediateStep)\n * }));\n *\n * q.push(files);\n */\nfunction asyncify(func) {\n return initialParams(function (args, callback) {\n var result;\n try {\n result = func.apply(this, args);\n } catch (e) {\n return callback(e);\n }\n // if result is Promise object\n if (isObject(result) && typeof result.then === 'function') {\n result.then(function(value) {\n invokeCallback(callback, null, value);\n }, function(err) {\n invokeCallback(callback, err.message ? err : new Error(err));\n });\n } else {\n callback(null, result);\n }\n });\n}\n\nfunction invokeCallback(callback, error, value) {\n try {\n callback(error, value);\n } catch (e) {\n setImmediate$1(rethrow, e);\n }\n}\n\nfunction rethrow(error) {\n throw error;\n}\n\nvar supportsSymbol = typeof Symbol === 'function';\n\nfunction isAsync(fn) {\n return supportsSymbol && fn[Symbol.toStringTag] === 'AsyncFunction';\n}\n\nfunction wrapAsync(asyncFn) {\n return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn;\n}\n\nfunction applyEach$1(eachfn) {\n return function(fns/*, ...args*/) {\n var args = slice(arguments, 1);\n var go = initialParams(function(args, callback) {\n var that = this;\n return eachfn(fns, function (fn, cb) {\n wrapAsync(fn).apply(that, args.concat(cb));\n }, callback);\n });\n if (args.length) {\n return go.apply(this, args);\n }\n else {\n return go;\n }\n };\n}\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Built-in value references. */\nvar Symbol$1 = root.Symbol;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag$1),\n tag = value[symToStringTag$1];\n\n try {\n value[symToStringTag$1] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag$1] = tag;\n } else {\n delete value[symToStringTag$1];\n }\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString$1 = objectProto$1.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString$1.call(value);\n}\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]';\nvar undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol$1 ? Symbol$1.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]';\nvar funcTag = '[object Function]';\nvar genTag = '[object GeneratorFunction]';\nvar proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n// A temporary value used to identify if the loop should be broken.\n// See #1064, #1293\nvar breakLoop = {};\n\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nfunction once(fn) {\n return function () {\n if (fn === null) return;\n var callFn = fn;\n fn = null;\n callFn.apply(this, arguments);\n };\n}\n\nvar iteratorSymbol = typeof Symbol === 'function' && Symbol.iterator;\n\nvar getIterator = function (coll) {\n return iteratorSymbol && coll[iteratorSymbol] && coll[iteratorSymbol]();\n};\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/** Used for built-in method references. */\nvar objectProto$3 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$2 = objectProto$3.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto$3.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty$2.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER$1 : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/** `Object#toString` result references. */\nvar argsTag$1 = '[object Arguments]';\nvar arrayTag = '[object Array]';\nvar boolTag = '[object Boolean]';\nvar dateTag = '[object Date]';\nvar errorTag = '[object Error]';\nvar funcTag$1 = '[object Function]';\nvar mapTag = '[object Map]';\nvar numberTag = '[object Number]';\nvar objectTag = '[object Object]';\nvar regexpTag = '[object RegExp]';\nvar setTag = '[object Set]';\nvar stringTag = '[object String]';\nvar weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]';\nvar dataViewTag = '[object DataView]';\nvar float32Tag = '[object Float32Array]';\nvar float64Tag = '[object Float64Array]';\nvar int8Tag = '[object Int8Array]';\nvar int16Tag = '[object Int16Array]';\nvar int32Tag = '[object Int32Array]';\nvar uint8Tag = '[object Uint8Array]';\nvar uint8ClampedTag = '[object Uint8ClampedArray]';\nvar uint16Tag = '[object Uint16Array]';\nvar uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag$1] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag$1] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/** Detect free variable `exports`. */\nvar freeExports$1 = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule$1 = freeExports$1 && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports$1 && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule$1 && freeModule$1.require && freeModule$1.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/** Used for built-in method references. */\nvar objectProto$2 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto$2.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty$1.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto$5 = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$5;\n\n return value === proto;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/** Used for built-in method references. */\nvar objectProto$4 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$3 = objectProto$4.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty$3.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nfunction createArrayIterator(coll) {\n var i = -1;\n var len = coll.length;\n return function next() {\n return ++i < len ? {value: coll[i], key: i} : null;\n }\n}\n\nfunction createES2015Iterator(iterator) {\n var i = -1;\n return function next() {\n var item = iterator.next();\n if (item.done)\n return null;\n i++;\n return {value: item.value, key: i};\n }\n}\n\nfunction createObjectIterator(obj) {\n var okeys = keys(obj);\n var i = -1;\n var len = okeys.length;\n return function next() {\n var key = okeys[++i];\n if (key === '__proto__') {\n return next();\n }\n return i < len ? {value: obj[key], key: key} : null;\n };\n}\n\nfunction iterator(coll) {\n if (isArrayLike(coll)) {\n return createArrayIterator(coll);\n }\n\n var iterator = getIterator(coll);\n return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll);\n}\n\nfunction onlyOnce(fn) {\n return function() {\n if (fn === null) throw new Error(\"Callback was already called.\");\n var callFn = fn;\n fn = null;\n callFn.apply(this, arguments);\n };\n}\n\nfunction _eachOfLimit(limit) {\n return function (obj, iteratee, callback) {\n callback = once(callback || noop);\n if (limit <= 0 || !obj) {\n return callback(null);\n }\n var nextElem = iterator(obj);\n var done = false;\n var running = 0;\n var looping = false;\n\n function iterateeCallback(err, value) {\n running -= 1;\n if (err) {\n done = true;\n callback(err);\n }\n else if (value === breakLoop || (done && running <= 0)) {\n done = true;\n return callback(null);\n }\n else if (!looping) {\n replenish();\n }\n }\n\n function replenish () {\n looping = true;\n while (running < limit && !done) {\n var elem = nextElem();\n if (elem === null) {\n done = true;\n if (running <= 0) {\n callback(null);\n }\n return;\n }\n running += 1;\n iteratee(elem.value, elem.key, onlyOnce(iterateeCallback));\n }\n looping = false;\n }\n\n replenish();\n };\n}\n\n/**\n * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name eachOfLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.eachOf]{@link module:Collections.eachOf}\n * @alias forEachOfLimit\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each\n * item in `coll`. The `key` is the item's key, or index in the case of an\n * array.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n */\nfunction eachOfLimit(coll, limit, iteratee, callback) {\n _eachOfLimit(limit)(coll, wrapAsync(iteratee), callback);\n}\n\nfunction doLimit(fn, limit) {\n return function (iterable, iteratee, callback) {\n return fn(iterable, limit, iteratee, callback);\n };\n}\n\n// eachOf implementation optimized for array-likes\nfunction eachOfArrayLike(coll, iteratee, callback) {\n callback = once(callback || noop);\n var index = 0,\n completed = 0,\n length = coll.length;\n if (length === 0) {\n callback(null);\n }\n\n function iteratorCallback(err, value) {\n if (err) {\n callback(err);\n } else if ((++completed === length) || value === breakLoop) {\n callback(null);\n }\n }\n\n for (; index < length; index++) {\n iteratee(coll[index], index, onlyOnce(iteratorCallback));\n }\n}\n\n// a generic version of eachOf which can handle array, object, and iterator cases.\nvar eachOfGeneric = doLimit(eachOfLimit, Infinity);\n\n/**\n * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument\n * to the iteratee.\n *\n * @name eachOf\n * @static\n * @memberOf module:Collections\n * @method\n * @alias forEachOf\n * @category Collection\n * @see [async.each]{@link module:Collections.each}\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A function to apply to each\n * item in `coll`.\n * The `key` is the item's key, or index in the case of an array.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @example\n *\n * var obj = {dev: \"/dev.json\", test: \"/test.json\", prod: \"/prod.json\"};\n * var configs = {};\n *\n * async.forEachOf(obj, function (value, key, callback) {\n * fs.readFile(__dirname + value, \"utf8\", function (err, data) {\n * if (err) return callback(err);\n * try {\n * configs[key] = JSON.parse(data);\n * } catch (e) {\n * return callback(e);\n * }\n * callback();\n * });\n * }, function (err) {\n * if (err) console.error(err.message);\n * // configs is now a map of JSON data\n * doSomethingWith(configs);\n * });\n */\nvar eachOf = function(coll, iteratee, callback) {\n var eachOfImplementation = isArrayLike(coll) ? eachOfArrayLike : eachOfGeneric;\n eachOfImplementation(coll, wrapAsync(iteratee), callback);\n};\n\nfunction doParallel(fn) {\n return function (obj, iteratee, callback) {\n return fn(eachOf, obj, wrapAsync(iteratee), callback);\n };\n}\n\nfunction _asyncMap(eachfn, arr, iteratee, callback) {\n callback = callback || noop;\n arr = arr || [];\n var results = [];\n var counter = 0;\n var _iteratee = wrapAsync(iteratee);\n\n eachfn(arr, function (value, _, callback) {\n var index = counter++;\n _iteratee(value, function (err, v) {\n results[index] = v;\n callback(err);\n });\n }, function (err) {\n callback(err, results);\n });\n}\n\n/**\n * Produces a new collection of values by mapping each value in `coll` through\n * the `iteratee` function. The `iteratee` is called with an item from `coll`\n * and a callback for when it has finished processing. Each of these callback\n * takes 2 arguments: an `error`, and the transformed item from `coll`. If\n * `iteratee` passes an error to its callback, the main `callback` (for the\n * `map` function) is immediately called with the error.\n *\n * Note, that since this function applies the `iteratee` to each item in\n * parallel, there is no guarantee that the `iteratee` functions will complete\n * in order. However, the results array will be in the same order as the\n * original `coll`.\n *\n * If `map` is passed an Object, the results will be an Array. The results\n * will roughly be in the order of the original Objects' keys (but this can\n * vary across JavaScript engines).\n *\n * @name map\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with the transformed item.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Results is an Array of the\n * transformed items from the `coll`. Invoked with (err, results).\n * @example\n *\n * async.map(['file1','file2','file3'], fs.stat, function(err, results) {\n * // results is now an array of stats for each file\n * });\n */\nvar map = doParallel(_asyncMap);\n\n/**\n * Applies the provided arguments to each function in the array, calling\n * `callback` after all functions have completed. If you only provide the first\n * argument, `fns`, then it will return a function which lets you pass in the\n * arguments as if it were a single function call. If more arguments are\n * provided, `callback` is required while `args` is still optional.\n *\n * @name applyEach\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|Object} fns - A collection of {@link AsyncFunction}s\n * to all call with the same arguments\n * @param {...*} [args] - any number of separate arguments to pass to the\n * function.\n * @param {Function} [callback] - the final argument should be the callback,\n * called when all functions have completed processing.\n * @returns {Function} - If only the first argument, `fns`, is provided, it will\n * return a function which lets you pass in the arguments as if it were a single\n * function call. The signature is `(..args, callback)`. If invoked with any\n * arguments, `callback` is required.\n * @example\n *\n * async.applyEach([enableSearch, updateSchema], 'bucket', callback);\n *\n * // partial application example:\n * async.each(\n * buckets,\n * async.applyEach([enableSearch, updateSchema]),\n * callback\n * );\n */\nvar applyEach = applyEach$1(map);\n\nfunction doParallelLimit(fn) {\n return function (obj, limit, iteratee, callback) {\n return fn(_eachOfLimit(limit), obj, wrapAsync(iteratee), callback);\n };\n}\n\n/**\n * The same as [`map`]{@link module:Collections.map} but runs a maximum of `limit` async operations at a time.\n *\n * @name mapLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.map]{@link module:Collections.map}\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with the transformed item.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Results is an array of the\n * transformed items from the `coll`. Invoked with (err, results).\n */\nvar mapLimit = doParallelLimit(_asyncMap);\n\n/**\n * The same as [`map`]{@link module:Collections.map} but runs only a single async operation at a time.\n *\n * @name mapSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.map]{@link module:Collections.map}\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with the transformed item.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Results is an array of the\n * transformed items from the `coll`. Invoked with (err, results).\n */\nvar mapSeries = doLimit(mapLimit, 1);\n\n/**\n * The same as [`applyEach`]{@link module:ControlFlow.applyEach} but runs only a single async operation at a time.\n *\n * @name applyEachSeries\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.applyEach]{@link module:ControlFlow.applyEach}\n * @category Control Flow\n * @param {Array|Iterable|Object} fns - A collection of {@link AsyncFunction}s to all\n * call with the same arguments\n * @param {...*} [args] - any number of separate arguments to pass to the\n * function.\n * @param {Function} [callback] - the final argument should be the callback,\n * called when all functions have completed processing.\n * @returns {Function} - If only the first argument is provided, it will return\n * a function which lets you pass in the arguments as if it were a single\n * function call.\n */\nvar applyEachSeries = applyEach$1(mapSeries);\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\n/**\n * Determines the best order for running the {@link AsyncFunction}s in `tasks`, based on\n * their requirements. Each function can optionally depend on other functions\n * being completed first, and each function is run as soon as its requirements\n * are satisfied.\n *\n * If any of the {@link AsyncFunction}s pass an error to their callback, the `auto` sequence\n * will stop. Further tasks will not execute (so any other functions depending\n * on it will not run), and the main `callback` is immediately called with the\n * error.\n *\n * {@link AsyncFunction}s also receive an object containing the results of functions which\n * have completed so far as the first argument, if they have dependencies. If a\n * task function has no dependencies, it will only be passed a callback.\n *\n * @name auto\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Object} tasks - An object. Each of its properties is either a\n * function or an array of requirements, with the {@link AsyncFunction} itself the last item\n * in the array. The object's key of a property serves as the name of the task\n * defined by that property, i.e. can be used when specifying requirements for\n * other tasks. The function receives one or two arguments:\n * * a `results` object, containing the results of the previously executed\n * functions, only passed if the task has any dependencies,\n * * a `callback(err, result)` function, which must be called when finished,\n * passing an `error` (which can be `null`) and the result of the function's\n * execution.\n * @param {number} [concurrency=Infinity] - An optional `integer` for\n * determining the maximum number of tasks that can be run in parallel. By\n * default, as many as possible.\n * @param {Function} [callback] - An optional callback which is called when all\n * the tasks have been completed. It receives the `err` argument if any `tasks`\n * pass an error to their callback. Results are always returned; however, if an\n * error occurs, no further `tasks` will be performed, and the results object\n * will only contain partial results. Invoked with (err, results).\n * @returns undefined\n * @example\n *\n * async.auto({\n * // this function will just be passed a callback\n * readData: async.apply(fs.readFile, 'data.txt', 'utf-8'),\n * showData: ['readData', function(results, cb) {\n * // results.readData is the file's contents\n * // ...\n * }]\n * }, callback);\n *\n * async.auto({\n * get_data: function(callback) {\n * console.log('in get_data');\n * // async code to get some data\n * callback(null, 'data', 'converted to array');\n * },\n * make_folder: function(callback) {\n * console.log('in make_folder');\n * // async code to create a directory to store a file in\n * // this is run at the same time as getting the data\n * callback(null, 'folder');\n * },\n * write_file: ['get_data', 'make_folder', function(results, callback) {\n * console.log('in write_file', JSON.stringify(results));\n * // once there is some data and the directory exists,\n * // write the data to a file in the directory\n * callback(null, 'filename');\n * }],\n * email_link: ['write_file', function(results, callback) {\n * console.log('in email_link', JSON.stringify(results));\n * // once the file is written let's email a link to it...\n * // results.write_file contains the filename returned by write_file.\n * callback(null, {'file':results.write_file, 'email':'user@example.com'});\n * }]\n * }, function(err, results) {\n * console.log('err = ', err);\n * console.log('results = ', results);\n * });\n */\nvar auto = function (tasks, concurrency, callback) {\n if (typeof concurrency === 'function') {\n // concurrency is optional, shift the args.\n callback = concurrency;\n concurrency = null;\n }\n callback = once(callback || noop);\n var keys$$1 = keys(tasks);\n var numTasks = keys$$1.length;\n if (!numTasks) {\n return callback(null);\n }\n if (!concurrency) {\n concurrency = numTasks;\n }\n\n var results = {};\n var runningTasks = 0;\n var hasError = false;\n\n var listeners = Object.create(null);\n\n var readyTasks = [];\n\n // for cycle detection:\n var readyToCheck = []; // tasks that have been identified as reachable\n // without the possibility of returning to an ancestor task\n var uncheckedDependencies = {};\n\n baseForOwn(tasks, function (task, key) {\n if (!isArray(task)) {\n // no dependencies\n enqueueTask(key, [task]);\n readyToCheck.push(key);\n return;\n }\n\n var dependencies = task.slice(0, task.length - 1);\n var remainingDependencies = dependencies.length;\n if (remainingDependencies === 0) {\n enqueueTask(key, task);\n readyToCheck.push(key);\n return;\n }\n uncheckedDependencies[key] = remainingDependencies;\n\n arrayEach(dependencies, function (dependencyName) {\n if (!tasks[dependencyName]) {\n throw new Error('async.auto task `' + key +\n '` has a non-existent dependency `' +\n dependencyName + '` in ' +\n dependencies.join(', '));\n }\n addListener(dependencyName, function () {\n remainingDependencies--;\n if (remainingDependencies === 0) {\n enqueueTask(key, task);\n }\n });\n });\n });\n\n checkForDeadlocks();\n processQueue();\n\n function enqueueTask(key, task) {\n readyTasks.push(function () {\n runTask(key, task);\n });\n }\n\n function processQueue() {\n if (readyTasks.length === 0 && runningTasks === 0) {\n return callback(null, results);\n }\n while(readyTasks.length && runningTasks < concurrency) {\n var run = readyTasks.shift();\n run();\n }\n\n }\n\n function addListener(taskName, fn) {\n var taskListeners = listeners[taskName];\n if (!taskListeners) {\n taskListeners = listeners[taskName] = [];\n }\n\n taskListeners.push(fn);\n }\n\n function taskComplete(taskName) {\n var taskListeners = listeners[taskName] || [];\n arrayEach(taskListeners, function (fn) {\n fn();\n });\n processQueue();\n }\n\n\n function runTask(key, task) {\n if (hasError) return;\n\n var taskCallback = onlyOnce(function(err, result) {\n runningTasks--;\n if (arguments.length > 2) {\n result = slice(arguments, 1);\n }\n if (err) {\n var safeResults = {};\n baseForOwn(results, function(val, rkey) {\n safeResults[rkey] = val;\n });\n safeResults[key] = result;\n hasError = true;\n listeners = Object.create(null);\n\n callback(err, safeResults);\n } else {\n results[key] = result;\n taskComplete(key);\n }\n });\n\n runningTasks++;\n var taskFn = wrapAsync(task[task.length - 1]);\n if (task.length > 1) {\n taskFn(results, taskCallback);\n } else {\n taskFn(taskCallback);\n }\n }\n\n function checkForDeadlocks() {\n // Kahn's algorithm\n // https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm\n // http://connalle.blogspot.com/2013/10/topological-sortingkahn-algorithm.html\n var currentTask;\n var counter = 0;\n while (readyToCheck.length) {\n currentTask = readyToCheck.pop();\n counter++;\n arrayEach(getDependents(currentTask), function (dependent) {\n if (--uncheckedDependencies[dependent] === 0) {\n readyToCheck.push(dependent);\n }\n });\n }\n\n if (counter !== numTasks) {\n throw new Error(\n 'async.auto cannot execute tasks due to a recursive dependency'\n );\n }\n }\n\n function getDependents(taskName) {\n var result = [];\n baseForOwn(tasks, function (task, key) {\n if (isArray(task) && baseIndexOf(task, taskName, 0) >= 0) {\n result.push(key);\n }\n });\n return result;\n }\n};\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol$1 ? Symbol$1.prototype : undefined;\nvar symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\nfunction charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\n/**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\nfunction charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff';\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f';\nvar reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f';\nvar rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff';\nvar rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\nvar rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange$1 = '\\\\ud800-\\\\udfff';\nvar rsComboMarksRange$1 = '\\\\u0300-\\\\u036f';\nvar reComboHalfMarksRange$1 = '\\\\ufe20-\\\\ufe2f';\nvar rsComboSymbolsRange$1 = '\\\\u20d0-\\\\u20ff';\nvar rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1;\nvar rsVarRange$1 = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange$1 + ']';\nvar rsCombo = '[' + rsComboRange$1 + ']';\nvar rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]';\nvar rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')';\nvar rsNonAstral = '[^' + rsAstralRange$1 + ']';\nvar rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}';\nvar rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]';\nvar rsZWJ$1 = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?';\nvar rsOptVar = '[' + rsVarRange$1 + ']?';\nvar rsOptJoin = '(?:' + rsZWJ$1 + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*';\nvar rsSeq = rsOptVar + reOptMod + rsOptJoin;\nvar rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\nfunction trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n}\n\nvar FN_ARGS = /^(?:async\\s+)?(function)?\\s*[^\\(]*\\(\\s*([^\\)]*)\\)/m;\nvar FN_ARG_SPLIT = /,/;\nvar FN_ARG = /(=.+)?(\\s*)$/;\nvar STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/mg;\n\nfunction parseParams(func) {\n func = func.toString().replace(STRIP_COMMENTS, '');\n func = func.match(FN_ARGS)[2].replace(' ', '');\n func = func ? func.split(FN_ARG_SPLIT) : [];\n func = func.map(function (arg){\n return trim(arg.replace(FN_ARG, ''));\n });\n return func;\n}\n\n/**\n * A dependency-injected version of the [async.auto]{@link module:ControlFlow.auto} function. Dependent\n * tasks are specified as parameters to the function, after the usual callback\n * parameter, with the parameter names matching the names of the tasks it\n * depends on. This can provide even more readable task graphs which can be\n * easier to maintain.\n *\n * If a final callback is specified, the task results are similarly injected,\n * specified as named parameters after the initial error parameter.\n *\n * The autoInject function is purely syntactic sugar and its semantics are\n * otherwise equivalent to [async.auto]{@link module:ControlFlow.auto}.\n *\n * @name autoInject\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.auto]{@link module:ControlFlow.auto}\n * @category Control Flow\n * @param {Object} tasks - An object, each of whose properties is an {@link AsyncFunction} of\n * the form 'func([dependencies...], callback). The object's key of a property\n * serves as the name of the task defined by that property, i.e. can be used\n * when specifying requirements for other tasks.\n * * The `callback` parameter is a `callback(err, result)` which must be called\n * when finished, passing an `error` (which can be `null`) and the result of\n * the function's execution. The remaining parameters name other tasks on\n * which the task is dependent, and the results from those tasks are the\n * arguments of those parameters.\n * @param {Function} [callback] - An optional callback which is called when all\n * the tasks have been completed. It receives the `err` argument if any `tasks`\n * pass an error to their callback, and a `results` object with any completed\n * task results, similar to `auto`.\n * @example\n *\n * // The example from `auto` can be rewritten as follows:\n * async.autoInject({\n * get_data: function(callback) {\n * // async code to get some data\n * callback(null, 'data', 'converted to array');\n * },\n * make_folder: function(callback) {\n * // async code to create a directory to store a file in\n * // this is run at the same time as getting the data\n * callback(null, 'folder');\n * },\n * write_file: function(get_data, make_folder, callback) {\n * // once there is some data and the directory exists,\n * // write the data to a file in the directory\n * callback(null, 'filename');\n * },\n * email_link: function(write_file, callback) {\n * // once the file is written let's email a link to it...\n * // write_file contains the filename returned by write_file.\n * callback(null, {'file':write_file, 'email':'user@example.com'});\n * }\n * }, function(err, results) {\n * console.log('err = ', err);\n * console.log('email_link = ', results.email_link);\n * });\n *\n * // If you are using a JS minifier that mangles parameter names, `autoInject`\n * // will not work with plain functions, since the parameter names will be\n * // collapsed to a single letter identifier. To work around this, you can\n * // explicitly specify the names of the parameters your task function needs\n * // in an array, similar to Angular.js dependency injection.\n *\n * // This still has an advantage over plain `auto`, since the results a task\n * // depends on are still spread into arguments.\n * async.autoInject({\n * //...\n * write_file: ['get_data', 'make_folder', function(get_data, make_folder, callback) {\n * callback(null, 'filename');\n * }],\n * email_link: ['write_file', function(write_file, callback) {\n * callback(null, {'file':write_file, 'email':'user@example.com'});\n * }]\n * //...\n * }, function(err, results) {\n * console.log('err = ', err);\n * console.log('email_link = ', results.email_link);\n * });\n */\nfunction autoInject(tasks, callback) {\n var newTasks = {};\n\n baseForOwn(tasks, function (taskFn, key) {\n var params;\n var fnIsAsync = isAsync(taskFn);\n var hasNoDeps =\n (!fnIsAsync && taskFn.length === 1) ||\n (fnIsAsync && taskFn.length === 0);\n\n if (isArray(taskFn)) {\n params = taskFn.slice(0, -1);\n taskFn = taskFn[taskFn.length - 1];\n\n newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn);\n } else if (hasNoDeps) {\n // no dependencies, use the function as-is\n newTasks[key] = taskFn;\n } else {\n params = parseParams(taskFn);\n if (taskFn.length === 0 && !fnIsAsync && params.length === 0) {\n throw new Error(\"autoInject task functions require explicit parameters.\");\n }\n\n // remove callback param\n if (!fnIsAsync) params.pop();\n\n newTasks[key] = params.concat(newTask);\n }\n\n function newTask(results, taskCb) {\n var newArgs = arrayMap(params, function (name) {\n return results[name];\n });\n newArgs.push(taskCb);\n wrapAsync(taskFn).apply(null, newArgs);\n }\n });\n\n auto(newTasks, callback);\n}\n\n// Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation\n// used for queues. This implementation assumes that the node provided by the user can be modified\n// to adjust the next and last properties. We implement only the minimal functionality\n// for queue support.\nfunction DLL() {\n this.head = this.tail = null;\n this.length = 0;\n}\n\nfunction setInitial(dll, node) {\n dll.length = 1;\n dll.head = dll.tail = node;\n}\n\nDLL.prototype.removeLink = function(node) {\n if (node.prev) node.prev.next = node.next;\n else this.head = node.next;\n if (node.next) node.next.prev = node.prev;\n else this.tail = node.prev;\n\n node.prev = node.next = null;\n this.length -= 1;\n return node;\n};\n\nDLL.prototype.empty = function () {\n while(this.head) this.shift();\n return this;\n};\n\nDLL.prototype.insertAfter = function(node, newNode) {\n newNode.prev = node;\n newNode.next = node.next;\n if (node.next) node.next.prev = newNode;\n else this.tail = newNode;\n node.next = newNode;\n this.length += 1;\n};\n\nDLL.prototype.insertBefore = function(node, newNode) {\n newNode.prev = node.prev;\n newNode.next = node;\n if (node.prev) node.prev.next = newNode;\n else this.head = newNode;\n node.prev = newNode;\n this.length += 1;\n};\n\nDLL.prototype.unshift = function(node) {\n if (this.head) this.insertBefore(this.head, node);\n else setInitial(this, node);\n};\n\nDLL.prototype.push = function(node) {\n if (this.tail) this.insertAfter(this.tail, node);\n else setInitial(this, node);\n};\n\nDLL.prototype.shift = function() {\n return this.head && this.removeLink(this.head);\n};\n\nDLL.prototype.pop = function() {\n return this.tail && this.removeLink(this.tail);\n};\n\nDLL.prototype.toArray = function () {\n var arr = Array(this.length);\n var curr = this.head;\n for(var idx = 0; idx < this.length; idx++) {\n arr[idx] = curr.data;\n curr = curr.next;\n }\n return arr;\n};\n\nDLL.prototype.remove = function (testFn) {\n var curr = this.head;\n while(!!curr) {\n var next = curr.next;\n if (testFn(curr)) {\n this.removeLink(curr);\n }\n curr = next;\n }\n return this;\n};\n\nfunction queue(worker, concurrency, payload) {\n if (concurrency == null) {\n concurrency = 1;\n }\n else if(concurrency === 0) {\n throw new Error('Concurrency must not be zero');\n }\n\n var _worker = wrapAsync(worker);\n var numRunning = 0;\n var workersList = [];\n\n var processingScheduled = false;\n function _insert(data, insertAtFront, callback) {\n if (callback != null && typeof callback !== 'function') {\n throw new Error('task callback must be a function');\n }\n q.started = true;\n if (!isArray(data)) {\n data = [data];\n }\n if (data.length === 0 && q.idle()) {\n // call drain immediately if there are no tasks\n return setImmediate$1(function() {\n q.drain();\n });\n }\n\n for (var i = 0, l = data.length; i < l; i++) {\n var item = {\n data: data[i],\n callback: callback || noop\n };\n\n if (insertAtFront) {\n q._tasks.unshift(item);\n } else {\n q._tasks.push(item);\n }\n }\n\n if (!processingScheduled) {\n processingScheduled = true;\n setImmediate$1(function() {\n processingScheduled = false;\n q.process();\n });\n }\n }\n\n function _next(tasks) {\n return function(err){\n numRunning -= 1;\n\n for (var i = 0, l = tasks.length; i < l; i++) {\n var task = tasks[i];\n\n var index = baseIndexOf(workersList, task, 0);\n if (index === 0) {\n workersList.shift();\n } else if (index > 0) {\n workersList.splice(index, 1);\n }\n\n task.callback.apply(task, arguments);\n\n if (err != null) {\n q.error(err, task.data);\n }\n }\n\n if (numRunning <= (q.concurrency - q.buffer) ) {\n q.unsaturated();\n }\n\n if (q.idle()) {\n q.drain();\n }\n q.process();\n };\n }\n\n var isProcessing = false;\n var q = {\n _tasks: new DLL(),\n concurrency: concurrency,\n payload: payload,\n saturated: noop,\n unsaturated:noop,\n buffer: concurrency / 4,\n empty: noop,\n drain: noop,\n error: noop,\n started: false,\n paused: false,\n push: function (data, callback) {\n _insert(data, false, callback);\n },\n kill: function () {\n q.drain = noop;\n q._tasks.empty();\n },\n unshift: function (data, callback) {\n _insert(data, true, callback);\n },\n remove: function (testFn) {\n q._tasks.remove(testFn);\n },\n process: function () {\n // Avoid trying to start too many processing operations. This can occur\n // when callbacks resolve synchronously (#1267).\n if (isProcessing) {\n return;\n }\n isProcessing = true;\n while(!q.paused && numRunning < q.concurrency && q._tasks.length){\n var tasks = [], data = [];\n var l = q._tasks.length;\n if (q.payload) l = Math.min(l, q.payload);\n for (var i = 0; i < l; i++) {\n var node = q._tasks.shift();\n tasks.push(node);\n workersList.push(node);\n data.push(node.data);\n }\n\n numRunning += 1;\n\n if (q._tasks.length === 0) {\n q.empty();\n }\n\n if (numRunning === q.concurrency) {\n q.saturated();\n }\n\n var cb = onlyOnce(_next(tasks));\n _worker(data, cb);\n }\n isProcessing = false;\n },\n length: function () {\n return q._tasks.length;\n },\n running: function () {\n return numRunning;\n },\n workersList: function () {\n return workersList;\n },\n idle: function() {\n return q._tasks.length + numRunning === 0;\n },\n pause: function () {\n q.paused = true;\n },\n resume: function () {\n if (q.paused === false) { return; }\n q.paused = false;\n setImmediate$1(q.process);\n }\n };\n return q;\n}\n\n/**\n * A cargo of tasks for the worker function to complete. Cargo inherits all of\n * the same methods and event callbacks as [`queue`]{@link module:ControlFlow.queue}.\n * @typedef {Object} CargoObject\n * @memberOf module:ControlFlow\n * @property {Function} length - A function returning the number of items\n * waiting to be processed. Invoke like `cargo.length()`.\n * @property {number} payload - An `integer` for determining how many tasks\n * should be process per round. This property can be changed after a `cargo` is\n * created to alter the payload on-the-fly.\n * @property {Function} push - Adds `task` to the `queue`. The callback is\n * called once the `worker` has finished processing the task. Instead of a\n * single task, an array of `tasks` can be submitted. The respective callback is\n * used for every task in the list. Invoke like `cargo.push(task, [callback])`.\n * @property {Function} saturated - A callback that is called when the\n * `queue.length()` hits the concurrency and further tasks will be queued.\n * @property {Function} empty - A callback that is called when the last item\n * from the `queue` is given to a `worker`.\n * @property {Function} drain - A callback that is called when the last item\n * from the `queue` has returned from the `worker`.\n * @property {Function} idle - a function returning false if there are items\n * waiting or being processed, or true if not. Invoke like `cargo.idle()`.\n * @property {Function} pause - a function that pauses the processing of tasks\n * until `resume()` is called. Invoke like `cargo.pause()`.\n * @property {Function} resume - a function that resumes the processing of\n * queued tasks when the queue is paused. Invoke like `cargo.resume()`.\n * @property {Function} kill - a function that removes the `drain` callback and\n * empties remaining tasks from the queue forcing it to go idle. Invoke like `cargo.kill()`.\n */\n\n/**\n * Creates a `cargo` object with the specified payload. Tasks added to the\n * cargo will be processed altogether (up to the `payload` limit). If the\n * `worker` is in progress, the task is queued until it becomes available. Once\n * the `worker` has completed some tasks, each callback of those tasks is\n * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966)\n * for how `cargo` and `queue` work.\n *\n * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers\n * at a time, cargo passes an array of tasks to a single worker, repeating\n * when the worker is finished.\n *\n * @name cargo\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.queue]{@link module:ControlFlow.queue}\n * @category Control Flow\n * @param {AsyncFunction} worker - An asynchronous function for processing an array\n * of queued tasks. Invoked with `(tasks, callback)`.\n * @param {number} [payload=Infinity] - An optional `integer` for determining\n * how many tasks should be processed per round; if omitted, the default is\n * unlimited.\n * @returns {module:ControlFlow.CargoObject} A cargo object to manage the tasks. Callbacks can\n * attached as certain properties to listen for specific events during the\n * lifecycle of the cargo and inner queue.\n * @example\n *\n * // create a cargo object with payload 2\n * var cargo = async.cargo(function(tasks, callback) {\n * for (var i=0; i true\n */\nfunction identity(value) {\n return value;\n}\n\nfunction _createTester(check, getResult) {\n return function(eachfn, arr, iteratee, cb) {\n cb = cb || noop;\n var testPassed = false;\n var testResult;\n eachfn(arr, function(value, _, callback) {\n iteratee(value, function(err, result) {\n if (err) {\n callback(err);\n } else if (check(result) && !testResult) {\n testPassed = true;\n testResult = getResult(true, value);\n callback(null, breakLoop);\n } else {\n callback();\n }\n });\n }, function(err) {\n if (err) {\n cb(err);\n } else {\n cb(null, testPassed ? testResult : getResult(false));\n }\n });\n };\n}\n\nfunction _findGetResult(v, x) {\n return x;\n}\n\n/**\n * Returns the first value in `coll` that passes an async truth test. The\n * `iteratee` is applied in parallel, meaning the first iteratee to return\n * `true` will fire the detect `callback` with that result. That means the\n * result might not be the first item in the original `coll` (in terms of order)\n * that passes the test.\n\n * If order within the original `coll` is important, then look at\n * [`detectSeries`]{@link module:Collections.detectSeries}.\n *\n * @name detect\n * @static\n * @memberOf module:Collections\n * @method\n * @alias find\n * @category Collections\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.\n * The iteratee must complete with a boolean value as its result.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the `iteratee` functions have finished.\n * Result will be the first item in the array that passes the truth test\n * (iteratee) or the value `undefined` if none passed. Invoked with\n * (err, result).\n * @example\n *\n * async.detect(['file1','file2','file3'], function(filePath, callback) {\n * fs.access(filePath, function(err) {\n * callback(null, !err)\n * });\n * }, function(err, result) {\n * // result now equals the first file in the list that exists\n * });\n */\nvar detect = doParallel(_createTester(identity, _findGetResult));\n\n/**\n * The same as [`detect`]{@link module:Collections.detect} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name detectLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.detect]{@link module:Collections.detect}\n * @alias findLimit\n * @category Collections\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.\n * The iteratee must complete with a boolean value as its result.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the `iteratee` functions have finished.\n * Result will be the first item in the array that passes the truth test\n * (iteratee) or the value `undefined` if none passed. Invoked with\n * (err, result).\n */\nvar detectLimit = doParallelLimit(_createTester(identity, _findGetResult));\n\n/**\n * The same as [`detect`]{@link module:Collections.detect} but runs only a single async operation at a time.\n *\n * @name detectSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.detect]{@link module:Collections.detect}\n * @alias findSeries\n * @category Collections\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.\n * The iteratee must complete with a boolean value as its result.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the `iteratee` functions have finished.\n * Result will be the first item in the array that passes the truth test\n * (iteratee) or the value `undefined` if none passed. Invoked with\n * (err, result).\n */\nvar detectSeries = doLimit(detectLimit, 1);\n\nfunction consoleFunc(name) {\n return function (fn/*, ...args*/) {\n var args = slice(arguments, 1);\n args.push(function (err/*, ...args*/) {\n var args = slice(arguments, 1);\n if (typeof console === 'object') {\n if (err) {\n if (console.error) {\n console.error(err);\n }\n } else if (console[name]) {\n arrayEach(args, function (x) {\n console[name](x);\n });\n }\n }\n });\n wrapAsync(fn).apply(null, args);\n };\n}\n\n/**\n * Logs the result of an [`async` function]{@link AsyncFunction} to the\n * `console` using `console.dir` to display the properties of the resulting object.\n * Only works in Node.js or in browsers that support `console.dir` and\n * `console.error` (such as FF and Chrome).\n * If multiple arguments are returned from the async function,\n * `console.dir` is called on each argument in order.\n *\n * @name dir\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} function - The function you want to eventually apply\n * all arguments to.\n * @param {...*} arguments... - Any number of arguments to apply to the function.\n * @example\n *\n * // in a module\n * var hello = function(name, callback) {\n * setTimeout(function() {\n * callback(null, {hello: name});\n * }, 1000);\n * };\n *\n * // in the node repl\n * node> async.dir(hello, 'world');\n * {hello: 'world'}\n */\nvar dir = consoleFunc('dir');\n\n/**\n * The post-check version of [`during`]{@link module:ControlFlow.during}. To reflect the difference in\n * the order of operations, the arguments `test` and `fn` are switched.\n *\n * Also a version of [`doWhilst`]{@link module:ControlFlow.doWhilst} with asynchronous `test` function.\n * @name doDuring\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.during]{@link module:ControlFlow.during}\n * @category Control Flow\n * @param {AsyncFunction} fn - An async function which is called each time\n * `test` passes. Invoked with (callback).\n * @param {AsyncFunction} test - asynchronous truth test to perform before each\n * execution of `fn`. Invoked with (...args, callback), where `...args` are the\n * non-error args from the previous callback of `fn`.\n * @param {Function} [callback] - A callback which is called after the test\n * function has failed and repeated execution of `fn` has stopped. `callback`\n * will be passed an error if one occurred, otherwise `null`.\n */\nfunction doDuring(fn, test, callback) {\n callback = onlyOnce(callback || noop);\n var _fn = wrapAsync(fn);\n var _test = wrapAsync(test);\n\n function next(err/*, ...args*/) {\n if (err) return callback(err);\n var args = slice(arguments, 1);\n args.push(check);\n _test.apply(this, args);\n }\n\n function check(err, truth) {\n if (err) return callback(err);\n if (!truth) return callback(null);\n _fn(next);\n }\n\n check(null, true);\n\n}\n\n/**\n * The post-check version of [`whilst`]{@link module:ControlFlow.whilst}. To reflect the difference in\n * the order of operations, the arguments `test` and `iteratee` are switched.\n *\n * `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.\n *\n * @name doWhilst\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.whilst]{@link module:ControlFlow.whilst}\n * @category Control Flow\n * @param {AsyncFunction} iteratee - A function which is called each time `test`\n * passes. Invoked with (callback).\n * @param {Function} test - synchronous truth test to perform after each\n * execution of `iteratee`. Invoked with any non-error callback results of\n * `iteratee`.\n * @param {Function} [callback] - A callback which is called after the test\n * function has failed and repeated execution of `iteratee` has stopped.\n * `callback` will be passed an error and any arguments passed to the final\n * `iteratee`'s callback. Invoked with (err, [results]);\n */\nfunction doWhilst(iteratee, test, callback) {\n callback = onlyOnce(callback || noop);\n var _iteratee = wrapAsync(iteratee);\n var next = function(err/*, ...args*/) {\n if (err) return callback(err);\n var args = slice(arguments, 1);\n if (test.apply(this, args)) return _iteratee(next);\n callback.apply(null, [null].concat(args));\n };\n _iteratee(next);\n}\n\n/**\n * Like ['doWhilst']{@link module:ControlFlow.doWhilst}, except the `test` is inverted. Note the\n * argument ordering differs from `until`.\n *\n * @name doUntil\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.doWhilst]{@link module:ControlFlow.doWhilst}\n * @category Control Flow\n * @param {AsyncFunction} iteratee - An async function which is called each time\n * `test` fails. Invoked with (callback).\n * @param {Function} test - synchronous truth test to perform after each\n * execution of `iteratee`. Invoked with any non-error callback results of\n * `iteratee`.\n * @param {Function} [callback] - A callback which is called after the test\n * function has passed and repeated execution of `iteratee` has stopped. `callback`\n * will be passed an error and any arguments passed to the final `iteratee`'s\n * callback. Invoked with (err, [results]);\n */\nfunction doUntil(iteratee, test, callback) {\n doWhilst(iteratee, function() {\n return !test.apply(this, arguments);\n }, callback);\n}\n\n/**\n * Like [`whilst`]{@link module:ControlFlow.whilst}, except the `test` is an asynchronous function that\n * is passed a callback in the form of `function (err, truth)`. If error is\n * passed to `test` or `fn`, the main callback is immediately called with the\n * value of the error.\n *\n * @name during\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.whilst]{@link module:ControlFlow.whilst}\n * @category Control Flow\n * @param {AsyncFunction} test - asynchronous truth test to perform before each\n * execution of `fn`. Invoked with (callback).\n * @param {AsyncFunction} fn - An async function which is called each time\n * `test` passes. Invoked with (callback).\n * @param {Function} [callback] - A callback which is called after the test\n * function has failed and repeated execution of `fn` has stopped. `callback`\n * will be passed an error, if one occurred, otherwise `null`.\n * @example\n *\n * var count = 0;\n *\n * async.during(\n * function (callback) {\n * return callback(null, count < 5);\n * },\n * function (callback) {\n * count++;\n * setTimeout(callback, 1000);\n * },\n * function (err) {\n * // 5 seconds have passed\n * }\n * );\n */\nfunction during(test, fn, callback) {\n callback = onlyOnce(callback || noop);\n var _fn = wrapAsync(fn);\n var _test = wrapAsync(test);\n\n function next(err) {\n if (err) return callback(err);\n _test(check);\n }\n\n function check(err, truth) {\n if (err) return callback(err);\n if (!truth) return callback(null);\n _fn(next);\n }\n\n _test(check);\n}\n\nfunction _withoutIndex(iteratee) {\n return function (value, index, callback) {\n return iteratee(value, callback);\n };\n}\n\n/**\n * Applies the function `iteratee` to each item in `coll`, in parallel.\n * The `iteratee` is called with an item from the list, and a callback for when\n * it has finished. If the `iteratee` passes an error to its `callback`, the\n * main `callback` (for the `each` function) is immediately called with the\n * error.\n *\n * Note, that since this function applies `iteratee` to each item in parallel,\n * there is no guarantee that the iteratee functions will complete in order.\n *\n * @name each\n * @static\n * @memberOf module:Collections\n * @method\n * @alias forEach\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to\n * each item in `coll`. Invoked with (item, callback).\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOf`.\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @example\n *\n * // assuming openFiles is an array of file names and saveFile is a function\n * // to save the modified contents of that file:\n *\n * async.each(openFiles, saveFile, function(err){\n * // if any of the saves produced an error, err would equal that error\n * });\n *\n * // assuming openFiles is an array of file names\n * async.each(openFiles, function(file, callback) {\n *\n * // Perform operation on file here.\n * console.log('Processing file ' + file);\n *\n * if( file.length > 32 ) {\n * console.log('This file name is too long');\n * callback('File name too long');\n * } else {\n * // Do work to process file here\n * console.log('File processed');\n * callback();\n * }\n * }, function(err) {\n * // if any of the file processing produced an error, err would equal that error\n * if( err ) {\n * // One of the iterations produced an error.\n * // All processing will now stop.\n * console.log('A file failed to process');\n * } else {\n * console.log('All files have been processed successfully');\n * }\n * });\n */\nfunction eachLimit(coll, iteratee, callback) {\n eachOf(coll, _withoutIndex(wrapAsync(iteratee)), callback);\n}\n\n/**\n * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time.\n *\n * @name eachLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.each]{@link module:Collections.each}\n * @alias forEachLimit\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOfLimit`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n */\nfunction eachLimit$1(coll, limit, iteratee, callback) {\n _eachOfLimit(limit)(coll, _withoutIndex(wrapAsync(iteratee)), callback);\n}\n\n/**\n * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time.\n *\n * @name eachSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.each]{@link module:Collections.each}\n * @alias forEachSeries\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each\n * item in `coll`.\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOfSeries`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n */\nvar eachSeries = doLimit(eachLimit$1, 1);\n\n/**\n * Wrap an async function and ensure it calls its callback on a later tick of\n * the event loop. If the function already calls its callback on a next tick,\n * no extra deferral is added. This is useful for preventing stack overflows\n * (`RangeError: Maximum call stack size exceeded`) and generally keeping\n * [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony)\n * contained. ES2017 `async` functions are returned as-is -- they are immune\n * to Zalgo's corrupting influences, as they always resolve on a later tick.\n *\n * @name ensureAsync\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} fn - an async function, one that expects a node-style\n * callback as its last argument.\n * @returns {AsyncFunction} Returns a wrapped function with the exact same call\n * signature as the function passed in.\n * @example\n *\n * function sometimesAsync(arg, callback) {\n * if (cache[arg]) {\n * return callback(null, cache[arg]); // this would be synchronous!!\n * } else {\n * doSomeIO(arg, callback); // this IO would be asynchronous\n * }\n * }\n *\n * // this has a risk of stack overflows if many results are cached in a row\n * async.mapSeries(args, sometimesAsync, done);\n *\n * // this will defer sometimesAsync's callback if necessary,\n * // preventing stack overflows\n * async.mapSeries(args, async.ensureAsync(sometimesAsync), done);\n */\nfunction ensureAsync(fn) {\n if (isAsync(fn)) return fn;\n return initialParams(function (args, callback) {\n var sync = true;\n args.push(function () {\n var innerArgs = arguments;\n if (sync) {\n setImmediate$1(function () {\n callback.apply(null, innerArgs);\n });\n } else {\n callback.apply(null, innerArgs);\n }\n });\n fn.apply(this, args);\n sync = false;\n });\n}\n\nfunction notId(v) {\n return !v;\n}\n\n/**\n * Returns `true` if every element in `coll` satisfies an async test. If any\n * iteratee call returns `false`, the main `callback` is immediately called.\n *\n * @name every\n * @static\n * @memberOf module:Collections\n * @method\n * @alias all\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collection in parallel.\n * The iteratee must complete with a boolean result value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Result will be either `true` or `false`\n * depending on the values of the async tests. Invoked with (err, result).\n * @example\n *\n * async.every(['file1','file2','file3'], function(filePath, callback) {\n * fs.access(filePath, function(err) {\n * callback(null, !err)\n * });\n * }, function(err, result) {\n * // if result is true then every file exists\n * });\n */\nvar every = doParallel(_createTester(notId, notId));\n\n/**\n * The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time.\n *\n * @name everyLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.every]{@link module:Collections.every}\n * @alias allLimit\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collection in parallel.\n * The iteratee must complete with a boolean result value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Result will be either `true` or `false`\n * depending on the values of the async tests. Invoked with (err, result).\n */\nvar everyLimit = doParallelLimit(_createTester(notId, notId));\n\n/**\n * The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time.\n *\n * @name everySeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.every]{@link module:Collections.every}\n * @alias allSeries\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collection in series.\n * The iteratee must complete with a boolean result value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Result will be either `true` or `false`\n * depending on the values of the async tests. Invoked with (err, result).\n */\nvar everySeries = doLimit(everyLimit, 1);\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nfunction filterArray(eachfn, arr, iteratee, callback) {\n var truthValues = new Array(arr.length);\n eachfn(arr, function (x, index, callback) {\n iteratee(x, function (err, v) {\n truthValues[index] = !!v;\n callback(err);\n });\n }, function (err) {\n if (err) return callback(err);\n var results = [];\n for (var i = 0; i < arr.length; i++) {\n if (truthValues[i]) results.push(arr[i]);\n }\n callback(null, results);\n });\n}\n\nfunction filterGeneric(eachfn, coll, iteratee, callback) {\n var results = [];\n eachfn(coll, function (x, index, callback) {\n iteratee(x, function (err, v) {\n if (err) {\n callback(err);\n } else {\n if (v) {\n results.push({index: index, value: x});\n }\n callback();\n }\n });\n }, function (err) {\n if (err) {\n callback(err);\n } else {\n callback(null, arrayMap(results.sort(function (a, b) {\n return a.index - b.index;\n }), baseProperty('value')));\n }\n });\n}\n\nfunction _filter(eachfn, coll, iteratee, callback) {\n var filter = isArrayLike(coll) ? filterArray : filterGeneric;\n filter(eachfn, coll, wrapAsync(iteratee), callback || noop);\n}\n\n/**\n * Returns a new array of all the values in `coll` which pass an async truth\n * test. This operation is performed in parallel, but the results array will be\n * in the same order as the original.\n *\n * @name filter\n * @static\n * @memberOf module:Collections\n * @method\n * @alias select\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {Function} iteratee - A truth test to apply to each item in `coll`.\n * The `iteratee` is passed a `callback(err, truthValue)`, which must be called\n * with a boolean argument once it has completed. Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results).\n * @example\n *\n * async.filter(['file1','file2','file3'], function(filePath, callback) {\n * fs.access(filePath, function(err) {\n * callback(null, !err)\n * });\n * }, function(err, results) {\n * // results now equals an array of the existing files\n * });\n */\nvar filter = doParallel(_filter);\n\n/**\n * The same as [`filter`]{@link module:Collections.filter} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name filterLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.filter]{@link module:Collections.filter}\n * @alias selectLimit\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {Function} iteratee - A truth test to apply to each item in `coll`.\n * The `iteratee` is passed a `callback(err, truthValue)`, which must be called\n * with a boolean argument once it has completed. Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results).\n */\nvar filterLimit = doParallelLimit(_filter);\n\n/**\n * The same as [`filter`]{@link module:Collections.filter} but runs only a single async operation at a time.\n *\n * @name filterSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.filter]{@link module:Collections.filter}\n * @alias selectSeries\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {Function} iteratee - A truth test to apply to each item in `coll`.\n * The `iteratee` is passed a `callback(err, truthValue)`, which must be called\n * with a boolean argument once it has completed. Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results)\n */\nvar filterSeries = doLimit(filterLimit, 1);\n\n/**\n * Calls the asynchronous function `fn` with a callback parameter that allows it\n * to call itself again, in series, indefinitely.\n\n * If an error is passed to the callback then `errback` is called with the\n * error, and execution stops, otherwise it will never be called.\n *\n * @name forever\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {AsyncFunction} fn - an async function to call repeatedly.\n * Invoked with (next).\n * @param {Function} [errback] - when `fn` passes an error to it's callback,\n * this function will be called, and execution stops. Invoked with (err).\n * @example\n *\n * async.forever(\n * function(next) {\n * // next is suitable for passing to things that need a callback(err [, whatever]);\n * // it will result in this function being called again.\n * },\n * function(err) {\n * // if next is called with a value in its first parameter, it will appear\n * // in here as 'err', and execution will stop.\n * }\n * );\n */\nfunction forever(fn, errback) {\n var done = onlyOnce(errback || noop);\n var task = wrapAsync(ensureAsync(fn));\n\n function next(err) {\n if (err) return done(err);\n task(next);\n }\n next();\n}\n\n/**\n * The same as [`groupBy`]{@link module:Collections.groupBy} but runs a maximum of `limit` async operations at a time.\n *\n * @name groupByLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.groupBy]{@link module:Collections.groupBy}\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with a `key` to group the value under.\n * Invoked with (value, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Result is an `Object` whoses\n * properties are arrays of values which returned the corresponding key.\n */\nvar groupByLimit = function(coll, limit, iteratee, callback) {\n callback = callback || noop;\n var _iteratee = wrapAsync(iteratee);\n mapLimit(coll, limit, function(val, callback) {\n _iteratee(val, function(err, key) {\n if (err) return callback(err);\n return callback(null, {key: key, val: val});\n });\n }, function(err, mapResults) {\n var result = {};\n // from MDN, handle object having an `hasOwnProperty` prop\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n for (var i = 0; i < mapResults.length; i++) {\n if (mapResults[i]) {\n var key = mapResults[i].key;\n var val = mapResults[i].val;\n\n if (hasOwnProperty.call(result, key)) {\n result[key].push(val);\n } else {\n result[key] = [val];\n }\n }\n }\n\n return callback(err, result);\n });\n};\n\n/**\n * Returns a new object, where each value corresponds to an array of items, from\n * `coll`, that returned the corresponding key. That is, the keys of the object\n * correspond to the values passed to the `iteratee` callback.\n *\n * Note: Since this function applies the `iteratee` to each item in parallel,\n * there is no guarantee that the `iteratee` functions will complete in order.\n * However, the values for each key in the `result` will be in the same order as\n * the original `coll`. For Objects, the values will roughly be in the order of\n * the original Objects' keys (but this can vary across JavaScript engines).\n *\n * @name groupBy\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with a `key` to group the value under.\n * Invoked with (value, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Result is an `Object` whoses\n * properties are arrays of values which returned the corresponding key.\n * @example\n *\n * async.groupBy(['userId1', 'userId2', 'userId3'], function(userId, callback) {\n * db.findById(userId, function(err, user) {\n * if (err) return callback(err);\n * return callback(null, user.age);\n * });\n * }, function(err, result) {\n * // result is object containing the userIds grouped by age\n * // e.g. { 30: ['userId1', 'userId3'], 42: ['userId2']};\n * });\n */\nvar groupBy = doLimit(groupByLimit, Infinity);\n\n/**\n * The same as [`groupBy`]{@link module:Collections.groupBy} but runs only a single async operation at a time.\n *\n * @name groupBySeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.groupBy]{@link module:Collections.groupBy}\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with a `key` to group the value under.\n * Invoked with (value, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Result is an `Object` whoses\n * properties are arrays of values which returned the corresponding key.\n */\nvar groupBySeries = doLimit(groupByLimit, 1);\n\n/**\n * Logs the result of an `async` function to the `console`. Only works in\n * Node.js or in browsers that support `console.log` and `console.error` (such\n * as FF and Chrome). If multiple arguments are returned from the async\n * function, `console.log` is called on each argument in order.\n *\n * @name log\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} function - The function you want to eventually apply\n * all arguments to.\n * @param {...*} arguments... - Any number of arguments to apply to the function.\n * @example\n *\n * // in a module\n * var hello = function(name, callback) {\n * setTimeout(function() {\n * callback(null, 'hello ' + name);\n * }, 1000);\n * };\n *\n * // in the node repl\n * node> async.log(hello, 'world');\n * 'hello world'\n */\nvar log = consoleFunc('log');\n\n/**\n * The same as [`mapValues`]{@link module:Collections.mapValues} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name mapValuesLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.mapValues]{@link module:Collections.mapValues}\n * @category Collection\n * @param {Object} obj - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - A function to apply to each value and key\n * in `coll`.\n * The iteratee should complete with the transformed value as its result.\n * Invoked with (value, key, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. `result` is a new object consisting\n * of each key from `obj`, with each transformed value on the right-hand side.\n * Invoked with (err, result).\n */\nfunction mapValuesLimit(obj, limit, iteratee, callback) {\n callback = once(callback || noop);\n var newObj = {};\n var _iteratee = wrapAsync(iteratee);\n eachOfLimit(obj, limit, function(val, key, next) {\n _iteratee(val, key, function (err, result) {\n if (err) return next(err);\n newObj[key] = result;\n next();\n });\n }, function (err) {\n callback(err, newObj);\n });\n}\n\n/**\n * A relative of [`map`]{@link module:Collections.map}, designed for use with objects.\n *\n * Produces a new Object by mapping each value of `obj` through the `iteratee`\n * function. The `iteratee` is called each `value` and `key` from `obj` and a\n * callback for when it has finished processing. Each of these callbacks takes\n * two arguments: an `error`, and the transformed item from `obj`. If `iteratee`\n * passes an error to its callback, the main `callback` (for the `mapValues`\n * function) is immediately called with the error.\n *\n * Note, the order of the keys in the result is not guaranteed. The keys will\n * be roughly in the order they complete, (but this is very engine-specific)\n *\n * @name mapValues\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @param {Object} obj - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A function to apply to each value and key\n * in `coll`.\n * The iteratee should complete with the transformed value as its result.\n * Invoked with (value, key, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. `result` is a new object consisting\n * of each key from `obj`, with each transformed value on the right-hand side.\n * Invoked with (err, result).\n * @example\n *\n * async.mapValues({\n * f1: 'file1',\n * f2: 'file2',\n * f3: 'file3'\n * }, function (file, key, callback) {\n * fs.stat(file, callback);\n * }, function(err, result) {\n * // result is now a map of stats for each file, e.g.\n * // {\n * // f1: [stats for file1],\n * // f2: [stats for file2],\n * // f3: [stats for file3]\n * // }\n * });\n */\n\nvar mapValues = doLimit(mapValuesLimit, Infinity);\n\n/**\n * The same as [`mapValues`]{@link module:Collections.mapValues} but runs only a single async operation at a time.\n *\n * @name mapValuesSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.mapValues]{@link module:Collections.mapValues}\n * @category Collection\n * @param {Object} obj - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A function to apply to each value and key\n * in `coll`.\n * The iteratee should complete with the transformed value as its result.\n * Invoked with (value, key, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. `result` is a new object consisting\n * of each key from `obj`, with each transformed value on the right-hand side.\n * Invoked with (err, result).\n */\nvar mapValuesSeries = doLimit(mapValuesLimit, 1);\n\nfunction has(obj, key) {\n return key in obj;\n}\n\n/**\n * Caches the results of an async function. When creating a hash to store\n * function results against, the callback is omitted from the hash and an\n * optional hash function can be used.\n *\n * If no hash function is specified, the first argument is used as a hash key,\n * which may work reasonably if it is a string or a data type that converts to a\n * distinct string. Note that objects and arrays will not behave reasonably.\n * Neither will cases where the other arguments are significant. In such cases,\n * specify your own hash function.\n *\n * The cache of results is exposed as the `memo` property of the function\n * returned by `memoize`.\n *\n * @name memoize\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} fn - The async function to proxy and cache results from.\n * @param {Function} hasher - An optional function for generating a custom hash\n * for storing results. It has all the arguments applied to it apart from the\n * callback, and must be synchronous.\n * @returns {AsyncFunction} a memoized version of `fn`\n * @example\n *\n * var slow_fn = function(name, callback) {\n * // do something\n * callback(null, result);\n * };\n * var fn = async.memoize(slow_fn);\n *\n * // fn can now be used as if it were slow_fn\n * fn('some name', function() {\n * // callback\n * });\n */\nfunction memoize(fn, hasher) {\n var memo = Object.create(null);\n var queues = Object.create(null);\n hasher = hasher || identity;\n var _fn = wrapAsync(fn);\n var memoized = initialParams(function memoized(args, callback) {\n var key = hasher.apply(null, args);\n if (has(memo, key)) {\n setImmediate$1(function() {\n callback.apply(null, memo[key]);\n });\n } else if (has(queues, key)) {\n queues[key].push(callback);\n } else {\n queues[key] = [callback];\n _fn.apply(null, args.concat(function(/*args*/) {\n var args = slice(arguments);\n memo[key] = args;\n var q = queues[key];\n delete queues[key];\n for (var i = 0, l = q.length; i < l; i++) {\n q[i].apply(null, args);\n }\n }));\n }\n });\n memoized.memo = memo;\n memoized.unmemoized = fn;\n return memoized;\n}\n\n/**\n * Calls `callback` on a later loop around the event loop. In Node.js this just\n * calls `process.nextTick`. In the browser it will use `setImmediate` if\n * available, otherwise `setTimeout(callback, 0)`, which means other higher\n * priority events may precede the execution of `callback`.\n *\n * This is used internally for browser-compatibility purposes.\n *\n * @name nextTick\n * @static\n * @memberOf module:Utils\n * @method\n * @see [async.setImmediate]{@link module:Utils.setImmediate}\n * @category Util\n * @param {Function} callback - The function to call on a later loop around\n * the event loop. Invoked with (args...).\n * @param {...*} args... - any number of additional arguments to pass to the\n * callback on the next tick.\n * @example\n *\n * var call_order = [];\n * async.nextTick(function() {\n * call_order.push('two');\n * // call_order now equals ['one','two']\n * });\n * call_order.push('one');\n *\n * async.setImmediate(function (a, b, c) {\n * // a, b, and c equal 1, 2, and 3\n * }, 1, 2, 3);\n */\nvar _defer$1;\n\nif (hasNextTick) {\n _defer$1 = process.nextTick;\n} else if (hasSetImmediate) {\n _defer$1 = setImmediate;\n} else {\n _defer$1 = fallback;\n}\n\nvar nextTick = wrap(_defer$1);\n\nfunction _parallel(eachfn, tasks, callback) {\n callback = callback || noop;\n var results = isArrayLike(tasks) ? [] : {};\n\n eachfn(tasks, function (task, key, callback) {\n wrapAsync(task)(function (err, result) {\n if (arguments.length > 2) {\n result = slice(arguments, 1);\n }\n results[key] = result;\n callback(err);\n });\n }, function (err) {\n callback(err, results);\n });\n}\n\n/**\n * Run the `tasks` collection of functions in parallel, without waiting until\n * the previous function has completed. If any of the functions pass an error to\n * its callback, the main `callback` is immediately called with the value of the\n * error. Once the `tasks` have completed, the results are passed to the final\n * `callback` as an array.\n *\n * **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about\n * parallel execution of code. If your tasks do not use any timers or perform\n * any I/O, they will actually be executed in series. Any synchronous setup\n * sections for each task will happen one after the other. JavaScript remains\n * single-threaded.\n *\n * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the\n * execution of other tasks when a task fails.\n *\n * It is also possible to use an object instead of an array. Each property will\n * be run as a function and the results will be passed to the final `callback`\n * as an object instead of an array. This can be a more readable way of handling\n * results from {@link async.parallel}.\n *\n * @name parallel\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|Object} tasks - A collection of\n * [async functions]{@link AsyncFunction} to run.\n * Each async function can complete with any number of optional `result` values.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed successfully. This function gets a results array\n * (or object) containing all the result arguments passed to the task callbacks.\n * Invoked with (err, results).\n *\n * @example\n * async.parallel([\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'two');\n * }, 100);\n * }\n * ],\n * // optional callback\n * function(err, results) {\n * // the results array will equal ['one','two'] even though\n * // the second function had a shorter timeout.\n * });\n *\n * // an example using an object instead of an array\n * async.parallel({\n * one: function(callback) {\n * setTimeout(function() {\n * callback(null, 1);\n * }, 200);\n * },\n * two: function(callback) {\n * setTimeout(function() {\n * callback(null, 2);\n * }, 100);\n * }\n * }, function(err, results) {\n * // results is now equals to: {one: 1, two: 2}\n * });\n */\nfunction parallelLimit(tasks, callback) {\n _parallel(eachOf, tasks, callback);\n}\n\n/**\n * The same as [`parallel`]{@link module:ControlFlow.parallel} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name parallelLimit\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.parallel]{@link module:ControlFlow.parallel}\n * @category Control Flow\n * @param {Array|Iterable|Object} tasks - A collection of\n * [async functions]{@link AsyncFunction} to run.\n * Each async function can complete with any number of optional `result` values.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed successfully. This function gets a results array\n * (or object) containing all the result arguments passed to the task callbacks.\n * Invoked with (err, results).\n */\nfunction parallelLimit$1(tasks, limit, callback) {\n _parallel(_eachOfLimit(limit), tasks, callback);\n}\n\n/**\n * A queue of tasks for the worker function to complete.\n * @typedef {Object} QueueObject\n * @memberOf module:ControlFlow\n * @property {Function} length - a function returning the number of items\n * waiting to be processed. Invoke with `queue.length()`.\n * @property {boolean} started - a boolean indicating whether or not any\n * items have been pushed and processed by the queue.\n * @property {Function} running - a function returning the number of items\n * currently being processed. Invoke with `queue.running()`.\n * @property {Function} workersList - a function returning the array of items\n * currently being processed. Invoke with `queue.workersList()`.\n * @property {Function} idle - a function returning false if there are items\n * waiting or being processed, or true if not. Invoke with `queue.idle()`.\n * @property {number} concurrency - an integer for determining how many `worker`\n * functions should be run in parallel. This property can be changed after a\n * `queue` is created to alter the concurrency on-the-fly.\n * @property {Function} push - add a new task to the `queue`. Calls `callback`\n * once the `worker` has finished processing the task. Instead of a single task,\n * a `tasks` array can be submitted. The respective callback is used for every\n * task in the list. Invoke with `queue.push(task, [callback])`,\n * @property {Function} unshift - add a new task to the front of the `queue`.\n * Invoke with `queue.unshift(task, [callback])`.\n * @property {Function} remove - remove items from the queue that match a test\n * function. The test function will be passed an object with a `data` property,\n * and a `priority` property, if this is a\n * [priorityQueue]{@link module:ControlFlow.priorityQueue} object.\n * Invoked with `queue.remove(testFn)`, where `testFn` is of the form\n * `function ({data, priority}) {}` and returns a Boolean.\n * @property {Function} saturated - a callback that is called when the number of\n * running workers hits the `concurrency` limit, and further tasks will be\n * queued.\n * @property {Function} unsaturated - a callback that is called when the number\n * of running workers is less than the `concurrency` & `buffer` limits, and\n * further tasks will not be queued.\n * @property {number} buffer - A minimum threshold buffer in order to say that\n * the `queue` is `unsaturated`.\n * @property {Function} empty - a callback that is called when the last item\n * from the `queue` is given to a `worker`.\n * @property {Function} drain - a callback that is called when the last item\n * from the `queue` has returned from the `worker`.\n * @property {Function} error - a callback that is called when a task errors.\n * Has the signature `function(error, task)`.\n * @property {boolean} paused - a boolean for determining whether the queue is\n * in a paused state.\n * @property {Function} pause - a function that pauses the processing of tasks\n * until `resume()` is called. Invoke with `queue.pause()`.\n * @property {Function} resume - a function that resumes the processing of\n * queued tasks when the queue is paused. Invoke with `queue.resume()`.\n * @property {Function} kill - a function that removes the `drain` callback and\n * empties remaining tasks from the queue forcing it to go idle. No more tasks\n * should be pushed to the queue after calling this function. Invoke with `queue.kill()`.\n */\n\n/**\n * Creates a `queue` object with the specified `concurrency`. Tasks added to the\n * `queue` are processed in parallel (up to the `concurrency` limit). If all\n * `worker`s are in progress, the task is queued until one becomes available.\n * Once a `worker` completes a `task`, that `task`'s callback is called.\n *\n * @name queue\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {AsyncFunction} worker - An async function for processing a queued task.\n * If you want to handle errors from an individual task, pass a callback to\n * `q.push()`. Invoked with (task, callback).\n * @param {number} [concurrency=1] - An `integer` for determining how many\n * `worker` functions should be run in parallel. If omitted, the concurrency\n * defaults to `1`. If the concurrency is `0`, an error is thrown.\n * @returns {module:ControlFlow.QueueObject} A queue object to manage the tasks. Callbacks can\n * attached as certain properties to listen for specific events during the\n * lifecycle of the queue.\n * @example\n *\n * // create a queue object with concurrency 2\n * var q = async.queue(function(task, callback) {\n * console.log('hello ' + task.name);\n * callback();\n * }, 2);\n *\n * // assign a callback\n * q.drain = function() {\n * console.log('all items have been processed');\n * };\n *\n * // add some items to the queue\n * q.push({name: 'foo'}, function(err) {\n * console.log('finished processing foo');\n * });\n * q.push({name: 'bar'}, function (err) {\n * console.log('finished processing bar');\n * });\n *\n * // add some items to the queue (batch-wise)\n * q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function(err) {\n * console.log('finished processing item');\n * });\n *\n * // add some items to the front of the queue\n * q.unshift({name: 'bar'}, function (err) {\n * console.log('finished processing bar');\n * });\n */\nvar queue$1 = function (worker, concurrency) {\n var _worker = wrapAsync(worker);\n return queue(function (items, cb) {\n _worker(items[0], cb);\n }, concurrency, 1);\n};\n\n/**\n * The same as [async.queue]{@link module:ControlFlow.queue} only tasks are assigned a priority and\n * completed in ascending priority order.\n *\n * @name priorityQueue\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.queue]{@link module:ControlFlow.queue}\n * @category Control Flow\n * @param {AsyncFunction} worker - An async function for processing a queued task.\n * If you want to handle errors from an individual task, pass a callback to\n * `q.push()`.\n * Invoked with (task, callback).\n * @param {number} concurrency - An `integer` for determining how many `worker`\n * functions should be run in parallel. If omitted, the concurrency defaults to\n * `1`. If the concurrency is `0`, an error is thrown.\n * @returns {module:ControlFlow.QueueObject} A priorityQueue object to manage the tasks. There are two\n * differences between `queue` and `priorityQueue` objects:\n * * `push(task, priority, [callback])` - `priority` should be a number. If an\n * array of `tasks` is given, all tasks will be assigned the same priority.\n * * The `unshift` method was removed.\n */\nvar priorityQueue = function(worker, concurrency) {\n // Start with a normal queue\n var q = queue$1(worker, concurrency);\n\n // Override push to accept second parameter representing priority\n q.push = function(data, priority, callback) {\n if (callback == null) callback = noop;\n if (typeof callback !== 'function') {\n throw new Error('task callback must be a function');\n }\n q.started = true;\n if (!isArray(data)) {\n data = [data];\n }\n if (data.length === 0) {\n // call drain immediately if there are no tasks\n return setImmediate$1(function() {\n q.drain();\n });\n }\n\n priority = priority || 0;\n var nextNode = q._tasks.head;\n while (nextNode && priority >= nextNode.priority) {\n nextNode = nextNode.next;\n }\n\n for (var i = 0, l = data.length; i < l; i++) {\n var item = {\n data: data[i],\n priority: priority,\n callback: callback\n };\n\n if (nextNode) {\n q._tasks.insertBefore(nextNode, item);\n } else {\n q._tasks.push(item);\n }\n }\n setImmediate$1(q.process);\n };\n\n // Remove unshift function\n delete q.unshift;\n\n return q;\n};\n\n/**\n * Runs the `tasks` array of functions in parallel, without waiting until the\n * previous function has completed. Once any of the `tasks` complete or pass an\n * error to its callback, the main `callback` is immediately called. It's\n * equivalent to `Promise.race()`.\n *\n * @name race\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array} tasks - An array containing [async functions]{@link AsyncFunction}\n * to run. Each function can complete with an optional `result` value.\n * @param {Function} callback - A callback to run once any of the functions have\n * completed. This function gets an error or result from the first function that\n * completed. Invoked with (err, result).\n * @returns undefined\n * @example\n *\n * async.race([\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'two');\n * }, 100);\n * }\n * ],\n * // main callback\n * function(err, result) {\n * // the result will be equal to 'two' as it finishes earlier\n * });\n */\nfunction race(tasks, callback) {\n callback = once(callback || noop);\n if (!isArray(tasks)) return callback(new TypeError('First argument to race must be an array of functions'));\n if (!tasks.length) return callback();\n for (var i = 0, l = tasks.length; i < l; i++) {\n wrapAsync(tasks[i])(callback);\n }\n}\n\n/**\n * Same as [`reduce`]{@link module:Collections.reduce}, only operates on `array` in reverse order.\n *\n * @name reduceRight\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.reduce]{@link module:Collections.reduce}\n * @alias foldr\n * @category Collection\n * @param {Array} array - A collection to iterate over.\n * @param {*} memo - The initial state of the reduction.\n * @param {AsyncFunction} iteratee - A function applied to each item in the\n * array to produce the next step in the reduction.\n * The `iteratee` should complete with the next state of the reduction.\n * If the iteratee complete with an error, the reduction is stopped and the\n * main `callback` is immediately called with the error.\n * Invoked with (memo, item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Result is the reduced value. Invoked with\n * (err, result).\n */\nfunction reduceRight (array, memo, iteratee, callback) {\n var reversed = slice(array).reverse();\n reduce(reversed, memo, iteratee, callback);\n}\n\n/**\n * Wraps the async function in another function that always completes with a\n * result object, even when it errors.\n *\n * The result object has either the property `error` or `value`.\n *\n * @name reflect\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} fn - The async function you want to wrap\n * @returns {Function} - A function that always passes null to it's callback as\n * the error. The second argument to the callback will be an `object` with\n * either an `error` or a `value` property.\n * @example\n *\n * async.parallel([\n * async.reflect(function(callback) {\n * // do some stuff ...\n * callback(null, 'one');\n * }),\n * async.reflect(function(callback) {\n * // do some more stuff but error ...\n * callback('bad stuff happened');\n * }),\n * async.reflect(function(callback) {\n * // do some more stuff ...\n * callback(null, 'two');\n * })\n * ],\n * // optional callback\n * function(err, results) {\n * // values\n * // results[0].value = 'one'\n * // results[1].error = 'bad stuff happened'\n * // results[2].value = 'two'\n * });\n */\nfunction reflect(fn) {\n var _fn = wrapAsync(fn);\n return initialParams(function reflectOn(args, reflectCallback) {\n args.push(function callback(error, cbArg) {\n if (error) {\n reflectCallback(null, { error: error });\n } else {\n var value;\n if (arguments.length <= 2) {\n value = cbArg;\n } else {\n value = slice(arguments, 1);\n }\n reflectCallback(null, { value: value });\n }\n });\n\n return _fn.apply(this, args);\n });\n}\n\n/**\n * A helper function that wraps an array or an object of functions with `reflect`.\n *\n * @name reflectAll\n * @static\n * @memberOf module:Utils\n * @method\n * @see [async.reflect]{@link module:Utils.reflect}\n * @category Util\n * @param {Array|Object|Iterable} tasks - The collection of\n * [async functions]{@link AsyncFunction} to wrap in `async.reflect`.\n * @returns {Array} Returns an array of async functions, each wrapped in\n * `async.reflect`\n * @example\n *\n * let tasks = [\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * // do some more stuff but error ...\n * callback(new Error('bad stuff happened'));\n * },\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'two');\n * }, 100);\n * }\n * ];\n *\n * async.parallel(async.reflectAll(tasks),\n * // optional callback\n * function(err, results) {\n * // values\n * // results[0].value = 'one'\n * // results[1].error = Error('bad stuff happened')\n * // results[2].value = 'two'\n * });\n *\n * // an example using an object instead of an array\n * let tasks = {\n * one: function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * two: function(callback) {\n * callback('two');\n * },\n * three: function(callback) {\n * setTimeout(function() {\n * callback(null, 'three');\n * }, 100);\n * }\n * };\n *\n * async.parallel(async.reflectAll(tasks),\n * // optional callback\n * function(err, results) {\n * // values\n * // results.one.value = 'one'\n * // results.two.error = 'two'\n * // results.three.value = 'three'\n * });\n */\nfunction reflectAll(tasks) {\n var results;\n if (isArray(tasks)) {\n results = arrayMap(tasks, reflect);\n } else {\n results = {};\n baseForOwn(tasks, function(task, key) {\n results[key] = reflect.call(this, task);\n });\n }\n return results;\n}\n\nfunction reject$1(eachfn, arr, iteratee, callback) {\n _filter(eachfn, arr, function(value, cb) {\n iteratee(value, function(err, v) {\n cb(err, !v);\n });\n }, callback);\n}\n\n/**\n * The opposite of [`filter`]{@link module:Collections.filter}. Removes values that pass an `async` truth test.\n *\n * @name reject\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.filter]{@link module:Collections.filter}\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {Function} iteratee - An async truth test to apply to each item in\n * `coll`.\n * The should complete with a boolean value as its `result`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results).\n * @example\n *\n * async.reject(['file1','file2','file3'], function(filePath, callback) {\n * fs.access(filePath, function(err) {\n * callback(null, !err)\n * });\n * }, function(err, results) {\n * // results now equals an array of missing files\n * createFiles(results);\n * });\n */\nvar reject = doParallel(reject$1);\n\n/**\n * The same as [`reject`]{@link module:Collections.reject} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name rejectLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.reject]{@link module:Collections.reject}\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {Function} iteratee - An async truth test to apply to each item in\n * `coll`.\n * The should complete with a boolean value as its `result`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results).\n */\nvar rejectLimit = doParallelLimit(reject$1);\n\n/**\n * The same as [`reject`]{@link module:Collections.reject} but runs only a single async operation at a time.\n *\n * @name rejectSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.reject]{@link module:Collections.reject}\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {Function} iteratee - An async truth test to apply to each item in\n * `coll`.\n * The should complete with a boolean value as its `result`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results).\n */\nvar rejectSeries = doLimit(rejectLimit, 1);\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant$1(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * Attempts to get a successful response from `task` no more than `times` times\n * before returning an error. If the task is successful, the `callback` will be\n * passed the result of the successful task. If all attempts fail, the callback\n * will be passed the error and result (if any) of the final attempt.\n *\n * @name retry\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @see [async.retryable]{@link module:ControlFlow.retryable}\n * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - Can be either an\n * object with `times` and `interval` or a number.\n * * `times` - The number of attempts to make before giving up. The default\n * is `5`.\n * * `interval` - The time to wait between retries, in milliseconds. The\n * default is `0`. The interval may also be specified as a function of the\n * retry count (see example).\n * * `errorFilter` - An optional synchronous function that is invoked on\n * erroneous result. If it returns `true` the retry attempts will continue;\n * if the function returns `false` the retry flow is aborted with the current\n * attempt's error and result being returned to the final callback.\n * Invoked with (err).\n * * If `opts` is a number, the number specifies the number of times to retry,\n * with the default interval of `0`.\n * @param {AsyncFunction} task - An async function to retry.\n * Invoked with (callback).\n * @param {Function} [callback] - An optional callback which is called when the\n * task has succeeded, or after the final failed attempt. It receives the `err`\n * and `result` arguments of the last attempt at completing the `task`. Invoked\n * with (err, results).\n *\n * @example\n *\n * // The `retry` function can be used as a stand-alone control flow by passing\n * // a callback, as shown below:\n *\n * // try calling apiMethod 3 times\n * async.retry(3, apiMethod, function(err, result) {\n * // do something with the result\n * });\n *\n * // try calling apiMethod 3 times, waiting 200 ms between each retry\n * async.retry({times: 3, interval: 200}, apiMethod, function(err, result) {\n * // do something with the result\n * });\n *\n * // try calling apiMethod 10 times with exponential backoff\n * // (i.e. intervals of 100, 200, 400, 800, 1600, ... milliseconds)\n * async.retry({\n * times: 10,\n * interval: function(retryCount) {\n * return 50 * Math.pow(2, retryCount);\n * }\n * }, apiMethod, function(err, result) {\n * // do something with the result\n * });\n *\n * // try calling apiMethod the default 5 times no delay between each retry\n * async.retry(apiMethod, function(err, result) {\n * // do something with the result\n * });\n *\n * // try calling apiMethod only when error condition satisfies, all other\n * // errors will abort the retry control flow and return to final callback\n * async.retry({\n * errorFilter: function(err) {\n * return err.message === 'Temporary error'; // only retry on a specific error\n * }\n * }, apiMethod, function(err, result) {\n * // do something with the result\n * });\n *\n * // to retry individual methods that are not as reliable within other\n * // control flow functions, use the `retryable` wrapper:\n * async.auto({\n * users: api.getUsers.bind(api),\n * payments: async.retryable(3, api.getPayments.bind(api))\n * }, function(err, results) {\n * // do something with the results\n * });\n *\n */\nfunction retry(opts, task, callback) {\n var DEFAULT_TIMES = 5;\n var DEFAULT_INTERVAL = 0;\n\n var options = {\n times: DEFAULT_TIMES,\n intervalFunc: constant$1(DEFAULT_INTERVAL)\n };\n\n function parseTimes(acc, t) {\n if (typeof t === 'object') {\n acc.times = +t.times || DEFAULT_TIMES;\n\n acc.intervalFunc = typeof t.interval === 'function' ?\n t.interval :\n constant$1(+t.interval || DEFAULT_INTERVAL);\n\n acc.errorFilter = t.errorFilter;\n } else if (typeof t === 'number' || typeof t === 'string') {\n acc.times = +t || DEFAULT_TIMES;\n } else {\n throw new Error(\"Invalid arguments for async.retry\");\n }\n }\n\n if (arguments.length < 3 && typeof opts === 'function') {\n callback = task || noop;\n task = opts;\n } else {\n parseTimes(options, opts);\n callback = callback || noop;\n }\n\n if (typeof task !== 'function') {\n throw new Error(\"Invalid arguments for async.retry\");\n }\n\n var _task = wrapAsync(task);\n\n var attempt = 1;\n function retryAttempt() {\n _task(function(err) {\n if (err && attempt++ < options.times &&\n (typeof options.errorFilter != 'function' ||\n options.errorFilter(err))) {\n setTimeout(retryAttempt, options.intervalFunc(attempt));\n } else {\n callback.apply(null, arguments);\n }\n });\n }\n\n retryAttempt();\n}\n\n/**\n * A close relative of [`retry`]{@link module:ControlFlow.retry}. This method\n * wraps a task and makes it retryable, rather than immediately calling it\n * with retries.\n *\n * @name retryable\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.retry]{@link module:ControlFlow.retry}\n * @category Control Flow\n * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - optional\n * options, exactly the same as from `retry`\n * @param {AsyncFunction} task - the asynchronous function to wrap.\n * This function will be passed any arguments passed to the returned wrapper.\n * Invoked with (...args, callback).\n * @returns {AsyncFunction} The wrapped function, which when invoked, will\n * retry on an error, based on the parameters specified in `opts`.\n * This function will accept the same parameters as `task`.\n * @example\n *\n * async.auto({\n * dep1: async.retryable(3, getFromFlakyService),\n * process: [\"dep1\", async.retryable(3, function (results, cb) {\n * maybeProcessData(results.dep1, cb);\n * })]\n * }, callback);\n */\nvar retryable = function (opts, task) {\n if (!task) {\n task = opts;\n opts = null;\n }\n var _task = wrapAsync(task);\n return initialParams(function (args, callback) {\n function taskFn(cb) {\n _task.apply(null, args.concat(cb));\n }\n\n if (opts) retry(opts, taskFn, callback);\n else retry(taskFn, callback);\n\n });\n};\n\n/**\n * Run the functions in the `tasks` collection in series, each one running once\n * the previous function has completed. If any functions in the series pass an\n * error to its callback, no more functions are run, and `callback` is\n * immediately called with the value of the error. Otherwise, `callback`\n * receives an array of results when `tasks` have completed.\n *\n * It is also possible to use an object instead of an array. Each property will\n * be run as a function, and the results will be passed to the final `callback`\n * as an object instead of an array. This can be a more readable way of handling\n * results from {@link async.series}.\n *\n * **Note** that while many implementations preserve the order of object\n * properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6)\n * explicitly states that\n *\n * > The mechanics and order of enumerating the properties is not specified.\n *\n * So if you rely on the order in which your series of functions are executed,\n * and want this to work on all platforms, consider using an array.\n *\n * @name series\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|Object} tasks - A collection containing\n * [async functions]{@link AsyncFunction} to run in series.\n * Each function can complete with any number of optional `result` values.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed. This function gets a results array (or object)\n * containing all the result arguments passed to the `task` callbacks. Invoked\n * with (err, result).\n * @example\n * async.series([\n * function(callback) {\n * // do some stuff ...\n * callback(null, 'one');\n * },\n * function(callback) {\n * // do some more stuff ...\n * callback(null, 'two');\n * }\n * ],\n * // optional callback\n * function(err, results) {\n * // results is now equal to ['one', 'two']\n * });\n *\n * async.series({\n * one: function(callback) {\n * setTimeout(function() {\n * callback(null, 1);\n * }, 200);\n * },\n * two: function(callback){\n * setTimeout(function() {\n * callback(null, 2);\n * }, 100);\n * }\n * }, function(err, results) {\n * // results is now equal to: {one: 1, two: 2}\n * });\n */\nfunction series(tasks, callback) {\n _parallel(eachOfSeries, tasks, callback);\n}\n\n/**\n * Returns `true` if at least one element in the `coll` satisfies an async test.\n * If any iteratee call returns `true`, the main `callback` is immediately\n * called.\n *\n * @name some\n * @static\n * @memberOf module:Collections\n * @method\n * @alias any\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collections in parallel.\n * The iteratee should complete with a boolean `result` value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the iteratee functions have finished.\n * Result will be either `true` or `false` depending on the values of the async\n * tests. Invoked with (err, result).\n * @example\n *\n * async.some(['file1','file2','file3'], function(filePath, callback) {\n * fs.access(filePath, function(err) {\n * callback(null, !err)\n * });\n * }, function(err, result) {\n * // if result is true then at least one of the files exists\n * });\n */\nvar some = doParallel(_createTester(Boolean, identity));\n\n/**\n * The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time.\n *\n * @name someLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.some]{@link module:Collections.some}\n * @alias anyLimit\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collections in parallel.\n * The iteratee should complete with a boolean `result` value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the iteratee functions have finished.\n * Result will be either `true` or `false` depending on the values of the async\n * tests. Invoked with (err, result).\n */\nvar someLimit = doParallelLimit(_createTester(Boolean, identity));\n\n/**\n * The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time.\n *\n * @name someSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.some]{@link module:Collections.some}\n * @alias anySeries\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collections in series.\n * The iteratee should complete with a boolean `result` value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the iteratee functions have finished.\n * Result will be either `true` or `false` depending on the values of the async\n * tests. Invoked with (err, result).\n */\nvar someSeries = doLimit(someLimit, 1);\n\n/**\n * Sorts a list by the results of running each `coll` value through an async\n * `iteratee`.\n *\n * @name sortBy\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with a value to use as the sort criteria as\n * its `result`.\n * Invoked with (item, callback).\n * @param {Function} callback - A callback which is called after all the\n * `iteratee` functions have finished, or an error occurs. Results is the items\n * from the original `coll` sorted by the values returned by the `iteratee`\n * calls. Invoked with (err, results).\n * @example\n *\n * async.sortBy(['file1','file2','file3'], function(file, callback) {\n * fs.stat(file, function(err, stats) {\n * callback(err, stats.mtime);\n * });\n * }, function(err, results) {\n * // results is now the original array of files sorted by\n * // modified date\n * });\n *\n * // By modifying the callback parameter the\n * // sorting order can be influenced:\n *\n * // ascending order\n * async.sortBy([1,9,3,5], function(x, callback) {\n * callback(null, x);\n * }, function(err,result) {\n * // result callback\n * });\n *\n * // descending order\n * async.sortBy([1,9,3,5], function(x, callback) {\n * callback(null, x*-1); //<- x*-1 instead of x, turns the order around\n * }, function(err,result) {\n * // result callback\n * });\n */\nfunction sortBy (coll, iteratee, callback) {\n var _iteratee = wrapAsync(iteratee);\n map(coll, function (x, callback) {\n _iteratee(x, function (err, criteria) {\n if (err) return callback(err);\n callback(null, {value: x, criteria: criteria});\n });\n }, function (err, results) {\n if (err) return callback(err);\n callback(null, arrayMap(results.sort(comparator), baseProperty('value')));\n });\n\n function comparator(left, right) {\n var a = left.criteria, b = right.criteria;\n return a < b ? -1 : a > b ? 1 : 0;\n }\n}\n\n/**\n * Sets a time limit on an asynchronous function. If the function does not call\n * its callback within the specified milliseconds, it will be called with a\n * timeout error. The code property for the error object will be `'ETIMEDOUT'`.\n *\n * @name timeout\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} asyncFn - The async function to limit in time.\n * @param {number} milliseconds - The specified time limit.\n * @param {*} [info] - Any variable you want attached (`string`, `object`, etc)\n * to timeout Error for more information..\n * @returns {AsyncFunction} Returns a wrapped function that can be used with any\n * of the control flow functions.\n * Invoke this function with the same parameters as you would `asyncFunc`.\n * @example\n *\n * function myFunction(foo, callback) {\n * doAsyncTask(foo, function(err, data) {\n * // handle errors\n * if (err) return callback(err);\n *\n * // do some stuff ...\n *\n * // return processed data\n * return callback(null, data);\n * });\n * }\n *\n * var wrapped = async.timeout(myFunction, 1000);\n *\n * // call `wrapped` as you would `myFunction`\n * wrapped({ bar: 'bar' }, function(err, data) {\n * // if `myFunction` takes < 1000 ms to execute, `err`\n * // and `data` will have their expected values\n *\n * // else `err` will be an Error with the code 'ETIMEDOUT'\n * });\n */\nfunction timeout(asyncFn, milliseconds, info) {\n var fn = wrapAsync(asyncFn);\n\n return initialParams(function (args, callback) {\n var timedOut = false;\n var timer;\n\n function timeoutCallback() {\n var name = asyncFn.name || 'anonymous';\n var error = new Error('Callback function \"' + name + '\" timed out.');\n error.code = 'ETIMEDOUT';\n if (info) {\n error.info = info;\n }\n timedOut = true;\n callback(error);\n }\n\n args.push(function () {\n if (!timedOut) {\n callback.apply(null, arguments);\n clearTimeout(timer);\n }\n });\n\n // setup timer and call original function\n timer = setTimeout(timeoutCallback, milliseconds);\n fn.apply(null, args);\n });\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil;\nvar nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\n/**\n * The same as [times]{@link module:ControlFlow.times} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name timesLimit\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.times]{@link module:ControlFlow.times}\n * @category Control Flow\n * @param {number} count - The number of times to run the function.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - The async function to call `n` times.\n * Invoked with the iteration index and a callback: (n, next).\n * @param {Function} callback - see [async.map]{@link module:Collections.map}.\n */\nfunction timeLimit(count, limit, iteratee, callback) {\n var _iteratee = wrapAsync(iteratee);\n mapLimit(baseRange(0, count, 1), limit, _iteratee, callback);\n}\n\n/**\n * Calls the `iteratee` function `n` times, and accumulates results in the same\n * manner you would use with [map]{@link module:Collections.map}.\n *\n * @name times\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.map]{@link module:Collections.map}\n * @category Control Flow\n * @param {number} n - The number of times to run the function.\n * @param {AsyncFunction} iteratee - The async function to call `n` times.\n * Invoked with the iteration index and a callback: (n, next).\n * @param {Function} callback - see {@link module:Collections.map}.\n * @example\n *\n * // Pretend this is some complicated async factory\n * var createUser = function(id, callback) {\n * callback(null, {\n * id: 'user' + id\n * });\n * };\n *\n * // generate 5 users\n * async.times(5, function(n, next) {\n * createUser(n, function(err, user) {\n * next(err, user);\n * });\n * }, function(err, users) {\n * // we should now have 5 users\n * });\n */\nvar times = doLimit(timeLimit, Infinity);\n\n/**\n * The same as [times]{@link module:ControlFlow.times} but runs only a single async operation at a time.\n *\n * @name timesSeries\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.times]{@link module:ControlFlow.times}\n * @category Control Flow\n * @param {number} n - The number of times to run the function.\n * @param {AsyncFunction} iteratee - The async function to call `n` times.\n * Invoked with the iteration index and a callback: (n, next).\n * @param {Function} callback - see {@link module:Collections.map}.\n */\nvar timesSeries = doLimit(timeLimit, 1);\n\n/**\n * A relative of `reduce`. Takes an Object or Array, and iterates over each\n * element in series, each step potentially mutating an `accumulator` value.\n * The type of the accumulator defaults to the type of collection passed in.\n *\n * @name transform\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {*} [accumulator] - The initial state of the transform. If omitted,\n * it will default to an empty Object or Array, depending on the type of `coll`\n * @param {AsyncFunction} iteratee - A function applied to each item in the\n * collection that potentially modifies the accumulator.\n * Invoked with (accumulator, item, key, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Result is the transformed accumulator.\n * Invoked with (err, result).\n * @example\n *\n * async.transform([1,2,3], function(acc, item, index, callback) {\n * // pointless async:\n * process.nextTick(function() {\n * acc.push(item * 2)\n * callback(null)\n * });\n * }, function(err, result) {\n * // result is now equal to [2, 4, 6]\n * });\n *\n * @example\n *\n * async.transform({a: 1, b: 2, c: 3}, function (obj, val, key, callback) {\n * setImmediate(function () {\n * obj[key] = val * 2;\n * callback();\n * })\n * }, function (err, result) {\n * // result is equal to {a: 2, b: 4, c: 6}\n * })\n */\nfunction transform (coll, accumulator, iteratee, callback) {\n if (arguments.length <= 3) {\n callback = iteratee;\n iteratee = accumulator;\n accumulator = isArray(coll) ? [] : {};\n }\n callback = once(callback || noop);\n var _iteratee = wrapAsync(iteratee);\n\n eachOf(coll, function(v, k, cb) {\n _iteratee(accumulator, v, k, cb);\n }, function(err) {\n callback(err, accumulator);\n });\n}\n\n/**\n * It runs each task in series but stops whenever any of the functions were\n * successful. If one of the tasks were successful, the `callback` will be\n * passed the result of the successful task. If all tasks fail, the callback\n * will be passed the error and result (if any) of the final attempt.\n *\n * @name tryEach\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|Object} tasks - A collection containing functions to\n * run, each function is passed a `callback(err, result)` it must call on\n * completion with an error `err` (which can be `null`) and an optional `result`\n * value.\n * @param {Function} [callback] - An optional callback which is called when one\n * of the tasks has succeeded, or all have failed. It receives the `err` and\n * `result` arguments of the last attempt at completing the `task`. Invoked with\n * (err, results).\n * @example\n * async.tryEach([\n * function getDataFromFirstWebsite(callback) {\n * // Try getting the data from the first website\n * callback(err, data);\n * },\n * function getDataFromSecondWebsite(callback) {\n * // First website failed,\n * // Try getting the data from the backup website\n * callback(err, data);\n * }\n * ],\n * // optional callback\n * function(err, results) {\n * Now do something with the data.\n * });\n *\n */\nfunction tryEach(tasks, callback) {\n var error = null;\n var result;\n callback = callback || noop;\n eachSeries(tasks, function(task, callback) {\n wrapAsync(task)(function (err, res/*, ...args*/) {\n if (arguments.length > 2) {\n result = slice(arguments, 1);\n } else {\n result = res;\n }\n error = err;\n callback(!err);\n });\n }, function () {\n callback(error, result);\n });\n}\n\n/**\n * Undoes a [memoize]{@link module:Utils.memoize}d function, reverting it to the original,\n * unmemoized form. Handy for testing.\n *\n * @name unmemoize\n * @static\n * @memberOf module:Utils\n * @method\n * @see [async.memoize]{@link module:Utils.memoize}\n * @category Util\n * @param {AsyncFunction} fn - the memoized function\n * @returns {AsyncFunction} a function that calls the original unmemoized function\n */\nfunction unmemoize(fn) {\n return function () {\n return (fn.unmemoized || fn).apply(null, arguments);\n };\n}\n\n/**\n * Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when\n * stopped, or an error occurs.\n *\n * @name whilst\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Function} test - synchronous truth test to perform before each\n * execution of `iteratee`. Invoked with ().\n * @param {AsyncFunction} iteratee - An async function which is called each time\n * `test` passes. Invoked with (callback).\n * @param {Function} [callback] - A callback which is called after the test\n * function has failed and repeated execution of `iteratee` has stopped. `callback`\n * will be passed an error and any arguments passed to the final `iteratee`'s\n * callback. Invoked with (err, [results]);\n * @returns undefined\n * @example\n *\n * var count = 0;\n * async.whilst(\n * function() { return count < 5; },\n * function(callback) {\n * count++;\n * setTimeout(function() {\n * callback(null, count);\n * }, 1000);\n * },\n * function (err, n) {\n * // 5 seconds have passed, n = 5\n * }\n * );\n */\nfunction whilst(test, iteratee, callback) {\n callback = onlyOnce(callback || noop);\n var _iteratee = wrapAsync(iteratee);\n if (!test()) return callback(null);\n var next = function(err/*, ...args*/) {\n if (err) return callback(err);\n if (test()) return _iteratee(next);\n var args = slice(arguments, 1);\n callback.apply(null, [null].concat(args));\n };\n _iteratee(next);\n}\n\n/**\n * Repeatedly call `iteratee` until `test` returns `true`. Calls `callback` when\n * stopped, or an error occurs. `callback` will be passed an error and any\n * arguments passed to the final `iteratee`'s callback.\n *\n * The inverse of [whilst]{@link module:ControlFlow.whilst}.\n *\n * @name until\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.whilst]{@link module:ControlFlow.whilst}\n * @category Control Flow\n * @param {Function} test - synchronous truth test to perform before each\n * execution of `iteratee`. Invoked with ().\n * @param {AsyncFunction} iteratee - An async function which is called each time\n * `test` fails. Invoked with (callback).\n * @param {Function} [callback] - A callback which is called after the test\n * function has passed and repeated execution of `iteratee` has stopped. `callback`\n * will be passed an error and any arguments passed to the final `iteratee`'s\n * callback. Invoked with (err, [results]);\n */\nfunction until(test, iteratee, callback) {\n whilst(function() {\n return !test.apply(this, arguments);\n }, iteratee, callback);\n}\n\n/**\n * Runs the `tasks` array of functions in series, each passing their results to\n * the next in the array. However, if any of the `tasks` pass an error to their\n * own callback, the next function is not executed, and the main `callback` is\n * immediately called with the error.\n *\n * @name waterfall\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array} tasks - An array of [async functions]{@link AsyncFunction}\n * to run.\n * Each function should complete with any number of `result` values.\n * The `result` values will be passed as arguments, in order, to the next task.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed. This will be passed the results of the last task's\n * callback. Invoked with (err, [results]).\n * @returns undefined\n * @example\n *\n * async.waterfall([\n * function(callback) {\n * callback(null, 'one', 'two');\n * },\n * function(arg1, arg2, callback) {\n * // arg1 now equals 'one' and arg2 now equals 'two'\n * callback(null, 'three');\n * },\n * function(arg1, callback) {\n * // arg1 now equals 'three'\n * callback(null, 'done');\n * }\n * ], function (err, result) {\n * // result now equals 'done'\n * });\n *\n * // Or, with named functions:\n * async.waterfall([\n * myFirstFunction,\n * mySecondFunction,\n * myLastFunction,\n * ], function (err, result) {\n * // result now equals 'done'\n * });\n * function myFirstFunction(callback) {\n * callback(null, 'one', 'two');\n * }\n * function mySecondFunction(arg1, arg2, callback) {\n * // arg1 now equals 'one' and arg2 now equals 'two'\n * callback(null, 'three');\n * }\n * function myLastFunction(arg1, callback) {\n * // arg1 now equals 'three'\n * callback(null, 'done');\n * }\n */\nvar waterfall = function(tasks, callback) {\n callback = once(callback || noop);\n if (!isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions'));\n if (!tasks.length) return callback();\n var taskIndex = 0;\n\n function nextTask(args) {\n var task = wrapAsync(tasks[taskIndex++]);\n args.push(onlyOnce(next));\n task.apply(null, args);\n }\n\n function next(err/*, ...args*/) {\n if (err || taskIndex === tasks.length) {\n return callback.apply(null, arguments);\n }\n nextTask(slice(arguments, 1));\n }\n\n nextTask([]);\n};\n\n/**\n * An \"async function\" in the context of Async is an asynchronous function with\n * a variable number of parameters, with the final parameter being a callback.\n * (`function (arg1, arg2, ..., callback) {}`)\n * The final callback is of the form `callback(err, results...)`, which must be\n * called once the function is completed. The callback should be called with a\n * Error as its first argument to signal that an error occurred.\n * Otherwise, if no error occurred, it should be called with `null` as the first\n * argument, and any additional `result` arguments that may apply, to signal\n * successful completion.\n * The callback must be called exactly once, ideally on a later tick of the\n * JavaScript event loop.\n *\n * This type of function is also referred to as a \"Node-style async function\",\n * or a \"continuation passing-style function\" (CPS). Most of the methods of this\n * library are themselves CPS/Node-style async functions, or functions that\n * return CPS/Node-style async functions.\n *\n * Wherever we accept a Node-style async function, we also directly accept an\n * [ES2017 `async` function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function}.\n * In this case, the `async` function will not be passed a final callback\n * argument, and any thrown error will be used as the `err` argument of the\n * implicit callback, and the return value will be used as the `result` value.\n * (i.e. a `rejected` of the returned Promise becomes the `err` callback\n * argument, and a `resolved` value becomes the `result`.)\n *\n * Note, due to JavaScript limitations, we can only detect native `async`\n * functions and not transpilied implementations.\n * Your environment must have `async`/`await` support for this to work.\n * (e.g. Node > v7.6, or a recent version of a modern browser).\n * If you are using `async` functions through a transpiler (e.g. Babel), you\n * must still wrap the function with [asyncify]{@link module:Utils.asyncify},\n * because the `async function` will be compiled to an ordinary function that\n * returns a promise.\n *\n * @typedef {Function} AsyncFunction\n * @static\n */\n\n/**\n * Async is a utility module which provides straight-forward, powerful functions\n * for working with asynchronous JavaScript. Although originally designed for\n * use with [Node.js](http://nodejs.org) and installable via\n * `npm install --save async`, it can also be used directly in the browser.\n * @module async\n * @see AsyncFunction\n */\n\n\n/**\n * A collection of `async` functions for manipulating collections, such as\n * arrays and objects.\n * @module Collections\n */\n\n/**\n * A collection of `async` functions for controlling the flow through a script.\n * @module ControlFlow\n */\n\n/**\n * A collection of `async` utility functions.\n * @module Utils\n */\n\nvar index = {\n apply: apply,\n applyEach: applyEach,\n applyEachSeries: applyEachSeries,\n asyncify: asyncify,\n auto: auto,\n autoInject: autoInject,\n cargo: cargo,\n compose: compose,\n concat: concat,\n concatLimit: concatLimit,\n concatSeries: concatSeries,\n constant: constant,\n detect: detect,\n detectLimit: detectLimit,\n detectSeries: detectSeries,\n dir: dir,\n doDuring: doDuring,\n doUntil: doUntil,\n doWhilst: doWhilst,\n during: during,\n each: eachLimit,\n eachLimit: eachLimit$1,\n eachOf: eachOf,\n eachOfLimit: eachOfLimit,\n eachOfSeries: eachOfSeries,\n eachSeries: eachSeries,\n ensureAsync: ensureAsync,\n every: every,\n everyLimit: everyLimit,\n everySeries: everySeries,\n filter: filter,\n filterLimit: filterLimit,\n filterSeries: filterSeries,\n forever: forever,\n groupBy: groupBy,\n groupByLimit: groupByLimit,\n groupBySeries: groupBySeries,\n log: log,\n map: map,\n mapLimit: mapLimit,\n mapSeries: mapSeries,\n mapValues: mapValues,\n mapValuesLimit: mapValuesLimit,\n mapValuesSeries: mapValuesSeries,\n memoize: memoize,\n nextTick: nextTick,\n parallel: parallelLimit,\n parallelLimit: parallelLimit$1,\n priorityQueue: priorityQueue,\n queue: queue$1,\n race: race,\n reduce: reduce,\n reduceRight: reduceRight,\n reflect: reflect,\n reflectAll: reflectAll,\n reject: reject,\n rejectLimit: rejectLimit,\n rejectSeries: rejectSeries,\n retry: retry,\n retryable: retryable,\n seq: seq,\n series: series,\n setImmediate: setImmediate$1,\n some: some,\n someLimit: someLimit,\n someSeries: someSeries,\n sortBy: sortBy,\n timeout: timeout,\n times: times,\n timesLimit: timeLimit,\n timesSeries: timesSeries,\n transform: transform,\n tryEach: tryEach,\n unmemoize: unmemoize,\n until: until,\n waterfall: waterfall,\n whilst: whilst,\n\n // aliases\n all: every,\n allLimit: everyLimit,\n allSeries: everySeries,\n any: some,\n anyLimit: someLimit,\n anySeries: someSeries,\n find: detect,\n findLimit: detectLimit,\n findSeries: detectSeries,\n forEach: eachLimit,\n forEachSeries: eachSeries,\n forEachLimit: eachLimit$1,\n forEachOf: eachOf,\n forEachOfSeries: eachOfSeries,\n forEachOfLimit: eachOfLimit,\n inject: reduce,\n foldl: reduce,\n foldr: reduceRight,\n select: filter,\n selectLimit: filterLimit,\n selectSeries: filterSeries,\n wrapSync: asyncify\n};\n\nexports['default'] = index;\nexports.apply = apply;\nexports.applyEach = applyEach;\nexports.applyEachSeries = applyEachSeries;\nexports.asyncify = asyncify;\nexports.auto = auto;\nexports.autoInject = autoInject;\nexports.cargo = cargo;\nexports.compose = compose;\nexports.concat = concat;\nexports.concatLimit = concatLimit;\nexports.concatSeries = concatSeries;\nexports.constant = constant;\nexports.detect = detect;\nexports.detectLimit = detectLimit;\nexports.detectSeries = detectSeries;\nexports.dir = dir;\nexports.doDuring = doDuring;\nexports.doUntil = doUntil;\nexports.doWhilst = doWhilst;\nexports.during = during;\nexports.each = eachLimit;\nexports.eachLimit = eachLimit$1;\nexports.eachOf = eachOf;\nexports.eachOfLimit = eachOfLimit;\nexports.eachOfSeries = eachOfSeries;\nexports.eachSeries = eachSeries;\nexports.ensureAsync = ensureAsync;\nexports.every = every;\nexports.everyLimit = everyLimit;\nexports.everySeries = everySeries;\nexports.filter = filter;\nexports.filterLimit = filterLimit;\nexports.filterSeries = filterSeries;\nexports.forever = forever;\nexports.groupBy = groupBy;\nexports.groupByLimit = groupByLimit;\nexports.groupBySeries = groupBySeries;\nexports.log = log;\nexports.map = map;\nexports.mapLimit = mapLimit;\nexports.mapSeries = mapSeries;\nexports.mapValues = mapValues;\nexports.mapValuesLimit = mapValuesLimit;\nexports.mapValuesSeries = mapValuesSeries;\nexports.memoize = memoize;\nexports.nextTick = nextTick;\nexports.parallel = parallelLimit;\nexports.parallelLimit = parallelLimit$1;\nexports.priorityQueue = priorityQueue;\nexports.queue = queue$1;\nexports.race = race;\nexports.reduce = reduce;\nexports.reduceRight = reduceRight;\nexports.reflect = reflect;\nexports.reflectAll = reflectAll;\nexports.reject = reject;\nexports.rejectLimit = rejectLimit;\nexports.rejectSeries = rejectSeries;\nexports.retry = retry;\nexports.retryable = retryable;\nexports.seq = seq;\nexports.series = series;\nexports.setImmediate = setImmediate$1;\nexports.some = some;\nexports.someLimit = someLimit;\nexports.someSeries = someSeries;\nexports.sortBy = sortBy;\nexports.timeout = timeout;\nexports.times = times;\nexports.timesLimit = timeLimit;\nexports.timesSeries = timesSeries;\nexports.transform = transform;\nexports.tryEach = tryEach;\nexports.unmemoize = unmemoize;\nexports.until = until;\nexports.waterfall = waterfall;\nexports.whilst = whilst;\nexports.all = every;\nexports.allLimit = everyLimit;\nexports.allSeries = everySeries;\nexports.any = some;\nexports.anyLimit = someLimit;\nexports.anySeries = someSeries;\nexports.find = detect;\nexports.findLimit = detectLimit;\nexports.findSeries = detectSeries;\nexports.forEach = eachLimit;\nexports.forEachSeries = eachSeries;\nexports.forEachLimit = eachLimit$1;\nexports.forEachOf = eachOf;\nexports.forEachOfSeries = eachOfSeries;\nexports.forEachOfLimit = eachOfLimit;\nexports.inject = reduce;\nexports.foldl = reduce;\nexports.foldr = reduceRight;\nexports.select = filter;\nexports.selectLimit = filterLimit;\nexports.selectSeries = filterSeries;\nexports.wrapSync = asyncify;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","\n/*!\n * Copyright 2010 LearnBoost \n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Module dependencies.\n */\n\nvar crypto = require('crypto')\n , parse = require('url').parse\n ;\n\n/**\n * Valid keys.\n */\n\nvar keys = \n [ 'acl'\n , 'location'\n , 'logging'\n , 'notification'\n , 'partNumber'\n , 'policy'\n , 'requestPayment'\n , 'torrent'\n , 'uploadId'\n , 'uploads'\n , 'versionId'\n , 'versioning'\n , 'versions'\n , 'website'\n ]\n\n/**\n * Return an \"Authorization\" header value with the given `options`\n * in the form of \"AWS :\"\n *\n * @param {Object} options\n * @return {String}\n * @api private\n */\n\nfunction authorization (options) {\n return 'AWS ' + options.key + ':' + sign(options)\n}\n\nmodule.exports = authorization\nmodule.exports.authorization = authorization\n\n/**\n * Simple HMAC-SHA1 Wrapper\n *\n * @param {Object} options\n * @return {String}\n * @api private\n */ \n\nfunction hmacSha1 (options) {\n return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64')\n}\n\nmodule.exports.hmacSha1 = hmacSha1\n\n/**\n * Create a base64 sha1 HMAC for `options`. \n * \n * @param {Object} options\n * @return {String}\n * @api private\n */\n\nfunction sign (options) {\n options.message = stringToSign(options)\n return hmacSha1(options)\n}\nmodule.exports.sign = sign\n\n/**\n * Create a base64 sha1 HMAC for `options`. \n *\n * Specifically to be used with S3 presigned URLs\n * \n * @param {Object} options\n * @return {String}\n * @api private\n */\n\nfunction signQuery (options) {\n options.message = queryStringToSign(options)\n return hmacSha1(options)\n}\nmodule.exports.signQuery= signQuery\n\n/**\n * Return a string for sign() with the given `options`.\n *\n * Spec:\n * \n * \\n\n * \\n\n * \\n\n * \\n\n * [headers\\n]\n * \n *\n * @param {Object} options\n * @return {String}\n * @api private\n */\n\nfunction stringToSign (options) {\n var headers = options.amazonHeaders || ''\n if (headers) headers += '\\n'\n var r = \n [ options.verb\n , options.md5\n , options.contentType\n , options.date ? options.date.toUTCString() : ''\n , headers + options.resource\n ]\n return r.join('\\n')\n}\nmodule.exports.stringToSign = stringToSign\n\n/**\n * Return a string for sign() with the given `options`, but is meant exclusively\n * for S3 presigned URLs\n *\n * Spec:\n * \n * \\n\n * \n *\n * @param {Object} options\n * @return {String}\n * @api private\n */\n\nfunction queryStringToSign (options){\n return 'GET\\n\\n\\n' + options.date + '\\n' + options.resource\n}\nmodule.exports.queryStringToSign = queryStringToSign\n\n/**\n * Perform the following:\n *\n * - ignore non-amazon headers\n * - lowercase fields\n * - sort lexicographically\n * - trim whitespace between \":\"\n * - join with newline\n *\n * @param {Object} headers\n * @return {String}\n * @api private\n */\n\nfunction canonicalizeHeaders (headers) {\n var buf = []\n , fields = Object.keys(headers)\n ;\n for (var i = 0, len = fields.length; i < len; ++i) {\n var field = fields[i]\n , val = headers[field]\n , field = field.toLowerCase()\n ;\n if (0 !== field.indexOf('x-amz')) continue\n buf.push(field + ':' + val)\n }\n return buf.sort().join('\\n')\n}\nmodule.exports.canonicalizeHeaders = canonicalizeHeaders\n\n/**\n * Perform the following:\n *\n * - ignore non sub-resources\n * - sort lexicographically\n *\n * @param {String} resource\n * @return {String}\n * @api private\n */\n\nfunction canonicalizeResource (resource) {\n var url = parse(resource, true)\n , path = url.pathname\n , buf = []\n ;\n\n Object.keys(url.query).forEach(function(key){\n if (!~keys.indexOf(key)) return\n var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key])\n buf.push(key + val)\n })\n\n return path + (buf.length ? '?' + buf.sort().join('&') : '')\n}\nmodule.exports.canonicalizeResource = canonicalizeResource\n","var aws4 = exports,\n url = require('url'),\n querystring = require('querystring'),\n crypto = require('crypto'),\n lru = require('./lru'),\n credentialsCache = lru(1000)\n\n// http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html\n\nfunction hmac(key, string, encoding) {\n return crypto.createHmac('sha256', key).update(string, 'utf8').digest(encoding)\n}\n\nfunction hash(string, encoding) {\n return crypto.createHash('sha256').update(string, 'utf8').digest(encoding)\n}\n\n// This function assumes the string has already been percent encoded\nfunction encodeRfc3986(urlEncodedString) {\n return urlEncodedString.replace(/[!'()*]/g, function(c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\nfunction encodeRfc3986Full(str) {\n return encodeRfc3986(encodeURIComponent(str))\n}\n\n// A bit of a combination of:\n// https://github.com/aws/aws-sdk-java-v2/blob/dc695de6ab49ad03934e1b02e7263abbd2354be0/core/auth/src/main/java/software/amazon/awssdk/auth/signer/internal/AbstractAws4Signer.java#L59\n// https://github.com/aws/aws-sdk-js/blob/18cb7e5b463b46239f9fdd4a65e2ff8c81831e8f/lib/signers/v4.js#L191-L199\n// https://github.com/mhart/aws4fetch/blob/b3aed16b6f17384cf36ea33bcba3c1e9f3bdfefd/src/main.js#L25-L34\nvar HEADERS_TO_IGNORE = {\n 'authorization': true,\n 'connection': true,\n 'x-amzn-trace-id': true,\n 'user-agent': true,\n 'expect': true,\n 'presigned-expires': true,\n 'range': true,\n}\n\n// request: { path | body, [host], [method], [headers], [service], [region] }\n// credentials: { accessKeyId, secretAccessKey, [sessionToken] }\nfunction RequestSigner(request, credentials) {\n\n if (typeof request === 'string') request = url.parse(request)\n\n var headers = request.headers = (request.headers || {}),\n hostParts = (!this.service || !this.region) && this.matchHost(request.hostname || request.host || headers.Host || headers.host)\n\n this.request = request\n this.credentials = credentials || this.defaultCredentials()\n\n this.service = request.service || hostParts[0] || ''\n this.region = request.region || hostParts[1] || 'us-east-1'\n\n // SES uses a different domain from the service name\n if (this.service === 'email') this.service = 'ses'\n\n if (!request.method && request.body)\n request.method = 'POST'\n\n if (!headers.Host && !headers.host) {\n headers.Host = request.hostname || request.host || this.createHost()\n\n // If a port is specified explicitly, use it as is\n if (request.port)\n headers.Host += ':' + request.port\n }\n if (!request.hostname && !request.host)\n request.hostname = headers.Host || headers.host\n\n this.isCodeCommitGit = this.service === 'codecommit' && request.method === 'GIT'\n\n this.extraHeadersToIgnore = request.extraHeadersToIgnore || Object.create(null)\n this.extraHeadersToInclude = request.extraHeadersToInclude || Object.create(null)\n}\n\nRequestSigner.prototype.matchHost = function(host) {\n var match = (host || '').match(/([^\\.]+)\\.(?:([^\\.]*)\\.)?amazonaws\\.com(\\.cn)?$/)\n var hostParts = (match || []).slice(1, 3)\n\n // ES's hostParts are sometimes the other way round, if the value that is expected\n // to be region equals ‘es’ switch them back\n // e.g. search-cluster-name-aaaa00aaaa0aaa0aaaaaaa0aaa.us-east-1.es.amazonaws.com\n if (hostParts[1] === 'es' || hostParts[1] === 'aoss')\n hostParts = hostParts.reverse()\n\n if (hostParts[1] == 's3') {\n hostParts[0] = 's3'\n hostParts[1] = 'us-east-1'\n } else {\n for (var i = 0; i < 2; i++) {\n if (/^s3-/.test(hostParts[i])) {\n hostParts[1] = hostParts[i].slice(3)\n hostParts[0] = 's3'\n break\n }\n }\n }\n\n return hostParts\n}\n\n// http://docs.aws.amazon.com/general/latest/gr/rande.html\nRequestSigner.prototype.isSingleRegion = function() {\n // Special case for S3 and SimpleDB in us-east-1\n if (['s3', 'sdb'].indexOf(this.service) >= 0 && this.region === 'us-east-1') return true\n\n return ['cloudfront', 'ls', 'route53', 'iam', 'importexport', 'sts']\n .indexOf(this.service) >= 0\n}\n\nRequestSigner.prototype.createHost = function() {\n var region = this.isSingleRegion() ? '' : '.' + this.region,\n subdomain = this.service === 'ses' ? 'email' : this.service\n return subdomain + region + '.amazonaws.com'\n}\n\nRequestSigner.prototype.prepareRequest = function() {\n this.parsePath()\n\n var request = this.request, headers = request.headers, query\n\n if (request.signQuery) {\n\n this.parsedPath.query = query = this.parsedPath.query || {}\n\n if (this.credentials.sessionToken)\n query['X-Amz-Security-Token'] = this.credentials.sessionToken\n\n if (this.service === 's3' && !query['X-Amz-Expires'])\n query['X-Amz-Expires'] = 86400\n\n if (query['X-Amz-Date'])\n this.datetime = query['X-Amz-Date']\n else\n query['X-Amz-Date'] = this.getDateTime()\n\n query['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256'\n query['X-Amz-Credential'] = this.credentials.accessKeyId + '/' + this.credentialString()\n query['X-Amz-SignedHeaders'] = this.signedHeaders()\n\n } else {\n\n if (!request.doNotModifyHeaders && !this.isCodeCommitGit) {\n if (request.body && !headers['Content-Type'] && !headers['content-type'])\n headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8'\n\n if (request.body && !headers['Content-Length'] && !headers['content-length'])\n headers['Content-Length'] = Buffer.byteLength(request.body)\n\n if (this.credentials.sessionToken && !headers['X-Amz-Security-Token'] && !headers['x-amz-security-token'])\n headers['X-Amz-Security-Token'] = this.credentials.sessionToken\n\n if (this.service === 's3' && !headers['X-Amz-Content-Sha256'] && !headers['x-amz-content-sha256'])\n headers['X-Amz-Content-Sha256'] = hash(this.request.body || '', 'hex')\n\n if (headers['X-Amz-Date'] || headers['x-amz-date'])\n this.datetime = headers['X-Amz-Date'] || headers['x-amz-date']\n else\n headers['X-Amz-Date'] = this.getDateTime()\n }\n\n delete headers.Authorization\n delete headers.authorization\n }\n}\n\nRequestSigner.prototype.sign = function() {\n if (!this.parsedPath) this.prepareRequest()\n\n if (this.request.signQuery) {\n this.parsedPath.query['X-Amz-Signature'] = this.signature()\n } else {\n this.request.headers.Authorization = this.authHeader()\n }\n\n this.request.path = this.formatPath()\n\n return this.request\n}\n\nRequestSigner.prototype.getDateTime = function() {\n if (!this.datetime) {\n var headers = this.request.headers,\n date = new Date(headers.Date || headers.date || new Date)\n\n this.datetime = date.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '')\n\n // Remove the trailing 'Z' on the timestamp string for CodeCommit git access\n if (this.isCodeCommitGit) this.datetime = this.datetime.slice(0, -1)\n }\n return this.datetime\n}\n\nRequestSigner.prototype.getDate = function() {\n return this.getDateTime().substr(0, 8)\n}\n\nRequestSigner.prototype.authHeader = function() {\n return [\n 'AWS4-HMAC-SHA256 Credential=' + this.credentials.accessKeyId + '/' + this.credentialString(),\n 'SignedHeaders=' + this.signedHeaders(),\n 'Signature=' + this.signature(),\n ].join(', ')\n}\n\nRequestSigner.prototype.signature = function() {\n var date = this.getDate(),\n cacheKey = [this.credentials.secretAccessKey, date, this.region, this.service].join(),\n kDate, kRegion, kService, kCredentials = credentialsCache.get(cacheKey)\n if (!kCredentials) {\n kDate = hmac('AWS4' + this.credentials.secretAccessKey, date)\n kRegion = hmac(kDate, this.region)\n kService = hmac(kRegion, this.service)\n kCredentials = hmac(kService, 'aws4_request')\n credentialsCache.set(cacheKey, kCredentials)\n }\n return hmac(kCredentials, this.stringToSign(), 'hex')\n}\n\nRequestSigner.prototype.stringToSign = function() {\n return [\n 'AWS4-HMAC-SHA256',\n this.getDateTime(),\n this.credentialString(),\n hash(this.canonicalString(), 'hex'),\n ].join('\\n')\n}\n\nRequestSigner.prototype.canonicalString = function() {\n if (!this.parsedPath) this.prepareRequest()\n\n var pathStr = this.parsedPath.path,\n query = this.parsedPath.query,\n headers = this.request.headers,\n queryStr = '',\n normalizePath = this.service !== 's3',\n decodePath = this.service === 's3' || this.request.doNotEncodePath,\n decodeSlashesInPath = this.service === 's3',\n firstValOnly = this.service === 's3',\n bodyHash\n\n if (this.service === 's3' && this.request.signQuery) {\n bodyHash = 'UNSIGNED-PAYLOAD'\n } else if (this.isCodeCommitGit) {\n bodyHash = ''\n } else {\n bodyHash = headers['X-Amz-Content-Sha256'] || headers['x-amz-content-sha256'] ||\n hash(this.request.body || '', 'hex')\n }\n\n if (query) {\n var reducedQuery = Object.keys(query).reduce(function(obj, key) {\n if (!key) return obj\n obj[encodeRfc3986Full(key)] = !Array.isArray(query[key]) ? query[key] :\n (firstValOnly ? query[key][0] : query[key])\n return obj\n }, {})\n var encodedQueryPieces = []\n Object.keys(reducedQuery).sort().forEach(function(key) {\n if (!Array.isArray(reducedQuery[key])) {\n encodedQueryPieces.push(key + '=' + encodeRfc3986Full(reducedQuery[key]))\n } else {\n reducedQuery[key].map(encodeRfc3986Full).sort()\n .forEach(function(val) { encodedQueryPieces.push(key + '=' + val) })\n }\n })\n queryStr = encodedQueryPieces.join('&')\n }\n if (pathStr !== '/') {\n if (normalizePath) pathStr = pathStr.replace(/\\/{2,}/g, '/')\n pathStr = pathStr.split('/').reduce(function(path, piece) {\n if (normalizePath && piece === '..') {\n path.pop()\n } else if (!normalizePath || piece !== '.') {\n if (decodePath) piece = decodeURIComponent(piece.replace(/\\+/g, ' '))\n path.push(encodeRfc3986Full(piece))\n }\n return path\n }, []).join('/')\n if (pathStr[0] !== '/') pathStr = '/' + pathStr\n if (decodeSlashesInPath) pathStr = pathStr.replace(/%2F/g, '/')\n }\n\n return [\n this.request.method || 'GET',\n pathStr,\n queryStr,\n this.canonicalHeaders() + '\\n',\n this.signedHeaders(),\n bodyHash,\n ].join('\\n')\n}\n\nRequestSigner.prototype.canonicalHeaders = function() {\n var headers = this.request.headers\n function trimAll(header) {\n return header.toString().trim().replace(/\\s+/g, ' ')\n }\n return Object.keys(headers)\n .filter(function(key) { return HEADERS_TO_IGNORE[key.toLowerCase()] == null })\n .sort(function(a, b) { return a.toLowerCase() < b.toLowerCase() ? -1 : 1 })\n .map(function(key) { return key.toLowerCase() + ':' + trimAll(headers[key]) })\n .join('\\n')\n}\n\nRequestSigner.prototype.signedHeaders = function() {\n var extraHeadersToInclude = this.extraHeadersToInclude,\n extraHeadersToIgnore = this.extraHeadersToIgnore\n return Object.keys(this.request.headers)\n .map(function(key) { return key.toLowerCase() })\n .filter(function(key) {\n return extraHeadersToInclude[key] ||\n (HEADERS_TO_IGNORE[key] == null && !extraHeadersToIgnore[key])\n })\n .sort()\n .join(';')\n}\n\nRequestSigner.prototype.credentialString = function() {\n return [\n this.getDate(),\n this.region,\n this.service,\n 'aws4_request',\n ].join('/')\n}\n\nRequestSigner.prototype.defaultCredentials = function() {\n var env = process.env\n return {\n accessKeyId: env.AWS_ACCESS_KEY_ID || env.AWS_ACCESS_KEY,\n secretAccessKey: env.AWS_SECRET_ACCESS_KEY || env.AWS_SECRET_KEY,\n sessionToken: env.AWS_SESSION_TOKEN,\n }\n}\n\nRequestSigner.prototype.parsePath = function() {\n var path = this.request.path || '/'\n\n // S3 doesn't always encode characters > 127 correctly and\n // all services don't encode characters > 255 correctly\n // So if there are non-reserved chars (and it's not already all % encoded), just encode them all\n if (/[^0-9A-Za-z;,/?:@&=+$\\-_.!~*'()#%]/.test(path)) {\n path = encodeURI(decodeURI(path))\n }\n\n var queryIx = path.indexOf('?'),\n query = null\n\n if (queryIx >= 0) {\n query = querystring.parse(path.slice(queryIx + 1))\n path = path.slice(0, queryIx)\n }\n\n this.parsedPath = {\n path: path,\n query: query,\n }\n}\n\nRequestSigner.prototype.formatPath = function() {\n var path = this.parsedPath.path,\n query = this.parsedPath.query\n\n if (!query) return path\n\n // Services don't support empty query string keys\n if (query[''] != null) delete query['']\n\n return path + '?' + encodeRfc3986(querystring.stringify(query))\n}\n\naws4.RequestSigner = RequestSigner\n\naws4.sign = function(request, credentials) {\n return new RequestSigner(request, credentials).sign()\n}\n","module.exports = function(size) {\n return new LruCache(size)\n}\n\nfunction LruCache(size) {\n this.capacity = size | 0\n this.map = Object.create(null)\n this.list = new DoublyLinkedList()\n}\n\nLruCache.prototype.get = function(key) {\n var node = this.map[key]\n if (node == null) return undefined\n this.used(node)\n return node.val\n}\n\nLruCache.prototype.set = function(key, val) {\n var node = this.map[key]\n if (node != null) {\n node.val = val\n } else {\n if (!this.capacity) this.prune()\n if (!this.capacity) return false\n node = new DoublyLinkedNode(key, val)\n this.map[key] = node\n this.capacity--\n }\n this.used(node)\n return true\n}\n\nLruCache.prototype.used = function(node) {\n this.list.moveToFront(node)\n}\n\nLruCache.prototype.prune = function() {\n var node = this.list.pop()\n if (node != null) {\n delete this.map[node.key]\n this.capacity++\n }\n}\n\n\nfunction DoublyLinkedList() {\n this.firstNode = null\n this.lastNode = null\n}\n\nDoublyLinkedList.prototype.moveToFront = function(node) {\n if (this.firstNode == node) return\n\n this.remove(node)\n\n if (this.firstNode == null) {\n this.firstNode = node\n this.lastNode = node\n node.prev = null\n node.next = null\n } else {\n node.prev = null\n node.next = this.firstNode\n node.next.prev = node\n this.firstNode = node\n }\n}\n\nDoublyLinkedList.prototype.pop = function() {\n var lastNode = this.lastNode\n if (lastNode != null) {\n this.remove(lastNode)\n }\n return lastNode\n}\n\nDoublyLinkedList.prototype.remove = function(node) {\n if (this.firstNode == node) {\n this.firstNode = node.next\n } else if (node.prev != null) {\n node.prev.next = node.next\n }\n if (this.lastNode == node) {\n this.lastNode = node.prev\n } else if (node.next != null) {\n node.next.prev = node.prev\n }\n}\n\n\nfunction DoublyLinkedNode(key, val) {\n this.key = key\n this.val = val\n this.prev = null\n this.next = null\n}\n","\nvar monero_javascript = (() => {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(monero_javascript) {\n monero_javascript = monero_javascript || {};\n\nvar Module=typeof monero_javascript!=\"undefined\"?monero_javascript:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err(\"exiting due to exception: \"+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}requireNodeFS=(()=>{if(!nodePath){fs=require(\"fs\");nodePath=require(\"path\")}});read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath[\"normalize\"](filename);return fs.readFileSync(filename,binary?undefined:\"utf8\")};readBinary=(filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret});readAsync=((filename,onload,onerror)=>{requireNodeFS();filename=nodePath[\"normalize\"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"unhandledRejection\",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process[\"exitCode\"]=status;throw toThrow}logExceptionOnExit(toThrow);process[\"exit\"](status)});Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText});if(ENVIRONMENT_IS_WORKER){readBinary=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)})}readAsync=((url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=(()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()});xhr.onerror=onerror;xhr.send(null)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];function uleb128Encode(n){if(n<128){return[n]}return[n%128|128,n>>7]}function convertJsFunctionToWasm(func,sig){if(typeof WebAssembly.Function==\"function\"){var typeNames={\"i\":\"i32\",\"j\":\"i64\",\"f\":\"f32\",\"d\":\"f64\"};var type={parameters:[],results:sig[0]==\"v\"?[]:[typeNames[sig[0]]]};for(var i=1;i{tempRet0=value};var getTempRet0=()=>tempRet0;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!=\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){{if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}}what=\"Aborted(\"+what+\")\";err(what);ABORT=true;EXITSTATUS=1;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith(\"file://\")}var wasmBinaryFile;wasmBinaryFile=\"monero_wallet_full.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"vb\"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"yb\"];addOnInit(Module[\"asm\"][\"wb\"]);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiationResult(result){receiveInstance(result[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function js_send_binary_request(uri,username,password,reject_unauthorized_fn_id,method,body,body_length,timeout){const monerojs=require(\"../index\");const HttpClient=monerojs.HttpClient;const LibraryUtils=monerojs.LibraryUtils;const GenUtils=monerojs.GenUtils;return Asyncify.handleSleep(function(wakeUp){LibraryUtils.loadFullModule().then(module=>{let ptr=body;let length=body_length;let view=new Uint8Array(length);for(let i=0;i{let respBin=resp.body;if(!(respBin instanceof Uint8Array)){console.error(\"resp is not uint8array\");console.error(respBin)}let nDataBytes=respBin.length*respBin.BYTES_PER_ELEMENT;let bodyPtr=Module._malloc(nDataBytes);let heap=new Uint8Array(Module.HEAPU8.buffer,bodyPtr,nDataBytes);heap.set(new Uint8Array(respBin.buffer,respBin.byteOffset,nDataBytes));let respContainer={code:resp.statusCode,message:resp.statusText,headers:resp.headers,bodyPtr:bodyPtr,bodyLength:respBin.length};let respStr=JSON.stringify(respContainer);let lengthBytes=Module.lengthBytesUTF8(respStr)+1;let ptr=Module._malloc(lengthBytes);Module.stringToUTF8(respStr,ptr,lengthBytes);wakeUpCalled=true;wakeUp(ptr)}).catch(err=>{if(wakeUpCalled){console.error(\"Error caught in JS after previously calling wakeUp(): \"+err);throw new Error(\"Error caught in JS after previously calling wakeUp(): \"+err)}let str=err.message?err.message:\"\"+err;str=JSON.stringify({error:str});let lengthBytes=Module.lengthBytesUTF8(str)+1;let ptr=Module._malloc(lengthBytes);Module.stringToUTF8(str,ptr,lengthBytes);wakeUpCalled=true;wakeUp(ptr)})}).catch(err=>{throw new Error(\"Could not load full wasm module\")})})}function js_send_json_request(uri,username,password,reject_unauthorized_fn_id,method,body,timeout){const monerojs=require(\"../index\");const HttpClient=monerojs.HttpClient;const LibraryUtils=monerojs.LibraryUtils;const GenUtils=monerojs.GenUtils;return Asyncify.handleSleep(function(wakeUp){let wakeUpCalled=false;HttpClient.request({method:UTF8ToString(method),uri:UTF8ToString(uri),username:UTF8ToString(username),password:UTF8ToString(password),body:UTF8ToString(body),resolveWithFullResponse:true,rejectUnauthorized:LibraryUtils.isRejectUnauthorized(UTF8ToString(reject_unauthorized_fn_id)),requestApi:GenUtils.isFirefox()?\"xhr\":\"fetch\"}).then(resp=>{let respContainer={code:resp.statusCode,message:resp.statusText,body:resp.body,headers:resp.headers};let respStr=JSON.stringify(respContainer);let lengthBytes=Module.lengthBytesUTF8(respStr)+1;let ptr=Module._malloc(lengthBytes);Module.stringToUTF8(respStr,ptr,lengthBytes);wakeUpCalled=true;wakeUp(ptr)}).catch(err=>{if(wakeUpCalled){console.error(\"Error caught in JS after previously calling wakeUp(): \"+err);throw new Error(\"Error caught in JS after previously calling wakeUp(): \"+err)}let str=err.message?err.message:\"\"+err;str=JSON.stringify({error:str});let lengthBytes=Module.lengthBytesUTF8(str)+1;let ptr=Module._malloc(lengthBytes);Module.stringToUTF8(str,ptr,lengthBytes);wakeUpCalled=true;wakeUp(ptr)})})}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func==\"number\"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function handleException(e){if(e instanceof ExitStatus||e==\"unwind\"){return EXITSTATUS}quit_(1,e)}function setWasmTableEntry(idx,func){wasmTable.set(idx,func)}function _BIO_free(){err(\"missing function: BIO_free\");abort(-1)}function _BIO_new_mem_buf(){err(\"missing function: BIO_new_mem_buf\");abort(-1)}function _CONF_modules_unload(){err(\"missing function: CONF_modules_unload\");abort(-1)}function _CRYPTO_free(){err(\"missing function: CRYPTO_free\");abort(-1)}function _ERR_reason_error_string(){err(\"missing function: ERR_reason_error_string\");abort(-1)}function _PEM_read_bio(){err(\"missing function: PEM_read_bio\");abort(-1)}function _PEM_write(){err(\"missing function: PEM_write\");abort(-1)}function __ZN2hw6trezor12register_allEv(){err(\"missing function: _ZN2hw6trezor12register_allEv\");abort(-1)}function __ZN4epee13file_io_utils19load_file_to_stringERKNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERS7_m(){err(\"missing function: _ZN4epee13file_io_utils19load_file_to_stringERKNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERS7_m\");abort(-1)}function __ZN4epee13file_io_utils19save_string_to_fileERKNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEES9_(){err(\"missing function: _ZN4epee13file_io_utils19save_string_to_fileERKNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEES9_\");abort(-1)}function __ZN5boost10filesystem6detail12current_pathEPNS_6system10error_codeE(){err(\"missing function: _ZN5boost10filesystem6detail12current_pathEPNS_6system10error_codeE\");abort(-1)}function __ZN5boost10filesystem6detail16weakly_canonicalERKNS0_4pathEPNS_6system10error_codeE(){err(\"missing function: _ZN5boost10filesystem6detail16weakly_canonicalERKNS0_4pathEPNS_6system10error_codeE\");abort(-1)}function __ZN5boost10filesystem6detail18create_directoriesERKNS0_4pathEPNS_6system10error_codeE(){err(\"missing function: _ZN5boost10filesystem6detail18create_directoriesERKNS0_4pathEPNS_6system10error_codeE\");abort(-1)}function __ZN5boost10filesystem6detail5spaceERKNS0_4pathEPNS_6system10error_codeE(){err(\"missing function: _ZN5boost10filesystem6detail5spaceERKNS0_4pathEPNS_6system10error_codeE\");abort(-1)}function __ZN5boost10filesystem6detail6removeERKNS0_4pathEPNS_6system10error_codeE(){err(\"missing function: _ZN5boost10filesystem6detail6removeERKNS0_4pathEPNS_6system10error_codeE\");abort(-1)}function __ZN5boost10filesystem6detail6statusERKNS0_4pathEPNS_6system10error_codeE(){err(\"missing function: _ZN5boost10filesystem6detail6statusERKNS0_4pathEPNS_6system10error_codeE\");abort(-1)}function __ZN5boost10filesystem6detail9canonicalERKNS0_4pathES4_PNS_6system10error_codeE(){err(\"missing function: _ZN5boost10filesystem6detail9canonicalERKNS0_4pathES4_PNS_6system10error_codeE\");abort(-1)}function __ZN5boost10filesystem6detail9copy_fileERKNS0_4pathES4_jPNS_6system10error_codeE(){err(\"missing function: _ZN5boost10filesystem6detail9copy_fileERKNS0_4pathES4_jPNS_6system10error_codeE\");abort(-1)}function __ZNK5boost10filesystem4path11parent_pathEv(){err(\"missing function: _ZNK5boost10filesystem4path11parent_pathEv\");abort(-1)}function __ZNK5tools6Notify6notifyEPKcS2_z(){err(\"missing function: _ZNK5tools6Notify6notifyEPKcS2_z\");abort(-1)}function ___assert_fail(condition,filename,line,func){abort(\"Assertion failed: \"+UTF8ToString(condition)+\", at: \"+[filename?UTF8ToString(filename):\"unknown filename\",line,func?UTF8ToString(func):\"unknown function\"])}function ___cxa_allocate_exception(size){return _malloc(size+24)+24}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);exception_addRef(info);return info.get_exception_ptr()}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}function ___cxa_free_exception(ptr){return _free(new ExceptionInfo(ptr).ptr)}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_decrement_exception_refcount(ptr){if(!ptr)return;exception_decRef(new ExceptionInfo(ptr))}var exceptionLast=0;function ___cxa_end_catch(){_setThrew(0);var info=exceptionCaught.pop();exception_decRef(info);exceptionLast=0}function ___resumeException(ptr){if(!exceptionLast){exceptionLast=ptr}throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path===\"/\")return\"/\";path=PATH.normalize(path);path=path.replace(/\\/$/,\"\");var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:(l,r)=>{return PATH.normalize(l+\"/\"+r)}};function getRandomDevice(){if(typeof crypto==\"object\"&&typeof crypto[\"getRandomValues\"]==\"function\"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require(\"crypto\");return function(){return crypto_module[\"randomBytes\"](1)[0]}}catch(e){}}return function(){abort(\"randomDevice\")}}var PATH_FS={resolve:function(){var resolvedPath=\"\",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString(\"utf-8\")}else{result=null}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else if(typeof readline==\"function\"){result=readline();if(result!==null){result+=\"\\n\"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,\"/\",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),false);var current=FS.root;var current_path=\"/\";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?mount+\"/\"+path:mount+path}path=path?node.name+\"/\"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{\"r\":0,\"r+\":2,\"w\":577,\"w+\":578,\"a\":1089,\"a+\":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags==\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags},flagsToPermissionString:flag=>{var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get function(){return this.shared.position},set:function(val){this.shared.position=val}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(\"warning: \"+FS.syncFSRequests+\" FS.syncfs operations in flight at once, probably just doing extra work\")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split(\"/\");var d=\"\";for(var i=0;i{if(typeof dev==\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===\"\"){throw new FS.ErrnoError(44)}flags=typeof flags==\"string\"?FS.modeStringToFlags(flags):flags;mode=typeof mode==\"undefined\"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error('Invalid encoding type \"'+opts.encoding+'\"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices:()=>{FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice(\"/dev\",\"random\",random_device);FS.createDevice(\"/dev\",\"urandom\",random_device);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories:()=>{FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount:()=>{var node=FS.createNode(proc_self,\"fd\",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},\"/proc/self/fd\")},createStandardStreams:()=>{if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message=\"FS error\"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"\"})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent==\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent==\"string\"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||\"\",true)}};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(\"cp \"+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return\"EM_FS_\"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out(\"creating db\");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],\"readwrite\");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],\"readonly\")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_fdatasync(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_ftruncate64(fd,length_low,length_high){try{var length=length_high*4294967296+(length_low>>>0);FS.ftruncate(fd,length);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort(\"bad ioctl syscall \"+op)}}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]===\"/\")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret=\"\";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return\"_unknown\"}name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return\"_\"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return function(){null;return body.apply(this,arguments)}}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+\": \"+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function registerType(rawType,registeredInstance,options={}){if(!(\"argPackAdvance\"in registeredInstance)){throw new TypeError(\"registerType registeredInstance requires argPackAdvance\")}var name=registeredInstance.name;if(!rawType){throwBindingError('type \"'+name+'\" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(\"Cannot register type '\"+name+\"' twice\")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(wt){return!!wt},\"toWireType\":function(destructors,o){return o?trueValue:falseValue},\"argPackAdvance\":8,\"readValueFromPointer\":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError(\"Unknown boolean type size: \"+name)}return this[\"fromWireType\"](heap[pointer>>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function simpleReadValueFromPointer(pointer){return this[\"fromWireType\"](HEAPU32[pointer>>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},\"toWireType\":function(destructors,value){return Emval.toHandle(value)},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this[\"fromWireType\"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this[\"fromWireType\"](HEAPF64[pointer>>3])};default:throw new TypeError(\"Unknown float type: \"+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(value){return value},\"toWireType\":function(destructors,value){return value},\"argPackAdvance\":8,\"readValueFromPointer\":floatReadValueFromPointer(name,shift),destructorFunction:null})}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original==\"function\"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module[\"_asyncify_stop_unwind\"]);if(typeof Fibers!=\"undefined\"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module[\"asm\"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module[\"_asyncify_start_rewind\"](Asyncify.currData));if(typeof Browser!=\"undefined\"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module[\"_asyncify_start_unwind\"](Asyncify.currData));if(typeof Browser!=\"undefined\"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module[\"_asyncify_stop_rewind\"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort(\"invalid state: \"+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistant public symbol\")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module[\"dynCall_\"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(\"unknown function pointer with signature \"+signature+\": \"+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+\": \"+unboundTypes.map(getTypeName).join([\", \"]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(\"Cannot call \"+name+\" due to unbound types\",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError(\"Unknown integer type: \"+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes(\"unsigned\");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,\"fromWireType\":fromWireType,\"toWireType\":toWireType,\"argPackAdvance\":8,\"readValueFromPointer\":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":decodeMemoryView,\"argPackAdvance\":8,\"readValueFromPointer\":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name===\"std::string\";registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},\"toWireType\":function(destructors,value){if(!(typeof value==\"string\")){throwBindingError(\"Cannot pass non-string to C++ string type \"+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,\"argPackAdvance\":0,\"fromWireType\":function(){return undefined},\"toWireType\":function(destructors,o){return undefined}})}function __emscripten_date_now(){return Date.now()}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emscripten_get_progname(str,len){stringToUTF8(thisProgram,str,len)}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+\" has unknown type \"+getTypeName(rawType))}return impl}function __emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2)+i],\"parameter \"+i)}return a}function __emval_call(handle,argCount,argTypes,argv){handle=Emval.toValue(handle);var types=__emval_lookupTypes(argCount,argTypes);var args=new Array(argCount);for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function __emval_take_value(type,argv){type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](argv);return Emval.toHandle(v)}function __gmtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();return date.getTime()/1e3|0}function __mmap_js(addr,len,prot,flags,fd,off,allocated,builtin){try{var info=FS.getStream(fd);if(!info)return-8;var res=FS.mmap(info,addr,len,off,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;return ptr}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __msync_js(addr,len,flags,fd){try{SYSCALLS.doMsync(addr,FS.getStream(fd),len,flags,0);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset){try{var stream=FS.getStream(fd);if(stream){if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}FS.munmap(stream)}}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function _tzset_impl(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAP32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return match?match[1]:\"GMT\"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAP32[tzname+4>>2]=summerNamePtr}else{HEAP32[tzname>>2]=summerNamePtr;HEAP32[tzname+4>>2]=winterNamePtr}}function __tzset_js(timezone,daylight,tzname){if(__tzset_js.called)return;__tzset_js.called=true;_tzset_impl(timezone,daylight,tzname)}function _abort(){abort(\"\")}function _emscripten_get_heap_max(){return 2147483648}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=(()=>{var t=process[\"hrtime\"]();return t[0]*1e3+t[1]/1e6})}else _emscripten_get_now=(()=>performance.now());function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=_emscripten_get_heap_max();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var ENV={};function getExecutableName(){return thisProgram||\"./this.program\"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={\"USER\":\"web_user\",\"LOGNAME\":\"web_user\",\"PATH\":\"/\",\"PWD\":\"/\",\"HOME\":\"/home/web_user\",\"LANG\":lang,\"_\":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+\"=\"+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}function _fd_pwrite(fd,iov,iovcnt,offset_low,offset_high,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt,offset_low);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return 61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _llvm_eh_typeid_for(type){return type}function _proc_exit(code){procExit(code)}function _rx_slow_hash(){err(\"missing function: rx_slow_hash\");abort(-1)}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):\"\"};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_1[rule])}var WEEKDAYS=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];var MONTHS=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];function leadingSomething(value,digits,character){var str=typeof value==\"number\"?value.toString():value||\"\";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={\"%a\":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},\"%A\":function(date){return WEEKDAYS[date.tm_wday]},\"%b\":function(date){return MONTHS[date.tm_mon].substring(0,3)},\"%B\":function(date){return MONTHS[date.tm_mon]},\"%C\":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},\"%d\":function(date){return leadingNulls(date.tm_mday,2)},\"%e\":function(date){return leadingSomething(date.tm_mday,2,\" \")},\"%g\":function(date){return getWeekBasedYear(date).toString().substring(2)},\"%G\":function(date){return getWeekBasedYear(date)},\"%H\":function(date){return leadingNulls(date.tm_hour,2)},\"%I\":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},\"%j\":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},\"%m\":function(date){return leadingNulls(date.tm_mon+1,2)},\"%M\":function(date){return leadingNulls(date.tm_min,2)},\"%n\":function(){return\"\\n\"},\"%p\":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return\"AM\"}else{return\"PM\"}},\"%S\":function(date){return leadingNulls(date.tm_sec,2)},\"%t\":function(){return\"\\t\"},\"%u\":function(date){return date.tm_wday||7},\"%U\":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},\"%V\":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},\"%w\":function(date){return date.tm_wday},\"%W\":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},\"%y\":function(date){return(date.tm_year+1900).toString().substring(2)},\"%Y\":function(date){return date.tm_year+1900},\"%z\":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?\"+\":\"-\")+String(\"0000\"+off).slice(-4)},\"%Z\":function(date){return date.tm_zone},\"%%\":function(){return\"%\"}};pattern=pattern.replace(/%%/g,\"\\0\\0\");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\\0\\0/g,\"%\");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _v4_generate_JIT_code(){err(\"missing function: v4_generate_JIT_code\");abort(-1)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();embind_init_charCodes();BindingError=Module[\"BindingError\"]=extendError(Error,\"BindingError\");InternalError=Module[\"InternalError\"]=extendError(Error,\"InternalError\");init_emval();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,\"Character code \"+chr+\" (\"+String.fromCharCode(chr)+\") at offset \"+i+\" not in 0x00-0xFF.\")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}var asmLibraryArg={\"Pa\":_BIO_free,\"Ra\":_BIO_new_mem_buf,\"Ua\":_CONF_modules_unload,\"P\":_CRYPTO_free,\"Xa\":_ERR_reason_error_string,\"Qa\":_PEM_read_bio,\"Va\":_PEM_write,\"Ja\":__ZN2hw6trezor12register_allEv,\"ba\":__ZN4epee13file_io_utils19load_file_to_stringERKNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERS7_m,\"aa\":__ZN4epee13file_io_utils19save_string_to_fileERKNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEES9_,\"Ma\":__ZN5boost10filesystem6detail12current_pathEPNS_6system10error_codeE,\"La\":__ZN5boost10filesystem6detail16weakly_canonicalERKNS0_4pathEPNS_6system10error_codeE,\"Ka\":__ZN5boost10filesystem6detail18create_directoriesERKNS0_4pathEPNS_6system10error_codeE,\"Fa\":__ZN5boost10filesystem6detail5spaceERKNS0_4pathEPNS_6system10error_codeE,\"Ta\":__ZN5boost10filesystem6detail6removeERKNS0_4pathEPNS_6system10error_codeE,\"$\":__ZN5boost10filesystem6detail6statusERKNS0_4pathEPNS_6system10error_codeE,\"Na\":__ZN5boost10filesystem6detail9canonicalERKNS0_4pathES4_PNS_6system10error_codeE,\"Oa\":__ZN5boost10filesystem6detail9copy_fileERKNS0_4pathES4_jPNS_6system10error_codeE,\"Sa\":__ZNK5boost10filesystem4path11parent_pathEv,\"Wa\":__ZNK5tools6Notify6notifyEPKcS2_z,\"e\":___assert_fail,\"c\":___cxa_allocate_exception,\"m\":___cxa_begin_catch,\"V\":___cxa_decrement_exception_refcount,\"o\":___cxa_end_catch,\"b\":___cxa_find_matching_catch_2,\"g\":___cxa_find_matching_catch_3,\"r\":___cxa_free_exception,\"U\":___cxa_increment_exception_refcount,\"ca\":___cxa_rethrow,\"da\":___cxa_rethrow_primary_exception,\"f\":___cxa_throw,\"ea\":___cxa_uncaught_exceptions,\"k\":___resumeException,\"y\":___syscall_fcntl64,\"qa\":___syscall_fdatasync,\"bb\":___syscall_ftruncate64,\"wa\":___syscall_ioctl,\"ma\":___syscall_mkdirat,\"W\":___syscall_openat,\"ha\":___syscall_renameat,\"pa\":___syscall_stat64,\"cb\":__embind_register_bigint,\"ya\":__embind_register_bool,\"xa\":__embind_register_emval,\"Z\":__embind_register_float,\"t\":__embind_register_function,\"z\":__embind_register_integer,\"v\":__embind_register_memory_view,\"Y\":__embind_register_std_string,\"M\":__embind_register_std_wstring,\"za\":__embind_register_void,\"K\":__emscripten_date_now,\"ra\":__emscripten_get_now_is_monotonic,\"ia\":__emscripten_get_progname,\"Da\":__emval_call,\"Ea\":__emval_decref,\"Ca\":__emval_equals,\"_\":__emval_incref,\"Ba\":__emval_take_value,\"sa\":__gmtime_js,\"ta\":__mktime_js,\"ja\":__mmap_js,\"ka\":__msync_js,\"la\":__munmap_js,\"ua\":__tzset_js,\"B\":_abort,\"ga\":_emscripten_get_heap_max,\"J\":_emscripten_get_now,\"fa\":_emscripten_resize_heap,\"na\":_environ_get,\"oa\":_environ_sizes_get,\"Q\":_exit,\"G\":_fd_close,\"$a\":_fd_pwrite,\"X\":_fd_read,\"ab\":_fd_seek,\"L\":_fd_write,\"a\":_getTempRet0,\"R\":invoke_diii,\"S\":invoke_fiii,\"u\":invoke_i,\"i\":invoke_ii,\"d\":invoke_iii,\"p\":invoke_iiii,\"n\":invoke_iiiii,\"T\":invoke_iiiiid,\"E\":invoke_iiiiii,\"x\":invoke_iiiiiii,\"O\":invoke_iiiiiiii,\"Ha\":invoke_iiiiiiiiii,\"I\":invoke_iiiiiiiiiiii,\"Ya\":invoke_iiiiij,\"nb\":invoke_iiiiiji,\"ob\":invoke_iiiiji,\"lb\":invoke_iij,\"_a\":invoke_j,\"qb\":invoke_ji,\"fb\":invoke_jii,\"eb\":invoke_jiii,\"gb\":invoke_jiiii,\"hb\":invoke_jiiiii,\"l\":invoke_v,\"s\":invoke_vi,\"h\":invoke_vii,\"j\":invoke_viii,\"w\":invoke_viiii,\"C\":invoke_viiiii,\"N\":invoke_viiiiii,\"A\":invoke_viiiiiii,\"Ia\":invoke_viiiiiiii,\"F\":invoke_viiiiiiiiii,\"H\":invoke_viiiiiiiiiiiiiii,\"db\":invoke_viiiji,\"kb\":invoke_viiijjjjii,\"jb\":invoke_viij,\"Za\":invoke_viijii,\"rb\":invoke_viijiiii,\"mb\":invoke_viijjd,\"pb\":invoke_viji,\"ib\":invoke_vijiijii,\"sb\":js_send_binary_request,\"tb\":js_send_json_request,\"q\":_llvm_eh_typeid_for,\"va\":_proc_exit,\"Ga\":_rx_slow_hash,\"D\":_setTempRet0,\"ub\":_strftime_l,\"Aa\":_v4_generate_JIT_code};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"wb\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"xb\"]).apply(null,arguments)};var __ZN5boost13serialization16singleton_module8get_lockEv=Module[\"__ZN5boost13serialization16singleton_module8get_lockEv\"]=function(){return(__ZN5boost13serialization16singleton_module8get_lockEv=Module[\"__ZN5boost13serialization16singleton_module8get_lockEv\"]=Module[\"asm\"][\"zb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet210pending_txEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet210pending_txEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet210pending_txEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet210pending_txEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Ab\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11transactionEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11transactionEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11transactionEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11transactionEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Bb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Cb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Db\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote8txin_genEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote8txin_genEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote8txin_genEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote8txin_genEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Eb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote14txin_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote14txin_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote14txin_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote14txin_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Fb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto4hashEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto4hashEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto4hashEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto4hashEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Gb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote18txin_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote18txin_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote18txin_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote18txin_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Hb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15txout_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15txout_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15txout_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15txout_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Ib\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Jb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto10public_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto10public_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto10public_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto10public_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Kb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11txin_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11txin_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11txin_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11txin_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Lb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Mb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9key_imageEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9key_imageEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9key_imageEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9key_imageEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Nb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Ob\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote6tx_outEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote6tx_outEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote6tx_outEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote6tx_outEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Pb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Qb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Rb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote12txout_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote12txout_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote12txout_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote12txout_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Sb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_tagged_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_tagged_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_tagged_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_tagged_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Tb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto8view_tagEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto8view_tagEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto8view_tagEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto8view_tagEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Ub\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Vb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Wb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Xb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9signatureEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9signatureEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9signatureEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9signatureEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Yb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct10rctSigBaseEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct10rctSigBaseEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct10rctSigBaseEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct10rctSigBaseEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Zb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"_b\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct3keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct3keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct3keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct3keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"$b\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"ac\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9ecdhTupleEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9ecdhTupleEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9ecdhTupleEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9ecdhTupleEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"bc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14rctSigPrunableEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14rctSigPrunableEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14rctSigPrunableEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14rctSigPrunableEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"cc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"dc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct8rangeSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct8rangeSigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct8rangeSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct8rangeSigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"ec\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct7boroSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct7boroSigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct7boroSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct7boroSigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"fc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"gc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct11BulletproofEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct11BulletproofEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct11BulletproofEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct11BulletproofEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"hc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"ic\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct15BulletproofPlusEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct15BulletproofPlusEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct15BulletproofPlusEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct15BulletproofPlusEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"jc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"kc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5mgSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5mgSigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5mgSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5mgSigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"lc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"mc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"nc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5clsagEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5clsagEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5clsagEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5clsagEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"oc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote20tx_destination_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote20tx_destination_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote20tx_destination_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote20tx_destination_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"pc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote22account_public_addressEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote22account_public_addressEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote22account_public_addressEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote22account_public_addressEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"qc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24listImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24listImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24listImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24listImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"rc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"sc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"tc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet220tx_construction_dataEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet220tx_construction_dataEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet220tx_construction_dataEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet220tx_construction_dataEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"uc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"vc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15tx_source_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15tx_source_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15tx_source_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15tx_source_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"wc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"xc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24pairIyN3rct5ctkeyEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24pairIyN3rct5ctkeyEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24pairIyN3rct5ctkeyEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24pairIyN3rct5ctkeyEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"yc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5ctkeyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5ctkeyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5ctkeyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5ctkeyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"zc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14multisig_kLRkiEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14multisig_kLRkiEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14multisig_kLRkiEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14multisig_kLRkiEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Ac\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Bc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9RCTConfigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9RCTConfigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9RCTConfigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9RCTConfigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Cc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Dc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Ec\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Fc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet212multisig_sigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet212multisig_sigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet212multisig_sigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet212multisig_sigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Gc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct6rctSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct6rctSigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct6rctSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct6rctSigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Hc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Ic\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Jc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct12multisig_outEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct12multisig_outEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct12multisig_outEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct12multisig_outEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Kc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet210pending_txEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet210pending_txEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet210pending_txEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet210pending_txEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Lc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Mc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Nc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Oc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Pc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Qc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Rc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Sc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Tc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Uc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Vc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Wc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Xc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Yc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Zc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"_c\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"$c\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ad\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"bd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"cd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"dd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ed\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"fd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"gd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"hd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"id\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"jd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"kd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ld\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"md\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"nd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"od\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"pd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"qd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"rd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"sd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"td\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ud\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"vd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"wd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"xd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"yd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"zd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ad\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Bd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24listImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24listImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24listImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24listImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Cd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Dd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ed\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220tx_construction_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220tx_construction_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220tx_construction_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220tx_construction_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Fd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Gd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15tx_source_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15tx_source_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15tx_source_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15tx_source_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Hd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Id\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN3rct5ctkeyEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN3rct5ctkeyEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN3rct5ctkeyEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN3rct5ctkeyEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Jd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5ctkeyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5ctkeyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5ctkeyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5ctkeyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Kd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14multisig_kLRkiEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14multisig_kLRkiEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14multisig_kLRkiEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14multisig_kLRkiEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ld\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Md\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9RCTConfigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9RCTConfigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9RCTConfigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9RCTConfigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Nd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Od\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Pd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Qd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet212multisig_sigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet212multisig_sigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet212multisig_sigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet212multisig_sigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Rd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct6rctSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct6rctSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct6rctSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct6rctSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Sd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Td\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ud\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct12multisig_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct12multisig_outEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct12multisig_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct12multisig_outEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Vd\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"Wd\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Xd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Yd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Zd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"_d\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"$d\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ae\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"be\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ce\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"de\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ee\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"fe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ge\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"he\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ie\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"je\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ke\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"le\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"me\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ne\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"oe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"pe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"qe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"re\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"se\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"te\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ue\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ve\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"we\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"xe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ye\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ze\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ae\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Be\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ce\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"De\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ee\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Fe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ge\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"He\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ie\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Je\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ke\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Le\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Me\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ne\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Oe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Pe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Qe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Re\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Se\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Te\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ue\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ve\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"We\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Xe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ye\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ze\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"_e\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"$e\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"af\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"bf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"cf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"df\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ef\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ff\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"gf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"hf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"jf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"kf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"lf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"mf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"nf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"of\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"pf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"qf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"rf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"sf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"tf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"uf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"vf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"wf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"xf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"yf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"zf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Af\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Bf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Cf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Df\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ef\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ff\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Gf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Hf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"If\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Jf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Kf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Lf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Mf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Nf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Of\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Pf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Qf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Rf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Sf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Tf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Uf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Vf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Wf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Xf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Yf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Zf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"_f\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"$f\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ag\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"bg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"cg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"dg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"eg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"fg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"gg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"hg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ig\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"jg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"kg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"lg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"mg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ng\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"og\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"pg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"qg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"rg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"sg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"tg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215unsigned_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215unsigned_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215unsigned_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215unsigned_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ug\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet220tx_construction_dataENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet220tx_construction_dataENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet220tx_construction_dataENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet220tx_construction_dataENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"vg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairImNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairImNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairImNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairImNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"wg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213signed_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213signed_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213signed_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213signed_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"xg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet210pending_txENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet210pending_txENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet210pending_txENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet210pending_txENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"yg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"zg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215multisig_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215multisig_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215multisig_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215multisig_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ag\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet219reserve_proof_entryENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet219reserve_proof_entryENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet219reserve_proof_entryENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet219reserve_proof_entryENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Bg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet219reserve_proof_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet219reserve_proof_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet219reserve_proof_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet219reserve_proof_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Cg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9signatureENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9signatureENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9signatureENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9signatureENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Dg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25tupleIJyyNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25tupleIJyyNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25tupleIJyyNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25tupleIJyyNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Eg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Fg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Gg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Hg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ig\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms9file_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms9file_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms9file_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms9file_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Jg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9chacha_ivEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9chacha_ivEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9chacha_ivEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9chacha_ivEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Kg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms13message_storeEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms13message_storeEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms13message_storeEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms13message_storeEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Lg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms17authorized_signerENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms17authorized_signerENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms17authorized_signerENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms17authorized_signerENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Mg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms17authorized_signerEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms17authorized_signerEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms17authorized_signerEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms17authorized_signerEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ng\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms7messageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms7messageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms7messageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms7messageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Og\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms7messageEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms7messageEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms7messageEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms7messageEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Pg\"]).apply(null,arguments)};var ___getTypeName=Module[\"___getTypeName\"]=function(){return(___getTypeName=Module[\"___getTypeName\"]=Module[\"asm\"][\"Qg\"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=function(){return(___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=Module[\"asm\"][\"Rg\"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module[\"_emscripten_builtin_memalign\"]=function(){return(_emscripten_builtin_memalign=Module[\"_emscripten_builtin_memalign\"]=Module[\"asm\"][\"Sg\"]).apply(null,arguments)};var _setThrew=Module[\"_setThrew\"]=function(){return(_setThrew=Module[\"_setThrew\"]=Module[\"asm\"][\"Tg\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"Ug\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"Vg\"]).apply(null,arguments)};var ___cxa_can_catch=Module[\"___cxa_can_catch\"]=function(){return(___cxa_can_catch=Module[\"___cxa_can_catch\"]=Module[\"asm\"][\"Wg\"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module[\"___cxa_is_pointer_type\"]=function(){return(___cxa_is_pointer_type=Module[\"___cxa_is_pointer_type\"]=Module[\"asm\"][\"Xg\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"Yg\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"Zg\"]).apply(null,arguments)};var dynCall_iii=Module[\"dynCall_iii\"]=function(){return(dynCall_iii=Module[\"dynCall_iii\"]=Module[\"asm\"][\"_g\"]).apply(null,arguments)};var dynCall_vii=Module[\"dynCall_vii\"]=function(){return(dynCall_vii=Module[\"dynCall_vii\"]=Module[\"asm\"][\"$g\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"ah\"]).apply(null,arguments)};var dynCall_viiiii=Module[\"dynCall_viiiii\"]=function(){return(dynCall_viiiii=Module[\"dynCall_viiiii\"]=Module[\"asm\"][\"bh\"]).apply(null,arguments)};var dynCall_iij=Module[\"dynCall_iij\"]=function(){return(dynCall_iij=Module[\"dynCall_iij\"]=Module[\"asm\"][\"ch\"]).apply(null,arguments)};var dynCall_iiiiijii=Module[\"dynCall_iiiiijii\"]=function(){return(dynCall_iiiiijii=Module[\"dynCall_iiiiijii\"]=Module[\"asm\"][\"dh\"]).apply(null,arguments)};var dynCall_iiijiii=Module[\"dynCall_iiijiii\"]=function(){return(dynCall_iiijiii=Module[\"dynCall_iiijiii\"]=Module[\"asm\"][\"eh\"]).apply(null,arguments)};var dynCall_iiiijii=Module[\"dynCall_iiiijii\"]=function(){return(dynCall_iiiijii=Module[\"dynCall_iiiijii\"]=Module[\"asm\"][\"fh\"]).apply(null,arguments)};var dynCall_ji=Module[\"dynCall_ji\"]=function(){return(dynCall_ji=Module[\"dynCall_ji\"]=Module[\"asm\"][\"gh\"]).apply(null,arguments)};var dynCall_viii=Module[\"dynCall_viii\"]=function(){return(dynCall_viii=Module[\"dynCall_viii\"]=Module[\"asm\"][\"hh\"]).apply(null,arguments)};var dynCall_iiii=Module[\"dynCall_iiii\"]=function(){return(dynCall_iiii=Module[\"dynCall_iiii\"]=Module[\"asm\"][\"ih\"]).apply(null,arguments)};var dynCall_iiiii=Module[\"dynCall_iiiii\"]=function(){return(dynCall_iiiii=Module[\"dynCall_iiiii\"]=Module[\"asm\"][\"jh\"]).apply(null,arguments)};var dynCall_viijiiii=Module[\"dynCall_viijiiii\"]=function(){return(dynCall_viijiiii=Module[\"dynCall_viijiiii\"]=Module[\"asm\"][\"kh\"]).apply(null,arguments)};var dynCall_viiii=Module[\"dynCall_viiii\"]=function(){return(dynCall_viiii=Module[\"dynCall_viiii\"]=Module[\"asm\"][\"lh\"]).apply(null,arguments)};var dynCall_vij=Module[\"dynCall_vij\"]=function(){return(dynCall_vij=Module[\"dynCall_vij\"]=Module[\"asm\"][\"mh\"]).apply(null,arguments)};var dynCall_jiiii=Module[\"dynCall_jiiii\"]=function(){return(dynCall_jiiii=Module[\"dynCall_jiiii\"]=Module[\"asm\"][\"nh\"]).apply(null,arguments)};var dynCall_viij=Module[\"dynCall_viij\"]=function(){return(dynCall_viij=Module[\"dynCall_viij\"]=Module[\"asm\"][\"oh\"]).apply(null,arguments)};var dynCall_viiji=Module[\"dynCall_viiji\"]=function(){return(dynCall_viiji=Module[\"dynCall_viiji\"]=Module[\"asm\"][\"ph\"]).apply(null,arguments)};var dynCall_jii=Module[\"dynCall_jii\"]=function(){return(dynCall_jii=Module[\"dynCall_jii\"]=Module[\"asm\"][\"qh\"]).apply(null,arguments)};var dynCall_jiii=Module[\"dynCall_jiii\"]=function(){return(dynCall_jiii=Module[\"dynCall_jiii\"]=Module[\"asm\"][\"rh\"]).apply(null,arguments)};var dynCall_viiiiii=Module[\"dynCall_viiiiii\"]=function(){return(dynCall_viiiiii=Module[\"dynCall_viiiiii\"]=Module[\"asm\"][\"sh\"]).apply(null,arguments)};var dynCall_viiiji=Module[\"dynCall_viiiji\"]=function(){return(dynCall_viiiji=Module[\"dynCall_viiiji\"]=Module[\"asm\"][\"th\"]).apply(null,arguments)};var dynCall_vijiiii=Module[\"dynCall_vijiiii\"]=function(){return(dynCall_vijiiii=Module[\"dynCall_vijiiii\"]=Module[\"asm\"][\"uh\"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module[\"dynCall_iiiiiiiii\"]=function(){return(dynCall_iiiiiiiii=Module[\"dynCall_iiiiiiiii\"]=Module[\"asm\"][\"vh\"]).apply(null,arguments)};var dynCall_iiiiii=Module[\"dynCall_iiiiii\"]=function(){return(dynCall_iiiiii=Module[\"dynCall_iiiiii\"]=Module[\"asm\"][\"wh\"]).apply(null,arguments)};var dynCall_vijjjdi=Module[\"dynCall_vijjjdi\"]=function(){return(dynCall_vijjjdi=Module[\"dynCall_vijjjdi\"]=Module[\"asm\"][\"xh\"]).apply(null,arguments)};var dynCall_vijj=Module[\"dynCall_vijj\"]=function(){return(dynCall_vijj=Module[\"dynCall_vijj\"]=Module[\"asm\"][\"yh\"]).apply(null,arguments)};var dynCall_viji=Module[\"dynCall_viji\"]=function(){return(dynCall_viji=Module[\"dynCall_viji\"]=Module[\"asm\"][\"zh\"]).apply(null,arguments)};var dynCall_vijiijjiij=Module[\"dynCall_vijiijjiij\"]=function(){return(dynCall_vijiijjiij=Module[\"dynCall_vijiijjiij\"]=Module[\"asm\"][\"Ah\"]).apply(null,arguments)};var dynCall_vijiiji=Module[\"dynCall_vijiiji\"]=function(){return(dynCall_vijiiji=Module[\"dynCall_vijiiji\"]=Module[\"asm\"][\"Bh\"]).apply(null,arguments)};var dynCall_vijiijii=Module[\"dynCall_vijiijii\"]=function(){return(dynCall_vijiijii=Module[\"dynCall_vijiijii\"]=Module[\"asm\"][\"Ch\"]).apply(null,arguments)};var dynCall_vijii=Module[\"dynCall_vijii\"]=function(){return(dynCall_vijii=Module[\"dynCall_vijii\"]=Module[\"asm\"][\"Dh\"]).apply(null,arguments)};var dynCall_vijij=Module[\"dynCall_vijij\"]=function(){return(dynCall_vijij=Module[\"dynCall_vijij\"]=Module[\"asm\"][\"Eh\"]).apply(null,arguments)};var dynCall_viijii=Module[\"dynCall_viijii\"]=function(){return(dynCall_viijii=Module[\"dynCall_viijii\"]=Module[\"asm\"][\"Fh\"]).apply(null,arguments)};var dynCall_viiiiiiii=Module[\"dynCall_viiiiiiii\"]=function(){return(dynCall_viiiiiiii=Module[\"dynCall_viiiiiiii\"]=Module[\"asm\"][\"Gh\"]).apply(null,arguments)};var dynCall_iiiiiiii=Module[\"dynCall_iiiiiiii\"]=function(){return(dynCall_iiiiiiii=Module[\"dynCall_iiiiiiii\"]=Module[\"asm\"][\"Hh\"]).apply(null,arguments)};var dynCall_iiiiji=Module[\"dynCall_iiiiji\"]=function(){return(dynCall_iiiiji=Module[\"dynCall_iiiiji\"]=Module[\"asm\"][\"Ih\"]).apply(null,arguments)};var dynCall_iiiiiji=Module[\"dynCall_iiiiiji\"]=function(){return(dynCall_iiiiiji=Module[\"dynCall_iiiiiji\"]=Module[\"asm\"][\"Jh\"]).apply(null,arguments)};var dynCall_viijjd=Module[\"dynCall_viijjd\"]=function(){return(dynCall_viijjd=Module[\"dynCall_viijjd\"]=Module[\"asm\"][\"Kh\"]).apply(null,arguments)};var dynCall_viiijjjjii=Module[\"dynCall_viiijjjjii\"]=function(){return(dynCall_viiijjjjii=Module[\"dynCall_viiijjjjii\"]=Module[\"asm\"][\"Lh\"]).apply(null,arguments)};var dynCall_jiiiii=Module[\"dynCall_jiiiii\"]=function(){return(dynCall_jiiiii=Module[\"dynCall_jiiiii\"]=Module[\"asm\"][\"Mh\"]).apply(null,arguments)};var dynCall_iiiiiiiiii=Module[\"dynCall_iiiiiiiiii\"]=function(){return(dynCall_iiiiiiiiii=Module[\"dynCall_iiiiiiiiii\"]=Module[\"asm\"][\"Nh\"]).apply(null,arguments)};var dynCall_iiiiiii=Module[\"dynCall_iiiiiii\"]=function(){return(dynCall_iiiiiii=Module[\"dynCall_iiiiiii\"]=Module[\"asm\"][\"Oh\"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module[\"dynCall_viiiiiiiii\"]=function(){return(dynCall_viiiiiiiii=Module[\"dynCall_viiiiiiiii\"]=Module[\"asm\"][\"Ph\"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module[\"dynCall_viiiiiiiiii\"]=function(){return(dynCall_viiiiiiiiii=Module[\"dynCall_viiiiiiiiii\"]=Module[\"asm\"][\"Qh\"]).apply(null,arguments)};var dynCall_viiiiiii=Module[\"dynCall_viiiiiii\"]=function(){return(dynCall_viiiiiii=Module[\"dynCall_viiiiiii\"]=Module[\"asm\"][\"Rh\"]).apply(null,arguments)};var dynCall_iiiij=Module[\"dynCall_iiiij\"]=function(){return(dynCall_iiiij=Module[\"dynCall_iiiij\"]=Module[\"asm\"][\"Sh\"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiiiiii=Module[\"dynCall_iiiiiiiiiiiiiiii\"]=function(){return(dynCall_iiiiiiiiiiiiiiii=Module[\"dynCall_iiiiiiiiiiiiiiii\"]=Module[\"asm\"][\"Th\"]).apply(null,arguments)};var dynCall_jiji=Module[\"dynCall_jiji\"]=function(){return(dynCall_jiji=Module[\"dynCall_jiji\"]=Module[\"asm\"][\"Uh\"]).apply(null,arguments)};var dynCall_iidiiii=Module[\"dynCall_iidiiii\"]=function(){return(dynCall_iidiiii=Module[\"dynCall_iidiiii\"]=Module[\"asm\"][\"Vh\"]).apply(null,arguments)};var dynCall_j=Module[\"dynCall_j\"]=function(){return(dynCall_j=Module[\"dynCall_j\"]=Module[\"asm\"][\"Wh\"]).apply(null,arguments)};var dynCall_iiiiij=Module[\"dynCall_iiiiij\"]=function(){return(dynCall_iiiiij=Module[\"dynCall_iiiiij\"]=Module[\"asm\"][\"Xh\"]).apply(null,arguments)};var dynCall_iiiiid=Module[\"dynCall_iiiiid\"]=function(){return(dynCall_iiiiid=Module[\"dynCall_iiiiid\"]=Module[\"asm\"][\"Yh\"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module[\"dynCall_iiiiiiiiiii\"]=function(){return(dynCall_iiiiiiiiiii=Module[\"dynCall_iiiiiiiiiii\"]=Module[\"asm\"][\"Zh\"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module[\"dynCall_iiiiiiiiiiiii\"]=function(){return(dynCall_iiiiiiiiiiiii=Module[\"dynCall_iiiiiiiiiiiii\"]=Module[\"asm\"][\"_h\"]).apply(null,arguments)};var dynCall_fiii=Module[\"dynCall_fiii\"]=function(){return(dynCall_fiii=Module[\"dynCall_fiii\"]=Module[\"asm\"][\"$h\"]).apply(null,arguments)};var dynCall_diii=Module[\"dynCall_diii\"]=function(){return(dynCall_diii=Module[\"dynCall_diii\"]=Module[\"asm\"][\"ai\"]).apply(null,arguments)};var dynCall_i=Module[\"dynCall_i\"]=function(){return(dynCall_i=Module[\"dynCall_i\"]=Module[\"asm\"][\"bi\"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module[\"dynCall_iiiiiiiiiiii\"]=function(){return(dynCall_iiiiiiiiiiii=Module[\"dynCall_iiiiiiiiiiii\"]=Module[\"asm\"][\"ci\"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module[\"dynCall_viiiiiiiiiiiiiii\"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module[\"dynCall_viiiiiiiiiiiiiii\"]=Module[\"asm\"][\"di\"]).apply(null,arguments)};var dynCall_iiiiijj=Module[\"dynCall_iiiiijj\"]=function(){return(dynCall_iiiiijj=Module[\"dynCall_iiiiijj\"]=Module[\"asm\"][\"ei\"]).apply(null,arguments)};var dynCall_iiiiiijj=Module[\"dynCall_iiiiiijj\"]=function(){return(dynCall_iiiiiijj=Module[\"dynCall_iiiiiijj\"]=Module[\"asm\"][\"fi\"]).apply(null,arguments)};var _asyncify_start_unwind=Module[\"_asyncify_start_unwind\"]=function(){return(_asyncify_start_unwind=Module[\"_asyncify_start_unwind\"]=Module[\"asm\"][\"gi\"]).apply(null,arguments)};var _asyncify_stop_unwind=Module[\"_asyncify_stop_unwind\"]=function(){return(_asyncify_stop_unwind=Module[\"_asyncify_stop_unwind\"]=Module[\"asm\"][\"hi\"]).apply(null,arguments)};var _asyncify_start_rewind=Module[\"_asyncify_start_rewind\"]=function(){return(_asyncify_start_rewind=Module[\"_asyncify_start_rewind\"]=Module[\"asm\"][\"ii\"]).apply(null,arguments)};var _asyncify_stop_rewind=Module[\"_asyncify_stop_rewind\"]=function(){return(_asyncify_stop_rewind=Module[\"_asyncify_stop_rewind\"]=Module[\"asm\"][\"ji\"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_viiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{dynCall_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return dynCall_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viijiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{dynCall_viijiiii(index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return dynCall_ji(index,a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viji(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viji(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiji(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiji(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiji(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiji(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viijjd(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viijjd(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iij(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iij(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiijjjjii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){var sp=stackSave();try{dynCall_viiijjjjii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viij(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viij(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vijiijii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{dynCall_vijiijii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_jiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return dynCall_jii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_jiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiji(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viiiji(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_j(index){var sp=stackSave();try{return dynCall_j(index)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiij(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiij(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module[\"UTF8ToString\"]=UTF8ToString;Module[\"stringToUTF8\"]=stringToUTF8;Module[\"lengthBytesUTF8\"]=lengthBytesUTF8;Module[\"addFunction\"]=addFunction;Module[\"getTempRet0\"]=getTempRet0;Module[\"intArrayToString\"]=intArrayToString;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){EXITSTATUS=status;procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module[\"onExit\"])Module[\"onExit\"](code);ABORT=true}quit_(code,new ExitStatus(code))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();\n\n\n return monero_javascript.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = monero_javascript;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return monero_javascript; });\nelse if (typeof exports === 'object')\n exports[\"monero_javascript\"] = monero_javascript;\n","\nvar monero_javascript = (() => {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(monero_javascript) {\n monero_javascript = monero_javascript || {};\n\nvar Module=typeof monero_javascript!=\"undefined\"?monero_javascript:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err(\"exiting due to exception: \"+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}requireNodeFS=(()=>{if(!nodePath){fs=require(\"fs\");nodePath=require(\"path\")}});read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath[\"normalize\"](filename);return fs.readFileSync(filename,binary?undefined:\"utf8\")};readBinary=(filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret});readAsync=((filename,onload,onerror)=>{requireNodeFS();filename=nodePath[\"normalize\"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"unhandledRejection\",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process[\"exitCode\"]=status;throw toThrow}logExceptionOnExit(toThrow);process[\"exit\"](status)});Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText});if(ENVIRONMENT_IS_WORKER){readBinary=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)})}readAsync=((url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=(()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()});xhr.onerror=onerror;xhr.send(null)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];function uleb128Encode(n){if(n<128){return[n]}return[n%128|128,n>>7]}function convertJsFunctionToWasm(func,sig){if(typeof WebAssembly.Function==\"function\"){var typeNames={\"i\":\"i32\",\"j\":\"i64\",\"f\":\"f32\",\"d\":\"f64\"};var type={parameters:[],results:sig[0]==\"v\"?[]:[typeNames[sig[0]]]};for(var i=1;i{tempRet0=value};var getTempRet0=()=>tempRet0;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!=\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){{if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}}what=\"Aborted(\"+what+\")\";err(what);ABORT=true;EXITSTATUS=1;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith(\"file://\")}var wasmBinaryFile;wasmBinaryFile=\"monero_wallet_keys.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"Fa\"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"Ia\"];addOnInit(Module[\"asm\"][\"Ga\"]);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiationResult(result){receiveInstance(result[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func==\"number\"){if(callback.arg===undefined){getWasmTableEntry(func)()}else{getWasmTableEntry(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function setWasmTableEntry(idx,func){wasmTable.set(idx,func)}function _CONF_modules_unload(){err(\"missing function: CONF_modules_unload\");abort(-1)}function _ERR_reason_error_string(){err(\"missing function: ERR_reason_error_string\");abort(-1)}function ___assert_fail(condition,filename,line,func){abort(\"Assertion failed: \"+UTF8ToString(condition)+\", at: \"+[filename?UTF8ToString(filename):\"unknown filename\",line,func?UTF8ToString(func):\"unknown function\"])}function ___cxa_allocate_exception(size){return _malloc(size+24)+24}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);exception_addRef(info);return info.get_exception_ptr()}var exceptionLast=0;function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}function ___cxa_free_exception(ptr){return _free(new ExceptionInfo(ptr).ptr)}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){getWasmTableEntry(destructor)(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var info=exceptionCaught.pop();exception_decRef(info);exceptionLast=0}function ___resumeException(ptr){if(!exceptionLast){exceptionLast=ptr}throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path===\"/\")return\"/\";path=PATH.normalize(path);path=path.replace(/\\/$/,\"\");var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:(l,r)=>{return PATH.normalize(l+\"/\"+r)}};function getRandomDevice(){if(typeof crypto==\"object\"&&typeof crypto[\"getRandomValues\"]==\"function\"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require(\"crypto\");return function(){return crypto_module[\"randomBytes\"](1)[0]}}catch(e){}}return function(){abort(\"randomDevice\")}}var PATH_FS={resolve:function(){var resolvedPath=\"\",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString(\"utf-8\")}else{result=null}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else if(typeof readline==\"function\"){result=readline();if(result!==null){result+=\"\\n\"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,\"/\",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),false);var current=FS.root;var current_path=\"/\";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?mount+\"/\"+path:mount+path}path=path?node.name+\"/\"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{\"r\":0,\"r+\":2,\"w\":577,\"w+\":578,\"a\":1089,\"a+\":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags==\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags},flagsToPermissionString:flag=>{var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get function(){return this.shared.position},set:function(val){this.shared.position=val}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(\"warning: \"+FS.syncFSRequests+\" FS.syncfs operations in flight at once, probably just doing extra work\")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split(\"/\");var d=\"\";for(var i=0;i{if(typeof dev==\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===\"\"){throw new FS.ErrnoError(44)}flags=typeof flags==\"string\"?FS.modeStringToFlags(flags):flags;mode=typeof mode==\"undefined\"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error('Invalid encoding type \"'+opts.encoding+'\"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices:()=>{FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice(\"/dev\",\"random\",random_device);FS.createDevice(\"/dev\",\"urandom\",random_device);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories:()=>{FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount:()=>{var node=FS.createNode(proc_self,\"fd\",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},\"/proc/self/fd\")},createStandardStreams:()=>{if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message=\"FS error\"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"\"})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent==\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent==\"string\"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||\"\",true)}};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(\"cp \"+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return\"EM_FS_\"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out(\"creating db\");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],\"readwrite\");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],\"readonly\")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort(\"bad ioctl syscall \"+op)}}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]===\"/\")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret=\"\";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return\"_unknown\"}name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return\"_\"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return function(){null;return body.apply(this,arguments)}}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+\": \"+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function registerType(rawType,registeredInstance,options={}){if(!(\"argPackAdvance\"in registeredInstance)){throw new TypeError(\"registerType registeredInstance requires argPackAdvance\")}var name=registeredInstance.name;if(!rawType){throwBindingError('type \"'+name+'\" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(\"Cannot register type '\"+name+\"' twice\")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(wt){return!!wt},\"toWireType\":function(destructors,o){return o?trueValue:falseValue},\"argPackAdvance\":8,\"readValueFromPointer\":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError(\"Unknown boolean type size: \"+name)}return this[\"fromWireType\"](heap[pointer>>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function simpleReadValueFromPointer(pointer){return this[\"fromWireType\"](HEAPU32[pointer>>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},\"toWireType\":function(destructors,value){return Emval.toHandle(value)},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this[\"fromWireType\"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this[\"fromWireType\"](HEAPF64[pointer>>3])};default:throw new TypeError(\"Unknown float type: \"+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(value){return value},\"toWireType\":function(destructors,value){return value},\"argPackAdvance\":8,\"readValueFromPointer\":floatReadValueFromPointer(name,shift),destructorFunction:null})}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistant public symbol\")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module[\"dynCall_\"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){if(sig.includes(\"j\")){return dynCallLegacy(sig,ptr,args)}return getWasmTableEntry(ptr).apply(null,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes(\"j\")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(\"unknown function pointer with signature \"+signature+\": \"+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+\": \"+unboundTypes.map(getTypeName).join([\", \"]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(\"Cannot call \"+name+\" due to unbound types\",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError(\"Unknown integer type: \"+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes(\"unsigned\");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,\"fromWireType\":fromWireType,\"toWireType\":toWireType,\"argPackAdvance\":8,\"readValueFromPointer\":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":decodeMemoryView,\"argPackAdvance\":8,\"readValueFromPointer\":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name===\"std::string\";registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},\"toWireType\":function(destructors,value){if(!(typeof value==\"string\")){throwBindingError(\"Cannot pass non-string to C++ string type \"+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,\"argPackAdvance\":0,\"fromWireType\":function(){return undefined},\"toWireType\":function(destructors,o){return undefined}})}function __emscripten_date_now(){return Date.now()}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emscripten_get_progname(str,len){stringToUTF8(thisProgram,str,len)}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+\" has unknown type \"+getTypeName(rawType))}return impl}function __emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2)+i],\"parameter \"+i)}return a}function __emval_call(handle,argCount,argTypes,argv){handle=Emval.toValue(handle);var types=__emval_lookupTypes(argCount,argTypes);var args=new Array(argCount);for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function __emval_take_value(type,argv){type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](argv);return Emval.toHandle(v)}function __gmtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();return date.getTime()/1e3|0}function _tzset_impl(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAP32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return match?match[1]:\"GMT\"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAP32[tzname+4>>2]=summerNamePtr}else{HEAP32[tzname>>2]=summerNamePtr;HEAP32[tzname+4>>2]=winterNamePtr}}function __tzset_js(timezone,daylight,tzname){if(__tzset_js.called)return;__tzset_js.called=true;_tzset_impl(timezone,daylight,tzname)}function _abort(){abort(\"\")}function _emscripten_get_heap_max(){return 2147483648}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=(()=>{var t=process[\"hrtime\"]();return t[0]*1e3+t[1]/1e6})}else _emscripten_get_now=(()=>performance.now());function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=_emscripten_get_heap_max();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var ENV={};function getExecutableName(){return thisProgram||\"./this.program\"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={\"USER\":\"web_user\",\"LOGNAME\":\"web_user\",\"PATH\":\"/\",\"PWD\":\"/\",\"HOME\":\"/home/web_user\",\"LANG\":lang,\"_\":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+\"=\"+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return 61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _llvm_eh_typeid_for(type){return type}function _proc_exit(code){procExit(code)}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):\"\"};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_1[rule])}var WEEKDAYS=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];var MONTHS=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];function leadingSomething(value,digits,character){var str=typeof value==\"number\"?value.toString():value||\"\";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={\"%a\":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},\"%A\":function(date){return WEEKDAYS[date.tm_wday]},\"%b\":function(date){return MONTHS[date.tm_mon].substring(0,3)},\"%B\":function(date){return MONTHS[date.tm_mon]},\"%C\":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},\"%d\":function(date){return leadingNulls(date.tm_mday,2)},\"%e\":function(date){return leadingSomething(date.tm_mday,2,\" \")},\"%g\":function(date){return getWeekBasedYear(date).toString().substring(2)},\"%G\":function(date){return getWeekBasedYear(date)},\"%H\":function(date){return leadingNulls(date.tm_hour,2)},\"%I\":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},\"%j\":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},\"%m\":function(date){return leadingNulls(date.tm_mon+1,2)},\"%M\":function(date){return leadingNulls(date.tm_min,2)},\"%n\":function(){return\"\\n\"},\"%p\":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return\"AM\"}else{return\"PM\"}},\"%S\":function(date){return leadingNulls(date.tm_sec,2)},\"%t\":function(){return\"\\t\"},\"%u\":function(date){return date.tm_wday||7},\"%U\":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},\"%V\":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},\"%w\":function(date){return date.tm_wday},\"%W\":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},\"%y\":function(date){return(date.tm_year+1900).toString().substring(2)},\"%Y\":function(date){return date.tm_year+1900},\"%z\":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?\"+\":\"-\")+String(\"0000\"+off).slice(-4)},\"%Z\":function(date){return date.tm_zone},\"%%\":function(){return\"%\"}};pattern=pattern.replace(/%%/g,\"\\0\\0\");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\\0\\0/g,\"%\");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _v4_generate_JIT_code(){err(\"missing function: v4_generate_JIT_code\");abort(-1)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();embind_init_charCodes();BindingError=Module[\"BindingError\"]=extendError(Error,\"BindingError\");InternalError=Module[\"InternalError\"]=extendError(Error,\"InternalError\");init_emval();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,\"Character code \"+chr+\" (\"+String.fromCharCode(chr)+\") at offset \"+i+\" not in 0x00-0xFF.\")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}var asmLibraryArg={\"ya\":_CONF_modules_unload,\"Aa\":_ERR_reason_error_string,\"j\":___assert_fail,\"d\":___cxa_allocate_exception,\"m\":___cxa_begin_catch,\"n\":___cxa_end_catch,\"b\":___cxa_find_matching_catch_2,\"c\":___cxa_find_matching_catch_3,\"w\":___cxa_free_exception,\"O\":___cxa_rethrow,\"e\":___cxa_throw,\"ha\":___cxa_uncaught_exceptions,\"i\":___resumeException,\"N\":___syscall_fcntl64,\"fa\":___syscall_ioctl,\"ma\":___syscall_mkdirat,\"R\":___syscall_openat,\"ka\":___syscall_stat64,\"Z\":__embind_register_bigint,\"va\":__embind_register_bool,\"ua\":__embind_register_emval,\"U\":__embind_register_float,\"s\":__embind_register_function,\"x\":__embind_register_integer,\"u\":__embind_register_memory_view,\"T\":__embind_register_std_string,\"J\":__embind_register_std_wstring,\"wa\":__embind_register_void,\"H\":__emscripten_date_now,\"pa\":__emscripten_get_now_is_monotonic,\"la\":__emscripten_get_progname,\"Da\":__emval_call,\"Ea\":__emval_decref,\"Ca\":__emval_equals,\"V\":__emval_incref,\"za\":__emval_take_value,\"qa\":__gmtime_js,\"ra\":__mktime_js,\"sa\":__tzset_js,\"D\":_abort,\"ja\":_emscripten_get_heap_max,\"ia\":_emscripten_resize_heap,\"na\":_environ_get,\"oa\":_environ_sizes_get,\"S\":_exit,\"I\":_fd_close,\"Q\":_fd_read,\"Y\":_fd_seek,\"P\":_fd_write,\"a\":_getTempRet0,\"K\":invoke_diii,\"L\":invoke_fiii,\"t\":invoke_i,\"f\":invoke_ii,\"g\":invoke_iii,\"p\":invoke_iiii,\"o\":invoke_iiiii,\"ga\":invoke_iiiiid,\"A\":invoke_iiiiii,\"v\":invoke_iiiiiii,\"M\":invoke_iiiiiiii,\"F\":invoke_iiiiiiiiiiii,\"W\":invoke_iiiiij,\"ba\":invoke_ji,\"aa\":invoke_jii,\"$\":invoke_jiii,\"da\":invoke_jiiii,\"l\":invoke_v,\"r\":invoke_vi,\"h\":invoke_vii,\"k\":invoke_viii,\"z\":invoke_viiii,\"G\":invoke_viiiii,\"Ba\":invoke_viiiiii,\"y\":invoke_viiiiiii,\"B\":invoke_viiiiiiiiii,\"E\":invoke_viiiiiiiiiiiiiii,\"_\":invoke_viiiji,\"ca\":invoke_viij,\"X\":invoke_viijii,\"q\":_llvm_eh_typeid_for,\"ta\":_proc_exit,\"C\":_setTempRet0,\"ea\":_strftime_l,\"xa\":_v4_generate_JIT_code};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var __ZN5boost13serialization16singleton_module8get_lockEv=Module[\"__ZN5boost13serialization16singleton_module8get_lockEv\"]=function(){return(__ZN5boost13serialization16singleton_module8get_lockEv=Module[\"__ZN5boost13serialization16singleton_module8get_lockEv\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var ___getTypeName=Module[\"___getTypeName\"]=function(){return(___getTypeName=Module[\"___getTypeName\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=function(){return(___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _setThrew=Module[\"_setThrew\"]=function(){return(_setThrew=Module[\"_setThrew\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var ___cxa_can_catch=Module[\"___cxa_can_catch\"]=function(){return(___cxa_can_catch=Module[\"___cxa_can_catch\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module[\"___cxa_is_pointer_type\"]=function(){return(___cxa_is_pointer_type=Module[\"___cxa_is_pointer_type\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var dynCall_ji=Module[\"dynCall_ji\"]=function(){return(dynCall_ji=Module[\"dynCall_ji\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var dynCall_vijjjdi=Module[\"dynCall_vijjjdi\"]=function(){return(dynCall_vijjjdi=Module[\"dynCall_vijjjdi\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var dynCall_vij=Module[\"dynCall_vij\"]=function(){return(dynCall_vij=Module[\"dynCall_vij\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var dynCall_vijj=Module[\"dynCall_vijj\"]=function(){return(dynCall_vijj=Module[\"dynCall_vijj\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var dynCall_viijii=Module[\"dynCall_viijii\"]=function(){return(dynCall_viijii=Module[\"dynCall_viijii\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var dynCall_jiiii=Module[\"dynCall_jiiii\"]=function(){return(dynCall_jiiii=Module[\"dynCall_jiiii\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var dynCall_viij=Module[\"dynCall_viij\"]=function(){return(dynCall_viij=Module[\"dynCall_viij\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var dynCall_viiji=Module[\"dynCall_viiji\"]=function(){return(dynCall_viiji=Module[\"dynCall_viiji\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var dynCall_jii=Module[\"dynCall_jii\"]=function(){return(dynCall_jii=Module[\"dynCall_jii\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var dynCall_jiii=Module[\"dynCall_jiii\"]=function(){return(dynCall_jiii=Module[\"dynCall_jiii\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var dynCall_viiiji=Module[\"dynCall_viiiji\"]=function(){return(dynCall_viiiji=Module[\"dynCall_viiiji\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var dynCall_vijiiii=Module[\"dynCall_vijiiii\"]=function(){return(dynCall_vijiiii=Module[\"dynCall_vijiiii\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var dynCall_iiiij=Module[\"dynCall_iiiij\"]=function(){return(dynCall_iiiij=Module[\"dynCall_iiiij\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var dynCall_jiji=Module[\"dynCall_jiji\"]=function(){return(dynCall_jiji=Module[\"dynCall_jiji\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var dynCall_iiiiij=Module[\"dynCall_iiiiij\"]=function(){return(dynCall_iiiiij=Module[\"dynCall_iiiiij\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var dynCall_iiiiijj=Module[\"dynCall_iiiiijj\"]=function(){return(dynCall_iiiiijj=Module[\"dynCall_iiiiijj\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var dynCall_iiiiiijj=Module[\"dynCall_iiiiiijj\"]=function(){return(dynCall_iiiiiijj=Module[\"dynCall_iiiiiijj\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viij(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viij(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return dynCall_ji(index,a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return dynCall_jii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_jiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiji(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viiiji(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiij(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiij(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module[\"UTF8ToString\"]=UTF8ToString;Module[\"stringToUTF8\"]=stringToUTF8;Module[\"lengthBytesUTF8\"]=lengthBytesUTF8;Module[\"addFunction\"]=addFunction;Module[\"getTempRet0\"]=getTempRet0;Module[\"intArrayToString\"]=intArrayToString;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){EXITSTATUS=status;procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module[\"onExit\"])Module[\"onExit\"](code);ABORT=true}quit_(code,new ExitStatus(code))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();\n\n\n return monero_javascript.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = monero_javascript;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return monero_javascript; });\nelse if (typeof exports === 'object')\n exports[\"monero_javascript\"] = monero_javascript;\n","'use strict'\n\n/**\n * Export all library models.\n * \n * See the full model specification: http://moneroecosystem.org/monero-java/monero-spec.pdf\n */\nmodule.exports = {};\n\n// export common models\nmodule.exports.GenUtils = require(\"./src/main/js/common/GenUtils\");\nmodule.exports.BigInteger = require(\"./src/main/js/common/biginteger\").BigInteger;\nmodule.exports.Filter = require(\"./src/main/js/common/Filter\");\nmodule.exports.MoneroError = require(\"./src/main/js/common/MoneroError\");\nmodule.exports.HttpClient = require(\"./src/main/js/common/HttpClient\");\nmodule.exports.LibraryUtils = require(\"./src/main/js/common/LibraryUtils\");\nmodule.exports.MoneroRpcConnection = require(\"./src/main/js/common/MoneroRpcConnection\");\nmodule.exports.MoneroRpcError = require(\"./src/main/js/common/MoneroRpcError\");\nmodule.exports.SslOptions = require(\"./src/main/js/common/SslOptions\");\nmodule.exports.TaskLooper = require(\"./src/main/js/common/TaskLooper\");\nmodule.exports.ThreadPool = require(\"./src/main/js/common/ThreadPool\");\n\n// export daemon models\nmodule.exports.ConnectionType = require(\"./src/main/js/daemon/model/ConnectionType\");\nmodule.exports.MoneroAltChain = require(\"./src/main/js/daemon/model/MoneroAltChain\");\nmodule.exports.MoneroBan = require(\"./src/main/js/daemon/model/MoneroBan\");\nmodule.exports.MoneroBlockHeader = require(\"./src/main/js/daemon/model/MoneroBlockHeader\");\nmodule.exports.MoneroBlock = require(\"./src/main/js/daemon/model/MoneroBlock\");\nmodule.exports.MoneroBlockTemplate = require(\"./src/main/js/daemon/model/MoneroBlockTemplate\");\nmodule.exports.MoneroConnectionSpan = require(\"./src/main/js/daemon/model/MoneroConnectionSpan\");\nmodule.exports.MoneroDaemonInfo = require(\"./src/main/js/daemon/model/MoneroDaemonInfo\");\nmodule.exports.MoneroDaemonListener = require(\"./src/main/js/daemon/model/MoneroDaemonListener\");\nmodule.exports.MoneroDaemonSyncInfo = require(\"./src/main/js/daemon/model/MoneroDaemonSyncInfo\");\nmodule.exports.MoneroDaemonUpdateCheckResult = require(\"./src/main/js/daemon/model/MoneroDaemonUpdateCheckResult\");\nmodule.exports.MoneroDaemonUpdateDownloadResult = require(\"./src/main/js/daemon/model/MoneroDaemonUpdateDownloadResult\");\nmodule.exports.MoneroFeeEstimate = require(\"./src/main/js/daemon/model/MoneroFeeEstimate\");\nmodule.exports.MoneroHardForkInfo = require(\"./src/main/js/daemon/model/MoneroHardForkInfo\");\nmodule.exports.MoneroKeyImage = require(\"./src/main/js/daemon/model/MoneroKeyImage\");\nmodule.exports.MoneroKeyImageSpentStatus = require(\"./src/main/js/daemon/model/MoneroKeyImageSpentStatus\");\nmodule.exports.MoneroMinerTxSum = require(\"./src/main/js/daemon/model/MoneroMinerTxSum\");\nmodule.exports.MoneroMiningStatus = require(\"./src/main/js/daemon/model/MoneroMiningStatus\");\nmodule.exports.MoneroNetworkType = require(\"./src/main/js/daemon/model/MoneroNetworkType\");\nmodule.exports.MoneroOutput = require(\"./src/main/js/daemon/model/MoneroOutput\");\nmodule.exports.MoneroOutputHistogramEntry = require(\"./src/main/js/daemon/model/MoneroOutputHistogramEntry\");\nmodule.exports.MoneroPruneResult = require(\"./src/main/js/daemon/model/MoneroPruneResult\");\nmodule.exports.MoneroSubmitTxResult = require(\"./src/main/js/daemon/model/MoneroSubmitTxResult\");\nmodule.exports.MoneroTx = require(\"./src/main/js/daemon/model/MoneroTx\");\nmodule.exports.MoneroTxPoolStats = require(\"./src/main/js/daemon/model/MoneroTxPoolStats\");\nmodule.exports.MoneroVersion = require(\"./src/main/js/daemon/model/MoneroVersion\");\nmodule.exports.MoneroPeer = require(\"./src/main/js/daemon/model/MoneroPeer\");\n\n// export wallet models\nmodule.exports.MoneroAccount = require(\"./src/main/js/wallet/model/MoneroAccount\");\nmodule.exports.MoneroAccountTag = require(\"./src/main/js/wallet/model/MoneroAccountTag\");\nmodule.exports.MoneroAddressBookEntry = require(\"./src/main/js/wallet/model/MoneroAddressBookEntry\");\nmodule.exports.MoneroCheck = require(\"./src/main/js/wallet/model/MoneroCheck\");\nmodule.exports.MoneroCheckReserve = require(\"./src/main/js/wallet/model/MoneroCheckReserve\");\nmodule.exports.MoneroCheckTx = require(\"./src/main/js/wallet/model/MoneroCheckTx\");\nmodule.exports.MoneroDestination = require(\"./src/main/js/wallet/model/MoneroDestination\");\nmodule.exports.MoneroIntegratedAddress = require(\"./src/main/js/wallet/model/MoneroIntegratedAddress\");\nmodule.exports.MoneroKeyImageImportResult = require(\"./src/main/js/wallet/model/MoneroKeyImageImportResult\");\nmodule.exports.MoneroMultisigInfo = require(\"./src/main/js/wallet/model/MoneroMultisigInfo\");\nmodule.exports.MoneroMultisigInitResult = require(\"./src/main/js/wallet/model/MoneroMultisigInitResult\");\nmodule.exports.MoneroMultisigSignResult = require(\"./src/main/js/wallet/model/MoneroMultisigSignResult\");\nmodule.exports.MoneroOutputWallet = require(\"./src/main/js/wallet/model/MoneroOutputWallet\");\nmodule.exports.MoneroOutputQuery = require(\"./src/main/js/wallet/model/MoneroOutputQuery\");\nmodule.exports.MoneroTxPriority = require(\"./src/main/js/wallet/model/MoneroTxPriority\");\nmodule.exports.MoneroTxConfig = require(\"./src/main/js/wallet/model/MoneroTxConfig\");\nmodule.exports.MoneroSubaddress = require(\"./src/main/js/wallet/model/MoneroSubaddress\");\nmodule.exports.MoneroSyncResult = require(\"./src/main/js/wallet/model/MoneroSyncResult\");\nmodule.exports.MoneroTransfer = require(\"./src/main/js/wallet/model/MoneroTransfer\");\nmodule.exports.MoneroIncomingTransfer = require(\"./src/main/js/wallet/model/MoneroIncomingTransfer\");\nmodule.exports.MoneroOutgoingTransfer = require(\"./src/main/js/wallet/model/MoneroOutgoingTransfer\");\nmodule.exports.MoneroTransferQuery = require(\"./src/main/js/wallet/model/MoneroTransferQuery\");\nmodule.exports.MoneroTxSet = require(\"./src/main/js/wallet/model/MoneroTxSet\");\nmodule.exports.MoneroTxWallet = require(\"./src/main/js/wallet/model/MoneroTxWallet\");\nmodule.exports.MoneroTxQuery = require(\"./src/main/js/wallet/model/MoneroTxQuery\");\nmodule.exports.MoneroWalletListener = require(\"./src/main/js/wallet/model/MoneroWalletListener\");\nmodule.exports.MoneroWalletConfig = require(\"./src/main/js/wallet/model/MoneroWalletConfig\");\nmodule.exports.MoneroMessageSignatureType = require(\"./src/main/js/wallet/model/MoneroMessageSignatureType\");\nmodule.exports.MoneroMessageSignatureResult = require(\"./src/main/js/wallet/model/MoneroMessageSignatureResult\");\n\n// export connection manager\nmodule.exports.MoneroConnectionManager = require(\"./src/main/js/common/MoneroConnectionManager\");\nmodule.exports.MoneroConnectionManagerListener = require(\"./src/main/js/common/MoneroConnectionManagerListener\");\n\n// export daemon, wallet, and utils classes\nmodule.exports.MoneroUtils = require(\"./src/main/js/common/MoneroUtils\");\nmodule.exports.MoneroDaemon = require(\"./src/main/js/daemon/MoneroDaemon\");\nmodule.exports.MoneroWallet = require(\"./src/main/js/wallet/MoneroWallet\");\nmodule.exports.MoneroDaemonRpc = require(\"./src/main/js/daemon/MoneroDaemonRpc\");\nmodule.exports.MoneroWalletRpc = require(\"./src/main/js/wallet/MoneroWalletRpc\");\nmodule.exports.MoneroWalletKeys = require(\"./src/main/js/wallet/MoneroWalletKeys\");\nmodule.exports.MoneroWalletFull = require(\"./src/main/js/wallet/MoneroWalletFull\");\n\n// ---------------------------- GLOBAL FUNCTIONS ------------------------------\n\n/**\n *

Get the version of the monero-javascript library.

\n * \n * @return {string} the version of this monero-javascript library\n */\nmodule.exports.getVersion = function() {\n return module.exports.MoneroUtils.getVersion();\n}\n\n/**\n *

Create a client connected to monerod.

\n * \n *

Examples:

\n * \n * \n * let daemon = await monerojs.connectToDaemonRpc(\"http://localhost:38081\", \"superuser\", \"abctesting123\");

\n * \n * let daemon = await monerojs.connectToDaemonRpc({
\n *    uri: \"http://localhost:38081\",
\n *    username: \"superuser\",
\n *    password: \"abctesting123\"
\n * });\n *
\n * \n * @param {string|object|MoneroRpcConnection} uriOrConfig - uri of monerod or JS config object or MoneroRpcConnection\n * @param {string} uriOrConfig.uri - uri of monerod\n * @param {string} uriOrConfig.username - username to authenticate with monerod (optional)\n * @param {string} uriOrConfig.password - password to authenticate with monerod (optional)\n * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {number} uriOrConfig.pollInterval - poll interval to query for updates in ms (default 5000)\n * @param {boolean} uriOrConfig.proxyToWorker - run the daemon client in a web worker if true (default true)\n * @param {string} username - username to authenticate with monerod (optional)\n * @param {string} password - password to authenticate with monerod (optional)\n * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {number} pollInterval - poll interval to query for updates in ms (default 5000)\n * @param {boolean} proxyToWorker - runs the daemon client in a web worker if true (default true)\n * @return {MoneroDaemonRpc} the daemon RPC client\n */\nmodule.exports.connectToDaemonRpc = function() { return module.exports.MoneroDaemonRpc._connectToDaemonRpc(...arguments); }\n\n/**\n *

Create a client connected to monero-wallet-rpc.

\n * \n *

Examples:

\n * \n * \n * let walletRpc = await monerojs.connectToWalletRpc(\"http://localhost:38081\", \"superuser\", \"abctesting123\");

\n * \n * let walletRpc = await monerojs.connectToWalletRpc({
\n *    uri: \"http://localhost:38081\",
\n *    username: \"superuser\",
\n *    password: \"abctesting123\",
\n *    rejectUnauthorized: false // e.g. local development
\n * });

\n * \n * // connect to monero-wallet-rpc running as internal process
\n * let walletRpc = await monerojs.connectToWalletRpc([
\n *    \"/path/to/monero-wallet-rpc\",
\n *    \"--stagenet\",
\n *    \"--daemon-address\", \"http://localhost:38081\",
\n *    \"--daemon-login\", \"superuser:abctesting123\",
\n *    \"--rpc-bind-port\", \"38085\",
\n *    \"--rpc-login\", \"rpc_user:abc123\",
\n *    \"--wallet-dir\", \"/path/to/wallets\", // defaults to monero-wallet-rpc directory
\n *    \"--rpc-access-control-origins\", \"http://localhost:8080\"
\n *   ]);\n * \n *
\n * \n * @param {string|string[]|object|MoneroRpcConnection} uriOrConfig - uri of monero-wallet-rpc or terminal parameters or JS config object or MoneroRpcConnection\n * @param {string} uriOrConfig.uri - uri of monero-wallet-rpc\n * @param {string} uriOrConfig.username - username to authenticate with monero-wallet-rpc (optional)\n * @param {string} uriOrConfig.password - password to authenticate with monero-wallet-rpc (optional)\n * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {string} username - username to authenticate with monero-wallet-rpc (optional)\n * @param {string} password - password to authenticate with monero-wallet-rpc (optional)\n * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @return {MoneroWalletRpc} the wallet RPC client\n */\nmodule.exports.connectToWalletRpc = function() { return module.exports.MoneroWalletRpc._connectToWalletRpc(...arguments); }\n\n/**\n *

Create a Monero wallet using fully client-side WebAssembly bindings to monero-project's wallet2 in C++.

\n * \n *

Example:

\n * \n * \n * let wallet = await monerojs.createWalletFull({
\n *    path: \"./test_wallets/wallet1\", // leave blank for in-memory wallet
\n *    password: \"supersecretpassword\",
\n *    networkType: MoneroNetworkType.STAGENET,
\n *    seed: \"coexist igloo pamphlet lagoon...\",
\n *    restoreHeight: 1543218,
\n *    server: new monerojs.MoneroRpcConnection(\"http://localhost:38081\", \"daemon_user\", \"daemon_password_123\"),
\n * });\n *
\n * \n * @param {object|MoneroWalletConfig} config - MoneroWalletConfig or equivalent config object\n * @param {string} config.path - path of the wallet to create (optional, in-memory wallet if not given)\n * @param {string} config.password - password of the wallet to create\n * @param {string|number} config.networkType - network type of the wallet to create (one of \"mainnet\", \"testnet\", \"stagenet\" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)\n * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)\n * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase\n * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)\n * @param {string} config.privateViewKey - private view key of the wallet to create (optional)\n * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)\n * @param {number} config.restoreHeight - block height to start scanning frsom (defaults to 0 unless generating random wallet)\n * @param {string} config.language - language of the wallet's seed (defaults to \"English\" or auto-detected)\n * @param {number} config.accountLookahead - number of accounts to scan (optional)\n * @param {number} config.subaddressLookahead - number of subaddresses to scan per account (optional)\n * @param {string} config.serverUri - uri of the wallet's daemon (optional)\n * @param {string} config.serverUsername - username to authenticate with the daemon (optional)\n * @param {string} config.serverPassword - password to authenticate with the daemon (optional)\n * @param {boolean} config.rejectUnauthorized - reject self-signed server certificates if true (defaults to true)\n * @param {MoneroRpcConnection|object} config.server - MoneroRpcConnection or equivalent JS object providing daemon configuration (optional)\n * @param {boolean} config.proxyToWorker - proxies wallet operations to a web worker in order to not block the main thread (default true)\n * @param {fs} config.fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)\n * @return {MoneroWalletFull} the created wallet\n */\nmodule.exports.createWalletFull = function() { return module.exports.MoneroWalletFull.createWallet(...arguments); }\n\n/**\n *

Open an existing Monero wallet using fully client-side WebAssembly bindings to monero-project's wallet2 in C++.

\n * \n *

Examples:

\n * \n * \n * let wallet1 = await monerojs.openWalletFull(
\n *    \"./wallets/wallet1\",
\n *    \"supersecretpassword\",
\n *    MoneroNetworkType.STAGENET,
\n *    \"http://localhost:38081\" // daemon uri
\n * );

\n * \n * let wallet2 = await monerojs.openWalletFull({
\n *    path: \"./wallets/wallet2\",
\n *    password: \"supersecretpassword\",
\n *    networkType: MoneroNetworkType.STAGENET,
\n *    serverUri: \"http://localhost:38081\", // daemon configuration
\n *    serverUsername: \"superuser\",
\n *    serverPassword: \"abctesting123\"
\n * });\n *
\n * \n * @param {MoneroWalletConfig|object|string} configOrPath - MoneroWalletConfig or equivalent config object or a path to a wallet to open\n * @param {string} configOrPath.path - path of the wallet to open (optional if 'keysData' provided)\n * @param {string} configOrPath.password - password of the wallet to open\n * @param {string|number} configOrPath.networkType - network type of the wallet to open (one of \"mainnet\", \"testnet\", \"stagenet\" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)\n * @param {Uint8Array} configOrPath.keysData - wallet keys data to open (optional if path provided)\n * @param {Uint8Array} configOrPath.cacheData - wallet cache data to open (optional)\n * @param {string} configOrPath.serverUri - uri of the wallet's daemon (optional)\n * @param {string} configOrPath.serverUsername - username to authenticate with the daemon (optional)\n * @param {string} configOrPath.serverPassword - password to authenticate with the daemon (optional)\n * @param {boolean} configOrPath.rejectUnauthorized - reject self-signed server certificates if true (defaults to true)\n * @param {MoneroRpcConnection|object} configOrPath.server - MoneroRpcConnection or equivalent JS object configuring the daemon connection (optional)\n * @param {boolean} configOrPath.proxyToWorker - proxies wallet operations to a web worker in order to not block the main thread (default true)\n * @param {fs} configOrPath.fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)\n * @param {string} password - password of the wallet to open\n * @param {string|number} networkType - network type of the wallet to open\n * @param {string|MoneroRpcConnection} daemonUriOrConnection - daemon URI or MoneroRpcConnection\n * @param {boolean} proxyToWorker - proxies wallet operations to a web worker in order to not block the main thread (default true)\n * @param {fs} fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)\n * @return {MoneroWalletFull} the opened wallet\n */\nmodule.exports.openWalletFull = function() { return module.exports.MoneroWalletFull.openWallet(...arguments); }\n\n/**\n *

Create a wallet using WebAssembly bindings to monero-project.

\n * \n *

Example:

\n * \n * \n * let wallet = await monerojs.createWalletKeys({
\n *    password: \"abc123\",
\n *    networkType: MoneroNetworkType.STAGENET,
\n *    seed: \"coexist igloo pamphlet lagoon...\"
\n * });\n *
\n * \n * @param {MoneroWalletConfig|object} config - MoneroWalletConfig or equivalent config object\n * @param {string|number} config.networkType - network type of the wallet to create (one of \"mainnet\", \"testnet\", \"stagenet\" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)\n * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)\n * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase\n * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)\n * @param {string} config.privateViewKey - private view key of the wallet to create (optional)\n * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)\n * @param {string} config.language - language of the wallet's seed phrase (defaults to \"English\" or auto-detected)\n * @return {MoneroWalletKeys} the created wallet\n */\nmodule.exports.createWalletKeys = function() { return module.exports.MoneroWalletKeys.createWallet(...arguments); }\n","/**\n * Base filter.\n * \n * @private\n */\nclass Filter {\n \n /**\n * Indicates if the given value meets the criteria of this filter.\n * \n * @param val is the value to test\n * @return true if the value meets the criteria of this filter, false otherwise\n */\n meetsCriteria(val) {\n throw new Error(\"Subclass must implement\");\n }\n \n /**\n * Returns a new array comprised of elements from the given array that meet\n * the filter's criteria.\n * \n * @param filter implements meetsCriteria(elem) to filter the given array\n * @param array is the array to apply the filter to\n * @return the new array of filtered elements\n */\n static apply(filter, array) {\n return array.filter(elem => !filter || filter.meetsCriteria(elem));\n }\n}\n\nmodule.exports = Filter;","const assert = require(\"assert\");\nconst BigInteger = require(\"./biginteger\").BigInteger;\n\n/**\n * MIT License\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/**\n * Collection of general purpose utilities.\n * \n * TODO: could pull in assert and remove these asserts\n * TODO: needs cleanup as ES6+ utility class\n */\nclass GenUtils {\n \n /**\n * Indicates if the given argument is defined.\n * \n * @param arg is the arg to test\n * @returns true if the given arg is defined, false otherwise\n */\n static isDefined(arg) {\n return typeof arg !== 'undefined';\n }\n\n /**\n * Indicates if the given argument is undefined.\n * \n * @param arg is the arg to test\n * @returns true if the given arg is undefined, false otherwise\n */\n static isUndefined(arg) {\n return typeof arg === 'undefined';\n }\n\n /**\n * Indicates if the given arg is initialized.\n * \n * @param arg is the arg to test\n * @returns true if the given arg is initialized, false otherwise\n */\n static isInitialized(arg) {\n return arg !== undefined && arg !== null;\n }\n\n /**\n * Indicates if the given arg is uninitialized.\n * \n * @param arg is the arg to test\n * @returns true if the given arg is uninitialized, false otherwise\n */\n static isUninitialized(arg) {\n if (!arg) return true;\n return false;\n }\n\n /**\n * Indicates if the given argument is a number.\n * \n * @param arg is the argument to test\n * @returns true if the argument is a number, false otherwise\n */\n static isNumber(arg) {\n return !isNaN(parseFloat(arg)) && isFinite(arg);\n }\n\n /**\n * Indicates if the given argument is an integer.\n * \n * @param arg is the argument to test\n * @returns true if the given argument is an integer, false otherwise\n */\n static isInt(arg) {\n return arg === parseInt(Number(arg)) && !isNaN(arg) && !isNaN(parseInt(arg, 10));\n }\n\n /**\n * Indicates if the given argument is an array.\n * \n * @param arg is the argument to test as being an array\n * @returns true if the argument is an array, false otherwise\n */\n static isArray(arg) {\n return arg instanceof Array && Array.isArray(arg);\n }\n\n /**\n * Indicates if the given argument is a string.\n * \n * @param arg is the argument to test as being a string\n * @returns true if the argument is a string, false otherwise\n */\n static isString(arg) {\n return typeof arg === 'string';\n }\n\n /**\n * Determines if the given argument is a boolean.\n * \n * @param arg is the argument to test as being a boolean\n * @returns true if the argument is a boolean, false otherwise\n */\n static isBoolean(arg) {\n return typeof(arg) == typeof(true);\n }\n\n /**\n * Determines if the given argument is a static.\n * \n * @param arg is the argument to test as being a static\n * @returns true if the argument is a static, false otherwise\n */\n static isFunction(arg) {\n return typeof arg === \"static\";\n }\n\n /**\n * Indicates if the given argument is an object and optionally if it has the given constructor name.\n * \n * @param arg is the argument to test\n * @param obj is an object to test arg instanceof obj (optional)\n * @returns true if the given argument is an object and optionally has the given constructor name\n */\n static isObject(arg, obj) {\n if (!arg) return false;\n if (typeof arg !== 'object') return false;\n if (obj && !(arg instanceof obj)) return false;\n return true;\n }\n\n /**\n * Determines if all alphabet characters in the given string are upper case.\n * \n * @param str is the string to test\n * @returns true if the string is upper case, false otherwise\n */\n static isUpperCase(str) {\n return str.toUpperCase() === str;\n }\n\n /**\n * Determines if all alphabet characters in the given string are lower case.\n * \n * @param str is the string to test\n * @param true if the string is lower case, false otherwise\n */\n static isLowerCase(str) {\n return str.toLowerCase() === str;\n }\n\n /**\n * Asserts that the given argument is hex.\n * \n * @param arg is the argument to assert as hex\n * @param msg is the message to throw if the argument is not hex\n */\n static assertHex(str, msg) {\n GenUtils.assertTrue(isHex(str), msg ? msg : \"Argument asserted as hex but is not hex\");\n }\n\n /**\n * Indicates if the given argument is a hexidemal string.\n * \n * Credit: https://github.com/roryrjb/is-hex/blob/master/is-hex.js.\n * \n * @param str is the string to test\n * @returns true if the given string is hexidecimal, false otherwise\n */\n static isHex(arg) {\n if (typeof arg !== 'string') return false;\n if (arg.length === 0) return false;\n return (arg.match(/([0-9]|[a-f])/gim) || []).length === arg.length;\n }\n\n /**\n * Determines if the given string is base32.\n */\n static isBase32(str) {\n if (typeof str !== 'string') return false;\n GenUtils.assertTrue(str.length > 0, \"Cannot determine if empty string is base32\");\n return /^[ABCDEFGHIJKLMNOPQRSTUVWXYZ234567]+$/.test(str);\n }\n\n /**\n * Asserts that the given argument is base58.\n * \n * @param arg is the argument to assert as base58\n * @param msg is the message to throw if the argument is not base58\n */\n static assertBase58(str, msg) {\n GenUtils.assertTrue(isBase58(str), msg ? msg : \"Argument asserted as base58 but is not base58\");\n }\n\n /**\n * Determines if the given string is base58.\n */\n static isBase58(str) {\n if (typeof str !== 'string') return false;\n GenUtils.assertTrue(str.length > 0, \"Cannot determine if empty string is base58\");\n return /^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+$/.test(str);\n }\n\n /**\n * Asserts that the given argument is base64.\n * \n * @param arg is the argument to assert as base64\n * @param msg is the message to throw if the argument is not base64\n */\n static assertBase64(str, msg) {\n GenUtils.assertTrue(isBase64(str), msg ? msg : \"Argument asserted as base64 but is not base64\");\n }\n\n /**\n * Determines if the given string is base64.\n */\n static isBase64(str) {\n if (typeof str !== 'string') return false;\n GenUtils.assertTrue(str.length > 0, \"Cannot determine if empty string is base64\");\n try {\n return btoa(atob(str)) == str;\n } catch (err) {\n return false;\n }\n }\n\n /**\n * Throws an exception with the given message.\n * \n * @param msg defines the message to throw the exception with (optional)\n */\n static fail(msg) {\n throw new Error(msg ? msg : \"Failure (no message)\");\n }\n\n /**\n * Asserts that the given boolean is true. Throws an exception if not a boolean or false.\n * \n * @param bool is the boolean to assert true\n * @param msg is the message to throw if bool is false (optional)\n */\n static assertTrue(bool, msg) {\n if (typeof bool !== 'boolean') throw new Error(\"Argument is not a boolean\");\n if (!bool) throw new Error(msg ? msg : \"Boolean asserted as true but was false\");\n }\n\n /**\n * Asserts that the given boolean is false. Throws an exception if not a boolean or true.\n * \n * @param bool is the boolean to assert false\n * @param msg is the message to throw if bool is true (optional)\n */\n static assertFalse(bool, msg) {\n if (typeof bool !== 'boolean') throw new Error(\"Argument is not a boolean\");\n if (bool) throw new Error(msg ? msg : \"Boolean asserted as false but was true\");\n }\n\n /**\n * Asserts that the given argument is null. Throws an exception if not null.\n * \n * @param arg is the argument to assert null\n * @param msg is the message to throw if arg is not null (optional)\n */\n static assertNull(arg, msg) {\n if (arg !== null) throw new Error(msg ? msg : \"Argument asserted as null but was not null: \" + arg);\n }\n\n /**\n * Asserts that the given argument is not null. Throws an exception if null.\n * \n * @param arg is the argument to assert not null\n * @param msg is the message to throw if arg is null (optional)\n */\n static assertNotNull(arg, msg) {\n if (arg === null) throw new Error(msg ? msg : \"Argument asserted as not null but was null\");\n }\n\n /**\n * Asserts that the given argument is defined. Throws an exception if undefined.\n * \n * @param arg is the argument to assert defined\n * @param msg is the message to throw if arg is undefined (optional)\n */\n static assertDefined(arg, msg) {\n if (GenUtils.isUndefined(arg)) throw new Error(msg ? msg : \"Argument asserted as defined but was undefined\");\n }\n\n /**\n * Asserts that the given argument is undefined. Throws an exception if defined.\n * \n * @param arg is the argument to assert undefined\n * @param msg is the message to throw if arg is defined (optional)\n */\n static assertUndefined(arg, msg) {\n if (GenUtils.isDefined(arg)) throw new Error(msg ? msg : \"Argument asserted as undefined but was defined: \" + arg);\n }\n\n /**\n * Asserts that the given argument is initialized. Throws an exception if not initialized.\n * \n * @param arg is the argument to assert as initialized\n * @param msg is the message to throw if arg is not initialized (optional)\n */\n static assertInitialized(arg, msg) {\n if (GenUtils.isUninitialized(arg)) {\n throw new Error(msg ? msg : \"Argument asserted as initialized but was \" + arg);\n }\n }\n\n /**\n * Asserts that the given argument is uninitialized. Throws an exception if initialized.\n * \n * @param arg is the argument to assert as uninitialized\n * @param msg is the message to throw if arg is initialized (optional)\n */\n static assertUninitialized(arg, msg) {\n if (GenUtils.isInitialized(arg)) throw new Error(msg ? msg : \"Argument asserted as uninitialized but was initialized\");\n }\n\n /**\n * Asserts that the given arguments are equal. Throws an exception if not equal.\n * \n * @param arg1 is an argument to assert as equal\n * @param arg2 is an argument to assert as equal\n * @param msg is the message to throw if the arguments are not equal\n */\n static assertEquals(arg1, arg2, msg) {\n GenUtils.assertTrue(GenUtils.equals(arg1, arg2), msg ? msg : \"Arguments asserted as equal but are not equal: \" + arg1 + \" vs \" + arg2);\n }\n\n /**\n * Asserts that the given arguments are not equal. Throws an exception if equal.\n * \n * @param arg1 is an argument to assert as not equal\n * @param arg2 is an argument to assert as not equal\n * @param msg is the message to throw if the arguments are equal\n */\n static assertNotEquals(arg1, arg2, msg) {\n if (arg1 === arg2) throw new Error(msg ? msg : \"Arguments asserted as not equal but are equal: \" + arg1 + \" vs \" + arg2);\n }\n\n /**\n * Asserts that the given argument is an integer.\n * \n * @param arg is the argument to assert as an integer\n * @param msg is the message to throw if the argument is not an integer\n */\n static assertInt(arg, msg) {\n if (!GenUtils.isInt(arg)) throw new Error(msg ? msg : \"Argument asserted as an integer but is not an integer\");\n }\n\n /**\n * Asserts that the given argument is a number.\n * \n * @param arg is the argument to assert as a number\n * @param msg is the message to throw if the argument is not a number\n */\n static assertNumber(arg, msg) {\n if (!GenUtils.isNumber(arg)) throw new Error(msg ? msg : \"Argument asserted as a number but is not a number\");\n }\n\n /**\n * Asserts that the given argument is a boolean.\n * \n * @param arg is the argument to assert as a boolean\n * @param msg is the message to throw if the argument is not a boolean\n */\n static assertBoolean(arg, msg) {\n if (!GenUtils.isBoolean(arg)) throw new Error(msg ? msg : \"Argument asserted as a boolean but is not a boolean\");\n }\n\n /**\n * Asserts that the given argument is a string.\n * \n * @param arg is the argument to assert as a string\n * @param msg is the message to throw if the argument is not a string\n */\n static assertString(arg, msg) {\n if (!GenUtils.isString(arg)) throw new Error(msg ? msg : \"Argument asserted as a string but is not a string: \" + arg);\n }\n\n /**\n * Asserts that the given argument is an array.\n * \n * @param arg is the argument to assert as an array\n * @param msg is the message to throw if the argument is not an array\n */\n static assertArray(arg, msg) {\n if (!GenUtils.isArray(arg)) throw new Error(msg ? msg : \"Argument asserted as an array but is not an array\");\n }\n\n /**\n * Asserts that the given argument is a static.\n * \n * @param arg is the argument to assert as a static\n * @param msg is the message to throw if the argument is not a static\n */\n static assertFunction(arg, msg) {\n if (!GenUtils.isFunction(arg)) throw new Error(msg ? msg : \"Argument asserted as a static but is not a static\");\n }\n\n /**\n * Asserts that the given argument is an object with the given name.\n * \n * @param arg is the argument to test\n * @param obj is an object to assert arg instanceof obj (optional)\n * @param msg is the message to throw if the argument is not the specified object\n */\n static assertObject(arg, obj, msg) {\n GenUtils.assertInitialized(arg, msg);\n if (obj) {\n if (!isObject(arg, obj)) throw new Error(msg ? msg : \"Argument asserted as object '\" + obj.name + \"' but was not\");\n } else {\n if (!isObject(arg)) throw new Error(msg ? msg : \"Argument asserted as object but was not\");\n }\n }\n\n /**\n * Sets the child's prototype to the parent's prototype.\n * \n * @param child is the child class\n * @param parent is the parent class\n */\n static inheritsFrom(child, parent) {\n child.prototype = Object.create(parent.prototype);\n child.prototype.constructor = child;\n }\n\n /**\n * Invokes functions with arguments.\n * \n * arguments[0] is assumed to be an array of functions to invoke\n * arguments[1...n] are args to invoke the functions with\n */\n static invoke() {\n let fns = arguments[0];\n let args = [];\n for (let i = 1; i < arguments.length; i++) args.push(arguments[i]);\n for (let i = 0; i < fns.length; i++) {\n assertFunction(fns[i], \"Functions[\" + i + \"] is not a static\");\n fns[i].apply(null, args);\n }\n }\n\n /**\n * Returns the power set of the given array.\n * \n * @param arr is the array to get the power set of\n * @returns [][] is the power set of the given array\n */\n static getPowerSet(arr) {\n let fn = function(n, src, got, all) {\n if (n == 0) {\n if (got.length > 0) {\n all[all.length] = got;\n }\n return;\n }\n for (let j = 0; j < src.length; j++) {\n fn(n - 1, src.slice(j + 1), got.concat([ src[j] ]), all);\n }\n return;\n }\n let all = [];\n all.push([]);\n for (let i = 0; i < arr.length; i++) {\n fn(i, arr, [], all);\n }\n all.push(arr);\n return all;\n }\n\n /**\n * Returns the power set of the given array whose elements are the given size.\n * \n * @param arr is the array to get the power set of\n * @param size is the required size of the elements within the power set\n * returns [][] is the power set of the given array whose elements are the given size \n */\n static getPowerSetOfLength(arr, size) {\n assertInitialized(arr);\n assertInitialized(size);\n GenUtils.assertTrue(size >= 1);\n let powerSet = getPowerSet(arr);\n let powerSetOfLength = [];\n for (let i = 0; i < powerSet.length; i++) {\n if (powerSet[i].length === size) {\n powerSetOfLength.push(powerSet[i]);\n }\n }\n return powerSetOfLength;\n }\n\n /**\n * Returns an array of indices of the given size.\n * \n * @param size specifies the size to get indices for\n * @returns array of the given size with indices starting at 0\n */\n static getIndices(size) {\n let indices = [];\n for (let i = 0; i < size; i++) {\n indices.push(i);\n }\n return indices;\n }\n\n /**\n * Returns a new array containing unique elements of the given array.\n * \n * @param arr is the array to return unique elements from\n * @returns a new array with the given array's unique elements\n */\n static toUniqueArray(arr) {\n return arr.filter(function(value, index, self) {\n return self.indexOf(value) === index;\n });\n }\n\n /**\n * Copies the given array.\n * \n * @param arr is the array to copy\n * @returns a copy of the given array\n */\n static copyArray(arr) {\n GenUtils.assertArray(arr);\n let copy = [];\n for (let i = 0; i < arr.length; i++) copy.push(arr[i]);\n return copy;\n }\n \n /**\n * Removes every instance of the given value from the given array.\n * \n * @param arr is the array to remove the value from\n * @param val is the value to remove from the array\n * @returns true if the value is found and removed, false otherwise\n */\n static remove(arr, val) {\n let found = false;\n for (let i = arr.length - 1; i >= 0; i--) {\n if (arr[i] === val) {\n arr.splice(i, 1);\n found = true;\n i--;\n }\n }\n return found;\n }\n\n /**\n * Returns a copy of the given array where each element is lowercase.\n * \n * @param arr is the array to convert to lowercase\n * @returns a copy of the given array where each element is lowercase\n */\n static toLowerCaseArray(arr) {\n let arr2 = [];\n for (let i = 0; i < arr.length; i++) {\n arr2.push(arr[i].toLowerCase());\n }\n return arr2;\n }\n\n /**\n * Listifies the given argument.\n * \n * @param arrOrElem is an array or an element in the array\n * @returns an array which is the given arg if it's an array or an array with the given arg as an element\n */\n static listify(arrOrElem) {\n return GenUtils.isArray(arrOrElem) ? arrOrElem : [arrOrElem];\n }\n\n /**\n * Indicates if the given array contains the given object.\n * \n * @param {object[]} arr - array that may or may not contain the object\n * @param {object} obj - object to check for inclusion in the array\n * @param {boolean} compareByReference - compare strictly by reference, forgoing deep equality check\n * @returns true if the array contains the object, false otherwise\n */\n static arrayContains(arr, obj, compareByReference) {\n GenUtils.assertTrue(GenUtils.isArray(arr));\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] === obj) return true;\n if (!compareByReference && GenUtils.equals(arr[i], obj)) return true;\n }\n return false;\n }\n\n /**\n * Indicates if the given string contains the given substring.\n * \n * @param str is the string to search for a substring\n * @param substring is the substring to searchin within the string\n * @returns true if the substring is within the string, false otherwise\n */\n static strContains(str, substring) {\n return str.indexOf(substring) > -1;\n }\n\n /**\n * Determines if two arrays are equal.\n * \n * @param arr1 is an array to compare\n * @param arr2 is an array to compare\n * @returns true if the arrays are equal, false otherwise\n */\n static arraysEqual(arr1, arr2) {\n if (arr1 === arr2) return true;\n if (arr1 == null && arr2 == null) return true;\n if (arr1 == null || arr2 == null) return false;\n if (typeof arr1 === 'undefined' && typeof arr2 === 'undefined') return true;\n if (typeof arr1 === 'undefined' || typeof arr2 === 'undefined') return false;\n if (!GenUtils.isArray(arr1)) throw new Error(\"First argument is not an array\");\n if (!GenUtils.isArray(arr2)) throw new Error(\"Second argument is not an array\");\n if (arr1.length != arr2.length) return false;\n for (let i = 0; i < arr1.length; ++i) {\n if (!GenUtils.equals(arr1[i], arr2[i])) return false;\n }\n return true;\n }\n\n /**\n * Determines if two arguments are deep equal.\n * \n * @param arg1 is an argument to compare\n * @param arg2 is an argument to compare\n * @returns true if the arguments are deep equals, false otherwise\n */\n static equals(arg1, arg2) {\n if (GenUtils.isArray(arg1) && GenUtils.isArray(arg2)) return GenUtils.arraysEqual(arg1, arg2);\n if (GenUtils.isObject(arg1) && GenUtils.isObject(arg2)) return GenUtils.objectsEqual(arg1, arg2);\n return arg1 === arg2;\n }\n \n /**\n * Determines if two objects are deep equal.\n * \n * Undefined values are considered equal to non-existent keys.\n * \n * @param map1 is a map to compare\n * @param map2 is a map to compare\n * @returns true if the maps have identical keys and values, false otherwise\n */\n static objectsEqual(map1, map2) {\n let keys1 = Object.keys(map1);\n let keys2 = Object.keys(map2);\n \n // compare each key1 to keys2\n for (let key1 of keys1) {\n let found = false;\n for (let key2 of keys2) {\n if (key1 === key2) {\n if (!GenUtils.equals(map1[key1], map2[key2])) return false;\n found = true;\n break;\n }\n }\n if (!found && map1[key1] !== undefined) return false; // allows undefined values to equal non-existent keys\n }\n \n // compare each key2 to keys1\n for (let key2 of keys2) {\n let found = false;\n for (let key1 of keys1) {\n if (key1 === key2) {\n found = true; // no need to re-compare which was done earlier\n break;\n }\n }\n if (!found && map2[key2] !== undefined) return false; // allows undefined values to equal non-existent keys\n }\n return true;\n \n // TODO: support strict option?\n// if (strict) {\n// let keys1 = Object.keys(map1);\n// if (keys1.length !== Object.keys(map2).length) return false;\n// for (let i = 0; i < keys1.length; i++) {\n// let key = Object.keys(map1)[i];\n// if (!GenUtils.equals(map1[key], map2[key])) return false;\n// }\n// }\n }\n \n /**\n * Deletes properties from the object that are undefined.\n * \n * @param obj is the object to delete undefined keys from\n */\n static deleteUndefinedKeys(obj) {\n for (let key of Object.keys(obj)) {\n if (obj[key] === undefined) delete obj[key];\n }\n }\n\n /**\n * Returns combinations of the given array of the given size.\n * \n * @param arr is the array to get combinations from\n * @param combinationSize specifies the size of each combination\n */\n static getCombinations(arr, combinationSize) {\n \n // validate input\n assertInitialized(arr);\n assertInitialized(combinationSize);\n GenUtils.assertTrue(combinationSize >= 1);\n \n // get combinations of array indices of the given size\n let indexCombinations = getPowerSetOfLength(getIndices(arr.length), combinationSize);\n \n // collect combinations from each combination of array indices\n let combinations = [];\n for (let indexCombinationsIdx = 0; indexCombinationsIdx < indexCombinations.length; indexCombinationsIdx++) {\n \n // get combination of array indices\n let indexCombination = indexCombinations[indexCombinationsIdx];\n \n // build combination from array\n let combination = [];\n for (let indexCombinationIdx = 0; indexCombinationIdx < indexCombination.length; indexCombinationIdx++) {\n combination.push(arr[indexCombination[indexCombinationIdx]]);\n }\n \n // add to combinations\n combinations.push(combination);\n }\n \n return combinations;\n }\n\n /**\n * Gets an 'a' element that is downloadable when clicked.\n * \n * @param name is the name of the file to download\n * @param contents are the string contents of the file to download\n * @returns 'a' dom element with downloadable file\n */\n static getDownloadableA(name, contents) {\n let a = window.document.createElement('a');\n a.href = window.URL.createObjectURL(new Blob([contents], {type: 'text/plain'}));\n a.download = name;\n a.target=\"_blank\";\n a.innerHTML = name;\n return a;\n }\n\n /**\n * Returns the given node's outer HTML.\n * \n * @param node is the node to get outer HTML for\n * @returns the outer HTML of the given node\n */\n static getOuterHtml(node) {\n return $('
').append($(node).clone()).html();\n }\n\n /**\n * Copies properties in the given object to a new object.\n * \n * @param obj is object to copy properties for\n * @returns a new object with properties copied from the given object\n */\n static copyProperties(obj) {\n return JSON.parse(JSON.stringify(obj))\n }\n\n /**\n * Deletes all properties in the given object.\n * \n * @param obj is the object to delete properties from\n */\n static deleteProperties(obj) {\n let props = [];\n for (let prop in obj) props.push(prop); // TODO: if (obj.hasOwnProperty(prop)) { ...\n for (i = 0; i < props.length; i++) delete obj[props[i].toString()];\n }\n\n /**\n * Converts a CSV string to a 2-dimensional array of strings.\n * \n * @param csv is the CSV string to convert\n * @returns a 2-dimensional array of strings\n */\n static csvToArr(csv) {\n return $.csv.toArrays(csv);\n }\n\n /**\n * Converts the given array to a CSV string.\n * \n * @param arr is a 2-dimensional array of strings\n * @returns the CSV string\n */\n static arrToCsv(arr) {\n return $.csv.fromObjects(arr, {headers: false});\n }\n\n /**\n * Indicates if the given string contains whitespace.\n * \n * @param str is the string to test\n * @returns true if the string contains whitespace, false otherwise\n */\n static hasWhitespace(str) {\n return /\\s/g.test(str);\n }\n\n /**\n * Indicates if the given character is whitespace.\n * \n * @param char is the character to test\n * @returns true if the given character is whitespace, false otherwise\n */\n static isWhitespace(char) {\n return /\\s/.test(char);\n }\n\n /**\n * Indicates if the given character is a newline.\n * \n * @param char is the character to test\n * @returns true if the given character is a newline, false otherwise\n */\n static isNewline(char) {\n return char === '\\n' || char === '\\r';\n }\n\n /**\n * Counts the number of non-whitespace characters in the given string.\n * \n * @param str is the string to count the number of non-whitespace characters in\n * @returns int is the number of non-whitespace characters in the given string\n */\n static countNonWhitespaceCharacters(str) {\n let count = 0;\n for (let i = 0; i < str.length; i++) {\n if (!isWhitespace(str.charAt(i))) count++;\n }\n return count;\n }\n\n /**\n * Returns tokens separated by whitespace from the given string.\n * \n * @param str is the string to get tokens from\n * @returns string[] are the tokens separated by whitespace within the string\n */\n static getWhitespaceTokens(str) {\n return str.match(/\\S+/g);\n }\n\n /**\n * Returns lines separated by newlines from the given string.\n * \n * @param str is the string to get lines from\n * @param string[] are the lines separated by newlines within the string\n */\n static getLines(str) {\n return str.match(/[^\\r\\n]+/g);\n }\n\n /**\n * Returns the document's first stylesheet which has no href.\n * \n * @returns StyleSheet is the internal stylesheet\n */\n static getInternalStyleSheet() {\n for (let i = 0; i < document.styleSheets.length; i++) {\n let styleSheet = document.styleSheets[i];\n if (!styleSheet.href) return styleSheet;\n }\n return null;\n }\n\n /**\n * Returns the document's internal stylesheet as text.\n * \n * @returns str is the document's internal stylesheet\n */\n static getInternalStyleSheetText() {\n let internalCss = \"\";\n let internalStyleSheet = getInternalStyleSheet();\n if (!internalStyleSheet) return null;\n for (let i = 0; i < internalStyleSheet.cssRules.length; i++) {\n internalCss += internalStyleSheet.cssRules[i].cssText + \"\\n\";\n }\n return internalCss;\n }\n\n /**\n * Manually builds an HTML document string.\n * \n * @param content specifies optional document content\n * content.div is a pre-existing div to stringify and add to the body\n * content.title is the title of the new tab\n * content.dependencyPaths specifies paths to js, css, or img paths\n * content.internalCss is css to embed in the html document\n * content.metas are meta elements with keys/values to include\n * @returns str is the document string\n */\n static buildHtmlDocument(content) {\n let str = \"\";\n str += \"\";\n \n // add metas\n if (content.metas) {\n let metas = listify(content.metas);\n for (let i = 0; i < metas.length; i++) {\n let meta = metas[i];\n let elem = document.createElement(\"meta\");\n for (let prop in meta) {\n if (meta.hasOwnProperty(prop)) {\n elem.setAttribute(prop.toString(), meta[prop.toString()]);\n }\n }\n str += elem.outerHTML;\n }\n }\n \n // add title and internal css\n str += content.title ? \"\" + content.title + \"\" : \"\";\n str += content.internalCss ? \"\" : \"\";\n \n // add dependency paths\n if (content.dependencyPaths) {\n let dependencyPaths = listify(content.dependencyPaths);\n for (let i = 0; i < dependencyPaths.length; i++) {\n let dependencyPath = dependencyPaths[i];\n if (dependencyPath.endsWith(\".js\")) str += \"\";\n else if (dependencyPath.endsWith(\".css\")) str += \"\";\n else if (dependencyPath.endsWith(\".png\") || dependencyPath.endsWith(\".img\")) str += \"\";\n else throw new Error(\"Unrecognized dependency path extension: \" + dependencyPath); \n }\n }\n str += \"\";\n if (content.div) str += $(\"
\").append(content.div.clone()).html(); // add cloned div as string\n str += \"\";\n return str;\n }\n\n /**\n * Opens the given div in a new window.\n * \n * @param content specifies optional window content\n * content.div is a pre-existing div to stringify and add to the body\n * content.title is the title of the new tab\n * content.dependencyPaths specifies paths to js, css, or img paths\n * content.internalCss is css to embed in the html document\n * content.metas are meta elements with keys/values to include\n * @param onLoad(err, window) is invoked with a reference to the window when available\n */\n static newWindow(content, onLoad) {\n let onLoadCalled = false;\n let w = window.open();\n if (!isInitialized(w) || !isInitialized(w.document)) {\n onLoadOnce(new Error(\"Could not get window reference\"));\n return;\n }\n w.opener = null;\n w.document.write(buildHtmlDocument(content));\n w.addEventListener('load', function() {\n onLoadOnce(null, w);\n });\n w.document.close();\n \n // prevents onLoad() from being called multiple times\n function onLoadOnce(err, window) {\n if (onLoadCalled) return;\n onLoadCalled = true;\n if (onLoad) onLoad(err, window);\n }\n }\n\n /**\n * Converts the given image to a base64 encoded data url.\n * \n * @param img is the image to convert\n * @param quality is a number between 0 and 1 specifying the image quality\n */\n static imgToDataUrl(img, quality) {\n let canvas = document.createElement('canvas');\n canvas.height = img.naturalHeight;\n canvas.width = img.naturalWidth;\n let context = canvas.getContext('2d');\n context.drawImage(img, 0, 0);\n return canvas.toDataURL(quality);\n }\n\n /**\n * Determines if the image at the given URL is accessible.\n * \n * @param url is the url to an image\n * @param timeout is the maximum time to wait\n * @param onDone(bool) when the image is determined to be accessible or not\n */\n static isImageAccessible(url, timeout, onDone) {\n \n // track return so it only executes once\n let returned = false;\n \n // attempt to load favicon\n let img = new Image();\n img.onload = onResponse;\n img.onerror = onResponse;\n img.src = url + \"?\" + (+new Date()); // trigger image load with cache buster\n \n // nest failure timeouts to give response a chance when browser is under load\n setTimeout(function() {\n setImmediate(function() {\n setImmediate(function() {\n setImmediate(function() {\n if (!returned) {\n returned = true;\n onDone(false);\n }\n });\n });\n });\n }, timeout);\n \n function onResponse(e) {\n if (returned) return;\n returned = true;\n if (typeof e === 'undefined' || e.type === \"error\") onDone(false);\n else onDone(true);\n }\n }\n\n /**\n * Determines if the given file is a zip file.\n * \n * @param file is a file\n * @returns true if the given file is a zip file, false otherwise\n */\n static isZipFile(file) {\n return file.name.endsWith(\".zip\") || file.type === 'application/zip';\n }\n\n /**\n * Determines if the given file is a json file.\n * \n * @param file is a file\n * @returns true if the given file is a json file, false otherwise\n */\n static isJsonFile(file) {\n return file.name.endsWith(\".json\") || file.type === 'application/json';\n }\n\n /**\n * Determines if the given file is a csv file.\n * \n * @param file is a file\n * @returns true if the given file is a csv file, false otherwise\n */\n static isCsvFile(file) {\n return file.name.endsWith(\".csv\") || file.type === 'text/csv';\n }\n\n /**\n * Determines if the given file is a txt file.\n * \n * @param file is a file\n * @returns true if the given file is a txt file, false otherwise\n */\n static isTxtFile(file) {\n return file.name.endsWith(\".txt\") || file.type === 'text/plain';\n }\n\n /**\n * Fetches the given list of images.\n * \n * Prerequisite: async.js.\n * \n * @param paths are the paths to the images to fetch\n * @param onDone(err, images) is called when done\n */\n static getImages(paths, onDone) {\n \n // listify paths\n if (!GenUtils.isArray(paths)) {\n GenUtils.assertTrue(isString(paths));\n paths = [paths];\n }\n \n // collect functions to fetch images\n let funcs = [];\n for (let i = 0; i < paths.length; i++) {\n funcs.push(loadFunc(paths[i]));\n }\n \n // fetch in parallel\n async.parallel(funcs, onDone);\n \n // callback static to fetch a single image\n function loadFunc(path) {\n return function(onDone) {\n let img = new Image();\n img.onload = function() { onDone(null, img); }\n img.onerror = function() { onDone(new Error(\"Cannot load image: \" + path)); }\n img.src = path;\n }\n }\n }\n \n /**\n * Returns a string indentation of the given length;\n * \n * @param length is the length of the indentation\n * @returns {string} is an indentation string of the given length\n */\n static getIndent(length) {\n let str = \"\";\n for (let i = 0; i < length; i++) str += ' '; // two spaces\n return str;\n }\n \n static initPolyfills() {\n \n // Polyfill Object.assign()\n // Credit: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n if (typeof Object.assign != 'static') {\n // Must be writable: true, enumerable: false, configurable: true\n Object.defineProperty(Object, \"assign\", {\n value: function assign(target, varArgs) { // .length of static is 2\n 'use strict';\n if (target == null) { // TypeError if undefined or null\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n let to = Object(target);\n\n for (let index = 1; index < arguments.length; index++) {\n let nextSource = arguments[index];\n\n if (nextSource != null) { // Skip over if undefined or null\n for (let nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n },\n writable: true,\n configurable: true\n });\n }\n \n /**\n * Polyfill str.replaceAt(idx, replacement).\n */\n String.prototype.replaceAt=function(idx, replacement) {\n return this.substr(0, idx) + replacement + this.substr(idx + replacement.length);\n }\n\n /**\n * Polyfill str.startsWith(searchString, position).\n * \n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith#Polyfill\n */\n String.prototype.startsWith = function(searchString, position) {\n return this.substr(position || 0, searchString.length) === searchString;\n };\n\n /**\n * Polyfill str.endsWith(searchString, position).\n * \n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith#Polyfill\n */\n String.prototype.endsWith = function(searchString, position) {\n if (!(position < this.length)) position = this.length; // works better than >= because it compensates for NaN\n else position |= 0; // round position\n return this.substr(position - searchString.length, searchString.length) === searchString;\n }\n\n /**\n * Removes the given value from the array.\n * \n * @returns true if the value was found and removed, false otherwise\n */\n Array.prototype.removeVal = function(val) {\n var found = false;\n for (var i = 0; i < this.length; i++) {\n if (this[i] == val) { \n found = true;\n this.splice(i, 1);\n i--;\n }\n }\n return found;;\n };\n }\n\n /**\n * Generates a v4 UUID.\n * \n * Source: https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n */\n static getUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n \n /**\n * Indicates if the current environment is a browser.\n * \n * @return {boolean} true if the environment is a browser, false otherwise\n */\n static isBrowser() {\n let isWorker = typeof importScripts === 'function';\n let isBrowserMain = new Function(\"try {return this===window;}catch(e){return false;}\")();\n let isJsDom = isBrowserMain ? new Function(\"try {return window.navigator.userAgent.includes('jsdom');}catch(e){return false;}\")() : false;\n return isWorker || (isBrowserMain && !isJsDom);\n }\n \n /**\n * Indicates if the current environment is a firefox-based browser.\n * \n * @return {boolean} true if the environment is a firefox-based browser, false otherwise\n */\n static isFirefox() {\n return this.isBrowser() && navigator.userAgent.indexOf(\"Firefox\") > 0;\n }\n\n /**\n * Gets the IE version number.\n * \n * Credit: https://stackoverflow.com/questions/19999388/check-if-user-is-using-ie-with-jquery/21712356#21712356\n * \n * @returns the IE version number or null if not IE\n */\n static getIEVersion() {\n let ua = window.navigator.userAgent;\n\n let msie = ua.indexOf('MSIE ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n\n let trident = ua.indexOf('Trident/');\n if (trident > 0) {\n // IE 11 => return version number\n let rv = ua.indexOf('rv:');\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n }\n\n let edge = ua.indexOf('Edge/');\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n }\n\n // other browser\n return null;\n }\n\n /**\n * Gets a parameter value.\n * \n * Credit: https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript\n * \n * @param name is the name of the parameter to get the value of\n * @param url is a URL to get the parameter from, uses the window's current href if not given\n * @returns the parameter's value\n */\n static getParameterByName(name, url) {\n if (!url) url = window.location.href;\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\n let regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"), results = regex.exec(url);\n if (!results) return null;\n if (!results[2]) return '';\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n }\n \n /**\n * Gets a non-cryptographically secure random number within a given range.\n * \n * @param min is the minimum range of the int to generate, inclusive\n * @param max is the maximum range of the int to generate, inclusive\n * \n * Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random\n */\n static getRandomInt(min, max) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n \n /**\n * Gets random ints.\n * \n * @param min is the minimum range of the ints to generate, inclusive\n * @param max is the maximum range of the ints to generate, inclusive\n * @param count is the number of random ints to get\n */\n static getRandomInts(min, max, count) {\n GenUtils.assertTrue(typeof count === \"number\");\n let ints = [];\n for (let i = 0; i < count; i++) ints.push(GenUtils.getRandomInt(min, max));\n return ints;\n }\n \n /**\n * Gets a given number of unique random ints within a range.\n * \n * @param min is the minimum range of the ints to generate, inclusive\n * @param max is the maximum range of the ints to generate, inclusive\n * @param count is the number of unique random ints to get\n */\n static getUniqueRandomInts(min, max, count) {\n let ints = [];\n GenUtils.assertTrue(count >= 0);\n GenUtils.assertTrue(max - min + 1 >= count);\n while (ints.length < count) {\n let randomInt = GenUtils.getRandomInt(min, max);\n if (!ints.includes(randomInt)) ints.push(randomInt);\n }\n return ints;\n }\n \n /**\n * Randomize array element order in-place using Durstenfeld shuffle algorithm.\n * \n * Credit: https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array\n */\n static shuffle(array) {\n for (var i = array.length - 1; i > 0; i--) {\n var j = Math.floor(Math.random() * (i + 1));\n var temp = array[i];\n array[i] = array[j];\n array[j] = temp;\n }\n }\n \n /**\n * Sorts an array by natural ordering.\n * \n * @param the array to sort\n */\n static sort(array) {\n array.sort((a, b) => a === b ? 0 : a > b ? 1 : -1);\n }\n \n /**\n * Sets the given value ensuring a previous value is not overwritten.\n * \n * TODO: remove for portability because function passing not supported in other languages, use reconcile only\n * \n * @param obj is the object to invoke the getter and setter on\n * @param getFn gets the current value\n * @param setFn sets the current value\n * @param val is the value to set iff it does not overwrite a previous value\n * @param config specifies reconciliation configuration\n * config.resolveDefined uses defined value if true or undefined, undefined if false\n * config.resolveTrue uses true over false if true, false over true if false, must be equal if undefined\n * config.resolveMax uses max over min if true, min over max if false, must be equal if undefined\n * @param errMsg is the error message to throw if the values cannot be reconciled (optional)\n */\n static safeSet(obj, getFn, setFn, val, config, errMsg) {\n let curVal = getFn.call(obj);\n let reconciledVal = GenUtils.reconcile(curVal, val, config, errMsg);\n if (curVal !== reconciledVal) setFn.call(obj, reconciledVal);\n }\n \n /**\n * Reconciles two values.\n * \n * TODO: remove custom error message\n * \n * @param val1 is a value to reconcile\n * @param val2 is a value to reconcile\n * @param config specifies reconciliation configuration\n * config.resolveDefined uses defined value if true or undefined, undefined if false\n * config.resolveTrue uses true over false if true, false over true if false, must be equal if undefined\n * config.resolveMax uses max over min if true, min over max if false, must be equal if undefined\n * @param errMsg is the error message to throw if the values cannot be reconciled (optional)\n * @returns the reconciled value if reconcilable, throws error otherwise\n */\n static reconcile(val1, val2, config, errMsg) {\n \n // check for equality\n if (val1 === val2) return val1;\n \n // check for BigInteger equality\n let comparison; // save comparison for later if applicable\n if (val1 instanceof BigInteger && val2 instanceof BigInteger) {\n comparison = val1.compare(val2); \n if (comparison === 0) return val1;\n }\n \n // resolve one value defined\n if (val1 === undefined || val2 === undefined) {\n if (config && config.resolveDefined === false) return undefined; // use undefined\n else return val1 === undefined ? val2 : val1; // use defined value\n }\n \n // resolve different booleans\n if (config && config.resolveTrue !== undefined && typeof val1 === \"boolean\" && typeof val2 === \"boolean\") {\n assert.equal(typeof config.resolveTrue, \"boolean\");\n return config.resolveTrue;\n }\n \n // resolve different numbers\n if (config && config.resolveMax !== undefined) {\n assert.equal(typeof config.resolveMax, \"boolean\");\n \n // resolve js numbers\n if (typeof val1 === \"number\" && typeof val2 === \"number\") {\n return config.resolveMax ? Math.max(val1, val2) : Math.min(val1, val2);\n }\n \n // resolve BigIntegers\n if (val1 instanceof BigInteger && val2 instanceof BigInteger) {\n return config.resolveMax ? (comparison < 0 ? val2 : val1) : (comparison < 0 ? val1 : val2);\n }\n }\n \n // assert deep equality\n assert.deepEqual(val1, val2, errMsg ? errMsg : \"Cannot reconcile values \" + val1 + \" and \" + val2 + \" with config: \" + JSON.stringify(config));\n return val1;\n }\n \n /**\n * Returns a human-friendly key value line.\n * \n * @param key is the key\n * @param value is the value\n * @param indent indents the line\n * @param newline specifies if the string should be terminated with a newline or not\n * @param ignoreUndefined specifies if undefined values should return an empty string\n * @returns {string} is the human-friendly key value line\n */\n static kvLine(key, value, indent = 0, newline = true, ignoreUndefined = true) {\n if (value === undefined && ignoreUndefined) return \"\";\n return GenUtils.getIndent(indent) + key + \": \" + value + (newline ? '\\n' : \"\");\n }\n \n /**\n * Replace big integers (16 or more consecutive digits) with strings in order\n * to preserve numeric precision.\n * \n * @param {string} str is the string to be modified\n * @return {string} the modified string with big numbers converted to strings\n */\n static stringifyBIs(str) {\n return str.replace(/(\"[^\"]*\"\\s*:\\s*)(\\d{16,})/g, '$1\"$2\"');\n }\n \n /**\n * Print the current stack trace. \n * \n * @param {string} msg - optional message to print with the trace\n */\n static printStackTrace(msg) {\n try { throw new Error(msg); }\n catch (err) { console.error(err.stack); }\n }\n \n /**\n * Wait for the duration.\n * \n * @param {number} durationMs - the duration to wait for in milliseconds\n */\n static async waitFor(durationMs) {\n return new Promise(function(resolve) { setTimeout(resolve, durationMs); });\n }\n \n /**\n * Kill the given nodejs child process.\n * \n * @param {process} process - the nodejs child process to kill\n * @param {string|undefined} signal - the kill signal, e.g. SIGTERM, SIGKILL, SIGINT (default)\n * @return {Promise} the exit code from killing the process\n */\n static async killProcess(process, signal) {\n return new Promise((resolve, reject) => {\n process.on(\"exit\", function(code, signal) { resolve(code); });\n process.on(\"error\", function(err) { reject(err); });\n try {\n if (!process.kill(signal ? signal : \"SIGINT\")) resolve(); // resolve immediately if not running\n } catch (err) {\n reject(err);\n }\n });\n }\n}\n\nmodule.exports = GenUtils;","const GenUtils = require(\"../common/GenUtils\");\nconst LibraryUtils = require(\"./LibraryUtils\");\nconst MoneroUtils = require(\"./MoneroUtils\");\nconst ThreadPool = require(\"./ThreadPool\");\nconst PromiseThrottle = require(\"promise-throttle\");\nconst Request = require(\"request-promise\");\n\n/**\n * Handle HTTP requests with a uniform interface.\n * \n * @hideconstructor\n */\nclass HttpClient {\n \n /**\n *

Make a HTTP request.

\n * \n * @param {object} request - configures the request to make\n * @param {string} request.method - HTTP method (\"GET\", \"PUT\", \"POST\", \"DELETE\", etc)\n * @param {string} request.uri - uri to request\n * @param {string|object|Uint8Array} request.body - request body\n * @param {string} request.username - username to authenticate the request (optional)\n * @param {string} request.password - password to authenticate the request (optional)\n * @param {object} request.headers - headers to add to the request (optional)\n * @param {string} request.requestApi - one of \"fetch\" or \"xhr\" (default \"fetch\")\n * @param {boolean} request.resolveWithFullResponse - return full response if true, else body only (default false)\n * @param {boolean} request.rejectUnauthorized - whether or not to reject self-signed certificates (default true)\n * @param {number} request.timeout - maximum time allowed in milliseconds\n * @param {number} request.proxyToWorker - proxy request to worker thread\n * @returns {object} response - the response object\n * @returns {string|object|Uint8Array} response.body - the response body\n * @returns {number} response.statusCode - the response code\n * @returns {String} response.statusText - the response message\n * @returns {object} response.headers - the response headers\n */\n static async request(request) {\n \n // proxy to worker if configured\n if (request.proxyToWorker) {\n try {\n return await LibraryUtils.invokeWorker(GenUtils.getUUID(), \"httpRequest\", request);\n } catch (err) {\n if (err.message.length > 0 && err.message.charAt(0) === \"{\") {\n let parsed = JSON.parse(err.message);\n err.message = parsed.statusMessage;\n err.statusCode = parsed.statusCode;\n }\n throw err;\n }\n }\n \n // assign defaults\n request = Object.assign({}, HttpClient._DEFAULT_REQUEST, request);\n \n // validate request\n try { request.host = new URL(request.uri).host; } // hostname:port\n catch (err) { throw new Error(\"Invalid request URL: \" + request.uri); }\n if (request.body && !(typeof request.body === \"string\" || typeof request.body === \"object\")) {\n throw new Error(\"Request body type is not string or object\");\n }\n \n // initialize one task queue per host\n if (!HttpClient._TASK_QUEUES[request.host]) HttpClient._TASK_QUEUES[request.host] = new ThreadPool(1);\n \n // initialize one promise throttle per host\n if (!HttpClient._PROMISE_THROTTLES[request.host]) {\n HttpClient._PROMISE_THROTTLES[request.host] = new PromiseThrottle({\n requestsPerSecond: MoneroUtils.MAX_REQUESTS_PER_SECOND, // TODO: HttpClient should not depend on MoneroUtils for configuration\n promiseImplementation: Promise\n });\n }\n \n // request using fetch or xhr with timeout\n let timeout = request.timeout === undefined ? HttpClient._DEFAULT_TIMEOUT : request.timeout === 0 ? HttpClient.MAX_TIMEOUT : request.timeout;\n let requestPromise = request.requestApi === \"fetch\" ? HttpClient._requestFetch(request) : HttpClient._requestXhr(request);\n let timeoutPromise = new Promise((resolve, reject) => {\n let id = setTimeout(() => {\n clearTimeout(id);\n reject('Request timed out in '+ timeout + ' milliseconds')\n }, timeout);\n });\n return Promise.race([requestPromise, timeoutPromise]);\n }\n \n // ----------------------------- PRIVATE HELPERS ----------------------------\n \n static async _requestFetch(req) {\n \n // build request options\n let opts = {\n method: req.method,\n uri: req.uri,\n body: req.body,\n agent: req.uri.startsWith(\"https\") ? HttpClient._getHttpsAgent() : HttpClient._getHttpAgent(),\n rejectUnauthorized: req.rejectUnauthorized,\n resolveWithFullResponse: req.resolveWithFullResponse,\n requestCert: true // TODO: part of config?\n };\n if (req.username) {\n opts.forever = true;\n opts.auth = {\n user: req.username,\n pass: req.password,\n sendImmediately: false\n }\n }\n if (req.body instanceof Uint8Array) opts.encoding = null;\n \n // queue and throttle request to execute in serial and rate limited\n let host = req.host;\n let resp = await HttpClient._TASK_QUEUES[host].submit(async function() {\n return HttpClient._PROMISE_THROTTLES[host].add(function(opts) { return Request(opts); }.bind(this, opts));\n });\n \n // normalize response\n let normalizedResponse = {};\n if (req.resolveWithFullResponse) {\n normalizedResponse.statusCode = resp.statusCode;\n normalizedResponse.statusText = resp.statusMessage;\n normalizedResponse.headers = resp.headers;\n normalizedResponse.body = resp.body;\n } else {\n normalizedResponse.body = resp;\n }\n return normalizedResponse;\n }\n \n static async _requestXhr(req) {\n if (req.headers) throw new Error(\"Custom headers not implemented in XHR request\"); // TODO\n \n // collect params from request which change on await\n let method = req.method;\n let uri = req.uri;\n let host = req.host;\n let username = req.username;\n let password = req.password;\n let body = req.body;\n let isBinary = body instanceof Uint8Array;\n \n // queue and throttle requests to execute in serial and rate limited per host\n let resp = await HttpClient._TASK_QUEUES[host].submit(async function() {\n return HttpClient._PROMISE_THROTTLES[host].add(function() {\n return new Promise(function(resolve, reject) {\n let digestAuthRequest = new HttpClient.digestAuthRequest(method, uri, username, password);\n digestAuthRequest.request(function(resp) {\n resolve(resp);\n }, function(resp) {\n if (resp.status) resolve(resp);\n else reject(new Error(\"Request failed without response: \" + method + \" \" + uri));\n }, body);\n });\n }.bind(this));\n });\n \n // normalize response\n let normalizedResponse = {};\n normalizedResponse.statusCode = resp.status;\n normalizedResponse.statusText = resp.statusText;\n normalizedResponse.headers = HttpClient._parseXhrResponseHeaders(resp.getAllResponseHeaders());\n normalizedResponse.body = isBinary ? new Uint8Array(resp.response) : resp.response;\n if (normalizedResponse.body instanceof ArrayBuffer) normalizedResponse.body = new Uint8Array(normalizedResponse.body); // handle empty binary request\n return normalizedResponse;\n }\n \n /**\n * Get a singleton instance of an HTTP client to share.\n * \n * @return {http.Agent} a shared agent for network requests among library instances\n */\n static _getHttpAgent() {\n if (!HttpClient.HTTP_AGENT) {\n let http = require('http');\n HttpClient.HTTP_AGENT = new http.Agent({keepAlive: true});\n }\n return HttpClient.HTTP_AGENT;\n }\n \n /**\n * Get a singleton instance of an HTTPS client to share.\n * \n * @return {https.Agent} a shared agent for network requests among library instances\n */\n static _getHttpsAgent() {\n if (!HttpClient.HTTPS_AGENT) {\n let https = require('https');\n HttpClient.HTTPS_AGENT = new https.Agent({keepAlive: true});\n }\n return HttpClient.HTTPS_AGENT;\n }\n \n \n static _parseXhrResponseHeaders(headersStr) {\n let headerMap = {};\n let headers = headersStr.trim().split(/[\\r\\n]+/);\n for (let header of headers) {\n let headerVals = header.split(\": \");\n headerMap[headerVals[0]] = headerVals[1];\n }\n return headerMap;\n }\n}\n\n/**\n * Modification of digest auth request by @inorganik.\n * \n * Dependent on CryptoJS MD5 hashing: http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/md5.js\n * \n * MIT licensed.\n */\nHttpClient.digestAuthRequest = function(method, url, username, password) {\n var self = this;\n\n if (typeof CryptoJS === 'undefined' && typeof require === 'function') {\n var CryptoJS = require('crypto-js');\n }\n\n this.scheme = null; // we just echo the scheme, to allow for 'Digest', 'X-Digest', 'JDigest' etc\n this.nonce = null; // server issued nonce\n this.realm = null; // server issued realm\n this.qop = null; // \"quality of protection\" - '' or 'auth' or 'auth-int'\n this.response = null; // hashed response to server challenge\n this.opaque = null; // hashed response to server challenge\n this.nc = 1; // nonce count - increments with each request used with the same nonce\n this.cnonce = null; // client nonce\n\n // settings\n this.timeout = 60000; // timeout\n this.loggingOn = false; // toggle console logging\n\n // determine if a post, so that request will send data\n this.post = false;\n if (method.toLowerCase() === 'post' || method.toLowerCase() === 'put') {\n this.post = true;\n }\n\n // start here\n // successFn - will be passed JSON data\n // errorFn - will be passed the failed authenticatedRequest\n // data - optional, for POSTS\n this.request = function(successFn, errorFn, data) {\n \n // stringify json\n if (data) {\n try {\n self.data = data instanceof Uint8Array || typeof data === \"string\" ? data : JSON.stringify(data);\n } catch (err) {\n console.error(err);\n throw err;\n }\n }\n self.successFn = successFn;\n self.errorFn = errorFn;\n\n if (!self.nonce) {\n self.makeUnauthenticatedRequest(self.data);\n } else {\n self.makeAuthenticatedRequest();\n }\n }\n this.makeUnauthenticatedRequest = function(data) {\n self.firstRequest = new XMLHttpRequest();\n self.firstRequest.open(method, url, true);\n self.firstRequest.timeout = self.timeout;\n // if we are posting, add appropriate headers\n if (self.post && data) {\n if (typeof data === \"string\") {\n self.firstRequest.setRequestHeader('Content-type', 'text/plain');\n } else {\n self.firstRequest.responseType = \"arraybuffer\";\n }\n }\n\n self.firstRequest.onreadystatechange = function() {\n\n // 2: received headers, 3: loading, 4: done\n if (self.firstRequest.readyState === 2) {\n\n var responseHeaders = self.firstRequest.getAllResponseHeaders();\n responseHeaders = responseHeaders.split('\\n');\n // get authenticate header\n var digestHeaders;\n for(var i = 0; i < responseHeaders.length; i++) {\n if (responseHeaders[i].match(/www-authenticate/i) != null) {\n digestHeaders = responseHeaders[i];\n }\n }\n\n if (digestHeaders != null) {\n // parse auth header and get digest auth keys\n digestHeaders = digestHeaders.slice(digestHeaders.indexOf(':') + 1, -1);\n digestHeaders = digestHeaders.split(',');\n self.scheme = digestHeaders[0].split(/\\s/)[1];\n for (var i = 0; i < digestHeaders.length; i++) {\n var equalIndex = digestHeaders[i].indexOf('='),\n key = digestHeaders[i].substring(0, equalIndex),\n val = digestHeaders[i].substring(equalIndex + 1);\n val = val.replace(/['\"]+/g, '');\n // find realm\n if (key.match(/realm/i) != null) {\n self.realm = val;\n }\n // find nonce\n if (key.match(/nonce/i) != null) {\n self.nonce = val;\n }\n // find opaque\n if (key.match(/opaque/i) != null) {\n self.opaque = val;\n }\n // find QOP\n if (key.match(/qop/i) != null) {\n self.qop = val;\n }\n }\n // client generated keys\n self.cnonce = self.generateCnonce();\n self.nc++;\n // if logging, show headers received:\n self.log('received headers:');\n self.log(' realm: '+self.realm);\n self.log(' nonce: '+self.nonce);\n self.log(' opaque: '+self.opaque);\n self.log(' qop: '+self.qop);\n // now we can make an authenticated request\n self.makeAuthenticatedRequest();\n }\n }\n if (self.firstRequest.readyState === 4) {\n if (self.firstRequest.status === 200) {\n self.log('Authentication not required for '+url);\n if (data instanceof Uint8Array) {\n self.successFn(self.firstRequest);\n } else {\n if (self.firstRequest.responseText !== 'undefined') {\n if (self.firstRequest.responseText.length > 0) {\n // If JSON, parse and return object\n if (self.isJson(self.firstRequest.responseText)) { // TODO: redundant\n self.successFn(self.firstRequest);\n } else {\n self.successFn(self.firstRequest);\n }\n }\n } else {\n self.successFn();\n }\n }\n }\n }\n }\n // send\n if (self.post) {\n // in case digest auth not required\n self.firstRequest.send(self.data);\n } else {\n self.firstRequest.send();\n }\n self.log('Unauthenticated request to '+url);\n\n // handle error\n self.firstRequest.onerror = function() {\n if (self.firstRequest.status !== 401) {\n self.log('Error ('+self.firstRequest.status+') on unauthenticated request to '+url);\n self.errorFn(self.firstRequest);\n }\n }\n }\n this.makeAuthenticatedRequest= function() {\n\n self.response = self.formulateResponse();\n self.authenticatedRequest = new XMLHttpRequest();\n self.authenticatedRequest.open(method, url, true);\n self.authenticatedRequest.timeout = self.timeout;\n var digestAuthHeader = self.scheme+' '+\n 'username=\"'+username+'\", '+\n 'realm=\"'+self.realm+'\", '+\n 'nonce=\"'+self.nonce+'\", '+\n 'uri=\"'+url+'\", '+\n 'response=\"'+self.response+'\", '+\n 'opaque=\"'+self.opaque+'\", '+\n 'qop='+self.qop+', '+\n 'nc='+('00000000' + self.nc).slice(-8)+', '+\n 'cnonce=\"'+self.cnonce+'\"';\n self.authenticatedRequest.setRequestHeader('Authorization', digestAuthHeader);\n self.log('digest auth header response to be sent:');\n self.log(digestAuthHeader);\n // if we are posting, add appropriate headers\n if (self.post && self.data) {\n if (typeof self.data === \"string\") {\n self.authenticatedRequest.setRequestHeader('Content-type', 'text/plain');\n } else {\n self.authenticatedRequest.responseType = \"arraybuffer\"; \n }\n }\n self.authenticatedRequest.onload = function() {\n // success\n if (self.authenticatedRequest.status >= 200 && self.authenticatedRequest.status < 400) {\n // increment nonce count\n self.nc++;\n // return data\n if (self.data instanceof Uint8Array) {\n self.successFn(self.authenticatedRequest);\n } else {\n if (self.authenticatedRequest.responseText !== 'undefined' && self.authenticatedRequest.responseText.length > 0 ) {\n // If JSON, parse and return object\n if (self.isJson(self.authenticatedRequest.responseText)) { // TODO: redundant from not parsing\n self.successFn(self.authenticatedRequest);\n } else {\n self.successFn(self.authenticatedRequest);\n }\n } else {\n self.successFn();\n }\n }\n }\n // failure\n else {\n self.nonce = null;\n self.errorFn(self.authenticatedRequest);\n }\n }\n // handle errors\n self.authenticatedRequest.onerror = function() {\n self.log('Error ('+self.authenticatedRequest.status+') on authenticated request to '+url);\n self.nonce = null;\n self.errorFn(self.authenticatedRequest);\n };\n // send\n if (self.post) {\n self.authenticatedRequest.send(self.data);\n } else {\n self.authenticatedRequest.send();\n }\n self.log('Authenticated request to '+url);\n }\n // hash response based on server challenge\n this.formulateResponse = function() {\n var HA1 = CryptoJS.MD5(username+':'+self.realm+':'+password).toString();\n var HA2 = CryptoJS.MD5(method+':'+url).toString();\n var response = CryptoJS.MD5(HA1+':'+\n self.nonce+':'+\n ('00000000' + self.nc).slice(-8)+':'+\n self.cnonce+':'+\n self.qop+':'+\n HA2).toString();\n return response;\n }\n // generate 16 char client nonce\n this.generateCnonce = function() {\n var characters = 'abcdef0123456789';\n var token = '';\n for (var i = 0; i < 16; i++) {\n var randNum = Math.round(Math.random() * characters.length);\n token += characters.substr(randNum, 1);\n }\n return token;\n }\n this.abort = function() {\n self.log('[digestAuthRequest] Aborted request to '+url);\n if (self.firstRequest != null) {\n if (self.firstRequest.readyState != 4) self.firstRequest.abort();\n }\n if (self.authenticatedRequest != null) {\n if (self.authenticatedRequest.readyState != 4) self.authenticatedRequest.abort();\n }\n }\n this.isJson = function(str) {\n try {\n JSON.parse(str);\n } catch (err) {\n return false;\n }\n return true;\n }\n this.log = function(str) {\n if (self.loggingOn) {\n console.log('[digestAuthRequest] '+str);\n }\n }\n this.version = function() { return '0.8.0' }\n}\n\n// default request config\nHttpClient._DEFAULT_REQUEST = {\n method: \"GET\",\n requestApi: \"fetch\",\n resolveWithFullResponse: false,\n rejectUnauthorized: true\n}\n\n// rate limit requests per host\nHttpClient._PROMISE_THROTTLES = [];\nHttpClient._TASK_QUEUES = [];\nHttpClient._DEFAULT_TIMEOUT = 60000;\nHttpClient.MAX_TIMEOUT = 2147483647; // max 32-bit signed number\n\nmodule.exports = HttpClient;","const assert = require(\"assert\");\nconst GenUtils = require(\"./GenUtils\");\nconst MoneroError = require(\"./MoneroError\");\nconst ThreadPool = require(\"./ThreadPool\");\n\n/**\n * Collection of helper utilities for the library.\n * \n * @hideconstructor\n */\nclass LibraryUtils {\n \n /**\n * Log a message.\n *\n * @param {int} level - log level of the message\n * @param {string} msg - message to log\n */\n static log(level, msg) {\n assert(level === parseInt(level, 10) && level >= 0, \"Log level must be an integer >= 0\");\n if (LibraryUtils.LOG_LEVEL >= level) console.log(msg);\n }\n \n /**\n * Set the library's log level with 0 being least verbose.\n *\n * @param {int} level - the library's log level\n */\n static async setLogLevel(level) {\n assert(level === parseInt(level, 10) && level >= 0, \"Log level must be an integer >= 0\");\n LibraryUtils.LOG_LEVEL = level;\n if (LibraryUtils.WASM_MODULE) LibraryUtils.WASM_MODULE.set_log_level(level);\n if (LibraryUtils.WORKER) await LibraryUtils.invokeWorker(GenUtils.getUUID(), \"setLogLevel\", [level]);\n }\n \n /**\n * Get the library's log level.\n *\n * @return {int} the library's log level\n */\n static getLogLevel() {\n return LibraryUtils.LOG_LEVEL;\n }\n \n /**\n * Get the total memory used by WebAssembly.\n * \n * @return {int} the total memory used by WebAssembly\n */\n static async getWasmMemoryUsed() {\n let total = 0;\n if (LibraryUtils.WORKER) total += await LibraryUtils.invokeWorker(GenUtils.getUUID(), \"getWasmMemoryUsed\", []);\n if (LibraryUtils.getWasmModule() && LibraryUtils.getWasmModule().HEAP8) total += LibraryUtils.getWasmModule().HEAP8.length;\n return total;\n }\n \n /**\n * Get the WebAssembly module in the current context (nodejs, browser main thread or worker).\n */\n static getWasmModule() {\n return LibraryUtils.WASM_MODULE;\n }\n \n /**\n * Load the WebAssembly keys module with caching.\n */\n static async loadKeysModule() {\n \n // use cache if suitable, full module supersedes keys module because it is superset\n if (LibraryUtils.WASM_MODULE) return LibraryUtils.WASM_MODULE;\n \n // load module\n delete LibraryUtils.WASM_MODULE;\n LibraryUtils.WASM_MODULE = require(\"../../../../dist/monero_wallet_keys\")();\n return new Promise(function(resolve, reject) {\n LibraryUtils.WASM_MODULE.then(module => {\n LibraryUtils.WASM_MODULE = module\n delete LibraryUtils.WASM_MODULE.then;\n LibraryUtils._initWasmModule(LibraryUtils.WASM_MODULE);\n resolve(LibraryUtils.WASM_MODULE);\n });\n });\n }\n \n /**\n * Load the WebAssembly full module with caching.\n * \n * The full module is a superset of the keys module and overrides it.\n * \n * TODO: this is separate static function from loadKeysModule() because webpack cannot bundle worker using runtime param for conditional import\n */\n static async loadFullModule() {\n \n // use cache if suitable, full module supersedes keys module because it is superset\n if (LibraryUtils.WASM_MODULE && LibraryUtils.FULL_LOADED) return LibraryUtils.WASM_MODULE;\n \n // load module\n delete LibraryUtils.WASM_MODULE;\n LibraryUtils.WASM_MODULE = require(\"../../../../dist/monero_wallet_full\")();\n return new Promise(function(resolve, reject) {\n LibraryUtils.WASM_MODULE.then(module => {\n LibraryUtils.WASM_MODULE = module;\n delete LibraryUtils.WASM_MODULE.then;\n LibraryUtils.FULL_LOADED = true;\n LibraryUtils._initWasmModule(LibraryUtils.WASM_MODULE);\n resolve(LibraryUtils.WASM_MODULE);\n });\n });\n }\n \n /**\n * Register a function by id which informs if unauthorized requests (e.g.\n * self-signed certificates) should be rejected.\n * \n * @param {string} fnId - unique identifier for the function\n * @param {function} fn - function to inform if unauthorized requests should be rejected\n */\n static setRejectUnauthorizedFn(fnId, fn) {\n if (!LibraryUtils.REJECT_UNAUTHORIZED_FNS) LibraryUtils.REJECT_UNAUTHORIZED_FNS = [];\n if (fn === undefined) delete LibraryUtils.REJECT_UNAUTHORIZED_FNS[fnId];\n else LibraryUtils.REJECT_UNAUTHORIZED_FNS[fnId] = fn;\n }\n \n /**\n * Indicate if unauthorized requests should be rejected.\n * \n * @param {string} fnId - uniquely identifies the function\n */\n static isRejectUnauthorized(fnId) {\n if (!LibraryUtils.REJECT_UNAUTHORIZED_FNS[fnId]) throw new Error(\"No function registered with id \" + fnId + \" to inform if unauthorized reqs should be rejected\");\n return LibraryUtils.REJECT_UNAUTHORIZED_FNS[fnId]();\n }\n \n /**\n * Set the path to load the worker. Defaults to \"/monero_web_worker.js\" in the browser\n * and \"./MoneroWebWorker.js\" in node.\n * \n * @param {string} workerDistPath - path to load the worker\n */\n static setWorkerDistPath(workerDistPath) {\n let path = LibraryUtils._prefixWindowsPath(workerDistPath ? workerDistPath : LibraryUtils.WORKER_DIST_PATH_DEFAULT);\n if (path !== LibraryUtils.WORKER_DIST_PATH) delete LibraryUtils.WORKER;\n LibraryUtils.WORKER_DIST_PATH = path;\n }\n\n /**\n * Get a singleton instance of a worker to share.\n * \n * @return {Worker} a worker to share among wallet instances\n */\n static async getWorker() {\n \n // one time initialization\n if (!LibraryUtils.WORKER) {\n if (GenUtils.isBrowser()) LibraryUtils.WORKER = new Worker(LibraryUtils.WORKER_DIST_PATH);\n else { \n const Worker = require(\"web-worker\"); // import web worker if nodejs\n LibraryUtils.WORKER = new Worker(LibraryUtils.WORKER_DIST_PATH);\n }\n LibraryUtils.WORKER_OBJECTS = {}; // store per object running in the worker\n \n // receive worker errors\n LibraryUtils.WORKER.onerror = function(err) {\n console.error(\"Error posting message to MoneroWebWorker.js; is it copied to the app's build directory (e.g. in the root)?\");\n console.log(err);\n };\n \n // receive worker messages\n LibraryUtils.WORKER.onmessage = function(e) {\n \n // lookup object id, callback function, and this arg\n let thisArg = null;\n let callbackFn = LibraryUtils.WORKER_OBJECTS[e.data[0]].callbacks[e.data[1]]; // look up by object id then by function name\n if (callbackFn === undefined) throw new Error(\"No worker callback function defined for key '\" + e.data[1] + \"'\");\n if (callbackFn instanceof Array) { // this arg may be stored with callback function\n thisArg = callbackFn[1];\n callbackFn = callbackFn[0];\n }\n \n // invoke callback function with this arg and arguments\n callbackFn.apply(thisArg, e.data.slice(2));\n }\n }\n return LibraryUtils.WORKER;\n }\n \n /**\n * Terminate monero-javascript's singleton worker.\n */\n static async terminateWorker() {\n if (LibraryUtils.WORKER) {\n LibraryUtils.WORKER.terminate();\n delete LibraryUtils.WORKER;\n LibraryUtils.WORKER = undefined;\n }\n }\n \n /**\n * Invoke a worker function and get the result with error handling.\n * \n * @param {objectId} identifies the worker object to invoke\n * @param {string} fnName is the name of the function to invoke\n * @param {Object[]} args are function arguments to invoke with\n * @return {any} resolves with response payload from the worker or an error\n */\n static async invokeWorker(objectId, fnName, args) {\n assert(fnName.length >= 2);\n let worker = await LibraryUtils.getWorker();\n if (!LibraryUtils.WORKER_OBJECTS[objectId]) LibraryUtils.WORKER_OBJECTS[objectId] = {callbacks: {}};\n return await new Promise(function(resolve, reject) {\n let callbackId = GenUtils.getUUID();\n LibraryUtils.WORKER_OBJECTS[objectId].callbacks[callbackId] = function(resp) { // TODO: this defines function once per callback\n resp ? (resp.error ? reject(LibraryUtils.deserializeError(resp.error)) : resolve(resp.result)) : resolve();\n delete LibraryUtils.WORKER_OBJECTS[objectId].callbacks[callbackId];\n };\n worker.postMessage([objectId, fnName, callbackId].concat(args === undefined ? [] : GenUtils.listify(args)));\n });\n }\n\n static serializeError(err) {\n const serializedErr = { name: err.name, message: err.message, stack: err.stack };\n if (err instanceof MoneroError) serializedErr.type = \"MoneroError\";\n return serializedErr;\n }\n\n static deserializeError(serializedErr) {\n const err = serializedErr.type === \"MoneroError\" ? new MoneroError(serializedErr.message) : new Error(serializedErr.message);\n err.name = serializedErr.name;\n err.stack = serializedErr.stack;\n return err;\n }\n \n // ------------------------------ PRIVATE HELPERS ---------------------------\n \n static _initWasmModule(wasmModule) {\n wasmModule.taskQueue = new ThreadPool(1);\n wasmModule.queueTask = async function(asyncFn) { return wasmModule.taskQueue.submit(asyncFn); }\n }\n \n static _prefixWindowsPath(path) {\n if (/^[A-Z]:/.test(path) && path.indexOf(\"file://\") == -1) path = \"file://\" + path; // prepend e.g. C: paths with file://\n return path;\n }\n}\n\nLibraryUtils.LOG_LEVEL = 0;\nLibraryUtils.WORKER_DIST_PATH_DEFAULT = GenUtils.isBrowser() ? \"/monero_web_worker.js\" : function() {\n const path = require(\"path\");\n return LibraryUtils._prefixWindowsPath(path.join(__dirname, \"./MoneroWebWorker.js\"));\n}();\nLibraryUtils.WORKER_DIST_PATH = LibraryUtils.WORKER_DIST_PATH_DEFAULT;\n\nmodule.exports = LibraryUtils;","const GenUtils = require(\"./GenUtils\");\nconst MoneroError = require(\"./MoneroError\");\nconst MoneroRpcConnection = require(\"./MoneroRpcConnection\");\nconst TaskLooper = require(\"./TaskLooper\");\nconst ThreadPool = require(\"./ThreadPool\");\n\n/**\n *

Manages a collection of prioritized connections to daemon or wallet RPC endpoints.

\n *\n *

Example usage:

\n * \n * \n * // imports
\n * const monerojs = require(\"monero-javascript\");
\n * const MoneroRpcConnection = monerojs.MoneroRpcConnection;
\n * const MoneroConnectionManager = monerojs.MoneroConnectionManager;
\n * const MoneroConnectionManagerListener = monerojs.MoneroConnectionManagerListener;

\n * \n * // create connection manager
\n * let connectionManager = new MoneroConnectionManager();

\n * \n * // add managed connections with priorities
\n * connectionManager.addConnection(new MoneroRpcConnection(\"http://localhost:38081\").setPriority(1)); // use localhost as first priority
\n * connectionManager.addConnection(new MoneroRpcConnection(\"http://example.com\")); // default priority is prioritized last

\n * \n * // set current connection
\n * connectionManager.setConnection(new MoneroRpcConnection(\"http://foo.bar\", \"admin\", \"password\")); // connection is added if new

\n * \n * // check connection status
\n * await connectionManager.checkConnection();
\n * console.log(\"Connection manager is connected: \" + connectionManager.isConnected());
\n * console.log(\"Connection is online: \" + connectionManager.getConnection().isOnline());
\n * console.log(\"Connection is authenticated: \" + connectionManager.getConnection().isAuthenticated());

\n * \n * // receive notifications of any changes to current connection
\n * connectionManager.addListener(new class extends MoneroConnectionManagerListener {
\n *    onConnectionChanged(connection) {
\n *      console.log(\"Connection changed to: \" + connection);
\n *    }
\n * });

\n * \n * // check connection status every 10 seconds
\n * await connectionManager.startCheckingConnection(10000);

\n * \n * // automatically switch to best available connection if disconnected
\n * connectionManager.setAutoSwitch(true);

\n * \n * // get best available connection in order of priority then response time
\n * let bestConnection = await connectionManager.getBestAvailableConnection();

\n * \n * // check status of all connections
\n * await connectionManager.checkConnections();

\n * \n * // get connections in order of current connection, online status from last check, priority, and name
\n * let connections = connectionManager.getConnections();

\n * \n * // clear connection manager
\n * connectionManager.clear();\n * \n */\nclass MoneroConnectionManager {\n \n /**\n * Construct a connection manager.\n * \n * @param {boolean} proxyToWorker - configure all connections to proxy to worker (default true)\n */\n constructor(proxyToWorker) {\n this._proxyToWorker = proxyToWorker !== false;\n this._timeoutInMs = MoneroConnectionManager.DEFAULT_TIMEOUT;\n this._connections = [];\n this._listeners = [];\n }\n \n /**\n * Add a listener to receive notifications when the connection changes.\n * \n * @param {MoneroConnectionManagerListener} listener - the listener to add\n * @return {MoneroConnectionManager} this connection manager for chaining\n */\n addListener(listener) {\n this._listeners.push(listener);\n return this;\n }\n \n /**\n * Remove a listener.\n * \n * @param {MoneroConnectionManagerListener} listener - the listener to remove\n * @return {MoneroConnectionManager} this connection manager for chaining\n */\n removeListener(listener) {\n if (!GenUtils.remove(this._listeners, listener)) throw new MoneroError(\"Monero connection manager does not contain listener to remove\");\n return this;\n }\n \n /**\n * Remove all listeners.\n * \n * @return {MoneroConnectionManager} this connection manager for chaining\n */\n removeListeners() {\n this._listeners.splice(0, this._listeners.length);\n return this;\n }\n \n /**\n * Add a connection. The connection may have an elevated priority for this manager to use.\n * \n * @param {MoneroRpcConnection} connection - the connection to add\n * @return {Promise} this connection manager for chaining\n */\n async addConnection(connection) {\n for (let aConnection of this._connections) {\n if (aConnection.getUri() === connection.getUri()) throw new MoneroError(\"Connection URI already exists\");\n }\n if (this._proxyToWorker !== undefined) connection.setProxyToWorker(this._proxyToWorker);\n this._connections.push(connection);\n return this;\n }\n \n /**\n * Remove a connection.\n * \n * @param {string} uri - of the the connection to remove\n * @return {Promise} this connection manager for chaining\n */\n async removeConnection(uri) {\n let connection = this.getConnectionByUri(uri);\n if (!connection) throw new MoneroError(\"No connection exists with URI: \" + uri);\n GenUtils.remove(this._connections, connection);\n if (connection === this._currentConnection) {\n this._currentConnection = undefined;\n this._onConnectionChanged(this._currentConnection);\n }\n return this;\n }\n \n /**\n * Indicates if the connection manager is connected to a node.\n * \n * @return {boolean|undefined} true if the current connection is set, online, and not unauthenticated, undefined if unknown, false otherwise\n */\n isConnected() {\n if (!this._currentConnection) return false;\n return this._currentConnection.isConnected();\n }\n \n /**\n * Get the current connection.\n * \n * @return {MoneroRpcConnection} the current connection or undefined if no connection set\n */\n getConnection() {\n return this._currentConnection;\n }\n \n /**\n * Get a connection by URI.\n * \n * @param {string} uri is the URI of the connection to get\n * @return {MoneroRpcConnection} the connection with the URI or undefined if no connection with the URI exists\n */\n getConnectionByUri(uri) {\n for (let connection of this._connections) if (connection.getUri() === uri) return connection;\n return undefined;\n }\n \n /**\n * Get all connections in order of current connection (if applicable), online status, priority, and name.\n * \n * @return {MoneroRpcConnection[]} the list of sorted connections\n */\n getConnections() {\n let sortedConnections = GenUtils.copyArray(this._connections);\n sortedConnections.sort(this._compareConnections.bind(this));\n return sortedConnections;\n }\n \n /**\n * Get the best available connection in order of priority then response time.\n * \n * @param {MoneroRpcConnection[]} excludedConnections - connections to be excluded from consideration (optional)\n * @return {Promise} the best available connection in order of priority then response time, undefined if no connections available\n */\n async getBestAvailableConnection(excludedConnections) {\n \n // try connections within each ascending priority\n for (let prioritizedConnections of this._getConnectionsInAscendingPriority()) {\n try {\n \n // create promises to check connections\n let that = this;\n let checkPromises = [];\n for (let connection of prioritizedConnections) {\n if (excludedConnections && GenUtils.arrayContains(excludedConnections, connection)) continue;\n checkPromises.push(new Promise(async function(resolve, reject) {\n await connection.checkConnection(that._timeoutInMs);\n if (connection.isConnected()) resolve(connection);\n else reject();\n }));\n }\n \n // use first available connection\n let firstAvailable = await Promise.any(checkPromises);\n if (firstAvailable) return firstAvailable;\n } catch (err) {\n if (!(err instanceof AggregateError)) throw new MoneroError(err);\n }\n }\n return undefined;\n }\n \n /**\n * Set the current connection.\n * Provide a URI to select an existing connection without updating its credentials.\n * Provide a MoneroRpcConnection to add new connection or replace existing connection with the same URI.\n * Notify if current connection changes.\n * Does not check the connection.\n * \n * @param {string|MoneroRpcConnection} uriOrConnection - is the uri of the connection or the connection to make current (default undefined for no current connection)\n * @return {MoneroConnectionManager} this connection manager for chaining\n */\n setConnection(uriOrConnection) {\n \n // handle uri\n if (uriOrConnection && typeof uriOrConnection === \"string\") {\n let connection = this.getConnectionByUri(uriOrConnection);\n return this.setConnection(connection === undefined ? new MoneroRpcConnection(uriOrConnection) : connection);\n }\n \n // handle connection\n let connection = uriOrConnection;\n if (this._currentConnection === connection) return this;\n \n // check if setting undefined connection\n if (!connection) {\n this._currentConnection = undefined;\n this._onConnectionChanged(undefined);\n return this;\n }\n \n // validate connection\n if (!(connection instanceof MoneroRpcConnection)) throw new MoneroError(\"Must provide string or MoneroRpcConnection to set connection\");\n if (!connection.getUri()) throw new MoneroError(\"Connection is missing URI\");\n\n // add or replace connection\n let prevConnection = this.getConnectionByUri(connection.getUri());\n if (prevConnection) GenUtils.remove(this._connections, prevConnection);\n this.addConnection(connection);\n this._currentConnection = connection;\n this._onConnectionChanged(this._currentConnection);\n \n return this;\n }\n \n /**\n * Check the current connection. If disconnected and auto switch enabled, switches to best available connection.\n * \n * @return {Promise} this connection manager for chaining\n */\n async checkConnection() {\n let connectionChanged = false;\n let connection = this.getConnection();\n if (connection && await connection.checkConnection(this._timeoutInMs)) connectionChanged = true;\n if (this._autoSwitch && !this.isConnected()) {\n let bestConnection = await this.getBestAvailableConnection([connection]);\n if (bestConnection) {\n this.setConnection(bestConnection);\n return this;\n }\n }\n if (connectionChanged) await this._onConnectionChanged(connection); \n return this;\n }\n \n /**\n * Check all managed connections.\n * \n * @return {Promise} this connection manager for chaining\n */\n async checkConnections() {\n \n // check all connections\n await Promise.all(this.checkConnectionPromises());\n \n // auto switch to best connection\n if (this._autoSwitch && !this.isConnected()) {\n for (let prioritizedConnections of this._getConnectionsInAscendingPriority()) {\n let bestConnection;\n for (let prioritizedConnection of prioritizedConnections) {\n if (prioritizedConnection.isConnected() && (!bestConnection || prioritizedConnection.getResponseTime() < bestConnection.getResponseTime())) {\n bestConnection = prioritizedConnection;\n }\n }\n if (bestConnection) {\n this.setConnection(bestConnection);\n break;\n }\n }\n }\n return this;\n }\n \n /**\n * Check all managed connections, returning a promise for each connection check.\n * Does not auto switch if disconnected.\n *\n * @return {Promise[]} a promise for each connection in the order of getConnections().\n */\n checkConnectionPromises() {\n let that = this;\n let checkPromises = [];\n let pool = new ThreadPool(this._connections.length);\n for (let connection of this.getConnections()) {\n checkPromises.push(pool.submit(async function() {\n try {\n if (await connection.checkConnection(that._timeoutInMs) && connection === this._currentConnection) await that._onConnectionChanged(connection);\n } catch (err) {\n // ignore error\n }\n }));\n }\n Promise.all(checkPromises);\n return checkPromises;\n }\n \n /**\n * Check the connection and start checking the connection periodically.\n * \n * @param {number} periodMs is the time between checks in milliseconds (default 10000 or 10 seconds)\n * @return {Promise} this connection manager for chaining (after first checking the connection)\n */\n async startCheckingConnection(periodMs) {\n await this.checkConnection();\n if (!periodMs) periodMs = MoneroConnectionManager.DEFAULT_CHECK_CONNECTION_PERIOD;\n if (this._checkLooper) return this;\n let that = this;\n let firstCheck = true;\n this._checkLooper = new TaskLooper(async function() {\n if (firstCheck) {\n firstCheck = false; // skip first check\n return;\n }\n try { await that.checkConnection(); }\n catch (err) { console.error(\"Error checking connection: \" + err); }\n });\n this._checkLooper.start(periodMs);\n return this;\n }\n \n /**\n * Stop checking the connection status periodically.\n * \n * @return {MoneroConnectionManager} this connection manager for chaining\n */\n stopCheckingConnection() {\n if (this._checkLooper) this._checkLooper.stop();\n delete this._checkLooper;\n return this;\n }\n\n /**\n * Automatically switch to best available connection if current connection is disconnected after being checked.\n * \n * @param {boolean} autoSwitch specifies if the connection should switch on disconnect\n * @return {MoneroConnectionManager} this connection manager for chaining\n */\n setAutoSwitch(autoSwitch) {\n this._autoSwitch = autoSwitch;\n return this;\n }\n \n /**\n * Get if auto switch is enabled or disabled.\n * \n * @return {boolean} true if auto switch enabled, false otherwise\n */\n getAutoSwitch() {\n return this._autoSwitch;\n }\n \n /**\n * Set the maximum request time before its connection is considered offline.\n * \n * @param {int} timeoutInMs - the timeout before the connection is considered offline\n * @return {MoneroConnectionManager} this connection manager for chaining\n */\n setTimeout(timeoutInMs) {\n this._timeoutInMs = timeoutInMs;\n return this;\n }\n \n /**\n * Get the request timeout.\n * \n * @return {int} the request timeout before a connection is considered offline\n */\n getTimeout() {\n return this._timeoutInMs;\n }\n \n /**\n * Collect connectable peers of the managed connections.\n *\n * @return {MoneroRpcConnection[]} connectable peers\n */\n async getPeerConnections() {\n throw new MoneroError(\"Not implemented\");\n }\n \n /**\n * Disconnect from the current connection.\n * \n * @return {MoneroConnectionManager} this connection manager for chaining\n */\n disconnect() {\n this.setConnection(undefined);\n return this;\n }\n \n /**\n * Remove all connections.\n * \n * @return {MoneroConnectonManager} this connection manager for chaining\n */\n clear() {\n this._connections.splice(0, this._connections.length);\n if (this._currentConnection) {\n this._currentConnection = undefined;\n this._onConnectionChanged(undefined);\n }\n return this;\n }\n \n /**\n * Reset to default state.\n * \n * @return {MoneroConnectonManager} this connection manager for chaining\n */\n reset() {\n this.removeListeners();\n this.stopCheckingConnection();\n this.clear();\n this._timeoutMs = MoneroConnectionManager.DEFAULT_TIMEOUT;\n this._autoSwitch = false;\n return this;\n }\n\n /**\n * Get all listeners.\n * \n * @return {MoneroConnectionManagerListener[]} all listeners\n */\n getListeners() {\n return this._listeners\n }\n \n // ------------------------------ PRIVATE HELPERS ---------------------------\n \n async _onConnectionChanged(connection) {\n let promises = [];\n for (let listener of this._listeners) promises.push(listener.onConnectionChanged(connection));\n return Promise.all(promises);\n }\n \n _getConnectionsInAscendingPriority() {\n let connectionPriorities = new Map();\n for (let connection of this._connections) {\n if (!connectionPriorities.has(connection.getPriority())) connectionPriorities.set(connection.getPriority(), []);\n connectionPriorities.get(connection.getPriority()).push(connection);\n }\n let ascendingPriorities = new Map([...connectionPriorities].sort((a, b) => parseInt(a[0]) - parseInt(b[0]))); // create map in ascending order\n let ascendingPrioritiesList = [];\n for (let priorityConnections of ascendingPriorities.values()) ascendingPrioritiesList.push(priorityConnections);\n if (connectionPriorities.has(0)) ascendingPrioritiesList.push(ascendingPrioritiesList.splice(0, 1)[0]); // move priority 0 to end\n return ascendingPrioritiesList;\n }\n \n _compareConnections(c1, c2) {\n \n // current connection is first\n if (c1 === this._currentConnection) return -1;\n if (c2 === this._currentConnection) return 1;\n \n // order by availability then priority then by name\n if (c1.isOnline() === c2.isOnline()) {\n if (c1.getPriority() === c2.getPriority()) return c1.getUri().localeCompare(c2.getUri());\n else return c1.getPriority() == 0 ? 1 : c2.getPriority() == 0 ? -1 : c1.getPriority() - c2.getPriority();\n } else {\n if (c1.isOnline()) return -1;\n else if (c2.isOnline()) return 1;\n else if (c1.isOnline() === undefined) return -1;\n else return 1; // c1 is offline\n }\n }\n}\n\nMoneroConnectionManager.DEFAULT_TIMEOUT = 5000;\nMoneroConnectionManager.DEFAULT_CHECK_CONNECTION_PERIOD = 15000;\n\nmodule.exports = MoneroConnectionManager;","/**\n * Default connection manager listener which takes no action on notifications.\n */\nclass MoneroConnectionManagerListener {\n \n /**\n * Notified on connection change events.\n * \n * @param {MoneroRpcConnection} connection - the connection manager's current connection\n */\n async onConnectionChanged(connection) { }\n}\n\nmodule.exports = MoneroConnectionManagerListener;","/**\n * Exception when interacting with a Monero wallet or daemon.\n */\nclass MoneroError extends Error {\n \n /**\n * Constructs the error.\n * \n * @param {string} message is a human-readable message of the error\n * @param {int} code is the error code (optional)\n */\n constructor(message, code) {\n super(message);\n this.code = code;\n }\n \n getCode() {\n return this.code;\n }\n \n toString() {\n if (this.message === undefined && this.getCode() === undefined) return super.message;\n let str = \"\";\n if (this.getCode() !== undefined) str += this.getCode() + \": \";\n str += this.message;\n return str;\n }\n}\n\nmodule.exports = MoneroError;","const GenUtils = require(\"./GenUtils\");\nconst HttpClient = require(\"./HttpClient\");\nconst LibraryUtils = require(\"./LibraryUtils\");\nconst MoneroError = require(\"../common/MoneroError\");\nconst MoneroRpcError = require(\"../common/MoneroRpcError\");\nconst MoneroUtils = require(\"./MoneroUtils\");\n\n/**\n * Maintains a connection and sends requests to a Monero RPC API.\n */\nclass MoneroRpcConnection {\n \n /**\n *

Construct a RPC connection.

\n * \n *

Examples:

\n * \n * \n * let connection1 = new MoneroRpcConnection(\"http://localhost:38081\", \"daemon_user\", \"daemon_password_123\")

\n * \n * let connection2 = new MoneroRpcConnection({
\n *    uri: http://localhost:38081,
\n *    username: \"daemon_user\",
\n *    password: \"daemon_password_123\",
\n *    rejectUnauthorized: false, // accept self-signed certificates e.g. for local development
\n *    proxyToWorker: true // proxy request to worker (default false)
\n * });\n *
\n * \n * @param {string|object|MoneroRpcConnection} uriOrConfigOrConnection - RPC endpoint URI, MoneroRpcConnection, or equivalent JS object\n * @param {string} uriOrConfigOrConnection.uri - URI of the RPC endpoint\n * @param {string} uriOrConfigOrConnection.username - username to authenticate with the RPC endpoint (optional)\n * @param {string} uriOrConfigOrConnection.password - password to authenticate with the RPC endpoint (optional)\n * @param {boolean} uriOrConfigOrConnection.rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {boolean} uriOrConfigOrConnection.proxyToWorker - proxy requests to worker\n * @param {string} username - username to authenticate with the RPC endpoint (optional)\n * @param {string} password - password to authenticate with the RPC endpoint (optional)\n * @param {boolean} rejectUnauthorized - reject self-signed certificates if true (default true)\n */\n constructor(uriOrConfigOrConnection, username, password, rejectUnauthorized, proxyToWorker) {\n \n // validate and normalize config\n if (typeof uriOrConfigOrConnection === \"string\") {\n this._config = {uri: uriOrConfigOrConnection};\n this.setCredentials(username, password);\n if (rejectUnauthorized !== undefined) this._config.rejectUnauthorized = rejectUnauthorized;\n if (proxyToWorker !== undefined) this._config.proxyToWorker = proxyToWorker;\n } else if (typeof uriOrConfigOrConnection === \"object\") {\n if (username !== undefined || password !== undefined || rejectUnauthorized !== undefined || proxyToWorker !== undefined) throw new MoneroError(\"Can provide config object or params but not both\");\n if (uriOrConfigOrConnection instanceof MoneroRpcConnection) this._config = Object.assign({}, uriOrConfigOrConnection.getConfig());\n else this._config = Object.assign({}, uriOrConfigOrConnection);\n this.setCredentials(this._config.username, this._config.password);\n } else if (uriOrConfigOrConnection !== undefined) {\n throw new MoneroError(\"Invalid configuration to MoneroRpcConnection; must be string or MoneroRpcConnection or equivalent JS object\");\n }\n \n // merge default config\n this._config = Object.assign({}, MoneroRpcConnection.DEFAULT_CONFIG, this._config);\n \n // normalize uri\n if (this._config.uri) {\n this._config.uri = this._config.uri.replace(/\\/$/, \"\"); // strip trailing slash\n if (!new RegExp(\"^\\\\w+://.+\").test(this._config.uri)) this._config.uri = \"http://\" + this._config.uri; // assume http if protocol not given\n }\n \n // fail with friendly message if using old api\n if (this._config.user || this._config.pass) throw new MoneroError(\"Authentication fields 'user' and 'pass' have been renamed to 'username' and 'password'. Please update to the new api\");\n \n // check for unsupported fields\n for (let key of Object.keys(this._config)) {\n if (!GenUtils.arrayContains(MoneroRpcConnection.SUPPORTED_FIELDS, key)) {\n throw new MoneroError(\"RPC connection includes unsupported field: '\" + key + \"'\");\n }\n }\n }\n \n setCredentials(username, password) {\n if (username === \"\") username = undefined;\n if (password === \"\") password = undefined;\n if (username || password) {\n if (!username) throw new MoneroError(\"username must be defined because password is defined\");\n if (!password) throw new MoneroError(\"password must be defined because username is defined\");\n }\n if (this._config.username === \"\") this._config.username = undefined;\n if (this._config.password === \"\") this._config.password = undefined;\n if (this._config.username !== username || this._config.password !== password) {\n this._isOnline = undefined;\n this._isAuthenticated = undefined;\n }\n this._config.username = username;\n this._config.password = password;\n return this;\n }\n \n getUri() {\n return this._config.uri;\n }\n \n getUsername() {\n return this._config.username ? this._config.username : \"\";\n }\n \n getPassword() {\n return this._config.password ? this._config.password : \"\";\n }\n \n getRejectUnauthorized() {\n return this._config.rejectUnauthorized;\n }\n \n setProxyToWorker(proxyToWorker) {\n this._config.proxyToWorker = proxyToWorker;\n return this;\n }\n \n getProxyToWorker() {\n return this._config.proxyToWorker;\n }\n \n getConfig() {\n return this._config;\n }\n \n getPriority() {\n return this._config.priority; \n }\n \n /**\n * Set the connection's priority relative to other connections. Priority 1 is highest,\n * then priority 2, etc. The default priority of 0 is lowest priority.\n * \n * @param {int} priority - the connection priority (default 0)\n * @return {MoneroRpcConnection} this connection\n */\n setPriority(priority) {\n if (!(priority >= 0)) throw new MoneroError(\"Priority must be >= 0\");\n this._config.priority = priority;\n return this;\n }\n \n setAttribute(key, value) {\n if (!this.attributes) this.attributes = new Map();\n this.attributes.put(key, value);\n return this;\n }\n \n getAttribute(key) {\n return this.attributes.get(key);\n }\n \n /**\n * Check the connection status to update isOnline, isAuthenticated, and response time.\n * \n * @param {int} timeoutInMs - maximum response time before considered offline\n * @return {Promise} true if there is a change in status, false otherwise\n */\n async checkConnection(timeoutInMs) {\n let isOnlineBefore = this._isOnline;\n let isAuthenticatedBefore = this._isAuthenticated;\n let startTime = Date.now();\n try {\n if (this._fakeDisconnected) throw new Error(\"Connection is fake disconnected\");\n await this.sendJsonRequest(\"get_version\", undefined, timeoutInMs);\n this._isOnline = true;\n this._isAuthenticated = true;\n } catch (err) {\n if (err instanceof MoneroRpcError && err.getCode() === 401) {\n this._isOnline = true;\n this._isAuthenticated = false;\n } else {\n this._isOnline = false;\n this._isAuthenticated = undefined;\n this._responseTime = undefined;\n }\n }\n if (this._isOnline) this._responseTime = Date.now() - startTime;\n return isOnlineBefore !== this._isOnline || isAuthenticatedBefore !== this._isAuthenticated;\n }\n \n /**\n * Indicates if the connection is connected according to the last call to checkConnection().

\n * \n * Note: must call checkConnection() manually unless using MoneroConnectionManager.\n * \n * @return {boolean|undefined} true or false to indicate if connected, or undefined if checkConnection() has not been called\n */\n isConnected() {\n return this._isOnline === undefined ? undefined : this._isOnline && this._isAuthenticated !== false;\n }\n\n /**\n * Indicates if the connection is online according to the last call to checkConnection().

\n * \n * Note: must call checkConnection() manually unless using MoneroConnectionManager.\n * \n * @return {boolean|undefined} true or false to indicate if online, or undefined if checkConnection() has not been called\n */\n isOnline() {\n return this._isOnline;\n }\n\n /**\n * Indicates if the connection is authenticated according to the last call to checkConnection().

\n * \n * Note: must call checkConnection() manually unless using MoneroConnectionManager.\n * \n * @return {boolean|undefined} true if authenticated or no authentication, false if not authenticated, or undefined if checkConnection() has not been called\n */\n isAuthenticated() {\n return this._isAuthenticated;\n }\n\n getResponseTime() {\n return this._responseTime;\n }\n \n /**\n * Send a JSON RPC request.\n * \n * @param {string} method - JSON RPC method to invoke\n * @param {object} params - request parameters\n * @param {int} timeoutInMs - request timeout in milliseconds\n * @return {object} is the response map\n */\n async sendJsonRequest(method, params, timeoutInMs) {\n try {\n \n // build request body\n let body = JSON.stringify({ // body is stringified so text/plain is returned so BigIntegers are preserved\n id: \"0\",\n jsonrpc: \"2.0\",\n method: method,\n params: params\n });\n\n // logging\n if (LibraryUtils.getLogLevel() >= 2) LibraryUtils.log(2, \"Sending json request with method '\" + method + \"' and body: \" + body);\n \n // send http request\n let startTime = new Date().getTime();\n let resp = await HttpClient.request({\n method: \"POST\",\n uri: this.getUri() + '/json_rpc',\n username: this.getUsername(),\n password: this.getPassword(),\n body: body,\n timeout: timeoutInMs,\n rejectUnauthorized: this._config.rejectUnauthorized,\n requestApi: GenUtils.isFirefox() ? \"xhr\" : \"fetch\", // firefox issue: https://bugzilla.mozilla.org/show_bug.cgi?id=1491010\n proxyToWorker: this._config.proxyToWorker\n });\n \n // validate response\n MoneroRpcConnection._validateHttpResponse(resp);\n \n // deserialize response\n if (resp.body[0] != '{') throw resp.body;\n resp = JSON.parse(resp.body.replace(/(\"[^\"]*\"\\s*:\\s*)(\\d{16,})/g, '$1\"$2\"')); // replace 16 or more digits with strings and parse\n if (LibraryUtils.getLogLevel() >= 3) {\n let respStr = JSON.stringify(resp);\n LibraryUtils.log(3, \"Received response from method='\" + method + \"', response=\" + respStr.substring(0, Math.min(1000, respStr.length) + \"(\" + (new Date().getTime() - startTime) + \" ms)\"));\n }\n \n // check rpc response for errors\n MoneroRpcConnection._validateRpcResponse(resp, method, params);\n return resp;\n } catch (err) {\n if (err instanceof MoneroRpcError) throw err;\n else throw new MoneroRpcError(err, err.statusCode, method, params);\n }\n }\n \n /**\n * Send a RPC request to the given path and with the given paramters.\n * \n * E.g. \"/get_transactions\" with params\n * \n * @param {string} path - JSON RPC path to invoke\n * @param {object} params - request parameters\n * @param {int} timeoutInMs - request timeout in milliseconds\n * @return {object} is the response map\n */\n async sendPathRequest(path, params, timeoutInMs) {\n try {\n\n // logging\n if (LibraryUtils.getLogLevel() >= 2) LibraryUtils.log(2, \"Sending path request with path '\" + path + \"' and params: \" + JSON.stringify(params));\n \n // send http request\n let startTime = new Date().getTime();\n let resp = await HttpClient.request({\n method: \"POST\",\n uri: this.getUri() + '/' + path,\n username: this.getUsername(),\n password: this.getPassword(),\n body: JSON.stringify(params), // body is stringified so text/plain is returned so BigIntegers are preserved\n timeout: timeoutInMs,\n rejectUnauthorized: this._config.rejectUnauthorized,\n requestApi: GenUtils.isFirefox() ? \"xhr\" : \"fetch\",\n proxyToWorker: this._config.proxyToWorker\n });\n \n // validate response\n MoneroRpcConnection._validateHttpResponse(resp);\n \n // deserialize response\n if (resp.body[0] != '{') throw resp.body;\n resp = JSON.parse(resp.body.replace(/(\"[^\"]*\"\\s*:\\s*)(\\d{16,})/g, '$1\"$2\"')); // replace 16 or more digits with strings and parse\n if (typeof resp === \"string\") resp = JSON.parse(resp); // TODO: some responses returned as strings?\n if (LibraryUtils.getLogLevel() >= 3) {\n let respStr = JSON.stringify(resp);\n LibraryUtils.log(3, \"Received response from path='\" + method + \"', response=\" + respStr.substring(0, Math.min(1000, respStr.length) + \"(\" + (new Date().getTime() - startTime) + \" ms)\"));\n }\n \n // check rpc response for errors\n MoneroRpcConnection._validateRpcResponse(resp, path, params);\n return resp;\n } catch (err) {\n if (err instanceof MoneroRpcError) throw err;\n else throw new MoneroRpcError(err, err.statusCode, path, params);\n }\n }\n \n /**\n * Send a binary RPC request.\n * \n * @param {string} path - path of the binary RPC method to invoke\n * @param {object} params - request parameters\n * @param {int} timeoutInMs - request timeout in milliseconds\n * @return {Uint8Array} the binary response\n */\n async sendBinaryRequest(path, params, timeoutInMs) {\n \n // serialize params\n let paramsBin = await MoneroUtils.jsonToBinary(params);\n \n try {\n\n // logging\n if (LibraryUtils.getLogLevel() >= 2) LibraryUtils.log(2, \"Sending binary request with path '\" + path + \"' and params: \" + JSON.stringify(params));\n \n // send http request\n let resp = await HttpClient.request({\n method: \"POST\",\n uri: this.getUri() + '/' + path,\n username: this.getUsername(),\n password: this.getPassword(),\n body: paramsBin,\n timeout: timeoutInMs,\n rejectUnauthorized: this._config.rejectUnauthorized,\n requestApi: GenUtils.isFirefox() ? \"xhr\" : \"fetch\",\n proxyToWorker: this._config.proxyToWorker\n });\n \n // validate response\n MoneroRpcConnection._validateHttpResponse(resp);\n \n // process response\n resp = resp.body;\n if (!(resp instanceof Uint8Array)) {\n console.error(\"resp is not uint8array\");\n console.error(resp);\n }\n if (resp.error) throw new MoneroRpcError(resp.error.message, resp.error.code, path, params);\n return resp;\n } catch (err) {\n if (err instanceof MoneroRpcError) throw err;\n else throw new MoneroRpcError(err, err.statusCode, path, params);\n }\n }\n \n toString() {\n return this.getUri() + \" (username=\" + this.getUsername() + \", password=\" + (this.getPassword() ? \"***\" : this.getPassword()) + \", priority=\" + this.getPriority() + \", isOnline=\" + this.isOnline() + \", isAuthenticated=\" + this.isAuthenticated() + \")\";\n }\n \n // ------------------------------ PRIVATE HELPERS --------------------------\n \n static _validateHttpResponse(resp) {\n let code = resp.statusCode;\n if (code < 200 || code > 299) {\n let content = resp.body;\n throw new MoneroRpcError(code + \" \" + resp.statusText + (!content ? \"\" : (\": \" + content)), code, undefined, undefined);\n }\n }\n \n static _validateRpcResponse(resp, method, params) {\n if (!resp.error) return;\n throw new MoneroRpcError(resp.error.message, resp.error.code, method, params);\n }\n \n _setFakeDisconnected(fakeDisconnected) { // used to test connection manager\n this._fakeDisconnected = fakeDisconnected; \n }\n}\n\n/**\n * Default RPC configuration.\n */\nMoneroRpcConnection.DEFAULT_CONFIG = {\n uri: undefined,\n username: undefined,\n password: undefined,\n rejectUnauthorized: true, // reject self-signed certificates if true\n proxyToWorker: false,\n priority: 0\n}\n\nMoneroRpcConnection.SUPPORTED_FIELDS = [\"uri\", \"username\", \"password\", \"rejectUnauthorized\", \"priority\", \"proxyToWorker\"];\n\nmodule.exports = MoneroRpcConnection;","const MoneroError = require(\"./MoneroError\");\n\n/**\n * Error when interacting with Monero RPC.\n */\nclass MoneroRpcError extends MoneroError {\n \n /**\n * Constructs the error.\n * \n * @param {string} rpcDescription is a description of the error from rpc\n * @param {int} rpcCode is the error code from rpc\n * @param {string} rpcMethod is the rpc method invoked\n * @param {object} rpcParams are parameters sent with the rpc request\n */\n constructor(rpcDescription, rpcCode, rpcMethod, rpcParams) {\n super(rpcDescription, rpcCode);\n this.rpcMethod = rpcMethod;\n this.rpcParams = rpcParams;\n }\n \n getRpcMethod() {\n return this.rpcMethod;\n }\n \n getRpcParams() {\n return this.rpcParams;\n }\n \n toString() {\n let str = super.toString();\n if (this.rpcMethod || this.rpcParams) str += \"\\nRequest: '\" + this.rpcMethod + \"' with params: \" + (typeof this.rpcParams === \"object\" ? JSON.stringify(this.rpcParams) : this.rpcParams);\n return str;\n }\n}\n\nmodule.exports = MoneroRpcError;","const assert = require(\"assert\");\nconst BigInteger = require(\"./biginteger\").BigInteger;\nconst GenUtils = require(\"./GenUtils\");\nconst LibraryUtils = require(\"./LibraryUtils\");\nconst MoneroError = require(\"./MoneroError\");\nconst MoneroIntegratedAddress = require(\"../wallet/model/MoneroIntegratedAddress\");\nconst MoneroNetworkType = require(\"../daemon/model/MoneroNetworkType\");\n\n/**\n * Collection of Monero utilities. Runs in a worker thread by default.\n * \n * @hideconstructor\n */\nclass MoneroUtils {\n \n /**\n *

Get the version of the monero-javascript library.

\n * \n * @return {string} the version of this monero-javascript library\n */\n static getVersion() {\n return \"0.8.1\";\n }\n \n /**\n * Enable or disable proxying these utilities to a worker thread.\n * \n * @param {boolean} proxyToWorker - specifies if utilities should be proxied to a worker\n */\n static setProxyToWorker(proxyToWorker) {\n MoneroUtils.PROXY_TO_WORKER = proxyToWorker || false;\n }\n \n /**\n * Validate the given mnemonic, throw an error if invalid.\n *\n * TODO: improve validation, use network type\n * \n * @param {string} mnemonic - mnemonic to validate\n */\n static async validateMnemonic(mnemonic) {\n assert(mnemonic, \"Mnemonic phrase is not initialized\");\n let words = mnemonic.split(\" \");\n if (words.length !== MoneroUtils.NUM_MNEMONIC_WORDS) throw new MoneroError(\"Mnemonic phrase is \" + words.length + \" words but must be \" + MoneroUtils.NUM_MNEMONIC_WORDS);\n }\n \n /**\n * Indicates if a private view key is valid.\n * \n * @param {string} privateViewKey is the private view key to validate\n * @return {Promise} true if the private view key is valid, false otherwise\n */\n static async isValidPrivateViewKey(privateViewKey) {\n try {\n await MoneroUtils.validatePrivateViewKey(privateViewKey);\n return true;\n } catch (e) {\n return false;\n }\n }\n \n /**\n * Indicates if a public view key is valid.\n * \n * @param {string} publicViewKey is the public view key to validate\n * @return {Promise} true if the public view key is valid, false otherwise\n */\n static async isValidPublicViewKey(publicViewKey) {\n try {\n await MoneroUtils.validatePublicViewKey(publicViewKey);\n return true;\n } catch (e) {\n return false;\n }\n }\n \n /**\n * Indicates if a private spend key is valid.\n * \n * @param {string} privateSpendKey is the private spend key to validate\n * @return {Promise} true if the private spend key is valid, false otherwise\n */\n static async isValidPrivateSpendKey(privateSpendKey) {\n try {\n await MoneroUtils.validatePrivateSpendKey(privateSpendKey);\n return true;\n } catch (e) {\n return false;\n }\n }\n \n /**\n * Indicates if a public spend key is valid.\n * \n * @param {string} publicSpendKey is the public spend key to validate\n * @return {Promise} true if the public spend key is valid, false otherwise\n */\n static async isValidPublicSpendKey(publicSpendKey) {\n try {\n await MoneroUtils.validatePublicSpendKey(publicSpendKey);\n return true;\n } catch (e) {\n return false;\n }\n }\n \n /**\n * Validate the given private view key, throw an error if invalid.\n *\n * @param {string} privateViewKey - private view key to validate\n */\n static async validatePrivateViewKey(privateViewKey) {\n if (!MoneroUtils._isHex64(privateViewKey)) throw new MoneroError(\"private view key expected to be 64 hex characters\");\n }\n \n /**\n * Validate the given public view key, throw an error if invalid.\n *\n * @param {string} publicViewKey - public view key to validate\n */\n static async validatePublicViewKey(publicViewKey) {\n if (!MoneroUtils._isHex64(publicViewKey)) throw new MoneroError(\"public view key expected to be 64 hex characters\");\n }\n \n /**\n * Validate the given private spend key, throw an error if invalid.\n *\n * @param {string} privateSpendKey - private spend key to validate\n */\n static async validatePrivateSpendKey(privateSpendKey) {\n if (!MoneroUtils._isHex64(privateSpendKey)) throw new MoneroError(\"private spend key expected to be 64 hex characters\");\n }\n \n /**\n * Validate the given public spend key, throw an error if invalid.\n *\n * @param {string} publicSpendKey - public spend key to validate\n */\n static async validatePublicSpendKey(publicSpendKey) {\n if (!MoneroUtils._isHex64(publicSpendKey)) throw new MoneroError(\"public spend key expected to be 64 hex characters\");\n }\n \n /**\n * Get an integrated address.\n * \n * @param {MoneroNetworkType} networkType - network type of the integrated address\n * @param {string} standardAddress - address to derive the integrated address from\n * @param {string} paymentId - optionally specifies the integrated address's payment id (defaults to random payment id)\n * @return {Promise} the integrated address\n */\n static async getIntegratedAddress(networkType, standardAddress, paymentId) {\n if (MoneroUtils.PROXY_TO_WORKER) return new MoneroIntegratedAddress(await LibraryUtils.invokeWorker(undefined, \"moneroUtilsGetIntegratedAddress\", Array.from(arguments)));\n \n // validate inputs\n MoneroNetworkType.validate(networkType);\n assert(typeof standardAddress === \"string\", \"Address is not string\");\n assert(standardAddress.length > 0, \"Address is empty\");\n assert(GenUtils.isBase58(standardAddress), \"Address is not base 58\");\n \n // load keys module by default\n if (LibraryUtils.getWasmModule() === undefined) await LibraryUtils.loadKeysModule();\n \n // get integrated address in queue\n return LibraryUtils.getWasmModule().queueTask(async function() {\n let integratedAddressJson = LibraryUtils.getWasmModule().get_integrated_address_util(networkType, standardAddress, paymentId ? paymentId : \"\");\n if (integratedAddressJson.charAt(0) !== '{') throw new MoneroError(integratedAddressJson);\n return new MoneroIntegratedAddress(JSON.parse(integratedAddressJson));\n });\n }\n \n /**\n * Determine if the given address is valid.\n * \n * @param {string} address - address\n * @param {MoneroNetworkType} networkType - network type of the address to validate\n * @return {Promise} true if the address is valid, false otherwise\n */\n static async isValidAddress(address, networkType) {\n try {\n await MoneroUtils.validateAddress(address, networkType);\n return true;\n } catch (err) {\n return false;\n }\n }\n \n /**\n * Validate the given address, throw an error if invalid.\n *\n * @param {string} address - address to validate\n * @param {MoneroNetworkType} networkType - network type of the address to validate\n */\n static async validateAddress(address, networkType) {\n if (MoneroUtils.PROXY_TO_WORKER) return LibraryUtils.invokeWorker(undefined, \"moneroUtilsValidateAddress\", Array.from(arguments));\n \n // validate inputs\n assert(typeof address === \"string\", \"Address is not string\");\n assert(address.length > 0, \"Address is empty\");\n assert(GenUtils.isBase58(address), \"Address is not base 58\");\n MoneroNetworkType.validate(networkType);\n \n // load keys module by default\n if (LibraryUtils.getWasmModule() === undefined) await LibraryUtils.loadKeysModule();\n \n // validate address in queue\n return LibraryUtils.getWasmModule().queueTask(async function() {\n let errMsg = LibraryUtils.getWasmModule().validate_address(address, networkType);\n if (errMsg) throw new MoneroError(errMsg);\n });\n }\n \n /**\n * Determine if the given payment id is valid.\n * \n * @param {string} paymentId - payment id to determine if valid\n * @return {Promise} true if the payment id is valid, false otherwise\n */\n static async isValidPaymentId(paymentId) {\n try {\n await MoneroUtils.validatePaymentId(paymentId);\n return true;\n } catch (e) {\n return false;\n }\n }\n \n /**\n * Validate the given payment id, throw an error if invalid.\n * \n * TODO: improve validation\n * \n * @param {string} paymentId - payment id to validate \n */\n static async validatePaymentId(paymentId) {\n assert.equal(typeof paymentId, \"string\");\n assert(paymentId.length === 16 || paymentId.length === 64);\n }\n \n /**\n * Decode tx extra according to https://cryptonote.org/cns/cns005.txt and\n * returns the last tx pub key.\n * \n * TODO: use c++ bridge for this\n * \n * @param [byte[]] txExtra - array of tx extra bytes\n * @return {string} the last pub key as a hexidecimal string\n */\n static async getLastTxPubKey(txExtra) {\n let lastPubKeyIdx;\n for (let i = 0; i < txExtra.length; i++) {\n let tag = txExtra[i];\n if (tag === 0 || tag === 2) {\n i += 1 + txExtra[i + 1]; // advance to next tag\n } else if (tag === 1) {\n lastPubKeyIdx = i + 1;\n i += 1 + 32; // advance to next tag\n } else throw new MoneroError(\"Invalid sub-field tag: \" + tag);\n }\n return Buffer.from(new Uint8Array(txExtra.slice(lastPubKeyIdx, lastPubKeyIdx + 32))).toString(\"hex\");\n }\n \n /**\n * Determines if two payment ids are functionally equal.\n * \n * For example, 03284e41c342f032 and 03284e41c342f032000000000000000000000000000000000000000000000000 are considered equal.\n * \n * @param {string} paymentId1 is a payment id to compare\n * @param {string} paymentId2 is a payment id to compare\n * @return {bool} true if the payment ids are equal, false otherwise\n */\n static paymentIdsEqual(paymentId1, paymentId2) {\n let maxLength = Math.max(paymentId1.length, paymentId2.length);\n for (let i = 0; i < maxLength; i++) {\n if (i < paymentId1.length && i < paymentId2.length && paymentId1[i] !== paymentId2[i]) return false;\n if (i >= paymentId1.length && paymentId2[i] !== '0') return false;\n if (i >= paymentId2.length && paymentId1[i] !== '0') return false;\n }\n return true;\n }\n \n /**\n * Merges a transaction into a list of existing transactions.\n * \n * @param {MoneroTx[]} txs - existing transactions to merge into\n * @param {MoneroTx} tx - transaction to merge into the list\n */\n static mergeTx(txs, tx) {\n for (let aTx of txs) {\n if (aTx.getHash() === tx.getHash()) {\n aTx.merge(tx);\n return;\n }\n }\n txs.push(tx);\n }\n \n /**\n * Convert the given JSON to a binary Uint8Array using Monero's portable storage format.\n * \n * @param {object} json - json to convert to binary\n * @return {Promise} the json converted to portable storage binary\n */\n static async jsonToBinary(json) {\n if (MoneroUtils.PROXY_TO_WORKER) return LibraryUtils.invokeWorker(undefined, \"moneroUtilsJsonToBinary\", Array.from(arguments));\n \n // load keys module by default\n if (LibraryUtils.getWasmModule() === undefined) await LibraryUtils.loadKeysModule();\n \n // use wasm in queue\n return LibraryUtils.getWasmModule().queueTask(async function() {\n \n // serialize json to binary which is stored in c++ heap\n let binMemInfoStr = LibraryUtils.getWasmModule().malloc_binary_from_json(JSON.stringify(json));\n \n // sanitize binary memory address info\n let binMemInfo = JSON.parse(binMemInfoStr);\n binMemInfo.ptr = parseInt(binMemInfo.ptr);\n binMemInfo.length = parseInt(binMemInfo.length);\n \n // read binary data from heap to Uint8Array\n let view = new Uint8Array(binMemInfo.length);\n for (let i = 0; i < binMemInfo.length; i++) {\n view[i] = LibraryUtils.getWasmModule().HEAPU8[binMemInfo.ptr / Uint8Array.BYTES_PER_ELEMENT + i];\n }\n \n // free binary on heap\n LibraryUtils.getWasmModule()._free(binMemInfo.ptr);\n \n // return json from binary data\n return view;\n });\n }\n \n /**\n * Convert the given portable storage binary to JSON.\n * \n * @param {Uint8Array} uint8arr - binary data in Monero's portable storage format\n * @return {Promise} JSON object converted from the binary data\n */\n static async binaryToJson(uint8arr) {\n if (MoneroUtils.PROXY_TO_WORKER) return LibraryUtils.invokeWorker(undefined, \"moneroUtilsBinaryToJson\", Array.from(arguments));\n \n // load keys module by default\n if (LibraryUtils.getWasmModule() === undefined) await LibraryUtils.loadKeysModule();\n \n // use wasm in queue\n return LibraryUtils.getWasmModule().queueTask(async function() {\n \n // allocate space in c++ heap for binary\n let ptr = LibraryUtils.getWasmModule()._malloc(uint8arr.length * uint8arr.BYTES_PER_ELEMENT);\n let heap = new Uint8Array(LibraryUtils.getWasmModule().HEAPU8.buffer, ptr, uint8arr.length * uint8arr.BYTES_PER_ELEMENT);\n if (ptr !== heap.byteOffset) throw new MoneroError(\"Memory ptr !== heap.byteOffset\"); // should be equal\n \n // write binary to heap\n heap.set(new Uint8Array(uint8arr.buffer));\n \n // create object with binary memory address info\n let binMemInfo = { ptr: ptr, length: uint8arr.length };\n \n // convert binary to json str\n const ret_string = LibraryUtils.getWasmModule().binary_to_json(JSON.stringify(binMemInfo));\n \n // free binary on heap\n LibraryUtils.getWasmModule()._free(ptr);\n \n // parse and return json\n return JSON.parse(ret_string);\n });\n }\n \n /**\n * Convert the binary response from daemon RPC block retrieval to JSON.\n * \n * @param {Uint8Array} uint8arr - binary response from daemon RPC when getting blocks\n * @return {Promise} JSON object with the blocks data\n */\n static async binaryBlocksToJson(uint8arr) {\n if (MoneroUtils.PROXY_TO_WORKER) return LibraryUtils.invokeWorker(undefined, \"moneroUtilsBinaryBlocksToJson\", Array.from(arguments));\n \n // load keys module by default\n if (LibraryUtils.getWasmModule() === undefined) await LibraryUtils.loadKeysModule();\n \n // use wasm in queue\n return LibraryUtils.getWasmModule().queueTask(async function() {\n \n // allocate space in c++ heap for binary\n let ptr = LibraryUtils.getWasmModule()._malloc(uint8arr.length * uint8arr.BYTES_PER_ELEMENT);\n let heap = new Uint8Array(LibraryUtils.getWasmModule().HEAPU8.buffer, ptr, uint8arr.length * uint8arr.BYTES_PER_ELEMENT);\n if (ptr !== heap.byteOffset) throw new MoneroError(\"Memory ptr !== heap.byteOffset\"); // should be equal\n \n // write binary to heap\n heap.set(new Uint8Array(uint8arr.buffer));\n \n // create object with binary memory address info\n let binMemInfo = { ptr: ptr, length: uint8arr.length }\n\n // convert binary to json str\n const json_str = LibraryUtils.getWasmModule().binary_blocks_to_json(JSON.stringify(binMemInfo));\n \n // free memory\n LibraryUtils.getWasmModule()._free(ptr);\n \n // parse result to json\n let json = JSON.parse(json_str); // parsing json gives arrays of block and tx strings\n json.blocks = json.blocks.map(blockStr => JSON.parse(blockStr)); // replace block strings with parsed blocks\n json.txs = json.txs.map(txs => txs ? txs.map(tx => JSON.parse(tx.replace(\",\", \"{\") + \"}\")) : []); // modify tx string to proper json and parse // TODO: more efficient way than this json manipulation?\n return json;\n });\n }\n \n /**\n * Convert XMR to atomic units.\n * \n * @param {number|string} amountXmr - amount in XMR to convert to atomic units\n * @return {BigInteger} amount in atomic units\n */\n static xmrToAtomicUnits(amountXmr) {\n if (typeof amountXmr === \"number\") amountXmr = \"\" + amountXmr;\n else if (typeof amountXmr !== \"string\") throw new MoneroError(\"Must provide XMR amount as a string or js number to convert to atomic units\");\n let decimalDivisor = 1;\n let decimalIdx = amountXmr.indexOf('.');\n if (decimalIdx > -1) {\n decimalDivisor = Math.pow(10, amountXmr.length - decimalIdx - 1);\n amountXmr = amountXmr.slice(0, decimalIdx) + amountXmr.slice(decimalIdx + 1);\n }\n return new BigInteger(amountXmr).multiply(new BigInteger(MoneroUtils.AU_PER_XMR)).divide(new BigInteger(decimalDivisor));\n }\n \n /**\n * Convert atomic units to XMR.\n * \n * @param {BigInteger|string} amountAtomicUnits - amount in atomic units to convert to XMR\n * @return {number} amount in XMR \n */\n static atomicUnitsToXmr(amountAtomicUnits) {\n if (typeof amountAtomicUnits === \"string\") amountAtomicUnits = new BigInteger(amountAtomicUnits);\n else if (!(amountAtomicUnits instanceof BigInteger)) throw new MoneroError(\"Must provide atomic units as BigInteger or string to convert to XMR\");\n let quotientAndRemainder = amountAtomicUnits.divRem(new BigInteger(MoneroUtils.AU_PER_XMR));\n return Number(quotientAndRemainder[0].toJSValue() + quotientAndRemainder[1].toJSValue() / MoneroUtils.AU_PER_XMR);\n }\n \n static _isHex64(str) {\n return typeof str === \"string\" && str.length === 64 && GenUtils.isHex(str);\n }\n}\n\nMoneroUtils.PROXY_TO_WORKER = true;\nMoneroUtils.NUM_MNEMONIC_WORDS = 25;\nMoneroUtils.RING_SIZE = 12;\nMoneroUtils.MAX_REQUESTS_PER_SECOND = 50;\nMoneroUtils.AU_PER_XMR = 1000000000000;\n\nmodule.exports = MoneroUtils;","const assert = require(\"assert\");\nconst GenUtils = require(\"./GenUtils\");\nconst HttpClient = require(\"./HttpClient\");\nconst LibraryUtils = require(\"./LibraryUtils\");\nconst MoneroBan = require(\"../daemon/model/MoneroBan\");\nconst MoneroBlock = require(\"../daemon/model/MoneroBlock\");\nconst MoneroDaemonListener = require(\"../daemon/model/MoneroDaemonListener\");\nconst MoneroDaemonRpc = require(\"../daemon/MoneroDaemonRpc\");\nconst MoneroError = require(\"./MoneroError\");\nconst MoneroKeyImage = require(\"../daemon/model/MoneroKeyImage\");\nconst MoneroRpcConnection = require(\"./MoneroRpcConnection\");\nconst MoneroTxConfig = require(\"../wallet/model/MoneroTxConfig\");\nconst MoneroTxSet = require(\"../wallet/model/MoneroTxSet\");\nconst MoneroUtils = require(\"../common/MoneroUtils\");\nconst MoneroWalletConfig = require(\"../wallet/model/MoneroWalletConfig\");\nconst MoneroWalletListener = require(\"../wallet/model/MoneroWalletListener\");\nconst MoneroWalletFull = require(\"../wallet/MoneroWalletFull\");\n\n/**\n * Worker to manage a daemon and wasm wallet off the main thread using messages.\n * \n * Required message format: e.data[0] = object id, e.data[1] = function name, e.data[2+] = function args\n *\n * For browser applications, this file must be browserified and placed in the web app root.\n * \n * @private\n */\nonmessage = async function(e) {\n \n // initialize one time\n await self.initOneTime();\n \n // validate params\n let objectId = e.data[0];\n let fnName = e.data[1];\n let callbackId = e.data[2];\n assert(fnName, \"Must provide function name to worker\");\n assert(callbackId, \"Must provide callback id to worker\");\n if (!self[fnName]) throw new Error(\"Method '\" + fnName + \"' is not registered with worker\");\n e.data.splice(1, 2); // remove function name and callback id to apply function with arguments\n \n // execute worker function and post result to callback\n try {\n postMessage([objectId, callbackId, {result: await self[fnName].apply(null, e.data)}]);\n } catch (e) {\n if (!(e instanceof Error)) e = new Error(e);\n postMessage([objectId, callbackId, {error: LibraryUtils.serializeError(e)}]);\n }\n}\n\nself.initOneTime = async function() {\n if (!self.isInitialized) {\n self.WORKER_OBJECTS = {};\n self.isInitialized = true;\n MoneroUtils.PROXY_TO_WORKER = false;\n }\n}\n\n// --------------------------- STATIC UTILITIES -------------------------------\n\n// TODO: object id not needed for static utilites, using throwaway uuid\n\nself.httpRequest = async function(objectId, opts) {\n try {\n return await HttpClient.request(Object.assign(opts, {proxyToWorker: false})); \n } catch (err) {\n throw err.statusCode ? new Error(JSON.stringify({statusCode: err.statusCode, statusMessage: err.message})) : err;\n }\n}\n\nself.setLogLevel = async function(objectId, level) {\n return LibraryUtils.setLogLevel(level);\n}\n\nself.getWasmMemoryUsed = async function(objectId) {\n return LibraryUtils.getWasmModule() && LibraryUtils.getWasmModule().HEAP8 ? LibraryUtils.getWasmModule().HEAP8.length : undefined;\n}\n\n// ----------------------------- MONERO UTILS ---------------------------------\n\nself.moneroUtilsGetIntegratedAddress = async function(objectId, networkType, standardAddress, paymentId) {\n return (await MoneroUtils.getIntegratedAddress(networkType, standardAddress, paymentId)).toJson();\n}\n\nself.moneroUtilsValidateAddress = async function(objectId, address, networkType) {\n return MoneroUtils.validateAddress(address, networkType);\n}\n\nself.moneroUtilsJsonToBinary = async function(objectId, json) {\n return MoneroUtils.jsonToBinary(json);\n}\n\nself.moneroUtilsBinaryToJson = async function(objectId, uint8arr) {\n return MoneroUtils.binaryToJson(uint8arr);\n}\n\nself.moneroUtilsBinaryBlocksToJson = async function(objectId, uint8arr) {\n return MoneroUtils.binaryBlocksToJson(uint8arr);\n}\n\n// ---------------------------- DAEMON METHODS --------------------------------\n\nself.daemonAddListener = async function(daemonId, listenerId) {\n let listener = new class extends MoneroDaemonListener {\n async onBlockHeader(blockHeader) {\n self.postMessage([daemonId, \"onBlockHeader_\" + listenerId, blockHeader.toJson()]);\n }\n }\n if (!self.daemonListeners) self.daemonListeners = {};\n self.daemonListeners[listenerId] = listener;\n await self.WORKER_OBJECTS[daemonId].addListener(listener);\n}\n\nself.daemonRemoveListener = async function(daemonId, listenerId) {\n if (!self.daemonListeners[listenerId]) throw new MoneroError(\"No daemon worker listener registered with id: \" + listenerId);\n await self.WORKER_OBJECTS[daemonId].removeListener(self.daemonListeners[listenerId]);\n delete self.daemonListeners[listenerId];\n}\n\nself.connectDaemonRpc = async function(daemonId, config) {\n self.WORKER_OBJECTS[daemonId] = new MoneroDaemonRpc(config);\n}\n\nself.daemonGetRpcConnection = async function(daemonId) {\n let connection = await self.WORKER_OBJECTS[daemonId].getRpcConnection();\n return connection ? connection.getConfig() : undefined;\n}\n\nself.daemonIsConnected = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].isConnected();\n}\n\nself.daemonGetVersion = async function(daemonId) {\n return (await self.WORKER_OBJECTS[daemonId].getVersion()).toJson();\n}\n\nself.daemonIsTrusted = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].isTrusted();\n}\n\nself.daemonGetHeight = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].getHeight();\n}\n\nself.daemonGetBlockHash = async function(daemonId, height) {\n return self.WORKER_OBJECTS[daemonId].getBlockHash(height);\n}\n\nself.daemonGetBlockTemplate = async function(daemonId, walletAddress, reserveSize) {\n return (await self.WORKER_OBJECTS[daemonId].getBlockTemplate(walletAddress, reserveSize)).toJson();\n}\n\nself.daemonGetLastBlockHeader = async function(daemonId) {\n return (await self.WORKER_OBJECTS[daemonId].getLastBlockHeader()).toJson();\n}\n\nself.daemonGetBlockHeaderByHash = async function(daemonId, hash) {\n return (await self.WORKER_OBJECTS[daemonId].getBlockHeaderByHash(hash)).toJson();\n}\n\nself.daemonGetBlockHeaderByHeight = async function(daemonId, height) {\n return (await self.WORKER_OBJECTS[daemonId].getBlockHeaderByHeight(height)).toJson();\n}\n\nself.daemonGetBlockHeadersByRange = async function(daemonId, startHeight, endHeight) {\n let blockHeadersJson = [];\n for (let blockHeader of await self.WORKER_OBJECTS[daemonId].getBlockHeadersByRange(startHeight, endHeight)) blockHeadersJson.push(blockHeader.toJson());\n return blockHeadersJson;\n}\n\nself.daemonGetBlockByHash = async function(daemonId, blockHash) {\n return (await self.WORKER_OBJECTS[daemonId].getBlockByHash(blockHash)).toJson();\n}\n\nself.daemonGetBlocksByHash = async function(daemonId, blockHashes, startHeight, prune) {\n let blocksJson = [];\n for (let block of await self.WORKER_OBJECTS[daemonId].getBlocksByHash(blockHashes, startHeight, prune)) blocksJson.push(block.toJson());\n return blocksJson;\n}\n\nself.daemonGetBlockByHeight = async function(daemonId, height) {\n return (await self.WORKER_OBJECTS[daemonId].getBlockByHeight(height)).toJson();\n}\n\nself.daemonGetBlocksByHeight = async function(daemonId, heights) {\n let blocksJson = [];\n for (let block of await self.WORKER_OBJECTS[daemonId].getBlocksByHeight(heights)) blocksJson.push(block.toJson());\n return blocksJson;\n}\n\nself.daemonGetBlocksByRange = async function(daemonId, startHeight, endHeight) {\n let blocksJson = [];\n for (let block of await self.WORKER_OBJECTS[daemonId].getBlocksByRange(startHeight, endHeight)) blocksJson.push(block.toJson());\n return blocksJson;\n}\n\nself.daemonGetBlocksByRangeChunked = async function(daemonId, startHeight, endHeight, maxChunkSize) {\n let blocksJson = [];\n for (let block of await self.WORKER_OBJECTS[daemonId].getBlocksByRangeChunked(startHeight, endHeight, maxChunkSize)) blocksJson.push(block.toJson());\n return blocksJson;\n}\n\nself.daemonGetBlockHashes = async function(daemonId, blockHashes, startHeight) {\n throw new Error(\"worker.getBlockHashes not implemented\");\n}\n\n// TODO: factor common code with self.getTxs()\nself.daemonGetTxs = async function(daemonId, txHashes, prune) {\n \n // get txs\n let txs = await self.WORKER_OBJECTS[daemonId].getTxs(txHashes, prune);\n \n // collect unique blocks to preserve model relationships as trees (based on monero_wasm_bridge.cpp::get_txs)\n let blocks = [];\n let unconfirmedBlock = undefined\n let seenBlocks = new Set();\n for (let tx of txs) {\n if (!tx.getBlock()) {\n if (!unconfirmedBlock) unconfirmedBlock = new MoneroBlock().setTxs([]);\n tx.setBlock(unconfirmedBlock);\n unconfirmedBlock.getTxs().push(tx);\n }\n if (!seenBlocks.has(tx.getBlock())) {\n seenBlocks.add(tx.getBlock());\n blocks.push(tx.getBlock());\n }\n }\n \n // serialize blocks to json\n for (let i = 0; i < blocks.length; i++) blocks[i] = blocks[i].toJson();\n return blocks;\n}\n\nself.daemonGetTxHexes = async function(daemonId, txHashes, prune) {\n return self.WORKER_OBJECTS[daemonId].getTxHexes(txHashes, prune);\n}\n\nself.daemonGetMinerTxSum = async function(daemonId, height, numBlocks) {\n return (await self.WORKER_OBJECTS[daemonId].getMinerTxSum(height, numBlocks)).toJson();\n}\n\nself.daemonGetFeeEstimate = async function(daemonId, graceBlocks) {\n return (await self.WORKER_OBJECTS[daemonId].getFeeEstimate(graceBlocks)).toJson();\n}\n\nself.daemonSubmitTxHex = async function(daemonId, txHex, doNotRelay) {\n return (await self.WORKER_OBJECTS[daemonId].submitTxHex(txHex, doNotRelay)).toJson();\n}\n\nself.daemonRelayTxsByHash = async function(daemonId, txHashes) {\n return self.WORKER_OBJECTS[daemonId].relayTxsByHash(txHashes);\n}\n\nself.daemonGetTxPool = async function(daemonId) {\n let txs = await self.WORKER_OBJECTS[daemonId].getTxPool();\n let block = new MoneroBlock().setTxs(txs);\n for (let tx of txs) tx.setBlock(block)\n return block.toJson();\n}\n\nself.daemonGetTxPoolHashes = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].getTxPoolHashes();\n}\n\n//async getTxPoolBacklog() {\n// throw new MoneroError(\"Not implemented\");\n//}\n\nself.daemonGetTxPoolStats = async function(daemonId) {\n return (await self.WORKER_OBJECTS[daemonId].getTxPoolStats()).toJson();\n}\n\nself.daemonFlushTxPool = async function(daemonId, hashes) {\n return self.WORKER_OBJECTS[daemonId].flushTxPool(hashes);\n}\n\nself.daemonGetKeyImageSpentStatuses = async function(daemonId, keyImages) {\n return self.WORKER_OBJECTS[daemonId].getKeyImageSpentStatuses(keyImages);\n}\n\n//\n//async getOutputs(outputs) {\n// throw new MoneroError(\"Not implemented\");\n//}\n\nself.daemonGetOutputHistogram = async function(daemonId, amounts, minCount, maxCount, isUnlocked, recentCutoff) {\n let entriesJson = [];\n for (let entry of await self.WORKER_OBJECTS[daemonId].getOutputHistogram(amounts, minCount, maxCount, isUnlocked, recentCutoff)) {\n entriesJson.push(entry.toJson());\n }\n return entriesJson;\n}\n\n//\n//async getOutputDistribution(amounts, cumulative, startHeight, endHeight) {\n// throw new MoneroError(\"Not implemented\");\n//}\n\nself.daemonGetInfo = async function(daemonId) {\n return (await self.WORKER_OBJECTS[daemonId].getInfo()).toJson();\n}\n\nself.daemonGetSyncInfo = async function(daemonId) {\n return (await self.WORKER_OBJECTS[daemonId].getSyncInfo()).toJson();\n}\n\nself.daemonGetHardForkInfo = async function(daemonId) {\n return (await self.WORKER_OBJECTS[daemonId].getHardForkInfo()).toJson();\n}\n\nself.daemonGetAltChains = async function(daemonId) {\n let altChainsJson = [];\n for (let altChain of await self.WORKER_OBJECTS[daemonId].getAltChains()) altChainsJson.push(altChain.toJson());\n return altChainsJson;\n}\n\nself.daemonGetAltBlockHashes = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].getAltBlockHashes();\n}\n\nself.daemonGetDownloadLimit = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].getDownloadLimit();\n}\n\nself.daemonSetDownloadLimit = async function(daemonId, limit) {\n return self.WORKER_OBJECTS[daemonId].setDownloadLimit(limit);\n}\n\nself.daemonResetDownloadLimit = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].resetDownloadLimit();\n}\n\nself.daemonGetUploadLimit = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].getUploadLimit();\n}\n\nself.daemonSetUploadLimit = async function(daemonId, limit) {\n return self.WORKER_OBJECTS[daemonId].setUploadLimit(limit);\n}\n\nself.daemonResetUploadLimit = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].resetUploadLimit();\n}\n\nself.daemonGetPeers = async function(daemonId) {\n let peersJson = [];\n for (let peer of await self.WORKER_OBJECTS[daemonId].getPeers()) peersJson.push(peer.toJson());\n return peersJson;\n}\n\nself.daemonGetKnownPeers = async function(daemonId) {\n let peersJson = [];\n for (let peer of await self.WORKER_OBJECTS[daemonId].getKnownPeers()) peersJson.push(peer.toJson());\n return peersJson;\n}\n\nself.daemonSetOutgoingPeerLimit = async function(daemonId, limit) {\n return self.WORKER_OBJECTS[daemonId].setOutgoingPeerLimit(limit);\n}\n\nself.daemonSetIncomingPeerLimit = async function(daemonId, limit) {\n return self.WORKER_OBJECTS[daemonId].setIncomingPeerLimit(limit);\n}\n\nself.daemonGetPeerBans = async function(daemonId) {\n let bansJson = [];\n for (let ban of await self.WORKER_OBJECTS[daemonId].getPeerBans()) bansJson.push(ban.toJson());\n return bansJson;\n}\n\nself.daemonSetPeerBans = async function(daemonId, bansJson) {\n let bans = [];\n for (let banJson of bansJson) bans.push(new MoneroBan(banJson));\n return self.WORKER_OBJECTS[daemonId].setPeerBans(bans);\n}\n\nself.daemonStartMining = async function(daemonId, address, numThreads, isBackground, ignoreBattery) {\n return self.WORKER_OBJECTS[daemonId].startMining(address, numThreads, isBackground, ignoreBattery);\n}\n\nself.daemonStopMining = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].stopMining();\n}\n\nself.daemonGetMiningStatus = async function(daemonId) {\n return (await self.WORKER_OBJECTS[daemonId].getMiningStatus()).toJson();\n}\n\nself.daemonPruneBlockchain = async function(daemonId, check) {\n return (await self.WORKER_OBJECTS[daemonId].pruneBlockchain(check)).toJson();\n}\n\n//\n//async submitBlocks(blockBlobs) {\n// throw new MoneroError(\"Not implemented\");\n//}\n//\n//async checkForUpdate() {\n// throw new MoneroError(\"Not implemented\");\n//}\n//\n//async downloadUpdate(path) {\n// throw new MoneroError(\"Not implemented\");\n//}\n\nself.daemonStop = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].stop();\n}\n\nself.daemonWaitForNextBlockHeader = async function(daemonId) {\n return (await self.WORKER_OBJECTS[daemonId].waitForNextBlockHeader()).toJson();\n}\n\n//------------------------------ WALLET METHODS -------------------------------\n\nself.openWalletData = async function(walletId, path, password, networkType, keysData, cacheData, daemonUriOrConfig) {\n let daemonConnection = daemonUriOrConfig ? new MoneroRpcConnection(daemonUriOrConfig) : undefined;\n self.WORKER_OBJECTS[walletId] = await MoneroWalletFull.openWallet({path: \"\", password: password, networkType: networkType, keysData: keysData, cacheData: cacheData, server: daemonConnection, proxyToWorker: false});\n self.WORKER_OBJECTS[walletId]._setBrowserMainPath(path);\n}\n\nself._createWallet = async function(walletId, configJson) {\n let config = new MoneroWalletConfig(configJson);\n let path = config.getPath();\n config.setPath(\"\");\n config.setProxyToWorker(false);\n self.WORKER_OBJECTS[walletId] = await MoneroWalletFull.createWallet(config);\n self.WORKER_OBJECTS[walletId]._setBrowserMainPath(path);\n}\n\nself.isViewOnly = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].isViewOnly();\n}\n\nself.getNetworkType = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getNetworkType();\n}\n\n//\n//async getVersion() {\n// throw new Error(\"Not implemented\");\n//}\n\nself.getSeed = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getSeed();\n}\n\nself.getSeedLanguage = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getSeedLanguage();\n}\n\nself.getSeedLanguages = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getSeedLanguages();\n}\n\nself.getPrivateSpendKey = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getPrivateSpendKey();\n}\n\nself.getPrivateViewKey = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getPrivateViewKey();\n}\n\nself.getPublicViewKey = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getPublicViewKey();\n}\n\nself.getPublicSpendKey = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getPublicSpendKey();\n}\n\nself.getAddress = async function(walletId, accountIdx, subaddressIdx) {\n return self.WORKER_OBJECTS[walletId].getAddress(accountIdx, subaddressIdx);\n}\n\nself.getAddressIndex = async function(walletId, address) {\n return (await self.WORKER_OBJECTS[walletId].getAddressIndex(address)).toJson();\n}\n\nself.setSubaddressLabel = async function(walletId, accountIdx, subaddressIdx, label) {\n await self.WORKER_OBJECTS[walletId].setSubaddressLabel(accountIdx, subaddressIdx, label);\n}\n\nself.getIntegratedAddress = async function(walletId, standardAddress, paymentId) {\n return (await self.WORKER_OBJECTS[walletId].getIntegratedAddress(standardAddress, paymentId)).toJson();\n}\n\nself.decodeIntegratedAddress = async function(walletId, integratedAddress) {\n return (await self.WORKER_OBJECTS[walletId].decodeIntegratedAddress(integratedAddress)).toJson();\n}\n\nself.setDaemonConnection = async function(walletId, config) {\n return self.WORKER_OBJECTS[walletId].setDaemonConnection(config ? new MoneroRpcConnection(Object.assign(config, {proxyToWorker: false})) : undefined);\n}\n\nself.getDaemonConnection = async function(walletId) {\n let connection = await self.WORKER_OBJECTS[walletId].getDaemonConnection();\n return connection ? connection.getConfig() : undefined;\n}\n\nself.isConnectedToDaemon = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].isConnectedToDaemon();\n}\n\nself.getRestoreHeight = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getRestoreHeight();\n}\n\nself.setRestoreHeight = async function(walletId, restoreHeight) {\n return self.WORKER_OBJECTS[walletId].setRestoreHeight(restoreHeight);\n}\n\nself.getDaemonHeight = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getDaemonHeight();\n}\n\nself.getDaemonMaxPeerHeight = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getDaemonMaxPeerHeight()\n}\n\nself.getHeightByDate = async function(walletId, year, month, day) {\n return self.WORKER_OBJECTS[walletId].getHeightByDate(year, month, day);\n}\n\nself.isDaemonSynced = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].isDaemonSynced();\n}\n\nself.getHeight = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getHeight();\n}\n\nself.addListener = async function(walletId, listenerId) {\n \n /**\n * Internal listener to bridge notifications to external listeners.\n * \n * TODO: MoneroWalletListener is not defined until scripts imported\n * \n * @private\n */\n class WalletWorkerHelperListener extends MoneroWalletListener {\n \n constructor(walletId, id, worker) {\n super();\n this.walletId = walletId;\n this.id = id;\n this.worker = worker;\n }\n \n getId() {\n return this.id;\n }\n \n onSyncProgress(height, startHeight, endHeight, percentDone, message) {\n this.worker.postMessage([this.walletId, \"onSyncProgress_\" + this.getId(), height, startHeight, endHeight, percentDone, message]);\n }\n\n onNewBlock(height) { \n this.worker.postMessage([this.walletId, \"onNewBlock_\" + this.getId(), height]);\n }\n \n onBalancesChanged(newBalance, newUnlockedBalance) {\n this.worker.postMessage([this.walletId, \"onBalancesChanged_\" + this.getId(), newBalance.toString(), newUnlockedBalance.toString()]);\n }\n\n onOutputReceived(output) {\n let block = output.getTx().getBlock();\n if (block === undefined) block = new MoneroBlock().setTxs([output.getTx()]);\n this.worker.postMessage([this.walletId, \"onOutputReceived_\" + this.getId(), block.toJson()]); // serialize from root block\n }\n \n onOutputSpent(output) {\n let block = output.getTx().getBlock();\n if (block === undefined) block = new MoneroBlock().setTxs([output.getTx()]);\n this.worker.postMessage([this.walletId, \"onOutputSpent_\" + this.getId(), block.toJson()]); // serialize from root block\n }\n }\n \n let listener = new WalletWorkerHelperListener(walletId, listenerId, self);\n if (!self.listeners) self.listeners = [];\n self.listeners.push(listener);\n await self.WORKER_OBJECTS[walletId].addListener(listener);\n}\n\nself.removeListener = async function(walletId, listenerId) {\n for (let i = 0; i < self.listeners.length; i++) {\n if (self.listeners[i].getId() !== listenerId) continue;\n await self.WORKER_OBJECTS[walletId].removeListener(self.listeners[i]);\n self.listeners.splice(i, 1);\n return;\n }\n throw new MoneroError(\"Listener is not registered with wallet\");\n}\n\nself.isSynced = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].isSynced();\n}\n\nself.sync = async function(walletId, startHeight, allowConcurrentCalls) {\n return await self.WORKER_OBJECTS[walletId].sync(undefined, startHeight, allowConcurrentCalls);\n}\n\nself.startSyncing = async function(walletId, syncPeriodInMs) {\n return self.WORKER_OBJECTS[walletId].startSyncing(syncPeriodInMs);\n}\n\nself.stopSyncing = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].stopSyncing();\n}\n\nself.scanTxs = async function(walletId, txHashes) {\n return self.WORKER_OBJECTS[walletId].scanTxs(txHashes);\n}\n\nself.rescanSpent = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].rescanSpent();\n}\n\nself.rescanBlockchain = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].rescanBlockchain();\n}\n\nself.getBalance = async function(walletId, accountIdx, subaddressIdx) {\n return (await self.WORKER_OBJECTS[walletId].getBalance(accountIdx, subaddressIdx)).toString();\n}\n\nself.getUnlockedBalance = async function(walletId, accountIdx, subaddressIdx) {\n return (await self.WORKER_OBJECTS[walletId].getUnlockedBalance(accountIdx, subaddressIdx)).toString();\n}\n\nself.getAccounts = async function(walletId, includeSubaddresses, tag) {\n let accountJsons = [];\n for (let account of await self.WORKER_OBJECTS[walletId].getAccounts(includeSubaddresses, tag)) accountJsons.push(account.toJson());\n return accountJsons;\n}\n\nself.getAccount = async function(walletId, accountIdx, includeSubaddresses) {\n return (await self.WORKER_OBJECTS[walletId].getAccount(accountIdx, includeSubaddresses)).toJson();\n}\n\nself.createAccount = async function(walletId, label) {\n return (await self.WORKER_OBJECTS[walletId].createAccount(label)).toJson();\n}\n\nself.getSubaddresses = async function(walletId, accountIdx, subaddressIndices) {\n let subaddressJsons = [];\n for (let subaddress of await self.WORKER_OBJECTS[walletId].getSubaddresses(accountIdx, subaddressIndices)) subaddressJsons.push(subaddress.toJson());\n return subaddressJsons;\n}\n\nself.createSubaddress = async function(walletId, accountIdx, label) {\n return (await self.WORKER_OBJECTS[walletId].createSubaddress(accountIdx, label)).toJson();\n}\n\n// TODO: easier or more efficient way than serializing from root blocks?\nself.getTxs = async function(walletId, blockJsonQuery) {\n \n // deserialize query which is json string rooted at block\n let query = new MoneroBlock(blockJsonQuery, MoneroBlock.DeserializationType.TX_QUERY).getTxs()[0];\n \n // get txs\n let txs = await self.WORKER_OBJECTS[walletId].getTxs(query);\n \n // collect unique blocks to preserve model relationships as trees (based on monero_wasm_bridge.cpp::get_txs)\n let seenBlocks = new Set();\n let unconfirmedBlock = undefined;\n let blocks = [];\n for (let tx of txs) {\n if (!tx.getBlock()) {\n if (!unconfirmedBlock) unconfirmedBlock = new MoneroBlock().setTxs([]);\n tx.setBlock(unconfirmedBlock);\n unconfirmedBlock.getTxs().push(tx);\n }\n if (!seenBlocks.has(tx.getBlock())) {\n seenBlocks.add(tx.getBlock());\n blocks.push(tx.getBlock());\n }\n }\n \n // serialize blocks to json\n for (let i = 0; i < blocks.length; i++) blocks[i] = blocks[i].toJson();\n return {blocks: blocks};\n}\n\nself.getTransfers = async function(walletId, blockJsonQuery) {\n \n // deserialize query which is json string rooted at block\n let query = new MoneroBlock(blockJsonQuery, MoneroBlock.DeserializationType.TX_QUERY).getTxs()[0].getTransferQuery();\n \n // get transfers\n let transfers = await self.WORKER_OBJECTS[walletId].getTransfers(query);\n \n // collect unique blocks to preserve model relationships as tree\n let unconfirmedBlock = undefined;\n let blocks = [];\n let seenBlocks = new Set();\n for (let transfer of transfers) {\n let tx = transfer.getTx();\n if (!tx.getBlock()) {\n if (!unconfirmedBlock) unconfirmedBlock = new MoneroBlock().setTxs([]);\n tx.setBlock(unconfirmedBlock);\n unconfirmedBlock.getTxs().push(tx);\n }\n if (!seenBlocks.has(tx.getBlock())) {\n seenBlocks.add(tx.getBlock());\n blocks.push(tx.getBlock());\n }\n }\n \n // serialize blocks to json\n for (let i = 0; i < blocks.length; i++) blocks[i] = blocks[i].toJson();\n return blocks;\n}\n\nself.getOutputs = async function(walletId, blockJsonQuery) {\n\n // deserialize query which is json string rooted at block\n let query = new MoneroBlock(blockJsonQuery, MoneroBlock.DeserializationType.TX_QUERY).getTxs()[0].getOutputQuery();\n \n // get outputs\n let outputs = await self.WORKER_OBJECTS[walletId].getOutputs(query);\n \n // collect unique blocks to preserve model relationships as tree\n let unconfirmedBlock = undefined;\n let blocks = [];\n let seenBlocks = new Set();\n for (let output of outputs) {\n let tx = output.getTx();\n if (!tx.getBlock()) {\n if (!unconfirmedBlock) unconfirmedBlock = new MoneroBlock().setTxs([]);\n tx.setBlock(unconfirmedBlock);\n unconfirmedBlock.getTxs().push(tx);\n }\n if (!seenBlocks.has(tx.getBlock())) {\n seenBlocks.add(tx.getBlock());\n blocks.push(tx.getBlock());\n }\n }\n \n // serialize blocks to json\n for (let i = 0; i < blocks.length; i++) blocks[i] = blocks[i].toJson();\n return blocks;\n}\n\nself.exportOutputs = async function(walletId, all) {\n return self.WORKER_OBJECTS[walletId].exportOutputs(all);\n}\n\nself.importOutputs = async function(walletId, outputsHex) {\n return self.WORKER_OBJECTS[walletId].importOutputs(outputsHex);\n}\n\nself.getKeyImages = async function(walletId, all) {\n let keyImagesJson = [];\n for (let keyImage of await self.WORKER_OBJECTS[walletId].exportKeyImages(all)) keyImagesJson.push(keyImage.toJson());\n return keyImagesJson;\n}\n\nself.importKeyImages = async function(walletId, keyImagesJson) {\n let keyImages = [];\n for (let keyImageJson of keyImagesJson) keyImages.push(new MoneroKeyImage(keyImageJson));\n return (await self.WORKER_OBJECTS[walletId].importKeyImages(keyImages)).toJson();\n}\n\n//async getNewKeyImagesFromLastImport() {\n// throw new MoneroError(\"Not implemented\");\n//}\n\nself.freezeOutput = async function(walletId, keyImage) {\n return self.WORKER_OBJECTS[walletId].freezeOutput(keyImage);\n}\n\nself.thawOutput = async function(walletId, keyImage) {\n return self.WORKER_OBJECTS[walletId].thawOutput(keyImage);\n}\n\nself.isOutputFrozen = async function(walletId, keyImage) {\n return self.WORKER_OBJECTS[walletId].isOutputFrozen(keyImage);\n}\n\nself.createTxs = async function(walletId, config) {\n if (typeof config === \"object\") config = new MoneroTxConfig(config);\n let txs = await self.WORKER_OBJECTS[walletId].createTxs(config);\n return txs[0].getTxSet().toJson();\n}\n\nself.sweepOutput = async function(walletId, config) {\n if (typeof config === \"object\") config = new MoneroTxConfig(config);\n let tx = await self.WORKER_OBJECTS[walletId].sweepOutput(config);\n return tx.getTxSet().toJson();\n}\n\nself.sweepUnlocked = async function(walletId, config) {\n if (typeof config === \"object\") config = new MoneroTxConfig(config);\n let txs = await self.WORKER_OBJECTS[walletId].sweepUnlocked(config);\n let txSets = [];\n for (let tx of txs) if (!GenUtils.arrayContains(txSets, tx.getTxSet())) txSets.push(tx.getTxSet());\n let txSetsJson = [];\n for (let txSet of txSets) txSetsJson.push(txSet.toJson());\n return txSetsJson;\n}\n\nself.sweepDust = async function(walletId, relay) {\n let txs = await self.WORKER_OBJECTS[walletId].sweepDust(relay);\n return txs.length === 0 ? {} : txs[0].getTxSet().toJson();\n}\n\nself.relayTxs = async function(walletId, txMetadatas) {\n return self.WORKER_OBJECTS[walletId].relayTxs(txMetadatas);\n}\n\nself.describeTxSet = async function(walletId, txSetJson) {\n return (await self.WORKER_OBJECTS[walletId].describeTxSet(new MoneroTxSet(txSetJson))).toJson();\n}\n\nself.signTxs = async function(walletId, unsignedTxHex) {\n return self.WORKER_OBJECTS[walletId].signTxs(unsignedTxHex);\n}\n\nself.submitTxs = async function(walletId, signedTxHex) {\n return self.WORKER_OBJECTS[walletId].submitTxs(signedTxHex);\n}\n\nself.signMessage = async function(walletId, message, signatureType, accountIdx, subaddressIdx) {\n return self.WORKER_OBJECTS[walletId].signMessage(message, signatureType, accountIdx, subaddressIdx);\n}\n\nself.verifyMessage = async function(walletId, message, address, signature) {\n return (await self.WORKER_OBJECTS[walletId].verifyMessage(message, address, signature)).toJson();\n}\n\nself.getTxKey = async function(walletId, txHash) {\n return self.WORKER_OBJECTS[walletId].getTxKey(txHash);\n}\n\nself.checkTxKey = async function(walletId, txHash, txKey, address) {\n return (await self.WORKER_OBJECTS[walletId].checkTxKey(txHash, txKey, address)).toJson();\n}\n\nself.getTxProof = async function(walletId, txHash, address, message) {\n return self.WORKER_OBJECTS[walletId].getTxProof(txHash, address, message);\n}\n\nself.checkTxProof = async function(walletId, txHash, address, message, signature) {\n return (await self.WORKER_OBJECTS[walletId].checkTxProof(txHash, address, message, signature)).toJson();\n}\n\nself.getSpendProof = async function(walletId, txHash, message) {\n return self.WORKER_OBJECTS[walletId].getSpendProof(txHash, message);\n}\n\nself.checkSpendProof = async function(walletId, txHash, message, signature) {\n return self.WORKER_OBJECTS[walletId].checkSpendProof(txHash, message, signature);\n}\n\nself.getReserveProofWallet = async function(walletId, message) {\n return self.WORKER_OBJECTS[walletId].getReserveProofWallet(message);\n}\n\nself.getReserveProofAccount = async function(walletId, accountIdx, amountStr, message) {\n return self.WORKER_OBJECTS[walletId].getReserveProofAccount(accountIdx, amountStr, message);\n}\n\nself.checkReserveProof = async function(walletId, address, message, signature) {\n return (await self.WORKER_OBJECTS[walletId].checkReserveProof(address, message, signature)).toJson();\n}\n\nself.getTxNotes = async function(walletId, txHashes) {\n return self.WORKER_OBJECTS[walletId].getTxNotes(txHashes);\n}\n\nself.setTxNotes = async function(walletId, txHashes, txNotes) {\n return self.WORKER_OBJECTS[walletId].setTxNotes(txHashes, txNotes);\n}\n\nself.getAddressBookEntries = async function(walletId, entryIndices) {\n let entriesJson = [];\n for (let entry of await self.WORKER_OBJECTS[walletId].getAddressBookEntries(entryIndices)) entriesJson.push(entry.toJson());\n return entriesJson;\n}\n\nself.addAddressBookEntry = async function(walletId, address, description) {\n return self.WORKER_OBJECTS[walletId].addAddressBookEntry(address, description);\n}\n\nself.editAddressBookEntry = async function(walletId, index, setAddress, address, setDescription, description) {\n return self.WORKER_OBJECTS[walletId].editAddressBookEntry(index, setAddress, address, setDescription, description);\n}\n\nself.deleteAddressBookEntry = async function(walletId, index) {\n return self.WORKER_OBJECTS[walletId].deleteAddressBookEntry(index);\n}\n\nself.tagAccounts = async function(walletId, tag, accountIndices) {\n throw new Error(\"Not implemented\");\n}\n\nself.untagAccounts = async function(walletId, accountIndices) {\n throw new Error(\"Not implemented\");\n}\n\nself.getAccountTags = async function(walletId) {\n throw new Error(\"Not implemented\");\n}\n\nself.setAccountTagLabel = async function(walletId, tag, label) {\n throw new Error(\"Not implemented\");\n}\n\nself.getPaymentUri = async function(walletId, configJson) {\n return self.WORKER_OBJECTS[walletId].getPaymentUri(new MoneroTxConfig(configJson));\n}\n\nself.parsePaymentUri = async function(walletId, uri) {\n return (await self.WORKER_OBJECTS[walletId].parsePaymentUri(uri)).toJson();\n}\n\nself.getAttribute = async function(walletId, key) {\n return self.WORKER_OBJECTS[walletId].getAttribute(key);\n}\n\nself.setAttribute = async function(walletId, key, value) {\n return self.WORKER_OBJECTS[walletId].setAttribute(key, value);\n}\n\nself.startMining = async function(walletId, numThreads, backgroundMining, ignoreBattery) {\n return self.WORKER_OBJECTS[walletId].startMining(numThreads, backgroundMining, ignoreBattery);\n}\n\nself.stopMining = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].stopMining();\n}\n\nself.isMultisigImportNeeded = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].isMultisigImportNeeded();\n}\n\nself.isMultisig = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].isMultisig();\n}\n\nself.getMultisigInfo = async function(walletId) {\n return (await self.WORKER_OBJECTS[walletId].getMultisigInfo()).toJson();\n}\n\nself.prepareMultisig = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].prepareMultisig();\n}\n\nself.makeMultisig = async function(walletId, multisigHexes, threshold, password) {\n return await self.WORKER_OBJECTS[walletId].makeMultisig(multisigHexes, threshold, password);\n}\n\nself.exchangeMultisigKeys = async function(walletId, multisigHexes, password) {\n return (await self.WORKER_OBJECTS[walletId].exchangeMultisigKeys(multisigHexes, password)).toJson();\n}\n\nself.exportMultisigHex = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].exportMultisigHex();\n}\n\nself.importMultisigHex = async function(walletId, multisigHexes) {\n return self.WORKER_OBJECTS[walletId].importMultisigHex(multisigHexes);\n}\n\nself.signMultisigTxHex = async function(walletId, multisigTxHex) {\n return (await self.WORKER_OBJECTS[walletId].signMultisigTxHex(multisigTxHex)).toJson();\n}\n\nself.submitMultisigTxHex = async function(walletId, signedMultisigTxHex) {\n return self.WORKER_OBJECTS[walletId].submitMultisigTxHex(signedMultisigTxHex);\n}\n\nself.getData = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getData();\n}\n\nself.changePassword = async function(walletId, oldPassword, newPassword) {\n return self.WORKER_OBJECTS[walletId].changePassword(oldPassword, newPassword);\n}\n\nself.isClosed = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].isClosed();\n}\n\nself.close = async function(walletId, save) {\n return self.WORKER_OBJECTS[walletId].close(save); // TODO: remove listeners and delete wallet from WORKER_OBJECTS\n}","/**\n * SSL options for remote endpoints.\n */\nclass SslOptions {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n }\n \n getPrivateKeyPath() {\n return this.state.privateKeyPath;\n }\n \n setPrivateKeyPath(privateKeyPath) {\n this.state.privateKeyPath = privateKeyPath;\n return this;\n }\n \n getCertificatePath() {\n return this.state.certificatePath;\n }\n \n setCertificatePath(certificatePath) {\n this.state.certificatePath = certificatePath;\n return this;\n }\n \n getCertificateAuthorityFile() {\n return this.state.certificateAuthorityFile;\n }\n \n setCertificateAuthorityFile(certificateAuthorityFile) {\n this.state.certificateAuthorityFile = certificateAuthorityFile;\n return this;\n }\n \n getAllowedFingerprints() {\n return this.state.allowedFingerprints;\n }\n \n setAllowedFingerprints(allowedFingerprints) {\n this.state.allowedFingerprints = allowedFingerprints;\n return this;\n }\n \n getAllowAnyCert() {\n return this.state.allowAnyCert;\n }\n \n setAllowAnyCert(allowAnyCert) {\n this.state.allowAnyCert = allowAnyCert;\n return this;\n }\n}\n\nmodule.exports = SslOptions;","/**\n * Run a task in a fixed period loop.\n */\nclass TaskLooper {\n \n /**\n * Build the looper with a function to invoke on a fixed period loop.\n * \n * @param {function} task - the task function to invoke\n */\n constructor(task) {\n this._task = task;\n }\n\n /**\n * Get the task function to invoke on a fixed period loop.\n * \n * @return {function} the task function\n */\n getTask() {\n return this._task;\n }\n \n /**\n * Start the task loop.\n * \n * @param {int} periodInMs the loop period in milliseconds\n * @return {TaskLooper} this class for chaining\n */\n start(periodInMs) {\n this._periodInMs = periodInMs;\n if (this._isStarted) return this;\n this._isStarted = true;\n \n // start looping\n this._runLoop();\n return this;\n }\n\n /**\n * Indicates if looping.\n * \n * @return {boolean} true if looping, false otherwise\n */\n isStarted() {\n return this._isStarted;\n }\n \n /**\n * Stop the task loop.\n */\n stop() {\n this._isStarted = false;\n }\n \n /**\n * Set the loop period in milliseconds.\n * \n * @param {int} periodInMs the loop period in milliseconds\n */\n setPeriodInMs(periodInMs) {\n this._periodInMs = periodInMs;\n }\n \n async _runLoop() {\n if (this._isLooping) return;\n this._isLooping = true;\n let that = this;\n while (this._isStarted) {\n let startTime = Date.now();\n await this._task();\n if (this._isStarted) await new Promise(function(resolve) { setTimeout(resolve, that._periodInMs - (Date.now() - startTime)); });\n }\n this._isLooping = false;\n }\n}\n\nmodule.exports = TaskLooper;","const GenUtils = require(\"./GenUtils\");\n\n/**\n * Simple thread pool using the async library.\n */\nclass ThreadPool {\n \n /**\n * Construct the thread pool.\n * \n * @param {int} maxConcurrency - maximum number of threads in the pool (default 1)\n */\n constructor(maxConcurrency) {\n if (maxConcurrency === undefined) maxConcurrency = 1;\n if (maxConcurrency < 1) throw new Error(\"Max concurrency must be greater than or equal to 1\");\n \n // manager concurrency with async queue\n const async = require(\"async\");\n this.taskQueue = async.queue(function(asyncFn, callback) {\n if (asyncFn.then) asyncFn.then(resp => { callback(resp); }).catch(err => { callback(undefined, err); });\n else asyncFn().then(resp => { callback(resp); }).catch(err => { callback(undefined, err); });\n }, maxConcurrency);\n \n // use drain listeners to support await all\n let that = this;\n this.drainListeners = [];\n this.taskQueue.drain = function() {\n for (let listener of that.drainListeners) listener();\n }\n }\n \n /**\n * Submit an asynchronous function to run using the thread pool.\n * \n * @param {function} asyncFn - asynchronous function to run with the thread pool\n * @return {Promise} resolves when the function completes execution\n */\n async submit(asyncFn) {\n let that = this;\n return new Promise(function(resolve, reject) {\n that.taskQueue.push(asyncFn, function(resp, err) {\n if (err !== undefined) reject(err);\n else resolve(resp);\n });\n });\n }\n \n /**\n * Await all functions to complete.\n * \n * @return {Promise} resolves when all functions complete\n */\n async awaitAll() {\n if (this.taskQueue.length === 0) return;\n let that = this;\n return new Promise(function(resolve) {\n that.drainListeners.push(function() {\n GenUtils.remove(that.drainListeners, this);\n resolve();\n })\n });\n }\n}\n\nmodule.exports = ThreadPool;","/*\n\tJavaScript BigInteger library version 0.9.1\n\thttp://silentmatt.com/biginteger/\n\n\tCopyright (c) 2009 Matthew Crumley \n\tCopyright (c) 2010,2011 by John Tobey \n\tLicensed under the MIT license.\n\n\tSupport for arbitrary internal representation base was added by\n\tVitaly Magerya.\n*/\n/*\n\nThis file has been modified by Paul Shapiro:\n\n1. to bring in the function lowVal which was written by Lucas Jones\n2. to expose CONSTRUCT\n\n*/\n/*\n\tFile: biginteger.js\n\n\tExports:\n\n\t\t\n*/\n(function(exports) {\n\"use strict\";\n/*\n\tClass: BigInteger\n\tAn arbitrarily-large integer.\n\n\t objects should be considered immutable. None of the \"built-in\"\n\tmethods modify *this* or their arguments. All properties should be\n\tconsidered private.\n\n\tAll the methods of instances can be called \"statically\". The\n\tstatic versions are convenient if you don't already have a \n\tobject.\n\n\tAs an example, these calls are equivalent.\n\n\t> BigInteger(4).multiply(5); // returns BigInteger(20);\n\t> BigInteger.multiply(4, 5); // returns BigInteger(20);\n\n\t> var a = 42;\n\t> var a = BigInteger.toJSValue(\"0b101010\"); // Not completely useless...\n*/\n\nvar CONSTRUCT = {}; // Unique token to call \"private\" version of constructor\n\n/*\n\tConstructor: BigInteger()\n\tConvert a value to a .\n\n\tAlthough is the constructor for objects, it is\n\tbest not to call it as a constructor. If *n* is a object, it is\n\tsimply returned as-is. Otherwise, is equivalent to \n\twithout a radix argument.\n\n\t> var n0 = BigInteger();\t // Same as \n\t> var n1 = BigInteger(\"123\"); // Create a new with value 123\n\t> var n2 = BigInteger(123); // Create a new with value 123\n\t> var n3 = BigInteger(n2);\t// Return n2, unchanged\n\n\tThe constructor form only takes an array and a sign. *n* must be an\n\tarray of numbers in little-endian order, where each digit is between 0\n\tand BigInteger.base. The second parameter sets the sign: -1 for\n\tnegative, +1 for positive, or 0 for zero. The array is *not copied and\n\tmay be modified*. If the array contains only zeros, the sign parameter\n\tis ignored and is forced to zero.\n\n\t> new BigInteger([5], -1): create a new BigInteger with value -5\n\n\tParameters:\n\n\t\tn - Value to convert to a .\n\n\tReturns:\n\n\t\tA value.\n\n\tSee Also:\n\n\t\t, \n*/\nfunction BigInteger(n, s, token) {\n\tif (token !== CONSTRUCT) {\n\t\tif (n instanceof BigInteger) {\n\t\t\treturn n;\n\t\t}\n\t\telse if (typeof n === \"undefined\") {\n\t\t\treturn ZERO;\n\t\t}\n\t\treturn BigInteger.parse(n);\n\t}\n\n\tn = n || []; // Provide the nullary constructor for subclasses.\n\twhile (n.length && !n[n.length - 1]) {\n\t\t--n.length;\n\t}\n\tthis._d = n;\n\tthis._s = n.length ? (s || 1) : 0;\n}\nBigInteger.CONSTRUCT = CONSTRUCT; // added by PS to actually use the constructor\n\nBigInteger._construct = function(n, s) {\n\treturn new BigInteger(n, s, CONSTRUCT);\n};\n\n// Base-10 speedup hacks in parse, toString, exp10 and log functions\n// require base to be a power of 10. 10^7 is the largest such power\n// that won't cause a precision loss when digits are multiplied.\nvar BigInteger_base = 10000000;\nvar BigInteger_base_log10 = 7;\n\nBigInteger.base = BigInteger_base;\nBigInteger.base_log10 = BigInteger_base_log10;\n\nvar ZERO = new BigInteger([], 0, CONSTRUCT);\n// Constant: ZERO\n// 0.\nBigInteger.ZERO = ZERO;\n\nvar ONE = new BigInteger([1], 1, CONSTRUCT);\n// Constant: ONE\n// 1.\nBigInteger.ONE = ONE;\n\nvar M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);\n// Constant: M_ONE\n// -1.\nBigInteger.M_ONE = M_ONE;\n\n// Constant: _0\n// Shortcut for .\nBigInteger._0 = ZERO;\n\n// Constant: _1\n// Shortcut for .\nBigInteger._1 = ONE;\n\n/*\n\tConstant: small\n\tArray of from 0 to 36.\n\n\tThese are used internally for parsing, but useful when you need a \"small\"\n\t.\n\n\tSee Also:\n\n\t\t, , <_0>, <_1>\n*/\nBigInteger.small = [\n\tZERO,\n\tONE,\n\t/* Assuming BigInteger_base > 36 */\n\tnew BigInteger( [2], 1, CONSTRUCT),\n\tnew BigInteger( [3], 1, CONSTRUCT),\n\tnew BigInteger( [4], 1, CONSTRUCT),\n\tnew BigInteger( [5], 1, CONSTRUCT),\n\tnew BigInteger( [6], 1, CONSTRUCT),\n\tnew BigInteger( [7], 1, CONSTRUCT),\n\tnew BigInteger( [8], 1, CONSTRUCT),\n\tnew BigInteger( [9], 1, CONSTRUCT),\n\tnew BigInteger([10], 1, CONSTRUCT),\n\tnew BigInteger([11], 1, CONSTRUCT),\n\tnew BigInteger([12], 1, CONSTRUCT),\n\tnew BigInteger([13], 1, CONSTRUCT),\n\tnew BigInteger([14], 1, CONSTRUCT),\n\tnew BigInteger([15], 1, CONSTRUCT),\n\tnew BigInteger([16], 1, CONSTRUCT),\n\tnew BigInteger([17], 1, CONSTRUCT),\n\tnew BigInteger([18], 1, CONSTRUCT),\n\tnew BigInteger([19], 1, CONSTRUCT),\n\tnew BigInteger([20], 1, CONSTRUCT),\n\tnew BigInteger([21], 1, CONSTRUCT),\n\tnew BigInteger([22], 1, CONSTRUCT),\n\tnew BigInteger([23], 1, CONSTRUCT),\n\tnew BigInteger([24], 1, CONSTRUCT),\n\tnew BigInteger([25], 1, CONSTRUCT),\n\tnew BigInteger([26], 1, CONSTRUCT),\n\tnew BigInteger([27], 1, CONSTRUCT),\n\tnew BigInteger([28], 1, CONSTRUCT),\n\tnew BigInteger([29], 1, CONSTRUCT),\n\tnew BigInteger([30], 1, CONSTRUCT),\n\tnew BigInteger([31], 1, CONSTRUCT),\n\tnew BigInteger([32], 1, CONSTRUCT),\n\tnew BigInteger([33], 1, CONSTRUCT),\n\tnew BigInteger([34], 1, CONSTRUCT),\n\tnew BigInteger([35], 1, CONSTRUCT),\n\tnew BigInteger([36], 1, CONSTRUCT)\n];\n\n// Used for parsing/radix conversion\nBigInteger.digits = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\");\n\n/*\n\tMethod: toString\n\tConvert a to a string.\n\n\tWhen *base* is greater than 10, letters are upper case.\n\n\tParameters:\n\n\t\tbase - Optional base to represent the number in (default is base 10).\n\t\t\t Must be between 2 and 36 inclusive, or an Error will be thrown.\n\n\tReturns:\n\n\t\tThe string representation of the .\n*/\nBigInteger.prototype.toString = function(base) {\n\tbase = +base || 10;\n\tif (base < 2 || base > 36) {\n\t\tthrow new Error(\"illegal radix \" + base + \".\");\n\t}\n\tif (this._s === 0) {\n\t\treturn \"0\";\n\t}\n\tif (base === 10) {\n\t\tvar str = this._s < 0 ? \"-\" : \"\";\n\t\tstr += this._d[this._d.length - 1].toString();\n\t\tfor (var i = this._d.length - 2; i >= 0; i--) {\n\t\t\tvar group = this._d[i].toString();\n\t\t\twhile (group.length < BigInteger_base_log10) group = '0' + group;\n\t\t\tstr += group;\n\t\t}\n\t\treturn str;\n\t}\n\telse {\n\t\tvar numerals = BigInteger.digits;\n\t\tbase = BigInteger.small[base];\n\t\tvar sign = this._s;\n\n\t\tvar n = this.abs();\n\t\tvar digits = [];\n\t\tvar digit;\n\n\t\twhile (n._s !== 0) {\n\t\t\tvar divmod = n.divRem(base);\n\t\t\tn = divmod[0];\n\t\t\tdigit = divmod[1];\n\t\t\t// TODO: This could be changed to unshift instead of reversing at the end.\n\t\t\t// Benchmark both to compare speeds.\n\t\t\tdigits.push(numerals[digit.valueOf()]);\n\t\t}\n\t\treturn (sign < 0 ? \"-\" : \"\") + digits.reverse().join(\"\");\n\t}\n};\n\n// Verify strings for parsing\nBigInteger.radixRegex = [\n\t/^$/,\n\t/^$/,\n\t/^[01]*$/,\n\t/^[012]*$/,\n\t/^[0-3]*$/,\n\t/^[0-4]*$/,\n\t/^[0-5]*$/,\n\t/^[0-6]*$/,\n\t/^[0-7]*$/,\n\t/^[0-8]*$/,\n\t/^[0-9]*$/,\n\t/^[0-9aA]*$/,\n\t/^[0-9abAB]*$/,\n\t/^[0-9abcABC]*$/,\n\t/^[0-9a-dA-D]*$/,\n\t/^[0-9a-eA-E]*$/,\n\t/^[0-9a-fA-F]*$/,\n\t/^[0-9a-gA-G]*$/,\n\t/^[0-9a-hA-H]*$/,\n\t/^[0-9a-iA-I]*$/,\n\t/^[0-9a-jA-J]*$/,\n\t/^[0-9a-kA-K]*$/,\n\t/^[0-9a-lA-L]*$/,\n\t/^[0-9a-mA-M]*$/,\n\t/^[0-9a-nA-N]*$/,\n\t/^[0-9a-oA-O]*$/,\n\t/^[0-9a-pA-P]*$/,\n\t/^[0-9a-qA-Q]*$/,\n\t/^[0-9a-rA-R]*$/,\n\t/^[0-9a-sA-S]*$/,\n\t/^[0-9a-tA-T]*$/,\n\t/^[0-9a-uA-U]*$/,\n\t/^[0-9a-vA-V]*$/,\n\t/^[0-9a-wA-W]*$/,\n\t/^[0-9a-xA-X]*$/,\n\t/^[0-9a-yA-Y]*$/,\n\t/^[0-9a-zA-Z]*$/\n];\n\n/*\n\tFunction: parse\n\tParse a string into a .\n\n\t*base* is optional but, if provided, must be from 2 to 36 inclusive. If\n\t*base* is not provided, it will be guessed based on the leading characters\n\tof *s* as follows:\n\n\t- \"0x\" or \"0X\": *base* = 16\n\t- \"0c\" or \"0C\": *base* = 8\n\t- \"0b\" or \"0B\": *base* = 2\n\t- else: *base* = 10\n\n\tIf no base is provided, or *base* is 10, the number can be in exponential\n\tform. For example, these are all valid:\n\n\t> BigInteger.parse(\"1e9\");\t\t\t // Same as \"1000000000\"\n\t> BigInteger.parse(\"1.234*10^3\");\t // Same as 1234\n\t> BigInteger.parse(\"56789 * 10 ** -2\"); // Same as 567\n\n\tIf any characters fall outside the range defined by the radix, an exception\n\twill be thrown.\n\n\tParameters:\n\n\t\ts - The string to parse.\n\t\tbase - Optional radix (default is to guess based on *s*).\n\n\tReturns:\n\n\t\ta instance.\n*/\nBigInteger.parse = function(s, base) {\n\t// Expands a number in exponential form to decimal form.\n\t// expandExponential(\"-13.441*10^5\") === \"1344100\";\n\t// expandExponential(\"1.12300e-1\") === \"0.112300\";\n\t// expandExponential(1000000000000000000000000000000) === \"1000000000000000000000000000000\";\n\tfunction expandExponential(str) {\n\t\tstr = str.replace(/\\s*[*xX]\\s*10\\s*(\\^|\\*\\*)\\s*/, \"e\");\n\n\t\treturn str.replace(/^([+\\-])?(\\d+)\\.?(\\d*)[eE]([+\\-]?\\d+)$/, function(x, s, n, f, c) {\n\t\t\tc = +c;\n\t\t\tvar l = c < 0;\n\t\t\tvar i = n.length + c;\n\t\t\tx = (l ? n : f).length;\n\t\t\tc = ((c = Math.abs(c)) >= x ? c - x + l : 0);\n\t\t\tvar z = (new Array(c + 1)).join(\"0\");\n\t\t\tvar r = n + f;\n\t\t\treturn (s || \"\") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? \".\" + r.substr(i) : \"\");\n\t\t});\n\t}\n\n\ts = s.toString();\n\tif (typeof base === \"undefined\" || +base === 10) {\n\t\ts = expandExponential(s);\n\t}\n\n\tvar prefixRE;\n\tif (typeof base === \"undefined\") {\n\t\tprefixRE = '0[xcb]';\n\t}\n\telse if (base == 16) {\n\t\tprefixRE = '0x';\n\t}\n\telse if (base == 8) {\n\t\tprefixRE = '0c';\n\t}\n\telse if (base == 2) {\n\t\tprefixRE = '0b';\n\t}\n\telse {\n\t\tprefixRE = '';\n\t}\n\tvar parts = new RegExp('^([+\\\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\\\.\\\\d*)?$', 'i').exec(s);\n\tif (parts) {\n\t\tvar sign = parts[1] || \"+\";\n\t\tvar baseSection = parts[2] || \"\";\n\t\tvar digits = parts[3] || \"\";\n\n\t\tif (typeof base === \"undefined\") {\n\t\t\t// Guess base\n\t\t\tif (baseSection === \"0x\" || baseSection === \"0X\") { // Hex\n\t\t\t\tbase = 16;\n\t\t\t}\n\t\t\telse if (baseSection === \"0c\" || baseSection === \"0C\") { // Octal\n\t\t\t\tbase = 8;\n\t\t\t}\n\t\t\telse if (baseSection === \"0b\" || baseSection === \"0B\") { // Binary\n\t\t\t\tbase = 2;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbase = 10;\n\t\t\t}\n\t\t}\n\t\telse if (base < 2 || base > 36) {\n\t\t\tthrow new Error(\"Illegal radix \" + base + \".\");\n\t\t}\n\n\t\tbase = +base;\n\n\t\t// Check for digits outside the range\n\t\tif (!(BigInteger.radixRegex[base].test(digits))) {\n\t\t\tthrow new Error(\"Bad digit for radix \" + base);\n\t\t}\n\n\t\t// Strip leading zeros, and convert to array\n\t\tdigits = digits.replace(/^0+/, \"\").split(\"\");\n\t\tif (digits.length === 0) {\n\t\t\treturn ZERO;\n\t\t}\n\n\t\t// Get the sign (we know it's not zero)\n\t\tsign = (sign === \"-\") ? -1 : 1;\n\n\t\t// Optimize 10\n\t\tif (base == 10) {\n\t\t\tvar d = [];\n\t\t\twhile (digits.length >= BigInteger_base_log10) {\n\t\t\t\td.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));\n\t\t\t}\n\t\t\td.push(parseInt(digits.join(''), 10));\n\t\t\treturn new BigInteger(d, sign, CONSTRUCT);\n\t\t}\n\n\t\t// Do the conversion\n\t\tvar d = ZERO;\n\t\tbase = BigInteger.small[base];\n\t\tvar small = BigInteger.small;\n\t\tfor (var i = 0; i < digits.length; i++) {\n\t\t\td = d.multiply(base).add(small[parseInt(digits[i], 36)]);\n\t\t}\n\t\treturn new BigInteger(d._d, sign, CONSTRUCT);\n\t}\n\telse {\n\t\tthrow new Error(\"Invalid BigInteger format: \" + s);\n\t}\n};\n\n/*\n\tFunction: add\n\tAdd two .\n\n\tParameters:\n\n\t\tn - The number to add to *this*. Will be converted to a .\n\n\tReturns:\n\n\t\tThe numbers added together.\n\n\tSee Also:\n\n\t\t, , , \n*/\nBigInteger.prototype.add = function(n) {\n\tif (this._s === 0) {\n\t\treturn BigInteger(n);\n\t}\n\n\tn = BigInteger(n);\n\tif (n._s === 0) {\n\t\treturn this;\n\t}\n\tif (this._s !== n._s) {\n\t\tn = n.negate();\n\t\treturn this.subtract(n);\n\t}\n\n\tvar a = this._d;\n\tvar b = n._d;\n\tvar al = a.length;\n\tvar bl = b.length;\n\tvar sum = new Array(Math.max(al, bl) + 1);\n\tvar size = Math.min(al, bl);\n\tvar carry = 0;\n\tvar digit;\n\n\tfor (var i = 0; i < size; i++) {\n\t\tdigit = a[i] + b[i] + carry;\n\t\tsum[i] = digit % BigInteger_base;\n\t\tcarry = (digit / BigInteger_base) | 0;\n\t}\n\tif (bl > al) {\n\t\ta = b;\n\t\tal = bl;\n\t}\n\tfor (i = size; carry && i < al; i++) {\n\t\tdigit = a[i] + carry;\n\t\tsum[i] = digit % BigInteger_base;\n\t\tcarry = (digit / BigInteger_base) | 0;\n\t}\n\tif (carry) {\n\t\tsum[i] = carry;\n\t}\n\n\tfor ( ; i < al; i++) {\n\t\tsum[i] = a[i];\n\t}\n\n\treturn new BigInteger(sum, this._s, CONSTRUCT);\n};\n\n/*\n\tFunction: negate\n\tGet the additive inverse of a .\n\n\tReturns:\n\n\t\tA with the same magnatude, but with the opposite sign.\n\n\tSee Also:\n\n\t\t\n*/\nBigInteger.prototype.negate = function() {\n\treturn new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);\n};\n\n/*\n\tFunction: abs\n\tGet the absolute value of a .\n\n\tReturns:\n\n\t\tA with the same magnatude, but always positive (or zero).\n\n\tSee Also:\n\n\t\t\n*/\nBigInteger.prototype.abs = function() {\n\treturn (this._s < 0) ? this.negate() : this;\n};\n\n/*\n\tFunction: subtract\n\tSubtract two .\n\n\tParameters:\n\n\t\tn - The number to subtract from *this*. Will be converted to a .\n\n\tReturns:\n\n\t\tThe *n* subtracted from *this*.\n\n\tSee Also:\n\n\t\t, , , \n*/\nBigInteger.prototype.subtract = function(n) {\n\tif (this._s === 0) {\n\t\treturn BigInteger(n).negate();\n\t}\n\n\tn = BigInteger(n);\n\tif (n._s === 0) {\n\t\treturn this;\n\t}\n\tif (this._s !== n._s) {\n\t\tn = n.negate();\n\t\treturn this.add(n);\n\t}\n\n\tvar m = this;\n\t// negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|\n\tif (this._s < 0) {\n\t\tm = new BigInteger(n._d, 1, CONSTRUCT);\n\t\tn = new BigInteger(this._d, 1, CONSTRUCT);\n\t}\n\n\t// Both are positive => a - b\n\tvar sign = m.compareAbs(n);\n\tif (sign === 0) {\n\t\treturn ZERO;\n\t}\n\telse if (sign < 0) {\n\t\t// swap m and n\n\t\tvar t = n;\n\t\tn = m;\n\t\tm = t;\n\t}\n\n\t// a > b\n\tvar a = m._d;\n\tvar b = n._d;\n\tvar al = a.length;\n\tvar bl = b.length;\n\tvar diff = new Array(al); // al >= bl since a > b\n\tvar borrow = 0;\n\tvar i;\n\tvar digit;\n\n\tfor (i = 0; i < bl; i++) {\n\t\tdigit = a[i] - borrow - b[i];\n\t\tif (digit < 0) {\n\t\t\tdigit += BigInteger_base;\n\t\t\tborrow = 1;\n\t\t}\n\t\telse {\n\t\t\tborrow = 0;\n\t\t}\n\t\tdiff[i] = digit;\n\t}\n\tfor (i = bl; i < al; i++) {\n\t\tdigit = a[i] - borrow;\n\t\tif (digit < 0) {\n\t\t\tdigit += BigInteger_base;\n\t\t}\n\t\telse {\n\t\t\tdiff[i++] = digit;\n\t\t\tbreak;\n\t\t}\n\t\tdiff[i] = digit;\n\t}\n\tfor ( ; i < al; i++) {\n\t\tdiff[i] = a[i];\n\t}\n\n\treturn new BigInteger(diff, sign, CONSTRUCT);\n};\n\n(function() {\n\tfunction addOne(n, sign) {\n\t\tvar a = n._d;\n\t\tvar sum = a.slice();\n\t\tvar carry = true;\n\t\tvar i = 0;\n\n\t\twhile (true) {\n\t\t\tvar digit = (a[i] || 0) + 1;\n\t\t\tsum[i] = digit % BigInteger_base;\n\t\t\tif (digit <= BigInteger_base - 1) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t++i;\n\t\t}\n\n\t\treturn new BigInteger(sum, sign, CONSTRUCT);\n\t}\n\n\tfunction subtractOne(n, sign) {\n\t\tvar a = n._d;\n\t\tvar sum = a.slice();\n\t\tvar borrow = true;\n\t\tvar i = 0;\n\n\t\twhile (true) {\n\t\t\tvar digit = (a[i] || 0) - 1;\n\t\t\tif (digit < 0) {\n\t\t\t\tsum[i] = digit + BigInteger_base;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsum[i] = digit;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t++i;\n\t\t}\n\n\t\treturn new BigInteger(sum, sign, CONSTRUCT);\n\t}\n\n\t/*\n\t\tFunction: next\n\t\tGet the next (add one).\n\n\t\tReturns:\n\n\t\t\t*this* + 1.\n\n\t\tSee Also:\n\n\t\t\t, \n\t*/\n\tBigInteger.prototype.next = function() {\n\t\tswitch (this._s) {\n\t\tcase 0:\n\t\t\treturn ONE;\n\t\tcase -1:\n\t\t\treturn subtractOne(this, -1);\n\t\t// case 1:\n\t\tdefault:\n\t\t\treturn addOne(this, 1);\n\t\t}\n\t};\n\n\t/*\n\t\tFunction: prev\n\t\tGet the previous (subtract one).\n\n\t\tReturns:\n\n\t\t\t*this* - 1.\n\n\t\tSee Also:\n\n\t\t\t, \n\t*/\n\tBigInteger.prototype.prev = function() {\n\t\tswitch (this._s) {\n\t\tcase 0:\n\t\t\treturn M_ONE;\n\t\tcase -1:\n\t\t\treturn addOne(this, -1);\n\t\t// case 1:\n\t\tdefault:\n\t\t\treturn subtractOne(this, 1);\n\t\t}\n\t};\n})();\n\n/*\n\tFunction: compareAbs\n\tCompare the absolute value of two .\n\n\tCalling is faster than calling twice, then .\n\n\tParameters:\n\n\t\tn - The number to compare to *this*. Will be converted to a .\n\n\tReturns:\n\n\t\t-1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.\n\n\tSee Also:\n\n\t\t, \n*/\nBigInteger.prototype.compareAbs = function(n) {\n\tif (this === n) {\n\t\treturn 0;\n\t}\n\n\tif (!(n instanceof BigInteger)) {\n\t\tif (!isFinite(n)) {\n\t\t\treturn(isNaN(n) ? n : -1);\n\t\t}\n\t\tn = BigInteger(n);\n\t}\n\n\tif (this._s === 0) {\n\t\treturn (n._s !== 0) ? -1 : 0;\n\t}\n\tif (n._s === 0) {\n\t\treturn 1;\n\t}\n\n\tvar l = this._d.length;\n\tvar nl = n._d.length;\n\tif (l < nl) {\n\t\treturn -1;\n\t}\n\telse if (l > nl) {\n\t\treturn 1;\n\t}\n\n\tvar a = this._d;\n\tvar b = n._d;\n\tfor (var i = l-1; i >= 0; i--) {\n\t\tif (a[i] !== b[i]) {\n\t\t\treturn a[i] < b[i] ? -1 : 1;\n\t\t}\n\t}\n\n\treturn 0;\n};\n\n/*\n\tFunction: compare\n\tCompare two .\n\n\tParameters:\n\n\t\tn - The number to compare to *this*. Will be converted to a .\n\n\tReturns:\n\n\t\t-1, 0, or +1 if *this* is less than, equal to, or greater than *n*.\n\n\tSee Also:\n\n\t\t, , , \n*/\nBigInteger.prototype.compare = function(n) {\n\tif (this === n) {\n\t\treturn 0;\n\t}\n\n\tn = BigInteger(n);\n\n\tif (this._s === 0) {\n\t\treturn -n._s;\n\t}\n\n\tif (this._s === n._s) { // both positive or both negative\n\t\tvar cmp = this.compareAbs(n);\n\t\treturn cmp * this._s;\n\t}\n\telse {\n\t\treturn this._s;\n\t}\n};\n\n/*\n\tFunction: isUnit\n\tReturn true iff *this* is either 1 or -1.\n\n\tReturns:\n\n\t\ttrue if *this* compares equal to or .\n\n\tSee Also:\n\n\t\t, , , , ,\n\t\t, \n*/\nBigInteger.prototype.isUnit = function() {\n\treturn this === ONE ||\n\t\tthis === M_ONE ||\n\t\t(this._d.length === 1 && this._d[0] === 1);\n};\n\n/*\n\tFunction: multiply\n\tMultiply two .\n\n\tParameters:\n\n\t\tn - The number to multiply *this* by. Will be converted to a\n\t\t.\n\n\tReturns:\n\n\t\tThe numbers multiplied together.\n\n\tSee Also:\n\n\t\t, , , \n*/\nBigInteger.prototype.multiply = function(n) {\n\t// TODO: Consider adding Karatsuba multiplication for large numbers\n\tif (this._s === 0) {\n\t\treturn ZERO;\n\t}\n\n\tn = BigInteger(n);\n\tif (n._s === 0) {\n\t\treturn ZERO;\n\t}\n\tif (this.isUnit()) {\n\t\tif (this._s < 0) {\n\t\t\treturn n.negate();\n\t\t}\n\t\treturn n;\n\t}\n\tif (n.isUnit()) {\n\t\tif (n._s < 0) {\n\t\t\treturn this.negate();\n\t\t}\n\t\treturn this;\n\t}\n\tif (this === n) {\n\t\treturn this.square();\n\t}\n\n\tvar r = (this._d.length >= n._d.length);\n\tvar a = (r ? this : n)._d; // a will be longer than b\n\tvar b = (r ? n : this)._d;\n\tvar al = a.length;\n\tvar bl = b.length;\n\n\tvar pl = al + bl;\n\tvar partial = new Array(pl);\n\tvar i;\n\tfor (i = 0; i < pl; i++) {\n\t\tpartial[i] = 0;\n\t}\n\n\tfor (i = 0; i < bl; i++) {\n\t\tvar carry = 0;\n\t\tvar bi = b[i];\n\t\tvar jlimit = al + i;\n\t\tvar digit;\n\t\tfor (var j = i; j < jlimit; j++) {\n\t\t\tdigit = partial[j] + bi * a[j - i] + carry;\n\t\t\tcarry = (digit / BigInteger_base) | 0;\n\t\t\tpartial[j] = (digit % BigInteger_base) | 0;\n\t\t}\n\t\tif (carry) {\n\t\t\tdigit = partial[j] + carry;\n\t\t\tcarry = (digit / BigInteger_base) | 0;\n\t\t\tpartial[j] = digit % BigInteger_base;\n\t\t}\n\t}\n\treturn new BigInteger(partial, this._s * n._s, CONSTRUCT);\n};\n\n// Multiply a BigInteger by a single-digit native number\n// Assumes that this and n are >= 0\n// This is not really intended to be used outside the library itself\nBigInteger.prototype.multiplySingleDigit = function(n) {\n\tif (n === 0 || this._s === 0) {\n\t\treturn ZERO;\n\t}\n\tif (n === 1) {\n\t\treturn this;\n\t}\n\n\tvar digit;\n\tif (this._d.length === 1) {\n\t\tdigit = this._d[0] * n;\n\t\tif (digit >= BigInteger_base) {\n\t\t\treturn new BigInteger([(digit % BigInteger_base)|0,\n\t\t\t\t\t(digit / BigInteger_base)|0], 1, CONSTRUCT);\n\t\t}\n\t\treturn new BigInteger([digit], 1, CONSTRUCT);\n\t}\n\n\tif (n === 2) {\n\t\treturn this.add(this);\n\t}\n\tif (this.isUnit()) {\n\t\treturn new BigInteger([n], 1, CONSTRUCT);\n\t}\n\n\tvar a = this._d;\n\tvar al = a.length;\n\n\tvar pl = al + 1;\n\tvar partial = new Array(pl);\n\tfor (var i = 0; i < pl; i++) {\n\t\tpartial[i] = 0;\n\t}\n\n\tvar carry = 0;\n\tfor (var j = 0; j < al; j++) {\n\t\tdigit = n * a[j] + carry;\n\t\tcarry = (digit / BigInteger_base) | 0;\n\t\tpartial[j] = (digit % BigInteger_base) | 0;\n\t}\n\tif (carry) {\n\t\tpartial[j] = carry;\n\t}\n\n\treturn new BigInteger(partial, 1, CONSTRUCT);\n};\n\n/*\n\tFunction: square\n\tMultiply a by itself.\n\n\tThis is slightly faster than regular multiplication, since it removes the\n\tduplicated multiplcations.\n\n\tReturns:\n\n\t\t> this.multiply(this)\n\n\tSee Also:\n\t\t\n*/\nBigInteger.prototype.square = function() {\n\t// Normally, squaring a 10-digit number would take 100 multiplications.\n\t// Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.\n\t// This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).\n\t// Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org\n\n\tif (this._s === 0) {\n\t\treturn ZERO;\n\t}\n\tif (this.isUnit()) {\n\t\treturn ONE;\n\t}\n\n\tvar digits = this._d;\n\tvar length = digits.length;\n\tvar imult1 = new Array(length + length + 1);\n\tvar product, carry, k;\n\tvar i;\n\n\t// Calculate diagonal\n\tfor (i = 0; i < length; i++) {\n\t\tk = i * 2;\n\t\tproduct = digits[i] * digits[i];\n\t\tcarry = (product / BigInteger_base) | 0;\n\t\timult1[k] = product % BigInteger_base;\n\t\timult1[k + 1] = carry;\n\t}\n\n\t// Calculate repeating part\n\tfor (i = 0; i < length; i++) {\n\t\tcarry = 0;\n\t\tk = i * 2 + 1;\n\t\tfor (var j = i + 1; j < length; j++, k++) {\n\t\t\tproduct = digits[j] * digits[i] * 2 + imult1[k] + carry;\n\t\t\tcarry = (product / BigInteger_base) | 0;\n\t\t\timult1[k] = product % BigInteger_base;\n\t\t}\n\t\tk = length + i;\n\t\tvar digit = carry + imult1[k];\n\t\tcarry = (digit / BigInteger_base) | 0;\n\t\timult1[k] = digit % BigInteger_base;\n\t\timult1[k + 1] += carry;\n\t}\n\n\treturn new BigInteger(imult1, 1, CONSTRUCT);\n};\n\n/*\n\tFunction: quotient\n\tDivide two and truncate towards zero.\n\n\t throws an exception if *n* is zero.\n\n\tParameters:\n\n\t\tn - The number to divide *this* by. Will be converted to a .\n\n\tReturns:\n\n\t\tThe *this* / *n*, truncated to an integer.\n\n\tSee Also:\n\n\t\t, , , , \n*/\nBigInteger.prototype.quotient = function(n) {\n\treturn this.divRem(n)[0];\n};\n\n/*\n\tFunction: divide\n\tDeprecated synonym for .\n*/\nBigInteger.prototype.divide = BigInteger.prototype.quotient;\n\n/*\n\tFunction: remainder\n\tCalculate the remainder of two .\n\n\t throws an exception if *n* is zero.\n\n\tParameters:\n\n\t\tn - The remainder after *this* is divided *this* by *n*. Will be\n\t\t\tconverted to a .\n\n\tReturns:\n\n\t\t*this* % *n*.\n\n\tSee Also:\n\n\t\t, \n*/\nBigInteger.prototype.remainder = function(n) {\n\treturn this.divRem(n)[1];\n};\n\n/*\n\tFunction: divRem\n\tCalculate the integer quotient and remainder of two .\n\n\t throws an exception if *n* is zero.\n\n\tParameters:\n\n\t\tn - The number to divide *this* by. Will be converted to a .\n\n\tReturns:\n\n\t\tA two-element array containing the quotient and the remainder.\n\n\t\t> a.divRem(b)\n\n\t\tis exactly equivalent to\n\n\t\t> [a.quotient(b), a.remainder(b)]\n\n\t\texcept it is faster, because they are calculated at the same time.\n\n\tSee Also:\n\n\t\t, \n*/\nBigInteger.prototype.divRem = function(n) {\n\tn = BigInteger(n);\n\tif (n._s === 0) {\n\t\tthrow new Error(\"Divide by zero\");\n\t}\n\tif (this._s === 0) {\n\t\treturn [ZERO, ZERO];\n\t}\n\tif (n._d.length === 1) {\n\t\treturn this.divRemSmall(n._s * n._d[0]);\n\t}\n\n\t// Test for easy cases -- |n1| <= |n2|\n\tswitch (this.compareAbs(n)) {\n\tcase 0: // n1 == n2\n\t\treturn [this._s === n._s ? ONE : M_ONE, ZERO];\n\tcase -1: // |n1| < |n2|\n\t\treturn [ZERO, this];\n\t}\n\n\tvar sign = this._s * n._s;\n\tvar a = n.abs();\n\tvar b_digits = this._d;\n\tvar b_index = b_digits.length;\n\tvar digits = n._d.length;\n\tvar quot = [];\n\tvar guess;\n\n\tvar part = new BigInteger([], 0, CONSTRUCT);\n\n\twhile (b_index) {\n\t\tpart._d.unshift(b_digits[--b_index]);\n\t\tpart = new BigInteger(part._d, 1, CONSTRUCT);\n\n\t\tif (part.compareAbs(n) < 0) {\n\t\t\tquot.push(0);\n\t\t\tcontinue;\n\t\t}\n\t\tif (part._s === 0) {\n\t\t\tguess = 0;\n\t\t}\n\t\telse {\n\t\t\tvar xlen = part._d.length, ylen = a._d.length;\n\t\t\tvar highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];\n\t\t\tvar highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];\n\t\t\tif (part._d.length > a._d.length) {\n\t\t\t\t// The length of part._d can either match a._d length,\n\t\t\t\t// or exceed it by one.\n\t\t\t\thighx = (highx+1)*BigInteger_base;\n\t\t\t}\n\t\t\tguess = Math.ceil(highx/highy);\n\t\t}\n\t\tdo {\n\t\t\tvar check = a.multiplySingleDigit(guess);\n\t\t\tif (check.compareAbs(part) <= 0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tguess--;\n\t\t} while (guess);\n\n\t\tquot.push(guess);\n\t\tif (!guess) {\n\t\t\tcontinue;\n\t\t}\n\t\tvar diff = part.subtract(check);\n\t\tpart._d = diff._d.slice();\n\t}\n\n\treturn [new BigInteger(quot.reverse(), sign, CONSTRUCT),\n\t\t new BigInteger(part._d, this._s, CONSTRUCT)];\n};\n\n// Throws an exception if n is outside of (-BigInteger.base, -1] or\n// [1, BigInteger.base). It's not necessary to call this, since the\n// other division functions will call it if they are able to.\nBigInteger.prototype.divRemSmall = function(n) {\n\tvar r;\n\tn = +n;\n\tif (n === 0) {\n\t\tthrow new Error(\"Divide by zero\");\n\t}\n\n\tvar n_s = n < 0 ? -1 : 1;\n\tvar sign = this._s * n_s;\n\tn = Math.abs(n);\n\n\tif (n < 1 || n >= BigInteger_base) {\n\t\tthrow new Error(\"Argument out of range\");\n\t}\n\n\tif (this._s === 0) {\n\t\treturn [ZERO, ZERO];\n\t}\n\n\tif (n === 1 || n === -1) {\n\t\treturn [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];\n\t}\n\n\t// 2 <= n < BigInteger_base\n\n\t// divide a single digit by a single digit\n\tif (this._d.length === 1) {\n\t\tvar q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);\n\t\tr = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);\n\t\tif (sign < 0) {\n\t\t\tq = q.negate();\n\t\t}\n\t\tif (this._s < 0) {\n\t\t\tr = r.negate();\n\t\t}\n\t\treturn [q, r];\n\t}\n\n\tvar digits = this._d.slice();\n\tvar quot = new Array(digits.length);\n\tvar part = 0;\n\tvar diff = 0;\n\tvar i = 0;\n\tvar guess;\n\n\twhile (digits.length) {\n\t\tpart = part * BigInteger_base + digits[digits.length - 1];\n\t\tif (part < n) {\n\t\t\tquot[i++] = 0;\n\t\t\tdigits.pop();\n\t\t\tdiff = BigInteger_base * diff + part;\n\t\t\tcontinue;\n\t\t}\n\t\tif (part === 0) {\n\t\t\tguess = 0;\n\t\t}\n\t\telse {\n\t\t\tguess = (part / n) | 0;\n\t\t}\n\n\t\tvar check = n * guess;\n\t\tdiff = part - check;\n\t\tquot[i++] = guess;\n\t\tif (!guess) {\n\t\t\tdigits.pop();\n\t\t\tcontinue;\n\t\t}\n\n\t\tdigits.pop();\n\t\tpart = diff;\n\t}\n\n\tr = new BigInteger([diff], 1, CONSTRUCT);\n\tif (this._s < 0) {\n\t\tr = r.negate();\n\t}\n\treturn [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];\n};\n\n/*\n\tFunction: isEven\n\tReturn true iff *this* is divisible by two.\n\n\tNote that is even.\n\n\tReturns:\n\n\t\ttrue if *this* is even, false otherwise.\n\n\tSee Also:\n\n\t\t\n*/\nBigInteger.prototype.isEven = function() {\n\tvar digits = this._d;\n\treturn this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;\n};\n\n/*\n\tFunction: isOdd\n\tReturn true iff *this* is not divisible by two.\n\n\tReturns:\n\n\t\ttrue if *this* is odd, false otherwise.\n\n\tSee Also:\n\n\t\t\n*/\nBigInteger.prototype.isOdd = function() {\n\treturn !this.isEven();\n};\n\n/*\n\tFunction: sign\n\tGet the sign of a .\n\n\tReturns:\n\n\t\t* -1 if *this* < 0\n\t\t* 0 if *this* == 0\n\t\t* +1 if *this* > 0\n\n\tSee Also:\n\n\t\t, , , , \n*/\nBigInteger.prototype.sign = function() {\n\treturn this._s;\n};\n\n/*\n\tFunction: isPositive\n\tReturn true iff *this* > 0.\n\n\tReturns:\n\n\t\ttrue if *this*.compare() == 1.\n\n\tSee Also:\n\n\t\t, , , , , \n*/\nBigInteger.prototype.isPositive = function() {\n\treturn this._s > 0;\n};\n\n/*\n\tFunction: isNegative\n\tReturn true iff *this* < 0.\n\n\tReturns:\n\n\t\ttrue if *this*.compare() == -1.\n\n\tSee Also:\n\n\t\t, , , , , \n*/\nBigInteger.prototype.isNegative = function() {\n\treturn this._s < 0;\n};\n\n/*\n\tFunction: isZero\n\tReturn true iff *this* == 0.\n\n\tReturns:\n\n\t\ttrue if *this*.compare() == 0.\n\n\tSee Also:\n\n\t\t, , , , \n*/\nBigInteger.prototype.isZero = function() {\n\treturn this._s === 0;\n};\n\n/*\n\tFunction: exp10\n\tMultiply a by a power of 10.\n\n\tThis is equivalent to, but faster than\n\n\t> if (n >= 0) {\n\t>\t return this.multiply(BigInteger(\"1e\" + n));\n\t> }\n\t> else { // n <= 0\n\t>\t return this.quotient(BigInteger(\"1e\" + -n));\n\t> }\n\n\tParameters:\n\n\t\tn - The power of 10 to multiply *this* by. *n* is converted to a\n\t\tjavascipt number and must be no greater than \n\t\t(0x7FFFFFFF), or an exception will be thrown.\n\n\tReturns:\n\n\t\t*this* * (10 ** *n*), truncated to an integer if necessary.\n\n\tSee Also:\n\n\t\t, \n*/\nBigInteger.prototype.exp10 = function(n) {\n\tn = +n;\n\tif (n === 0) {\n\t\treturn this;\n\t}\n\tif (Math.abs(n) > Number(MAX_EXP)) {\n\t\tthrow new Error(\"exponent too large in BigInteger.exp10\");\n\t}\n\t// Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case\n\tif (this._s === 0) {\n\t\treturn ZERO;\n\t}\n\tif (n > 0) {\n\t\tvar k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);\n\n\t\tfor (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {\n\t\t\tk._d.unshift(0);\n\t\t}\n\t\tif (n == 0)\n\t\t\treturn k;\n\t\tk._s = 1;\n\t\tk = k.multiplySingleDigit(Math.pow(10, n));\n\t\treturn (this._s < 0 ? k.negate() : k);\n\t} else if (-n >= this._d.length*BigInteger_base_log10) {\n\t\treturn ZERO;\n\t} else {\n\t\tvar k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);\n\n\t\tfor (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {\n\t\t\tk._d.shift();\n\t\t}\n\t\treturn (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];\n\t}\n};\n\n/*\n\tFunction: pow\n\tRaise a to a power.\n\n\tIn this implementation, 0**0 is 1.\n\n\tParameters:\n\n\t\tn - The exponent to raise *this* by. *n* must be no greater than\n\t\t (0x7FFFFFFF), or an exception will be thrown.\n\n\tReturns:\n\n\t\t*this* raised to the *nth* power.\n\n\tSee Also:\n\n\t\t\n*/\nBigInteger.prototype.pow = function(n) {\n\tif (this.isUnit()) {\n\t\tif (this._s > 0) {\n\t\t\treturn this;\n\t\t}\n\t\telse {\n\t\t\treturn BigInteger(n).isOdd() ? this : this.negate();\n\t\t}\n\t}\n\n\tn = BigInteger(n);\n\tif (n._s === 0) {\n\t\treturn ONE;\n\t}\n\telse if (n._s < 0) {\n\t\tif (this._s === 0) {\n\t\t\tthrow new Error(\"Divide by zero\");\n\t\t}\n\t\telse {\n\t\t\treturn ZERO;\n\t\t}\n\t}\n\tif (this._s === 0) {\n\t\treturn ZERO;\n\t}\n\tif (n.isUnit()) {\n\t\treturn this;\n\t}\n\n\tif (n.compareAbs(MAX_EXP) > 0) {\n\t\tthrow new Error(\"exponent too large in BigInteger.pow\");\n\t}\n\tvar x = this;\n\tvar aux = ONE;\n\tvar two = BigInteger.small[2];\n\n\twhile (n.isPositive()) {\n\t\tif (n.isOdd()) {\n\t\t\taux = aux.multiply(x);\n\t\t\tif (n.isUnit()) {\n\t\t\t\treturn aux;\n\t\t\t}\n\t\t}\n\t\tx = x.square();\n\t\tn = n.quotient(two);\n\t}\n\n\treturn aux;\n};\n\n/*\n\tFunction: modPow\n\tRaise a to a power (mod m).\n\n\tBecause it is reduced by a modulus, is not limited by\n\t like .\n\n\tParameters:\n\n\t\texponent - The exponent to raise *this* by. Must be positive.\n\t\tmodulus - The modulus.\n\n\tReturns:\n\n\t\t*this* ^ *exponent* (mod *modulus*).\n\n\tSee Also:\n\n\t\t, \n*/\nBigInteger.prototype.modPow = function(exponent, modulus) {\n\tvar result = ONE;\n\tvar base = this;\n\n\twhile (exponent.isPositive()) {\n\t\tif (exponent.isOdd()) {\n\t\t\tresult = result.multiply(base).remainder(modulus);\n\t\t}\n\n\t\texponent = exponent.quotient(BigInteger.small[2]);\n\t\tif (exponent.isPositive()) {\n\t\t\tbase = base.square().remainder(modulus);\n\t\t}\n\t}\n\n\treturn result;\n};\n\n/*\n\tFunction: log\n\tGet the natural logarithm of a as a native JavaScript number.\n\n\tThis is equivalent to\n\n\t> Math.log(this.toJSValue())\n\n\tbut handles values outside of the native number range.\n\n\tReturns:\n\n\t\tlog( *this* )\n\n\tSee Also:\n\n\t\t\n*/\nBigInteger.prototype.log = function() {\n\tswitch (this._s) {\n\tcase 0:\t return -Infinity;\n\tcase -1: return NaN;\n\tdefault: // Fall through.\n\t}\n\n\tvar l = this._d.length;\n\n\tif (l*BigInteger_base_log10 < 30) {\n\t\treturn Math.log(this.valueOf());\n\t}\n\n\tvar N = Math.ceil(30/BigInteger_base_log10);\n\tvar firstNdigits = this._d.slice(l - N);\n\treturn Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);\n};\n\n/*\n\tFunction: valueOf\n\tConvert a to a native JavaScript integer.\n\n\tThis is called automatically by JavaScipt to convert a to a\n\tnative value.\n\n\tReturns:\n\n\t\t> parseInt(this.toString(), 10)\n\n\tSee Also:\n\n\t\t, \n*/\nBigInteger.prototype.valueOf = function() {\n\treturn parseInt(this.toString(), 10);\n};\n\n/*\n\tFunction: toJSValue\n\tConvert a to a native JavaScript integer.\n\n\tThis is the same as valueOf, but more explicitly named.\n\n\tReturns:\n\n\t\t> parseInt(this.toString(), 10)\n\n\tSee Also:\n\n\t\t, \n*/\nBigInteger.prototype.toJSValue = function() {\n\treturn parseInt(this.toString(), 10);\n};\n\n/*\n\tFunction: lowVal\n\tAuthor: Lucas Jones\n*/\nBigInteger.prototype.lowVal = function () {\n\treturn this._d[0] || 0;\n};\n\nvar MAX_EXP = BigInteger(0x7FFFFFFF);\n// Constant: MAX_EXP\n// The largest exponent allowed in and (0x7FFFFFFF or 2147483647).\nBigInteger.MAX_EXP = MAX_EXP;\n\n(function() {\n\tfunction makeUnary(fn) {\n\t\treturn function(a) {\n\t\t\treturn fn.call(BigInteger(a));\n\t\t};\n\t}\n\n\tfunction makeBinary(fn) {\n\t\treturn function(a, b) {\n\t\t\treturn fn.call(BigInteger(a), BigInteger(b));\n\t\t};\n\t}\n\n\tfunction makeTrinary(fn) {\n\t\treturn function(a, b, c) {\n\t\t\treturn fn.call(BigInteger(a), BigInteger(b), BigInteger(c));\n\t\t};\n\t}\n\n\t(function() {\n\t\tvar i, fn;\n\t\tvar unary = \"toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log\".split(\",\");\n\t\tvar binary = \"compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs\".split(\",\");\n\t\tvar trinary = [\"modPow\"];\n\n\t\tfor (i = 0; i < unary.length; i++) {\n\t\t\tfn = unary[i];\n\t\t\tBigInteger[fn] = makeUnary(BigInteger.prototype[fn]);\n\t\t}\n\n\t\tfor (i = 0; i < binary.length; i++) {\n\t\t\tfn = binary[i];\n\t\t\tBigInteger[fn] = makeBinary(BigInteger.prototype[fn]);\n\t\t}\n\n\t\tfor (i = 0; i < trinary.length; i++) {\n\t\t\tfn = trinary[i];\n\t\t\tBigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);\n\t\t}\n\n\t\tBigInteger.exp10 = function(x, n) {\n\t\t\treturn BigInteger(x).exp10(n);\n\t\t};\n\t})();\n})();\n\nexports.BigInteger = BigInteger;\n})(typeof exports !== 'undefined' ? exports : this);","const MoneroError = require(\"../common/MoneroError\");\n\n/**\n * Copyright (c) woodser\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/**\n * Monero daemon interface and default implementations.\n * \n * @interface\n */\nclass MoneroDaemon {\n \n /**\n * Register a listener to receive daemon notifications.\n * \n * @param {MoneroDaemonListener} listener - listener to receive daemon notifications\n */\n async addListener(listener) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Unregister a listener to receive daemon notifications.\n * \n * @param {MoneroDaemonListener} listener - listener to unregister\n */\n async removeListener(listener) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get the listeners registered with the daemon.\n * \n * @return {MoneroDaemonListener[]} the registered listeners\n */\n getListeners() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Indicates if the client is connected to the daemon via RPC.\n * \n * @return {boolean} true if the client is connected to the daemon, false otherwise\n */\n async isConnected() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Gets the version of the daemon.\n * \n * @return {MoneroVersion} the version of the daemon\n */\n async getVersion() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Indicates if the daemon is trusted xor untrusted.\n * \n * @return {boolean} true if the daemon is trusted, false otherwise\n */\n async isTrusted() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get the number of blocks in the longest chain known to the node.\n * \n * @return {int} the number of blocks\n */\n async getHeight() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a block's hash by its height.\n * \n * @param {int} height - height of the block hash to get\n * @return {string} the block's hash at the given height\n */\n async getBlockHash(height) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a block template for mining a new block.\n * \n * @param {string} walletAddress - address of the wallet to receive miner transactions if block is successfully mined\n * @param {int} reserveSize - reserve size (optional)\n * @return {MoneroBlockTemplate} is a block template for mining a new block\n */\n async getBlockTemplate(walletAddress, reserveSize) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get the last block's header.\n * \n * @return {MoneroBlockHeader} last block's header\n */\n async getLastBlockHeader() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a block header by its hash.\n * \n * @param {string} blockHash - hash of the block to get the header of\n * @return {MoneroBlockHeader} block's header\n */\n async getBlockHeaderByHash(blockHash) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a block header by its height.\n * \n * @param {int} height - height of the block to get the header of\n * @return {MoneroBlockHeader} block's header\n */\n async getBlockHeaderByHeight(height) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get block headers for the given range.\n * \n * @param {int} startHeight - start height lower bound inclusive (optional)\n * @param {int} endHeight - end height upper bound inclusive (optional)\n * @return {MoneroBlockHeader[]} for the given range\n */\n async getBlockHeadersByRange(startHeight, endHeight) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a block by hash.\n * \n * @param {string} blockHash - hash of the block to get\n * @return {MoneroBlock} with the given hash\n */\n async getBlockByHash(blockHash) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get blocks by hash.\n * \n * @param {string[]} blockHashes - array of hashes; first 10 blocks hashes goes sequential,\n * next goes in pow(2,n) offset, like 2, 4, 8, 16, 32, 64 and so on,\n * and the last one is always genesis block\n * @param {int} startHeight - start height to get blocks by hash\n * @param {boolean} prune - specifies if returned blocks should be pruned (defaults to false) // TODO: test default\n * @return {MoneroBlock[]} retrieved blocks\n */\n async getBlocksByHash(blockHashes, startHeight, prune) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a block by height.\n * \n * @param {int} height - height of the block to get\n * @return {MoneroBlock} with the given height\n */\n async getBlockByHeight(height) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get blocks at the given heights.\n * \n * @param {int[]} heights - heights of the blocks to get\n * @return {MoneroBlock[]} are blocks at the given heights\n */\n async getBlocksByHeight(heights) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get blocks in the given height range.\n * \n * @param {int} startHeight - start height lower bound inclusive (optional)\n * @param {int} endHeight - end height upper bound inclusive (optional)\n * @return {MoneroBlock[]} are blocks in the given height range\n */\n async getBlocksByRange(startHeight, endHeight) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get blocks in the given height range as chunked requests so that each request is\n * not too big.\n * \n * @param {int} startHeight - start height lower bound inclusive (optional)\n * @param {int} endHeight - end height upper bound inclusive (optional)\n * @param {int} maxChunkSize - maximum chunk size in any one request (default 3,000,000 bytes)\n * @return {MoneroBlock[]} blocks in the given height range\n */\n async getBlocksByRangeChunked(startHeight, endHeight, maxChunkSize) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get block hashes as a binary request to the daemon.\n * \n * @param {string[]} blockHashes - specify block hashes to fetch; first 10 blocks hash goes\n * sequential, next goes in pow(2,n) offset, like 2, 4, 8, 16, 32, 64\n * and so on, and the last one is always genesis block\n * @param {int} startHeight - starting height of block hashes to return\n * @return {string[]} requested block hashes \n */\n async getBlockHashes(blockHashes, startHeight) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a transaction by hash.\n * \n * @param {string} txHash - hash of the transaction to get\n * @param {boolean} prune - specifies if the returned tx should be pruned (defaults to false)\n * @return {MoneroTx} transaction with the given hash or undefined if not found\n */\n async getTx(txHash, prune = false) {\n return (await this.getTxs([txHash], prune))[0];\n }\n \n /**\n * Get transactions by hashes.\n * \n * @param {string[]} txHashes - hashes of transactions to get\n * @param {boolean} prune - specifies if the returned txs should be pruned (defaults to false)\n * @return {MoneroTx[]} found transactions with the given hashes\n */\n async getTxs(txHashes, prune = false) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a transaction hex by hash.\n * \n * @param {string} txHash - hash of the transaction to get hex from\n * @param {boolean} prune - specifies if the returned tx hex should be pruned (defaults to false)\n * @return {string} tx hex with the given hash\n */\n async getTxHex(txHash, prune = false) {\n return (await this.getTxHexes([txHash], prune))[0];\n }\n \n /**\n * Get transaction hexes by hashes.\n * \n * @param {string[]} txHashes - hashes of transactions to get hexes from\n * @param {boolean} prune - specifies if the returned tx hexes should be pruned (defaults to false)\n * @return {string[]} tx hexes\n */\n async getTxHexes(txHashes, prune = false) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Gets the total emissions and fees from the genesis block to the current height.\n * \n * @param {int} height - height to start computing the miner sum\n * @param {int} numBlocks - number of blocks to include in the sum\n * @return {MoneroMinerTxSum} encapsulates the total emissions and fees since the genesis block\n */\n async getMinerTxSum(height, numBlocks) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get mining fee estimates per kB.\n * \n * @param {number} graceBlocks TODO\n * @return {MoneroFeeEstimate} mining fee estimates per kB\n */\n async getFeeEstimate(graceBlocks) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Submits a transaction to the daemon's pool.\n * \n * @param {string} txHex - raw transaction hex to submit\n * @param {boolean} doNotRelay specifies if the tx should be relayed (optional)\n * @return {MoneroSubmitTxResult} contains submission results\n */\n async submitTxHex(txHex, doNotRelay) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Relays a transaction by hash.\n * \n * @param {string} txHash - hash of the transaction to relay\n */\n async relayTxByHash(txHash) {\n const assert = require(\"assert\");\n assert.equal(typeof txHash, \"string\", \"Must provide a transaction hash\");\n await this.relayTxsByHash([txHash]);\n }\n \n /**\n * Relays transactions by hash.\n * \n * @param {string[]} txHashes - hashes of the transactinos to relay\n */\n async relayTxsByHash(txHashes) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get valid transactions seen by the node but not yet mined into a block, as well\n * as spent key image information for the tx pool.\n * \n * @return {MoneroTx[]} are transactions in the transaction pool\n */\n async getTxPool() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get hashes of transactions in the transaction pool.\n * \n * @return {string[]} are hashes of transactions in the transaction pool\n */\n async getTxPoolHashes() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get all transaction pool backlog.\n * \n * @return {MoneroTxBacklogEntry[]} backlog entries \n */\n async getTxPoolBacklog() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get transaction pool statistics.\n * \n * @return {MoneroTxPoolStats} contains statistics about the transaction pool\n */\n async getTxPoolStats() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Flush transactions from the tx pool.\n * \n * @param {(string|string[])} hashes - specific transactions to flush (defaults to all)\n */\n async flushTxPool(hashes) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get the spent status of the given key image.\n * \n * @param {string} keyImage - key image hex to get the status of\n * @return {MoneroKeyImageSpentStatus} status of the key image\n */\n async getKeyImageSpentStatus(keyImage) {\n return (await this.getKeyImageSpentStatuses([keyImage]))[0];\n }\n \n /**\n * Get the spent status of each given key image.\n * \n * @param {string[]} keyImages are hex key images to get the statuses of\n * @return {MoneroKeyImageSpentStatus[]} status for each key image\n */\n async getKeyImageSpentStatuses(keyImages) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get outputs identified by a list of output amounts and indices as a binary\n * request.\n * \n * @param {MoneroOutput[]} outputs - identify each output by amount and index\n * @return {MoneroOutput[]} identified outputs\n */\n async getOutputs(outputs) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a histogram of output amounts. For all amounts (possibly filtered by\n * parameters), gives the number of outputs on the chain for that amount.\n * RingCT outputs counts as 0 amount.\n * \n * @param {BigInteger[]} amounts - amounts of outputs to make the histogram with\n * @param {int} minCount - TODO\n * @param {int} maxCount - TODO\n * @param {boolean} isUnlocked - makes a histogram with outputs with the specified lock state\n * @param {int} recentCutoff - TODO\n * @return {MoneroOutputHistogramEntry[]} are entries meeting the parameters\n */\n async getOutputHistogram(amounts, minCount, maxCount, isUnlocked, recentCutoff) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Creates an output distribution.\n * \n * @param {BigInteger[]} amounts - amounts of outputs to make the distribution with\n * @param {boolean} cumulative - specifies if the results should be cumulative (defaults to TODO)\n * @param {int} startHeight - start height lower bound inclusive (optional)\n * @param {int} endHeight - end height upper bound inclusive (optional)\n * @return {MoneroOutputDistributionEntry[]} are entries meeting the parameters\n */\n async getOutputDistribution(amounts, cumulative, startHeight, endHeight) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get general information about the state of the node and the network.\n * \n * @return {MoneroDaemonInfo} is general information about the node and network\n */\n async getInfo() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get synchronization information.\n * \n * @return {MoneroDaemonSyncInfo} contains sync information\n */\n async getSyncInfo() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Look up information regarding hard fork voting and readiness.\n * \n * @return {MoneroHardForkInfo} contains hard fork information\n */\n async getHardForkInfo() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get alternative chains seen by the node.\n * \n * @return {MoneroAltChain[]} alternative chains\n */\n async getAltChains() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get known block hashes which are not on the main chain.\n * \n * @return {string[]} known block hashes which are not on the main chain\n */\n async getAltBlockHashes() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get the download bandwidth limit.\n * \n * @return {int} download bandwidth limit\n */\n async getDownloadLimit() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Set the download bandwidth limit.\n * \n * @param {int} limit - download limit to set (-1 to reset to default)\n * @return {int} new download limit after setting\n */\n async setDownloadLimit(limit) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Reset the download bandwidth limit.\n * \n * @return {int} download bandwidth limit after resetting\n */\n async resetDownloadLimit() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get the upload bandwidth limit.\n * \n * @return {int} upload bandwidth limit\n */\n async getUploadLimit() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Set the upload bandwidth limit.\n * \n * @param limit - upload limit to set (-1 to reset to default)\n * @return {int} new upload limit after setting\n */\n async setUploadLimit(limit) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Reset the upload bandwidth limit.\n * \n * @return {int} upload bandwidth limit after resetting\n */\n async resetUploadLimit() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get peers with active incoming or outgoing connections to the node.\n * \n * @return {MoneroPeer[]} the daemon's peers\n */\n async getPeers() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get known peers including their last known online status.\n * \n * @return {MoneroPeer[]} the daemon's known peers\n */\n async getKnownPeers() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Limit number of outgoing peers.\n * \n * @param {int} limit - maximum number of outgoing peers\n */\n async setOutgoingPeerLimit(limit) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Limit number of incoming peers.\n * \n * @param {int} limit - maximum number of incoming peers\n */\n async setIncomingPeerLimit(limit) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get peer bans.\n * \n * @return {MoneroBan[]} entries about banned peers\n */\n async getPeerBans() {\n throw new MoneroError(\"Subclass must implement\");\n }\n\n /**\n * Ban a peer node.\n * \n * @param {MoneroBan} ban - contains information about a node to ban\n */\n async setPeerBan(ban) {\n return await this.setPeerBans([ban]);\n }\n \n /**\n * Ban peers nodes.\n * \n * @param {MoneroBan[]} bans - specify which peers to ban\n */\n async setPeerBans(bans) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Start mining.\n * \n * @param {string} address - address given miner rewards if the daemon mines a block\n * @param {integer} numThreads - number of mining threads to run\n * @param {boolean} isBackground - specifies if the miner should run in the background or not\n * @param {boolean} ignoreBattery - specifies if the battery state (e.g. on laptop) should be ignored or not\n */\n async startMining(address, numThreads, isBackground, ignoreBattery) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Stop mining.\n */\n async stopMining() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get the daemon's mining status.\n * \n * @return {MoneroMiningStatus} daemon's mining status\n */\n async getMiningStatus() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Submit a mined block to the network.\n * \n * @param {string} blockBlob - mined block to submit\n */\n async submitBlock(blockBlob) {\n await this.submitBlocks([blockBlob]);\n }\n\n /**\n * Prune the blockchain.\n * \n * @param {boolean} check specifies to check the pruning (default false)\n * @return {MoneroPruneResult} the prune result\n */\n async pruneBlockchain(check) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Submit mined blocks to the network.\n * \n * @param {string[]} blockBlobs - mined blocks to submit\n */\n async submitBlocks(blockBlobs) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Check for update.\n * \n * @return {MoneroDaemonUpdateCheckResult} the result\n */\n async checkForUpdate() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Download an update.\n * \n * @param {string} path - path to download the update (optional)\n * @return {MoneroDaemonUpdateDownloadResult} the result\n */\n async downloadUpdate(path) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Safely disconnect and shut down the daemon.\n */\n async stop() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get the header of the next block added to the chain.\n * \n * @return {MoneroBlockHeader} header of the next block added to the chain\n */\n async waitForNextBlockHeader() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n // ----------------------------- STATIC UTILITIES ---------------------------\n \n /**\n * Parses a network string to an enumerated type.\n * \n * @param {string} network - network string to parse\n * @return {MoneroNetworkType} enumerated network type\n */\n static parseNetworkType(network) {\n const MoneroNetworkType = require(\"./model/MoneroNetworkType\");\n if (network === \"mainnet\") return MoneroNetworkType.MAINNET;\n if (network === \"testnet\") return MoneroNetworkType.TESTNET;\n if (network === \"stagenet\") return MoneroNetworkType.STAGENET;\n throw new MoneroError(\"Invalid network type to parse: \" + network);\n }\n}\n\nmodule.exports = MoneroDaemon;","const assert = require(\"assert\");\nconst BigInteger = require(\"../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../common/GenUtils\");\nconst LibraryUtils = require(\"../common/LibraryUtils\");\nconst TaskLooper = require(\"../common/TaskLooper\");\nconst MoneroAltChain = require(\"./model/MoneroAltChain\");\nconst MoneroBan = require(\"./model/MoneroBan\");\nconst MoneroBlock = require(\"./model/MoneroBlock\");\nconst MoneroBlockHeader = require(\"./model/MoneroBlockHeader\");\nconst MoneroBlockTemplate = require(\"./model/MoneroBlockTemplate\");\nconst MoneroDaemon = require(\"./MoneroDaemon\");\nconst MoneroDaemonInfo = require(\"./model/MoneroDaemonInfo\");\nconst MoneroDaemonListener = require(\"./model/MoneroDaemonListener\");\nconst MoneroDaemonSyncInfo = require(\"./model/MoneroDaemonSyncInfo\");\nconst MoneroError = require(\"../common/MoneroError\");\nconst MoneroFeeEstimate = require(\"./model/MoneroFeeEstimate\");\nconst MoneroHardForkInfo = require(\"./model/MoneroHardForkInfo\");\nconst MoneroKeyImage = require(\"./model/MoneroKeyImage\");\nconst MoneroMinerTxSum = require(\"./model/MoneroMinerTxSum\");\nconst MoneroMiningStatus = require(\"./model/MoneroMiningStatus\");\nconst MoneroNetworkType = require(\"./model/MoneroNetworkType\");\nconst MoneroOutput = require(\"./model/MoneroOutput\");\nconst MoneroOutputHistogramEntry = require(\"./model/MoneroOutputHistogramEntry\");\nconst MoneroPeer = require(\"./model/MoneroPeer\");\nconst MoneroPruneResult = require(\"./model/MoneroPruneResult\");\nconst MoneroRpcConnection = require(\"../common/MoneroRpcConnection\");\nconst MoneroSubmitTxResult = require(\"./model/MoneroSubmitTxResult\");\nconst MoneroTx = require(\"./model/MoneroTx\");\nconst MoneroTxPoolStats = require(\"./model/MoneroTxPoolStats\");\nconst MoneroUtils = require(\"../common/MoneroUtils\");\nconst MoneroVersion = require(\"./model/MoneroVersion\");\n\n/**\n * Copyright (c) woodser\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/**\n * Implements a MoneroDaemon as a client of monerod.\n * \n * @implements {MoneroDaemon}\n * @hideconstructor\n */\nclass MoneroDaemonRpc extends MoneroDaemon {\n \n /**\n *

Construct a daemon RPC client (for internal use).

\n * \n * @param {string|object|MoneroRpcConnection} uriOrConfig - uri of monerod or JS config object or MoneroRpcConnection\n * @param {string} uriOrConfig.uri - uri of monerod\n * @param {string} uriOrConfig.username - username to authenticate with monerod (optional)\n * @param {string} uriOrConfig.password - password to authenticate with monerod (optional)\n * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {number} uriOrConfig.pollInterval - poll interval to query for updates in ms (default 5000)\n * @param {string} username - username to authenticate with monerod (optional)\n * @param {string} password - password to authenticate with monerod (optional)\n * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {number} pollInterval - poll interval to query for updates in ms (default 5000)\n * @param {boolean} proxyToWorker - runs the daemon client in a worker if true (default true)\n */\n constructor(uriOrConfig, username, password, rejectUnauthorized, pollInterval, proxyToWorker) {\n super();\n if (GenUtils.isArray(uriOrConfig)) throw new Error(\"Use monerojs.connectToDaemonRpc(...) to use terminal parameters\");\n this.config = MoneroDaemonRpc._normalizeConfig(uriOrConfig, username, password, rejectUnauthorized, pollInterval, proxyToWorker);\n if (this.config.proxyToWorker) throw new Error(\"Use monerojs.connectToDaemonRpc(...) to proxy to worker\");\n let rpcConfig = Object.assign({}, this.config);\n delete rpcConfig.proxyToWorker;\n delete rpcConfig.pollInterval;\n this.rpc = new MoneroRpcConnection(rpcConfig);\n this.listeners = []; // block listeners\n this.cachedHeaders = {}; // cached headers for fetching blocks in bound chunks\n }\n \n /**\n *

Create a client connected to monerod (for internal use).

\n * \n * @param {string|string[]|object|MoneroRpcConnection} uriOrConfig - uri of monerod or terminal parameters or JS config object or MoneroRpcConnection\n * @param {string} uriOrConfig.uri - uri of monerod\n * @param {string} uriOrConfig.username - username to authenticate with monerod (optional)\n * @param {string} uriOrConfig.password - password to authenticate with monerod (optional)\n * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {number} uriOrConfig.pollInterval - poll interval to query for updates in ms (default 5000)\n * @param {boolean} uriOrConfig.proxyToWorker - run the daemon client in a worker if true (default true)\n * @param {string} username - username to authenticate with monerod (optional)\n * @param {string} password - password to authenticate with monerod (optional)\n * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {number} pollInterval - poll interval to query for updates in ms (default 5000)\n * @param {boolean} proxyToWorker - runs the daemon client in a worker if true (default true)\n * @return {MoneroDaemonRpc} the daemon RPC client\n */\n static async _connectToDaemonRpc(uriOrConfig, username, password, rejectUnauthorized, pollInterval, proxyToWorker) {\n if (GenUtils.isArray(uriOrConfig)) return MoneroDaemonRpc._startMonerodProcess(uriOrConfig, rejectUnauthorized, pollInterval, proxyToWorker); // handle array as terminal command\n let config = MoneroDaemonRpc._normalizeConfig(uriOrConfig, username, password, rejectUnauthorized, pollInterval, proxyToWorker);\n if (config.proxyToWorker) return MoneroDaemonRpcProxy.connect(config);\n else return new MoneroDaemonRpc(config);\n }\n \n static async _startMonerodProcess(cmd, rejectUnauthorized, pollInterval, proxyToWorker) {\n assert(GenUtils.isArray(cmd), \"Must provide string array with command line parameters\");\n \n // start process\n this.process = require('child_process').spawn(cmd[0], cmd.slice(1), {});\n this.process.stdout.setEncoding('utf8');\n this.process.stderr.setEncoding('utf8');\n \n // return promise which resolves after starting monerod\n let uri;\n let that = this;\n let output = \"\";\n return new Promise(function(resolve, reject) {\n \n // handle stdout\n that.process.stdout.on('data', async function(data) {\n let line = data.toString();\n LibraryUtils.log(2, line);\n output += line + '\\n'; // capture output in case of error\n \n // extract uri from e.g. \"I Binding on 127.0.0.1 (IPv4):38085\"\n let uriLineContains = \"Binding on \";\n let uriLineContainsIdx = line.indexOf(uriLineContains);\n if (uriLineContainsIdx >= 0) {\n let host = line.substring(uriLineContainsIdx + uriLineContains.length, line.lastIndexOf(' '));\n let unformattedLine = line.replace(/\\u001b\\[.*?m/g, '').trim(); // remove color formatting\n let port = unformattedLine.substring(unformattedLine.lastIndexOf(':') + 1);\n let sslIdx = cmd.indexOf(\"--rpc-ssl\");\n let sslEnabled = sslIdx >= 0 ? \"enabled\" == cmd[sslIdx + 1].toLowerCase() : false;\n uri = (sslEnabled ? \"https\" : \"http\") + \"://\" + host + \":\" + port;\n }\n \n // read success message\n if (line.indexOf(\"core RPC server started ok\") >= 0) {\n \n // get username and password from params\n let userPassIdx = cmd.indexOf(\"--rpc-login\");\n let userPass = userPassIdx >= 0 ? cmd[userPassIdx + 1] : undefined;\n let username = userPass === undefined ? undefined : userPass.substring(0, userPass.indexOf(':'));\n let password = userPass === undefined ? undefined : userPass.substring(userPass.indexOf(':') + 1);\n \n // create client connected to internal process\n let daemon = await that._connectToDaemonRpc(uri, username, password, rejectUnauthorized, pollInterval, proxyToWorker);\n daemon.process = that.process;\n \n // resolve promise with client connected to internal process \n this.isResolved = true;\n resolve(daemon);\n }\n });\n \n // handle stderr\n that.process.stderr.on('data', function(data) {\n if (LibraryUtils.getLogLevel() >= 2) console.error(data);\n });\n \n // handle exit\n that.process.on(\"exit\", function(code) {\n if (!this.isResolved) reject(new Error(\"monerod process terminated with exit code \" + code + (output ? \":\\n\\n\" + output : \"\")));\n });\n \n // handle error\n that.process.on(\"error\", function(err) {\n if (err.message.indexOf(\"ENOENT\") >= 0) reject(new Error(\"monerod does not exist at path '\" + cmd[0] + \"'\"));\n if (!this.isResolved) reject(err);\n });\n \n // handle uncaught exception\n that.process.on(\"uncaughtException\", function(err, origin) {\n console.error(\"Uncaught exception in monerod process: \" + err.message);\n console.error(origin);\n reject(err);\n });\n });\n }\n \n /**\n * Get the internal process running monerod.\n * \n * @return the process running monerod, undefined if not created from new process\n */\n getProcess() {\n return this.process;\n }\n \n /**\n * Stop the internal process running monerod, if applicable.\n * \n * @param {boolean} force specifies if the process should be destroyed forcibly\n * @return {Promise} the exit code from stopping the process\n */\n async stopProcess(force) {\n if (this.process === undefined) throw new MoneroError(\"MoneroDaemonRpc instance not created from new process\");\n let listenersCopy = GenUtils.copyArray(this.getListeners());\n for (let listener of listenersCopy) await this.removeListener(listener);\n return GenUtils.killProcess(this.process, force ? \"sigkill\" : undefined);\n }\n \n async addListener(listener) {\n assert(listener instanceof MoneroDaemonListener, \"Listener must be instance of MoneroDaemonListener\");\n this.listeners.push(listener);\n this._refreshListening();\n }\n \n async removeListener(listener) {\n assert(listener instanceof MoneroDaemonListener, \"Listener must be instance of MoneroDaemonListener\");\n let idx = this.listeners.indexOf(listener);\n if (idx > -1) this.listeners.splice(idx, 1);\n else throw new MoneroError(\"Listener is not registered with daemon\");\n this._refreshListening();\n }\n \n getListeners() {\n return this.listeners;\n }\n \n /**\n * Get the daemon's RPC connection.\n * \n * @return {MoneroRpcConnection} the daemon's rpc connection\n */\n async getRpcConnection() {\n return this.rpc;\n }\n \n async isConnected() {\n try {\n await this.getVersion();\n return true;\n } catch (e) {\n return false;\n }\n }\n \n async getVersion() {\n let resp = await this.rpc.sendJsonRequest(\"get_version\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return new MoneroVersion(resp.result.version, resp.result.release);\n }\n \n async isTrusted() {\n let resp = await this.rpc.sendPathRequest(\"get_height\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n return !resp.untrusted;\n }\n \n async getHeight() {\n let resp = await this.rpc.sendJsonRequest(\"get_block_count\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return resp.result.count;\n }\n \n async getBlockHash(height) {\n return (await this.rpc.sendJsonRequest(\"on_get_block_hash\", [height])).result; // TODO monero-wallet-rpc: no status returned\n }\n \n async getBlockTemplate(walletAddress, reserveSize) {\n assert(walletAddress && typeof walletAddress === \"string\", \"Must specify wallet address to be mined to\");\n let resp = await this.rpc.sendJsonRequest(\"get_block_template\", {wallet_address: walletAddress, reserve_size: reserveSize});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcBlockTemplate(resp.result);\n }\n \n async getLastBlockHeader() {\n let resp = await this.rpc.sendJsonRequest(\"get_last_block_header\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcBlockHeader(resp.result.block_header);\n }\n \n async getBlockHeaderByHash(blockHash) {\n let resp = await this.rpc.sendJsonRequest(\"get_block_header_by_hash\", {hash: blockHash});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcBlockHeader(resp.result.block_header);\n }\n \n async getBlockHeaderByHeight(height) {\n let resp = await this.rpc.sendJsonRequest(\"get_block_header_by_height\", {height: height});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcBlockHeader(resp.result.block_header);\n }\n \n async getBlockHeadersByRange(startHeight, endHeight) {\n \n // fetch block headers\n let resp = await this.rpc.sendJsonRequest(\"get_block_headers_range\", {\n start_height: startHeight,\n end_height: endHeight\n });\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n \n // build headers\n let headers = [];\n for (let rpcHeader of resp.result.headers) {\n headers.push(MoneroDaemonRpc._convertRpcBlockHeader(rpcHeader));\n }\n return headers;\n }\n \n async getBlockByHash(blockHash) {\n let resp = await this.rpc.sendJsonRequest(\"get_block\", {hash: blockHash});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcBlock(resp.result);\n }\n \n async getBlockByHeight(height) {\n let resp = await this.rpc.sendJsonRequest(\"get_block\", {height: height});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcBlock(resp.result);\n }\n \n async getBlocksByHeight(heights) {\n \n // fetch blocks in binary\n let respBin = await this.rpc.sendBinaryRequest(\"get_blocks_by_height.bin\", {heights: heights});\n \n // convert binary blocks to json\n let rpcBlocks = await MoneroUtils.binaryBlocksToJson(respBin);\n MoneroDaemonRpc._checkResponseStatus(rpcBlocks);\n \n // build blocks with transactions\n assert.equal(rpcBlocks.txs.length, rpcBlocks.blocks.length); \n let blocks = [];\n for (let blockIdx = 0; blockIdx < rpcBlocks.blocks.length; blockIdx++) {\n \n // build block\n let block = MoneroDaemonRpc._convertRpcBlock(rpcBlocks.blocks[blockIdx]);\n block.setHeight(heights[blockIdx]);\n blocks.push(block);\n \n // build transactions\n let txs = [];\n for (let txIdx = 0; txIdx < rpcBlocks.txs[blockIdx].length; txIdx++) {\n let tx = new MoneroTx();\n txs.push(tx);\n tx.setHash(rpcBlocks.blocks[blockIdx].tx_hashes[txIdx]);\n tx.setIsConfirmed(true);\n tx.setInTxPool(false);\n tx.setIsMinerTx(false);\n tx.setRelay(true);\n tx.setIsRelayed(true);\n tx.setIsFailed(false);\n tx.setIsDoubleSpend(false);\n MoneroDaemonRpc._convertRpcTx(rpcBlocks.txs[blockIdx][txIdx], tx);\n }\n \n // merge into one block\n block.setTxs([]);\n for (let tx of txs) {\n if (tx.getBlock()) block.merge(tx.getBlock());\n else block.getTxs().push(tx.setBlock(block));\n }\n }\n \n return blocks;\n }\n \n async getBlocksByRange(startHeight, endHeight) {\n if (startHeight === undefined) startHeight = 0;\n if (endHeight === undefined) endHeight = await this.getHeight() - 1;\n let heights = [];\n for (let height = startHeight; height <= endHeight; height++) heights.push(height);\n return await this.getBlocksByHeight(heights);\n }\n \n async getBlocksByRangeChunked(startHeight, endHeight, maxChunkSize) {\n if (startHeight === undefined) startHeight = 0;\n if (endHeight === undefined) endHeight = await this.getHeight() - 1;\n let lastHeight = startHeight - 1;\n let blocks = [];\n while (lastHeight < endHeight) {\n for (let block of await this._getMaxBlocks(lastHeight + 1, endHeight, maxChunkSize)) {\n blocks.push(block);\n }\n lastHeight = blocks[blocks.length - 1].getHeight();\n }\n return blocks;\n }\n \n async getTxs(txHashes, prune) {\n \n // validate input\n assert(Array.isArray(txHashes) && txHashes.length > 0, \"Must provide an array of transaction hashes\");\n assert(prune === undefined || typeof prune === \"boolean\", \"Prune must be a boolean or undefined\");\n \n // fetch transactions\n let resp = await this.rpc.sendPathRequest(\"get_transactions\", {\n txs_hashes: txHashes,\n decode_as_json: true,\n prune: prune\n });\n try {\n MoneroDaemonRpc._checkResponseStatus(resp);\n } catch (e) {\n if (e.message.indexOf(\"Failed to parse hex representation of transaction hash\") >= 0) throw new MoneroError(\"Invalid transaction hash\");\n throw e;\n }\n \n // build transaction models\n let txs = [];\n if (resp.txs) {\n for (let txIdx = 0; txIdx < resp.txs.length; txIdx++) {\n let tx = new MoneroTx();\n tx.setIsMinerTx(false);\n txs.push(MoneroDaemonRpc._convertRpcTx(resp.txs[txIdx], tx));\n }\n }\n \n return txs;\n }\n \n async getTxHexes(txHashes, prune) {\n let hexes = [];\n for (let tx of await this.getTxs(txHashes, prune)) hexes.push(prune ? tx.getPrunedHex() : tx.getFullHex());\n return hexes;\n }\n \n async getMinerTxSum(height, numBlocks) {\n if (height === undefined) height = 0;\n else assert(height >= 0, \"Height must be an integer >= 0\");\n if (numBlocks === undefined) numBlocks = await this.getHeight();\n else assert(numBlocks >= 0, \"Count must be an integer >= 0\");\n let resp = await this.rpc.sendJsonRequest(\"get_coinbase_tx_sum\", {height: height, count: numBlocks});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n let txSum = new MoneroMinerTxSum();\n txSum.setEmissionSum(new BigInteger(resp.result.emission_amount));\n txSum.setFeeSum(new BigInteger(resp.result.fee_amount));\n return txSum;\n }\n \n async getFeeEstimate(graceBlocks) {\n let resp = await this.rpc.sendJsonRequest(\"get_fee_estimate\", {grace_blocks: graceBlocks});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n let feeEstimate = new MoneroFeeEstimate();\n feeEstimate.setFee(new BigInteger(resp.result.fee));\n let fees = [];\n for (let i = 0; i < resp.result.fees.length; i++) fees.push(new BigInteger(resp.result.fees[i]));\n feeEstimate.setFees(fees);\n feeEstimate.setQuantizationMask(new BigInteger(resp.result.quantization_mask));\n return feeEstimate;\n }\n \n async submitTxHex(txHex, doNotRelay) {\n let resp = await this.rpc.sendPathRequest(\"send_raw_transaction\", {tx_as_hex: txHex, do_not_relay: doNotRelay});\n let result = MoneroDaemonRpc._convertRpcSubmitTxResult(resp);\n \n // set isGood based on status\n try {\n MoneroDaemonRpc._checkResponseStatus(resp); \n result.setIsGood(true);\n } catch(e) {\n result.setIsGood(false);\n }\n return result;\n }\n \n async relayTxsByHash(txHashes) {\n let resp = await this.rpc.sendJsonRequest(\"relay_tx\", {txids: txHashes});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n }\n \n async getTxPool() {\n \n // send rpc request\n let resp = await this.rpc.sendPathRequest(\"get_transaction_pool\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n \n // build txs\n let txs = [];\n if (resp.transactions) {\n for (let rpcTx of resp.transactions) {\n let tx = new MoneroTx();\n txs.push(tx);\n tx.setIsConfirmed(false);\n tx.setIsMinerTx(false);\n tx.setInTxPool(true);\n tx.setNumConfirmations(0);\n MoneroDaemonRpc._convertRpcTx(rpcTx, tx);\n }\n }\n \n return txs;\n }\n \n async getTxPoolHashes() {\n throw new MoneroError(\"Not implemented\");\n }\n \n async getTxPoolBacklog() {\n throw new MoneroError(\"Not implemented\");\n }\n\n async getTxPoolStats() {\n let resp = await this.rpc.sendPathRequest(\"get_transaction_pool_stats\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n return MoneroDaemonRpc._convertRpcTxPoolStats(resp.pool_stats);\n }\n \n async flushTxPool(hashes) {\n if (hashes) hashes = GenUtils.listify(hashes);\n let resp = await this.rpc.sendJsonRequest(\"flush_txpool\", {txids: hashes});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n }\n \n async getKeyImageSpentStatuses(keyImages) {\n if (keyImages === undefined || keyImages.length === 0) throw new MoneroError(\"Must provide key images to check the status of\");\n let resp = await this.rpc.sendPathRequest(\"is_key_image_spent\", {key_images: keyImages});\n MoneroDaemonRpc._checkResponseStatus(resp);\n return resp.spent_status;\n }\n \n async getOutputHistogram(amounts, minCount, maxCount, isUnlocked, recentCutoff) {\n \n // send rpc request\n let resp = await this.rpc.sendJsonRequest(\"get_output_histogram\", {\n amounts: amounts,\n min_count: minCount,\n max_count: maxCount,\n unlocked: isUnlocked,\n recent_cutoff: recentCutoff\n });\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n \n // build histogram entries from response\n let entries = [];\n if (!resp.result.histogram) return entries;\n for (let rpcEntry of resp.result.histogram) {\n entries.push(MoneroDaemonRpc._convertRpcOutputHistogramEntry(rpcEntry));\n }\n return entries;\n }\n \n async getOutputDistribution(amounts, cumulative, startHeight, endHeight) {\n throw new MoneroError(\"Not implemented (response 'distribution' field is binary)\");\n \n// let amountStrs = [];\n// for (let amount of amounts) amountStrs.push(amount.toJSValue());\n// console.log(amountStrs);\n// console.log(cumulative);\n// console.log(startHeight);\n// console.log(endHeight);\n// \n// // send rpc request\n// console.log(\"*********** SENDING REQUEST *************\");\n// if (startHeight === undefined) startHeight = 0;\n// let resp = await this.rpc.sendJsonRequest(\"get_output_distribution\", {\n// amounts: amountStrs,\n// cumulative: cumulative,\n// from_height: startHeight,\n// to_height: endHeight\n// });\n// \n// console.log(\"RESPONSE\");\n// console.log(resp);\n// \n// // build distribution entries from response\n// let entries = [];\n// if (!resp.result.distributions) return entries; \n// for (let rpcEntry of resp.result.distributions) {\n// let entry = MoneroDaemonRpc._convertRpcOutputDistributionEntry(rpcEntry);\n// entries.push(entry);\n// }\n// return entries;\n }\n \n async getInfo() {\n let resp = await this.rpc.sendJsonRequest(\"get_info\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcInfo(resp.result);\n }\n \n async getSyncInfo() {\n let resp = await this.rpc.sendJsonRequest(\"sync_info\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcSyncInfo(resp.result);\n }\n \n async getHardForkInfo() {\n let resp = await this.rpc.sendJsonRequest(\"hard_fork_info\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcHardForkInfo(resp.result);\n }\n \n async getAltChains() {\n \n// // mocked response for test\n// let resp = {\n// status: \"OK\",\n// chains: [\n// {\n// block_hash: \"697cf03c89a9b118f7bdf11b1b3a6a028d7b3617d2d0ed91322c5709acf75625\",\n// difficulty: 14114729638300280,\n// height: 1562062,\n// length: 2\n// }\n// ]\n// }\n \n let resp = await this.rpc.sendJsonRequest(\"get_alternate_chains\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n let chains = [];\n if (!resp.result.chains) return chains;\n for (let rpcChain of resp.result.chains) chains.push(MoneroDaemonRpc._convertRpcAltChain(rpcChain));\n return chains;\n }\n \n async getAltBlockHashes() {\n \n// // mocked response for test\n// let resp = {\n// status: \"OK\",\n// untrusted: false,\n// blks_hashes: [\"9c2277c5470234be8b32382cdf8094a103aba4fcd5e875a6fc159dc2ec00e011\",\"637c0e0f0558e284493f38a5fcca3615db59458d90d3a5eff0a18ff59b83f46f\",\"6f3adc174a2e8082819ebb965c96a095e3e8b63929ad9be2d705ad9c086a6b1c\",\"697cf03c89a9b118f7bdf11b1b3a6a028d7b3617d2d0ed91322c5709acf75625\"]\n// }\n \n let resp = await this.rpc.sendPathRequest(\"get_alt_blocks_hashes\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n if (!resp.blks_hashes) return [];\n return resp.blks_hashes;\n }\n \n async getDownloadLimit() {\n return (await this._getBandwidthLimits())[0];\n }\n \n async setDownloadLimit(limit) {\n if (limit == -1) return await this.resetDownloadLimit();\n if (!(GenUtils.isInt(limit) && limit > 0)) throw new MoneroError(\"Download limit must be an integer greater than 0\");\n return (await this._setBandwidthLimits(limit, 0))[0];\n }\n \n async resetDownloadLimit() {\n return (await this._setBandwidthLimits(-1, 0))[0];\n }\n\n async getUploadLimit() {\n return (await this._getBandwidthLimits())[1];\n }\n \n async setUploadLimit(limit) {\n if (limit == -1) return await this.resetUploadLimit();\n if (!(GenUtils.isInt(limit) && limit > 0)) throw new MoneroError(\"Upload limit must be an integer greater than 0\");\n return (await this._setBandwidthLimits(0, limit))[1];\n }\n \n async resetUploadLimit() {\n return (await this._setBandwidthLimits(0, -1))[1];\n }\n \n async getPeers() {\n let resp = await this.rpc.sendJsonRequest(\"get_connections\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n let peers = [];\n if (!resp.result.connections) return peers;\n for (let rpcConnection of resp.result.connections) {\n peers.push(MoneroDaemonRpc._convertRpcConnection(rpcConnection));\n }\n return peers;\n }\n \n async getKnownPeers() {\n \n // tx config\n let resp = await this.rpc.sendPathRequest(\"get_peer_list\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n \n // build peers\n let peers = [];\n if (resp.gray_list) {\n for (let rpcPeer of resp.gray_list) {\n let peer = MoneroDaemonRpc._convertRpcPeer(rpcPeer);\n peer.setIsOnline(false); // gray list means offline last checked\n peers.push(peer);\n }\n }\n if (resp.white_list) {\n for (let rpcPeer of resp.white_list) {\n let peer = MoneroDaemonRpc._convertRpcPeer(rpcPeer);\n peer.setIsOnline(true); // white list means online last checked\n peers.push(peer);\n }\n }\n return peers;\n }\n \n async setOutgoingPeerLimit(limit) {\n if (!(GenUtils.isInt(limit) && limit >= 0)) throw new MoneroError(\"Outgoing peer limit must be >= 0\");\n let resp = await this.rpc.sendPathRequest(\"out_peers\", {out_peers: limit});\n MoneroDaemonRpc._checkResponseStatus(resp);\n }\n \n async setIncomingPeerLimit(limit) {\n if (!(GenUtils.isInt(limit) && limit >= 0)) throw new MoneroError(\"Incoming peer limit must be >= 0\");\n let resp = await this.rpc.sendPathRequest(\"in_peers\", {in_peers: limit});\n MoneroDaemonRpc._checkResponseStatus(resp);\n }\n \n async getPeerBans() {\n let resp = await this.rpc.sendJsonRequest(\"get_bans\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n let bans = [];\n for (let rpcBan of resp.result.bans) {\n let ban = new MoneroBan();\n ban.setHost(rpcBan.host);\n ban.setIp(rpcBan.ip);\n ban.setSeconds(rpcBan.seconds);\n bans.push(ban);\n }\n return bans;\n }\n \n async setPeerBans(bans) {\n let rpcBans = [];\n for (let ban of bans) rpcBans.push(MoneroDaemonRpc._convertToRpcBan(ban));\n let resp = await this.rpc.sendJsonRequest(\"set_bans\", {bans: rpcBans});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n }\n \n async startMining(address, numThreads, isBackground, ignoreBattery) {\n assert(address, \"Must provide address to mine to\");\n assert(GenUtils.isInt(numThreads) && numThreads > 0, \"Number of threads must be an integer greater than 0\");\n assert(isBackground === undefined || typeof isBackground === \"boolean\");\n assert(ignoreBattery === undefined || typeof ignoreBattery === \"boolean\");\n let resp = await this.rpc.sendPathRequest(\"start_mining\", {\n miner_address: address,\n threads_count: numThreads,\n do_background_mining: isBackground,\n ignore_battery: ignoreBattery,\n });\n MoneroDaemonRpc._checkResponseStatus(resp);\n }\n \n async stopMining() {\n let resp = await this.rpc.sendPathRequest(\"stop_mining\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n }\n \n async getMiningStatus() {\n let resp = await this.rpc.sendPathRequest(\"mining_status\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n return MoneroDaemonRpc._convertRpcMiningStatus(resp);\n }\n \n async submitBlocks(blockBlobs) {\n assert(Array.isArray(blockBlobs) && blockBlobs.length > 0, \"Must provide an array of mined block blobs to submit\");\n let resp = await this.rpc.sendJsonRequest(\"submit_block\", blockBlobs);\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n }\n\n async pruneBlockchain(check) {\n let resp = await this.rpc.sendJsonRequest(\"prune_blockchain\", {check: check}, 0);\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n let result = new MoneroPruneResult();\n result.setIsPruned(resp.result.pruned);\n result.setPruningSeed(resp.result.pruning_seed);\n return result;\n }\n \n async checkForUpdate() {\n let resp = await this.rpc.sendPathRequest(\"update\", {command: \"check\"});\n MoneroDaemonRpc._checkResponseStatus(resp);\n return MoneroDaemonRpc._convertRpcUpdateCheckResult(resp);\n }\n \n async downloadUpdate(path) {\n let resp = await this.rpc.sendPathRequest(\"update\", {command: \"download\", path: path});\n MoneroDaemonRpc._checkResponseStatus(resp);\n return MoneroDaemonRpc._convertRpcUpdateDownloadResult(resp);\n }\n \n async stop() {\n let resp = await this.rpc.sendPathRequest(\"stop_daemon\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n }\n \n async waitForNextBlockHeader() {\n let that = this;\n return new Promise(async function(resolve) {\n await that.addListener(new class extends MoneroDaemonListener {\n async onBlockHeader(header) {\n await that.removeListener(this);\n resolve(header);\n }\n }); \n });\n }\n \n // ----------- ADD JSDOC FOR SUPPORTED DEFAULT IMPLEMENTATIONS --------------\n \n async getTx() { return super.getTx(...arguments); }\n async getTxHex() { return super.getTxHex(...arguments); }\n async getKeyImageSpentStatus() { return super.getKeyImageSpentStatus(...arguments); }\n async setPeerBan() { return super.setPeerBan(...arguments); }\n async submitBlock() { return super.submitBlock(...arguments); }\n \n // ------------------------------- PRIVATE ----------------------------------\n \n _refreshListening() {\n if (this.pollListener == undefined && this.listeners.length) this.pollListener = new DaemonPoller(this);\n if (this.pollListener !== undefined) this.pollListener.setIsPolling(this.listeners.length > 0);\n }\n \n async _getBandwidthLimits() {\n let resp = await this.rpc.sendPathRequest(\"get_limit\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n return [resp.limit_down, resp.limit_up];\n }\n \n async _setBandwidthLimits(downLimit, upLimit) {\n if (downLimit === undefined) downLimit = 0;\n if (upLimit === undefined) upLimit = 0;\n let resp = await this.rpc.sendPathRequest(\"set_limit\", {limit_down: downLimit, limit_up: upLimit});\n MoneroDaemonRpc._checkResponseStatus(resp);\n return [resp.limit_down, resp.limit_up];\n }\n \n /**\n * Get a contiguous chunk of blocks starting from a given height up to a maximum\n * height or amount of block data fetched from the blockchain, whichever comes first.\n * \n * @param {number} startHeight - start height to retrieve blocks (default 0)\n * @param {number} maxHeight - maximum end height to retrieve blocks (default blockchain height)\n * @param {number} maxReqSize - maximum amount of block data to fetch from the blockchain in bytes (default 3,000,000 bytes)\n * @return {MoneroBlock[]} are the resulting chunk of blocks\n */\n async _getMaxBlocks(startHeight, maxHeight, maxReqSize) {\n if (startHeight === undefined) startHeight = 0;\n if (maxHeight === undefined) maxHeight = await this.getHeight() - 1;\n if (maxReqSize === undefined) maxReqSize = MoneroDaemonRpc.MAX_REQ_SIZE;\n \n // determine end height to fetch\n let reqSize = 0;\n let endHeight = startHeight - 1;\n while (reqSize < maxReqSize && endHeight < maxHeight) {\n \n // get header of next block\n let header = await this._getBlockHeaderByHeightCached(endHeight + 1, maxHeight);\n \n // block cannot be bigger than max request size\n assert(header.getSize() <= maxReqSize, \"Block exceeds maximum request size: \" + header.getSize());\n \n // done iterating if fetching block would exceed max request size\n if (reqSize + header.getSize() > maxReqSize) break;\n \n // otherwise block is included\n reqSize += header.getSize();\n endHeight++;\n }\n return endHeight >= startHeight ? await this.getBlocksByRange(startHeight, endHeight) : [];\n }\n \n /**\n * Retrieves a header by height from the cache or fetches and caches a header\n * range if not already in the cache.\n * \n * @param {number} height - height of the header to retrieve from the cache\n * @param {number} maxHeight - maximum height of headers to cache\n */\n async _getBlockHeaderByHeightCached(height, maxHeight) {\n \n // get header from cache\n let cachedHeader = this.cachedHeaders[height];\n if (cachedHeader) return cachedHeader;\n \n // fetch and cache headers if not in cache\n let endHeight = Math.min(maxHeight, height + MoneroDaemonRpc.NUM_HEADERS_PER_REQ - 1); // TODO: could specify end height to cache to optimize small requests (would like to have time profiling in place though)\n let headers = await this.getBlockHeadersByRange(height, endHeight);\n for (let header of headers) {\n this.cachedHeaders[header.getHeight()] = header;\n }\n \n // return the cached header\n return this.cachedHeaders[height];\n }\n \n // --------------------------------- STATIC ---------------------------------\n \n static _normalizeConfig(uriOrConfigOrConnection, username, password, rejectUnauthorized, pollInterval, proxyToWorker) {\n let config;\n if (typeof uriOrConfigOrConnection === \"string\") config = {uri: uriOrConfigOrConnection, username: username, password: password, proxyToWorker: proxyToWorker, rejectUnauthorized: rejectUnauthorized, pollInterval: pollInterval};\n else {\n if (typeof uriOrConfigOrConnection !== \"object\") throw new MoneroError(\"Invalid configuration to create rpc client; must be string, object, or MoneroRpcConnection\");\n if (username || password || rejectUnauthorized || pollInterval || proxyToWorker) throw new MoneroError(\"Can provide config object or params or new MoneroDaemonRpc(...) but not both\");\n if (uriOrConfigOrConnection instanceof MoneroRpcConnection) config = Object.assign({}, uriOrConfigOrConnection.getConfig());\n else config = Object.assign({}, uriOrConfigOrConnection);\n }\n if (config.server) {\n config = Object.assign(config, new MoneroRpcConnection(config.server).getConfig());\n delete config.server;\n }\n if (config.pollInterval === undefined) config.pollInterval = 5000; // TODO: move to config\n if (config.proxyToWorker === undefined) config.proxyToWorker = true;\n return config;\n }\n \n static _checkResponseStatus(resp) {\n if (resp.status !== \"OK\") throw new MoneroError(resp.status);\n }\n \n static _convertRpcBlockHeader(rpcHeader) {\n if (!rpcHeader) return undefined;\n let header = new MoneroBlockHeader();\n for (let key of Object.keys(rpcHeader)) {\n let val = rpcHeader[key];\n if (key === \"block_size\") GenUtils.safeSet(header, header.getSize, header.setSize, val);\n else if (key === \"depth\") GenUtils.safeSet(header, header.getDepth, header.setDepth, val);\n else if (key === \"difficulty\") { } // handled by wide_difficulty\n else if (key === \"cumulative_difficulty\") { } // handled by wide_cumulative_difficulty\n else if (key === \"difficulty_top64\") { } // handled by wide_difficulty\n else if (key === \"cumulative_difficulty_top64\") { } // handled by wide_cumulative_difficulty\n else if (key === \"wide_difficulty\") header.setDifficulty(GenUtils.reconcile(header.getDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));\n else if (key === \"wide_cumulative_difficulty\") header.setCumulativeDifficulty(GenUtils.reconcile(header.getCumulativeDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));\n else if (key === \"hash\") GenUtils.safeSet(header, header.getHash, header.setHash, val);\n else if (key === \"height\") GenUtils.safeSet(header, header.getHeight, header.setHeight, val);\n else if (key === \"major_version\") GenUtils.safeSet(header, header.getMajorVersion, header.setMajorVersion, val);\n else if (key === \"minor_version\") GenUtils.safeSet(header, header.getMinorVersion, header.setMinorVersion, val);\n else if (key === \"nonce\") GenUtils.safeSet(header, header.getNonce, header.setNonce, val);\n else if (key === \"num_txes\") GenUtils.safeSet(header, header.getNumTxs, header.setNumTxs, val);\n else if (key === \"orphan_status\") GenUtils.safeSet(header, header.getOrphanStatus, header.setOrphanStatus, val);\n else if (key === \"prev_hash\" || key === \"prev_id\") GenUtils.safeSet(header, header.getPrevHash, header.setPrevHash, val);\n else if (key === \"reward\") GenUtils.safeSet(header, header.getReward, header.setReward, BigInteger.parse(val));\n else if (key === \"timestamp\") GenUtils.safeSet(header, header.getTimestamp, header.setTimestamp, val);\n else if (key === \"block_weight\") GenUtils.safeSet(header, header.getWeight, header.setWeight, val);\n else if (key === \"long_term_weight\") GenUtils.safeSet(header, header.getLongTermWeight, header.setLongTermWeight, val);\n else if (key === \"pow_hash\") GenUtils.safeSet(header, header.getPowHash, header.setPowHash, val === \"\" ? undefined : val);\n else if (key === \"tx_hashes\") {} // used in block model, not header model\n else if (key === \"miner_tx\") {} // used in block model, not header model\n else if (key === \"miner_tx_hash\") header.setMinerTxHash(val);\n else console.log(\"WARNING: ignoring unexpected block header field: '\" + key + \"': \" + val);\n }\n return header;\n }\n \n static _convertRpcBlock(rpcBlock) {\n \n // build block\n let block = new MoneroBlock(MoneroDaemonRpc._convertRpcBlockHeader(rpcBlock.block_header ? rpcBlock.block_header : rpcBlock));\n block.setHex(rpcBlock.blob);\n block.setTxHashes(rpcBlock.tx_hashes === undefined ? [] : rpcBlock.tx_hashes);\n \n // build miner tx\n let rpcMinerTx = rpcBlock.json ? JSON.parse(rpcBlock.json).miner_tx : rpcBlock.miner_tx; // may need to be parsed from json\n let minerTx = new MoneroTx();\n block.setMinerTx(minerTx);\n minerTx.setIsConfirmed(true);\n minerTx.setIsMinerTx(true);\n MoneroDaemonRpc._convertRpcTx(rpcMinerTx, minerTx);\n \n return block;\n }\n \n /**\n * Transfers RPC tx fields to a given MoneroTx without overwriting previous values.\n * \n * TODO: switch from safe set\n * \n * @param rpcTx - RPC map containing transaction fields\n * @param tx - MoneroTx to populate with values (optional)\n * @returns tx - same tx that was passed in or a new one if none given\n */\n static _convertRpcTx(rpcTx, tx) {\n if (rpcTx === undefined) return undefined;\n if (tx === undefined) tx = new MoneroTx();\n \n// console.log(\"******** BUILDING TX ***********\");\n// console.log(rpcTx);\n// console.log(tx.toString());\n \n // initialize from rpc map\n let header;\n for (let key of Object.keys(rpcTx)) {\n let val = rpcTx[key];\n if (key === \"tx_hash\" || key === \"id_hash\") GenUtils.safeSet(tx, tx.getHash, tx.setHash, val);\n else if (key === \"block_timestamp\") {\n if (!header) header = new MoneroBlockHeader();\n GenUtils.safeSet(header, header.getTimestamp, header.setTimestamp, val);\n }\n else if (key === \"block_height\") {\n if (!header) header = new MoneroBlockHeader();\n GenUtils.safeSet(header, header.getHeight, header.setHeight, val);\n }\n else if (key === \"last_relayed_time\") GenUtils.safeSet(tx, tx.getLastRelayedTimestamp, tx.setLastRelayedTimestamp, val);\n else if (key === \"receive_time\" || key === \"received_timestamp\") GenUtils.safeSet(tx, tx.getReceivedTimestamp, tx.setReceivedTimestamp, val);\n else if (key === \"confirmations\") GenUtils.safeSet(tx, tx.getNumConfirmations, tx.setNumConfirmations, val); \n else if (key === \"in_pool\") {\n GenUtils.safeSet(tx, tx.isConfirmed, tx.setIsConfirmed, !val);\n GenUtils.safeSet(tx, tx.inTxPool, tx.setInTxPool, val);\n }\n else if (key === \"double_spend_seen\") GenUtils.safeSet(tx, tx.isDoubleSpendSeen, tx.setIsDoubleSpend, val);\n else if (key === \"version\") GenUtils.safeSet(tx, tx.getVersion, tx.setVersion, val);\n else if (key === \"extra\") {\n if (typeof val === \"string\") console.log(\"WARNING: extra field as string not being asigned to int[]: \" + key + \": \" + val); // TODO: how to set string to int[]? - or, extra is string which can encode int[]\n else GenUtils.safeSet(tx, tx.getExtra, tx.setExtra, val);\n }\n else if (key === \"vin\") {\n if (val.length !== 1 || !val[0].gen) { // ignore miner input TODO: why?\n tx.setInputs(val.map(rpcVin => MoneroDaemonRpc._convertRpcOutput(rpcVin, tx)));\n }\n }\n else if (key === \"vout\") tx.setOutputs(val.map(rpcOutput => MoneroDaemonRpc._convertRpcOutput(rpcOutput, tx)));\n else if (key === \"rct_signatures\") {\n GenUtils.safeSet(tx, tx.getRctSignatures, tx.setRctSignatures, val);\n if (val.txnFee) GenUtils.safeSet(tx, tx.getFee, tx.setFee, BigInteger.parse(val.txnFee));\n } \n else if (key === \"rctsig_prunable\") GenUtils.safeSet(tx, tx.getRctSigPrunable, tx.setRctSigPrunable, val);\n else if (key === \"unlock_time\") GenUtils.safeSet(tx, tx.getUnlockTime, tx.setUnlockTime, val);\n else if (key === \"as_json\" || key === \"tx_json\") { } // handled last so tx is as initialized as possible\n else if (key === \"as_hex\" || key === \"tx_blob\") GenUtils.safeSet(tx, tx.getFullHex, tx.setFullHex, val ? val : undefined);\n else if (key === \"blob_size\") GenUtils.safeSet(tx, tx.getSize, tx.setSize, val);\n else if (key === \"weight\") GenUtils.safeSet(tx, tx.getWeight, tx.setWeight, val);\n else if (key === \"fee\") GenUtils.safeSet(tx, tx.getFee, tx.setFee, BigInteger.parse(val));\n else if (key === \"relayed\") GenUtils.safeSet(tx, tx.isRelayed, tx.setIsRelayed, val);\n else if (key === \"output_indices\") GenUtils.safeSet(tx, tx.getOutputIndices, tx.setOutputIndices, val);\n else if (key === \"do_not_relay\") GenUtils.safeSet(tx, tx.getRelay, tx.setRelay, !val);\n else if (key === \"kept_by_block\") GenUtils.safeSet(tx, tx.isKeptByBlock, tx.setIsKeptByBlock, val);\n else if (key === \"signatures\") GenUtils.safeSet(tx, tx.getSignatures, tx.setSignatures, val);\n else if (key === \"last_failed_height\") {\n if (val === 0) GenUtils.safeSet(tx, tx.isFailed, tx.setIsFailed, false);\n else {\n GenUtils.safeSet(tx, tx.isFailed, tx.setIsFailed, true);\n GenUtils.safeSet(tx, tx.getLastFailedHeight, tx.setLastFailedHeight, val);\n }\n }\n else if (key === \"last_failed_id_hash\") {\n if (val === MoneroDaemonRpc.DEFAULT_ID) GenUtils.safeSet(tx, tx.isFailed, tx.setIsFailed, false);\n else {\n GenUtils.safeSet(tx, tx.isFailed, tx.setIsFailed, true);\n GenUtils.safeSet(tx, tx.getLastFailedHash, tx.setLastFailedHash, val);\n }\n }\n else if (key === \"max_used_block_height\") GenUtils.safeSet(tx, tx.getMaxUsedBlockHeight, tx.setMaxUsedBlockHeight, val);\n else if (key === \"max_used_block_id_hash\") GenUtils.safeSet(tx, tx.getMaxUsedBlockHash, tx.setMaxUsedBlockHash, val);\n else if (key === \"prunable_hash\") GenUtils.safeSet(tx, tx.getPrunableHash, tx.setPrunableHash, val ? val : undefined);\n else if (key === \"prunable_as_hex\") GenUtils.safeSet(tx, tx.getPrunableHex, tx.setPrunableHex, val ? val : undefined);\n else if (key === \"pruned_as_hex\") GenUtils.safeSet(tx, tx.getPrunedHex, tx.setPrunedHex, val ? val : undefined);\n else console.log(\"WARNING: ignoring unexpected field in rpc tx: \" + key + \": \" + val);\n }\n \n // link block and tx\n if (header) tx.setBlock(new MoneroBlock(header).setTxs([tx]));\n \n // TODO monerod: unconfirmed txs misreport block height and timestamp\n if (tx.getBlock() && tx.getBlock().getHeight() !== undefined && tx.getBlock().getHeight() === tx.getBlock().getTimestamp()) {\n tx.setBlock(undefined);\n tx.setIsConfirmed(false);\n }\n \n // initialize remaining known fields\n if (tx.isConfirmed()) {\n GenUtils.safeSet(tx, tx.isRelayed, tx.setIsRelayed, true);\n GenUtils.safeSet(tx, tx.getRelay, tx.setRelay, true);\n GenUtils.safeSet(tx, tx.isFailed, tx.setIsFailed, false);\n } else {\n tx.setNumConfirmations(0);\n }\n if (tx.isFailed() === undefined) tx.setIsFailed(false);\n if (tx.getOutputIndices() && tx.getOutputs()) {\n assert.equal(tx.getOutputs().length, tx.getOutputIndices().length);\n for (let i = 0; i < tx.getOutputs().length; i++) {\n tx.getOutputs()[i].setIndex(tx.getOutputIndices()[i]); // transfer output indices to outputs\n }\n }\n if (rpcTx.as_json) MoneroDaemonRpc._convertRpcTx(JSON.parse(rpcTx.as_json), tx);\n if (rpcTx.tx_json) MoneroDaemonRpc._convertRpcTx(JSON.parse(rpcTx.tx_json), tx);\n if (!tx.isRelayed()) tx.setLastRelayedTimestamp(undefined); // TODO monerod: returns last_relayed_timestamp despite relayed: false, self inconsistent\n \n // return built transaction\n return tx;\n }\n \n static _convertRpcOutput(rpcOutput, tx) {\n let output = new MoneroOutput();\n output.setTx(tx);\n for (let key of Object.keys(rpcOutput)) {\n let val = rpcOutput[key];\n if (key === \"gen\") throw new MoneroError(\"Output with 'gen' from daemon rpc is miner tx which we ignore (i.e. each miner input is undefined)\");\n else if (key === \"key\") {\n GenUtils.safeSet(output, output.getAmount, output.setAmount, new BigInteger(val.amount));\n GenUtils.safeSet(output, output.getKeyImage, output.setKeyImage, new MoneroKeyImage(val.k_image));\n GenUtils.safeSet(output, output.getRingOutputIndices, output.setRingOutputIndices, val.key_offsets);\n }\n else if (key === \"amount\") GenUtils.safeSet(output, output.getAmount, output.setAmount, BigInteger.parse(val));\n else if (key === \"target\") {\n let pubKey = val.key === undefined ? val.tagged_key.key : val.key; // TODO (monerod): rpc json uses {tagged_key={key=...}}, binary blocks use {key=...}\n GenUtils.safeSet(output, output.getStealthPublicKey, output.setStealthPublicKey, pubKey);\n }\n else console.log(\"WARNING: ignoring unexpected field output: \" + key + \": \" + val);\n }\n return output;\n }\n \n static _convertRpcBlockTemplate(rpcTemplate) {\n let template = new MoneroBlockTemplate();\n for (let key of Object.keys(rpcTemplate)) {\n let val = rpcTemplate[key];\n if (key === \"blockhashing_blob\") template.setBlockTemplateBlob(val);\n else if (key === \"blocktemplate_blob\") template.setBlockHashingBlob(val);\n else if (key === \"difficulty\") template.setDifficulty(BigInteger.parse(val));\n else if (key === \"expected_reward\") template.setExpectedReward(val);\n else if (key === \"difficulty\") { } // handled by wide_difficulty\n else if (key === \"difficulty_top64\") { } // handled by wide_difficulty\n else if (key === \"wide_difficulty\") template.setDifficulty(GenUtils.reconcile(template.getDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));\n else if (key === \"height\") template.setHeight(val);\n else if (key === \"prev_hash\") template.setPrevHash(val);\n else if (key === \"reserved_offset\") template.setReservedOffset(val);\n else if (key === \"status\") {} // handled elsewhere\n else if (key === \"untrusted\") {} // handled elsewhere\n else if (key === \"seed_height\") template.setSeedHeight(val);\n else if (key === \"seed_hash\") template.setSeedHash(val);\n else if (key === \"next_seed_hash\") template.setNextSeedHash(val);\n else console.log(\"WARNING: ignoring unexpected field in block template: \" + key + \": \" + val);\n }\n if (\"\" === template.getNextSeedHash()) template.setNextSeedHash(undefined);\n return template;\n }\n \n static _convertRpcInfo(rpcInfo) {\n if (!rpcInfo) return undefined;\n let info = new MoneroDaemonInfo();\n for (let key of Object.keys(rpcInfo)) {\n let val = rpcInfo[key];\n if (key === \"version\") info.setVersion(val);\n else if (key === \"alt_blocks_count\") info.setNumAltBlocks(val);\n else if (key === \"block_size_limit\") info.setBlockSizeLimit(val);\n else if (key === \"block_size_median\") info.setBlockSizeMedian(val);\n else if (key === \"block_weight_limit\") info.setBlockWeightLimit(val);\n else if (key === \"block_weight_median\") info.setBlockWeightMedian(val);\n else if (key === \"bootstrap_daemon_address\") { if (val) info.setBootstrapDaemonAddress(val); }\n else if (key === \"difficulty\") { } // handled by wide_difficulty\n else if (key === \"cumulative_difficulty\") { } // handled by wide_cumulative_difficulty\n else if (key === \"difficulty_top64\") { } // handled by wide_difficulty\n else if (key === \"cumulative_difficulty_top64\") { } // handled by wide_cumulative_difficulty\n else if (key === \"wide_difficulty\") info.setDifficulty(GenUtils.reconcile(info.getDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));\n else if (key === \"wide_cumulative_difficulty\") info.setCumulativeDifficulty(GenUtils.reconcile(info.getCumulativeDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));\n else if (key === \"free_space\") info.setFreeSpace(BigInteger.parse(val));\n else if (key === \"database_size\") info.setDatabaseSize(val);\n else if (key === \"grey_peerlist_size\") info.setNumOfflinePeers(val);\n else if (key === \"height\") info.setHeight(val);\n else if (key === \"height_without_bootstrap\") info.setHeightWithoutBootstrap(val);\n else if (key === \"incoming_connections_count\") info.setNumIncomingConnections(val);\n else if (key === \"offline\") info.setIsOffline(val);\n else if (key === \"outgoing_connections_count\") info.setNumOutgoingConnections(val);\n else if (key === \"rpc_connections_count\") info.setNumRpcConnections(val);\n else if (key === \"start_time\") info.setStartTimestamp(val);\n else if (key === \"adjusted_time\") info.setAdjustedTimestamp(val);\n else if (key === \"status\") {} // handled elsewhere\n else if (key === \"target\") info.setTarget(val);\n else if (key === \"target_height\") info.setTargetHeight(val);\n else if (key === \"top_block_hash\") info.setTopBlockHash(val);\n else if (key === \"tx_count\") info.setNumTxs(val);\n else if (key === \"tx_pool_size\") info.setNumTxsPool(val);\n else if (key === \"untrusted\") {} // handled elsewhere\n else if (key === \"was_bootstrap_ever_used\") info.setWasBootstrapEverUsed(val);\n else if (key === \"white_peerlist_size\") info.setNumOnlinePeers(val);\n else if (key === \"update_available\") info.setUpdateAvailable(val);\n else if (key === \"nettype\") GenUtils.safeSet(info, info.getNetworkType, info.setNetworkType, MoneroDaemon.parseNetworkType(val));\n else if (key === \"mainnet\") { if (val) GenUtils.safeSet(info, info.getNetworkType, info.setNetworkType, MoneroNetworkType.MAINNET); }\n else if (key === \"testnet\") { if (val) GenUtils.safeSet(info, info.getNetworkType, info.setNetworkType, MoneroNetworkType.TESTNET); }\n else if (key === \"stagenet\") { if (val) GenUtils.safeSet(info, info.getNetworkType, info.setNetworkType, MoneroNetworkType.STAGENET); }\n else if (key === \"credits\") info.setCredits(BigInteger.parse(val));\n else if (key === \"top_block_hash\" || key === \"top_hash\") info.setTopBlockHash(GenUtils.reconcile(info.getTopBlockHash(), \"\" === val ? undefined : val))\n else if (key === \"busy_syncing\") info.setIsBusySyncing(val);\n else if (key === \"synchronized\") info.setIsSynchronized(val);\n else if (key === \"restricted\") info.setIsRestricted(val);\n else console.log(\"WARNING: Ignoring unexpected info field: \" + key + \": \" + val);\n }\n return info;\n }\n \n /**\n * Initializes sync info from RPC sync info.\n * \n * @param rpcSyncInfo - rpc map to initialize the sync info from\n * @return {MoneroDaemonSyncInfo} is sync info initialized from the map\n */\n static _convertRpcSyncInfo(rpcSyncInfo) {\n let syncInfo = new MoneroDaemonSyncInfo();\n for (let key of Object.keys(rpcSyncInfo)) {\n let val = rpcSyncInfo[key];\n if (key === \"height\") syncInfo.setHeight(val);\n else if (key === \"peers\") {\n syncInfo.setPeers([]);\n let rpcConnections = val;\n for (let rpcConnection of rpcConnections) {\n syncInfo.getPeers().push(MoneroDaemonRpc._convertRpcConnection(rpcConnection.info));\n }\n }\n else if (key === \"spans\") {\n syncInfo.setSpans([]);\n let rpcSpans = val;\n for (let rpcSpan of rpcSpans) {\n syncInfo.getSpans().push(MoneroDaemonRpc._convertRpcConnectionSpan(rpcSpan));\n }\n } else if (key === \"status\") {} // handled elsewhere\n else if (key === \"target_height\") syncInfo.setTargetHeight(BigInteger.parse(val));\n else if (key === \"next_needed_pruning_seed\") syncInfo.setNextNeededPruningSeed(val);\n else if (key === \"overview\") { // this returns [] without pruning\n let overview;\n try {\n overview = JSON.parse(val);\n if (overview !== undefined && overview.length > 0) console.error(\"Ignoring non-empty 'overview' field (not implemented): \" + overview); // TODO\n } catch (e) {\n console.error(\"Failed to parse 'overview' field: \" + overview + \": \" + e.message);\n }\n }\n else if (key === \"credits\") syncInfo.setCredits(BigInteger.parse(val));\n else if (key === \"top_hash\") syncInfo.setTopBlockHash(\"\" === val ? undefined : val);\n else if (key === \"untrusted\") {} // handled elsewhere\n else console.log(\"WARNING: ignoring unexpected field in sync info: \" + key + \": \" + val);\n }\n return syncInfo;\n }\n \n static _convertRpcHardForkInfo(rpcHardForkInfo) {\n let info = new MoneroHardForkInfo();\n for (let key of Object.keys(rpcHardForkInfo)) {\n let val = rpcHardForkInfo[key];\n if (key === \"earliest_height\") info.setEarliestHeight(val);\n else if (key === \"enabled\") info.setIsEnabled(val);\n else if (key === \"state\") info.setState(val);\n else if (key === \"status\") {} // handled elsewhere\n else if (key === \"untrusted\") {} // handled elsewhere\n else if (key === \"threshold\") info.setThreshold(val);\n else if (key === \"version\") info.setVersion(val);\n else if (key === \"votes\") info.setNumVotes(val);\n else if (key === \"voting\") info.setVoting(val);\n else if (key === \"window\") info.setWindow(val);\n else if (key === \"credits\") info.setCredits(BigInteger.parse(val));\n else if (key === \"top_hash\") info.setTopBlockHash(\"\" === val ? undefined : val);\n else console.log(\"WARNING: ignoring unexpected field in hard fork info: \" + key + \": \" + val);\n }\n return info;\n }\n \n static _convertRpcConnectionSpan(rpcConnectionSpan) {\n let span = new MoneroConnectionSpan();\n for (let key of Object.keys(rpcConnectionSpan)) {\n let val = rpcConnectionSpan[key];\n if (key === \"connection_id\") span.setConnectionId(val);\n else if (key === \"nblocks\") span.setNumBlocks(val);\n else if (key === \"rate\") span.setRate(val);\n else if (key === \"remote_address\") { if (val !== \"\") span.setRemoteAddress(val); }\n else if (key === \"size\") span.setSize(val);\n else if (key === \"speed\") span.setSpeed(val);\n else if (key === \"start_block_height\") span.setStartHeight(val);\n else console.log(\"WARNING: ignoring unexpected field in daemon connection span: \" + key + \": \" + val);\n }\n return span;\n }\n \n static _convertRpcOutputHistogramEntry(rpcEntry) {\n let entry = new MoneroOutputHistogramEntry();\n for (let key of Object.keys(rpcEntry)) {\n let val = rpcEntry[key];\n if (key === \"amount\") entry.setAmount(BigInteger.parse(val));\n else if (key === \"total_instances\") entry.setNumInstances(val);\n else if (key === \"unlocked_instances\") entry.setNumUnlockedInstances(val);\n else if (key === \"recent_instances\") entry.setNumRecentInstances(val);\n else console.log(\"WARNING: ignoring unexpected field in output histogram: \" + key + \": \" + val);\n }\n return entry;\n }\n \n static _convertRpcSubmitTxResult(rpcResult) {\n assert(rpcResult);\n let result = new MoneroSubmitTxResult();\n for (let key of Object.keys(rpcResult)) {\n let val = rpcResult[key];\n if (key === \"double_spend\") result.setIsDoubleSpend(val);\n else if (key === \"fee_too_low\") result.setIsFeeTooLow(val);\n else if (key === \"invalid_input\") result.setHasInvalidInput(val);\n else if (key === \"invalid_output\") result.setHasInvalidOutput(val);\n else if (key === \"too_few_outputs\") result.setHasTooFewOutputs(val);\n else if (key === \"low_mixin\") result.setIsMixinTooLow(val);\n else if (key === \"not_relayed\") result.setIsRelayed(!val);\n else if (key === \"overspend\") result.setIsOverspend(val);\n else if (key === \"reason\") result.setReason(val === \"\" ? undefined : val);\n else if (key === \"too_big\") result.setIsTooBig(val);\n else if (key === \"sanity_check_failed\") result.setSanityCheckFailed(val);\n else if (key === \"credits\") result.setCredits(BigInteger.parse(val))\n else if (key === \"status\" || key === \"untrusted\") {} // handled elsewhere\n else if (key === \"top_hash\") result.setTopBlockHash(\"\" === val ? undefined : val);\n else if (key === \"tx_extra_too_big\") result.setIsTxExtraTooBig(val);\n else console.log(\"WARNING: ignoring unexpected field in submit tx hex result: \" + key + \": \" + val);\n }\n return result;\n }\n \n static _convertRpcTxPoolStats(rpcStats) {\n assert(rpcStats);\n let stats = new MoneroTxPoolStats();\n for (let key of Object.keys(rpcStats)) {\n let val = rpcStats[key];\n if (key === \"bytes_max\") stats.setBytesMax(val);\n else if (key === \"bytes_med\") stats.setBytesMed(val);\n else if (key === \"bytes_min\") stats.setBytesMin(val);\n else if (key === \"bytes_total\") stats.setBytesTotal(val);\n else if (key === \"histo_98pc\") stats.setHisto98pc(val);\n else if (key === \"num_10m\") stats.setNum10m(val);\n else if (key === \"num_double_spends\") stats.setNumDoubleSpends(val);\n else if (key === \"num_failing\") stats.setNumFailing(val);\n else if (key === \"num_not_relayed\") stats.setNumNotRelayed(val);\n else if (key === \"oldest\") stats.setOldestTimestamp(val);\n else if (key === \"txs_total\") stats.setNumTxs(val);\n else if (key === \"fee_total\") stats.setFeeTotal(BigInteger.parse(val));\n else if (key === \"histo\") {\n stats.setHisto(new Map());\n for (let elem of val) stats.getHisto().set(elem.bytes, elem.txs);\n }\n else console.log(\"WARNING: ignoring unexpected field in tx pool stats: \" + key + \": \" + val);\n }\n\n // uninitialize some stats if not applicable\n if (stats.getHisto98pc() === 0) stats.setHisto98pc(undefined);\n if (stats.getNumTxs() === 0) {\n stats.setBytesMin(undefined);\n stats.setBytesMed(undefined);\n stats.setBytesMax(undefined);\n stats.setHisto98pc(undefined);\n stats.setOldestTimestamp(undefined);\n }\n\n return stats;\n }\n \n static _convertRpcAltChain(rpcChain) {\n assert(rpcChain);\n let chain = new MoneroAltChain();\n for (let key of Object.keys(rpcChain)) {\n let val = rpcChain[key];\n if (key === \"block_hash\") {} // using block_hashes instead\n else if (key === \"difficulty\") { } // handled by wide_difficulty\n else if (key === \"difficulty_top64\") { } // handled by wide_difficulty\n else if (key === \"wide_difficulty\") chain.setDifficulty(GenUtils.reconcile(chain.getDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));\n else if (key === \"height\") chain.setHeight(val);\n else if (key === \"length\") chain.setLength(val);\n else if (key === \"block_hashes\") chain.setBlockHashes(val);\n else if (key === \"main_chain_parent_block\") chain.setMainChainParentBlockHash(val);\n else console.log(\"WARNING: ignoring unexpected field in alternative chain: \" + key + \": \" + val);\n }\n return chain;\n }\n \n static _convertRpcPeer(rpcPeer) {\n assert(rpcPeer);\n let peer = new MoneroPeer();\n for (let key of Object.keys(rpcPeer)) {\n let val = rpcPeer[key];\n if (key === \"host\") peer.setHost(val);\n else if (key === \"id\") peer.setId(\"\" + val); // TODO monero-wallet-rpc: peer id is BigInteger but string in `get_connections`\n else if (key === \"ip\") {} // host used instead which is consistently a string\n else if (key === \"last_seen\") peer.setLastSeenTimestamp(val);\n else if (key === \"port\") peer.setPort(val);\n else if (key === \"rpc_port\") peer.setRpcPort(val);\n else if (key === \"pruning_seed\") peer.setPruningSeed(val);\n else if (key === \"rpc_credits_per_hash\") peer.setRpcCreditsPerHash(BigInteger.parse(val));\n else console.log(\"WARNING: ignoring unexpected field in rpc peer: \" + key + \": \" + val);\n }\n return peer;\n }\n \n static _convertRpcConnection(rpcConnection) {\n let peer = new MoneroPeer();\n peer.setIsOnline(true);\n for (let key of Object.keys(rpcConnection)) {\n let val = rpcConnection[key];\n if (key === \"address\") peer.setAddress(val);\n else if (key === \"avg_download\") peer.setAvgDownload(val);\n else if (key === \"avg_upload\") peer.setAvgUpload(val);\n else if (key === \"connection_id\") peer.setId(val);\n else if (key === \"current_download\") peer.setCurrentDownload(val);\n else if (key === \"current_upload\") peer.setCurrentUpload(val);\n else if (key === \"height\") peer.setHeight(val);\n else if (key === \"host\") peer.setHost(val);\n else if (key === \"ip\") {} // host used instead which is consistently a string\n else if (key === \"incoming\") peer.setIsIncoming(val);\n else if (key === \"live_time\") peer.setLiveTime(val);\n else if (key === \"local_ip\") peer.setIsLocalIp(val);\n else if (key === \"localhost\") peer.setIsLocalHost(val);\n else if (key === \"peer_id\") peer.setId(val);\n else if (key === \"port\") peer.setPort(parseInt(val));\n else if (key === \"rpc_port\") peer.setRpcPort(val);\n else if (key === \"recv_count\") peer.setNumReceives(val);\n else if (key === \"recv_idle_time\") peer.setReceiveIdleTime(val);\n else if (key === \"send_count\") peer.setNumSends(val);\n else if (key === \"send_idle_time\") peer.setSendIdleTime(val);\n else if (key === \"state\") peer.setState(val);\n else if (key === \"support_flags\") peer.setNumSupportFlags(val);\n else if (key === \"pruning_seed\") peer.setPruningSeed(val);\n else if (key === \"rpc_credits_per_hash\") peer.setRpcCreditsPerHash(BigInteger.parse(val));\n else if (key === \"address_type\") peer.setType(val);\n else console.log(\"WARNING: ignoring unexpected field in peer: \" + key + \": \" + val);\n }\n return peer;\n }\n \n static _convertToRpcBan(ban) {\n let rpcBan = {};\n rpcBan.host = ban.getHost();\n rpcBan.ip = ban.getIp();\n rpcBan.ban = ban.isBanned();\n rpcBan.seconds = ban.getSeconds();\n return rpcBan;\n }\n \n static _convertRpcMiningStatus(rpcStatus) {\n let status = new MoneroMiningStatus();\n status.setIsActive(rpcStatus.active);\n status.setSpeed(rpcStatus.speed);\n status.setNumThreads(rpcStatus.threads_count);\n if (rpcStatus.active) {\n status.setAddress(rpcStatus.address);\n status.setIsBackground(rpcStatus.is_background_mining_enabled);\n }\n return status;\n }\n \n static _convertRpcUpdateCheckResult(rpcResult) {\n assert(rpcResult);\n let result = new MoneroDaemonUpdateCheckResult();\n for (let key of Object.keys(rpcResult)) {\n let val = rpcResult[key];\n if (key === \"auto_uri\") result.setAutoUri(val);\n else if (key === \"hash\") result.setHash(val);\n else if (key === \"path\") {} // handled elsewhere\n else if (key === \"status\") {} // handled elsewhere\n else if (key === \"update\") result.setIsUpdateAvailable(val);\n else if (key === \"user_uri\") result.setUserUri(val);\n else if (key === \"version\") result.setVersion(val);\n else if (key === \"untrusted\") {} // handled elsewhere\n else console.log(\"WARNING: ignoring unexpected field in rpc check update result: \" + key + \": \" + val);\n }\n if (result.getAutoUri() === \"\") result.setAutoUri(undefined);\n if (result.getUserUri() === \"\") result.setUserUri(undefined);\n if (result.getVersion() === \"\") result.setVersion(undefined);\n if (result.getHash() === \"\") result.setHash(undefined);\n return result;\n }\n \n static _convertRpcUpdateDownloadResult(rpcResult) {\n let result = new MoneroDaemonUpdateDownloadResult(MoneroDaemonRpc._convertRpcUpdateCheckResult(rpcResult));\n result.setDownloadPath(rpcResult[\"path\"]);\n if (result.getDownloadPath() === \"\") result.setDownloadPath(undefined);\n return result;\n }\n\n /**\n * Converts a '0x' prefixed hexidecimal string to a BigInteger.\n * \n * @param hex is the '0x' prefixed hexidecimal string to convert\n * @return BigInteger is the hexicedimal converted to decimal\n */\n static _prefixedHexToBI(hex) {\n assert(hex.substring(0, 2) === \"0x\");\n return BigInteger.parse(hex, 16);\n }\n}\n\n// static variables\nMoneroDaemonRpc.DEFAULT_ID = \"0000000000000000000000000000000000000000000000000000000000000000\"; // uninitialized tx or block hash from daemon rpc\nMoneroDaemonRpc.MAX_REQ_SIZE = \"3000000\"; // max request size when fetching blocks from daemon\nMoneroDaemonRpc.NUM_HEADERS_PER_REQ = \"750\"; // number of headers to fetch and cache per request\n\n/**\n * Implements a MoneroDaemon by proxying requests to a worker.\n * \n * @private\n */\nclass MoneroDaemonRpcProxy extends MoneroDaemon {\n \n // --------------------------- STATIC UTILITIES -----------------------------\n \n static async connect(config) {\n let daemonId = GenUtils.getUUID();\n config = Object.assign({}, config, {proxyToWorker: false});\n await LibraryUtils.invokeWorker(daemonId, \"connectDaemonRpc\", [config]);\n return new MoneroDaemonRpcProxy(daemonId, await LibraryUtils.getWorker());\n }\n \n // ---------------------------- INSTANCE METHODS ----------------------------\n \n constructor(daemonId, worker) {\n super();\n this.daemonId = daemonId;\n this.worker = worker;\n this.wrappedListeners = [];\n }\n \n async getProcess() {\n return undefined; // proxy does not have access to process\n }\n \n async stopProcess(force) {\n if (this.process === undefined) throw new MoneroError(\"MoneroDaemonRpcProxy instance not created from new process\");\n let listenersCopy = GenUtils.copyArray(this.getListeners());\n for (let listener of listenersCopy) await this.removeListener(listener);\n return GenUtils.killProcess(this.process, force ? \"sigkill\" : undefined);\n }\n \n async addListener(listener) {\n let wrappedListener = new DaemonWorkerListener(listener);\n let listenerId = wrappedListener.getId();\n LibraryUtils.WORKER_OBJECTS[this.daemonId].callbacks[\"onBlockHeader_\" + listenerId] = [wrappedListener.onBlockHeader, wrappedListener];\n this.wrappedListeners.push(wrappedListener);\n return this._invokeWorker(\"daemonAddListener\", [listenerId]);\n }\n \n async removeListener(listener) {\n for (let i = 0; i < this.wrappedListeners.length; i++) {\n if (this.wrappedListeners[i].getListener() === listener) {\n let listenerId = this.wrappedListeners[i].getId();\n await this._invokeWorker(\"daemonRemoveListener\", [listenerId]);\n delete LibraryUtils.WORKER_OBJECTS[this.daemonId].callbacks[\"onBlockHeader_\" + listenerId];\n this.wrappedListeners.splice(i, 1);\n return;\n }\n }\n throw new MoneroError(\"Listener is not registered with daemon\");\n }\n \n getListeners() {\n let listeners = [];\n for (let wrappedListener of this.wrappedListeners) listeners.push(wrappedListener.getListener());\n return listeners;\n }\n \n async getRpcConnection() {\n let config = await this._invokeWorker(\"daemonGetRpcConnection\");\n return new MoneroRpcConnection(config);\n }\n \n async isConnected() {\n return this._invokeWorker(\"daemonIsConnected\");\n }\n \n async getVersion() {\n let versionJson = await this._invokeWorker(\"daemonGetVersion\");\n return new MoneroVersion(versionJson.number, versionJson.isRelease);\n }\n \n async isTrusted() {\n return this._invokeWorker(\"daemonIsTrusted\");\n }\n \n async getHeight() {\n return this._invokeWorker(\"daemonGetHeight\");\n }\n \n async getBlockHash(height) {\n return this._invokeWorker(\"daemonGetBlockHash\", Array.from(arguments));\n }\n \n async getBlockTemplate(walletAddress, reserveSize) {\n return new MoneroBlockTemplate(await this._invokeWorker(\"daemonGetBlockTemplate\", Array.from(arguments)));\n }\n \n async getLastBlockHeader() {\n return new MoneroBlockHeader(await this._invokeWorker(\"daemonGetLastBlockHeader\"));\n }\n \n async getBlockHeaderByHash(blockHash) {\n return new MoneroBlockHeader(await this._invokeWorker(\"daemonGetBlockHeaderByHash\", Array.from(arguments)));\n }\n \n async getBlockHeaderByHeight(height) {\n return new MoneroBlockHeader(await this._invokeWorker(\"daemonGetBlockHeaderByHeight\", Array.from(arguments)));\n }\n \n async getBlockHeadersByRange(startHeight, endHeight) {\n let blockHeadersJson = await this._invokeWorker(\"daemonGetBlockHeadersByRange\", Array.from(arguments));\n let headers = [];\n for (let blockHeaderJson of blockHeadersJson) headers.push(new MoneroBlockHeader(blockHeaderJson));\n return headers;\n }\n \n async getBlockByHash(blockHash) {\n return new MoneroBlock(await this._invokeWorker(\"daemonGetBlockByHash\", Array.from(arguments)));\n }\n \n async getBlocksByHash(blockHashes, startHeight, prune) {\n let blocksJson = await this._invokeWorker(\"daemonGetBlocksByHash\", Array.from(arguments));\n let blocks = [];\n for (let blockJson of blocksJson) blocks.push(new MoneroBlock(blockJson));\n return blocks;\n }\n \n async getBlockByHeight(height) {\n return new MoneroBlock(await this._invokeWorker(\"daemonGetBlockByHeight\", Array.from(arguments)));\n }\n \n async getBlocksByHeight(heights) {\n let blocksJson = await this._invokeWorker(\"daemonGetBlocksByHeight\", Array.from(arguments));\n let blocks = [];\n for (let blockJson of blocksJson) blocks.push(new MoneroBlock(blockJson));\n return blocks;\n }\n \n async getBlocksByRange(startHeight, endHeight) {\n let blocksJson = await this._invokeWorker(\"daemonGetBlocksByRange\", Array.from(arguments));\n let blocks = [];\n for (let blockJson of blocksJson) blocks.push(new MoneroBlock(blockJson));\n return blocks;\n }\n \n async getBlocksByRangeChunked(startHeight, endHeight, maxChunkSize) {\n let blocksJson = await this._invokeWorker(\"daemonGetBlocksByRangeChunked\", Array.from(arguments));\n let blocks = [];\n for (let blockJson of blocksJson) blocks.push(new MoneroBlock(blockJson));\n return blocks;\n }\n \n async getBlockHashes(blockHashes, startHeight) {\n return this._invokeWorker(\"daemonGetBlockHashes\", Array.from(arguments));\n }\n \n async getTxs(txHashes, prune = false) {\n \n // deserialize txs from blocks\n let blocks = [];\n for (let blockJson of await this._invokeWorker(\"daemonGetTxs\", Array.from(arguments))) {\n blocks.push(new MoneroBlock(blockJson));\n }\n \n // collect txs\n let txs = [];\n for (let block of blocks) {\n for (let tx of block.getTxs()) {\n if (!tx.isConfirmed()) tx.setBlock(undefined);\n txs.push(tx);\n }\n }\n return txs;\n }\n \n async getTxHexes(txHashes, prune = false) {\n return this._invokeWorker(\"daemonGetTxHexes\", Array.from(arguments));\n }\n \n async getMinerTxSum(height, numBlocks) {\n return new MoneroMinerTxSum(await this._invokeWorker(\"daemonGetMinerTxSum\", Array.from(arguments)));\n }\n \n async getFeeEstimate(graceBlocks) {\n return new MoneroFeeEstimate(await this._invokeWorker(\"daemonGetFeeEstimate\", Array.from(arguments)));\n }\n \n async submitTxHex(txHex, doNotRelay) {\n return new MoneroSubmitTxResult(await this._invokeWorker(\"daemonSubmitTxHex\", Array.from(arguments)));\n }\n \n async relayTxsByHash(txHashes) {\n return this._invokeWorker(\"daemonRelayTxsByHash\", Array.from(arguments));\n }\n \n async getTxPool() {\n let blockJson = await this._invokeWorker(\"daemonGetTxPool\");\n let txs = new MoneroBlock(blockJson).getTxs();\n for (let tx of txs) tx.setBlock(undefined);\n return txs ? txs : [];\n }\n \n async getTxPoolHashes() {\n return this._invokeWorker(\"daemonGetTxPoolHashes\", Array.from(arguments));\n }\n \n async getTxPoolBacklog() {\n throw new MoneroError(\"Not implemented\");\n }\n \n async getTxPoolStats() {\n return new MoneroTxPoolStats(await this._invokeWorker(\"daemonGetTxPoolStats\"));\n }\n \n async flushTxPool(hashes) {\n return this._invokeWorker(\"daemonFlushTxPool\", Array.from(arguments));\n }\n \n async getKeyImageSpentStatuses(keyImages) {\n return this._invokeWorker(\"daemonGetKeyImageSpentStatuses\", Array.from(arguments));\n }\n \n async getOutputs(outputs) {\n throw new MoneroError(\"Not implemented\");\n }\n \n async getOutputHistogram(amounts, minCount, maxCount, isUnlocked, recentCutoff) {\n let entries = [];\n for (let entryJson of await this._invokeWorker(\"daemonGetOutputHistogram\", [amounts, minCount, maxCount, isUnlocked, recentCutoff])) {\n entries.push(new MoneroOutputHistogramEntry(entryJson));\n }\n return entries;\n }\n \n async getOutputDistribution(amounts, cumulative, startHeight, endHeight) {\n throw new MoneroError(\"Not implemented\");\n }\n \n async getInfo() {\n return new MoneroDaemonInfo(await this._invokeWorker(\"daemonGetInfo\"));\n }\n \n async getSyncInfo() {\n return new MoneroDaemonSyncInfo(await this._invokeWorker(\"daemonGetSyncInfo\"));\n }\n \n async getHardForkInfo() {\n return new MoneroHardForkInfo(await this._invokeWorker(\"daemonGetHardForkInfo\"));\n }\n \n async getAltChains() {\n let altChains = [];\n for (let altChainJson of await this._invokeWorker(\"daemonGetAltChains\")) altChains.push(new MoneroAltChain(altChainJson));\n return altChains;\n }\n \n async getAltBlockHashes() {\n return this._invokeWorker(\"daemonGetAltBlockHashes\");\n }\n \n async getDownloadLimit() {\n return this._invokeWorker(\"daemonGetDownloadLimit\");\n }\n \n async setDownloadLimit(limit) {\n return this._invokeWorker(\"daemonSetDownloadLimit\", Array.from(arguments));\n }\n \n async resetDownloadLimit() {\n return this._invokeWorker(\"daemonResetDownloadLimit\");\n }\n \n async getUploadLimit() {\n return this._invokeWorker(\"daemonGetUploadLimit\");\n }\n \n async setUploadLimit(limit) {\n return this._invokeWorker(\"daemonSetUploadLimit\", Array.from(arguments));\n }\n \n async resetUploadLimit() {\n return this._invokeWorker(\"daemonResetUploadLimit\");\n }\n \n async getPeers() {\n let peers = [];\n for (let peerJson of await this._invokeWorker(\"daemonGetPeers\")) peers.push(new MoneroPeer(peerJson));\n return peers;\n }\n \n async getKnownPeers() {\n let peers = [];\n for (let peerJson of await this._invokeWorker(\"daemonGetKnownPeers\")) peers.push(new MoneroPeer(peerJson));\n return peers;\n }\n \n async setOutgoingPeerLimit(limit) {\n return this._invokeWorker(\"daemonSetIncomingPeerLimit\", Array.from(arguments));\n }\n \n async setIncomingPeerLimit(limit) {\n return this._invokeWorker(\"daemonSetIncomingPeerLimit\", Array.from(arguments));\n }\n \n async getPeerBans() {\n let bans = [];\n for (let banJson of await this._invokeWorker(\"daemonGetPeerBans\")) bans.push(new MoneroBan(banJson));\n return bans;\n }\n\n async setPeerBans(bans) {\n let bansJson = [];\n for (let ban of bans) bansJson.push(ban.toJson());\n return this._invokeWorker(\"daemonSetPeerBans\", [bansJson]);\n }\n \n async startMining(address, numThreads, isBackground, ignoreBattery) {\n return this._invokeWorker(\"daemonStartMining\", Array.from(arguments));\n }\n \n async stopMining() {\n await this._invokeWorker(\"daemonStopMining\")\n }\n \n async getMiningStatus() {\n return new MoneroMiningStatus(await this._invokeWorker(\"daemonGetMiningStatus\"));\n }\n \n async submitBlocks(blockBlobs) {\n throw new MoneroError(\"Not implemented\");\n }\n\n async pruneBlockchain(check) {\n return new MoneroPruneResult(await this._invokeWorker(\"daemonPruneBlockchain\"));\n }\n \n async checkForUpdate() {\n throw new MoneroError(\"Not implemented\");\n }\n \n async downloadUpdate(path) {\n throw new MoneroError(\"Not implemented\");\n }\n \n async stop() {\n while (this.wrappedListeners.length) await this.removeBlockListener(this.wrappedListeners[0].getListener());\n return this._invokeWorker(\"daemonStop\");\n }\n \n async waitForNextBlockHeader() {\n return new MoneroBlockHeader(await this._invokeWorker(\"daemonWaitForNextBlockHeader\"));\n }\n \n // --------------------------- PRIVATE HELPERS ------------------------------\n \n // TODO: duplicated with MoneroWalletFullProxy\n async _invokeWorker(fnName, args) {\n return LibraryUtils.invokeWorker(this.daemonId, fnName, args);\n }\n}\n\n/**\n * Polls a Monero daemon for updates and notifies listeners as they occur.\n * \n * @class\n * @ignore\n */\nclass DaemonPoller {\n \n constructor(daemon) {\n let that = this;\n this._daemon = daemon;\n this._looper = new TaskLooper(async function() { await that.poll(); });\n }\n \n setIsPolling(isPolling) {\n this._isPolling = isPolling;\n if (isPolling) this._looper.start(this._daemon.config.pollInterval);\n else this._looper.stop();\n }\n \n async poll() {\n try {\n \n // get latest block header\n let header = await this._daemon.getLastBlockHeader();\n \n // save first header for comparison\n if (!this._lastHeader) {\n this._lastHeader = await this._daemon.getLastBlockHeader();\n return;\n }\n \n // compare header to last\n if (header.getHash() !== this._lastHeader.getHash()) {\n this._lastHeader = header;\n for (let listener of this._daemon.getListeners()) {\n await listener.onBlockHeader(header); // notify listener\n }\n }\n } catch (err) {\n console.error(\"Failed to background poll daemon header\");\n console.error(err);\n }\n }\n}\n\n/**\n * Internal listener to bridge notifications to external listeners.\n * \n * @private\n */\nclass DaemonWorkerListener {\n \n constructor(listener) {\n this._id = GenUtils.getUUID();\n this._listener = listener;\n }\n \n getId() {\n return this._id;\n }\n \n getListener() {\n return this._listener;\n }\n \n async onBlockHeader(headerJson) {\n return this._listener.onBlockHeader(new MoneroBlockHeader(headerJson));\n }\n}\n\nmodule.exports = MoneroDaemonRpc;","const assert = require(\"assert\");\n\n/**\n * Enumerates connection types.\n * \n * Based on enums.h in monero-project.\n * \n * @hideconstructor\n */\nclass ConnectionType {\n \n /**\n * Asserts that the given connection type is valid.\n */\n static validate(type) {\n assert(type === 0 || type === 1 || type === 2 || type === 3, \"Connection type is invalid: \" + type);\n }\n \n /**\n * Indicates if the given connection type is valid or not.\n */\n static isValid(type) {\n return type === 0 || type === 1 || type === 2 || 3;\n }\n}\n\n/**\n * Invalid connection type (value=0).\n */\nConnectionType.INVALID = 0;\n\n/**\n * IPV4 connection type (value=1).\n */\nConnectionType.IPV4 = 1;\n\n/**\n * IPV6 connection type (value=2).\n */\nConnectionType.IPV6 = 2;\n\n/**\n * TOR connection type (value=3).\n */\nConnectionType.TOR = 3;\n\n/**\n * I2P connection type (value=4).\n */\nConnectionType.I2P = 4;\n\nmodule.exports = ConnectionType;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Models an alternative chain seen by the node.\n */\nclass MoneroAltChain {\n \n constructor(state) {\n state = Object.assign({}, state);\n if (state.difficulty !== undefined && !(state.difficulty instanceof BigInteger)) state.difficulty = BigInteger.parse(state.difficulty);\n this.state = state;\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getDifficulty()) json.difficulty = this.getDifficulty().toString();\n return json;\n }\n \n getBlockHashes(blockHashes) {\n return this.state.blockHashes;\n }\n \n setBlockHashes(blockHashes) {\n this.state.blockHashes = blockHashes;\n return this;\n }\n \n getDifficulty() {\n return this.state.difficulty;\n }\n \n setDifficulty(difficulty) {\n this.state.difficulty = difficulty;\n return this;\n }\n \n getHeight() {\n return this.state.height;\n }\n \n setHeight(height) {\n this.state.height = height;\n return this;\n }\n \n getLength() {\n return this.state.length;\n }\n \n setLength(length) {\n this.state.length = length;\n return this;\n }\n \n getMainChainParentBlockHash() {\n return this.state.mainChainParentBlockHash;\n }\n \n setMainChainParentBlockHash(mainChainParentBlockHash) {\n this.state.mainChainParentBlockHash = mainChainParentBlockHash;\n return this;\n }\n}\n\nmodule.exports = MoneroAltChain;","/**\n * Monero banhammer.\n */\nclass MoneroBan {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n \n getHost() {\n return this.state.host;\n }\n \n setHost(host) {\n this.state.host = host;\n return this;\n }\n \n getIp() {\n return this.state.ip;\n }\n \n setIp(ip) {\n this.state.ip = ip;\n return this;\n }\n \n isBanned() {\n return this.state.isBanned;\n }\n \n setIsBanned(isBanned) {\n this.state.isBanned = isBanned;\n return this;\n }\n \n getSeconds() {\n return this.state.seconds;\n }\n \n setSeconds(seconds) {\n this.state.seconds = seconds;\n return this;\n }\n}\n\nmodule.exports = MoneroBan;","const assert = require(\"assert\");\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroBlockHeader = require(\"./MoneroBlockHeader\");\nconst MoneroTx = require(\"./MoneroTx\");\nconst MoneroTxQuery = require(\"../../wallet/model/MoneroTxQuery\");\nconst MoneroTxWallet = require(\"../../wallet/model/MoneroTxWallet\");\n\n/**\n * Models a Monero block in the blockchain.\n * \n * @extends {MoneroBlockHeader}\n */\nclass MoneroBlock extends MoneroBlockHeader {\n \n /**\n * Construct the model.\n * \n * @param {MoneroBlock|MoneroBlockHeader|object} state is existing state to initialize from (optional)\n * @param {MoneroBlock.DeserializationType} txType informs the tx deserialization type (MoneroTx, MoneroTxWallet, MoneroTxQuery)\n */\n constructor(state, txType) {\n super(state);\n state = this.state;\n \n // deserialize miner tx\n if (state.minerTx && !(state.minerTx instanceof MoneroTx)) state.minerTx = new MoneroTx(state.minerTx).setBlock(this);\n \n // deserialize non-miner txs\n if (state.txs) {\n for (let i = 0; i < state.txs.length; i++) {\n if (txType === MoneroBlock.DeserializationType.TX || txType === undefined) {\n if (!(state.txs[i] instanceof MoneroTx)) state.txs[i] = new MoneroTx(state.txs[i]).setBlock(this);\n } else if (txType === MoneroBlock.DeserializationType.TX_WALLET) {\n if (!(state.txs[i] instanceof MoneroTxWallet)) state.txs[i] = new MoneroTxWallet(state.txs[i]).setBlock(this);\n } else if (txType === MoneroBlock.DeserializationType.TX_QUERY) {\n if (!(state.txs[i] instanceof MoneroTxQuery)) state.txs[i] = new MoneroTxQuery(state.txs[i]).setBlock(this);\n } else {\n throw new Error(\"Unrecognized tx deserialization type: \" + txType);\n }\n }\n }\n }\n \n getHex() {\n return this.state.hex;\n }\n \n setHex(hex) {\n this.state.hex = hex;\n return this;\n }\n \n getMinerTx() {\n return this.state.minerTx;\n }\n \n setMinerTx(minerTx) {\n this.state.minerTx = minerTx;\n return this;\n }\n \n getTxs() {\n return this.state.txs;\n }\n \n setTxs(txs) {\n this.state.txs = txs;\n return this;\n }\n \n getTxHashes() {\n return this.state.txHashes;\n }\n \n setTxHashes(txHashes) {\n this.state.txHashes = txHashes;\n return this;\n }\n \n copy() {\n return new MoneroBlock(this);\n }\n \n toJson() {\n let json = super.toJson();\n if (this.getMinerTx()) json.minerTx = this.getMinerTx().toJson();\n if (this.getTxs()) {\n json.txs = [];\n for (let tx of this.getTxs()) json.txs.push(tx.toJson());\n }\n return json;\n }\n \n merge(block) {\n assert(block instanceof MoneroBlock);\n if (this === block) return this;\n \n // merge header fields\n super.merge(block);\n \n // merge reconcilable block extensions\n this.setHex(GenUtils.reconcile(this.getHex(), block.getHex()));\n this.setTxHashes(GenUtils.reconcile(this.getTxHashes(), block.getTxHashes()));\n \n // merge miner tx\n if (this.getMinerTx() === undefined) this.setMinerTx(block.getMinerTx());\n if (block.getMinerTx() !== undefined) {\n block.getMinerTx().setBlock(this);\n this.getMinerTx().merge(block.getMinerTx());\n }\n \n // merge non-miner txs\n if (block.getTxs() !== undefined) {\n for (let tx of block.getTxs()) {\n tx.setBlock(this);\n MoneroBlock._mergeTx(this.getTxs(), tx);\n }\n }\n\n return this;\n }\n \n toString(indent = 0) {\n let str = super.toString(indent) + \"\\n\";\n str += GenUtils.kvLine(\"Hex\", this.getHex(), indent);\n if (this.getTxs()) {\n str += GenUtils.kvLine(\"Txs\", \"\", indent);\n for (let tx of this.getTxs()) {\n str += tx.toString(indent + 1) + \"\\n\";\n }\n }\n if (this.getMinerTx()) {\n str += GenUtils.kvLine(\"Miner tx\", \"\", indent);\n str += this.getMinerTx().toString(indent + 1) + \"\\n\";\n }\n str += GenUtils.kvLine(\"Txs hashes\", this.getTxHashes(), indent);\n return str[str.length - 1] === \"\\n\" ? str.slice(0, str.length - 1) : str // strip last newline\n }\n \n // private helper to merge txs\n static _mergeTx(txs, tx) {\n for (let aTx of txs) {\n if (aTx.getHash() === tx.getHash()) {\n aTx.merge(tx);\n return;\n }\n }\n txs.push(tx);\n }\n}\n\nMoneroBlock.DeserializationType = {\n TX: 0,\n TX_WALLET: 1,\n TX_QUERY: 2\n}\n\nmodule.exports = MoneroBlock;","const assert = require(\"assert\");\nconst BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\n\n/**\n * Models a Monero block header which contains information about the block.\n * \n * @class\n */\nclass MoneroBlockHeader {\n \n /**\n * Construct the model.\n * \n * @param {MoneroBlockHeader|object} state is existing state to initialize from (optional)\n */\n constructor(state) {\n \n // initialize internal state\n if (!state) state = {};\n else if (state instanceof MoneroBlockHeader) state = state.toJson();\n else if (typeof state === \"object\") state = Object.assign({}, state);\n else throw new MoneroError(\"state must be a MoneroBlockHeader or JavaScript object\");\n this.state = state;\n \n // deserialize BigIntegers\n if (state.difficulty !== undefined && !(state.difficulty instanceof BigInteger)) state.difficulty = BigInteger.parse(state.difficulty);\n if (state.cumulativeDifficulty !== undefined && !(state.cumulativeDifficulty instanceof BigInteger)) state.cumulativeDifficulty = BigInteger.parse(state.cumulativeDifficulty);\n if (state.reward !== undefined && !(state.reward instanceof BigInteger)) state.reward = BigInteger.parse(state.reward);\n }\n \n copy() {\n return new MoneroBlockHeader(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getDifficulty()) json.difficulty = this.getDifficulty().toString();\n if (this.getCumulativeDifficulty()) json.cumulativeDifficulty = this.getCumulativeDifficulty().toString();\n if (this.getReward()) json.reward = this.getReward().toString();\n return json;\n }\n \n getHash() {\n return this.state.hash;\n }\n \n setHash(hash) {\n this.state.hash = hash;\n return this;\n }\n \n /**\n * Return the block's height which is the total number of blocks that have occurred before.\n * \n * @return {number} the block's height\n */\n getHeight() {\n return this.state.height;\n }\n \n /**\n * Set the block's height which is the total number of blocks that have occurred before.\n * \n * @param {number} height is the block's height to set\n * @return {MoneroBlockHeader} a reference to this header for chaining\n */\n setHeight(height) {\n this.state.height = height;\n return this;\n }\n \n getTimestamp() {\n return this.state.timestamp;\n }\n \n setTimestamp(timestamp) {\n this.state.timestamp = timestamp;\n return this;\n }\n \n getSize() {\n return this.state.size;\n }\n \n setSize(size) {\n this.state.size = size;\n return this;\n }\n \n getWeight() {\n return this.state.weight;\n }\n \n setWeight(weight) {\n this.state.weight = weight;\n return this;\n }\n \n getLongTermWeight() {\n return this.state.longTermWeight;\n }\n \n setLongTermWeight(longTermWeight) {\n this.state.longTermWeight = longTermWeight;\n return this;\n }\n \n getDepth() {\n return this.state.depth;\n }\n \n setDepth(depth) {\n this.state.depth = depth;\n return this;\n }\n \n getDifficulty() {\n return this.state.difficulty;\n }\n \n setDifficulty(difficulty) {\n this.state.difficulty = difficulty;\n return this;\n }\n \n getCumulativeDifficulty() {\n return this.state.cumulativeDifficulty;\n }\n \n setCumulativeDifficulty(cumulativeDifficulty) {\n this.state.cumulativeDifficulty = cumulativeDifficulty;\n return this;\n }\n \n getMajorVersion() {\n return this.state.majorVersion;\n }\n \n setMajorVersion(majorVersion) {\n this.state.majorVersion = majorVersion;\n return this;\n }\n \n getMinorVersion() {\n return this.state.minorVersion;\n }\n \n setMinorVersion(minorVersion) {\n this.state.minorVersion = minorVersion;\n return this;\n }\n \n getNonce() {\n return this.state.nonce;\n }\n \n setNonce(nonce) {\n this.state.nonce = nonce;\n return this;\n }\n \n getMinerTxHash() {\n return this.state.minerTxHash;\n }\n \n setMinerTxHash(minerTxHash) {\n this.state.minerTxHash = minerTxHash;\n return this;\n }\n \n getNumTxs() {\n return this.state.numTxs;\n }\n \n setNumTxs(numTxs) {\n this.state.numTxs = numTxs;\n return this;\n }\n \n getOrphanStatus() {\n return this.state.orphanStatus;\n }\n \n setOrphanStatus(orphanStatus) {\n this.state.orphanStatus = orphanStatus;\n return this;\n }\n \n getPrevHash() {\n return this.state.prevHash;\n }\n \n setPrevHash(prevHash) {\n this.state.prevHash = prevHash;\n return this;\n }\n \n getReward() {\n return this.state.reward;\n }\n \n setReward(reward) {\n this.state.reward = reward;\n return this;\n }\n \n getPowHash() {\n return this.state.powHash;\n }\n \n setPowHash(powHash) {\n this.state.powHash = powHash;\n return this;\n }\n \n merge(header) {\n assert(header instanceof MoneroBlockHeader);\n if (this === header) return this;\n this.setHash(GenUtils.reconcile(this.getHash(), header.getHash()));\n this.setHeight(GenUtils.reconcile(this.getHeight(), header.getHeight(), {resolveMax: true})); // height can increase\n this.setTimestamp(GenUtils.reconcile(this.getTimestamp(), header.getTimestamp(), {resolveMax: true})); // block timestamp can increase\n this.setSize(GenUtils.reconcile(this.getSize(), header.getSize()));\n this.setWeight(GenUtils.reconcile(this.getWeight(), header.getWeight()));\n this.setDepth(GenUtils.reconcile(this.getDepth(), header.getDepth()));\n this.setDifficulty(GenUtils.reconcile(this.getDifficulty(), header.getDifficulty()));\n this.setCumulativeDifficulty(GenUtils.reconcile(this.getCumulativeDifficulty(), header.getCumulativeDifficulty()));\n this.setMajorVersion(GenUtils.reconcile(this.getMajorVersion(), header.getMajorVersion()));\n this.setMinorVersion(GenUtils.reconcile(this.getMinorVersion(), header.getMinorVersion()));\n this.setNonce(GenUtils.reconcile(this.getNonce(), header.getNonce()));\n this.setMinerTxHash(GenUtils.reconcile(this.getMinerTxHash(), header.getMinerTxHash()));\n this.setNumTxs(GenUtils.reconcile(this.getNumTxs(), header.getNumTxs()));\n this.setOrphanStatus(GenUtils.reconcile(this.getOrphanStatus(), header.getOrphanStatus()));\n this.setPrevHash(GenUtils.reconcile(this.getPrevHash(), header.getPrevHash()));\n this.setReward(GenUtils.reconcile(this.getReward(), header.getReward()));\n this.setPowHash(GenUtils.reconcile(this.getPowHash(), header.getPowHash()));\n return this;\n }\n \n toString(indent = 0) {\n let str = \"\";\n str += GenUtils.kvLine(\"Hash\", this.getHash(), indent);\n str += GenUtils.kvLine(\"Height\", this.getHeight(), indent);\n str += GenUtils.kvLine(\"Timestamp\", this.getTimestamp(), indent);\n str += GenUtils.kvLine(\"Size\", this.getSize(), indent);\n str += GenUtils.kvLine(\"Weight\", this.getWeight(), indent);\n str += GenUtils.kvLine(\"Depth\", this.getDepth(), indent);\n str += GenUtils.kvLine(\"Difficulty\", this.getDifficulty(), indent);\n str += GenUtils.kvLine(\"Cumulative difficulty\", this.getCumulativeDifficulty(), indent);\n str += GenUtils.kvLine(\"Major version\", this.getMajorVersion(), indent);\n str += GenUtils.kvLine(\"Minor version\", this.getMinorVersion(), indent);\n str += GenUtils.kvLine(\"Nonce\", this.getNonce(), indent);\n str += GenUtils.kvLine(\"Miner tx hash\", this.getMinerTxHash(), indent);\n str += GenUtils.kvLine(\"Num txs\", this.getNumTxs(), indent);\n str += GenUtils.kvLine(\"Orphan status\", this.getOrphanStatus(), indent);\n str += GenUtils.kvLine(\"Prev hash\", this.getPrevHash(), indent);\n str += GenUtils.kvLine(\"Reward\", this.getReward(), indent);\n str += GenUtils.kvLine(\"Pow hash\", this.getPowHash(), indent);\n return str[str.length - 1] === \"\\n\" ? str.slice(0, str.length - 1) : str // strip last newline\n }\n}\n\nmodule.exports = MoneroBlockHeader;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Monero block template to mine.\n */\nclass MoneroBlockTemplate {\n \n constructor(state) {\n state = Object.assign({}, state);\n this.state = state;\n \n // deserialize BigIntegers\n if (state.expectedReward !== undefined && !(state.expectedReward instanceof BigInteger)) state.expectedReward = BigInteger.parse(state.expectedReward);\n if (state.difficulty !== undefined && !(state.difficulty instanceof BigInteger)) state.difficulty = BigInteger.parse(state.difficulty);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getExpectedReward()) json.expectedReward = this.getExpectedReward().toString();\n if (this.getDifficulty()) json.difficulty = this.getDifficulty().toString();\n return json;\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.expectedReward) json.expectedReward = json.expectedReward.toString();\n if (json.difficulty) json.difficulty = json.difficulty.toString();\n return json;\n }\n \n getBlockTemplateBlob() {\n return this.state.blockTemplateBlob;\n }\n \n setBlockTemplateBlob(blockTemplateBlob) {\n this.state.blockTemplateBlob = blockTemplateBlob;\n return this;\n }\n \n getBlockHashingBlob() {\n return this.state.blockHashingBlob;\n }\n \n setBlockHashingBlob(blockHashingBlob) {\n this.state.blockHashingBlob = blockHashingBlob;\n return this;\n }\n \n getDifficulty() {\n return this.state.difficulty;\n }\n \n setDifficulty(difficulty) {\n this.state.difficulty = difficulty;\n return this;\n }\n \n getExpectedReward() {\n return this.state.expectedReward;\n }\n \n setExpectedReward(expectedReward) {\n this.state.expectedReward = expectedReward;\n return this;\n }\n \n getHeight() {\n return this.state.height;\n }\n \n setHeight(height) {\n this.state.height = height;\n return this;\n }\n \n getPrevHash() {\n return this.state.prevId;\n }\n \n setPrevHash(prevId) {\n this.state.prevId = prevId;\n return this;\n }\n \n getReservedOffset() {\n return this.state.reservedOffset;\n }\n \n setReservedOffset(reservedOffset) {\n this.state.reservedOffset = reservedOffset;\n return this;\n }\n \n getSeedHeight() {\n return this.state.height;\n }\n \n setSeedHeight(seedHeight) {\n this.state.seedHeight = seedHeight;\n return this;\n }\n \n getSeedHash() {\n return this.state.seedHash;\n }\n \n setSeedHash(seedHash) {\n this.state.seedHash = seedHash;\n return this;\n }\n \n getNextSeedHash() {\n return this.state.nextSeedHash\n }\n \n setNextSeedHash(nextSeedHash) {\n this.state.nextSeedHash = nextSeedHash;\n return this;\n }\n}\n\nmodule.exports = MoneroBlockTemplate;","/**\n * Monero daemon connection span.\n */\nclass MoneroConnectionSpan {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n \n getConnectionId() {\n return this.state.connectionId;\n }\n\n setConnectionId(connectionId) {\n this.state.connectionId = connectionId;\n return this;\n }\n \n getNumBlocks() {\n return this.state.numBlocks;\n }\n\n setNumBlocks(numBlocks) {\n this.state.numBlocks = numBlocks;\n return this;\n }\n \n getRemoteAddress() {\n return this.state.remoteAddress;\n }\n\n setRemoteAddress(remoteAddress) {\n this.state.remoteAddress = remoteAddress;\n return this;\n }\n \n getRate() {\n return this.state.rate;\n }\n\n setRate(rate) {\n this.state.rate = rate;\n return this;\n }\n \n getSpeed() {\n return this.state.speed;\n }\n\n setSpeed(speed) {\n this.state.speed = speed;\n return this;\n }\n \n getSize() {\n return this.state.size;\n }\n \n setSize(size) {\n this.state.size = size;\n return this;\n }\n \n getStartHeight() {\n return this.state.startHeight;\n }\n \n setStartHeight(startHeight) {\n this.state.startHeight = startHeight;\n return this;\n }\n}\n\nmodule.exports = MoneroConnectionSpan;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Monero daemon info.\n */\nclass MoneroDaemonInfo {\n \n constructor(state) {\n state = Object.assign({}, state);\n this.state = state;\n \n // deserialize BigIntegers\n if (state.difficulty !== undefined && !(state.difficulty instanceof BigInteger)) state.difficulty = BigInteger.parse(state.difficulty);\n if (state.cumulativeDifficulty !== undefined && !(state.cumulativeDifficulty instanceof BigInteger)) state.cumulativeDifficulty = BigInteger.parse(state.cumulativeDifficulty);\n if (state.credits !== undefined && !(state.credits instanceof BigInteger)) state.credits = BigInteger.parse(state.credits);\n }\n \n toJson() {\n let json = Object.assign([], this.state);\n if (json.difficulty) json.difficulty = json.difficulty.toString();\n if (json.cumulativeDifficulty) json.cumulativeDifficulty = json.cumulativeDifficulty.toString();\n if (json.credits) json.credits = json.credits.toString();\n return json;\n }\n \n getVersion() {\n return this.state.version;\n }\n \n setVersion(version) {\n this.state.version = version;\n return this;\n }\n \n getNumAltBlocks() {\n return this.state.numAltBlocks;\n }\n \n setNumAltBlocks(numAltBlocks) {\n this.state.numAltBlocks = numAltBlocks;\n return this;\n }\n \n getBlockSizeLimit() {\n return this.state.blockSizeLimit;\n }\n \n setBlockSizeLimit(blockSizeLimit) {\n this.state.blockSizeLimit = blockSizeLimit;\n return this;\n }\n \n getBlockSizeMedian() {\n return this.state.blockSizeMedian;\n }\n \n setBlockSizeMedian(blockSizeMedian) {\n this.state.blockSizeMedian = blockSizeMedian;\n return this;\n }\n \n getBlockWeightLimit() {\n return this.state.blockWeightLimit;\n }\n \n setBlockWeightLimit(blockWeightLimit) {\n this.state.blockWeightLimit = blockWeightLimit;\n return this;\n }\n \n getBlockWeightMedian() {\n return this.state.blockWeightMedian;\n }\n \n setBlockWeightMedian(blockWeightMedian) {\n this.state.blockWeightMedian = blockWeightMedian;\n return this;\n }\n \n getBootstrapDaemonAddress() {\n return this.state.bootstrapDaemonAddress;\n }\n \n setBootstrapDaemonAddress(bootstrapDaemonAddress) {\n this.state.bootstrapDaemonAddress = bootstrapDaemonAddress;\n return this;\n }\n \n getDifficulty() {\n return this.state.difficulty;\n }\n \n setDifficulty(difficulty) {\n this.state.difficulty = difficulty;\n return this;\n }\n \n getCumulativeDifficulty() {\n return this.state.cumulativeDifficulty;\n }\n \n setCumulativeDifficulty(cumulativeDifficulty) {\n this.state.cumulativeDifficulty = cumulativeDifficulty;\n return this;\n }\n \n getFreeSpace() {\n return this.state.freeSpace;\n }\n \n setFreeSpace(freeSpace) {\n this.state.freeSpace = freeSpace;\n return this;\n }\n \n getNumOfflinePeers() {\n return this.state.numOfflinePeers;\n }\n \n setNumOfflinePeers(numOfflinePeers) {\n this.state.numOfflinePeers = numOfflinePeers;\n return this;\n }\n \n getNumOnlinePeers() {\n return this.state.numOnlinePeers;\n }\n \n setNumOnlinePeers(numOnlinePeers) {\n this.state.numOnlinePeers = numOnlinePeers;\n return this;\n }\n \n getHeight() {\n return this.state.height;\n }\n \n setHeight(height) {\n this.state.height = height;\n return this;\n }\n \n getHeightWithoutBootstrap() {\n return this.state.heightWithoutBootstrap;\n }\n \n setHeightWithoutBootstrap(heightWithoutBootstrap) {\n this.state.heightWithoutBootstrap = heightWithoutBootstrap;\n return this;\n }\n \n getNetworkType() {\n return this.state.networkType;\n }\n\n setNetworkType(networkType) {\n this.state.networkType = networkType;\n return this;\n }\n\n isOffline() {\n return this.state.isOffline;\n }\n \n setIsOffline(isOffline) {\n this.state.isOffline = isOffline;\n return this;\n }\n \n getNumIncomingConnections() {\n return this.state.numIncomingConnections;\n }\n \n setNumIncomingConnections(numIncomingConnections) {\n this.state.numIncomingConnections = numIncomingConnections;\n return this;\n }\n \n getNumOutgoingConnections() {\n return this.state.numOutgoingConnections;\n }\n \n setNumOutgoingConnections(numOutgoingConnections) {\n this.state.numOutgoingConnections = numOutgoingConnections;\n return this;\n }\n \n getNumRpcConnections() {\n return this.state.numRpcConnections;\n }\n \n setNumRpcConnections(numRpcConnections) {\n this.state.numRpcConnections = numRpcConnections;\n return this;\n }\n \n getStartTimestamp() {\n return this.state.startTimestamp;\n }\n \n setStartTimestamp(startTimestamp) {\n this.state.startTimestamp = startTimestamp;\n return this;\n }\n \n getAdjustedTimestamp() {\n return this.state.adjustedTimestamp;\n }\n \n setAdjustedTimestamp(adjustedTimestamp) {\n this.state.adjustedTimestamp = adjustedTimestamp;\n return this;\n }\n \n getTarget() {\n return this.state.target;\n }\n \n setTarget(target) {\n this.state.target = target;\n return this;\n }\n \n getTargetHeight() {\n return this.state.targetHeight;\n }\n \n setTargetHeight(targetHeight) {\n this.state.targetHeight = targetHeight;\n return this;\n }\n \n getTopBlockHash() {\n return this.state.topBlockHash;\n }\n \n setTopBlockHash(topBlockHash) {\n this.state.topBlockHash = topBlockHash;\n return this;\n }\n \n getNumTxs() {\n return this.state.numTxs;\n }\n \n setNumTxs(numTxs) {\n this.state.numTxs = numTxs;\n return this;\n }\n \n getNumTxsPool() {\n return this.state.numTxsPool;\n }\n \n setNumTxsPool(numTxsPool) {\n this.state.numTxsPool = numTxsPool;\n return this;\n }\n \n getWasBootstrapEverUsed() {\n return this.state.wasBootstrapEverUsed;\n }\n \n setWasBootstrapEverUsed(wasBootstrapEverUsed) {\n this.state.wasBootstrapEverUsed = wasBootstrapEverUsed;\n return this;\n }\n \n getDatabaseSize() {\n return this.state.databaseSize;\n }\n \n setDatabaseSize(databaseSize) {\n this.state.databaseSize = databaseSize;\n return this;\n }\n \n getUpdateAvailable() {\n return this.state.updateAvailable;\n }\n \n setUpdateAvailable(updateAvailable) {\n this.state.updateAvailable = updateAvailable;\n return this;\n }\n \n getCredits() {\n return this.state.credits;\n }\n \n setCredits(credits) {\n this.state.credits = credits;\n return this;\n }\n \n isBusySyncing() {\n return this.state.isBusySyncing;\n }\n \n setIsBusySyncing(isBusySyncing) {\n this.state.isBusySyncing = isBusySyncing;\n return this;\n }\n \n isSynchronized() {\n return this.state.isSynchronized;\n }\n \n setIsSynchronized(isSynchronized) {\n this.state.isSynchronized = isSynchronized;\n return this;\n }\n \n isRestricted() {\n return this.state.isRestricted;\n }\n \n setIsRestricted(isRestricted) {\n this.state.isRestricted = isRestricted;\n return this;\n }\n}\n\nmodule.exports = MoneroDaemonInfo;","/**\n * Receives notifications as a daemon is updated.\n */\nclass MoneroDaemonListener {\n \n /**\n * Called when a new block is added to the chain.\n * \n * @param {MoneroBlockHeader} header - the header of the block added to the chain\n */\n async onBlockHeader(header) {\n this.lastHeader = header;\n }\n \n /**\n * Get the last notified block header.\n * \n * @return {MoneroBlockHeader} the last notified block header\n */\n getLastBlockHeader() {\n return this.lastHeader;\n }\n}\n\nmodule.exports = MoneroDaemonListener;\n","const BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst MoneroConnectionSpan = require(\"./MoneroConnectionSpan\");\nconst MoneroPeer = require(\"./MoneroPeer\");\n\n/**\n * Models daemon synchronization information.\n */\nclass MoneroDaemonSyncInfo {\n \n constructor(state) {\n \n // copy state\n state = Object.assign({}, state);\n \n // deserialize if necessary\n if (state.peers) {\n for (let i = 0; i < state.peers.length; i++) {\n if (!(state.peers[i] instanceof MoneroPeer)) {\n state.peers[i] = new MoneroPeer(state.peers[i]);\n }\n }\n }\n if (state.spans) {\n for (let i = 0; i < state.spans.length; i++) {\n if (!(state.spans[i] instanceof MoneroConnectionSpan)) {\n state.spans[i] = new MoneroConnectionSpan(state.spans[i]);\n }\n }\n }\n if (state.credits !== undefined && !(state.credits instanceof BigInteger)) state.credits = BigInteger.parse(state.credits);\n \n // assign internal state\n this.state = state;\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.peers) {\n for (let i = 0; i < json.peers.length; i++) {\n json.peers[i] = json.peers[i].toJson();\n }\n }\n if (json.spans) {\n for (let i = 0; i < json.spans.length; i++) {\n json.spans[i] = json.spans[i].toJson();\n }\n }\n if (json.credits) json.credits = json.credits.toString();\n return json;\n }\n \n getHeight() {\n return this.state.height;\n }\n \n setHeight(height) {\n this.state.height = height;\n return this;\n }\n \n getPeers() {\n return this.state.peers;\n }\n \n setPeers(peers) {\n this.state.peers = peers;\n return this;\n }\n \n getSpans() {\n return this.state.spans;\n }\n \n setSpans(spans) {\n this.state.spans = spans;\n return this;\n }\n \n getTargetHeight() {\n return this.state.targetHeight;\n }\n \n setTargetHeight(targetHeight) {\n this.state.targetHeight = targetHeight;\n return this;\n }\n \n getNextNeededPruningSeed() {\n return this.state.nextNeededPruningSeed;\n }\n \n setNextNeededPruningSeed(nextNeededPruningSeed) {\n this.state.nextNeededPruningSeed = nextNeededPruningSeed;\n return this;\n }\n \n getOverview() {\n return this.state.overview;\n }\n \n setOverview(overview) {\n this.state.overview = overview;\n return this;\n }\n \n getCredits() {\n return this.state.credits;\n }\n \n setCredits(credits) {\n this.state.credits = credits;\n return this;\n }\n \n getTopBlockHash() {\n return this.state.topBlockHash;\n }\n \n setTopBlockHash(topBlockHash) {\n this.state.topBlockHash = topBlockHash;\n return this;\n }\n}\n\nmodule.exports = MoneroDaemonSyncInfo;","/**\n * Models the result of checking for a daemon update.\n */\nclass MoneroDaemonUpdateCheckResult {\n \n /**\n * Deep copy constructor.\n * \n * @param {MoneroDaemonUpdateCheckResult} is an existing result to deep copy from\n */\n constructor(result) {\n this.state = {};\n if (result !== undefined) {\n assert(result instanceof MoneroDaemonUpdateCheckResult);\n this.setIsUpdateAvailable(result.isUpdateAvailable());\n this.setVersion(result.getVersion());\n this.setHash(result.getHash());\n this.setAutoUri(result.getAutoUri());\n this.setUserUri(result.getUserUri());\n }\n }\n \n /**\n * Indicates if an update is available.\n * \n * @return {boolean} true if an update is available, false otherwise\n */\n isUpdateAvailable() {\n return this.state.isUpdateAvailable;\n }\n \n setIsUpdateAvailable(isUpdateAvailable) {\n this.state.isUpdateAvailable = isUpdateAvailable;\n return this;\n }\n \n /**\n * Get the update's version.\n * \n * @return {string} is the update's version\n */\n getVersion() {\n return this.state.version;\n }\n \n setVersion(version) {\n this.state.version = version;\n return this;\n }\n \n /**\n * Get the update's hash.\n * \n * @return {string} is the update's hash\n */\n getHash() {\n return this.state.hash;\n }\n \n setHash(hash) {\n this.state.hash = hash;\n return this;\n }\n \n /**\n * Get the uri to automatically download the update.\n * \n * @return {string} is the uri to automatically download the update\n */\n getAutoUri() {\n return this.state.autoUri;\n }\n \n setAutoUri(autoUri) {\n this.state.autoUri = autoUri;\n return this;\n }\n \n /**\n * Get the uri to manually download the update.\n * \n * @return {string} is the uri to manually download the update\n */\n getUserUri() {\n return this.state.userUri;\n }\n \n setUserUri(userUri) {\n this.state.userUri = userUri;\n return this;\n }\n}\n\nmodule.exports = MoneroDaemonUpdateCheckResult;","const MoneroDaemonUpdateCheckResult = require(\"./MoneroDaemonUpdateCheckResult\");\n\n/**\n * Models the result of downloading an update.\n */\nclass MoneroDaemonUpdateDownloadResult extends MoneroDaemonUpdateCheckResult {\n \n /**\n * Construct a download result.\n * \n * @param {MoneroDaemonUpdateCheckResult} is an existing result to copy from\n */\n constructor(result) {\n super(result);\n }\n \n /**\n * Get the path the update was downloaded to.\n * \n * @return {string} is the path the update was downloaded to\n */\n getDownloadPath() {\n return this.state.downloadPath;\n }\n \n setDownloadPath(downloadPath) {\n this.state.downloadPath = downloadPath;\n return this;\n }\n}\n\nmodule.exports = MoneroDaemonUpdateDownloadResult;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\n\n/**\n * Models a Monero fee estimate.\n */\nclass MoneroFeeEstimate {\n \n /**\n * Construct the model.\n * \n * @param {MoneroFeeEstimate|object} state - MoneroFeeEstimate or JS object\n */\n constructor(state) {\n if (!state) this.state = {};\n else if (state instanceof MoneroFeeEstimate) this.state = state.toJson();\n else if (typeof state === \"object\") this.state = Object.assign({}, state);\n else throw new MoneroError(\"state must be a MoneroFeeEstimate or JavaScript object\");\n \n // deserialize\n if (this.state.fee !== undefined && !(this.state.fee instanceof BigInteger)) this.state.fee = BigInteger.parse(this.state.fee);\n if (this.state.fees !== undefined) {\n for (let i = 0; i < this.state.fees.length; i++) {\n if (!(this.state.fees[i] instanceof BigInteger)) this.state.fees[i] = BigInteger.parse(this.state.fees[i]);\n }\n }\n if (this.state.quantizationMask !== undefined && !(this.state.quantizationMask instanceof BigInteger)) this.state.quantizationMask = BigInteger.parse(this.state.quantizationMask);\n }\n\n getFee() {\n return this.state.fee;\n }\n\n setFee(fee) {\n this.state.fee = fee;\n return this;\n }\n\n getFees() {\n return this.state.fees;\n }\n\n setFees(fees) {\n this.state.fees = fees;\n return this;\n }\n \n getQuantizationMask() {\n return this.state.quantizationMask;\n }\n\n setQuantizationMask(quantizationMask) {\n this.state.quantizationMask = quantizationMask;\n return this;\n }\n \n copy() {\n return new MoneroFeeEstimate(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getFee()) json.fee = this.getFee().toString();\n if (this.getFees()) for (let i = 0; i < this.getFees().length; i++) json.fees[i] = this.getFees()[i].toString();\n if (this.getQuantizationMask()) json.quantizationMask = this.getQuantizationMask().toString();\n return json;\n }\n \n toString(indent = 0) {\n let str = \"\";\n let json = this.toJson();\n str += GenUtils.kvLine(\"Fee\", json.fee, indent);\n str += GenUtils.kvLine(\"Fees\", json.fees, indent);\n str += GenUtils.kvLine(\"Quantization mask\", json.quantizationMask, indent);\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroFeeEstimate;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Monero hard fork info.\n */\nclass MoneroHardForkInfo {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n if (this.state.credits !== undefined && !(this.state.credits instanceof BigInteger)) this.state.credits = BigInteger.parse(this.state.credits);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.credits) json.credits = json.credits.toString();\n return json;\n }\n \n getEarliestHeight() {\n return this.state.earliestHeight;\n }\n\n setEarliestHeight(earliestHeight) {\n this.state.earliestHeight = earliestHeight;\n return this;\n }\n\n isEnabled() {\n return this.state.isEnabled;\n }\n\n setIsEnabled(isEnabled) {\n this.state.isEnabled = isEnabled;\n return this;\n }\n\n getState() {\n return this.state.state;\n }\n\n setState(state) {\n this.state.state = state;\n return this;\n }\n\n getThreshold() {\n return this.state.threshold;\n }\n\n setThreshold(threshold) {\n this.state.threshold = threshold;\n return this;\n }\n\n getVersion() {\n return this.state.version;\n }\n\n setVersion(version) {\n this.state.version = version;\n return this;\n }\n\n getNumVotes() {\n return this.state.numVotes;\n }\n\n setNumVotes(numVotes) {\n this.state.numVotes = numVotes;\n return this;\n }\n\n getWindow() {\n return this.state.window;\n }\n\n setWindow(window) {\n this.state.window = window;\n return this;\n }\n\n getVoting() {\n return this.state.voting;\n }\n\n setVoting(voting) {\n this.state.voting = voting;\n return this;\n }\n \n getCredits() {\n return this.state.credits;\n }\n \n setCredits(credits) {\n this.state.credits = credits;\n return this;\n }\n \n getTopBlockHash() {\n return this.state.topBlockHash;\n }\n \n setTopBlockHash(topBlockHash) {\n this.state.topBlockHash = topBlockHash;\n return this;\n }\n}\n\nmodule.exports = MoneroHardForkInfo;","const assert = require(\"assert\");\nconst GenUtils = require(\"../../common/GenUtils\");\n\n/**\n * Models a Monero key image.\n */\nclass MoneroKeyImage {\n \n /**\n * Construct the model.\n * \n * @param {MoneroKeyImage|object|string} stateOrHex is a MoneroKeyImage, JS object, or hex string to initialize from (optional)\n * @param {string} signature is the key image's signature\n */\n constructor(stateOrHex, signature) {\n if (!stateOrHex) this.state = {};\n else if (stateOrHex instanceof MoneroKeyImage) this.state = stateOrHex.toJson();\n else if (typeof stateOrHex === \"object\") this.state = Object.assign({}, stateOrHex);\n else if (typeof stateOrHex === \"string\") {\n this.state = {};\n this.setHex(stateOrHex);\n this.setSignature(signature);\n } else {\n throw new MoneroError(\"stateOrHex must be a MoneroKeyImage, JavaScript object, or string\");\n }\n }\n\n getHex() {\n return this.state.hex;\n }\n\n setHex(hex) {\n this.state.hex = hex;\n return this;\n }\n\n getSignature() {\n return this.state.signature;\n }\n\n setSignature(signature) {\n this.state.signature = signature;\n return this;\n }\n \n copy() {\n return new MoneroKeyImage(this);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n \n merge(keyImage) {\n assert(keyImage instanceof MoneroKeyImage);\n if (keyImage === this) return this;\n this.setHex(GenUtils.reconcile(this.getHex(), keyImage.getHex()));\n this.setSignature(GenUtils.reconcile(this.getSignature(), keyImage.getSignature()));\n return this;\n }\n \n toString(indent = 0) {\n let str = \"\";\n str += GenUtils.kvLine(\"Hex\", this.getHex(), indent);\n str += GenUtils.kvLine(\"Signature\", this.getSignature(), indent);\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroKeyImage;","/**\n * Enumerate key image spent statuses.\n * \n * @hideconstructor\n */\nclass MoneroKeyImageSpentStatus {}\n\n/**\n * Key image is not spent (value=0).\n */\nMoneroKeyImageSpentStatus.NOT_SPENT = 0;\n\n/**\n * Key image is confirmed (value=1).\n */\nMoneroKeyImageSpentStatus.CONFIRMED = 1;\n\n/**\n * Key image is in the pool (value=2).\n */\nMoneroKeyImageSpentStatus.TX_POOL = 2;\n\nmodule.exports = MoneroKeyImageSpentStatus;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Model for the summation of miner emissions and fees.\n */\nclass MoneroMinerTxSum {\n \n constructor(state) {\n state = Object.assign({}, state);\n this.state = state;\n \n // deserialize BigIntegers\n if (state.emissionSum !== undefined && !(state.emissionSum instanceof BigInteger)) state.emissionSum = BigInteger.parse(state.emissionSum);\n if (state.feeSum !== undefined && !(state.feeSum instanceof BigInteger)) state.feeSum = BigInteger.parse(state.feeSum);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getEmissionSum()) json.emissionSum = this.getEmissionSum().toString();\n if (this.getFeeSum()) json.feeSum = this.getFeeSum().toString();\n return json;\n }\n \n getEmissionSum() {\n return this.state.emissionSum;\n }\n \n setEmissionSum(emissionSum) {\n this.state.emissionSum = emissionSum;\n return this;\n }\n \n getFeeSum() {\n return this.state.feeSum;\n }\n \n setFeeSum(feeSum) {\n this.state.feeSum = feeSum;\n return this;\n }\n}\n\nmodule.exports = MoneroMinerTxSum;","/**\n * Models daemon mining status.\n */\nclass MoneroMiningStatus {\n \n constructor(state) {\n if (!state) state = {};\n else if (state instanceof MoneroMiningStatus) state = state.toJson();\n else if (typeof state === \"object\") state = Object.assign({}, state);\n else throw new MoneroError(\"state must be a MoneroMiningStatus or JavaScript object\");\n this.state = state;\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n \n isActive() {\n return this.state.isActive;\n }\n \n setIsActive(isActive) {\n this.state.isActive = isActive;\n return this;\n }\n \n getAddress() {\n return this.state.address;\n }\n \n setAddress(address) {\n this.state.address = address;\n return this;\n }\n \n getSpeed() {\n return this.state.speed;\n }\n \n setSpeed(speed) {\n this.state.speed = speed;\n return this;\n }\n \n getNumThreads() {\n return this.state.numThreads;\n }\n \n setNumThreads(numThreads) {\n this.state.numThreads = numThreads;\n return this;\n }\n \n isBackground() {\n return this.state.isBackground;\n }\n \n setIsBackground(isBackground) {\n this.state.isBackground = isBackground;\n return this;\n }\n}\n\nmodule.exports = MoneroMiningStatus;","const MoneroError = require(\"../../common/MoneroError\");\n\n/**\n * Defines the Monero network types (mainnet, testnet, and stagenet).\n * \n * @hideconstructor\n */\nclass MoneroNetworkType {\n \n /**\n * Validates the given network type.\n * \n * @param {int} networkType - the network type to validate as a numeric\n */\n static validate(networkType) {\n if (networkType !== 0 && networkType !== 1 && networkType !== 2) throw new MoneroError(\"Network type is invalid: \" + networkType);\n }\n \n /**\n * Indicates if the given network type is valid or not.\n * \n * @param {int} networkType - the network type to validate as a numeric\n * @return {boolean} true if the network type is valid, false otherwise\n */\n static isValid(networkType) {\n return networkType === 0 || networkType === 1 || networkType === 2;\n }\n \n /**\n * Parse the given string as a network type.\n * \n * @param {string} networkTypeStr - \"mainnet\", \"testnet\", or \"stagenet\" (case insensitive)\n * @return {int} the network type as a numeric\n */\n static parse(networkTypeStr) {\n let str = (\"\" + networkTypeStr).toLowerCase();\n switch (str) {\n case \"mainnet\": return MoneroNetworkType.MAINNET;\n case \"testnet\": return MoneroNetworkType.TESTNET;\n case \"stagenet\": return MoneroNetworkType.STAGENET;\n default: throw new MoneroError(\"Invalid network type to parse: '\" + networkTypeStr + \"'\");\n }\n }\n \n /**\n * Get the network type in human-readable form.\n *\n * @return {string} the network type in human-readable form\n */\n static toString(networkType) {\n if (networkType === 0) return \"mainnet\";\n if (networkType === 1) return \"testnet\";\n if (networkType === 2) return \"stagenet\";\n throw new MoneroError(\"Invalid network type: \" + networkType);\n }\n}\n\n/**\n * Mainnet (value=0).\n */\nMoneroNetworkType.MAINNET = 0;\n\n/**\n * Testnet (value=1).\n */\nMoneroNetworkType.TESTNET = 1;\n\n/**\n * Stagnet (value=2).\n */\nMoneroNetworkType.STAGENET = 2;\n\nmodule.exports = MoneroNetworkType;","const assert = require(\"assert\");\nconst BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroKeyImage = require(\"./MoneroKeyImage\");\n\n/**\n * Models a Monero transaction output.\n * \n * @class\n */\nclass MoneroOutput {\n \n /**\n * Construct the model.\n * \n * @param {MoneroOutput|object} state is existing state to initialize from (optional)\n */\n constructor(state) {\n \n // initialize internal state\n if (!state) state = {};\n else if (state instanceof MoneroOutput) state = state.toJson();\n else if (typeof state === \"object\") state = Object.assign({}, state);\n else throw new MoneroError(\"state must be a MoneroOutput or JavaScript object\");\n this.state = state;\n \n // deserialize fields if necessary\n if (state.amount !== undefined && !(state.amount instanceof BigInteger)) state.amount = BigInteger.parse(state.amount);\n if (state.keyImage && !(state.keyImage instanceof MoneroKeyImage)) state.keyImage = new MoneroKeyImage(state.keyImage);\n }\n \n getTx() {\n return this.state.tx;\n }\n \n setTx(tx) {\n this.state.tx = tx;\n return this;\n }\n \n getKeyImage() {\n return this.state.keyImage;\n }\n\n setKeyImage(keyImage) {\n assert(keyImage === undefined || keyImage instanceof MoneroKeyImage);\n this.state.keyImage = keyImage;\n return this;\n }\n \n getAmount() {\n return this.state.amount;\n }\n\n setAmount(amount) {\n this.state.amount = amount;\n return this;\n }\n \n getIndex() {\n return this.state.index;\n }\n \n setIndex(index) {\n this.state.index = index;\n return this;\n }\n \n getRingOutputIndices() {\n return this.state.ringOutputIndices;\n }\n \n setRingOutputIndices(ringOutputIndices) {\n this.state.ringOutputIndices = ringOutputIndices;\n return this;\n }\n \n getStealthPublicKey() {\n return this.state.stealthPublicKey;\n }\n \n setStealthPublicKey(stealthPublicKey) {\n this.state.stealthPublicKey = stealthPublicKey;\n return this;\n }\n \n copy() {\n return new MoneroOutput(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getAmount()) json.amount = this.getAmount() ? this.getAmount().toString() : undefined;\n if (this.getKeyImage()) json.keyImage = this.getKeyImage() ? this.getKeyImage().toJson() : undefined;\n delete json.tx;\n return json;\n }\n \n merge(output) {\n assert(output instanceof MoneroOutput);\n if (this === output) return this;\n \n // merge txs if they're different which comes back to merging outputs\n if (this.getTx() !== output.getTx()) this.getTx().merge(output.getTx());\n \n // otherwise merge output fields\n else {\n if (this.getKeyImage() === undefined) this.setKeyImage(output.getKeyImage());\n else if (output.getKeyImage() !== undefined) this.getKeyImage().merge(output.getKeyImage());\n this.setAmount(GenUtils.reconcile(this.getAmount(), output.getAmount()));\n this.setIndex(GenUtils.reconcile(this.getIndex(), output.getIndex()));\n }\n\n return this;\n }\n \n toString(indent = 0) {\n let str = \"\";\n if (this.getKeyImage()) {\n str += GenUtils.kvLine(\"Key image\", \"\", indent);\n str += this.getKeyImage().toString(indent + 1) + \"\\n\";\n }\n str += GenUtils.kvLine(\"Amount\", this.getAmount(), indent);\n str += GenUtils.kvLine(\"Index\", this.getIndex(), indent);\n str += GenUtils.kvLine(\"Ring output indices\", this.getRingOutputIndices(), indent);\n str += GenUtils.kvLine(\"Stealth public key\", this.getStealthPublicKey(), indent);\n return str === \"\" ? str : str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroOutput;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Entry in a Monero output histogram (see get_output_histogram of Daemon RPC documentation).\n */\nclass MoneroOutputHistogramEntry {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n if (this.state.amount !== undefined && !(this.state.amount instanceof BigInteger)) this.state.amount = BigInteger.parse(this.state.amount);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.amount) json.amount = json.amount.toString();\n return json;\n }\n \n getAmount() {\n return this.state.amount;\n }\n \n setAmount(amount) {\n this.state.amount = amount;\n return this;\n }\n\n getNumInstances() {\n return this.state.numInstances;\n }\n\n setNumInstances(numInstances) {\n this.state.numInstances = numInstances;\n return this;\n }\n\n getNumUnlockedInstances() {\n return this.state.numUnlockedInstances;\n }\n\n setNumUnlockedInstances(numUnlockedInstances) {\n this.state.numUnlockedInstances = numUnlockedInstances;\n return this;\n }\n\n getNumRecentInstances() {\n return this.state.numRecentInstances;\n }\n\n setNumRecentInstances(numRecentInstances) {\n this.state.numRecentInstances = numRecentInstances;\n return this;\n }\n}\n\nmodule.exports = MoneroOutputHistogramEntry;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Models a peer to the daemon.\n */\nclass MoneroPeer {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n if (this.state.rpcCreditsPerHash !== undefined && !(this.state.rpcCreditsPerHash instanceof BigInteger)) this.state.rpcCreditsPerHash = BigInteger.parse(this.state.rpcCreditsPerHash);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.rpcCreditsPerHash) json.rpcCreditsPerHash = json.rpcCreditsPerHash.toString();\n return json;\n }\n \n getId() {\n return this.state.id;\n }\n\n setId(id) {\n this.state.id = id;\n return this;\n }\n\n getAddress() {\n return this.state.address;\n }\n\n setAddress(address) {\n this.state.address = address;\n return this;\n }\n\n getHost() {\n return this.state.host;\n }\n\n setHost(host) {\n this.state.host = host;\n return this;\n }\n\n getPort() {\n return this.state.port;\n }\n\n setPort(port) {\n this.state.port = port;\n return this;\n }\n \n /**\n * Indicates if the peer was online when last checked (aka \"white listed\" as\n * opposed to \"gray listed\").\n * \n * @return {boolean} true if peer was online when last checked, false otherwise\n */\n isOnline() {\n return this.state.isOnline;\n }\n \n setIsOnline(isOnline) {\n this.state.isOnline = isOnline;\n return this;\n }\n \n getLastSeenTimestamp() {\n return this.state.lastSeenTimestamp;\n }\n \n setLastSeenTimestamp(lastSeenTimestamp) {\n this.state.lastSeenTimestamp = lastSeenTimestamp;\n return this;\n }\n \n getPruningSeed() {\n return this.state.pruningSeed;\n }\n \n setPruningSeed(pruningSeed) {\n this.state.pruningSeed = pruningSeed;\n return this;\n }\n \n getRpcPort() {\n return this.state.rpcPort;\n }\n\n setRpcPort(rpcPort) {\n this.state.rpcPort = rpcPort;\n return this;\n }\n \n getRpcCreditsPerHash() {\n return this.state.rpcCreditsPerHash;\n }\n \n setRpcCreditsPerHash(rpcCreditsPerHash) {\n this.state.rpcCreditsPerHash = rpcCreditsPerHash;\n return this;\n }\n \n getId() {\n return this.state.id;\n }\n\n setId(id) {\n this.state.id = id;\n return this;\n }\n\n getAvgDownload() {\n return this.state.avgDownload;\n }\n\n setAvgDownload(avgDownload) {\n this.state.avgDownload = avgDownload;\n return this;\n }\n\n getAvgUpload() {\n return this.state.avgUpload;\n }\n\n setAvgUpload(avgUpload) {\n this.state.avgUpload = avgUpload;\n return this;\n }\n\n getCurrentDownload() {\n return this.state.currentDownload;\n }\n\n setCurrentDownload(currentDownload) {\n this.state.currentDownload = currentDownload;\n return this;\n }\n\n getCurrentUpload() {\n return this.state.currentUpload;\n }\n\n setCurrentUpload(currentUpload) {\n this.state.currentUpload = currentUpload;\n return this;\n }\n\n getHeight() {\n return this.state.height;\n }\n\n setHeight(height) {\n this.state.height = height;\n return this;\n }\n\n isIncoming() {\n return this.state.isIncoming;\n }\n\n setIsIncoming(isIncoming) {\n this.state.isIncoming = isIncoming;\n return this;\n }\n\n getLiveTime() {\n return this.state.liveTime;\n }\n\n setLiveTime(liveTime) {\n this.state.liveTime = liveTime;\n return this;\n }\n\n isLocalIp() {\n return this.state.isLocalIp;\n }\n\n setIsLocalIp(isLocalIp) {\n this.state.isLocalIp = isLocalIp;\n return this;\n }\n\n isLocalHost() {\n return this.state.isLocalHost;\n }\n\n setIsLocalHost(isLocalHost) {\n this.state.isLocalHost = isLocalHost;\n return this;\n }\n\n getNumReceives() {\n return this.state.numReceives;\n }\n\n setNumReceives(numReceives) {\n this.state.numReceives = numReceives;\n return this;\n }\n\n getNumSends() {\n return this.state.numSends;\n }\n\n setNumSends(numSends) {\n this.state.numSends = numSends;\n return this;\n }\n\n getReceiveIdleTime() {\n return this.state.receiveIdleTime;\n }\n\n setReceiveIdleTime(receiveIdleTime) {\n this.state.receiveIdleTime = receiveIdleTime;\n return this;\n }\n\n getSendIdleTime() {\n return this.state.sendIdleTime;\n }\n\n setSendIdleTime(sendIdleTime) {\n this.state.sendIdleTime = sendIdleTime;\n return this;\n }\n\n getState() {\n return this.state.state;\n }\n\n setState(state) {\n this.state.state = state;\n return this;\n }\n\n getNumSupportFlags() {\n return this.state.numSupportFlags;\n }\n\n setNumSupportFlags(numSupportFlags) {\n this.state.numSupportFlags = numSupportFlags;\n return this;\n }\n \n getType() {\n return this.state.type;\n }\n \n setType(type) {\n this.state.type = type;\n return this;\n }\n}\n\nmodule.exports = MoneroPeer;","/**\n * Result of pruning the blockchain.\n */\nclass MoneroPruneResult {\n \n constructor(state) {\n state = Object.assign({}, state);\n this.state = state;\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.isPruned()) json.isPruned = this.isPruned();\n if (this.getPruningSeed()) json.pruningSeed = this.getPruningSeed();\n return json;\n }\n \n isPruned() {\n return this.state.isPruned;\n }\n \n setIsPruned(isPruned) {\n this.state.isPruned = isPruned;\n return this;\n }\n \n getPruningSeed() {\n return this.state.pruningSeed;\n }\n \n setPruningSeed(pruningSeed) {\n this.state.pruningSeed = pruningSeed;\n return this;\n }\n}\n\nmodule.exports = MoneroPruneResult;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Models the result from submitting a tx to a daemon.\n */\nclass MoneroSubmitTxResult {\n \n constructor(state) {\n state = Object.assign({}, state);\n this.state = state;\n \n // deserialize BigIntegers\n if (state.credits !== undefined && !(state.credits instanceof BigInteger)) state.credits = BigInteger.parse(state.credits);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.credits) json.credits = json.credits.toString();\n return json;\n }\n \n isGood() {\n return this.state.isGood;\n }\n \n setIsGood(isGood) {\n this.state.isGood = isGood;\n return this;\n }\n \n isRelayed() {\n return this.state.isRelayed;\n }\n \n setIsRelayed(isRelayed) {\n this.state.isRelayed = isRelayed;\n return this;\n }\n \n isDoubleSpendSeen() {\n return this.state.isDoubleSpendSeen;\n }\n \n setIsDoubleSpend(isDoubleSpendSeen) {\n this.state.isDoubleSpendSeen = isDoubleSpendSeen\n return this;\n }\n \n isFeeTooLow() {\n return this.state.isFeeTooLow;\n }\n \n setIsFeeTooLow(isFeeTooLow) {\n this.state.isFeeTooLow = isFeeTooLow;\n return this;\n }\n \n isMixinTooLow() {\n return this.state.isMixinTooLow;\n }\n \n setIsMixinTooLow(isMixinTooLow) {\n this.state.isMixinTooLow = isMixinTooLow;\n return this;\n }\n \n hasInvalidInput() {\n return this.state.hasInvalidInput;\n }\n \n setHasInvalidInput(hasInvalidInput) {\n this.state.hasInvalidInput = hasInvalidInput;\n return this;\n }\n \n hasInvalidOutput() {\n return this.state.hasInvalidOutput;\n }\n \n setHasInvalidOutput(hasInvalidOutput) {\n this.state.hasInvalidOutput = hasInvalidOutput;\n return this;\n }\n \n hasTooFewOutputs() {\n return this.state.hasTooFewOutputs;\n }\n \n setHasTooFewOutputs(hasTooFewOutputs) {\n this.state.hasTooFewOutputs = hasTooFewOutputs;\n return this;\n }\n \n isOverspend() {\n return this.state.isOverspend;\n }\n \n setIsOverspend(isOverspend) {\n this.state.isOverspend = isOverspend;\n return this;\n }\n \n getReason() {\n return this.state.reason;\n }\n \n setReason(reason) {\n this.state.reason = reason;\n return this;\n }\n \n isTooBig() {\n return this.state.isTooBig;\n }\n \n setIsTooBig(isTooBig) {\n this.state.isTooBig = isTooBig;\n return this;\n }\n \n getSanityCheckFailed() {\n return this.state.sanityCheckFailed;\n }\n \n setSanityCheckFailed(sanityCheckFailed) {\n this.state.sanityCheckFailed = sanityCheckFailed;\n return this;\n }\n \n getCredits() {\n return this.state.credits;\n }\n \n setCredits(credits) {\n this.state.credits = credits;\n return this;\n }\n \n getTopBlockHash() {\n return this.state.topBlockHash;\n }\n \n setTopBlockHash(topBlockHash) {\n this.state.topBlockHash = topBlockHash;\n return this;\n }\n\n isTxExtraTooBig() {\n return this.state.isTxExtraTooBig;\n }\n \n setIsTxExtraTooBig(isTxExtraTooBig) {\n this.state.isTxExtraTooBig = isTxExtraTooBig;\n return this;\n }\n}\n\nmodule.exports = MoneroSubmitTxResult;","const assert = require(\"assert\");\nconst BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroOutput = require(\"./MoneroOutput\");\n\n/**\n * Represents a transaction on the Monero network.\n * \n * @class\n */\nclass MoneroTx {\n \n /**\n * Construct the model.\n * \n * @param {MoneroTx|object} state is existing state to initialize from (optional)\n */\n constructor(state) {\n \n // initialize internal state\n if (!state) state = {};\n else if (state instanceof MoneroTx) state = state.toJson();\n else if (typeof state === \"object\") state = Object.assign({}, state);\n else throw new MoneroError(\"state must be a MoneroTx or JavaScript object\");\n this.state = state;\n \n // deserialize BigIntegers\n if (state.fee !== undefined && !(state.fee instanceof BigInteger)) state.fee = BigInteger.parse(state.fee);\n if (state.unlockTime !== undefined && !(state.unlockTime instanceof BigInteger)) state.unlockTime = BigInteger.parse(state.unlockTime);\n \n // deserialize inputs\n if (state.inputs) {\n for (let i = 0; i < state.inputs.length; i++) {\n if (!(state.inputs[i] instanceof MoneroOutput)) {\n state.inputs[i] = new MoneroOutput(Object.assign(state.inputs[i], {tx: this}));\n }\n }\n }\n \n // deserialize outputs\n if (state.outputs) {\n for (let i = 0; i < state.outputs.length; i++) {\n if (!(state.outputs[i] instanceof MoneroOutput)) {\n state.outputs[i] = new MoneroOutput(Object.assign(state.outputs[i], {tx: this}));\n }\n }\n }\n }\n \n getBlock() {\n return this.state.block;\n }\n \n setBlock(block) {\n this.state.block = block;\n return this;\n }\n \n getHeight() {\n return this.getBlock() === undefined ? undefined : this.getBlock().getHeight();\n }\n \n getHash() {\n return this.state.hash;\n }\n \n setHash(hash) {\n this.state.hash = hash;\n return this;\n }\n \n getVersion() {\n return this.state.version;\n }\n \n setVersion(version) {\n this.state.version = version;\n return this;\n }\n \n isMinerTx() {\n return this.state.isMinerTx;\n }\n \n setIsMinerTx(miner) {\n this.state.isMinerTx = miner;\n return this;\n }\n \n getPaymentId() {\n return this.state.paymentId;\n }\n \n setPaymentId(paymentId) {\n this.state.paymentId = paymentId;\n return this;\n }\n \n getFee() {\n return this.state.fee;\n }\n \n setFee(fee) {\n this.state.fee = fee;\n return this;\n }\n \n getRingSize() {\n return this.state.ringSize;\n }\n \n setRingSize(ringSize) {\n this.state.ringSize = ringSize;\n return this;\n }\n \n getRelay() {\n return this.state.relay;\n }\n \n setRelay(relay) {\n this.state.relay = relay;\n return this;\n }\n \n isRelayed() {\n return this.state.isRelayed;\n }\n \n setIsRelayed(isRelayed) {\n this.state.isRelayed = isRelayed;\n return this;\n }\n \n isConfirmed() {\n return this.state.isConfirmed;\n }\n \n setIsConfirmed(isConfirmed) {\n this.state.isConfirmed = isConfirmed;\n return this;\n }\n \n inTxPool() {\n return this.state.inTxPool;\n }\n \n setInTxPool(inTxPool) {\n this.state.inTxPool = inTxPool;\n return this;\n }\n \n getNumConfirmations() {\n return this.state.numConfirmations;\n }\n \n setNumConfirmations(numConfirmations) {\n this.state.numConfirmations = numConfirmations;\n return this;\n }\n \n /**\n * Get the minimum height or timestamp for the transactions to unlock.\n * \n * @return {BigInteger} the minimum height or timestamp for the transactin to unlock\n */\n getUnlockTime() {\n return this.state.unlockTime;\n }\n \n setUnlockTime(unlockTime) {\n if (unlockTime !== undefined) {\n if (typeof unlockTime === \"number\") unlockTime = \"\" + unlockTime;\n if (!(unlockTime instanceof BigInteger)) {\n try { unlockTime = BigInteger.parse(unlockTime); }\n catch (err) { throw new MoneroError(\"Invalid unlock time: \" + unlockTime); }\n }\n }\n this.state.unlockTime = unlockTime;\n return this;\n }\n \n getLastRelayedTimestamp() {\n return this.state.lastRelayedTimestamp;\n }\n \n setLastRelayedTimestamp(lastRelayedTimestamp) {\n this.state.lastRelayedTimestamp = lastRelayedTimestamp;\n return this;\n }\n \n getReceivedTimestamp() {\n return this.state.receivedTimestamp;\n }\n \n setReceivedTimestamp(receivedTimestamp) {\n this.state.receivedTimestamp = receivedTimestamp;\n return this;\n }\n \n isDoubleSpendSeen() {\n return this.state.isDoubleSpendSeen;\n }\n \n setIsDoubleSpend(isDoubleSpendSeen) {\n this.state.isDoubleSpendSeen = isDoubleSpendSeen;\n return this;\n }\n \n getKey() {\n return this.state.key;\n }\n \n setKey(key) {\n this.state.key = key;\n return this;\n }\n \n /**\n * Get full transaction hex. Full hex = pruned hex + prunable hex.\n * \n * @return {string} is full transaction hex\n */\n getFullHex() {\n return this.state.fullHex;\n }\n \n setFullHex(fullHex) {\n this.state.fullHex = fullHex;\n return this;\n }\n \n /**\n * Get pruned transaction hex. Full hex = pruned hex + prunable hex.\n * \n * @return {string} is pruned transaction hex\n */\n getPrunedHex() {\n return this.state.prunedHex;\n }\n \n setPrunedHex(prunedHex) {\n this.state.prunedHex = prunedHex;\n return this;\n }\n \n /**\n * Get prunable transaction hex which is hex that is removed from a pruned\n * transaction. Full hex = pruned hex + prunable hex.\n * \n * @return {string} is the prunable transaction hex\n */\n getPrunableHex() {\n return this.state.prunableHex;\n }\n \n setPrunableHex(prunableHex) {\n this.state.prunableHex = prunableHex;\n return this;\n }\n \n getPrunableHash() {\n return this.state.prunableHash;\n }\n \n setPrunableHash(prunableHash) {\n this.state.prunableHash = prunableHash;\n return this;\n }\n \n getSize() {\n return this.state.size;\n }\n \n setSize(size) {\n this.state.size = size;\n return this;\n }\n \n getWeight() {\n return this.state.weight;\n }\n \n setWeight(weight) {\n this.state.weight = weight;\n return this;\n }\n \n getInputs() {\n return this.state.inputs;\n }\n \n setInputs(inputs) {\n this.state.inputs = inputs;\n return this;\n }\n \n getOutputs() {\n return this.state.outputs;\n }\n \n setOutputs(outputs) {\n this.state.outputs = outputs;\n return this;\n }\n \n getOutputIndices() {\n return this.state.outputIndices;\n }\n \n setOutputIndices(outputIndices) {\n this.state.outputIndices = outputIndices;\n return this;\n }\n \n getMetadata() {\n return this.state.metadata;\n }\n \n setMetadata(metadata) {\n this.state.metadata = metadata;\n return this;\n }\n \n getExtra() {\n return this.state.extra;\n }\n \n setExtra(extra) {\n this.state.extra = extra;\n return this;\n }\n\n getRctSignatures() {\n return this.state.rctSignatures;\n }\n \n setRctSignatures(rctSignatures) {\n this.state.rctSignatures = rctSignatures;\n return this;\n }\n \n getRctSigPrunable() {\n return this.state.rctSigPrunable;\n }\n \n setRctSigPrunable(rctSigPrunable) {\n this.state.rctSigPrunable = rctSigPrunable;\n return this;\n }\n \n isKeptByBlock() {\n return this.state.isKeptByBlock;\n }\n \n setIsKeptByBlock(isKeptByBlock) {\n this.state.isKeptByBlock = isKeptByBlock;\n return this;\n }\n \n isFailed() {\n return this.state.isFailed;\n }\n \n setIsFailed(isFailed) {\n this.state.isFailed = isFailed;\n return this;\n }\n \n getLastFailedHeight() {\n return this.state.lastFailedHeight;\n }\n \n setLastFailedHeight(lastFailedHeight) {\n this.state.lastFailedHeight = lastFailedHeight;\n return this;\n }\n \n getLastFailedHash() {\n return this.state.lastFailedHash;\n }\n \n setLastFailedHash(lastFailedHash) {\n this.state.lastFailedHash = lastFailedHash;\n return this;\n }\n \n getMaxUsedBlockHeight() {\n return this.state.maxUsedBlockHeight;\n }\n \n setMaxUsedBlockHeight(maxUsedBlockHeight) {\n this.state.maxUsedBlockHeight = maxUsedBlockHeight;\n return this;\n }\n \n getMaxUsedBlockHash() {\n return this.state.maxUsedBlockHash;\n }\n \n setMaxUsedBlockHash(maxUsedBlockHash) {\n this.state.maxUsedBlockHash = maxUsedBlockHash;\n return this;\n }\n \n getSignatures() {\n return this.state.signatures;\n }\n \n setSignatures(signatures) {\n this.state.signatures = signatures;\n return this;\n }\n \n copy() {\n return new MoneroTx(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getFee()) json.fee = this.getFee().toString();\n if (this.getUnlockTime()) json.unlockTime = this.getUnlockTime().toString();\n if (this.getInputs()) {\n json.inputs = [];\n for (let input of this.getInputs()) json.inputs.push(input.toJson());\n }\n if (this.getOutputs()) {\n json.outputs = [];\n for (let output of this.getOutputs()) json.outputs.push(output.toJson());\n }\n if (this.getExtra()) json.extra = this.getExtra().slice();\n delete json.block; // do not serialize parent block\n return json;\n }\n \n /**\n * Updates this transaction by merging the latest information from the given\n * transaction.\n * \n * @param tx is the transaction to update this transaction with\n * @return {MoneroTx} this for method chaining\n */\n merge(tx) {\n assert(tx instanceof MoneroTx);\n if (this === tx) return this;\n \n // merge blocks if they're different\n if (this.getBlock() !== tx.getBlock()) {\n if (this.getBlock() === undefined) {\n this.setBlock(tx.getBlock());\n this.getBlock().getTxs[this.getBlock().getTxs().indexOf(tx)] = this; // update block to point to this tx\n } else if (tx.getBlock() !== undefined) {\n this.getBlock().merge(tx.getBlock()); // comes back to merging txs\n return this;\n }\n }\n \n // otherwise merge tx fields\n this.setHash(GenUtils.reconcile(this.getHash(), tx.getHash()));\n this.setVersion(GenUtils.reconcile(this.getVersion(), tx.getVersion()));\n this.setPaymentId(GenUtils.reconcile(this.getPaymentId(), tx.getPaymentId()));\n this.setFee(GenUtils.reconcile(this.getFee(), tx.getFee()));\n this.setRingSize(GenUtils.reconcile(this.getRingSize(), tx.getRingSize()));\n this.setIsConfirmed(GenUtils.reconcile(this.isConfirmed(), tx.isConfirmed(), {resolveTrue: true})); // tx can become confirmed\n this.setIsMinerTx(GenUtils.reconcile(this.isMinerTx(), tx.isMinerTx()));\n this.setRelay(GenUtils.reconcile(this.getRelay(), tx.getRelay(), {resolveTrue: true})); // tx can become relayed\n this.setIsRelayed(GenUtils.reconcile(this.isRelayed(), tx.isRelayed(), {resolveTrue: true})); // tx can become relayed\n this.setIsDoubleSpend(GenUtils.reconcile(this.isDoubleSpendSeen(), tx.isDoubleSpendSeen(), {resolveTrue: true})); // double spend can become seen\n this.setKey(GenUtils.reconcile(this.getKey(), tx.getKey()));\n this.setFullHex(GenUtils.reconcile(this.getFullHex(), tx.getFullHex()));\n this.setPrunedHex(GenUtils.reconcile(this.getPrunedHex(), tx.getPrunedHex()));\n this.setPrunableHex(GenUtils.reconcile(this.getPrunableHex(), tx.getPrunableHex()));\n this.setPrunableHash(GenUtils.reconcile(this.getPrunableHash(), tx.getPrunableHash()));\n this.setSize(GenUtils.reconcile(this.getSize(), tx.getSize()));\n this.setWeight(GenUtils.reconcile(this.getWeight(), tx.getWeight()));\n this.setOutputIndices(GenUtils.reconcile(this.getOutputIndices(), tx.getOutputIndices()));\n this.setMetadata(GenUtils.reconcile(this.getMetadata(), tx.getMetadata()));\n this.setExtra(GenUtils.reconcile(this.getExtra(), tx.getExtra()));\n this.setRctSignatures(GenUtils.reconcile(this.getRctSignatures(), tx.getRctSignatures()));\n this.setRctSigPrunable(GenUtils.reconcile(this.getRctSigPrunable(), tx.getRctSigPrunable()));\n this.setIsKeptByBlock(GenUtils.reconcile(this.isKeptByBlock(), tx.isKeptByBlock()));\n this.setIsFailed(GenUtils.reconcile(this.isFailed(), tx.isFailed(), {resolveTrue: true}));\n this.setLastFailedHeight(GenUtils.reconcile(this.getLastFailedHeight(), tx.getLastFailedHeight()));\n this.setLastFailedHash(GenUtils.reconcile(this.getLastFailedHash(), tx.getLastFailedHash()));\n this.setMaxUsedBlockHeight(GenUtils.reconcile(this.getMaxUsedBlockHeight(), tx.getMaxUsedBlockHeight()));\n this.setMaxUsedBlockHash(GenUtils.reconcile(this.getMaxUsedBlockHash(), tx.getMaxUsedBlockHash()));\n this.setSignatures(GenUtils.reconcile(this.getSignatures(), tx.getSignatures()));\n this.setUnlockTime(GenUtils.reconcile(this.getUnlockTime(), tx.getUnlockTime()));\n this.setNumConfirmations(GenUtils.reconcile(this.getNumConfirmations(), tx.getNumConfirmations(), {resolveMax: true})); // num confirmations can increase\n \n // merge inputs\n if (tx.getInputs()) {\n for (let merger of tx.getInputs()) {\n let merged = false;\n merger.setTx(this);\n if (!this.getInputs()) this.setInputs([]);\n for (let mergee of this.getInputs()) {\n if (mergee.getKeyImage().getHex() === merger.getKeyImage().getHex()) {\n mergee.merge(merger);\n merged = true;\n break;\n }\n }\n if (!merged) this.getInputs().push(merger);\n }\n }\n \n // merge outputs\n if (tx.getOutputs()) {\n for (let output of tx.getOutputs()) output.setTx(this);\n if (!this.getOutputs()) this.setOutputs(tx.getOutputs());\n else {\n \n // merge outputs if key image or stealth public key present, otherwise append\n for (let merger of tx.getOutputs()) {\n let merged = false;\n merger.setTx(this);\n for (let mergee of this.getOutputs()) {\n if ((merger.getKeyImage() && mergee.getKeyImage().getHex() === merger.getKeyImage().getHex()) ||\n (merger.getStealthPublicKey() && mergee.getStealthPublicKey() === merger.getStealthPublicKey())) {\n mergee.merge(merger);\n merged = true;\n break;\n }\n }\n if (!merged) this.getOutputs().push(merger); // append output\n }\n }\n }\n \n // handle unrelayed -> relayed -> confirmed\n if (this.isConfirmed()) {\n this.setInTxPool(false);\n this.setReceivedTimestamp(undefined);\n this.setLastRelayedTimestamp(undefined);\n } else {\n this.setInTxPool(GenUtils.reconcile(this.inTxPool(), tx.inTxPool(), {resolveTrue: true})); // unrelayed -> tx pool\n this.setReceivedTimestamp(GenUtils.reconcile(this.getReceivedTimestamp(), tx.getReceivedTimestamp(), {resolveMax: false})); // take earliest receive time\n this.setLastRelayedTimestamp(GenUtils.reconcile(this.getLastRelayedTimestamp(), tx.getLastRelayedTimestamp(), {resolveMax: true})); // take latest relay time\n }\n \n return this; // for chaining\n }\n \n toString(indent = 0) {\n let str = \"\";\n str += GenUtils.getIndent(indent) + \"=== TX ===\\n\";\n str += GenUtils.kvLine(\"Tx hash\", this.getHash(), indent);\n str += GenUtils.kvLine(\"Height\", this.getHeight(), indent);\n str += GenUtils.kvLine(\"Version\", this.getVersion(), indent);\n str += GenUtils.kvLine(\"Is miner tx\", this.isMinerTx(), indent);\n str += GenUtils.kvLine(\"Payment ID\", this.getPaymentId(), indent);\n str += GenUtils.kvLine(\"Fee\", this.getFee(), indent);\n str += GenUtils.kvLine(\"Ring size\", this.getRingSize(), indent);\n str += GenUtils.kvLine(\"Relay\", this.getRelay(), indent);\n str += GenUtils.kvLine(\"Is relayed\", this.isRelayed(), indent);\n str += GenUtils.kvLine(\"Is confirmed\", this.isConfirmed(), indent);\n str += GenUtils.kvLine(\"In tx pool\", this.inTxPool(), indent);\n str += GenUtils.kvLine(\"Num confirmations\", this.getNumConfirmations(), indent);\n str += GenUtils.kvLine(\"Unlock time\", this.getUnlockTime(), indent);\n str += GenUtils.kvLine(\"Last relayed time\", this.getLastRelayedTimestamp(), indent);\n str += GenUtils.kvLine(\"Received time\", this.getReceivedTimestamp(), indent);\n str += GenUtils.kvLine(\"Is double spend\", this.isDoubleSpendSeen(), indent);\n str += GenUtils.kvLine(\"Key\", this.getKey(), indent);\n str += GenUtils.kvLine(\"Full hex\", this.getFullHex(), indent);\n str += GenUtils.kvLine(\"Pruned hex\", this.getPrunedHex(), indent);\n str += GenUtils.kvLine(\"Prunable hex\", this.getPrunableHex(), indent);\n str += GenUtils.kvLine(\"Prunable hash\", this.getPrunableHash(), indent);\n str += GenUtils.kvLine(\"Size\", this.getSize(), indent);\n str += GenUtils.kvLine(\"Weight\", this.getWeight(), indent);\n str += GenUtils.kvLine(\"Output indices\", this.getOutputIndices(), indent);\n str += GenUtils.kvLine(\"Metadata\", this.getMetadata(), indent);\n str += GenUtils.kvLine(\"Extra\", this.getExtra(), indent);\n str += GenUtils.kvLine(\"RCT signatures\", this.getRctSignatures(), indent);\n str += GenUtils.kvLine(\"RCT sig prunable\", this.getRctSigPrunable(), indent);\n str += GenUtils.kvLine(\"Kept by block\", this.isKeptByBlock(), indent);\n str += GenUtils.kvLine(\"Is failed\", this.isFailed(), indent);\n str += GenUtils.kvLine(\"Last failed height\", this.getLastFailedHeight(), indent);\n str += GenUtils.kvLine(\"Last failed hash\", this.getLastFailedHash(), indent);\n str += GenUtils.kvLine(\"Max used block height\", this.getMaxUsedBlockHeight(), indent);\n str += GenUtils.kvLine(\"Max used block hash\", this.getMaxUsedBlockHash(), indent);\n str += GenUtils.kvLine(\"Signatures\", this.getSignatures(), indent);\n if (this.getInputs()) {\n str += GenUtils.kvLine(\"Inputs\", \"\", indent);\n for (let i = 0; i < this.getInputs().length; i++) {\n str += GenUtils.kvLine(i + 1, \"\", indent + 1);\n str += this.getInputs()[i].toString(indent + 2);\n str += '\\n'\n }\n }\n if (this.getOutputs()) {\n str += GenUtils.kvLine(\"Outputs\", \"\", indent);\n for (let i = 0; i < this.getOutputs().length; i++) {\n str += GenUtils.kvLine(i + 1, \"\", indent + 1);\n str += this.getOutputs()[i].toString(indent + 2);\n str += '\\n'\n }\n }\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\n// default payment id\nMoneroTx.DEFAULT_PAYMENT_ID = \"0000000000000000\";\n\nmodule.exports = MoneroTx;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Models transaction pool statistics.\n */\nclass MoneroTxPoolStats {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n if (this.state.feeTotal !== undefined && !(this.state.feeTotal instanceof BigInteger)) this.state.feeTotal = BigInteger.parse(this.state.feeTotal);\n if (this.state.histo !== undefined && !(this.state.histo instanceof Map)) this.state.histo = new Map(JSON.parse(this.state.histo));\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.feeTotal) json.feeTotal = json.feeTotal.toString();\n if (json.histo) json.histo = JSON.stringify([...json.histo]); // convert map to array of key-value pairs then stringify\n return json;\n }\n \n getNumTxs() {\n return this.state.numTxs;\n }\n \n setNumTxs(numTxs) {\n this.state.numTxs = numTxs;\n return this;\n }\n \n getNumNotRelayed() {\n return this.state.numNotRelayed;\n }\n \n setNumNotRelayed(numNotRelayed) {\n this.state.numNotRelayed = numNotRelayed;\n return this;\n }\n \n getNumFailing() {\n return this.state.numFailing;\n }\n \n setNumFailing(numFailing) {\n this.state.numFailing = numFailing;\n return this;\n }\n \n getNumDoubleSpends() {\n return this.state.numDoubleSpends;\n }\n \n setNumDoubleSpends(numDoubleSpends) {\n this.state.numDoubleSpends = numDoubleSpends;\n return this;\n }\n \n getNum10m() {\n return this.state.num10m;\n }\n \n setNum10m(num10m) {\n this.state.num10m = num10m;\n return this;\n }\n \n getFeeTotal() {\n return this.state.feeTotal;\n }\n \n setFeeTotal(feeTotal) {\n this.state.feeTotal = feeTotal;\n return this;\n }\n \n getBytesMax() {\n return this.state.bytesMax;\n }\n \n setBytesMax(bytesMax) {\n this.state.bytesMax = bytesMax;\n return this;\n }\n \n getBytesMed() {\n return this.state.bytesMed;\n }\n \n setBytesMed(bytesMed) {\n this.state.bytesMed = bytesMed;\n return this;\n }\n \n getBytesMin() {\n return this.state.bytesMin;\n }\n \n setBytesMin(bytesMin) {\n this.state.bytesMin = bytesMin;\n return this;\n }\n \n getBytesTotal() {\n return this.state.bytesTotal;\n }\n \n setBytesTotal(bytesTotal) {\n this.state.bytesTotal = bytesTotal;\n return this;\n }\n \n // TODO: histo... what?\n getHisto() {\n return this.state.histo;\n }\n \n setHisto(histo) {\n this.state.histo = histo;\n return this;\n }\n \n getHisto98pc() {\n return this.state.histo98pc;\n }\n \n setHisto98pc(histo98pc) {\n this.state.histo98pc = histo98pc;\n return this;\n }\n \n getOldestTimestamp() {\n return this.state.oldestTimestamp;\n }\n \n setOldestTimestamp(oldestTimestamp) {\n this.state.oldestTimestamp = oldestTimestamp;\n return this;\n }\n}\n\nmodule.exports = MoneroTxPoolStats;","/**\n * Models a Monero version.\n */\nclass MoneroVersion {\n \n /**\n * Construct the model.\n * \n * @param number is the version number\n * @param isRelease indicates if this version is a release\n */\n constructor(number, isRelease) {\n this.state = {};\n this.state.number = number;\n this.state.isRelease = isRelease;\n }\n\n getNumber() {\n return this.state.number;\n }\n\n setNumber(number) {\n this.state.number = number;\n return this;\n }\n\n isRelease() {\n return this.state.isRelease;\n }\n\n setIsRelease(isRelease) {\n this.state.isRelease = isRelease;\n return this;\n }\n \n copy() {\n return new MoneroKeyImage(this);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n}\n\nmodule.exports = MoneroVersion;","const assert = require(\"assert\");\nconst MoneroBlock = require(\"../daemon/model/MoneroBlock\");\nconst BigInteger = require(\"../common/biginteger\").BigInteger;\nconst MoneroError = require(\"../common/MoneroError\");\nconst MoneroOutputQuery = require(\"./model/MoneroOutputQuery\");\nconst MoneroTransferQuery = require(\"./model/MoneroTransferQuery\");\nconst MoneroTxConfig = require(\"./model/MoneroTxConfig\");\nconst MoneroTxQuery = require(\"./model/MoneroTxQuery\");\nconst MoneroTxSet = require(\"./model/MoneroTxSet\");\n\n/**\n * Copyright (c) woodser\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/**\n * Monero wallet interface and default implementations.\n * \n * @interface\n */\nclass MoneroWallet {\n \n /**\n * Register a listener to receive wallet notifications.\n * \n * @param {MoneroWalletListener} listener - listener to receive wallet notifications\n */\n async addListener(listener) {\n throw new Error(\"Not supported\");\n }\n \n /**\n * Unregister a listener to receive wallet notifications.\n * \n * @param {MoneroWalletListener} listener - listener to unregister\n */\n async removeListener(listener) {\n throw new Error(\"Not supported\");\n }\n \n /**\n * Get the listeners registered with the wallet.\n * \n * @return {MoneroWalletListener[]} the registered listeners\n */\n getListeners() {\n throw new Error(\"Not supported\");\n }\n \n /**\n * Indicates if the wallet is view-only, meaning it does not have the private\n * spend key and can therefore only observe incoming outputs.\n * \n * @return {bool} true if the wallet is view-only, false otherwise\n */\n async isViewOnly() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Set the wallet's daemon connection.\n * \n * @param {string|MoneroRpcConnection} uriOrConnection - daemon's URI or connection (defaults to offline)\n * @param {string} username - username to authenticate with the daemon (optional)\n * @param {string} password - password to authenticate with the daemon (optional)\n */\n async setDaemonConnection(uriOrConnection, username, password) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the wallet's daemon connection.\n * \n * @return {MoneroRpcConnection} the wallet's daemon connection\n */\n async getDaemonConnection() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Indicates if the wallet is connected to daemon.\n * \n * @return {boolean} true if the wallet is connected to a daemon, false otherwise\n */\n async isConnectedToDaemon() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Gets the version of the wallet.\n * \n * @return {MoneroVersion} the version of the wallet\n */\n async getVersion() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the wallet's path.\n * \n * @return {string} the path the wallet can be opened with\n */\n async getPath() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the wallet's mnemonic phrase or seed.\n * \n * @return {string} the wallet's mnemonic phrase or seed.\n */\n async getSeed() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the language of the wallet's mnemonic phrase or seed.\n * \n * @return {string} the language of the wallet's mnemonic phrase or seed.\n */\n async getSeedLanguage() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the wallet's private view key.\n * \n * @return {string} the wallet's private view key\n */\n async getPrivateViewKey() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the wallet's private spend key.\n * \n * @return {string} the wallet's private spend key\n */\n async getPrivateSpendKey() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the wallet's public view key.\n * \n * @return {string} the wallet's public view key\n */\n async getPublicViewKey() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the wallet's public spend key.\n * \n * @return {string} the wallet's public spend key\n */\n async getPublicSpendKey() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the wallet's primary address.\n * \n * @return {string} the wallet's primary address\n */\n async getPrimaryAddress() {\n return await this.getAddress(0, 0);\n }\n \n /**\n * Get the address of a specific subaddress.\n * \n * @param {int} accountIdx - the account index of the address's subaddress\n * @param {int} subaddressIdx - the subaddress index within the account\n * @return {string} the receive address of the specified subaddress\n */\n async getAddress(accountIdx, subaddressIdx) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the account and subaddress index of the given address.\n * \n * @param {string} address - address to get the account and subaddress index from\n * @return {MoneroSubaddress} the account and subaddress indices\n */\n async getAddressIndex(address) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get an integrated address based on the given standard address and payment\n * ID. Uses the wallet's primary address if an address is not given.\n * Generates a random payment ID if a payment ID is not given.\n * \n * @param {string} standardAddress is the standard address to generate the integrated address from (wallet's primary address if undefined)\n * @param {string} paymentId is the payment ID to generate an integrated address from (randomly generated if undefined)\n * @return {MoneroIntegratedAddress} the integrated address\n */\n async getIntegratedAddress(standardAddress, paymentId) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Decode an integrated address to get its standard address and payment id.\n * \n * @param {string} integratedAddress - integrated address to decode\n * @return {MoneroIntegratedAddress} the decoded integrated address including standard address and payment id\n */\n async decodeIntegratedAddress(integratedAddress) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the block height that the wallet is synced to.\n * \n * @return {int} the block height that the wallet is synced to\n */\n async getHeight() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the blockchain's height.\n * \n * @return {int} the blockchain's height\n */\n async getDaemonHeight() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the blockchain's height by date as a conservative estimate for scanning.\n * \n * @param {int} year - year of the height to get\n * @param {int} month - month of the height to get as a number between 1 and 12\n * @param {int} day - day of the height to get as a number between 1 and 31\n * @return the blockchain's approximate height at the given date\n */\n async getHeightByDate(year, month, day) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Synchronize the wallet with the daemon as a one-time synchronous process.\n * \n * @param {MoneroWalletListener|number} listenerOrStartHeight - listener xor start height (defaults to no sync listener, the last synced block)\n * @param {number} startHeight - startHeight if not given in first arg (defaults to last synced block)\n */\n async sync(listenerOrStartHeight, startHeight) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Start background synchronizing with a maximum period between syncs.\n * \n * @param {int} syncPeriodInMs - maximum period between syncs in milliseconds (default is wallet-specific)\n */\n async startSyncing(syncPeriodInMs) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Stop synchronizing the wallet with the daemon.\n */\n async stopSyncing() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Scan transactions by their hash/id.\n * \n * @param {string[]} txHashes - tx hashes to scan\n */\n async scanTxs(txHashes) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n *

Rescan the blockchain for spent outputs.

\n * \n *

Note: this can only be called with a trusted daemon.

\n * \n *

Example use case: peer multisig hex is import when connected to an untrusted daemon,\n * so the wallet will not rescan spent outputs. Then the wallet connects to a trusted\n * daemon. This method should be manually invoked to rescan outputs.

\n */\n async rescanSpent() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n *

Rescan the blockchain from scratch, losing any information which cannot be recovered from\n * the blockchain itself.

\n * \n *

WARNING: This method discards local wallet data like destination addresses, tx secret keys,\n * tx notes, etc.

\n */\n async rescanBlockchain() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the balance of the wallet, account, or subaddress.\n * \n * @param {int} accountIdx - index of the account to get the balance of (default all accounts)\n * @param {int} subaddressIdx - index of the subaddress to get the balance of (default all subaddresses)\n * @return {BigInteger} the balance of the wallet, account, or subaddress\n */\n async getBalance(accountIdx, subaddressIdx) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the unlocked balance of the wallet, account, or subaddress.\n * \n * @param {int} accountIdx - index of the account to get the unlocked balance of (optional)\n * @param {int} subaddressIdx - index of the subaddress to get the unlocked balance of (optional)\n * @return {BigInteger} the unlocked balance of the wallet, account, or subaddress\n */\n async getUnlockedBalance(accountIdx, subaddressIdx) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the number of blocks until the next and last funds unlock.\n * \n * @return {int[]} the number of blocks until the next and last funds unlock in elements 0 and 1, respectively, or undefined if no balance\n */\n async getNumBlocksToUnlock() {\n \n // get balances\n let balance = await this.getBalance();\n if (balance.compare(new BigInteger(0)) === 0) return [undefined, undefined]; // skip if no balance\n let unlockedBalance = await this.getUnlockedBalance();\n \n // compute number of blocks until next funds available\n let txs;\n let height;\n let numBlocksToNextUnlock = undefined;\n if (unlockedBalance.compare(new BigInteger(0)) > 0) numBlocksToNextUnlock = 0;\n else {\n txs = await this.getTxs({isLocked: true}); // get locked txs\n height = await this.getHeight(); // get most recent height\n for (let tx of txs) {\n let numBlocksToUnlock = Math.max((tx.isConfirmed() ? tx.getHeight() : height) + 10, tx.getUnlockTime()) - height;\n numBlocksToNextUnlock = numBlocksToNextUnlock === undefined ? numBlocksToUnlock : Math.min(numBlocksToNextUnlock, numBlocksToUnlock);\n }\n }\n \n // compute number of blocks until all funds available\n let numBlocksToLastUnlock = undefined;\n if (balance.compare(unlockedBalance) === 0) {\n if (unlockedBalance.compare(new BigInteger(0)) > 0) numBlocksToLastUnlock = 0;\n } else {\n if (!txs) {\n txs = await this.getTxs({isLocked: true}); // get locked txs\n height = await this.getHeight(); // get most recent height\n }\n for (let tx of txs) {\n let numBlocksToUnlock = Math.max((tx.isConfirmed() ? tx.getHeight() : height) + 10, tx.getUnlockTime()) - height;\n numBlocksToLastUnlock = numBlocksToLastUnlock === undefined ? numBlocksToUnlock : Math.max(numBlocksToLastUnlock, numBlocksToUnlock);\n }\n }\n \n return [numBlocksToNextUnlock, numBlocksToLastUnlock];\n }\n \n /**\n * Get accounts with a given tag.\n * \n * @param {boolean} includeSubaddresses - include subaddresses if true\n * @param {string} tag - tag for filtering accounts, all accounts if undefined\n * @return {MoneroAccount[]} all accounts with the given tag\n */\n async getAccounts(includeSubaddresses, tag) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get an account.\n * \n * @param {int} accountIdx - index of the account to get\n * @param {boolean} includeSubaddresses - include subaddresses if true\n * @return {MoneroAccount} the retrieved account\n */\n async getAccount(accountIdx, includeSubaddresses) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Create a new account with a label for the first subaddress.\n * \n * @param {string} label - label for account's first subaddress (optional)\n * @return {MoneroAccount} the created account\n */\n async createAccount(label) {\n throw new MoneroError(\"Not supported\");\n }\n\n /**\n * Set an account label.\n * \n * @param {number} accountIdx - index of the account to set the label for\n * @param {string} label - the label to set\n */\n async setAccountLabel(accountIdx, label) {\n await this.setSubaddressLabel(accountIdx, 0, label);\n }\n \n /**\n * Get subaddresses in an account.\n * \n * @param {int} accountIdx - account to get subaddresses within\n * @param {int[]} subaddressIndices - indices of subaddresses to get (optional)\n * @return {MoneroSubaddress[]} the retrieved subaddresses\n */\n async getSubaddresses(accountIdx, subaddressIndices) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get a subaddress.\n * \n * @param {int} accountIdx - index of the subaddress's account\n * @param {int} subaddressIdx - index of the subaddress within the account\n * @return {MoneroSubaddress} the retrieved subaddress\n */\n async getSubaddress(accountIdx, subaddressIdx) {\n assert(accountIdx >= 0);\n assert(subaddressIdx >= 0);\n return (await this.getSubaddresses(accountIdx, subaddressIdx))[0];\n }\n \n /**\n * Create a subaddress within an account.\n * \n * @param {int} accountIdx - index of the account to create the subaddress within\n * @param {string} label - the label for the subaddress (optional)\n * @return {MoneroSubaddress} the created subaddress\n */\n async createSubaddress(accountIdx, label) {\n throw new MoneroError(\"Not supported\");\n }\n\n /**\n * Set a subaddress label.\n * \n * @param {number} accountIdx - index of the account to set the label for\n * @param {number} subaddressIdx - index of the subaddress to set the label for\n * @param {string} label - the label to set\n */\n async setSubaddressLabel(accountIdx, subaddressIdx, label) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get a wallet transaction by hash.\n * \n * @param {string} txHash - hash of a transaction to get\n * @return {MoneroTxWallet} the identified transaction or undefined if not found\n */\n async getTx(txHash) {\n let txs = await this.getTxs([txHash]);\n return txs.length === 0 ? undefined : txs[0]; \n }\n \n /**\n *

Get wallet transactions. Wallet transactions contain one or more\n * transfers that are either incoming or outgoing to the wallet.

\n * \n *

Results can be filtered by passing a query object. Transactions must\n * meet every criteria defined in the query in order to be returned. All\n * criteria are optional and no filtering is applied when not defined.

\n * \n * @param {(MoneroTxQuery|string[]|object)} query - configures the query (optional)\n * @param {boolean} query.isConfirmed - get txs that are confirmed or not (optional)\n * @param {boolean} query.inTxPool - get txs that are in the tx pool or not (optional)\n * @param {boolean} query.isRelayed - get txs that are relayed or not (optional)\n * @param {boolean} query.isFailed - get txs that are failed or not (optional)\n * @param {boolean} query.isMinerTx - get miner txs or not (optional)\n * @param {string} query.hash - get a tx with the hash (optional)\n * @param {string[]} query.hashes - get txs with the hashes (optional)\n * @param {string} query.paymentId - get transactions with the payment id (optional)\n * @param {string[]} query.paymentIds - get transactions with the payment ids (optional)\n * @param {boolean} query.hasPaymentId - get transactions with a payment id or not (optional)\n * @param {int} query.minHeight - get txs with height >= the given height (optional)\n * @param {int} query.maxHeight - get txs with height <= the given height (optional)\n * @param {boolean} query.isOutgoing - get txs with an outgoing transfer or not (optional)\n * @param {boolean} query.isIncoming - get txs with an incoming transfer or not (optional)\n * @param {MoneroTransferQuery} query.transferQuery - get txs that have a transfer that meets this query (optional)\n * @param {boolean} query.includeOutputs - specifies that tx outputs should be returned with tx results (optional)\n * @return {MoneroTxWallet[]} wallet transactions per the configuration\n */\n async getTxs(query) {\n throw new MoneroError(\"Not supported\");\n }\n\n /**\n *

Get incoming and outgoing transfers to and from this wallet. An outgoing\n * transfer represents a total amount sent from one or more subaddresses\n * within an account to individual destination addresses, each with their\n * own amount. An incoming transfer represents a total amount received into\n * a subaddress within an account. Transfers belong to transactions which\n * are stored on the blockchain.

\n * \n *

Results can be filtered by passing a query object. Transfers must\n * meet every criteria defined in the query in order to be returned. All\n * criteria are optional and no filtering is applied when not defined.

\n * \n * @param {(MoneroTransferQuery|object)} query - configures the query (optional)\n * @param {boolean} query.isOutgoing - get transfers that are outgoing or not (optional)\n * @param {boolean} query.isIncoming - get transfers that are incoming or not (optional)\n * @param {string} query.address - wallet's address that a transfer either originated from (if outgoing) or is destined for (if incoming) (optional)\n * @param {int} query.accountIndex - get transfers that either originated from (if outgoing) or are destined for (if incoming) a specific account index (optional)\n * @param {int} query.subaddressIndex - get transfers that either originated from (if outgoing) or are destined for (if incoming) a specific subaddress index (optional)\n * @param {int[]} query.subaddressIndices - get transfers that either originated from (if outgoing) or are destined for (if incoming) specific subaddress indices (optional)\n * @param {BigInteger} query.amount - amount being transferred (optional)\n * @param {MoneroDestination[]} query.destinations - individual destinations of an outgoing transfer, which is local wallet data and NOT recoverable from the blockchain (optional)\n * @param {boolean} query.hasDestinations - get transfers that have destinations or not (optional)\n * @param {MoneroTxQuery} query.txQuery - get transfers whose transaction meets this query (optional)\n * @return {MoneroTransfer[]} wallet transfers that meet the query\n */\n async getTransfers(query) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get incoming transfers.\n * \n * @param {(MoneroTransferQuery|object)} query - configures the query (optional)\n * @param {string} query.address - get incoming transfers to a specific address in the wallet (optional)\n * @param {int} query.accountIndex - get incoming transfers to a specific account index (optional)\n * @param {int} query.subaddressIndex - get incoming transfers to a specific subaddress index (optional)\n * @param {int[]} query.subaddressIndices - get transfers destined for specific subaddress indices (optional)\n * @param {BigInteger} query.amount - amount being transferred (optional)\n * @param {MoneroTxQuery} query.txQuery - get transfers whose transaction meets this query (optional)\n * @return {MoneroIncomingTransfer[]} incoming transfers that meet the query\n */\n async getIncomingTransfers(query) {\n query = MoneroWallet._normalizeTransferQuery(query);\n if (query.isIncoming() === false) throw new MoneroError(\"Transfer query contradicts getting incoming transfers\");\n query.setIsIncoming(true);\n return this.getTransfers(query);\n }\n \n /**\n * Get outgoing transfers.\n * \n * @param {(MoneroTransferQuery|object)} query - configures the query (optional)\n * @param {string} query.address - get outgoing transfers from a specific address in the wallet (optional)\n * @param {int} query.accountIndex - get outgoing transfers from a specific account index (optional)\n * @param {int} query.subaddressIndex - get outgoing transfers from a specific subaddress index (optional)\n * @param {int[]} query.subaddressIndices - get outgoing transfers from specific subaddress indices (optional)\n * @param {BigInteger} query.amount - amount being transferred (optional)\n * @param {MoneroDestination[]} query.destinations - individual destinations of an outgoing transfer, which is local wallet data and NOT recoverable from the blockchain (optional)\n * @param {boolean} query.hasDestinations - get transfers that have destinations or not (optional)\n * @param {MoneroTxQuery} query.txQuery - get transfers whose transaction meets this query (optional)\n * @return {MoneroOutgoingTransfer[]} outgoing transfers that meet the query\n */\n async getOutgoingTransfers(query) {\n query = MoneroWallet._normalizeTransferQuery(query);\n if (query.isOutgoing() === false) throw new MoneroError(\"Transfer query contradicts getting outgoing transfers\");\n query.setIsOutgoing(true);\n return this.getTransfers(query);\n }\n \n /**\n *

Get outputs created from previous transactions that belong to the wallet\n * (i.e. that the wallet can spend one time). Outputs are part of\n * transactions which are stored in blocks on the blockchain.

\n * \n *

Results can be filtered by passing a query object. Outputs must\n * meet every criteria defined in the query in order to be returned. All\n * filtering is optional and no filtering is applied when not defined.

\n * \n * @param {(MoneroOutputQuery|object)} query - configures the query (optional)\n * @param {int} query.accountIndex - get outputs associated with a specific account index (optional)\n * @param {int} query.subaddressIndex - get outputs associated with a specific subaddress index (optional)\n * @param {int[]} query.subaddressIndices - get outputs associated with specific subaddress indices (optional)\n * @param {BigInteger} query.amount - get outputs with a specific amount (optional)\n * @param {BigInteger} query.minAmount - get outputs greater than or equal to a minimum amount (optional)\n * @param {BigInteger} query.maxAmount - get outputs less than or equal to a maximum amount (optional)\n * @param {boolean} query.isSpent - get outputs that are spent or not (optional)\n * @param {string|MoneroKeyImage} query.keyImage - get output with a key image or which matches fields defined in a MoneroKeyImage (optional)\n * @param {MoneroTxQuery} query.txQuery - get outputs whose transaction meets this filter (optional)\n * @return {MoneroOutputWallet[]} the queried outputs\n */\n async getOutputs(query) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Export outputs in hex format.\n *\n * @param {boolean} all - export all outputs if true, else export the outputs since the last export\n * @return {string} outputs in hex format\n */\n async exportOutputs(all) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Import outputs in hex format.\n * \n * @param {string} outputsHex - outputs in hex format\n * @return {int} the number of outputs imported\n */\n async importOutputs(outputsHex) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Export signed key images.\n * \n * @param {boolean} all - export all key images if true, else export the key images since the last export\n * @return {MoneroKeyImage[]} the wallet's signed key images\n */\n async exportKeyImages(all) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Import signed key images and verify their spent status.\n * \n * @param {MoneroKeyImage[]} keyImages - images to import and verify (requires hex and signature)\n * @return {MoneroKeyImageImportResult} results of the import\n */\n async importKeyImages(keyImages) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get new key images from the last imported outputs.\n * \n * @return {MoneroKeyImage[]} the key images from the last imported outputs\n */\n async getNewKeyImagesFromLastImport() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Freeze an output.\n * \n * @param {string} keyImage - key image of the output to freeze\n */\n async freezeOutput(keyImage) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Thaw a frozen output.\n * \n * @param {string} keyImage - key image of the output to thaw\n */\n async thawOutput(keyImage) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Check if an output is frozen.\n * \n * @param {string} keyImage - key image of the output to check if frozen\n * @return {boolean} true if the output is frozen, false otherwise\n */\n async isOutputFrozen(keyImage) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Create a transaction to transfer funds from this wallet.\n * \n * @param {MoneroTxConfig|object} config - configures the transaction to create (required)\n * @param {string} config.address - single destination address (required unless `destinations` provided)\n * @param {BigInteger|string} config.amount - single destination amount (required unless `destinations` provided)\n * @param {int} config.accountIndex - source account index to transfer funds from (required)\n * @param {int} config.subaddressIndex - source subaddress index to transfer funds from (optional)\n * @param {int[]} config.subaddressIndices - source subaddress indices to transfer funds from (optional)\n * @param {boolean} config.relay - relay the transaction to peers to commit to the blockchain (default false)\n * @param {MoneroTxPriority} config.priority - transaction priority (default MoneroTxPriority.NORMAL)\n * @param {MoneroDestination[]} config.destinations - addresses and amounts in a multi-destination tx (required unless `address` and `amount` provided)\n * @param {int[]} config.subtractFeeFrom - list of destination indices to split the transaction fee (optional)\n * @param {string} config.paymentId - transaction payment ID (optional)\n * @param {BigInteger|string} config.unlockTime - minimum height or timestamp for the transaction to unlock (default 0)\n * @return {MoneroTxWallet} the created transaction\n */\n async createTx(config) {\n config = MoneroWallet._normalizeCreateTxsConfig(config);\n if (config.getCanSplit() !== undefined) assert.equal(config.getCanSplit(), false, \"Cannot split transactions using createTx(); use createTxs()\");\n config.setCanSplit(false);\n return (await this.createTxs(config))[0];\n }\n \n /**\n * Create one or more transactions to transfer funds from this wallet.\n * \n * @param {MoneroTxConfig|object} config - configures the transactions to create (required)\n * @param {string} config.address - single destination address (required unless `destinations` provided)\n * @param {BigInteger|string} config.amount - single destination amount (required unless `destinations` provided)\n * @param {int} config.accountIndex - source account index to transfer funds from (required)\n * @param {int} config.subaddressIndex - source subaddress index to transfer funds from (optional)\n * @param {int[]} config.subaddressIndices - source subaddress indices to transfer funds from (optional)\n * @param {boolean} config.relay - relay the transactions to peers to commit to the blockchain (default false)\n * @param {MoneroTxPriority} config.priority - transaction priority (default MoneroTxPriority.NORMAL)\n * @param {MoneroDestination[]} config.destinations - addresses and amounts in a multi-destination tx (required unless `address` and `amount` provided)\n * @param {string} config.paymentId - transaction payment ID (optional)\n * @param {BigInteger|string} config.unlockTime - minimum height or timestamp for the transactions to unlock (default 0)\n * @param {boolean} config.canSplit - allow funds to be transferred using multiple transactions (default true)\n * @return {MoneroTxWallet[]} the created transactions\n */\n async createTxs(config) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Sweep an output by key image.\n * \n * @param {MoneroTxConfig} config - configures the transaction to create (required)\n * @param {string} config.address - single destination address (required)\n * @param {string} config.keyImage - key image to sweep (required)\n * @param {boolean} config.relay - relay the transaction to peers to commit to the blockchain (default false)\n * @param {BigInteger|string} config.unlockTime - minimum height or timestamp for the transaction to unlock (default 0)\n * @param {MoneroTxPriority} config.priority - transaction priority (default MoneroTxPriority.NORMAL)\n * @return {MoneroTxWallet} the created transaction\n */\n async sweepOutput(config) {\n throw new MoneroError(\"Not supported\");\n }\n\n /**\n * Sweep all unlocked funds according to the given configuration.\n * \n * @param {MoneroTxConfig|object} config - configures the transactions to create (required)\n * @param {string} config.address - single destination address (required)\n * @param {int} config.accountIndex - source account index to sweep from (optional, defaults to all accounts)\n * @param {int} config.subaddressIndex - source subaddress index to sweep from (optional, defaults to all subaddresses)\n * @param {int[]} config.subaddressIndices - source subaddress indices to sweep from (optional)\n * @param {boolean} config.relay - relay the transactions to peers to commit to the blockchain (default false)\n * @param {MoneroTxPriority} config.priority - transaction priority (default MoneroTxPriority.NORMAL)\n * @param {BigInteger|string} config.unlockTime - minimum height or timestamp for the transactions to unlock (default 0)\n * @param {boolean} config.sweepEachSubaddress - sweep each subaddress individually if true (default false)\n * @return {MoneroTxWallet[]} the created transactions\n */\n async sweepUnlocked(config) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n *

Sweep all unmixable dust outputs back to the wallet to make them easier to spend and mix.

\n * \n *

NOTE: Dust only exists pre RCT, so this method will throw \"no dust to sweep\" on new wallets.

\n * \n * @param {boolean} relay - specifies if the resulting transaction should be relayed (default false)\n * @return {MoneroTxWallet[]} the created transactions\n */\n async sweepDust(relay) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Relay a previously created transaction.\n * \n * @param {(MoneroTxWallet|string)} txOrMetadata - transaction or its metadata to relay\n * @return {string} the hash of the relayed tx\n */\n async relayTx(txOrMetadata) {\n return (await this.relayTxs([txOrMetadata]))[0];\n }\n \n /**\n * Relay previously created transactions.\n * \n * @param {(MoneroTxWallet[]|string[])} txsOrMetadatas - transactions or their metadata to relay\n * @return {string[]} the hashes of the relayed txs\n */\n async relayTxs(txsOrMetadatas) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Describe a tx set from unsigned tx hex.\n * \n * @param {string} unsignedTxHex - unsigned tx hex\n * @return {MoneroTxSet} the tx set containing structured transactions\n */\n async describeUnsignedTxSet(unsignedTxHex) {\n return this.describeTxSet(new MoneroTxSet().setUnsignedTxHex(unsignedTxHex));\n }\n \n /**\n * Describe a tx set from multisig tx hex.\n * \n * @param {string} multisigTxHex - multisig tx hex\n * @return {MoneroTxSet} the tx set containing structured transactions\n */\n async describeMultisigTxSet(multisigTxHex) {\n return this.describeTxSet(new MoneroTxSet().setMultisigTxHex(multisigTxHex));\n }\n \n /**\n * Describe a tx set containing unsigned or multisig tx hex to a new tx set containing structured transactions.\n * \n * @param {MoneroTxSet} txSet - a tx set containing unsigned or multisig tx hex\n * @return {MoneroTxSet} the tx set containing structured transactions\n */\n async describeTxSet(txSet) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Sign unsigned transactions from a view-only wallet.\n * \n * @param {string} unsignedTxHex - unsigned transaction hex from when the transactions were created\n * @return {string} the signed transaction hex\n */\n async signTxs(unsignedTxHex) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Submit signed transactions from a view-only wallet.\n * \n * @param {string} signedTxHex - signed transaction hex from signTxs()\n * @return {string[]} the resulting transaction hashes\n */\n async submitTxs(signedTxHex) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Sign a message.\n * \n * @param {string} message - the message to sign\n * @param {MoneroMessageSignatureType} signatureType - sign with spend key or view key (default spend key)\n * @param {int} accountIdx - the account index of the message signature (default 0)\n * @param {int} subaddressIdx - the subaddress index of the message signature (default 0)\n * @return {string} the signature\n */\n async signMessage(message, signatureType, accountIdx, subaddressIdx) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Verify a signature on a message.\n * \n * @param {string} message - signed message\n * @param {string} address - signing address\n * @param {string} signature - signature\n * @return {MoneroMessageSignatureResult} true if the signature is good, false otherwise\n */\n async verifyMessage(message, address, signature) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get a transaction's secret key from its hash.\n * \n * @param {string} txHash - transaction's hash\n * @return {string} - transaction's secret key\n */\n async getTxKey(txHash) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Check a transaction in the blockchain with its secret key.\n * \n * @param {string} txHash - transaction to check\n * @param {string} txKey - transaction's secret key\n * @param {string} address - destination public address of the transaction\n * @return {MoneroCheckTx} the result of the check\n */\n async checkTxKey(txHash, txKey, address) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get a transaction signature to prove it.\n * \n * @param {string} txHash - transaction to prove\n * @param {string} address - destination public address of the transaction\n * @param {string} message - message to include with the signature to further authenticate the proof (optional)\n * @return {string} the transaction signature\n */\n async getTxProof(txHash, address, message) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Prove a transaction by checking its signature.\n * \n * @param {string} txHash - transaction to prove\n * @param {string} address - destination public address of the transaction\n * @param {string} message - message included with the signature to further authenticate the proof (optional)\n * @param {string} signature - transaction signature to confirm\n * @return {MoneroCheckTx} the result of the check\n */\n async checkTxProof(txHash, address, message, signature) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Generate a signature to prove a spend. Unlike proving a transaction, it does not require the destination public address.\n * \n * @param {string} txHash - transaction to prove\n * @param {string} message - message to include with the signature to further authenticate the proof (optional)\n * @return {string} the transaction signature\n */\n async getSpendProof(txHash, message) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Prove a spend using a signature. Unlike proving a transaction, it does not require the destination public address.\n * \n * @param {string} txHash - transaction to prove\n * @param {string} message - message included with the signature to further authenticate the proof (optional)\n * @param {string} signature - transaction signature to confirm\n * @return {boolean} true if the signature is good, false otherwise\n */\n async checkSpendProof(txHash, message, signature) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Generate a signature to prove the entire balance of the wallet.\n * \n * @param message - message included with the signature to further authenticate the proof (optional)\n * @return the reserve proof signature\n */\n async getReserveProofWallet(message) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Generate a signature to prove an available amount in an account.\n * \n * @param {int} accountIdx - account to prove ownership of the amount\n * @param {BigInteger} amount - minimum amount to prove as available in the account\n * @param {string} message - message to include with the signature to further authenticate the proof (optional)\n * @return {string} the reserve proof signature\n */\n async getReserveProofAccount(accountIdx, amount, message) {\n throw new MoneroError(\"Not supported\");\n }\n\n /**\n * Proves a wallet has a disposable reserve using a signature.\n * \n * @param {string} address - public wallet address\n * @param {string} message - message included with the signature to further authenticate the proof (optional)\n * @param {string} signature - reserve proof signature to check\n * @return {MoneroCheckReserve} the result of checking the signature proof\n */\n async checkReserveProof(address, message, signature) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get a transaction note.\n * \n * @param {string} txHash - transaction to get the note of\n * @return {string} the tx note\n */\n async getTxNote(txHash) {\n return (await this.getTxNotes([txHash]))[0];\n }\n \n /**\n * Get notes for multiple transactions.\n * \n * @param {string[]} txHashes - hashes of the transactions to get notes for\n * @return {string[]} notes for the transactions\n */\n async getTxNotes(txHashes) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Set a note for a specific transaction.\n * \n * @param {string} txHash - hash of the transaction to set a note for\n * @param {string} note - the transaction note\n */\n async setTxNote(txHash, note) {\n await this.setTxNotes([txHash], [note]);\n }\n \n /**\n * Set notes for multiple transactions.\n * \n * @param {string[]} txHashes - transactions to set notes for\n * @param {string[]} notes - notes to set for the transactions\n */\n async setTxNotes(txHashes, notes) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get address book entries.\n * \n * @param {int[]} entryIndices - indices of the entries to get\n * @return {MoneroAddressBookEntry[]} the address book entries\n */\n async getAddressBookEntries(entryIndices) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Add an address book entry.\n * \n * @param {string} address - entry address\n * @param {string} description - entry description (optional)\n * @return {int} the index of the added entry\n */\n async addAddressBookEntry(address, description) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Edit an address book entry.\n * \n * @param {number} index - index of the address book entry to edit\n * @param {boolean} setAddress - specifies if the address should be updated\n * @param {string} address - updated address\n * @param {boolean} setDescription - specifies if the description should be updated\n * @param {string} description - updated description\n */\n async editAddressBookEntry(index, setAddress, address, setDescription, description) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Delete an address book entry.\n * \n * @param {int} entryIdx - index of the entry to delete\n */\n async deleteAddressBookEntry(entryIdx) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Tag accounts.\n * \n * @param {string} tag - tag to apply to the specified accounts\n * @param {int[]} accountIndices - indices of the accounts to tag\n */\n async tagAccounts(tag, accountIndices) {\n throw new MoneroError(\"Not supported\");\n }\n\n /**\n * Untag accounts.\n * \n * @param {int[]} accountIndices - indices of the accounts to untag\n */\n async untagAccounts(accountIndices) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Return all account tags.\n * \n * @return {MoneroAccountTag[]} the wallet's account tags\n */\n async getAccountTags() {\n throw new MoneroError(\"Not supported\");\n }\n\n /**\n * Sets a human-readable description for a tag.\n * \n * @param {string} tag - tag to set a description for\n * @param {string} label - label to set for the tag\n */\n async setAccountTagLabel(tag, label) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Creates a payment URI from a send configuration.\n * \n * @param {MoneroTxConfig} config - specifies configuration for a potential tx\n * @return {string} the payment uri\n */\n async getPaymentUri(config) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Parses a payment URI to a tx config.\n * \n * @param {string} uri - payment uri to parse\n * @return {MoneroTxConfig} the send configuration parsed from the uri\n */\n async parsePaymentUri(uri) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get an attribute.\n * \n * @param {string} key - attribute to get the value of\n * @return {string} the attribute's value\n */\n async getAttribute(key) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Set an arbitrary attribute.\n * \n * @param {string} key - attribute key\n * @param {string} val - attribute value\n */\n async setAttribute(key, val) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Start mining.\n * \n * @param {int} numThreads - number of threads created for mining (optional)\n * @param {boolean} backgroundMining - specifies if mining should occur in the background (optional)\n * @param {boolean} ignoreBattery - specifies if the battery should be ignored for mining (optional)\n */\n async startMining(numThreads, backgroundMining, ignoreBattery) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Stop mining.\n */\n async stopMining() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Indicates if importing multisig data is needed for returning a correct balance.\n * \n * @return {boolean} true if importing multisig data is needed for returning a correct balance, false otherwise\n */\n async isMultisigImportNeeded() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Indicates if this wallet is a multisig wallet.\n * \n * @return {boolean} true if this is a multisig wallet, false otherwise\n */\n async isMultisig() {\n return (await this.getMultisigInfo()).isMultisig();\n }\n \n /**\n * Get multisig info about this wallet.\n * \n * @return {MoneroMultisigInfo} multisig info about this wallet\n */\n async getMultisigInfo() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get multisig info as hex to share with participants to begin creating a\n * multisig wallet.\n * \n * @return {string} this wallet's multisig hex to share with participants\n */\n async prepareMultisig() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Make this wallet multisig by importing multisig hex from participants.\n * \n * @param {String[]} multisigHexes - multisig hex from each participant\n * @param {int} threshold - number of signatures needed to sign transfers\n * @param {string} password - wallet password\n * @return {string} this wallet's multisig hex to share with participants\n */\n async makeMultisig(multisigHexes, threshold, password) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Exchange multisig hex with participants in a M/N multisig wallet.\n * \n * This process must be repeated with participants exactly N-M times.\n * \n * @param {string[]} multisigHexes are multisig hex from each participant\n * @param {string} password - wallet's password // TODO monero-project: redundant? wallet is created with password\n * @return {MoneroMultisigInitResult} the result which has the multisig's address xor this wallet's multisig hex to share with participants iff not done\n */\n async exchangeMultisigKeys(multisigHexes, password) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Export this wallet's multisig info as hex for other participants.\n * \n * @return {string} this wallet's multisig info as hex for other participants\n */\n async exportMultisigHex() {\n throw new MoneroError(\"Not supported?\");\n }\n \n /**\n * Import multisig info as hex from other participants.\n * \n * @param {string[]} multisigHexes - multisig hex from each participant\n * @return {int} the number of outputs signed with the given multisig hex\n */\n async importMultisigHex(multisigHexes) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Sign multisig transactions from a multisig wallet.\n * \n * @param {string} multisigTxHex - unsigned multisig transactions as hex\n * @return {MoneroMultisigSignResult} the result of signing the multisig transactions\n */\n async signMultisigTxHex(multisigTxHex) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Submit signed multisig transactions from a multisig wallet.\n * \n * @param {string} signedMultisigTxHex - signed multisig hex returned from signMultisigTxHex()\n * @return {string[]} the resulting transaction hashes\n */\n async submitMultisigTxHex(signedMultisigTxHex) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Change the wallet password.\n * \n * @param {string} oldPassword - the wallet's old password\n * @param {string} newPassword - the wallet's new password\n */\n async changePassword(oldPassword, newPassword) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Save the wallet at its current path.\n */\n save() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Optionally save then close the wallet.\n *\n * @param {boolean} save - specifies if the wallet should be saved before being closed (default false)\n */\n async close(save) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Indicates if this wallet is closed or not.\n * \n * @return {boolean} true if the wallet is closed, false otherwise\n */\n async isClosed() {\n throw new MoneroError(\"Not supported\");\n }\n \n // -------------------------------- PRIVATE ---------------------------------\n \n static _normalizeTxQuery(query) {\n if (query instanceof MoneroTxQuery) query = query.copy();\n else if (Array.isArray(query)) query = new MoneroTxQuery().setHashes(query);\n else {\n query = Object.assign({}, query);\n query = new MoneroTxQuery(query);\n }\n if (query.getBlock() === undefined) query.setBlock(new MoneroBlock().setTxs([query]));\n if (query.getInputQuery()) query.getInputQuery().setTxQuery(query);\n if (query.getOutputQuery()) query.getOutputQuery().setTxQuery(query);\n return query;\n }\n \n static _normalizeTransferQuery(query) {\n if (query === undefined) query = new MoneroTransferQuery();\n else if (query instanceof MoneroTransferQuery) {\n if (query.getTxQuery() === undefined) query = query.copy();\n else {\n let txQuery = query.getTxQuery().copy();\n if (query.getTxQuery().getTransferQuery() === query) query = txQuery.getTransferQuery();\n else {\n assert.equal(query.getTxQuery().getTransferQuery(), undefined, \"Transfer query's tx query must be circular reference or null\");\n query = query.copy();\n query.setTxQuery(txQuery);\n }\n }\n } else {\n query = Object.assign({}, query);\n query = new MoneroTransferQuery(query);\n }\n if (query.getTxQuery() === undefined) query.setTxQuery(new MoneroTxQuery());\n query.getTxQuery().setTransferQuery(query);\n if (query.getTxQuery().getBlock() === undefined) query.getTxQuery().setBlock(new MoneroBlock().setTxs([query.getTxQuery()]));\n return query;\n }\n \n static _normalizeOutputQuery(query) {\n if (query === undefined) query = new MoneroOutputQuery();\n else if (query instanceof MoneroOutputQuery) {\n if (query.getTxQuery() === undefined) query = query.copy();\n else {\n let txQuery = query.getTxQuery().copy();\n if (query.getTxQuery().getOutputQuery() === query) query = txQuery.getOutputQuery();\n else {\n assert.equal(query.getTxQuery().getOutputQuery(), undefined, \"Output query's tx query must be circular reference or null\");\n query = query.copy();\n query.setTxQuery(txQuery);\n }\n }\n } else {\n query = Object.assign({}, query);\n query = new MoneroOutputQuery(query);\n }\n if (query.getTxQuery() === undefined) query.setTxQuery(new MoneroTxQuery());\n query.getTxQuery().setOutputQuery(query);\n if (query.getTxQuery().getBlock() === undefined) query.getTxQuery().setBlock(new MoneroBlock().setTxs([query.getTxQuery()]));\n return query;\n }\n \n static _normalizeCreateTxsConfig(config) {\n if (config === undefined || !(config instanceof Object)) throw new MoneroError(\"Must provide MoneroTxConfig or equivalent JS object\");\n config = new MoneroTxConfig(config);\n assert(config.getDestinations() && config.getDestinations().length > 0, \"Must provide destinations\");\n assert.equal(config.getSweepEachSubaddress(), undefined);\n assert.equal(config.getBelowAmount(), undefined);\n return config;\n }\n \n static _normalizeSweepOutputConfig(config) {\n if (config === undefined || !(config instanceof Object)) throw new MoneroError(\"Must provide MoneroTxConfig or equivalent JS object\");\n config = new MoneroTxConfig(config);\n assert.equal(config.getSweepEachSubaddress(), undefined);\n assert.equal(config.getBelowAmount(), undefined);\n assert.equal(config.getCanSplit(), undefined, \"Cannot split transactions when sweeping an output\");\n if (!config.getDestinations() || config.getDestinations().length !== 1 || !config.getDestinations()[0].getAddress()) throw new MoneroError(\"Must provide exactly one destination address to sweep output to\");\n if (config.getSubtractFeeFrom() && config.getSubtractFeeFrom().length > 0) throw new MoneroError(\"Sweep transfers do not support subtracting fees from destinations\");\n return config; \n }\n \n static _normalizeSweepUnlockedConfig(config) {\n if (config === undefined || !(config instanceof Object)) throw new MoneroError(\"Must provide MoneroTxConfig or equivalent JS object\");\n config = new MoneroTxConfig(config);\n if (config.getDestinations() === undefined || config.getDestinations().length != 1) throw new MoneroError(\"Must provide exactly one destination to sweep to\");\n if (config.getDestinations()[0].getAddress() === undefined) throw new MoneroError(\"Must provide destination address to sweep to\");\n if (config.getDestinations()[0].getAmount() !== undefined) throw new MoneroError(\"Cannot provide amount in sweep config\");\n if (config.getKeyImage() !== undefined) throw new MoneroError(\"Key image defined; use sweepOutput() to sweep an output by its key image\");\n if (config.getSubaddressIndices() !== undefined && config.getSubaddressIndices().length === 0) config.setSubaddressIndices(undefined);\n if (config.getAccountIndex() === undefined && config.getSubaddressIndices() !== undefined) throw new MoneroError(\"Must provide account index if subaddress indices are provided\");\n return config;\n }\n}\n\nMoneroWallet.DEFAULT_LANGUAGE = \"English\";\n\nmodule.exports = MoneroWallet;","const assert = require(\"assert\");\nconst BigInteger = require(\"../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../common/GenUtils\");\nconst LibraryUtils = require(\"../common/LibraryUtils\");\nconst TaskLooper = require(\"../common/TaskLooper\");\nconst MoneroAccount = require(\"./model/MoneroAccount\");\nconst MoneroAddressBookEntry = require(\"./model/MoneroAddressBookEntry\");\nconst MoneroBlock = require(\"../daemon/model/MoneroBlock\");\nconst MoneroCheckTx = require(\"./model/MoneroCheckTx\");\nconst MoneroCheckReserve = require(\"./model/MoneroCheckReserve\");\nconst MoneroDaemonRpc = require(\"../daemon/MoneroDaemonRpc\");\nconst MoneroError = require(\"../common/MoneroError\");\nconst MoneroIntegratedAddress = require(\"./model/MoneroIntegratedAddress\");\nconst MoneroKeyImage = require(\"../daemon/model/MoneroKeyImage\");\nconst MoneroKeyImageImportResult = require(\"./model/MoneroKeyImageImportResult\");\nconst MoneroMultisigInfo = require(\"./model/MoneroMultisigInfo\");\nconst MoneroMultisigInitResult = require(\"./model/MoneroMultisigInitResult\");\nconst MoneroMultisigSignResult = require(\"./model/MoneroMultisigSignResult\");\nconst MoneroNetworkType = require(\"../daemon/model/MoneroNetworkType\");\nconst MoneroOutputWallet = require(\"./model/MoneroOutputWallet\");\nconst MoneroRpcConnection = require(\"../common/MoneroRpcConnection\");\nconst MoneroSubaddress = require(\"./model/MoneroSubaddress\");\nconst MoneroSyncResult = require(\"./model/MoneroSyncResult\");\nconst MoneroTxConfig = require(\"./model/MoneroTxConfig\");\nconst MoneroTxSet = require(\"./model/MoneroTxSet\");\nconst MoneroTxWallet = require(\"./model/MoneroTxWallet\");\nconst MoneroWallet = require(\"./MoneroWallet\");\nconst MoneroWalletConfig = require(\"./model/MoneroWalletConfig\");\nconst MoneroWalletKeys = require(\"./MoneroWalletKeys\");\nconst MoneroWalletListener = require(\"./model/MoneroWalletListener\");\nconst MoneroMessageSignatureType = require(\"./model/MoneroMessageSignatureType\");\nconst MoneroMessageSignatureResult = require(\"./model/MoneroMessageSignatureResult\");\n\n/**\n * Implements a Monero wallet using fully client-side WebAssembly bindings to monero-project's wallet2 in C++.\n * \n * @extends {MoneroWalletKeys}\n * @implements {MoneroWallet}\n * @hideconstructor\n */\nclass MoneroWalletFull extends MoneroWalletKeys {\n \n // --------------------------- STATIC UTILITIES -----------------------------\n \n /**\n * Check if a wallet exists at a given path.\n * \n * @param {string} path - path of the wallet on the file system\n * @param {fs} - Node.js compatible file system to use (optional, defaults to disk if nodejs)\n * @return {boolean} true if a wallet exists at the given path, false otherwise\n */\n static walletExists(path, fs) {\n assert(path, \"Must provide a path to look for a wallet\");\n if (!fs) fs = MoneroWalletFull._getFs();\n if (!fs) throw new MoneroError(\"Must provide file system to check if wallet exists\");\n let exists = fs.existsSync(path + \".keys\");\n LibraryUtils.log(1, \"Wallet exists at \" + path + \": \" + exists);\n return exists;\n }\n \n /**\n *

Open an existing wallet using WebAssembly bindings to wallet2.h.

\n * \n *

Examples:

\n * \n * \n * let wallet1 = await MoneroWalletFull.openWallet(
\n *    \"./wallets/wallet1\",
\n *    \"supersecretpassword\",
\n *    MoneroNetworkType.STAGENET,
\n *    \"http://localhost:38081\" // daemon uri
\n * );

\n * \n * let wallet2 = await MoneroWalletFull.openWallet({
\n *    path: \"./wallets/wallet2\",
\n *    password: \"supersecretpassword\",
\n *    networkType: MoneroNetworkType.STAGENET,
\n *    serverUri: \"http://localhost:38081\", // daemon configuration
\n *    serverUsername: \"superuser\",
\n *    serverPassword: \"abctesting123\"
\n * });\n *
\n * \n * @param {MoneroWalletConfig|object|string} configOrPath - MoneroWalletConfig or equivalent config object or a path to a wallet to open\n * @param {string} configOrPath.path - path of the wallet to open (optional if 'keysData' provided)\n * @param {string} configOrPath.password - password of the wallet to open\n * @param {string|number} configOrPath.networkType - network type of the wallet to open (one of \"mainnet\", \"testnet\", \"stagenet\" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)\n * @param {Uint8Array} configOrPath.keysData - wallet keys data to open (optional if path provided)\n * @param {Uint8Array} configOrPath.cacheData - wallet cache data to open (optional)\n * @param {string} configOrPath.serverUri - uri of the wallet's daemon (optional)\n * @param {string} configOrPath.serverUsername - username to authenticate with the daemon (optional)\n * @param {string} configOrPath.serverPassword - password to authenticate with the daemon (optional)\n * @param {boolean} configOrPath.rejectUnauthorized - reject self-signed server certificates if true (default true)\n * @param {MoneroRpcConnection|object} configOrPath.server - MoneroRpcConnection or equivalent JS object configuring the daemon connection (optional)\n * @param {boolean} configOrPath.proxyToWorker - proxies wallet operations to a worker in order to not block the main thread (default true)\n * @param {fs} configOrPath.fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)\n * @param {string} password - password of the wallet to open\n * @param {string|number} networkType - network type of the wallet to open\n * @param {string|MoneroRpcConnection} daemonUriOrConnection - daemon URI or MoneroRpcConnection\n * @param {boolean} proxyToWorker - proxies wallet operations to a worker in order to not block the main thread (default true)\n * @param {fs} fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)\n * @return {MoneroWalletFull} the opened wallet\n */\n static async openWallet(configOrPath, password, networkType, daemonUriOrConnection, proxyToWorker, fs) {\n\n // normalize and validate config\n let config;\n if (typeof configOrPath === \"object\") {\n config = configOrPath instanceof MoneroWalletConfig ? configOrPath : new MoneroWalletConfig(configOrPath);\n if (password !== undefined || networkType !== undefined || daemonUriOrConnection !== undefined || proxyToWorker !== undefined || fs !== undefined) throw new MoneroError(\"Can specify config object or params but not both when opening WASM wallet\")\n } else {\n config = new MoneroWalletConfig().setPath(configOrPath).setPassword(password).setNetworkType(networkType).setProxyToWorker(proxyToWorker).setFs(fs);\n if (typeof daemonUriOrConnection === \"object\") config.setServer(daemonUriOrConnection);\n else config.setServerUri(daemonUriOrConnection);\n }\n if (config.getProxyToWorker() === undefined) config.setProxyToWorker(true);\n if (config.getSeed() !== undefined) throw new MoneroError(\"Cannot specify seed when opening wallet\");\n if (config.getSeedOffset() !== undefined) throw new MoneroError(\"Cannot specify seed offset when opening wallet\");\n if (config.getPrimaryAddress() !== undefined) throw new MoneroError(\"Cannot specify primary address when opening wallet\");\n if (config.getPrivateViewKey() !== undefined) throw new MoneroError(\"Cannot specify private view key when opening wallet\");\n if (config.getPrivateSpendKey() !== undefined) throw new MoneroError(\"Cannot specify private spend key when opening wallet\");\n if (config.getRestoreHeight() !== undefined) throw new MoneroError(\"Cannot specify restore height when opening wallet\");\n if (config.getLanguage() !== undefined) throw new MoneroError(\"Cannot specify language when opening wallet\");\n if (config.getSaveCurrent() === true) throw new MoneroError(\"Cannot save current wallet when opening JNI wallet\");\n \n // read wallet data from disk if not provided\n if (!config.getKeysData()) {\n let fs = config.getFs() ? config.getFs() : MoneroWalletFull._getFs();\n if (!fs) throw new MoneroError(\"Must provide file system to read wallet data from\");\n if (!this.walletExists(config.getPath(), fs)) throw new MoneroError(\"Wallet does not exist at path: \" + config.getPath());\n config.setKeysData(fs.readFileSync(config.getPath() + \".keys\"));\n config.setCacheData(fs.existsSync(config.getPath()) ? fs.readFileSync(config.getPath()) : \"\");\n }\n \n // open wallet from data\n return MoneroWalletFull._openWalletData(config.getPath(), config.getPassword(), config.getNetworkType(), config.getKeysData(), config.getCacheData(), config.getServer(), config.getProxyToWorker(), config.getFs());\n }\n \n /**\n *

Create a wallet using WebAssembly bindings to wallet2.h.

\n * \n *

Example:

\n * \n * \n * let wallet = await MoneroWalletFull.createWallet({
\n *    path: \"./test_wallets/wallet1\", // leave blank for in-memory wallet
\n *    password: \"supersecretpassword\",
\n *    networkType: MoneroNetworkType.STAGENET,
\n *    seed: \"coexist igloo pamphlet lagoon...\",
\n *    restoreHeight: 1543218,
\n *    server: new MoneroRpcConnection(\"http://localhost:38081\", \"daemon_user\", \"daemon_password_123\"),
\n * });\n *
\n * \n * @param {object|MoneroWalletConfig} config - MoneroWalletConfig or equivalent config object\n * @param {string} config.path - path of the wallet to create (optional, in-memory wallet if not given)\n * @param {string} config.password - password of the wallet to create\n * @param {string|number} config.networkType - network type of the wallet to create (one of \"mainnet\", \"testnet\", \"stagenet\" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)\n * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)\n * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase\n * @param {boolean} config.isMultisig - restore multisig wallet from seed\n * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)\n * @param {string} config.privateViewKey - private view key of the wallet to create (optional)\n * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)\n * @param {number} config.restoreHeight - block height to start scanning from (defaults to 0 unless generating random wallet)\n * @param {string} config.language - language of the wallet's seed phrase (defaults to \"English\" or auto-detected)\n * @param {number} config.accountLookahead - number of accounts to scan (optional)\n * @param {number} config.subaddressLookahead - number of subaddresses to scan per account (optional)\n * @param {string} config.serverUri - uri of the wallet's daemon (optional)\n * @param {string} config.serverUsername - username to authenticate with the daemon (optional)\n * @param {string} config.serverPassword - password to authenticate with the daemon (optional)\n * @param {boolean} config.rejectUnauthorized - reject self-signed server certificates if true (defaults to true)\n * @param {MoneroRpcConnection|object} config.server - MoneroRpcConnection or equivalent JS object providing daemon configuration (optional)\n * @param {boolean} config.proxyToWorker - proxies wallet operations to a worker in order to not block the main thread (default true)\n * @param {fs} config.fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)\n * @return {MoneroWalletFull} the created wallet\n */\n static async createWallet(config) {\n \n // normalize and validate config\n if (config === undefined) throw new MoneroError(\"Must provide config to create wallet\");\n config = config instanceof MoneroWalletConfig ? config : new MoneroWalletConfig(config);\n if (config.getSeed() !== undefined && (config.getPrimaryAddress() !== undefined || config.getPrivateViewKey() !== undefined || config.getPrivateSpendKey() !== undefined)) {\n throw new MoneroError(\"Wallet may be initialized with a seed or keys but not both\");\n } // TODO: factor this much out to common\n if (config.getNetworkType() === undefined) throw new MoneroError(\"Must provide a networkType: 'mainnet', 'testnet' or 'stagenet'\");\n MoneroNetworkType.validate(config.getNetworkType());\n if (config.getSaveCurrent() === true) throw new MoneroError(\"Cannot save current wallet when creating full WASM wallet\");\n if (config.getPath() === undefined) config.setPath(\"\");\n if (config.getPath() && MoneroWalletFull.walletExists(config.getPath(), config.getFs())) throw new MoneroError(\"Wallet already exists: \" + config.getPath());\n if (config.getPassword() === undefined) config.setPassword(\"\");\n \n // create wallet\n if (config.getSeed() !== undefined) {\n if (config.getLanguage() !== undefined) throw new MoneroError(\"Cannot provide language when creating wallet from seed\");\n return MoneroWalletFull._createWalletFromSeed(config);\n } else if (config.getPrivateSpendKey() !== undefined || config.getPrimaryAddress() !== undefined) {\n if (config.getSeedOffset() !== undefined) throw new MoneroError(\"Cannot provide seedOffset when creating wallet from keys\");\n return MoneroWalletFull._createWalletFromKeys(config);\n } else {\n if (config.getSeedOffset() !== undefined) throw new MoneroError(\"Cannot provide seedOffset when creating random wallet\");\n if (config.getRestoreHeight() !== undefined) throw new MoneroError(\"Cannot provide restoreHeight when creating random wallet\");\n return MoneroWalletFull._createWalletRandom(config);\n }\n }\n \n static async _createWalletFromSeed(config) {\n if (config.getProxyToWorker() === undefined) config.setProxyToWorker(true);\n if (config.getProxyToWorker()) return MoneroWalletFullProxy._createWallet(config);\n \n // validate and normalize params\n let daemonConnection = config.getServer();\n let rejectUnauthorized = daemonConnection ? daemonConnection.getRejectUnauthorized() : true;\n if (config.getRestoreHeight() === undefined) config.setRestoreHeight(0);\n if (config.getSeedOffset() === undefined) config.setSeedOffset(\"\");\n \n // load full wasm module\n let module = await LibraryUtils.loadFullModule();\n \n // create wallet in queue\n let wallet = await module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n \n // register fn informing if unauthorized reqs should be rejected\n let rejectUnauthorizedFnId = GenUtils.getUUID();\n LibraryUtils.setRejectUnauthorizedFn(rejectUnauthorizedFnId, function() { return rejectUnauthorized });\n \n // define callback for wasm\n let callbackFn = async function(cppAddress) {\n if (typeof cppAddress === \"string\") reject(new MoneroError(cppAddress));\n else resolve(new MoneroWalletFull(cppAddress, config.getPath(), config.getPassword(), config.getFs(), config.getRejectUnauthorized(), rejectUnauthorizedFnId));\n };\n \n // create wallet in wasm and invoke callback when done\n module.create_full_wallet(JSON.stringify(config.toJson()), rejectUnauthorizedFnId, callbackFn);\n });\n });\n \n // save wallet\n if (config.getPath()) await wallet.save();\n return wallet;\n }\n \n static async _createWalletFromKeys(config) {\n if (config.getProxyToWorker() === undefined) config.setProxyToWorker(true);\n if (config.getProxyToWorker()) return MoneroWalletFullProxy._createWallet(config);\n \n // validate and normalize params\n MoneroNetworkType.validate(config.getNetworkType());\n if (config.getPrimaryAddress() === undefined) config.setPrimaryAddress(\"\");\n if (config.getPrivateViewKey() === undefined) config.setPrivateViewKey(\"\");\n if (config.getPrivateSpendKey() === undefined) config.setPrivateSpendKey(\"\");\n let daemonConnection = config.getServer();\n let rejectUnauthorized = daemonConnection ? daemonConnection.getRejectUnauthorized() : true;\n if (config.getRestoreHeight() === undefined) config.setRestoreHeight(0);\n if (config.getLanguage() === undefined) config.setLanguage(\"English\");\n \n // load full wasm module\n let module = await LibraryUtils.loadFullModule();\n \n // create wallet in queue\n let wallet = await module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n \n // register fn informing if unauthorized reqs should be rejected\n let rejectUnauthorizedFnId = GenUtils.getUUID();\n LibraryUtils.setRejectUnauthorizedFn(rejectUnauthorizedFnId, function() { return rejectUnauthorized });\n \n // define callback for wasm\n let callbackFn = async function(cppAddress) {\n if (typeof cppAddress === \"string\") reject(new MoneroError(cppAddress));\n else resolve(new MoneroWalletFull(cppAddress, config.getPath(), config.getPassword(), config.getFs(), config.getRejectUnauthorized(), rejectUnauthorizedFnId));\n };\n \n // create wallet in wasm and invoke callback when done\n module.create_full_wallet(JSON.stringify(config.toJson()), rejectUnauthorizedFnId, callbackFn);\n });\n });\n \n // save wallet\n if (config.getPath()) await wallet.save();\n return wallet;\n }\n \n static async _createWalletRandom(config) {\n if (config.getProxyToWorker() === undefined) config.setProxyToWorker(true);\n if (config.getProxyToWorker()) return MoneroWalletFullProxy._createWallet(config);\n \n // validate and normalize params\n if (config.getLanguage() === undefined) config.setLanguage(\"English\");\n let daemonConnection = config.getServer();\n let rejectUnauthorized = daemonConnection ? daemonConnection.getRejectUnauthorized() : true;\n \n // load wasm module\n let module = await LibraryUtils.loadFullModule();\n \n // create wallet in queue\n let wallet = await module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n \n // register fn informing if unauthorized reqs should be rejected\n let rejectUnauthorizedFnId = GenUtils.getUUID();\n LibraryUtils.setRejectUnauthorizedFn(rejectUnauthorizedFnId, function() { return rejectUnauthorized });\n \n // define callback for wasm\n let callbackFn = async function(cppAddress) {\n if (typeof cppAddress === \"string\") reject(new MoneroError(cppAddress));\n else resolve(new MoneroWalletFull(cppAddress, config.getPath(), config.getPassword(), config.getFs(), config.getRejectUnauthorized(), rejectUnauthorizedFnId));\n };\n \n // create wallet in wasm and invoke callback when done\n module.create_full_wallet(JSON.stringify(config.toJson()), rejectUnauthorizedFnId, callbackFn);\n });\n });\n \n // save wallet\n if (config.getPath()) await wallet.save();\n return wallet;\n }\n \n static async getSeedLanguages() {\n let module = await LibraryUtils.loadFullModule();\n return module.queueTask(async function() {\n return JSON.parse(module.get_keys_wallet_seed_languages()).languages;\n });\n }\n \n // --------------------------- INSTANCE METHODS -----------------------------\n \n /**\n * Internal constructor which is given the memory address of a C++ wallet\n * instance.\n * \n * This method should not be called externally but should be called through\n * static wallet creation utilities in this class.\n * \n * @param {int} cppAddress - address of the wallet instance in C++\n * @param {string} path - path of the wallet instance\n * @param {string} password - password of the wallet instance\n * @param {FileSystem} fs - node.js-compatible file system to read/write wallet files\n * @param {boolean} rejectUnauthorized - specifies if unauthorized requests (e.g. self-signed certificates) should be rejected\n * @param {string} rejectUnauthorizedFnId - unique identifier for http_client_wasm to query rejectUnauthorized\n */\n constructor(cppAddress, path, password, fs, rejectUnauthorized, rejectUnauthorizedFnId) {\n super(cppAddress);\n this._path = path;\n this._password = password;\n this._listeners = [];\n this._fs = fs ? fs : (path ? MoneroWalletFull._getFs() : undefined);\n this._isClosed = false;\n this._fullListener = new WalletFullListener(this); // receives notifications from wasm c++\n this._fullListenerHandle = 0; // memory address of the wallet listener in c++\n this._rejectUnauthorized = rejectUnauthorized;\n this._rejectUnauthorizedConfigId = rejectUnauthorizedFnId;\n this._syncPeriodInMs = MoneroWalletFull.DEFAULT_SYNC_PERIOD_IN_MS;\n let that = this;\n LibraryUtils.setRejectUnauthorizedFn(rejectUnauthorizedFnId, function() { return that._rejectUnauthorized }); // register fn informing if unauthorized reqs should be rejected\n }\n \n // ------------ WALLET METHODS SPECIFIC TO WASM IMPLEMENTATION --------------\n \n /**\n * Get the maximum height of the peers the wallet's daemon is connected to.\n *\n * @return {number} the maximum height of the peers the wallet's daemon is connected to\n */\n async getDaemonMaxPeerHeight() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(resp) {\n resolve(resp);\n }\n \n // call wasm and invoke callback when done\n that._module.get_daemon_max_peer_height(that._cppAddress, callbackFn);\n });\n });\n }\n \n /**\n * Indicates if the wallet's daemon is synced with the network.\n * \n * @return {boolean} true if the daemon is synced with the network, false otherwise\n */\n async isDaemonSynced() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(resp) {\n resolve(resp);\n }\n \n // call wasm and invoke callback when done\n that._module.is_daemon_synced(that._cppAddress, callbackFn);\n });\n });\n }\n \n /**\n * Indicates if the wallet is synced with the daemon.\n * \n * @return {boolean} true if the wallet is synced with the daemon, false otherwise\n */\n async isSynced() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(resp) {\n resolve(resp);\n }\n \n // call wasm and invoke callback when done\n that._module.is_synced(that._cppAddress, callbackFn);\n });\n });\n }\n \n /**\n * Get the wallet's network type (mainnet, testnet, or stagenet).\n * \n * @return {MoneroNetworkType} the wallet's network type\n */\n async getNetworkType() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.get_network_type(that._cppAddress);\n });\n }\n \n /**\n * Get the height of the first block that the wallet scans.\n * \n * @return {number} the height of the first block that the wallet scans\n */\n async getRestoreHeight() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.get_restore_height(that._cppAddress);\n });\n }\n \n /**\n * Set the height of the first block that the wallet scans.\n * \n * @param {number} restoreHeight - height of the first block that the wallet scans\n */\n async setRestoreHeight(restoreHeight) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.set_restore_height(that._cppAddress, restoreHeight);\n });\n }\n \n /**\n * Move the wallet from its current path to the given path.\n * \n * @param {string} path - the wallet's destination path\n */\n async moveTo(path) {\n return MoneroWalletFull._moveTo(path, this);\n }\n \n // -------------------------- COMMON WALLET METHODS -------------------------\n \n async addListener(listener) {\n this._assertNotClosed();\n assert(listener instanceof MoneroWalletListener, \"Listener must be instance of MoneroWalletListener\");\n this._listeners.push(listener);\n await this._refreshListening();\n }\n \n async removeListener(listener) {\n this._assertNotClosed();\n let idx = this._listeners.indexOf(listener);\n if (idx > -1) this._listeners.splice(idx, 1);\n else throw new MoneroError(\"Listener is not registered with wallet\");\n await this._refreshListening();\n }\n \n getListeners() {\n this._assertNotClosed();\n return this._listeners;\n }\n \n async setDaemonConnection(uriOrRpcConnection) {\n this._assertNotClosed();\n \n // normalize connection\n let connection = !uriOrRpcConnection ? undefined : uriOrRpcConnection instanceof MoneroRpcConnection ? uriOrRpcConnection : new MoneroRpcConnection(uriOrRpcConnection);\n let uri = connection && connection.getUri() ? connection.getUri() : \"\";\n let username = connection && connection.getUsername() ? connection.getUsername() : \"\";\n let password = connection && connection.getPassword() ? connection.getPassword() : \"\";\n let rejectUnauthorized = connection ? connection.getRejectUnauthorized() : undefined;\n this._rejectUnauthorized = rejectUnauthorized; // persist locally\n \n // set connection in queue\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(resp) { resolve(); }\n \n // call wasm and invoke callback when done\n that._module.set_daemon_connection(that._cppAddress, uri, username, password, callbackFn);\n });\n });\n }\n \n async getDaemonConnection() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let connectionContainerStr = that._module.get_daemon_connection(that._cppAddress);\n if (!connectionContainerStr) resolve();\n else {\n let jsonConnection = JSON.parse(connectionContainerStr);\n resolve(new MoneroRpcConnection(jsonConnection.uri, jsonConnection.username, jsonConnection.password, that._rejectUnauthorized));\n }\n });\n });\n }\n \n async isConnectedToDaemon() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(resp) {\n resolve(resp);\n }\n \n // call wasm and invoke callback when done\n that._module.is_connected_to_daemon(that._cppAddress, callbackFn);\n });\n });\n }\n \n async getVersion() {\n this._assertNotClosed();\n throw new MoneroError(\"Not implemented\");\n }\n \n async getPath() {\n this._assertNotClosed();\n return this._path;\n }\n \n async getIntegratedAddress(standardAddress, paymentId) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try {\n let result = that._module.get_integrated_address(that._cppAddress, standardAddress ? standardAddress : \"\", paymentId ? paymentId : \"\");\n if (result.charAt(0) !== \"{\") throw new MoneroError(result);\n return new MoneroIntegratedAddress(JSON.parse(result));\n } catch (err) {\n if (err.message.includes(\"Invalid payment ID\")) throw new MoneroError(\"Invalid payment ID: \" + paymentId);\n throw new MoneroError(err.message);\n }\n });\n }\n \n async decodeIntegratedAddress(integratedAddress) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try {\n let result = that._module.decode_integrated_address(that._cppAddress, integratedAddress);\n if (result.charAt(0) !== \"{\") throw new MoneroError(result);\n return new MoneroIntegratedAddress(JSON.parse(result));\n } catch (err) {\n throw new MoneroError(err.message);\n }\n });\n }\n \n async getHeight() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(resp) {\n resolve(resp);\n }\n \n // call wasm and invoke callback when done\n that._module.get_height(that._cppAddress, callbackFn);\n });\n });\n }\n \n async getDaemonHeight() {\n this._assertNotClosed();\n if (!(await this.isConnectedToDaemon())) throw new MoneroError(\"Wallet is not connected to daemon\");\n \n // schedule task\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(resp) {\n resolve(resp);\n }\n \n // call wasm and invoke callback when done\n that._module.get_daemon_height(that._cppAddress, callbackFn);\n });\n });\n }\n \n async getHeightByDate(year, month, day) {\n this._assertNotClosed();\n if (!(await this.isConnectedToDaemon())) throw new MoneroError(\"Wallet is not connected to daemon\");\n \n // schedule task\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(resp) {\n if (typeof resp === \"string\") reject(new MoneroError(resp));\n else resolve(resp);\n }\n \n // call wasm and invoke callback when done\n that._module.get_height_by_date(that._cppAddress, year, month, day, callbackFn);\n });\n });\n }\n \n /**\n * Synchronize the wallet with the daemon as a one-time synchronous process.\n * \n * @param {MoneroWalletListener|number} listenerOrStartHeight - listener xor start height (defaults to no sync listener, the last synced block)\n * @param {number} startHeight - startHeight if not given in first arg (defaults to last synced block)\n * @param {bool} allowConcurrentCalls - allow other wallet methods to be processed simultaneously during sync (default false)

WARNING: enabling this option will crash wallet execution if another call makes a simultaneous network request. TODO: possible to sync wasm network requests in http_client_wasm.cpp? \n */\n async sync(listenerOrStartHeight, startHeight, allowConcurrentCalls) {\n this._assertNotClosed();\n if (!(await this.isConnectedToDaemon())) throw new MoneroError(\"Wallet is not connected to daemon\");\n \n // normalize params\n startHeight = listenerOrStartHeight === undefined || listenerOrStartHeight instanceof MoneroWalletListener ? startHeight : listenerOrStartHeight;\n let listener = listenerOrStartHeight instanceof MoneroWalletListener ? listenerOrStartHeight : undefined;\n if (startHeight === undefined) startHeight = Math.max(await this.getHeight(), await this.getRestoreHeight());\n \n // register listener if given\n if (listener) await this.addListener(listener);\n \n // sync wallet\n let err;\n let result;\n try {\n let that = this;\n result = await (allowConcurrentCalls ? syncWasm() : that._module.queueTask(async function() { return syncWasm(); }));\n function syncWasm() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = async function(resp) {\n if (resp.charAt(0) !== \"{\") reject(new MoneroError(resp));\n else {\n let respJson = JSON.parse(resp);\n resolve(new MoneroSyncResult(respJson.numBlocksFetched, respJson.receivedMoney));\n }\n }\n \n // sync wallet in wasm and invoke callback when done\n that._module.sync(that._cppAddress, startHeight, callbackFn);\n });\n }\n } catch (e) {\n err = e;\n }\n \n // unregister listener\n if (listener) await this.removeListener(listener);\n \n // throw error or return\n if (err) throw err;\n return result;\n }\n \n async startSyncing(syncPeriodInMs) {\n this._assertNotClosed();\n if (!(await this.isConnectedToDaemon())) throw new MoneroError(\"Wallet is not connected to daemon\");\n this._syncPeriodInMs = syncPeriodInMs === undefined ? MoneroWalletFull.DEFAULT_SYNC_PERIOD_IN_MS : syncPeriodInMs;\n let that = this;\n if (!this._syncLooper) this._syncLooper = new TaskLooper(async function() { await that._backgroundSync(); })\n this._syncLooper.start(this._syncPeriodInMs);\n }\n \n async stopSyncing() {\n this._assertNotClosed();\n if (this._syncLooper) this._syncLooper.stop();\n this._module.stop_syncing(this._cppAddress); // task is not queued so wallet stops immediately\n }\n \n async scanTxs(txHashes) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function(err) {\n if (err) reject(new MoneroError(msg));\n else resolve();\n } \n that._module.scan_txs(that._cppAddress, JSON.stringify({txHashes: txHashes}), callbackFn);\n });\n });\n }\n \n async rescanSpent() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function() { resolve(); }\n that._module.rescan_spent(that._cppAddress, callbackFn);\n });\n });\n }\n \n async rescanBlockchain() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function() { resolve(); }\n that._module.rescan_blockchain(that._cppAddress, callbackFn);\n });\n });\n }\n \n async getBalance(accountIdx, subaddressIdx) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n \n // get balance encoded in json string\n let balanceStr;\n if (accountIdx === undefined) {\n assert(subaddressIdx === undefined, \"Subaddress index must be undefined if account index is undefined\");\n balanceStr = that._module.get_balance_wallet(that._cppAddress);\n } else if (subaddressIdx === undefined) {\n balanceStr = that._module.get_balance_account(that._cppAddress, accountIdx);\n } else {\n balanceStr = that._module.get_balance_subaddress(that._cppAddress, accountIdx, subaddressIdx);\n }\n \n // parse json string to BigInteger\n return BigInteger.parse(JSON.parse(GenUtils.stringifyBIs(balanceStr)).balance);\n });\n }\n \n async getUnlockedBalance(accountIdx, subaddressIdx) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n \n // get balance encoded in json string\n let unlockedBalanceStr;\n if (accountIdx === undefined) {\n assert(subaddressIdx === undefined, \"Subaddress index must be undefined if account index is undefined\");\n unlockedBalanceStr = that._module.get_unlocked_balance_wallet(that._cppAddress);\n } else if (subaddressIdx === undefined) {\n unlockedBalanceStr = that._module.get_unlocked_balance_account(that._cppAddress, accountIdx);\n } else {\n unlockedBalanceStr = that._module.get_unlocked_balance_subaddress(that._cppAddress, accountIdx, subaddressIdx);\n }\n \n // parse json string to BigInteger\n return BigInteger.parse(JSON.parse(GenUtils.stringifyBIs(unlockedBalanceStr)).unlockedBalance);\n });\n }\n \n async getAccounts(includeSubaddresses, tag) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let accountsStr = that._module.get_accounts(that._cppAddress, includeSubaddresses ? true : false, tag ? tag : \"\");\n let accounts = [];\n for (let accountJson of JSON.parse(GenUtils.stringifyBIs(accountsStr)).accounts) {\n accounts.push(MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson)));\n }\n return accounts;\n });\n }\n \n async getAccount(accountIdx, includeSubaddresses) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let accountStr = that._module.get_account(that._cppAddress, accountIdx, includeSubaddresses ? true : false);\n let accountJson = JSON.parse(GenUtils.stringifyBIs(accountStr));\n return MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson));\n });\n\n }\n \n async createAccount(label) {\n if (label === undefined) label = \"\";\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let accountStr = that._module.create_account(that._cppAddress, label);\n let accountJson = JSON.parse(GenUtils.stringifyBIs(accountStr));\n return MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson));\n });\n }\n \n async getSubaddresses(accountIdx, subaddressIndices) {\n let args = {accountIdx: accountIdx, subaddressIndices: subaddressIndices === undefined ? [] : GenUtils.listify(subaddressIndices)};\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let subaddressesJson = JSON.parse(GenUtils.stringifyBIs(that._module.get_subaddresses(that._cppAddress, JSON.stringify(args)))).subaddresses;\n let subaddresses = [];\n for (let subaddressJson of subaddressesJson) subaddresses.push(MoneroWalletFull._sanitizeSubaddress(new MoneroSubaddress(subaddressJson)));\n return subaddresses;\n });\n }\n \n async createSubaddress(accountIdx, label) {\n if (label === undefined) label = \"\";\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let subaddressStr = that._module.create_subaddress(that._cppAddress, accountIdx, label);\n let subaddressJson = JSON.parse(GenUtils.stringifyBIs(subaddressStr));\n return MoneroWalletFull._sanitizeSubaddress(new MoneroSubaddress(subaddressJson));\n });\n }\n\n async setSubaddressLabel(accountIdx, subaddressIdx, label) {\n if (label === undefined) label = \"\";\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n that._module.set_subaddress_label(that._cppAddress, accountIdx, subaddressIdx, label);\n });\n }\n \n async getTxs(query) {\n this._assertNotClosed();\n \n // copy and normalize query up to block\n query = MoneroWallet._normalizeTxQuery(query);\n \n // schedule task\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(blocksJsonStr) {\n \n // check for error\n if (blocksJsonStr.charAt(0) !== \"{\") {\n reject(new MoneroError(blocksJsonStr));\n return;\n }\n \n // resolve with deserialized txs\n try {\n resolve(MoneroWalletFull._deserializeTxs(query, blocksJsonStr));\n } catch (err) {\n reject(err);\n }\n }\n \n // call wasm and invoke callback when done\n that._module.get_txs(that._cppAddress, JSON.stringify(query.getBlock().toJson()), callbackFn);\n });\n });\n }\n \n async getTransfers(query) {\n this._assertNotClosed();\n \n // copy and normalize query up to block\n query = MoneroWallet._normalizeTransferQuery(query);\n \n // return promise which resolves on callback\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(blocksJsonStr) {\n \n // check for error\n if (blocksJsonStr.charAt(0) !== \"{\") {\n reject(new MoneroError(blocksJsonStr));\n return;\n }\n \n // resolve with deserialized transfers \n try {\n resolve(MoneroWalletFull._deserializeTransfers(query, blocksJsonStr));\n } catch (err) {\n reject(err);\n }\n }\n \n // call wasm and invoke callback when done\n that._module.get_transfers(that._cppAddress, JSON.stringify(query.getTxQuery().getBlock().toJson()), callbackFn);\n });\n });\n }\n \n async getOutputs(query) {\n this._assertNotClosed();\n \n // copy and normalize query up to block\n query = MoneroWallet._normalizeOutputQuery(query);\n \n // return promise which resolves on callback\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(blocksJsonStr) {\n \n // check for error\n if (blocksJsonStr.charAt(0) !== \"{\") {\n reject(new MoneroError(blocksJsonStr));\n return;\n }\n \n // resolve with deserialized outputs\n try {\n resolve(MoneroWalletFull._deserializeOutputs(query, blocksJsonStr));\n } catch (err) {\n reject(err);\n }\n }\n \n // call wasm and invoke callback when done\n that._module.get_outputs(that._cppAddress, JSON.stringify(query.getTxQuery().getBlock().toJson()), callbackFn);\n });\n });\n }\n \n async exportOutputs(all) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.export_outputs(that._cppAddress, all, function(outputsHex) { resolve(outputsHex); });\n });\n });\n }\n \n async importOutputs(outputsHex) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.import_outputs(that._cppAddress, outputsHex, function(numImported) { resolve(numImported); });\n });\n });\n }\n \n async exportKeyImages(all) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callback = function(keyImagesStr) {\n if (keyImagesStr.charAt(0) !== '{') reject(new MoneroError(keyImagesStr)); // json expected, else error\n let keyImages = [];\n for (let keyImageJson of JSON.parse(GenUtils.stringifyBIs(keyImagesStr)).keyImages) keyImages.push(new MoneroKeyImage(keyImageJson));\n resolve(keyImages);\n }\n that._module.export_key_images(that._cppAddress, all, callback);\n });\n });\n }\n \n async importKeyImages(keyImages) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callback = function(keyImageImportResultStr) {\n resolve(new MoneroKeyImageImportResult(JSON.parse(GenUtils.stringifyBIs(keyImageImportResultStr))));\n }\n that._module.import_key_images(that._cppAddress, JSON.stringify({keyImages: keyImages.map(keyImage => keyImage.toJson())}), callback);\n });\n });\n }\n \n async getNewKeyImagesFromLastImport() {\n this._assertNotClosed();\n throw new MoneroError(\"Not implemented\");\n }\n \n async freezeOutput(keyImage) {\n if (!keyImage) throw new MoneroError(\"Must specify key image to freeze\");\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function() { resolve(); }\n that._module.freeze_output(that._cppAddress, keyImage, callbackFn);\n });\n });\n }\n \n async thawOutput(keyImage) {\n if (!keyImage) throw new MoneroError(\"Must specify key image to thaw\");\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function() { resolve(); }\n that._module.thaw_output(that._cppAddress, keyImage, callbackFn);\n });\n });\n }\n \n async isOutputFrozen(keyImage) {\n if (!keyImage) throw new MoneroError(\"Must specify key image to check if frozen\");\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function(result) { resolve(result); }\n that._module.is_output_frozen(that._cppAddress, keyImage, callbackFn);\n });\n });\n }\n \n async createTxs(config) {\n this._assertNotClosed();\n \n // validate, copy, and normalize config\n config = MoneroWallet._normalizeCreateTxsConfig(config);\n if (config.getCanSplit() === undefined) config.setCanSplit(true);\n \n // return promise which resolves on callback\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(txSetJsonStr) {\n if (txSetJsonStr.charAt(0) !== '{') reject(new MoneroError(txSetJsonStr)); // json expected, else error\n else resolve(new MoneroTxSet(JSON.parse(GenUtils.stringifyBIs(txSetJsonStr))).getTxs());\n }\n \n // create txs in wasm and invoke callback when done\n that._module.create_txs(that._cppAddress, JSON.stringify(config.toJson()), callbackFn);\n });\n });\n }\n \n async sweepOutput(config) {\n this._assertNotClosed();\n \n // normalize and validate config\n config = MoneroWallet._normalizeSweepOutputConfig(config);\n \n // return promise which resolves on callback\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(txSetJsonStr) {\n if (txSetJsonStr.charAt(0) !== '{') reject(new MoneroError(txSetJsonStr)); // json expected, else error\n else resolve(new MoneroTxSet(JSON.parse(GenUtils.stringifyBIs(txSetJsonStr))).getTxs()[0]);\n }\n \n // sweep output in wasm and invoke callback when done\n that._module.sweep_output(that._cppAddress, JSON.stringify(config.toJson()), callbackFn);\n });\n });\n }\n\n async sweepUnlocked(config) {\n this._assertNotClosed();\n \n // validate and normalize config\n config = MoneroWallet._normalizeSweepUnlockedConfig(config);\n \n // return promise which resolves on callback\n let that = this;\n return that._module.queueTask(async function() { // TODO: could factor this pattern out, invoked with module params and callback handler\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(txSetsJson) {\n if (txSetsJson.charAt(0) !== '{') reject(new MoneroError(txSetsJson)); // json expected, else error\n else {\n let txSets = [];\n for (let txSetJson of JSON.parse(GenUtils.stringifyBIs(txSetsJson)).txSets) txSets.push(new MoneroTxSet(txSetJson));\n let txs = [];\n for (let txSet of txSets) for (let tx of txSet.getTxs()) txs.push(tx);\n resolve(txs);\n }\n }\n \n // sweep unlocked in wasm and invoke callback when done\n that._module.sweep_unlocked(that._cppAddress, JSON.stringify(config.toJson()), callbackFn);\n });\n });\n }\n \n async sweepDust(relay) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(txSetJsonStr) {\n if (txSetJsonStr.charAt(0) !== '{') reject(new MoneroError(txSetJsonStr)); // json expected, else error\n else {\n let txSet = new MoneroTxSet(JSON.parse(GenUtils.stringifyBIs(txSetJsonStr)));\n if (txSet.getTxs() === undefined) txSet.setTxs([]);\n resolve(txSet.getTxs());\n }\n }\n \n // call wasm and invoke callback when done\n that._module.sweep_dust(that._cppAddress, relay, callbackFn);\n });\n });\n }\n \n async relayTxs(txsOrMetadatas) {\n this._assertNotClosed();\n assert(Array.isArray(txsOrMetadatas), \"Must provide an array of txs or their metadata to relay\");\n let txMetadatas = [];\n for (let txOrMetadata of txsOrMetadatas) txMetadatas.push(txOrMetadata instanceof MoneroTxWallet ? txOrMetadata.getMetadata() : txOrMetadata);\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callback = function(txHashesJson) {\n if (txHashesJson.charAt(0) !== \"{\") reject(new MoneroError(txHashesJson));\n else resolve(JSON.parse(txHashesJson).txHashes);\n }\n that._module.relay_txs(that._cppAddress, JSON.stringify({txMetadatas: txMetadatas}), callback);\n });\n });\n }\n \n async describeTxSet(txSet) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n txSet = new MoneroTxSet()\n .setUnsignedTxHex(txSet.getUnsignedTxHex())\n .setSignedTxHex(txSet.getSignedTxHex())\n .setMultisigTxHex(txSet.getMultisigTxHex());\n try { return new MoneroTxSet(JSON.parse(GenUtils.stringifyBIs(that._module.describe_tx_set(that._cppAddress, JSON.stringify(txSet.toJson()))))); }\n catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }\n });\n }\n \n async signTxs(unsignedTxHex) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try { return that._module.sign_txs(that._cppAddress, unsignedTxHex); }\n catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }\n });\n }\n \n async submitTxs(signedTxHex) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function(resp) {\n if (resp.charAt(0) !== \"{\") reject(new MoneroError(resp));\n else resolve(JSON.parse(resp).txHashes);\n }\n that._module.submit_txs(that._cppAddress, signedTxHex, callbackFn);\n });\n });\n }\n \n async signMessage(message, signatureType, accountIdx, subaddressIdx) {\n \n // assign defaults\n signatureType = signatureType || MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY;\n accountIdx = accountIdx || 0;\n subaddressIdx = subaddressIdx || 0;\n \n // queue task to sign message\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try { return that._module.sign_message(that._cppAddress, message, signatureType === MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY ? 0 : 1, accountIdx, subaddressIdx); }\n catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }\n });\n }\n \n async verifyMessage(message, address, signature) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let resultJson;\n try {\n resultJson = JSON.parse(that._module.verify_message(that._cppAddress, message, address, signature));\n } catch (err) {\n resultJson = {isGood: false};\n }\n let result = new MoneroMessageSignatureResult(\n resultJson.isGood,\n !resultJson.isGood ? undefined : resultJson.isOld,\n !resultJson.isGood ? undefined : resultJson.signatureType === \"spend\" ? MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY : MoneroMessageSignatureType.SIGN_WITH_VIEW_KEY,\n !resultJson.isGood ? undefined : resultJson.version);\n return result;\n });\n }\n \n async getTxKey(txHash) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try { return that._module.get_tx_key(that._cppAddress, txHash); }\n catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }\n });\n }\n \n async checkTxKey(txHash, txKey, address) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed(); \n return new Promise(function(resolve, reject) {\n that._module.check_tx_key(that._cppAddress, txHash, txKey, address, function(respJsonStr) {\n if (respJsonStr.charAt(0) !== \"{\") reject(new MoneroError(respJsonStr));\n else resolve(new MoneroCheckTx(JSON.parse(GenUtils.stringifyBIs(respJsonStr))));\n });\n });\n });\n }\n \n async getTxProof(txHash, address, message) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.get_tx_proof(that._cppAddress, txHash || \"\", address || \"\", message || \"\", function(signature) {\n let errorKey = \"error: \";\n if (signature.indexOf(errorKey) === 0) reject(new MoneroError(signature.substring(errorKey.length)));\n else resolve(signature);\n });\n });\n });\n }\n \n async checkTxProof(txHash, address, message, signature) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed(); \n return new Promise(function(resolve, reject) {\n that._module.check_tx_proof(that._cppAddress, txHash || \"\", address || \"\", message || \"\", signature || \"\", function(respJsonStr) {\n if (respJsonStr.charAt(0) !== \"{\") reject(new MoneroError(respJsonStr));\n else resolve(new MoneroCheckTx(JSON.parse(GenUtils.stringifyBIs(respJsonStr))));\n });\n });\n });\n }\n \n async getSpendProof(txHash, message) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.get_spend_proof(that._cppAddress, txHash || \"\", message || \"\", function(signature) {\n let errorKey = \"error: \";\n if (signature.indexOf(errorKey) === 0) reject(new MoneroError(signature.substring(errorKey.length)));\n else resolve(signature);\n });\n });\n });\n }\n \n async checkSpendProof(txHash, message, signature) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed(); \n return new Promise(function(resolve, reject) {\n that._module.check_spend_proof(that._cppAddress, txHash || \"\", message || \"\", signature || \"\", function(resp) {\n typeof resp === \"string\" ? reject(new MoneroError(resp)) : resolve(resp);\n });\n });\n });\n }\n \n async getReserveProofWallet(message) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.get_reserve_proof_wallet(that._cppAddress, message, function(signature) {\n let errorKey = \"error: \";\n if (signature.indexOf(errorKey) === 0) reject(new MoneroError(signature.substring(errorKey.length), -1));\n else resolve(signature);\n });\n });\n });\n }\n \n async getReserveProofAccount(accountIdx, amount, message) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.get_reserve_proof_account(that._cppAddress, accountIdx, amount.toString(), message, function(signature) {\n let errorKey = \"error: \";\n if (signature.indexOf(errorKey) === 0) reject(new MoneroError(signature.substring(errorKey.length), -1));\n else resolve(signature);\n });\n });\n });\n }\n\n async checkReserveProof(address, message, signature) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed(); \n return new Promise(function(resolve, reject) {\n that._module.check_reserve_proof(that._cppAddress, address, message, signature, function(respJsonStr) {\n if (respJsonStr.charAt(0) !== \"{\") reject(new MoneroError(respJsonStr, -1));\n else resolve(new MoneroCheckReserve(JSON.parse(GenUtils.stringifyBIs(respJsonStr))));\n });\n });\n });\n }\n \n async getTxNotes(txHashes) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try { return JSON.parse(that._module.get_tx_notes(that._cppAddress, JSON.stringify({txHashes: txHashes}))).txNotes; }\n catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }\n });\n }\n \n async setTxNotes(txHashes, notes) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try { that._module.set_tx_notes(that._cppAddress, JSON.stringify({txHashes: txHashes, txNotes: notes})); }\n catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }\n });\n }\n \n async getAddressBookEntries(entryIndices) {\n if (!entryIndices) entryIndices = [];\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let entries = [];\n for (let entryJson of JSON.parse(that._module.get_address_book_entries(that._cppAddress, JSON.stringify({entryIndices: entryIndices}))).entries) {\n entries.push(new MoneroAddressBookEntry(entryJson));\n }\n return entries;\n });\n }\n \n async addAddressBookEntry(address, description) {\n if (!address) address = \"\";\n if (!description) description = \"\";\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.add_address_book_entry(that._cppAddress, address, description);\n });\n }\n \n async editAddressBookEntry(index, setAddress, address, setDescription, description) {\n if (!setAddress) setAddress = false;\n if (!address) address = \"\";\n if (!setDescription) setDescription = false;\n if (!description) description = \"\";\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n that._module.edit_address_book_entry(that._cppAddress, index, setAddress, address, setDescription, description);\n });\n }\n \n async deleteAddressBookEntry(entryIdx) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n that._module.delete_address_book_entry(that._cppAddress, entryIdx);\n });\n }\n \n async tagAccounts(tag, accountIndices) {\n if (!tag) tag = \"\";\n if (!accountIndices) accountIndices = [];\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n that._module.tag_accounts(that._cppAddress, JSON.stringify({tag: tag, accountIndices: accountIndices}));\n });\n }\n\n async untagAccounts(accountIndices) {\n if (!accountIndices) accountIndices = [];\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n that._module.tag_accounts(that._cppAddress, JSON.stringify({accountIndices: accountIndices}));\n });\n }\n \n async getAccountTags() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let accountTags = [];\n for (let accountTagJson of JSON.parse(that._module.get_account_tags(that._cppAddress)).accountTags) accountTags.push(new MoneroAccountTag(accountTagJson));\n return accountTags;\n });\n }\n\n async setAccountTagLabel(tag, label) {\n if (!tag) tag = \"\";\n if (!llabel) label = \"\";\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n that._module.set_account_tag_label(that._cppAddress, tag, label);\n });\n }\n \n async getPaymentUri(config) {\n config = MoneroWallet._normalizeCreateTxsConfig(config);\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try {\n return that._module.get_payment_uri(that._cppAddress, JSON.stringify(config.toJson()));\n } catch (err) {\n throw new MoneroError(\"Cannot make URI from supplied parameters\");\n }\n });\n }\n \n async parsePaymentUri(uri) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try {\n return new MoneroTxConfig(JSON.parse(GenUtils.stringifyBIs(that._module.parse_payment_uri(that._cppAddress, uri))), true); // relax validation for unquoted big integers\n } catch (err) {\n throw new MoneroError(err.message);\n }\n });\n }\n \n async getAttribute(key) {\n this._assertNotClosed();\n assert(typeof key === \"string\", \"Attribute key must be a string\");\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let value = that._module.get_attribute(that._cppAddress, key);\n return value === \"\" ? null : value;\n });\n }\n \n async setAttribute(key, val) {\n this._assertNotClosed();\n assert(typeof key === \"string\", \"Attribute key must be a string\");\n assert(typeof val === \"string\", \"Attribute value must be a string\");\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n that._module.set_attribute(that._cppAddress, key, val);\n });\n }\n \n async startMining(numThreads, backgroundMining, ignoreBattery) {\n this._assertNotClosed();\n let daemon = new MoneroDaemonRpc(Object.assign((await this.getDaemonConnection()).getConfig(), {proxyToWorker: false}));\n await daemon.startMining(await this.getPrimaryAddress(), numThreads, backgroundMining, ignoreBattery);\n }\n \n async stopMining() {\n this._assertNotClosed();\n let daemon = new MoneroDaemonRpc(Object.assign((await this.getDaemonConnection()).getConfig(), {proxyToWorker: false}));\n await daemon.stopMining();\n }\n \n async isMultisigImportNeeded() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.is_multisig_import_needed(that._cppAddress);\n });\n }\n \n async isMultisig() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.is_multisig(that._cppAddress);\n });\n }\n \n async getMultisigInfo() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new MoneroMultisigInfo(JSON.parse(that._module.get_multisig_info(that._cppAddress)));\n });\n }\n \n async prepareMultisig() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.prepare_multisig(that._cppAddress);\n });\n }\n \n async makeMultisig(multisigHexes, threshold, password) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.make_multisig(that._cppAddress, JSON.stringify({multisigHexes: multisigHexes, threshold: threshold, password: password}), (resp) => {\n let errorKey = \"error: \";\n if (resp.indexOf(errorKey) === 0) reject(new MoneroError(resp.substring(errorKey.length)));\n else resolve(resp);\n });\n });\n });\n }\n \n async exchangeMultisigKeys(multisigHexes, password) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.exchange_multisig_keys(that._cppAddress, JSON.stringify({multisigHexes: multisigHexes, password: password}), (resp) => {\n let errorKey = \"error: \";\n if (resp.indexOf(errorKey) === 0) reject(new MoneroError(resp.substring(errorKey.length)));\n else resolve(new MoneroMultisigInitResult(JSON.parse(resp)));\n });\n });\n });\n }\n \n async exportMultisigHex() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.export_multisig_hex(that._cppAddress);\n });\n }\n \n async importMultisigHex(multisigHexes) {\n if (!GenUtils.isArray(multisigHexes)) throw new MoneroError(\"Must provide string[] to importMultisigHex()\")\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function(resp) {\n if (typeof resp === \"string\") reject(new MoneroError(resp));\n else resolve(resp);\n }\n that._module.import_multisig_hex(that._cppAddress, JSON.stringify({multisigHexes: multisigHexes}), callbackFn);\n });\n });\n }\n \n async signMultisigTxHex(multisigTxHex) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = async function(resp) {\n if (resp.charAt(0) !== \"{\") reject(new MoneroError(resp));\n else resolve(new MoneroMultisigSignResult(JSON.parse(resp)));\n }\n that._module.sign_multisig_tx_hex(that._cppAddress, multisigTxHex, callbackFn)\n });\n });\n }\n \n async submitMultisigTxHex(signedMultisigTxHex) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function(resp) { \n if (resp.charAt(0) !== \"{\") reject(new MoneroError(resp));\n else resolve(JSON.parse(resp).txHashes);\n }\n that._module.submit_multisig_tx_hex(that._cppAddress, signedMultisigTxHex, callbackFn);\n });\n });\n }\n \n /**\n * Get the wallet's keys and cache data.\n * \n * @return {DataView[]} is the keys and cache data, respectively\n */\n async getData() {\n this._assertNotClosed();\n \n // queue call to wasm module\n let viewOnly = await this.isViewOnly();\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n \n // store views in array\n let views = [];\n \n // malloc cache buffer and get buffer location in c++ heap\n let cacheBufferLoc = JSON.parse(that._module.get_cache_file_buffer(that._cppAddress));\n \n // read binary data from heap to DataView\n let view = new DataView(new ArrayBuffer(cacheBufferLoc.length));\n for (let i = 0; i < cacheBufferLoc.length; i++) {\n view.setInt8(i, that._module.HEAPU8[cacheBufferLoc.pointer / Uint8Array.BYTES_PER_ELEMENT + i]);\n }\n \n // free binary on heap\n that._module._free(cacheBufferLoc.pointer);\n \n // write cache file\n views.push(Buffer.from(view.buffer));\n \n // malloc keys buffer and get buffer location in c++ heap\n let keysBufferLoc = JSON.parse(that._module.get_keys_file_buffer(that._cppAddress, that._password, viewOnly));\n \n // read binary data from heap to DataView\n view = new DataView(new ArrayBuffer(keysBufferLoc.length));\n for (let i = 0; i < keysBufferLoc.length; i++) {\n view.setInt8(i, that._module.HEAPU8[keysBufferLoc.pointer / Uint8Array.BYTES_PER_ELEMENT + i]);\n }\n \n // free binary on heap\n that._module._free(keysBufferLoc.pointer);\n \n // prepend keys file\n views.unshift(Buffer.from(view.buffer));\n return views;\n });\n }\n \n async changePassword(oldPassword, newPassword) {\n if (oldPassword !== this._password) throw new MoneroError(\"Invalid original password.\"); // wallet2 verify_password loads from disk so verify password here\n if (newPassword === undefined) newPassword = \"\";\n let that = this;\n await that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.change_wallet_password(that._cppAddress, oldPassword, newPassword, async function(errMsg) {\n if (errMsg) reject(new MoneroError(errMsg));\n else resolve();\n });\n });\n });\n this._password = newPassword;\n if (this._path) await this.save(); // auto save\n }\n \n async save() {\n return MoneroWalletFull._save(this);\n }\n \n async close(save) {\n if (this._isClosed) return; // no effect if closed\n await this._refreshListening();\n await this.stopSyncing();\n await super.close(save);\n delete this._path;\n delete this._password;\n delete this._listeners;\n delete this._fullListener;\n LibraryUtils.setRejectUnauthorizedFn(this._rejectUnauthorizedConfigId, undefined); // unregister fn informing if unauthorized reqs should be rejected\n }\n \n // ----------- ADD JSDOC FOR SUPPORTED DEFAULT IMPLEMENTATIONS --------------\n \n async getNumBlocksToUnlock() { return super.getNumBlocksToUnlock(...arguments); }\n async getTx() { return super.getTx(...arguments); }\n async getIncomingTransfers() { return super.getIncomingTransfers(...arguments); }\n async getOutgoingTransfers() { return super.getOutgoingTransfers(...arguments); }\n async createTx() { return super.createTx(...arguments); }\n async relayTx() { return super.relayTx(...arguments); }\n async getTxNote() { return super.getTxNote(...arguments); }\n async setTxNote() { return super.setTxNote(...arguments); }\n \n // ---------------------------- PRIVATE HELPERS ----------------------------\n \n static _getFs() {\n if (!MoneroWalletFull.FS) MoneroWalletFull.FS = GenUtils.isBrowser() ? undefined : require('fs');\n return MoneroWalletFull.FS;\n }\n \n static async _openWalletData(path, password, networkType, keysData, cacheData, daemonUriOrConnection, proxyToWorker, fs) {\n if (proxyToWorker) return MoneroWalletFullProxy.openWalletData(path, password, networkType, keysData, cacheData, daemonUriOrConnection, fs);\n \n // validate and normalize parameters\n if (networkType === undefined) throw new MoneroError(\"Must provide the wallet's network type\");\n MoneroNetworkType.validate(networkType);\n let daemonConnection = typeof daemonUriOrConnection === \"string\" ? new MoneroRpcConnection(daemonUriOrConnection) : daemonUriOrConnection;\n let daemonUri = daemonConnection && daemonConnection.getUri() ? daemonConnection.getUri() : \"\";\n let daemonUsername = daemonConnection && daemonConnection.getUsername() ? daemonConnection.getUsername() : \"\";\n let daemonPassword = daemonConnection && daemonConnection.getPassword() ? daemonConnection.getPassword() : \"\";\n let rejectUnauthorized = daemonConnection ? daemonConnection.getRejectUnauthorized() : true;\n \n // load wasm module\n let module = await LibraryUtils.loadFullModule();\n \n // open wallet in queue\n return module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n \n // register fn informing if unauthorized reqs should be rejected\n let rejectUnauthorizedFnId = GenUtils.getUUID();\n LibraryUtils.setRejectUnauthorizedFn(rejectUnauthorizedFnId, function() { return rejectUnauthorized });\n \n // define callback for wasm\n let callbackFn = async function(cppAddress) {\n if (typeof cppAddress === \"string\") reject(new MoneroError(cppAddress));\n else resolve(new MoneroWalletFull(cppAddress, path, password, fs, rejectUnauthorized, rejectUnauthorizedFnId));\n };\n \n // create wallet in wasm and invoke callback when done\n module.open_wallet_full(password, networkType, keysData, cacheData, daemonUri, daemonUsername, daemonPassword, rejectUnauthorizedFnId, callbackFn);\n });\n });\n }\n \n async _backgroundSync() {\n let label = this._path ? this._path : (this._browserMainPath ? this._browserMainPath : \"in-memory wallet\"); // label for log\n LibraryUtils.log(1, \"Background synchronizing \" + label);\n try { await this.sync(); }\n catch (err) { if (!this._isClosed) console.error(\"Failed to background synchronize \" + label + \": \" + err.message); }\n }\n \n async _refreshListening() {\n let isEnabled = this._listeners.length > 0;\n let that = this;\n if (that._fullListenerHandle === 0 && !isEnabled || that._fullListenerHandle > 0 && isEnabled) return; // no difference\n return that._module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n that._module.set_listener(\n that._cppAddress,\n that._fullListenerHandle,\n newListenerHandle => {\n if (typeof newListenerHandle === \"string\") reject(new MoneroError(newListenerHandle));\n else {\n that._fullListenerHandle = newListenerHandle;\n resolve();\n }\n },\n isEnabled ? async function(height, startHeight, endHeight, percentDone, message) { await that._fullListener.onSyncProgress(height, startHeight, endHeight, percentDone, message); } : undefined,\n isEnabled ? async function(height) { await that._fullListener.onNewBlock(height); } : undefined,\n isEnabled ? async function(newBalanceStr, newUnlockedBalanceStr) { await that._fullListener.onBalancesChanged(newBalanceStr, newUnlockedBalanceStr); } : undefined,\n isEnabled ? async function(height, txHash, amountStr, accountIdx, subaddressIdx, version, unlockTime, isLocked) { await that._fullListener.onOutputReceived(height, txHash, amountStr, accountIdx, subaddressIdx, version, unlockTime, isLocked); } : undefined,\n isEnabled ? async function(height, txHash, amountStr, accountIdxStr, subaddressIdxStr, version, unlockTime, isLocked) { await that._fullListener.onOutputSpent(height, txHash, amountStr, accountIdxStr, subaddressIdxStr, version, unlockTime, isLocked); } : undefined,\n );\n });\n });\n }\n \n static _sanitizeBlock(block) {\n for (let tx of block.getTxs()) MoneroWalletFull._sanitizeTxWallet(tx);\n return block;\n }\n \n static _sanitizeTxWallet(tx) {\n assert(tx instanceof MoneroTxWallet);\n return tx;\n }\n \n static _sanitizeAccount(account) {\n if (account.getSubaddresses()) {\n for (let subaddress of account.getSubaddresses()) MoneroWalletFull._sanitizeSubaddress(subaddress);\n }\n return account;\n }\n \n static _sanitizeSubaddress(subaddress) {\n if (subaddress.getLabel() === \"\") subaddress.setLabel(undefined);\n return subaddress\n }\n \n static _deserializeBlocks(blocksJsonStr) {\n let blocksJson = JSON.parse(GenUtils.stringifyBIs(blocksJsonStr));\n let deserializedBlocks = {};\n deserializedBlocks.blocks = [];\n if (blocksJson.blocks) for (let blockJson of blocksJson.blocks) deserializedBlocks.blocks.push(MoneroWalletFull._sanitizeBlock(new MoneroBlock(blockJson, MoneroBlock.DeserializationType.TX_WALLET)));\n return deserializedBlocks;\n }\n \n static _deserializeTxs(query, blocksJsonStr) {\n \n // deserialize blocks\n let deserializedBlocks = MoneroWalletFull._deserializeBlocks(blocksJsonStr);\n let blocks = deserializedBlocks.blocks;\n \n // collect txs\n let txs = [];\n for (let block of blocks) {\n MoneroWalletFull._sanitizeBlock(block);\n for (let tx of block.getTxs()) {\n if (block.getHeight() === undefined) tx.setBlock(undefined); // dereference placeholder block for unconfirmed txs\n txs.push(tx);\n }\n }\n \n // re-sort txs which is lost over wasm serialization // TODO: confirm that order is lost\n if (query.getHashes() !== undefined) {\n let txMap = new Map();\n for (let tx of txs) txMap[tx.getHash()] = tx;\n let txsSorted = [];\n for (let txHash of query.getHashes()) if (txMap[txHash] !== undefined) txsSorted.push(txMap[txHash]);\n txs = txsSorted;\n }\n \n return txs;\n }\n \n static _deserializeTransfers(query, blocksJsonStr) {\n \n // deserialize blocks\n let deserializedBlocks = MoneroWalletFull._deserializeBlocks(blocksJsonStr);\n let blocks = deserializedBlocks.blocks;\n \n // collect transfers\n let transfers = [];\n for (let block of blocks) {\n for (let tx of block.getTxs()) {\n if (block.getHeight() === undefined) tx.setBlock(undefined); // dereference placeholder block for unconfirmed txs\n if (tx.getOutgoingTransfer() !== undefined) transfers.push(tx.getOutgoingTransfer());\n if (tx.getIncomingTransfers() !== undefined) {\n for (let transfer of tx.getIncomingTransfers()) transfers.push(transfer);\n }\n }\n }\n \n return transfers;\n }\n \n static _deserializeOutputs(query, blocksJsonStr) {\n \n // deserialize blocks\n let deserializedBlocks = MoneroWalletFull._deserializeBlocks(blocksJsonStr);\n let blocks = deserializedBlocks.blocks;\n \n // collect outputs\n let outputs = [];\n for (let block of blocks) {\n for (let tx of block.getTxs()) {\n for (let output of tx.getOutputs()) outputs.push(output);\n }\n }\n \n return outputs;\n }\n \n /**\n * Set the path of the wallet on the browser main thread if run as a worker.\n * \n * @param {string} browserMainPath - path of the wallet on the browser main thread\n */\n _setBrowserMainPath(browserMainPath) {\n this._browserMainPath = browserMainPath;\n }\n \n static async _moveTo(path, wallet) {\n if (await wallet.isClosed()) throw new MoneroError(\"Wallet is closed\");\n if (!path) throw new MoneroError(\"Must provide path of destination wallet\");\n \n // save and return if same path\n const Path = require(\"path\");\n if (Path.normalize(wallet._path) === Path.normalize(path)) {\n await wallet.save();\n return;\n }\n \n // create destination directory if it doesn't exist\n let walletDir = Path.dirname(path);\n if (!wallet._fs.existsSync(walletDir)) {\n try { wallet._fs.mkdirSync(walletDir); }\n catch (err) { throw new MoneroError(\"Destination path \" + path + \" does not exist and cannot be created: \" + err.message); }\n }\n \n // write wallet files\n let data = await wallet.getData();\n wallet._fs.writeFileSync(path + \".keys\", data[0], \"binary\");\n wallet._fs.writeFileSync(path, data[1], \"binary\");\n wallet._fs.writeFileSync(path + \".address.txt\", await wallet.getPrimaryAddress());\n let oldPath = wallet._path;\n wallet._path = path;\n \n // delete old wallet files\n if (oldPath) {\n wallet._fs.unlinkSync(oldPath + \".address.txt\");\n wallet._fs.unlinkSync(oldPath + \".keys\");\n wallet._fs.unlinkSync(oldPath);\n }\n }\n \n static async _save(wallet) {\n if (await wallet.isClosed()) throw new MoneroError(\"Wallet is closed\");\n \n // path must be set\n let path = await wallet.getPath();\n if (!path) throw new MoneroError(\"Cannot save wallet because path is not set\");\n \n // write wallet files to *.new\n let pathNew = path + \".new\";\n let data = await wallet.getData();\n wallet._fs.writeFileSync(pathNew + \".keys\", data[0], \"binary\");\n wallet._fs.writeFileSync(pathNew, data[1], \"binary\");\n wallet._fs.writeFileSync(pathNew + \".address.txt\", await wallet.getPrimaryAddress());\n \n // replace old wallet files with new\n wallet._fs.renameSync(pathNew + \".keys\", path + \".keys\");\n wallet._fs.renameSync(pathNew, path, path + \".keys\");\n wallet._fs.renameSync(pathNew + \".address.txt\", path + \".address.txt\", path + \".keys\");\n }\n}\n\n/**\n * Implements a MoneroWallet by proxying requests to a worker which runs a full wallet.\n * \n * TODO: sort these methods according to master sort in MoneroWallet.js\n * TODO: probably only allow one listener to worker then propogate to registered listeners for performance\n * TODO: ability to recycle worker for use in another wallet\n * TODO: using LibraryUtils.WORKER_OBJECTS directly breaks encapsulation\n * \n * @private\n */\nclass MoneroWalletFullProxy extends MoneroWallet {\n \n // -------------------------- WALLET STATIC UTILS ---------------------------\n \n static async openWalletData(path, password, networkType, keysData, cacheData, daemonUriOrConnection, fs) {\n let walletId = GenUtils.getUUID();\n if (password === undefined) password = \"\";\n let daemonUriOrConfig = daemonUriOrConnection instanceof MoneroRpcConnection ? daemonUriOrConnection.getConfig() : daemonUriOrConnection;\n await LibraryUtils.invokeWorker(walletId, \"openWalletData\", [path, password, networkType, keysData, cacheData, daemonUriOrConfig]);\n let wallet = new MoneroWalletFullProxy(walletId, await LibraryUtils.getWorker(), path, fs);\n if (path) await wallet.save();\n return wallet;\n }\n \n static async _createWallet(config) {\n if (config.getPath() && MoneroWalletFull.walletExists(config.getPath(), config.getFs())) throw new MoneroError(\"Wallet already exists: \" + path);\n let walletId = GenUtils.getUUID();\n await LibraryUtils.invokeWorker(walletId, \"_createWallet\", [config.toJson()]);\n let wallet = new MoneroWalletFullProxy(walletId, await LibraryUtils.getWorker(), config.getPath(), config.getFs());\n if (config.getPath()) await wallet.save();\n return wallet;\n }\n \n // --------------------------- INSTANCE METHODS ----------------------------\n \n /**\n * Internal constructor which is given a worker to communicate with via messages.\n * \n * This method should not be called externally but should be called through\n * static wallet creation utilities in this class.\n * \n * @param {string} walletId - identifies the wallet with the worker\n * @param {Worker} worker - worker to communicate with via messages\n */\n constructor(walletId, worker, path, fs) {\n super();\n this._walletId = walletId;\n this._worker = worker;\n this._path = path;\n this._fs = fs ? fs : (path ? MoneroWalletFull._getFs() : undefined);\n this._wrappedListeners = [];\n }\n \n async isViewOnly() {\n return this._invokeWorker(\"isViewOnly\");\n }\n \n async getNetworkType() {\n return this._invokeWorker(\"getNetworkType\");\n }\n \n async getVersion() {\n throw new MoneroError(\"Not implemented\");\n }\n \n getPath() {\n return this._path;\n }\n \n async getSeed() {\n return this._invokeWorker(\"getSeed\");\n }\n \n async getSeedLanguage() {\n return this._invokeWorker(\"getSeedLanguage\");\n }\n \n async getSeedLanguages() {\n return this._invokeWorker(\"getSeedLanguages\");\n }\n \n async getPrivateSpendKey() {\n return this._invokeWorker(\"getPrivateSpendKey\");\n }\n \n async getPrivateViewKey() {\n return this._invokeWorker(\"getPrivateViewKey\");\n }\n \n async getPublicViewKey() {\n return this._invokeWorker(\"getPublicViewKey\");\n }\n \n async getPublicSpendKey() {\n return this._invokeWorker(\"getPublicSpendKey\");\n }\n \n async getAddress(accountIdx, subaddressIdx) {\n return this._invokeWorker(\"getAddress\", Array.from(arguments));\n }\n \n async getAddressIndex(address) {\n let subaddressJson = await this._invokeWorker(\"getAddressIndex\", Array.from(arguments));\n return MoneroWalletFull._sanitizeSubaddress(new MoneroSubaddress(subaddressJson));\n }\n\n async setSubaddressLabel(accountIdx, subaddressIdx, label) {\n return this._invokeWorker(\"setSubaddressLabel\", Array.from(arguments));\n }\n \n async getIntegratedAddress(standardAddress, paymentId) {\n return new MoneroIntegratedAddress(await this._invokeWorker(\"getIntegratedAddress\", Array.from(arguments)));\n }\n \n async decodeIntegratedAddress(integratedAddress) {\n return new MoneroIntegratedAddress(await this._invokeWorker(\"decodeIntegratedAddress\", Array.from(arguments)));\n }\n \n async setDaemonConnection(uriOrRpcConnection) {\n if (!uriOrRpcConnection) await this._invokeWorker(\"setDaemonConnection\");\n else {\n let connection = !uriOrRpcConnection ? undefined : uriOrRpcConnection instanceof MoneroRpcConnection ? uriOrRpcConnection : new MoneroRpcConnection(uriOrRpcConnection);\n await this._invokeWorker(\"setDaemonConnection\", connection ? connection.getConfig() : undefined);\n }\n }\n \n async getDaemonConnection() {\n let rpcConfig = await this._invokeWorker(\"getDaemonConnection\");\n return rpcConfig ? new MoneroRpcConnection(rpcConfig) : undefined;\n }\n \n async isConnectedToDaemon() {\n return this._invokeWorker(\"isConnectedToDaemon\");\n }\n \n async getRestoreHeight() {\n return this._invokeWorker(\"getRestoreHeight\");\n }\n \n async setRestoreHeight(restoreHeight) {\n return this._invokeWorker(\"setRestoreHeight\", [restoreHeight]);\n }\n \n async getDaemonHeight() {\n return this._invokeWorker(\"getDaemonHeight\");\n }\n \n async getDaemonMaxPeerHeight() {\n return this._invokeWorker(\"getDaemonMaxPeerHeight\");\n }\n \n async getHeightByDate(year, month, day) {\n return this._invokeWorker(\"getHeightByDate\", [year, month, day]);\n }\n \n async isDaemonSynced() {\n return this._invokeWorker(\"isDaemonSynced\");\n }\n \n async getHeight() {\n return this._invokeWorker(\"getHeight\");\n }\n \n async addListener(listener) {\n let wrappedListener = new WalletWorkerListener(listener);\n let listenerId = wrappedListener.getId();\n LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onSyncProgress_\" + listenerId] = [wrappedListener.onSyncProgress, wrappedListener];\n LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onNewBlock_\" + listenerId] = [wrappedListener.onNewBlock, wrappedListener];\n LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onBalancesChanged_\" + listenerId] = [wrappedListener.onBalancesChanged, wrappedListener];\n LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onOutputReceived_\" + listenerId] = [wrappedListener.onOutputReceived, wrappedListener];\n LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onOutputSpent_\" + listenerId] = [wrappedListener.onOutputSpent, wrappedListener];\n this._wrappedListeners.push(wrappedListener);\n return this._invokeWorker(\"addListener\", [listenerId]);\n }\n \n async removeListener(listener) {\n for (let i = 0; i < this._wrappedListeners.length; i++) {\n if (this._wrappedListeners[i].getListener() === listener) {\n let listenerId = this._wrappedListeners[i].getId();\n await this._invokeWorker(\"removeListener\", [listenerId]);\n delete LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onSyncProgress_\" + listenerId];\n delete LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onNewBlock_\" + listenerId];\n delete LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onBalancesChanged_\" + listenerId];\n delete LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onOutputReceived_\" + listenerId];\n delete LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onOutputSpent_\" + listenerId];\n this._wrappedListeners.splice(i, 1);\n return;\n }\n }\n throw new MoneroError(\"Listener is not registered with wallet\");\n }\n \n getListeners() {\n let listeners = [];\n for (let wrappedListener of this._wrappedListeners) listeners.push(wrappedListener.getListener());\n return listeners;\n }\n \n async isSynced() {\n return this._invokeWorker(\"isSynced\");\n }\n \n async sync(listenerOrStartHeight, startHeight, allowConcurrentCalls) {\n \n // normalize params\n startHeight = listenerOrStartHeight instanceof MoneroWalletListener ? startHeight : listenerOrStartHeight;\n let listener = listenerOrStartHeight instanceof MoneroWalletListener ? listenerOrStartHeight : undefined;\n if (startHeight === undefined) startHeight = Math.max(await this.getHeight(), await this.getRestoreHeight());\n \n // register listener if given\n if (listener) await this.addListener(listener);\n \n // sync wallet in worker \n let err;\n let result;\n try {\n let resultJson = await this._invokeWorker(\"sync\", [startHeight, allowConcurrentCalls]);\n result = new MoneroSyncResult(resultJson.numBlocksFetched, resultJson.receivedMoney);\n } catch (e) {\n err = e;\n }\n \n // unregister listener\n if (listener) await this.removeListener(listener);\n \n // throw error or return\n if (err) throw err;\n return result;\n }\n \n async startSyncing(syncPeriodInMs) {\n return this._invokeWorker(\"startSyncing\", Array.from(arguments));\n }\n \n async stopSyncing() {\n return this._invokeWorker(\"stopSyncing\");\n }\n \n async scanTxs(txHashes) {\n assert(Array.isArray(txHashes), \"Must provide an array of txs hashes to scan\");\n return this._invokeWorker(\"scanTxs\", [txHashes]);\n }\n \n async rescanSpent() {\n return this._invokeWorker(\"rescanSpent\");\n }\n \n async rescanBlockchain() {\n return this._invokeWorker(\"rescanBlockchain\");\n }\n \n async getBalance(accountIdx, subaddressIdx) {\n return BigInteger.parse(await this._invokeWorker(\"getBalance\", Array.from(arguments)));\n }\n \n async getUnlockedBalance(accountIdx, subaddressIdx) {\n let unlockedBalanceStr = await this._invokeWorker(\"getUnlockedBalance\", Array.from(arguments));\n return BigInteger.parse(unlockedBalanceStr);\n }\n \n async getAccounts(includeSubaddresses, tag) {\n let accounts = [];\n for (let accountJson of (await this._invokeWorker(\"getAccounts\", Array.from(arguments)))) {\n accounts.push(MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson)));\n }\n return accounts;\n }\n \n async getAccount(accountIdx, includeSubaddresses) {\n let accountJson = await this._invokeWorker(\"getAccount\", Array.from(arguments));\n return MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson));\n }\n \n async createAccount(label) {\n let accountJson = await this._invokeWorker(\"createAccount\", Array.from(arguments));\n return MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson));\n }\n \n async getSubaddresses(accountIdx, subaddressIndices) {\n let subaddresses = [];\n for (let subaddressJson of (await this._invokeWorker(\"getSubaddresses\", Array.from(arguments)))) {\n subaddresses.push(MoneroWalletFull._sanitizeSubaddress(new MoneroSubaddress(subaddressJson)));\n }\n return subaddresses;\n }\n \n async createSubaddress(accountIdx, label) {\n let subaddressJson = await this._invokeWorker(\"createSubaddress\", Array.from(arguments));\n return MoneroWalletFull._sanitizeSubaddress(new MoneroSubaddress(subaddressJson));\n }\n \n async getTxs(query) {\n query = MoneroWallet._normalizeTxQuery(query);\n let respJson = await this._invokeWorker(\"getTxs\", [query.getBlock().toJson()]);\n return MoneroWalletFull._deserializeTxs(query, JSON.stringify({blocks: respJson.blocks})); // initialize txs from blocks json string TODO: this stringifies then utility parses, avoid\n }\n \n async getTransfers(query) {\n query = MoneroWallet._normalizeTransferQuery(query);\n let blockJsons = await this._invokeWorker(\"getTransfers\", [query.getTxQuery().getBlock().toJson()]);\n return MoneroWalletFull._deserializeTransfers(query, JSON.stringify({blocks: blockJsons})); // initialize transfers from blocks json string TODO: this stringifies then utility parses, avoid\n }\n \n async getOutputs(query) {\n query = MoneroWallet._normalizeOutputQuery(query);\n let blockJsons = await this._invokeWorker(\"getOutputs\", [query.getTxQuery().getBlock().toJson()]);\n return MoneroWalletFull._deserializeOutputs(query, JSON.stringify({blocks: blockJsons})); // initialize transfers from blocks json string TODO: this stringifies then utility parses, avoid\n }\n \n async exportOutputs(all) {\n return this._invokeWorker(\"exportOutputs\", [all]);\n }\n \n async importOutputs(outputsHex) {\n return this._invokeWorker(\"importOutputs\", [outputsHex]);\n }\n \n async exportKeyImages(all) {\n let keyImages = [];\n for (let keyImageJson of await this._invokeWorker(\"getKeyImages\", [all])) keyImages.push(new MoneroKeyImage(keyImageJson));\n return keyImages;\n }\n \n async importKeyImages(keyImages) {\n let keyImagesJson = [];\n for (let keyImage of keyImages) keyImagesJson.push(keyImage.toJson());\n return new MoneroKeyImageImportResult(await this._invokeWorker(\"importKeyImages\", [keyImagesJson]));\n }\n \n async getNewKeyImagesFromLastImport() {\n throw new MoneroError(\"MoneroWalletFull.getNewKeyImagesFromLastImport() not implemented\");\n }\n \n async freezeOutput(keyImage) {\n return this._invokeWorker(\"freezeOutput\", [keyImage]);\n }\n \n async thawOutput(keyImage) {\n return this._invokeWorker(\"thawOutput\", [keyImage]);\n }\n \n async isOutputFrozen(keyImage) {\n return this._invokeWorker(\"isOutputFrozen\", [keyImage]);\n }\n \n async createTxs(config) {\n config = MoneroWallet._normalizeCreateTxsConfig(config);\n let txSetJson = await this._invokeWorker(\"createTxs\", [config.toJson()]);\n return new MoneroTxSet(txSetJson).getTxs();\n }\n \n async sweepOutput(config) {\n config = MoneroWallet._normalizeSweepOutputConfig(config);\n let txSetJson = await this._invokeWorker(\"sweepOutput\", [config.toJson()]);\n return new MoneroTxSet(txSetJson).getTxs()[0];\n }\n\n async sweepUnlocked(config) {\n config = MoneroWallet._normalizeSweepUnlockedConfig(config);\n let txSetsJson = await this._invokeWorker(\"sweepUnlocked\", [config.toJson()]);\n let txs = [];\n for (let txSetJson of txSetsJson) for (let tx of new MoneroTxSet(txSetJson).getTxs()) txs.push(tx);\n return txs;\n }\n \n async sweepDust(relay) {\n return new MoneroTxSet(await this._invokeWorker(\"sweepDust\", [relay])).getTxs() || [];\n }\n \n async relayTxs(txsOrMetadatas) {\n assert(Array.isArray(txsOrMetadatas), \"Must provide an array of txs or their metadata to relay\");\n let txMetadatas = [];\n for (let txOrMetadata of txsOrMetadatas) txMetadatas.push(txOrMetadata instanceof MoneroTxWallet ? txOrMetadata.getMetadata() : txOrMetadata);\n return this._invokeWorker(\"relayTxs\", [txMetadatas]);\n }\n \n async describeTxSet(txSet) {\n return new MoneroTxSet(await this._invokeWorker(\"describeTxSet\", [txSet.toJson()]));\n }\n \n async signTxs(unsignedTxHex) {\n return this._invokeWorker(\"signTxs\", Array.from(arguments));\n }\n \n async submitTxs(signedTxHex) {\n return this._invokeWorker(\"submitTxs\", Array.from(arguments));\n }\n \n async signMessage(message, signatureType, accountIdx, subaddressIdx) {\n return this._invokeWorker(\"signMessage\", Array.from(arguments));\n }\n \n async verifyMessage(message, address, signature) {\n return new MoneroMessageSignatureResult(await this._invokeWorker(\"verifyMessage\", Array.from(arguments)));\n }\n \n async getTxKey(txHash) {\n return this._invokeWorker(\"getTxKey\", Array.from(arguments));\n }\n \n async checkTxKey(txHash, txKey, address) {\n return new MoneroCheckTx(await this._invokeWorker(\"checkTxKey\", Array.from(arguments)));\n }\n \n async getTxProof(txHash, address, message) {\n return this._invokeWorker(\"getTxProof\", Array.from(arguments));\n }\n \n async checkTxProof(txHash, address, message, signature) {\n return new MoneroCheckTx(await this._invokeWorker(\"checkTxProof\", Array.from(arguments)));\n }\n \n async getSpendProof(txHash, message) {\n return this._invokeWorker(\"getSpendProof\", Array.from(arguments));\n }\n \n async checkSpendProof(txHash, message, signature) {\n return this._invokeWorker(\"checkSpendProof\", Array.from(arguments));\n }\n \n async getReserveProofWallet(message) {\n return this._invokeWorker(\"getReserveProofWallet\", Array.from(arguments));\n }\n \n async getReserveProofAccount(accountIdx, amount, message) {\n try { return await this._invokeWorker(\"getReserveProofAccount\", [accountIdx, amount.toString(), message]); }\n catch (e) { throw new MoneroError(e.message, -1); }\n }\n\n async checkReserveProof(address, message, signature) {\n try { return new MoneroCheckReserve(await this._invokeWorker(\"checkReserveProof\", Array.from(arguments))); }\n catch (e) { throw new MoneroError(e.message, -1); }\n }\n \n async getTxNotes(txHashes) {\n return this._invokeWorker(\"getTxNotes\", Array.from(arguments));\n }\n \n async setTxNotes(txHashes, notes) {\n return this._invokeWorker(\"setTxNotes\", Array.from(arguments));\n }\n \n async getAddressBookEntries(entryIndices) {\n if (!entryIndices) entryIndices = [];\n let entries = [];\n for (let entryJson of await this._invokeWorker(\"getAddressBookEntries\", Array.from(arguments))) {\n entries.push(new MoneroAddressBookEntry(entryJson));\n }\n return entries;\n }\n \n async addAddressBookEntry(address, description) {\n return this._invokeWorker(\"addAddressBookEntry\", Array.from(arguments));\n }\n \n async editAddressBookEntry(index, setAddress, address, setDescription, description) {\n return this._invokeWorker(\"editAddressBookEntry\", Array.from(arguments));\n }\n \n async deleteAddressBookEntry(entryIdx) {\n return this._invokeWorker(\"deleteAddressBookEntry\", Array.from(arguments));\n }\n \n async tagAccounts(tag, accountIndices) {\n return this._invokeWorker(\"tagAccounts\", Array.from(arguments));\n }\n\n async untagAccounts(accountIndices) {\n return this._invokeWorker(\"untagAccounts\", Array.from(arguments));\n }\n \n async getAccountTags() {\n return this._invokeWorker(\"getAccountTags\", Array.from(arguments));\n }\n\n async setAccountTagLabel(tag, label) {\n return this._invokeWorker(\"setAccountTagLabel\", Array.from(arguments));\n }\n \n async getPaymentUri(config) {\n config = MoneroWallet._normalizeCreateTxsConfig(config);\n return this._invokeWorker(\"getPaymentUri\", [config.toJson()]);\n }\n \n async parsePaymentUri(uri) {\n return new MoneroTxConfig(await this._invokeWorker(\"parsePaymentUri\", Array.from(arguments)));\n }\n \n async getAttribute(key) {\n return this._invokeWorker(\"getAttribute\", Array.from(arguments));\n }\n \n async setAttribute(key, val) {\n return this._invokeWorker(\"setAttribute\", Array.from(arguments));\n }\n \n async startMining(numThreads, backgroundMining, ignoreBattery) {\n return this._invokeWorker(\"startMining\", Array.from(arguments));\n }\n \n async stopMining() {\n return this._invokeWorker(\"stopMining\", Array.from(arguments));\n }\n \n async isMultisigImportNeeded() {\n return this._invokeWorker(\"isMultisigImportNeeded\");\n }\n \n async isMultisig() {\n return this._invokeWorker(\"isMultisig\");\n }\n \n async getMultisigInfo() {\n return new MoneroMultisigInfo(await this._invokeWorker(\"getMultisigInfo\"));\n }\n \n async prepareMultisig() {\n return this._invokeWorker(\"prepareMultisig\");\n }\n \n async makeMultisig(multisigHexes, threshold, password) {\n return await this._invokeWorker(\"makeMultisig\", Array.from(arguments));\n }\n \n async exchangeMultisigKeys(multisigHexes, password) {\n return new MoneroMultisigInitResult(await this._invokeWorker(\"exchangeMultisigKeys\", Array.from(arguments)));\n }\n \n async exportMultisigHex() {\n return this._invokeWorker(\"exportMultisigHex\");\n }\n \n async importMultisigHex(multisigHexes) {\n return this._invokeWorker(\"importMultisigHex\", Array.from(arguments));\n }\n \n async signMultisigTxHex(multisigTxHex) {\n return new MoneroMultisigSignResult(await this._invokeWorker(\"signMultisigTxHex\", Array.from(arguments)));\n }\n \n async submitMultisigTxHex(signedMultisigTxHex) {\n return this._invokeWorker(\"submitMultisigTxHex\", Array.from(arguments));\n }\n \n async getData() {\n return this._invokeWorker(\"getData\");\n }\n \n async moveTo(path) {\n return MoneroWalletFull._moveTo(path, this);\n }\n \n async changePassword(oldPassword, newPassword) {\n await this._invokeWorker(\"changePassword\", Array.from(arguments));\n if (this._path) await this.save(); // auto save\n }\n \n async save() {\n return MoneroWalletFull._save(this);\n }\n \n async close(save) {\n if (save) await this.save();\n while (this._wrappedListeners.length) await this.removeListener(this._wrappedListeners[0].getListener());\n await this._invokeWorker(\"close\");\n delete LibraryUtils.WORKER_OBJECTS[this._walletId];\n }\n \n async isClosed() {\n return this._invokeWorker(\"isClosed\");\n }\n \n // --------------------------- PRIVATE HELPERS ------------------------------\n \n async _invokeWorker(fnName, args) {\n return await LibraryUtils.invokeWorker(this._walletId, fnName, args);\n }\n}\n\n// -------------------------------- LISTENING ---------------------------------\n\n/**\n * Receives notifications directly from wasm c++.\n * \n * @private\n */\nclass WalletFullListener {\n \n constructor(wallet) {\n this._wallet = wallet;\n }\n \n async onSyncProgress(height, startHeight, endHeight, percentDone, message) {\n for (let listener of this._wallet.getListeners()) await listener.onSyncProgress(height, startHeight, endHeight, percentDone, message);\n }\n \n async onNewBlock(height) {\n for (let listener of this._wallet.getListeners()) await listener.onNewBlock(height);\n }\n \n async onBalancesChanged(newBalanceStr, newUnlockedBalanceStr) {\n for (let listener of this._wallet.getListeners()) await listener.onBalancesChanged(BigInteger.parse(newBalanceStr), BigInteger.parse(newUnlockedBalanceStr));\n }\n \n async onOutputReceived(height, txHash, amountStr, accountIdx, subaddressIdx, version, unlockTime, isLocked) {\n \n // build received output\n let output = new MoneroOutputWallet();\n output.setAmount(BigInteger.parse(amountStr));\n output.setAccountIndex(accountIdx);\n output.setSubaddressIndex(subaddressIdx);\n let tx = new MoneroTxWallet();\n tx.setHash(txHash);\n tx.setVersion(version);\n tx.setUnlockTime(unlockTime);\n output.setTx(tx);\n tx.setOutputs([output]);\n tx.setIsIncoming(true);\n tx.setIsLocked(isLocked);\n if (height > 0) {\n let block = new MoneroBlock().setHeight(height);\n block.setTxs([tx]);\n tx.setBlock(block);\n tx.setIsConfirmed(true);\n tx.setInTxPool(false);\n tx.setIsFailed(false);\n } else {\n tx.setIsConfirmed(false);\n tx.setInTxPool(true);\n }\n \n // announce output\n for (let listener of this._wallet.getListeners()) await listener.onOutputReceived(tx.getOutputs()[0]);\n }\n \n async onOutputSpent(height, txHash, amountStr, accountIdxStr, subaddressIdxStr, version, unlockTime, isLocked) {\n \n // build spent output\n let output = new MoneroOutputWallet();\n output.setAmount(BigInteger.parse(amountStr));\n if (accountIdxStr) output.setAccountIndex(parseInt(accountIdxStr));\n if (subaddressIdxStr) output.setSubaddressIndex(parseInt(subaddressIdxStr));\n let tx = new MoneroTxWallet();\n tx.setHash(txHash);\n tx.setVersion(version);\n tx.setUnlockTime(unlockTime);\n tx.setIsLocked(isLocked);\n output.setTx(tx);\n tx.setInputs([output]);\n if (height > 0) {\n let block = new MoneroBlock().setHeight(height);\n block.setTxs([tx]);\n tx.setBlock(block);\n tx.setIsConfirmed(true);\n tx.setInTxPool(false);\n tx.setIsFailed(false);\n } else {\n tx.setIsConfirmed(false);\n tx.setInTxPool(true);\n }\n \n // notify wallet listeners\n for (let listener of this._wallet.getListeners()) await listener.onOutputSpent(tx.getInputs()[0]);\n }\n}\n\n/**\n * Internal listener to bridge notifications to external listeners.\n * \n * @private\n */\nclass WalletWorkerListener {\n \n constructor(listener) {\n this._id = GenUtils.getUUID();\n this._listener = listener;\n }\n \n getId() {\n return this._id;\n }\n \n getListener() {\n return this._listener;\n }\n \n onSyncProgress(height, startHeight, endHeight, percentDone, message) {\n this._listener.onSyncProgress(height, startHeight, endHeight, percentDone, message);\n }\n\n async onNewBlock(height) {\n await this._listener.onNewBlock(height);\n }\n \n async onBalancesChanged(newBalanceStr, newUnlockedBalanceStr) {\n await this._listener.onBalancesChanged(BigInteger.parse(newBalanceStr), BigInteger.parse(newUnlockedBalanceStr));\n }\n\n async onOutputReceived(blockJson) {\n let block = new MoneroBlock(blockJson, MoneroBlock.DeserializationType.TX_WALLET);\n await this._listener.onOutputReceived(block.getTxs()[0].getOutputs()[0]);\n }\n \n async onOutputSpent(blockJson) {\n let block = new MoneroBlock(blockJson, MoneroBlock.DeserializationType.TX_WALLET);\n await this._listener.onOutputSpent(block.getTxs()[0].getInputs()[0]);\n }\n}\n\nMoneroWalletFull.DEFAULT_SYNC_PERIOD_IN_MS = 10000; // 10 second sync period by default\n\nmodule.exports = MoneroWalletFull;","const assert = require(\"assert\");\nconst LibraryUtils = require(\"../common/LibraryUtils\");\nconst MoneroError = require(\"../common/MoneroError\");\nconst MoneroNetworkType = require(\"../daemon/model/MoneroNetworkType\");\nconst MoneroSubaddress = require(\"./model/MoneroSubaddress\");\nconst MoneroUtils = require(\"../common/MoneroUtils\");\nconst MoneroVersion = require(\"../daemon/model/MoneroVersion\");\nconst MoneroWallet = require(\"./MoneroWallet\");\nconst MoneroWalletConfig = require(\"./model/MoneroWalletConfig\");\n\n/**\n * Implements a MoneroWallet which only manages keys using WebAssembly.\n * \n * @implements {MoneroWallet}\n * @hideconstructor\n */\nclass MoneroWalletKeys extends MoneroWallet {\n \n // --------------------------- STATIC UTILITIES -----------------------------\n \n /**\n *

Create a wallet using WebAssembly bindings to monero-project.

\n * \n *

Example:

\n * \n * \n * let wallet = await MoneroWalletKeys.createWallet({
\n *    password: \"abc123\",
\n *    networkType: MoneroNetworkType.STAGENET,
\n *    seed: \"coexist igloo pamphlet lagoon...\"
\n * });\n *
\n * \n * @param {MoneroWalletConfig|object} config - MoneroWalletConfig or equivalent config object\n * @param {string|number} config.networkType - network type of the wallet to create (one of \"mainnet\", \"testnet\", \"stagenet\" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)\n * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)\n * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase\n * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)\n * @param {string} config.privateViewKey - private view key of the wallet to create (optional)\n * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)\n * @param {string} config.language - language of the wallet's seed (defaults to \"English\" or auto-detected)\n * @return {MoneroWalletKeys} the created wallet\n */\n static async createWallet(config) {\n \n // normalize and validate config\n if (config === undefined) throw new MoneroError(\"Must provide config to create wallet\");\n config = config instanceof MoneroWalletConfig ? config : new MoneroWalletConfig(config);\n if (config.getSeed() !== undefined && (config.getPrimaryAddress() !== undefined || config.getPrivateViewKey() !== undefined || config.getPrivateSpendKey() !== undefined)) {\n throw new MoneroError(\"Wallet may be initialized with a seed or keys but not both\");\n }\n if (config.getNetworkType() === undefined) throw new MoneroError(\"Must provide a networkType: 'mainnet', 'testnet' or 'stagenet'\");\n if (config.getSaveCurrent() === true) throw new MoneroError(\"Cannot save current wallet when creating keys-only wallet\");\n \n // create wallet\n if (config.getSeed() !== undefined) return MoneroWalletKeys._createWalletFromSeed(config);\n else if (config.getPrivateSpendKey() !== undefined || config.getPrimaryAddress() !== undefined) return MoneroWalletKeys._createWalletFromKeys(config);\n else return MoneroWalletKeys._createWalletRandom(config);\n }\n \n static async _createWalletRandom(config) {\n\n // validate and sanitize params\n config = config.copy();\n if (config.getSeedOffset() !== undefined) throw new MoneroError(\"Cannot provide seedOffset when creating random wallet\");\n if (config.getRestoreHeight() !== undefined) throw new MoneroError(\"Cannot provide restoreHeight when creating random wallet\");\n MoneroNetworkType.validate(config.getNetworkType());\n if (config.getLanguage() === undefined) config.setLanguage(\"English\");\n \n // load wasm module\n let module = await LibraryUtils.loadKeysModule();\n \n // queue call to wasm module\n return module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = async function(cppAddress) {\n if (typeof cppAddress === \"string\") reject(new MoneroError(cppAddress));\n else resolve(new MoneroWalletKeys(cppAddress));\n };\n \n // create wallet in wasm and invoke callback when done\n module.create_keys_wallet_random(JSON.stringify(config.toJson()), callbackFn);\n });\n });\n }\n \n static async _createWalletFromSeed(config) {\n \n // validate and sanitize params\n MoneroNetworkType.validate(config.getNetworkType());\n if (config.getSeed() === undefined) throw Error(\"Must define seed to create wallet from\");\n if (config.getSeedOffset() === undefined) config.setSeedOffset(\"\");\n if (config.getLanguage() !== undefined) throw new MoneroError(\"Cannot provide language when creating wallet from seed\");\n \n // load wasm module\n let module = await LibraryUtils.loadKeysModule();\n \n // queue call to wasm module\n return module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = async function(cppAddress) {\n if (typeof cppAddress === \"string\") reject(new MoneroError(cppAddress));\n else resolve(new MoneroWalletKeys(cppAddress));\n };\n \n // create wallet in wasm and invoke callback when done\n module.create_keys_wallet_from_seed(JSON.stringify(config.toJson()), callbackFn);\n });\n });\n }\n \n static async _createWalletFromKeys(config) {\n \n // validate and sanitize params\n if (config.getSeedOffset() !== undefined) throw new MoneroError(\"Cannot provide seedOffset when creating wallet from keys\");\n MoneroNetworkType.validate(config.getNetworkType());\n if (config.getPrimaryAddress() === undefined) config.setPrimaryAddress(\"\");\n if (config.getPrivateViewKey() === undefined) config.setPrivateViewKey(\"\");\n if (config.getPrivateSpendKey() === undefined) config.setPrivateSpendKey(\"\");\n if (config.getLanguage() === undefined) config.setLanguage(\"English\");\n \n // load wasm module\n let module = await LibraryUtils.loadKeysModule();\n \n // queue call to wasm module\n return module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = async function(cppAddress) {\n if (typeof cppAddress === \"string\") reject(new MoneroError(cppAddress));\n else resolve(new MoneroWalletKeys(cppAddress));\n };\n \n // create wallet in wasm and invoke callback when done\n module.create_keys_wallet_from_keys(JSON.stringify(config.toJson()), callbackFn);\n });\n });\n }\n \n static async getSeedLanguages() {\n let module = await LibraryUtils.loadKeysModule();\n return module.queueTask(async function() {\n return JSON.parse(module.get_keys_wallet_seed_languages()).languages;\n });\n }\n \n // --------------------------- INSTANCE METHODS -----------------------------\n \n /**\n * Internal constructor which is given the memory address of a C++ wallet\n * instance.\n * \n * This method should not be called externally but should be called through\n * static wallet creation utilities in this class.\n * \n * @param {int} cppAddress - address of the wallet instance in C++\n */\n constructor(cppAddress) {\n super();\n this._cppAddress = cppAddress;\n this._module = LibraryUtils.getWasmModule();\n if (!this._module.create_full_wallet) throw new MoneroError(\"WASM module not loaded - create wallet instance using static utilities\"); // static utilites pre-load wasm module\n }\n \n async addListener(listener) {\n throw new MoneroError(\"MoneroWalletKeys does not support adding listeners\");\n }\n \n async removeListener(listener) {\n throw new MoneroError(\"MoneroWalletKeys does not support removing listeners\");\n }\n \n async isViewOnly() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.is_view_only(that._cppAddress);\n });\n }\n \n async isConnectedToDaemon() {\n return false;\n }\n \n async getVersion() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let versionStr = that._module.get_version(that._cppAddress);\n let versionJson = JSON.parse(versionStr);\n return new MoneroVersion(versionJson.number, versionJson.isRelease);\n });\n }\n \n /**\n * @ignore\n */\n getPath() {\n this._assertNotClosed();\n throw new MoneroError(\"MoneroWalletKeys does not support a persisted path\");\n }\n \n async getSeed() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let resp = that._module.get_seed(that._cppAddress);\n const errorStr = \"error: \";\n if (resp.indexOf(errorStr) === 0) throw new MoneroError(resp.substring(errorStr.length));\n return resp ? resp : undefined;\n });\n }\n \n async getSeedLanguage() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let resp = that._module.get_seed_language(that._cppAddress);\n let errorKey = \"error: \";\n if (resp.indexOf(errorKey) === 0) throw new MoneroError(resp.substring(errorStr.length));\n return resp ? resp : undefined;\n });\n }\n\n async getPrivateSpendKey() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let resp = that._module.get_private_spend_key(that._cppAddress);\n let errorKey = \"error: \";\n if (resp.indexOf(errorKey) === 0) throw new MoneroError(resp.substring(errorStr.length));\n return resp ? resp : undefined;\n });\n }\n \n async getPrivateViewKey() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let resp = that._module.get_private_view_key(that._cppAddress);\n let errorKey = \"error: \";\n if (resp.indexOf(errorKey) === 0) throw new MoneroError(resp.substring(errorStr.length));\n return resp ? resp : undefined;\n });\n }\n \n async getPublicViewKey() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let resp = that._module.get_public_view_key(that._cppAddress);\n let errorKey = \"error: \";\n if (resp.indexOf(errorKey) === 0) throw new MoneroError(resp.substring(errorStr.length));\n return resp ? resp : undefined;\n });\n }\n \n async getPublicSpendKey() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let resp = that._module.get_public_spend_key(that._cppAddress);\n let errorKey = \"error: \";\n if (resp.indexOf(errorKey) === 0) throw new MoneroError(resp.substring(errorStr.length));\n return resp ? resp : undefined;\n });\n }\n \n async getAddress(accountIdx, subaddressIdx) {\n this._assertNotClosed();\n assert(typeof accountIdx === \"number\");\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.get_address(that._cppAddress, accountIdx, subaddressIdx);\n });\n }\n \n async getAddressIndex(address) {\n this._assertNotClosed();\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let resp = that._module.get_address_index(that._cppAddress, address);\n if (resp.charAt(0) !== '{') throw new MoneroError(resp);\n return new MoneroSubaddress(JSON.parse(resp));\n });\n }\n \n getAccounts() {\n this._assertNotClosed();\n throw new MoneroError(\"MoneroWalletKeys does not support getting an enumerable set of accounts; query specific accounts\");\n }\n \n // getIntegratedAddress(paymentId) // TODO\n // decodeIntegratedAddress\n \n async close(save) {\n if (this._isClosed) return; // closing a closed wallet has no effect\n \n // save wallet if requested\n if (save) await this.save();\n \n // queue task to use wasm module\n let that = this;\n return that._module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n if (that._isClosed) {\n resolve();\n return;\n }\n \n // define callback for wasm\n let callbackFn = async function() {\n delete that._cppAddress;\n that._isClosed = true;\n resolve();\n };\n \n // close wallet in wasm and invoke callback when done\n that._module.close(that._cppAddress, false, callbackFn); // saving handled external to webassembly\n });\n });\n }\n \n async isClosed() {\n return this._isClosed;\n }\n \n // ----------- ADD JSDOC FOR SUPPORTED DEFAULT IMPLEMENTATIONS --------------\n \n async getPrimaryAddress() { return super.getPrimaryAddress(...arguments); }\n async getSubaddress() { return super.getSubaddress(...arguments); }\n \n // ----------------------------- PRIVATE HELPERS ----------------------------\n \n _assertNotClosed() {\n if (this._isClosed) throw new MoneroError(\"Wallet is closed\");\n }\n}\n\nmodule.exports = MoneroWalletKeys;","const assert = require(\"assert\");\nconst BigInteger = require(\"../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../common/GenUtils\");\nconst LibraryUtils = require(\"../common/LibraryUtils\");\nconst TaskLooper = require(\"../common/TaskLooper\");\nconst MoneroAccount = require(\"./model/MoneroAccount\");\nconst MoneroAccountTag = require(\"./model/MoneroAccountTag\");\nconst MoneroAddressBookEntry = require(\"./model/MoneroAddressBookEntry\");\nconst MoneroBlock = require(\"../daemon/model/MoneroBlock\");\nconst MoneroBlockHeader = require(\"../daemon/model/MoneroBlockHeader\");\nconst MoneroCheckReserve = require(\"./model/MoneroCheckReserve\");\nconst MoneroCheckTx = require(\"./model/MoneroCheckTx\");\nconst MoneroDestination = require(\"./model/MoneroDestination\");\nconst MoneroError = require(\"../common/MoneroError\");\nconst MoneroIncomingTransfer = require(\"./model/MoneroIncomingTransfer\");\nconst MoneroIntegratedAddress = require(\"./model/MoneroIntegratedAddress\");\nconst MoneroKeyImage = require(\"../daemon/model/MoneroKeyImage\");\nconst MoneroKeyImageImportResult = require(\"./model/MoneroKeyImageImportResult\");\nconst MoneroMultisigInfo = require(\"./model/MoneroMultisigInfo\");\nconst MoneroMultisigInitResult = require(\"./model/MoneroMultisigInitResult\");\nconst MoneroMultisigSignResult = require(\"./model/MoneroMultisigSignResult\");\nconst MoneroOutgoingTransfer = require(\"./model/MoneroOutgoingTransfer\");\nconst MoneroOutputQuery = require(\"./model/MoneroOutputQuery\");\nconst MoneroOutputWallet = require(\"./model/MoneroOutputWallet\");\nconst MoneroRpcConnection = require(\"../common/MoneroRpcConnection\");\nconst MoneroRpcError = require(\"../common/MoneroRpcError\");\nconst MoneroSubaddress = require(\"./model/MoneroSubaddress\");\nconst MoneroSyncResult = require(\"./model/MoneroSyncResult\");\nconst MoneroTransferQuery = require(\"./model/MoneroTransferQuery\");\nconst MoneroTxConfig = require(\"./model/MoneroTxConfig\");\nconst MoneroTxQuery = require(\"./model/MoneroTxQuery\");\nconst MoneroTxSet = require(\"./model/MoneroTxSet\");\nconst MoneroTxWallet = require(\"./model/MoneroTxWallet\");\nconst MoneroUtils = require(\"../common/MoneroUtils\");\nconst MoneroVersion = require(\"../daemon/model/MoneroVersion\");\nconst MoneroWallet = require(\"./MoneroWallet\");\nconst MoneroWalletConfig = require(\"./model/MoneroWalletConfig\");\nconst MoneroWalletListener = require(\"./model/MoneroWalletListener\");\nconst MoneroMessageSignatureType = require(\"./model/MoneroMessageSignatureType\");\nconst MoneroMessageSignatureResult = require(\"./model/MoneroMessageSignatureResult\");\nconst ThreadPool = require(\"../common/ThreadPool\");\nconst SslOptions = require(\"../common/SslOptions\");\n\n/**\n * Copyright (c) woodser\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/**\n * Implements a MoneroWallet as a client of monero-wallet-rpc.\n * \n * @implements {MoneroWallet}\n * @hideconstructor\n */\nclass MoneroWalletRpc extends MoneroWallet {\n \n /**\n *

Construct a wallet RPC client (for internal use).

\n * \n * @param {string|object|MoneroRpcConnection|string[]} uriOrConfig - uri of monero-wallet-rpc or JS config object or MoneroRpcConnection or command line parameters to run a monero-wallet-rpc process internally\n * @param {string} uriOrConfig.uri - uri of monero-wallet-rpc\n * @param {string} uriOrConfig.username - username to authenticate with monero-wallet-rpc (optional)\n * @param {string} uriOrConfig.password - password to authenticate with monero-wallet-rpc (optional)\n * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {string} username - username to authenticate with monero-wallet-rpc (optional)\n * @param {string} password - password to authenticate with monero-wallet-rpc (optional)\n * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)\n */\n constructor(uriOrConfig, username, password, rejectUnauthorized) {\n super();\n if (GenUtils.isArray(uriOrConfig)) throw new MoneroError(\"Array with command parameters is invalid first parameter, use `await monerojs.connectToWalletRpc(...)`\");\n this.config = MoneroWalletRpc._normalizeConfig(uriOrConfig, username, password, rejectUnauthorized);\n this.rpc = new MoneroRpcConnection(this.config);\n this.addressCache = {}; // avoid unecessary requests for addresses\n this.syncPeriodInMs = MoneroWalletRpc.DEFAULT_SYNC_PERIOD_IN_MS;\n this.listeners = [];\n }\n \n /**\n *

Create a client connected to monero-wallet-rpc (for internal use).

\n * \n * @param {string|string[]|object|MoneroRpcConnection} uriOrConfig - uri of monero-wallet-rpc or terminal parameters or JS config object or MoneroRpcConnection\n * @param {string} uriOrConfig.uri - uri of monero-wallet-rpc\n * @param {string} uriOrConfig.username - username to authenticate with monero-wallet-rpc (optional)\n * @param {string} uriOrConfig.password - password to authenticate with monero-wallet-rpc (optional)\n * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {string} username - username to authenticate with monero-wallet-rpc (optional)\n * @param {string} password - password to authenticate with monero-wallet-rpc (optional)\n * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @return {MoneroWalletRpc} the wallet RPC client\n */\n static async _connectToWalletRpc(uriOrConfig, username, password, rejectUnauthorized) {\n if (GenUtils.isArray(uriOrConfig)) return MoneroWalletRpc._startWalletRpcProcess(uriOrConfig); // handle array as terminal command\n else return new MoneroWalletRpc(...arguments); // otherwise connect to server\n }\n \n static async _startWalletRpcProcess(cmd) {\n assert(GenUtils.isArray(cmd), \"Must provide string array with command line parameters\");\n \n // start process\n this.process = require('child_process').spawn(cmd[0], cmd.slice(1), {});\n this.process.stdout.setEncoding('utf8');\n this.process.stderr.setEncoding('utf8');\n \n // return promise which resolves after starting monero-wallet-rpc\n let uri;\n let that = this;\n let output = \"\";\n return new Promise(function(resolve, reject) {\n \n // handle stdout\n that.process.stdout.on('data', function(data) {\n let line = data.toString();\n LibraryUtils.log(2, line);\n output += line + '\\n'; // capture output in case of error\n \n // extract uri from e.g. \"I Binding on 127.0.0.1 (IPv4):38085\"\n let uriLineContains = \"Binding on \";\n let uriLineContainsIdx = line.indexOf(uriLineContains);\n if (uriLineContainsIdx >= 0) {\n let host = line.substring(uriLineContainsIdx + uriLineContains.length, line.lastIndexOf(' '));\n let unformattedLine = line.replace(/\\u001b\\[.*?m/g, '').trim(); // remove color formatting\n let port = unformattedLine.substring(unformattedLine.lastIndexOf(':') + 1);\n let sslIdx = cmd.indexOf(\"--rpc-ssl\");\n let sslEnabled = sslIdx >= 0 ? \"enabled\" == cmd[sslIdx + 1].toLowerCase() : false;\n uri = (sslEnabled ? \"https\" : \"http\") + \"://\" + host + \":\" + port;\n }\n \n // read success message\n if (line.indexOf(\"Starting wallet RPC server\") >= 0) {\n \n // get username and password from params\n let userPassIdx = cmd.indexOf(\"--rpc-login\");\n let userPass = userPassIdx >= 0 ? cmd[userPassIdx + 1] : undefined;\n let username = userPass === undefined ? undefined : userPass.substring(0, userPass.indexOf(':'));\n let password = userPass === undefined ? undefined : userPass.substring(userPass.indexOf(':') + 1);\n \n // create client connected to internal process\n let wallet = new MoneroWalletRpc(uri, username, password);\n wallet.process = that.process;\n \n // resolve promise with client connected to internal process \n this.isResolved = true;\n resolve(wallet);\n }\n });\n \n // handle stderr\n that.process.stderr.on('data', function(data) {\n if (LibraryUtils.getLogLevel() >= 2) console.error(data);\n });\n \n // handle exit\n that.process.on(\"exit\", function(code) {\n if (!this.isResolved) reject(new MoneroError(\"monero-wallet-rpc process terminated with exit code \" + code + (output ? \":\\n\\n\" + output : \"\")));\n });\n \n // handle error\n that.process.on(\"error\", function(err) {\n if (err.message.indexOf(\"ENOENT\") >= 0) reject(new MoneroError(\"monero-wallet-rpc does not exist at path '\" + cmd[0] + \"'\"));\n if (!this.isResolved) reject(err);\n });\n \n // handle uncaught exception\n that.process.on(\"uncaughtException\", function(err, origin) {\n console.error(\"Uncaught exception in monero-wallet-rpc process: \" + err.message);\n console.error(origin);\n reject(err);\n });\n });\n }\n \n // --------------------------- RPC WALLET METHODS ---------------------------\n \n /**\n * Get the internal process running monero-wallet-rpc.\n * \n * @return the process running monero-wallet-rpc, undefined if not created from new process\n */\n getProcess() {\n return this.process;\n }\n \n /**\n * Stop the internal process running monero-wallet-rpc, if applicable.\n * \n * @param {boolean} force specifies if the process should be destroyed forcibly\n * @return {Promise} the exit code from stopping the process\n */\n async stopProcess(force) {\n if (this.process === undefined) throw new MoneroError(\"MoneroWalletRpc instance not created from new process\");\n let listenersCopy = GenUtils.copyArray(this.getListeners());\n for (let listener of listenersCopy) await this.removeListener(listener);\n return GenUtils.killProcess(this.process, force ? \"sigkill\" : undefined);\n }\n \n /**\n * Get the wallet's RPC connection.\n * \n * @return {MoneroWalletRpc} the wallet's rpc connection\n */\n getRpcConnection() {\n return this.rpc;\n }\n \n /**\n *

Open an existing wallet on the monero-wallet-rpc server.

\n * \n *

Example:

\n * \n * \n * let wallet = new MoneroWalletRpc(\"http://localhost:38084\", \"rpc_user\", \"abc123\");
\n * await wallet.openWallet(\"mywallet1\", \"supersecretpassword\");
\n * await wallet.openWallet({
\n *    path: \"mywallet2\",
\n *    password: \"supersecretpassword\",
\n *    serverUri: \"http://locahost:38081\",
\n *    rejectUnauthorized: false
\n * });
\n *
\n * \n * @param {string|object|MoneroWalletConfig} pathOrConfig - the wallet's name or configuration to open\n * @param {string} pathOrConfig.path - path of the wallet to create (optional, in-memory wallet if not given)\n * @param {string} pathOrConfig.password - password of the wallet to create\n * @param {string} pathOrConfig.serverUri - uri of a daemon to use (optional, monero-wallet-rpc usually started with daemon config)\n * @param {string} pathOrConfig.serverUsername - username to authenticate with the daemon (optional)\n * @param {string} pathOrConfig.serverPassword - password to authenticate with the daemon (optional)\n * @param {boolean} pathOrConfig.rejectUnauthorized - reject self-signed server certificates if true (defaults to true)\n * @param {MoneroRpcConnection|object} pathOrConfig.server - MoneroRpcConnection or equivalent JS object providing daemon configuration (optional)\n * @param {string} password is the wallet's password\n * @return {MoneroWalletRpc} this wallet client\n */\n async openWallet(pathOrConfig, password) {\n \n // normalize and validate config\n let config = new MoneroWalletConfig(typeof pathOrConfig === \"string\" ? {path: pathOrConfig, password: password ? password : \"\"} : pathOrConfig);\n // TODO: ensure other fields are uninitialized?\n \n // open wallet on rpc server\n if (!config.getPath()) throw new MoneroError(\"Must provide name of wallet to open\");\n await this.rpc.sendJsonRequest(\"open_wallet\", {filename: config.getPath(), password: config.getPassword()});\n await this._clear();\n this.path = config.getPath();\n \n // set daemon if provided\n if (config.getServer()) return this.setDaemonConnection(config.getServer());\n return this;\n }\n \n /**\n *

Create and open a wallet on the monero-wallet-rpc server.

\n * \n *

Example:

\n * \n * \n * // construct client to monero-wallet-rpc
\n * let walletRpc = new MoneroWalletRpc(\"http://localhost:38084\", \"rpc_user\", \"abc123\");

\n * \n * // create and open wallet on monero-wallet-rpc
\n * await walletRpc.createWallet({
\n *    path: \"mywallet\",
\n *    password: \"abc123\",
\n *    seed: \"coexist igloo pamphlet lagoon...\",
\n *    restoreHeight: 1543218l
\n * });\n *
\n * \n * @param {object|MoneroWalletConfig} config - MoneroWalletConfig or equivalent JS object\n * @param {string} config.path - path of the wallet to create (optional, in-memory wallet if not given)\n * @param {string} config.password - password of the wallet to create\n * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)\n * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed\n * @param {boolean} config.isMultisig - restore multisig wallet from seed\n * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)\n * @param {string} config.privateViewKey - private view key of the wallet to create (optional)\n * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)\n * @param {number} config.restoreHeight - block height to start scanning from (defaults to 0 unless generating random wallet)\n * @param {string} config.language - language of the wallet's mnemonic phrase or seed (defaults to \"English\" or auto-detected)\n * @param {string} config.serverUri - uri of a daemon to use (optional, monero-wallet-rpc usually started with daemon config)\n * @param {string} config.serverUsername - username to authenticate with the daemon (optional)\n * @param {string} config.serverPassword - password to authenticate with the daemon (optional)\n * @param {boolean} config.rejectUnauthorized - reject self-signed server certificates if true (defaults to true)\n * @param {MoneroRpcConnection|object} config.server - MoneroRpcConnection or equivalent JS object providing daemon configuration (optional)\n * @param {boolean} config.saveCurrent - specifies if the current RPC wallet should be saved before being closed (default true)\n * @return {MoneroWalletRpc} this wallet client\n */\n async createWallet(config) {\n \n // normalize and validate config\n if (config === undefined) throw new MoneroError(\"Must provide config to create wallet\");\n config = new MoneroWalletConfig(config);\n if (config.getSeed() !== undefined && (config.getPrimaryAddress() !== undefined || config.getPrivateViewKey() !== undefined || config.getPrivateSpendKey() !== undefined)) {\n throw new MoneroError(\"Wallet may be initialized with a seed or keys but not both\");\n }\n if (config.getNetworkType() !== undefined) throw new MoneroError(\"Cannot provide networkType when creating RPC wallet because server's network type is already set\");\n if (config.getAccountLookahead() !== undefined || config.getSubaddressLookahead() !== undefined) throw new MoneroError(\"monero-wallet-rpc does not support creating wallets with subaddress lookahead over rpc\");\n if (config.getPassword() === undefined) config.setPassword(\"\");\n\n // create wallet\n if (config.getSeed() !== undefined) await this._createWalletFromSeed(config);\n else if (config.getPrivateSpendKey() !== undefined || config.getPrimaryAddress() !== undefined) await this._createWalletFromKeys(config);\n else await this._createWalletRandom(config);\n \n // set daemon if provided\n if (config.getServer()) return this.setDaemonConnection(config.getServer());\n return this;\n }\n \n /**\n * Create and open a new wallet with a randomly generated seed on the RPC server.\n * \n * @param {MoneroWalletConfig} config - the wallet configuration\n * @return {MoneroWalletRpc} this wallet client\n */\n async _createWalletRandom(config) {\n if (config.getSeedOffset() !== undefined) throw new MoneroError(\"Cannot provide seedOffset when creating random wallet\");\n if (config.getRestoreHeight() !== undefined) throw new MoneroError(\"Cannot provide restoreHeight when creating random wallet\");\n if (config.getSaveCurrent() === false) throw new MoneroError(\"Current wallet is saved automatically when creating random wallet\");\n if (!config.getPath()) throw new MoneroError(\"Name is not initialized\");\n if (!config.getLanguage()) config.setLanguage(MoneroWallet.DEFAULT_LANGUAGE);\n let params = { filename: config.getPath(), password: config.getPassword(), language: config.getLanguage() };\n try {\n await this.rpc.sendJsonRequest(\"create_wallet\", params);\n } catch (err) {\n this._handleCreateWalletError(config.getPath(), err);\n }\n await this._clear();\n this.path = config.getPath();\n return this;\n }\n \n /**\n * Create and open a wallet from an existing seed on the RPC server,\n * closing the currently open wallet if applicable.\n * \n * @param {MoneroWalletConfig} config - the wallet configuration\n * @return {MoneroWalletRpc} this wallet client\n */\n async _createWalletFromSeed(config) {\n try {\n await this.rpc.sendJsonRequest(\"restore_deterministic_wallet\", {\n filename: config.getPath(),\n password: config.getPassword(),\n seed: config.getSeed(),\n seed_offset: config.getSeedOffset(),\n enable_multisig_experimental: config.isMultisig(),\n restore_height: config.getRestoreHeight(),\n language: config.getLanguage(),\n autosave_current: config.getSaveCurrent()\n });\n } catch (err) {\n this._handleCreateWalletError(config.getPath(), err);\n }\n await this._clear();\n this.path = config.getPath();\n return this;\n }\n \n /**\n * Create a wallet on the RPC server from an address, view key, and (optionally) spend key.\n * \n * @param {MoneroWalletConfig} config - the wallet configuration\n * @return {MoneroWalletRpc} this wallet client\n */\n async _createWalletFromKeys(config) {\n if (config.getSeedOffset() !== undefined) throw new MoneroError(\"Cannot provide seedOffset when creating wallet from keys\");\n if (config.getRestoreHeight() === undefined) config.setRestoreHeight(0);\n if (config.getLanguage() === undefined) config.setLanguage(MoneroWallet.DEFAULT_LANGUAGE);\n try {\n await this.rpc.sendJsonRequest(\"generate_from_keys\", {\n filename: config.getPath(),\n password: config.getPassword(),\n address: config.getPrimaryAddress(),\n viewkey: config.getPrivateViewKey(),\n spendkey: config.getPrivateSpendKey(),\n restore_height: config.getRestoreHeight(),\n autosave_current: config.getSaveCurrent()\n });\n } catch (err) {\n this._handleCreateWalletError(config.getPath(), err);\n }\n await this._clear();\n this.path = config.getPath();\n return this;\n }\n \n _handleCreateWalletError(name, err) {\n if (err.message === \"Cannot create wallet. Already exists.\") throw new MoneroRpcError(\"Wallet already exists: \" + name, err.getCode(), err.getRpcMethod(), err.getRpcParams());\n if (err.message === \"Electrum-style word list failed verification\") throw new MoneroRpcError(\"Invalid mnemonic\", err.getCode(), err.getRpcMethod(), err.getRpcParams());\n throw err;\n }\n \n async isViewOnly() {\n try {\n await this.rpc.sendJsonRequest(\"query_key\", {key_type: \"mnemonic\"});\n return false; // key retrieval succeeds if not view only\n } catch (e) {\n if (e.getCode() === -29) return true; // wallet is view only\n if (e.getCode() === -1) return false; // wallet is offline but not view only\n throw e;\n }\n }\n \n /**\n * Set the wallet's daemon connection.\n * \n * @param {string|MoneroRpcConnection} uriOrConnection - the daemon's URI or connection (defaults to offline)\n * @param {boolean} isTrusted - indicates if the daemon in trusted\n * @param {SslOptions} sslOptions - custom SSL configuration\n */\n async setDaemonConnection(uriOrRpcConnection, isTrusted, sslOptions) {\n let connection = !uriOrRpcConnection ? undefined : uriOrRpcConnection instanceof MoneroRpcConnection ? uriOrRpcConnection : new MoneroRpcConnection(uriOrRpcConnection);\n if (!sslOptions) sslOptions = new SslOptions();\n let params = {};\n params.address = connection ? connection.getUri() : \"bad_uri\"; // TODO monero-wallet-rpc: bad daemon uri necessary for offline?\n params.username = connection ? connection.getUsername() : \"\";\n params.password = connection ? connection.getPassword() : \"\";\n params.trusted = isTrusted;\n params.ssl_support = \"autodetect\";\n params.ssl_private_key_path = sslOptions.getPrivateKeyPath();\n params.ssl_certificate_path = sslOptions.getCertificatePath();\n params.ssl_ca_file = sslOptions.getCertificateAuthorityFile();\n params.ssl_allowed_fingerprints = sslOptions.getAllowedFingerprints();\n params.ssl_allow_any_cert = sslOptions.getAllowAnyCert();\n await this.rpc.sendJsonRequest(\"set_daemon\", params);\n this.daemonConnection = connection;\n }\n \n async getDaemonConnection() {\n return this.daemonConnection;\n }\n \n // -------------------------- COMMON WALLET METHODS -------------------------\n \n async addListener(listener) {\n assert(listener instanceof MoneroWalletListener, \"Listener must be instance of MoneroWalletListener\");\n this.listeners.push(listener);\n this._refreshListening();\n }\n \n async removeListener(listener) {\n let idx = this.listeners.indexOf(listener);\n if (idx > -1) this.listeners.splice(idx, 1);\n else throw new MoneroError(\"Listener is not registered with wallet\");\n this._refreshListening();\n }\n \n getListeners() {\n return this.listeners;\n }\n \n async isConnectedToDaemon() {\n try {\n await this.checkReserveProof(await this.getPrimaryAddress(), \"\", \"\"); // TODO (monero-project): provide better way to know if wallet rpc is connected to daemon\n throw new MoneroError(\"check reserve expected to fail\");\n } catch (e) {\n return e.message.indexOf(\"Failed to connect to daemon\") < 0;\n }\n }\n \n async getVersion() {\n let resp = await this.rpc.sendJsonRequest(\"get_version\");\n return new MoneroVersion(resp.result.version, resp.result.release);\n }\n \n async getPath() {\n return this.path;\n }\n \n async getSeed() {\n let resp = await this.rpc.sendJsonRequest(\"query_key\", { key_type: \"mnemonic\" });\n return resp.result.key;\n }\n \n async getSeedLanguage() {\n if (await this.getSeed() === undefined) return undefined;\n throw new MoneroError(\"MoneroWalletRpc.getSeedLanguage() not supported\");\n }\n\n /**\n * Get a list of available languages for the wallet's seed.\n * \n * @return {string[]} the available languages for the wallet's seed.\n */\n async getSeedLanguages() {\n return (await this.rpc.sendJsonRequest(\"get_languages\")).result.languages;\n }\n \n async getPrivateViewKey() {\n let resp = await this.rpc.sendJsonRequest(\"query_key\", { key_type: \"view_key\" });\n return resp.result.key;\n }\n \n async getPrivateSpendKey() {\n let resp = await this.rpc.sendJsonRequest(\"query_key\", { key_type: \"spend_key\" });\n return resp.result.key;\n }\n \n async getAddress(accountIdx, subaddressIdx) {\n let subaddressMap = this.addressCache[accountIdx];\n if (!subaddressMap) {\n await this.getSubaddresses(accountIdx, undefined, true); // cache's all addresses at this account\n return this.getAddress(accountIdx, subaddressIdx); // recursive call uses cache\n }\n let address = subaddressMap[subaddressIdx];\n if (!address) {\n await this.getSubaddresses(accountIdx, undefined, true); // cache's all addresses at this account\n return this.addressCache[accountIdx][subaddressIdx];\n }\n return address;\n }\n \n // TODO: use cache\n async getAddressIndex(address) {\n \n // fetch result and normalize error if address does not belong to the wallet\n let resp;\n try {\n resp = await this.rpc.sendJsonRequest(\"get_address_index\", {address: address});\n } catch (e) {\n if (e.getCode() === -2) throw new MoneroError(e.message);\n throw e;\n }\n \n // convert rpc response\n let subaddress = new MoneroSubaddress(address);\n subaddress.setAccountIndex(resp.result.index.major);\n subaddress.setIndex(resp.result.index.minor);\n return subaddress;\n }\n \n async getIntegratedAddress(standardAddress, paymentId) {\n try {\n let integratedAddressStr = (await this.rpc.sendJsonRequest(\"make_integrated_address\", {standard_address: standardAddress, payment_id: paymentId})).result.integrated_address;\n return await this.decodeIntegratedAddress(integratedAddressStr);\n } catch (e) {\n if (e.message.includes(\"Invalid payment ID\")) throw new MoneroError(\"Invalid payment ID: \" + paymentId);\n throw e;\n }\n }\n \n async decodeIntegratedAddress(integratedAddress) {\n let resp = await this.rpc.sendJsonRequest(\"split_integrated_address\", {integrated_address: integratedAddress});\n return new MoneroIntegratedAddress().setStandardAddress(resp.result.standard_address).setPaymentId(resp.result.payment_id).setIntegratedAddress(integratedAddress);\n }\n \n async getHeight() {\n return (await this.rpc.sendJsonRequest(\"get_height\")).result.height;\n }\n \n async getDaemonHeight() {\n throw new MoneroError(\"monero-wallet-rpc does not support getting the chain height\");\n }\n \n async getHeightByDate(year, month, day) {\n throw new MoneroError(\"monero-wallet-rpc does not support getting a height by date\");\n }\n \n async sync(startHeight, onProgress) {\n assert(onProgress === undefined, \"Monero Wallet RPC does not support reporting sync progress\");\n try {\n let resp = await this.rpc.sendJsonRequest(\"refresh\", {start_height: startHeight}, 0);\n await this._poll();\n return new MoneroSyncResult(resp.result.blocks_fetched, resp.result.received_money);\n } catch (err) {\n if (err.message === \"no connection to daemon\") throw new MoneroError(\"Wallet is not connected to daemon\");\n throw err;\n }\n }\n \n async startSyncing(syncPeriodInMs) {\n \n // convert ms to seconds for rpc parameter\n let syncPeriodInSeconds = Math.round((syncPeriodInMs === undefined ? MoneroWalletRpc.DEFAULT_SYNC_PERIOD_IN_MS : syncPeriodInMs) / 1000);\n \n // send rpc request\n await this.rpc.sendJsonRequest(\"auto_refresh\", {\n enable: true,\n period: syncPeriodInSeconds\n });\n \n // update sync period for poller\n this.syncPeriodInMs = syncPeriodInSeconds * 1000;\n if (this.walletPoller !== undefined) this.walletPoller.setPeriodInMs(syncPeriodInMs);\n \n // poll if listening\n await this._poll();\n }\n \n async stopSyncing() {\n return this.rpc.sendJsonRequest(\"auto_refresh\", { enable: false });\n }\n \n async scanTxs(txHashes) {\n if (!txHashes || !txHashes.length) throw new MoneroError(\"No tx hashes given to scan\");\n await this.rpc.sendJsonRequest(\"scan_tx\", {txids: txHashes});\n await this._poll();\n }\n \n async rescanSpent() {\n await this.rpc.sendJsonRequest(\"rescan_spent\", undefined, 0);\n }\n \n async rescanBlockchain() {\n await this.rpc.sendJsonRequest(\"rescan_blockchain\", undefined, 0);\n }\n \n async getBalance(accountIdx, subaddressIdx) {\n return (await this._getBalances(accountIdx, subaddressIdx))[0];\n }\n \n async getUnlockedBalance(accountIdx, subaddressIdx) {\n return (await this._getBalances(accountIdx, subaddressIdx))[1];\n }\n \n async getAccounts(includeSubaddresses, tag, skipBalances) {\n \n // fetch accounts from rpc\n let resp = await this.rpc.sendJsonRequest(\"get_accounts\", {tag: tag});\n \n // build account objects and fetch subaddresses per account using get_address\n // TODO monero-wallet-rpc: get_address should support all_accounts so not called once per account\n let accounts = [];\n for (let rpcAccount of resp.result.subaddress_accounts) {\n let account = MoneroWalletRpc._convertRpcAccount(rpcAccount);\n if (includeSubaddresses) account.setSubaddresses(await this.getSubaddresses(account.getIndex(), undefined, true));\n accounts.push(account);\n }\n \n // fetch and merge fields from get_balance across all accounts\n if (includeSubaddresses && !skipBalances) {\n \n // these fields are not initialized if subaddress is unused and therefore not returned from `get_balance`\n for (let account of accounts) {\n for (let subaddress of account.getSubaddresses()) {\n subaddress.setBalance(new BigInteger(0));\n subaddress.setUnlockedBalance(new BigInteger(0));\n subaddress.setNumUnspentOutputs(0);\n subaddress.setNumBlocksToUnlock(0);\n }\n }\n \n // fetch and merge info from get_balance\n resp = await this.rpc.sendJsonRequest(\"get_balance\", {all_accounts: true});\n if (resp.result.per_subaddress) {\n for (let rpcSubaddress of resp.result.per_subaddress) {\n let subaddress = MoneroWalletRpc._convertRpcSubaddress(rpcSubaddress);\n \n // merge info\n let account = accounts[subaddress.getAccountIndex()];\n assert.equal(subaddress.getAccountIndex(), account.getIndex(), \"RPC accounts are out of order\"); // would need to switch lookup to loop\n let tgtSubaddress = account.getSubaddresses()[subaddress.getIndex()];\n assert.equal(subaddress.getIndex(), tgtSubaddress.getIndex(), \"RPC subaddresses are out of order\");\n if (subaddress.getBalance() !== undefined) tgtSubaddress.setBalance(subaddress.getBalance());\n if (subaddress.getUnlockedBalance() !== undefined) tgtSubaddress.setUnlockedBalance(subaddress.getUnlockedBalance());\n if (subaddress.getNumUnspentOutputs() !== undefined) tgtSubaddress.setNumUnspentOutputs(subaddress.getNumUnspentOutputs());\n }\n }\n }\n \n // return accounts\n return accounts;\n }\n \n // TODO: getAccountByIndex(), getAccountByTag()\n async getAccount(accountIdx, includeSubaddresses, skipBalances) {\n assert(accountIdx >= 0);\n for (let account of await this.getAccounts()) {\n if (account.getIndex() === accountIdx) {\n if (includeSubaddresses) account.setSubaddresses(await this.getSubaddresses(accountIdx, undefined, skipBalances));\n return account;\n }\n }\n throw new Exception(\"Account with index \" + accountIdx + \" does not exist\");\n }\n\n async createAccount(label) {\n label = label ? label : undefined;\n let resp = await this.rpc.sendJsonRequest(\"create_account\", {label: label});\n return new MoneroAccount(resp.result.account_index, resp.result.address, new BigInteger(0), new BigInteger(0));\n }\n\n async getSubaddresses(accountIdx, subaddressIndices, skipBalances) {\n \n // fetch subaddresses\n let params = {};\n params.account_index = accountIdx;\n if (subaddressIndices) params.address_index = GenUtils.listify(subaddressIndices);\n let resp = await this.rpc.sendJsonRequest(\"get_address\", params);\n \n // initialize subaddresses\n let subaddresses = [];\n for (let rpcSubaddress of resp.result.addresses) {\n let subaddress = MoneroWalletRpc._convertRpcSubaddress(rpcSubaddress);\n subaddress.setAccountIndex(accountIdx);\n subaddresses.push(subaddress);\n }\n \n // fetch and initialize subaddress balances\n if (!skipBalances) {\n \n // these fields are not initialized if subaddress is unused and therefore not returned from `get_balance`\n for (let subaddress of subaddresses) {\n subaddress.setBalance(new BigInteger(0));\n subaddress.setUnlockedBalance(new BigInteger(0));\n subaddress.setNumUnspentOutputs(0);\n subaddress.setNumBlocksToUnlock(0);\n }\n\n // fetch and initialize balances\n resp = await this.rpc.sendJsonRequest(\"get_balance\", params);\n if (resp.result.per_subaddress) {\n for (let rpcSubaddress of resp.result.per_subaddress) {\n let subaddress = MoneroWalletRpc._convertRpcSubaddress(rpcSubaddress);\n \n // transfer info to existing subaddress object\n for (let tgtSubaddress of subaddresses) {\n if (tgtSubaddress.getIndex() !== subaddress.getIndex()) continue; // skip to subaddress with same index\n if (subaddress.getBalance() !== undefined) tgtSubaddress.setBalance(subaddress.getBalance());\n if (subaddress.getUnlockedBalance() !== undefined) tgtSubaddress.setUnlockedBalance(subaddress.getUnlockedBalance());\n if (subaddress.getNumUnspentOutputs() !== undefined) tgtSubaddress.setNumUnspentOutputs(subaddress.getNumUnspentOutputs());\n if (subaddress.getNumBlocksToUnlock() !== undefined) tgtSubaddress.setNumBlocksToUnlock(subaddress.getNumBlocksToUnlock());\n }\n }\n }\n }\n \n // cache addresses\n let subaddressMap = this.addressCache[accountIdx];\n if (!subaddressMap) {\n subaddressMap = {};\n this.addressCache[accountIdx] = subaddressMap;\n }\n for (let subaddress of subaddresses) {\n subaddressMap[subaddress.getIndex()] = subaddress.getAddress();\n }\n \n // return results\n return subaddresses;\n }\n\n async getSubaddress(accountIdx, subaddressIdx, skipBalances) {\n assert(accountIdx >= 0);\n assert(subaddressIdx >= 0);\n return (await this.getSubaddresses(accountIdx, subaddressIdx, skipBalances))[0];\n }\n\n async createSubaddress(accountIdx, label) {\n \n // send request\n let resp = await this.rpc.sendJsonRequest(\"create_address\", {account_index: accountIdx, label: label});\n \n // build subaddress object\n let subaddress = new MoneroSubaddress();\n subaddress.setAccountIndex(accountIdx);\n subaddress.setIndex(resp.result.address_index);\n subaddress.setAddress(resp.result.address);\n subaddress.setLabel(label ? label : undefined);\n subaddress.setBalance(new BigInteger(0));\n subaddress.setUnlockedBalance(new BigInteger(0));\n subaddress.setNumUnspentOutputs(0);\n subaddress.setIsUsed(false);\n subaddress.setNumBlocksToUnlock(0);\n return subaddress;\n }\n\n async setSubaddressLabel(accountIdx, subaddressIdx, label) {\n await this.rpc.sendJsonRequest(\"label_address\", {index: {major: accountIdx, minor: subaddressIdx}, label: label});\n }\n \n async getTxs(query) {\n \n // copy query\n query = MoneroWallet._normalizeTxQuery(query);\n \n // temporarily disable transfer and output queries in order to collect all tx information\n let transferQuery = query.getTransferQuery();\n let inputQuery = query.getInputQuery();\n let outputQuery = query.getOutputQuery();\n query.setTransferQuery(undefined);\n query.setInputQuery(undefined);\n query.setOutputQuery(undefined);\n \n // fetch all transfers that meet tx query\n let transfers = await this._getTransfersAux(new MoneroTransferQuery().setTxQuery(MoneroWalletRpc._decontextualize(query.copy())));\n \n // collect unique txs from transfers while retaining order\n let txs = [];\n let txsSet = new Set();\n for (let transfer of transfers) {\n if (!txsSet.has(transfer.getTx())) {\n txs.push(transfer.getTx());\n txsSet.add(transfer.getTx());\n }\n }\n \n // cache types into maps for merging and lookup\n let txMap = {};\n let blockMap = {};\n for (let tx of txs) {\n MoneroWalletRpc._mergeTx(tx, txMap, blockMap);\n }\n \n // fetch and merge outputs if requested\n if (query.getIncludeOutputs() || outputQuery) {\n \n // fetch outputs\n let outputQueryAux = (outputQuery ? outputQuery.copy() : new MoneroOutputQuery()).setTxQuery(MoneroWalletRpc._decontextualize(query.copy()));\n let outputs = await this._getOutputsAux(outputQueryAux);\n \n // merge output txs one time while retaining order\n let outputTxs = [];\n for (let output of outputs) {\n if (!outputTxs.includes(output.getTx())) {\n MoneroWalletRpc._mergeTx(output.getTx(), txMap, blockMap);\n outputTxs.push(output.getTx());\n }\n }\n }\n \n // restore transfer and output queries\n query.setTransferQuery(transferQuery);\n query.setInputQuery(inputQuery);\n query.setOutputQuery(outputQuery);\n \n // filter txs that don't meet transfer query\n let txsQueried = [];\n for (let tx of txs) {\n if (query.meetsCriteria(tx)) txsQueried.push(tx);\n else if (tx.getBlock() !== undefined) tx.getBlock().getTxs().splice(tx.getBlock().getTxs().indexOf(tx), 1);\n }\n txs = txsQueried;\n \n // special case: re-fetch txs if inconsistency caused by needing to make multiple rpc calls\n for (let tx of txs) {\n if (tx.isConfirmed() && tx.getBlock() === undefined) {\n console.error(\"Inconsistency detected building txs from multiple rpc calls, re-fetching txs\");\n return this.getTxs(query);\n }\n }\n \n // order txs if tx hashes given then return\n if (query.getHashes() && query.getHashes().length > 0) {\n let txsById = new Map() // store txs in temporary map for sorting\n for (let tx of txs) txsById.set(tx.getHash(), tx);\n let orderedTxs = [];\n for (let hash of query.getHashes()) if (txsById.get(hash)) orderedTxs.push(txsById.get(hash));\n txs = orderedTxs;\n }\n return txs;\n }\n \n async getTransfers(query) {\n \n // copy and normalize query up to block\n query = MoneroWallet._normalizeTransferQuery(query);\n \n // get transfers directly if query does not require tx context (other transfers, outputs)\n if (!MoneroWalletRpc._isContextual(query)) return this._getTransfersAux(query);\n \n // otherwise get txs with full models to fulfill query\n let transfers = [];\n for (let tx of await this.getTxs(query.getTxQuery())) {\n for (let transfer of tx.filterTransfers(query)) {\n transfers.push(transfer);\n }\n }\n \n return transfers;\n }\n \n async getOutputs(query) {\n \n // copy and normalize query up to block\n query = MoneroWallet._normalizeOutputQuery(query);\n \n // get outputs directly if query does not require tx context (other outputs, transfers)\n if (!MoneroWalletRpc._isContextual(query)) return this._getOutputsAux(query);\n \n // otherwise get txs with full models to fulfill query\n let outputs = [];\n for (let tx of await this.getTxs(query.getTxQuery())) {\n for (let output of tx.filterOutputs(query)) {\n outputs.push(output);\n }\n }\n \n return outputs;\n }\n \n async exportOutputs(all) {\n return (await this.rpc.sendJsonRequest(\"export_outputs\", {all: all})).result.outputs_data_hex;\n }\n \n async importOutputs(outputsHex) {\n let resp = await this.rpc.sendJsonRequest(\"import_outputs\", {outputs_data_hex: outputsHex});\n return resp.result.num_imported;\n }\n \n async exportKeyImages(all) {\n return await this._rpcExportKeyImages(all);\n }\n \n async importKeyImages(keyImages) {\n \n // convert key images to rpc parameter\n let rpcKeyImages = keyImages.map(keyImage => ({key_image: keyImage.getHex(), signature: keyImage.getSignature()}));\n \n // send request\n let resp = await this.rpc.sendJsonRequest(\"import_key_images\", {signed_key_images: rpcKeyImages});\n \n // build and return result\n let importResult = new MoneroKeyImageImportResult();\n importResult.setHeight(resp.result.height);\n importResult.setSpentAmount(new BigInteger(resp.result.spent));\n importResult.setUnspentAmount(new BigInteger(resp.result.unspent));\n return importResult;\n }\n \n async getNewKeyImagesFromLastImport() {\n return await this._rpcExportKeyImages(false);\n }\n \n async freezeOutput(keyImage) {\n return this.rpc.sendJsonRequest(\"freeze\", {key_image: keyImage});\n }\n \n async thawOutput(keyImage) {\n return this.rpc.sendJsonRequest(\"thaw\", {key_image: keyImage});\n }\n \n async isOutputFrozen(keyImage) {\n let resp = await this.rpc.sendJsonRequest(\"frozen\", {key_image: keyImage});\n return resp.result.frozen === true;\n }\n \n async createTxs(config) {\n \n // validate, copy, and normalize config\n config = MoneroWallet._normalizeCreateTxsConfig(config);\n if (config.getCanSplit() === undefined) config.setCanSplit(true);\n if (config.getRelay() === true && await this.isMultisig()) throw new MoneroError(\"Cannot relay multisig transaction until co-signed\");\n\n // determine account and subaddresses to send from\n let accountIdx = config.getAccountIndex();\n if (accountIdx === undefined) throw new MoneroError(\"Must provide the account index to send from\");\n let subaddressIndices = config.getSubaddressIndices() === undefined ? undefined : config.getSubaddressIndices().slice(0); // fetch all or copy given indices\n \n // build config parameters\n let params = {};\n params.destinations = [];\n for (let destination of config.getDestinations()) {\n assert(destination.getAddress(), \"Destination address is not defined\");\n assert(destination.getAmount(), \"Destination amount is not defined\");\n params.destinations.push({ address: destination.getAddress(), amount: destination.getAmount().toString() });\n }\n if (config.getSubtractFeeFrom()) params.subtract_fee_from_outputs = config.getSubtractFeeFrom();\n params.account_index = accountIdx;\n params.subaddr_indices = subaddressIndices;\n params.payment_id = config.getPaymentId();\n if (config.getUnlockTime() !== undefined) params.unlock_time = config.getUnlockTime().toString()\n params.do_not_relay = config.getRelay() !== true;\n assert(config.getPriority() === undefined || config.getPriority() >= 0 && config.getPriority() <= 3);\n params.priority = config.getPriority();\n params.get_tx_hex = true;\n params.get_tx_metadata = true;\n if (config.getCanSplit()) params.get_tx_keys = true; // param to get tx key(s) depends if split\n else params.get_tx_key = true;\n\n // cannot apply subtractFeeFrom with `transfer_split` call\n if (config.getCanSplit() && config.getSubtractFeeFrom() && config.getSubtractFeeFrom().length > 0) {\n throw new MoneroError(\"subtractfeefrom transfers cannot be split over multiple transactions yet\");\n }\n \n // send request\n let result;\n try {\n let resp = await this.rpc.sendJsonRequest(config.getCanSplit() ? \"transfer_split\" : \"transfer\", params);\n result = resp.result;\n } catch (err) {\n if (err.message.indexOf(\"WALLET_RPC_ERROR_CODE_WRONG_ADDRESS\") > -1) throw new MoneroError(\"Invalid destination address\");\n throw err;\n }\n \n // pre-initialize txs iff present. multisig and view-only wallets will have tx set without transactions\n let txs;\n let numTxs = config.getCanSplit() ? (result.fee_list !== undefined ? result.fee_list.length : 0) : (result.fee !== undefined ? 1 : 0);\n if (numTxs > 0) txs = [];\n let copyDestinations = numTxs === 1;\n for (let i = 0; i < numTxs; i++) {\n let tx = new MoneroTxWallet();\n MoneroWalletRpc._initSentTxWallet(config, tx, copyDestinations);\n tx.getOutgoingTransfer().setAccountIndex(accountIdx);\n if (subaddressIndices !== undefined && subaddressIndices.length === 1) tx.getOutgoingTransfer().setSubaddressIndices(subaddressIndices);\n txs.push(tx);\n }\n \n // notify of changes\n if (config.getRelay()) await this._poll();\n \n // initialize tx set from rpc response with pre-initialized txs\n if (config.getCanSplit()) return MoneroWalletRpc._convertRpcSentTxsToTxSet(result, txs, config).getTxs();\n else return MoneroWalletRpc._convertRpcTxToTxSet(result, txs === undefined ? undefined : txs[0], true, config).getTxs();\n }\n \n async sweepOutput(config) {\n \n // normalize and validate config\n config = MoneroWallet._normalizeSweepOutputConfig(config);\n \n // build request parameters\n let params = {};\n params.address = config.getDestinations()[0].getAddress();\n params.account_index = config.getAccountIndex();\n params.subaddr_indices = config.getSubaddressIndices();\n params.key_image = config.getKeyImage();\n if (config.getUnlockTime() !== undefined) params.unlock_time = config.getUnlockTime();\n params.do_not_relay = config.getRelay() !== true;\n assert(config.getPriority() === undefined || config.getPriority() >= 0 && config.getPriority() <= 3);\n params.priority = config.getPriority();\n params.payment_id = config.getPaymentId();\n params.get_tx_key = true;\n params.get_tx_hex = true;\n params.get_tx_metadata = true;\n \n // send request\n let resp = await this.rpc.sendJsonRequest(\"sweep_single\", params);\n let result = resp.result;\n \n // notify of changes\n if (config.getRelay()) await this._poll();\n \n // build and return tx\n let tx = MoneroWalletRpc._initSentTxWallet(config, undefined, true);\n MoneroWalletRpc._convertRpcTxToTxSet(result, tx, true, config);\n tx.getOutgoingTransfer().getDestinations()[0].setAmount(tx.getOutgoingTransfer().getAmount()); // initialize destination amount\n return tx;\n }\n \n async sweepUnlocked(config) {\n \n // validate and normalize config\n config = MoneroWallet._normalizeSweepUnlockedConfig(config);\n \n // determine account and subaddress indices to sweep; default to all with unlocked balance if not specified\n let indices = new Map(); // maps each account index to subaddress indices to sweep\n if (config.getAccountIndex() !== undefined) {\n if (config.getSubaddressIndices() !== undefined) {\n indices.set(config.getAccountIndex(), config.getSubaddressIndices());\n } else {\n let subaddressIndices = [];\n indices.set(config.getAccountIndex(), subaddressIndices);\n for (let subaddress of await this.getSubaddresses(config.getAccountIndex())) {\n if (subaddress.getUnlockedBalance().compare(new BigInteger(0)) > 0) subaddressIndices.push(subaddress.getIndex());\n }\n }\n } else {\n let accounts = await this.getAccounts(true);\n for (let account of accounts) {\n if (account.getUnlockedBalance().compare(new BigInteger(0)) > 0) {\n let subaddressIndices = [];\n indices.set(account.getIndex(), subaddressIndices);\n for (let subaddress of account.getSubaddresses()) {\n if (subaddress.getUnlockedBalance().compare(new BigInteger(0)) > 0) subaddressIndices.push(subaddress.getIndex());\n }\n }\n }\n }\n \n // sweep from each account and collect resulting tx sets\n let txs = [];\n for (let accountIdx of indices.keys()) {\n \n // copy and modify the original config\n let copy = config.copy();\n copy.setAccountIndex(accountIdx);\n copy.setSweepEachSubaddress(false);\n \n // sweep all subaddresses together // TODO monero-project: can this reveal outputs belong to the same wallet?\n if (copy.getSweepEachSubaddress() !== true) {\n copy.setSubaddressIndices(indices.get(accountIdx));\n for (let tx of await this._rpcSweepAccount(copy)) txs.push(tx);\n }\n \n // otherwise sweep each subaddress individually\n else {\n for (let subaddressIdx of indices.get(accountIdx)) {\n copy.setSubaddressIndices([subaddressIdx]);\n for (let tx of await this._rpcSweepAccount(copy)) txs.push(tx);\n }\n }\n }\n \n // notify of changes\n if (config.getRelay()) await this._poll();\n return txs;\n }\n \n async sweepDust(relay) {\n if (relay === undefined) relay = false;\n let resp = await this.rpc.sendJsonRequest(\"sweep_dust\", {do_not_relay: !relay});\n if (relay) await this._poll();\n let result = resp.result;\n let txSet = MoneroWalletRpc._convertRpcSentTxsToTxSet(result);\n if (txSet.getTxs() === undefined) return [];\n for (let tx of txSet.getTxs()) {\n tx.setIsRelayed(!relay);\n tx.setInTxPool(tx.isRelayed());\n }\n return txSet.getTxs();\n }\n \n async relayTxs(txsOrMetadatas) {\n assert(Array.isArray(txsOrMetadatas), \"Must provide an array of txs or their metadata to relay\");\n let txHashes = [];\n for (let txOrMetadata of txsOrMetadatas) {\n let metadata = txOrMetadata instanceof MoneroTxWallet ? txOrMetadata.getMetadata() : txOrMetadata;\n let resp = await this.rpc.sendJsonRequest(\"relay_tx\", { hex: metadata });\n txHashes.push(resp.result.tx_hash);\n }\n await this._poll(); // notify of changes\n return txHashes;\n }\n \n async describeTxSet(txSet) {\n let resp = await this.rpc.sendJsonRequest(\"describe_transfer\", {\n unsigned_txset: txSet.getUnsignedTxHex(),\n multisig_txset: txSet.getMultisigTxHex()\n });\n return MoneroWalletRpc._convertRpcDescribeTransfer(resp.result);\n }\n \n async signTxs(unsignedTxHex) {\n let resp = await this.rpc.sendJsonRequest(\"sign_transfer\", {\n unsigned_txset: unsignedTxHex,\n export_raw: false\n });\n await this._poll();\n return resp.result.signed_txset\n }\n \n async submitTxs(signedTxHex) {\n let resp = await this.rpc.sendJsonRequest(\"submit_transfer\", {\n tx_data_hex: signedTxHex\n });\n await this._poll();\n return resp.result.tx_hash_list;\n }\n \n async signMessage(message, signatureType, accountIdx, subaddressIdx) {\n let resp = await this.rpc.sendJsonRequest(\"sign\", {\n data: message,\n signature_type: signatureType === MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY ? \"spend\" : \"view\",\n account_index: accountIdx,\n address_index: subaddressIdx\n });\n return resp.result.signature;\n }\n \n async verifyMessage(message, address, signature) {\n try {\n let resp = await this.rpc.sendJsonRequest(\"verify\", {data: message, address: address, signature: signature});\n let result = new MoneroMessageSignatureResult(\n resp.result.good,\n !resp.result.good ? undefined : resp.result.old,\n !resp.result.good ? undefined : !resp.result.signature_type ? undefined : resp.result.signature_type === \"view\" ? MoneroMessageSignatureType.SIGN_WITH_VIEW_KEY : MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY,\n !resp.result.good ? undefined : resp.result.version);\n return result;\n } catch (e) {\n if (e.getCode() === -2) return new MoneroMessageSignatureResult(false);\n throw e;\n }\n }\n \n async getTxKey(txHash) {\n try {\n return (await this.rpc.sendJsonRequest(\"get_tx_key\", {txid: txHash})).result.tx_key;\n } catch (e) {\n if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes(\"TX ID has invalid format\")) e = new MoneroRpcError(\"TX hash has invalid format\", e.getCode(), e.getRpcMethod(), e.getRpcParams()); // normalize error message\n throw e;\n }\n }\n \n async checkTxKey(txHash, txKey, address) {\n try {\n \n // send request\n let resp = await this.rpc.sendJsonRequest(\"check_tx_key\", {txid: txHash, tx_key: txKey, address: address});\n \n // interpret result\n let check = new MoneroCheckTx();\n check.setIsGood(true);\n check.setNumConfirmations(resp.result.confirmations);\n check.setInTxPool(resp.result.in_pool);\n check.setReceivedAmount(new BigInteger(resp.result.received));\n return check;\n } catch (e) {\n if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes(\"TX ID has invalid format\")) e = new MoneroRpcError(\"TX hash has invalid format\", e.getCode(), e.getRpcMethod(), e.getRpcParams()); // normalize error message\n throw e;\n }\n }\n \n async getTxProof(txHash, address, message) {\n try {\n let resp = await this.rpc.sendJsonRequest(\"get_tx_proof\", {txid: txHash, address: address, message: message});\n return resp.result.signature;\n } catch (e) {\n if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes(\"TX ID has invalid format\")) e = new MoneroRpcError(\"TX hash has invalid format\", e.getCode(), e.getRpcMethod(), e.getRpcParams()); // normalize error message\n throw e;\n }\n }\n \n async checkTxProof(txHash, address, message, signature) {\n try {\n \n // send request\n let resp = await this.rpc.sendJsonRequest(\"check_tx_proof\", {\n txid: txHash,\n address: address,\n message: message,\n signature: signature\n });\n \n // interpret response\n let isGood = resp.result.good;\n let check = new MoneroCheckTx();\n check.setIsGood(isGood);\n if (isGood) {\n check.setNumConfirmations(resp.result.confirmations);\n check.setInTxPool(resp.result.in_pool);\n check.setReceivedAmount(new BigInteger(resp.result.received));\n }\n return check;\n } catch (e) {\n if (e instanceof MoneroRpcError && e.getCode() === -1 && e.message === \"basic_string\") e = new MoneroRpcError(\"Must provide signature to check tx proof\", -1);\n if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes(\"TX ID has invalid format\")) e = new MoneroRpcError(\"TX hash has invalid format\", e.getCode(), e.getRpcMethod(), e.getRpcParams());\n throw e;\n }\n }\n \n async getSpendProof(txHash, message) {\n try {\n let resp = await this.rpc.sendJsonRequest(\"get_spend_proof\", {txid: txHash, message: message});\n return resp.result.signature;\n } catch (e) {\n if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes(\"TX ID has invalid format\")) e = new MoneroRpcError(\"TX hash has invalid format\", e.getCode(), e.getRpcMethod(), e.getRpcParams()); // normalize error message\n throw e;\n }\n }\n \n async checkSpendProof(txHash, message, signature) {\n try {\n let resp = await this.rpc.sendJsonRequest(\"check_spend_proof\", {\n txid: txHash,\n message: message,\n signature: signature\n });\n return resp.result.good;\n } catch (e) {\n if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes(\"TX ID has invalid format\")) e = new MoneroRpcError(\"TX hash has invalid format\", e.getCode(), e.getRpcMethod(), e.getRpcParams()); // normalize error message\n throw e;\n }\n }\n \n async getReserveProofWallet(message) {\n let resp = await this.rpc.sendJsonRequest(\"get_reserve_proof\", {\n all: true,\n message: message\n });\n return resp.result.signature;\n }\n \n async getReserveProofAccount(accountIdx, amount, message) {\n let resp = await this.rpc.sendJsonRequest(\"get_reserve_proof\", {\n account_index: accountIdx,\n amount: amount.toString(),\n message: message\n });\n return resp.result.signature;\n }\n\n async checkReserveProof(address, message, signature) {\n \n // send request\n let resp = await this.rpc.sendJsonRequest(\"check_reserve_proof\", {\n address: address,\n message: message,\n signature: signature\n });\n \n // interpret results\n let isGood = resp.result.good;\n let check = new MoneroCheckReserve();\n check.setIsGood(isGood);\n if (isGood) {\n check.setUnconfirmedSpentAmount(new BigInteger(resp.result.spent));\n check.setTotalAmount(new BigInteger(resp.result.total));\n }\n return check;\n }\n \n async getTxNotes(txHashes) {\n return (await this.rpc.sendJsonRequest(\"get_tx_notes\", {txids: txHashes})).result.notes;\n }\n \n async setTxNotes(txHashes, notes) {\n await this.rpc.sendJsonRequest(\"set_tx_notes\", {txids: txHashes, notes: notes});\n }\n \n async getAddressBookEntries(entryIndices) {\n let resp = await this.rpc.sendJsonRequest(\"get_address_book\", {entries: entryIndices});\n if (!resp.result.entries) return [];\n let entries = [];\n for (let rpcEntry of resp.result.entries) {\n entries.push(new MoneroAddressBookEntry().setIndex(rpcEntry.index).setAddress(rpcEntry.address).setDescription(rpcEntry.description).setPaymentId(rpcEntry.payment_id));\n }\n return entries;\n }\n \n async addAddressBookEntry(address, description) {\n let resp = await this.rpc.sendJsonRequest(\"add_address_book\", {address: address, description: description});\n return resp.result.index;\n }\n \n async editAddressBookEntry(index, setAddress, address, setDescription, description) {\n let resp = await this.rpc.sendJsonRequest(\"edit_address_book\", {\n index: index,\n set_address: setAddress,\n address: address,\n set_description: setDescription,\n description: description\n });\n }\n \n async deleteAddressBookEntry(entryIdx) {\n await this.rpc.sendJsonRequest(\"delete_address_book\", {index: entryIdx});\n }\n \n async tagAccounts(tag, accountIndices) {\n await this.rpc.sendJsonRequest(\"tag_accounts\", {tag: tag, accounts: accountIndices});\n }\n\n async untagAccounts(accountIndices) {\n await this.rpc.sendJsonRequest(\"untag_accounts\", {accounts: accountIndices});\n }\n\n async getAccountTags() {\n let tags = [];\n let resp = await this.rpc.sendJsonRequest(\"get_account_tags\");\n if (resp.result.account_tags) {\n for (let rpcAccountTag of resp.result.account_tags) {\n tags.push(new MoneroAccountTag(rpcAccountTag.tag ? rpcAccountTag.tag : undefined, rpcAccountTag.label ? rpcAccountTag.label : undefined, rpcAccountTag.accounts));\n }\n }\n return tags;\n }\n\n async setAccountTagLabel(tag, label) {\n await this.rpc.sendJsonRequest(\"set_account_tag_description\", {tag: tag, description: label});\n }\n \n async getPaymentUri(config) {\n config = MoneroWallet._normalizeCreateTxsConfig(config);\n let resp = await this.rpc.sendJsonRequest(\"make_uri\", {\n address: config.getDestinations()[0].getAddress(),\n amount: config.getDestinations()[0].getAmount() ? config.getDestinations()[0].getAmount().toString() : undefined,\n payment_id: config.getPaymentId(),\n recipient_name: config.getRecipientName(),\n tx_description: config.getNote()\n });\n return resp.result.uri;\n }\n \n async parsePaymentUri(uri) {\n assert(uri, \"Must provide URI to parse\");\n let resp = await this.rpc.sendJsonRequest(\"parse_uri\", {uri: uri});\n let config = new MoneroTxConfig({address: resp.result.uri.address, amount: new BigInteger(resp.result.uri.amount)});\n config.setPaymentId(resp.result.uri.payment_id);\n config.setRecipientName(resp.result.uri.recipient_name);\n config.setNote(resp.result.uri.tx_description);\n if (\"\" === config.getDestinations()[0].getAddress()) config.getDestinations()[0].setAddress(undefined);\n if (\"\" === config.getPaymentId()) config.setPaymentId(undefined);\n if (\"\" === config.getRecipientName()) config.setRecipientName(undefined);\n if (\"\" === config.getNote()) config.setNote(undefined);\n return config;\n }\n \n async getAttribute(key) {\n try {\n let resp = await this.rpc.sendJsonRequest(\"get_attribute\", {key: key});\n return resp.result.value === \"\" ? undefined : resp.result.value;\n } catch (e) {\n if (e instanceof MoneroRpcError && e.getCode() === -45) return undefined;\n throw e;\n }\n }\n \n async setAttribute(key, val) {\n await this.rpc.sendJsonRequest(\"set_attribute\", {key: key, value: val});\n }\n \n async startMining(numThreads, backgroundMining, ignoreBattery) {\n await this.rpc.sendJsonRequest(\"start_mining\", {\n threads_count: numThreads,\n do_background_mining: backgroundMining,\n ignore_battery: ignoreBattery\n });\n }\n \n async stopMining() {\n await this.rpc.sendJsonRequest(\"stop_mining\");\n }\n \n async isMultisigImportNeeded() {\n let resp = await this.rpc.sendJsonRequest(\"get_balance\");\n return resp.result.multisig_import_needed === true;\n }\n \n async getMultisigInfo() {\n let resp = await this.rpc.sendJsonRequest(\"is_multisig\");\n let result = resp.result;\n let info = new MoneroMultisigInfo();\n info.setIsMultisig(result.multisig);\n info.setIsReady(result.ready);\n info.setThreshold(result.threshold);\n info.setNumParticipants(result.total);\n return info;\n }\n \n async prepareMultisig() {\n let resp = await this.rpc.sendJsonRequest(\"prepare_multisig\", {enable_multisig_experimental: true});\n this.addressCache = {};\n let result = resp.result;\n return result.multisig_info;\n }\n \n async makeMultisig(multisigHexes, threshold, password) {\n let resp = await this.rpc.sendJsonRequest(\"make_multisig\", {\n multisig_info: multisigHexes,\n threshold: threshold,\n password: password\n });\n this.addressCache = {};\n return resp.result.multisig_info;\n }\n \n async exchangeMultisigKeys(multisigHexes, password) {\n let resp = await this.rpc.sendJsonRequest(\"exchange_multisig_keys\", {multisig_info: multisigHexes, password: password});\n this.addressCache = {};\n let msResult = new MoneroMultisigInitResult();\n msResult.setAddress(resp.result.address);\n msResult.setMultisigHex(resp.result.multisig_info);\n if (msResult.getAddress().length === 0) msResult.setAddress(undefined);\n if (msResult.getMultisigHex().length === 0) msResult.setMultisigHex(undefined);\n return msResult;\n }\n \n async exportMultisigHex() {\n let resp = await this.rpc.sendJsonRequest(\"export_multisig_info\");\n return resp.result.info;\n }\n\n async importMultisigHex(multisigHexes) {\n if (!GenUtils.isArray(multisigHexes)) throw new MoneroError(\"Must provide string[] to importMultisigHex()\")\n let resp = await this.rpc.sendJsonRequest(\"import_multisig_info\", {info: multisigHexes});\n return resp.result.n_outputs;\n }\n\n async signMultisigTxHex(multisigTxHex) {\n let resp = await this.rpc.sendJsonRequest(\"sign_multisig\", {tx_data_hex: multisigTxHex});\n let result = resp.result;\n let signResult = new MoneroMultisigSignResult();\n signResult.setSignedMultisigTxHex(result.tx_data_hex);\n signResult.setTxHashes(result.tx_hash_list);\n return signResult;\n }\n\n async submitMultisigTxHex(signedMultisigTxHex) {\n let resp = await this.rpc.sendJsonRequest(\"submit_multisig\", {tx_data_hex: signedMultisigTxHex});\n return resp.result.tx_hash_list;\n }\n \n async changePassword(oldPassword, newPassword) {\n return this.rpc.sendJsonRequest(\"change_wallet_password\", {old_password: oldPassword || \"\", new_password: newPassword || \"\"});\n }\n \n async save() {\n await this.rpc.sendJsonRequest(\"store\");\n }\n \n async close(save) {\n if (save === undefined) save = false;\n await this._clear();\n await this.rpc.sendJsonRequest(\"close_wallet\", {autosave_current: save});\n }\n \n async isClosed() {\n try {\n await this.getPrimaryAddress();\n } catch (e) {\n return e instanceof MoneroRpcError && e.getCode() === -13 && e.message.indexOf(\"No wallet file\") > -1;\n }\n return false;\n }\n \n /**\n * Save and close the current wallet and stop the RPC server.\n */\n async stop() {\n await this._clear();\n await this.rpc.sendJsonRequest(\"stop_wallet\");\n }\n \n // ----------- ADD JSDOC FOR SUPPORTED DEFAULT IMPLEMENTATIONS --------------\n \n async getNumBlocksToUnlock() { return super.getNumBlocksToUnlock(...arguments); }\n async getTx() { return super.getTx(...arguments); }\n async getIncomingTransfers() { return super.getIncomingTransfers(...arguments); }\n async getOutgoingTransfers() { return super.getOutgoingTransfers(...arguments); }\n async createTx() { return super.createTx(...arguments); }\n async relayTx() { return super.relayTx(...arguments); }\n async getTxNote() { return super.getTxNote(...arguments); }\n async setTxNote() { return super.setTxNote(...arguments); }\n \n // -------------------------------- PRIVATE ---------------------------------\n \n async _clear() {\n this.listeners.splice(0, this.listeners.length);\n this._refreshListening();\n delete this.addressCache;\n this.addressCache = {};\n this.path = undefined;\n }\n \n async _getBalances(accountIdx, subaddressIdx) {\n if (accountIdx === undefined) {\n assert.equal(subaddressIdx, undefined, \"Must provide account index with subaddress index\");\n let balance = new BigInteger(0);\n let unlockedBalance = new BigInteger(0);\n for (let account of await this.getAccounts()) {\n balance = balance.add(account.getBalance());\n unlockedBalance = unlockedBalance.add(account.getUnlockedBalance());\n }\n return [balance, unlockedBalance];\n } else {\n let params = {account_index: accountIdx, address_indices: subaddressIdx === undefined ? undefined : [subaddressIdx]};\n let resp = await this.rpc.sendJsonRequest(\"get_balance\", params);\n if (subaddressIdx === undefined) return [new BigInteger(resp.result.balance), new BigInteger(resp.result.unlocked_balance)];\n else return [new BigInteger(resp.result.per_subaddress[0].balance), new BigInteger(resp.result.per_subaddress[0].unlocked_balance)];\n }\n }\n \n async _getAccountIndices(getSubaddressIndices) {\n let indices = new Map();\n for (let account of await this.getAccounts()) {\n indices.set(account.getIndex(), getSubaddressIndices ? await this._getSubaddressIndices(account.getIndex()) : undefined);\n }\n return indices;\n }\n \n async _getSubaddressIndices(accountIdx) {\n let subaddressIndices = [];\n let resp = await this.rpc.sendJsonRequest(\"get_address\", {account_index: accountIdx});\n for (let address of resp.result.addresses) subaddressIndices.push(address.address_index);\n return subaddressIndices;\n }\n \n async _getTransfersAux(query) {\n \n // build params for get_transfers rpc call\n let txQuery = query.getTxQuery();\n let canBeConfirmed = txQuery.isConfirmed() !== false && txQuery.inTxPool() !== true && txQuery.isFailed() !== true && txQuery.isRelayed() !== false;\n let canBeInTxPool = txQuery.isConfirmed() !== true && txQuery.inTxPool() !== false && txQuery.isFailed() !== true && txQuery.getHeight() === undefined && txQuery.getMaxHeight() === undefined && txQuery.isLocked() !== false;\n let canBeIncoming = query.isIncoming() !== false && query.isOutgoing() !== true && query.hasDestinations() !== true;\n let canBeOutgoing = query.isOutgoing() !== false && query.isIncoming() !== true;\n\n // check if fetching pool txs contradicted by configuration\n if (txQuery.inTxPool() === true && !canBeInTxPool) {\n throw new MoneroError(\"Cannot fetch pool transactions because it contradicts configuration\");\n }\n\n let params = {};\n params.in = canBeIncoming && canBeConfirmed;\n params.out = canBeOutgoing && canBeConfirmed;\n params.pool = canBeIncoming && canBeInTxPool;\n params.pending = canBeOutgoing && canBeInTxPool;\n params.failed = txQuery.isFailed() !== false && txQuery.isConfirmed() !== true && txQuery.inTxPool() != true;\n if (txQuery.getMinHeight() !== undefined) {\n if (txQuery.getMinHeight() > 0) params.min_height = txQuery.getMinHeight() - 1; // TODO monero-project: wallet2::get_payments() min_height is exclusive, so manually offset to match intended range (issues #5751, #5598)\n else params.min_height = txQuery.getMinHeight();\n }\n if (txQuery.getMaxHeight() !== undefined) params.max_height = txQuery.getMaxHeight();\n params.filter_by_height = txQuery.getMinHeight() !== undefined || txQuery.getMaxHeight() !== undefined;\n if (query.getAccountIndex() === undefined) {\n assert(query.getSubaddressIndex() === undefined && query.getSubaddressIndices() === undefined, \"Query specifies a subaddress index but not an account index\");\n params.all_accounts = true;\n } else {\n params.account_index = query.getAccountIndex();\n \n // set subaddress indices param\n let subaddressIndices = new Set();\n if (query.getSubaddressIndex() !== undefined) subaddressIndices.add(query.getSubaddressIndex());\n if (query.getSubaddressIndices() !== undefined) query.getSubaddressIndices().map(subaddressIdx => subaddressIndices.add(subaddressIdx));\n if (subaddressIndices.size) params.subaddr_indices = Array.from(subaddressIndices);\n }\n \n // cache unique txs and blocks\n let txMap = {};\n let blockMap = {};\n \n // build txs using `get_transfers`\n let resp = await this.rpc.sendJsonRequest(\"get_transfers\", params);\n for (let key of Object.keys(resp.result)) {\n for (let rpcTx of resp.result[key]) {\n //if (rpcTx.txid === query.debugTxId) console.log(rpcTx);\n let tx = MoneroWalletRpc._convertRpcTxWithTransfer(rpcTx);\n if (tx.isConfirmed()) assert(tx.getBlock().getTxs().indexOf(tx) > -1);\n \n // replace transfer amount with destination sum\n // TODO monero-wallet-rpc: confirmed tx from/to same account has amount 0 but cached transfers\n if (tx.getOutgoingTransfer() !== undefined && tx.isRelayed() && !tx.isFailed() &&\n tx.getOutgoingTransfer().getDestinations() && tx.getOutgoingAmount().compare(new BigInteger(0)) === 0) {\n let outgoingTransfer = tx.getOutgoingTransfer();\n let transferTotal = new BigInteger(0);\n for (let destination of outgoingTransfer.getDestinations()) transferTotal = transferTotal.add(destination.getAmount());\n tx.getOutgoingTransfer().setAmount(transferTotal);\n }\n \n // merge tx\n MoneroWalletRpc._mergeTx(tx, txMap, blockMap);\n }\n }\n \n // sort txs by block height\n let txs = Object.values(txMap);\n txs.sort(MoneroWalletRpc._compareTxsByHeight);\n \n // filter and return transfers\n let transfers = [];\n for (let tx of txs) {\n \n // tx is not incoming/outgoing unless already set\n if (tx.isIncoming() === undefined) tx.setIsIncoming(false);\n if (tx.isOutgoing() === undefined) tx.setIsOutgoing(false);\n \n // sort incoming transfers\n if (tx.getIncomingTransfers() !== undefined) tx.getIncomingTransfers().sort(MoneroWalletRpc._compareIncomingTransfers);\n \n // collect queried transfers, erase if excluded\n for (let transfer of tx.filterTransfers(query)) {\n transfers.push(transfer);\n }\n \n // remove txs without requested transfer\n if (tx.getBlock() !== undefined && tx.getOutgoingTransfer() === undefined && tx.getIncomingTransfers() === undefined) {\n tx.getBlock().getTxs().splice(tx.getBlock().getTxs().indexOf(tx), 1);\n }\n }\n \n return transfers;\n }\n \n async _getOutputsAux(query) {\n \n // determine account and subaddress indices to be queried\n let indices = new Map();\n if (query.getAccountIndex() !== undefined) {\n let subaddressIndices = new Set();\n if (query.getSubaddressIndex() !== undefined) subaddressIndices.add(query.getSubaddressIndex());\n if (query.getSubaddressIndices() !== undefined) query.getSubaddressIndices().map(subaddressIdx => subaddressIndices.add(subaddressIdx));\n indices.set(query.getAccountIndex(), subaddressIndices.size ? Array.from(subaddressIndices) : undefined); // undefined will fetch from all subaddresses\n } else {\n assert.equal(query.getSubaddressIndex(), undefined, \"Query specifies a subaddress index but not an account index\")\n assert(query.getSubaddressIndices() === undefined || query.getSubaddressIndices().length === 0, \"Query specifies subaddress indices but not an account index\");\n indices = await this._getAccountIndices(); // fetch all account indices without subaddresses\n }\n \n // cache unique txs and blocks\n let txMap = {};\n let blockMap = {};\n \n // collect txs with outputs for each indicated account using `incoming_transfers` rpc call\n let params = {};\n params.transfer_type = query.isSpent() === true ? \"unavailable\" : query.isSpent() === false ? \"available\" : \"all\";\n params.verbose = true;\n for (let accountIdx of indices.keys()) {\n \n // send request\n params.account_index = accountIdx;\n params.subaddr_indices = indices.get(accountIdx);\n let resp = await this.rpc.sendJsonRequest(\"incoming_transfers\", params);\n \n // convert response to txs with outputs and merge\n if (resp.result.transfers === undefined) continue;\n for (let rpcOutput of resp.result.transfers) {\n let tx = MoneroWalletRpc._convertRpcTxWalletWithOutput(rpcOutput);\n MoneroWalletRpc._mergeTx(tx, txMap, blockMap);\n }\n }\n \n // sort txs by block height\n let txs = Object.values(txMap);\n txs.sort(MoneroWalletRpc._compareTxsByHeight);\n \n // collect queried outputs\n let outputs = [];\n for (let tx of txs) {\n \n // sort outputs\n if (tx.getOutputs() !== undefined) tx.getOutputs().sort(MoneroWalletRpc._compareOutputs);\n \n // collect queried outputs, erase if excluded\n for (let output of tx.filterOutputs(query)) outputs.push(output);\n \n // remove excluded txs from block\n if (tx.getOutputs() === undefined && tx.getBlock() !== undefined) {\n tx.getBlock().getTxs().splice(tx.getBlock().getTxs().indexOf(tx), 1);\n }\n }\n return outputs;\n }\n \n /**\n * Common method to get key images.\n * \n * @param all - pecifies to get all xor only new images from last import\n * @return {MoneroKeyImage[]} are the key images\n */\n async _rpcExportKeyImages(all) {\n let resp = await this.rpc.sendJsonRequest(\"export_key_images\", {all: all});\n if (!resp.result.signed_key_images) return [];\n return resp.result.signed_key_images.map(rpcImage => new MoneroKeyImage(rpcImage.key_image, rpcImage.signature));\n }\n \n async _rpcSweepAccount(config) {\n \n // validate config\n if (config === undefined) throw new MoneroError(\"Must provide sweep config\");\n if (config.getAccountIndex() === undefined) throw new MoneroError(\"Must provide an account index to sweep from\");\n if (config.getDestinations() === undefined || config.getDestinations().length != 1) throw new MoneroError(\"Must provide exactly one destination to sweep to\");\n if (config.getDestinations()[0].getAddress() === undefined) throw new MoneroError(\"Must provide destination address to sweep to\");\n if (config.getDestinations()[0].getAmount() !== undefined) throw new MoneroError(\"Cannot specify amount in sweep config\");\n if (config.getKeyImage() !== undefined) throw new MoneroError(\"Key image defined; use sweepOutput() to sweep an output by its key image\");\n if (config.getSubaddressIndices() !== undefined && config.getSubaddressIndices().length === 0) throw new MoneroError(\"Empty list given for subaddresses indices to sweep\");\n if (config.getSweepEachSubaddress()) throw new MoneroError(\"Cannot sweep each subaddress with RPC `sweep_all`\");\n if (config.getSubtractFeeFrom() !== undefined && config.getSubtractFeeFrom().length > 0) throw new MoneroError(\"Sweeping output does not support subtracting fees from destinations\");\n \n // sweep from all subaddresses if not otherwise defined\n if (config.getSubaddressIndices() === undefined) {\n config.setSubaddressIndices([]);\n for (let subaddress of await this.getSubaddresses(config.getAccountIndex())) {\n config.getSubaddressIndices().push(subaddress.getIndex());\n }\n }\n if (config.getSubaddressIndices().length === 0) throw new MoneroError(\"No subaddresses to sweep from\");\n \n // common config params\n let params = {};\n let relay = config.getRelay() === true;\n params.account_index = config.getAccountIndex();\n params.subaddr_indices = config.getSubaddressIndices();\n params.address = config.getDestinations()[0].getAddress();\n assert(config.getPriority() === undefined || config.getPriority() >= 0 && config.getPriority() <= 3);\n params.priority = config.getPriority();\n if (config.getUnlockTime() !== undefined) params.unlock_time = config.getUnlockTime();\n params.payment_id = config.getPaymentId();\n params.do_not_relay = !relay;\n params.below_amount = config.getBelowAmount();\n params.get_tx_keys = true;\n params.get_tx_hex = true;\n params.get_tx_metadata = true;\n \n // invoke wallet rpc `sweep_all`\n let resp = await this.rpc.sendJsonRequest(\"sweep_all\", params);\n let result = resp.result;\n \n // initialize txs from response\n let txSet = MoneroWalletRpc._convertRpcSentTxsToTxSet(result, undefined, config);\n \n // initialize remaining known fields\n for (let tx of txSet.getTxs()) {\n tx.setIsLocked(true);\n tx.setIsConfirmed(false);\n tx.setNumConfirmations(0);\n tx.setRelay(relay);\n tx.setInTxPool(relay);\n tx.setIsRelayed(relay);\n tx.setIsMinerTx(false);\n tx.setIsFailed(false);\n tx.setRingSize(MoneroUtils.RING_SIZE);\n let transfer = tx.getOutgoingTransfer();\n transfer.setAccountIndex(config.getAccountIndex());\n if (config.getSubaddressIndices().length === 1) transfer.setSubaddressIndices(config.getSubaddressIndices());\n let destination = new MoneroDestination(config.getDestinations()[0].getAddress(), new BigInteger(transfer.getAmount()));\n transfer.setDestinations([destination]);\n tx.setOutgoingTransfer(transfer);\n tx.setPaymentId(config.getPaymentId());\n if (tx.getUnlockTime() === undefined) tx.setUnlockTime(config.getUnlockTime() === undefined ? 0 : config.getUnlockTime());\n if (tx.getRelay()) {\n if (tx.getLastRelayedTimestamp() === undefined) tx.setLastRelayedTimestamp(+new Date().getTime()); // TODO (monero-wallet-rpc): provide timestamp on response; unconfirmed timestamps vary\n if (tx.isDoubleSpendSeen() === undefined) tx.setIsDoubleSpend(false);\n }\n }\n return txSet.getTxs();\n }\n \n _refreshListening() {\n if (this.walletPoller == undefined && this.listeners.length) this.walletPoller = new WalletPoller(this);\n if (this.walletPoller !== undefined) this.walletPoller.setIsPolling(this.listeners.length > 0);\n }\n \n /**\n * Poll if listening.\n */\n async _poll() {\n if (this.walletPoller !== undefined && this.walletPoller._isPolling) await this.walletPoller.poll();\n }\n \n // ---------------------------- PRIVATE STATIC ------------------------------\n \n static _normalizeConfig(uriOrConfigOrConnection, username, password, rejectUnauthorized) {\n let config;\n if (typeof uriOrConfigOrConnection === \"string\") config = {uri: uriOrConfigOrConnection, username: username, password: password, rejectUnauthorized: rejectUnauthorized};\n else {\n if (typeof uriOrConfigOrConnection !== \"object\") throw new MoneroError(\"Invalid configuration to create rpc client; must be string, object, or MoneroRpcConnection\");\n if (username || password || rejectUnauthorized) throw new MoneroError(\"Can provide config object or params or new MoneroDaemonRpc(...) but not both\");\n if (uriOrConfigOrConnection instanceof MoneroRpcConnection) config = Object.assign({}, uriOrConfigOrConnection.getConfig());\n else config = Object.assign({}, uriOrConfigOrConnection);\n }\n if (config.server) {\n config = Object.assign(config, new MoneroRpcConnection(config.server).getConfig());\n delete config.server;\n }\n return config;\n }\n \n /**\n * Remove criteria which requires looking up other transfers/outputs to\n * fulfill query.\n * \n * @param {MoneroTxQuery} query - the query to decontextualize\n * @return {MoneroTxQuery} a reference to the query for convenience\n */\n static _decontextualize(query) {\n query.setIsIncoming(undefined);\n query.setIsOutgoing(undefined);\n query.setTransferQuery(undefined);\n query.setInputQuery(undefined);\n query.setOutputQuery(undefined);\n return query;\n }\n \n static _isContextual(query) {\n if (!query) return false;\n if (!query.getTxQuery()) return false;\n if (query.getTxQuery().isIncoming() !== undefined) return true; // requires getting other transfers\n if (query.getTxQuery().isOutgoing() !== undefined) return true;\n if (query instanceof MoneroTransferQuery) {\n if (query.getTxQuery().getOutputQuery() !== undefined) return true; // requires getting other outputs\n } else if (query instanceof MoneroOutputQuery) {\n if (query.getTxQuery().getTransferQuery() !== undefined) return true; // requires getting other transfers\n } else {\n throw new MoneroError(\"query must be tx or transfer query\");\n }\n return false;\n }\n \n static _convertRpcAccount(rpcAccount) {\n let account = new MoneroAccount();\n for (let key of Object.keys(rpcAccount)) {\n let val = rpcAccount[key];\n if (key === \"account_index\") account.setIndex(val);\n else if (key === \"balance\") account.setBalance(new BigInteger(val));\n else if (key === \"unlocked_balance\") account.setUnlockedBalance(new BigInteger(val));\n else if (key === \"base_address\") account.setPrimaryAddress(val);\n else if (key === \"tag\") account.setTag(val);\n else if (key === \"label\") { } // label belongs to first subaddress\n else console.log(\"WARNING: ignoring unexpected account field: \" + key + \": \" + val);\n }\n if (\"\" === account.getTag()) account.setTag(undefined);\n return account;\n }\n \n static _convertRpcSubaddress(rpcSubaddress) {\n let subaddress = new MoneroSubaddress();\n for (let key of Object.keys(rpcSubaddress)) {\n let val = rpcSubaddress[key];\n if (key === \"account_index\") subaddress.setAccountIndex(val);\n else if (key === \"address_index\") subaddress.setIndex(val);\n else if (key === \"address\") subaddress.setAddress(val);\n else if (key === \"balance\") subaddress.setBalance(new BigInteger(val));\n else if (key === \"unlocked_balance\") subaddress.setUnlockedBalance(new BigInteger(val));\n else if (key === \"num_unspent_outputs\") subaddress.setNumUnspentOutputs(val);\n else if (key === \"label\") { if (val) subaddress.setLabel(val); }\n else if (key === \"used\") subaddress.setIsUsed(val);\n else if (key === \"blocks_to_unlock\") subaddress.setNumBlocksToUnlock(val);\n else if (key == \"time_to_unlock\") {} // ignoring\n else console.log(\"WARNING: ignoring unexpected subaddress field: \" + key + \": \" + val);\n }\n return subaddress;\n }\n \n /**\n * Initializes a sent transaction.\n * \n * TODO: remove copyDestinations after >18.2.2 when subtractFeeFrom fully supported\n * \n * @param {MoneroTxConfig} config - send config\n * @param {MoneroTxWallet} tx - existing transaction to initialize (optional)\n * @param {boolean} copyDestinations - copies config destinations if true\n * @return {MoneroTxWallet} is the initialized send tx\n */\n static _initSentTxWallet(config, tx, copyDestinations) {\n if (!tx) tx = new MoneroTxWallet();\n let relay = config.getRelay() === true;\n tx.setIsOutgoing(true);\n tx.setIsConfirmed(false);\n tx.setNumConfirmations(0);\n tx.setInTxPool(relay);\n tx.setRelay(relay);\n tx.setIsRelayed(relay);\n tx.setIsMinerTx(false);\n tx.setIsFailed(false);\n tx.setIsLocked(true);\n tx.setRingSize(MoneroUtils.RING_SIZE);\n let transfer = new MoneroOutgoingTransfer().setTx(tx);\n if (config.getSubaddressIndices() && config.getSubaddressIndices().length === 1) transfer.setSubaddressIndices(config.getSubaddressIndices().slice(0)); // we know src subaddress indices iff config specifies 1\n if (copyDestinations) {\n let destCopies = [];\n for (let dest of config.getDestinations()) destCopies.push(dest.copy());\n transfer.setDestinations(destCopies);\n }\n tx.setOutgoingTransfer(transfer);\n tx.setPaymentId(config.getPaymentId());\n if (tx.getUnlockTime() === undefined) tx.setUnlockTime(config.getUnlockTime() === undefined ? 0 : config.getUnlockTime());\n if (config.getRelay()) {\n if (tx.getLastRelayedTimestamp() === undefined) tx.setLastRelayedTimestamp(+new Date().getTime()); // TODO (monero-wallet-rpc): provide timestamp on response; unconfirmed timestamps vary\n if (tx.isDoubleSpendSeen() === undefined) tx.setIsDoubleSpend(false);\n }\n return tx;\n }\n \n /**\n * Initializes a tx set from a RPC map excluding txs.\n * \n * @param rpcMap - map to initialize the tx set from\n * @return MoneroTxSet - initialized tx set\n * @return the resulting tx set\n */\n static _convertRpcTxSet(rpcMap) {\n let txSet = new MoneroTxSet();\n txSet.setMultisigTxHex(rpcMap.multisig_txset);\n txSet.setUnsignedTxHex(rpcMap.unsigned_txset);\n txSet.setSignedTxHex(rpcMap.signed_txset);\n if (txSet.getMultisigTxHex() !== undefined && txSet.getMultisigTxHex().length === 0) txSet.setMultisigTxHex(undefined);\n if (txSet.getUnsignedTxHex() !== undefined && txSet.getUnsignedTxHex().length === 0) txSet.setUnsignedTxHex(undefined);\n if (txSet.getSignedTxHex() !== undefined && txSet.getSignedTxHex().length === 0) txSet.setSignedTxHex(undefined);\n return txSet;\n }\n \n /**\n * Initializes a MoneroTxSet from a list of rpc txs.\n * \n * @param rpcTxs - rpc txs to initialize the set from\n * @param txs - existing txs to further initialize (optional)\n * @param config - tx config\n * @return the converted tx set\n */\n static _convertRpcSentTxsToTxSet(rpcTxs, txs, config) {\n \n // build shared tx set\n let txSet = MoneroWalletRpc._convertRpcTxSet(rpcTxs);\n \n // get number of txs\n let numTxs = rpcTxs.fee_list ? rpcTxs.fee_list.length : 0;\n \n // done if rpc response contains no txs\n if (numTxs === 0) {\n assert.equal(txs, undefined);\n return txSet;\n }\n \n // pre-initialize txs if none given\n if (txs) txSet.setTxs(txs);\n else {\n txs = [];\n for (let i = 0; i < numTxs; i++) txs.push(new MoneroTxWallet());\n }\n for (let tx of txs) {\n tx.setTxSet(txSet);\n tx.setIsOutgoing(true);\n }\n txSet.setTxs(txs);\n \n // initialize txs from rpc lists\n for (let key of Object.keys(rpcTxs)) {\n let val = rpcTxs[key];\n if (key === \"tx_hash_list\") for (let i = 0; i < val.length; i++) txs[i].setHash(val[i]);\n else if (key === \"tx_key_list\") for (let i = 0; i < val.length; i++) txs[i].setKey(val[i]);\n else if (key === \"tx_blob_list\") for (let i = 0; i < val.length; i++) txs[i].setFullHex(val[i]);\n else if (key === \"tx_metadata_list\") for (let i = 0; i < val.length; i++) txs[i].setMetadata(val[i]);\n else if (key === \"fee_list\") for (let i = 0; i < val.length; i++) txs[i].setFee(new BigInteger(val[i]));\n else if (key === \"weight_list\") for (let i = 0; i < val.length; i++) txs[i].setWeight(val[i]);\n else if (key === \"amount_list\") {\n for (let i = 0; i < val.length; i++) {\n if (txs[i].getOutgoingTransfer() == undefined) txs[i].setOutgoingTransfer(new MoneroOutgoingTransfer().setTx(txs[i]));\n txs[i].getOutgoingTransfer().setAmount(new BigInteger(val[i]));\n }\n }\n else if (key === \"multisig_txset\" || key === \"unsigned_txset\" || key === \"signed_txset\") {} // handled elsewhere\n else if (key === \"spent_key_images_list\") {\n let inputKeyImagesList = val;\n for (let i = 0; i < inputKeyImagesList.length; i++) {\n GenUtils.assertTrue(txs[i].getInputs() === undefined);\n txs[i].setInputs([]);\n for (let inputKeyImage of inputKeyImagesList[i][\"key_images\"]) {\n txs[i].getInputs().push(new MoneroOutputWallet().setKeyImage(new MoneroKeyImage().setHex(inputKeyImage)).setTx(txs[i]));\n }\n }\n }\n else if (key === \"amounts_by_dest_list\") {\n let amountsByDestList = val;\n let destinationIdx = 0;\n for (let txIdx = 0; txIdx < amountsByDestList.length; txIdx++) {\n let amountsByDest = amountsByDestList[txIdx][\"amounts\"];\n if (txs[txIdx].getOutgoingTransfer() === undefined) txs[txIdx].setOutgoingTransfer(new MoneroOutgoingTransfer().setTx(txs[txIdx]));\n txs[txIdx].getOutgoingTransfer().setDestinations([]);\n for (let amount of amountsByDest) {\n txs[txIdx].getOutgoingTransfer().getDestinations().push(new MoneroDestination(config.getDestinations()[destinationIdx++].getAddress(), new BigInteger(amount)));\n }\n }\n assert(config.getDestinations().length, destinationIdx);\n }\n else console.log(\"WARNING: ignoring unexpected transaction field: \" + key + \": \" + val);\n }\n \n return txSet;\n }\n \n /**\n * Converts a rpc tx with a transfer to a tx set with a tx and transfer.\n * \n * @param rpcTx - rpc tx to build from\n * @param tx - existing tx to continue initializing (optional)\n * @param isOutgoing - specifies if the tx is outgoing if true, incoming if false, or decodes from type if undefined\n * @param config - tx config\n * @returns the initialized tx set with a tx\n */\n static _convertRpcTxToTxSet(rpcTx, tx, isOutgoing, config) {\n let txSet = MoneroWalletRpc._convertRpcTxSet(rpcTx);\n txSet.setTxs([MoneroWalletRpc._convertRpcTxWithTransfer(rpcTx, tx, isOutgoing, config).setTxSet(txSet)]);\n return txSet;\n }\n \n /**\n * Builds a MoneroTxWallet from a RPC tx.\n * \n * @param rpcTx - rpc tx to build from\n * @param tx - existing tx to continue initializing (optional)\n * @param isOutgoing - specifies if the tx is outgoing if true, incoming if false, or decodes from type if undefined\n * @param config - tx config\n * @returns {MoneroTxWallet} is the initialized tx\n */\n static _convertRpcTxWithTransfer(rpcTx, tx, isOutgoing, config) { // TODO: change everything to safe set\n \n // initialize tx to return\n if (!tx) tx = new MoneroTxWallet();\n \n // initialize tx state from rpc type\n if (rpcTx.type !== undefined) isOutgoing = MoneroWalletRpc._decodeRpcType(rpcTx.type, tx);\n else assert.equal(typeof isOutgoing, \"boolean\", \"Must indicate if tx is outgoing (true) xor incoming (false) since unknown\");\n \n // TODO: safe set\n // initialize remaining fields TODO: seems this should be part of common function with DaemonRpc._convertRpcTx\n let header;\n let transfer;\n for (let key of Object.keys(rpcTx)) {\n let val = rpcTx[key];\n if (key === \"txid\") tx.setHash(val);\n else if (key === \"tx_hash\") tx.setHash(val);\n else if (key === \"fee\") tx.setFee(new BigInteger(val));\n else if (key === \"note\") { if (val) tx.setNote(val); }\n else if (key === \"tx_key\") tx.setKey(val);\n else if (key === \"type\") { } // type already handled\n else if (key === \"tx_size\") tx.setSize(val);\n else if (key === \"unlock_time\") tx.setUnlockTime(val);\n else if (key === \"weight\") tx.setWeight(val);\n else if (key === \"locked\") tx.setIsLocked(val);\n else if (key === \"tx_blob\") tx.setFullHex(val);\n else if (key === \"tx_metadata\") tx.setMetadata(val);\n else if (key === \"double_spend_seen\") tx.setIsDoubleSpend(val);\n else if (key === \"block_height\" || key === \"height\") {\n if (tx.isConfirmed()) {\n if (!header) header = new MoneroBlockHeader();\n header.setHeight(val);\n }\n }\n else if (key === \"timestamp\") {\n if (tx.isConfirmed()) {\n if (!header) header = new MoneroBlockHeader();\n header.setTimestamp(val);\n } else {\n // timestamp of unconfirmed tx is current request time\n }\n }\n else if (key === \"confirmations\") tx.setNumConfirmations(val);\n else if (key === \"suggested_confirmations_threshold\") {\n if (transfer === undefined) transfer = (isOutgoing ? new MoneroOutgoingTransfer() : new MoneroIncomingTransfer()).setTx(tx);\n if (!isOutgoing) transfer.setNumSuggestedConfirmations(val);\n }\n else if (key === \"amount\") {\n if (transfer === undefined) transfer = (isOutgoing ? new MoneroOutgoingTransfer() : new MoneroIncomingTransfer()).setTx(tx);\n transfer.setAmount(new BigInteger(val));\n }\n else if (key === \"amounts\") {} // ignoring, amounts sum to amount\n else if (key === \"address\") {\n if (!isOutgoing) {\n if (!transfer) transfer = new MoneroIncomingTransfer().setTx(tx);\n transfer.setAddress(val);\n }\n }\n else if (key === \"payment_id\") {\n if (\"\" !== val && MoneroTxWallet.DEFAULT_PAYMENT_ID !== val) tx.setPaymentId(val); // default is undefined\n }\n else if (key === \"subaddr_index\") assert(rpcTx.subaddr_indices); // handled by subaddr_indices\n else if (key === \"subaddr_indices\") {\n if (!transfer) transfer = (isOutgoing ? new MoneroOutgoingTransfer() : new MoneroIncomingTransfer()).setTx(tx);\n let rpcIndices = val;\n transfer.setAccountIndex(rpcIndices[0].major);\n if (isOutgoing) {\n let subaddressIndices = [];\n for (let rpcIndex of rpcIndices) subaddressIndices.push(rpcIndex.minor);\n transfer.setSubaddressIndices(subaddressIndices);\n } else {\n assert.equal(rpcIndices.length, 1);\n transfer.setSubaddressIndex(rpcIndices[0].minor);\n }\n }\n else if (key === \"destinations\" || key == \"recipients\") {\n assert(isOutgoing);\n let destinations = [];\n for (let rpcDestination of val) {\n let destination = new MoneroDestination();\n destinations.push(destination);\n for (let destinationKey of Object.keys(rpcDestination)) {\n if (destinationKey === \"address\") destination.setAddress(rpcDestination[destinationKey]);\n else if (destinationKey === \"amount\") destination.setAmount(new BigInteger(rpcDestination[destinationKey]));\n else throw new MoneroError(\"Unrecognized transaction destination field: \" + destinationKey);\n }\n }\n if (transfer === undefined) transfer = new MoneroOutgoingTransfer({tx: tx});\n transfer.setDestinations(destinations);\n }\n else if (key === \"multisig_txset\" && val !== undefined) {} // handled elsewhere; this method only builds a tx wallet\n else if (key === \"unsigned_txset\" && val !== undefined) {} // handled elsewhere; this method only builds a tx wallet\n else if (key === \"amount_in\") tx.setInputSum(new BigInteger(val));\n else if (key === \"amount_out\") tx.setOutputSum(new BigInteger(val));\n else if (key === \"change_address\") tx.setChangeAddress(val === \"\" ? undefined : val);\n else if (key === \"change_amount\") tx.setChangeAmount(new BigInteger(val));\n else if (key === \"dummy_outputs\") tx.setNumDummyOutputs(val);\n else if (key === \"extra\") tx.setExtraHex(val);\n else if (key === \"ring_size\") tx.setRingSize(val);\n else if (key === \"spent_key_images\") {\n let inputKeyImages = val.key_images;\n GenUtils.assertTrue(tx.getInputs() === undefined);\n tx.setInputs([]);\n for (let inputKeyImage of inputKeyImages) {\n tx.getInputs().push(new MoneroOutputWallet().setKeyImage(new MoneroKeyImage().setHex(inputKeyImage)).setTx(tx));\n }\n }\n else if (key === \"amounts_by_dest\") {\n GenUtils.assertTrue(isOutgoing);\n let amountsByDest = val.amounts;\n assert.equal(config.getDestinations().length, amountsByDest.length);\n if (transfer === undefined) transfer = new MoneroOutgoingTransfer().setTx(tx);\n transfer.setDestinations([]);\n for (let i = 0; i < config.getDestinations().length; i++) {\n transfer.getDestinations().push(new MoneroDestination(config.getDestinations()[i].getAddress(), new BigInteger(amountsByDest[i])));\n }\n }\n else console.log(\"WARNING: ignoring unexpected transaction field with transfer: \" + key + \": \" + val);\n }\n \n // link block and tx\n if (header) tx.setBlock(new MoneroBlock(header).setTxs([tx]));\n \n // initialize final fields\n if (transfer) {\n if (tx.isConfirmed() === undefined) tx.setIsConfirmed(false);\n if (!transfer.getTx().isConfirmed()) tx.setNumConfirmations(0);\n if (isOutgoing) {\n tx.setIsOutgoing(true);\n if (tx.getOutgoingTransfer()) {\n if (transfer.getDestinations()) tx.getOutgoingTransfer().setDestinations(undefined); // overwrite to avoid reconcile error TODO: remove after >18.2.2 when amounts_by_dest supported\n tx.getOutgoingTransfer().merge(transfer);\n }\n else tx.setOutgoingTransfer(transfer);\n } else {\n tx.setIsIncoming(true);\n tx.setIncomingTransfers([transfer]);\n }\n }\n \n // return initialized transaction\n return tx;\n }\n \n static _convertRpcTxWalletWithOutput(rpcOutput) {\n \n // initialize tx\n let tx = new MoneroTxWallet();\n tx.setIsConfirmed(true);\n tx.setIsRelayed(true);\n tx.setIsFailed(false);\n \n // initialize output\n let output = new MoneroOutputWallet({tx: tx});\n for (let key of Object.keys(rpcOutput)) {\n let val = rpcOutput[key];\n if (key === \"amount\") output.setAmount(new BigInteger(val));\n else if (key === \"spent\") output.setIsSpent(val);\n else if (key === \"key_image\") { if (\"\" !== val) output.setKeyImage(new MoneroKeyImage(val)); }\n else if (key === \"global_index\") output.setIndex(val);\n else if (key === \"tx_hash\") tx.setHash(val);\n else if (key === \"unlocked\") tx.setIsLocked(!val);\n else if (key === \"frozen\") output.setIsFrozen(val);\n else if (key === \"pubkey\") output.setStealthPublicKey(val);\n else if (key === \"subaddr_index\") {\n output.setAccountIndex(val.major);\n output.setSubaddressIndex(val.minor);\n }\n else if (key === \"block_height\") tx.setBlock(new MoneroBlock().setHeight(val).setTxs([tx]));\n else console.log(\"WARNING: ignoring unexpected transaction field: \" + key + \": \" + val);\n }\n \n // initialize tx with output\n tx.setOutputs([output]);\n return tx;\n }\n \n static _convertRpcDescribeTransfer(rpcDescribeTransferResult) {\n let txSet = new MoneroTxSet();\n for (let key of Object.keys(rpcDescribeTransferResult)) {\n let val = rpcDescribeTransferResult[key];\n if (key === \"desc\") {\n txSet.setTxs([]);\n for (let txMap of val) {\n let tx = MoneroWalletRpc._convertRpcTxWithTransfer(txMap, undefined, true);\n tx.setTxSet(txSet);\n txSet.getTxs().push(tx);\n }\n }\n else if (key === \"summary\") { } // TODO: support tx set summary fields?\n else console.log(\"WARNING: ignoring unexpected descdribe transfer field: \" + key + \": \" + val);\n }\n return txSet;\n }\n \n /**\n * Decodes a \"type\" from monero-wallet-rpc to initialize type and state\n * fields in the given transaction.\n * \n * TODO: these should be safe set\n * \n * @param rpcType is the type to decode\n * @param tx is the transaction to decode known fields to\n * @return {boolean} true if the rpc type indicates outgoing xor incoming\n */\n static _decodeRpcType(rpcType, tx) {\n let isOutgoing;\n if (rpcType === \"in\") {\n isOutgoing = false;\n tx.setIsConfirmed(true);\n tx.setInTxPool(false);\n tx.setIsRelayed(true);\n tx.setRelay(true);\n tx.setIsFailed(false);\n tx.setIsMinerTx(false);\n } else if (rpcType === \"out\") {\n isOutgoing = true;\n tx.setIsConfirmed(true);\n tx.setInTxPool(false);\n tx.setIsRelayed(true);\n tx.setRelay(true);\n tx.setIsFailed(false);\n tx.setIsMinerTx(false);\n } else if (rpcType === \"pool\") {\n isOutgoing = false;\n tx.setIsConfirmed(false);\n tx.setInTxPool(true);\n tx.setIsRelayed(true);\n tx.setRelay(true);\n tx.setIsFailed(false);\n tx.setIsMinerTx(false); // TODO: but could it be?\n } else if (rpcType === \"pending\") {\n isOutgoing = true;\n tx.setIsConfirmed(false);\n tx.setInTxPool(true);\n tx.setIsRelayed(true);\n tx.setRelay(true);\n tx.setIsFailed(false);\n tx.setIsMinerTx(false);\n } else if (rpcType === \"block\") {\n isOutgoing = false;\n tx.setIsConfirmed(true);\n tx.setInTxPool(false);\n tx.setIsRelayed(true);\n tx.setRelay(true);\n tx.setIsFailed(false);\n tx.setIsMinerTx(true);\n } else if (rpcType === \"failed\") {\n isOutgoing = true;\n tx.setIsConfirmed(false);\n tx.setInTxPool(false);\n tx.setIsRelayed(true);\n tx.setRelay(true);\n tx.setIsFailed(true);\n tx.setIsMinerTx(false);\n } else {\n throw new MoneroError(\"Unrecognized transfer type: \" + rpcType);\n }\n return isOutgoing;\n }\n \n /**\n * Merges a transaction into a unique set of transactions.\n *\n * @param {MoneroTxWallet} tx - the transaction to merge into the existing txs\n * @param {Object} txMap - maps tx hashes to txs\n * @param {Object} blockMap - maps block heights to blocks\n */\n static _mergeTx(tx, txMap, blockMap) {\n assert(tx.getHash() !== undefined);\n \n // merge tx\n let aTx = txMap[tx.getHash()];\n if (aTx === undefined) txMap[tx.getHash()] = tx; // cache new tx\n else aTx.merge(tx); // merge with existing tx\n \n // merge tx's block if confirmed\n if (tx.getHeight() !== undefined) {\n let aBlock = blockMap[tx.getHeight()];\n if (aBlock === undefined) blockMap[tx.getHeight()] = tx.getBlock(); // cache new block\n else aBlock.merge(tx.getBlock()); // merge with existing block\n }\n }\n \n /**\n * Compares two transactions by their height.\n */\n static _compareTxsByHeight(tx1, tx2) {\n if (tx1.getHeight() === undefined && tx2.getHeight() === undefined) return 0; // both unconfirmed\n else if (tx1.getHeight() === undefined) return 1; // tx1 is unconfirmed\n else if (tx2.getHeight() === undefined) return -1; // tx2 is unconfirmed\n let diff = tx1.getHeight() - tx2.getHeight();\n if (diff !== 0) return diff;\n return tx1.getBlock().getTxs().indexOf(tx1) - tx2.getBlock().getTxs().indexOf(tx2); // txs are in the same block so retain their original order\n }\n \n /**\n * Compares two transfers by ascending account and subaddress indices.\n */\n static _compareIncomingTransfers(t1, t2) {\n if (t1.getAccountIndex() < t2.getAccountIndex()) return -1;\n else if (t1.getAccountIndex() === t2.getAccountIndex()) return t1.getSubaddressIndex() - t2.getSubaddressIndex();\n return 1;\n }\n \n /**\n * Compares two outputs by ascending account and subaddress indices.\n */\n static _compareOutputs(o1, o2) {\n \n // compare by height\n let heightComparison = MoneroWalletRpc._compareTxsByHeight(o1.getTx(), o2.getTx());\n if (heightComparison !== 0) return heightComparison;\n \n // compare by account index, subaddress index, output index, then key image hex\n let compare = o1.getAccountIndex() - o2.getAccountIndex();\n if (compare !== 0) return compare;\n compare = o1.getSubaddressIndex() - o2.getSubaddressIndex();\n if (compare !== 0) return compare;\n compare = o1.getIndex() - o2.getIndex();\n if (compare !== 0) return compare;\n return o1.getKeyImage().getHex().localeCompare(o2.getKeyImage().getHex());\n }\n}\n\n/**\n * Polls monero-wallet-rpc to provide listener notifications.\n * \n * @class\n * @ignore\n */\nclass WalletPoller {\n \n constructor(wallet) {\n let that = this;\n this._wallet = wallet;\n this._looper = new TaskLooper(async function() { await that.poll(); });\n this._prevLockedTxs = [];\n this._prevUnconfirmedNotifications = new Set(); // tx hashes of previous notifications\n this._prevConfirmedNotifications = new Set(); // tx hashes of previously confirmed but not yet unlocked notifications\n this._threadPool = new ThreadPool(1); // synchronize polls\n this._numPolling = 0;\n }\n \n setIsPolling(isPolling) {\n this._isPolling = isPolling;\n if (isPolling) this._looper.start(this._wallet.syncPeriodInMs);\n else this._looper.stop();\n }\n \n setPeriodInMs(periodInMs) {\n this._looper.setPeriodInMs(periodInMs);\n }\n \n async poll() {\n\n // skip if next poll is queued\n if (this._numPolling > 1) return;\n this._numPolling++;\n \n // synchronize polls\n let that = this;\n return this._threadPool.submit(async function() {\n try {\n \n // skip if wallet is closed\n if (await that._wallet.isClosed()) {\n that._numPolling--;\n return;\n }\n \n // take initial snapshot\n if (that._prevHeight === undefined) {\n that._prevHeight = await that._wallet.getHeight();\n that._prevLockedTxs = await that._wallet.getTxs(new MoneroTxQuery().setIsLocked(true));\n that._prevBalances = await that._wallet._getBalances();\n that._numPolling--;\n return;\n }\n \n // announce height changes\n let height = await that._wallet.getHeight();\n if (that._prevHeight !== height) {\n for (let i = that._prevHeight; i < height; i++) await that._onNewBlock(i);\n that._prevHeight = height;\n }\n \n // get locked txs for comparison to previous\n let minHeight = Math.max(0, height - 70); // only monitor recent txs\n let lockedTxs = await that._wallet.getTxs(new MoneroTxQuery().setIsLocked(true).setMinHeight(minHeight).setIncludeOutputs(true));\n \n // collect hashes of txs no longer locked\n let noLongerLockedHashes = [];\n for (let prevLockedTx of that._prevLockedTxs) {\n if (that._getTx(lockedTxs, prevLockedTx.getHash()) === undefined) {\n noLongerLockedHashes.push(prevLockedTx.getHash());\n }\n }\n \n // save locked txs for next comparison\n that._prevLockedTxs = lockedTxs;\n \n // fetch txs which are no longer locked\n let unlockedTxs = noLongerLockedHashes.length === 0 ? [] : await that._wallet.getTxs(new MoneroTxQuery().setIsLocked(false).setMinHeight(minHeight).setHashes(noLongerLockedHashes).setIncludeOutputs(true));\n \n // announce new unconfirmed and confirmed outputs\n for (let lockedTx of lockedTxs) {\n let searchSet = lockedTx.isConfirmed() ? that._prevConfirmedNotifications : that._prevUnconfirmedNotifications;\n let unannounced = !searchSet.has(lockedTx.getHash());\n searchSet.add(lockedTx.getHash());\n if (unannounced) await that._notifyOutputs(lockedTx);\n }\n \n // announce new unlocked outputs\n for (let unlockedTx of unlockedTxs) {\n that._prevUnconfirmedNotifications.delete(unlockedTx.getHash());\n that._prevConfirmedNotifications.delete(unlockedTx.getHash());\n await that._notifyOutputs(unlockedTx);\n }\n \n // announce balance changes\n await that._checkForChangedBalances();\n that._numPolling--;\n } catch (err) {\n that._numPolling--;\n console.error(\"Failed to background poll \" + await that._wallet.getPath());\n }\n });\n }\n \n async _onNewBlock(height) {\n for (let listener of this._wallet.getListeners()) await listener.onNewBlock(height);\n }\n \n async _notifyOutputs(tx) {\n \n // notify spent outputs // TODO (monero-project): monero-wallet-rpc does not allow scrape of tx inputs so providing one input with outgoing amount\n if (tx.getOutgoingTransfer() !== undefined) {\n assert(tx.getInputs() === undefined);\n let output = new MoneroOutputWallet()\n .setAmount(tx.getOutgoingTransfer().getAmount().add(tx.getFee()))\n .setAccountIndex(tx.getOutgoingTransfer().getAccountIndex())\n .setSubaddressIndex(tx.getOutgoingTransfer().getSubaddressIndices().length === 1 ? tx.getOutgoingTransfer().getSubaddressIndices()[0] : undefined) // initialize if transfer sourced from single subaddress\n .setTx(tx);\n tx.setInputs([output]);\n for (let listener of this._wallet.getListeners()) await listener.onOutputSpent(output);\n }\n \n // notify received outputs\n if (tx.getIncomingTransfers() !== undefined) {\n if (tx.getOutputs() !== undefined && tx.getOutputs().length > 0) { // TODO (monero-project): outputs only returned for confirmed txs\n for (let output of tx.getOutputs()) {\n for (let listener of this._wallet.getListeners()) await listener.onOutputReceived(output);\n }\n } else { // TODO (monero-project): monero-wallet-rpc does not allow scrape of unconfirmed received outputs so using incoming transfer values\n let outputs = [];\n for (let transfer of tx.getIncomingTransfers()) {\n outputs.push(new MoneroOutputWallet()\n .setAccountIndex(transfer.getAccountIndex())\n .setSubaddressIndex(transfer.getSubaddressIndex())\n .setAmount(transfer.getAmount())\n .setTx(tx));\n }\n tx.setOutputs(outputs);\n for (let listener of this._wallet.getListeners()) {\n for (let output of tx.getOutputs()) await listener.onOutputReceived(output);\n }\n }\n }\n }\n \n _getTx(txs, txHash) {\n for (let tx of txs) if (txHash === tx.getHash()) return tx;\n return undefined;\n }\n \n async _checkForChangedBalances() {\n let balances = await this._wallet._getBalances();\n if (balances[0].compare(this._prevBalances[0]) !== 0 || balances[1].compare(this._prevBalances[1]) !== 0) {\n this._prevBalances = balances;\n for (let listener of await this._wallet.getListeners()) await listener.onBalancesChanged(balances[0], balances[1]);\n return true;\n }\n return false;\n }\n}\n\nMoneroWalletRpc.DEFAULT_SYNC_PERIOD_IN_MS = 20000; // default period between syncs in ms (defined by DEFAULT_AUTO_REFRESH_PERIOD in wallet_rpc_server.cpp)\n\nmodule.exports = MoneroWalletRpc;","const assert = require(\"assert\");\nconst BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst MoneroSubaddress = require(\"./MoneroSubaddress\");\n\n/**\n * Monero account model.\n */\nclass MoneroAccount {\n \n constructor(stateOrIndex, primaryAddress, balance, unlockedBalance, subaddresses) {\n \n // construct from json\n if (typeof stateOrIndex === \"object\") {\n this.state = stateOrIndex;\n \n // deserialize balances\n if (this.state.balance !== undefined && !(this.state.balance instanceof BigInteger)) this.state.balance = BigInteger.parse(this.state.balance);\n if (this.state.unlockedBalance !== undefined && !(this.state.unlockedBalance instanceof BigInteger)) this.state.unlockedBalance = BigInteger.parse(this.state.unlockedBalance);\n \n // deserialize subaddresses\n if (this.state.subaddresses) {\n for (let i = 0; i < this.state.subaddresses.length; i++) {\n if (!(this.state.subaddresses[i] instanceof MoneroSubaddress)) {\n this.state.subaddresses[i] = new MoneroSubaddress(this.state.subaddresses[i]);\n }\n }\n }\n }\n \n // construct from individual params\n else {\n this.state = {};\n this.setIndex(stateOrIndex);\n this.setPrimaryAddress(primaryAddress);\n this.setBalance(balance);\n this.setUnlockedBalance(unlockedBalance);\n this.setSubaddresses(subaddresses);\n }\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.balance) json.balance = json.balance.toString();\n if (json.unlockedBalance) json.unlockedBalance = json.unlockedBalance.toString();\n if (json.subaddresses) {\n for (let i = 0; i < json.subaddresses.length; i++) {\n json.subaddresses[i] = json.subaddresses[i].toJson();\n }\n }\n return json;\n }\n \n getIndex() {\n return this.state.index;\n }\n \n setIndex(index) {\n this.state.index = index;\n return this;\n }\n \n getPrimaryAddress() {\n return this.state.primaryAddress;\n }\n\n setPrimaryAddress(primaryAddress) {\n this.state.primaryAddress = primaryAddress;\n return this;\n }\n \n getBalance() {\n return this.state.balance;\n }\n \n setBalance(balance) {\n this.state.balance = balance;\n return this;\n }\n \n getUnlockedBalance() {\n return this.state.unlockedBalance;\n }\n \n setUnlockedBalance(unlockedBalance) {\n this.state.unlockedBalance = unlockedBalance;\n return this;\n }\n \n getTag() {\n return this.state.tag;\n }\n \n setTag(tag) {\n this.state.tag = tag;\n return this;\n }\n \n getSubaddresses() {\n return this.state.subaddresses;\n }\n \n setSubaddresses(subaddresses) {\n assert(subaddresses === undefined || Array.isArray(subaddresses), \"Given subaddresses must be undefined or an array of subaddresses\");\n this.state.subaddresses = subaddresses;\n if (subaddresses) {\n for (let subaddress of subaddresses) {\n subaddress.setAccountIndex(this.state.index);\n }\n }\n return this;\n }\n \n toString(indent = 0) {\n let str = \"\";\n str += GenUtils.kvLine(\"Index\", this.getIndex(), indent);\n str += GenUtils.kvLine(\"Primary address\", this.getPrimaryAddress(), indent);\n str += GenUtils.kvLine(\"Balance\", this.getBalance(), indent);\n str += GenUtils.kvLine(\"Unlocked balance\", this.getUnlockedBalance(), indent);\n str += GenUtils.kvLine(\"Tag\", this.getTag(), indent);\n if (this.getSubaddresses() != null) {\n sb += GenUtils.kvLine(\"Subaddresses\", \"\", indent)\n for (let i = 0; i < this.getSubaddresses().size(); i++) {\n str += GenUtils.kvLine(i + 1, \"\", indent + 1);\n str += this.getSubaddresses()[i].toString(indent + 2) + \"\\n\";\n }\n }\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroAccount;","/**\n * Represents an account tag.\n */\nclass MoneroAccountTag {\n \n constructor(tag, label, accountIndices) {\n this.tag = tag;\n this.label = label;\n this.accountIndices = accountIndices;\n }\n \n getTag() {\n return this.tag;\n }\n \n setTag(tag) {\n this.tag = tag;\n return this;\n }\n \n getLabel() {\n return this.label;\n }\n \n setLabel(label) {\n this.label = label;\n return this;\n }\n \n getAccountIndices() {\n return this.accountIndices;\n }\n \n setAccountIndices(accountIndices) {\n this.accoutIndices = accountIndices;\n return this;\n }\n}\n\nmodule.exports = MoneroAccountTag;","/**\n * Monero address book entry model\n */\nclass MoneroAddressBookEntry {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n \n getIndex() {\n return this.state.index;\n }\n \n setIndex(index) {\n this.state.index = index;\n return this;\n }\n \n getAddress() {\n return this.state.address;\n }\n \n setAddress(address) {\n this.state.address = address;\n return this;\n }\n \n getDescription() {\n return this.state.description;\n }\n \n setDescription(description) {\n this.state.description = description;\n return this;\n }\n \n getPaymentId() {\n return this.state.paymentId;\n }\n \n setPaymentId(paymentId) {\n this.state.paymentId = paymentId;\n return this;\n }\n}\n\nmodule.exports = MoneroAddressBookEntry;","/**\n * Base class for results from checking a transaction or reserve proof.\n * \n * @class\n */\nclass MoneroCheck {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n }\n\n isGood() {\n return this.state.isGood;\n }\n\n setIsGood(isGood) {\n this.state.isGood = isGood;\n return this;\n }\n}\n\nmodule.exports = MoneroCheck;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst MoneroCheck = require(\"./MoneroCheck\");\n\n/**\n * Results from checking a reserve proof.\n * \n * @extends {MoneroCheck}\n */\nclass MoneroCheckReserve extends MoneroCheck {\n \n constructor(state) {\n super(state);\n if (this.state.totalAmount !== undefined && !(this.state.totalAmount instanceof BigInteger)) this.state.totalAmount = BigInteger.parse(this.state.totalAmount);\n if (this.state.unconfirmedSpentAmount !== undefined && !(this.state.unconfirmedSpentAmount instanceof BigInteger)) this.state.unconfirmedSpentAmount = BigInteger.parse(this.state.unconfirmedSpentAmount);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getTotalAmount()) json.totalAmount = this.getTotalAmount().toString();\n if (this.getUnconfirmedSpentAmount()) json.unconfirmedSpentAmount = this.getUnconfirmedSpentAmount().toString();\n return json;\n }\n \n getTotalAmount() {\n return this.state.totalAmount;\n }\n\n setTotalAmount(totalAmount) {\n this.state.totalAmount = totalAmount;\n return this;\n }\n \n getUnconfirmedSpentAmount() {\n return this.state.unconfirmedSpentAmount;\n }\n\n setUnconfirmedSpentAmount(unconfirmedSpentAmount) {\n this.state.unconfirmedSpentAmount = unconfirmedSpentAmount;\n return this;\n }\n}\n\nmodule.exports = MoneroCheckReserve;","const MoneroCheck = require(\"./MoneroCheck\");\nconst BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Results from checking a transaction key.\n * \n * @extends {MoneroCheck}\n */\nclass MoneroCheckTx extends MoneroCheck {\n \n constructor(state) {\n super(state);\n if (this.state.receivedAmount !== undefined && !(this.state.receivedAmount instanceof BigInteger)) this.state.receivedAmount = BigInteger.parse(this.state.receivedAmount);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getReceivedAmount()) json.receivedAmount = this.getReceivedAmount().toString();\n return json;\n }\n\n inTxPool() {\n return this.state.inTxPool;\n }\n \n setInTxPool(inTxPool) {\n this.state.inTxPool = inTxPool;\n return this;\n }\n \n getNumConfirmations() {\n return this.state.numConfirmations;\n }\n \n setNumConfirmations(numConfirmations) {\n this.state.numConfirmations = numConfirmations;\n return this;\n }\n \n getReceivedAmount() {\n return this.state.receivedAmount;\n }\n \n setReceivedAmount(receivedAmount) {\n this.state.receivedAmount = receivedAmount;\n return this;\n }\n}\n\nmodule.exports = MoneroCheckTx;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroError = require(\"../../common/MoneroError\");\n\n/**\n * Models an outgoing transfer destination.\n */\nclass MoneroDestination {\n \n /**\n * Construct the model.\n * \n * @param {MoneroDestination|object|string} stateOrAddress is a MoneroDestination, JS object, or hex string to initialize from (optional)\n * @param {BigInteger|string} amount - the destination amount\n */\n constructor(stateOrAddress, amount) {\n if (!stateOrAddress) this.state = {};\n else if (stateOrAddress instanceof MoneroDestination) this.state = stateOrAddress.toJson();\n else if (typeof stateOrAddress === \"object\") {\n this.state = Object.assign({}, stateOrAddress);\n if (typeof this.state.amount === \"number\") this.state.amount = BigInteger.parse(this.state.amount);\n } else if (typeof stateOrAddress === \"string\") {\n this.state = {};\n this.setAddress(stateOrAddress);\n }\n else throw new MoneroError(\"stateOrAddress must be a MoneroDestination, JavaScript object, or hex string\");\n if (amount) this.state.amount = amount;\n this.setAmount(this.state.amount);\n }\n \n getAddress() {\n return this.state.address;\n }\n\n setAddress(address) {\n this.state.address = address;\n return this;\n }\n \n getAmount() {\n return this.state.amount;\n }\n\n setAmount(amount) {\n if (amount !== undefined && !(this.state.amount instanceof BigInteger)) {\n if (typeof amount === \"number\") throw new MoneroError(\"Destination amount must be BigInteger or string\");\n try { amount = BigInteger.parse(amount); }\n catch (err) { throw new MoneroError(\"Invalid destination amount: \" + amount); }\n }\n this.state.amount = amount;\n return this;\n }\n\n copy() {\n return new MoneroDestination(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getAmount()) json.amount = this.getAmount().toString();\n return json;\n }\n \n toString(indent = 0) {\n let str = GenUtils.kvLine(\"Address\", this.getAddress(), indent);\n str += GenUtils.kvLine(\"Amount\", this.getAmount() ? this.getAmount().toString() : undefined, indent);\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroDestination;","const assert = require(\"assert\");\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroTransfer = require(\"./MoneroTransfer\");\n\n/**\n * Models an incoming transfer of funds to the wallet.\n * \n * @extends {MoneroTransfer}\n */\nclass MoneroIncomingTransfer extends MoneroTransfer {\n \n /**\n * Construct the model.\n * \n * @param {MoneroTransfer|object} state is existing state to initialize from (optional)\n */\n constructor(state) {\n super(state);\n }\n \n isIncoming() {\n return true;\n }\n \n getSubaddressIndex() {\n return this.state.subaddressIndex;\n }\n \n setSubaddressIndex(subaddressIndex) {\n this.state.subaddressIndex = subaddressIndex;\n return this;\n }\n \n getAddress() {\n return this.state.address;\n }\n\n setAddress(address) {\n this.state.address = address;\n return this;\n }\n \n /**\n * Return how many confirmations till it's not economically worth re-writing the chain.\n * That is, the number of confirmations before the transaction is highly unlikely to be\n * double spent or overwritten and may be considered settled, e.g. for a merchant to trust\n * as finalized.\n * \n * @return {number} is the number of confirmations before it's not worth rewriting the chain\n */\n getNumSuggestedConfirmations() {\n return this.state.numSuggestedConfirmations;\n }\n \n setNumSuggestedConfirmations(numSuggestedConfirmations) {\n this.state.numSuggestedConfirmations = numSuggestedConfirmations;\n return this;\n }\n\n copy() {\n return new MoneroIncomingTransfer(this.toJson());\n }\n \n /**\n * Updates this transaction by merging the latest information from the given\n * transaction.\n * \n * Merging can modify or build references to the transfer given so it\n * should not be re-used or it should be copied before calling this method.\n * \n * @param {MoneroIncomingTransfer} transfer is the transfer to merge into this one\n */\n merge(transfer) {\n super.merge(transfer);\n assert(transfer instanceof MoneroIncomingTransfer);\n if (this === transfer) return this;\n this.setSubaddressIndex(GenUtils.reconcile(this.getSubaddressIndex(), transfer.getSubaddressIndex()));\n this.setAddress(GenUtils.reconcile(this.getAddress(), transfer.getAddress()));\n this.setNumSuggestedConfirmations(GenUtils.reconcile(this.getNumSuggestedConfirmations(), transfer.getNumSuggestedConfirmations(), {resolveMax: false}));\n return this;\n }\n \n toString() {\n return this.toString(0);\n }\n \n toString(indent) {\n let str = super.toString(indent) + \"\\n\";\n str += GenUtils.kvLine(\"Subaddress index\", this.getSubaddressIndex(), indent);\n str += GenUtils.kvLine(\"Address\", this.getAddress(), indent);\n str += GenUtils.kvLine(\"Num suggested confirmations\", this.getNumSuggestedConfirmations(), indent);\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroIncomingTransfer;","/**\n * Monero integrated address model.\n */\nclass MoneroIntegratedAddress {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n\n getStandardAddress() {\n return this.state.standardAddress;\n }\n \n setStandardAddress(standardAddress) {\n this.state.standardAddress = standardAddress;\n return this;\n }\n \n getPaymentId() {\n return this.state.paymentId;\n }\n \n setPaymentId(paymentId) {\n this.state.paymentId = paymentId;\n return this;\n }\n \n getIntegratedAddress() {\n return this.state.integratedAddress;\n }\n \n setIntegratedAddress(integratedAddress) {\n this.state.integratedAddress = integratedAddress;\n return this;\n }\n \n toString() {\n return this.state.integratedAddress;\n }\n}\n\nmodule.exports = MoneroIntegratedAddress;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Models results from importing key images.\n */\nclass MoneroKeyImageImportResult {\n \n constructor(state) {\n state = Object.assign({}, state);\n if (state.spentAmount !== undefined && !(state.spentAmount instanceof BigInteger)) state.spentAmount = BigInteger.parse(state.spentAmount);\n if (state.unspentAmount !== undefined && !(state.unspentAmount instanceof BigInteger)) state.unspentAmount = BigInteger.parse(state.unspentAmount);\n this.state = state;\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getSpentAmount()) json.spentAmount = this.getSpentAmount().toString();\n if (this.getUnspentAmount()) json.unspentAmount = this.getUnspentAmount().toString();\n return json;\n }\n \n getHeight() {\n return this.state.height;\n }\n \n setHeight(height) {\n this.state.height = height;\n return this;\n }\n \n getSpentAmount() {\n return this.state.spentAmount;\n }\n \n setSpentAmount(spentAmount) {\n this.state.spentAmount = spentAmount;\n return this;\n }\n \n getUnspentAmount() {\n return this.state.unspentAmount;\n }\n \n setUnspentAmount(unspentAmount) {\n this.state.unspentAmount = unspentAmount;\n return this;\n }\n}\n\nmodule.exports = MoneroKeyImageImportResult;","/**\n * Message signature verification result.\n * \n * @class\n */\nclass MoneroMessageSignatureResult {\n \n constructor(stateOrIsGood, isOld, signatureType, version) {\n if (typeof stateOrIsGood === \"boolean\") {\n this.state = {};\n this.state.isGood = stateOrIsGood;\n this.state.isOld = isOld;\n this.state.signatureType = signatureType;\n this.state.version = version;\n } else {\n this.state = stateOrIsGood;\n }\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n\n isGood() {\n return this.state.isGood;\n }\n\n setIsGood(isGood) {\n this.state.isGood = isGood;\n return this;\n }\n \n isOld() {\n return this.state.isOld;\n }\n\n setIsOld(isOld) {\n this.state.isOld = isOld;\n return this;\n }\n \n getSignatureType() {\n return this.state.signatureType;\n }\n\n setSignatureType(signatureType) {\n this.state.signatureType = signatureType;\n return this;\n }\n \n getVersion() {\n return this.state.version;\n }\n\n setVersion(version) {\n this.state.version = version;\n return this;\n }\n}\n\nmodule.exports = MoneroMessageSignatureResult;","/**\n * Enumerate message signature types.\n * \n * @hideconstructor\n */\nclass MoneroMessageSignatureType {}\n\n/**\n * Sign with spend key (value=0).\n */\nMoneroMessageSignatureType.SIGN_WITH_SPEND_KEY = 0;\n\n/**\n * Sign with the view key (value=1).\n */\nMoneroMessageSignatureType.SIGN_WITH_VIEW_KEY = 1;\n\nmodule.exports = MoneroMessageSignatureType;","/**\n * Models information about a multisig wallet.\n */\nclass MoneroMultisigInfo {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n \n isMultisig() {\n return this.state.isMultisig;\n }\n \n setIsMultisig(isMultisig) {\n this.state.isMultisig = isMultisig;\n return this;\n }\n \n isReady() {\n return this.state.isReady;\n }\n \n setIsReady(isReady) {\n this.state.isReady = isReady;\n }\n \n getThreshold() {\n return this.state.threshold;\n }\n \n setThreshold(threshold) {\n this.state.threshold = threshold;\n }\n \n getNumParticipants() {\n return this.state.numParticipants;\n }\n \n setNumParticipants(numParticipants) {\n this.state.numParticipants = numParticipants;\n }\n}\n\nmodule.exports = MoneroMultisigInfo;","/**\n * Models the result of initializing a multisig wallet which results in the\n * multisig wallet's address xor another multisig hex to share with\n * participants to create the wallet.\n */\nclass MoneroMultisigInitResult {\n\n constructor(state) {\n this.state = Object.assign({}, state);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n \n getAddress() {\n return this.state.address;\n }\n \n setAddress(address) {\n this.state.address = address;\n return this;\n }\n \n getMultisigHex() {\n return this.state.multisigHex;\n }\n \n setMultisigHex(multisigHex) {\n this.state.multisigHex = multisigHex;\n return this;\n }\n}\n\nmodule.exports = MoneroMultisigInitResult;","/**\n * Models the result of signing multisig tx hex.\n */\nclass MoneroMultisigSignResult {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n \n getSignedMultisigTxHex() {\n return this.state.signedMultisigTxHex;\n }\n\n setSignedMultisigTxHex(signedTxMultisigHex) {\n this.state.signedMultisigTxHex = signedTxMultisigHex;\n }\n\n getTxHashes() {\n return this.state.txHashes;\n }\n\n setTxHashes(txHashes) {\n this.state.txHashes = txHashes;\n }\n}\n\nmodule.exports = MoneroMultisigSignResult;","const assert = require(\"assert\");\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroDestination = require(\"./MoneroDestination\");\nconst MoneroTransfer = require(\"./MoneroTransfer\");\n\n/**\n * Models an outgoing transfer of funds from the wallet.\n * \n * @extends {MoneroTransfer}\n */\nclass MoneroOutgoingTransfer extends MoneroTransfer {\n\n /**\n * Construct the model.\n * \n * @param {MoneroOutgoingTranser|object} state is existing state to initialize from (optional)\n */\n constructor(state) {\n super(state);\n state = this.state;\n \n // deserialize destinations\n if (state.destinations) {\n for (let i = 0; i < state.destinations.length; i++) {\n if (!(state.destinations[i] instanceof MoneroDestination)) state.destinations[i] = new MoneroDestination(state.destinations[i]);\n }\n }\n }\n \n isIncoming() {\n return false;\n }\n \n getSubaddressIndices() {\n return this.state.subaddressIndices;\n }\n\n setSubaddressIndices(subaddressIndices) {\n this.state.subaddressIndices = subaddressIndices;\n return this;\n }\n \n getAddresses() {\n return this.state.addresses;\n }\n\n setAddresses(addresses) {\n this.state.addresses = addresses;\n return this;\n }\n\n getDestinations() {\n return this.state.destinations;\n }\n \n setDestinations(destinations) {\n this.state.destinations = destinations;\n return this;\n }\n \n copy() {\n return new MoneroOutgoingTransfer(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state, super.toJson()); // merge json onto inherited state\n if (this.getDestinations()) {\n json.destinations = [];\n for (let destination of this.getDestinations()) json.destinations.push(destination.toJson());\n }\n delete json.tx; // parent tx is not serialized\n return json;\n }\n \n /**\n * Updates this transaction by merging the latest information from the given\n * transaction.\n * \n * Merging can modify or build references to the transfer given so it\n * should not be re-used or it should be copied before calling this method.\n * \n * @param transfer is the transfer to merge into this one\n */\n merge(transfer) {\n super.merge(transfer);\n assert(transfer instanceof MoneroOutgoingTransfer);\n if (this === transfer) return this;\n this.setSubaddressIndices(GenUtils.reconcile(this.getSubaddressIndices(), transfer.getSubaddressIndices()));\n this.setAddresses(GenUtils.reconcile(this.getAddresses(), transfer.getAddresses()));\n this.setDestinations(GenUtils.reconcile(this.getDestinations(), transfer.getDestinations()));\n return this;\n }\n\n toString(indent = 0) {\n let str = super.toString(indent) + \"\\n\";\n str += GenUtils.kvLine(\"Subaddress indices\", this.getSubaddressIndices(), indent);\n str += GenUtils.kvLine(\"Addresses\", this.getAddresses(), indent);\n if (this.getDestinations()) {\n str += GenUtils.kvLine(\"Destinations\", \"\", indent);\n for (let i = 0; i < this.getDestinations().length; i++) {\n str += GenUtils.kvLine(i + 1, \"\", indent + 1);\n str += this.getDestinations()[i].toString(indent + 2) + \"\\n\";\n }\n }\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroOutgoingTransfer;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst MoneroError = require(\"../../common/MoneroError\");\nconst MoneroOutputWallet = require(\"./MoneroOutputWallet\");\n\n/**\n * Configuration to query wallet outputs.\n * \n * @extends {MoneroOutputWallet}\n */\nclass MoneroOutputQuery extends MoneroOutputWallet {\n \n /**\n *

Construct the output query.

\n * \n *

Example:

\n * \n * \n * // get available outputs in account 0 with a minimum amount
\n * let outputs = await wallet.getOutputs({
\n *    isSpent: false,
\n *    isLocked: false,
\n *    accountIndex: 0,
\n *    minAmount: new BigInteger(\"750000\")
\n * });\n *
\n * \n *

All configuration is optional. All outputs are returned except those that don't meet criteria defined in this query.

\n * \n * @param {object} config - output query configuration (optional)\n * @param {int} config.accountIndex - get outputs in this account index\n * @param {int} config.subaddressIndex - get outputs in this subaddress index\n * @param {int[]} config.subaddressIndices - get outputs in these subaddress indices\n * @param {BigInteger} config.amount - get outputs with this amount\n * @param {BigInteger} config.minAmount - get outputs with amount greater than or equal to this amount\n * @param {BigInteger} config.maxAmount - get outputs with amount less than or equal to this amount\n * @param {boolean} config.isSpent - get spent xor unspent outputs\n * @param {boolean} config.isFrozen - get frozen xor thawed outputs\n * @param {object|MoneroKeyImage} config.keyImage - get outputs with a key image matching fields defined in this key image\n * @param {string} config.keyImage.hex - get outputs with this key image hex\n * @param {string} config.keyImage.signature - get outputs with this key image signature\n * @param {object|MoneroTxQuery} config.txQuery - get outputs whose tx match this tx query\n */\n constructor(config) {\n super(config);\n \n // deserialize if necessary\n const MoneroTxQuery = require(\"./MoneroTxQuery\");\n if (this.state.minAmount !== undefined && !(this.state.minAmount instanceof BigInteger)) this.state.minAmount = BigInteger.parse(this.state.minAmount);\n if (this.state.maxAmount !== undefined && !(this.state.maxAmount instanceof BigInteger)) this.state.maxAmount = BigInteger.parse(this.state.maxAmount);\n if (this.state.txQuery && !(this.state.txQuery instanceof MoneroTxQuery)) this.state.txQuery = new MoneroTxQuery(this.state.txQuery);\n if (this.state.txQuery) this.state.txQuery.setOutputQuery(this);\n if (this.state.isLocked !== undefined) throw new MoneroError(\"isLocked must be part of tx query, not output query\");\n }\n \n copy() {\n return new MoneroOutputQuery(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state, super.toJson());\n if (this.getMinAmount()) json.minAmount = this.getMinAmount().toString();\n if (this.getMaxAmount()) json.maxAmount = this.getMaxAmount().toString();\n delete json.txQuery;\n return json;\n }\n \n getMinAmount() {\n return this.state.minAmount;\n }\n\n setMinAmount(minAmount) {\n this.state.minAmount = minAmount;\n return this;\n }\n\n getMaxAmount() {\n return this.state.maxAmount;\n }\n\n setMaxAmount(maxAmount) {\n this.state.maxAmount = maxAmount;\n return this;\n }\n \n getTxQuery() {\n return this.state.txQuery;\n }\n \n setTxQuery(txQuery) {\n this.state.txQuery = txQuery;\n if (txQuery) txQuery.state.outputQuery = this;\n return this;\n }\n \n getSubaddressIndices() {\n return this.state.subaddressIndices;\n }\n \n setSubaddressIndices(subaddressIndices) {\n this.state.subaddressIndices = subaddressIndices;\n return this;\n }\n \n meetsCriteria(output, queryParent) {\n if (!(output instanceof MoneroOutputWallet)) throw new Error(\"Output not given to MoneroOutputQuery.meetsCriteria(output)\");\n if (queryParent === undefined) queryParent = true;\n \n // filter on output\n if (this.getAccountIndex() !== undefined && this.getAccountIndex() !== output.getAccountIndex()) return false;\n if (this.getSubaddressIndex() !== undefined && this.getSubaddressIndex() !== output.getSubaddressIndex()) return false;\n if (this.getAmount() !== undefined && this.getAmount().compare(output.getAmount()) !== 0) return false;\n if (this.isSpent() !== undefined && this.isSpent() !== output.isSpent()) return false;\n if (this.isFrozen() !== undefined && this.isFrozen() !== output.isFrozen()) return false;\n \n // filter on output's key image\n if (this.getKeyImage() !== undefined) {\n if (output.getKeyImage() === undefined) return false;\n if (this.getKeyImage().getHex() !== undefined && this.getKeyImage().getHex() !== output.getKeyImage().getHex()) return false;\n if (this.getKeyImage().getSignature() !== undefined && this.getKeyImage().getSignature() !== output.getKeyImage().getSignature()) return false;\n }\n \n // filter on extensions\n if (this.getSubaddressIndices() !== undefined && !this.getSubaddressIndices().includes(output.getSubaddressIndex())) return false;\n \n // filter with tx query\n if (this.getTxQuery() && !this.getTxQuery().meetsCriteria(output.getTx(), false)) return false;\n \n // filter on remaining fields\n if (this.getMinAmount() !== undefined && (output.getAmount() === undefined || output.getAmount().compare(this.getMinAmount()) < 0)) return false;\n if (this.getMaxAmount() !== undefined && (output.getAmount() === undefined || output.getAmount().compare(this.getMaxAmount()) > 0)) return false;\n \n // output meets query\n return true;\n }\n}\n\nMoneroOutputQuery._EMPTY_OUTPUT = new MoneroOutputWallet();\n\nmodule.exports = MoneroOutputQuery;","const assert = require(\"assert\");\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroOutput = require(\"../../daemon/model/MoneroOutput\");\n\n/**\n * Models a Monero output with wallet extensions.\n * \n * @class\n * @extends {MoneroOutput}\n */\nclass MoneroOutputWallet extends MoneroOutput {\n \n /**\n * Construct the model.\n * \n * @param {MoneroOutputWallet|object} state is existing state to initialize from (optional)\n */\n constructor(state) {\n super(state);\n }\n \n getAccountIndex() {\n return this.state.accountIndex;\n }\n\n setAccountIndex(accountIndex) {\n this.state.accountIndex = accountIndex;\n return this;\n }\n\n getSubaddressIndex() {\n return this.state.subaddressIndex;\n }\n\n setSubaddressIndex(subaddressIndex) {\n this.state.subaddressIndex = subaddressIndex;\n return this;\n }\n \n isSpent() {\n return this.state.isSpent;\n }\n\n setIsSpent(isSpent) {\n this.state.isSpent = isSpent;\n return this;\n }\n \n /**\n * Indicates if this output has been deemed 'malicious' and will therefore\n * not be spent by the wallet.\n * \n * @return Boolean is whether or not this output is frozen\n */\n isFrozen() {\n return this.state.isFrozen;\n }\n\n setIsFrozen(isFrozen) {\n this.state.isFrozen = isFrozen;\n return this;\n }\n \n isLocked() {\n if (this.getTx() === undefined) return undefined;\n return this.getTx().isLocked();\n }\n \n copy() {\n return new MoneroOutputWallet(this.toJson());\n }\n \n toJson() {\n let json = Object.assign({}, this.state, super.toJson());\n delete json.tx;\n return json;\n }\n \n /**\n * Updates this output by merging the latest information from the given\n * output.\n * \n * Merging can modify or build references to the output given so it\n * should not be re-used or it should be copied before calling this method.\n * \n * @param output is the output to merge into this one\n */\n merge(output) {\n assert(output instanceof MoneroOutputWallet);\n if (this === output) return;\n super.merge(output);\n this.setAccountIndex(GenUtils.reconcile(this.getAccountIndex(), output.getAccountIndex()));\n this.setSubaddressIndex(GenUtils.reconcile(this.getSubaddressIndex(), output.getSubaddressIndex()));\n this.setIsSpent(GenUtils.reconcile(this.isSpent(), output.isSpent(), {resolveTrue: true})); // output can become spent\n this.setIsFrozen(GenUtils.reconcile(this.isFrozen(), output.isFrozen()));\n return this;\n }\n \n toString(indent) {\n let str = super.toString(indent) + \"\\n\"\n str += GenUtils.kvLine(\"Account index\", this.getAccountIndex(), indent);\n str += GenUtils.kvLine(\"Subaddress index\", this.getSubaddressIndex(), indent);\n str += GenUtils.kvLine(\"Is spent\", this.isSpent(), indent);\n str += GenUtils.kvLine(\"Is frozen\", this.isFrozen(), indent);\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroOutputWallet;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\nconst assert = require(\"assert\");\n\n/**\n * Monero subaddress model.\n */\nclass MoneroSubaddress {\n \n constructor(stateOrAddress, accountIndex, index) {\n if (stateOrAddress === undefined || typeof stateOrAddress === \"string\") {\n this.state = {};\n this.setAddress(stateOrAddress);\n this.setAccountIndex(accountIndex);\n this.setIndex(index);\n } else {\n this.state = stateOrAddress;\n assert(accountIndex === undefined && index === undefined, \"Can construct MoneroSubaddress with object or params but not both\");\n if (this.state.balance !== undefined && !(this.state.balance instanceof BigInteger)) this.state.balance = BigInteger.parse(this.state.balance);\n if (this.state.unlockedBalance !== undefined && !(this.state.unlockedBalance instanceof BigInteger)) this.state.unlockedBalance = BigInteger.parse(this.state.unlockedBalance);\n }\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.balance) json.balance = json.balance.toString();\n if (json.unlockedBalance) json.unlockedBalance = json.unlockedBalance.toString();\n return json;\n }\n \n getAccountIndex() {\n return this.state.accountIndex;\n }\n\n setAccountIndex(accountIndex) {\n this.state.accountIndex = accountIndex;\n return this;\n }\n\n getIndex() {\n return this.state.index;\n }\n\n setIndex(index) {\n this.state.index = index;\n return this;\n }\n \n getAddress() {\n return this.state.address;\n }\n\n setAddress(address) {\n this.state.address = address;\n return this;\n }\n\n getLabel() {\n return this.state.label;\n }\n\n setLabel(label) {\n this.state.label = label;\n return this;\n }\n\n getBalance() {\n return this.state.balance;\n }\n\n setBalance(balance) {\n this.state.balance = balance;\n return this;\n }\n\n getUnlockedBalance() {\n return this.state.unlockedBalance;\n }\n\n setUnlockedBalance(unlockedBalance) {\n this.state.unlockedBalance = unlockedBalance;\n return this;\n }\n\n getNumUnspentOutputs() {\n return this.state.numUnspentOutputs;\n }\n\n setNumUnspentOutputs(numUnspentOutputs) {\n this.state.numUnspentOutputs = numUnspentOutputs;\n return this;\n }\n\n isUsed() {\n return this.state.isUsed;\n }\n\n setIsUsed(isUsed) {\n this.state.isUsed = isUsed;\n return this;\n }\n\n getNumBlocksToUnlock() {\n return this.state.numBlocksToUnlock;\n }\n\n setNumBlocksToUnlock(numBlocksToUnlock) {\n this.state.numBlocksToUnlock = numBlocksToUnlock;\n return this;\n }\n \n toString(indent) {\n let str = \"\";\n str += GenUtils.kvLine(\"Account index\", this.getAccountIndex(), indent);\n str += GenUtils.kvLine(\"Subaddress index\", this.getIndex(), indent);\n str += GenUtils.kvLine(\"Address\", this.getAddress(), indent);\n str += GenUtils.kvLine(\"Label\", this.getLabel(), indent);\n str += GenUtils.kvLine(\"Balance\", this.getBalance(), indent);\n str += GenUtils.kvLine(\"Unlocked balance\", this.getUnlockedBalance(), indent);\n str += GenUtils.kvLine(\"Num unspent outputs\", this.getNumUnspentOutputs(), indent);\n str += GenUtils.kvLine(\"Is used\", this.isUsed(), indent);\n str += GenUtils.kvLine(\"Num blocks to unlock\", this.getNumBlocksToUnlock(), indent);\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroSubaddress;","/**\n * Result from syncing a Monero wallet.\n */\nclass MoneroSyncResult {\n \n constructor(numBlocksFetched, receivedMoney) {\n this.setNumBlocksFetched(numBlocksFetched);\n this.setReceivedMoney(receivedMoney);\n }\n \n getNumBlocksFetched() {\n return this.numBlocksFetched;\n }\n \n setNumBlocksFetched(numBlocksFetched) {\n this.numBlocksFetched = numBlocksFetched;\n return this;\n }\n \n getReceivedMoney() {\n return this.receivedMoney;\n }\n \n setReceivedMoney(receivedMoney) {\n this.receivedMoney = receivedMoney;\n return this;\n }\n}\n\nmodule.exports = MoneroSyncResult;","const assert = require(\"assert\");\nconst BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\n\n/**\n * Models a base transfer of funds to or from the wallet.\n * \n * @class\n */\nclass MoneroTransfer {\n \n /**\n * Construct the model.\n * \n * @param {MoneroTransfer|object} state is existing state to initialize from (optional)\n */\n constructor(state) {\n \n // initialize internal state\n if (!state) state = {};\n else if (state instanceof MoneroTransfer) state = state.toJson();\n else if (typeof state === \"object\") state = Object.assign({}, state);\n else throw new MoneroError(\"state must be a MoneroTransfer or JavaScript object\");\n this.state = state;\n \n // deserialize fields if necessary\n if (state.amount !== undefined && !(state.amount instanceof BigInteger)) state.amount = BigInteger.parse(state.amount);\n \n // validate state\n this._validate();\n }\n \n copy() {\n return new MoneroTransfer(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getAmount()) json.amount = this.getAmount().toString()\n delete json.tx; // parent tx is not serialized\n return json;\n }\n \n getTx() {\n return this.state.tx;\n }\n \n setTx(tx) {\n this.state.tx = tx;\n return this;\n }\n \n isOutgoing() {\n let isIncoming = this.isIncoming();\n assert(typeof isIncoming === \"boolean\");\n return !isIncoming;\n }\n \n isIncoming() {\n throw new Error(\"Subclass must implement\");\n }\n\n getAccountIndex() {\n return this.state.accountIndex;\n }\n\n setAccountIndex(accountIndex) {\n this.state.accountIndex = accountIndex;\n this._validate();\n return this;\n }\n\n getAmount() {\n return this.state.amount;\n }\n\n setAmount(amount) {\n this.state.amount = amount;\n return this;\n }\n \n /**\n * Updates this transaction by merging the latest information from the given\n * transaction.\n * \n * Merging can modify or build references to the transfer given so it\n * should not be re-used or it should be copied before calling this method.\n * \n * @param transfer is the transfer to merge into this one\n * @return {MoneroTransfer} the merged transfer\n */\n merge(transfer) {\n assert(transfer instanceof MoneroTransfer);\n if (this === transfer) return this;\n \n // merge transactions if they're different which comes back to merging transfers\n if (this.getTx() !== transfer.getTx()) {\n this.getTx().merge(transfer.getTx());\n return this;\n }\n \n // otherwise merge transfer fields\n this.setAccountIndex(GenUtils.reconcile(this.getAccountIndex(), transfer.getAccountIndex()));\n \n // TODO monero-project: failed tx in pool (after testUpdateLockedDifferentAccounts()) causes non-originating saved wallets to return duplicate incoming transfers but one has amount of 0\n if (this.getAmount() !== undefined && transfer.getAmount() !== undefined && this.getAmount().compare(transfer.getAmount()) !== 0 && (this.getAmount().compare(BigInteger.parse(\"0\")) === 0 || transfer.getAmount().compare(BigInteger.parse(\"0\")) === 0)) {\n console.warn(\"monero-project returning transfers with 0 amount/numSuggestedConfirmations\");\n } else {\n this.setAmount(GenUtils.reconcile(this.getAmount(), transfer.getAmount()));\n }\n \n return this;\n }\n \n toString(indent = 0) {\n let str = \"\";\n str += GenUtils.kvLine(\"Is incoming\", this.isIncoming(), indent);\n str += GenUtils.kvLine(\"Account index\", this.getAccountIndex(), indent);\n str += GenUtils.kvLine(\"Amount\", this.getAmount() ? this.getAmount().toString() : undefined, indent);\n return str === \"\" ? str : str.slice(0, str.length - 1); // strip last newline\n }\n \n _validate() {\n if (this.getAccountIndex() !== undefined && this.getAccountIndex() < 0) throw new MoneroError(\"Account index must be >= 0\");\n }\n}\n\nmodule.exports = MoneroTransfer;","const MoneroIncomingTransfer = require(\"./MoneroIncomingTransfer\");\nconst MoneroOutgoingTransfer = require(\"./MoneroOutgoingTransfer\");\nconst MoneroTransfer = require(\"./MoneroTransfer\");\nconst MoneroError = require(\"../../common/MoneroError\")\n\n/**\n * Configuration to query wallet transfers.\n * \n * @extends {MoneroTransfer}\n */\nclass MoneroTransferQuery extends MoneroTransfer {\n \n /**\n *

Construct the transfer query.

\n * \n *

Example:

\n * \n * \n * // get incoming transfers to account 0, subaddress 1
\n * let transfers = await wallet.getTransfers({
\n *    accountIndex: 0,
\n *    subaddressIndex: 0
\n * });\n *
\n * \n *

All configuration is optional. All transfers are returned except those that don't meet criteria defined in this query.

\n * \n * @param {object} config - transfer query configuration (optional)\n * @param {BigInteger} config.amount - get transfers with this amount\n * @param {int} config.accountIndex - get transfers to/from this account index\n * @param {int} config.subaddressIndex - get transfers to/from this subaddress index\n * @param {int[]} config.subaddressIndices - get transfers to/from these subaddress indices\n * @param {string} config.address - get transfers to/from this wallet address\n * @param {string[]} config.addresses - get transfers to/from these wallet addresses\n * @param {boolean} config.isIncoming - get transfers which are incoming if true\n * @param {boolean} config.isOutgoing - get transfers which are outgoing if true\n * @param {boolean} config.hasDestinations - get transfers with known destinations if true (destinations are only stored locally with the wallet)\n * @param {object|MoneroTxQuery} config.txQuery - get transfers whose tx match this tx query\n */\n constructor(config) {\n super(config);\n \n // deserialize if necessary\n const MoneroTxQuery = require(\"./MoneroTxQuery\");\n if (this.state.txQuery && !(this.state.txQuery instanceof MoneroTxQuery)) this.state.txQuery = new MoneroTxQuery(this.state.txQuery);\n if (this.state.txQuery) this.state.txQuery.setTransferQuery(this);\n \n // alias isOutgoing to isIncoming\n if (this.state.isOutgoing !== undefined) this.state.isIncoming = !this.state.isOutgoing;\n \n // validate state\n this._validate();\n }\n \n copy() {\n return new MoneroTransferQuery(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state, super.toJson());\n delete json.txQuery;\n return json;\n }\n \n getTxQuery() {\n return this.state.txQuery;\n }\n \n setTxQuery(txQuery) {\n this.state.txQuery = txQuery;\n if (txQuery) txQuery.state.transferQuery = this;\n return this;\n }\n \n isIncoming() {\n return this.state.isIncoming;\n }\n\n setIsIncoming(isIncoming) {\n this.state.isIncoming = isIncoming;\n return this;\n }\n \n isOutgoing() {\n return this.state.isIncoming === undefined ? undefined : !this.state.isIncoming;\n }\n \n setIsOutgoing(isOutgoing) {\n this.state.isIncoming = isOutgoing === undefined ? undefined : !isOutgoing;\n return this;\n }\n \n getAddress() {\n return this.state.address;\n }\n\n setAddress(address) {\n this.state.address = address;\n return this;\n }\n \n getAddresses() {\n return this.state.addresses;\n }\n\n setAddresses(addresses) {\n this.state.addresses = addresses;\n return this;\n }\n \n getSubaddressIndex() {\n return this.state.subaddressIndex;\n }\n \n setSubaddressIndex(subaddressIndex) {\n this.state.subaddressIndex = subaddressIndex;\n this._validate();\n return this;\n }\n \n getSubaddressIndices() {\n return this.state.subaddressIndices;\n }\n \n setSubaddressIndices(subaddressIndices) {\n this.state.subaddressIndices = subaddressIndices;\n this._validate();\n return this;\n }\n \n getDestinations() {\n return this.state.destinations;\n }\n \n setDestinations(destinations) {\n this.state.destinations = destinations;\n return this;\n }\n \n hasDestinations() {\n return this.state.hasDestinations;\n }\n \n setHasDestinations(hasDestinations) {\n this.state.hasDestinations = hasDestinations;\n return this;\n }\n \n /**\n * Convenience method to query outputs by the locked state of their tx.\n * \n * @param isLocked specifies if the output's tx must be locked or unlocked (optional)\n * @return {MoneroOutputQuery} this query for chaining\n */\n setIsLocked(isLocked) {\n if (this.state.txQuery === undefined) this.state.txQuery = new MoneroTxQuery();\n this.state.txQuery.setIsLocked(isLocked);\n return this;\n }\n \n meetsCriteria(transfer, queryParent) {\n if (!(transfer instanceof MoneroTransfer)) throw new Error(\"Transfer not given to MoneroTransferQuery.meetsCriteria(transfer)\");\n if (queryParent === undefined) queryParent = true;\n \n // filter on common fields\n if (this.isIncoming() !== undefined && this.isIncoming() !== transfer.isIncoming()) return false;\n if (this.isOutgoing() !== undefined && this.isOutgoing() !== transfer.isOutgoing()) return false;\n if (this.getAmount() !== undefined && this.getAmount().compare(transfer.getAmount()) !== 0) return false;\n if (this.getAccountIndex() !== undefined && this.getAccountIndex() !== transfer.getAccountIndex()) return false;\n \n // filter on incoming fields\n if (transfer instanceof MoneroIncomingTransfer) {\n if (this.hasDestinations()) return false;\n if (this.getAddress() !== undefined && this.getAddress() !== transfer.getAddress()) return false;\n if (this.getAddresses() !== undefined && !this.getAddresses().includes(transfer.getAddress())) return false;\n if (this.getSubaddressIndex() !== undefined && this.getSubaddressIndex() !== transfer.getSubaddressIndex()) return false;\n if (this.getSubaddressIndices() !== undefined && !this.getSubaddressIndices().includes(transfer.getSubaddressIndex())) return false;\n }\n\n // filter on outgoing fields\n else if (transfer instanceof MoneroOutgoingTransfer) {\n \n // filter on addresses which must have overlap\n if (this.getAddress() !== undefined && (transfer.getAddresses() === undefined || !transfer.getAddresses().includes(this.getAddress()))) return false; // TODO: will filter all transfers that don't contain addresses (outgoing txs might not have this field initialized)\n if (this.getAddresses() !== undefined) {\n if (!transfer.getAddresses()) return false;\n if (!this.getAddresses().some(address => transfer.getAddresses().includes(address))) return false;\n }\n \n // filter on subaddress indices\n if (this.getSubaddressIndex() !== undefined && (transfer.getSubaddressIndices() === undefined || !transfer.getSubaddressIndices().includes(this.getSubaddressIndex()))) return false;\n if (this.getSubaddressIndices() !== undefined) {\n if (!transfer.getSubaddressIndices()) return false;\n if (!this.getSubaddressIndices().some(subaddressIdx => transfer.getSubaddressIndices().includes(subaddressIdx))) return false;\n }\n \n // filter on having destinations\n if (this.hasDestinations() !== undefined) {\n if (this.hasDestinations() && transfer.getDestinations() === undefined) return false;\n if (!this.hasDestinations() && transfer.getDestinations() !== undefined) return false;\n }\n \n // filter on destinations TODO: start with test for this\n// if (this.getDestionations() !== undefined && this.getDestionations() !== transfer.getDestionations()) return false;\n }\n \n // otherwise invalid type\n else throw new Error(\"Transfer must be MoneroIncomingTransfer or MoneroOutgoingTransfer\");\n \n // filter with tx filter\n if (queryParent && this.getTxQuery() !== undefined && !this.getTxQuery().meetsCriteria(transfer.getTx())) return false; \n return true;\n }\n \n _validate() {\n if (this.getSubaddressIndex() !== undefined && this.getSubaddressIndex() < 0) throw new MoneroError(\"Subaddress index must be >= 0\");\n if (this.getSubaddressIndices() !== undefined) for (let subaddressIdx of this.getSubaddressIndices()) if (subaddressIdx < 0) throw new MoneroError(\"Subaddress indices must be >= 0\");\n }\n}\n\nmodule.exports = MoneroTransferQuery;","const assert = require(\"assert\");\nconst BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroDestination = require(\"./MoneroDestination\");\nconst MoneroError = require(\"../../common/MoneroError\");\n\n/**\n * Configures a transaction to send, sweep, or create a payment URI.\n */\nclass MoneroTxConfig {\n \n /**\n *

Generic request to transfer funds from a wallet.

\n * \n *

Examples:

\n * \n * \n * let config1 = new MoneroTxConfig({
\n *    accountIndex: 0,
\n *    address: \"59aZULsUF3YN...\",
\n *    amount: new BigInteger(\"500000\"),
\n *    priority: MoneroTxPriority.NORMAL,
\n *    relay: true
\n * });

\n *
\n * \n * @param {MoneroTxConfig|object} config - configures the transaction to create (optional)\n * @param {string} config.address - single destination address\n * @param {BigInteger} config.amount - single destination amount\n * @param {int} config.accountIndex - source account index to transfer funds from\n * @param {int} config.subaddressIndex - source subaddress index to transfer funds from\n * @param {int[]} config.subaddressIndices - source subaddress indices to transfer funds from\n * @param {boolean} config.relay - relay the transaction to peers to commit to the blockchain\n * @param {MoneroTxPriority} config.priority - transaction priority (default MoneroTxPriority.NORMAL)\n * @param {MoneroDestination[]} config.destinations - addresses and amounts in a multi-destination tx\n * @param {int[]} config.subtractFeeFrom - list of destination indices to split the transaction fee\n * @param {string} config.paymentId - transaction payment ID\n * @param {BigInteger} config.unlockTime - minimum height or timestamp for the transaction to unlock (default 0)\n * @param {string} config.note - transaction note saved locally with the wallet\n * @param {string} config.recipientName - recipient name saved locally with the wallet\n * @param {boolean} config.canSplit - allow funds to be transferred using multiple transactions\n * @param {BigInteger} config.belowAmount - for sweep requests, include outputs below this amount when sweeping wallet, account, subaddress, or all unlocked funds \n * @param {boolean} config.sweepEachSubaddress - for sweep requests, sweep each subaddress individually instead of together if true\n * @param {string} config.keyImage - key image to sweep (ignored except in sweepOutput() requests)\n */\n constructor(config, relaxValidation) { // relax validation for internal use to process json from rpc or cpp\n if (arguments.length > 2) throw new MoneroError(\"MoneroTxConfig can be constructed with only two parameters but was given \" + arguments.length)\n \n // initialize internal state\n if (!config) this.state = {};\n else if (config instanceof MoneroTxConfig) this.state = config.toJson();\n else if (typeof config === \"object\") {\n this.state = Object.assign({}, config);\n if (relaxValidation) {\n if (typeof this.state.amount === \"number\") this.state.amount = BigInteger.parse(this.state.amount);\n if (typeof this.state.unlockTime === \"number\") this.state.unlockTime = BigInteger.parse(this.state.unlockTime);\n if (typeof this.state.belowAmount === \"number\") this.state.belowAmount = BigInteger.parse(this.state.belowAmount);\n }\n\n // check for unsupported fields\n for (let key of Object.keys(config)) {\n if (!GenUtils.arrayContains(MoneroTxConfig.SUPPORTED_FIELDS, key)) {\n throw new MoneroError(\"Unsupported field in MoneroTxConfig: '\" + key + \"'\");\n }\n }\n }\n else throw new MoneroError(\"Invalid argument given to MoneroTxConfig: \" + typeof config);\n\n // deserialize BigIntegers\n if (this.state.fee !== undefined && !(this.state.fee instanceof BigInteger)) this.state.fee = BigInteger.parse(this.state.fee);\n if (this.state.unlockTime !== undefined && !(this.state.unlockTime instanceof BigInteger)) this.state.unlockTime = BigInteger.parse(this.state.unlockTime);\n if (this.state.belowAmount !== undefined && !(this.state.belowAmount instanceof BigInteger)) this.state.belowAmount = BigInteger.parse(this.state.belowAmount);\n \n // deserialize destinations\n if (this.state.destinations) {\n assert(this.state.address === undefined && this.state.amount === undefined, \"Tx configuration may specify destinations or an address/amount but not both\");\n this.setDestinations(this.state.destinations.map(destination => destination instanceof MoneroDestination ? destination : new MoneroDestination(destination)));\n }\n \n // alias 'address' and 'amount' to single destination to support e.g. createTx({address: \"...\"})\n if (this.state.address || this.state.amount) {\n assert(!this.state.destinations, \"Tx configuration may specify destinations or an address/amount but not both\");\n this.setAddress(this.state.address);\n this.setAmount(this.state.amount);\n delete this.state.address;\n delete this.state.amount;\n }\n \n // alias 'subaddressIndex' to subaddress indices\n if (this.state.subaddressIndex !== undefined) {\n this.setSubaddressIndices([this.state.subaddressIndex]);\n delete this.state.subaddressIndex;\n }\n }\n \n copy() {\n return new MoneroTxConfig(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state); // copy state\n if (this.getDestinations()) {\n json.destinations = [];\n for (let destination of this.getDestinations()) json.destinations.push(destination.toJson());\n }\n if (this.getFee()) json.fee = this.getFee().toString();\n if (this.getUnlockTime()) json.unlockTime = this.getUnlockTime().toString();\n if (this.getBelowAmount()) json.belowAmount = this.getBelowAmount().toString();\n return json;\n }\n \n /**\n * Set the address of a single-destination configuration.\n * \n * @param {string} address - the address to set for the single destination\n * @return {MoneroTxConfig} this configuration for chaining\n */\n setAddress(address) {\n if (this.state.destinations !== undefined && this.state.destinations.length > 1) throw new MoneroError(\"Cannot set address because MoneroTxConfig already has multiple destinations\");\n if (this.state.destinations === undefined || this.state.destinations.length === 0) this.addDestination(new MoneroDestination(address));\n else this.state.destinations[0].setAddress(address);\n return this;\n }\n \n /**\n * Get the address of a single-destination configuration.\n * \n * @return {string} the address of the single destination\n */\n getAddress() {\n if (this.state.destinations === undefined || this.state.destinations.length !== 1) throw new MoneroError(\"Cannot get address because MoneroTxConfig does not have exactly one destination\");\n return this.state.destinations[0].getAddress();\n }\n \n /**\n * Set the amount of a single-destination configuration.\n * \n * @param {BigInteger|string} amount - the amount to set for the single destination\n * @return {MoneroTxConfig} this configuration for chaining\n */\n setAmount(amount) {\n if (amount !== undefined && !(this.state.amount instanceof BigInteger)) {\n if (typeof amount === \"number\") throw new MoneroError(\"Destination amount must be BigInteger or string\");\n try { amount = BigInteger.parse(amount); }\n catch (err) { throw new MoneroError(\"Invalid destination amount: \" + amount); }\n }\n if (this.state.destinations !== undefined && this.state.destinations.length > 1) throw new MoneroError(\"Cannot set amount because MoneroTxConfig already has multiple destinations\");\n if (this.state.destinations === undefined || this.state.destinations.length === 0) this.addDestination(new MoneroDestination(undefined, amount));\n else this.state.destinations[0].setAmount(amount);\n return this;\n }\n \n /**\n * Get the amount of a single-destination configuration.\n * \n * @return {BigInteger} the amount of the single destination\n */\n getAmount() {\n if (this.state.destinations === undefined || this.state.destinations.length !== 1) throw new MoneroError(\"Cannot get amount because MoneroTxConfig does not have exactly one destination\");\n return this.state.destinations[0].getAmount();\n }\n \n addDestination(destinationOrAddress, amount) {\n if (typeof destinationOrAddress === \"string\") return this.addDestination(new MoneroDestination(destinationOrAddress, amount));\n assert(destinationOrAddress instanceof MoneroDestination);\n if (this.state.destinations === undefined) this.state.destinations = [];\n this.state.destinations.push(destinationOrAddress);\n return this;\n }\n \n getDestinations() {\n return this.state.destinations;\n }\n \n setDestinations(destinations) {\n if (arguments.length > 1) destinations = Array.from(arguments);\n this.state.destinations = destinations;\n return this;\n }\n \n setDestination(destination) {\n return this.setDestinations(destination ? [destination] : destination);\n }\n\n getSubtractFeeFrom() {\n return this.state.subtractFeeFrom;\n }\n\n setSubtractFeeFrom(destinationIndices) {\n if (arguments.length > 1) destinationIndices = Array.from(arguments);\n this.state.subtractFeeFrom = destinationIndices;\n return this;\n }\n \n getPaymentId() {\n return this.state.paymentId;\n }\n \n setPaymentId(paymentId) {\n this.state.paymentId = paymentId;\n return this;\n }\n \n getPriority() {\n return this.state.priority;\n }\n \n setPriority(priority) {\n this.state.priority = priority;\n return this;\n }\n \n getFee() {\n return this.state.fee;\n }\n \n setFee(fee) {\n this.state.fee = fee;\n return this;\n }\n \n getAccountIndex() {\n return this.state.accountIndex;\n }\n \n setAccountIndex(accountIndex) {\n this.state.accountIndex = accountIndex;\n return this;\n }\n \n setSubaddressIndex(subaddressIndex) {\n this.setSubaddressIndices([subaddressIndex]);\n return this;\n }\n \n getSubaddressIndices() {\n return this.state.subaddressIndices;\n }\n \n setSubaddressIndices(subaddressIndices) {\n if (arguments.length > 1) subaddressIndices = Array.from(arguments);\n this.state.subaddressIndices = subaddressIndices;\n return this;\n }\n \n getUnlockTime() {\n return this.state.unlockTime;\n }\n \n setUnlockTime(unlockTime) {\n if (unlockTime !== undefined) {\n if (typeof unlockTime === \"number\") unlockTime = \"\" + unlockTime;\n if (!(unlockTime instanceof BigInteger)) {\n try { unlockTime = BigInteger.parse(unlockTime); }\n catch (err) { throw new MoneroError(\"Invalid unlock time: \" + unlockTime); }\n }\n }\n this.state.unlockTime = unlockTime;\n return this;\n }\n \n getRelay() {\n return this.state.relay;\n }\n \n setRelay(relay) {\n this.state.relay = relay;\n return this;\n }\n \n getCanSplit() {\n return this.state.canSplit;\n }\n \n setCanSplit(canSplit) {\n this.state.canSplit = canSplit;\n return this;\n }\n \n getNote() {\n return this.state.note;\n }\n \n setNote(note) {\n this.state.note = note;\n return this;\n }\n \n getRecipientName() {\n return this.state.recipientName;\n }\n \n setRecipientName(recipientName) {\n this.state.recipientName = recipientName;\n return this;\n }\n \n // --------------------------- SPECIFIC TO SWEEP ----------------------------\n \n getBelowAmount() {\n return this.state.belowAmount;\n }\n \n setBelowAmount(belowAmount) {\n this.state.belowAmount = belowAmount;\n return this;\n }\n \n getSweepEachSubaddress() {\n return this.state.sweepEachSubaddress;\n }\n \n setSweepEachSubaddress(sweepEachSubaddress) {\n this.state.sweepEachSubaddress = sweepEachSubaddress;\n return this;\n }\n \n /**\n * Get the key image hex of the output to sweep.\n * \n * return {string} is the key image hex of the output to sweep\n */\n getKeyImage() {\n return this.state.keyImage;\n }\n \n /**\n * Set the key image hex of the output to sweep.\n * \n * @param {string} keyImage is the key image hex of the output to sweep\n */\n setKeyImage(keyImage) {\n this.state.keyImage = keyImage;\n return this;\n }\n}\n\nMoneroTxConfig.SUPPORTED_FIELDS = [\"address\", \"amount\", \"accountIndex\", \"subaddressIndex\", \"subaddressIndices\", \"relay\", \"priority\", \"destinations\", \"subtractFeeFrom\", \"paymentId\", \"unlockTime\", \"note\", \"recipientName\", \"canSplit\", \"belowAmount\", \"sweepEachSubaddress\", \"keyImage\"];\n\nmodule.exports = MoneroTxConfig","/**\n * Enumerates send priorities.\n * \n * @hideconstructor\n */\nclass MoneroTxPriority {}\n\n/**\n * Default priority (i.e. normal) (value=0).\n */\nMoneroTxPriority.DEFAULT = 0;\n\n/**\n * Unimportant priority (value=1).\n */\nMoneroTxPriority.UNIMPORTANT = 1;\n\n/**\n * Normal priority (value=2).\n */\nMoneroTxPriority.NORMAL = 2;\n\n/**\n * Elevated priority (value=3).\n */\nMoneroTxPriority.ELEVATED = 3;\n\nmodule.exports = MoneroTxPriority;","const assert = require(\"assert\");\nconst MoneroOutputQuery = require(\"./MoneroOutputQuery\");\nconst MoneroTransferQuery = require(\"./MoneroTransferQuery\");\nconst MoneroTxWallet = require(\"./MoneroTxWallet\");\n\n/**\n *

Configuration to query transactions.

\n * \n * @class\n * @extends {MoneroTxWallet}\n */\nclass MoneroTxQuery extends MoneroTxWallet {\n \n /**\n *

Construct the transaction query.

\n * \n *

Example:

\n * \n * \n * // get transactions with unlocked incoming transfers to account 0
\n * let txs = await wallet.getTxs({
\n *    isLocked: false,
\n *    transferQuery: {
\n *      isIncoming: true,
\n *      accountIndex: 0
\n *    }
\n * });\n *
\n * \n *

All configuration is optional. All transactions are returned except those that don't meet criteria defined in this query.

\n * \n * @param {object} config - tx query configuration\n * @param {string} config.hash - get a tx with this hash\n * @param {string[]} config.txHashes - get txs with these hashes\n * @param {int} config.height - get txs with this height\n * @param {int} config.minHeight - get txs with height greater than or equal to this height\n * @param {int} config.maxHeight - get txs with height less than or equal to this height\n * @param {boolean} config.isConfirmed - get confirmed or unconfirmed txs\n * @param {boolean} config.inTxPool - get txs in or out of the tx pool\n * @param {boolean} config.relay - get txs with the same relay status\n * @param {boolean} config.isRelayed - get relayed or non-relayed txs\n * @param {boolean} config.isFailed - get failed or non-failed txs\n * @param {boolean} config.isMinerTx - get miner or non-miner txs\n * @param {boolean} config.isLocked - get locked or unlocked txs\n * @param {boolean} config.isIncoming - get txs with or without incoming transfers\n * @param {boolean} config.isOutgoing - get txs with or without outgoing transfers\n * @param {string} config.paymentId - get txs with this payment ID\n * @param {string} config.paymentIds - get txs with a payment ID among these payment IDs\n * @param {boolean} config.hasPaymentId - get txs with or without payment IDs\n * @param {object|MoneroTransferQuery} config.transferQuery - get txs with transfers matching this transfer query\n * @param {object|MoneroOutputQuery} config.inputQuery - get txs with inputs matching this input query\n * @param {object|MoneroOutputQuery} config.outputQuery - get txs with outputs matching this output query\n */\n constructor(config) {\n super(config);\n \n // deserialize if necessary\n if (this.state.transferQuery && !(this.state.transferQuery instanceof MoneroTransferQuery)) this.state.transferQuery = new MoneroTransferQuery(this.state.transferQuery);\n if (this.state.inputQuery && !(this.state.inputQuery instanceof MoneroOutputQuery)) this.state.inputQuery = new MoneroOutputQuery(this.state.inputQuery);\n if (this.state.outputQuery && !(this.state.outputQuery instanceof MoneroOutputQuery)) this.state.outputQuery = new MoneroOutputQuery(this.state.outputQuery);\n \n // link cycles\n if (this.state.transferQuery) this.state.transferQuery.setTxQuery(this);\n if (this.state.inputQuery) this.state.inputQuery.setTxQuery(this);\n if (this.state.outputQuery) this.state.outputQuery.setTxQuery(this);\n \n // alias 'hash' to hashes\n if (this.state.hash) {\n this.setHashes([this.state.hash]);\n delete this.state.hash;\n }\n }\n \n copy() {\n return new MoneroTxQuery(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state, super.toJson()); // merge json onto inherited state\n if (this.getTransferQuery()) json.transferQuery = this.getTransferQuery().toJson();\n if (this.getInputQuery()) json.inputQuery = this.getInputQuery().toJson();\n if (this.getOutputQuery()) json.outputQuery = this.getOutputQuery().toJson();\n delete json.block; // do not serialize parent block\n return json;\n }\n \n isIncoming() {\n return this.state.isIncoming;\n }\n \n setIsIncoming(isIncoming) {\n this.state.isIncoming = isIncoming;\n return this;\n }\n \n isOutgoing() {\n return this.state.isOutgoing;\n }\n \n setIsOutgoing(isOutgoing) {\n this.state.isOutgoing = isOutgoing;\n return this;\n }\n\n getHashes() {\n return this.state.hashes;\n }\n\n setHashes(hashes) {\n this.state.hashes = hashes;\n return this;\n }\n \n setHash(hash) {\n if (hash === undefined) return this.setHashes(undefined);\n assert(typeof hash === \"string\");\n return this.setHashes([hash]);\n }\n \n hasPaymentId() {\n return this.state.hasPaymentId;\n }\n \n setHasPaymentId() {\n this.state.hasPaymentId = hasPaymentId;\n return this;\n }\n \n getPaymentIds() {\n return this.state.paymentIds;\n }\n\n setPaymentIds(paymentIds) {\n this.state.paymentIds = paymentIds;\n return this;\n }\n \n setPaymentId(paymentId) {\n if (paymentId === undefined) return this.setPaymentIds(undefined);\n assert(typeof paymentId === \"string\");\n return this.setPaymentIds([paymentId]);\n }\n \n getHeight() {\n return this.state.height;\n }\n \n setHeight(height) {\n this.state.height = height;\n return this;\n }\n \n getMinHeight() {\n return this.state.minHeight;\n }\n\n setMinHeight(minHeight) {\n this.state.minHeight = minHeight;\n return this;\n }\n\n getMaxHeight() {\n return this.state.maxHeight;\n }\n\n setMaxHeight(maxHeight) {\n this.state.maxHeight = maxHeight;\n return this;\n }\n \n getIncludeOutputs() {\n return this.state.includeOutputs;\n }\n\n setIncludeOutputs(includeOutputs) {\n this.state.includeOutputs = includeOutputs;\n return this;\n }\n \n getTransferQuery() {\n return this.state.transferQuery;\n }\n \n setTransferQuery(transferQuery) {\n this.state.transferQuery = transferQuery;\n if (transferQuery) transferQuery.state.txQuery = this;\n return this;\n }\n \n getInputQuery() {\n return this.state.inputQuery;\n }\n \n setInputQuery(inputQuery) {\n this.state.inputQuery = inputQuery;\n if (inputQuery) inputQuery.state.txQuery = this;\n return this;\n }\n \n getOutputQuery() {\n return this.state.outputQuery;\n }\n \n setOutputQuery(outputQuery) {\n this.state.outputQuery = outputQuery;\n if (outputQuery) outputQuery.state.txQuery = this;\n return this;\n }\n \n meetsCriteria(tx, queryChildren) {\n if (!(tx instanceof MoneroTxWallet)) throw new Error(\"Tx not given to MoneroTxQuery.meetsCriteria(tx)\");\n if (queryChildren === undefined) queryChildren = true;\n \n // filter on tx\n if (this.getHash() !== undefined && this.getHash() !== tx.getHash()) return false;\n if (this.getPaymentId() !== undefined && this.getPaymentId() !== tx.getPaymentId()) return false;\n if (this.isConfirmed() !== undefined && this.isConfirmed() !== tx.isConfirmed()) return false;\n if (this.inTxPool() !== undefined && this.inTxPool() !== tx.inTxPool()) return false;\n if (this.getRelay() !== undefined && this.getRelay() !== tx.getRelay()) return false;\n if (this.isRelayed() !== undefined && this.isRelayed() !== tx.isRelayed()) return false;\n if (this.isFailed() !== undefined && this.isFailed() !== tx.isFailed()) return false;\n if (this.isMinerTx() !== undefined && this.isMinerTx() !== tx.isMinerTx()) return false;\n if (this.isLocked() !== undefined && this.isLocked() !== tx.isLocked()) return false;\n \n // filter on having a payment id\n if (this.hasPaymentId() !== undefined) {\n if (this.hasPaymentId() && tx.getPaymentId() === undefined) return false;\n if (!this.hasPaymentId() && tx.getPaymentId() !== undefined) return false;\n }\n \n // filter on incoming\n if (this.isIncoming() !== undefined) {\n if (this.isIncoming() && !tx.isIncoming()) return false;\n if (!this.isIncoming() && tx.isIncoming()) return false;\n }\n \n // filter on outgoing\n if (this.isOutgoing() !== undefined) {\n if (this.isOutgoing() && !tx.isOutgoing()) return false;\n if (!this.isOutgoing() && tx.isOutgoing()) return false;\n }\n \n // filter on remaining fields\n let txHeight = tx.getBlock() === undefined ? undefined : tx.getBlock().getHeight();\n if (this.getHashes() !== undefined && !this.getHashes().includes(tx.getHash())) return false;\n if (this.getPaymentIds() !== undefined && !this.getPaymentIds().includes(tx.getPaymentId())) return false;\n if (this.getHeight() !== undefined && (txHeight === undefined || txHeight !== this.getHeight())) return false;\n if (this.getMinHeight() !== undefined && txHeight !== undefined && txHeight < this.getMinHeight()) return false; // do not filter unconfirmed\n if (this.getMaxHeight() !== undefined && (txHeight === undefined || txHeight > this.getMaxHeight())) return false;\n // TODO: filtering not complete\n \n // done if not querying transfers or outputs\n if (!queryChildren) return true;\n \n // at least one transfer must meet transfer filter if defined\n if (this.getTransferQuery()) {\n let matchFound = false;\n if (tx.getOutgoingTransfer() && this.getTransferQuery().meetsCriteria(tx.getOutgoingTransfer(), false)) matchFound = true;\n else if (tx.getIncomingTransfers()) {\n for (let incomingTransfer of tx.getIncomingTransfers()) {\n if (this.getTransferQuery().meetsCriteria(incomingTransfer, false)) {\n matchFound = true;\n break;\n }\n }\n }\n if (!matchFound) return false;\n }\n \n // at least one input must meet input query if defined\n if (this.getInputQuery() !== undefined) {\n if (tx.getInputs() === undefined || tx.getInputs().length === 0) return false;\n let matchFound = false;\n for (let input of tx.getInputs()) {\n if (this.getInputQuery().meetsCriteria(input, false)) {\n matchFound = true;\n break;\n }\n }\n if (!matchFound) return false;\n }\n \n // at least one output must meet output query if defined\n if (this.getOutputQuery() !== undefined) {\n if (tx.getOutputs() === undefined || tx.getOutputs().length === 0) return false;\n let matchFound = false;\n for (let output of tx.getOutputs()) {\n if (this.getOutputQuery().meetsCriteria(output, false)) {\n matchFound = true;\n break;\n }\n }\n if (!matchFound) return false;\n }\n \n return true; // transaction meets filter criteria\n }\n}\n\nmodule.exports = MoneroTxQuery;","const assert = require(\"assert\");\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroTxWallet = require(\"./MoneroTxWallet\");\nconst MoneroUtils = require(\"../../common/MoneroUtils\");\n\n/**\n * Groups transactions who share common hex data which is needed in order to\n * sign and submit the transactions.\n * \n * For example, multisig transactions created from createTxs() share a common\n * hex string which is needed in order to sign and submit the multisig\n * transactions.\n */\nclass MoneroTxSet {\n \n constructor(state) {\n \n // initialize internal state\n if (!state) state = {};\n else if (typeof state === \"object\") state = Object.assign({}, state);\n else throw new MoneroError(\"state must be JavaScript object\");\n this.state = state;\n \n // deserialize txs\n if (state.txs) {\n for (let i = 0; i < state.txs.length; i++) {\n if (!(state.txs[i] instanceof MoneroTxWallet)) state.txs[i] = new MoneroTxWallet(state.txs[i]);\n state.txs[i].setTxSet(this);\n }\n }\n }\n \n toJson() {\n let json = Object.assign({}, this.state); // copy state\n if (this.getTxs()) {\n json.txs = [];\n for (let tx of this.getTxs()) json.txs.push(tx.toJson());\n }\n return json;\n }\n\n getTxs() {\n return this.state.txs;\n }\n\n setTxs(txs) {\n this.state.txs = txs;\n return this;\n }\n \n getMultisigTxHex() {\n return this.state.multisigTxHex;\n }\n \n setMultisigTxHex(multisigTxHex) {\n this.state.multisigTxHex = multisigTxHex;\n return this;\n }\n \n getUnsignedTxHex() {\n return this.state.unsignedTxHex;\n }\n \n setUnsignedTxHex(unsignedTxHex) {\n this.state.unsignedTxHex = unsignedTxHex;\n return this;\n }\n \n getSignedTxHex() {\n return this.state.signedTxHex;\n }\n \n setSignedTxHex(signedTxHex) {\n this.state.signedTxHex = signedTxHex;\n return this;\n }\n \n merge(txSet) {\n assert(txSet instanceof MoneroTxSet);\n if (this === txSet) return this;\n \n // merge sets\n this.setMultisigTxHex(GenUtils.reconcile(this.getMultisigTxHex(), txSet.getMultisigTxHex()));\n this.setUnsignedTxHex(GenUtils.reconcile(this.getUnsignedTxHex(), txSet.getUnsignedTxHex()));\n this.setSignedTxHex(GenUtils.reconcile(this.getSignedTxHex(), txSet.getSignedTxHex()));\n \n // merge txs\n if (txSet.getTxs() !== undefined) {\n for (let tx of txSet.getTxs()) {\n tx.setTxSet(this);\n MoneroUtils.mergeTx(this.getTxs(), tx);\n }\n }\n\n return this;\n }\n \n toString(indent = 0) {\n let str = \"\";\n str += GenUtils.kvLine(\"Multisig tx hex: \", this.getMultisigTxHex(), indent);\n str += GenUtils.kvLine(\"Unsigned tx hex: \", this.getUnsignedTxHex(), indent);\n str += GenUtils.kvLine(\"Signed tx hex: \", this.getSignedTxHex(), indent);\n if (this.getTxs() !== undefined) {\n str += GenUtils.kvLine(\"Txs\", \"\", indent);\n for (let tx of this.getTxs()) {\n str += tx.toString(indent + 1) + \"\\n\";\n }\n }\n return str;\n }\n}\n\nmodule.exports = MoneroTxSet;","const assert = require(\"assert\");\nconst BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroIncomingTransfer = require(\"./MoneroIncomingTransfer\");\nconst MoneroOutgoingTransfer = require(\"./MoneroOutgoingTransfer\");\nconst MoneroOutputWallet = require(\"./MoneroOutputWallet\");\nconst MoneroTx = require(\"../../daemon/model/MoneroTx\");\n\n/**\n * Models a Monero transaction with wallet extensions.\n * \n * @class\n * @extends {MoneroTx}\n */\nclass MoneroTxWallet extends MoneroTx {\n \n /**\n * Construct the model.\n * \n * @param {MoneroTxWallet|object} state is existing state to initialize from (optional)\n */\n constructor(state) {\n super(state);\n if (state instanceof MoneroTxWallet && state.getTxSet()) this.setTxSet(state.getTxSet()); // preserve reference to tx set\n state = this.state;\n \n // deserialize incoming transfers\n if (state.incomingTransfers) {\n for (let i = 0; i < state.incomingTransfers.length; i++) {\n if (!(state.incomingTransfers[i] instanceof MoneroIncomingTransfer)) {\n state.incomingTransfers[i] = new MoneroIncomingTransfer(Object.assign(state.incomingTransfers[i], {tx: this}));\n }\n }\n }\n \n // deserialize outgoing transfer\n if (state.outgoingTransfer && !(state.outgoingTransfer instanceof MoneroOutgoingTransfer)) {\n this.setOutgoingTransfer(new MoneroOutgoingTransfer(Object.assign(state.outgoingTransfer, {tx: this})));\n }\n \n // deserialize inputs\n if (state.inputs) {\n for (let i = 0; i < state.inputs.length; i++) {\n if (!(state.inputs[i] instanceof MoneroOutputWallet)) {\n state.inputs[i] = new MoneroOutputWallet(Object.assign(state.inputs[i].toJson(), {tx: this}));\n }\n }\n }\n \n // deserialize outputs\n if (state.outputs) {\n for (let i = 0; i < state.outputs.length; i++) {\n if (!(state.outputs[i] instanceof MoneroOutputWallet)) {\n state.outputs[i] = new MoneroOutputWallet(Object.assign(state.outputs[i].toJson(), {tx: this}));\n }\n }\n }\n \n // deserialize BigIntegers\n if (state.inputSum !== undefined && !(state.inputSum instanceof BigInteger)) state.inputSum = BigInteger.parse(state.inputSum);\n if (state.outputSum !== undefined && !(state.outputSum instanceof BigInteger)) state.outputSum = BigInteger.parse(state.outputSum);\n if (state.changeAmount !== undefined && !(state.changeAmount instanceof BigInteger)) state.changeAmount = BigInteger.parse(state.changeAmount);\n }\n \n toJson() {\n let json = Object.assign({}, this.state, super.toJson()); // merge json onto inherited state\n if (this.getIncomingTransfers()) {\n json.incomingTransfers = [];\n for (let incomingTransfer of this.getIncomingTransfers()) json.incomingTransfers.push(incomingTransfer.toJson());\n }\n if (this.getOutgoingTransfer()) json.outgoingTransfer = this.getOutgoingTransfer().toJson();\n if (this.getInputSum()) json.inputSum = this.getInputSum().toString();\n if (this.getOutputSum()) json.outputSum = this.getOutputSum().toString();\n if (this.getChangeAmount()) json.changeAmount = this.getChangeAmount().toString();\n delete json.block; // do not serialize parent block\n delete json.txSet; // do not serialize parent tx set\n return json;\n }\n \n getTxSet() {\n return this.state.txSet;\n }\n \n setTxSet(txSet) {\n this.state.txSet = txSet;\n return this;\n }\n \n isIncoming() {\n return this.state.isIncoming;\n }\n \n setIsIncoming(isIncoming) {\n this.state.isIncoming = isIncoming;\n return this;\n }\n \n isOutgoing() {\n return this.state.isOutgoing;\n }\n \n setIsOutgoing(isOutgoing) {\n this.state.isOutgoing = isOutgoing;\n return this;\n }\n \n getIncomingAmount() {\n if (this.getIncomingTransfers() === undefined) return undefined;\n let incomingAmt = BigInteger.parse(\"0\");\n for (let transfer of this.getIncomingTransfers()) incomingAmt = incomingAmt.add(transfer.getAmount());\n return incomingAmt;\n }\n \n getOutgoingAmount() {\n return this.getOutgoingTransfer() ? this.getOutgoingTransfer().getAmount() : undefined;\n }\n \n getTransfers(transferQuery) {\n let transfers = [];\n if (this.getOutgoingTransfer() && (!transferQuery || transferQuery.meetsCriteria(this.getOutgoingTransfer()))) transfers.push(this.getOutgoingTransfer());\n if (this.getIncomingTransfers()) {\n for (let transfer of this.getIncomingTransfers()) {\n if (!transferQuery || transferQuery.meetsCriteria(transfer)) transfers.push(transfer);\n }\n }\n return transfers;\n }\n \n filterTransfers(transferQuery) {\n let transfers = [];\n \n // collect outgoing transfer or erase if filtered\n if (this.getOutgoingTransfer() && (!transferQuery || transferQuery.meetsCriteria(this.getOutgoingTransfer()))) transfers.push(this.getOutgoingTransfer());\n else this.setOutgoingTransfer(undefined);\n \n // collect incoming transfers or erase if filtered\n if (this.getIncomingTransfers()) {\n let toRemoves = [];\n for (let transfer of this.getIncomingTransfers()) {\n if (transferQuery.meetsCriteria(transfer)) transfers.push(transfer);\n else toRemoves.push(transfer);\n }\n this.setIncomingTransfers(this.getIncomingTransfers().filter(function(transfer) {\n return !toRemoves.includes(transfer);\n }));\n if (this.getIncomingTransfers().length === 0) this.setIncomingTransfers(undefined);\n }\n \n return transfers;\n }\n \n getIncomingTransfers() {\n return this.state.incomingTransfers;\n }\n \n setIncomingTransfers(incomingTransfers) {\n this.state.incomingTransfers = incomingTransfers;\n return this;\n }\n \n getOutgoingTransfer() {\n return this.state.outgoingTransfer;\n }\n \n setOutgoingTransfer(outgoingTransfer) {\n this.state.outgoingTransfer = outgoingTransfer;\n return this;\n }\n \n getInputs(outputQuery) {\n if (!outputQuery || !super.getInputs()) return super.getInputs();\n let inputs = [];\n for (let output of super.getInputs()) if (!outputQuery || outputQuery.meetsCriteria(output)) inputs.push(output);\n return inputs;\n }\n \n setInputs(inputs) {\n \n // validate that all inputs are wallet inputs\n if (inputs) {\n for (let output of inputs) {\n if (!(output instanceof MoneroOutputWallet)) throw new MoneroError(\"Wallet transaction inputs must be of type MoneroOutputWallet\");\n }\n }\n super.setInputs(inputs);\n return this;\n }\n \n getOutputs(outputQuery) {\n if (!outputQuery || !super.getOutputs()) return super.getOutputs();\n let outputs = [];\n for (let output of super.getOutputs()) if (!outputQuery || outputQuery.meetsCriteria(output)) outputs.push(output);\n return outputs;\n }\n \n setOutputs(outputs) {\n \n // validate that all outputs are wallet outputs\n if (outputs) {\n for (let output of outputs) {\n if (!(output instanceof MoneroOutputWallet)) throw new MoneroError(\"Wallet transaction outputs must be of type MoneroOutputWallet\");\n }\n }\n super.setOutputs(outputs);\n return this;\n }\n \n filterOutputs(outputQuery) {\n let outputs = [];\n if (super.getOutputs()) {\n let toRemoves = [];\n for (let output of super.getOutputs()) {\n if (!outputQuery || outputQuery.meetsCriteria(output)) outputs.push(output);\n else toRemoves.push(output);\n }\n this.setOutputs(super.getOutputs().filter(function(output) {\n return !toRemoves.includes(output);\n }));\n if (this.getOutputs().length === 0) this.setOutputs(undefined);\n }\n return outputs;\n }\n \n getNote() {\n return this.state.note;\n }\n \n setNote(note) {\n this.state.note = note;\n return this;\n }\n \n isLocked() {\n return this.state.isLocked;\n }\n \n setIsLocked(isLocked) {\n this.state.isLocked = isLocked;\n return this;\n }\n \n getInputSum() {\n return this.state.inputSum;\n }\n \n setInputSum(inputSum) {\n this.state.inputSum = inputSum;\n return this;\n }\n \n getOutputSum() {\n return this.state.outputSum;\n }\n \n setOutputSum(outputSum) {\n this.state.outputSum = outputSum;\n return this;\n }\n \n getChangeAddress() {\n return this.state.changeAddress;\n }\n \n setChangeAddress(changeAddress) {\n this.state.changeAddress = changeAddress;\n return this;\n }\n \n getChangeAmount() {\n return this.state.changeAmount;\n }\n \n setChangeAmount(changeAmount) {\n this.state.changeAmount = changeAmount;\n return this;\n }\n \n getNumDummyOutputs() {\n return this.state.numDummyOutputs;\n }\n \n setNumDummyOutputs(numDummyOutputs) {\n this.state.numDummyOutputs = numDummyOutputs;\n return this;\n }\n \n getExtraHex() {\n return this.state.extraHex;\n }\n \n setExtraHex(extraHex) {\n this.state.extraHex = extraHex;\n return this;\n }\n \n copy() {\n return new MoneroTxWallet(this);\n }\n \n /**\n * Updates this transaction by merging the latest information from the given\n * transaction.\n * \n * Merging can modify or build references to the transaction given so it\n * should not be re-used or it should be copied before calling this method.\n * \n * @param tx is the transaction to merge into this transaction\n */\n merge(tx) {\n assert(tx instanceof MoneroTxWallet);\n if (this === tx) return this;\n \n // merge base classes\n super.merge(tx);\n \n // merge tx set if they're different which comes back to merging txs\n const MoneroTxSet = require(\"./MoneroTxSet\");\n if (this.getTxSet() !== tx.getTxSet()) {\n if (this.getTxSet() == undefined) {\n this.setTxSet(new MoneroTxSet().setTxs([this]));\n }\n if (tx.getTxSet() === undefined) {\n tx.setTxSet(new MoneroTxSet().setTxs([tx]));\n }\n this.getTxSet().merge(tx.getTxSet());\n return this;\n }\n \n // merge incoming transfers\n if (tx.getIncomingTransfers()) {\n if (this.getIncomingTransfers() === undefined) this.setIncomingTransfers([]);\n for (let transfer of tx.getIncomingTransfers()) {\n transfer.setTx(this);\n MoneroTxWallet._mergeIncomingTransfer(this.getIncomingTransfers(), transfer);\n }\n }\n \n // merge outgoing transfer\n if (tx.getOutgoingTransfer()) {\n tx.getOutgoingTransfer().setTx(this);\n if (this.getOutgoingTransfer() === undefined) this.setOutgoingTransfer(tx.getOutgoingTransfer());\n else this.getOutgoingTransfer().merge(tx.getOutgoingTransfer());\n }\n \n // merge simple extensions\n this.setIsIncoming(GenUtils.reconcile(this.isIncoming(), tx.isIncoming(), {resolveTrue: true})); // outputs seen on confirmation\n this.setIsOutgoing(GenUtils.reconcile(this.isOutgoing(), tx.isOutgoing()));\n this.setNote(GenUtils.reconcile(this.getNote(), tx.getNote()));\n this.setIsLocked(GenUtils.reconcile(this.isLocked(), tx.isLocked(), {resolveTrue: false})); // tx can become unlocked\n this.setInputSum(GenUtils.reconcile(this.getInputSum(), tx.getInputSum()));\n this.setOutputSum(GenUtils.reconcile(this.getOutputSum(), tx.getOutputSum()));\n this.setChangeAddress(GenUtils.reconcile(this.getChangeAddress(), tx.getChangeAddress()));\n this.setChangeAmount(GenUtils.reconcile(this.getChangeAmount(), tx.getChangeAmount()));\n this.setNumDummyOutputs(GenUtils.reconcile(this.getNumDummyOutputs(), tx.getNumDummyOutputs()));\n this.setExtraHex(GenUtils.reconcile(this.getExtraHex(), tx.getExtraHex()));\n \n return this; // for chaining\n }\n \n toString(indent = 0, oneLine) {\n let str = \"\";\n \n // represent tx with one line string\n // TODO: proper csv export\n if (oneLine) {\n str += this.getHash() + \", \";\n str += (this.isConfirmed() ? this.getBlock().getTimestamp() : this.getReceivedTimestamp()) + \", \";\n str += this.isConfirmed() + \", \";\n str += (this.getOutgoingAmount() ? this.getOutgoingAmount().toString() : \"\") + \", \";\n str += this.getIncomingAmount() ? this.getIncomingAmount().toString() : \"\";\n return str;\n }\n \n // otherwise stringify all fields\n str += super.toString(indent) + \"\\n\";\n str += GenUtils.kvLine(\"Is incoming\", this.isIncoming(), indent);\n str += GenUtils.kvLine(\"Incoming amount\", this.getIncomingAmount(), indent);\n if (this.getIncomingTransfers()) {\n str += GenUtils.kvLine(\"Incoming transfers\", \"\", indent);\n for (let i = 0; i < this.getIncomingTransfers().length; i++) {\n str += GenUtils.kvLine(i + 1, \"\", indent + 1);\n str += this.getIncomingTransfers()[i].toString(indent + 2) + \"\\n\";\n }\n }\n str += GenUtils.kvLine(\"Is outgoing\", this.isOutgoing(), indent);\n str += GenUtils.kvLine(\"Outgoing amount\", this.getOutgoingAmount(), indent);\n if (this.getOutgoingTransfer()) {\n str += GenUtils.kvLine(\"Outgoing transfer\", \"\", indent);\n str += this.getOutgoingTransfer().toString(indent + 1) + \"\\n\";\n }\n str += GenUtils.kvLine(\"Note\", this.getNote(), indent);\n str += GenUtils.kvLine(\"Is locked\", this.isLocked(), indent);\n str += GenUtils.kvLine(\"Input sum\", this.getInputSum(), indent);\n str += GenUtils.kvLine(\"Output sum\", this.getOutputSum(), indent);\n str += GenUtils.kvLine(\"Change address\", this.getChangeAddress(), indent);\n str += GenUtils.kvLine(\"Change amount\", this.getChangeAmount(), indent);\n str += GenUtils.kvLine(\"Num dummy outputs\", this.getNumDummyOutputs(), indent);\n str += GenUtils.kvLine(\"Extra hex\", this.getExtraHex(), indent);\n return str.slice(0, str.length - 1); // strip last newline\n }\n \n // private helper to merge transfers\n static _mergeIncomingTransfer(transfers, transfer) {\n for (let aTransfer of transfers) {\n if (aTransfer.getAccountIndex() === transfer.getAccountIndex() && aTransfer.getSubaddressIndex() === transfer.getSubaddressIndex()) {\n aTransfer.merge(transfer);\n return;\n }\n }\n transfers.push(transfer);\n }\n}\n\nmodule.exports = MoneroTxWallet;","const GenUtils = require(\"../../common/GenUtils\");\nconst MoneroError = require(\"../../common/MoneroError\");\nconst MoneroNetworkType = require(\"../../daemon/model/MoneroNetworkType\");\nconst MoneroRpcConnection = require(\"../../common/MoneroRpcConnection\");\n\n/**\n * Configuration to create a Monero wallet.\n */\nclass MoneroWalletConfig {\n \n /**\n * Construct a configuration to open or create a wallet.\n * \n * @param {object|MoneroWalletConfig} config - MoneroWalletConfig or equivalent config object\n * @param {string} config.path - path of the wallet to open or create\n * @param {string} config.password - password of the wallet to open\n * @param {string|number} config.networkType - network type of the wallet to open (one of \"mainnet\", \"testnet\", \"stagenet\" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)\n * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)\n * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase\n * @param {boolean} config.isMultisig - restore multisig wallet from seed\n * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)\n * @param {string} config.privateViewKey - private view key of the wallet to create (optional)\n * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)\n * @param {number} config.restoreHeight - block height to start scanning from (defaults to 0 unless generating random wallet)\n * @param {string} config.language - language of the wallet's seed phrase (defaults to \"English\" or auto-detected)\n * @param {number} config.accountLookahead - number of accounts to scan (optional)\n * @param {number} config.subaddressLookahead - number of subaddresses to scan per account (optional)\n * @param {string} config.serverUri - uri of the wallet's server (optional)\n * @param {string} config.serverUsername - username of the wallet's server (optional)\n * @param {string} config.serverPassword - password of the wallet's server (optional)\n * @param {boolean} config.rejectUnauthorized - reject self-signed server certificates if true (default true)\n * @param {MoneroRpcConnection|object} config.server - MoneroRpcConnection or equivalent JS object configuring the server connection (optional)\n * @param {Uint8Array} config.keysData - wallet keys data to open (optional)\n * @param {Uint8Array} config.cacheData - wallet cache data to open (optional)\n * @param {boolean} config.proxyToWorker - proxies wallet operations to a worker in order to not block the main thread (default true)\n * @param {fs} config.fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)\n * @param {boolean} config.saveCurrent - specifies if the current RPC wallet should be saved before being closed\n * @param {number} config.accountLookahead - number of accounts to scan (optional)\n * @param {number} config.subaddressLookahead - number of subaddresses to scan per account (optional)\n */\n constructor(config) {\n \n // initialize internal config\n if (!config) config = {};\n else if (config instanceof MoneroWalletConfig) config = config.toJson();\n else if (typeof config === \"object\") config = Object.assign({}, config);\n else throw new MoneroError(\"config must be a MoneroWalletConfig or JavaScript object\");\n this.config = config;\n \n // normalize config\n this.setNetworkType(config.networkType);\n if (config.server) this.setServer(config.server);\n delete this.config.server;\n \n // check for unsupported fields\n for (let key of Object.keys(this.config)) {\n if (!GenUtils.arrayContains(MoneroWalletConfig.SUPPORTED_FIELDS, key)) {\n throw new MoneroError(\"Unsupported field in MoneroWalletConfig: '\" + key + \"'\");\n }\n }\n }\n\n copy() {\n return new MoneroWalletConfig(this.toJson());\n }\n \n toJson() {\n let json = Object.assign({}, this.config);\n json.fs = undefined; // remove filesystem\n return json;\n }\n \n getPath() {\n return this.config.path;\n }\n \n setPath(path) {\n this.config.path = path;\n return this;\n }\n \n getPassword() {\n return this.config.password;\n }\n \n setPassword(password) {\n this.config.password = password;\n return this;\n }\n \n getNetworkType() {\n return this.config.networkType;\n }\n \n setNetworkType(networkTypeOrStr) {\n this.config.networkType = typeof networkTypeOrStr === \"string\" ? MoneroNetworkType.parse(networkTypeOrStr) : networkTypeOrStr;\n return this;\n }\n \n getServer() {\n return !this.config.serverUri ? undefined : new MoneroRpcConnection({uri: this.config.serverUri, username: this.config.serverUsername, password: this.config.serverPassword, rejectUnauthorized: this.config.rejectUnauthorized})\n }\n \n setServer(server) {\n if (server && !(server instanceof MoneroRpcConnection)) server = new MoneroRpcConnection(server);\n this.config.serverUri = server === undefined ? undefined : server.getUri();\n this.config.serverUsername = server === undefined ? undefined : server.getUsername();\n this.config.serverPassword = server === undefined ? undefined : server.getPassword();\n this.config.rejectUnauthorized = server === undefined ? undefined : server.getRejectUnauthorized();\n return this;\n }\n \n getServerUri() {\n return this.config.serverUri;\n }\n \n setServerUri(serverUri) {\n this.config.serverUri = serverUri;\n return this;\n }\n \n getServerUsername() {\n return this.config.serverUsername;\n }\n \n setServerUsername(serverUsername) {\n this.config.serverUsername = serverUsername;\n return this;\n }\n \n getServerPassword() {\n return this.config.serverPassword;\n }\n \n setServerPassword(serverPassword) {\n this.config.serverPassword = serverPassword;\n return this;\n }\n \n getRejectUnauthorized() {\n return this.config.rejectUnauthorized;\n }\n \n setRejectUnauthorized(rejectUnauthorized) {\n this.config.rejectUnauthorized = rejectUnauthorized;\n return this;\n }\n \n getSeed() {\n return this.config.seed;\n }\n \n setSeed(seed) {\n this.config.seed = seed;\n return this;\n }\n \n getSeedOffset() {\n return this.config.seedOffset;\n }\n \n setSeedOffset(seedOffset) {\n this.config.seedOffset = seedOffset;\n return this;\n }\n\n isMultisig() {\n return this.config.isMultisig;\n }\n \n setIsMultisig(isMultisig) {\n this.config.isMultisig = isMultisig;\n return this;\n }\n \n getPrimaryAddress() {\n return this.config.primaryAddress;\n }\n \n setPrimaryAddress(primaryAddress) {\n this.config.primaryAddress = primaryAddress;\n return this;\n }\n \n getPrivateViewKey() {\n return this.config.privateViewKey;\n }\n \n setPrivateViewKey(privateViewKey) {\n this.config.privateViewKey = privateViewKey;\n return this;\n }\n \n getPrivateSpendKey() {\n return this.config.privateSpendKey;\n }\n \n setPrivateSpendKey(privateSpendKey) {\n this.config.privateSpendKey = privateSpendKey;\n return this;\n }\n \n getRestoreHeight() {\n return this.config.restoreHeight;\n }\n \n setRestoreHeight(restoreHeight) {\n this.config.restoreHeight = restoreHeight;\n return this;\n }\n \n getLanguage() {\n return this.config.language;\n }\n \n setLanguage(language) {\n this.config.language = language;\n return this;\n }\n \n getSaveCurrent() {\n return this.config.saveCurrent;\n }\n \n setSaveCurrent(saveCurrent) {\n this.config.saveCurrent = saveCurrent;\n return this;\n }\n \n getProxyToWorker() {\n return this.config.proxyToWorker;\n }\n \n setProxyToWorker(proxyToWorker) {\n this.config.proxyToWorker = proxyToWorker;\n return this;\n }\n \n getFs() {\n return this.config.fs;\n }\n \n setFs(fs) {\n this.config.fs = fs;\n return this;\n }\n \n getKeysData() {\n return this.config.keysData;\n }\n \n setKeysData(keysData) {\n this.config.keysData = keysData;\n return this;\n }\n \n getCacheData() {\n return this.config.cacheData;\n }\n \n setCacheData(cacheData) {\n this.config.cacheData = cacheData;\n return this;\n }\n \n getAccountLookahead() {\n return this.config.accountLookahead;\n }\n \n setAccountLookahead(accountLookahead) {\n this.config.accountLookahead = accountLookahead;\n return this;\n }\n \n getSubaddressLookahead() {\n return this.config.subaddressLookahead;\n }\n \n setSubaddressLookahead(subaddressLookahead) {\n this.config.subaddressLookahead = subaddressLookahead;\n return this;\n }\n}\n\nMoneroWalletConfig.SUPPORTED_FIELDS = [\"path\", \"password\", \"networkType\", \"serverUri\", \"serverUsername\", \"serverPassword\", \"rejectUnauthorized\", \"seed\", \"seedOffset\", \"isMultisig\", \"primaryAddress\", \"privateViewKey\", \"privateSpendKey\", \"restoreHeight\", \"language\", \"saveCurrent\", \"proxyToWorker\", \"fs\", \"keysData\", \"cacheData\", \"accountLookahead\", \"subaddressLookahead\"];\n\nmodule.exports = MoneroWalletConfig;","/**\n * Default wallet listener which takes no action on notifications.\n */\nclass MoneroWalletListener {\n \n /**\n * Invoked as the wallet is synchronized.\n * \n * @param {number} height - height of the synced block \n * @param {number} startHeight - starting height of the sync request\n * @param {number} endHeight - ending height of the sync request\n * @param {number} percentDone - sync progress as a percentage\n * @param {string} message - human-readable description of the current progress\n */\n async onSyncProgress(height, startHeight, endHeight, percentDone, message) { }\n\n /**\n * Invoked when a new block is added to the chain.\n * \n * @param {int} height - the height of the new block (i.e. the number of blocks before it).\n */\n async onNewBlock(height) { }\n \n /**\n * Invoked when the wallet's balances change.\n * \n * @param {BigInteger} newBalance - new wallet balance\n * @param {BigInteger} newUnlockedBalance - new unlocked wallet balance\n */\n async onBalancesChanged(newBalance, newUnlockedBalance) { }\n\n /**\n * Invoked 3 times per received output: once when unconfirmed, once when confirmed, and\n * once when unlocked.\n * \n * The notified output includes basic fields only, so the output or its transaction should be fetched to get all available fields.\n * \n * @param {MoneroOutputWallet} output - the received output\n */\n async onOutputReceived(output) { }\n \n /**\n * Invoked twice per spent output: once when confirmed and once when unlocked.\n * \n * The notified output includes basic fields only, so the output or its transaction should be fetched to get all available fields.\n * \n * @param {MoneroOutputWallet} output - the spent output\n */\n async onOutputSpent(output) { }\n}\n\nmodule.exports = MoneroWalletListener;","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","'use strict';\n\nvar crypto_hash_sha512 = require('tweetnacl').lowlevel.crypto_hash;\n\n/*\n * This file is a 1:1 port from the OpenBSD blowfish.c and bcrypt_pbkdf.c. As a\n * result, it retains the original copyright and license. The two files are\n * under slightly different (but compatible) licenses, and are here combined in\n * one file.\n *\n * Credit for the actual porting work goes to:\n * Devi Mandiri \n */\n\n/*\n * The Blowfish portions are under the following license:\n *\n * Blowfish block cipher for OpenBSD\n * Copyright 1997 Niels Provos \n * All rights reserved.\n *\n * Implementation advice by David Mazieres .\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. The name of the author may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\n * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/*\n * The bcrypt_pbkdf portions are under the following license:\n *\n * Copyright (c) 2013 Ted Unangst \n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\n/*\n * Performance improvements (Javascript-specific):\n *\n * Copyright 2016, Joyent Inc\n * Author: Alex Wilson \n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\n// Ported from OpenBSD bcrypt_pbkdf.c v1.9\n\nvar BLF_J = 0;\n\nvar Blowfish = function() {\n this.S = [\n new Uint32Array([\n 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,\n 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99,\n 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,\n 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e,\n 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,\n 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,\n 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef,\n 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e,\n 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,\n 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,\n 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce,\n 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,\n 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e,\n 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677,\n 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,\n 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032,\n 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88,\n 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,\n 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e,\n 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,\n 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,\n 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98,\n 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88,\n 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,\n 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,\n 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d,\n 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,\n 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7,\n 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba,\n 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,\n 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f,\n 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09,\n 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,\n 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb,\n 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,\n 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,\n 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab,\n 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82,\n 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,\n 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,\n 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0,\n 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,\n 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790,\n 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8,\n 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,\n 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0,\n 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7,\n 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,\n 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad,\n 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,\n 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,\n 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9,\n 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477,\n 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,\n 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,\n 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af,\n 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,\n 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5,\n 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41,\n 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,\n 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400,\n 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915,\n 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,\n 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a]),\n new Uint32Array([\n 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,\n 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,\n 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,\n 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e,\n 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,\n 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,\n 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e,\n 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,\n 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,\n 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8,\n 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,\n 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,\n 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701,\n 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,\n 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,\n 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,\n 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,\n 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,\n 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e,\n 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,\n 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,\n 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2,\n 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,\n 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,\n 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b,\n 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,\n 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,\n 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3,\n 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,\n 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,\n 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,\n 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,\n 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,\n 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28,\n 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,\n 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,\n 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510,\n 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,\n 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,\n 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e,\n 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,\n 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,\n 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8,\n 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,\n 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,\n 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,\n 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,\n 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,\n 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0,\n 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,\n 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,\n 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250,\n 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,\n 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,\n 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00,\n 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,\n 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,\n 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e,\n 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,\n 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,\n 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,\n 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,\n 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,\n 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7]),\n new Uint32Array([\n 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,\n 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,\n 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,\n 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,\n 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45,\n 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,\n 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,\n 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb,\n 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,\n 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,\n 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42,\n 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,\n 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,\n 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb,\n 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,\n 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,\n 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,\n 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,\n 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,\n 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc,\n 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,\n 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,\n 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b,\n 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,\n 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,\n 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728,\n 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,\n 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,\n 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37,\n 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,\n 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,\n 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,\n 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,\n 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,\n 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d,\n 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,\n 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,\n 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9,\n 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,\n 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,\n 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d,\n 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,\n 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,\n 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61,\n 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,\n 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,\n 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,\n 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,\n 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,\n 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633,\n 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,\n 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,\n 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52,\n 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,\n 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,\n 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62,\n 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,\n 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,\n 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24,\n 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,\n 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,\n 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,\n 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,\n 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0]),\n new Uint32Array([\n 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b,\n 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe,\n 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,\n 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4,\n 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8,\n 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,\n 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304,\n 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,\n 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,\n 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6,\n 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9,\n 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,\n 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,\n 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51,\n 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,\n 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c,\n 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b,\n 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,\n 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c,\n 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd,\n 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,\n 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319,\n 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,\n 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,\n 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991,\n 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32,\n 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,\n 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,\n 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae,\n 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,\n 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5,\n 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47,\n 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,\n 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d,\n 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84,\n 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,\n 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8,\n 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,\n 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,\n 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7,\n 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38,\n 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,\n 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,\n 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525,\n 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,\n 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442,\n 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964,\n 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,\n 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8,\n 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d,\n 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,\n 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299,\n 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,\n 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,\n 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614,\n 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a,\n 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,\n 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,\n 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0,\n 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,\n 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e,\n 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9,\n 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,\n 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6])\n ];\n this.P = new Uint32Array([\n 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,\n 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,\n 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,\n 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,\n 0x9216d5d9, 0x8979fb1b]);\n};\n\nfunction F(S, x8, i) {\n return (((S[0][x8[i+3]] +\n S[1][x8[i+2]]) ^\n S[2][x8[i+1]]) +\n S[3][x8[i]]);\n};\n\nBlowfish.prototype.encipher = function(x, x8) {\n if (x8 === undefined) {\n x8 = new Uint8Array(x.buffer);\n if (x.byteOffset !== 0)\n x8 = x8.subarray(x.byteOffset);\n }\n x[0] ^= this.P[0];\n for (var i = 1; i < 16; i += 2) {\n x[1] ^= F(this.S, x8, 0) ^ this.P[i];\n x[0] ^= F(this.S, x8, 4) ^ this.P[i+1];\n }\n var t = x[0];\n x[0] = x[1] ^ this.P[17];\n x[1] = t;\n};\n\nBlowfish.prototype.decipher = function(x) {\n var x8 = new Uint8Array(x.buffer);\n if (x.byteOffset !== 0)\n x8 = x8.subarray(x.byteOffset);\n x[0] ^= this.P[17];\n for (var i = 16; i > 0; i -= 2) {\n x[1] ^= F(this.S, x8, 0) ^ this.P[i];\n x[0] ^= F(this.S, x8, 4) ^ this.P[i-1];\n }\n var t = x[0];\n x[0] = x[1] ^ this.P[0];\n x[1] = t;\n};\n\nfunction stream2word(data, databytes){\n var i, temp = 0;\n for (i = 0; i < 4; i++, BLF_J++) {\n if (BLF_J >= databytes) BLF_J = 0;\n temp = (temp << 8) | data[BLF_J];\n }\n return temp;\n};\n\nBlowfish.prototype.expand0state = function(key, keybytes) {\n var d = new Uint32Array(2), i, k;\n var d8 = new Uint8Array(d.buffer);\n\n for (i = 0, BLF_J = 0; i < 18; i++) {\n this.P[i] ^= stream2word(key, keybytes);\n }\n BLF_J = 0;\n\n for (i = 0; i < 18; i += 2) {\n this.encipher(d, d8);\n this.P[i] = d[0];\n this.P[i+1] = d[1];\n }\n\n for (i = 0; i < 4; i++) {\n for (k = 0; k < 256; k += 2) {\n this.encipher(d, d8);\n this.S[i][k] = d[0];\n this.S[i][k+1] = d[1];\n }\n }\n};\n\nBlowfish.prototype.expandstate = function(data, databytes, key, keybytes) {\n var d = new Uint32Array(2), i, k;\n\n for (i = 0, BLF_J = 0; i < 18; i++) {\n this.P[i] ^= stream2word(key, keybytes);\n }\n\n for (i = 0, BLF_J = 0; i < 18; i += 2) {\n d[0] ^= stream2word(data, databytes);\n d[1] ^= stream2word(data, databytes);\n this.encipher(d);\n this.P[i] = d[0];\n this.P[i+1] = d[1];\n }\n\n for (i = 0; i < 4; i++) {\n for (k = 0; k < 256; k += 2) {\n d[0] ^= stream2word(data, databytes);\n d[1] ^= stream2word(data, databytes);\n this.encipher(d);\n this.S[i][k] = d[0];\n this.S[i][k+1] = d[1];\n }\n }\n BLF_J = 0;\n};\n\nBlowfish.prototype.enc = function(data, blocks) {\n for (var i = 0; i < blocks; i++) {\n this.encipher(data.subarray(i*2));\n }\n};\n\nBlowfish.prototype.dec = function(data, blocks) {\n for (var i = 0; i < blocks; i++) {\n this.decipher(data.subarray(i*2));\n }\n};\n\nvar BCRYPT_BLOCKS = 8,\n BCRYPT_HASHSIZE = 32;\n\nfunction bcrypt_hash(sha2pass, sha2salt, out) {\n var state = new Blowfish(),\n cdata = new Uint32Array(BCRYPT_BLOCKS), i,\n ciphertext = new Uint8Array([79,120,121,99,104,114,111,109,97,116,105,\n 99,66,108,111,119,102,105,115,104,83,119,97,116,68,121,110,97,109,\n 105,116,101]); //\"OxychromaticBlowfishSwatDynamite\"\n\n state.expandstate(sha2salt, 64, sha2pass, 64);\n for (i = 0; i < 64; i++) {\n state.expand0state(sha2salt, 64);\n state.expand0state(sha2pass, 64);\n }\n\n for (i = 0; i < BCRYPT_BLOCKS; i++)\n cdata[i] = stream2word(ciphertext, ciphertext.byteLength);\n for (i = 0; i < 64; i++)\n state.enc(cdata, cdata.byteLength / 8);\n\n for (i = 0; i < BCRYPT_BLOCKS; i++) {\n out[4*i+3] = cdata[i] >>> 24;\n out[4*i+2] = cdata[i] >>> 16;\n out[4*i+1] = cdata[i] >>> 8;\n out[4*i+0] = cdata[i];\n }\n};\n\nfunction bcrypt_pbkdf(pass, passlen, salt, saltlen, key, keylen, rounds) {\n var sha2pass = new Uint8Array(64),\n sha2salt = new Uint8Array(64),\n out = new Uint8Array(BCRYPT_HASHSIZE),\n tmpout = new Uint8Array(BCRYPT_HASHSIZE),\n countsalt = new Uint8Array(saltlen+4),\n i, j, amt, stride, dest, count,\n origkeylen = keylen;\n\n if (rounds < 1)\n return -1;\n if (passlen === 0 || saltlen === 0 || keylen === 0 ||\n keylen > (out.byteLength * out.byteLength) || saltlen > (1<<20))\n return -1;\n\n stride = Math.floor((keylen + out.byteLength - 1) / out.byteLength);\n amt = Math.floor((keylen + stride - 1) / stride);\n\n for (i = 0; i < saltlen; i++)\n countsalt[i] = salt[i];\n\n crypto_hash_sha512(sha2pass, pass, passlen);\n\n for (count = 1; keylen > 0; count++) {\n countsalt[saltlen+0] = count >>> 24;\n countsalt[saltlen+1] = count >>> 16;\n countsalt[saltlen+2] = count >>> 8;\n countsalt[saltlen+3] = count;\n\n crypto_hash_sha512(sha2salt, countsalt, saltlen + 4);\n bcrypt_hash(sha2pass, sha2salt, tmpout);\n for (i = out.byteLength; i--;)\n out[i] = tmpout[i];\n\n for (i = 1; i < rounds; i++) {\n crypto_hash_sha512(sha2salt, tmpout, tmpout.byteLength);\n bcrypt_hash(sha2pass, sha2salt, tmpout);\n for (j = 0; j < out.byteLength; j++)\n out[j] ^= tmpout[j];\n }\n\n amt = Math.min(amt, keylen);\n for (i = 0; i < amt; i++) {\n dest = i * stride + (count - 1);\n if (dest >= origkeylen)\n break;\n key[dest] = out[i];\n }\n keylen -= i;\n }\n\n return 0;\n};\n\nmodule.exports = {\n BLOCKS: BCRYPT_BLOCKS,\n HASHSIZE: BCRYPT_HASHSIZE,\n hash: bcrypt_hash,\n pbkdf: bcrypt_pbkdf\n};\n","/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.7.2\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o 0) {\n _drainQueueStep(queue);\n }\n}\n\nfunction _drainQueueStep(queue) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n}\n\nAsync.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n _drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context,\n enableAsyncHooks, disableAsyncHooks) {\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar es5 = _dereq_(\"./es5\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nvar deferUnhandledRejectionCheck;\n(function() {\n var promises = [];\n\n function unhandledRejectionCheck() {\n for (var i = 0; i < promises.length; ++i) {\n promises[i]._notifyUnhandledRejection();\n }\n unhandledRejectionClear();\n }\n\n function unhandledRejectionClear() {\n promises.length = 0;\n }\n\n deferUnhandledRejectionCheck = function(promise) {\n promises.push(promise);\n setTimeout(unhandledRejectionCheck, 1);\n };\n\n es5.defineProperty(Promise, \"_unhandledRejectionCheck\", {\n value: unhandledRejectionCheck\n });\n es5.defineProperty(Promise, \"_unhandledRejectionClear\", {\n value: unhandledRejectionClear\n });\n})();\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n deferUnhandledRejectionCheck(this);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var context = Promise._getContext();\n possiblyUnhandledRejection = util.contextBind(context, fn);\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var context = Promise._getContext();\n unhandledRejectionHandled = util.contextBind(context, fn);\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\n\nvar legacyHandlers = {\n unhandledrejection: {\n before: function() {\n var ret = util.global.onunhandledrejection;\n util.global.onunhandledrejection = null;\n return ret;\n },\n after: function(fn) {\n util.global.onunhandledrejection = fn;\n }\n },\n rejectionhandled: {\n before: function() {\n var ret = util.global.onrejectionhandled;\n util.global.onrejectionhandled = null;\n return ret;\n },\n after: function(fn) {\n util.global.onrejectionhandled = fn;\n }\n }\n};\n\nvar fireDomEvent = (function() {\n var dispatch = function(legacy, e) {\n if (legacy) {\n var fn;\n try {\n fn = legacy.before();\n return !util.global.dispatchEvent(e);\n } finally {\n legacy.after(fn);\n }\n } else {\n return !util.global.dispatchEvent(e);\n }\n };\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var eventData = {\n detail: event,\n cancelable: true\n };\n var domEvent = new CustomEvent(name, eventData);\n es5.defineProperty(\n domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(\n domEvent, \"reason\", {value: event.reason});\n\n return dispatch(legacyHandlers[name], domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var domEvent = new Event(name, {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(domEvent, \"reason\", {value: event.reason});\n return dispatch(legacyHandlers[name], domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name, false, true,\n event);\n return dispatch(legacyHandlers[name], domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n if (\"asyncHooks\" in opts && util.nodeSupportsAsyncResource) {\n var prev = config.asyncHooks;\n var cur = !!opts.asyncHooks;\n if (prev !== cur) {\n config.asyncHooks = cur;\n if (cur) {\n enableAsyncHooks();\n } else {\n disableAsyncHooks();\n }\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._dereferenceTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction longStackTracesDereferenceTrace() {\n this._trace = undefined;\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = (firstLineError.stack || \"\").split(\"\\n\");\n var lastStackLines = (lastLineError.stack || \"\").split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false,\n asyncHooks: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n asyncHooks: function() {\n return config.asyncHooks;\n },\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var context = Promise._getContext();\n holder.fn = util.contextBind(context, holder.fn);\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var context = Promise._getContext();\n this._callback = util.contextBind(context, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n if (util.isArray(promises)) {\n for (var i = 0; i < promises.length; ++i) {\n var maybePromise = promises[i];\n if (maybePromise instanceof Promise) {\n maybePromise.suppressUnhandledRejections();\n }\n }\n }\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\nutil.setReflectHandler(reflectHandler);\n\nvar getDomain = function() {\n var domain = process.domain;\n if (domain === undefined) {\n return null;\n }\n return domain;\n};\nvar getContextDefault = function() {\n return null;\n};\nvar getContextDomain = function() {\n return {\n domain: getDomain(),\n async: null\n };\n};\nvar AsyncResource = util.isNode && util.nodeSupportsAsyncResource ?\n _dereq_(\"async_hooks\").AsyncResource : null;\nvar getContextAsyncHooks = function() {\n return {\n domain: getDomain(),\n async: new AsyncResource(\"Bluebird::Promise\")\n };\n};\nvar getContext = util.isNode ? getContextDomain : getContextDefault;\nutil.notEnumerableProp(Promise, \"_getContext\", getContext);\nvar enableAsyncHooks = function() {\n getContext = getContextAsyncHooks;\n util.notEnumerableProp(Promise, \"_getContext\", getContextAsyncHooks);\n};\nvar disableAsyncHooks = function() {\n getContext = getContextDomain;\n util.notEnumerableProp(Promise, \"_getContext\", getContextDomain);\n};\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\n\nvar debug = _dereq_(\"./debuggability\")(Promise, Context,\n enableAsyncHooks, disableAsyncHooks);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n\n if (typeof fn !== \"function\") {\n throw new TypeError(\"The last argument to .catch() \" +\n \"must be a function, got \" + util.toString(fn));\n }\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var context = getContext();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: util.contextBind(context, handler),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise,\n receiver, context);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n var bitField = this._bitField;\n this._bitField = bitField |\n (((bitField & 536870912) >> 2) ^\n 134217728);\n};\n\nPromise.prototype._setNoAsyncGuarantee = function() {\n this._bitField = (this._bitField | 536870912) &\n (~134217728);\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n context\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 = util.contextBind(context, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 = util.contextBind(context, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n util.contextBind(context, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n util.contextBind(context, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(maybePromise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n this._dereferenceTrace();\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.toStringTag) {\n es5.defineProperty(Promise.prototype, Symbol.toStringTag, {\n get: function () {\n return \"Object\";\n }\n });\n}\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async);\nPromise.Promise = Promise;\nPromise.version = \"3.7.2\";\n_dereq_('./call_get.js')(Promise);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./any.js')(Promise);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./filter.js')(Promise, INTERNAL);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36,\"async_hooks\":undefined}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n values.suppressUnhandledRejections();\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var context = Promise._getContext();\n this._fn = util.contextBind(context, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined &&\n this._eachValues !== null &&\n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n for (var j = i; j < length; ++j) {\n var maybePromise = values[j];\n if (maybePromise instanceof Promise) {\n maybePromise.suppressUnhandledRejections();\n }\n }\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n\n if ((i & 127) === 0) {\n value._setNoAsyncGuarantee();\n }\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova)) &&\n (\"classList\" in document.documentElement)) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.allSettled = function (promises) {\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n function ic() {\n return typeof receiver.foo;\n }\n ic();\n ic();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj instanceof Error ||\n (obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if (classString(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nvar reflectHandler;\nfunction contextBind(ctx, cb) {\n if (ctx === null ||\n typeof cb !== \"function\" ||\n cb === reflectHandler) {\n return cb;\n }\n\n if (ctx.domain !== null) {\n cb = ctx.domain.bind(cb);\n }\n\n var async = ctx.async;\n if (async !== null) {\n var old = cb;\n cb = function() {\n var args = (new Array(2)).concat([].slice.call(arguments));;\n args[0] = old;\n args[1] = this;\n return async.runInAsyncScope.apply(async, args);\n };\n }\n return cb;\n}\n\nvar ret = {\n setReflectHandler: function(fn) {\n reflectHandler = fn;\n },\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n contextBind: contextBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version;\n if (process.versions && process.versions.node) {\n version = process.versions.node.split(\".\").map(Number);\n } else if (process.version) {\n version = process.version.split(\".\").map(Number);\n }\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\nret.nodeSupportsAsyncResource = ret.isNode && (function() {\n var supportsAsync = false;\n try {\n var res = _dereq_(\"async_hooks\").AsyncResource;\n supportsAsync = typeof res.prototype.runInAsyncScope === \"function\";\n } catch (e) {\n supportsAsync = false;\n }\n return supportsAsync;\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13,\"async_hooks\":undefined}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","module.exports = require('./browser/algorithms.json')\n","var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict';\n/* eslint camelcase: \"off\" */\n\nvar assert = require('assert');\n\nvar Zstream = require('pako/lib/zlib/zstream');\nvar zlib_deflate = require('pako/lib/zlib/deflate.js');\nvar zlib_inflate = require('pako/lib/zlib/inflate.js');\nvar constants = require('pako/lib/zlib/constants');\n\nfor (var key in constants) {\n exports[key] = constants[key];\n}\n\n// zlib modes\nexports.NONE = 0;\nexports.DEFLATE = 1;\nexports.INFLATE = 2;\nexports.GZIP = 3;\nexports.GUNZIP = 4;\nexports.DEFLATERAW = 5;\nexports.INFLATERAW = 6;\nexports.UNZIP = 7;\n\nvar GZIP_HEADER_ID1 = 0x1f;\nvar GZIP_HEADER_ID2 = 0x8b;\n\n/**\n * Emulate Node's zlib C++ layer for use by the JS layer in index.js\n */\nfunction Zlib(mode) {\n if (typeof mode !== 'number' || mode < exports.DEFLATE || mode > exports.UNZIP) {\n throw new TypeError('Bad argument');\n }\n\n this.dictionary = null;\n this.err = 0;\n this.flush = 0;\n this.init_done = false;\n this.level = 0;\n this.memLevel = 0;\n this.mode = mode;\n this.strategy = 0;\n this.windowBits = 0;\n this.write_in_progress = false;\n this.pending_close = false;\n this.gzip_id_bytes_read = 0;\n}\n\nZlib.prototype.close = function () {\n if (this.write_in_progress) {\n this.pending_close = true;\n return;\n }\n\n this.pending_close = false;\n\n assert(this.init_done, 'close before init');\n assert(this.mode <= exports.UNZIP);\n\n if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) {\n zlib_deflate.deflateEnd(this.strm);\n } else if (this.mode === exports.INFLATE || this.mode === exports.GUNZIP || this.mode === exports.INFLATERAW || this.mode === exports.UNZIP) {\n zlib_inflate.inflateEnd(this.strm);\n }\n\n this.mode = exports.NONE;\n\n this.dictionary = null;\n};\n\nZlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) {\n return this._write(true, flush, input, in_off, in_len, out, out_off, out_len);\n};\n\nZlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) {\n return this._write(false, flush, input, in_off, in_len, out, out_off, out_len);\n};\n\nZlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) {\n assert.equal(arguments.length, 8);\n\n assert(this.init_done, 'write before init');\n assert(this.mode !== exports.NONE, 'already finalized');\n assert.equal(false, this.write_in_progress, 'write already in progress');\n assert.equal(false, this.pending_close, 'close is pending');\n\n this.write_in_progress = true;\n\n assert.equal(false, flush === undefined, 'must provide flush value');\n\n this.write_in_progress = true;\n\n if (flush !== exports.Z_NO_FLUSH && flush !== exports.Z_PARTIAL_FLUSH && flush !== exports.Z_SYNC_FLUSH && flush !== exports.Z_FULL_FLUSH && flush !== exports.Z_FINISH && flush !== exports.Z_BLOCK) {\n throw new Error('Invalid flush value');\n }\n\n if (input == null) {\n input = Buffer.alloc(0);\n in_len = 0;\n in_off = 0;\n }\n\n this.strm.avail_in = in_len;\n this.strm.input = input;\n this.strm.next_in = in_off;\n this.strm.avail_out = out_len;\n this.strm.output = out;\n this.strm.next_out = out_off;\n this.flush = flush;\n\n if (!async) {\n // sync version\n this._process();\n\n if (this._checkError()) {\n return this._afterSync();\n }\n return;\n }\n\n // async version\n var self = this;\n process.nextTick(function () {\n self._process();\n self._after();\n });\n\n return this;\n};\n\nZlib.prototype._afterSync = function () {\n var avail_out = this.strm.avail_out;\n var avail_in = this.strm.avail_in;\n\n this.write_in_progress = false;\n\n return [avail_in, avail_out];\n};\n\nZlib.prototype._process = function () {\n var next_expected_header_byte = null;\n\n // If the avail_out is left at 0, then it means that it ran out\n // of room. If there was avail_out left over, then it means\n // that all of the input was consumed.\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.GZIP:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflate(this.strm, this.flush);\n break;\n case exports.UNZIP:\n if (this.strm.avail_in > 0) {\n next_expected_header_byte = this.strm.next_in;\n }\n\n switch (this.gzip_id_bytes_read) {\n case 0:\n if (next_expected_header_byte === null) {\n break;\n }\n\n if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) {\n this.gzip_id_bytes_read = 1;\n next_expected_header_byte++;\n\n if (this.strm.avail_in === 1) {\n // The only available byte was already read.\n break;\n }\n } else {\n this.mode = exports.INFLATE;\n break;\n }\n\n // fallthrough\n case 1:\n if (next_expected_header_byte === null) {\n break;\n }\n\n if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) {\n this.gzip_id_bytes_read = 2;\n this.mode = exports.GUNZIP;\n } else {\n // There is no actual difference between INFLATE and INFLATERAW\n // (after initialization).\n this.mode = exports.INFLATE;\n }\n\n break;\n default:\n throw new Error('invalid number of gzip magic number bytes read');\n }\n\n // fallthrough\n case exports.INFLATE:\n case exports.GUNZIP:\n case exports.INFLATERAW:\n this.err = zlib_inflate.inflate(this.strm, this.flush\n\n // If data was encoded with dictionary\n );if (this.err === exports.Z_NEED_DICT && this.dictionary) {\n // Load it\n this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary);\n if (this.err === exports.Z_OK) {\n // And try to decode again\n this.err = zlib_inflate.inflate(this.strm, this.flush);\n } else if (this.err === exports.Z_DATA_ERROR) {\n // Both inflateSetDictionary() and inflate() return Z_DATA_ERROR.\n // Make it possible for After() to tell a bad dictionary from bad\n // input.\n this.err = exports.Z_NEED_DICT;\n }\n }\n while (this.strm.avail_in > 0 && this.mode === exports.GUNZIP && this.err === exports.Z_STREAM_END && this.strm.next_in[0] !== 0x00) {\n // Bytes remain in input buffer. Perhaps this is another compressed\n // member in the same archive, or just trailing garbage.\n // Trailing zero bytes are okay, though, since they are frequently\n // used for padding.\n\n this.reset();\n this.err = zlib_inflate.inflate(this.strm, this.flush);\n }\n break;\n default:\n throw new Error('Unknown mode ' + this.mode);\n }\n};\n\nZlib.prototype._checkError = function () {\n // Acceptable error states depend on the type of zlib stream.\n switch (this.err) {\n case exports.Z_OK:\n case exports.Z_BUF_ERROR:\n if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) {\n this._error('unexpected end of file');\n return false;\n }\n break;\n case exports.Z_STREAM_END:\n // normal statuses, not fatal\n break;\n case exports.Z_NEED_DICT:\n if (this.dictionary == null) {\n this._error('Missing dictionary');\n } else {\n this._error('Bad dictionary');\n }\n return false;\n default:\n // something else.\n this._error('Zlib error');\n return false;\n }\n\n return true;\n};\n\nZlib.prototype._after = function () {\n if (!this._checkError()) {\n return;\n }\n\n var avail_out = this.strm.avail_out;\n var avail_in = this.strm.avail_in;\n\n this.write_in_progress = false;\n\n // call the write() cb\n this.callback(avail_in, avail_out);\n\n if (this.pending_close) {\n this.close();\n }\n};\n\nZlib.prototype._error = function (message) {\n if (this.strm.msg) {\n message = this.strm.msg;\n }\n this.onerror(message, this.err\n\n // no hope of rescue.\n );this.write_in_progress = false;\n if (this.pending_close) {\n this.close();\n }\n};\n\nZlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) {\n assert(arguments.length === 4 || arguments.length === 5, 'init(windowBits, level, memLevel, strategy, [dictionary])');\n\n assert(windowBits >= 8 && windowBits <= 15, 'invalid windowBits');\n assert(level >= -1 && level <= 9, 'invalid compression level');\n\n assert(memLevel >= 1 && memLevel <= 9, 'invalid memlevel');\n\n assert(strategy === exports.Z_FILTERED || strategy === exports.Z_HUFFMAN_ONLY || strategy === exports.Z_RLE || strategy === exports.Z_FIXED || strategy === exports.Z_DEFAULT_STRATEGY, 'invalid strategy');\n\n this._init(level, windowBits, memLevel, strategy, dictionary);\n this._setDictionary();\n};\n\nZlib.prototype.params = function () {\n throw new Error('deflateParams Not supported');\n};\n\nZlib.prototype.reset = function () {\n this._reset();\n this._setDictionary();\n};\n\nZlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) {\n this.level = level;\n this.windowBits = windowBits;\n this.memLevel = memLevel;\n this.strategy = strategy;\n\n this.flush = exports.Z_NO_FLUSH;\n\n this.err = exports.Z_OK;\n\n if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) {\n this.windowBits += 16;\n }\n\n if (this.mode === exports.UNZIP) {\n this.windowBits += 32;\n }\n\n if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) {\n this.windowBits = -1 * this.windowBits;\n }\n\n this.strm = new Zstream();\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.GZIP:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflateInit2(this.strm, this.level, exports.Z_DEFLATED, this.windowBits, this.memLevel, this.strategy);\n break;\n case exports.INFLATE:\n case exports.GUNZIP:\n case exports.INFLATERAW:\n case exports.UNZIP:\n this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits);\n break;\n default:\n throw new Error('Unknown mode ' + this.mode);\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Init error');\n }\n\n this.dictionary = dictionary;\n\n this.write_in_progress = false;\n this.init_done = true;\n};\n\nZlib.prototype._setDictionary = function () {\n if (this.dictionary == null) {\n return;\n }\n\n this.err = exports.Z_OK;\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary);\n break;\n default:\n break;\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Failed to set dictionary');\n }\n};\n\nZlib.prototype._reset = function () {\n this.err = exports.Z_OK;\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.DEFLATERAW:\n case exports.GZIP:\n this.err = zlib_deflate.deflateReset(this.strm);\n break;\n case exports.INFLATE:\n case exports.INFLATERAW:\n case exports.GUNZIP:\n this.err = zlib_inflate.inflateReset(this.strm);\n break;\n default:\n break;\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Failed to reset stream');\n }\n};\n\nexports.Zlib = Zlib;","'use strict';\n\nvar Buffer = require('buffer').Buffer;\nvar Transform = require('stream').Transform;\nvar binding = require('./binding');\nvar util = require('util');\nvar assert = require('assert').ok;\nvar kMaxLength = require('buffer').kMaxLength;\nvar kRangeErrorMessage = 'Cannot create final Buffer. It would be larger ' + 'than 0x' + kMaxLength.toString(16) + ' bytes';\n\n// zlib doesn't provide these, so kludge them in following the same\n// const naming scheme zlib uses.\nbinding.Z_MIN_WINDOWBITS = 8;\nbinding.Z_MAX_WINDOWBITS = 15;\nbinding.Z_DEFAULT_WINDOWBITS = 15;\n\n// fewer than 64 bytes per chunk is stupid.\n// technically it could work with as few as 8, but even 64 bytes\n// is absurdly low. Usually a MB or more is best.\nbinding.Z_MIN_CHUNK = 64;\nbinding.Z_MAX_CHUNK = Infinity;\nbinding.Z_DEFAULT_CHUNK = 16 * 1024;\n\nbinding.Z_MIN_MEMLEVEL = 1;\nbinding.Z_MAX_MEMLEVEL = 9;\nbinding.Z_DEFAULT_MEMLEVEL = 8;\n\nbinding.Z_MIN_LEVEL = -1;\nbinding.Z_MAX_LEVEL = 9;\nbinding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION;\n\n// expose all the zlib constants\nvar bkeys = Object.keys(binding);\nfor (var bk = 0; bk < bkeys.length; bk++) {\n var bkey = bkeys[bk];\n if (bkey.match(/^Z/)) {\n Object.defineProperty(exports, bkey, {\n enumerable: true, value: binding[bkey], writable: false\n });\n }\n}\n\n// translation table for return codes.\nvar codes = {\n Z_OK: binding.Z_OK,\n Z_STREAM_END: binding.Z_STREAM_END,\n Z_NEED_DICT: binding.Z_NEED_DICT,\n Z_ERRNO: binding.Z_ERRNO,\n Z_STREAM_ERROR: binding.Z_STREAM_ERROR,\n Z_DATA_ERROR: binding.Z_DATA_ERROR,\n Z_MEM_ERROR: binding.Z_MEM_ERROR,\n Z_BUF_ERROR: binding.Z_BUF_ERROR,\n Z_VERSION_ERROR: binding.Z_VERSION_ERROR\n};\n\nvar ckeys = Object.keys(codes);\nfor (var ck = 0; ck < ckeys.length; ck++) {\n var ckey = ckeys[ck];\n codes[codes[ckey]] = ckey;\n}\n\nObject.defineProperty(exports, 'codes', {\n enumerable: true, value: Object.freeze(codes), writable: false\n});\n\nexports.Deflate = Deflate;\nexports.Inflate = Inflate;\nexports.Gzip = Gzip;\nexports.Gunzip = Gunzip;\nexports.DeflateRaw = DeflateRaw;\nexports.InflateRaw = InflateRaw;\nexports.Unzip = Unzip;\n\nexports.createDeflate = function (o) {\n return new Deflate(o);\n};\n\nexports.createInflate = function (o) {\n return new Inflate(o);\n};\n\nexports.createDeflateRaw = function (o) {\n return new DeflateRaw(o);\n};\n\nexports.createInflateRaw = function (o) {\n return new InflateRaw(o);\n};\n\nexports.createGzip = function (o) {\n return new Gzip(o);\n};\n\nexports.createGunzip = function (o) {\n return new Gunzip(o);\n};\n\nexports.createUnzip = function (o) {\n return new Unzip(o);\n};\n\n// Convenience methods.\n// compress/decompress a string or buffer in one step.\nexports.deflate = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Deflate(opts), buffer, callback);\n};\n\nexports.deflateSync = function (buffer, opts) {\n return zlibBufferSync(new Deflate(opts), buffer);\n};\n\nexports.gzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Gzip(opts), buffer, callback);\n};\n\nexports.gzipSync = function (buffer, opts) {\n return zlibBufferSync(new Gzip(opts), buffer);\n};\n\nexports.deflateRaw = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new DeflateRaw(opts), buffer, callback);\n};\n\nexports.deflateRawSync = function (buffer, opts) {\n return zlibBufferSync(new DeflateRaw(opts), buffer);\n};\n\nexports.unzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Unzip(opts), buffer, callback);\n};\n\nexports.unzipSync = function (buffer, opts) {\n return zlibBufferSync(new Unzip(opts), buffer);\n};\n\nexports.inflate = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Inflate(opts), buffer, callback);\n};\n\nexports.inflateSync = function (buffer, opts) {\n return zlibBufferSync(new Inflate(opts), buffer);\n};\n\nexports.gunzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Gunzip(opts), buffer, callback);\n};\n\nexports.gunzipSync = function (buffer, opts) {\n return zlibBufferSync(new Gunzip(opts), buffer);\n};\n\nexports.inflateRaw = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new InflateRaw(opts), buffer, callback);\n};\n\nexports.inflateRawSync = function (buffer, opts) {\n return zlibBufferSync(new InflateRaw(opts), buffer);\n};\n\nfunction zlibBuffer(engine, buffer, callback) {\n var buffers = [];\n var nread = 0;\n\n engine.on('error', onError);\n engine.on('end', onEnd);\n\n engine.end(buffer);\n flow();\n\n function flow() {\n var chunk;\n while (null !== (chunk = engine.read())) {\n buffers.push(chunk);\n nread += chunk.length;\n }\n engine.once('readable', flow);\n }\n\n function onError(err) {\n engine.removeListener('end', onEnd);\n engine.removeListener('readable', flow);\n callback(err);\n }\n\n function onEnd() {\n var buf;\n var err = null;\n\n if (nread >= kMaxLength) {\n err = new RangeError(kRangeErrorMessage);\n } else {\n buf = Buffer.concat(buffers, nread);\n }\n\n buffers = [];\n engine.close();\n callback(err, buf);\n }\n}\n\nfunction zlibBufferSync(engine, buffer) {\n if (typeof buffer === 'string') buffer = Buffer.from(buffer);\n\n if (!Buffer.isBuffer(buffer)) throw new TypeError('Not a string or buffer');\n\n var flushFlag = engine._finishFlushFlag;\n\n return engine._processChunk(buffer, flushFlag);\n}\n\n// generic zlib\n// minimal 2-byte header\nfunction Deflate(opts) {\n if (!(this instanceof Deflate)) return new Deflate(opts);\n Zlib.call(this, opts, binding.DEFLATE);\n}\n\nfunction Inflate(opts) {\n if (!(this instanceof Inflate)) return new Inflate(opts);\n Zlib.call(this, opts, binding.INFLATE);\n}\n\n// gzip - bigger header, same deflate compression\nfunction Gzip(opts) {\n if (!(this instanceof Gzip)) return new Gzip(opts);\n Zlib.call(this, opts, binding.GZIP);\n}\n\nfunction Gunzip(opts) {\n if (!(this instanceof Gunzip)) return new Gunzip(opts);\n Zlib.call(this, opts, binding.GUNZIP);\n}\n\n// raw - no header\nfunction DeflateRaw(opts) {\n if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts);\n Zlib.call(this, opts, binding.DEFLATERAW);\n}\n\nfunction InflateRaw(opts) {\n if (!(this instanceof InflateRaw)) return new InflateRaw(opts);\n Zlib.call(this, opts, binding.INFLATERAW);\n}\n\n// auto-detect header.\nfunction Unzip(opts) {\n if (!(this instanceof Unzip)) return new Unzip(opts);\n Zlib.call(this, opts, binding.UNZIP);\n}\n\nfunction isValidFlushFlag(flag) {\n return flag === binding.Z_NO_FLUSH || flag === binding.Z_PARTIAL_FLUSH || flag === binding.Z_SYNC_FLUSH || flag === binding.Z_FULL_FLUSH || flag === binding.Z_FINISH || flag === binding.Z_BLOCK;\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\n\nfunction Zlib(opts, mode) {\n var _this = this;\n\n this._opts = opts = opts || {};\n this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK;\n\n Transform.call(this, opts);\n\n if (opts.flush && !isValidFlushFlag(opts.flush)) {\n throw new Error('Invalid flush flag: ' + opts.flush);\n }\n if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) {\n throw new Error('Invalid flush flag: ' + opts.finishFlush);\n }\n\n this._flushFlag = opts.flush || binding.Z_NO_FLUSH;\n this._finishFlushFlag = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : binding.Z_FINISH;\n\n if (opts.chunkSize) {\n if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) {\n throw new Error('Invalid chunk size: ' + opts.chunkSize);\n }\n }\n\n if (opts.windowBits) {\n if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) {\n throw new Error('Invalid windowBits: ' + opts.windowBits);\n }\n }\n\n if (opts.level) {\n if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) {\n throw new Error('Invalid compression level: ' + opts.level);\n }\n }\n\n if (opts.memLevel) {\n if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) {\n throw new Error('Invalid memLevel: ' + opts.memLevel);\n }\n }\n\n if (opts.strategy) {\n if (opts.strategy != exports.Z_FILTERED && opts.strategy != exports.Z_HUFFMAN_ONLY && opts.strategy != exports.Z_RLE && opts.strategy != exports.Z_FIXED && opts.strategy != exports.Z_DEFAULT_STRATEGY) {\n throw new Error('Invalid strategy: ' + opts.strategy);\n }\n }\n\n if (opts.dictionary) {\n if (!Buffer.isBuffer(opts.dictionary)) {\n throw new Error('Invalid dictionary: it should be a Buffer instance');\n }\n }\n\n this._handle = new binding.Zlib(mode);\n\n var self = this;\n this._hadError = false;\n this._handle.onerror = function (message, errno) {\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n _close(self);\n self._hadError = true;\n\n var error = new Error(message);\n error.errno = errno;\n error.code = exports.codes[errno];\n self.emit('error', error);\n };\n\n var level = exports.Z_DEFAULT_COMPRESSION;\n if (typeof opts.level === 'number') level = opts.level;\n\n var strategy = exports.Z_DEFAULT_STRATEGY;\n if (typeof opts.strategy === 'number') strategy = opts.strategy;\n\n this._handle.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, level, opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, strategy, opts.dictionary);\n\n this._buffer = Buffer.allocUnsafe(this._chunkSize);\n this._offset = 0;\n this._level = level;\n this._strategy = strategy;\n\n this.once('end', this.close);\n\n Object.defineProperty(this, '_closed', {\n get: function () {\n return !_this._handle;\n },\n configurable: true,\n enumerable: true\n });\n}\n\nutil.inherits(Zlib, Transform);\n\nZlib.prototype.params = function (level, strategy, callback) {\n if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) {\n throw new RangeError('Invalid compression level: ' + level);\n }\n if (strategy != exports.Z_FILTERED && strategy != exports.Z_HUFFMAN_ONLY && strategy != exports.Z_RLE && strategy != exports.Z_FIXED && strategy != exports.Z_DEFAULT_STRATEGY) {\n throw new TypeError('Invalid strategy: ' + strategy);\n }\n\n if (this._level !== level || this._strategy !== strategy) {\n var self = this;\n this.flush(binding.Z_SYNC_FLUSH, function () {\n assert(self._handle, 'zlib binding closed');\n self._handle.params(level, strategy);\n if (!self._hadError) {\n self._level = level;\n self._strategy = strategy;\n if (callback) callback();\n }\n });\n } else {\n process.nextTick(callback);\n }\n};\n\nZlib.prototype.reset = function () {\n assert(this._handle, 'zlib binding closed');\n return this._handle.reset();\n};\n\n// This is the _flush function called by the transform class,\n// internally, when the last chunk has been written.\nZlib.prototype._flush = function (callback) {\n this._transform(Buffer.alloc(0), '', callback);\n};\n\nZlib.prototype.flush = function (kind, callback) {\n var _this2 = this;\n\n var ws = this._writableState;\n\n if (typeof kind === 'function' || kind === undefined && !callback) {\n callback = kind;\n kind = binding.Z_FULL_FLUSH;\n }\n\n if (ws.ended) {\n if (callback) process.nextTick(callback);\n } else if (ws.ending) {\n if (callback) this.once('end', callback);\n } else if (ws.needDrain) {\n if (callback) {\n this.once('drain', function () {\n return _this2.flush(kind, callback);\n });\n }\n } else {\n this._flushFlag = kind;\n this.write(Buffer.alloc(0), '', callback);\n }\n};\n\nZlib.prototype.close = function (callback) {\n _close(this, callback);\n process.nextTick(emitCloseNT, this);\n};\n\nfunction _close(engine, callback) {\n if (callback) process.nextTick(callback);\n\n // Caller may invoke .close after a zlib error (which will null _handle).\n if (!engine._handle) return;\n\n engine._handle.close();\n engine._handle = null;\n}\n\nfunction emitCloseNT(self) {\n self.emit('close');\n}\n\nZlib.prototype._transform = function (chunk, encoding, cb) {\n var flushFlag;\n var ws = this._writableState;\n var ending = ws.ending || ws.ended;\n var last = ending && (!chunk || ws.length === chunk.length);\n\n if (chunk !== null && !Buffer.isBuffer(chunk)) return cb(new Error('invalid input'));\n\n if (!this._handle) return cb(new Error('zlib binding closed'));\n\n // If it's the last chunk, or a final flush, we use the Z_FINISH flush flag\n // (or whatever flag was provided using opts.finishFlush).\n // If it's explicitly flushing at some other time, then we use\n // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression\n // goodness.\n if (last) flushFlag = this._finishFlushFlag;else {\n flushFlag = this._flushFlag;\n // once we've flushed the last of the queue, stop flushing and\n // go back to the normal behavior.\n if (chunk.length >= ws.length) {\n this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH;\n }\n }\n\n this._processChunk(chunk, flushFlag, cb);\n};\n\nZlib.prototype._processChunk = function (chunk, flushFlag, cb) {\n var availInBefore = chunk && chunk.length;\n var availOutBefore = this._chunkSize - this._offset;\n var inOff = 0;\n\n var self = this;\n\n var async = typeof cb === 'function';\n\n if (!async) {\n var buffers = [];\n var nread = 0;\n\n var error;\n this.on('error', function (er) {\n error = er;\n });\n\n assert(this._handle, 'zlib binding closed');\n do {\n var res = this._handle.writeSync(flushFlag, chunk, // in\n inOff, // in_off\n availInBefore, // in_len\n this._buffer, // out\n this._offset, //out_off\n availOutBefore); // out_len\n } while (!this._hadError && callback(res[0], res[1]));\n\n if (this._hadError) {\n throw error;\n }\n\n if (nread >= kMaxLength) {\n _close(this);\n throw new RangeError(kRangeErrorMessage);\n }\n\n var buf = Buffer.concat(buffers, nread);\n _close(this);\n\n return buf;\n }\n\n assert(this._handle, 'zlib binding closed');\n var req = this._handle.write(flushFlag, chunk, // in\n inOff, // in_off\n availInBefore, // in_len\n this._buffer, // out\n this._offset, //out_off\n availOutBefore); // out_len\n\n req.buffer = chunk;\n req.callback = callback;\n\n function callback(availInAfter, availOutAfter) {\n // When the callback is used in an async write, the callback's\n // context is the `req` object that was created. The req object\n // is === this._handle, and that's why it's important to null\n // out the values after they are done being used. `this._handle`\n // can stay in memory longer than the callback and buffer are needed.\n if (this) {\n this.buffer = null;\n this.callback = null;\n }\n\n if (self._hadError) return;\n\n var have = availOutBefore - availOutAfter;\n assert(have >= 0, 'have should not go down');\n\n if (have > 0) {\n var out = self._buffer.slice(self._offset, self._offset + have);\n self._offset += have;\n // serve some output to the consumer.\n if (async) {\n self.push(out);\n } else {\n buffers.push(out);\n nread += out.length;\n }\n }\n\n // exhausted the output buffer, or used all the input create a new one.\n if (availOutAfter === 0 || self._offset >= self._chunkSize) {\n availOutBefore = self._chunkSize;\n self._offset = 0;\n self._buffer = Buffer.allocUnsafe(self._chunkSize);\n }\n\n if (availOutAfter === 0) {\n // Not actually done. Need to reprocess.\n // Also, update the availInBefore to the availInAfter value,\n // so that if we have to hit it a third (fourth, etc.) time,\n // it'll have the correct byte counts.\n inOff += availInBefore - availInAfter;\n availInBefore = availInAfter;\n\n if (!async) return true;\n\n var newReq = self._handle.write(flushFlag, chunk, inOff, availInBefore, self._buffer, self._offset, self._chunkSize);\n newReq.callback = callback; // this same function\n newReq.buffer = chunk;\n return;\n }\n\n if (!async) return false;\n\n // finished with the chunk.\n cb();\n }\n};\n\nutil.inherits(Deflate, Zlib);\nutil.inherits(Inflate, Zlib);\nutil.inherits(Gzip, Zlib);\nutil.inherits(Gunzip, Zlib);\nutil.inherits(DeflateRaw, Zlib);\nutil.inherits(InflateRaw, Zlib);\nutil.inherits(Unzip, Zlib);","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","function Caseless (dict) {\n this.dict = dict || {}\n}\nCaseless.prototype.set = function (name, value, clobber) {\n if (typeof name === 'object') {\n for (var i in name) {\n this.set(i, name[i], value)\n }\n } else {\n if (typeof clobber === 'undefined') clobber = true\n var has = this.has(name)\n\n if (!clobber && has) this.dict[has] = this.dict[has] + ',' + value\n else this.dict[has || name] = value\n return has\n }\n}\nCaseless.prototype.has = function (name) {\n var keys = Object.keys(this.dict)\n , name = name.toLowerCase()\n ;\n for (var i=0;i 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe=true) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe=true) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar supportsDescriptors = origDefineProperty && hasPropertyDescriptors;\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value; // eslint-disable-line no-param-reassign\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","var Stream = require('stream').Stream;\nvar util = require('util');\n\nmodule.exports = DelayedStream;\nfunction DelayedStream() {\n this.source = null;\n this.dataSize = 0;\n this.maxDataSize = 1024 * 1024;\n this.pauseStream = true;\n\n this._maxDataSizeExceeded = false;\n this._released = false;\n this._bufferedEvents = [];\n}\nutil.inherits(DelayedStream, Stream);\n\nDelayedStream.create = function(source, options) {\n var delayedStream = new this();\n\n options = options || {};\n for (var option in options) {\n delayedStream[option] = options[option];\n }\n\n delayedStream.source = source;\n\n var realEmit = source.emit;\n source.emit = function() {\n delayedStream._handleEmit(arguments);\n return realEmit.apply(source, arguments);\n };\n\n source.on('error', function() {});\n if (delayedStream.pauseStream) {\n source.pause();\n }\n\n return delayedStream;\n};\n\nObject.defineProperty(DelayedStream.prototype, 'readable', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this.source.readable;\n }\n});\n\nDelayedStream.prototype.setEncoding = function() {\n return this.source.setEncoding.apply(this.source, arguments);\n};\n\nDelayedStream.prototype.resume = function() {\n if (!this._released) {\n this.release();\n }\n\n this.source.resume();\n};\n\nDelayedStream.prototype.pause = function() {\n this.source.pause();\n};\n\nDelayedStream.prototype.release = function() {\n this._released = true;\n\n this._bufferedEvents.forEach(function(args) {\n this.emit.apply(this, args);\n }.bind(this));\n this._bufferedEvents = [];\n};\n\nDelayedStream.prototype.pipe = function() {\n var r = Stream.prototype.pipe.apply(this, arguments);\n this.resume();\n return r;\n};\n\nDelayedStream.prototype._handleEmit = function(args) {\n if (this._released) {\n this.emit.apply(this, args);\n return;\n }\n\n if (args[0] === 'data') {\n this.dataSize += args[1].length;\n this._checkIfMaxDataSizeExceeded();\n }\n\n this._bufferedEvents.push(args);\n};\n\nDelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {\n if (this._maxDataSizeExceeded) {\n return;\n }\n\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n this._maxDataSizeExceeded = true;\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'\n this.emit('error', new Error(message));\n};\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var crypto = require(\"crypto\");\nvar BigInteger = require(\"jsbn\").BigInteger;\nvar ECPointFp = require(\"./lib/ec.js\").ECPointFp;\nvar Buffer = require(\"safer-buffer\").Buffer;\nexports.ECCurves = require(\"./lib/sec.js\");\n\n// zero prepad\nfunction unstupid(hex,len)\n{\n\treturn (hex.length >= len) ? hex : unstupid(\"0\"+hex,len);\n}\n\nexports.ECKey = function(curve, key, isPublic)\n{\n var priv;\n\tvar c = curve();\n\tvar n = c.getN();\n var bytes = Math.floor(n.bitLength()/8);\n\n if(key)\n {\n if(isPublic)\n {\n var curve = c.getCurve();\n// var x = key.slice(1,bytes+1); // skip the 04 for uncompressed format\n// var y = key.slice(bytes+1);\n// this.P = new ECPointFp(curve,\n// curve.fromBigInteger(new BigInteger(x.toString(\"hex\"), 16)),\n// curve.fromBigInteger(new BigInteger(y.toString(\"hex\"), 16))); \n this.P = curve.decodePointHex(key.toString(\"hex\"));\n }else{\n if(key.length != bytes) return false;\n priv = new BigInteger(key.toString(\"hex\"), 16); \n }\n }else{\n var n1 = n.subtract(BigInteger.ONE);\n var r = new BigInteger(crypto.randomBytes(n.bitLength()));\n priv = r.mod(n1).add(BigInteger.ONE);\n this.P = c.getG().multiply(priv);\n }\n if(this.P)\n {\n// var pubhex = unstupid(this.P.getX().toBigInteger().toString(16),bytes*2)+unstupid(this.P.getY().toBigInteger().toString(16),bytes*2);\n// this.PublicKey = Buffer.from(\"04\"+pubhex,\"hex\");\n this.PublicKey = Buffer.from(c.getCurve().encodeCompressedPointHex(this.P),\"hex\");\n }\n if(priv)\n {\n this.PrivateKey = Buffer.from(unstupid(priv.toString(16),bytes*2),\"hex\");\n this.deriveSharedSecret = function(key)\n {\n if(!key || !key.P) return false;\n var S = key.P.multiply(priv);\n return Buffer.from(unstupid(S.getX().toBigInteger().toString(16),bytes*2),\"hex\");\n } \n }\n}\n\n","// Basic Javascript Elliptic Curve implementation\n// Ported loosely from BouncyCastle's Java EC code\n// Only Fp curves implemented for now\n\n// Requires jsbn.js and jsbn2.js\nvar BigInteger = require('jsbn').BigInteger\nvar Barrett = BigInteger.prototype.Barrett\n\n// ----------------\n// ECFieldElementFp\n\n// constructor\nfunction ECFieldElementFp(q,x) {\n this.x = x;\n // TODO if(x.compareTo(q) >= 0) error\n this.q = q;\n}\n\nfunction feFpEquals(other) {\n if(other == this) return true;\n return (this.q.equals(other.q) && this.x.equals(other.x));\n}\n\nfunction feFpToBigInteger() {\n return this.x;\n}\n\nfunction feFpNegate() {\n return new ECFieldElementFp(this.q, this.x.negate().mod(this.q));\n}\n\nfunction feFpAdd(b) {\n return new ECFieldElementFp(this.q, this.x.add(b.toBigInteger()).mod(this.q));\n}\n\nfunction feFpSubtract(b) {\n return new ECFieldElementFp(this.q, this.x.subtract(b.toBigInteger()).mod(this.q));\n}\n\nfunction feFpMultiply(b) {\n return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger()).mod(this.q));\n}\n\nfunction feFpSquare() {\n return new ECFieldElementFp(this.q, this.x.square().mod(this.q));\n}\n\nfunction feFpDivide(b) {\n return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger().modInverse(this.q)).mod(this.q));\n}\n\nECFieldElementFp.prototype.equals = feFpEquals;\nECFieldElementFp.prototype.toBigInteger = feFpToBigInteger;\nECFieldElementFp.prototype.negate = feFpNegate;\nECFieldElementFp.prototype.add = feFpAdd;\nECFieldElementFp.prototype.subtract = feFpSubtract;\nECFieldElementFp.prototype.multiply = feFpMultiply;\nECFieldElementFp.prototype.square = feFpSquare;\nECFieldElementFp.prototype.divide = feFpDivide;\n\n// ----------------\n// ECPointFp\n\n// constructor\nfunction ECPointFp(curve,x,y,z) {\n this.curve = curve;\n this.x = x;\n this.y = y;\n // Projective coordinates: either zinv == null or z * zinv == 1\n // z and zinv are just BigIntegers, not fieldElements\n if(z == null) {\n this.z = BigInteger.ONE;\n }\n else {\n this.z = z;\n }\n this.zinv = null;\n //TODO: compression flag\n}\n\nfunction pointFpGetX() {\n if(this.zinv == null) {\n this.zinv = this.z.modInverse(this.curve.q);\n }\n var r = this.x.toBigInteger().multiply(this.zinv);\n this.curve.reduce(r);\n return this.curve.fromBigInteger(r);\n}\n\nfunction pointFpGetY() {\n if(this.zinv == null) {\n this.zinv = this.z.modInverse(this.curve.q);\n }\n var r = this.y.toBigInteger().multiply(this.zinv);\n this.curve.reduce(r);\n return this.curve.fromBigInteger(r);\n}\n\nfunction pointFpEquals(other) {\n if(other == this) return true;\n if(this.isInfinity()) return other.isInfinity();\n if(other.isInfinity()) return this.isInfinity();\n var u, v;\n // u = Y2 * Z1 - Y1 * Z2\n u = other.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(other.z)).mod(this.curve.q);\n if(!u.equals(BigInteger.ZERO)) return false;\n // v = X2 * Z1 - X1 * Z2\n v = other.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(other.z)).mod(this.curve.q);\n return v.equals(BigInteger.ZERO);\n}\n\nfunction pointFpIsInfinity() {\n if((this.x == null) && (this.y == null)) return true;\n return this.z.equals(BigInteger.ZERO) && !this.y.toBigInteger().equals(BigInteger.ZERO);\n}\n\nfunction pointFpNegate() {\n return new ECPointFp(this.curve, this.x, this.y.negate(), this.z);\n}\n\nfunction pointFpAdd(b) {\n if(this.isInfinity()) return b;\n if(b.isInfinity()) return this;\n\n // u = Y2 * Z1 - Y1 * Z2\n var u = b.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(b.z)).mod(this.curve.q);\n // v = X2 * Z1 - X1 * Z2\n var v = b.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(b.z)).mod(this.curve.q);\n\n if(BigInteger.ZERO.equals(v)) {\n if(BigInteger.ZERO.equals(u)) {\n return this.twice(); // this == b, so double\n }\n\treturn this.curve.getInfinity(); // this = -b, so infinity\n }\n\n var THREE = new BigInteger(\"3\");\n var x1 = this.x.toBigInteger();\n var y1 = this.y.toBigInteger();\n var x2 = b.x.toBigInteger();\n var y2 = b.y.toBigInteger();\n\n var v2 = v.square();\n var v3 = v2.multiply(v);\n var x1v2 = x1.multiply(v2);\n var zu2 = u.square().multiply(this.z);\n\n // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)\n var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.q);\n // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3\n var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.q);\n // z3 = v^3 * z1 * z2\n var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.q);\n\n return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3);\n}\n\nfunction pointFpTwice() {\n if(this.isInfinity()) return this;\n if(this.y.toBigInteger().signum() == 0) return this.curve.getInfinity();\n\n // TODO: optimized handling of constants\n var THREE = new BigInteger(\"3\");\n var x1 = this.x.toBigInteger();\n var y1 = this.y.toBigInteger();\n\n var y1z1 = y1.multiply(this.z);\n var y1sqz1 = y1z1.multiply(y1).mod(this.curve.q);\n var a = this.curve.a.toBigInteger();\n\n // w = 3 * x1^2 + a * z1^2\n var w = x1.square().multiply(THREE);\n if(!BigInteger.ZERO.equals(a)) {\n w = w.add(this.z.square().multiply(a));\n }\n w = w.mod(this.curve.q);\n //this.curve.reduce(w);\n // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)\n var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.q);\n // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3\n var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.square().multiply(w)).mod(this.curve.q);\n // z3 = 8 * (y1 * z1)^3\n var z3 = y1z1.square().multiply(y1z1).shiftLeft(3).mod(this.curve.q);\n\n return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3);\n}\n\n// Simple NAF (Non-Adjacent Form) multiplication algorithm\n// TODO: modularize the multiplication algorithm\nfunction pointFpMultiply(k) {\n if(this.isInfinity()) return this;\n if(k.signum() == 0) return this.curve.getInfinity();\n\n var e = k;\n var h = e.multiply(new BigInteger(\"3\"));\n\n var neg = this.negate();\n var R = this;\n\n var i;\n for(i = h.bitLength() - 2; i > 0; --i) {\n\tR = R.twice();\n\n\tvar hBit = h.testBit(i);\n\tvar eBit = e.testBit(i);\n\n\tif (hBit != eBit) {\n\t R = R.add(hBit ? this : neg);\n\t}\n }\n\n return R;\n}\n\n// Compute this*j + x*k (simultaneous multiplication)\nfunction pointFpMultiplyTwo(j,x,k) {\n var i;\n if(j.bitLength() > k.bitLength())\n i = j.bitLength() - 1;\n else\n i = k.bitLength() - 1;\n\n var R = this.curve.getInfinity();\n var both = this.add(x);\n while(i >= 0) {\n R = R.twice();\n if(j.testBit(i)) {\n if(k.testBit(i)) {\n R = R.add(both);\n }\n else {\n R = R.add(this);\n }\n }\n else {\n if(k.testBit(i)) {\n R = R.add(x);\n }\n }\n --i;\n }\n\n return R;\n}\n\nECPointFp.prototype.getX = pointFpGetX;\nECPointFp.prototype.getY = pointFpGetY;\nECPointFp.prototype.equals = pointFpEquals;\nECPointFp.prototype.isInfinity = pointFpIsInfinity;\nECPointFp.prototype.negate = pointFpNegate;\nECPointFp.prototype.add = pointFpAdd;\nECPointFp.prototype.twice = pointFpTwice;\nECPointFp.prototype.multiply = pointFpMultiply;\nECPointFp.prototype.multiplyTwo = pointFpMultiplyTwo;\n\n// ----------------\n// ECCurveFp\n\n// constructor\nfunction ECCurveFp(q,a,b) {\n this.q = q;\n this.a = this.fromBigInteger(a);\n this.b = this.fromBigInteger(b);\n this.infinity = new ECPointFp(this, null, null);\n this.reducer = new Barrett(this.q);\n}\n\nfunction curveFpGetQ() {\n return this.q;\n}\n\nfunction curveFpGetA() {\n return this.a;\n}\n\nfunction curveFpGetB() {\n return this.b;\n}\n\nfunction curveFpEquals(other) {\n if(other == this) return true;\n return(this.q.equals(other.q) && this.a.equals(other.a) && this.b.equals(other.b));\n}\n\nfunction curveFpGetInfinity() {\n return this.infinity;\n}\n\nfunction curveFpFromBigInteger(x) {\n return new ECFieldElementFp(this.q, x);\n}\n\nfunction curveReduce(x) {\n this.reducer.reduce(x);\n}\n\n// for now, work with hex strings because they're easier in JS\nfunction curveFpDecodePointHex(s) {\n switch(parseInt(s.substr(0,2), 16)) { // first byte\n case 0:\n\treturn this.infinity;\n case 2:\n case 3:\n\t// point compression not supported yet\n\treturn null;\n case 4:\n case 6:\n case 7:\n\tvar len = (s.length - 2) / 2;\n\tvar xHex = s.substr(2, len);\n\tvar yHex = s.substr(len+2, len);\n\n\treturn new ECPointFp(this,\n\t\t\t this.fromBigInteger(new BigInteger(xHex, 16)),\n\t\t\t this.fromBigInteger(new BigInteger(yHex, 16)));\n\n default: // unsupported\n\treturn null;\n }\n}\n\nfunction curveFpEncodePointHex(p) {\n\tif (p.isInfinity()) return \"00\";\n\tvar xHex = p.getX().toBigInteger().toString(16);\n\tvar yHex = p.getY().toBigInteger().toString(16);\n\tvar oLen = this.getQ().toString(16).length;\n\tif ((oLen % 2) != 0) oLen++;\n\twhile (xHex.length < oLen) {\n\t\txHex = \"0\" + xHex;\n\t}\n\twhile (yHex.length < oLen) {\n\t\tyHex = \"0\" + yHex;\n\t}\n\treturn \"04\" + xHex + yHex;\n}\n\nECCurveFp.prototype.getQ = curveFpGetQ;\nECCurveFp.prototype.getA = curveFpGetA;\nECCurveFp.prototype.getB = curveFpGetB;\nECCurveFp.prototype.equals = curveFpEquals;\nECCurveFp.prototype.getInfinity = curveFpGetInfinity;\nECCurveFp.prototype.fromBigInteger = curveFpFromBigInteger;\nECCurveFp.prototype.reduce = curveReduce;\n//ECCurveFp.prototype.decodePointHex = curveFpDecodePointHex;\nECCurveFp.prototype.encodePointHex = curveFpEncodePointHex;\n\n// from: https://github.com/kaielvin/jsbn-ec-point-compression\nECCurveFp.prototype.decodePointHex = function(s)\n{\n\tvar yIsEven;\n switch(parseInt(s.substr(0,2), 16)) { // first byte\n case 0:\n\treturn this.infinity;\n case 2:\n\tyIsEven = false;\n case 3:\n\tif(yIsEven == undefined) yIsEven = true;\n\tvar len = s.length - 2;\n\tvar xHex = s.substr(2, len);\n\tvar x = this.fromBigInteger(new BigInteger(xHex,16));\n\tvar alpha = x.multiply(x.square().add(this.getA())).add(this.getB());\n\tvar beta = alpha.sqrt();\n\n if (beta == null) throw \"Invalid point compression\";\n\n var betaValue = beta.toBigInteger();\n if (betaValue.testBit(0) != yIsEven)\n {\n // Use the other root\n beta = this.fromBigInteger(this.getQ().subtract(betaValue));\n }\n return new ECPointFp(this,x,beta);\n case 4:\n case 6:\n case 7:\n\tvar len = (s.length - 2) / 2;\n\tvar xHex = s.substr(2, len);\n\tvar yHex = s.substr(len+2, len);\n\n\treturn new ECPointFp(this,\n\t\t\t this.fromBigInteger(new BigInteger(xHex, 16)),\n\t\t\t this.fromBigInteger(new BigInteger(yHex, 16)));\n\n default: // unsupported\n\treturn null;\n }\n}\nECCurveFp.prototype.encodeCompressedPointHex = function(p)\n{\n\tif (p.isInfinity()) return \"00\";\n\tvar xHex = p.getX().toBigInteger().toString(16);\n\tvar oLen = this.getQ().toString(16).length;\n\tif ((oLen % 2) != 0) oLen++;\n\twhile (xHex.length < oLen)\n\t\txHex = \"0\" + xHex;\n\tvar yPrefix;\n\tif(p.getY().toBigInteger().isEven()) yPrefix = \"02\";\n\telse yPrefix = \"03\";\n\n\treturn yPrefix + xHex;\n}\n\n\nECFieldElementFp.prototype.getR = function()\n{\n\tif(this.r != undefined) return this.r;\n\n this.r = null;\n var bitLength = this.q.bitLength();\n if (bitLength > 128)\n {\n var firstWord = this.q.shiftRight(bitLength - 64);\n if (firstWord.intValue() == -1)\n {\n this.r = BigInteger.ONE.shiftLeft(bitLength).subtract(this.q);\n }\n }\n return this.r;\n}\nECFieldElementFp.prototype.modMult = function(x1,x2)\n{\n return this.modReduce(x1.multiply(x2));\n}\nECFieldElementFp.prototype.modReduce = function(x)\n{\n if (this.getR() != null)\n {\n var qLen = q.bitLength();\n while (x.bitLength() > (qLen + 1))\n {\n var u = x.shiftRight(qLen);\n var v = x.subtract(u.shiftLeft(qLen));\n if (!this.getR().equals(BigInteger.ONE))\n {\n u = u.multiply(this.getR());\n }\n x = u.add(v); \n }\n while (x.compareTo(q) >= 0)\n {\n x = x.subtract(q);\n }\n }\n else\n {\n x = x.mod(q);\n }\n return x;\n}\nECFieldElementFp.prototype.sqrt = function()\n{\n if (!this.q.testBit(0)) throw \"unsupported\";\n\n // p mod 4 == 3\n if (this.q.testBit(1))\n {\n \tvar z = new ECFieldElementFp(this.q,this.x.modPow(this.q.shiftRight(2).add(BigInteger.ONE),this.q));\n \treturn z.square().equals(this) ? z : null;\n }\n\n // p mod 4 == 1\n var qMinusOne = this.q.subtract(BigInteger.ONE);\n\n var legendreExponent = qMinusOne.shiftRight(1);\n if (!(this.x.modPow(legendreExponent, this.q).equals(BigInteger.ONE)))\n {\n return null;\n }\n\n var u = qMinusOne.shiftRight(2);\n var k = u.shiftLeft(1).add(BigInteger.ONE);\n\n var Q = this.x;\n var fourQ = modDouble(modDouble(Q));\n\n var U, V;\n do\n {\n var P;\n do\n {\n P = new BigInteger(this.q.bitLength(), new SecureRandom());\n }\n while (P.compareTo(this.q) >= 0\n || !(P.multiply(P).subtract(fourQ).modPow(legendreExponent, this.q).equals(qMinusOne)));\n\n var result = this.lucasSequence(P, Q, k);\n U = result[0];\n V = result[1];\n\n if (this.modMult(V, V).equals(fourQ))\n {\n // Integer division by 2, mod q\n if (V.testBit(0))\n {\n V = V.add(q);\n }\n\n V = V.shiftRight(1);\n\n return new ECFieldElementFp(q,V);\n }\n }\n while (U.equals(BigInteger.ONE) || U.equals(qMinusOne));\n\n return null;\n}\nECFieldElementFp.prototype.lucasSequence = function(P,Q,k)\n{\n var n = k.bitLength();\n var s = k.getLowestSetBit();\n\n var Uh = BigInteger.ONE;\n var Vl = BigInteger.TWO;\n var Vh = P;\n var Ql = BigInteger.ONE;\n var Qh = BigInteger.ONE;\n\n for (var j = n - 1; j >= s + 1; --j)\n {\n Ql = this.modMult(Ql, Qh);\n\n if (k.testBit(j))\n {\n Qh = this.modMult(Ql, Q);\n Uh = this.modMult(Uh, Vh);\n Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql)));\n Vh = this.modReduce(Vh.multiply(Vh).subtract(Qh.shiftLeft(1)));\n }\n else\n {\n Qh = Ql;\n Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql));\n Vh = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql)));\n Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1)));\n }\n }\n\n Ql = this.modMult(Ql, Qh);\n Qh = this.modMult(Ql, Q);\n Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql));\n Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql)));\n Ql = this.modMult(Ql, Qh);\n\n for (var j = 1; j <= s; ++j)\n {\n Uh = this.modMult(Uh, Vl);\n Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1)));\n Ql = this.modMult(Ql, Ql);\n }\n\n return [ Uh, Vl ];\n}\n\nvar exports = {\n ECCurveFp: ECCurveFp,\n ECPointFp: ECPointFp,\n ECFieldElementFp: ECFieldElementFp\n}\n\nmodule.exports = exports\n","// Named EC curves\n\n// Requires ec.js, jsbn.js, and jsbn2.js\nvar BigInteger = require('jsbn').BigInteger\nvar ECCurveFp = require('./ec.js').ECCurveFp\n\n\n// ----------------\n// X9ECParameters\n\n// constructor\nfunction X9ECParameters(curve,g,n,h) {\n this.curve = curve;\n this.g = g;\n this.n = n;\n this.h = h;\n}\n\nfunction x9getCurve() {\n return this.curve;\n}\n\nfunction x9getG() {\n return this.g;\n}\n\nfunction x9getN() {\n return this.n;\n}\n\nfunction x9getH() {\n return this.h;\n}\n\nX9ECParameters.prototype.getCurve = x9getCurve;\nX9ECParameters.prototype.getG = x9getG;\nX9ECParameters.prototype.getN = x9getN;\nX9ECParameters.prototype.getH = x9getH;\n\n// ----------------\n// SECNamedCurves\n\nfunction fromHex(s) { return new BigInteger(s, 16); }\n\nfunction secp128r1() {\n // p = 2^128 - 2^97 - 1\n var p = fromHex(\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF\");\n var a = fromHex(\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC\");\n var b = fromHex(\"E87579C11079F43DD824993C2CEE5ED3\");\n //byte[] S = Hex.decode(\"000E0D4D696E6768756151750CC03A4473D03679\");\n var n = fromHex(\"FFFFFFFE0000000075A30D1B9038A115\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"161FF7528B899B2D0C28607CA52C5B86\"\n\t\t+ \"CF5AC8395BAFEB13C02DA292DDED7A83\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp160k1() {\n // p = 2^160 - 2^32 - 2^14 - 2^12 - 2^9 - 2^8 - 2^7 - 2^3 - 2^2 - 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73\");\n var a = BigInteger.ZERO;\n var b = fromHex(\"7\");\n //byte[] S = null;\n var n = fromHex(\"0100000000000000000001B8FA16DFAB9ACA16B6B3\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"3B4C382CE37AA192A4019E763036F4F5DD4D7EBB\"\n + \"938CF935318FDCED6BC28286531733C3F03C4FEE\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp160r1() {\n // p = 2^160 - 2^31 - 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF\");\n var a = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC\");\n var b = fromHex(\"1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45\");\n //byte[] S = Hex.decode(\"1053CDE42C14D696E67687561517533BF3F83345\");\n var n = fromHex(\"0100000000000000000001F4C8F927AED3CA752257\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n\t\t+ \"4A96B5688EF573284664698968C38BB913CBFC82\"\n\t\t+ \"23A628553168947D59DCC912042351377AC5FB32\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp192k1() {\n // p = 2^192 - 2^32 - 2^12 - 2^8 - 2^7 - 2^6 - 2^3 - 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37\");\n var a = BigInteger.ZERO;\n var b = fromHex(\"3\");\n //byte[] S = null;\n var n = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D\"\n + \"9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp192r1() {\n // p = 2^192 - 2^64 - 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF\");\n var a = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC\");\n var b = fromHex(\"64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1\");\n //byte[] S = Hex.decode(\"3045AE6FC8422F64ED579528D38120EAE12196D5\");\n var n = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012\"\n + \"07192B95FFC8DA78631011ED6B24CDD573F977A11E794811\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp224r1() {\n // p = 2^224 - 2^96 + 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001\");\n var a = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE\");\n var b = fromHex(\"B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4\");\n //byte[] S = Hex.decode(\"BD71344799D5C7FCDC45B59FA3B9AB8F6A948BC5\");\n var n = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21\"\n + \"BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp256r1() {\n // p = 2^224 (2^32 - 1) + 2^192 + 2^96 - 1\n var p = fromHex(\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF\");\n var a = fromHex(\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC\");\n var b = fromHex(\"5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B\");\n //byte[] S = Hex.decode(\"C49D360886E704936A6678E1139D26B7819F7E90\");\n var n = fromHex(\"FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296\"\n\t\t+ \"4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5\");\n return new X9ECParameters(curve, G, n, h);\n}\n\n// TODO: make this into a proper hashtable\nfunction getSECCurveByName(name) {\n if(name == \"secp128r1\") return secp128r1();\n if(name == \"secp160k1\") return secp160k1();\n if(name == \"secp160r1\") return secp160r1();\n if(name == \"secp192k1\") return secp192k1();\n if(name == \"secp192r1\") return secp192r1();\n if(name == \"secp224r1\") return secp224r1();\n if(name == \"secp256r1\") return secp256r1();\n return null;\n}\n\nmodule.exports = {\n \"secp128r1\":secp128r1,\n \"secp160k1\":secp160k1,\n \"secp160r1\":secp160r1,\n \"secp192k1\":secp192k1,\n \"secp192r1\":secp192r1,\n \"secp224r1\":secp224r1,\n \"secp256r1\":secp256r1\n}\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","/**\n * Code refactored from Mozilla Developer Network:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n */\n\n'use strict';\n\nfunction assign(target, firstSource) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n}\n\nfunction polyfill() {\n if (!Object.assign) {\n Object.defineProperty(Object, 'assign', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: assign\n });\n }\n}\n\nmodule.exports = {\n assign: assign,\n polyfill: polyfill\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","/*\n * extsprintf.js: extended POSIX-style sprintf\n */\n\nvar mod_assert = require('assert');\nvar mod_util = require('util');\n\n/*\n * Public interface\n */\nexports.sprintf = jsSprintf;\nexports.printf = jsPrintf;\nexports.fprintf = jsFprintf;\n\n/*\n * Stripped down version of s[n]printf(3c). We make a best effort to throw an\n * exception when given a format string we don't understand, rather than\n * ignoring it, so that we won't break existing programs if/when we go implement\n * the rest of this.\n *\n * This implementation currently supports specifying\n *\t- field alignment ('-' flag),\n * \t- zero-pad ('0' flag)\n *\t- always show numeric sign ('+' flag),\n *\t- field width\n *\t- conversions for strings, decimal integers, and floats (numbers).\n *\t- argument size specifiers. These are all accepted but ignored, since\n *\t Javascript has no notion of the physical size of an argument.\n *\n * Everything else is currently unsupported, most notably precision, unsigned\n * numbers, non-decimal numbers, and characters.\n */\nfunction jsSprintf(fmt)\n{\n\tvar regex = [\n\t '([^%]*)',\t\t\t\t/* normal text */\n\t '%',\t\t\t\t/* start of format */\n\t '([\\'\\\\-+ #0]*?)',\t\t\t/* flags (optional) */\n\t '([1-9]\\\\d*)?',\t\t\t/* width (optional) */\n\t '(\\\\.([1-9]\\\\d*))?',\t\t/* precision (optional) */\n\t '[lhjztL]*?',\t\t\t/* length mods (ignored) */\n\t '([diouxXfFeEgGaAcCsSp%jr])'\t/* conversion */\n\t].join('');\n\n\tvar re = new RegExp(regex);\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\tvar flags, width, precision, conversion;\n\tvar left, pad, sign, arg, match;\n\tvar ret = '';\n\tvar argn = 1;\n\n\tmod_assert.equal('string', typeof (fmt));\n\n\twhile ((match = re.exec(fmt)) !== null) {\n\t\tret += match[1];\n\t\tfmt = fmt.substring(match[0].length);\n\n\t\tflags = match[2] || '';\n\t\twidth = match[3] || 0;\n\t\tprecision = match[4] || '';\n\t\tconversion = match[6];\n\t\tleft = false;\n\t\tsign = false;\n\t\tpad = ' ';\n\n\t\tif (conversion == '%') {\n\t\t\tret += '%';\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (args.length === 0)\n\t\t\tthrow (new Error('too few args to sprintf'));\n\n\t\targ = args.shift();\n\t\targn++;\n\n\t\tif (flags.match(/[\\' #]/))\n\t\t\tthrow (new Error(\n\t\t\t 'unsupported flags: ' + flags));\n\n\t\tif (precision.length > 0)\n\t\t\tthrow (new Error(\n\t\t\t 'non-zero precision not supported'));\n\n\t\tif (flags.match(/-/))\n\t\t\tleft = true;\n\n\t\tif (flags.match(/0/))\n\t\t\tpad = '0';\n\n\t\tif (flags.match(/\\+/))\n\t\t\tsign = true;\n\n\t\tswitch (conversion) {\n\t\tcase 's':\n\t\t\tif (arg === undefined || arg === null)\n\t\t\t\tthrow (new Error('argument ' + argn +\n\t\t\t\t ': attempted to print undefined or null ' +\n\t\t\t\t 'as a string'));\n\t\t\tret += doPad(pad, width, left, arg.toString());\n\t\t\tbreak;\n\n\t\tcase 'd':\n\t\t\targ = Math.floor(arg);\n\t\t\t/*jsl:fallthru*/\n\t\tcase 'f':\n\t\t\tsign = sign && arg > 0 ? '+' : '';\n\t\t\tret += sign + doPad(pad, width, left,\n\t\t\t arg.toString());\n\t\t\tbreak;\n\n\t\tcase 'x':\n\t\t\tret += doPad(pad, width, left, arg.toString(16));\n\t\t\tbreak;\n\n\t\tcase 'j': /* non-standard */\n\t\t\tif (width === 0)\n\t\t\t\twidth = 10;\n\t\t\tret += mod_util.inspect(arg, false, width);\n\t\t\tbreak;\n\n\t\tcase 'r': /* non-standard */\n\t\t\tret += dumpException(arg);\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow (new Error('unsupported conversion: ' +\n\t\t\t conversion));\n\t\t}\n\t}\n\n\tret += fmt;\n\treturn (ret);\n}\n\nfunction jsPrintf() {\n\tvar args = Array.prototype.slice.call(arguments);\n\targs.unshift(process.stdout);\n\tjsFprintf.apply(null, args);\n}\n\nfunction jsFprintf(stream) {\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\treturn (stream.write(jsSprintf.apply(this, args)));\n}\n\nfunction doPad(chr, width, left, str)\n{\n\tvar ret = str;\n\n\twhile (ret.length < width) {\n\t\tif (left)\n\t\t\tret += chr;\n\t\telse\n\t\t\tret = chr + ret;\n\t}\n\n\treturn (ret);\n}\n\n/*\n * This function dumps long stack traces for exceptions having a cause() method.\n * See node-verror for an example.\n */\nfunction dumpException(ex)\n{\n\tvar ret;\n\n\tif (!(ex instanceof Error))\n\t\tthrow (new Error(jsSprintf('invalid type for %%r: %j', ex)));\n\n\t/* Note that V8 prepends \"ex.stack\" with ex.toString(). */\n\tret = 'EXCEPTION: ' + ex.constructor.name + ': ' + ex.stack;\n\n\tif (ex.cause && typeof (ex.cause) === 'function') {\n\t\tvar cex = ex.cause();\n\t\tif (cex) {\n\t\t\tret += '\\nCaused by: ' + dumpException(cex);\n\t\t}\n\t}\n\n\treturn (ret);\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nmodule.exports = function (data, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (node) {\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n if (node === undefined) return;\n if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n if (typeof node !== 'object') return JSON.stringify(node);\n\n var i, out;\n if (Array.isArray(node)) {\n out = '[';\n for (i = 0; i < node.length; i++) {\n if (i) out += ',';\n out += stringify(node[i]) || 'null';\n }\n return out + ']';\n }\n\n if (node === null) return 'null';\n\n if (seen.indexOf(node) !== -1) {\n if (cycles) return JSON.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n\n var seenIndex = seen.push(node) - 1;\n var keys = Object.keys(node).sort(cmp && cmp(node));\n out = '';\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node[key]);\n\n if (!value) continue;\n if (out) out += ',';\n out += JSON.stringify(key) + ':' + value;\n }\n seen.splice(seenIndex, 1);\n return '{' + out + '}';\n })(data);\n};\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","module.exports = ForeverAgent\nForeverAgent.SSL = ForeverAgentSSL\n\nvar util = require('util')\n , Agent = require('http').Agent\n , net = require('net')\n , tls = require('tls')\n , AgentSSL = require('https').Agent\n \nfunction getConnectionName(host, port) { \n var name = ''\n if (typeof host === 'string') {\n name = host + ':' + port\n } else {\n // For node.js v012.0 and iojs-v1.5.1, host is an object. And any existing localAddress is part of the connection name.\n name = host.host + ':' + host.port + ':' + (host.localAddress ? (host.localAddress + ':') : ':')\n }\n return name\n} \n\nfunction ForeverAgent(options) {\n var self = this\n self.options = options || {}\n self.requests = {}\n self.sockets = {}\n self.freeSockets = {}\n self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets\n self.minSockets = self.options.minSockets || ForeverAgent.defaultMinSockets\n self.on('free', function(socket, host, port) {\n var name = getConnectionName(host, port)\n\n if (self.requests[name] && self.requests[name].length) {\n self.requests[name].shift().onSocket(socket)\n } else if (self.sockets[name].length < self.minSockets) {\n if (!self.freeSockets[name]) self.freeSockets[name] = []\n self.freeSockets[name].push(socket)\n \n // if an error happens while we don't use the socket anyway, meh, throw the socket away\n var onIdleError = function() {\n socket.destroy()\n }\n socket._onIdleError = onIdleError\n socket.on('error', onIdleError)\n } else {\n // If there are no pending requests just destroy the\n // socket and it will get removed from the pool. This\n // gets us out of timeout issues and allows us to\n // default to Connection:keep-alive.\n socket.destroy()\n }\n })\n\n}\nutil.inherits(ForeverAgent, Agent)\n\nForeverAgent.defaultMinSockets = 5\n\n\nForeverAgent.prototype.createConnection = net.createConnection\nForeverAgent.prototype.addRequestNoreuse = Agent.prototype.addRequest\nForeverAgent.prototype.addRequest = function(req, host, port) {\n var name = getConnectionName(host, port)\n \n if (typeof host !== 'string') {\n var options = host\n port = options.port\n host = options.host\n }\n\n if (this.freeSockets[name] && this.freeSockets[name].length > 0 && !req.useChunkedEncodingByDefault) {\n var idleSocket = this.freeSockets[name].pop()\n idleSocket.removeListener('error', idleSocket._onIdleError)\n delete idleSocket._onIdleError\n req._reusedSocket = true\n req.onSocket(idleSocket)\n } else {\n this.addRequestNoreuse(req, host, port)\n }\n}\n\nForeverAgent.prototype.removeSocket = function(s, name, host, port) {\n if (this.sockets[name]) {\n var index = this.sockets[name].indexOf(s)\n if (index !== -1) {\n this.sockets[name].splice(index, 1)\n }\n } else if (this.sockets[name] && this.sockets[name].length === 0) {\n // don't leak\n delete this.sockets[name]\n delete this.requests[name]\n }\n \n if (this.freeSockets[name]) {\n var index = this.freeSockets[name].indexOf(s)\n if (index !== -1) {\n this.freeSockets[name].splice(index, 1)\n if (this.freeSockets[name].length === 0) {\n delete this.freeSockets[name]\n }\n }\n }\n\n if (this.requests[name] && this.requests[name].length) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(name, host, port).emit('free')\n }\n}\n\nfunction ForeverAgentSSL (options) {\n ForeverAgent.call(this, options)\n}\nutil.inherits(ForeverAgentSSL, ForeverAgent)\n\nForeverAgentSSL.prototype.createConnection = createConnectionSSL\nForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest\n\nfunction createConnectionSSL (port, host, options) {\n if (typeof port === 'object') {\n options = port;\n } else if (typeof host === 'object') {\n options = host;\n } else if (typeof options === 'object') {\n options = options;\n } else {\n options = {};\n }\n\n if (typeof port === 'number') {\n options.port = port;\n }\n\n if (typeof host === 'string') {\n options.host = host;\n }\n\n return tls.connect(options);\n}\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/g, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict'\n\nmodule.exports = {\n afterRequest: require('./afterRequest.json'),\n beforeRequest: require('./beforeRequest.json'),\n browser: require('./browser.json'),\n cache: require('./cache.json'),\n content: require('./content.json'),\n cookie: require('./cookie.json'),\n creator: require('./creator.json'),\n entry: require('./entry.json'),\n har: require('./har.json'),\n header: require('./header.json'),\n log: require('./log.json'),\n page: require('./page.json'),\n pageTimings: require('./pageTimings.json'),\n postData: require('./postData.json'),\n query: require('./query.json'),\n request: require('./request.json'),\n response: require('./response.json'),\n timings: require('./timings.json')\n}\n","function HARError (errors) {\n var message = 'validation failed'\n\n this.name = 'HARError'\n this.message = message\n this.errors = errors\n\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor)\n } else {\n this.stack = (new Error(message)).stack\n }\n}\n\nHARError.prototype = Error.prototype\n\nmodule.exports = HARError\n","var Ajv = require('ajv')\nvar HARError = require('./error')\nvar schemas = require('har-schema')\n\nvar ajv\n\nfunction createAjvInstance () {\n var ajv = new Ajv({\n allErrors: true\n })\n ajv.addMetaSchema(require('ajv/lib/refs/json-schema-draft-06.json'))\n ajv.addSchema(schemas)\n\n return ajv\n}\n\nfunction validate (name, data) {\n data = data || {}\n\n // validator config\n ajv = ajv || createAjvInstance()\n\n var validate = ajv.getSchema(name + '.json')\n\n return new Promise(function (resolve, reject) {\n var valid = validate(data)\n\n !valid ? reject(new HARError(validate.errors)) : resolve(data)\n })\n}\n\nexports.afterRequest = function (data) {\n return validate('afterRequest', data)\n}\n\nexports.beforeRequest = function (data) {\n return validate('beforeRequest', data)\n}\n\nexports.browser = function (data) {\n return validate('browser', data)\n}\n\nexports.cache = function (data) {\n return validate('cache', data)\n}\n\nexports.content = function (data) {\n return validate('content', data)\n}\n\nexports.cookie = function (data) {\n return validate('cookie', data)\n}\n\nexports.creator = function (data) {\n return validate('creator', data)\n}\n\nexports.entry = function (data) {\n return validate('entry', data)\n}\n\nexports.har = function (data) {\n return validate('har', data)\n}\n\nexports.header = function (data) {\n return validate('header', data)\n}\n\nexports.log = function (data) {\n return validate('log', data)\n}\n\nexports.page = function (data) {\n return validate('page', data)\n}\n\nexports.pageTimings = function (data) {\n return validate('pageTimings', data)\n}\n\nexports.postData = function (data) {\n return validate('postData', data)\n}\n\nexports.query = function (data) {\n return validate('query', data)\n}\n\nexports.request = function (data) {\n return validate('request', data)\n}\n\nexports.response = function (data) {\n return validate('response', data)\n}\n\nexports.timings = function (data) {\n return validate('timings', data)\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar utils = require('./utils')\n , pathm = require('path')\n , fs = require('./fileSystem');\n\nvar wrapSuccess = utils.wrapSuccess\n , wrapFail = utils.wrapFail;\n\nexports.getFsInstance = fs.getInstance;\n\nexports.appendFile = function(path, data, callback) {\n fs.writeFile(path, data, callback, true);\n};\n\n\nexports.writeFile = function(path, data, callback) {\n fs.writeFile(path, data, callback, false);\n};\n\n\nexports.readFile = function(path, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {\n encoding: 'utf8'\n };\n }\n\n var success = wrapSuccess(callback)\n , fail = wrapFail(callback);\n\n fs.getFile(path, function(err, fileEntry) {\n fileEntry.file(function(file) {\n var reader = new FileReader();\n\n reader.onloadend = function(evt) {\n success(evt.target.result);\n };\n\n reader.onerror = function(err) {\n fail(err);\n };\n\n if (opts.encoding === 'utf8') {\n reader.readAsText(file);\n } else {\n reader.readAsDataURL(file);\n }\n }, fail);\n });\n};\n\n\nexports.unlink = function(path, callback) {\n var success = wrapSuccess(callback)\n , fail = wrapFail(callback);\n\n fs.getFile(path, function(err, file) {\n if (err) {\n fail(err);\n } else {\n file.remove(success, fail);\n }\n });\n};\n\n\nexports.readdir = function(path, callback) {\n var success = wrapSuccess(callback)\n , fail = wrapFail(callback);\n\n fs.getDirectory(path, function(err, dirEntry) {\n if (err) {\n fail(err);\n } else {\n var directoryReader = dirEntry.createReader();\n directoryReader.readEntries(success, fail);\n }\n });\n};\n\n\nexports.mkdir = function(path, callback) {\n var newFolderName = pathm.basename(path)\n , basePath = pathm.dirname(path)\n , success = utils.wrapSuccess(callback)\n , fail = utils.wrapFail(callback)\n , opts = {\n create: true,\n exclusive: true\n };\n\n if (basePath === '.') {\n fs.getDirectory(newFolderName, opts, callback);\n } else {\n fs.getDirectory(basePath, function (err, dir) {\n if (err) {\n callback(err, null);\n } else {\n dir.getDirectory(newFolderName, opts, success, fail);\n }\n });\n }\n};\n\n\n/**\n * Remove a directory.\n * The FileSystem API expects directories to be empty but returns a\n * non-informative error on Android and possibly iOS so we check here\n * to ensure users know why directory deletes might fail.\n * @param {String} path\n * @param {Function} callback\n */\nexports.rmdir = function(path, callback) {\n var success = wrapSuccess(callback)\n , fail = wrapFail(callback);\n\n this.readdir(path, function(err, list) {\n if (err) {\n fail(err);\n } else if (list && list.length > 0) {\n fail('ENOTEMPTY: Directory must be empty');\n } else {\n fs.getDirectory(path, function(err, dirEntry) {\n if (err) {\n fail(err);\n } else {\n dirEntry.remove(success, fail);\n }\n });\n }\n });\n};\n\n\nexports.exists = function(path, callback) {\n var fail = wrapFail(callback);\n\n fs.getFile(path, {\n // Don't create the file, just look for it\n create: false\n }, function(err) {\n // See https://www.chromestatus.com/features/6687420359639040.\n if (err &&\n ((window.FileError && err.code === 1) ||\n (err.name === 'NotFoundError'))) { // NOT FOUND\n // If the file isn't found we don't want an error, pass false!\n callback(false);\n } else if (err) {\n // An actual error occured, pass it along\n fail(err);\n } else {\n callback(true);\n }\n });\n};\n\n\nexports.stat = function(path, callback) {\n var success = wrapSuccess(callback)\n , fail = wrapFail(callback)\n , fn = fs.getFile;\n\n // TODO: Perhaps check for folder AND file instead, use whichever exists\n if (utils.isDirectory(path)) {\n fn = fs.getDirectory;\n }\n\n fn(path, function(err, res) {\n if (err) {\n fail(err);\n } else {\n res.getMetadata(success, fail);\n }\n });\n};\n\n\n/**\n * Initialise the file system component for use.\n * @param {Number} [quota]\n * @param {Function} callback\n */\nexports.init = function(bytes, callback) {\n fs.init(bytes, function(err) {\n if (err) {\n callback(err, null);\n } else {\n fs.getInstance(function(err /*, instance */) {\n callback(err, null);\n });\n }\n });\n};\n","'use strict';\n\nvar utils = require('./utils')\n , pathm = require('path');\n\nvar DEFAULT_QUOTA = (10 * 1024 * 1024); // 10MB\n\nvar fileSystem = null;\n\n/**\n * Get a FileSystem instance.\n * @param {Function} callback\n */\nexports.getInstance = function(callback) {\n if (fileSystem) {\n callback(null, fileSystem);\n } else {\n init(null, callback);\n }\n};\n\n\n/**\n * Initialises access to browser File System\n * @param {Number} bytes\n * @param {Function} callback\n */\nvar init = exports.init = function(bytes, callback) {\n requestQuota(bytes, function(err, grantedBytes) {\n if (err) {\n return callback(err, null);\n } else {\n requestFileSystem(grantedBytes, function(instance) {\n fileSystem = instance;\n callback(null, grantedBytes);\n }, function(err) {\n callback(err, null);\n });\n }\n });\n};\n\n\n/**\n * Write data to a file optionally appending it.\n * @param {String} path\n * @param {Mixed} data\n * @param {Function} callback\n * @param {Boolean} append\n */\nexports.writeFile = function(path, data, callback, append) {\n var fail = utils.wrapFail(callback)\n , success = utils.wrapSuccess(callback);\n\n this.getFile(path, {\n create: true,\n exclusive: false\n }, function(err, file) {\n if (err) {\n return callback(err, null);\n } else {\n file.createWriter(function(writer) {\n writer.onwrite = function(/*evt*/) {\n success(file.toURL());\n };\n\n writer.onerror = function(evt) {\n fail(evt.target.error);\n };\n\n if (append === true) {\n writer.seek(writer.length);\n }\n\n if (utils.isMobile()) {\n writer.write(data);\n } else {\n writer.write(new Blob([data]));\n }\n }, fail);\n }\n });\n};\n\n\n/**\n * Get a directory specified by path.\n * By default if the dir does not exist it is not created.\n * @param {String} path\n * @param {Object} [opts]\n * @param {Function} callback\n */\nexports.getDirectory = function(path, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {\n create: false\n };\n }\n\n var success = utils.wrapSuccess(callback)\n , fail = utils.wrapFail(callback);\n\n fileSystem.root.getDirectory(path, opts, success, fail);\n};\n\n\n/**\n * Get a file at a specified path.\n * By default if the file does not exist it is not created.\n * @param {String} path\n * @param {Object} [opts]\n * @param {Function} callback\n */\nexports.getFile = function(path, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {\n create: false\n };\n }\n\n var fileName = pathm.basename(path)\n , basePath = pathm.dirname(path)\n , success = utils.wrapSuccess(callback)\n , fail = utils.wrapFail(callback);\n\n function doGet (dirRef) {\n dirRef.getFile(fileName, opts, success, fail);\n }\n\n if (basePath === '.') {\n // File is in root directory\n doGet(fileSystem.root);\n } else {\n // Need to get container directory ref for the requested file\n this.getDirectory(basePath, opts, function (err, dir) {\n if (err) {\n callback(err, null);\n } else {\n doGet(dir);\n }\n });\n }\n};\n\n\n/**\n * Request access to the file system.\n * This is called only after quota is granted.\n * @param {Number} bytes\n * @param {Function} success\n * @param {Function} fail\n */\nfunction requestFileSystem(bytes, success, fail) {\n // These are in order of preference due to some being deprecated\n if (window.navigator.webkitRequestFileSystem) {\n window.navigator.webkitRequestFileSystem(bytes, success, fail);\n } else if (window.requestFileSystem) {\n window.requestFileSystem(\n window.LocalFileSystem.PERSISTENT,\n bytes,\n success,\n fail\n );\n } else if (window.webkitRequestFileSystem) {\n window.webkitRequestFileSystem(\n window.PERSISTENT,\n bytes,\n success,\n fail\n );\n } else {\n fail('NO_SUPPORT');\n }\n}\n\n\n/**\n * Request a quota from the FileSystem.\n * @param {Number} bytes\n * @param {Function} callback\n */\nfunction requestQuota(quota, callback) {\n // Allow user overide the default quota\n quota = quota || DEFAULT_QUOTA;\n\n function success(bytes) {\n callback(null, bytes);\n }\n\n function fail(err) {\n callback(err, null);\n }\n\n // These are in order of preference due to some being deprecated\n if (navigator.webkitPersistentStorage &&\n navigator.webkitPersistentStorage.requestQuota) {\n navigator.webkitPersistentStorage.requestQuota(quota, success, fail);\n } else if (window.webkitStorageInfo &&\n window.webkitStorageInfo.requestQuota) {\n window.webkitStorageInfo.requestQuota(\n window.PERSISTENT,\n quota,\n success,\n fail\n );\n } else if (window.requestFileSystem) {\n // PhoneGap apps should request a 0 quota\n if (utils.isPhoneGap() === true) {\n quota = 0;\n }\n\n success(quota);\n } else {\n fail('NO_SUPPORT');\n }\n}\n","'use strict';\n\n/**\n * Detect is the device a mobile device.\n * @return {Boolean}\n */\nexports.isMobile = function() {\n var ua = window.navigator.userAgent;\n return (ua.match(/Android|iPad|iPhone|iPod|Windows Phone/) !== null);\n};\n\n\n/**\n * Determine if this is a PhoneGap application.\n * @return {Boolean}\n */\nexports.isPhoneGap = function() {\n // TODO: Improve this...\n var proto = window.location.protocol;\n return (this.isMobile() && proto.indexOf('file') !== -1);\n};\n\n\n/**\n * Determine if FileSystem is supported.\n * @return {Boolean}\n */\nexports.supportsFileSystem = function() {\n if (this.isPhoneGap() === true) {\n return true;\n }\n\n // TODO: Test this works, Opera (WebKit) and Chrome\n return window.navigator.userAgent.match(/Chrome|Opera/);\n};\n\n\n/**\n * Wrap a callback for use as a success callback.\n * @param {Function} callback\n * @return {Function}\n */\nexports.wrapSuccess = function(callback) {\n return function() {\n var args = [null].concat(Array.prototype.slice.call(arguments));\n\n callback.apply(callback, args);\n };\n};\n\n\n/**\n * Wrap a callback for use as a failure callback.\n * @param {Function} callback\n * @return {Function}\n */\nexports.wrapFail = function(callback) {\n return function() {\n var args = Array.prototype.slice.call(arguments)\n , e = args[0];\n\n callback.apply(callback, [e, null]);\n };\n};\n\n\n/**\n * Check is provided path a directory.\n * @param {String} path\n * @return {Boolean}\n */\nexports.isDirectory = function(path) {\n return (path.lastIndexOf('/') === (path.length - 1));\n};\n","// Copyright 2015 Joyent, Inc.\n\nvar parser = require('./parser');\nvar signer = require('./signer');\nvar verify = require('./verify');\nvar utils = require('./utils');\n\n\n\n///--- API\n\nmodule.exports = {\n\n parse: parser.parseRequest,\n parseRequest: parser.parseRequest,\n\n sign: signer.signRequest,\n signRequest: signer.signRequest,\n createSigner: signer.createSigner,\n isSigner: signer.isSigner,\n\n sshKeyToPEM: utils.sshKeyToPEM,\n sshKeyFingerprint: utils.fingerprint,\n pemToRsaSSHKey: utils.pemToRsaSSHKey,\n\n verify: verify.verifySignature,\n verifySignature: verify.verifySignature,\n verifyHMAC: verify.verifyHMAC\n};\n","// Copyright 2012 Joyent, Inc. All rights reserved.\n\nvar assert = require('assert-plus');\nvar util = require('util');\nvar utils = require('./utils');\n\n\n\n///--- Globals\n\nvar HASH_ALGOS = utils.HASH_ALGOS;\nvar PK_ALGOS = utils.PK_ALGOS;\nvar HttpSignatureError = utils.HttpSignatureError;\nvar InvalidAlgorithmError = utils.InvalidAlgorithmError;\nvar validateAlgorithm = utils.validateAlgorithm;\n\nvar State = {\n New: 0,\n Params: 1\n};\n\nvar ParamsState = {\n Name: 0,\n Quote: 1,\n Value: 2,\n Comma: 3\n};\n\n\n///--- Specific Errors\n\n\nfunction ExpiredRequestError(message) {\n HttpSignatureError.call(this, message, ExpiredRequestError);\n}\nutil.inherits(ExpiredRequestError, HttpSignatureError);\n\n\nfunction InvalidHeaderError(message) {\n HttpSignatureError.call(this, message, InvalidHeaderError);\n}\nutil.inherits(InvalidHeaderError, HttpSignatureError);\n\n\nfunction InvalidParamsError(message) {\n HttpSignatureError.call(this, message, InvalidParamsError);\n}\nutil.inherits(InvalidParamsError, HttpSignatureError);\n\n\nfunction MissingHeaderError(message) {\n HttpSignatureError.call(this, message, MissingHeaderError);\n}\nutil.inherits(MissingHeaderError, HttpSignatureError);\n\nfunction StrictParsingError(message) {\n HttpSignatureError.call(this, message, StrictParsingError);\n}\nutil.inherits(StrictParsingError, HttpSignatureError);\n\n///--- Exported API\n\nmodule.exports = {\n\n /**\n * Parses the 'Authorization' header out of an http.ServerRequest object.\n *\n * Note that this API will fully validate the Authorization header, and throw\n * on any error. It will not however check the signature, or the keyId format\n * as those are specific to your environment. You can use the options object\n * to pass in extra constraints.\n *\n * As a response object you can expect this:\n *\n * {\n * \"scheme\": \"Signature\",\n * \"params\": {\n * \"keyId\": \"foo\",\n * \"algorithm\": \"rsa-sha256\",\n * \"headers\": [\n * \"date\" or \"x-date\",\n * \"digest\"\n * ],\n * \"signature\": \"base64\"\n * },\n * \"signingString\": \"ready to be passed to crypto.verify()\"\n * }\n *\n * @param {Object} request an http.ServerRequest.\n * @param {Object} options an optional options object with:\n * - clockSkew: allowed clock skew in seconds (default 300).\n * - headers: required header names (def: date or x-date)\n * - algorithms: algorithms to support (default: all).\n * - strict: should enforce latest spec parsing\n * (default: false).\n * @return {Object} parsed out object (see above).\n * @throws {TypeError} on invalid input.\n * @throws {InvalidHeaderError} on an invalid Authorization header error.\n * @throws {InvalidParamsError} if the params in the scheme are invalid.\n * @throws {MissingHeaderError} if the params indicate a header not present,\n * either in the request headers from the params,\n * or not in the params from a required header\n * in options.\n * @throws {StrictParsingError} if old attributes are used in strict parsing\n * mode.\n * @throws {ExpiredRequestError} if the value of date or x-date exceeds skew.\n */\n parseRequest: function parseRequest(request, options) {\n assert.object(request, 'request');\n assert.object(request.headers, 'request.headers');\n if (options === undefined) {\n options = {};\n }\n if (options.headers === undefined) {\n options.headers = [request.headers['x-date'] ? 'x-date' : 'date'];\n }\n assert.object(options, 'options');\n assert.arrayOfString(options.headers, 'options.headers');\n assert.optionalFinite(options.clockSkew, 'options.clockSkew');\n\n var authzHeaderName = options.authorizationHeaderName || 'authorization';\n\n if (!request.headers[authzHeaderName]) {\n throw new MissingHeaderError('no ' + authzHeaderName + ' header ' +\n 'present in the request');\n }\n\n options.clockSkew = options.clockSkew || 300;\n\n\n var i = 0;\n var state = State.New;\n var substate = ParamsState.Name;\n var tmpName = '';\n var tmpValue = '';\n\n var parsed = {\n scheme: '',\n params: {},\n signingString: ''\n };\n\n var authz = request.headers[authzHeaderName];\n for (i = 0; i < authz.length; i++) {\n var c = authz.charAt(i);\n\n switch (Number(state)) {\n\n case State.New:\n if (c !== ' ') parsed.scheme += c;\n else state = State.Params;\n break;\n\n case State.Params:\n switch (Number(substate)) {\n\n case ParamsState.Name:\n var code = c.charCodeAt(0);\n // restricted name of A-Z / a-z\n if ((code >= 0x41 && code <= 0x5a) || // A-Z\n (code >= 0x61 && code <= 0x7a)) { // a-z\n tmpName += c;\n } else if (c === '=') {\n if (tmpName.length === 0)\n throw new InvalidHeaderError('bad param format');\n substate = ParamsState.Quote;\n } else {\n throw new InvalidHeaderError('bad param format');\n }\n break;\n\n case ParamsState.Quote:\n if (c === '\"') {\n tmpValue = '';\n substate = ParamsState.Value;\n } else {\n throw new InvalidHeaderError('bad param format');\n }\n break;\n\n case ParamsState.Value:\n if (c === '\"') {\n parsed.params[tmpName] = tmpValue;\n substate = ParamsState.Comma;\n } else {\n tmpValue += c;\n }\n break;\n\n case ParamsState.Comma:\n if (c === ',') {\n tmpName = '';\n substate = ParamsState.Name;\n } else {\n throw new InvalidHeaderError('bad param format');\n }\n break;\n\n default:\n throw new Error('Invalid substate');\n }\n break;\n\n default:\n throw new Error('Invalid substate');\n }\n\n }\n\n if (!parsed.params.headers || parsed.params.headers === '') {\n if (request.headers['x-date']) {\n parsed.params.headers = ['x-date'];\n } else {\n parsed.params.headers = ['date'];\n }\n } else {\n parsed.params.headers = parsed.params.headers.split(' ');\n }\n\n // Minimally validate the parsed object\n if (!parsed.scheme || parsed.scheme !== 'Signature')\n throw new InvalidHeaderError('scheme was not \"Signature\"');\n\n if (!parsed.params.keyId)\n throw new InvalidHeaderError('keyId was not specified');\n\n if (!parsed.params.algorithm)\n throw new InvalidHeaderError('algorithm was not specified');\n\n if (!parsed.params.signature)\n throw new InvalidHeaderError('signature was not specified');\n\n // Check the algorithm against the official list\n parsed.params.algorithm = parsed.params.algorithm.toLowerCase();\n try {\n validateAlgorithm(parsed.params.algorithm);\n } catch (e) {\n if (e instanceof InvalidAlgorithmError)\n throw (new InvalidParamsError(parsed.params.algorithm + ' is not ' +\n 'supported'));\n else\n throw (e);\n }\n\n // Build the signingString\n for (i = 0; i < parsed.params.headers.length; i++) {\n var h = parsed.params.headers[i].toLowerCase();\n parsed.params.headers[i] = h;\n\n if (h === 'request-line') {\n if (!options.strict) {\n /*\n * We allow headers from the older spec drafts if strict parsing isn't\n * specified in options.\n */\n parsed.signingString +=\n request.method + ' ' + request.url + ' HTTP/' + request.httpVersion;\n } else {\n /* Strict parsing doesn't allow older draft headers. */\n throw (new StrictParsingError('request-line is not a valid header ' +\n 'with strict parsing enabled.'));\n }\n } else if (h === '(request-target)') {\n parsed.signingString +=\n '(request-target): ' + request.method.toLowerCase() + ' ' +\n request.url;\n } else {\n var value = request.headers[h];\n if (value === undefined)\n throw new MissingHeaderError(h + ' was not in the request');\n parsed.signingString += h + ': ' + value;\n }\n\n if ((i + 1) < parsed.params.headers.length)\n parsed.signingString += '\\n';\n }\n\n // Check against the constraints\n var date;\n if (request.headers.date || request.headers['x-date']) {\n if (request.headers['x-date']) {\n date = new Date(request.headers['x-date']);\n } else {\n date = new Date(request.headers.date);\n }\n var now = new Date();\n var skew = Math.abs(now.getTime() - date.getTime());\n\n if (skew > options.clockSkew * 1000) {\n throw new ExpiredRequestError('clock skew of ' +\n (skew / 1000) +\n 's was greater than ' +\n options.clockSkew + 's');\n }\n }\n\n options.headers.forEach(function (hdr) {\n // Remember that we already checked any headers in the params\n // were in the request, so if this passes we're good.\n if (parsed.params.headers.indexOf(hdr.toLowerCase()) < 0)\n throw new MissingHeaderError(hdr + ' was not a signed header');\n });\n\n if (options.algorithms) {\n if (options.algorithms.indexOf(parsed.params.algorithm) === -1)\n throw new InvalidParamsError(parsed.params.algorithm +\n ' is not a supported algorithm');\n }\n\n parsed.algorithm = parsed.params.algorithm.toUpperCase();\n parsed.keyId = parsed.params.keyId;\n return parsed;\n }\n\n};\n","// Copyright 2012 Joyent, Inc. All rights reserved.\n\nvar assert = require('assert-plus');\nvar crypto = require('crypto');\nvar http = require('http');\nvar util = require('util');\nvar sshpk = require('sshpk');\nvar jsprim = require('jsprim');\nvar utils = require('./utils');\n\nvar sprintf = require('util').format;\n\nvar HASH_ALGOS = utils.HASH_ALGOS;\nvar PK_ALGOS = utils.PK_ALGOS;\nvar InvalidAlgorithmError = utils.InvalidAlgorithmError;\nvar HttpSignatureError = utils.HttpSignatureError;\nvar validateAlgorithm = utils.validateAlgorithm;\n\n///--- Globals\n\nvar AUTHZ_FMT =\n 'Signature keyId=\"%s\",algorithm=\"%s\",headers=\"%s\",signature=\"%s\"';\n\n///--- Specific Errors\n\nfunction MissingHeaderError(message) {\n HttpSignatureError.call(this, message, MissingHeaderError);\n}\nutil.inherits(MissingHeaderError, HttpSignatureError);\n\nfunction StrictParsingError(message) {\n HttpSignatureError.call(this, message, StrictParsingError);\n}\nutil.inherits(StrictParsingError, HttpSignatureError);\n\n/* See createSigner() */\nfunction RequestSigner(options) {\n assert.object(options, 'options');\n\n var alg = [];\n if (options.algorithm !== undefined) {\n assert.string(options.algorithm, 'options.algorithm');\n alg = validateAlgorithm(options.algorithm);\n }\n this.rs_alg = alg;\n\n /*\n * RequestSigners come in two varieties: ones with an rs_signFunc, and ones\n * with an rs_signer.\n *\n * rs_signFunc-based RequestSigners have to build up their entire signing\n * string within the rs_lines array and give it to rs_signFunc as a single\n * concat'd blob. rs_signer-based RequestSigners can add a line at a time to\n * their signing state by using rs_signer.update(), thus only needing to\n * buffer the hash function state and one line at a time.\n */\n if (options.sign !== undefined) {\n assert.func(options.sign, 'options.sign');\n this.rs_signFunc = options.sign;\n\n } else if (alg[0] === 'hmac' && options.key !== undefined) {\n assert.string(options.keyId, 'options.keyId');\n this.rs_keyId = options.keyId;\n\n if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key))\n throw (new TypeError('options.key for HMAC must be a string or Buffer'));\n\n /*\n * Make an rs_signer for HMACs, not a rs_signFunc -- HMACs digest their\n * data in chunks rather than requiring it all to be given in one go\n * at the end, so they are more similar to signers than signFuncs.\n */\n this.rs_signer = crypto.createHmac(alg[1].toUpperCase(), options.key);\n this.rs_signer.sign = function () {\n var digest = this.digest('base64');\n return ({\n hashAlgorithm: alg[1],\n toString: function () { return (digest); }\n });\n };\n\n } else if (options.key !== undefined) {\n var key = options.key;\n if (typeof (key) === 'string' || Buffer.isBuffer(key))\n key = sshpk.parsePrivateKey(key);\n\n assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]),\n 'options.key must be a sshpk.PrivateKey');\n this.rs_key = key;\n\n assert.string(options.keyId, 'options.keyId');\n this.rs_keyId = options.keyId;\n\n if (!PK_ALGOS[key.type]) {\n throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' +\n 'keys are not supported'));\n }\n\n if (alg[0] !== undefined && key.type !== alg[0]) {\n throw (new InvalidAlgorithmError('options.key must be a ' +\n alg[0].toUpperCase() + ' key, was given a ' +\n key.type.toUpperCase() + ' key instead'));\n }\n\n this.rs_signer = key.createSign(alg[1]);\n\n } else {\n throw (new TypeError('options.sign (func) or options.key is required'));\n }\n\n this.rs_headers = [];\n this.rs_lines = [];\n}\n\n/**\n * Adds a header to be signed, with its value, into this signer.\n *\n * @param {String} header\n * @param {String} value\n * @return {String} value written\n */\nRequestSigner.prototype.writeHeader = function (header, value) {\n assert.string(header, 'header');\n header = header.toLowerCase();\n assert.string(value, 'value');\n\n this.rs_headers.push(header);\n\n if (this.rs_signFunc) {\n this.rs_lines.push(header + ': ' + value);\n\n } else {\n var line = header + ': ' + value;\n if (this.rs_headers.length > 0)\n line = '\\n' + line;\n this.rs_signer.update(line);\n }\n\n return (value);\n};\n\n/**\n * Adds a default Date header, returning its value.\n *\n * @return {String}\n */\nRequestSigner.prototype.writeDateHeader = function () {\n return (this.writeHeader('date', jsprim.rfc1123(new Date())));\n};\n\n/**\n * Adds the request target line to be signed.\n *\n * @param {String} method, HTTP method (e.g. 'get', 'post', 'put')\n * @param {String} path\n */\nRequestSigner.prototype.writeTarget = function (method, path) {\n assert.string(method, 'method');\n assert.string(path, 'path');\n method = method.toLowerCase();\n this.writeHeader('(request-target)', method + ' ' + path);\n};\n\n/**\n * Calculate the value for the Authorization header on this request\n * asynchronously.\n *\n * @param {Func} callback (err, authz)\n */\nRequestSigner.prototype.sign = function (cb) {\n assert.func(cb, 'callback');\n\n if (this.rs_headers.length < 1)\n throw (new Error('At least one header must be signed'));\n\n var alg, authz;\n if (this.rs_signFunc) {\n var data = this.rs_lines.join('\\n');\n var self = this;\n this.rs_signFunc(data, function (err, sig) {\n if (err) {\n cb(err);\n return;\n }\n try {\n assert.object(sig, 'signature');\n assert.string(sig.keyId, 'signature.keyId');\n assert.string(sig.algorithm, 'signature.algorithm');\n assert.string(sig.signature, 'signature.signature');\n alg = validateAlgorithm(sig.algorithm);\n\n authz = sprintf(AUTHZ_FMT,\n sig.keyId,\n sig.algorithm,\n self.rs_headers.join(' '),\n sig.signature);\n } catch (e) {\n cb(e);\n return;\n }\n cb(null, authz);\n });\n\n } else {\n try {\n var sigObj = this.rs_signer.sign();\n } catch (e) {\n cb(e);\n return;\n }\n alg = (this.rs_alg[0] || this.rs_key.type) + '-' + sigObj.hashAlgorithm;\n var signature = sigObj.toString();\n authz = sprintf(AUTHZ_FMT,\n this.rs_keyId,\n alg,\n this.rs_headers.join(' '),\n signature);\n cb(null, authz);\n }\n};\n\n///--- Exported API\n\nmodule.exports = {\n /**\n * Identifies whether a given object is a request signer or not.\n *\n * @param {Object} object, the object to identify\n * @returns {Boolean}\n */\n isSigner: function (obj) {\n if (typeof (obj) === 'object' && obj instanceof RequestSigner)\n return (true);\n return (false);\n },\n\n /**\n * Creates a request signer, used to asynchronously build a signature\n * for a request (does not have to be an http.ClientRequest).\n *\n * @param {Object} options, either:\n * - {String} keyId\n * - {String|Buffer} key\n * - {String} algorithm (optional, required for HMAC)\n * or:\n * - {Func} sign (data, cb)\n * @return {RequestSigner}\n */\n createSigner: function createSigner(options) {\n return (new RequestSigner(options));\n },\n\n /**\n * Adds an 'Authorization' header to an http.ClientRequest object.\n *\n * Note that this API will add a Date header if it's not already set. Any\n * other headers in the options.headers array MUST be present, or this\n * will throw.\n *\n * You shouldn't need to check the return type; it's just there if you want\n * to be pedantic.\n *\n * The optional flag indicates whether parsing should use strict enforcement\n * of the version draft-cavage-http-signatures-04 of the spec or beyond.\n * The default is to be loose and support\n * older versions for compatibility.\n *\n * @param {Object} request an instance of http.ClientRequest.\n * @param {Object} options signing parameters object:\n * - {String} keyId required.\n * - {String} key required (either a PEM or HMAC key).\n * - {Array} headers optional; defaults to ['date'].\n * - {String} algorithm optional (unless key is HMAC);\n * default is the same as the sshpk default\n * signing algorithm for the type of key given\n * - {String} httpVersion optional; defaults to '1.1'.\n * - {Boolean} strict optional; defaults to 'false'.\n * @return {Boolean} true if Authorization (and optionally Date) were added.\n * @throws {TypeError} on bad parameter types (input).\n * @throws {InvalidAlgorithmError} if algorithm was bad or incompatible with\n * the given key.\n * @throws {sshpk.KeyParseError} if key was bad.\n * @throws {MissingHeaderError} if a header to be signed was specified but\n * was not present.\n */\n signRequest: function signRequest(request, options) {\n assert.object(request, 'request');\n assert.object(options, 'options');\n assert.optionalString(options.algorithm, 'options.algorithm');\n assert.string(options.keyId, 'options.keyId');\n assert.optionalArrayOfString(options.headers, 'options.headers');\n assert.optionalString(options.httpVersion, 'options.httpVersion');\n\n if (!request.getHeader('Date'))\n request.setHeader('Date', jsprim.rfc1123(new Date()));\n if (!options.headers)\n options.headers = ['date'];\n if (!options.httpVersion)\n options.httpVersion = '1.1';\n\n var alg = [];\n if (options.algorithm) {\n options.algorithm = options.algorithm.toLowerCase();\n alg = validateAlgorithm(options.algorithm);\n }\n\n var i;\n var stringToSign = '';\n for (i = 0; i < options.headers.length; i++) {\n if (typeof (options.headers[i]) !== 'string')\n throw new TypeError('options.headers must be an array of Strings');\n\n var h = options.headers[i].toLowerCase();\n\n if (h === 'request-line') {\n if (!options.strict) {\n /**\n * We allow headers from the older spec drafts if strict parsing isn't\n * specified in options.\n */\n stringToSign +=\n request.method + ' ' + request.path + ' HTTP/' +\n options.httpVersion;\n } else {\n /* Strict parsing doesn't allow older draft headers. */\n throw (new StrictParsingError('request-line is not a valid header ' +\n 'with strict parsing enabled.'));\n }\n } else if (h === '(request-target)') {\n stringToSign +=\n '(request-target): ' + request.method.toLowerCase() + ' ' +\n request.path;\n } else {\n var value = request.getHeader(h);\n if (value === undefined || value === '') {\n throw new MissingHeaderError(h + ' was not in the request');\n }\n stringToSign += h + ': ' + value;\n }\n\n if ((i + 1) < options.headers.length)\n stringToSign += '\\n';\n }\n\n /* This is just for unit tests. */\n if (request.hasOwnProperty('_stringToSign')) {\n request._stringToSign = stringToSign;\n }\n\n var signature;\n if (alg[0] === 'hmac') {\n if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key))\n throw (new TypeError('options.key must be a string or Buffer'));\n\n var hmac = crypto.createHmac(alg[1].toUpperCase(), options.key);\n hmac.update(stringToSign);\n signature = hmac.digest('base64');\n\n } else {\n var key = options.key;\n if (typeof (key) === 'string' || Buffer.isBuffer(key))\n key = sshpk.parsePrivateKey(options.key);\n\n assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]),\n 'options.key must be a sshpk.PrivateKey');\n\n if (!PK_ALGOS[key.type]) {\n throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' +\n 'keys are not supported'));\n }\n\n if (alg[0] !== undefined && key.type !== alg[0]) {\n throw (new InvalidAlgorithmError('options.key must be a ' +\n alg[0].toUpperCase() + ' key, was given a ' +\n key.type.toUpperCase() + ' key instead'));\n }\n\n var signer = key.createSign(alg[1]);\n signer.update(stringToSign);\n var sigObj = signer.sign();\n if (!HASH_ALGOS[sigObj.hashAlgorithm]) {\n throw (new InvalidAlgorithmError(sigObj.hashAlgorithm.toUpperCase() +\n ' is not a supported hash algorithm'));\n }\n options.algorithm = key.type + '-' + sigObj.hashAlgorithm;\n signature = sigObj.toString();\n assert.notStrictEqual(signature, '', 'empty signature produced');\n }\n\n var authzHeaderName = options.authorizationHeaderName || 'Authorization';\n\n request.setHeader(authzHeaderName, sprintf(AUTHZ_FMT,\n options.keyId,\n options.algorithm,\n options.headers.join(' '),\n signature));\n\n return true;\n }\n\n};\n","// Copyright 2012 Joyent, Inc. All rights reserved.\n\nvar assert = require('assert-plus');\nvar sshpk = require('sshpk');\nvar util = require('util');\n\nvar HASH_ALGOS = {\n 'sha1': true,\n 'sha256': true,\n 'sha512': true\n};\n\nvar PK_ALGOS = {\n 'rsa': true,\n 'dsa': true,\n 'ecdsa': true\n};\n\nfunction HttpSignatureError(message, caller) {\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, caller || HttpSignatureError);\n\n this.message = message;\n this.name = caller.name;\n}\nutil.inherits(HttpSignatureError, Error);\n\nfunction InvalidAlgorithmError(message) {\n HttpSignatureError.call(this, message, InvalidAlgorithmError);\n}\nutil.inherits(InvalidAlgorithmError, HttpSignatureError);\n\nfunction validateAlgorithm(algorithm) {\n var alg = algorithm.toLowerCase().split('-');\n\n if (alg.length !== 2) {\n throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' is not a ' +\n 'valid algorithm'));\n }\n\n if (alg[0] !== 'hmac' && !PK_ALGOS[alg[0]]) {\n throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' type keys ' +\n 'are not supported'));\n }\n\n if (!HASH_ALGOS[alg[1]]) {\n throw (new InvalidAlgorithmError(alg[1].toUpperCase() + ' is not a ' +\n 'supported hash algorithm'));\n }\n\n return (alg);\n}\n\n///--- API\n\nmodule.exports = {\n\n HASH_ALGOS: HASH_ALGOS,\n PK_ALGOS: PK_ALGOS,\n\n HttpSignatureError: HttpSignatureError,\n InvalidAlgorithmError: InvalidAlgorithmError,\n\n validateAlgorithm: validateAlgorithm,\n\n /**\n * Converts an OpenSSH public key (rsa only) to a PKCS#8 PEM file.\n *\n * The intent of this module is to interoperate with OpenSSL only,\n * specifically the node crypto module's `verify` method.\n *\n * @param {String} key an OpenSSH public key.\n * @return {String} PEM encoded form of the RSA public key.\n * @throws {TypeError} on bad input.\n * @throws {Error} on invalid ssh key formatted data.\n */\n sshKeyToPEM: function sshKeyToPEM(key) {\n assert.string(key, 'ssh_key');\n\n var k = sshpk.parseKey(key, 'ssh');\n return (k.toString('pem'));\n },\n\n\n /**\n * Generates an OpenSSH fingerprint from an ssh public key.\n *\n * @param {String} key an OpenSSH public key.\n * @return {String} key fingerprint.\n * @throws {TypeError} on bad input.\n * @throws {Error} if what you passed doesn't look like an ssh public key.\n */\n fingerprint: function fingerprint(key) {\n assert.string(key, 'ssh_key');\n\n var k = sshpk.parseKey(key, 'ssh');\n return (k.fingerprint('md5').toString('hex'));\n },\n\n /**\n * Converts a PKGCS#8 PEM file to an OpenSSH public key (rsa)\n *\n * The reverse of the above function.\n */\n pemToRsaSSHKey: function pemToRsaSSHKey(pem, comment) {\n assert.equal('string', typeof (pem), 'typeof pem');\n\n var k = sshpk.parseKey(pem, 'pem');\n k.comment = comment;\n return (k.toString('ssh'));\n }\n};\n","// Copyright 2015 Joyent, Inc.\n\nvar assert = require('assert-plus');\nvar crypto = require('crypto');\nvar sshpk = require('sshpk');\nvar utils = require('./utils');\n\nvar HASH_ALGOS = utils.HASH_ALGOS;\nvar PK_ALGOS = utils.PK_ALGOS;\nvar InvalidAlgorithmError = utils.InvalidAlgorithmError;\nvar HttpSignatureError = utils.HttpSignatureError;\nvar validateAlgorithm = utils.validateAlgorithm;\n\n///--- Exported API\n\nmodule.exports = {\n /**\n * Verify RSA/DSA signature against public key. You are expected to pass in\n * an object that was returned from `parse()`.\n *\n * @param {Object} parsedSignature the object you got from `parse`.\n * @param {String} pubkey RSA/DSA private key PEM.\n * @return {Boolean} true if valid, false otherwise.\n * @throws {TypeError} if you pass in bad arguments.\n * @throws {InvalidAlgorithmError}\n */\n verifySignature: function verifySignature(parsedSignature, pubkey) {\n assert.object(parsedSignature, 'parsedSignature');\n if (typeof (pubkey) === 'string' || Buffer.isBuffer(pubkey))\n pubkey = sshpk.parseKey(pubkey);\n assert.ok(sshpk.Key.isKey(pubkey, [1, 1]), 'pubkey must be a sshpk.Key');\n\n var alg = validateAlgorithm(parsedSignature.algorithm);\n if (alg[0] === 'hmac' || alg[0] !== pubkey.type)\n return (false);\n\n var v = pubkey.createVerify(alg[1]);\n v.update(parsedSignature.signingString);\n return (v.verify(parsedSignature.params.signature, 'base64'));\n },\n\n /**\n * Verify HMAC against shared secret. You are expected to pass in an object\n * that was returned from `parse()`.\n *\n * @param {Object} parsedSignature the object you got from `parse`.\n * @param {String} secret HMAC shared secret.\n * @return {Boolean} true if valid, false otherwise.\n * @throws {TypeError} if you pass in bad arguments.\n * @throws {InvalidAlgorithmError}\n */\n verifyHMAC: function verifyHMAC(parsedSignature, secret) {\n assert.object(parsedSignature, 'parsedHMAC');\n assert.string(secret, 'secret');\n\n var alg = validateAlgorithm(parsedSignature.algorithm);\n if (alg[0] !== 'hmac')\n return (false);\n\n var hashAlg = alg[1].toUpperCase();\n\n var hmac = crypto.createHmac(hashAlg, secret);\n hmac.update(parsedSignature.signingString);\n\n /*\n * Now double-hash to avoid leaking timing information - there's\n * no easy constant-time compare in JS, so we use this approach\n * instead. See for more info:\n * https://www.isecpartners.com/blog/2011/february/double-hmac-\n * verification.aspx\n */\n var h1 = crypto.createHmac(hashAlg, secret);\n h1.update(hmac.digest());\n h1 = h1.digest();\n var h2 = crypto.createHmac(hashAlg, secret);\n h2.update(new Buffer(parsedSignature.params.signature, 'base64'));\n h2 = h2.digest();\n\n /* Node 0.8 returns strings from .digest(). */\n if (typeof (h1) === 'string')\n return (h1 === h2);\n /* And node 0.10 lacks the .equals() method on Buffers. */\n if (Buffer.isBuffer(h1) && !h1.equals)\n return (h1.toString('binary') === h2.toString('binary'));\n\n return (h1.equals(h2));\n }\n};\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n/* globals document: false */\nvar documentDotAll = typeof document === 'object' && typeof document.all === 'undefined' && document.all !== undefined ? document.all : {};\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (value === documentDotAll) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (typeof value === 'function' && !value.prototype) { return true; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (value === documentDotAll) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (typeof value === 'function' && !value.prototype) { return true; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\treturn strClass === fnClass || strClass === genClass;\n\t};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n","'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n","module.exports = isTypedArray\nisTypedArray.strict = isStrictTypedArray\nisTypedArray.loose = isLooseTypedArray\n\nvar toString = Object.prototype.toString\nvar names = {\n '[object Int8Array]': true\n , '[object Int16Array]': true\n , '[object Int32Array]': true\n , '[object Uint8Array]': true\n , '[object Uint8ClampedArray]': true\n , '[object Uint16Array]': true\n , '[object Uint32Array]': true\n , '[object Float32Array]': true\n , '[object Float64Array]': true\n}\n\nfunction isTypedArray(arr) {\n return (\n isStrictTypedArray(arr)\n || isLooseTypedArray(arr)\n )\n}\n\nfunction isStrictTypedArray(arr) {\n return (\n arr instanceof Int8Array\n || arr instanceof Int16Array\n || arr instanceof Int32Array\n || arr instanceof Uint8Array\n || arr instanceof Uint8ClampedArray\n || arr instanceof Uint16Array\n || arr instanceof Uint32Array\n || arr instanceof Float32Array\n || arr instanceof Float64Array\n )\n}\n\nfunction isLooseTypedArray(arr) {\n return names[toString.call(arr)]\n}\n","var stream = require('stream')\n\n\nfunction isStream (obj) {\n return obj instanceof stream.Stream\n}\n\n\nfunction isReadable (obj) {\n return isStream(obj) && typeof obj._read == 'function' && typeof obj._readableState == 'object'\n}\n\n\nfunction isWritable (obj) {\n return isStream(obj) && typeof obj._write == 'function' && typeof obj._writableState == 'object'\n}\n\n\nfunction isDuplex (obj) {\n return isReadable(obj) && isWritable(obj)\n}\n\n\nmodule.exports = isStream\nmodule.exports.isReadable = isReadable\nmodule.exports.isWritable = isWritable\nmodule.exports.isDuplex = isDuplex\n","(function(){\n\n // Copyright (c) 2005 Tom Wu\n // All Rights Reserved.\n // See \"LICENSE\" for details.\n\n // Basic JavaScript BN library - subset useful for RSA encryption.\n\n // Bits per digit\n var dbits;\n\n // JavaScript engine analysis\n var canary = 0xdeadbeefcafe;\n var j_lm = ((canary&0xffffff)==0xefcafe);\n\n // (public) Constructor\n function BigInteger(a,b,c) {\n if(a != null)\n if(\"number\" == typeof a) this.fromNumber(a,b,c);\n else if(b == null && \"string\" != typeof a) this.fromString(a,256);\n else this.fromString(a,b);\n }\n\n // return new, unset BigInteger\n function nbi() { return new BigInteger(null); }\n\n // am: Compute w_j += (x*this_i), propagate carries,\n // c is initial carry, returns final carry.\n // c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n // We need to select the fastest one that works in this environment.\n\n // am1: use a single mult and divide to get the high bits,\n // max digit bits should be 26 because\n // max internal value = 2*dvalue^2-2*dvalue (< 2^53)\n function am1(i,x,w,j,c,n) {\n while(--n >= 0) {\n var v = x*this[i++]+w[j]+c;\n c = Math.floor(v/0x4000000);\n w[j++] = v&0x3ffffff;\n }\n return c;\n }\n // am2 avoids a big mult-and-extract completely.\n // Max digit bits should be <= 30 because we do bitwise ops\n // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n function am2(i,x,w,j,c,n) {\n var xl = x&0x7fff, xh = x>>15;\n while(--n >= 0) {\n var l = this[i]&0x7fff;\n var h = this[i++]>>15;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);\n c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n w[j++] = l&0x3fffffff;\n }\n return c;\n }\n // Alternately, set max digit bits to 28 since some\n // browsers slow down when dealing with 32-bit numbers.\n function am3(i,x,w,j,c,n) {\n var xl = x&0x3fff, xh = x>>14;\n while(--n >= 0) {\n var l = this[i]&0x3fff;\n var h = this[i++]>>14;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x3fff)<<14)+w[j]+c;\n c = (l>>28)+(m>>14)+xh*h;\n w[j++] = l&0xfffffff;\n }\n return c;\n }\n var inBrowser = typeof navigator !== \"undefined\";\n if(inBrowser && j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = am2;\n dbits = 30;\n }\n else if(inBrowser && j_lm && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = am1;\n dbits = 26;\n }\n else { // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n }\n\n BigInteger.prototype.DB = dbits;\n BigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i];\n r.t = this.t;\n r.s = this.s;\n }\n\n // (protected) set from integer value x, -DV <= x < DV\n function bnpFromInt(x) {\n this.t = 1;\n this.s = (x<0)?-1:0;\n if(x > 0) this[0] = x;\n else if(x < -1) this[0] = x+this.DV;\n else this.t = 0;\n }\n\n // return bigint initialized to value\n function nbv(i) { var r = nbi(); r.fromInt(i); return r; }\n\n // (protected) set from string and radix\n function bnpFromString(s,b) {\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 256) k = 8; // byte array\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else { this.fromRadix(s,b); return; }\n this.t = 0;\n this.s = 0;\n var i = s.length, mi = false, sh = 0;\n while(--i >= 0) {\n var x = (k==8)?s[i]&0xff:intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\") mi = true;\n continue;\n }\n mi = false;\n if(sh == 0)\n this[this.t++] = x;\n else if(sh+k > this.DB) {\n this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh));\n }\n else\n this[this.t-1] |= x<= this.DB) sh -= this.DB;\n }\n if(k == 8 && (s[0]&0x80) != 0) {\n this.s = -1;\n if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t;\n }\n\n // (public) return string representation in given radix\n function bnToString(b) {\n if(this.s < 0) return \"-\"+this.negate().toString(b);\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else return this.toRadix(b);\n var km = (1< 0) {\n if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }\n while(i >= 0) {\n if(p < k) {\n d = (this[i]&((1<>(p+=this.DB-k);\n }\n else {\n d = (this[i]>>(p-=k))&km;\n if(p <= 0) { p += this.DB; --i; }\n }\n if(d > 0) m = true;\n if(m) r += int2char(d);\n }\n }\n return m?r:\"0\";\n }\n\n // (public) -this\n function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }\n\n // (public) |this|\n function bnAbs() { return (this.s<0)?this.negate():this; }\n\n // (public) return + if this > a, - if this < a, 0 if equal\n function bnCompareTo(a) {\n var r = this.s-a.s;\n if(r != 0) return r;\n var i = this.t;\n r = i-a.t;\n if(r != 0) return (this.s<0)?-r:r;\n while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;\n return 0;\n }\n\n // returns bit length of the integer x\n function nbits(x) {\n var r = 1, t;\n if((t=x>>>16) != 0) { x = t; r += 16; }\n if((t=x>>8) != 0) { x = t; r += 8; }\n if((t=x>>4) != 0) { x = t; r += 4; }\n if((t=x>>2) != 0) { x = t; r += 2; }\n if((t=x>>1) != 0) { x = t; r += 1; }\n return r;\n }\n\n // (public) return the number of bits in \"this\"\n function bnBitLength() {\n if(this.t <= 0) return 0;\n return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));\n }\n\n // (protected) r = this << n*DB\n function bnpDLShiftTo(n,r) {\n var i;\n for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];\n for(i = n-1; i >= 0; --i) r[i] = 0;\n r.t = this.t+n;\n r.s = this.s;\n }\n\n // (protected) r = this >> n*DB\n function bnpDRShiftTo(n,r) {\n for(var i = n; i < this.t; ++i) r[i-n] = this[i];\n r.t = Math.max(this.t-n,0);\n r.s = this.s;\n }\n\n // (protected) r = this << n\n function bnpLShiftTo(n,r) {\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<= 0; --i) {\n r[i+ds+1] = (this[i]>>cbs)|c;\n c = (this[i]&bm)<= 0; --i) r[i] = 0;\n r[ds] = c;\n r.t = this.t+ds+1;\n r.s = this.s;\n r.clamp();\n }\n\n // (protected) r = this >> n\n function bnpRShiftTo(n,r) {\n r.s = this.s;\n var ds = Math.floor(n/this.DB);\n if(ds >= this.t) { r.t = 0; return; }\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<>bs;\n for(var i = ds+1; i < this.t; ++i) {\n r[i-ds-1] |= (this[i]&bm)<>bs;\n }\n if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB;\n }\n if(a.t < this.t) {\n c -= a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c -= a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c<0)?-1:0;\n if(c < -1) r[i++] = this.DV+c;\n else if(c > 0) r[i++] = c;\n r.t = i;\n r.clamp();\n }\n\n // (protected) r = this * a, r != this,a (HAC 14.12)\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyTo(a,r) {\n var x = this.abs(), y = a.abs();\n var i = x.t;\n r.t = i+y.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);\n r.s = 0;\n r.clamp();\n if(this.s != a.s) BigInteger.ZERO.subTo(r,r);\n }\n\n // (protected) r = this^2, r != this (HAC 14.16)\n function bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2*x.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < x.t-1; ++i) {\n var c = x.am(i,x[i],r,2*i,0,1);\n if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n r[i+x.t] -= x.DV;\n r[i+x.t+1] = 1;\n }\n }\n if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);\n r.s = 0;\n r.clamp();\n }\n\n // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n // r != q, this != m. q or r may be null.\n function bnpDivRemTo(m,q,r) {\n var pm = m.abs();\n if(pm.t <= 0) return;\n var pt = this.abs();\n if(pt.t < pm.t) {\n if(q != null) q.fromInt(0);\n if(r != null) this.copyTo(r);\n return;\n }\n if(r == null) r = nbi();\n var y = nbi(), ts = this.s, ms = m.s;\n var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus\n if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }\n else { pm.copyTo(y); pt.copyTo(r); }\n var ys = y.t;\n var y0 = y[ys-1];\n if(y0 == 0) return;\n var yt = y0*(1<1)?y[ys-2]>>this.F2:0);\n var d1 = this.FV/yt, d2 = (1<= 0) {\n r[r.t++] = 1;\n r.subTo(t,r);\n }\n BigInteger.ONE.dlShiftTo(ys,t);\n t.subTo(y,y); // \"negative\" y so we can replace sub with am later\n while(y.t < ys) y[y.t++] = 0;\n while(--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);\n if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out\n y.dlShiftTo(j,t);\n r.subTo(t,r);\n while(r[i] < --qd) r.subTo(t,r);\n }\n }\n if(q != null) {\n r.drShiftTo(ys,q);\n if(ts != ms) BigInteger.ZERO.subTo(q,q);\n }\n r.t = ys;\n r.clamp();\n if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder\n if(ts < 0) BigInteger.ZERO.subTo(r,r);\n }\n\n // (public) this mod a\n function bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a,null,r);\n if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);\n return r;\n }\n\n // Modular reduction using \"classic\" algorithm\n function Classic(m) { this.m = m; }\n function cConvert(x) {\n if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n else return x;\n }\n function cRevert(x) { return x; }\n function cReduce(x) { x.divRemTo(this.m,null,x); }\n function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n Classic.prototype.convert = cConvert;\n Classic.prototype.revert = cRevert;\n Classic.prototype.reduce = cReduce;\n Classic.prototype.mulTo = cMulTo;\n Classic.prototype.sqrTo = cSqrTo;\n\n // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n // justification:\n // xy == 1 (mod m)\n // xy = 1+km\n // xy(2-xy) = (1+km)(1-km)\n // x[y(2-xy)] = 1-k^2m^2\n // x[y(2-xy)] == 1 (mod m^2)\n // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n // JS multiply \"overflows\" differently from C/C++, so care is needed here.\n function bnpInvDigit() {\n if(this.t < 1) return 0;\n var x = this[0];\n if((x&1) == 0) return 0;\n var y = x&3; // y == 1/x mod 2^2\n y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4\n y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8\n y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y>0)?this.DV-y:-y;\n }\n\n // Montgomery reduction\n function Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp&0x7fff;\n this.mph = this.mp>>15;\n this.um = (1<<(m.DB-15))-1;\n this.mt2 = 2*m.t;\n }\n\n // xR mod m\n function montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t,r);\n r.divRemTo(this.m,null,r);\n if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);\n return r;\n }\n\n // x/R mod m\n function montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n }\n\n // x = x/R mod m (HAC 14.32)\n function montReduce(x) {\n while(x.t <= this.mt2) // pad x so am has enough room later\n x[x.t++] = 0;\n for(var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i]&0x7fff;\n var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i+this.m.t;\n x[j] += this.m.am(0,u0,x,i,0,this.m.t);\n // propagate carry\n while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }\n }\n x.clamp();\n x.drShiftTo(this.m.t,x);\n if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n }\n\n // r = \"x^2/R mod m\"; x != r\n function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n // r = \"xy/R mod m\"; x,y != r\n function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\n Montgomery.prototype.convert = montConvert;\n Montgomery.prototype.revert = montRevert;\n Montgomery.prototype.reduce = montReduce;\n Montgomery.prototype.mulTo = montMulTo;\n Montgomery.prototype.sqrTo = montSqrTo;\n\n // (protected) true iff this is even\n function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }\n\n // (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\n function bnpExp(e,z) {\n if(e > 0xffffffff || e < 1) return BigInteger.ONE;\n var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\n g.copyTo(r);\n while(--i >= 0) {\n z.sqrTo(r,r2);\n if((e&(1< 0) z.mulTo(r2,g,r);\n else { var t = r; r = r2; r2 = t; }\n }\n return z.revert(r);\n }\n\n // (public) this^e % m, 0 <= e < 2^32\n function bnModPowInt(e,m) {\n var z;\n if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n return this.exp(e,z);\n }\n\n // protected\n BigInteger.prototype.copyTo = bnpCopyTo;\n BigInteger.prototype.fromInt = bnpFromInt;\n BigInteger.prototype.fromString = bnpFromString;\n BigInteger.prototype.clamp = bnpClamp;\n BigInteger.prototype.dlShiftTo = bnpDLShiftTo;\n BigInteger.prototype.drShiftTo = bnpDRShiftTo;\n BigInteger.prototype.lShiftTo = bnpLShiftTo;\n BigInteger.prototype.rShiftTo = bnpRShiftTo;\n BigInteger.prototype.subTo = bnpSubTo;\n BigInteger.prototype.multiplyTo = bnpMultiplyTo;\n BigInteger.prototype.squareTo = bnpSquareTo;\n BigInteger.prototype.divRemTo = bnpDivRemTo;\n BigInteger.prototype.invDigit = bnpInvDigit;\n BigInteger.prototype.isEven = bnpIsEven;\n BigInteger.prototype.exp = bnpExp;\n\n // public\n BigInteger.prototype.toString = bnToString;\n BigInteger.prototype.negate = bnNegate;\n BigInteger.prototype.abs = bnAbs;\n BigInteger.prototype.compareTo = bnCompareTo;\n BigInteger.prototype.bitLength = bnBitLength;\n BigInteger.prototype.mod = bnMod;\n BigInteger.prototype.modPowInt = bnModPowInt;\n\n // \"constants\"\n BigInteger.ZERO = nbv(0);\n BigInteger.ONE = nbv(1);\n\n // Copyright (c) 2005-2009 Tom Wu\n // All Rights Reserved.\n // See \"LICENSE\" for details.\n\n // Extended JavaScript BN functions, required for RSA private ops.\n\n // Version 1.1: new BigInteger(\"0\", 10) returns \"proper\" zero\n // Version 1.2: square() API, isProbablePrime fix\n\n // (public)\n function bnClone() { var r = nbi(); this.copyTo(r); return r; }\n\n // (public) return value as integer\n function bnIntValue() {\n if(this.s < 0) {\n if(this.t == 1) return this[0]-this.DV;\n else if(this.t == 0) return -1;\n }\n else if(this.t == 1) return this[0];\n else if(this.t == 0) return 0;\n // assumes 16 < DB < 32\n return ((this[1]&((1<<(32-this.DB))-1))<>24; }\n\n // (public) return value as short (assumes DB>=16)\n function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; }\n\n // (protected) return x s.t. r^x < DV\n function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }\n\n // (public) 0 if this == 0, 1 if this > 0\n function bnSigNum() {\n if(this.s < 0) return -1;\n else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;\n else return 1;\n }\n\n // (protected) convert to radix string\n function bnpToRadix(b) {\n if(b == null) b = 10;\n if(this.signum() == 0 || b < 2 || b > 36) return \"0\";\n var cs = this.chunkSize(b);\n var a = Math.pow(b,cs);\n var d = nbv(a), y = nbi(), z = nbi(), r = \"\";\n this.divRemTo(d,y,z);\n while(y.signum() > 0) {\n r = (a+z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d,y,z);\n }\n return z.intValue().toString(b) + r;\n }\n\n // (protected) convert from radix string\n function bnpFromRadix(s,b) {\n this.fromInt(0);\n if(b == null) b = 10;\n var cs = this.chunkSize(b);\n var d = Math.pow(b,cs), mi = false, j = 0, w = 0;\n for(var i = 0; i < s.length; ++i) {\n var x = intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\" && this.signum() == 0) mi = true;\n continue;\n }\n w = b*w+x;\n if(++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w,0);\n j = 0;\n w = 0;\n }\n }\n if(j > 0) {\n this.dMultiply(Math.pow(b,j));\n this.dAddOffset(w,0);\n }\n if(mi) BigInteger.ZERO.subTo(this,this);\n }\n\n // (protected) alternate constructor\n function bnpFromNumber(a,b,c) {\n if(\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if(a < 2) this.fromInt(1);\n else {\n this.fromNumber(a,c);\n if(!this.testBit(a-1))\t// force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);\n if(this.isEven()) this.dAddOffset(1,0); // force odd\n while(!this.isProbablePrime(b)) {\n this.dAddOffset(2,0);\n if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);\n }\n }\n }\n else {\n // new BigInteger(int,RNG)\n var x = new Array(), t = a&7;\n x.length = (a>>3)+1;\n b.nextBytes(x);\n if(t > 0) x[0] &= ((1< 0) {\n if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p)\n r[k++] = d|(this.s<<(this.DB-p));\n while(i >= 0) {\n if(p < 8) {\n d = (this[i]&((1<>(p+=this.DB-8);\n }\n else {\n d = (this[i]>>(p-=8))&0xff;\n if(p <= 0) { p += this.DB; --i; }\n }\n if((d&0x80) != 0) d |= -256;\n if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;\n if(k > 0 || d != this.s) r[k++] = d;\n }\n }\n return r;\n }\n\n function bnEquals(a) { return(this.compareTo(a)==0); }\n function bnMin(a) { return(this.compareTo(a)<0)?this:a; }\n function bnMax(a) { return(this.compareTo(a)>0)?this:a; }\n\n // (protected) r = this op a (bitwise)\n function bnpBitwiseTo(a,op,r) {\n var i, f, m = Math.min(a.t,this.t);\n for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]);\n if(a.t < this.t) {\n f = a.s&this.DM;\n for(i = m; i < this.t; ++i) r[i] = op(this[i],f);\n r.t = this.t;\n }\n else {\n f = this.s&this.DM;\n for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);\n r.t = a.t;\n }\n r.s = op(this.s,a.s);\n r.clamp();\n }\n\n // (public) this & a\n function op_and(x,y) { return x&y; }\n function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }\n\n // (public) this | a\n function op_or(x,y) { return x|y; }\n function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }\n\n // (public) this ^ a\n function op_xor(x,y) { return x^y; }\n function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }\n\n // (public) this & ~a\n function op_andnot(x,y) { return x&~y; }\n function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }\n\n // (public) ~this\n function bnNot() {\n var r = nbi();\n for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i];\n r.t = this.t;\n r.s = ~this.s;\n return r;\n }\n\n // (public) this << n\n function bnShiftLeft(n) {\n var r = nbi();\n if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);\n return r;\n }\n\n // (public) this >> n\n function bnShiftRight(n) {\n var r = nbi();\n if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);\n return r;\n }\n\n // return index of lowest 1-bit in x, x < 2^31\n function lbit(x) {\n if(x == 0) return -1;\n var r = 0;\n if((x&0xffff) == 0) { x >>= 16; r += 16; }\n if((x&0xff) == 0) { x >>= 8; r += 8; }\n if((x&0xf) == 0) { x >>= 4; r += 4; }\n if((x&3) == 0) { x >>= 2; r += 2; }\n if((x&1) == 0) ++r;\n return r;\n }\n\n // (public) returns index of lowest 1-bit (or -1 if none)\n function bnGetLowestSetBit() {\n for(var i = 0; i < this.t; ++i)\n if(this[i] != 0) return i*this.DB+lbit(this[i]);\n if(this.s < 0) return this.t*this.DB;\n return -1;\n }\n\n // return number of 1 bits in x\n function cbit(x) {\n var r = 0;\n while(x != 0) { x &= x-1; ++r; }\n return r;\n }\n\n // (public) return number of set bits\n function bnBitCount() {\n var r = 0, x = this.s&this.DM;\n for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x);\n return r;\n }\n\n // (public) true iff nth bit is set\n function bnTestBit(n) {\n var j = Math.floor(n/this.DB);\n if(j >= this.t) return(this.s!=0);\n return((this[j]&(1<<(n%this.DB)))!=0);\n }\n\n // (protected) this op (1<>= this.DB;\n }\n if(a.t < this.t) {\n c += a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c += a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = (c<0)?-1:0;\n if(c > 0) r[i++] = c;\n else if(c < -1) r[i++] = this.DV+c;\n r.t = i;\n r.clamp();\n }\n\n // (public) this + a\n function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }\n\n // (public) this - a\n function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }\n\n // (public) this * a\n function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }\n\n // (public) this^2\n function bnSquare() { var r = nbi(); this.squareTo(r); return r; }\n\n // (public) this / a\n function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }\n\n // (public) this % a\n function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }\n\n // (public) [this/a,this%a]\n function bnDivideAndRemainder(a) {\n var q = nbi(), r = nbi();\n this.divRemTo(a,q,r);\n return new Array(q,r);\n }\n\n // (protected) this *= n, this >= 0, 1 < n < DV\n function bnpDMultiply(n) {\n this[this.t] = this.am(0,n-1,this,0,0,this.t);\n ++this.t;\n this.clamp();\n }\n\n // (protected) this += n << w words, this >= 0\n function bnpDAddOffset(n,w) {\n if(n == 0) return;\n while(this.t <= w) this[this.t++] = 0;\n this[w] += n;\n while(this[w] >= this.DV) {\n this[w] -= this.DV;\n if(++w >= this.t) this[this.t++] = 0;\n ++this[w];\n }\n }\n\n // A \"null\" reducer\n function NullExp() {}\n function nNop(x) { return x; }\n function nMulTo(x,y,r) { x.multiplyTo(y,r); }\n function nSqrTo(x,r) { x.squareTo(r); }\n\n NullExp.prototype.convert = nNop;\n NullExp.prototype.revert = nNop;\n NullExp.prototype.mulTo = nMulTo;\n NullExp.prototype.sqrTo = nSqrTo;\n\n // (public) this^e\n function bnPow(e) { return this.exp(e,new NullExp()); }\n\n // (protected) r = lower n words of \"this * a\", a.t <= n\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyLowerTo(a,n,r) {\n var i = Math.min(this.t+a.t,n);\n r.s = 0; // assumes a,this >= 0\n r.t = i;\n while(i > 0) r[--i] = 0;\n var j;\n for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t);\n for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i);\n r.clamp();\n }\n\n // (protected) r = \"this * a\" without lower n words, n > 0\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyUpperTo(a,n,r) {\n --n;\n var i = r.t = this.t+a.t-n;\n r.s = 0; // assumes a,this >= 0\n while(--i >= 0) r[i] = 0;\n for(i = Math.max(n-this.t,0); i < a.t; ++i)\n r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n);\n r.clamp();\n r.drShiftTo(1,r);\n }\n\n // Barrett modular reduction\n function Barrett(m) {\n // setup Barrett\n this.r2 = nbi();\n this.q3 = nbi();\n BigInteger.ONE.dlShiftTo(2*m.t,this.r2);\n this.mu = this.r2.divide(m);\n this.m = m;\n }\n\n function barrettConvert(x) {\n if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);\n else if(x.compareTo(this.m) < 0) return x;\n else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }\n }\n\n function barrettRevert(x) { return x; }\n\n // x = x mod m (HAC 14.42)\n function barrettReduce(x) {\n x.drShiftTo(this.m.t-1,this.r2);\n if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }\n this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);\n this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);\n while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);\n x.subTo(this.r2,x);\n while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n }\n\n // r = x^2 mod m; x != r\n function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n // r = x*y mod m; x,y != r\n function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\n Barrett.prototype.convert = barrettConvert;\n Barrett.prototype.revert = barrettRevert;\n Barrett.prototype.reduce = barrettReduce;\n Barrett.prototype.mulTo = barrettMulTo;\n Barrett.prototype.sqrTo = barrettSqrTo;\n\n // (public) this^e % m (HAC 14.85)\n function bnModPow(e,m) {\n var i = e.bitLength(), k, r = nbv(1), z;\n if(i <= 0) return r;\n else if(i < 18) k = 1;\n else if(i < 48) k = 3;\n else if(i < 144) k = 4;\n else if(i < 768) k = 5;\n else k = 6;\n if(i < 8)\n z = new Classic(m);\n else if(m.isEven())\n z = new Barrett(m);\n else\n z = new Montgomery(m);\n\n // precomputation\n var g = new Array(), n = 3, k1 = k-1, km = (1< 1) {\n var g2 = nbi();\n z.sqrTo(g[1],g2);\n while(n <= km) {\n g[n] = nbi();\n z.mulTo(g2,g[n-2],g[n]);\n n += 2;\n }\n }\n\n var j = e.t-1, w, is1 = true, r2 = nbi(), t;\n i = nbits(e[j])-1;\n while(j >= 0) {\n if(i >= k1) w = (e[j]>>(i-k1))&km;\n else {\n w = (e[j]&((1<<(i+1))-1))<<(k1-i);\n if(j > 0) w |= e[j-1]>>(this.DB+i-k1);\n }\n\n n = k;\n while((w&1) == 0) { w >>= 1; --n; }\n if((i -= n) < 0) { i += this.DB; --j; }\n if(is1) {\t// ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }\n if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }\n z.mulTo(r2,g[w],r);\n }\n\n while(j >= 0 && (e[j]&(1< 0) {\n x.rShiftTo(g,x);\n y.rShiftTo(g,y);\n }\n while(x.signum() > 0) {\n if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);\n if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);\n if(x.compareTo(y) >= 0) {\n x.subTo(y,x);\n x.rShiftTo(1,x);\n }\n else {\n y.subTo(x,y);\n y.rShiftTo(1,y);\n }\n }\n if(g > 0) y.lShiftTo(g,y);\n return y;\n }\n\n // (protected) this % n, n < 2^26\n function bnpModInt(n) {\n if(n <= 0) return 0;\n var d = this.DV%n, r = (this.s<0)?n-1:0;\n if(this.t > 0)\n if(d == 0) r = this[0]%n;\n else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n;\n return r;\n }\n\n // (public) 1/this % m (HAC 14.61)\n function bnModInverse(m) {\n var ac = m.isEven();\n if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;\n var u = m.clone(), v = this.clone();\n var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\n while(u.signum() != 0) {\n while(u.isEven()) {\n u.rShiftTo(1,u);\n if(ac) {\n if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }\n a.rShiftTo(1,a);\n }\n else if(!b.isEven()) b.subTo(m,b);\n b.rShiftTo(1,b);\n }\n while(v.isEven()) {\n v.rShiftTo(1,v);\n if(ac) {\n if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }\n c.rShiftTo(1,c);\n }\n else if(!d.isEven()) d.subTo(m,d);\n d.rShiftTo(1,d);\n }\n if(u.compareTo(v) >= 0) {\n u.subTo(v,u);\n if(ac) a.subTo(c,a);\n b.subTo(d,b);\n }\n else {\n v.subTo(u,v);\n if(ac) c.subTo(a,c);\n d.subTo(b,d);\n }\n }\n if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;\n if(d.compareTo(m) >= 0) return d.subtract(m);\n if(d.signum() < 0) d.addTo(m,d); else return d;\n if(d.signum() < 0) return d.add(m); else return d;\n }\n\n var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];\n var lplim = (1<<26)/lowprimes[lowprimes.length-1];\n\n // (public) test primality with certainty >= 1-.5^t\n function bnIsProbablePrime(t) {\n var i, x = this.abs();\n if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) {\n for(i = 0; i < lowprimes.length; ++i)\n if(x[0] == lowprimes[i]) return true;\n return false;\n }\n if(x.isEven()) return false;\n i = 1;\n while(i < lowprimes.length) {\n var m = lowprimes[i], j = i+1;\n while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];\n m = x.modInt(m);\n while(i < j) if(m%lowprimes[i++] == 0) return false;\n }\n return x.millerRabin(t);\n }\n\n // (protected) true if probably prime (HAC 4.24, Miller-Rabin)\n function bnpMillerRabin(t) {\n var n1 = this.subtract(BigInteger.ONE);\n var k = n1.getLowestSetBit();\n if(k <= 0) return false;\n var r = n1.shiftRight(k);\n t = (t+1)>>1;\n if(t > lowprimes.length) t = lowprimes.length;\n var a = nbi();\n for(var i = 0; i < t; ++i) {\n //Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);\n var y = a.modPow(r,this);\n if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while(j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2,this);\n if(y.compareTo(BigInteger.ONE) == 0) return false;\n }\n if(y.compareTo(n1) != 0) return false;\n }\n }\n return true;\n }\n\n // protected\n BigInteger.prototype.chunkSize = bnpChunkSize;\n BigInteger.prototype.toRadix = bnpToRadix;\n BigInteger.prototype.fromRadix = bnpFromRadix;\n BigInteger.prototype.fromNumber = bnpFromNumber;\n BigInteger.prototype.bitwiseTo = bnpBitwiseTo;\n BigInteger.prototype.changeBit = bnpChangeBit;\n BigInteger.prototype.addTo = bnpAddTo;\n BigInteger.prototype.dMultiply = bnpDMultiply;\n BigInteger.prototype.dAddOffset = bnpDAddOffset;\n BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\n BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\n BigInteger.prototype.modInt = bnpModInt;\n BigInteger.prototype.millerRabin = bnpMillerRabin;\n\n // public\n BigInteger.prototype.clone = bnClone;\n BigInteger.prototype.intValue = bnIntValue;\n BigInteger.prototype.byteValue = bnByteValue;\n BigInteger.prototype.shortValue = bnShortValue;\n BigInteger.prototype.signum = bnSigNum;\n BigInteger.prototype.toByteArray = bnToByteArray;\n BigInteger.prototype.equals = bnEquals;\n BigInteger.prototype.min = bnMin;\n BigInteger.prototype.max = bnMax;\n BigInteger.prototype.and = bnAnd;\n BigInteger.prototype.or = bnOr;\n BigInteger.prototype.xor = bnXor;\n BigInteger.prototype.andNot = bnAndNot;\n BigInteger.prototype.not = bnNot;\n BigInteger.prototype.shiftLeft = bnShiftLeft;\n BigInteger.prototype.shiftRight = bnShiftRight;\n BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\n BigInteger.prototype.bitCount = bnBitCount;\n BigInteger.prototype.testBit = bnTestBit;\n BigInteger.prototype.setBit = bnSetBit;\n BigInteger.prototype.clearBit = bnClearBit;\n BigInteger.prototype.flipBit = bnFlipBit;\n BigInteger.prototype.add = bnAdd;\n BigInteger.prototype.subtract = bnSubtract;\n BigInteger.prototype.multiply = bnMultiply;\n BigInteger.prototype.divide = bnDivide;\n BigInteger.prototype.remainder = bnRemainder;\n BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\n BigInteger.prototype.modPow = bnModPow;\n BigInteger.prototype.modInverse = bnModInverse;\n BigInteger.prototype.pow = bnPow;\n BigInteger.prototype.gcd = bnGCD;\n BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n\n // JSBN-specific extension\n BigInteger.prototype.square = bnSquare;\n\n // Expose the Barrett function\n BigInteger.prototype.Barrett = Barrett\n\n // BigInteger interfaces not implemented in jsbn:\n\n // BigInteger(int signum, byte[] magnitude)\n // double doubleValue()\n // float floatValue()\n // int hashCode()\n // long longValue()\n // static BigInteger valueOf(long val)\n\n\t// Random number generator - requires a PRNG backend, e.g. prng4.js\n\n\t// For best results, put code like\n\t// \n\t// in your main HTML document.\n\n\tvar rng_state;\n\tvar rng_pool;\n\tvar rng_pptr;\n\n\t// Mix in a 32-bit integer into the pool\n\tfunction rng_seed_int(x) {\n\t rng_pool[rng_pptr++] ^= x & 255;\n\t rng_pool[rng_pptr++] ^= (x >> 8) & 255;\n\t rng_pool[rng_pptr++] ^= (x >> 16) & 255;\n\t rng_pool[rng_pptr++] ^= (x >> 24) & 255;\n\t if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;\n\t}\n\n\t// Mix in the current time (w/milliseconds) into the pool\n\tfunction rng_seed_time() {\n\t rng_seed_int(new Date().getTime());\n\t}\n\n\t// Initialize the pool with junk if needed.\n\tif(rng_pool == null) {\n\t rng_pool = new Array();\n\t rng_pptr = 0;\n\t var t;\n\t if(typeof window !== \"undefined\" && window.crypto) {\n\t\tif (window.crypto.getRandomValues) {\n\t\t // Use webcrypto if available\n\t\t var ua = new Uint8Array(32);\n\t\t window.crypto.getRandomValues(ua);\n\t\t for(t = 0; t < 32; ++t)\n\t\t\trng_pool[rng_pptr++] = ua[t];\n\t\t}\n\t\telse if(navigator.appName == \"Netscape\" && navigator.appVersion < \"5\") {\n\t\t // Extract entropy (256 bits) from NS4 RNG if available\n\t\t var z = window.crypto.random(32);\n\t\t for(t = 0; t < z.length; ++t)\n\t\t\trng_pool[rng_pptr++] = z.charCodeAt(t) & 255;\n\t\t}\n\t }\n\t while(rng_pptr < rng_psize) { // extract some randomness from Math.random()\n\t\tt = Math.floor(65536 * Math.random());\n\t\trng_pool[rng_pptr++] = t >>> 8;\n\t\trng_pool[rng_pptr++] = t & 255;\n\t }\n\t rng_pptr = 0;\n\t rng_seed_time();\n\t //rng_seed_int(window.screenX);\n\t //rng_seed_int(window.screenY);\n\t}\n\n\tfunction rng_get_byte() {\n\t if(rng_state == null) {\n\t\trng_seed_time();\n\t\trng_state = prng_newstate();\n\t\trng_state.init(rng_pool);\n\t\tfor(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)\n\t\t rng_pool[rng_pptr] = 0;\n\t\trng_pptr = 0;\n\t\t//rng_pool = null;\n\t }\n\t // TODO: allow reseeding after first request\n\t return rng_state.next();\n\t}\n\n\tfunction rng_get_bytes(ba) {\n\t var i;\n\t for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();\n\t}\n\n\tfunction SecureRandom() {}\n\n\tSecureRandom.prototype.nextBytes = rng_get_bytes;\n\n\t// prng4.js - uses Arcfour as a PRNG\n\n\tfunction Arcfour() {\n\t this.i = 0;\n\t this.j = 0;\n\t this.S = new Array();\n\t}\n\n\t// Initialize arcfour context from key, an array of ints, each from [0..255]\n\tfunction ARC4init(key) {\n\t var i, j, t;\n\t for(i = 0; i < 256; ++i)\n\t\tthis.S[i] = i;\n\t j = 0;\n\t for(i = 0; i < 256; ++i) {\n\t\tj = (j + this.S[i] + key[i % key.length]) & 255;\n\t\tt = this.S[i];\n\t\tthis.S[i] = this.S[j];\n\t\tthis.S[j] = t;\n\t }\n\t this.i = 0;\n\t this.j = 0;\n\t}\n\n\tfunction ARC4next() {\n\t var t;\n\t this.i = (this.i + 1) & 255;\n\t this.j = (this.j + this.S[this.i]) & 255;\n\t t = this.S[this.i];\n\t this.S[this.i] = this.S[this.j];\n\t this.S[this.j] = t;\n\t return this.S[(t + this.S[this.i]) & 255];\n\t}\n\n\tArcfour.prototype.init = ARC4init;\n\tArcfour.prototype.next = ARC4next;\n\n\t// Plug in your RNG constructor here\n\tfunction prng_newstate() {\n\t return new Arcfour();\n\t}\n\n\t// Pool size must be a multiple of 4 and greater than 32.\n\t// An array of bytes the size of the pool will be passed to init()\n\tvar rng_psize = 256;\n\n BigInteger.SecureRandom = SecureRandom;\n BigInteger.BigInteger = BigInteger;\n if (typeof exports !== 'undefined') {\n exports = module.exports = BigInteger;\n } else {\n this.BigInteger = BigInteger;\n this.SecureRandom = SecureRandom;\n }\n\n}).call(this);\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i schema.maxItems){\r\n\t\t\t\t\t\taddError(\"There must be a maximum of \" + schema.maxItems + \" in the array\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else if(schema.properties || schema.additionalProperties){\r\n\t\t\t\t\terrors.concat(checkObj(value, schema.properties, path, schema.additionalProperties));\r\n\t\t\t\t}\r\n\t\t\t\tif(schema.pattern && typeof value == 'string' && !value.match(schema.pattern)){\r\n\t\t\t\t\taddError(\"does not match the regex pattern \" + schema.pattern);\r\n\t\t\t\t}\r\n\t\t\t\tif(schema.maxLength && typeof value == 'string' && value.length > schema.maxLength){\r\n\t\t\t\t\taddError(\"may only be \" + schema.maxLength + \" characters long\");\r\n\t\t\t\t}\r\n\t\t\t\tif(schema.minLength && typeof value == 'string' && value.length < schema.minLength){\r\n\t\t\t\t\taddError(\"must be at least \" + schema.minLength + \" characters long\");\r\n\t\t\t\t}\r\n\t\t\t\tif(typeof schema.minimum !== 'undefined' && typeof value == typeof schema.minimum &&\r\n\t\t\t\t\t\tschema.minimum > value){\r\n\t\t\t\t\taddError(\"must have a minimum value of \" + schema.minimum);\r\n\t\t\t\t}\r\n\t\t\t\tif(typeof schema.maximum !== 'undefined' && typeof value == typeof schema.maximum &&\r\n\t\t\t\t\t\tschema.maximum < value){\r\n\t\t\t\t\taddError(\"must have a maximum value of \" + schema.maximum);\r\n\t\t\t\t}\r\n\t\t\t\tif(schema['enum']){\r\n\t\t\t\t\tvar enumer = schema['enum'];\r\n\t\t\t\t\tl = enumer.length;\r\n\t\t\t\t\tvar found;\r\n\t\t\t\t\tfor(var j = 0; j < l; j++){\r\n\t\t\t\t\t\tif(enumer[j]===value){\r\n\t\t\t\t\t\t\tfound=1;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(!found){\r\n\t\t\t\t\t\taddError(\"does not have a value in the enumeration \" + enumer.join(\", \"));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(typeof schema.maxDecimal == 'number' &&\r\n\t\t\t\t\t(value.toString().match(new RegExp(\"\\\\.[0-9]{\" + (schema.maxDecimal + 1) + \",}\")))){\r\n\t\t\t\t\taddError(\"may only have \" + schema.maxDecimal + \" digits of decimal places\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\t// validate an object against a schema\r\n\tfunction checkObj(instance,objTypeDef,path,additionalProp){\r\n\r\n\t\tif(typeof objTypeDef =='object'){\r\n\t\t\tif(typeof instance != 'object' || instance instanceof Array){\r\n\t\t\t\terrors.push({property:path,message:\"an object is required\"});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tfor(var i in objTypeDef){ \r\n\t\t\t\tif(objTypeDef.hasOwnProperty(i) && i != '__proto__' && i != 'constructor'){\r\n\t\t\t\t\tvar value = instance.hasOwnProperty(i) ? instance[i] : undefined;\r\n\t\t\t\t\t// skip _not_ specified properties\r\n\t\t\t\t\tif (value === undefined && options.existingOnly) continue;\r\n\t\t\t\t\tvar propDef = objTypeDef[i];\r\n\t\t\t\t\t// set default\r\n\t\t\t\t\tif(value === undefined && propDef[\"default\"]){\r\n\t\t\t\t\t\tvalue = instance[i] = propDef[\"default\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(options.coerce && i in instance){\r\n\t\t\t\t\t\tvalue = instance[i] = options.coerce(value, propDef);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcheckProp(value,propDef,path,i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor(i in instance){\r\n\t\t\tif(instance.hasOwnProperty(i) && !(i.charAt(0) == '_' && i.charAt(1) == '_') && objTypeDef && !objTypeDef[i] && additionalProp===false){\r\n\t\t\t\tif (options.filter) {\r\n\t\t\t\t\tdelete instance[i];\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\terrors.push({property:path,message:\"The property \" + i +\r\n\t\t\t\t\t\t\" is not defined in the schema and the schema does not allow additional properties\"});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar requires = objTypeDef && objTypeDef[i] && objTypeDef[i].requires;\r\n\t\t\tif(requires && !(requires in instance)){\r\n\t\t\t\terrors.push({property:path,message:\"the presence of the property \" + i + \" requires that \" + requires + \" also be present\"});\r\n\t\t\t}\r\n\t\t\tvalue = instance[i];\r\n\t\t\tif(additionalProp && (!(objTypeDef && typeof objTypeDef == 'object') || !(i in objTypeDef))){\r\n\t\t\t\tif(options.coerce){\r\n\t\t\t\t\tvalue = instance[i] = options.coerce(value, additionalProp);\r\n\t\t\t\t}\r\n\t\t\t\tcheckProp(value,additionalProp,path,i);\r\n\t\t\t}\r\n\t\t\tif(!_changing && value && value.$schema){\r\n\t\t\t\terrors = errors.concat(checkProp(value,value.$schema,path,i));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn errors;\r\n\t}\r\n\tif(schema){\r\n\t\tcheckProp(instance,schema,'',_changing || '');\r\n\t}\r\n\tif(!_changing && instance && instance.$schema){\r\n\t\tcheckProp(instance,instance.$schema,'','');\r\n\t}\r\n\treturn {valid:!errors.length,errors:errors};\r\n};\r\nexports.mustBeValid = function(result){\r\n\t//\tsummary:\r\n\t//\t\tThis checks to ensure that the result is valid and will throw an appropriate error message if it is not\r\n\t// result: the result returned from checkPropertyChange or validate\r\n\tif(!result.valid){\r\n\t\tthrow new TypeError(result.errors.map(function(error){return \"for property \" + error.property + ': ' + error.message;}).join(\", \\n\"));\r\n\t}\r\n}\r\n\r\nreturn exports;\r\n}));\r\n","exports = module.exports = stringify\nexports.getSerialize = serializer\n\nfunction stringify(obj, replacer, spaces, cycleReplacer) {\n return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces)\n}\n\nfunction serializer(replacer, cycleReplacer) {\n var stack = [], keys = []\n\n if (cycleReplacer == null) cycleReplacer = function(key, value) {\n if (stack[0] === value) return \"[Circular ~]\"\n return \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\"\n }\n\n return function(key, value) {\n if (stack.length > 0) {\n var thisPos = stack.indexOf(this)\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this)\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)\n if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value)\n }\n else stack.push(value)\n\n return replacer == null ? value : replacer.call(this, key, value)\n }\n}\n","/*\n * lib/jsprim.js: utilities for primitive JavaScript types\n */\n\nvar mod_assert = require('assert-plus');\nvar mod_util = require('util');\n\nvar mod_extsprintf = require('extsprintf');\nvar mod_verror = require('verror');\nvar mod_jsonschema = require('json-schema');\n\n/*\n * Public interface\n */\nexports.deepCopy = deepCopy;\nexports.deepEqual = deepEqual;\nexports.isEmpty = isEmpty;\nexports.hasKey = hasKey;\nexports.forEachKey = forEachKey;\nexports.pluck = pluck;\nexports.flattenObject = flattenObject;\nexports.flattenIter = flattenIter;\nexports.validateJsonObject = validateJsonObjectJS;\nexports.validateJsonObjectJS = validateJsonObjectJS;\nexports.randElt = randElt;\nexports.extraProperties = extraProperties;\nexports.mergeObjects = mergeObjects;\n\nexports.startsWith = startsWith;\nexports.endsWith = endsWith;\n\nexports.parseInteger = parseInteger;\n\nexports.iso8601 = iso8601;\nexports.rfc1123 = rfc1123;\nexports.parseDateTime = parseDateTime;\n\nexports.hrtimediff = hrtimeDiff;\nexports.hrtimeDiff = hrtimeDiff;\nexports.hrtimeAccum = hrtimeAccum;\nexports.hrtimeAdd = hrtimeAdd;\nexports.hrtimeNanosec = hrtimeNanosec;\nexports.hrtimeMicrosec = hrtimeMicrosec;\nexports.hrtimeMillisec = hrtimeMillisec;\n\n\n/*\n * Deep copy an acyclic *basic* Javascript object. This only handles basic\n * scalars (strings, numbers, booleans) and arbitrarily deep arrays and objects\n * containing these. This does *not* handle instances of other classes.\n */\nfunction deepCopy(obj)\n{\n\tvar ret, key;\n\tvar marker = '__deepCopy';\n\n\tif (obj && obj[marker])\n\t\tthrow (new Error('attempted deep copy of cyclic object'));\n\n\tif (obj && obj.constructor == Object) {\n\t\tret = {};\n\t\tobj[marker] = true;\n\n\t\tfor (key in obj) {\n\t\t\tif (key == marker)\n\t\t\t\tcontinue;\n\n\t\t\tret[key] = deepCopy(obj[key]);\n\t\t}\n\n\t\tdelete (obj[marker]);\n\t\treturn (ret);\n\t}\n\n\tif (obj && obj.constructor == Array) {\n\t\tret = [];\n\t\tobj[marker] = true;\n\n\t\tfor (key = 0; key < obj.length; key++)\n\t\t\tret.push(deepCopy(obj[key]));\n\n\t\tdelete (obj[marker]);\n\t\treturn (ret);\n\t}\n\n\t/*\n\t * It must be a primitive type -- just return it.\n\t */\n\treturn (obj);\n}\n\nfunction deepEqual(obj1, obj2)\n{\n\tif (typeof (obj1) != typeof (obj2))\n\t\treturn (false);\n\n\tif (obj1 === null || obj2 === null || typeof (obj1) != 'object')\n\t\treturn (obj1 === obj2);\n\n\tif (obj1.constructor != obj2.constructor)\n\t\treturn (false);\n\n\tvar k;\n\tfor (k in obj1) {\n\t\tif (!obj2.hasOwnProperty(k))\n\t\t\treturn (false);\n\n\t\tif (!deepEqual(obj1[k], obj2[k]))\n\t\t\treturn (false);\n\t}\n\n\tfor (k in obj2) {\n\t\tif (!obj1.hasOwnProperty(k))\n\t\t\treturn (false);\n\t}\n\n\treturn (true);\n}\n\nfunction isEmpty(obj)\n{\n\tvar key;\n\tfor (key in obj)\n\t\treturn (false);\n\treturn (true);\n}\n\nfunction hasKey(obj, key)\n{\n\tmod_assert.equal(typeof (key), 'string');\n\treturn (Object.prototype.hasOwnProperty.call(obj, key));\n}\n\nfunction forEachKey(obj, callback)\n{\n\tfor (var key in obj) {\n\t\tif (hasKey(obj, key)) {\n\t\t\tcallback(key, obj[key]);\n\t\t}\n\t}\n}\n\nfunction pluck(obj, key)\n{\n\tmod_assert.equal(typeof (key), 'string');\n\treturn (pluckv(obj, key));\n}\n\nfunction pluckv(obj, key)\n{\n\tif (obj === null || typeof (obj) !== 'object')\n\t\treturn (undefined);\n\n\tif (obj.hasOwnProperty(key))\n\t\treturn (obj[key]);\n\n\tvar i = key.indexOf('.');\n\tif (i == -1)\n\t\treturn (undefined);\n\n\tvar key1 = key.substr(0, i);\n\tif (!obj.hasOwnProperty(key1))\n\t\treturn (undefined);\n\n\treturn (pluckv(obj[key1], key.substr(i + 1)));\n}\n\n/*\n * Invoke callback(row) for each entry in the array that would be returned by\n * flattenObject(data, depth). This is just like flattenObject(data,\n * depth).forEach(callback), except that the intermediate array is never\n * created.\n */\nfunction flattenIter(data, depth, callback)\n{\n\tdoFlattenIter(data, depth, [], callback);\n}\n\nfunction doFlattenIter(data, depth, accum, callback)\n{\n\tvar each;\n\tvar key;\n\n\tif (depth === 0) {\n\t\teach = accum.slice(0);\n\t\teach.push(data);\n\t\tcallback(each);\n\t\treturn;\n\t}\n\n\tmod_assert.ok(data !== null);\n\tmod_assert.equal(typeof (data), 'object');\n\tmod_assert.equal(typeof (depth), 'number');\n\tmod_assert.ok(depth >= 0);\n\n\tfor (key in data) {\n\t\teach = accum.slice(0);\n\t\teach.push(key);\n\t\tdoFlattenIter(data[key], depth - 1, each, callback);\n\t}\n}\n\nfunction flattenObject(data, depth)\n{\n\tif (depth === 0)\n\t\treturn ([ data ]);\n\n\tmod_assert.ok(data !== null);\n\tmod_assert.equal(typeof (data), 'object');\n\tmod_assert.equal(typeof (depth), 'number');\n\tmod_assert.ok(depth >= 0);\n\n\tvar rv = [];\n\tvar key;\n\n\tfor (key in data) {\n\t\tflattenObject(data[key], depth - 1).forEach(function (p) {\n\t\t\trv.push([ key ].concat(p));\n\t\t});\n\t}\n\n\treturn (rv);\n}\n\nfunction startsWith(str, prefix)\n{\n\treturn (str.substr(0, prefix.length) == prefix);\n}\n\nfunction endsWith(str, suffix)\n{\n\treturn (str.substr(\n\t str.length - suffix.length, suffix.length) == suffix);\n}\n\nfunction iso8601(d)\n{\n\tif (typeof (d) == 'number')\n\t\td = new Date(d);\n\tmod_assert.ok(d.constructor === Date);\n\treturn (mod_extsprintf.sprintf('%4d-%02d-%02dT%02d:%02d:%02d.%03dZ',\n\t d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate(),\n\t d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(),\n\t d.getUTCMilliseconds()));\n}\n\nvar RFC1123_MONTHS = [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nvar RFC1123_DAYS = [\n 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\nfunction rfc1123(date) {\n\treturn (mod_extsprintf.sprintf('%s, %02d %s %04d %02d:%02d:%02d GMT',\n\t RFC1123_DAYS[date.getUTCDay()], date.getUTCDate(),\n\t RFC1123_MONTHS[date.getUTCMonth()], date.getUTCFullYear(),\n\t date.getUTCHours(), date.getUTCMinutes(),\n\t date.getUTCSeconds()));\n}\n\n/*\n * Parses a date expressed as a string, as either a number of milliseconds since\n * the epoch or any string format that Date accepts, giving preference to the\n * former where these two sets overlap (e.g., small numbers).\n */\nfunction parseDateTime(str)\n{\n\t/*\n\t * This is irritatingly implicit, but significantly more concise than\n\t * alternatives. The \"+str\" will convert a string containing only a\n\t * number directly to a Number, or NaN for other strings. Thus, if the\n\t * conversion succeeds, we use it (this is the milliseconds-since-epoch\n\t * case). Otherwise, we pass the string directly to the Date\n\t * constructor to parse.\n\t */\n\tvar numeric = +str;\n\tif (!isNaN(numeric)) {\n\t\treturn (new Date(numeric));\n\t} else {\n\t\treturn (new Date(str));\n\t}\n}\n\n\n/*\n * Number.*_SAFE_INTEGER isn't present before node v0.12, so we hardcode\n * the ES6 definitions here, while allowing for them to someday be higher.\n */\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\nvar MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\n\n\n/*\n * Default options for parseInteger().\n */\nvar PI_DEFAULTS = {\n\tbase: 10,\n\tallowSign: true,\n\tallowPrefix: false,\n\tallowTrailing: false,\n\tallowImprecise: false,\n\ttrimWhitespace: false,\n\tleadingZeroIsOctal: false\n};\n\nvar CP_0 = 0x30;\nvar CP_9 = 0x39;\n\nvar CP_A = 0x41;\nvar CP_B = 0x42;\nvar CP_O = 0x4f;\nvar CP_T = 0x54;\nvar CP_X = 0x58;\nvar CP_Z = 0x5a;\n\nvar CP_a = 0x61;\nvar CP_b = 0x62;\nvar CP_o = 0x6f;\nvar CP_t = 0x74;\nvar CP_x = 0x78;\nvar CP_z = 0x7a;\n\nvar PI_CONV_DEC = 0x30;\nvar PI_CONV_UC = 0x37;\nvar PI_CONV_LC = 0x57;\n\n\n/*\n * A stricter version of parseInt() that provides options for changing what\n * is an acceptable string (for example, disallowing trailing characters).\n */\nfunction parseInteger(str, uopts)\n{\n\tmod_assert.string(str, 'str');\n\tmod_assert.optionalObject(uopts, 'options');\n\n\tvar baseOverride = false;\n\tvar options = PI_DEFAULTS;\n\n\tif (uopts) {\n\t\tbaseOverride = hasKey(uopts, 'base');\n\t\toptions = mergeObjects(options, uopts);\n\t\tmod_assert.number(options.base, 'options.base');\n\t\tmod_assert.ok(options.base >= 2, 'options.base >= 2');\n\t\tmod_assert.ok(options.base <= 36, 'options.base <= 36');\n\t\tmod_assert.bool(options.allowSign, 'options.allowSign');\n\t\tmod_assert.bool(options.allowPrefix, 'options.allowPrefix');\n\t\tmod_assert.bool(options.allowTrailing,\n\t\t 'options.allowTrailing');\n\t\tmod_assert.bool(options.allowImprecise,\n\t\t 'options.allowImprecise');\n\t\tmod_assert.bool(options.trimWhitespace,\n\t\t 'options.trimWhitespace');\n\t\tmod_assert.bool(options.leadingZeroIsOctal,\n\t\t 'options.leadingZeroIsOctal');\n\n\t\tif (options.leadingZeroIsOctal) {\n\t\t\tmod_assert.ok(!baseOverride,\n\t\t\t '\"base\" and \"leadingZeroIsOctal\" are ' +\n\t\t\t 'mutually exclusive');\n\t\t}\n\t}\n\n\tvar c;\n\tvar pbase = -1;\n\tvar base = options.base;\n\tvar start;\n\tvar mult = 1;\n\tvar value = 0;\n\tvar idx = 0;\n\tvar len = str.length;\n\n\t/* Trim any whitespace on the left side. */\n\tif (options.trimWhitespace) {\n\t\twhile (idx < len && isSpace(str.charCodeAt(idx))) {\n\t\t\t++idx;\n\t\t}\n\t}\n\n\t/* Check the number for a leading sign. */\n\tif (options.allowSign) {\n\t\tif (str[idx] === '-') {\n\t\t\tidx += 1;\n\t\t\tmult = -1;\n\t\t} else if (str[idx] === '+') {\n\t\t\tidx += 1;\n\t\t}\n\t}\n\n\t/* Parse the base-indicating prefix if there is one. */\n\tif (str[idx] === '0') {\n\t\tif (options.allowPrefix) {\n\t\t\tpbase = prefixToBase(str.charCodeAt(idx + 1));\n\t\t\tif (pbase !== -1 && (!baseOverride || pbase === base)) {\n\t\t\t\tbase = pbase;\n\t\t\t\tidx += 2;\n\t\t\t}\n\t\t}\n\n\t\tif (pbase === -1 && options.leadingZeroIsOctal) {\n\t\t\tbase = 8;\n\t\t}\n\t}\n\n\t/* Parse the actual digits. */\n\tfor (start = idx; idx < len; ++idx) {\n\t\tc = translateDigit(str.charCodeAt(idx));\n\t\tif (c !== -1 && c < base) {\n\t\t\tvalue *= base;\n\t\t\tvalue += c;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* If we didn't parse any digits, we have an invalid number. */\n\tif (start === idx) {\n\t\treturn (new Error('invalid number: ' + JSON.stringify(str)));\n\t}\n\n\t/* Trim any whitespace on the right side. */\n\tif (options.trimWhitespace) {\n\t\twhile (idx < len && isSpace(str.charCodeAt(idx))) {\n\t\t\t++idx;\n\t\t}\n\t}\n\n\t/* Check for trailing characters. */\n\tif (idx < len && !options.allowTrailing) {\n\t\treturn (new Error('trailing characters after number: ' +\n\t\t JSON.stringify(str.slice(idx))));\n\t}\n\n\t/* If our value is 0, we return now, to avoid returning -0. */\n\tif (value === 0) {\n\t\treturn (0);\n\t}\n\n\t/* Calculate our final value. */\n\tvar result = value * mult;\n\n\t/*\n\t * If the string represents a value that cannot be precisely represented\n\t * by JavaScript, then we want to check that:\n\t *\n\t * - We never increased the value past MAX_SAFE_INTEGER\n\t * - We don't make the result negative and below MIN_SAFE_INTEGER\n\t *\n\t * Because we only ever increment the value during parsing, there's no\n\t * chance of moving past MAX_SAFE_INTEGER and then dropping below it\n\t * again, losing precision in the process. This means that we only need\n\t * to do our checks here, at the end.\n\t */\n\tif (!options.allowImprecise &&\n\t (value > MAX_SAFE_INTEGER || result < MIN_SAFE_INTEGER)) {\n\t\treturn (new Error('number is outside of the supported range: ' +\n\t\t JSON.stringify(str.slice(start, idx))));\n\t}\n\n\treturn (result);\n}\n\n\n/*\n * Interpret a character code as a base-36 digit.\n */\nfunction translateDigit(d)\n{\n\tif (d >= CP_0 && d <= CP_9) {\n\t\t/* '0' to '9' -> 0 to 9 */\n\t\treturn (d - PI_CONV_DEC);\n\t} else if (d >= CP_A && d <= CP_Z) {\n\t\t/* 'A' - 'Z' -> 10 to 35 */\n\t\treturn (d - PI_CONV_UC);\n\t} else if (d >= CP_a && d <= CP_z) {\n\t\t/* 'a' - 'z' -> 10 to 35 */\n\t\treturn (d - PI_CONV_LC);\n\t} else {\n\t\t/* Invalid character code */\n\t\treturn (-1);\n\t}\n}\n\n\n/*\n * Test if a value matches the ECMAScript definition of trimmable whitespace.\n */\nfunction isSpace(c)\n{\n\treturn (c === 0x20) ||\n\t (c >= 0x0009 && c <= 0x000d) ||\n\t (c === 0x00a0) ||\n\t (c === 0x1680) ||\n\t (c === 0x180e) ||\n\t (c >= 0x2000 && c <= 0x200a) ||\n\t (c === 0x2028) ||\n\t (c === 0x2029) ||\n\t (c === 0x202f) ||\n\t (c === 0x205f) ||\n\t (c === 0x3000) ||\n\t (c === 0xfeff);\n}\n\n\n/*\n * Determine which base a character indicates (e.g., 'x' indicates hex).\n */\nfunction prefixToBase(c)\n{\n\tif (c === CP_b || c === CP_B) {\n\t\t/* 0b/0B (binary) */\n\t\treturn (2);\n\t} else if (c === CP_o || c === CP_O) {\n\t\t/* 0o/0O (octal) */\n\t\treturn (8);\n\t} else if (c === CP_t || c === CP_T) {\n\t\t/* 0t/0T (decimal) */\n\t\treturn (10);\n\t} else if (c === CP_x || c === CP_X) {\n\t\t/* 0x/0X (hexadecimal) */\n\t\treturn (16);\n\t} else {\n\t\t/* Not a meaningful character */\n\t\treturn (-1);\n\t}\n}\n\n\nfunction validateJsonObjectJS(schema, input)\n{\n\tvar report = mod_jsonschema.validate(input, schema);\n\n\tif (report.errors.length === 0)\n\t\treturn (null);\n\n\t/* Currently, we only do anything useful with the first error. */\n\tvar error = report.errors[0];\n\n\t/* The failed property is given by a URI with an irrelevant prefix. */\n\tvar propname = error['property'];\n\tvar reason = error['message'].toLowerCase();\n\tvar i, j;\n\n\t/*\n\t * There's at least one case where the property error message is\n\t * confusing at best. We work around this here.\n\t */\n\tif ((i = reason.indexOf('the property ')) != -1 &&\n\t (j = reason.indexOf(' is not defined in the schema and the ' +\n\t 'schema does not allow additional properties')) != -1) {\n\t\ti += 'the property '.length;\n\t\tif (propname === '')\n\t\t\tpropname = reason.substr(i, j - i);\n\t\telse\n\t\t\tpropname = propname + '.' + reason.substr(i, j - i);\n\n\t\treason = 'unsupported property';\n\t}\n\n\tvar rv = new mod_verror.VError('property \"%s\": %s', propname, reason);\n\trv.jsv_details = error;\n\treturn (rv);\n}\n\nfunction randElt(arr)\n{\n\tmod_assert.ok(Array.isArray(arr) && arr.length > 0,\n\t 'randElt argument must be a non-empty array');\n\n\treturn (arr[Math.floor(Math.random() * arr.length)]);\n}\n\nfunction assertHrtime(a)\n{\n\tmod_assert.ok(a[0] >= 0 && a[1] >= 0,\n\t 'negative numbers not allowed in hrtimes');\n\tmod_assert.ok(a[1] < 1e9, 'nanoseconds column overflow');\n}\n\n/*\n * Compute the time elapsed between hrtime readings A and B, where A is later\n * than B. hrtime readings come from Node's process.hrtime(). There is no\n * defined way to represent negative deltas, so it's illegal to diff B from A\n * where the time denoted by B is later than the time denoted by A. If this\n * becomes valuable, we can define a representation and extend the\n * implementation to support it.\n */\nfunction hrtimeDiff(a, b)\n{\n\tassertHrtime(a);\n\tassertHrtime(b);\n\tmod_assert.ok(a[0] > b[0] || (a[0] == b[0] && a[1] >= b[1]),\n\t 'negative differences not allowed');\n\n\tvar rv = [ a[0] - b[0], 0 ];\n\n\tif (a[1] >= b[1]) {\n\t\trv[1] = a[1] - b[1];\n\t} else {\n\t\trv[0]--;\n\t\trv[1] = 1e9 - (b[1] - a[1]);\n\t}\n\n\treturn (rv);\n}\n\n/*\n * Convert a hrtime reading from the array format returned by Node's\n * process.hrtime() into a scalar number of nanoseconds.\n */\nfunction hrtimeNanosec(a)\n{\n\tassertHrtime(a);\n\n\treturn (Math.floor(a[0] * 1e9 + a[1]));\n}\n\n/*\n * Convert a hrtime reading from the array format returned by Node's\n * process.hrtime() into a scalar number of microseconds.\n */\nfunction hrtimeMicrosec(a)\n{\n\tassertHrtime(a);\n\n\treturn (Math.floor(a[0] * 1e6 + a[1] / 1e3));\n}\n\n/*\n * Convert a hrtime reading from the array format returned by Node's\n * process.hrtime() into a scalar number of milliseconds.\n */\nfunction hrtimeMillisec(a)\n{\n\tassertHrtime(a);\n\n\treturn (Math.floor(a[0] * 1e3 + a[1] / 1e6));\n}\n\n/*\n * Add two hrtime readings A and B, overwriting A with the result of the\n * addition. This function is useful for accumulating several hrtime intervals\n * into a counter. Returns A.\n */\nfunction hrtimeAccum(a, b)\n{\n\tassertHrtime(a);\n\tassertHrtime(b);\n\n\t/*\n\t * Accumulate the nanosecond component.\n\t */\n\ta[1] += b[1];\n\tif (a[1] >= 1e9) {\n\t\t/*\n\t\t * The nanosecond component overflowed, so carry to the seconds\n\t\t * field.\n\t\t */\n\t\ta[0]++;\n\t\ta[1] -= 1e9;\n\t}\n\n\t/*\n\t * Accumulate the seconds component.\n\t */\n\ta[0] += b[0];\n\n\treturn (a);\n}\n\n/*\n * Add two hrtime readings A and B, returning the result as a new hrtime array.\n * Does not modify either input argument.\n */\nfunction hrtimeAdd(a, b)\n{\n\tassertHrtime(a);\n\n\tvar rv = [ a[0], a[1] ];\n\n\treturn (hrtimeAccum(rv, b));\n}\n\n\n/*\n * Check an object for unexpected properties. Accepts the object to check, and\n * an array of allowed property names (strings). Returns an array of key names\n * that were found on the object, but did not appear in the list of allowed\n * properties. If no properties were found, the returned array will be of\n * zero length.\n */\nfunction extraProperties(obj, allowed)\n{\n\tmod_assert.ok(typeof (obj) === 'object' && obj !== null,\n\t 'obj argument must be a non-null object');\n\tmod_assert.ok(Array.isArray(allowed),\n\t 'allowed argument must be an array of strings');\n\tfor (var i = 0; i < allowed.length; i++) {\n\t\tmod_assert.ok(typeof (allowed[i]) === 'string',\n\t\t 'allowed argument must be an array of strings');\n\t}\n\n\treturn (Object.keys(obj).filter(function (key) {\n\t\treturn (allowed.indexOf(key) === -1);\n\t}));\n}\n\n/*\n * Given three sets of properties \"provided\" (may be undefined), \"overrides\"\n * (required), and \"defaults\" (may be undefined), construct an object containing\n * the union of these sets with \"overrides\" overriding \"provided\", and\n * \"provided\" overriding \"defaults\". None of the input objects are modified.\n */\nfunction mergeObjects(provided, overrides, defaults)\n{\n\tvar rv, k;\n\n\trv = {};\n\tif (defaults) {\n\t\tfor (k in defaults)\n\t\t\trv[k] = defaults[k];\n\t}\n\n\tif (provided) {\n\t\tfor (k in provided)\n\t\t\trv[k] = provided[k];\n\t}\n\n\tif (overrides) {\n\t\tfor (k in overrides)\n\t\t\trv[k] = overrides[k];\n\t}\n\n\treturn (rv);\n}\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n","/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && db[match[1].toLowerCase()]\n\n if (mime && mime.charset) {\n return mime.charset\n }\n\n // default text/* to utf-8\n if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n return 'UTF-8'\n }\n\n return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n // TODO: should this even be in this module?\n if (!str || typeof str !== 'string') {\n return false\n }\n\n var mime = str.indexOf('/') === -1\n ? exports.lookup(str)\n : str\n\n if (!mime) {\n return false\n }\n\n // TODO: use content-type or other module\n if (mime.indexOf('charset') === -1) {\n var charset = exports.charset(mime)\n if (charset) mime += '; charset=' + charset.toLowerCase()\n }\n\n return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n // get extensions\n var exts = match && exports.extensions[match[1].toLowerCase()]\n\n if (!exts || !exts.length) {\n return false\n }\n\n return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n if (!path || typeof path !== 'string') {\n return false\n }\n\n // get the extension (\"ext\" or \".ext\" or full path)\n var extension = extname('x.' + path)\n .toLowerCase()\n .substr(1)\n\n if (!extension) {\n return false\n }\n\n return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n // source preference (least -> most)\n var preference = ['nginx', 'apache', undefined, 'iana']\n\n Object.keys(db).forEach(function forEachMimeType (type) {\n var mime = db[type]\n var exts = mime.extensions\n\n if (!exts || !exts.length) {\n return\n }\n\n // mime -> extensions\n extensions[type] = exts\n\n // extension -> mime\n for (var i = 0; i < exts.length; i++) {\n var extension = exts[i]\n\n if (types[extension]) {\n var from = preference.indexOf(db[types[extension]].source)\n var to = preference.indexOf(mime.source)\n\n if (types[extension] !== 'application/octet-stream' &&\n (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n // skip the remapping\n continue\n }\n }\n\n // set the extension -> mime\n types[extension] = type\n }\n })\n}\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","/*\nCopyright 2013 Sleepless Software Inc. All rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to\ndeal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or\nsell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE. \n*/\n\n// yes, I know this seems stupid, but I have my reasons.\n\nvar net = require(\"net\")\nfor(k in net)\n\tglobal[k] = net[k]\n\n","var crypto = require('crypto')\n\nfunction sha (key, body, algorithm) {\n return crypto.createHmac(algorithm, key).update(body).digest('base64')\n}\n\nfunction rsa (key, body) {\n return crypto.createSign('RSA-SHA1').update(body).sign(key, 'base64')\n}\n\nfunction rfc3986 (str) {\n return encodeURIComponent(str)\n .replace(/!/g,'%21')\n .replace(/\\*/g,'%2A')\n .replace(/\\(/g,'%28')\n .replace(/\\)/g,'%29')\n .replace(/'/g,'%27')\n}\n\n// Maps object to bi-dimensional array\n// Converts { foo: 'A', bar: [ 'b', 'B' ]} to\n// [ ['foo', 'A'], ['bar', 'b'], ['bar', 'B'] ]\nfunction map (obj) {\n var key, val, arr = []\n for (key in obj) {\n val = obj[key]\n if (Array.isArray(val))\n for (var i = 0; i < val.length; i++)\n arr.push([key, val[i]])\n else if (typeof val === 'object')\n for (var prop in val)\n arr.push([key + '[' + prop + ']', val[prop]])\n else\n arr.push([key, val])\n }\n return arr\n}\n\n// Compare function for sort\nfunction compare (a, b) {\n return a > b ? 1 : a < b ? -1 : 0\n}\n\nfunction generateBase (httpMethod, base_uri, params) {\n // adapted from https://dev.twitter.com/docs/auth/oauth and \n // https://dev.twitter.com/docs/auth/creating-signature\n\n // Parameter normalization\n // http://tools.ietf.org/html/rfc5849#section-3.4.1.3.2\n var normalized = map(params)\n // 1. First, the name and value of each parameter are encoded\n .map(function (p) {\n return [ rfc3986(p[0]), rfc3986(p[1] || '') ]\n })\n // 2. The parameters are sorted by name, using ascending byte value\n // ordering. If two or more parameters share the same name, they\n // are sorted by their value.\n .sort(function (a, b) {\n return compare(a[0], b[0]) || compare(a[1], b[1])\n })\n // 3. The name of each parameter is concatenated to its corresponding\n // value using an \"=\" character (ASCII code 61) as a separator, even\n // if the value is empty.\n .map(function (p) { return p.join('=') })\n // 4. The sorted name/value pairs are concatenated together into a\n // single string by using an \"&\" character (ASCII code 38) as\n // separator.\n .join('&')\n\n var base = [\n rfc3986(httpMethod ? httpMethod.toUpperCase() : 'GET'),\n rfc3986(base_uri),\n rfc3986(normalized)\n ].join('&')\n\n return base\n}\n\nfunction hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret) {\n var base = generateBase(httpMethod, base_uri, params)\n var key = [\n consumer_secret || '',\n token_secret || ''\n ].map(rfc3986).join('&')\n\n return sha(key, base, 'sha1')\n}\n\nfunction hmacsign256 (httpMethod, base_uri, params, consumer_secret, token_secret) {\n var base = generateBase(httpMethod, base_uri, params)\n var key = [\n consumer_secret || '',\n token_secret || ''\n ].map(rfc3986).join('&')\n\n return sha(key, base, 'sha256')\n}\n\nfunction rsasign (httpMethod, base_uri, params, private_key, token_secret) {\n var base = generateBase(httpMethod, base_uri, params)\n var key = private_key || ''\n\n return rsa(key, base)\n}\n\nfunction plaintext (consumer_secret, token_secret) {\n var key = [\n consumer_secret || '',\n token_secret || ''\n ].map(rfc3986).join('&')\n\n return key\n}\n\nfunction sign (signMethod, httpMethod, base_uri, params, consumer_secret, token_secret) {\n var method\n var skipArgs = 1\n\n switch (signMethod) {\n case 'RSA-SHA1':\n method = rsasign\n break\n case 'HMAC-SHA1':\n method = hmacsign\n break\n case 'HMAC-SHA256':\n method = hmacsign256\n break\n case 'PLAINTEXT':\n method = plaintext\n skipArgs = 4\n break\n default:\n throw new Error('Signature method not supported: ' + signMethod)\n }\n\n return method.apply(null, [].slice.call(arguments, skipArgs))\n}\n\nexports.hmacsign = hmacsign\nexports.hmacsign256 = hmacsign256\nexports.rsasign = rsasign\nexports.plaintext = plaintext\nexports.sign = sign\nexports.rfc3986 = rfc3986\nexports.generateBase = generateBase","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","exports.endianness = function () { return 'LE' };\n\nexports.hostname = function () {\n if (typeof location !== 'undefined') {\n return location.hostname\n }\n else return '';\n};\n\nexports.loadavg = function () { return [] };\n\nexports.uptime = function () { return 0 };\n\nexports.freemem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.totalmem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.cpus = function () { return [] };\n\nexports.type = function () { return 'Browser' };\n\nexports.release = function () {\n if (typeof navigator !== 'undefined') {\n return navigator.appVersion;\n }\n return '';\n};\n\nexports.networkInterfaces\n= exports.getNetworkInterfaces\n= function () { return {} };\n\nexports.arch = function () { return 'javascript' };\n\nexports.platform = function () { return 'browser' };\n\nexports.tmpdir = exports.tmpDir = function () {\n return '/tmp';\n};\n\nexports.EOL = '\\n';\n\nexports.homedir = function () {\n\treturn '/'\n};\n","'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar trees = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar inflate_fast = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n","// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/* exported PromiseThrottle */\n\n'use strict';\n\n/**\n * @constructor\n * @param {Object} options A set op options to pass to the throttle function\n * @param {number} requestsPerSecond The amount of requests per second\n * the library will limit to\n */\nfunction PromiseThrottle(options) {\n this.requestsPerSecond = options.requestsPerSecond;\n this.promiseImplementation = options.promiseImplementation || Promise;\n this.lastStartTime = 0;\n this.queued = [];\n}\n\n/**\n * Adds a promise\n * @param {Function} promise A function returning the promise to be added\n * @param {Object} options A set of options.\n * @param {number} options.signal An AbortSignal object that can be used to abort the returned promise\n * @param {number} options.weight A \"weight\" of each operation resolving by array of promises\n * @return {Promise} A promise\n */\nPromiseThrottle.prototype.add = function(promise, options) {\n var self = this;\n var opt = options || {};\n return new self.promiseImplementation(function(resolve, reject) {\n self.queued.push({\n resolve: resolve,\n reject: reject,\n promise: promise,\n weight: opt.weight || 1,\n signal: opt.signal\n });\n\n self.dequeue();\n });\n};\n\n/**\n * Adds all the promises passed as parameters\n * @param {Function} promises An array of functions that return a promise\n * @param {Object} options A set of options.\n * @param {number} options.signal An AbortSignal object that can be used to abort the returned promise\n * @param {number} options.weight A \"weight\" of each operation resolving by array of promises\n * @return {Promise} A promise that succeeds when all the promises passed as options do\n */\nPromiseThrottle.prototype.addAll = function(promises, options) {\n var addedPromises = promises.map(function(promise) {\n return this.add(promise, options);\n }.bind(this));\n\n return Promise.all(addedPromises);\n};\n\n/**\n * Dequeues a promise\n * @return {void}\n */\nPromiseThrottle.prototype.dequeue = function() {\n if (this.queued.length > 0) {\n var now = new Date(),\n weight = this.queued[0].weight,\n inc = (1000 / this.requestsPerSecond) * weight,\n elapsed = now - this.lastStartTime;\n\n if (elapsed >= inc) {\n this._execute();\n } else {\n // we have reached the limit, schedule a dequeue operation\n setTimeout(function() {\n this.dequeue();\n }.bind(this), inc - elapsed);\n }\n }\n};\n\n/**\n * Executes the promise\n * @private\n * @return {void}\n */\nPromiseThrottle.prototype._execute = function() {\n this.lastStartTime = new Date();\n var candidate = this.queued.shift();\n var aborted = candidate.signal && candidate.signal.aborted;\n if (aborted) {\n candidate.reject(new DOMException('', 'AbortError'));\n } else {\n candidate.promise().then(function(r) {\n candidate.resolve(r);\n }).catch(function(r) {\n candidate.reject(r);\n });\n }\n};\n\nmodule.exports = PromiseThrottle;\n","/*eslint no-var:0, prefer-arrow-callback: 0, object-shorthand: 0 */\n'use strict';\n\n\nvar Punycode = require('punycode');\n\n\nvar internals = {};\n\n\n//\n// Read rules from file.\n//\ninternals.rules = require('./data/rules.json').map(function (rule) {\n\n return {\n rule: rule,\n suffix: rule.replace(/^(\\*\\.|\\!)/, ''),\n punySuffix: -1,\n wildcard: rule.charAt(0) === '*',\n exception: rule.charAt(0) === '!'\n };\n});\n\n\n//\n// Check is given string ends with `suffix`.\n//\ninternals.endsWith = function (str, suffix) {\n\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n};\n\n\n//\n// Find rule for a given domain.\n//\ninternals.findRule = function (domain) {\n\n var punyDomain = Punycode.toASCII(domain);\n return internals.rules.reduce(function (memo, rule) {\n\n if (rule.punySuffix === -1){\n rule.punySuffix = Punycode.toASCII(rule.suffix);\n }\n if (!internals.endsWith(punyDomain, '.' + rule.punySuffix) && punyDomain !== rule.punySuffix) {\n return memo;\n }\n // This has been commented out as it never seems to run. This is because\n // sub tlds always appear after their parents and we never find a shorter\n // match.\n //if (memo) {\n // var memoSuffix = Punycode.toASCII(memo.suffix);\n // if (memoSuffix.length >= punySuffix.length) {\n // return memo;\n // }\n //}\n return rule;\n }, null);\n};\n\n\n//\n// Error codes and messages.\n//\nexports.errorCodes = {\n DOMAIN_TOO_SHORT: 'Domain name too short.',\n DOMAIN_TOO_LONG: 'Domain name too long. It should be no more than 255 chars.',\n LABEL_STARTS_WITH_DASH: 'Domain name label can not start with a dash.',\n LABEL_ENDS_WITH_DASH: 'Domain name label can not end with a dash.',\n LABEL_TOO_LONG: 'Domain name label should be at most 63 chars long.',\n LABEL_TOO_SHORT: 'Domain name label should be at least 1 character long.',\n LABEL_INVALID_CHARS: 'Domain name label can only contain alphanumeric characters or dashes.'\n};\n\n\n//\n// Validate domain name and throw if not valid.\n//\n// From wikipedia:\n//\n// Hostnames are composed of series of labels concatenated with dots, as are all\n// domain names. Each label must be between 1 and 63 characters long, and the\n// entire hostname (including the delimiting dots) has a maximum of 255 chars.\n//\n// Allowed chars:\n//\n// * `a-z`\n// * `0-9`\n// * `-` but not as a starting or ending character\n// * `.` as a separator for the textual portions of a domain name\n//\n// * http://en.wikipedia.org/wiki/Domain_name\n// * http://en.wikipedia.org/wiki/Hostname\n//\ninternals.validate = function (input) {\n\n // Before we can validate we need to take care of IDNs with unicode chars.\n var ascii = Punycode.toASCII(input);\n\n if (ascii.length < 1) {\n return 'DOMAIN_TOO_SHORT';\n }\n if (ascii.length > 255) {\n return 'DOMAIN_TOO_LONG';\n }\n\n // Check each part's length and allowed chars.\n var labels = ascii.split('.');\n var label;\n\n for (var i = 0; i < labels.length; ++i) {\n label = labels[i];\n if (!label.length) {\n return 'LABEL_TOO_SHORT';\n }\n if (label.length > 63) {\n return 'LABEL_TOO_LONG';\n }\n if (label.charAt(0) === '-') {\n return 'LABEL_STARTS_WITH_DASH';\n }\n if (label.charAt(label.length - 1) === '-') {\n return 'LABEL_ENDS_WITH_DASH';\n }\n if (!/^[a-z0-9\\-]+$/.test(label)) {\n return 'LABEL_INVALID_CHARS';\n }\n }\n};\n\n\n//\n// Public API\n//\n\n\n//\n// Parse domain.\n//\nexports.parse = function (input) {\n\n if (typeof input !== 'string') {\n throw new TypeError('Domain name must be a string.');\n }\n\n // Force domain to lowercase.\n var domain = input.slice(0).toLowerCase();\n\n // Handle FQDN.\n // TODO: Simply remove trailing dot?\n if (domain.charAt(domain.length - 1) === '.') {\n domain = domain.slice(0, domain.length - 1);\n }\n\n // Validate and sanitise input.\n var error = internals.validate(domain);\n if (error) {\n return {\n input: input,\n error: {\n message: exports.errorCodes[error],\n code: error\n }\n };\n }\n\n var parsed = {\n input: input,\n tld: null,\n sld: null,\n domain: null,\n subdomain: null,\n listed: false\n };\n\n var domainParts = domain.split('.');\n\n // Non-Internet TLD\n if (domainParts[domainParts.length - 1] === 'local') {\n return parsed;\n }\n\n var handlePunycode = function () {\n\n if (!/xn--/.test(domain)) {\n return parsed;\n }\n if (parsed.domain) {\n parsed.domain = Punycode.toASCII(parsed.domain);\n }\n if (parsed.subdomain) {\n parsed.subdomain = Punycode.toASCII(parsed.subdomain);\n }\n return parsed;\n };\n\n var rule = internals.findRule(domain);\n\n // Unlisted tld.\n if (!rule) {\n if (domainParts.length < 2) {\n return parsed;\n }\n parsed.tld = domainParts.pop();\n parsed.sld = domainParts.pop();\n parsed.domain = [parsed.sld, parsed.tld].join('.');\n if (domainParts.length) {\n parsed.subdomain = domainParts.pop();\n }\n return handlePunycode();\n }\n\n // At this point we know the public suffix is listed.\n parsed.listed = true;\n\n var tldParts = rule.suffix.split('.');\n var privateParts = domainParts.slice(0, domainParts.length - tldParts.length);\n\n if (rule.exception) {\n privateParts.push(tldParts.shift());\n }\n\n parsed.tld = tldParts.join('.');\n\n if (!privateParts.length) {\n return handlePunycode();\n }\n\n if (rule.wildcard) {\n tldParts.unshift(privateParts.pop());\n parsed.tld = tldParts.join('.');\n }\n\n if (!privateParts.length) {\n return handlePunycode();\n }\n\n parsed.sld = privateParts.pop();\n parsed.domain = [parsed.sld, parsed.tld].join('.');\n\n if (privateParts.length) {\n parsed.subdomain = privateParts.join('.');\n }\n\n return handlePunycode();\n};\n\n\n//\n// Get domain.\n//\nexports.get = function (domain) {\n\n if (!domain) {\n return null;\n }\n return exports.parse(domain).domain || null;\n};\n\n\n//\n// Check whether domain belongs to a known public suffix.\n//\nexports.isValid = function (domain) {\n\n var parsed = exports.parse(domain);\n return Boolean(parsed.domain && parsed.listed);\n};\n","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nmodule.exports = {\n 'default': 'RFC3986',\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n parameterLimit: 1000,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n\n for (var i = 0; i < parts.length; ++i) {\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder);\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder);\n val = options.decoder(part.slice(pos + 1), defaults.decoder);\n }\n if (has.call(obj, key)) {\n obj[key] = [].concat(obj[key]).concat(val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options) {\n var leaf = val;\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys\n // that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while ((segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options);\n};\n\nmodule.exports = function (str, opts) {\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n options.ignoreQueryPrefix = options.ignoreQueryPrefix === true;\n options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;\n options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;\n options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;\n options.parseArrays = options.parseArrays !== false;\n options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;\n options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;\n options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;\n options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;\n options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;\n options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options);\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaults = {\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix;\n }\n\n obj = '';\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n if (isArray(obj)) {\n pushToArray(values, stringify(\n obj[key],\n generateArrayPrefix(prefix, key),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n } else {\n pushToArray(values, stringify(\n obj[key],\n prefix + (allowDots ? '.' + key : '[' + key + ']'),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n }\n\n return values;\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.encoder !== null && typeof options.encoder !== 'undefined' && typeof options.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;\n var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;\n var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;\n var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder;\n var sort = typeof options.sort === 'function' ? options.sort : null;\n var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;\n var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate;\n var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly;\n if (typeof options.format === 'undefined') {\n options.format = formats['default'];\n } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n var formatter = formats.formatters[options.format];\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (options.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = options.arrayFormat;\n } else if ('indices' in options) {\n arrayFormat = options.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (sort) {\n objKeys.sort(sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encode ? encoder : null,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n\n var joined = keys.join(delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n var obj;\n\n while (queue.length) {\n var item = queue.pop();\n obj = item.obj[item.prop];\n\n if (Array.isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n\n return obj;\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (Array.isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (Array.isArray(target) && !Array.isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (Array.isArray(target) && Array.isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n } catch (e) {\n return str;\n }\n};\n\nvar encode = function encode(str) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = typeof str === 'string' ? str : String(str);\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n return compactQueue(queue);\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n merge: merge\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nvar core = require('../'),\n isArray = require('lodash/isArray'),\n isFunction = require('lodash/isFunction'),\n isObjectLike = require('lodash/isObjectLike');\n\n\nmodule.exports = function (options) {\n\n var errorText = 'Please verify options'; // For better minification because this string is repeating\n\n if (!isObjectLike(options)) {\n throw new TypeError(errorText);\n }\n\n if (!isFunction(options.request)) {\n throw new TypeError(errorText + '.request');\n }\n\n if (!isArray(options.expose) || options.expose.length === 0) {\n throw new TypeError(errorText + '.expose');\n }\n\n\n var plumbing = core({\n PromiseImpl: options.PromiseImpl,\n constructorMixin: options.constructorMixin\n });\n\n\n // Intercepting Request's init method\n\n var originalInit = options.request.Request.prototype.init;\n\n options.request.Request.prototype.init = function RP$initInterceptor(requestOptions) {\n\n // Init may be called again - currently in case of redirects\n if (isObjectLike(requestOptions) && !this._callback && !this._rp_promise) {\n\n plumbing.init.call(this, requestOptions);\n\n }\n\n return originalInit.apply(this, arguments);\n\n };\n\n\n // Exposing the Promise capabilities\n\n var thenExposed = false;\n for ( var i = 0; i < options.expose.length; i+=1 ) {\n\n var method = options.expose[i];\n\n plumbing[ method === 'promise' ? 'exposePromise' : 'exposePromiseMethod' ](\n options.request.Request.prototype,\n null,\n '_rp_promise',\n method\n );\n\n if (method === 'then') {\n thenExposed = true;\n }\n\n }\n\n if (!thenExposed) {\n throw new Error('Please expose \"then\"');\n }\n\n};\n","'use strict';\n\n\nfunction RequestError(cause, options, response) {\n\n this.name = 'RequestError';\n this.message = String(cause);\n this.cause = cause;\n this.error = cause; // legacy attribute\n this.options = options;\n this.response = response;\n\n if (Error.captureStackTrace) { // required for non-V8 environments\n Error.captureStackTrace(this);\n }\n\n}\nRequestError.prototype = Object.create(Error.prototype);\nRequestError.prototype.constructor = RequestError;\n\n\nfunction StatusCodeError(statusCode, body, options, response) {\n\n this.name = 'StatusCodeError';\n this.statusCode = statusCode;\n this.message = statusCode + ' - ' + (JSON && JSON.stringify ? JSON.stringify(body) : body);\n this.error = body; // legacy attribute\n this.options = options;\n this.response = response;\n\n if (Error.captureStackTrace) { // required for non-V8 environments\n Error.captureStackTrace(this);\n }\n\n}\nStatusCodeError.prototype = Object.create(Error.prototype);\nStatusCodeError.prototype.constructor = StatusCodeError;\n\n\nfunction TransformError(cause, options, response) {\n\n this.name = 'TransformError';\n this.message = String(cause);\n this.cause = cause;\n this.error = cause; // legacy attribute\n this.options = options;\n this.response = response;\n\n if (Error.captureStackTrace) { // required for non-V8 environments\n Error.captureStackTrace(this);\n }\n\n}\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\n\n\nmodule.exports = {\n RequestError: RequestError,\n StatusCodeError: StatusCodeError,\n TransformError: TransformError\n};\n","'use strict';\n\nvar errors = require('./errors.js'),\n isFunction = require('lodash/isFunction'),\n isObjectLike = require('lodash/isObjectLike'),\n isString = require('lodash/isString'),\n isUndefined = require('lodash/isUndefined');\n\n\nmodule.exports = function (options) {\n\n var errorText = 'Please verify options'; // For better minification because this string is repeating\n\n if (!isObjectLike(options)) {\n throw new TypeError(errorText);\n }\n\n if (!isFunction(options.PromiseImpl)) {\n throw new TypeError(errorText + '.PromiseImpl');\n }\n\n if (!isUndefined(options.constructorMixin) && !isFunction(options.constructorMixin)) {\n throw new TypeError(errorText + '.PromiseImpl');\n }\n\n var PromiseImpl = options.PromiseImpl;\n var constructorMixin = options.constructorMixin;\n\n\n var plumbing = {};\n\n plumbing.init = function (requestOptions) {\n\n var self = this;\n\n self._rp_promise = new PromiseImpl(function (resolve, reject) {\n self._rp_resolve = resolve;\n self._rp_reject = reject;\n if (constructorMixin) {\n constructorMixin.apply(self, arguments); // Using arguments since specific Promise libraries may pass additional parameters\n }\n });\n\n self._rp_callbackOrig = requestOptions.callback;\n requestOptions.callback = self.callback = function RP$callback(err, response, body) {\n plumbing.callback.call(self, err, response, body);\n };\n\n if (isString(requestOptions.method)) {\n requestOptions.method = requestOptions.method.toUpperCase();\n }\n\n requestOptions.transform = requestOptions.transform || plumbing.defaultTransformations[requestOptions.method];\n\n self._rp_options = requestOptions;\n self._rp_options.simple = requestOptions.simple !== false;\n self._rp_options.resolveWithFullResponse = requestOptions.resolveWithFullResponse === true;\n self._rp_options.transform2xxOnly = requestOptions.transform2xxOnly === true;\n\n };\n\n plumbing.defaultTransformations = {\n HEAD: function (body, response, resolveWithFullResponse) {\n return resolveWithFullResponse ? response : response.headers;\n }\n };\n\n plumbing.callback = function (err, response, body) {\n\n var self = this;\n\n var origCallbackThrewException = false, thrownException = null;\n\n if (isFunction(self._rp_callbackOrig)) {\n try {\n self._rp_callbackOrig.apply(self, arguments); // TODO: Apply to self mimics behavior of request@2. Is that also right for request@next?\n } catch (e) {\n origCallbackThrewException = true;\n thrownException = e;\n }\n }\n\n var is2xx = !err && /^2/.test('' + response.statusCode);\n\n if (err) {\n\n self._rp_reject(new errors.RequestError(err, self._rp_options, response));\n\n } else if (self._rp_options.simple && !is2xx) {\n\n if (isFunction(self._rp_options.transform) && self._rp_options.transform2xxOnly === false) {\n\n (new PromiseImpl(function (resolve) {\n resolve(self._rp_options.transform(body, response, self._rp_options.resolveWithFullResponse)); // transform may return a Promise\n }))\n .then(function (transformedResponse) {\n self._rp_reject(new errors.StatusCodeError(response.statusCode, body, self._rp_options, transformedResponse));\n })\n .catch(function (transformErr) {\n self._rp_reject(new errors.TransformError(transformErr, self._rp_options, response));\n });\n\n } else {\n self._rp_reject(new errors.StatusCodeError(response.statusCode, body, self._rp_options, response));\n }\n\n } else {\n\n if (isFunction(self._rp_options.transform) && (is2xx || self._rp_options.transform2xxOnly === false)) {\n\n (new PromiseImpl(function (resolve) {\n resolve(self._rp_options.transform(body, response, self._rp_options.resolveWithFullResponse)); // transform may return a Promise\n }))\n .then(function (transformedResponse) {\n self._rp_resolve(transformedResponse);\n })\n .catch(function (transformErr) {\n self._rp_reject(new errors.TransformError(transformErr, self._rp_options, response));\n });\n\n } else if (self._rp_options.resolveWithFullResponse) {\n self._rp_resolve(response);\n } else {\n self._rp_resolve(body);\n }\n\n }\n\n if (origCallbackThrewException) {\n throw thrownException;\n }\n\n };\n\n plumbing.exposePromiseMethod = function (exposeTo, bindTo, promisePropertyKey, methodToExpose, exposeAs) {\n\n exposeAs = exposeAs || methodToExpose;\n\n if (exposeAs in exposeTo) {\n throw new Error('Unable to expose method \"' + exposeAs + '\"');\n }\n\n exposeTo[exposeAs] = function RP$exposed() {\n var self = bindTo || this;\n return self[promisePropertyKey][methodToExpose].apply(self[promisePropertyKey], arguments);\n };\n\n };\n\n plumbing.exposePromise = function (exposeTo, bindTo, promisePropertyKey, exposeAs) {\n\n exposeAs = exposeAs || 'promise';\n\n if (exposeAs in exposeTo) {\n throw new Error('Unable to expose method \"' + exposeAs + '\"');\n }\n\n exposeTo[exposeAs] = function RP$promise() {\n var self = bindTo || this;\n return self[promisePropertyKey];\n };\n\n };\n\n return plumbing;\n\n};\n","'use strict';\n\nvar Bluebird = require('bluebird').getNewLibraryCopy(),\n configure = require('request-promise-core/configure/request2'),\n stealthyRequire = require('stealthy-require');\n\ntry {\n\n // Load Request freshly - so that users can require an unaltered request instance!\n var request = stealthyRequire(require.cache, function () {\n return require('request');\n },\n function () {\n require('tough-cookie');\n }, module);\n\n} catch (err) {\n /* istanbul ignore next */\n var EOL = require('os').EOL;\n /* istanbul ignore next */\n console.error(EOL + '###' + EOL + '### The \"request\" library is not installed automatically anymore.' + EOL + '### But is a dependency of \"request-promise\".' + EOL + '### Please install it with:' + EOL + '### npm install request --save' + EOL + '###' + EOL);\n /* istanbul ignore next */\n throw err;\n}\n\nBluebird.config({cancellation: true});\n\nconfigure({\n request: request,\n PromiseImpl: Bluebird,\n expose: [\n 'then',\n 'catch',\n 'finally',\n 'cancel',\n 'promise'\n // Would you like to expose more Bluebird methods? Try e.g. `rp(...).promise().tap(...)` first. `.promise()` returns the full-fledged Bluebird promise.\n ],\n constructorMixin: function (resolve, reject, onCancel) {\n var self = this;\n onCancel(function () {\n self.abort();\n });\n }\n});\n\nrequest.bindCLS = function RP$bindCLS() {\n throw new Error('CLS support was dropped. To get it back read: https://github.com/request/request-promise/wiki/Getting-Back-Support-for-Continuation-Local-Storage');\n};\n\n\nmodule.exports = request;\n","// Copyright 2010-2012 Mikeal Rogers\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n'use strict'\n\nvar extend = require('extend')\nvar cookies = require('./lib/cookies')\nvar helpers = require('./lib/helpers')\n\nvar paramsHaveRequestBody = helpers.paramsHaveRequestBody\n\n// organize params for patch, post, put, head, del\nfunction initParams (uri, options, callback) {\n if (typeof options === 'function') {\n callback = options\n }\n\n var params = {}\n if (options !== null && typeof options === 'object') {\n extend(params, options, {uri: uri})\n } else if (typeof uri === 'string') {\n extend(params, {uri: uri})\n } else {\n extend(params, uri)\n }\n\n params.callback = callback || params.callback\n return params\n}\n\nfunction request (uri, options, callback) {\n if (typeof uri === 'undefined') {\n throw new Error('undefined is not a valid uri or options object.')\n }\n\n var params = initParams(uri, options, callback)\n\n if (params.method === 'HEAD' && paramsHaveRequestBody(params)) {\n throw new Error('HTTP HEAD requests MUST NOT include a request body.')\n }\n\n return new request.Request(params)\n}\n\nfunction verbFunc (verb) {\n var method = verb.toUpperCase()\n return function (uri, options, callback) {\n var params = initParams(uri, options, callback)\n params.method = method\n return request(params, params.callback)\n }\n}\n\n// define like this to please codeintel/intellisense IDEs\nrequest.get = verbFunc('get')\nrequest.head = verbFunc('head')\nrequest.options = verbFunc('options')\nrequest.post = verbFunc('post')\nrequest.put = verbFunc('put')\nrequest.patch = verbFunc('patch')\nrequest.del = verbFunc('delete')\nrequest['delete'] = verbFunc('delete')\n\nrequest.jar = function (store) {\n return cookies.jar(store)\n}\n\nrequest.cookie = function (str) {\n return cookies.parse(str)\n}\n\nfunction wrapRequestMethod (method, options, requester, verb) {\n return function (uri, opts, callback) {\n var params = initParams(uri, opts, callback)\n\n var target = {}\n extend(true, target, options, params)\n\n target.pool = params.pool || options.pool\n\n if (verb) {\n target.method = verb.toUpperCase()\n }\n\n if (typeof requester === 'function') {\n method = requester\n }\n\n return method(target, target.callback)\n }\n}\n\nrequest.defaults = function (options, requester) {\n var self = this\n\n options = options || {}\n\n if (typeof options === 'function') {\n requester = options\n options = {}\n }\n\n var defaults = wrapRequestMethod(self, options, requester)\n\n var verbs = ['get', 'head', 'post', 'put', 'patch', 'del', 'delete']\n verbs.forEach(function (verb) {\n defaults[verb] = wrapRequestMethod(self[verb], options, requester, verb)\n })\n\n defaults.cookie = wrapRequestMethod(self.cookie, options, requester)\n defaults.jar = self.jar\n defaults.defaults = self.defaults\n return defaults\n}\n\nrequest.forever = function (agentOptions, optionsArg) {\n var options = {}\n if (optionsArg) {\n extend(options, optionsArg)\n }\n if (agentOptions) {\n options.agentOptions = agentOptions\n }\n\n options.forever = true\n return request.defaults(options)\n}\n\n// Exports\n\nmodule.exports = request\nrequest.Request = require('./request')\nrequest.initParams = initParams\n\n// Backwards compatibility for request.debug\nObject.defineProperty(request, 'debug', {\n enumerable: true,\n get: function () {\n return request.Request.debug\n },\n set: function (debug) {\n request.Request.debug = debug\n }\n})\n","'use strict'\n\nvar caseless = require('caseless')\nvar uuid = require('uuid/v4')\nvar helpers = require('./helpers')\n\nvar md5 = helpers.md5\nvar toBase64 = helpers.toBase64\n\nfunction Auth (request) {\n // define all public properties here\n this.request = request\n this.hasAuth = false\n this.sentAuth = false\n this.bearerToken = null\n this.user = null\n this.pass = null\n}\n\nAuth.prototype.basic = function (user, pass, sendImmediately) {\n var self = this\n if (typeof user !== 'string' || (pass !== undefined && typeof pass !== 'string')) {\n self.request.emit('error', new Error('auth() received invalid user or password'))\n }\n self.user = user\n self.pass = pass\n self.hasAuth = true\n var header = user + ':' + (pass || '')\n if (sendImmediately || typeof sendImmediately === 'undefined') {\n var authHeader = 'Basic ' + toBase64(header)\n self.sentAuth = true\n return authHeader\n }\n}\n\nAuth.prototype.bearer = function (bearer, sendImmediately) {\n var self = this\n self.bearerToken = bearer\n self.hasAuth = true\n if (sendImmediately || typeof sendImmediately === 'undefined') {\n if (typeof bearer === 'function') {\n bearer = bearer()\n }\n var authHeader = 'Bearer ' + (bearer || '')\n self.sentAuth = true\n return authHeader\n }\n}\n\nAuth.prototype.digest = function (method, path, authHeader) {\n // TODO: More complete implementation of RFC 2617.\n // - handle challenge.domain\n // - support qop=\"auth-int\" only\n // - handle Authentication-Info (not necessarily?)\n // - check challenge.stale (not necessarily?)\n // - increase nc (not necessarily?)\n // For reference:\n // http://tools.ietf.org/html/rfc2617#section-3\n // https://github.com/bagder/curl/blob/master/lib/http_digest.c\n\n var self = this\n\n var challenge = {}\n var re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi\n while (true) {\n var match = re.exec(authHeader)\n if (!match) {\n break\n }\n challenge[match[1]] = match[2] || match[3]\n }\n\n /**\n * RFC 2617: handle both MD5 and MD5-sess algorithms.\n *\n * If the algorithm directive's value is \"MD5\" or unspecified, then HA1 is\n * HA1=MD5(username:realm:password)\n * If the algorithm directive's value is \"MD5-sess\", then HA1 is\n * HA1=MD5(MD5(username:realm:password):nonce:cnonce)\n */\n var ha1Compute = function (algorithm, user, realm, pass, nonce, cnonce) {\n var ha1 = md5(user + ':' + realm + ':' + pass)\n if (algorithm && algorithm.toLowerCase() === 'md5-sess') {\n return md5(ha1 + ':' + nonce + ':' + cnonce)\n } else {\n return ha1\n }\n }\n\n var qop = /(^|,)\\s*auth\\s*($|,)/.test(challenge.qop) && 'auth'\n var nc = qop && '00000001'\n var cnonce = qop && uuid().replace(/-/g, '')\n var ha1 = ha1Compute(challenge.algorithm, self.user, challenge.realm, self.pass, challenge.nonce, cnonce)\n var ha2 = md5(method + ':' + path)\n var digestResponse = qop\n ? md5(ha1 + ':' + challenge.nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2)\n : md5(ha1 + ':' + challenge.nonce + ':' + ha2)\n var authValues = {\n username: self.user,\n realm: challenge.realm,\n nonce: challenge.nonce,\n uri: path,\n qop: qop,\n response: digestResponse,\n nc: nc,\n cnonce: cnonce,\n algorithm: challenge.algorithm,\n opaque: challenge.opaque\n }\n\n authHeader = []\n for (var k in authValues) {\n if (authValues[k]) {\n if (k === 'qop' || k === 'nc' || k === 'algorithm') {\n authHeader.push(k + '=' + authValues[k])\n } else {\n authHeader.push(k + '=\"' + authValues[k] + '\"')\n }\n }\n }\n authHeader = 'Digest ' + authHeader.join(', ')\n self.sentAuth = true\n return authHeader\n}\n\nAuth.prototype.onRequest = function (user, pass, sendImmediately, bearer) {\n var self = this\n var request = self.request\n\n var authHeader\n if (bearer === undefined && user === undefined) {\n self.request.emit('error', new Error('no auth mechanism defined'))\n } else if (bearer !== undefined) {\n authHeader = self.bearer(bearer, sendImmediately)\n } else {\n authHeader = self.basic(user, pass, sendImmediately)\n }\n if (authHeader) {\n request.setHeader('authorization', authHeader)\n }\n}\n\nAuth.prototype.onResponse = function (response) {\n var self = this\n var request = self.request\n\n if (!self.hasAuth || self.sentAuth) { return null }\n\n var c = caseless(response.headers)\n\n var authHeader = c.get('www-authenticate')\n var authVerb = authHeader && authHeader.split(' ')[0].toLowerCase()\n request.debug('reauth', authVerb)\n\n switch (authVerb) {\n case 'basic':\n return self.basic(self.user, self.pass, true)\n\n case 'bearer':\n return self.bearer(self.bearerToken, true)\n\n case 'digest':\n return self.digest(request.method, request.path, authHeader)\n }\n}\n\nexports.Auth = Auth\n","'use strict'\n\nvar tough = require('tough-cookie')\n\nvar Cookie = tough.Cookie\nvar CookieJar = tough.CookieJar\n\nexports.parse = function (str) {\n if (str && str.uri) {\n str = str.uri\n }\n if (typeof str !== 'string') {\n throw new Error('The cookie function only accepts STRING as param')\n }\n return Cookie.parse(str, {loose: true})\n}\n\n// Adapt the sometimes-Async api of tough.CookieJar to our requirements\nfunction RequestJar (store) {\n var self = this\n self._jar = new CookieJar(store, {looseMode: true})\n}\nRequestJar.prototype.setCookie = function (cookieOrStr, uri, options) {\n var self = this\n return self._jar.setCookieSync(cookieOrStr, uri, options || {})\n}\nRequestJar.prototype.getCookieString = function (uri) {\n var self = this\n return self._jar.getCookieStringSync(uri)\n}\nRequestJar.prototype.getCookies = function (uri) {\n var self = this\n return self._jar.getCookiesSync(uri)\n}\n\nexports.jar = function (store) {\n return new RequestJar(store)\n}\n","'use strict'\n\nfunction formatHostname (hostname) {\n // canonicalize the hostname, so that 'oogle.com' won't match 'google.com'\n return hostname.replace(/^\\.*/, '.').toLowerCase()\n}\n\nfunction parseNoProxyZone (zone) {\n zone = zone.trim().toLowerCase()\n\n var zoneParts = zone.split(':', 2)\n var zoneHost = formatHostname(zoneParts[0])\n var zonePort = zoneParts[1]\n var hasPort = zone.indexOf(':') > -1\n\n return {hostname: zoneHost, port: zonePort, hasPort: hasPort}\n}\n\nfunction uriInNoProxy (uri, noProxy) {\n var port = uri.port || (uri.protocol === 'https:' ? '443' : '80')\n var hostname = formatHostname(uri.hostname)\n var noProxyList = noProxy.split(',')\n\n // iterate through the noProxyList until it finds a match.\n return noProxyList.map(parseNoProxyZone).some(function (noProxyZone) {\n var isMatchedAt = hostname.indexOf(noProxyZone.hostname)\n var hostnameMatched = (\n isMatchedAt > -1 &&\n (isMatchedAt === hostname.length - noProxyZone.hostname.length)\n )\n\n if (noProxyZone.hasPort) {\n return (port === noProxyZone.port) && hostnameMatched\n }\n\n return hostnameMatched\n })\n}\n\nfunction getProxyFromURI (uri) {\n // Decide the proper request proxy to use based on the request URI object and the\n // environmental variables (NO_PROXY, HTTP_PROXY, etc.)\n // respect NO_PROXY environment variables (see: https://lynx.invisible-island.net/lynx2.8.7/breakout/lynx_help/keystrokes/environments.html)\n\n var noProxy = process.env.NO_PROXY || process.env.no_proxy || ''\n\n // if the noProxy is a wildcard then return null\n\n if (noProxy === '*') {\n return null\n }\n\n // if the noProxy is not empty and the uri is found return null\n\n if (noProxy !== '' && uriInNoProxy(uri, noProxy)) {\n return null\n }\n\n // Check for HTTP or HTTPS Proxy in environment Else default to null\n\n if (uri.protocol === 'http:') {\n return process.env.HTTP_PROXY ||\n process.env.http_proxy || null\n }\n\n if (uri.protocol === 'https:') {\n return process.env.HTTPS_PROXY ||\n process.env.https_proxy ||\n process.env.HTTP_PROXY ||\n process.env.http_proxy || null\n }\n\n // if none of that works, return null\n // (What uri protocol are you using then?)\n\n return null\n}\n\nmodule.exports = getProxyFromURI\n","'use strict'\n\nvar fs = require('fs')\nvar qs = require('querystring')\nvar validate = require('har-validator')\nvar extend = require('extend')\n\nfunction Har (request) {\n this.request = request\n}\n\nHar.prototype.reducer = function (obj, pair) {\n // new property ?\n if (obj[pair.name] === undefined) {\n obj[pair.name] = pair.value\n return obj\n }\n\n // existing? convert to array\n var arr = [\n obj[pair.name],\n pair.value\n ]\n\n obj[pair.name] = arr\n\n return obj\n}\n\nHar.prototype.prep = function (data) {\n // construct utility properties\n data.queryObj = {}\n data.headersObj = {}\n data.postData.jsonObj = false\n data.postData.paramsObj = false\n\n // construct query objects\n if (data.queryString && data.queryString.length) {\n data.queryObj = data.queryString.reduce(this.reducer, {})\n }\n\n // construct headers objects\n if (data.headers && data.headers.length) {\n // loweCase header keys\n data.headersObj = data.headers.reduceRight(function (headers, header) {\n headers[header.name] = header.value\n return headers\n }, {})\n }\n\n // construct Cookie header\n if (data.cookies && data.cookies.length) {\n var cookies = data.cookies.map(function (cookie) {\n return cookie.name + '=' + cookie.value\n })\n\n if (cookies.length) {\n data.headersObj.cookie = cookies.join('; ')\n }\n }\n\n // prep body\n function some (arr) {\n return arr.some(function (type) {\n return data.postData.mimeType.indexOf(type) === 0\n })\n }\n\n if (some([\n 'multipart/mixed',\n 'multipart/related',\n 'multipart/form-data',\n 'multipart/alternative'])) {\n // reset values\n data.postData.mimeType = 'multipart/form-data'\n } else if (some([\n 'application/x-www-form-urlencoded'])) {\n if (!data.postData.params) {\n data.postData.text = ''\n } else {\n data.postData.paramsObj = data.postData.params.reduce(this.reducer, {})\n\n // always overwrite\n data.postData.text = qs.stringify(data.postData.paramsObj)\n }\n } else if (some([\n 'text/json',\n 'text/x-json',\n 'application/json',\n 'application/x-json'])) {\n data.postData.mimeType = 'application/json'\n\n if (data.postData.text) {\n try {\n data.postData.jsonObj = JSON.parse(data.postData.text)\n } catch (e) {\n this.request.debug(e)\n\n // force back to text/plain\n data.postData.mimeType = 'text/plain'\n }\n }\n }\n\n return data\n}\n\nHar.prototype.options = function (options) {\n // skip if no har property defined\n if (!options.har) {\n return options\n }\n\n var har = {}\n extend(har, options.har)\n\n // only process the first entry\n if (har.log && har.log.entries) {\n har = har.log.entries[0]\n }\n\n // add optional properties to make validation successful\n har.url = har.url || options.url || options.uri || options.baseUrl || '/'\n har.httpVersion = har.httpVersion || 'HTTP/1.1'\n har.queryString = har.queryString || []\n har.headers = har.headers || []\n har.cookies = har.cookies || []\n har.postData = har.postData || {}\n har.postData.mimeType = har.postData.mimeType || 'application/octet-stream'\n\n har.bodySize = 0\n har.headersSize = 0\n har.postData.size = 0\n\n if (!validate.request(har)) {\n return options\n }\n\n // clean up and get some utility properties\n var req = this.prep(har)\n\n // construct new options\n if (req.url) {\n options.url = req.url\n }\n\n if (req.method) {\n options.method = req.method\n }\n\n if (Object.keys(req.queryObj).length) {\n options.qs = req.queryObj\n }\n\n if (Object.keys(req.headersObj).length) {\n options.headers = req.headersObj\n }\n\n function test (type) {\n return req.postData.mimeType.indexOf(type) === 0\n }\n if (test('application/x-www-form-urlencoded')) {\n options.form = req.postData.paramsObj\n } else if (test('application/json')) {\n if (req.postData.jsonObj) {\n options.body = req.postData.jsonObj\n options.json = true\n }\n } else if (test('multipart/form-data')) {\n options.formData = {}\n\n req.postData.params.forEach(function (param) {\n var attachment = {}\n\n if (!param.fileName && !param.contentType) {\n options.formData[param.name] = param.value\n return\n }\n\n // attempt to read from disk!\n if (param.fileName && !param.value) {\n attachment.value = fs.createReadStream(param.fileName)\n } else if (param.value) {\n attachment.value = param.value\n }\n\n if (param.fileName) {\n attachment.options = {\n filename: param.fileName,\n contentType: param.contentType ? param.contentType : null\n }\n }\n\n options.formData[param.name] = attachment\n })\n } else {\n if (req.postData.text) {\n options.body = req.postData.text\n }\n }\n\n return options\n}\n\nexports.Har = Har\n","'use strict'\n\nvar crypto = require('crypto')\n\nfunction randomString (size) {\n var bits = (size + 1) * 6\n var buffer = crypto.randomBytes(Math.ceil(bits / 8))\n var string = buffer.toString('base64').replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '')\n return string.slice(0, size)\n}\n\nfunction calculatePayloadHash (payload, algorithm, contentType) {\n var hash = crypto.createHash(algorithm)\n hash.update('hawk.1.payload\\n')\n hash.update((contentType ? contentType.split(';')[0].trim().toLowerCase() : '') + '\\n')\n hash.update(payload || '')\n hash.update('\\n')\n return hash.digest('base64')\n}\n\nexports.calculateMac = function (credentials, opts) {\n var normalized = 'hawk.1.header\\n' +\n opts.ts + '\\n' +\n opts.nonce + '\\n' +\n (opts.method || '').toUpperCase() + '\\n' +\n opts.resource + '\\n' +\n opts.host.toLowerCase() + '\\n' +\n opts.port + '\\n' +\n (opts.hash || '') + '\\n'\n\n if (opts.ext) {\n normalized = normalized + opts.ext.replace('\\\\', '\\\\\\\\').replace('\\n', '\\\\n')\n }\n\n normalized = normalized + '\\n'\n\n if (opts.app) {\n normalized = normalized + opts.app + '\\n' + (opts.dlg || '') + '\\n'\n }\n\n var hmac = crypto.createHmac(credentials.algorithm, credentials.key).update(normalized)\n var digest = hmac.digest('base64')\n return digest\n}\n\nexports.header = function (uri, method, opts) {\n var timestamp = opts.timestamp || Math.floor((Date.now() + (opts.localtimeOffsetMsec || 0)) / 1000)\n var credentials = opts.credentials\n if (!credentials || !credentials.id || !credentials.key || !credentials.algorithm) {\n return ''\n }\n\n if (['sha1', 'sha256'].indexOf(credentials.algorithm) === -1) {\n return ''\n }\n\n var artifacts = {\n ts: timestamp,\n nonce: opts.nonce || randomString(6),\n method: method,\n resource: uri.pathname + (uri.search || ''),\n host: uri.hostname,\n port: uri.port || (uri.protocol === 'http:' ? 80 : 443),\n hash: opts.hash,\n ext: opts.ext,\n app: opts.app,\n dlg: opts.dlg\n }\n\n if (!artifacts.hash && (opts.payload || opts.payload === '')) {\n artifacts.hash = calculatePayloadHash(opts.payload, credentials.algorithm, opts.contentType)\n }\n\n var mac = exports.calculateMac(credentials, artifacts)\n\n var hasExt = artifacts.ext !== null && artifacts.ext !== undefined && artifacts.ext !== ''\n var header = 'Hawk id=\"' + credentials.id +\n '\", ts=\"' + artifacts.ts +\n '\", nonce=\"' + artifacts.nonce +\n (artifacts.hash ? '\", hash=\"' + artifacts.hash : '') +\n (hasExt ? '\", ext=\"' + artifacts.ext.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"') : '') +\n '\", mac=\"' + mac + '\"'\n\n if (artifacts.app) {\n header = header + ', app=\"' + artifacts.app + (artifacts.dlg ? '\", dlg=\"' + artifacts.dlg : '') + '\"'\n }\n\n return header\n}\n","'use strict'\n\nvar jsonSafeStringify = require('json-stringify-safe')\nvar crypto = require('crypto')\nvar Buffer = require('safe-buffer').Buffer\n\nvar defer = typeof setImmediate === 'undefined'\n ? process.nextTick\n : setImmediate\n\nfunction paramsHaveRequestBody (params) {\n return (\n params.body ||\n params.requestBodyStream ||\n (params.json && typeof params.json !== 'boolean') ||\n params.multipart\n )\n}\n\nfunction safeStringify (obj, replacer) {\n var ret\n try {\n ret = JSON.stringify(obj, replacer)\n } catch (e) {\n ret = jsonSafeStringify(obj, replacer)\n }\n return ret\n}\n\nfunction md5 (str) {\n return crypto.createHash('md5').update(str).digest('hex')\n}\n\nfunction isReadStream (rs) {\n return rs.readable && rs.path && rs.mode\n}\n\nfunction toBase64 (str) {\n return Buffer.from(str || '', 'utf8').toString('base64')\n}\n\nfunction copy (obj) {\n var o = {}\n Object.keys(obj).forEach(function (i) {\n o[i] = obj[i]\n })\n return o\n}\n\nfunction version () {\n var numbers = process.version.replace('v', '').split('.')\n return {\n major: parseInt(numbers[0], 10),\n minor: parseInt(numbers[1], 10),\n patch: parseInt(numbers[2], 10)\n }\n}\n\nexports.paramsHaveRequestBody = paramsHaveRequestBody\nexports.safeStringify = safeStringify\nexports.md5 = md5\nexports.isReadStream = isReadStream\nexports.toBase64 = toBase64\nexports.copy = copy\nexports.version = version\nexports.defer = defer\n","'use strict'\n\nvar uuid = require('uuid/v4')\nvar CombinedStream = require('combined-stream')\nvar isstream = require('isstream')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction Multipart (request) {\n this.request = request\n this.boundary = uuid()\n this.chunked = false\n this.body = null\n}\n\nMultipart.prototype.isChunked = function (options) {\n var self = this\n var chunked = false\n var parts = options.data || options\n\n if (!parts.forEach) {\n self.request.emit('error', new Error('Argument error, options.multipart.'))\n }\n\n if (options.chunked !== undefined) {\n chunked = options.chunked\n }\n\n if (self.request.getHeader('transfer-encoding') === 'chunked') {\n chunked = true\n }\n\n if (!chunked) {\n parts.forEach(function (part) {\n if (typeof part.body === 'undefined') {\n self.request.emit('error', new Error('Body attribute missing in multipart.'))\n }\n if (isstream(part.body)) {\n chunked = true\n }\n })\n }\n\n return chunked\n}\n\nMultipart.prototype.setHeaders = function (chunked) {\n var self = this\n\n if (chunked && !self.request.hasHeader('transfer-encoding')) {\n self.request.setHeader('transfer-encoding', 'chunked')\n }\n\n var header = self.request.getHeader('content-type')\n\n if (!header || header.indexOf('multipart') === -1) {\n self.request.setHeader('content-type', 'multipart/related; boundary=' + self.boundary)\n } else {\n if (header.indexOf('boundary') !== -1) {\n self.boundary = header.replace(/.*boundary=([^\\s;]+).*/, '$1')\n } else {\n self.request.setHeader('content-type', header + '; boundary=' + self.boundary)\n }\n }\n}\n\nMultipart.prototype.build = function (parts, chunked) {\n var self = this\n var body = chunked ? new CombinedStream() : []\n\n function add (part) {\n if (typeof part === 'number') {\n part = part.toString()\n }\n return chunked ? body.append(part) : body.push(Buffer.from(part))\n }\n\n if (self.request.preambleCRLF) {\n add('\\r\\n')\n }\n\n parts.forEach(function (part) {\n var preamble = '--' + self.boundary + '\\r\\n'\n Object.keys(part).forEach(function (key) {\n if (key === 'body') { return }\n preamble += key + ': ' + part[key] + '\\r\\n'\n })\n preamble += '\\r\\n'\n add(preamble)\n add(part.body)\n add('\\r\\n')\n })\n add('--' + self.boundary + '--')\n\n if (self.request.postambleCRLF) {\n add('\\r\\n')\n }\n\n return body\n}\n\nMultipart.prototype.onRequest = function (options) {\n var self = this\n\n var chunked = self.isChunked(options)\n var parts = options.data || options\n\n self.setHeaders(chunked)\n self.chunked = chunked\n self.body = self.build(parts, chunked)\n}\n\nexports.Multipart = Multipart\n","'use strict'\n\nvar url = require('url')\nvar qs = require('qs')\nvar caseless = require('caseless')\nvar uuid = require('uuid/v4')\nvar oauth = require('oauth-sign')\nvar crypto = require('crypto')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction OAuth (request) {\n this.request = request\n this.params = null\n}\n\nOAuth.prototype.buildParams = function (_oauth, uri, method, query, form, qsLib) {\n var oa = {}\n for (var i in _oauth) {\n oa['oauth_' + i] = _oauth[i]\n }\n if (!oa.oauth_version) {\n oa.oauth_version = '1.0'\n }\n if (!oa.oauth_timestamp) {\n oa.oauth_timestamp = Math.floor(Date.now() / 1000).toString()\n }\n if (!oa.oauth_nonce) {\n oa.oauth_nonce = uuid().replace(/-/g, '')\n }\n if (!oa.oauth_signature_method) {\n oa.oauth_signature_method = 'HMAC-SHA1'\n }\n\n var consumer_secret_or_private_key = oa.oauth_consumer_secret || oa.oauth_private_key // eslint-disable-line camelcase\n delete oa.oauth_consumer_secret\n delete oa.oauth_private_key\n\n var token_secret = oa.oauth_token_secret // eslint-disable-line camelcase\n delete oa.oauth_token_secret\n\n var realm = oa.oauth_realm\n delete oa.oauth_realm\n delete oa.oauth_transport_method\n\n var baseurl = uri.protocol + '//' + uri.host + uri.pathname\n var params = qsLib.parse([].concat(query, form, qsLib.stringify(oa)).join('&'))\n\n oa.oauth_signature = oauth.sign(\n oa.oauth_signature_method,\n method,\n baseurl,\n params,\n consumer_secret_or_private_key, // eslint-disable-line camelcase\n token_secret // eslint-disable-line camelcase\n )\n\n if (realm) {\n oa.realm = realm\n }\n\n return oa\n}\n\nOAuth.prototype.buildBodyHash = function (_oauth, body) {\n if (['HMAC-SHA1', 'RSA-SHA1'].indexOf(_oauth.signature_method || 'HMAC-SHA1') < 0) {\n this.request.emit('error', new Error('oauth: ' + _oauth.signature_method +\n ' signature_method not supported with body_hash signing.'))\n }\n\n var shasum = crypto.createHash('sha1')\n shasum.update(body || '')\n var sha1 = shasum.digest('hex')\n\n return Buffer.from(sha1, 'hex').toString('base64')\n}\n\nOAuth.prototype.concatParams = function (oa, sep, wrap) {\n wrap = wrap || ''\n\n var params = Object.keys(oa).filter(function (i) {\n return i !== 'realm' && i !== 'oauth_signature'\n }).sort()\n\n if (oa.realm) {\n params.splice(0, 0, 'realm')\n }\n params.push('oauth_signature')\n\n return params.map(function (i) {\n return i + '=' + wrap + oauth.rfc3986(oa[i]) + wrap\n }).join(sep)\n}\n\nOAuth.prototype.onRequest = function (_oauth) {\n var self = this\n self.params = _oauth\n\n var uri = self.request.uri || {}\n var method = self.request.method || ''\n var headers = caseless(self.request.headers)\n var body = self.request.body || ''\n var qsLib = self.request.qsLib || qs\n\n var form\n var query\n var contentType = headers.get('content-type') || ''\n var formContentType = 'application/x-www-form-urlencoded'\n var transport = _oauth.transport_method || 'header'\n\n if (contentType.slice(0, formContentType.length) === formContentType) {\n contentType = formContentType\n form = body\n }\n if (uri.query) {\n query = uri.query\n }\n if (transport === 'body' && (method !== 'POST' || contentType !== formContentType)) {\n self.request.emit('error', new Error('oauth: transport_method of body requires POST ' +\n 'and content-type ' + formContentType))\n }\n\n if (!form && typeof _oauth.body_hash === 'boolean') {\n _oauth.body_hash = self.buildBodyHash(_oauth, self.request.body.toString())\n }\n\n var oa = self.buildParams(_oauth, uri, method, query, form, qsLib)\n\n switch (transport) {\n case 'header':\n self.request.setHeader('Authorization', 'OAuth ' + self.concatParams(oa, ',', '\"'))\n break\n\n case 'query':\n var href = self.request.uri.href += (query ? '&' : '?') + self.concatParams(oa, '&')\n self.request.uri = url.parse(href)\n self.request.path = self.request.uri.path\n break\n\n case 'body':\n self.request.body = (form ? form + '&' : '') + self.concatParams(oa, '&')\n break\n\n default:\n self.request.emit('error', new Error('oauth: transport_method invalid'))\n }\n}\n\nexports.OAuth = OAuth\n","'use strict'\n\nvar qs = require('qs')\nvar querystring = require('querystring')\n\nfunction Querystring (request) {\n this.request = request\n this.lib = null\n this.useQuerystring = null\n this.parseOptions = null\n this.stringifyOptions = null\n}\n\nQuerystring.prototype.init = function (options) {\n if (this.lib) { return }\n\n this.useQuerystring = options.useQuerystring\n this.lib = (this.useQuerystring ? querystring : qs)\n\n this.parseOptions = options.qsParseOptions || {}\n this.stringifyOptions = options.qsStringifyOptions || {}\n}\n\nQuerystring.prototype.stringify = function (obj) {\n return (this.useQuerystring)\n ? this.rfc3986(this.lib.stringify(obj,\n this.stringifyOptions.sep || null,\n this.stringifyOptions.eq || null,\n this.stringifyOptions))\n : this.lib.stringify(obj, this.stringifyOptions)\n}\n\nQuerystring.prototype.parse = function (str) {\n return (this.useQuerystring)\n ? this.lib.parse(str,\n this.parseOptions.sep || null,\n this.parseOptions.eq || null,\n this.parseOptions)\n : this.lib.parse(str, this.parseOptions)\n}\n\nQuerystring.prototype.rfc3986 = function (str) {\n return str.replace(/[!'()*]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\nQuerystring.prototype.unescape = querystring.unescape\n\nexports.Querystring = Querystring\n","'use strict'\n\nvar url = require('url')\nvar isUrl = /^https?:/\n\nfunction Redirect (request) {\n this.request = request\n this.followRedirect = true\n this.followRedirects = true\n this.followAllRedirects = false\n this.followOriginalHttpMethod = false\n this.allowRedirect = function () { return true }\n this.maxRedirects = 10\n this.redirects = []\n this.redirectsFollowed = 0\n this.removeRefererHeader = false\n}\n\nRedirect.prototype.onRequest = function (options) {\n var self = this\n\n if (options.maxRedirects !== undefined) {\n self.maxRedirects = options.maxRedirects\n }\n if (typeof options.followRedirect === 'function') {\n self.allowRedirect = options.followRedirect\n }\n if (options.followRedirect !== undefined) {\n self.followRedirects = !!options.followRedirect\n }\n if (options.followAllRedirects !== undefined) {\n self.followAllRedirects = options.followAllRedirects\n }\n if (self.followRedirects || self.followAllRedirects) {\n self.redirects = self.redirects || []\n }\n if (options.removeRefererHeader !== undefined) {\n self.removeRefererHeader = options.removeRefererHeader\n }\n if (options.followOriginalHttpMethod !== undefined) {\n self.followOriginalHttpMethod = options.followOriginalHttpMethod\n }\n}\n\nRedirect.prototype.redirectTo = function (response) {\n var self = this\n var request = self.request\n\n var redirectTo = null\n if (response.statusCode >= 300 && response.statusCode < 400 && response.caseless.has('location')) {\n var location = response.caseless.get('location')\n request.debug('redirect', location)\n\n if (self.followAllRedirects) {\n redirectTo = location\n } else if (self.followRedirects) {\n switch (request.method) {\n case 'PATCH':\n case 'PUT':\n case 'POST':\n case 'DELETE':\n // Do not follow redirects\n break\n default:\n redirectTo = location\n break\n }\n }\n } else if (response.statusCode === 401) {\n var authHeader = request._auth.onResponse(response)\n if (authHeader) {\n request.setHeader('authorization', authHeader)\n redirectTo = request.uri\n }\n }\n return redirectTo\n}\n\nRedirect.prototype.onResponse = function (response) {\n var self = this\n var request = self.request\n\n var redirectTo = self.redirectTo(response)\n if (!redirectTo || !self.allowRedirect.call(request, response)) {\n return false\n }\n\n request.debug('redirect to', redirectTo)\n\n // ignore any potential response body. it cannot possibly be useful\n // to us at this point.\n // response.resume should be defined, but check anyway before calling. Workaround for browserify.\n if (response.resume) {\n response.resume()\n }\n\n if (self.redirectsFollowed >= self.maxRedirects) {\n request.emit('error', new Error('Exceeded maxRedirects. Probably stuck in a redirect loop ' + request.uri.href))\n return false\n }\n self.redirectsFollowed += 1\n\n if (!isUrl.test(redirectTo)) {\n redirectTo = url.resolve(request.uri.href, redirectTo)\n }\n\n var uriPrev = request.uri\n request.uri = url.parse(redirectTo)\n\n // handle the case where we change protocol from https to http or vice versa\n if (request.uri.protocol !== uriPrev.protocol) {\n delete request.agent\n }\n\n self.redirects.push({ statusCode: response.statusCode, redirectUri: redirectTo })\n\n if (self.followAllRedirects && request.method !== 'HEAD' &&\n response.statusCode !== 401 && response.statusCode !== 307) {\n request.method = self.followOriginalHttpMethod ? request.method : 'GET'\n }\n // request.method = 'GET' // Force all redirects to use GET || commented out fixes #215\n delete request.src\n delete request.req\n delete request._started\n if (response.statusCode !== 401 && response.statusCode !== 307) {\n // Remove parameters from the previous response, unless this is the second request\n // for a server that requires digest authentication.\n delete request.body\n delete request._form\n if (request.headers) {\n request.removeHeader('host')\n request.removeHeader('content-type')\n request.removeHeader('content-length')\n if (request.uri.hostname !== request.originalHost.split(':')[0]) {\n // Remove authorization if changing hostnames (but not if just\n // changing ports or protocols). This matches the behavior of curl:\n // https://github.com/bagder/curl/blob/6beb0eee/lib/http.c#L710\n request.removeHeader('authorization')\n }\n }\n }\n\n if (!self.removeRefererHeader) {\n request.setHeader('referer', uriPrev.href)\n }\n\n request.emit('redirect')\n\n request.init()\n\n return true\n}\n\nexports.Redirect = Redirect\n","'use strict'\n\nvar url = require('url')\nvar tunnel = require('tunnel-agent')\n\nvar defaultProxyHeaderWhiteList = [\n 'accept',\n 'accept-charset',\n 'accept-encoding',\n 'accept-language',\n 'accept-ranges',\n 'cache-control',\n 'content-encoding',\n 'content-language',\n 'content-location',\n 'content-md5',\n 'content-range',\n 'content-type',\n 'connection',\n 'date',\n 'expect',\n 'max-forwards',\n 'pragma',\n 'referer',\n 'te',\n 'user-agent',\n 'via'\n]\n\nvar defaultProxyHeaderExclusiveList = [\n 'proxy-authorization'\n]\n\nfunction constructProxyHost (uriObject) {\n var port = uriObject.port\n var protocol = uriObject.protocol\n var proxyHost = uriObject.hostname + ':'\n\n if (port) {\n proxyHost += port\n } else if (protocol === 'https:') {\n proxyHost += '443'\n } else {\n proxyHost += '80'\n }\n\n return proxyHost\n}\n\nfunction constructProxyHeaderWhiteList (headers, proxyHeaderWhiteList) {\n var whiteList = proxyHeaderWhiteList\n .reduce(function (set, header) {\n set[header.toLowerCase()] = true\n return set\n }, {})\n\n return Object.keys(headers)\n .filter(function (header) {\n return whiteList[header.toLowerCase()]\n })\n .reduce(function (set, header) {\n set[header] = headers[header]\n return set\n }, {})\n}\n\nfunction constructTunnelOptions (request, proxyHeaders) {\n var proxy = request.proxy\n\n var tunnelOptions = {\n proxy: {\n host: proxy.hostname,\n port: +proxy.port,\n proxyAuth: proxy.auth,\n headers: proxyHeaders\n },\n headers: request.headers,\n ca: request.ca,\n cert: request.cert,\n key: request.key,\n passphrase: request.passphrase,\n pfx: request.pfx,\n ciphers: request.ciphers,\n rejectUnauthorized: request.rejectUnauthorized,\n secureOptions: request.secureOptions,\n secureProtocol: request.secureProtocol\n }\n\n return tunnelOptions\n}\n\nfunction constructTunnelFnName (uri, proxy) {\n var uriProtocol = (uri.protocol === 'https:' ? 'https' : 'http')\n var proxyProtocol = (proxy.protocol === 'https:' ? 'Https' : 'Http')\n return [uriProtocol, proxyProtocol].join('Over')\n}\n\nfunction getTunnelFn (request) {\n var uri = request.uri\n var proxy = request.proxy\n var tunnelFnName = constructTunnelFnName(uri, proxy)\n return tunnel[tunnelFnName]\n}\n\nfunction Tunnel (request) {\n this.request = request\n this.proxyHeaderWhiteList = defaultProxyHeaderWhiteList\n this.proxyHeaderExclusiveList = []\n if (typeof request.tunnel !== 'undefined') {\n this.tunnelOverride = request.tunnel\n }\n}\n\nTunnel.prototype.isEnabled = function () {\n var self = this\n var request = self.request\n // Tunnel HTTPS by default. Allow the user to override this setting.\n\n // If self.tunnelOverride is set (the user specified a value), use it.\n if (typeof self.tunnelOverride !== 'undefined') {\n return self.tunnelOverride\n }\n\n // If the destination is HTTPS, tunnel.\n if (request.uri.protocol === 'https:') {\n return true\n }\n\n // Otherwise, do not use tunnel.\n return false\n}\n\nTunnel.prototype.setup = function (options) {\n var self = this\n var request = self.request\n\n options = options || {}\n\n if (typeof request.proxy === 'string') {\n request.proxy = url.parse(request.proxy)\n }\n\n if (!request.proxy || !request.tunnel) {\n return false\n }\n\n // Setup Proxy Header Exclusive List and White List\n if (options.proxyHeaderWhiteList) {\n self.proxyHeaderWhiteList = options.proxyHeaderWhiteList\n }\n if (options.proxyHeaderExclusiveList) {\n self.proxyHeaderExclusiveList = options.proxyHeaderExclusiveList\n }\n\n var proxyHeaderExclusiveList = self.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList)\n var proxyHeaderWhiteList = self.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList)\n\n // Setup Proxy Headers and Proxy Headers Host\n // Only send the Proxy White Listed Header names\n var proxyHeaders = constructProxyHeaderWhiteList(request.headers, proxyHeaderWhiteList)\n proxyHeaders.host = constructProxyHost(request.uri)\n\n proxyHeaderExclusiveList.forEach(request.removeHeader, request)\n\n // Set Agent from Tunnel Data\n var tunnelFn = getTunnelFn(request)\n var tunnelOptions = constructTunnelOptions(request, proxyHeaders)\n request.agent = tunnelFn(tunnelOptions)\n\n return true\n}\n\nTunnel.defaultProxyHeaderWhiteList = defaultProxyHeaderWhiteList\nTunnel.defaultProxyHeaderExclusiveList = defaultProxyHeaderExclusiveList\nexports.Tunnel = Tunnel\n","'use strict'\n\nvar http = require('http')\nvar https = require('https')\nvar url = require('url')\nvar util = require('util')\nvar stream = require('stream')\nvar zlib = require('zlib')\nvar aws2 = require('aws-sign2')\nvar aws4 = require('aws4')\nvar httpSignature = require('http-signature')\nvar mime = require('mime-types')\nvar caseless = require('caseless')\nvar ForeverAgent = require('forever-agent')\nvar FormData = require('form-data')\nvar extend = require('extend')\nvar isstream = require('isstream')\nvar isTypedArray = require('is-typedarray').strict\nvar helpers = require('./lib/helpers')\nvar cookies = require('./lib/cookies')\nvar getProxyFromURI = require('./lib/getProxyFromURI')\nvar Querystring = require('./lib/querystring').Querystring\nvar Har = require('./lib/har').Har\nvar Auth = require('./lib/auth').Auth\nvar OAuth = require('./lib/oauth').OAuth\nvar hawk = require('./lib/hawk')\nvar Multipart = require('./lib/multipart').Multipart\nvar Redirect = require('./lib/redirect').Redirect\nvar Tunnel = require('./lib/tunnel').Tunnel\nvar now = require('performance-now')\nvar Buffer = require('safe-buffer').Buffer\n\nvar safeStringify = helpers.safeStringify\nvar isReadStream = helpers.isReadStream\nvar toBase64 = helpers.toBase64\nvar defer = helpers.defer\nvar copy = helpers.copy\nvar version = helpers.version\nvar globalCookieJar = cookies.jar()\n\nvar globalPool = {}\n\nfunction filterForNonReserved (reserved, options) {\n // Filter out properties that are not reserved.\n // Reserved values are passed in at call site.\n\n var object = {}\n for (var i in options) {\n var notReserved = (reserved.indexOf(i) === -1)\n if (notReserved) {\n object[i] = options[i]\n }\n }\n return object\n}\n\nfunction filterOutReservedFunctions (reserved, options) {\n // Filter out properties that are functions and are reserved.\n // Reserved values are passed in at call site.\n\n var object = {}\n for (var i in options) {\n var isReserved = !(reserved.indexOf(i) === -1)\n var isFunction = (typeof options[i] === 'function')\n if (!(isReserved && isFunction)) {\n object[i] = options[i]\n }\n }\n return object\n}\n\n// Return a simpler request object to allow serialization\nfunction requestToJSON () {\n var self = this\n return {\n uri: self.uri,\n method: self.method,\n headers: self.headers\n }\n}\n\n// Return a simpler response object to allow serialization\nfunction responseToJSON () {\n var self = this\n return {\n statusCode: self.statusCode,\n body: self.body,\n headers: self.headers,\n request: requestToJSON.call(self.request)\n }\n}\n\nfunction Request (options) {\n // if given the method property in options, set property explicitMethod to true\n\n // extend the Request instance with any non-reserved properties\n // remove any reserved functions from the options object\n // set Request instance to be readable and writable\n // call init\n\n var self = this\n\n // start with HAR, then override with additional options\n if (options.har) {\n self._har = new Har(self)\n options = self._har.options(options)\n }\n\n stream.Stream.call(self)\n var reserved = Object.keys(Request.prototype)\n var nonReserved = filterForNonReserved(reserved, options)\n\n extend(self, nonReserved)\n options = filterOutReservedFunctions(reserved, options)\n\n self.readable = true\n self.writable = true\n if (options.method) {\n self.explicitMethod = true\n }\n self._qs = new Querystring(self)\n self._auth = new Auth(self)\n self._oauth = new OAuth(self)\n self._multipart = new Multipart(self)\n self._redirect = new Redirect(self)\n self._tunnel = new Tunnel(self)\n self.init(options)\n}\n\nutil.inherits(Request, stream.Stream)\n\n// Debugging\nRequest.debug = process.env.NODE_DEBUG && /\\brequest\\b/.test(process.env.NODE_DEBUG)\nfunction debug () {\n if (Request.debug) {\n console.error('REQUEST %s', util.format.apply(util, arguments))\n }\n}\nRequest.prototype.debug = debug\n\nRequest.prototype.init = function (options) {\n // init() contains all the code to setup the request object.\n // the actual outgoing request is not started until start() is called\n // this function is called from both the constructor and on redirect.\n var self = this\n if (!options) {\n options = {}\n }\n self.headers = self.headers ? copy(self.headers) : {}\n\n // Delete headers with value undefined since they break\n // ClientRequest.OutgoingMessage.setHeader in node 0.12\n for (var headerName in self.headers) {\n if (typeof self.headers[headerName] === 'undefined') {\n delete self.headers[headerName]\n }\n }\n\n caseless.httpify(self, self.headers)\n\n if (!self.method) {\n self.method = options.method || 'GET'\n }\n if (!self.localAddress) {\n self.localAddress = options.localAddress\n }\n\n self._qs.init(options)\n\n debug(options)\n if (!self.pool && self.pool !== false) {\n self.pool = globalPool\n }\n self.dests = self.dests || []\n self.__isRequestRequest = true\n\n // Protect against double callback\n if (!self._callback && self.callback) {\n self._callback = self.callback\n self.callback = function () {\n if (self._callbackCalled) {\n return // Print a warning maybe?\n }\n self._callbackCalled = true\n self._callback.apply(self, arguments)\n }\n self.on('error', self.callback.bind())\n self.on('complete', self.callback.bind(self, null))\n }\n\n // People use this property instead all the time, so support it\n if (!self.uri && self.url) {\n self.uri = self.url\n delete self.url\n }\n\n // If there's a baseUrl, then use it as the base URL (i.e. uri must be\n // specified as a relative path and is appended to baseUrl).\n if (self.baseUrl) {\n if (typeof self.baseUrl !== 'string') {\n return self.emit('error', new Error('options.baseUrl must be a string'))\n }\n\n if (typeof self.uri !== 'string') {\n return self.emit('error', new Error('options.uri must be a string when using options.baseUrl'))\n }\n\n if (self.uri.indexOf('//') === 0 || self.uri.indexOf('://') !== -1) {\n return self.emit('error', new Error('options.uri must be a path when using options.baseUrl'))\n }\n\n // Handle all cases to make sure that there's only one slash between\n // baseUrl and uri.\n var baseUrlEndsWithSlash = self.baseUrl.lastIndexOf('/') === self.baseUrl.length - 1\n var uriStartsWithSlash = self.uri.indexOf('/') === 0\n\n if (baseUrlEndsWithSlash && uriStartsWithSlash) {\n self.uri = self.baseUrl + self.uri.slice(1)\n } else if (baseUrlEndsWithSlash || uriStartsWithSlash) {\n self.uri = self.baseUrl + self.uri\n } else if (self.uri === '') {\n self.uri = self.baseUrl\n } else {\n self.uri = self.baseUrl + '/' + self.uri\n }\n delete self.baseUrl\n }\n\n // A URI is needed by this point, emit error if we haven't been able to get one\n if (!self.uri) {\n return self.emit('error', new Error('options.uri is a required argument'))\n }\n\n // If a string URI/URL was given, parse it into a URL object\n if (typeof self.uri === 'string') {\n self.uri = url.parse(self.uri)\n }\n\n // Some URL objects are not from a URL parsed string and need href added\n if (!self.uri.href) {\n self.uri.href = url.format(self.uri)\n }\n\n // DEPRECATED: Warning for users of the old Unix Sockets URL Scheme\n if (self.uri.protocol === 'unix:') {\n return self.emit('error', new Error('`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`'))\n }\n\n // Support Unix Sockets\n if (self.uri.host === 'unix') {\n self.enableUnixSocket()\n }\n\n if (self.strictSSL === false) {\n self.rejectUnauthorized = false\n }\n\n if (!self.uri.pathname) { self.uri.pathname = '/' }\n\n if (!(self.uri.host || (self.uri.hostname && self.uri.port)) && !self.uri.isUnix) {\n // Invalid URI: it may generate lot of bad errors, like 'TypeError: Cannot call method `indexOf` of undefined' in CookieJar\n // Detect and reject it as soon as possible\n var faultyUri = url.format(self.uri)\n var message = 'Invalid URI \"' + faultyUri + '\"'\n if (Object.keys(options).length === 0) {\n // No option ? This can be the sign of a redirect\n // As this is a case where the user cannot do anything (they didn't call request directly with this URL)\n // they should be warned that it can be caused by a redirection (can save some hair)\n message += '. This can be caused by a crappy redirection.'\n }\n // This error was fatal\n self.abort()\n return self.emit('error', new Error(message))\n }\n\n if (!self.hasOwnProperty('proxy')) {\n self.proxy = getProxyFromURI(self.uri)\n }\n\n self.tunnel = self._tunnel.isEnabled()\n if (self.proxy) {\n self._tunnel.setup(options)\n }\n\n self._redirect.onRequest(options)\n\n self.setHost = false\n if (!self.hasHeader('host')) {\n var hostHeaderName = self.originalHostHeaderName || 'host'\n self.setHeader(hostHeaderName, self.uri.host)\n // Drop :port suffix from Host header if known protocol.\n if (self.uri.port) {\n if ((self.uri.port === '80' && self.uri.protocol === 'http:') ||\n (self.uri.port === '443' && self.uri.protocol === 'https:')) {\n self.setHeader(hostHeaderName, self.uri.hostname)\n }\n }\n self.setHost = true\n }\n\n self.jar(self._jar || options.jar)\n\n if (!self.uri.port) {\n if (self.uri.protocol === 'http:') { self.uri.port = 80 } else if (self.uri.protocol === 'https:') { self.uri.port = 443 }\n }\n\n if (self.proxy && !self.tunnel) {\n self.port = self.proxy.port\n self.host = self.proxy.hostname\n } else {\n self.port = self.uri.port\n self.host = self.uri.hostname\n }\n\n if (options.form) {\n self.form(options.form)\n }\n\n if (options.formData) {\n var formData = options.formData\n var requestForm = self.form()\n var appendFormValue = function (key, value) {\n if (value && value.hasOwnProperty('value') && value.hasOwnProperty('options')) {\n requestForm.append(key, value.value, value.options)\n } else {\n requestForm.append(key, value)\n }\n }\n for (var formKey in formData) {\n if (formData.hasOwnProperty(formKey)) {\n var formValue = formData[formKey]\n if (formValue instanceof Array) {\n for (var j = 0; j < formValue.length; j++) {\n appendFormValue(formKey, formValue[j])\n }\n } else {\n appendFormValue(formKey, formValue)\n }\n }\n }\n }\n\n if (options.qs) {\n self.qs(options.qs)\n }\n\n if (self.uri.path) {\n self.path = self.uri.path\n } else {\n self.path = self.uri.pathname + (self.uri.search || '')\n }\n\n if (self.path.length === 0) {\n self.path = '/'\n }\n\n // Auth must happen last in case signing is dependent on other headers\n if (options.aws) {\n self.aws(options.aws)\n }\n\n if (options.hawk) {\n self.hawk(options.hawk)\n }\n\n if (options.httpSignature) {\n self.httpSignature(options.httpSignature)\n }\n\n if (options.auth) {\n if (Object.prototype.hasOwnProperty.call(options.auth, 'username')) {\n options.auth.user = options.auth.username\n }\n if (Object.prototype.hasOwnProperty.call(options.auth, 'password')) {\n options.auth.pass = options.auth.password\n }\n\n self.auth(\n options.auth.user,\n options.auth.pass,\n options.auth.sendImmediately,\n options.auth.bearer\n )\n }\n\n if (self.gzip && !self.hasHeader('accept-encoding')) {\n self.setHeader('accept-encoding', 'gzip, deflate')\n }\n\n if (self.uri.auth && !self.hasHeader('authorization')) {\n var uriAuthPieces = self.uri.auth.split(':').map(function (item) { return self._qs.unescape(item) })\n self.auth(uriAuthPieces[0], uriAuthPieces.slice(1).join(':'), true)\n }\n\n if (!self.tunnel && self.proxy && self.proxy.auth && !self.hasHeader('proxy-authorization')) {\n var proxyAuthPieces = self.proxy.auth.split(':').map(function (item) { return self._qs.unescape(item) })\n var authHeader = 'Basic ' + toBase64(proxyAuthPieces.join(':'))\n self.setHeader('proxy-authorization', authHeader)\n }\n\n if (self.proxy && !self.tunnel) {\n self.path = (self.uri.protocol + '//' + self.uri.host + self.path)\n }\n\n if (options.json) {\n self.json(options.json)\n }\n if (options.multipart) {\n self.multipart(options.multipart)\n }\n\n if (options.time) {\n self.timing = true\n\n // NOTE: elapsedTime is deprecated in favor of .timings\n self.elapsedTime = self.elapsedTime || 0\n }\n\n function setContentLength () {\n if (isTypedArray(self.body)) {\n self.body = Buffer.from(self.body)\n }\n\n if (!self.hasHeader('content-length')) {\n var length\n if (typeof self.body === 'string') {\n length = Buffer.byteLength(self.body)\n } else if (Array.isArray(self.body)) {\n length = self.body.reduce(function (a, b) { return a + b.length }, 0)\n } else {\n length = self.body.length\n }\n\n if (length) {\n self.setHeader('content-length', length)\n } else {\n self.emit('error', new Error('Argument error, options.body.'))\n }\n }\n }\n if (self.body && !isstream(self.body)) {\n setContentLength()\n }\n\n if (options.oauth) {\n self.oauth(options.oauth)\n } else if (self._oauth.params && self.hasHeader('authorization')) {\n self.oauth(self._oauth.params)\n }\n\n var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol\n var defaultModules = {'http:': http, 'https:': https}\n var httpModules = self.httpModules || {}\n\n self.httpModule = httpModules[protocol] || defaultModules[protocol]\n\n if (!self.httpModule) {\n return self.emit('error', new Error('Invalid protocol: ' + protocol))\n }\n\n if (options.ca) {\n self.ca = options.ca\n }\n\n if (!self.agent) {\n if (options.agentOptions) {\n self.agentOptions = options.agentOptions\n }\n\n if (options.agentClass) {\n self.agentClass = options.agentClass\n } else if (options.forever) {\n var v = version()\n // use ForeverAgent in node 0.10- only\n if (v.major === 0 && v.minor <= 10) {\n self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL\n } else {\n self.agentClass = self.httpModule.Agent\n self.agentOptions = self.agentOptions || {}\n self.agentOptions.keepAlive = true\n }\n } else {\n self.agentClass = self.httpModule.Agent\n }\n }\n\n if (self.pool === false) {\n self.agent = false\n } else {\n self.agent = self.agent || self.getNewAgent()\n }\n\n self.on('pipe', function (src) {\n if (self.ntick && self._started) {\n self.emit('error', new Error('You cannot pipe to this stream after the outbound request has started.'))\n }\n self.src = src\n if (isReadStream(src)) {\n if (!self.hasHeader('content-type')) {\n self.setHeader('content-type', mime.lookup(src.path))\n }\n } else {\n if (src.headers) {\n for (var i in src.headers) {\n if (!self.hasHeader(i)) {\n self.setHeader(i, src.headers[i])\n }\n }\n }\n if (self._json && !self.hasHeader('content-type')) {\n self.setHeader('content-type', 'application/json')\n }\n if (src.method && !self.explicitMethod) {\n self.method = src.method\n }\n }\n\n // self.on('pipe', function () {\n // console.error('You have already piped to this stream. Pipeing twice is likely to break the request.')\n // })\n })\n\n defer(function () {\n if (self._aborted) {\n return\n }\n\n var end = function () {\n if (self._form) {\n if (!self._auth.hasAuth) {\n self._form.pipe(self)\n } else if (self._auth.hasAuth && self._auth.sentAuth) {\n self._form.pipe(self)\n }\n }\n if (self._multipart && self._multipart.chunked) {\n self._multipart.body.pipe(self)\n }\n if (self.body) {\n if (isstream(self.body)) {\n self.body.pipe(self)\n } else {\n setContentLength()\n if (Array.isArray(self.body)) {\n self.body.forEach(function (part) {\n self.write(part)\n })\n } else {\n self.write(self.body)\n }\n self.end()\n }\n } else if (self.requestBodyStream) {\n console.warn('options.requestBodyStream is deprecated, please pass the request object to stream.pipe.')\n self.requestBodyStream.pipe(self)\n } else if (!self.src) {\n if (self._auth.hasAuth && !self._auth.sentAuth) {\n self.end()\n return\n }\n if (self.method !== 'GET' && typeof self.method !== 'undefined') {\n self.setHeader('content-length', 0)\n }\n self.end()\n }\n }\n\n if (self._form && !self.hasHeader('content-length')) {\n // Before ending the request, we had to compute the length of the whole form, asyncly\n self.setHeader(self._form.getHeaders(), true)\n self._form.getLength(function (err, length) {\n if (!err && !isNaN(length)) {\n self.setHeader('content-length', length)\n }\n end()\n })\n } else {\n end()\n }\n\n self.ntick = true\n })\n}\n\nRequest.prototype.getNewAgent = function () {\n var self = this\n var Agent = self.agentClass\n var options = {}\n if (self.agentOptions) {\n for (var i in self.agentOptions) {\n options[i] = self.agentOptions[i]\n }\n }\n if (self.ca) {\n options.ca = self.ca\n }\n if (self.ciphers) {\n options.ciphers = self.ciphers\n }\n if (self.secureProtocol) {\n options.secureProtocol = self.secureProtocol\n }\n if (self.secureOptions) {\n options.secureOptions = self.secureOptions\n }\n if (typeof self.rejectUnauthorized !== 'undefined') {\n options.rejectUnauthorized = self.rejectUnauthorized\n }\n\n if (self.cert && self.key) {\n options.key = self.key\n options.cert = self.cert\n }\n\n if (self.pfx) {\n options.pfx = self.pfx\n }\n\n if (self.passphrase) {\n options.passphrase = self.passphrase\n }\n\n var poolKey = ''\n\n // different types of agents are in different pools\n if (Agent !== self.httpModule.Agent) {\n poolKey += Agent.name\n }\n\n // ca option is only relevant if proxy or destination are https\n var proxy = self.proxy\n if (typeof proxy === 'string') {\n proxy = url.parse(proxy)\n }\n var isHttps = (proxy && proxy.protocol === 'https:') || this.uri.protocol === 'https:'\n\n if (isHttps) {\n if (options.ca) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.ca\n }\n\n if (typeof options.rejectUnauthorized !== 'undefined') {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.rejectUnauthorized\n }\n\n if (options.cert) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.cert.toString('ascii') + options.key.toString('ascii')\n }\n\n if (options.pfx) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.pfx.toString('ascii')\n }\n\n if (options.ciphers) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.ciphers\n }\n\n if (options.secureProtocol) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.secureProtocol\n }\n\n if (options.secureOptions) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.secureOptions\n }\n }\n\n if (self.pool === globalPool && !poolKey && Object.keys(options).length === 0 && self.httpModule.globalAgent) {\n // not doing anything special. Use the globalAgent\n return self.httpModule.globalAgent\n }\n\n // we're using a stored agent. Make sure it's protocol-specific\n poolKey = self.uri.protocol + poolKey\n\n // generate a new agent for this setting if none yet exists\n if (!self.pool[poolKey]) {\n self.pool[poolKey] = new Agent(options)\n // properly set maxSockets on new agents\n if (self.pool.maxSockets) {\n self.pool[poolKey].maxSockets = self.pool.maxSockets\n }\n }\n\n return self.pool[poolKey]\n}\n\nRequest.prototype.start = function () {\n // start() is called once we are ready to send the outgoing HTTP request.\n // this is usually called on the first write(), end() or on nextTick()\n var self = this\n\n if (self.timing) {\n // All timings will be relative to this request's startTime. In order to do this,\n // we need to capture the wall-clock start time (via Date), immediately followed\n // by the high-resolution timer (via now()). While these two won't be set\n // at the _exact_ same time, they should be close enough to be able to calculate\n // high-resolution, monotonically non-decreasing timestamps relative to startTime.\n var startTime = new Date().getTime()\n var startTimeNow = now()\n }\n\n if (self._aborted) {\n return\n }\n\n self._started = true\n self.method = self.method || 'GET'\n self.href = self.uri.href\n\n if (self.src && self.src.stat && self.src.stat.size && !self.hasHeader('content-length')) {\n self.setHeader('content-length', self.src.stat.size)\n }\n if (self._aws) {\n self.aws(self._aws, true)\n }\n\n // We have a method named auth, which is completely different from the http.request\n // auth option. If we don't remove it, we're gonna have a bad time.\n var reqOptions = copy(self)\n delete reqOptions.auth\n\n debug('make request', self.uri.href)\n\n // node v6.8.0 now supports a `timeout` value in `http.request()`, but we\n // should delete it for now since we handle timeouts manually for better\n // consistency with node versions before v6.8.0\n delete reqOptions.timeout\n\n try {\n self.req = self.httpModule.request(reqOptions)\n } catch (err) {\n self.emit('error', err)\n return\n }\n\n if (self.timing) {\n self.startTime = startTime\n self.startTimeNow = startTimeNow\n\n // Timing values will all be relative to startTime (by comparing to startTimeNow\n // so we have an accurate clock)\n self.timings = {}\n }\n\n var timeout\n if (self.timeout && !self.timeoutTimer) {\n if (self.timeout < 0) {\n timeout = 0\n } else if (typeof self.timeout === 'number' && isFinite(self.timeout)) {\n timeout = self.timeout\n }\n }\n\n self.req.on('response', self.onRequestResponse.bind(self))\n self.req.on('error', self.onRequestError.bind(self))\n self.req.on('drain', function () {\n self.emit('drain')\n })\n\n self.req.on('socket', function (socket) {\n // `._connecting` was the old property which was made public in node v6.1.0\n var isConnecting = socket._connecting || socket.connecting\n if (self.timing) {\n self.timings.socket = now() - self.startTimeNow\n\n if (isConnecting) {\n var onLookupTiming = function () {\n self.timings.lookup = now() - self.startTimeNow\n }\n\n var onConnectTiming = function () {\n self.timings.connect = now() - self.startTimeNow\n }\n\n socket.once('lookup', onLookupTiming)\n socket.once('connect', onConnectTiming)\n\n // clean up timing event listeners if needed on error\n self.req.once('error', function () {\n socket.removeListener('lookup', onLookupTiming)\n socket.removeListener('connect', onConnectTiming)\n })\n }\n }\n\n var setReqTimeout = function () {\n // This timeout sets the amount of time to wait *between* bytes sent\n // from the server once connected.\n //\n // In particular, it's useful for erroring if the server fails to send\n // data halfway through streaming a response.\n self.req.setTimeout(timeout, function () {\n if (self.req) {\n self.abort()\n var e = new Error('ESOCKETTIMEDOUT')\n e.code = 'ESOCKETTIMEDOUT'\n e.connect = false\n self.emit('error', e)\n }\n })\n }\n if (timeout !== undefined) {\n // Only start the connection timer if we're actually connecting a new\n // socket, otherwise if we're already connected (because this is a\n // keep-alive connection) do not bother. This is important since we won't\n // get a 'connect' event for an already connected socket.\n if (isConnecting) {\n var onReqSockConnect = function () {\n socket.removeListener('connect', onReqSockConnect)\n self.clearTimeout()\n setReqTimeout()\n }\n\n socket.on('connect', onReqSockConnect)\n\n self.req.on('error', function (err) { // eslint-disable-line handle-callback-err\n socket.removeListener('connect', onReqSockConnect)\n })\n\n // Set a timeout in memory - this block will throw if the server takes more\n // than `timeout` to write the HTTP status and headers (corresponding to\n // the on('response') event on the client). NB: this measures wall-clock\n // time, not the time between bytes sent by the server.\n self.timeoutTimer = setTimeout(function () {\n socket.removeListener('connect', onReqSockConnect)\n self.abort()\n var e = new Error('ETIMEDOUT')\n e.code = 'ETIMEDOUT'\n e.connect = true\n self.emit('error', e)\n }, timeout)\n } else {\n // We're already connected\n setReqTimeout()\n }\n }\n self.emit('socket', socket)\n })\n\n self.emit('request', self.req)\n}\n\nRequest.prototype.onRequestError = function (error) {\n var self = this\n if (self._aborted) {\n return\n }\n if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET' &&\n self.agent.addRequestNoreuse) {\n self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) }\n self.start()\n self.req.end()\n return\n }\n self.clearTimeout()\n self.emit('error', error)\n}\n\nRequest.prototype.onRequestResponse = function (response) {\n var self = this\n\n if (self.timing) {\n self.timings.response = now() - self.startTimeNow\n }\n\n debug('onRequestResponse', self.uri.href, response.statusCode, response.headers)\n response.on('end', function () {\n if (self.timing) {\n self.timings.end = now() - self.startTimeNow\n response.timingStart = self.startTime\n\n // fill in the blanks for any periods that didn't trigger, such as\n // no lookup or connect due to keep alive\n if (!self.timings.socket) {\n self.timings.socket = 0\n }\n if (!self.timings.lookup) {\n self.timings.lookup = self.timings.socket\n }\n if (!self.timings.connect) {\n self.timings.connect = self.timings.lookup\n }\n if (!self.timings.response) {\n self.timings.response = self.timings.connect\n }\n\n debug('elapsed time', self.timings.end)\n\n // elapsedTime includes all redirects\n self.elapsedTime += Math.round(self.timings.end)\n\n // NOTE: elapsedTime is deprecated in favor of .timings\n response.elapsedTime = self.elapsedTime\n\n // timings is just for the final fetch\n response.timings = self.timings\n\n // pre-calculate phase timings as well\n response.timingPhases = {\n wait: self.timings.socket,\n dns: self.timings.lookup - self.timings.socket,\n tcp: self.timings.connect - self.timings.lookup,\n firstByte: self.timings.response - self.timings.connect,\n download: self.timings.end - self.timings.response,\n total: self.timings.end\n }\n }\n debug('response end', self.uri.href, response.statusCode, response.headers)\n })\n\n if (self._aborted) {\n debug('aborted', self.uri.href)\n response.resume()\n return\n }\n\n self.response = response\n response.request = self\n response.toJSON = responseToJSON\n\n // XXX This is different on 0.10, because SSL is strict by default\n if (self.httpModule === https &&\n self.strictSSL && (!response.hasOwnProperty('socket') ||\n !response.socket.authorized)) {\n debug('strict ssl error', self.uri.href)\n var sslErr = response.hasOwnProperty('socket') ? response.socket.authorizationError : self.uri.href + ' does not support SSL'\n self.emit('error', new Error('SSL Error: ' + sslErr))\n return\n }\n\n // Save the original host before any redirect (if it changes, we need to\n // remove any authorization headers). Also remember the case of the header\n // name because lots of broken servers expect Host instead of host and we\n // want the caller to be able to specify this.\n self.originalHost = self.getHeader('host')\n if (!self.originalHostHeaderName) {\n self.originalHostHeaderName = self.hasHeader('host')\n }\n if (self.setHost) {\n self.removeHeader('host')\n }\n self.clearTimeout()\n\n var targetCookieJar = (self._jar && self._jar.setCookie) ? self._jar : globalCookieJar\n var addCookie = function (cookie) {\n // set the cookie if it's domain in the href's domain.\n try {\n targetCookieJar.setCookie(cookie, self.uri.href, {ignoreError: true})\n } catch (e) {\n self.emit('error', e)\n }\n }\n\n response.caseless = caseless(response.headers)\n\n if (response.caseless.has('set-cookie') && (!self._disableCookies)) {\n var headerName = response.caseless.has('set-cookie')\n if (Array.isArray(response.headers[headerName])) {\n response.headers[headerName].forEach(addCookie)\n } else {\n addCookie(response.headers[headerName])\n }\n }\n\n if (self._redirect.onResponse(response)) {\n return // Ignore the rest of the response\n } else {\n // Be a good stream and emit end when the response is finished.\n // Hack to emit end on close because of a core bug that never fires end\n response.on('close', function () {\n if (!self._ended) {\n self.response.emit('end')\n }\n })\n\n response.once('end', function () {\n self._ended = true\n })\n\n var noBody = function (code) {\n return (\n self.method === 'HEAD' ||\n // Informational\n (code >= 100 && code < 200) ||\n // No Content\n code === 204 ||\n // Not Modified\n code === 304\n )\n }\n\n var responseContent\n if (self.gzip && !noBody(response.statusCode)) {\n var contentEncoding = response.headers['content-encoding'] || 'identity'\n contentEncoding = contentEncoding.trim().toLowerCase()\n\n // Be more lenient with decoding compressed responses, since (very rarely)\n // servers send slightly invalid gzip responses that are still accepted\n // by common browsers.\n // Always using Z_SYNC_FLUSH is what cURL does.\n var zlibOptions = {\n flush: zlib.Z_SYNC_FLUSH,\n finishFlush: zlib.Z_SYNC_FLUSH\n }\n\n if (contentEncoding === 'gzip') {\n responseContent = zlib.createGunzip(zlibOptions)\n response.pipe(responseContent)\n } else if (contentEncoding === 'deflate') {\n responseContent = zlib.createInflate(zlibOptions)\n response.pipe(responseContent)\n } else {\n // Since previous versions didn't check for Content-Encoding header,\n // ignore any invalid values to preserve backwards-compatibility\n if (contentEncoding !== 'identity') {\n debug('ignoring unrecognized Content-Encoding ' + contentEncoding)\n }\n responseContent = response\n }\n } else {\n responseContent = response\n }\n\n if (self.encoding) {\n if (self.dests.length !== 0) {\n console.error('Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.')\n } else {\n responseContent.setEncoding(self.encoding)\n }\n }\n\n if (self._paused) {\n responseContent.pause()\n }\n\n self.responseContent = responseContent\n\n self.emit('response', response)\n\n self.dests.forEach(function (dest) {\n self.pipeDest(dest)\n })\n\n responseContent.on('data', function (chunk) {\n if (self.timing && !self.responseStarted) {\n self.responseStartTime = (new Date()).getTime()\n\n // NOTE: responseStartTime is deprecated in favor of .timings\n response.responseStartTime = self.responseStartTime\n }\n self._destdata = true\n self.emit('data', chunk)\n })\n responseContent.once('end', function (chunk) {\n self.emit('end', chunk)\n })\n responseContent.on('error', function (error) {\n self.emit('error', error)\n })\n responseContent.on('close', function () { self.emit('close') })\n\n if (self.callback) {\n self.readResponseBody(response)\n } else { // if no callback\n self.on('end', function () {\n if (self._aborted) {\n debug('aborted', self.uri.href)\n return\n }\n self.emit('complete', response)\n })\n }\n }\n debug('finish init function', self.uri.href)\n}\n\nRequest.prototype.readResponseBody = function (response) {\n var self = this\n debug(\"reading response's body\")\n var buffers = []\n var bufferLength = 0\n var strings = []\n\n self.on('data', function (chunk) {\n if (!Buffer.isBuffer(chunk)) {\n strings.push(chunk)\n } else if (chunk.length) {\n bufferLength += chunk.length\n buffers.push(chunk)\n }\n })\n self.on('end', function () {\n debug('end event', self.uri.href)\n if (self._aborted) {\n debug('aborted', self.uri.href)\n // `buffer` is defined in the parent scope and used in a closure it exists for the life of the request.\n // This can lead to leaky behavior if the user retains a reference to the request object.\n buffers = []\n bufferLength = 0\n return\n }\n\n if (bufferLength) {\n debug('has body', self.uri.href, bufferLength)\n response.body = Buffer.concat(buffers, bufferLength)\n if (self.encoding !== null) {\n response.body = response.body.toString(self.encoding)\n }\n // `buffer` is defined in the parent scope and used in a closure it exists for the life of the Request.\n // This can lead to leaky behavior if the user retains a reference to the request object.\n buffers = []\n bufferLength = 0\n } else if (strings.length) {\n // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation.\n // Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse().\n if (self.encoding === 'utf8' && strings[0].length > 0 && strings[0][0] === '\\uFEFF') {\n strings[0] = strings[0].substring(1)\n }\n response.body = strings.join('')\n }\n\n if (self._json) {\n try {\n response.body = JSON.parse(response.body, self._jsonReviver)\n } catch (e) {\n debug('invalid JSON received', self.uri.href)\n }\n }\n debug('emitting complete', self.uri.href)\n if (typeof response.body === 'undefined' && !self._json) {\n response.body = self.encoding === null ? Buffer.alloc(0) : ''\n }\n self.emit('complete', response, response.body)\n })\n}\n\nRequest.prototype.abort = function () {\n var self = this\n self._aborted = true\n\n if (self.req) {\n self.req.abort()\n } else if (self.response) {\n self.response.destroy()\n }\n\n self.clearTimeout()\n self.emit('abort')\n}\n\nRequest.prototype.pipeDest = function (dest) {\n var self = this\n var response = self.response\n // Called after the response is received\n if (dest.headers && !dest.headersSent) {\n if (response.caseless.has('content-type')) {\n var ctname = response.caseless.has('content-type')\n if (dest.setHeader) {\n dest.setHeader(ctname, response.headers[ctname])\n } else {\n dest.headers[ctname] = response.headers[ctname]\n }\n }\n\n if (response.caseless.has('content-length')) {\n var clname = response.caseless.has('content-length')\n if (dest.setHeader) {\n dest.setHeader(clname, response.headers[clname])\n } else {\n dest.headers[clname] = response.headers[clname]\n }\n }\n }\n if (dest.setHeader && !dest.headersSent) {\n for (var i in response.headers) {\n // If the response content is being decoded, the Content-Encoding header\n // of the response doesn't represent the piped content, so don't pass it.\n if (!self.gzip || i !== 'content-encoding') {\n dest.setHeader(i, response.headers[i])\n }\n }\n dest.statusCode = response.statusCode\n }\n if (self.pipefilter) {\n self.pipefilter(response, dest)\n }\n}\n\nRequest.prototype.qs = function (q, clobber) {\n var self = this\n var base\n if (!clobber && self.uri.query) {\n base = self._qs.parse(self.uri.query)\n } else {\n base = {}\n }\n\n for (var i in q) {\n base[i] = q[i]\n }\n\n var qs = self._qs.stringify(base)\n\n if (qs === '') {\n return self\n }\n\n self.uri = url.parse(self.uri.href.split('?')[0] + '?' + qs)\n self.url = self.uri\n self.path = self.uri.path\n\n if (self.uri.host === 'unix') {\n self.enableUnixSocket()\n }\n\n return self\n}\nRequest.prototype.form = function (form) {\n var self = this\n if (form) {\n if (!/^application\\/x-www-form-urlencoded\\b/.test(self.getHeader('content-type'))) {\n self.setHeader('content-type', 'application/x-www-form-urlencoded')\n }\n self.body = (typeof form === 'string')\n ? self._qs.rfc3986(form.toString('utf8'))\n : self._qs.stringify(form).toString('utf8')\n return self\n }\n // create form-data object\n self._form = new FormData()\n self._form.on('error', function (err) {\n err.message = 'form-data: ' + err.message\n self.emit('error', err)\n self.abort()\n })\n return self._form\n}\nRequest.prototype.multipart = function (multipart) {\n var self = this\n\n self._multipart.onRequest(multipart)\n\n if (!self._multipart.chunked) {\n self.body = self._multipart.body\n }\n\n return self\n}\nRequest.prototype.json = function (val) {\n var self = this\n\n if (!self.hasHeader('accept')) {\n self.setHeader('accept', 'application/json')\n }\n\n if (typeof self.jsonReplacer === 'function') {\n self._jsonReplacer = self.jsonReplacer\n }\n\n self._json = true\n if (typeof val === 'boolean') {\n if (self.body !== undefined) {\n if (!/^application\\/x-www-form-urlencoded\\b/.test(self.getHeader('content-type'))) {\n self.body = safeStringify(self.body, self._jsonReplacer)\n } else {\n self.body = self._qs.rfc3986(self.body)\n }\n if (!self.hasHeader('content-type')) {\n self.setHeader('content-type', 'application/json')\n }\n }\n } else {\n self.body = safeStringify(val, self._jsonReplacer)\n if (!self.hasHeader('content-type')) {\n self.setHeader('content-type', 'application/json')\n }\n }\n\n if (typeof self.jsonReviver === 'function') {\n self._jsonReviver = self.jsonReviver\n }\n\n return self\n}\nRequest.prototype.getHeader = function (name, headers) {\n var self = this\n var result, re, match\n if (!headers) {\n headers = self.headers\n }\n Object.keys(headers).forEach(function (key) {\n if (key.length !== name.length) {\n return\n }\n re = new RegExp(name, 'i')\n match = key.match(re)\n if (match) {\n result = headers[key]\n }\n })\n return result\n}\nRequest.prototype.enableUnixSocket = function () {\n // Get the socket & request paths from the URL\n var unixParts = this.uri.path.split(':')\n var host = unixParts[0]\n var path = unixParts[1]\n // Apply unix properties to request\n this.socketPath = host\n this.uri.pathname = path\n this.uri.path = path\n this.uri.host = host\n this.uri.hostname = host\n this.uri.isUnix = true\n}\n\nRequest.prototype.auth = function (user, pass, sendImmediately, bearer) {\n var self = this\n\n self._auth.onRequest(user, pass, sendImmediately, bearer)\n\n return self\n}\nRequest.prototype.aws = function (opts, now) {\n var self = this\n\n if (!now) {\n self._aws = opts\n return self\n }\n\n if (opts.sign_version === 4 || opts.sign_version === '4') {\n // use aws4\n var options = {\n host: self.uri.host,\n path: self.uri.path,\n method: self.method,\n headers: self.headers,\n body: self.body\n }\n if (opts.service) {\n options.service = opts.service\n }\n var signRes = aws4.sign(options, {\n accessKeyId: opts.key,\n secretAccessKey: opts.secret,\n sessionToken: opts.session\n })\n self.setHeader('authorization', signRes.headers.Authorization)\n self.setHeader('x-amz-date', signRes.headers['X-Amz-Date'])\n if (signRes.headers['X-Amz-Security-Token']) {\n self.setHeader('x-amz-security-token', signRes.headers['X-Amz-Security-Token'])\n }\n } else {\n // default: use aws-sign2\n var date = new Date()\n self.setHeader('date', date.toUTCString())\n var auth = {\n key: opts.key,\n secret: opts.secret,\n verb: self.method.toUpperCase(),\n date: date,\n contentType: self.getHeader('content-type') || '',\n md5: self.getHeader('content-md5') || '',\n amazonHeaders: aws2.canonicalizeHeaders(self.headers)\n }\n var path = self.uri.path\n if (opts.bucket && path) {\n auth.resource = '/' + opts.bucket + path\n } else if (opts.bucket && !path) {\n auth.resource = '/' + opts.bucket\n } else if (!opts.bucket && path) {\n auth.resource = path\n } else if (!opts.bucket && !path) {\n auth.resource = '/'\n }\n auth.resource = aws2.canonicalizeResource(auth.resource)\n self.setHeader('authorization', aws2.authorization(auth))\n }\n\n return self\n}\nRequest.prototype.httpSignature = function (opts) {\n var self = this\n httpSignature.signRequest({\n getHeader: function (header) {\n return self.getHeader(header, self.headers)\n },\n setHeader: function (header, value) {\n self.setHeader(header, value)\n },\n method: self.method,\n path: self.path\n }, opts)\n debug('httpSignature authorization', self.getHeader('authorization'))\n\n return self\n}\nRequest.prototype.hawk = function (opts) {\n var self = this\n self.setHeader('Authorization', hawk.header(self.uri, self.method, opts))\n}\nRequest.prototype.oauth = function (_oauth) {\n var self = this\n\n self._oauth.onRequest(_oauth)\n\n return self\n}\n\nRequest.prototype.jar = function (jar) {\n var self = this\n var cookies\n\n if (self._redirect.redirectsFollowed === 0) {\n self.originalCookieHeader = self.getHeader('cookie')\n }\n\n if (!jar) {\n // disable cookies\n cookies = false\n self._disableCookies = true\n } else {\n var targetCookieJar = jar.getCookieString ? jar : globalCookieJar\n var urihref = self.uri.href\n // fetch cookie in the Specified host\n if (targetCookieJar) {\n cookies = targetCookieJar.getCookieString(urihref)\n }\n }\n\n // if need cookie and cookie is not empty\n if (cookies && cookies.length) {\n if (self.originalCookieHeader) {\n // Don't overwrite existing Cookie header\n self.setHeader('cookie', self.originalCookieHeader + '; ' + cookies)\n } else {\n self.setHeader('cookie', cookies)\n }\n }\n self._jar = jar\n return self\n}\n\n// Stream API\nRequest.prototype.pipe = function (dest, opts) {\n var self = this\n\n if (self.response) {\n if (self._destdata) {\n self.emit('error', new Error('You cannot pipe after data has been emitted from the response.'))\n } else if (self._ended) {\n self.emit('error', new Error('You cannot pipe after the response has been ended.'))\n } else {\n stream.Stream.prototype.pipe.call(self, dest, opts)\n self.pipeDest(dest)\n return dest\n }\n } else {\n self.dests.push(dest)\n stream.Stream.prototype.pipe.call(self, dest, opts)\n return dest\n }\n}\nRequest.prototype.write = function () {\n var self = this\n if (self._aborted) { return }\n\n if (!self._started) {\n self.start()\n }\n if (self.req) {\n return self.req.write.apply(self.req, arguments)\n }\n}\nRequest.prototype.end = function (chunk) {\n var self = this\n if (self._aborted) { return }\n\n if (chunk) {\n self.write(chunk)\n }\n if (!self._started) {\n self.start()\n }\n if (self.req) {\n self.req.end()\n }\n}\nRequest.prototype.pause = function () {\n var self = this\n if (!self.responseContent) {\n self._paused = true\n } else {\n self.responseContent.pause.apply(self.responseContent, arguments)\n }\n}\nRequest.prototype.resume = function () {\n var self = this\n if (!self.responseContent) {\n self._paused = false\n } else {\n self.responseContent.resume.apply(self.responseContent, arguments)\n }\n}\nRequest.prototype.destroy = function () {\n var self = this\n this.clearTimeout()\n if (!self._ended) {\n self.end()\n } else if (self.response) {\n self.response.destroy()\n }\n}\n\nRequest.prototype.clearTimeout = function () {\n if (this.timeoutTimer) {\n clearTimeout(this.timeoutTimer)\n this.timeoutTimer = null\n }\n}\n\nRequest.defaultProxyHeaderWhiteList =\n Tunnel.defaultProxyHeaderWhiteList.slice()\n\nRequest.defaultProxyHeaderExclusiveList =\n Tunnel.defaultProxyHeaderExclusiveList.slice()\n\n// Exports\n\nRequest.prototype.toJSON = requestToJSON\nmodule.exports = Request\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","// Copyright 2015 Joyent, Inc.\n\nvar Buffer = require('safer-buffer').Buffer;\n\nvar algInfo = {\n\t'dsa': {\n\t\tparts: ['p', 'q', 'g', 'y'],\n\t\tsizePart: 'p'\n\t},\n\t'rsa': {\n\t\tparts: ['e', 'n'],\n\t\tsizePart: 'n'\n\t},\n\t'ecdsa': {\n\t\tparts: ['curve', 'Q'],\n\t\tsizePart: 'Q'\n\t},\n\t'ed25519': {\n\t\tparts: ['A'],\n\t\tsizePart: 'A'\n\t}\n};\nalgInfo['curve25519'] = algInfo['ed25519'];\n\nvar algPrivInfo = {\n\t'dsa': {\n\t\tparts: ['p', 'q', 'g', 'y', 'x']\n\t},\n\t'rsa': {\n\t\tparts: ['n', 'e', 'd', 'iqmp', 'p', 'q']\n\t},\n\t'ecdsa': {\n\t\tparts: ['curve', 'Q', 'd']\n\t},\n\t'ed25519': {\n\t\tparts: ['A', 'k']\n\t}\n};\nalgPrivInfo['curve25519'] = algPrivInfo['ed25519'];\n\nvar hashAlgs = {\n\t'md5': true,\n\t'sha1': true,\n\t'sha256': true,\n\t'sha384': true,\n\t'sha512': true\n};\n\n/*\n * Taken from\n * http://csrc.nist.gov/groups/ST/toolkit/documents/dss/NISTReCur.pdf\n */\nvar curves = {\n\t'nistp256': {\n\t\tsize: 256,\n\t\tpkcs8oid: '1.2.840.10045.3.1.7',\n\t\tp: Buffer.from(('00' +\n\t\t 'ffffffff 00000001 00000000 00000000' +\n\t\t '00000000 ffffffff ffffffff ffffffff').\n\t\t replace(/ /g, ''), 'hex'),\n\t\ta: Buffer.from(('00' +\n\t\t 'FFFFFFFF 00000001 00000000 00000000' +\n\t\t '00000000 FFFFFFFF FFFFFFFF FFFFFFFC').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tb: Buffer.from((\n\t\t '5ac635d8 aa3a93e7 b3ebbd55 769886bc' +\n\t\t '651d06b0 cc53b0f6 3bce3c3e 27d2604b').\n\t\t replace(/ /g, ''), 'hex'),\n\t\ts: Buffer.from(('00' +\n\t\t 'c49d3608 86e70493 6a6678e1 139d26b7' +\n\t\t '819f7e90').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tn: Buffer.from(('00' +\n\t\t 'ffffffff 00000000 ffffffff ffffffff' +\n\t\t 'bce6faad a7179e84 f3b9cac2 fc632551').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tG: Buffer.from(('04' +\n\t\t '6b17d1f2 e12c4247 f8bce6e5 63a440f2' +\n\t\t '77037d81 2deb33a0 f4a13945 d898c296' +\n\t\t '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16' +\n\t\t '2bce3357 6b315ece cbb64068 37bf51f5').\n\t\t replace(/ /g, ''), 'hex')\n\t},\n\t'nistp384': {\n\t\tsize: 384,\n\t\tpkcs8oid: '1.3.132.0.34',\n\t\tp: Buffer.from(('00' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff ffffffff fffffffe' +\n\t\t 'ffffffff 00000000 00000000 ffffffff').\n\t\t replace(/ /g, ''), 'hex'),\n\t\ta: Buffer.from(('00' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE' +\n\t\t 'FFFFFFFF 00000000 00000000 FFFFFFFC').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tb: Buffer.from((\n\t\t 'b3312fa7 e23ee7e4 988e056b e3f82d19' +\n\t\t '181d9c6e fe814112 0314088f 5013875a' +\n\t\t 'c656398d 8a2ed19d 2a85c8ed d3ec2aef').\n\t\t replace(/ /g, ''), 'hex'),\n\t\ts: Buffer.from(('00' +\n\t\t 'a335926a a319a27a 1d00896a 6773a482' +\n\t\t '7acdac73').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tn: Buffer.from(('00' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff c7634d81 f4372ddf' +\n\t\t '581a0db2 48b0a77a ecec196a ccc52973').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tG: Buffer.from(('04' +\n\t\t 'aa87ca22 be8b0537 8eb1c71e f320ad74' +\n\t\t '6e1d3b62 8ba79b98 59f741e0 82542a38' +\n\t\t '5502f25d bf55296c 3a545e38 72760ab7' +\n\t\t '3617de4a 96262c6f 5d9e98bf 9292dc29' +\n\t\t 'f8f41dbd 289a147c e9da3113 b5f0b8c0' +\n\t\t '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f').\n\t\t replace(/ /g, ''), 'hex')\n\t},\n\t'nistp521': {\n\t\tsize: 521,\n\t\tpkcs8oid: '1.3.132.0.35',\n\t\tp: Buffer.from((\n\t\t '01ffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffff').replace(/ /g, ''), 'hex'),\n\t\ta: Buffer.from(('01FF' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFC').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tb: Buffer.from(('51' +\n\t\t '953eb961 8e1c9a1f 929a21a0 b68540ee' +\n\t\t 'a2da725b 99b315f3 b8b48991 8ef109e1' +\n\t\t '56193951 ec7e937b 1652c0bd 3bb1bf07' +\n\t\t '3573df88 3d2c34f1 ef451fd4 6b503f00').\n\t\t replace(/ /g, ''), 'hex'),\n\t\ts: Buffer.from(('00' +\n\t\t 'd09e8800 291cb853 96cc6717 393284aa' +\n\t\t 'a0da64ba').replace(/ /g, ''), 'hex'),\n\t\tn: Buffer.from(('01ff' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff ffffffff fffffffa' +\n\t\t '51868783 bf2f966b 7fcc0148 f709a5d0' +\n\t\t '3bb5c9b8 899c47ae bb6fb71e 91386409').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tG: Buffer.from(('04' +\n\t\t '00c6 858e06b7 0404e9cd 9e3ecb66 2395b442' +\n\t\t '9c648139 053fb521 f828af60 6b4d3dba' +\n\t\t 'a14b5e77 efe75928 fe1dc127 a2ffa8de' +\n\t\t '3348b3c1 856a429b f97e7e31 c2e5bd66' +\n\t\t '0118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9' +\n\t\t '98f54449 579b4468 17afbd17 273e662c' +\n\t\t '97ee7299 5ef42640 c550b901 3fad0761' +\n\t\t '353c7086 a272c240 88be9476 9fd16650').\n\t\t replace(/ /g, ''), 'hex')\n\t}\n};\n\nmodule.exports = {\n\tinfo: algInfo,\n\tprivInfo: algPrivInfo,\n\thashAlgs: hashAlgs,\n\tcurves: curves\n};\n","// Copyright 2016 Joyent, Inc.\n\nmodule.exports = Certificate;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar errs = require('./errors');\nvar util = require('util');\nvar utils = require('./utils');\nvar Key = require('./key');\nvar PrivateKey = require('./private-key');\nvar Identity = require('./identity');\n\nvar formats = {};\nformats['openssh'] = require('./formats/openssh-cert');\nformats['x509'] = require('./formats/x509');\nformats['pem'] = require('./formats/x509-pem');\n\nvar CertificateParseError = errs.CertificateParseError;\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\n\nfunction Certificate(opts) {\n\tassert.object(opts, 'options');\n\tassert.arrayOfObject(opts.subjects, 'options.subjects');\n\tutils.assertCompatible(opts.subjects[0], Identity, [1, 0],\n\t 'options.subjects');\n\tutils.assertCompatible(opts.subjectKey, Key, [1, 0],\n\t 'options.subjectKey');\n\tutils.assertCompatible(opts.issuer, Identity, [1, 0], 'options.issuer');\n\tif (opts.issuerKey !== undefined) {\n\t\tutils.assertCompatible(opts.issuerKey, Key, [1, 0],\n\t\t 'options.issuerKey');\n\t}\n\tassert.object(opts.signatures, 'options.signatures');\n\tassert.buffer(opts.serial, 'options.serial');\n\tassert.date(opts.validFrom, 'options.validFrom');\n\tassert.date(opts.validUntil, 'optons.validUntil');\n\n\tassert.optionalArrayOfString(opts.purposes, 'options.purposes');\n\n\tthis._hashCache = {};\n\n\tthis.subjects = opts.subjects;\n\tthis.issuer = opts.issuer;\n\tthis.subjectKey = opts.subjectKey;\n\tthis.issuerKey = opts.issuerKey;\n\tthis.signatures = opts.signatures;\n\tthis.serial = opts.serial;\n\tthis.validFrom = opts.validFrom;\n\tthis.validUntil = opts.validUntil;\n\tthis.purposes = opts.purposes;\n}\n\nCertificate.formats = formats;\n\nCertificate.prototype.toBuffer = function (format, options) {\n\tif (format === undefined)\n\t\tformat = 'x509';\n\tassert.string(format, 'format');\n\tassert.object(formats[format], 'formats[format]');\n\tassert.optionalObject(options, 'options');\n\n\treturn (formats[format].write(this, options));\n};\n\nCertificate.prototype.toString = function (format, options) {\n\tif (format === undefined)\n\t\tformat = 'pem';\n\treturn (this.toBuffer(format, options).toString());\n};\n\nCertificate.prototype.fingerprint = function (algo) {\n\tif (algo === undefined)\n\t\talgo = 'sha256';\n\tassert.string(algo, 'algorithm');\n\tvar opts = {\n\t\ttype: 'certificate',\n\t\thash: this.hash(algo),\n\t\talgorithm: algo\n\t};\n\treturn (new Fingerprint(opts));\n};\n\nCertificate.prototype.hash = function (algo) {\n\tassert.string(algo, 'algorithm');\n\talgo = algo.toLowerCase();\n\tif (algs.hashAlgs[algo] === undefined)\n\t\tthrow (new InvalidAlgorithmError(algo));\n\n\tif (this._hashCache[algo])\n\t\treturn (this._hashCache[algo]);\n\n\tvar hash = crypto.createHash(algo).\n\t update(this.toBuffer('x509')).digest();\n\tthis._hashCache[algo] = hash;\n\treturn (hash);\n};\n\nCertificate.prototype.isExpired = function (when) {\n\tif (when === undefined)\n\t\twhen = new Date();\n\treturn (!((when.getTime() >= this.validFrom.getTime()) &&\n\t\t(when.getTime() < this.validUntil.getTime())));\n};\n\nCertificate.prototype.isSignedBy = function (issuerCert) {\n\tutils.assertCompatible(issuerCert, Certificate, [1, 0], 'issuer');\n\n\tif (!this.issuer.equals(issuerCert.subjects[0]))\n\t\treturn (false);\n\tif (this.issuer.purposes && this.issuer.purposes.length > 0 &&\n\t this.issuer.purposes.indexOf('ca') === -1) {\n\t\treturn (false);\n\t}\n\n\treturn (this.isSignedByKey(issuerCert.subjectKey));\n};\n\nCertificate.prototype.getExtension = function (keyOrOid) {\n\tassert.string(keyOrOid, 'keyOrOid');\n\tvar ext = this.getExtensions().filter(function (maybeExt) {\n\t\tif (maybeExt.format === 'x509')\n\t\t\treturn (maybeExt.oid === keyOrOid);\n\t\tif (maybeExt.format === 'openssh')\n\t\t\treturn (maybeExt.name === keyOrOid);\n\t\treturn (false);\n\t})[0];\n\treturn (ext);\n};\n\nCertificate.prototype.getExtensions = function () {\n\tvar exts = [];\n\tvar x509 = this.signatures.x509;\n\tif (x509 && x509.extras && x509.extras.exts) {\n\t\tx509.extras.exts.forEach(function (ext) {\n\t\t\text.format = 'x509';\n\t\t\texts.push(ext);\n\t\t});\n\t}\n\tvar openssh = this.signatures.openssh;\n\tif (openssh && openssh.exts) {\n\t\topenssh.exts.forEach(function (ext) {\n\t\t\text.format = 'openssh';\n\t\t\texts.push(ext);\n\t\t});\n\t}\n\treturn (exts);\n};\n\nCertificate.prototype.isSignedByKey = function (issuerKey) {\n\tutils.assertCompatible(issuerKey, Key, [1, 2], 'issuerKey');\n\n\tif (this.issuerKey !== undefined) {\n\t\treturn (this.issuerKey.\n\t\t fingerprint('sha512').matches(issuerKey));\n\t}\n\n\tvar fmt = Object.keys(this.signatures)[0];\n\tvar valid = formats[fmt].verify(this, issuerKey);\n\tif (valid)\n\t\tthis.issuerKey = issuerKey;\n\treturn (valid);\n};\n\nCertificate.prototype.signWith = function (key) {\n\tutils.assertCompatible(key, PrivateKey, [1, 2], 'key');\n\tvar fmts = Object.keys(formats);\n\tvar didOne = false;\n\tfor (var i = 0; i < fmts.length; ++i) {\n\t\tif (fmts[i] !== 'pem') {\n\t\t\tvar ret = formats[fmts[i]].sign(this, key);\n\t\t\tif (ret === true)\n\t\t\t\tdidOne = true;\n\t\t}\n\t}\n\tif (!didOne) {\n\t\tthrow (new Error('Failed to sign the certificate for any ' +\n\t\t 'available certificate formats'));\n\t}\n};\n\nCertificate.createSelfSigned = function (subjectOrSubjects, key, options) {\n\tvar subjects;\n\tif (Array.isArray(subjectOrSubjects))\n\t\tsubjects = subjectOrSubjects;\n\telse\n\t\tsubjects = [subjectOrSubjects];\n\n\tassert.arrayOfObject(subjects);\n\tsubjects.forEach(function (subject) {\n\t\tutils.assertCompatible(subject, Identity, [1, 0], 'subject');\n\t});\n\n\tutils.assertCompatible(key, PrivateKey, [1, 2], 'private key');\n\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalObject(options.validFrom, 'options.validFrom');\n\tassert.optionalObject(options.validUntil, 'options.validUntil');\n\tvar validFrom = options.validFrom;\n\tvar validUntil = options.validUntil;\n\tif (validFrom === undefined)\n\t\tvalidFrom = new Date();\n\tif (validUntil === undefined) {\n\t\tassert.optionalNumber(options.lifetime, 'options.lifetime');\n\t\tvar lifetime = options.lifetime;\n\t\tif (lifetime === undefined)\n\t\t\tlifetime = 10*365*24*3600;\n\t\tvalidUntil = new Date();\n\t\tvalidUntil.setTime(validUntil.getTime() + lifetime*1000);\n\t}\n\tassert.optionalBuffer(options.serial, 'options.serial');\n\tvar serial = options.serial;\n\tif (serial === undefined)\n\t\tserial = Buffer.from('0000000000000001', 'hex');\n\n\tvar purposes = options.purposes;\n\tif (purposes === undefined)\n\t\tpurposes = [];\n\n\tif (purposes.indexOf('signature') === -1)\n\t\tpurposes.push('signature');\n\n\t/* Self-signed certs are always CAs. */\n\tif (purposes.indexOf('ca') === -1)\n\t\tpurposes.push('ca');\n\tif (purposes.indexOf('crl') === -1)\n\t\tpurposes.push('crl');\n\n\t/*\n\t * If we weren't explicitly given any other purposes, do the sensible\n\t * thing and add some basic ones depending on the subject type.\n\t */\n\tif (purposes.length <= 3) {\n\t\tvar hostSubjects = subjects.filter(function (subject) {\n\t\t\treturn (subject.type === 'host');\n\t\t});\n\t\tvar userSubjects = subjects.filter(function (subject) {\n\t\t\treturn (subject.type === 'user');\n\t\t});\n\t\tif (hostSubjects.length > 0) {\n\t\t\tif (purposes.indexOf('serverAuth') === -1)\n\t\t\t\tpurposes.push('serverAuth');\n\t\t}\n\t\tif (userSubjects.length > 0) {\n\t\t\tif (purposes.indexOf('clientAuth') === -1)\n\t\t\t\tpurposes.push('clientAuth');\n\t\t}\n\t\tif (userSubjects.length > 0 || hostSubjects.length > 0) {\n\t\t\tif (purposes.indexOf('keyAgreement') === -1)\n\t\t\t\tpurposes.push('keyAgreement');\n\t\t\tif (key.type === 'rsa' &&\n\t\t\t purposes.indexOf('encryption') === -1)\n\t\t\t\tpurposes.push('encryption');\n\t\t}\n\t}\n\n\tvar cert = new Certificate({\n\t\tsubjects: subjects,\n\t\tissuer: subjects[0],\n\t\tsubjectKey: key.toPublic(),\n\t\tissuerKey: key.toPublic(),\n\t\tsignatures: {},\n\t\tserial: serial,\n\t\tvalidFrom: validFrom,\n\t\tvalidUntil: validUntil,\n\t\tpurposes: purposes\n\t});\n\tcert.signWith(key);\n\n\treturn (cert);\n};\n\nCertificate.create =\n function (subjectOrSubjects, key, issuer, issuerKey, options) {\n\tvar subjects;\n\tif (Array.isArray(subjectOrSubjects))\n\t\tsubjects = subjectOrSubjects;\n\telse\n\t\tsubjects = [subjectOrSubjects];\n\n\tassert.arrayOfObject(subjects);\n\tsubjects.forEach(function (subject) {\n\t\tutils.assertCompatible(subject, Identity, [1, 0], 'subject');\n\t});\n\n\tutils.assertCompatible(key, Key, [1, 0], 'key');\n\tif (PrivateKey.isPrivateKey(key))\n\t\tkey = key.toPublic();\n\tutils.assertCompatible(issuer, Identity, [1, 0], 'issuer');\n\tutils.assertCompatible(issuerKey, PrivateKey, [1, 2], 'issuer key');\n\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalObject(options.validFrom, 'options.validFrom');\n\tassert.optionalObject(options.validUntil, 'options.validUntil');\n\tvar validFrom = options.validFrom;\n\tvar validUntil = options.validUntil;\n\tif (validFrom === undefined)\n\t\tvalidFrom = new Date();\n\tif (validUntil === undefined) {\n\t\tassert.optionalNumber(options.lifetime, 'options.lifetime');\n\t\tvar lifetime = options.lifetime;\n\t\tif (lifetime === undefined)\n\t\t\tlifetime = 10*365*24*3600;\n\t\tvalidUntil = new Date();\n\t\tvalidUntil.setTime(validUntil.getTime() + lifetime*1000);\n\t}\n\tassert.optionalBuffer(options.serial, 'options.serial');\n\tvar serial = options.serial;\n\tif (serial === undefined)\n\t\tserial = Buffer.from('0000000000000001', 'hex');\n\n\tvar purposes = options.purposes;\n\tif (purposes === undefined)\n\t\tpurposes = [];\n\n\tif (purposes.indexOf('signature') === -1)\n\t\tpurposes.push('signature');\n\n\tif (options.ca === true) {\n\t\tif (purposes.indexOf('ca') === -1)\n\t\t\tpurposes.push('ca');\n\t\tif (purposes.indexOf('crl') === -1)\n\t\t\tpurposes.push('crl');\n\t}\n\n\tvar hostSubjects = subjects.filter(function (subject) {\n\t\treturn (subject.type === 'host');\n\t});\n\tvar userSubjects = subjects.filter(function (subject) {\n\t\treturn (subject.type === 'user');\n\t});\n\tif (hostSubjects.length > 0) {\n\t\tif (purposes.indexOf('serverAuth') === -1)\n\t\t\tpurposes.push('serverAuth');\n\t}\n\tif (userSubjects.length > 0) {\n\t\tif (purposes.indexOf('clientAuth') === -1)\n\t\t\tpurposes.push('clientAuth');\n\t}\n\tif (userSubjects.length > 0 || hostSubjects.length > 0) {\n\t\tif (purposes.indexOf('keyAgreement') === -1)\n\t\t\tpurposes.push('keyAgreement');\n\t\tif (key.type === 'rsa' &&\n\t\t purposes.indexOf('encryption') === -1)\n\t\t\tpurposes.push('encryption');\n\t}\n\n\tvar cert = new Certificate({\n\t\tsubjects: subjects,\n\t\tissuer: issuer,\n\t\tsubjectKey: key,\n\t\tissuerKey: issuerKey.toPublic(),\n\t\tsignatures: {},\n\t\tserial: serial,\n\t\tvalidFrom: validFrom,\n\t\tvalidUntil: validUntil,\n\t\tpurposes: purposes\n\t});\n\tcert.signWith(issuerKey);\n\n\treturn (cert);\n};\n\nCertificate.parse = function (data, format, options) {\n\tif (typeof (data) !== 'string')\n\t\tassert.buffer(data, 'data');\n\tif (format === undefined)\n\t\tformat = 'auto';\n\tassert.string(format, 'format');\n\tif (typeof (options) === 'string')\n\t\toptions = { filename: options };\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalString(options.filename, 'options.filename');\n\tif (options.filename === undefined)\n\t\toptions.filename = '(unnamed)';\n\n\tassert.object(formats[format], 'formats[format]');\n\n\ttry {\n\t\tvar k = formats[format].read(data, options);\n\t\treturn (k);\n\t} catch (e) {\n\t\tthrow (new CertificateParseError(options.filename, format, e));\n\t}\n};\n\nCertificate.isCertificate = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Certificate, ver));\n};\n\n/*\n * API versions for Certificate:\n * [1,0] -- initial ver\n * [1,1] -- openssh format now unpacks extensions\n */\nCertificate.prototype._sshpkApiVersion = [1, 1];\n\nCertificate._oldVersionDetect = function (obj) {\n\treturn ([1, 0]);\n};\n","// Copyright 2017 Joyent, Inc.\n\nmodule.exports = {\n\tDiffieHellman: DiffieHellman,\n\tgenerateECDSA: generateECDSA,\n\tgenerateED25519: generateED25519\n};\n\nvar assert = require('assert-plus');\nvar crypto = require('crypto');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar utils = require('./utils');\nvar nacl = require('tweetnacl');\n\nvar Key = require('./key');\nvar PrivateKey = require('./private-key');\n\nvar CRYPTO_HAVE_ECDH = (crypto.createECDH !== undefined);\n\nvar ecdh = require('ecc-jsbn');\nvar ec = require('ecc-jsbn/lib/ec');\nvar jsbn = require('jsbn').BigInteger;\n\nfunction DiffieHellman(key) {\n\tutils.assertCompatible(key, Key, [1, 4], 'key');\n\tthis._isPriv = PrivateKey.isPrivateKey(key, [1, 3]);\n\tthis._algo = key.type;\n\tthis._curve = key.curve;\n\tthis._key = key;\n\tif (key.type === 'dsa') {\n\t\tif (!CRYPTO_HAVE_ECDH) {\n\t\t\tthrow (new Error('Due to bugs in the node 0.10 ' +\n\t\t\t 'crypto API, node 0.12.x or later is required ' +\n\t\t\t 'to use DH'));\n\t\t}\n\t\tthis._dh = crypto.createDiffieHellman(\n\t\t key.part.p.data, undefined,\n\t\t key.part.g.data, undefined);\n\t\tthis._p = key.part.p;\n\t\tthis._g = key.part.g;\n\t\tif (this._isPriv)\n\t\t\tthis._dh.setPrivateKey(key.part.x.data);\n\t\tthis._dh.setPublicKey(key.part.y.data);\n\n\t} else if (key.type === 'ecdsa') {\n\t\tif (!CRYPTO_HAVE_ECDH) {\n\t\t\tthis._ecParams = new X9ECParameters(this._curve);\n\n\t\t\tif (this._isPriv) {\n\t\t\t\tthis._priv = new ECPrivate(\n\t\t\t\t this._ecParams, key.part.d.data);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tvar curve = {\n\t\t\t'nistp256': 'prime256v1',\n\t\t\t'nistp384': 'secp384r1',\n\t\t\t'nistp521': 'secp521r1'\n\t\t}[key.curve];\n\t\tthis._dh = crypto.createECDH(curve);\n\t\tif (typeof (this._dh) !== 'object' ||\n\t\t typeof (this._dh.setPrivateKey) !== 'function') {\n\t\t\tCRYPTO_HAVE_ECDH = false;\n\t\t\tDiffieHellman.call(this, key);\n\t\t\treturn;\n\t\t}\n\t\tif (this._isPriv)\n\t\t\tthis._dh.setPrivateKey(key.part.d.data);\n\t\tthis._dh.setPublicKey(key.part.Q.data);\n\n\t} else if (key.type === 'curve25519') {\n\t\tif (this._isPriv) {\n\t\t\tutils.assertCompatible(key, PrivateKey, [1, 5], 'key');\n\t\t\tthis._priv = key.part.k.data;\n\t\t}\n\n\t} else {\n\t\tthrow (new Error('DH not supported for ' + key.type + ' keys'));\n\t}\n}\n\nDiffieHellman.prototype.getPublicKey = function () {\n\tif (this._isPriv)\n\t\treturn (this._key.toPublic());\n\treturn (this._key);\n};\n\nDiffieHellman.prototype.getPrivateKey = function () {\n\tif (this._isPriv)\n\t\treturn (this._key);\n\telse\n\t\treturn (undefined);\n};\nDiffieHellman.prototype.getKey = DiffieHellman.prototype.getPrivateKey;\n\nDiffieHellman.prototype._keyCheck = function (pk, isPub) {\n\tassert.object(pk, 'key');\n\tif (!isPub)\n\t\tutils.assertCompatible(pk, PrivateKey, [1, 3], 'key');\n\tutils.assertCompatible(pk, Key, [1, 4], 'key');\n\n\tif (pk.type !== this._algo) {\n\t\tthrow (new Error('A ' + pk.type + ' key cannot be used in ' +\n\t\t this._algo + ' Diffie-Hellman'));\n\t}\n\n\tif (pk.curve !== this._curve) {\n\t\tthrow (new Error('A key from the ' + pk.curve + ' curve ' +\n\t\t 'cannot be used with a ' + this._curve +\n\t\t ' Diffie-Hellman'));\n\t}\n\n\tif (pk.type === 'dsa') {\n\t\tassert.deepEqual(pk.part.p, this._p,\n\t\t 'DSA key prime does not match');\n\t\tassert.deepEqual(pk.part.g, this._g,\n\t\t 'DSA key generator does not match');\n\t}\n};\n\nDiffieHellman.prototype.setKey = function (pk) {\n\tthis._keyCheck(pk);\n\n\tif (pk.type === 'dsa') {\n\t\tthis._dh.setPrivateKey(pk.part.x.data);\n\t\tthis._dh.setPublicKey(pk.part.y.data);\n\n\t} else if (pk.type === 'ecdsa') {\n\t\tif (CRYPTO_HAVE_ECDH) {\n\t\t\tthis._dh.setPrivateKey(pk.part.d.data);\n\t\t\tthis._dh.setPublicKey(pk.part.Q.data);\n\t\t} else {\n\t\t\tthis._priv = new ECPrivate(\n\t\t\t this._ecParams, pk.part.d.data);\n\t\t}\n\n\t} else if (pk.type === 'curve25519') {\n\t\tvar k = pk.part.k;\n\t\tif (!pk.part.k)\n\t\t\tk = pk.part.r;\n\t\tthis._priv = k.data;\n\t\tif (this._priv[0] === 0x00)\n\t\t\tthis._priv = this._priv.slice(1);\n\t\tthis._priv = this._priv.slice(0, 32);\n\t}\n\tthis._key = pk;\n\tthis._isPriv = true;\n};\nDiffieHellman.prototype.setPrivateKey = DiffieHellman.prototype.setKey;\n\nDiffieHellman.prototype.computeSecret = function (otherpk) {\n\tthis._keyCheck(otherpk, true);\n\tif (!this._isPriv)\n\t\tthrow (new Error('DH exchange has not been initialized with ' +\n\t\t 'a private key yet'));\n\n\tvar pub;\n\tif (this._algo === 'dsa') {\n\t\treturn (this._dh.computeSecret(\n\t\t otherpk.part.y.data));\n\n\t} else if (this._algo === 'ecdsa') {\n\t\tif (CRYPTO_HAVE_ECDH) {\n\t\t\treturn (this._dh.computeSecret(\n\t\t\t otherpk.part.Q.data));\n\t\t} else {\n\t\t\tpub = new ECPublic(\n\t\t\t this._ecParams, otherpk.part.Q.data);\n\t\t\treturn (this._priv.deriveSharedSecret(pub));\n\t\t}\n\n\t} else if (this._algo === 'curve25519') {\n\t\tpub = otherpk.part.A.data;\n\t\twhile (pub[0] === 0x00 && pub.length > 32)\n\t\t\tpub = pub.slice(1);\n\t\tvar priv = this._priv;\n\t\tassert.strictEqual(pub.length, 32);\n\t\tassert.strictEqual(priv.length, 32);\n\n\t\tvar secret = nacl.box.before(new Uint8Array(pub),\n\t\t new Uint8Array(priv));\n\n\t\treturn (Buffer.from(secret));\n\t}\n\n\tthrow (new Error('Invalid algorithm: ' + this._algo));\n};\n\nDiffieHellman.prototype.generateKey = function () {\n\tvar parts = [];\n\tvar priv, pub;\n\tif (this._algo === 'dsa') {\n\t\tthis._dh.generateKeys();\n\n\t\tparts.push({name: 'p', data: this._p.data});\n\t\tparts.push({name: 'q', data: this._key.part.q.data});\n\t\tparts.push({name: 'g', data: this._g.data});\n\t\tparts.push({name: 'y', data: this._dh.getPublicKey()});\n\t\tparts.push({name: 'x', data: this._dh.getPrivateKey()});\n\t\tthis._key = new PrivateKey({\n\t\t\ttype: 'dsa',\n\t\t\tparts: parts\n\t\t});\n\t\tthis._isPriv = true;\n\t\treturn (this._key);\n\n\t} else if (this._algo === 'ecdsa') {\n\t\tif (CRYPTO_HAVE_ECDH) {\n\t\t\tthis._dh.generateKeys();\n\n\t\t\tparts.push({name: 'curve',\n\t\t\t data: Buffer.from(this._curve)});\n\t\t\tparts.push({name: 'Q', data: this._dh.getPublicKey()});\n\t\t\tparts.push({name: 'd', data: this._dh.getPrivateKey()});\n\t\t\tthis._key = new PrivateKey({\n\t\t\t\ttype: 'ecdsa',\n\t\t\t\tcurve: this._curve,\n\t\t\t\tparts: parts\n\t\t\t});\n\t\t\tthis._isPriv = true;\n\t\t\treturn (this._key);\n\n\t\t} else {\n\t\t\tvar n = this._ecParams.getN();\n\t\t\tvar r = new jsbn(crypto.randomBytes(n.bitLength()));\n\t\t\tvar n1 = n.subtract(jsbn.ONE);\n\t\t\tpriv = r.mod(n1).add(jsbn.ONE);\n\t\t\tpub = this._ecParams.getG().multiply(priv);\n\n\t\t\tpriv = Buffer.from(priv.toByteArray());\n\t\t\tpub = Buffer.from(this._ecParams.getCurve().\n\t\t\t encodePointHex(pub), 'hex');\n\n\t\t\tthis._priv = new ECPrivate(this._ecParams, priv);\n\n\t\t\tparts.push({name: 'curve',\n\t\t\t data: Buffer.from(this._curve)});\n\t\t\tparts.push({name: 'Q', data: pub});\n\t\t\tparts.push({name: 'd', data: priv});\n\n\t\t\tthis._key = new PrivateKey({\n\t\t\t\ttype: 'ecdsa',\n\t\t\t\tcurve: this._curve,\n\t\t\t\tparts: parts\n\t\t\t});\n\t\t\tthis._isPriv = true;\n\t\t\treturn (this._key);\n\t\t}\n\n\t} else if (this._algo === 'curve25519') {\n\t\tvar pair = nacl.box.keyPair();\n\t\tpriv = Buffer.from(pair.secretKey);\n\t\tpub = Buffer.from(pair.publicKey);\n\t\tpriv = Buffer.concat([priv, pub]);\n\t\tassert.strictEqual(priv.length, 64);\n\t\tassert.strictEqual(pub.length, 32);\n\n\t\tparts.push({name: 'A', data: pub});\n\t\tparts.push({name: 'k', data: priv});\n\t\tthis._key = new PrivateKey({\n\t\t\ttype: 'curve25519',\n\t\t\tparts: parts\n\t\t});\n\t\tthis._isPriv = true;\n\t\treturn (this._key);\n\t}\n\n\tthrow (new Error('Invalid algorithm: ' + this._algo));\n};\nDiffieHellman.prototype.generateKeys = DiffieHellman.prototype.generateKey;\n\n/* These are helpers for using ecc-jsbn (for node 0.10 compatibility). */\n\nfunction X9ECParameters(name) {\n\tvar params = algs.curves[name];\n\tassert.object(params);\n\n\tvar p = new jsbn(params.p);\n\tvar a = new jsbn(params.a);\n\tvar b = new jsbn(params.b);\n\tvar n = new jsbn(params.n);\n\tvar h = jsbn.ONE;\n\tvar curve = new ec.ECCurveFp(p, a, b);\n\tvar G = curve.decodePointHex(params.G.toString('hex'));\n\n\tthis.curve = curve;\n\tthis.g = G;\n\tthis.n = n;\n\tthis.h = h;\n}\nX9ECParameters.prototype.getCurve = function () { return (this.curve); };\nX9ECParameters.prototype.getG = function () { return (this.g); };\nX9ECParameters.prototype.getN = function () { return (this.n); };\nX9ECParameters.prototype.getH = function () { return (this.h); };\n\nfunction ECPublic(params, buffer) {\n\tthis._params = params;\n\tif (buffer[0] === 0x00)\n\t\tbuffer = buffer.slice(1);\n\tthis._pub = params.getCurve().decodePointHex(buffer.toString('hex'));\n}\n\nfunction ECPrivate(params, buffer) {\n\tthis._params = params;\n\tthis._priv = new jsbn(utils.mpNormalize(buffer));\n}\nECPrivate.prototype.deriveSharedSecret = function (pubKey) {\n\tassert.ok(pubKey instanceof ECPublic);\n\tvar S = pubKey._pub.multiply(this._priv);\n\treturn (Buffer.from(S.getX().toBigInteger().toByteArray()));\n};\n\nfunction generateED25519() {\n\tvar pair = nacl.sign.keyPair();\n\tvar priv = Buffer.from(pair.secretKey);\n\tvar pub = Buffer.from(pair.publicKey);\n\tassert.strictEqual(priv.length, 64);\n\tassert.strictEqual(pub.length, 32);\n\n\tvar parts = [];\n\tparts.push({name: 'A', data: pub});\n\tparts.push({name: 'k', data: priv.slice(0, 32)});\n\tvar key = new PrivateKey({\n\t\ttype: 'ed25519',\n\t\tparts: parts\n\t});\n\treturn (key);\n}\n\n/* Generates a new ECDSA private key on a given curve. */\nfunction generateECDSA(curve) {\n\tvar parts = [];\n\tvar key;\n\n\tif (CRYPTO_HAVE_ECDH) {\n\t\t/*\n\t\t * Node crypto doesn't expose key generation directly, but the\n\t\t * ECDH instances can generate keys. It turns out this just\n\t\t * calls into the OpenSSL generic key generator, and we can\n\t\t * read its output happily without doing an actual DH. So we\n\t\t * use that here.\n\t\t */\n\t\tvar osCurve = {\n\t\t\t'nistp256': 'prime256v1',\n\t\t\t'nistp384': 'secp384r1',\n\t\t\t'nistp521': 'secp521r1'\n\t\t}[curve];\n\n\t\tvar dh = crypto.createECDH(osCurve);\n\t\tdh.generateKeys();\n\n\t\tparts.push({name: 'curve',\n\t\t data: Buffer.from(curve)});\n\t\tparts.push({name: 'Q', data: dh.getPublicKey()});\n\t\tparts.push({name: 'd', data: dh.getPrivateKey()});\n\n\t\tkey = new PrivateKey({\n\t\t\ttype: 'ecdsa',\n\t\t\tcurve: curve,\n\t\t\tparts: parts\n\t\t});\n\t\treturn (key);\n\t} else {\n\n\t\tvar ecParams = new X9ECParameters(curve);\n\n\t\t/* This algorithm taken from FIPS PUB 186-4 (section B.4.1) */\n\t\tvar n = ecParams.getN();\n\t\t/*\n\t\t * The crypto.randomBytes() function can only give us whole\n\t\t * bytes, so taking a nod from X9.62, we round up.\n\t\t */\n\t\tvar cByteLen = Math.ceil((n.bitLength() + 64) / 8);\n\t\tvar c = new jsbn(crypto.randomBytes(cByteLen));\n\n\t\tvar n1 = n.subtract(jsbn.ONE);\n\t\tvar priv = c.mod(n1).add(jsbn.ONE);\n\t\tvar pub = ecParams.getG().multiply(priv);\n\n\t\tpriv = Buffer.from(priv.toByteArray());\n\t\tpub = Buffer.from(ecParams.getCurve().\n\t\t encodePointHex(pub), 'hex');\n\n\t\tparts.push({name: 'curve', data: Buffer.from(curve)});\n\t\tparts.push({name: 'Q', data: pub});\n\t\tparts.push({name: 'd', data: priv});\n\n\t\tkey = new PrivateKey({\n\t\t\ttype: 'ecdsa',\n\t\t\tcurve: curve,\n\t\t\tparts: parts\n\t\t});\n\t\treturn (key);\n\t}\n}\n","// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tVerifier: Verifier,\n\tSigner: Signer\n};\n\nvar nacl = require('tweetnacl');\nvar stream = require('stream');\nvar util = require('util');\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar Signature = require('./signature');\n\nfunction Verifier(key, hashAlgo) {\n\tif (hashAlgo.toLowerCase() !== 'sha512')\n\t\tthrow (new Error('ED25519 only supports the use of ' +\n\t\t 'SHA-512 hashes'));\n\n\tthis.key = key;\n\tthis.chunks = [];\n\n\tstream.Writable.call(this, {});\n}\nutil.inherits(Verifier, stream.Writable);\n\nVerifier.prototype._write = function (chunk, enc, cb) {\n\tthis.chunks.push(chunk);\n\tcb();\n};\n\nVerifier.prototype.update = function (chunk) {\n\tif (typeof (chunk) === 'string')\n\t\tchunk = Buffer.from(chunk, 'binary');\n\tthis.chunks.push(chunk);\n};\n\nVerifier.prototype.verify = function (signature, fmt) {\n\tvar sig;\n\tif (Signature.isSignature(signature, [2, 0])) {\n\t\tif (signature.type !== 'ed25519')\n\t\t\treturn (false);\n\t\tsig = signature.toBuffer('raw');\n\n\t} else if (typeof (signature) === 'string') {\n\t\tsig = Buffer.from(signature, 'base64');\n\n\t} else if (Signature.isSignature(signature, [1, 0])) {\n\t\tthrow (new Error('signature was created by too old ' +\n\t\t 'a version of sshpk and cannot be verified'));\n\t}\n\n\tassert.buffer(sig);\n\treturn (nacl.sign.detached.verify(\n\t new Uint8Array(Buffer.concat(this.chunks)),\n\t new Uint8Array(sig),\n\t new Uint8Array(this.key.part.A.data)));\n};\n\nfunction Signer(key, hashAlgo) {\n\tif (hashAlgo.toLowerCase() !== 'sha512')\n\t\tthrow (new Error('ED25519 only supports the use of ' +\n\t\t 'SHA-512 hashes'));\n\n\tthis.key = key;\n\tthis.chunks = [];\n\n\tstream.Writable.call(this, {});\n}\nutil.inherits(Signer, stream.Writable);\n\nSigner.prototype._write = function (chunk, enc, cb) {\n\tthis.chunks.push(chunk);\n\tcb();\n};\n\nSigner.prototype.update = function (chunk) {\n\tif (typeof (chunk) === 'string')\n\t\tchunk = Buffer.from(chunk, 'binary');\n\tthis.chunks.push(chunk);\n};\n\nSigner.prototype.sign = function () {\n\tvar sig = nacl.sign.detached(\n\t new Uint8Array(Buffer.concat(this.chunks)),\n\t new Uint8Array(Buffer.concat([\n\t\tthis.key.part.k.data, this.key.part.A.data])));\n\tvar sigBuf = Buffer.from(sig);\n\tvar sigObj = Signature.parse(sigBuf, 'ed25519', 'raw');\n\tsigObj.hashAlgorithm = 'sha512';\n\treturn (sigObj);\n};\n","// Copyright 2015 Joyent, Inc.\n\nvar assert = require('assert-plus');\nvar util = require('util');\n\nfunction FingerprintFormatError(fp, format) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, FingerprintFormatError);\n\tthis.name = 'FingerprintFormatError';\n\tthis.fingerprint = fp;\n\tthis.format = format;\n\tthis.message = 'Fingerprint format is not supported, or is invalid: ';\n\tif (fp !== undefined)\n\t\tthis.message += ' fingerprint = ' + fp;\n\tif (format !== undefined)\n\t\tthis.message += ' format = ' + format;\n}\nutil.inherits(FingerprintFormatError, Error);\n\nfunction InvalidAlgorithmError(alg) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, InvalidAlgorithmError);\n\tthis.name = 'InvalidAlgorithmError';\n\tthis.algorithm = alg;\n\tthis.message = 'Algorithm \"' + alg + '\" is not supported';\n}\nutil.inherits(InvalidAlgorithmError, Error);\n\nfunction KeyParseError(name, format, innerErr) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, KeyParseError);\n\tthis.name = 'KeyParseError';\n\tthis.format = format;\n\tthis.keyName = name;\n\tthis.innerErr = innerErr;\n\tthis.message = 'Failed to parse ' + name + ' as a valid ' + format +\n\t ' format key: ' + innerErr.message;\n}\nutil.inherits(KeyParseError, Error);\n\nfunction SignatureParseError(type, format, innerErr) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, SignatureParseError);\n\tthis.name = 'SignatureParseError';\n\tthis.type = type;\n\tthis.format = format;\n\tthis.innerErr = innerErr;\n\tthis.message = 'Failed to parse the given data as a ' + type +\n\t ' signature in ' + format + ' format: ' + innerErr.message;\n}\nutil.inherits(SignatureParseError, Error);\n\nfunction CertificateParseError(name, format, innerErr) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, CertificateParseError);\n\tthis.name = 'CertificateParseError';\n\tthis.format = format;\n\tthis.certName = name;\n\tthis.innerErr = innerErr;\n\tthis.message = 'Failed to parse ' + name + ' as a valid ' + format +\n\t ' format certificate: ' + innerErr.message;\n}\nutil.inherits(CertificateParseError, Error);\n\nfunction KeyEncryptedError(name, format) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, KeyEncryptedError);\n\tthis.name = 'KeyEncryptedError';\n\tthis.format = format;\n\tthis.keyName = name;\n\tthis.message = 'The ' + format + ' format key ' + name + ' is ' +\n\t 'encrypted (password-protected), and no passphrase was ' +\n\t 'provided in `options`';\n}\nutil.inherits(KeyEncryptedError, Error);\n\nmodule.exports = {\n\tFingerprintFormatError: FingerprintFormatError,\n\tInvalidAlgorithmError: InvalidAlgorithmError,\n\tKeyParseError: KeyParseError,\n\tSignatureParseError: SignatureParseError,\n\tKeyEncryptedError: KeyEncryptedError,\n\tCertificateParseError: CertificateParseError\n};\n","// Copyright 2018 Joyent, Inc.\n\nmodule.exports = Fingerprint;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar errs = require('./errors');\nvar Key = require('./key');\nvar PrivateKey = require('./private-key');\nvar Certificate = require('./certificate');\nvar utils = require('./utils');\n\nvar FingerprintFormatError = errs.FingerprintFormatError;\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\n\nfunction Fingerprint(opts) {\n\tassert.object(opts, 'options');\n\tassert.string(opts.type, 'options.type');\n\tassert.buffer(opts.hash, 'options.hash');\n\tassert.string(opts.algorithm, 'options.algorithm');\n\n\tthis.algorithm = opts.algorithm.toLowerCase();\n\tif (algs.hashAlgs[this.algorithm] !== true)\n\t\tthrow (new InvalidAlgorithmError(this.algorithm));\n\n\tthis.hash = opts.hash;\n\tthis.type = opts.type;\n\tthis.hashType = opts.hashType;\n}\n\nFingerprint.prototype.toString = function (format) {\n\tif (format === undefined) {\n\t\tif (this.algorithm === 'md5' || this.hashType === 'spki')\n\t\t\tformat = 'hex';\n\t\telse\n\t\t\tformat = 'base64';\n\t}\n\tassert.string(format);\n\n\tswitch (format) {\n\tcase 'hex':\n\t\tif (this.hashType === 'spki')\n\t\t\treturn (this.hash.toString('hex'));\n\t\treturn (addColons(this.hash.toString('hex')));\n\tcase 'base64':\n\t\tif (this.hashType === 'spki')\n\t\t\treturn (this.hash.toString('base64'));\n\t\treturn (sshBase64Format(this.algorithm,\n\t\t this.hash.toString('base64')));\n\tdefault:\n\t\tthrow (new FingerprintFormatError(undefined, format));\n\t}\n};\n\nFingerprint.prototype.matches = function (other) {\n\tassert.object(other, 'key or certificate');\n\tif (this.type === 'key' && this.hashType !== 'ssh') {\n\t\tutils.assertCompatible(other, Key, [1, 7], 'key with spki');\n\t\tif (PrivateKey.isPrivateKey(other)) {\n\t\t\tutils.assertCompatible(other, PrivateKey, [1, 6],\n\t\t\t 'privatekey with spki support');\n\t\t}\n\t} else if (this.type === 'key') {\n\t\tutils.assertCompatible(other, Key, [1, 0], 'key');\n\t} else {\n\t\tutils.assertCompatible(other, Certificate, [1, 0],\n\t\t 'certificate');\n\t}\n\n\tvar theirHash = other.hash(this.algorithm, this.hashType);\n\tvar theirHash2 = crypto.createHash(this.algorithm).\n\t update(theirHash).digest('base64');\n\n\tif (this.hash2 === undefined)\n\t\tthis.hash2 = crypto.createHash(this.algorithm).\n\t\t update(this.hash).digest('base64');\n\n\treturn (this.hash2 === theirHash2);\n};\n\n/*JSSTYLED*/\nvar base64RE = /^[A-Za-z0-9+\\/=]+$/;\n/*JSSTYLED*/\nvar hexRE = /^[a-fA-F0-9]+$/;\n\nFingerprint.parse = function (fp, options) {\n\tassert.string(fp, 'fingerprint');\n\n\tvar alg, hash, enAlgs;\n\tif (Array.isArray(options)) {\n\t\tenAlgs = options;\n\t\toptions = {};\n\t}\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tif (options.enAlgs !== undefined)\n\t\tenAlgs = options.enAlgs;\n\tif (options.algorithms !== undefined)\n\t\tenAlgs = options.algorithms;\n\tassert.optionalArrayOfString(enAlgs, 'algorithms');\n\n\tvar hashType = 'ssh';\n\tif (options.hashType !== undefined)\n\t\thashType = options.hashType;\n\tassert.string(hashType, 'options.hashType');\n\n\tvar parts = fp.split(':');\n\tif (parts.length == 2) {\n\t\talg = parts[0].toLowerCase();\n\t\tif (!base64RE.test(parts[1]))\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\ttry {\n\t\t\thash = Buffer.from(parts[1], 'base64');\n\t\t} catch (e) {\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t}\n\t} else if (parts.length > 2) {\n\t\talg = 'md5';\n\t\tif (parts[0].toLowerCase() === 'md5')\n\t\t\tparts = parts.slice(1);\n\t\tparts = parts.map(function (p) {\n\t\t\twhile (p.length < 2)\n\t\t\t\tp = '0' + p;\n\t\t\tif (p.length > 2)\n\t\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t\treturn (p);\n\t\t});\n\t\tparts = parts.join('');\n\t\tif (!hexRE.test(parts) || parts.length % 2 !== 0)\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\ttry {\n\t\t\thash = Buffer.from(parts, 'hex');\n\t\t} catch (e) {\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t}\n\t} else {\n\t\tif (hexRE.test(fp)) {\n\t\t\thash = Buffer.from(fp, 'hex');\n\t\t} else if (base64RE.test(fp)) {\n\t\t\thash = Buffer.from(fp, 'base64');\n\t\t} else {\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t}\n\n\t\tswitch (hash.length) {\n\t\tcase 32:\n\t\t\talg = 'sha256';\n\t\t\tbreak;\n\t\tcase 16:\n\t\t\talg = 'md5';\n\t\t\tbreak;\n\t\tcase 20:\n\t\t\talg = 'sha1';\n\t\t\tbreak;\n\t\tcase 64:\n\t\t\talg = 'sha512';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t}\n\n\t\t/* Plain hex/base64: guess it's probably SPKI unless told. */\n\t\tif (options.hashType === undefined)\n\t\t\thashType = 'spki';\n\t}\n\n\tif (alg === undefined)\n\t\tthrow (new FingerprintFormatError(fp));\n\n\tif (algs.hashAlgs[alg] === undefined)\n\t\tthrow (new InvalidAlgorithmError(alg));\n\n\tif (enAlgs !== undefined) {\n\t\tenAlgs = enAlgs.map(function (a) { return a.toLowerCase(); });\n\t\tif (enAlgs.indexOf(alg) === -1)\n\t\t\tthrow (new InvalidAlgorithmError(alg));\n\t}\n\n\treturn (new Fingerprint({\n\t\talgorithm: alg,\n\t\thash: hash,\n\t\ttype: options.type || 'key',\n\t\thashType: hashType\n\t}));\n};\n\nfunction addColons(s) {\n\t/*JSSTYLED*/\n\treturn (s.replace(/(.{2})(?=.)/g, '$1:'));\n}\n\nfunction base64Strip(s) {\n\t/*JSSTYLED*/\n\treturn (s.replace(/=*$/, ''));\n}\n\nfunction sshBase64Format(alg, h) {\n\treturn (alg.toUpperCase() + ':' + base64Strip(h));\n}\n\nFingerprint.isFingerprint = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Fingerprint, ver));\n};\n\n/*\n * API versions for Fingerprint:\n * [1,0] -- initial ver\n * [1,1] -- first tagged ver\n * [1,2] -- hashType and spki support\n */\nFingerprint.prototype._sshpkApiVersion = [1, 2];\n\nFingerprint._oldVersionDetect = function (obj) {\n\tassert.func(obj.toString);\n\tassert.func(obj.matches);\n\treturn ([1, 0]);\n};\n","// Copyright 2018 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\n\nvar pem = require('./pem');\nvar ssh = require('./ssh');\nvar rfc4253 = require('./rfc4253');\nvar dnssec = require('./dnssec');\nvar putty = require('./putty');\n\nvar DNSSEC_PRIVKEY_HEADER_PREFIX = 'Private-key-format: v1';\n\nfunction read(buf, options) {\n\tif (typeof (buf) === 'string') {\n\t\tif (buf.trim().match(/^[-]+[ ]*BEGIN/))\n\t\t\treturn (pem.read(buf, options));\n\t\tif (buf.match(/^\\s*ssh-[a-z]/))\n\t\t\treturn (ssh.read(buf, options));\n\t\tif (buf.match(/^\\s*ecdsa-/))\n\t\t\treturn (ssh.read(buf, options));\n\t\tif (buf.match(/^putty-user-key-file-2:/i))\n\t\t\treturn (putty.read(buf, options));\n\t\tif (findDNSSECHeader(buf))\n\t\t\treturn (dnssec.read(buf, options));\n\t\tbuf = Buffer.from(buf, 'binary');\n\t} else {\n\t\tassert.buffer(buf);\n\t\tif (findPEMHeader(buf))\n\t\t\treturn (pem.read(buf, options));\n\t\tif (findSSHHeader(buf))\n\t\t\treturn (ssh.read(buf, options));\n\t\tif (findPuTTYHeader(buf))\n\t\t\treturn (putty.read(buf, options));\n\t\tif (findDNSSECHeader(buf))\n\t\t\treturn (dnssec.read(buf, options));\n\t}\n\tif (buf.readUInt32BE(0) < buf.length)\n\t\treturn (rfc4253.read(buf, options));\n\tthrow (new Error('Failed to auto-detect format of key'));\n}\n\nfunction findPuTTYHeader(buf) {\n\tvar offset = 0;\n\twhile (offset < buf.length &&\n\t (buf[offset] === 32 || buf[offset] === 10 || buf[offset] === 9))\n\t\t++offset;\n\tif (offset + 22 <= buf.length &&\n\t buf.slice(offset, offset + 22).toString('ascii').toLowerCase() ===\n\t 'putty-user-key-file-2:')\n\t\treturn (true);\n\treturn (false);\n}\n\nfunction findSSHHeader(buf) {\n\tvar offset = 0;\n\twhile (offset < buf.length &&\n\t (buf[offset] === 32 || buf[offset] === 10 || buf[offset] === 9))\n\t\t++offset;\n\tif (offset + 4 <= buf.length &&\n\t buf.slice(offset, offset + 4).toString('ascii') === 'ssh-')\n\t\treturn (true);\n\tif (offset + 6 <= buf.length &&\n\t buf.slice(offset, offset + 6).toString('ascii') === 'ecdsa-')\n\t\treturn (true);\n\treturn (false);\n}\n\nfunction findPEMHeader(buf) {\n\tvar offset = 0;\n\twhile (offset < buf.length &&\n\t (buf[offset] === 32 || buf[offset] === 10))\n\t\t++offset;\n\tif (buf[offset] !== 45)\n\t\treturn (false);\n\twhile (offset < buf.length &&\n\t (buf[offset] === 45))\n\t\t++offset;\n\twhile (offset < buf.length &&\n\t (buf[offset] === 32))\n\t\t++offset;\n\tif (offset + 5 > buf.length ||\n\t buf.slice(offset, offset + 5).toString('ascii') !== 'BEGIN')\n\t\treturn (false);\n\treturn (true);\n}\n\nfunction findDNSSECHeader(buf) {\n\t// private case first\n\tif (buf.length <= DNSSEC_PRIVKEY_HEADER_PREFIX.length)\n\t\treturn (false);\n\tvar headerCheck = buf.slice(0, DNSSEC_PRIVKEY_HEADER_PREFIX.length);\n\tif (headerCheck.toString('ascii') === DNSSEC_PRIVKEY_HEADER_PREFIX)\n\t\treturn (true);\n\n\t// public-key RFC3110 ?\n\t// 'domain.com. IN KEY ...' or 'domain.com. IN DNSKEY ...'\n\t// skip any comment-lines\n\tif (typeof (buf) !== 'string') {\n\t\tbuf = buf.toString('ascii');\n\t}\n\tvar lines = buf.split('\\n');\n\tvar line = 0;\n\t/* JSSTYLED */\n\twhile (lines[line].match(/^\\;/))\n\t\tline++;\n\tif (lines[line].toString('ascii').match(/\\. IN KEY /))\n\t\treturn (true);\n\tif (lines[line].toString('ascii').match(/\\. IN DNSKEY /))\n\t\treturn (true);\n\treturn (false);\n}\n\nfunction write(key, options) {\n\tthrow (new Error('\"auto\" format cannot be used for writing'));\n}\n","// Copyright 2017 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar utils = require('../utils');\nvar SSHBuffer = require('../ssh-buffer');\nvar Dhe = require('../dhe');\n\nvar supportedAlgos = {\n\t'rsa-sha1' : 5,\n\t'rsa-sha256' : 8,\n\t'rsa-sha512' : 10,\n\t'ecdsa-p256-sha256' : 13,\n\t'ecdsa-p384-sha384' : 14\n\t/*\n\t * ed25519 is hypothetically supported with id 15\n\t * but the common tools available don't appear to be\n\t * capable of generating/using ed25519 keys\n\t */\n};\n\nvar supportedAlgosById = {};\nObject.keys(supportedAlgos).forEach(function (k) {\n\tsupportedAlgosById[supportedAlgos[k]] = k.toUpperCase();\n});\n\nfunction read(buf, options) {\n\tif (typeof (buf) !== 'string') {\n\t\tassert.buffer(buf, 'buf');\n\t\tbuf = buf.toString('ascii');\n\t}\n\tvar lines = buf.split('\\n');\n\tif (lines[0].match(/^Private-key-format\\: v1/)) {\n\t\tvar algElems = lines[1].split(' ');\n\t\tvar algoNum = parseInt(algElems[1], 10);\n\t\tvar algoName = algElems[2];\n\t\tif (!supportedAlgosById[algoNum])\n\t\t\tthrow (new Error('Unsupported algorithm: ' + algoName));\n\t\treturn (readDNSSECPrivateKey(algoNum, lines.slice(2)));\n\t}\n\n\t// skip any comment-lines\n\tvar line = 0;\n\t/* JSSTYLED */\n\twhile (lines[line].match(/^\\;/))\n\t\tline++;\n\t// we should now have *one single* line left with our KEY on it.\n\tif ((lines[line].match(/\\. IN KEY /) ||\n\t lines[line].match(/\\. IN DNSKEY /)) && lines[line+1].length === 0) {\n\t\treturn (readRFC3110(lines[line]));\n\t}\n\tthrow (new Error('Cannot parse dnssec key'));\n}\n\nfunction readRFC3110(keyString) {\n\tvar elems = keyString.split(' ');\n\t//unused var flags = parseInt(elems[3], 10);\n\t//unused var protocol = parseInt(elems[4], 10);\n\tvar algorithm = parseInt(elems[5], 10);\n\tif (!supportedAlgosById[algorithm])\n\t\tthrow (new Error('Unsupported algorithm: ' + algorithm));\n\tvar base64key = elems.slice(6, elems.length).join();\n\tvar keyBuffer = Buffer.from(base64key, 'base64');\n\tif (supportedAlgosById[algorithm].match(/^RSA-/)) {\n\t\t// join the rest of the body into a single base64-blob\n\t\tvar publicExponentLen = keyBuffer.readUInt8(0);\n\t\tif (publicExponentLen != 3 && publicExponentLen != 1)\n\t\t\tthrow (new Error('Cannot parse dnssec key: ' +\n\t\t\t 'unsupported exponent length'));\n\n\t\tvar publicExponent = keyBuffer.slice(1, publicExponentLen+1);\n\t\tpublicExponent = utils.mpNormalize(publicExponent);\n\t\tvar modulus = keyBuffer.slice(1+publicExponentLen);\n\t\tmodulus = utils.mpNormalize(modulus);\n\t\t// now, make the key\n\t\tvar rsaKey = {\n\t\t\ttype: 'rsa',\n\t\t\tparts: []\n\t\t};\n\t\trsaKey.parts.push({ name: 'e', data: publicExponent});\n\t\trsaKey.parts.push({ name: 'n', data: modulus});\n\t\treturn (new Key(rsaKey));\n\t}\n\tif (supportedAlgosById[algorithm] === 'ECDSA-P384-SHA384' ||\n\t supportedAlgosById[algorithm] === 'ECDSA-P256-SHA256') {\n\t\tvar curve = 'nistp384';\n\t\tvar size = 384;\n\t\tif (supportedAlgosById[algorithm].match(/^ECDSA-P256-SHA256/)) {\n\t\t\tcurve = 'nistp256';\n\t\t\tsize = 256;\n\t\t}\n\n\t\tvar ecdsaKey = {\n\t\t\ttype: 'ecdsa',\n\t\t\tcurve: curve,\n\t\t\tsize: size,\n\t\t\tparts: [\n\t\t\t\t{name: 'curve', data: Buffer.from(curve) },\n\t\t\t\t{name: 'Q', data: utils.ecNormalize(keyBuffer) }\n\t\t\t]\n\t\t};\n\t\treturn (new Key(ecdsaKey));\n\t}\n\tthrow (new Error('Unsupported algorithm: ' +\n\t supportedAlgosById[algorithm]));\n}\n\nfunction elementToBuf(e) {\n\treturn (Buffer.from(e.split(' ')[1], 'base64'));\n}\n\nfunction readDNSSECRSAPrivateKey(elements) {\n\tvar rsaParams = {};\n\telements.forEach(function (element) {\n\t\tif (element.split(' ')[0] === 'Modulus:')\n\t\t\trsaParams['n'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'PublicExponent:')\n\t\t\trsaParams['e'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'PrivateExponent:')\n\t\t\trsaParams['d'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Prime1:')\n\t\t\trsaParams['p'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Prime2:')\n\t\t\trsaParams['q'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Exponent1:')\n\t\t\trsaParams['dmodp'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Exponent2:')\n\t\t\trsaParams['dmodq'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Coefficient:')\n\t\t\trsaParams['iqmp'] = elementToBuf(element);\n\t});\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tparts: [\n\t\t\t{ name: 'e', data: utils.mpNormalize(rsaParams['e'])},\n\t\t\t{ name: 'n', data: utils.mpNormalize(rsaParams['n'])},\n\t\t\t{ name: 'd', data: utils.mpNormalize(rsaParams['d'])},\n\t\t\t{ name: 'p', data: utils.mpNormalize(rsaParams['p'])},\n\t\t\t{ name: 'q', data: utils.mpNormalize(rsaParams['q'])},\n\t\t\t{ name: 'dmodp',\n\t\t\t data: utils.mpNormalize(rsaParams['dmodp'])},\n\t\t\t{ name: 'dmodq',\n\t\t\t data: utils.mpNormalize(rsaParams['dmodq'])},\n\t\t\t{ name: 'iqmp',\n\t\t\t data: utils.mpNormalize(rsaParams['iqmp'])}\n\t\t]\n\t};\n\treturn (new PrivateKey(key));\n}\n\nfunction readDNSSECPrivateKey(alg, elements) {\n\tif (supportedAlgosById[alg].match(/^RSA-/)) {\n\t\treturn (readDNSSECRSAPrivateKey(elements));\n\t}\n\tif (supportedAlgosById[alg] === 'ECDSA-P384-SHA384' ||\n\t supportedAlgosById[alg] === 'ECDSA-P256-SHA256') {\n\t\tvar d = Buffer.from(elements[0].split(' ')[1], 'base64');\n\t\tvar curve = 'nistp384';\n\t\tvar size = 384;\n\t\tif (supportedAlgosById[alg] === 'ECDSA-P256-SHA256') {\n\t\t\tcurve = 'nistp256';\n\t\t\tsize = 256;\n\t\t}\n\t\t// DNSSEC generates the public-key on the fly (go calculate it)\n\t\tvar publicKey = utils.publicFromPrivateECDSA(curve, d);\n\t\tvar Q = publicKey.part['Q'].data;\n\t\tvar ecdsaKey = {\n\t\t\ttype: 'ecdsa',\n\t\t\tcurve: curve,\n\t\t\tsize: size,\n\t\t\tparts: [\n\t\t\t\t{name: 'curve', data: Buffer.from(curve) },\n\t\t\t\t{name: 'd', data: d },\n\t\t\t\t{name: 'Q', data: Q }\n\t\t\t]\n\t\t};\n\t\treturn (new PrivateKey(ecdsaKey));\n\t}\n\tthrow (new Error('Unsupported algorithm: ' + supportedAlgosById[alg]));\n}\n\nfunction dnssecTimestamp(date) {\n\tvar year = date.getFullYear() + ''; //stringify\n\tvar month = (date.getMonth() + 1);\n\tvar timestampStr = year + month + date.getUTCDate();\n\ttimestampStr += '' + date.getUTCHours() + date.getUTCMinutes();\n\ttimestampStr += date.getUTCSeconds();\n\treturn (timestampStr);\n}\n\nfunction rsaAlgFromOptions(opts) {\n\tif (!opts || !opts.hashAlgo || opts.hashAlgo === 'sha1')\n\t\treturn ('5 (RSASHA1)');\n\telse if (opts.hashAlgo === 'sha256')\n\t\treturn ('8 (RSASHA256)');\n\telse if (opts.hashAlgo === 'sha512')\n\t\treturn ('10 (RSASHA512)');\n\telse\n\t\tthrow (new Error('Unknown or unsupported hash: ' +\n\t\t opts.hashAlgo));\n}\n\nfunction writeRSA(key, options) {\n\t// if we're missing parts, add them.\n\tif (!key.part.dmodp || !key.part.dmodq) {\n\t\tutils.addRSAMissing(key);\n\t}\n\n\tvar out = '';\n\tout += 'Private-key-format: v1.3\\n';\n\tout += 'Algorithm: ' + rsaAlgFromOptions(options) + '\\n';\n\tvar n = utils.mpDenormalize(key.part['n'].data);\n\tout += 'Modulus: ' + n.toString('base64') + '\\n';\n\tvar e = utils.mpDenormalize(key.part['e'].data);\n\tout += 'PublicExponent: ' + e.toString('base64') + '\\n';\n\tvar d = utils.mpDenormalize(key.part['d'].data);\n\tout += 'PrivateExponent: ' + d.toString('base64') + '\\n';\n\tvar p = utils.mpDenormalize(key.part['p'].data);\n\tout += 'Prime1: ' + p.toString('base64') + '\\n';\n\tvar q = utils.mpDenormalize(key.part['q'].data);\n\tout += 'Prime2: ' + q.toString('base64') + '\\n';\n\tvar dmodp = utils.mpDenormalize(key.part['dmodp'].data);\n\tout += 'Exponent1: ' + dmodp.toString('base64') + '\\n';\n\tvar dmodq = utils.mpDenormalize(key.part['dmodq'].data);\n\tout += 'Exponent2: ' + dmodq.toString('base64') + '\\n';\n\tvar iqmp = utils.mpDenormalize(key.part['iqmp'].data);\n\tout += 'Coefficient: ' + iqmp.toString('base64') + '\\n';\n\t// Assume that we're valid as-of now\n\tvar timestamp = new Date();\n\tout += 'Created: ' + dnssecTimestamp(timestamp) + '\\n';\n\tout += 'Publish: ' + dnssecTimestamp(timestamp) + '\\n';\n\tout += 'Activate: ' + dnssecTimestamp(timestamp) + '\\n';\n\treturn (Buffer.from(out, 'ascii'));\n}\n\nfunction writeECDSA(key, options) {\n\tvar out = '';\n\tout += 'Private-key-format: v1.3\\n';\n\n\tif (key.curve === 'nistp256') {\n\t\tout += 'Algorithm: 13 (ECDSAP256SHA256)\\n';\n\t} else if (key.curve === 'nistp384') {\n\t\tout += 'Algorithm: 14 (ECDSAP384SHA384)\\n';\n\t} else {\n\t\tthrow (new Error('Unsupported curve'));\n\t}\n\tvar base64Key = key.part['d'].data.toString('base64');\n\tout += 'PrivateKey: ' + base64Key + '\\n';\n\n\t// Assume that we're valid as-of now\n\tvar timestamp = new Date();\n\tout += 'Created: ' + dnssecTimestamp(timestamp) + '\\n';\n\tout += 'Publish: ' + dnssecTimestamp(timestamp) + '\\n';\n\tout += 'Activate: ' + dnssecTimestamp(timestamp) + '\\n';\n\n\treturn (Buffer.from(out, 'ascii'));\n}\n\nfunction write(key, options) {\n\tif (PrivateKey.isPrivateKey(key)) {\n\t\tif (key.type === 'rsa') {\n\t\t\treturn (writeRSA(key, options));\n\t\t} else if (key.type === 'ecdsa') {\n\t\t\treturn (writeECDSA(key, options));\n\t\t} else {\n\t\t\tthrow (new Error('Unsupported algorithm: ' + key.type));\n\t\t}\n\t} else if (Key.isKey(key)) {\n\t\t/*\n\t\t * RFC3110 requires a keyname, and a keytype, which we\n\t\t * don't really have a mechanism for specifying such\n\t\t * additional metadata.\n\t\t */\n\t\tthrow (new Error('Format \"dnssec\" only supports ' +\n\t\t 'writing private keys'));\n\t} else {\n\t\tthrow (new Error('key is not a Key or PrivateKey'));\n\t}\n}\n","// Copyright 2017 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\tverify: verify,\n\tsign: sign,\n\tsignAsync: signAsync,\n\twrite: write,\n\n\t/* Internal private API */\n\tfromBuffer: fromBuffer,\n\ttoBuffer: toBuffer\n};\n\nvar assert = require('assert-plus');\nvar SSHBuffer = require('../ssh-buffer');\nvar crypto = require('crypto');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar Identity = require('../identity');\nvar rfc4253 = require('./rfc4253');\nvar Signature = require('../signature');\nvar utils = require('../utils');\nvar Certificate = require('../certificate');\n\nfunction verify(cert, key) {\n\t/*\n\t * We always give an issuerKey, so if our verify() is being called then\n\t * there was no signature. Return false.\n\t */\n\treturn (false);\n}\n\nvar TYPES = {\n\t'user': 1,\n\t'host': 2\n};\nObject.keys(TYPES).forEach(function (k) { TYPES[TYPES[k]] = k; });\n\nvar ECDSA_ALGO = /^ecdsa-sha2-([^@-]+)-cert-v01@openssh.com$/;\n\nfunction read(buf, options) {\n\tif (Buffer.isBuffer(buf))\n\t\tbuf = buf.toString('ascii');\n\tvar parts = buf.trim().split(/[ \\t\\n]+/g);\n\tif (parts.length < 2 || parts.length > 3)\n\t\tthrow (new Error('Not a valid SSH certificate line'));\n\n\tvar algo = parts[0];\n\tvar data = parts[1];\n\n\tdata = Buffer.from(data, 'base64');\n\treturn (fromBuffer(data, algo));\n}\n\nfunction fromBuffer(data, algo, partial) {\n\tvar sshbuf = new SSHBuffer({ buffer: data });\n\tvar innerAlgo = sshbuf.readString();\n\tif (algo !== undefined && innerAlgo !== algo)\n\t\tthrow (new Error('SSH certificate algorithm mismatch'));\n\tif (algo === undefined)\n\t\talgo = innerAlgo;\n\n\tvar cert = {};\n\tcert.signatures = {};\n\tcert.signatures.openssh = {};\n\n\tcert.signatures.openssh.nonce = sshbuf.readBuffer();\n\n\tvar key = {};\n\tvar parts = (key.parts = []);\n\tkey.type = getAlg(algo);\n\n\tvar partCount = algs.info[key.type].parts.length;\n\twhile (parts.length < partCount)\n\t\tparts.push(sshbuf.readPart());\n\tassert.ok(parts.length >= 1, 'key must have at least one part');\n\n\tvar algInfo = algs.info[key.type];\n\tif (key.type === 'ecdsa') {\n\t\tvar res = ECDSA_ALGO.exec(algo);\n\t\tassert.ok(res !== null);\n\t\tassert.strictEqual(res[1], parts[0].data.toString());\n\t}\n\n\tfor (var i = 0; i < algInfo.parts.length; ++i) {\n\t\tparts[i].name = algInfo.parts[i];\n\t\tif (parts[i].name !== 'curve' &&\n\t\t algInfo.normalize !== false) {\n\t\t\tvar p = parts[i];\n\t\t\tp.data = utils.mpNormalize(p.data);\n\t\t}\n\t}\n\n\tcert.subjectKey = new Key(key);\n\n\tcert.serial = sshbuf.readInt64();\n\n\tvar type = TYPES[sshbuf.readInt()];\n\tassert.string(type, 'valid cert type');\n\n\tcert.signatures.openssh.keyId = sshbuf.readString();\n\n\tvar principals = [];\n\tvar pbuf = sshbuf.readBuffer();\n\tvar psshbuf = new SSHBuffer({ buffer: pbuf });\n\twhile (!psshbuf.atEnd())\n\t\tprincipals.push(psshbuf.readString());\n\tif (principals.length === 0)\n\t\tprincipals = ['*'];\n\n\tcert.subjects = principals.map(function (pr) {\n\t\tif (type === 'user')\n\t\t\treturn (Identity.forUser(pr));\n\t\telse if (type === 'host')\n\t\t\treturn (Identity.forHost(pr));\n\t\tthrow (new Error('Unknown identity type ' + type));\n\t});\n\n\tcert.validFrom = int64ToDate(sshbuf.readInt64());\n\tcert.validUntil = int64ToDate(sshbuf.readInt64());\n\n\tvar exts = [];\n\tvar extbuf = new SSHBuffer({ buffer: sshbuf.readBuffer() });\n\tvar ext;\n\twhile (!extbuf.atEnd()) {\n\t\text = { critical: true };\n\t\text.name = extbuf.readString();\n\t\text.data = extbuf.readBuffer();\n\t\texts.push(ext);\n\t}\n\textbuf = new SSHBuffer({ buffer: sshbuf.readBuffer() });\n\twhile (!extbuf.atEnd()) {\n\t\text = { critical: false };\n\t\text.name = extbuf.readString();\n\t\text.data = extbuf.readBuffer();\n\t\texts.push(ext);\n\t}\n\tcert.signatures.openssh.exts = exts;\n\n\t/* reserved */\n\tsshbuf.readBuffer();\n\n\tvar signingKeyBuf = sshbuf.readBuffer();\n\tcert.issuerKey = rfc4253.read(signingKeyBuf);\n\n\t/*\n\t * OpenSSH certs don't give the identity of the issuer, just their\n\t * public key. So, we use an Identity that matches anything. The\n\t * isSignedBy() function will later tell you if the key matches.\n\t */\n\tcert.issuer = Identity.forHost('**');\n\n\tvar sigBuf = sshbuf.readBuffer();\n\tcert.signatures.openssh.signature =\n\t Signature.parse(sigBuf, cert.issuerKey.type, 'ssh');\n\n\tif (partial !== undefined) {\n\t\tpartial.remainder = sshbuf.remainder();\n\t\tpartial.consumed = sshbuf._offset;\n\t}\n\n\treturn (new Certificate(cert));\n}\n\nfunction int64ToDate(buf) {\n\tvar i = buf.readUInt32BE(0) * 4294967296;\n\ti += buf.readUInt32BE(4);\n\tvar d = new Date();\n\td.setTime(i * 1000);\n\td.sourceInt64 = buf;\n\treturn (d);\n}\n\nfunction dateToInt64(date) {\n\tif (date.sourceInt64 !== undefined)\n\t\treturn (date.sourceInt64);\n\tvar i = Math.round(date.getTime() / 1000);\n\tvar upper = Math.floor(i / 4294967296);\n\tvar lower = Math.floor(i % 4294967296);\n\tvar buf = Buffer.alloc(8);\n\tbuf.writeUInt32BE(upper, 0);\n\tbuf.writeUInt32BE(lower, 4);\n\treturn (buf);\n}\n\nfunction sign(cert, key) {\n\tif (cert.signatures.openssh === undefined)\n\t\tcert.signatures.openssh = {};\n\ttry {\n\t\tvar blob = toBuffer(cert, true);\n\t} catch (e) {\n\t\tdelete (cert.signatures.openssh);\n\t\treturn (false);\n\t}\n\tvar sig = cert.signatures.openssh;\n\tvar hashAlgo = undefined;\n\tif (key.type === 'rsa' || key.type === 'dsa')\n\t\thashAlgo = 'sha1';\n\tvar signer = key.createSign(hashAlgo);\n\tsigner.write(blob);\n\tsig.signature = signer.sign();\n\treturn (true);\n}\n\nfunction signAsync(cert, signer, done) {\n\tif (cert.signatures.openssh === undefined)\n\t\tcert.signatures.openssh = {};\n\ttry {\n\t\tvar blob = toBuffer(cert, true);\n\t} catch (e) {\n\t\tdelete (cert.signatures.openssh);\n\t\tdone(e);\n\t\treturn;\n\t}\n\tvar sig = cert.signatures.openssh;\n\n\tsigner(blob, function (err, signature) {\n\t\tif (err) {\n\t\t\tdone(err);\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\t/*\n\t\t\t * This will throw if the signature isn't of a\n\t\t\t * type/algo that can be used for SSH.\n\t\t\t */\n\t\t\tsignature.toBuffer('ssh');\n\t\t} catch (e) {\n\t\t\tdone(e);\n\t\t\treturn;\n\t\t}\n\t\tsig.signature = signature;\n\t\tdone();\n\t});\n}\n\nfunction write(cert, options) {\n\tif (options === undefined)\n\t\toptions = {};\n\n\tvar blob = toBuffer(cert);\n\tvar out = getCertType(cert.subjectKey) + ' ' + blob.toString('base64');\n\tif (options.comment)\n\t\tout = out + ' ' + options.comment;\n\treturn (out);\n}\n\n\nfunction toBuffer(cert, noSig) {\n\tassert.object(cert.signatures.openssh, 'signature for openssh format');\n\tvar sig = cert.signatures.openssh;\n\n\tif (sig.nonce === undefined)\n\t\tsig.nonce = crypto.randomBytes(16);\n\tvar buf = new SSHBuffer({});\n\tbuf.writeString(getCertType(cert.subjectKey));\n\tbuf.writeBuffer(sig.nonce);\n\n\tvar key = cert.subjectKey;\n\tvar algInfo = algs.info[key.type];\n\talgInfo.parts.forEach(function (part) {\n\t\tbuf.writePart(key.part[part]);\n\t});\n\n\tbuf.writeInt64(cert.serial);\n\n\tvar type = cert.subjects[0].type;\n\tassert.notStrictEqual(type, 'unknown');\n\tcert.subjects.forEach(function (id) {\n\t\tassert.strictEqual(id.type, type);\n\t});\n\ttype = TYPES[type];\n\tbuf.writeInt(type);\n\n\tif (sig.keyId === undefined) {\n\t\tsig.keyId = cert.subjects[0].type + '_' +\n\t\t (cert.subjects[0].uid || cert.subjects[0].hostname);\n\t}\n\tbuf.writeString(sig.keyId);\n\n\tvar sub = new SSHBuffer({});\n\tcert.subjects.forEach(function (id) {\n\t\tif (type === TYPES.host)\n\t\t\tsub.writeString(id.hostname);\n\t\telse if (type === TYPES.user)\n\t\t\tsub.writeString(id.uid);\n\t});\n\tbuf.writeBuffer(sub.toBuffer());\n\n\tbuf.writeInt64(dateToInt64(cert.validFrom));\n\tbuf.writeInt64(dateToInt64(cert.validUntil));\n\n\tvar exts = sig.exts;\n\tif (exts === undefined)\n\t\texts = [];\n\n\tvar extbuf = new SSHBuffer({});\n\texts.forEach(function (ext) {\n\t\tif (ext.critical !== true)\n\t\t\treturn;\n\t\textbuf.writeString(ext.name);\n\t\textbuf.writeBuffer(ext.data);\n\t});\n\tbuf.writeBuffer(extbuf.toBuffer());\n\n\textbuf = new SSHBuffer({});\n\texts.forEach(function (ext) {\n\t\tif (ext.critical === true)\n\t\t\treturn;\n\t\textbuf.writeString(ext.name);\n\t\textbuf.writeBuffer(ext.data);\n\t});\n\tbuf.writeBuffer(extbuf.toBuffer());\n\n\t/* reserved */\n\tbuf.writeBuffer(Buffer.alloc(0));\n\n\tsub = rfc4253.write(cert.issuerKey);\n\tbuf.writeBuffer(sub);\n\n\tif (!noSig)\n\t\tbuf.writeBuffer(sig.signature.toBuffer('ssh'));\n\n\treturn (buf.toBuffer());\n}\n\nfunction getAlg(certType) {\n\tif (certType === 'ssh-rsa-cert-v01@openssh.com')\n\t\treturn ('rsa');\n\tif (certType === 'ssh-dss-cert-v01@openssh.com')\n\t\treturn ('dsa');\n\tif (certType.match(ECDSA_ALGO))\n\t\treturn ('ecdsa');\n\tif (certType === 'ssh-ed25519-cert-v01@openssh.com')\n\t\treturn ('ed25519');\n\tthrow (new Error('Unsupported cert type ' + certType));\n}\n\nfunction getCertType(key) {\n\tif (key.type === 'rsa')\n\t\treturn ('ssh-rsa-cert-v01@openssh.com');\n\tif (key.type === 'dsa')\n\t\treturn ('ssh-dss-cert-v01@openssh.com');\n\tif (key.type === 'ecdsa')\n\t\treturn ('ecdsa-sha2-' + key.curve + '-cert-v01@openssh.com');\n\tif (key.type === 'ed25519')\n\t\treturn ('ssh-ed25519-cert-v01@openssh.com');\n\tthrow (new Error('Unsupported key type ' + key.type));\n}\n","// Copyright 2018 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar crypto = require('crypto');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\n\nvar pkcs1 = require('./pkcs1');\nvar pkcs8 = require('./pkcs8');\nvar sshpriv = require('./ssh-private');\nvar rfc4253 = require('./rfc4253');\n\nvar errors = require('../errors');\n\nvar OID_PBES2 = '1.2.840.113549.1.5.13';\nvar OID_PBKDF2 = '1.2.840.113549.1.5.12';\n\nvar OID_TO_CIPHER = {\n\t'1.2.840.113549.3.7': '3des-cbc',\n\t'2.16.840.1.101.3.4.1.2': 'aes128-cbc',\n\t'2.16.840.1.101.3.4.1.42': 'aes256-cbc'\n};\nvar CIPHER_TO_OID = {};\nObject.keys(OID_TO_CIPHER).forEach(function (k) {\n\tCIPHER_TO_OID[OID_TO_CIPHER[k]] = k;\n});\n\nvar OID_TO_HASH = {\n\t'1.2.840.113549.2.7': 'sha1',\n\t'1.2.840.113549.2.9': 'sha256',\n\t'1.2.840.113549.2.11': 'sha512'\n};\nvar HASH_TO_OID = {};\nObject.keys(OID_TO_HASH).forEach(function (k) {\n\tHASH_TO_OID[OID_TO_HASH[k]] = k;\n});\n\n/*\n * For reading we support both PKCS#1 and PKCS#8. If we find a private key,\n * we just take the public component of it and use that.\n */\nfunction read(buf, options, forceType) {\n\tvar input = buf;\n\tif (typeof (buf) !== 'string') {\n\t\tassert.buffer(buf, 'buf');\n\t\tbuf = buf.toString('ascii');\n\t}\n\n\tvar lines = buf.trim().split(/[\\r\\n]+/g);\n\n\tvar m;\n\tvar si = -1;\n\twhile (!m && si < lines.length) {\n\t\tm = lines[++si].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*BEGIN ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/);\n\t}\n\tassert.ok(m, 'invalid PEM header');\n\n\tvar m2;\n\tvar ei = lines.length;\n\twhile (!m2 && ei > 0) {\n\t\tm2 = lines[--ei].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*END ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/);\n\t}\n\tassert.ok(m2, 'invalid PEM footer');\n\n\t/* Begin and end banners must match key type */\n\tassert.equal(m[2], m2[2]);\n\tvar type = m[2].toLowerCase();\n\n\tvar alg;\n\tif (m[1]) {\n\t\t/* They also must match algorithms, if given */\n\t\tassert.equal(m[1], m2[1], 'PEM header and footer mismatch');\n\t\talg = m[1].trim();\n\t}\n\n\tlines = lines.slice(si, ei + 1);\n\n\tvar headers = {};\n\twhile (true) {\n\t\tlines = lines.slice(1);\n\t\tm = lines[0].match(/*JSSTYLED*/\n\t\t /^([A-Za-z0-9-]+): (.+)$/);\n\t\tif (!m)\n\t\t\tbreak;\n\t\theaders[m[1].toLowerCase()] = m[2];\n\t}\n\n\t/* Chop off the first and last lines */\n\tlines = lines.slice(0, -1).join('');\n\tbuf = Buffer.from(lines, 'base64');\n\n\tvar cipher, key, iv;\n\tif (headers['proc-type']) {\n\t\tvar parts = headers['proc-type'].split(',');\n\t\tif (parts[0] === '4' && parts[1] === 'ENCRYPTED') {\n\t\t\tif (typeof (options.passphrase) === 'string') {\n\t\t\t\toptions.passphrase = Buffer.from(\n\t\t\t\t options.passphrase, 'utf-8');\n\t\t\t}\n\t\t\tif (!Buffer.isBuffer(options.passphrase)) {\n\t\t\t\tthrow (new errors.KeyEncryptedError(\n\t\t\t\t options.filename, 'PEM'));\n\t\t\t} else {\n\t\t\t\tparts = headers['dek-info'].split(',');\n\t\t\t\tassert.ok(parts.length === 2);\n\t\t\t\tcipher = parts[0].toLowerCase();\n\t\t\t\tiv = Buffer.from(parts[1], 'hex');\n\t\t\t\tkey = utils.opensslKeyDeriv(cipher, iv,\n\t\t\t\t options.passphrase, 1).key;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (alg && alg.toLowerCase() === 'encrypted') {\n\t\tvar eder = new asn1.BerReader(buf);\n\t\tvar pbesEnd;\n\t\teder.readSequence();\n\n\t\teder.readSequence();\n\t\tpbesEnd = eder.offset + eder.length;\n\n\t\tvar method = eder.readOID();\n\t\tif (method !== OID_PBES2) {\n\t\t\tthrow (new Error('Unsupported PEM/PKCS8 encryption ' +\n\t\t\t 'scheme: ' + method));\n\t\t}\n\n\t\teder.readSequence();\t/* PBES2-params */\n\n\t\teder.readSequence();\t/* keyDerivationFunc */\n\t\tvar kdfEnd = eder.offset + eder.length;\n\t\tvar kdfOid = eder.readOID();\n\t\tif (kdfOid !== OID_PBKDF2)\n\t\t\tthrow (new Error('Unsupported PBES2 KDF: ' + kdfOid));\n\t\teder.readSequence();\n\t\tvar salt = eder.readString(asn1.Ber.OctetString, true);\n\t\tvar iterations = eder.readInt();\n\t\tvar hashAlg = 'sha1';\n\t\tif (eder.offset < kdfEnd) {\n\t\t\teder.readSequence();\n\t\t\tvar hashAlgOid = eder.readOID();\n\t\t\thashAlg = OID_TO_HASH[hashAlgOid];\n\t\t\tif (hashAlg === undefined) {\n\t\t\t\tthrow (new Error('Unsupported PBKDF2 hash: ' +\n\t\t\t\t hashAlgOid));\n\t\t\t}\n\t\t}\n\t\teder._offset = kdfEnd;\n\n\t\teder.readSequence();\t/* encryptionScheme */\n\t\tvar cipherOid = eder.readOID();\n\t\tcipher = OID_TO_CIPHER[cipherOid];\n\t\tif (cipher === undefined) {\n\t\t\tthrow (new Error('Unsupported PBES2 cipher: ' +\n\t\t\t cipherOid));\n\t\t}\n\t\tiv = eder.readString(asn1.Ber.OctetString, true);\n\n\t\teder._offset = pbesEnd;\n\t\tbuf = eder.readString(asn1.Ber.OctetString, true);\n\n\t\tif (typeof (options.passphrase) === 'string') {\n\t\t\toptions.passphrase = Buffer.from(\n\t\t\t options.passphrase, 'utf-8');\n\t\t}\n\t\tif (!Buffer.isBuffer(options.passphrase)) {\n\t\t\tthrow (new errors.KeyEncryptedError(\n\t\t\t options.filename, 'PEM'));\n\t\t}\n\n\t\tvar cinfo = utils.opensshCipherInfo(cipher);\n\n\t\tcipher = cinfo.opensslName;\n\t\tkey = utils.pbkdf2(hashAlg, salt, iterations, cinfo.keySize,\n\t\t options.passphrase);\n\t\talg = undefined;\n\t}\n\n\tif (cipher && key && iv) {\n\t\tvar cipherStream = crypto.createDecipheriv(cipher, key, iv);\n\t\tvar chunk, chunks = [];\n\t\tcipherStream.once('error', function (e) {\n\t\t\tif (e.toString().indexOf('bad decrypt') !== -1) {\n\t\t\t\tthrow (new Error('Incorrect passphrase ' +\n\t\t\t\t 'supplied, could not decrypt key'));\n\t\t\t}\n\t\t\tthrow (e);\n\t\t});\n\t\tcipherStream.write(buf);\n\t\tcipherStream.end();\n\t\twhile ((chunk = cipherStream.read()) !== null)\n\t\t\tchunks.push(chunk);\n\t\tbuf = Buffer.concat(chunks);\n\t}\n\n\t/* The new OpenSSH internal format abuses PEM headers */\n\tif (alg && alg.toLowerCase() === 'openssh')\n\t\treturn (sshpriv.readSSHPrivate(type, buf, options));\n\tif (alg && alg.toLowerCase() === 'ssh2')\n\t\treturn (rfc4253.readType(type, buf, options));\n\n\tvar der = new asn1.BerReader(buf);\n\tder.originalInput = input;\n\n\t/*\n\t * All of the PEM file types start with a sequence tag, so chop it\n\t * off here\n\t */\n\tder.readSequence();\n\n\t/* PKCS#1 type keys name an algorithm in the banner explicitly */\n\tif (alg) {\n\t\tif (forceType)\n\t\t\tassert.strictEqual(forceType, 'pkcs1');\n\t\treturn (pkcs1.readPkcs1(alg, type, der));\n\t} else {\n\t\tif (forceType)\n\t\t\tassert.strictEqual(forceType, 'pkcs8');\n\t\treturn (pkcs8.readPkcs8(alg, type, der));\n\t}\n}\n\nfunction write(key, options, type) {\n\tassert.object(key);\n\n\tvar alg = {\n\t 'ecdsa': 'EC',\n\t 'rsa': 'RSA',\n\t 'dsa': 'DSA',\n\t 'ed25519': 'EdDSA'\n\t}[key.type];\n\tvar header;\n\n\tvar der = new asn1.BerWriter();\n\n\tif (PrivateKey.isPrivateKey(key)) {\n\t\tif (type && type === 'pkcs8') {\n\t\t\theader = 'PRIVATE KEY';\n\t\t\tpkcs8.writePkcs8(der, key);\n\t\t} else {\n\t\t\tif (type)\n\t\t\t\tassert.strictEqual(type, 'pkcs1');\n\t\t\theader = alg + ' PRIVATE KEY';\n\t\t\tpkcs1.writePkcs1(der, key);\n\t\t}\n\n\t} else if (Key.isKey(key)) {\n\t\tif (type && type === 'pkcs1') {\n\t\t\theader = alg + ' PUBLIC KEY';\n\t\t\tpkcs1.writePkcs1(der, key);\n\t\t} else {\n\t\t\tif (type)\n\t\t\t\tassert.strictEqual(type, 'pkcs8');\n\t\t\theader = 'PUBLIC KEY';\n\t\t\tpkcs8.writePkcs8(der, key);\n\t\t}\n\n\t} else {\n\t\tthrow (new Error('key is not a Key or PrivateKey'));\n\t}\n\n\tvar tmp = der.buffer.toString('base64');\n\tvar len = tmp.length + (tmp.length / 64) +\n\t 18 + 16 + header.length*2 + 10;\n\tvar buf = Buffer.alloc(len);\n\tvar o = 0;\n\to += buf.write('-----BEGIN ' + header + '-----\\n', o);\n\tfor (var i = 0; i < tmp.length; ) {\n\t\tvar limit = i + 64;\n\t\tif (limit > tmp.length)\n\t\t\tlimit = tmp.length;\n\t\to += buf.write(tmp.slice(i, limit), o);\n\t\tbuf[o++] = 10;\n\t\ti = limit;\n\t}\n\to += buf.write('-----END ' + header + '-----\\n', o);\n\n\treturn (buf.slice(0, o));\n}\n","// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\treadPkcs1: readPkcs1,\n\twrite: write,\n\twritePkcs1: writePkcs1\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\n\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\n\nvar pkcs8 = require('./pkcs8');\nvar readECDSACurve = pkcs8.readECDSACurve;\n\nfunction read(buf, options) {\n\treturn (pem.read(buf, options, 'pkcs1'));\n}\n\nfunction write(key, options) {\n\treturn (pem.write(key, options, 'pkcs1'));\n}\n\n/* Helper to read in a single mpint */\nfunction readMPInt(der, nm) {\n\tassert.strictEqual(der.peek(), asn1.Ber.Integer,\n\t nm + ' is not an Integer');\n\treturn (utils.mpNormalize(der.readString(asn1.Ber.Integer, true)));\n}\n\nfunction readPkcs1(alg, type, der) {\n\tswitch (alg) {\n\tcase 'RSA':\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs1RSAPublic(der));\n\t\telse if (type === 'private')\n\t\t\treturn (readPkcs1RSAPrivate(der));\n\t\tthrow (new Error('Unknown key type: ' + type));\n\tcase 'DSA':\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs1DSAPublic(der));\n\t\telse if (type === 'private')\n\t\t\treturn (readPkcs1DSAPrivate(der));\n\t\tthrow (new Error('Unknown key type: ' + type));\n\tcase 'EC':\n\tcase 'ECDSA':\n\t\tif (type === 'private')\n\t\t\treturn (readPkcs1ECDSAPrivate(der));\n\t\telse if (type === 'public')\n\t\t\treturn (readPkcs1ECDSAPublic(der));\n\t\tthrow (new Error('Unknown key type: ' + type));\n\tcase 'EDDSA':\n\tcase 'EdDSA':\n\t\tif (type === 'private')\n\t\t\treturn (readPkcs1EdDSAPrivate(der));\n\t\tthrow (new Error(type + ' keys not supported with EdDSA'));\n\tdefault:\n\t\tthrow (new Error('Unknown key algo: ' + alg));\n\t}\n}\n\nfunction readPkcs1RSAPublic(der) {\n\t// modulus and exponent\n\tvar n = readMPInt(der, 'modulus');\n\tvar e = readMPInt(der, 'exponent');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tparts: [\n\t\t\t{ name: 'e', data: e },\n\t\t\t{ name: 'n', data: n }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs1RSAPrivate(der) {\n\tvar version = readMPInt(der, 'version');\n\tassert.strictEqual(version[0], 0);\n\n\t// modulus then public exponent\n\tvar n = readMPInt(der, 'modulus');\n\tvar e = readMPInt(der, 'public exponent');\n\tvar d = readMPInt(der, 'private exponent');\n\tvar p = readMPInt(der, 'prime1');\n\tvar q = readMPInt(der, 'prime2');\n\tvar dmodp = readMPInt(der, 'exponent1');\n\tvar dmodq = readMPInt(der, 'exponent2');\n\tvar iqmp = readMPInt(der, 'iqmp');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tparts: [\n\t\t\t{ name: 'n', data: n },\n\t\t\t{ name: 'e', data: e },\n\t\t\t{ name: 'd', data: d },\n\t\t\t{ name: 'iqmp', data: iqmp },\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'dmodp', data: dmodp },\n\t\t\t{ name: 'dmodq', data: dmodq }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs1DSAPrivate(der) {\n\tvar version = readMPInt(der, 'version');\n\tassert.strictEqual(version.readUInt8(0), 0);\n\n\tvar p = readMPInt(der, 'p');\n\tvar q = readMPInt(der, 'q');\n\tvar g = readMPInt(der, 'g');\n\tvar y = readMPInt(der, 'y');\n\tvar x = readMPInt(der, 'x');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'dsa',\n\t\tparts: [\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'g', data: g },\n\t\t\t{ name: 'y', data: y },\n\t\t\t{ name: 'x', data: x }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs1EdDSAPrivate(der) {\n\tvar version = readMPInt(der, 'version');\n\tassert.strictEqual(version.readUInt8(0), 1);\n\n\t// private key\n\tvar k = der.readString(asn1.Ber.OctetString, true);\n\n\tder.readSequence(0xa0);\n\tvar oid = der.readOID();\n\tassert.strictEqual(oid, '1.3.101.112', 'the ed25519 curve identifier');\n\n\tder.readSequence(0xa1);\n\tvar A = utils.readBitString(der);\n\n\tvar key = {\n\t\ttype: 'ed25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) },\n\t\t\t{ name: 'k', data: k }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs1DSAPublic(der) {\n\tvar y = readMPInt(der, 'y');\n\tvar p = readMPInt(der, 'p');\n\tvar q = readMPInt(der, 'q');\n\tvar g = readMPInt(der, 'g');\n\n\tvar key = {\n\t\ttype: 'dsa',\n\t\tparts: [\n\t\t\t{ name: 'y', data: y },\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'g', data: g }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs1ECDSAPublic(der) {\n\tder.readSequence();\n\n\tvar oid = der.readOID();\n\tassert.strictEqual(oid, '1.2.840.10045.2.1', 'must be ecPublicKey');\n\n\tvar curveOid = der.readOID();\n\n\tvar curve;\n\tvar curves = Object.keys(algs.curves);\n\tfor (var j = 0; j < curves.length; ++j) {\n\t\tvar c = curves[j];\n\t\tvar cd = algs.curves[c];\n\t\tif (cd.pkcs8oid === curveOid) {\n\t\t\tcurve = c;\n\t\t\tbreak;\n\t\t}\n\t}\n\tassert.string(curve, 'a known ECDSA named curve');\n\n\tvar Q = der.readString(asn1.Ber.BitString, true);\n\tQ = utils.ecNormalize(Q);\n\n\tvar key = {\n\t\ttype: 'ecdsa',\n\t\tparts: [\n\t\t\t{ name: 'curve', data: Buffer.from(curve) },\n\t\t\t{ name: 'Q', data: Q }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs1ECDSAPrivate(der) {\n\tvar version = readMPInt(der, 'version');\n\tassert.strictEqual(version.readUInt8(0), 1);\n\n\t// private key\n\tvar d = der.readString(asn1.Ber.OctetString, true);\n\n\tder.readSequence(0xa0);\n\tvar curve = readECDSACurve(der);\n\tassert.string(curve, 'a known elliptic curve');\n\n\tder.readSequence(0xa1);\n\tvar Q = der.readString(asn1.Ber.BitString, true);\n\tQ = utils.ecNormalize(Q);\n\n\tvar key = {\n\t\ttype: 'ecdsa',\n\t\tparts: [\n\t\t\t{ name: 'curve', data: Buffer.from(curve) },\n\t\t\t{ name: 'Q', data: Q },\n\t\t\t{ name: 'd', data: d }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction writePkcs1(der, key) {\n\tder.startSequence();\n\n\tswitch (key.type) {\n\tcase 'rsa':\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs1RSAPrivate(der, key);\n\t\telse\n\t\t\twritePkcs1RSAPublic(der, key);\n\t\tbreak;\n\tcase 'dsa':\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs1DSAPrivate(der, key);\n\t\telse\n\t\t\twritePkcs1DSAPublic(der, key);\n\t\tbreak;\n\tcase 'ecdsa':\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs1ECDSAPrivate(der, key);\n\t\telse\n\t\t\twritePkcs1ECDSAPublic(der, key);\n\t\tbreak;\n\tcase 'ed25519':\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs1EdDSAPrivate(der, key);\n\t\telse\n\t\t\twritePkcs1EdDSAPublic(der, key);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error('Unknown key algo: ' + key.type));\n\t}\n\n\tder.endSequence();\n}\n\nfunction writePkcs1RSAPublic(der, key) {\n\tder.writeBuffer(key.part.n.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.e.data, asn1.Ber.Integer);\n}\n\nfunction writePkcs1RSAPrivate(der, key) {\n\tvar ver = Buffer.from([0]);\n\tder.writeBuffer(ver, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.n.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.e.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.d.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tif (!key.part.dmodp || !key.part.dmodq)\n\t\tutils.addRSAMissing(key);\n\tder.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer);\n}\n\nfunction writePkcs1DSAPrivate(der, key) {\n\tvar ver = Buffer.from([0]);\n\tder.writeBuffer(ver, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.g.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.y.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.x.data, asn1.Ber.Integer);\n}\n\nfunction writePkcs1DSAPublic(der, key) {\n\tder.writeBuffer(key.part.y.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.g.data, asn1.Ber.Integer);\n}\n\nfunction writePkcs1ECDSAPublic(der, key) {\n\tder.startSequence();\n\n\tder.writeOID('1.2.840.10045.2.1'); /* ecPublicKey */\n\tvar curve = key.part.curve.data.toString();\n\tvar curveOid = algs.curves[curve].pkcs8oid;\n\tassert.string(curveOid, 'a known ECDSA named curve');\n\tder.writeOID(curveOid);\n\n\tder.endSequence();\n\n\tvar Q = utils.ecNormalize(key.part.Q.data, true);\n\tder.writeBuffer(Q, asn1.Ber.BitString);\n}\n\nfunction writePkcs1ECDSAPrivate(der, key) {\n\tvar ver = Buffer.from([1]);\n\tder.writeBuffer(ver, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.d.data, asn1.Ber.OctetString);\n\n\tder.startSequence(0xa0);\n\tvar curve = key.part.curve.data.toString();\n\tvar curveOid = algs.curves[curve].pkcs8oid;\n\tassert.string(curveOid, 'a known ECDSA named curve');\n\tder.writeOID(curveOid);\n\tder.endSequence();\n\n\tder.startSequence(0xa1);\n\tvar Q = utils.ecNormalize(key.part.Q.data, true);\n\tder.writeBuffer(Q, asn1.Ber.BitString);\n\tder.endSequence();\n}\n\nfunction writePkcs1EdDSAPrivate(der, key) {\n\tvar ver = Buffer.from([1]);\n\tder.writeBuffer(ver, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.k.data, asn1.Ber.OctetString);\n\n\tder.startSequence(0xa0);\n\tder.writeOID('1.3.101.112');\n\tder.endSequence();\n\n\tder.startSequence(0xa1);\n\tutils.writeBitString(der, key.part.A.data);\n\tder.endSequence();\n}\n\nfunction writePkcs1EdDSAPublic(der, key) {\n\tthrow (new Error('Public keys are not supported for EdDSA PKCS#1'));\n}\n","// Copyright 2018 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\treadPkcs8: readPkcs8,\n\twrite: write,\n\twritePkcs8: writePkcs8,\n\tpkcs8ToBuffer: pkcs8ToBuffer,\n\n\treadECDSACurve: readECDSACurve,\n\twriteECDSACurve: writeECDSACurve\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\n\nfunction read(buf, options) {\n\treturn (pem.read(buf, options, 'pkcs8'));\n}\n\nfunction write(key, options) {\n\treturn (pem.write(key, options, 'pkcs8'));\n}\n\n/* Helper to read in a single mpint */\nfunction readMPInt(der, nm) {\n\tassert.strictEqual(der.peek(), asn1.Ber.Integer,\n\t nm + ' is not an Integer');\n\treturn (utils.mpNormalize(der.readString(asn1.Ber.Integer, true)));\n}\n\nfunction readPkcs8(alg, type, der) {\n\t/* Private keys in pkcs#8 format have a weird extra int */\n\tif (der.peek() === asn1.Ber.Integer) {\n\t\tassert.strictEqual(type, 'private',\n\t\t 'unexpected Integer at start of public key');\n\t\tder.readString(asn1.Ber.Integer, true);\n\t}\n\n\tder.readSequence();\n\tvar next = der.offset + der.length;\n\n\tvar oid = der.readOID();\n\tswitch (oid) {\n\tcase '1.2.840.113549.1.1.1':\n\t\tder._offset = next;\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs8RSAPublic(der));\n\t\telse\n\t\t\treturn (readPkcs8RSAPrivate(der));\n\tcase '1.2.840.10040.4.1':\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs8DSAPublic(der));\n\t\telse\n\t\t\treturn (readPkcs8DSAPrivate(der));\n\tcase '1.2.840.10045.2.1':\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs8ECDSAPublic(der));\n\t\telse\n\t\t\treturn (readPkcs8ECDSAPrivate(der));\n\tcase '1.3.101.112':\n\t\tif (type === 'public') {\n\t\t\treturn (readPkcs8EdDSAPublic(der));\n\t\t} else {\n\t\t\treturn (readPkcs8EdDSAPrivate(der));\n\t\t}\n\tcase '1.3.101.110':\n\t\tif (type === 'public') {\n\t\t\treturn (readPkcs8X25519Public(der));\n\t\t} else {\n\t\t\treturn (readPkcs8X25519Private(der));\n\t\t}\n\tdefault:\n\t\tthrow (new Error('Unknown key type OID ' + oid));\n\t}\n}\n\nfunction readPkcs8RSAPublic(der) {\n\t// bit string sequence\n\tder.readSequence(asn1.Ber.BitString);\n\tder.readByte();\n\tder.readSequence();\n\n\t// modulus\n\tvar n = readMPInt(der, 'modulus');\n\tvar e = readMPInt(der, 'exponent');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tsource: der.originalInput,\n\t\tparts: [\n\t\t\t{ name: 'e', data: e },\n\t\t\t{ name: 'n', data: n }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8RSAPrivate(der) {\n\tder.readSequence(asn1.Ber.OctetString);\n\tder.readSequence();\n\n\tvar ver = readMPInt(der, 'version');\n\tassert.equal(ver[0], 0x0, 'unknown RSA private key version');\n\n\t// modulus then public exponent\n\tvar n = readMPInt(der, 'modulus');\n\tvar e = readMPInt(der, 'public exponent');\n\tvar d = readMPInt(der, 'private exponent');\n\tvar p = readMPInt(der, 'prime1');\n\tvar q = readMPInt(der, 'prime2');\n\tvar dmodp = readMPInt(der, 'exponent1');\n\tvar dmodq = readMPInt(der, 'exponent2');\n\tvar iqmp = readMPInt(der, 'iqmp');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tparts: [\n\t\t\t{ name: 'n', data: n },\n\t\t\t{ name: 'e', data: e },\n\t\t\t{ name: 'd', data: d },\n\t\t\t{ name: 'iqmp', data: iqmp },\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'dmodp', data: dmodp },\n\t\t\t{ name: 'dmodq', data: dmodq }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs8DSAPublic(der) {\n\tder.readSequence();\n\n\tvar p = readMPInt(der, 'p');\n\tvar q = readMPInt(der, 'q');\n\tvar g = readMPInt(der, 'g');\n\n\t// bit string sequence\n\tder.readSequence(asn1.Ber.BitString);\n\tder.readByte();\n\n\tvar y = readMPInt(der, 'y');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'dsa',\n\t\tparts: [\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'g', data: g },\n\t\t\t{ name: 'y', data: y }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8DSAPrivate(der) {\n\tder.readSequence();\n\n\tvar p = readMPInt(der, 'p');\n\tvar q = readMPInt(der, 'q');\n\tvar g = readMPInt(der, 'g');\n\n\tder.readSequence(asn1.Ber.OctetString);\n\tvar x = readMPInt(der, 'x');\n\n\t/* The pkcs#8 format does not include the public key */\n\tvar y = utils.calculateDSAPublic(g, p, x);\n\n\tvar key = {\n\t\ttype: 'dsa',\n\t\tparts: [\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'g', data: g },\n\t\t\t{ name: 'y', data: y },\n\t\t\t{ name: 'x', data: x }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readECDSACurve(der) {\n\tvar curveName, curveNames;\n\tvar j, c, cd;\n\n\tif (der.peek() === asn1.Ber.OID) {\n\t\tvar oid = der.readOID();\n\n\t\tcurveNames = Object.keys(algs.curves);\n\t\tfor (j = 0; j < curveNames.length; ++j) {\n\t\t\tc = curveNames[j];\n\t\t\tcd = algs.curves[c];\n\t\t\tif (cd.pkcs8oid === oid) {\n\t\t\t\tcurveName = c;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// ECParameters sequence\n\t\tder.readSequence();\n\t\tvar version = der.readString(asn1.Ber.Integer, true);\n\t\tassert.strictEqual(version[0], 1, 'ECDSA key not version 1');\n\n\t\tvar curve = {};\n\n\t\t// FieldID sequence\n\t\tder.readSequence();\n\t\tvar fieldTypeOid = der.readOID();\n\t\tassert.strictEqual(fieldTypeOid, '1.2.840.10045.1.1',\n\t\t 'ECDSA key is not from a prime-field');\n\t\tvar p = curve.p = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.Integer, true));\n\t\t/*\n\t\t * p always starts with a 1 bit, so count the zeros to get its\n\t\t * real size.\n\t\t */\n\t\tcurve.size = p.length * 8 - utils.countZeros(p);\n\n\t\t// Curve sequence\n\t\tder.readSequence();\n\t\tcurve.a = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.OctetString, true));\n\t\tcurve.b = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.OctetString, true));\n\t\tif (der.peek() === asn1.Ber.BitString)\n\t\t\tcurve.s = der.readString(asn1.Ber.BitString, true);\n\n\t\t// Combined Gx and Gy\n\t\tcurve.G = der.readString(asn1.Ber.OctetString, true);\n\t\tassert.strictEqual(curve.G[0], 0x4,\n\t\t 'uncompressed G is required');\n\n\t\tcurve.n = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.Integer, true));\n\t\tcurve.h = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.Integer, true));\n\t\tassert.strictEqual(curve.h[0], 0x1, 'a cofactor=1 curve is ' +\n\t\t 'required');\n\n\t\tcurveNames = Object.keys(algs.curves);\n\t\tvar ks = Object.keys(curve);\n\t\tfor (j = 0; j < curveNames.length; ++j) {\n\t\t\tc = curveNames[j];\n\t\t\tcd = algs.curves[c];\n\t\t\tvar equal = true;\n\t\t\tfor (var i = 0; i < ks.length; ++i) {\n\t\t\t\tvar k = ks[i];\n\t\t\t\tif (cd[k] === undefined)\n\t\t\t\t\tcontinue;\n\t\t\t\tif (typeof (cd[k]) === 'object' &&\n\t\t\t\t cd[k].equals !== undefined) {\n\t\t\t\t\tif (!cd[k].equals(curve[k])) {\n\t\t\t\t\t\tequal = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else if (Buffer.isBuffer(cd[k])) {\n\t\t\t\t\tif (cd[k].toString('binary')\n\t\t\t\t\t !== curve[k].toString('binary')) {\n\t\t\t\t\t\tequal = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (cd[k] !== curve[k]) {\n\t\t\t\t\t\tequal = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (equal) {\n\t\t\t\tcurveName = c;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn (curveName);\n}\n\nfunction readPkcs8ECDSAPrivate(der) {\n\tvar curveName = readECDSACurve(der);\n\tassert.string(curveName, 'a known elliptic curve');\n\n\tder.readSequence(asn1.Ber.OctetString);\n\tder.readSequence();\n\n\tvar version = readMPInt(der, 'version');\n\tassert.equal(version[0], 1, 'unknown version of ECDSA key');\n\n\tvar d = der.readString(asn1.Ber.OctetString, true);\n\tvar Q;\n\n\tif (der.peek() == 0xa0) {\n\t\tder.readSequence(0xa0);\n\t\tder._offset += der.length;\n\t}\n\tif (der.peek() == 0xa1) {\n\t\tder.readSequence(0xa1);\n\t\tQ = der.readString(asn1.Ber.BitString, true);\n\t\tQ = utils.ecNormalize(Q);\n\t}\n\n\tif (Q === undefined) {\n\t\tvar pub = utils.publicFromPrivateECDSA(curveName, d);\n\t\tQ = pub.part.Q.data;\n\t}\n\n\tvar key = {\n\t\ttype: 'ecdsa',\n\t\tparts: [\n\t\t\t{ name: 'curve', data: Buffer.from(curveName) },\n\t\t\t{ name: 'Q', data: Q },\n\t\t\t{ name: 'd', data: d }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs8ECDSAPublic(der) {\n\tvar curveName = readECDSACurve(der);\n\tassert.string(curveName, 'a known elliptic curve');\n\n\tvar Q = der.readString(asn1.Ber.BitString, true);\n\tQ = utils.ecNormalize(Q);\n\n\tvar key = {\n\t\ttype: 'ecdsa',\n\t\tparts: [\n\t\t\t{ name: 'curve', data: Buffer.from(curveName) },\n\t\t\t{ name: 'Q', data: Q }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8EdDSAPublic(der) {\n\tif (der.peek() === 0x00)\n\t\tder.readByte();\n\n\tvar A = utils.readBitString(der);\n\n\tvar key = {\n\t\ttype: 'ed25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8X25519Public(der) {\n\tvar A = utils.readBitString(der);\n\n\tvar key = {\n\t\ttype: 'curve25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8EdDSAPrivate(der) {\n\tif (der.peek() === 0x00)\n\t\tder.readByte();\n\n\tder.readSequence(asn1.Ber.OctetString);\n\tvar k = der.readString(asn1.Ber.OctetString, true);\n\tk = utils.zeroPadToLength(k, 32);\n\n\tvar A;\n\tif (der.peek() === asn1.Ber.BitString) {\n\t\tA = utils.readBitString(der);\n\t\tA = utils.zeroPadToLength(A, 32);\n\t} else {\n\t\tA = utils.calculateED25519Public(k);\n\t}\n\n\tvar key = {\n\t\ttype: 'ed25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) },\n\t\t\t{ name: 'k', data: utils.zeroPadToLength(k, 32) }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs8X25519Private(der) {\n\tif (der.peek() === 0x00)\n\t\tder.readByte();\n\n\tder.readSequence(asn1.Ber.OctetString);\n\tvar k = der.readString(asn1.Ber.OctetString, true);\n\tk = utils.zeroPadToLength(k, 32);\n\n\tvar A = utils.calculateX25519Public(k);\n\n\tvar key = {\n\t\ttype: 'curve25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) },\n\t\t\t{ name: 'k', data: utils.zeroPadToLength(k, 32) }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction pkcs8ToBuffer(key) {\n\tvar der = new asn1.BerWriter();\n\twritePkcs8(der, key);\n\treturn (der.buffer);\n}\n\nfunction writePkcs8(der, key) {\n\tder.startSequence();\n\n\tif (PrivateKey.isPrivateKey(key)) {\n\t\tvar sillyInt = Buffer.from([0]);\n\t\tder.writeBuffer(sillyInt, asn1.Ber.Integer);\n\t}\n\n\tder.startSequence();\n\tswitch (key.type) {\n\tcase 'rsa':\n\t\tder.writeOID('1.2.840.113549.1.1.1');\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs8RSAPrivate(key, der);\n\t\telse\n\t\t\twritePkcs8RSAPublic(key, der);\n\t\tbreak;\n\tcase 'dsa':\n\t\tder.writeOID('1.2.840.10040.4.1');\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs8DSAPrivate(key, der);\n\t\telse\n\t\t\twritePkcs8DSAPublic(key, der);\n\t\tbreak;\n\tcase 'ecdsa':\n\t\tder.writeOID('1.2.840.10045.2.1');\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs8ECDSAPrivate(key, der);\n\t\telse\n\t\t\twritePkcs8ECDSAPublic(key, der);\n\t\tbreak;\n\tcase 'ed25519':\n\t\tder.writeOID('1.3.101.112');\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\tthrow (new Error('Ed25519 private keys in pkcs8 ' +\n\t\t\t 'format are not supported'));\n\t\twritePkcs8EdDSAPublic(key, der);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error('Unsupported key type: ' + key.type));\n\t}\n\n\tder.endSequence();\n}\n\nfunction writePkcs8RSAPrivate(key, der) {\n\tder.writeNull();\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.OctetString);\n\tder.startSequence();\n\n\tvar version = Buffer.from([0]);\n\tder.writeBuffer(version, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.n.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.e.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.d.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tif (!key.part.dmodp || !key.part.dmodq)\n\t\tutils.addRSAMissing(key);\n\tder.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer);\n\n\tder.endSequence();\n\tder.endSequence();\n}\n\nfunction writePkcs8RSAPublic(key, der) {\n\tder.writeNull();\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.BitString);\n\tder.writeByte(0x00);\n\n\tder.startSequence();\n\tder.writeBuffer(key.part.n.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.e.data, asn1.Ber.Integer);\n\tder.endSequence();\n\n\tder.endSequence();\n}\n\nfunction writePkcs8DSAPrivate(key, der) {\n\tder.startSequence();\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.g.data, asn1.Ber.Integer);\n\tder.endSequence();\n\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.OctetString);\n\tder.writeBuffer(key.part.x.data, asn1.Ber.Integer);\n\tder.endSequence();\n}\n\nfunction writePkcs8DSAPublic(key, der) {\n\tder.startSequence();\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.g.data, asn1.Ber.Integer);\n\tder.endSequence();\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.BitString);\n\tder.writeByte(0x00);\n\tder.writeBuffer(key.part.y.data, asn1.Ber.Integer);\n\tder.endSequence();\n}\n\nfunction writeECDSACurve(key, der) {\n\tvar curve = algs.curves[key.curve];\n\tif (curve.pkcs8oid) {\n\t\t/* This one has a name in pkcs#8, so just write the oid */\n\t\tder.writeOID(curve.pkcs8oid);\n\n\t} else {\n\t\t// ECParameters sequence\n\t\tder.startSequence();\n\n\t\tvar version = Buffer.from([1]);\n\t\tder.writeBuffer(version, asn1.Ber.Integer);\n\n\t\t// FieldID sequence\n\t\tder.startSequence();\n\t\tder.writeOID('1.2.840.10045.1.1'); // prime-field\n\t\tder.writeBuffer(curve.p, asn1.Ber.Integer);\n\t\tder.endSequence();\n\n\t\t// Curve sequence\n\t\tder.startSequence();\n\t\tvar a = curve.p;\n\t\tif (a[0] === 0x0)\n\t\t\ta = a.slice(1);\n\t\tder.writeBuffer(a, asn1.Ber.OctetString);\n\t\tder.writeBuffer(curve.b, asn1.Ber.OctetString);\n\t\tder.writeBuffer(curve.s, asn1.Ber.BitString);\n\t\tder.endSequence();\n\n\t\tder.writeBuffer(curve.G, asn1.Ber.OctetString);\n\t\tder.writeBuffer(curve.n, asn1.Ber.Integer);\n\t\tvar h = curve.h;\n\t\tif (!h) {\n\t\t\th = Buffer.from([1]);\n\t\t}\n\t\tder.writeBuffer(h, asn1.Ber.Integer);\n\n\t\t// ECParameters\n\t\tder.endSequence();\n\t}\n}\n\nfunction writePkcs8ECDSAPublic(key, der) {\n\twriteECDSACurve(key, der);\n\tder.endSequence();\n\n\tvar Q = utils.ecNormalize(key.part.Q.data, true);\n\tder.writeBuffer(Q, asn1.Ber.BitString);\n}\n\nfunction writePkcs8ECDSAPrivate(key, der) {\n\twriteECDSACurve(key, der);\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.OctetString);\n\tder.startSequence();\n\n\tvar version = Buffer.from([1]);\n\tder.writeBuffer(version, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.d.data, asn1.Ber.OctetString);\n\n\tder.startSequence(0xa1);\n\tvar Q = utils.ecNormalize(key.part.Q.data, true);\n\tder.writeBuffer(Q, asn1.Ber.BitString);\n\tder.endSequence();\n\n\tder.endSequence();\n\tder.endSequence();\n}\n\nfunction writePkcs8EdDSAPublic(key, der) {\n\tder.endSequence();\n\n\tutils.writeBitString(der, key.part.A.data);\n}\n\nfunction writePkcs8EdDSAPrivate(key, der) {\n\tder.endSequence();\n\n\tvar k = utils.mpNormalize(key.part.k.data, true);\n\tder.startSequence(asn1.Ber.OctetString);\n\tder.writeBuffer(k, asn1.Ber.OctetString);\n\tder.endSequence();\n}\n","// Copyright 2018 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar rfc4253 = require('./rfc4253');\nvar Key = require('../key');\nvar SSHBuffer = require('../ssh-buffer');\nvar crypto = require('crypto');\nvar PrivateKey = require('../private-key');\n\nvar errors = require('../errors');\n\n// https://tartarus.org/~simon/putty-prerel-snapshots/htmldoc/AppendixC.html\nfunction read(buf, options) {\n\tvar lines = buf.toString('ascii').split(/[\\r\\n]+/);\n\tvar found = false;\n\tvar parts;\n\tvar si = 0;\n\tvar formatVersion;\n\twhile (si < lines.length) {\n\t\tparts = splitHeader(lines[si++]);\n\t\tif (parts) {\n\t\t\tformatVersion = {\n\t\t\t\t'putty-user-key-file-2': 2,\n\t\t\t\t'putty-user-key-file-3': 3\n\t\t\t}[parts[0].toLowerCase()];\n\t\t\tif (formatVersion) {\n\t\t\t\tfound = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (!found) {\n\t\tthrow (new Error('No PuTTY format first line found'));\n\t}\n\tvar alg = parts[1];\n\n\tparts = splitHeader(lines[si++]);\n\tassert.equal(parts[0].toLowerCase(), 'encryption');\n\tvar encryption = parts[1];\n\n\tparts = splitHeader(lines[si++]);\n\tassert.equal(parts[0].toLowerCase(), 'comment');\n\tvar comment = parts[1];\n\n\tparts = splitHeader(lines[si++]);\n\tassert.equal(parts[0].toLowerCase(), 'public-lines');\n\tvar publicLines = parseInt(parts[1], 10);\n\tif (!isFinite(publicLines) || publicLines < 0 ||\n\t publicLines > lines.length) {\n\t\tthrow (new Error('Invalid public-lines count'));\n\t}\n\n\tvar publicBuf = Buffer.from(\n\t lines.slice(si, si + publicLines).join(''), 'base64');\n\tvar keyType = rfc4253.algToKeyType(alg);\n\tvar key = rfc4253.read(publicBuf);\n\tif (key.type !== keyType) {\n\t\tthrow (new Error('Outer key algorithm mismatch'));\n\t}\n\n\tsi += publicLines;\n\tif (lines[si]) {\n\t\tparts = splitHeader(lines[si++]);\n\t\tassert.equal(parts[0].toLowerCase(), 'private-lines');\n\t\tvar privateLines = parseInt(parts[1], 10);\n\t\tif (!isFinite(privateLines) || privateLines < 0 ||\n\t\t privateLines > lines.length) {\n\t\t\tthrow (new Error('Invalid private-lines count'));\n\t\t}\n\n\t\tvar privateBuf = Buffer.from(\n\t\t\tlines.slice(si, si + privateLines).join(''), 'base64');\n\n\t\tif (encryption !== 'none' && formatVersion === 3) {\n\t\t\tthrow new Error('Encrypted keys arenot supported for' +\n\t\t\t' PuTTY format version 3');\n\t\t}\n\n\t\tif (encryption === 'aes256-cbc') {\n\t\t\tif (!options.passphrase) {\n\t\t\t\tthrow (new errors.KeyEncryptedError(\n\t\t\t\t\toptions.filename, 'PEM'));\n\t\t\t}\n\n\t\t\tvar iv = Buffer.alloc(16, 0);\n\t\t\tvar decipher = crypto.createDecipheriv(\n\t\t\t\t'aes-256-cbc',\n\t\t\t\tderivePPK2EncryptionKey(options.passphrase),\n\t\t\t\tiv);\n\t\t\tdecipher.setAutoPadding(false);\n\t\t\tprivateBuf = Buffer.concat([\n\t\t\t\tdecipher.update(privateBuf), decipher.final()]);\n\t\t}\n\n\t\tkey = new PrivateKey(key);\n\t\tif (key.type !== keyType) {\n\t\t\tthrow (new Error('Outer key algorithm mismatch'));\n\t\t}\n\n\t\tvar sshbuf = new SSHBuffer({buffer: privateBuf});\n\t\tvar privateKeyParts;\n\t\tif (alg === 'ssh-dss') {\n\t\t\tprivateKeyParts = [ {\n\t\t\t\tname: 'x',\n\t\t\t\tdata: sshbuf.readBuffer()\n\t\t\t}];\n\t\t} else if (alg === 'ssh-rsa') {\n\t\t\tprivateKeyParts = [\n\t\t\t\t{ name: 'd', data: sshbuf.readBuffer() },\n\t\t\t\t{ name: 'p', data: sshbuf.readBuffer() },\n\t\t\t\t{ name: 'q', data: sshbuf.readBuffer() },\n\t\t\t\t{ name: 'iqmp', data: sshbuf.readBuffer() }\n\t\t\t];\n\t\t} else if (alg.match(/^ecdsa-sha2-nistp/)) {\n\t\t\tprivateKeyParts = [ {\n\t\t\t\tname: 'd', data: sshbuf.readBuffer()\n\t\t\t} ];\n\t\t} else if (alg === 'ssh-ed25519') {\n\t\t\tprivateKeyParts = [ {\n\t\t\t\tname: 'k', data: sshbuf.readBuffer()\n\t\t\t} ];\n\t\t} else {\n\t\t\tthrow new Error('Unsupported PPK key type: ' + alg);\n\t\t}\n\n\t\tkey = new PrivateKey({\n\t\t\ttype: key.type,\n\t\t\tparts: key.parts.concat(privateKeyParts)\n\t\t});\n\t}\n\n\tkey.comment = comment;\n\treturn (key);\n}\n\nfunction derivePPK2EncryptionKey(passphrase) {\n\tvar hash1 = crypto.createHash('sha1').update(Buffer.concat([\n\t\tBuffer.from([0, 0, 0, 0]),\n\t\tBuffer.from(passphrase)\n\t])).digest();\n\tvar hash2 = crypto.createHash('sha1').update(Buffer.concat([\n\t\tBuffer.from([0, 0, 0, 1]),\n\t\tBuffer.from(passphrase)\n\t])).digest();\n\treturn (Buffer.concat([hash1, hash2]).slice(0, 32));\n}\n\nfunction splitHeader(line) {\n\tvar idx = line.indexOf(':');\n\tif (idx === -1)\n\t\treturn (null);\n\tvar header = line.slice(0, idx);\n\t++idx;\n\twhile (line[idx] === ' ')\n\t\t++idx;\n\tvar rest = line.slice(idx);\n\treturn ([header, rest]);\n}\n\nfunction write(key, options) {\n\tassert.object(key);\n\tif (!Key.isKey(key))\n\t\tthrow (new Error('Must be a public key'));\n\n\tvar alg = rfc4253.keyTypeToAlg(key);\n\tvar buf = rfc4253.write(key);\n\tvar comment = key.comment || '';\n\n\tvar b64 = buf.toString('base64');\n\tvar lines = wrap(b64, 64);\n\n\tlines.unshift('Public-Lines: ' + lines.length);\n\tlines.unshift('Comment: ' + comment);\n\tlines.unshift('Encryption: none');\n\tlines.unshift('PuTTY-User-Key-File-2: ' + alg);\n\n\treturn (Buffer.from(lines.join('\\n') + '\\n'));\n}\n\nfunction wrap(txt, len) {\n\tvar lines = [];\n\tvar pos = 0;\n\twhile (pos < txt.length) {\n\t\tlines.push(txt.slice(pos, pos + 64));\n\t\tpos += 64;\n\t}\n\treturn (lines);\n}\n","// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tread: read.bind(undefined, false, undefined),\n\treadType: read.bind(undefined, false),\n\twrite: write,\n\t/* semi-private api, used by sshpk-agent */\n\treadPartial: read.bind(undefined, true),\n\n\t/* shared with ssh format */\n\treadInternal: read,\n\tkeyTypeToAlg: keyTypeToAlg,\n\talgToKeyType: algToKeyType\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar SSHBuffer = require('../ssh-buffer');\n\nfunction algToKeyType(alg) {\n\tassert.string(alg);\n\tif (alg === 'ssh-dss')\n\t\treturn ('dsa');\n\telse if (alg === 'ssh-rsa')\n\t\treturn ('rsa');\n\telse if (alg === 'ssh-ed25519')\n\t\treturn ('ed25519');\n\telse if (alg === 'ssh-curve25519')\n\t\treturn ('curve25519');\n\telse if (alg.match(/^ecdsa-sha2-/))\n\t\treturn ('ecdsa');\n\telse\n\t\tthrow (new Error('Unknown algorithm ' + alg));\n}\n\nfunction keyTypeToAlg(key) {\n\tassert.object(key);\n\tif (key.type === 'dsa')\n\t\treturn ('ssh-dss');\n\telse if (key.type === 'rsa')\n\t\treturn ('ssh-rsa');\n\telse if (key.type === 'ed25519')\n\t\treturn ('ssh-ed25519');\n\telse if (key.type === 'curve25519')\n\t\treturn ('ssh-curve25519');\n\telse if (key.type === 'ecdsa')\n\t\treturn ('ecdsa-sha2-' + key.part.curve.data.toString());\n\telse\n\t\tthrow (new Error('Unknown key type ' + key.type));\n}\n\nfunction read(partial, type, buf, options) {\n\tif (typeof (buf) === 'string')\n\t\tbuf = Buffer.from(buf);\n\tassert.buffer(buf, 'buf');\n\n\tvar key = {};\n\n\tvar parts = key.parts = [];\n\tvar sshbuf = new SSHBuffer({buffer: buf});\n\n\tvar alg = sshbuf.readString();\n\tassert.ok(!sshbuf.atEnd(), 'key must have at least one part');\n\n\tkey.type = algToKeyType(alg);\n\n\tvar partCount = algs.info[key.type].parts.length;\n\tif (type && type === 'private')\n\t\tpartCount = algs.privInfo[key.type].parts.length;\n\n\twhile (!sshbuf.atEnd() && parts.length < partCount)\n\t\tparts.push(sshbuf.readPart());\n\twhile (!partial && !sshbuf.atEnd())\n\t\tparts.push(sshbuf.readPart());\n\n\tassert.ok(parts.length >= 1,\n\t 'key must have at least one part');\n\tassert.ok(partial || sshbuf.atEnd(),\n\t 'leftover bytes at end of key');\n\n\tvar Constructor = Key;\n\tvar algInfo = algs.info[key.type];\n\tif (type === 'private' || algInfo.parts.length !== parts.length) {\n\t\talgInfo = algs.privInfo[key.type];\n\t\tConstructor = PrivateKey;\n\t}\n\tassert.strictEqual(algInfo.parts.length, parts.length);\n\n\tif (key.type === 'ecdsa') {\n\t\tvar res = /^ecdsa-sha2-(.+)$/.exec(alg);\n\t\tassert.ok(res !== null);\n\t\tassert.strictEqual(res[1], parts[0].data.toString());\n\t}\n\n\tvar normalized = true;\n\tfor (var i = 0; i < algInfo.parts.length; ++i) {\n\t\tvar p = parts[i];\n\t\tp.name = algInfo.parts[i];\n\t\t/*\n\t\t * OpenSSH stores ed25519 \"private\" keys as seed + public key\n\t\t * concat'd together (k followed by A). We want to keep them\n\t\t * separate for other formats that don't do this.\n\t\t */\n\t\tif (key.type === 'ed25519' && p.name === 'k')\n\t\t\tp.data = p.data.slice(0, 32);\n\n\t\tif (p.name !== 'curve' && algInfo.normalize !== false) {\n\t\t\tvar nd;\n\t\t\tif (key.type === 'ed25519') {\n\t\t\t\tnd = utils.zeroPadToLength(p.data, 32);\n\t\t\t} else {\n\t\t\t\tnd = utils.mpNormalize(p.data);\n\t\t\t}\n\t\t\tif (nd.toString('binary') !==\n\t\t\t p.data.toString('binary')) {\n\t\t\t\tp.data = nd;\n\t\t\t\tnormalized = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (normalized)\n\t\tkey._rfc4253Cache = sshbuf.toBuffer();\n\n\tif (partial && typeof (partial) === 'object') {\n\t\tpartial.remainder = sshbuf.remainder();\n\t\tpartial.consumed = sshbuf._offset;\n\t}\n\n\treturn (new Constructor(key));\n}\n\nfunction write(key, options) {\n\tassert.object(key);\n\n\tvar alg = keyTypeToAlg(key);\n\tvar i;\n\n\tvar algInfo = algs.info[key.type];\n\tif (PrivateKey.isPrivateKey(key))\n\t\talgInfo = algs.privInfo[key.type];\n\tvar parts = algInfo.parts;\n\n\tvar buf = new SSHBuffer({});\n\n\tbuf.writeString(alg);\n\n\tfor (i = 0; i < parts.length; ++i) {\n\t\tvar data = key.part[parts[i]].data;\n\t\tif (algInfo.normalize !== false) {\n\t\t\tif (key.type === 'ed25519')\n\t\t\t\tdata = utils.zeroPadToLength(data, 32);\n\t\t\telse\n\t\t\t\tdata = utils.mpNormalize(data);\n\t\t}\n\t\tif (key.type === 'ed25519' && parts[i] === 'k')\n\t\t\tdata = Buffer.concat([data, key.part.A.data]);\n\t\tbuf.writeBuffer(data);\n\t}\n\n\treturn (buf.toBuffer());\n}\n","// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\treadSSHPrivate: readSSHPrivate,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar crypto = require('crypto');\n\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\nvar rfc4253 = require('./rfc4253');\nvar SSHBuffer = require('../ssh-buffer');\nvar errors = require('../errors');\n\nvar bcrypt;\n\nfunction read(buf, options) {\n\treturn (pem.read(buf, options));\n}\n\nvar MAGIC = 'openssh-key-v1';\n\nfunction readSSHPrivate(type, buf, options) {\n\tbuf = new SSHBuffer({buffer: buf});\n\n\tvar magic = buf.readCString();\n\tassert.strictEqual(magic, MAGIC, 'bad magic string');\n\n\tvar cipher = buf.readString();\n\tvar kdf = buf.readString();\n\tvar kdfOpts = buf.readBuffer();\n\n\tvar nkeys = buf.readInt();\n\tif (nkeys !== 1) {\n\t\tthrow (new Error('OpenSSH-format key file contains ' +\n\t\t 'multiple keys: this is unsupported.'));\n\t}\n\n\tvar pubKey = buf.readBuffer();\n\n\tif (type === 'public') {\n\t\tassert.ok(buf.atEnd(), 'excess bytes left after key');\n\t\treturn (rfc4253.read(pubKey));\n\t}\n\n\tvar privKeyBlob = buf.readBuffer();\n\tassert.ok(buf.atEnd(), 'excess bytes left after key');\n\n\tvar kdfOptsBuf = new SSHBuffer({ buffer: kdfOpts });\n\tswitch (kdf) {\n\tcase 'none':\n\t\tif (cipher !== 'none') {\n\t\t\tthrow (new Error('OpenSSH-format key uses KDF \"none\" ' +\n\t\t\t 'but specifies a cipher other than \"none\"'));\n\t\t}\n\t\tbreak;\n\tcase 'bcrypt':\n\t\tvar salt = kdfOptsBuf.readBuffer();\n\t\tvar rounds = kdfOptsBuf.readInt();\n\t\tvar cinf = utils.opensshCipherInfo(cipher);\n\t\tif (bcrypt === undefined) {\n\t\t\tbcrypt = require('bcrypt-pbkdf');\n\t\t}\n\n\t\tif (typeof (options.passphrase) === 'string') {\n\t\t\toptions.passphrase = Buffer.from(options.passphrase,\n\t\t\t 'utf-8');\n\t\t}\n\t\tif (!Buffer.isBuffer(options.passphrase)) {\n\t\t\tthrow (new errors.KeyEncryptedError(\n\t\t\t options.filename, 'OpenSSH'));\n\t\t}\n\n\t\tvar pass = new Uint8Array(options.passphrase);\n\t\tvar salti = new Uint8Array(salt);\n\t\t/* Use the pbkdf to derive both the key and the IV. */\n\t\tvar out = new Uint8Array(cinf.keySize + cinf.blockSize);\n\t\tvar res = bcrypt.pbkdf(pass, pass.length, salti, salti.length,\n\t\t out, out.length, rounds);\n\t\tif (res !== 0) {\n\t\t\tthrow (new Error('bcrypt_pbkdf function returned ' +\n\t\t\t 'failure, parameters invalid'));\n\t\t}\n\t\tout = Buffer.from(out);\n\t\tvar ckey = out.slice(0, cinf.keySize);\n\t\tvar iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize);\n\t\tvar cipherStream = crypto.createDecipheriv(cinf.opensslName,\n\t\t ckey, iv);\n\t\tcipherStream.setAutoPadding(false);\n\t\tvar chunk, chunks = [];\n\t\tcipherStream.once('error', function (e) {\n\t\t\tif (e.toString().indexOf('bad decrypt') !== -1) {\n\t\t\t\tthrow (new Error('Incorrect passphrase ' +\n\t\t\t\t 'supplied, could not decrypt key'));\n\t\t\t}\n\t\t\tthrow (e);\n\t\t});\n\t\tcipherStream.write(privKeyBlob);\n\t\tcipherStream.end();\n\t\twhile ((chunk = cipherStream.read()) !== null)\n\t\t\tchunks.push(chunk);\n\t\tprivKeyBlob = Buffer.concat(chunks);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error(\n\t\t 'OpenSSH-format key uses unknown KDF \"' + kdf + '\"'));\n\t}\n\n\tbuf = new SSHBuffer({buffer: privKeyBlob});\n\n\tvar checkInt1 = buf.readInt();\n\tvar checkInt2 = buf.readInt();\n\tif (checkInt1 !== checkInt2) {\n\t\tthrow (new Error('Incorrect passphrase supplied, could not ' +\n\t\t 'decrypt key'));\n\t}\n\n\tvar ret = {};\n\tvar key = rfc4253.readInternal(ret, 'private', buf.remainder());\n\n\tbuf.skip(ret.consumed);\n\n\tvar comment = buf.readString();\n\tkey.comment = comment;\n\n\treturn (key);\n}\n\nfunction write(key, options) {\n\tvar pubKey;\n\tif (PrivateKey.isPrivateKey(key))\n\t\tpubKey = key.toPublic();\n\telse\n\t\tpubKey = key;\n\n\tvar cipher = 'none';\n\tvar kdf = 'none';\n\tvar kdfopts = Buffer.alloc(0);\n\tvar cinf = { blockSize: 8 };\n\tvar passphrase;\n\tif (options !== undefined) {\n\t\tpassphrase = options.passphrase;\n\t\tif (typeof (passphrase) === 'string')\n\t\t\tpassphrase = Buffer.from(passphrase, 'utf-8');\n\t\tif (passphrase !== undefined) {\n\t\t\tassert.buffer(passphrase, 'options.passphrase');\n\t\t\tassert.optionalString(options.cipher, 'options.cipher');\n\t\t\tcipher = options.cipher;\n\t\t\tif (cipher === undefined)\n\t\t\t\tcipher = 'aes128-ctr';\n\t\t\tcinf = utils.opensshCipherInfo(cipher);\n\t\t\tkdf = 'bcrypt';\n\t\t}\n\t}\n\n\tvar privBuf;\n\tif (PrivateKey.isPrivateKey(key)) {\n\t\tprivBuf = new SSHBuffer({});\n\t\tvar checkInt = crypto.randomBytes(4).readUInt32BE(0);\n\t\tprivBuf.writeInt(checkInt);\n\t\tprivBuf.writeInt(checkInt);\n\t\tprivBuf.write(key.toBuffer('rfc4253'));\n\t\tprivBuf.writeString(key.comment || '');\n\n\t\tvar n = 1;\n\t\twhile (privBuf._offset % cinf.blockSize !== 0)\n\t\t\tprivBuf.writeChar(n++);\n\t\tprivBuf = privBuf.toBuffer();\n\t}\n\n\tswitch (kdf) {\n\tcase 'none':\n\t\tbreak;\n\tcase 'bcrypt':\n\t\tvar salt = crypto.randomBytes(16);\n\t\tvar rounds = 16;\n\t\tvar kdfssh = new SSHBuffer({});\n\t\tkdfssh.writeBuffer(salt);\n\t\tkdfssh.writeInt(rounds);\n\t\tkdfopts = kdfssh.toBuffer();\n\n\t\tif (bcrypt === undefined) {\n\t\t\tbcrypt = require('bcrypt-pbkdf');\n\t\t}\n\t\tvar pass = new Uint8Array(passphrase);\n\t\tvar salti = new Uint8Array(salt);\n\t\t/* Use the pbkdf to derive both the key and the IV. */\n\t\tvar out = new Uint8Array(cinf.keySize + cinf.blockSize);\n\t\tvar res = bcrypt.pbkdf(pass, pass.length, salti, salti.length,\n\t\t out, out.length, rounds);\n\t\tif (res !== 0) {\n\t\t\tthrow (new Error('bcrypt_pbkdf function returned ' +\n\t\t\t 'failure, parameters invalid'));\n\t\t}\n\t\tout = Buffer.from(out);\n\t\tvar ckey = out.slice(0, cinf.keySize);\n\t\tvar iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize);\n\n\t\tvar cipherStream = crypto.createCipheriv(cinf.opensslName,\n\t\t ckey, iv);\n\t\tcipherStream.setAutoPadding(false);\n\t\tvar chunk, chunks = [];\n\t\tcipherStream.once('error', function (e) {\n\t\t\tthrow (e);\n\t\t});\n\t\tcipherStream.write(privBuf);\n\t\tcipherStream.end();\n\t\twhile ((chunk = cipherStream.read()) !== null)\n\t\t\tchunks.push(chunk);\n\t\tprivBuf = Buffer.concat(chunks);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error('Unsupported kdf ' + kdf));\n\t}\n\n\tvar buf = new SSHBuffer({});\n\n\tbuf.writeCString(MAGIC);\n\tbuf.writeString(cipher);\t/* cipher */\n\tbuf.writeString(kdf);\t\t/* kdf */\n\tbuf.writeBuffer(kdfopts);\t/* kdfoptions */\n\n\tbuf.writeInt(1);\t\t/* nkeys */\n\tbuf.writeBuffer(pubKey.toBuffer('rfc4253'));\n\n\tif (privBuf)\n\t\tbuf.writeBuffer(privBuf);\n\n\tbuf = buf.toBuffer();\n\n\tvar header;\n\tif (PrivateKey.isPrivateKey(key))\n\t\theader = 'OPENSSH PRIVATE KEY';\n\telse\n\t\theader = 'OPENSSH PUBLIC KEY';\n\n\tvar tmp = buf.toString('base64');\n\tvar len = tmp.length + (tmp.length / 70) +\n\t 18 + 16 + header.length*2 + 10;\n\tbuf = Buffer.alloc(len);\n\tvar o = 0;\n\to += buf.write('-----BEGIN ' + header + '-----\\n', o);\n\tfor (var i = 0; i < tmp.length; ) {\n\t\tvar limit = i + 70;\n\t\tif (limit > tmp.length)\n\t\t\tlimit = tmp.length;\n\t\to += buf.write(tmp.slice(i, limit), o);\n\t\tbuf[o++] = 10;\n\t\ti = limit;\n\t}\n\to += buf.write('-----END ' + header + '-----\\n', o);\n\n\treturn (buf.slice(0, o));\n}\n","// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar rfc4253 = require('./rfc4253');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\n\nvar sshpriv = require('./ssh-private');\n\n/*JSSTYLED*/\nvar SSHKEY_RE = /^([a-z0-9-]+)[ \\t]+([a-zA-Z0-9+\\/]+[=]*)([ \\t]+([^ \\t][^\\n]*[\\n]*)?)?$/;\n/*JSSTYLED*/\nvar SSHKEY_RE2 = /^([a-z0-9-]+)[ \\t\\n]+([a-zA-Z0-9+\\/][a-zA-Z0-9+\\/ \\t\\n=]*)([^a-zA-Z0-9+\\/ \\t\\n=].*)?$/;\n\nfunction read(buf, options) {\n\tif (typeof (buf) !== 'string') {\n\t\tassert.buffer(buf, 'buf');\n\t\tbuf = buf.toString('ascii');\n\t}\n\n\tvar trimmed = buf.trim().replace(/[\\\\\\r]/g, '');\n\tvar m = trimmed.match(SSHKEY_RE);\n\tif (!m)\n\t\tm = trimmed.match(SSHKEY_RE2);\n\tassert.ok(m, 'key must match regex');\n\n\tvar type = rfc4253.algToKeyType(m[1]);\n\tvar kbuf = Buffer.from(m[2], 'base64');\n\n\t/*\n\t * This is a bit tricky. If we managed to parse the key and locate the\n\t * key comment with the regex, then do a non-partial read and assert\n\t * that we have consumed all bytes. If we couldn't locate the key\n\t * comment, though, there may be whitespace shenanigans going on that\n\t * have conjoined the comment to the rest of the key. We do a partial\n\t * read in this case to try to make the best out of a sorry situation.\n\t */\n\tvar key;\n\tvar ret = {};\n\tif (m[4]) {\n\t\ttry {\n\t\t\tkey = rfc4253.read(kbuf);\n\n\t\t} catch (e) {\n\t\t\tm = trimmed.match(SSHKEY_RE2);\n\t\t\tassert.ok(m, 'key must match regex');\n\t\t\tkbuf = Buffer.from(m[2], 'base64');\n\t\t\tkey = rfc4253.readInternal(ret, 'public', kbuf);\n\t\t}\n\t} else {\n\t\tkey = rfc4253.readInternal(ret, 'public', kbuf);\n\t}\n\n\tassert.strictEqual(type, key.type);\n\n\tif (m[4] && m[4].length > 0) {\n\t\tkey.comment = m[4];\n\n\t} else if (ret.consumed) {\n\t\t/*\n\t\t * Now the magic: trying to recover the key comment when it's\n\t\t * gotten conjoined to the key or otherwise shenanigan'd.\n\t\t *\n\t\t * Work out how much base64 we used, then drop all non-base64\n\t\t * chars from the beginning up to this point in the the string.\n\t\t * Then offset in this and try to make up for missing = chars.\n\t\t */\n\t\tvar data = m[2] + (m[3] ? m[3] : '');\n\t\tvar realOffset = Math.ceil(ret.consumed / 3) * 4;\n\t\tdata = data.slice(0, realOffset - 2). /*JSSTYLED*/\n\t\t replace(/[^a-zA-Z0-9+\\/=]/g, '') +\n\t\t data.slice(realOffset - 2);\n\n\t\tvar padding = ret.consumed % 3;\n\t\tif (padding > 0 &&\n\t\t data.slice(realOffset - 1, realOffset) !== '=')\n\t\t\trealOffset--;\n\t\twhile (data.slice(realOffset, realOffset + 1) === '=')\n\t\t\trealOffset++;\n\n\t\t/* Finally, grab what we think is the comment & clean it up. */\n\t\tvar trailer = data.slice(realOffset);\n\t\ttrailer = trailer.replace(/[\\r\\n]/g, ' ').\n\t\t replace(/^\\s+/, '');\n\t\tif (trailer.match(/^[a-zA-Z0-9]/))\n\t\t\tkey.comment = trailer;\n\t}\n\n\treturn (key);\n}\n\nfunction write(key, options) {\n\tassert.object(key);\n\tif (!Key.isKey(key))\n\t\tthrow (new Error('Must be a public key'));\n\n\tvar parts = [];\n\tvar alg = rfc4253.keyTypeToAlg(key);\n\tparts.push(alg);\n\n\tvar buf = rfc4253.write(key);\n\tparts.push(buf.toString('base64'));\n\n\tif (key.comment)\n\t\tparts.push(key.comment);\n\n\treturn (Buffer.from(parts.join(' ')));\n}\n","// Copyright 2016 Joyent, Inc.\n\nvar x509 = require('./x509');\n\nmodule.exports = {\n\tread: read,\n\tverify: x509.verify,\n\tsign: x509.sign,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\nvar Identity = require('../identity');\nvar Signature = require('../signature');\nvar Certificate = require('../certificate');\n\nfunction read(buf, options) {\n\tif (typeof (buf) !== 'string') {\n\t\tassert.buffer(buf, 'buf');\n\t\tbuf = buf.toString('ascii');\n\t}\n\n\tvar lines = buf.trim().split(/[\\r\\n]+/g);\n\n\tvar m;\n\tvar si = -1;\n\twhile (!m && si < lines.length) {\n\t\tm = lines[++si].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*BEGIN CERTIFICATE[ ]*[-]+/);\n\t}\n\tassert.ok(m, 'invalid PEM header');\n\n\tvar m2;\n\tvar ei = lines.length;\n\twhile (!m2 && ei > 0) {\n\t\tm2 = lines[--ei].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*END CERTIFICATE[ ]*[-]+/);\n\t}\n\tassert.ok(m2, 'invalid PEM footer');\n\n\tlines = lines.slice(si, ei + 1);\n\n\tvar headers = {};\n\twhile (true) {\n\t\tlines = lines.slice(1);\n\t\tm = lines[0].match(/*JSSTYLED*/\n\t\t /^([A-Za-z0-9-]+): (.+)$/);\n\t\tif (!m)\n\t\t\tbreak;\n\t\theaders[m[1].toLowerCase()] = m[2];\n\t}\n\n\t/* Chop off the first and last lines */\n\tlines = lines.slice(0, -1).join('');\n\tbuf = Buffer.from(lines, 'base64');\n\n\treturn (x509.read(buf, options));\n}\n\nfunction write(cert, options) {\n\tvar dbuf = x509.write(cert, options);\n\n\tvar header = 'CERTIFICATE';\n\tvar tmp = dbuf.toString('base64');\n\tvar len = tmp.length + (tmp.length / 64) +\n\t 18 + 16 + header.length*2 + 10;\n\tvar buf = Buffer.alloc(len);\n\tvar o = 0;\n\to += buf.write('-----BEGIN ' + header + '-----\\n', o);\n\tfor (var i = 0; i < tmp.length; ) {\n\t\tvar limit = i + 64;\n\t\tif (limit > tmp.length)\n\t\t\tlimit = tmp.length;\n\t\to += buf.write(tmp.slice(i, limit), o);\n\t\tbuf[o++] = 10;\n\t\ti = limit;\n\t}\n\to += buf.write('-----END ' + header + '-----\\n', o);\n\n\treturn (buf.slice(0, o));\n}\n","// Copyright 2017 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\tverify: verify,\n\tsign: sign,\n\tsignAsync: signAsync,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\nvar Identity = require('../identity');\nvar Signature = require('../signature');\nvar Certificate = require('../certificate');\nvar pkcs8 = require('./pkcs8');\n\n/*\n * This file is based on RFC5280 (X.509).\n */\n\n/* Helper to read in a single mpint */\nfunction readMPInt(der, nm) {\n\tassert.strictEqual(der.peek(), asn1.Ber.Integer,\n\t nm + ' is not an Integer');\n\treturn (utils.mpNormalize(der.readString(asn1.Ber.Integer, true)));\n}\n\nfunction verify(cert, key) {\n\tvar sig = cert.signatures.x509;\n\tassert.object(sig, 'x509 signature');\n\n\tvar algParts = sig.algo.split('-');\n\tif (algParts[0] !== key.type)\n\t\treturn (false);\n\n\tvar blob = sig.cache;\n\tif (blob === undefined) {\n\t\tvar der = new asn1.BerWriter();\n\t\twriteTBSCert(cert, der);\n\t\tblob = der.buffer;\n\t}\n\n\tvar verifier = key.createVerify(algParts[1]);\n\tverifier.write(blob);\n\treturn (verifier.verify(sig.signature));\n}\n\nfunction Local(i) {\n\treturn (asn1.Ber.Context | asn1.Ber.Constructor | i);\n}\n\nfunction Context(i) {\n\treturn (asn1.Ber.Context | i);\n}\n\nvar SIGN_ALGS = {\n\t'rsa-md5': '1.2.840.113549.1.1.4',\n\t'rsa-sha1': '1.2.840.113549.1.1.5',\n\t'rsa-sha256': '1.2.840.113549.1.1.11',\n\t'rsa-sha384': '1.2.840.113549.1.1.12',\n\t'rsa-sha512': '1.2.840.113549.1.1.13',\n\t'dsa-sha1': '1.2.840.10040.4.3',\n\t'dsa-sha256': '2.16.840.1.101.3.4.3.2',\n\t'ecdsa-sha1': '1.2.840.10045.4.1',\n\t'ecdsa-sha256': '1.2.840.10045.4.3.2',\n\t'ecdsa-sha384': '1.2.840.10045.4.3.3',\n\t'ecdsa-sha512': '1.2.840.10045.4.3.4',\n\t'ed25519-sha512': '1.3.101.112'\n};\nObject.keys(SIGN_ALGS).forEach(function (k) {\n\tSIGN_ALGS[SIGN_ALGS[k]] = k;\n});\nSIGN_ALGS['1.3.14.3.2.3'] = 'rsa-md5';\nSIGN_ALGS['1.3.14.3.2.29'] = 'rsa-sha1';\n\nvar EXTS = {\n\t'issuerKeyId': '2.5.29.35',\n\t'altName': '2.5.29.17',\n\t'basicConstraints': '2.5.29.19',\n\t'keyUsage': '2.5.29.15',\n\t'extKeyUsage': '2.5.29.37'\n};\n\nfunction read(buf, options) {\n\tif (typeof (buf) === 'string') {\n\t\tbuf = Buffer.from(buf, 'binary');\n\t}\n\tassert.buffer(buf, 'buf');\n\n\tvar der = new asn1.BerReader(buf);\n\n\tder.readSequence();\n\tif (Math.abs(der.length - der.remain) > 1) {\n\t\tthrow (new Error('DER sequence does not contain whole byte ' +\n\t\t 'stream'));\n\t}\n\n\tvar tbsStart = der.offset;\n\tder.readSequence();\n\tvar sigOffset = der.offset + der.length;\n\tvar tbsEnd = sigOffset;\n\n\tif (der.peek() === Local(0)) {\n\t\tder.readSequence(Local(0));\n\t\tvar version = der.readInt();\n\t\tassert.ok(version <= 3,\n\t\t 'only x.509 versions up to v3 supported');\n\t}\n\n\tvar cert = {};\n\tcert.signatures = {};\n\tvar sig = (cert.signatures.x509 = {});\n\tsig.extras = {};\n\n\tcert.serial = readMPInt(der, 'serial');\n\n\tder.readSequence();\n\tvar after = der.offset + der.length;\n\tvar certAlgOid = der.readOID();\n\tvar certAlg = SIGN_ALGS[certAlgOid];\n\tif (certAlg === undefined)\n\t\tthrow (new Error('unknown signature algorithm ' + certAlgOid));\n\n\tder._offset = after;\n\tcert.issuer = Identity.parseAsn1(der);\n\n\tder.readSequence();\n\tcert.validFrom = readDate(der);\n\tcert.validUntil = readDate(der);\n\n\tcert.subjects = [Identity.parseAsn1(der)];\n\n\tder.readSequence();\n\tafter = der.offset + der.length;\n\tcert.subjectKey = pkcs8.readPkcs8(undefined, 'public', der);\n\tder._offset = after;\n\n\t/* issuerUniqueID */\n\tif (der.peek() === Local(1)) {\n\t\tder.readSequence(Local(1));\n\t\tsig.extras.issuerUniqueID =\n\t\t buf.slice(der.offset, der.offset + der.length);\n\t\tder._offset += der.length;\n\t}\n\n\t/* subjectUniqueID */\n\tif (der.peek() === Local(2)) {\n\t\tder.readSequence(Local(2));\n\t\tsig.extras.subjectUniqueID =\n\t\t buf.slice(der.offset, der.offset + der.length);\n\t\tder._offset += der.length;\n\t}\n\n\t/* extensions */\n\tif (der.peek() === Local(3)) {\n\t\tder.readSequence(Local(3));\n\t\tvar extEnd = der.offset + der.length;\n\t\tder.readSequence();\n\n\t\twhile (der.offset < extEnd)\n\t\t\treadExtension(cert, buf, der);\n\n\t\tassert.strictEqual(der.offset, extEnd);\n\t}\n\n\tassert.strictEqual(der.offset, sigOffset);\n\n\tder.readSequence();\n\tafter = der.offset + der.length;\n\tvar sigAlgOid = der.readOID();\n\tvar sigAlg = SIGN_ALGS[sigAlgOid];\n\tif (sigAlg === undefined)\n\t\tthrow (new Error('unknown signature algorithm ' + sigAlgOid));\n\tder._offset = after;\n\n\tvar sigData = der.readString(asn1.Ber.BitString, true);\n\tif (sigData[0] === 0)\n\t\tsigData = sigData.slice(1);\n\tvar algParts = sigAlg.split('-');\n\n\tsig.signature = Signature.parse(sigData, algParts[0], 'asn1');\n\tsig.signature.hashAlgorithm = algParts[1];\n\tsig.algo = sigAlg;\n\tsig.cache = buf.slice(tbsStart, tbsEnd);\n\n\treturn (new Certificate(cert));\n}\n\nfunction readDate(der) {\n\tif (der.peek() === asn1.Ber.UTCTime) {\n\t\treturn (utcTimeToDate(der.readString(asn1.Ber.UTCTime)));\n\t} else if (der.peek() === asn1.Ber.GeneralizedTime) {\n\t\treturn (gTimeToDate(der.readString(asn1.Ber.GeneralizedTime)));\n\t} else {\n\t\tthrow (new Error('Unsupported date format'));\n\t}\n}\n\nfunction writeDate(der, date) {\n\tif (date.getUTCFullYear() >= 2050 || date.getUTCFullYear() < 1950) {\n\t\tder.writeString(dateToGTime(date), asn1.Ber.GeneralizedTime);\n\t} else {\n\t\tder.writeString(dateToUTCTime(date), asn1.Ber.UTCTime);\n\t}\n}\n\n/* RFC5280, section 4.2.1.6 (GeneralName type) */\nvar ALTNAME = {\n\tOtherName: Local(0),\n\tRFC822Name: Context(1),\n\tDNSName: Context(2),\n\tX400Address: Local(3),\n\tDirectoryName: Local(4),\n\tEDIPartyName: Local(5),\n\tURI: Context(6),\n\tIPAddress: Context(7),\n\tOID: Context(8)\n};\n\n/* RFC5280, section 4.2.1.12 (KeyPurposeId) */\nvar EXTPURPOSE = {\n\t'serverAuth': '1.3.6.1.5.5.7.3.1',\n\t'clientAuth': '1.3.6.1.5.5.7.3.2',\n\t'codeSigning': '1.3.6.1.5.5.7.3.3',\n\n\t/* See https://github.com/joyent/oid-docs/blob/master/root.md */\n\t'joyentDocker': '1.3.6.1.4.1.38678.1.4.1',\n\t'joyentCmon': '1.3.6.1.4.1.38678.1.4.2'\n};\nvar EXTPURPOSE_REV = {};\nObject.keys(EXTPURPOSE).forEach(function (k) {\n\tEXTPURPOSE_REV[EXTPURPOSE[k]] = k;\n});\n\nvar KEYUSEBITS = [\n\t'signature', 'identity', 'keyEncryption',\n\t'encryption', 'keyAgreement', 'ca', 'crl'\n];\n\nfunction readExtension(cert, buf, der) {\n\tder.readSequence();\n\tvar after = der.offset + der.length;\n\tvar extId = der.readOID();\n\tvar id;\n\tvar sig = cert.signatures.x509;\n\tif (!sig.extras.exts)\n\t\tsig.extras.exts = [];\n\n\tvar critical;\n\tif (der.peek() === asn1.Ber.Boolean)\n\t\tcritical = der.readBoolean();\n\n\tswitch (extId) {\n\tcase (EXTS.basicConstraints):\n\t\tder.readSequence(asn1.Ber.OctetString);\n\t\tder.readSequence();\n\t\tvar bcEnd = der.offset + der.length;\n\t\tvar ca = false;\n\t\tif (der.peek() === asn1.Ber.Boolean)\n\t\t\tca = der.readBoolean();\n\t\tif (cert.purposes === undefined)\n\t\t\tcert.purposes = [];\n\t\tif (ca === true)\n\t\t\tcert.purposes.push('ca');\n\t\tvar bc = { oid: extId, critical: critical };\n\t\tif (der.offset < bcEnd && der.peek() === asn1.Ber.Integer)\n\t\t\tbc.pathLen = der.readInt();\n\t\tsig.extras.exts.push(bc);\n\t\tbreak;\n\tcase (EXTS.extKeyUsage):\n\t\tder.readSequence(asn1.Ber.OctetString);\n\t\tder.readSequence();\n\t\tif (cert.purposes === undefined)\n\t\t\tcert.purposes = [];\n\t\tvar ekEnd = der.offset + der.length;\n\t\twhile (der.offset < ekEnd) {\n\t\t\tvar oid = der.readOID();\n\t\t\tcert.purposes.push(EXTPURPOSE_REV[oid] || oid);\n\t\t}\n\t\t/*\n\t\t * This is a bit of a hack: in the case where we have a cert\n\t\t * that's only allowed to do serverAuth or clientAuth (and not\n\t\t * the other), we want to make sure all our Subjects are of\n\t\t * the right type. But we already parsed our Subjects and\n\t\t * decided if they were hosts or users earlier (since it appears\n\t\t * first in the cert).\n\t\t *\n\t\t * So we go through and mutate them into the right kind here if\n\t\t * it doesn't match. This might not be hugely beneficial, as it\n\t\t * seems that single-purpose certs are not often seen in the\n\t\t * wild.\n\t\t */\n\t\tif (cert.purposes.indexOf('serverAuth') !== -1 &&\n\t\t cert.purposes.indexOf('clientAuth') === -1) {\n\t\t\tcert.subjects.forEach(function (ide) {\n\t\t\t\tif (ide.type !== 'host') {\n\t\t\t\t\tide.type = 'host';\n\t\t\t\t\tide.hostname = ide.uid ||\n\t\t\t\t\t ide.email ||\n\t\t\t\t\t ide.components[0].value;\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (cert.purposes.indexOf('clientAuth') !== -1 &&\n\t\t cert.purposes.indexOf('serverAuth') === -1) {\n\t\t\tcert.subjects.forEach(function (ide) {\n\t\t\t\tif (ide.type !== 'user') {\n\t\t\t\t\tide.type = 'user';\n\t\t\t\t\tide.uid = ide.hostname ||\n\t\t\t\t\t ide.email ||\n\t\t\t\t\t ide.components[0].value;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tsig.extras.exts.push({ oid: extId, critical: critical });\n\t\tbreak;\n\tcase (EXTS.keyUsage):\n\t\tder.readSequence(asn1.Ber.OctetString);\n\t\tvar bits = der.readString(asn1.Ber.BitString, true);\n\t\tvar setBits = readBitField(bits, KEYUSEBITS);\n\t\tsetBits.forEach(function (bit) {\n\t\t\tif (cert.purposes === undefined)\n\t\t\t\tcert.purposes = [];\n\t\t\tif (cert.purposes.indexOf(bit) === -1)\n\t\t\t\tcert.purposes.push(bit);\n\t\t});\n\t\tsig.extras.exts.push({ oid: extId, critical: critical,\n\t\t bits: bits });\n\t\tbreak;\n\tcase (EXTS.altName):\n\t\tder.readSequence(asn1.Ber.OctetString);\n\t\tder.readSequence();\n\t\tvar aeEnd = der.offset + der.length;\n\t\twhile (der.offset < aeEnd) {\n\t\t\tswitch (der.peek()) {\n\t\t\tcase ALTNAME.OtherName:\n\t\t\tcase ALTNAME.EDIPartyName:\n\t\t\t\tder.readSequence();\n\t\t\t\tder._offset += der.length;\n\t\t\t\tbreak;\n\t\t\tcase ALTNAME.OID:\n\t\t\t\tder.readOID(ALTNAME.OID);\n\t\t\t\tbreak;\n\t\t\tcase ALTNAME.RFC822Name:\n\t\t\t\t/* RFC822 specifies email addresses */\n\t\t\t\tvar email = der.readString(ALTNAME.RFC822Name);\n\t\t\t\tid = Identity.forEmail(email);\n\t\t\t\tif (!cert.subjects[0].equals(id))\n\t\t\t\t\tcert.subjects.push(id);\n\t\t\t\tbreak;\n\t\t\tcase ALTNAME.DirectoryName:\n\t\t\t\tder.readSequence(ALTNAME.DirectoryName);\n\t\t\t\tid = Identity.parseAsn1(der);\n\t\t\t\tif (!cert.subjects[0].equals(id))\n\t\t\t\t\tcert.subjects.push(id);\n\t\t\t\tbreak;\n\t\t\tcase ALTNAME.DNSName:\n\t\t\t\tvar host = der.readString(\n\t\t\t\t ALTNAME.DNSName);\n\t\t\t\tid = Identity.forHost(host);\n\t\t\t\tif (!cert.subjects[0].equals(id))\n\t\t\t\t\tcert.subjects.push(id);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tder.readString(der.peek());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tsig.extras.exts.push({ oid: extId, critical: critical });\n\t\tbreak;\n\tdefault:\n\t\tsig.extras.exts.push({\n\t\t\toid: extId,\n\t\t\tcritical: critical,\n\t\t\tdata: der.readString(asn1.Ber.OctetString, true)\n\t\t});\n\t\tbreak;\n\t}\n\n\tder._offset = after;\n}\n\nvar UTCTIME_RE =\n /^([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/;\nfunction utcTimeToDate(t) {\n\tvar m = t.match(UTCTIME_RE);\n\tassert.ok(m, 'timestamps must be in UTC');\n\tvar d = new Date();\n\n\tvar thisYear = d.getUTCFullYear();\n\tvar century = Math.floor(thisYear / 100) * 100;\n\n\tvar year = parseInt(m[1], 10);\n\tif (thisYear % 100 < 50 && year >= 60)\n\t\tyear += (century - 1);\n\telse\n\t\tyear += century;\n\td.setUTCFullYear(year, parseInt(m[2], 10) - 1, parseInt(m[3], 10));\n\td.setUTCHours(parseInt(m[4], 10), parseInt(m[5], 10));\n\tif (m[6] && m[6].length > 0)\n\t\td.setUTCSeconds(parseInt(m[6], 10));\n\treturn (d);\n}\n\nvar GTIME_RE =\n /^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/;\nfunction gTimeToDate(t) {\n\tvar m = t.match(GTIME_RE);\n\tassert.ok(m);\n\tvar d = new Date();\n\n\td.setUTCFullYear(parseInt(m[1], 10), parseInt(m[2], 10) - 1,\n\t parseInt(m[3], 10));\n\td.setUTCHours(parseInt(m[4], 10), parseInt(m[5], 10));\n\tif (m[6] && m[6].length > 0)\n\t\td.setUTCSeconds(parseInt(m[6], 10));\n\treturn (d);\n}\n\nfunction zeroPad(n, m) {\n\tif (m === undefined)\n\t\tm = 2;\n\tvar s = '' + n;\n\twhile (s.length < m)\n\t\ts = '0' + s;\n\treturn (s);\n}\n\nfunction dateToUTCTime(d) {\n\tvar s = '';\n\ts += zeroPad(d.getUTCFullYear() % 100);\n\ts += zeroPad(d.getUTCMonth() + 1);\n\ts += zeroPad(d.getUTCDate());\n\ts += zeroPad(d.getUTCHours());\n\ts += zeroPad(d.getUTCMinutes());\n\ts += zeroPad(d.getUTCSeconds());\n\ts += 'Z';\n\treturn (s);\n}\n\nfunction dateToGTime(d) {\n\tvar s = '';\n\ts += zeroPad(d.getUTCFullYear(), 4);\n\ts += zeroPad(d.getUTCMonth() + 1);\n\ts += zeroPad(d.getUTCDate());\n\ts += zeroPad(d.getUTCHours());\n\ts += zeroPad(d.getUTCMinutes());\n\ts += zeroPad(d.getUTCSeconds());\n\ts += 'Z';\n\treturn (s);\n}\n\nfunction sign(cert, key) {\n\tif (cert.signatures.x509 === undefined)\n\t\tcert.signatures.x509 = {};\n\tvar sig = cert.signatures.x509;\n\n\tsig.algo = key.type + '-' + key.defaultHashAlgorithm();\n\tif (SIGN_ALGS[sig.algo] === undefined)\n\t\treturn (false);\n\n\tvar der = new asn1.BerWriter();\n\twriteTBSCert(cert, der);\n\tvar blob = der.buffer;\n\tsig.cache = blob;\n\n\tvar signer = key.createSign();\n\tsigner.write(blob);\n\tcert.signatures.x509.signature = signer.sign();\n\n\treturn (true);\n}\n\nfunction signAsync(cert, signer, done) {\n\tif (cert.signatures.x509 === undefined)\n\t\tcert.signatures.x509 = {};\n\tvar sig = cert.signatures.x509;\n\n\tvar der = new asn1.BerWriter();\n\twriteTBSCert(cert, der);\n\tvar blob = der.buffer;\n\tsig.cache = blob;\n\n\tsigner(blob, function (err, signature) {\n\t\tif (err) {\n\t\t\tdone(err);\n\t\t\treturn;\n\t\t}\n\t\tsig.algo = signature.type + '-' + signature.hashAlgorithm;\n\t\tif (SIGN_ALGS[sig.algo] === undefined) {\n\t\t\tdone(new Error('Invalid signing algorithm \"' +\n\t\t\t sig.algo + '\"'));\n\t\t\treturn;\n\t\t}\n\t\tsig.signature = signature;\n\t\tdone();\n\t});\n}\n\nfunction write(cert, options) {\n\tvar sig = cert.signatures.x509;\n\tassert.object(sig, 'x509 signature');\n\n\tvar der = new asn1.BerWriter();\n\tder.startSequence();\n\tif (sig.cache) {\n\t\tder._ensure(sig.cache.length);\n\t\tsig.cache.copy(der._buf, der._offset);\n\t\tder._offset += sig.cache.length;\n\t} else {\n\t\twriteTBSCert(cert, der);\n\t}\n\n\tder.startSequence();\n\tder.writeOID(SIGN_ALGS[sig.algo]);\n\tif (sig.algo.match(/^rsa-/))\n\t\tder.writeNull();\n\tder.endSequence();\n\n\tvar sigData = sig.signature.toBuffer('asn1');\n\tvar data = Buffer.alloc(sigData.length + 1);\n\tdata[0] = 0;\n\tsigData.copy(data, 1);\n\tder.writeBuffer(data, asn1.Ber.BitString);\n\tder.endSequence();\n\n\treturn (der.buffer);\n}\n\nfunction writeTBSCert(cert, der) {\n\tvar sig = cert.signatures.x509;\n\tassert.object(sig, 'x509 signature');\n\n\tder.startSequence();\n\n\tder.startSequence(Local(0));\n\tder.writeInt(2);\n\tder.endSequence();\n\n\tder.writeBuffer(utils.mpNormalize(cert.serial), asn1.Ber.Integer);\n\n\tder.startSequence();\n\tder.writeOID(SIGN_ALGS[sig.algo]);\n\tif (sig.algo.match(/^rsa-/))\n\t\tder.writeNull();\n\tder.endSequence();\n\n\tcert.issuer.toAsn1(der);\n\n\tder.startSequence();\n\twriteDate(der, cert.validFrom);\n\twriteDate(der, cert.validUntil);\n\tder.endSequence();\n\n\tvar subject = cert.subjects[0];\n\tvar altNames = cert.subjects.slice(1);\n\tsubject.toAsn1(der);\n\n\tpkcs8.writePkcs8(der, cert.subjectKey);\n\n\tif (sig.extras && sig.extras.issuerUniqueID) {\n\t\tder.writeBuffer(sig.extras.issuerUniqueID, Local(1));\n\t}\n\n\tif (sig.extras && sig.extras.subjectUniqueID) {\n\t\tder.writeBuffer(sig.extras.subjectUniqueID, Local(2));\n\t}\n\n\tif (altNames.length > 0 || subject.type === 'host' ||\n\t (cert.purposes !== undefined && cert.purposes.length > 0) ||\n\t (sig.extras && sig.extras.exts)) {\n\t\tder.startSequence(Local(3));\n\t\tder.startSequence();\n\n\t\tvar exts = [];\n\t\tif (cert.purposes !== undefined && cert.purposes.length > 0) {\n\t\t\texts.push({\n\t\t\t\toid: EXTS.basicConstraints,\n\t\t\t\tcritical: true\n\t\t\t});\n\t\t\texts.push({\n\t\t\t\toid: EXTS.keyUsage,\n\t\t\t\tcritical: true\n\t\t\t});\n\t\t\texts.push({\n\t\t\t\toid: EXTS.extKeyUsage,\n\t\t\t\tcritical: true\n\t\t\t});\n\t\t}\n\t\texts.push({ oid: EXTS.altName });\n\t\tif (sig.extras && sig.extras.exts)\n\t\t\texts = sig.extras.exts;\n\n\t\tfor (var i = 0; i < exts.length; ++i) {\n\t\t\tder.startSequence();\n\t\t\tder.writeOID(exts[i].oid);\n\n\t\t\tif (exts[i].critical !== undefined)\n\t\t\t\tder.writeBoolean(exts[i].critical);\n\n\t\t\tif (exts[i].oid === EXTS.altName) {\n\t\t\t\tder.startSequence(asn1.Ber.OctetString);\n\t\t\t\tder.startSequence();\n\t\t\t\tif (subject.type === 'host') {\n\t\t\t\t\tder.writeString(subject.hostname,\n\t\t\t\t\t Context(2));\n\t\t\t\t}\n\t\t\t\tfor (var j = 0; j < altNames.length; ++j) {\n\t\t\t\t\tif (altNames[j].type === 'host') {\n\t\t\t\t\t\tder.writeString(\n\t\t\t\t\t\t altNames[j].hostname,\n\t\t\t\t\t\t ALTNAME.DNSName);\n\t\t\t\t\t} else if (altNames[j].type ===\n\t\t\t\t\t 'email') {\n\t\t\t\t\t\tder.writeString(\n\t\t\t\t\t\t altNames[j].email,\n\t\t\t\t\t\t ALTNAME.RFC822Name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * Encode anything else as a\n\t\t\t\t\t\t * DN style name for now.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tder.startSequence(\n\t\t\t\t\t\t ALTNAME.DirectoryName);\n\t\t\t\t\t\taltNames[j].toAsn1(der);\n\t\t\t\t\t\tder.endSequence();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tder.endSequence();\n\t\t\t\tder.endSequence();\n\t\t\t} else if (exts[i].oid === EXTS.basicConstraints) {\n\t\t\t\tder.startSequence(asn1.Ber.OctetString);\n\t\t\t\tder.startSequence();\n\t\t\t\tvar ca = (cert.purposes.indexOf('ca') !== -1);\n\t\t\t\tvar pathLen = exts[i].pathLen;\n\t\t\t\tder.writeBoolean(ca);\n\t\t\t\tif (pathLen !== undefined)\n\t\t\t\t\tder.writeInt(pathLen);\n\t\t\t\tder.endSequence();\n\t\t\t\tder.endSequence();\n\t\t\t} else if (exts[i].oid === EXTS.extKeyUsage) {\n\t\t\t\tder.startSequence(asn1.Ber.OctetString);\n\t\t\t\tder.startSequence();\n\t\t\t\tcert.purposes.forEach(function (purpose) {\n\t\t\t\t\tif (purpose === 'ca')\n\t\t\t\t\t\treturn;\n\t\t\t\t\tif (KEYUSEBITS.indexOf(purpose) !== -1)\n\t\t\t\t\t\treturn;\n\t\t\t\t\tvar oid = purpose;\n\t\t\t\t\tif (EXTPURPOSE[purpose] !== undefined)\n\t\t\t\t\t\toid = EXTPURPOSE[purpose];\n\t\t\t\t\tder.writeOID(oid);\n\t\t\t\t});\n\t\t\t\tder.endSequence();\n\t\t\t\tder.endSequence();\n\t\t\t} else if (exts[i].oid === EXTS.keyUsage) {\n\t\t\t\tder.startSequence(asn1.Ber.OctetString);\n\t\t\t\t/*\n\t\t\t\t * If we parsed this certificate from a byte\n\t\t\t\t * stream (i.e. we didn't generate it in sshpk)\n\t\t\t\t * then we'll have a \".bits\" property on the\n\t\t\t\t * ext with the original raw byte contents.\n\t\t\t\t *\n\t\t\t\t * If we have this, use it here instead of\n\t\t\t\t * regenerating it. This guarantees we output\n\t\t\t\t * the same data we parsed, so signatures still\n\t\t\t\t * validate.\n\t\t\t\t */\n\t\t\t\tif (exts[i].bits !== undefined) {\n\t\t\t\t\tder.writeBuffer(exts[i].bits,\n\t\t\t\t\t asn1.Ber.BitString);\n\t\t\t\t} else {\n\t\t\t\t\tvar bits = writeBitField(cert.purposes,\n\t\t\t\t\t KEYUSEBITS);\n\t\t\t\t\tder.writeBuffer(bits,\n\t\t\t\t\t asn1.Ber.BitString);\n\t\t\t\t}\n\t\t\t\tder.endSequence();\n\t\t\t} else {\n\t\t\t\tder.writeBuffer(exts[i].data,\n\t\t\t\t asn1.Ber.OctetString);\n\t\t\t}\n\n\t\t\tder.endSequence();\n\t\t}\n\n\t\tder.endSequence();\n\t\tder.endSequence();\n\t}\n\n\tder.endSequence();\n}\n\n/*\n * Reads an ASN.1 BER bitfield out of the Buffer produced by doing\n * `BerReader#readString(asn1.Ber.BitString)`. That function gives us the raw\n * contents of the BitString tag, which is a count of unused bits followed by\n * the bits as a right-padded byte string.\n *\n * `bits` is the Buffer, `bitIndex` should contain an array of string names\n * for the bits in the string, ordered starting with bit #0 in the ASN.1 spec.\n *\n * Returns an array of Strings, the names of the bits that were set to 1.\n */\nfunction readBitField(bits, bitIndex) {\n\tvar bitLen = 8 * (bits.length - 1) - bits[0];\n\tvar setBits = {};\n\tfor (var i = 0; i < bitLen; ++i) {\n\t\tvar byteN = 1 + Math.floor(i / 8);\n\t\tvar bit = 7 - (i % 8);\n\t\tvar mask = 1 << bit;\n\t\tvar bitVal = ((bits[byteN] & mask) !== 0);\n\t\tvar name = bitIndex[i];\n\t\tif (bitVal && typeof (name) === 'string') {\n\t\t\tsetBits[name] = true;\n\t\t}\n\t}\n\treturn (Object.keys(setBits));\n}\n\n/*\n * `setBits` is an array of strings, containing the names for each bit that\n * sould be set to 1. `bitIndex` is same as in `readBitField()`.\n *\n * Returns a Buffer, ready to be written out with `BerWriter#writeString()`.\n */\nfunction writeBitField(setBits, bitIndex) {\n\tvar bitLen = bitIndex.length;\n\tvar blen = Math.ceil(bitLen / 8);\n\tvar unused = blen * 8 - bitLen;\n\tvar bits = Buffer.alloc(1 + blen); // zero-filled\n\tbits[0] = unused;\n\tfor (var i = 0; i < bitLen; ++i) {\n\t\tvar byteN = 1 + Math.floor(i / 8);\n\t\tvar bit = 7 - (i % 8);\n\t\tvar mask = 1 << bit;\n\t\tvar name = bitIndex[i];\n\t\tif (name === undefined)\n\t\t\tcontinue;\n\t\tvar bitVal = (setBits.indexOf(name) !== -1);\n\t\tif (bitVal) {\n\t\t\tbits[byteN] |= mask;\n\t\t}\n\t}\n\treturn (bits);\n}\n","// Copyright 2017 Joyent, Inc.\n\nmodule.exports = Identity;\n\nvar assert = require('assert-plus');\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar errs = require('./errors');\nvar util = require('util');\nvar utils = require('./utils');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\n\n/*JSSTYLED*/\nvar DNS_NAME_RE = /^([*]|[a-z0-9][a-z0-9\\-]{0,62})(?:\\.([*]|[a-z0-9][a-z0-9\\-]{0,62}))*$/i;\n\nvar oids = {};\noids.cn = '2.5.4.3';\noids.o = '2.5.4.10';\noids.ou = '2.5.4.11';\noids.l = '2.5.4.7';\noids.s = '2.5.4.8';\noids.c = '2.5.4.6';\noids.sn = '2.5.4.4';\noids.postalCode = '2.5.4.17';\noids.serialNumber = '2.5.4.5';\noids.street = '2.5.4.9';\noids.x500UniqueIdentifier = '2.5.4.45';\noids.role = '2.5.4.72';\noids.telephoneNumber = '2.5.4.20';\noids.description = '2.5.4.13';\noids.dc = '0.9.2342.19200300.100.1.25';\noids.uid = '0.9.2342.19200300.100.1.1';\noids.mail = '0.9.2342.19200300.100.1.3';\noids.title = '2.5.4.12';\noids.gn = '2.5.4.42';\noids.initials = '2.5.4.43';\noids.pseudonym = '2.5.4.65';\noids.emailAddress = '1.2.840.113549.1.9.1';\n\nvar unoids = {};\nObject.keys(oids).forEach(function (k) {\n\tunoids[oids[k]] = k;\n});\n\nfunction Identity(opts) {\n\tvar self = this;\n\tassert.object(opts, 'options');\n\tassert.arrayOfObject(opts.components, 'options.components');\n\tthis.components = opts.components;\n\tthis.componentLookup = {};\n\tthis.components.forEach(function (c) {\n\t\tif (c.name && !c.oid)\n\t\t\tc.oid = oids[c.name];\n\t\tif (c.oid && !c.name)\n\t\t\tc.name = unoids[c.oid];\n\t\tif (self.componentLookup[c.name] === undefined)\n\t\t\tself.componentLookup[c.name] = [];\n\t\tself.componentLookup[c.name].push(c);\n\t});\n\tif (this.componentLookup.cn && this.componentLookup.cn.length > 0) {\n\t\tthis.cn = this.componentLookup.cn[0].value;\n\t}\n\tassert.optionalString(opts.type, 'options.type');\n\tif (opts.type === undefined) {\n\t\tif (this.components.length === 1 &&\n\t\t this.componentLookup.cn &&\n\t\t this.componentLookup.cn.length === 1 &&\n\t\t this.componentLookup.cn[0].value.match(DNS_NAME_RE)) {\n\t\t\tthis.type = 'host';\n\t\t\tthis.hostname = this.componentLookup.cn[0].value;\n\n\t\t} else if (this.componentLookup.dc &&\n\t\t this.components.length === this.componentLookup.dc.length) {\n\t\t\tthis.type = 'host';\n\t\t\tthis.hostname = this.componentLookup.dc.map(\n\t\t\t function (c) {\n\t\t\t\treturn (c.value);\n\t\t\t}).join('.');\n\n\t\t} else if (this.componentLookup.uid &&\n\t\t this.components.length ===\n\t\t this.componentLookup.uid.length) {\n\t\t\tthis.type = 'user';\n\t\t\tthis.uid = this.componentLookup.uid[0].value;\n\n\t\t} else if (this.componentLookup.cn &&\n\t\t this.componentLookup.cn.length === 1 &&\n\t\t this.componentLookup.cn[0].value.match(DNS_NAME_RE)) {\n\t\t\tthis.type = 'host';\n\t\t\tthis.hostname = this.componentLookup.cn[0].value;\n\n\t\t} else if (this.componentLookup.uid &&\n\t\t this.componentLookup.uid.length === 1) {\n\t\t\tthis.type = 'user';\n\t\t\tthis.uid = this.componentLookup.uid[0].value;\n\n\t\t} else if (this.componentLookup.mail &&\n\t\t this.componentLookup.mail.length === 1) {\n\t\t\tthis.type = 'email';\n\t\t\tthis.email = this.componentLookup.mail[0].value;\n\n\t\t} else if (this.componentLookup.cn &&\n\t\t this.componentLookup.cn.length === 1) {\n\t\t\tthis.type = 'user';\n\t\t\tthis.uid = this.componentLookup.cn[0].value;\n\n\t\t} else {\n\t\t\tthis.type = 'unknown';\n\t\t}\n\t} else {\n\t\tthis.type = opts.type;\n\t\tif (this.type === 'host')\n\t\t\tthis.hostname = opts.hostname;\n\t\telse if (this.type === 'user')\n\t\t\tthis.uid = opts.uid;\n\t\telse if (this.type === 'email')\n\t\t\tthis.email = opts.email;\n\t\telse\n\t\t\tthrow (new Error('Unknown type ' + this.type));\n\t}\n}\n\nIdentity.prototype.toString = function () {\n\treturn (this.components.map(function (c) {\n\t\tvar n = c.name.toUpperCase();\n\t\t/*JSSTYLED*/\n\t\tn = n.replace(/=/g, '\\\\=');\n\t\tvar v = c.value;\n\t\t/*JSSTYLED*/\n\t\tv = v.replace(/,/g, '\\\\,');\n\t\treturn (n + '=' + v);\n\t}).join(', '));\n};\n\nIdentity.prototype.get = function (name, asArray) {\n\tassert.string(name, 'name');\n\tvar arr = this.componentLookup[name];\n\tif (arr === undefined || arr.length === 0)\n\t\treturn (undefined);\n\tif (!asArray && arr.length > 1)\n\t\tthrow (new Error('Multiple values for attribute ' + name));\n\tif (!asArray)\n\t\treturn (arr[0].value);\n\treturn (arr.map(function (c) {\n\t\treturn (c.value);\n\t}));\n};\n\nIdentity.prototype.toArray = function (idx) {\n\treturn (this.components.map(function (c) {\n\t\treturn ({\n\t\t\tname: c.name,\n\t\t\tvalue: c.value\n\t\t});\n\t}));\n};\n\n/*\n * These are from X.680 -- PrintableString allowed chars are in section 37.4\n * table 8. Spec for IA5Strings is \"1,6 + SPACE + DEL\" where 1 refers to\n * ISO IR #001 (standard ASCII control characters) and 6 refers to ISO IR #006\n * (the basic ASCII character set).\n */\n/* JSSTYLED */\nvar NOT_PRINTABLE = /[^a-zA-Z0-9 '(),+.\\/:=?-]/;\n/* JSSTYLED */\nvar NOT_IA5 = /[^\\x00-\\x7f]/;\n\nIdentity.prototype.toAsn1 = function (der, tag) {\n\tder.startSequence(tag);\n\tthis.components.forEach(function (c) {\n\t\tder.startSequence(asn1.Ber.Constructor | asn1.Ber.Set);\n\t\tder.startSequence();\n\t\tder.writeOID(c.oid);\n\t\t/*\n\t\t * If we fit in a PrintableString, use that. Otherwise use an\n\t\t * IA5String or UTF8String.\n\t\t *\n\t\t * If this identity was parsed from a DN, use the ASN.1 types\n\t\t * from the original representation (otherwise this might not\n\t\t * be a full match for the original in some validators).\n\t\t */\n\t\tif (c.asn1type === asn1.Ber.Utf8String ||\n\t\t c.value.match(NOT_IA5)) {\n\t\t\tvar v = Buffer.from(c.value, 'utf8');\n\t\t\tder.writeBuffer(v, asn1.Ber.Utf8String);\n\n\t\t} else if (c.asn1type === asn1.Ber.IA5String ||\n\t\t c.value.match(NOT_PRINTABLE)) {\n\t\t\tder.writeString(c.value, asn1.Ber.IA5String);\n\n\t\t} else {\n\t\t\tvar type = asn1.Ber.PrintableString;\n\t\t\tif (c.asn1type !== undefined)\n\t\t\t\ttype = c.asn1type;\n\t\t\tder.writeString(c.value, type);\n\t\t}\n\t\tder.endSequence();\n\t\tder.endSequence();\n\t});\n\tder.endSequence();\n};\n\nfunction globMatch(a, b) {\n\tif (a === '**' || b === '**')\n\t\treturn (true);\n\tvar aParts = a.split('.');\n\tvar bParts = b.split('.');\n\tif (aParts.length !== bParts.length)\n\t\treturn (false);\n\tfor (var i = 0; i < aParts.length; ++i) {\n\t\tif (aParts[i] === '*' || bParts[i] === '*')\n\t\t\tcontinue;\n\t\tif (aParts[i] !== bParts[i])\n\t\t\treturn (false);\n\t}\n\treturn (true);\n}\n\nIdentity.prototype.equals = function (other) {\n\tif (!Identity.isIdentity(other, [1, 0]))\n\t\treturn (false);\n\tif (other.components.length !== this.components.length)\n\t\treturn (false);\n\tfor (var i = 0; i < this.components.length; ++i) {\n\t\tif (this.components[i].oid !== other.components[i].oid)\n\t\t\treturn (false);\n\t\tif (!globMatch(this.components[i].value,\n\t\t other.components[i].value)) {\n\t\t\treturn (false);\n\t\t}\n\t}\n\treturn (true);\n};\n\nIdentity.forHost = function (hostname) {\n\tassert.string(hostname, 'hostname');\n\treturn (new Identity({\n\t\ttype: 'host',\n\t\thostname: hostname,\n\t\tcomponents: [ { name: 'cn', value: hostname } ]\n\t}));\n};\n\nIdentity.forUser = function (uid) {\n\tassert.string(uid, 'uid');\n\treturn (new Identity({\n\t\ttype: 'user',\n\t\tuid: uid,\n\t\tcomponents: [ { name: 'uid', value: uid } ]\n\t}));\n};\n\nIdentity.forEmail = function (email) {\n\tassert.string(email, 'email');\n\treturn (new Identity({\n\t\ttype: 'email',\n\t\temail: email,\n\t\tcomponents: [ { name: 'mail', value: email } ]\n\t}));\n};\n\nIdentity.parseDN = function (dn) {\n\tassert.string(dn, 'dn');\n\tvar parts = [''];\n\tvar idx = 0;\n\tvar rem = dn;\n\twhile (rem.length > 0) {\n\t\tvar m;\n\t\t/*JSSTYLED*/\n\t\tif ((m = /^,/.exec(rem)) !== null) {\n\t\t\tparts[++idx] = '';\n\t\t\trem = rem.slice(m[0].length);\n\t\t/*JSSTYLED*/\n\t\t} else if ((m = /^\\\\,/.exec(rem)) !== null) {\n\t\t\tparts[idx] += ',';\n\t\t\trem = rem.slice(m[0].length);\n\t\t/*JSSTYLED*/\n\t\t} else if ((m = /^\\\\./.exec(rem)) !== null) {\n\t\t\tparts[idx] += m[0];\n\t\t\trem = rem.slice(m[0].length);\n\t\t/*JSSTYLED*/\n\t\t} else if ((m = /^[^\\\\,]+/.exec(rem)) !== null) {\n\t\t\tparts[idx] += m[0];\n\t\t\trem = rem.slice(m[0].length);\n\t\t} else {\n\t\t\tthrow (new Error('Failed to parse DN'));\n\t\t}\n\t}\n\tvar cmps = parts.map(function (c) {\n\t\tc = c.trim();\n\t\tvar eqPos = c.indexOf('=');\n\t\twhile (eqPos > 0 && c.charAt(eqPos - 1) === '\\\\')\n\t\t\teqPos = c.indexOf('=', eqPos + 1);\n\t\tif (eqPos === -1) {\n\t\t\tthrow (new Error('Failed to parse DN'));\n\t\t}\n\t\t/*JSSTYLED*/\n\t\tvar name = c.slice(0, eqPos).toLowerCase().replace(/\\\\=/g, '=');\n\t\tvar value = c.slice(eqPos + 1);\n\t\treturn ({ name: name, value: value });\n\t});\n\treturn (new Identity({ components: cmps }));\n};\n\nIdentity.fromArray = function (components) {\n\tassert.arrayOfObject(components, 'components');\n\tcomponents.forEach(function (cmp) {\n\t\tassert.object(cmp, 'component');\n\t\tassert.string(cmp.name, 'component.name');\n\t\tif (!Buffer.isBuffer(cmp.value) &&\n\t\t !(typeof (cmp.value) === 'string')) {\n\t\t\tthrow (new Error('Invalid component value'));\n\t\t}\n\t});\n\treturn (new Identity({ components: components }));\n};\n\nIdentity.parseAsn1 = function (der, top) {\n\tvar components = [];\n\tder.readSequence(top);\n\tvar end = der.offset + der.length;\n\twhile (der.offset < end) {\n\t\tder.readSequence(asn1.Ber.Constructor | asn1.Ber.Set);\n\t\tvar after = der.offset + der.length;\n\t\tder.readSequence();\n\t\tvar oid = der.readOID();\n\t\tvar type = der.peek();\n\t\tvar value;\n\t\tswitch (type) {\n\t\tcase asn1.Ber.PrintableString:\n\t\tcase asn1.Ber.IA5String:\n\t\tcase asn1.Ber.OctetString:\n\t\tcase asn1.Ber.T61String:\n\t\t\tvalue = der.readString(type);\n\t\t\tbreak;\n\t\tcase asn1.Ber.Utf8String:\n\t\t\tvalue = der.readString(type, true);\n\t\t\tvalue = value.toString('utf8');\n\t\t\tbreak;\n\t\tcase asn1.Ber.CharacterString:\n\t\tcase asn1.Ber.BMPString:\n\t\t\tvalue = der.readString(type, true);\n\t\t\tvalue = value.toString('utf16le');\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow (new Error('Unknown asn1 type ' + type));\n\t\t}\n\t\tcomponents.push({ oid: oid, asn1type: type, value: value });\n\t\tder._offset = after;\n\t}\n\tder._offset = end;\n\treturn (new Identity({\n\t\tcomponents: components\n\t}));\n};\n\nIdentity.isIdentity = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Identity, ver));\n};\n\n/*\n * API versions for Identity:\n * [1,0] -- initial ver\n */\nIdentity.prototype._sshpkApiVersion = [1, 0];\n\nIdentity._oldVersionDetect = function (obj) {\n\treturn ([1, 0]);\n};\n","// Copyright 2015 Joyent, Inc.\n\nvar Key = require('./key');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar PrivateKey = require('./private-key');\nvar Certificate = require('./certificate');\nvar Identity = require('./identity');\nvar errs = require('./errors');\n\nmodule.exports = {\n\t/* top-level classes */\n\tKey: Key,\n\tparseKey: Key.parse,\n\tFingerprint: Fingerprint,\n\tparseFingerprint: Fingerprint.parse,\n\tSignature: Signature,\n\tparseSignature: Signature.parse,\n\tPrivateKey: PrivateKey,\n\tparsePrivateKey: PrivateKey.parse,\n\tgeneratePrivateKey: PrivateKey.generate,\n\tCertificate: Certificate,\n\tparseCertificate: Certificate.parse,\n\tcreateSelfSignedCertificate: Certificate.createSelfSigned,\n\tcreateCertificate: Certificate.create,\n\tIdentity: Identity,\n\tidentityFromDN: Identity.parseDN,\n\tidentityForHost: Identity.forHost,\n\tidentityForUser: Identity.forUser,\n\tidentityForEmail: Identity.forEmail,\n\tidentityFromArray: Identity.fromArray,\n\n\t/* errors */\n\tFingerprintFormatError: errs.FingerprintFormatError,\n\tInvalidAlgorithmError: errs.InvalidAlgorithmError,\n\tKeyParseError: errs.KeyParseError,\n\tSignatureParseError: errs.SignatureParseError,\n\tKeyEncryptedError: errs.KeyEncryptedError,\n\tCertificateParseError: errs.CertificateParseError\n};\n","// Copyright 2018 Joyent, Inc.\n\nmodule.exports = Key;\n\nvar assert = require('assert-plus');\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar DiffieHellman = require('./dhe').DiffieHellman;\nvar errs = require('./errors');\nvar utils = require('./utils');\nvar PrivateKey = require('./private-key');\nvar edCompat;\n\ntry {\n\tedCompat = require('./ed-compat');\n} catch (e) {\n\t/* Just continue through, and bail out if we try to use it. */\n}\n\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\nvar KeyParseError = errs.KeyParseError;\n\nvar formats = {};\nformats['auto'] = require('./formats/auto');\nformats['pem'] = require('./formats/pem');\nformats['pkcs1'] = require('./formats/pkcs1');\nformats['pkcs8'] = require('./formats/pkcs8');\nformats['rfc4253'] = require('./formats/rfc4253');\nformats['ssh'] = require('./formats/ssh');\nformats['ssh-private'] = require('./formats/ssh-private');\nformats['openssh'] = formats['ssh-private'];\nformats['dnssec'] = require('./formats/dnssec');\nformats['putty'] = require('./formats/putty');\nformats['ppk'] = formats['putty'];\n\nfunction Key(opts) {\n\tassert.object(opts, 'options');\n\tassert.arrayOfObject(opts.parts, 'options.parts');\n\tassert.string(opts.type, 'options.type');\n\tassert.optionalString(opts.comment, 'options.comment');\n\n\tvar algInfo = algs.info[opts.type];\n\tif (typeof (algInfo) !== 'object')\n\t\tthrow (new InvalidAlgorithmError(opts.type));\n\n\tvar partLookup = {};\n\tfor (var i = 0; i < opts.parts.length; ++i) {\n\t\tvar part = opts.parts[i];\n\t\tpartLookup[part.name] = part;\n\t}\n\n\tthis.type = opts.type;\n\tthis.parts = opts.parts;\n\tthis.part = partLookup;\n\tthis.comment = undefined;\n\tthis.source = opts.source;\n\n\t/* for speeding up hashing/fingerprint operations */\n\tthis._rfc4253Cache = opts._rfc4253Cache;\n\tthis._hashCache = {};\n\n\tvar sz;\n\tthis.curve = undefined;\n\tif (this.type === 'ecdsa') {\n\t\tvar curve = this.part.curve.data.toString();\n\t\tthis.curve = curve;\n\t\tsz = algs.curves[curve].size;\n\t} else if (this.type === 'ed25519' || this.type === 'curve25519') {\n\t\tsz = 256;\n\t\tthis.curve = 'curve25519';\n\t} else {\n\t\tvar szPart = this.part[algInfo.sizePart];\n\t\tsz = szPart.data.length;\n\t\tsz = sz * 8 - utils.countZeros(szPart.data);\n\t}\n\tthis.size = sz;\n}\n\nKey.formats = formats;\n\nKey.prototype.toBuffer = function (format, options) {\n\tif (format === undefined)\n\t\tformat = 'ssh';\n\tassert.string(format, 'format');\n\tassert.object(formats[format], 'formats[format]');\n\tassert.optionalObject(options, 'options');\n\n\tif (format === 'rfc4253') {\n\t\tif (this._rfc4253Cache === undefined)\n\t\t\tthis._rfc4253Cache = formats['rfc4253'].write(this);\n\t\treturn (this._rfc4253Cache);\n\t}\n\n\treturn (formats[format].write(this, options));\n};\n\nKey.prototype.toString = function (format, options) {\n\treturn (this.toBuffer(format, options).toString());\n};\n\nKey.prototype.hash = function (algo, type) {\n\tassert.string(algo, 'algorithm');\n\tassert.optionalString(type, 'type');\n\tif (type === undefined)\n\t\ttype = 'ssh';\n\talgo = algo.toLowerCase();\n\tif (algs.hashAlgs[algo] === undefined)\n\t\tthrow (new InvalidAlgorithmError(algo));\n\n\tvar cacheKey = algo + '||' + type;\n\tif (this._hashCache[cacheKey])\n\t\treturn (this._hashCache[cacheKey]);\n\n\tvar buf;\n\tif (type === 'ssh') {\n\t\tbuf = this.toBuffer('rfc4253');\n\t} else if (type === 'spki') {\n\t\tbuf = formats.pkcs8.pkcs8ToBuffer(this);\n\t} else {\n\t\tthrow (new Error('Hash type ' + type + ' not supported'));\n\t}\n\tvar hash = crypto.createHash(algo).update(buf).digest();\n\tthis._hashCache[cacheKey] = hash;\n\treturn (hash);\n};\n\nKey.prototype.fingerprint = function (algo, type) {\n\tif (algo === undefined)\n\t\talgo = 'sha256';\n\tif (type === undefined)\n\t\ttype = 'ssh';\n\tassert.string(algo, 'algorithm');\n\tassert.string(type, 'type');\n\tvar opts = {\n\t\ttype: 'key',\n\t\thash: this.hash(algo, type),\n\t\talgorithm: algo,\n\t\thashType: type\n\t};\n\treturn (new Fingerprint(opts));\n};\n\nKey.prototype.defaultHashAlgorithm = function () {\n\tvar hashAlgo = 'sha1';\n\tif (this.type === 'rsa')\n\t\thashAlgo = 'sha256';\n\tif (this.type === 'dsa' && this.size > 1024)\n\t\thashAlgo = 'sha256';\n\tif (this.type === 'ed25519')\n\t\thashAlgo = 'sha512';\n\tif (this.type === 'ecdsa') {\n\t\tif (this.size <= 256)\n\t\t\thashAlgo = 'sha256';\n\t\telse if (this.size <= 384)\n\t\t\thashAlgo = 'sha384';\n\t\telse\n\t\t\thashAlgo = 'sha512';\n\t}\n\treturn (hashAlgo);\n};\n\nKey.prototype.createVerify = function (hashAlgo) {\n\tif (hashAlgo === undefined)\n\t\thashAlgo = this.defaultHashAlgorithm();\n\tassert.string(hashAlgo, 'hash algorithm');\n\n\t/* ED25519 is not supported by OpenSSL, use a javascript impl. */\n\tif (this.type === 'ed25519' && edCompat !== undefined)\n\t\treturn (new edCompat.Verifier(this, hashAlgo));\n\tif (this.type === 'curve25519')\n\t\tthrow (new Error('Curve25519 keys are not suitable for ' +\n\t\t 'signing or verification'));\n\n\tvar v, nm, err;\n\ttry {\n\t\tnm = hashAlgo.toUpperCase();\n\t\tv = crypto.createVerify(nm);\n\t} catch (e) {\n\t\terr = e;\n\t}\n\tif (v === undefined || (err instanceof Error &&\n\t err.message.match(/Unknown message digest/))) {\n\t\tnm = 'RSA-';\n\t\tnm += hashAlgo.toUpperCase();\n\t\tv = crypto.createVerify(nm);\n\t}\n\tassert.ok(v, 'failed to create verifier');\n\tvar oldVerify = v.verify.bind(v);\n\tvar key = this.toBuffer('pkcs8');\n\tvar curve = this.curve;\n\tvar self = this;\n\tv.verify = function (signature, fmt) {\n\t\tif (Signature.isSignature(signature, [2, 0])) {\n\t\t\tif (signature.type !== self.type)\n\t\t\t\treturn (false);\n\t\t\tif (signature.hashAlgorithm &&\n\t\t\t signature.hashAlgorithm !== hashAlgo)\n\t\t\t\treturn (false);\n\t\t\tif (signature.curve && self.type === 'ecdsa' &&\n\t\t\t signature.curve !== curve)\n\t\t\t\treturn (false);\n\t\t\treturn (oldVerify(key, signature.toBuffer('asn1')));\n\n\t\t} else if (typeof (signature) === 'string' ||\n\t\t Buffer.isBuffer(signature)) {\n\t\t\treturn (oldVerify(key, signature, fmt));\n\n\t\t/*\n\t\t * Avoid doing this on valid arguments, walking the prototype\n\t\t * chain can be quite slow.\n\t\t */\n\t\t} else if (Signature.isSignature(signature, [1, 0])) {\n\t\t\tthrow (new Error('signature was created by too old ' +\n\t\t\t 'a version of sshpk and cannot be verified'));\n\n\t\t} else {\n\t\t\tthrow (new TypeError('signature must be a string, ' +\n\t\t\t 'Buffer, or Signature object'));\n\t\t}\n\t};\n\treturn (v);\n};\n\nKey.prototype.createDiffieHellman = function () {\n\tif (this.type === 'rsa')\n\t\tthrow (new Error('RSA keys do not support Diffie-Hellman'));\n\n\treturn (new DiffieHellman(this));\n};\nKey.prototype.createDH = Key.prototype.createDiffieHellman;\n\nKey.parse = function (data, format, options) {\n\tif (typeof (data) !== 'string')\n\t\tassert.buffer(data, 'data');\n\tif (format === undefined)\n\t\tformat = 'auto';\n\tassert.string(format, 'format');\n\tif (typeof (options) === 'string')\n\t\toptions = { filename: options };\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalString(options.filename, 'options.filename');\n\tif (options.filename === undefined)\n\t\toptions.filename = '(unnamed)';\n\n\tassert.object(formats[format], 'formats[format]');\n\n\ttry {\n\t\tvar k = formats[format].read(data, options);\n\t\tif (k instanceof PrivateKey)\n\t\t\tk = k.toPublic();\n\t\tif (!k.comment)\n\t\t\tk.comment = options.filename;\n\t\treturn (k);\n\t} catch (e) {\n\t\tif (e.name === 'KeyEncryptedError')\n\t\t\tthrow (e);\n\t\tthrow (new KeyParseError(options.filename, format, e));\n\t}\n};\n\nKey.isKey = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Key, ver));\n};\n\n/*\n * API versions for Key:\n * [1,0] -- initial ver, may take Signature for createVerify or may not\n * [1,1] -- added pkcs1, pkcs8 formats\n * [1,2] -- added auto, ssh-private, openssh formats\n * [1,3] -- added defaultHashAlgorithm\n * [1,4] -- added ed support, createDH\n * [1,5] -- first explicitly tagged version\n * [1,6] -- changed ed25519 part names\n * [1,7] -- spki hash types\n */\nKey.prototype._sshpkApiVersion = [1, 7];\n\nKey._oldVersionDetect = function (obj) {\n\tassert.func(obj.toBuffer);\n\tassert.func(obj.fingerprint);\n\tif (obj.createDH)\n\t\treturn ([1, 4]);\n\tif (obj.defaultHashAlgorithm)\n\t\treturn ([1, 3]);\n\tif (obj.formats['auto'])\n\t\treturn ([1, 2]);\n\tif (obj.formats['pkcs1'])\n\t\treturn ([1, 1]);\n\treturn ([1, 0]);\n};\n","// Copyright 2017 Joyent, Inc.\n\nmodule.exports = PrivateKey;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar errs = require('./errors');\nvar util = require('util');\nvar utils = require('./utils');\nvar dhe = require('./dhe');\nvar generateECDSA = dhe.generateECDSA;\nvar generateED25519 = dhe.generateED25519;\nvar edCompat = require('./ed-compat');\nvar nacl = require('tweetnacl');\n\nvar Key = require('./key');\n\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\nvar KeyParseError = errs.KeyParseError;\nvar KeyEncryptedError = errs.KeyEncryptedError;\n\nvar formats = {};\nformats['auto'] = require('./formats/auto');\nformats['pem'] = require('./formats/pem');\nformats['pkcs1'] = require('./formats/pkcs1');\nformats['pkcs8'] = require('./formats/pkcs8');\nformats['rfc4253'] = require('./formats/rfc4253');\nformats['ssh-private'] = require('./formats/ssh-private');\nformats['openssh'] = formats['ssh-private'];\nformats['ssh'] = formats['ssh-private'];\nformats['dnssec'] = require('./formats/dnssec');\nformats['putty'] = require('./formats/putty');\n\nfunction PrivateKey(opts) {\n\tassert.object(opts, 'options');\n\tKey.call(this, opts);\n\n\tthis._pubCache = undefined;\n}\nutil.inherits(PrivateKey, Key);\n\nPrivateKey.formats = formats;\n\nPrivateKey.prototype.toBuffer = function (format, options) {\n\tif (format === undefined)\n\t\tformat = 'pkcs1';\n\tassert.string(format, 'format');\n\tassert.object(formats[format], 'formats[format]');\n\tassert.optionalObject(options, 'options');\n\n\treturn (formats[format].write(this, options));\n};\n\nPrivateKey.prototype.hash = function (algo, type) {\n\treturn (this.toPublic().hash(algo, type));\n};\n\nPrivateKey.prototype.fingerprint = function (algo, type) {\n\treturn (this.toPublic().fingerprint(algo, type));\n};\n\nPrivateKey.prototype.toPublic = function () {\n\tif (this._pubCache)\n\t\treturn (this._pubCache);\n\n\tvar algInfo = algs.info[this.type];\n\tvar pubParts = [];\n\tfor (var i = 0; i < algInfo.parts.length; ++i) {\n\t\tvar p = algInfo.parts[i];\n\t\tpubParts.push(this.part[p]);\n\t}\n\n\tthis._pubCache = new Key({\n\t\ttype: this.type,\n\t\tsource: this,\n\t\tparts: pubParts\n\t});\n\tif (this.comment)\n\t\tthis._pubCache.comment = this.comment;\n\treturn (this._pubCache);\n};\n\nPrivateKey.prototype.derive = function (newType) {\n\tassert.string(newType, 'type');\n\tvar priv, pub, pair;\n\n\tif (this.type === 'ed25519' && newType === 'curve25519') {\n\t\tpriv = this.part.k.data;\n\t\tif (priv[0] === 0x00)\n\t\t\tpriv = priv.slice(1);\n\n\t\tpair = nacl.box.keyPair.fromSecretKey(new Uint8Array(priv));\n\t\tpub = Buffer.from(pair.publicKey);\n\n\t\treturn (new PrivateKey({\n\t\t\ttype: 'curve25519',\n\t\t\tparts: [\n\t\t\t\t{ name: 'A', data: utils.mpNormalize(pub) },\n\t\t\t\t{ name: 'k', data: utils.mpNormalize(priv) }\n\t\t\t]\n\t\t}));\n\t} else if (this.type === 'curve25519' && newType === 'ed25519') {\n\t\tpriv = this.part.k.data;\n\t\tif (priv[0] === 0x00)\n\t\t\tpriv = priv.slice(1);\n\n\t\tpair = nacl.sign.keyPair.fromSeed(new Uint8Array(priv));\n\t\tpub = Buffer.from(pair.publicKey);\n\n\t\treturn (new PrivateKey({\n\t\t\ttype: 'ed25519',\n\t\t\tparts: [\n\t\t\t\t{ name: 'A', data: utils.mpNormalize(pub) },\n\t\t\t\t{ name: 'k', data: utils.mpNormalize(priv) }\n\t\t\t]\n\t\t}));\n\t}\n\tthrow (new Error('Key derivation not supported from ' + this.type +\n\t ' to ' + newType));\n};\n\nPrivateKey.prototype.createVerify = function (hashAlgo) {\n\treturn (this.toPublic().createVerify(hashAlgo));\n};\n\nPrivateKey.prototype.createSign = function (hashAlgo) {\n\tif (hashAlgo === undefined)\n\t\thashAlgo = this.defaultHashAlgorithm();\n\tassert.string(hashAlgo, 'hash algorithm');\n\n\t/* ED25519 is not supported by OpenSSL, use a javascript impl. */\n\tif (this.type === 'ed25519' && edCompat !== undefined)\n\t\treturn (new edCompat.Signer(this, hashAlgo));\n\tif (this.type === 'curve25519')\n\t\tthrow (new Error('Curve25519 keys are not suitable for ' +\n\t\t 'signing or verification'));\n\n\tvar v, nm, err;\n\ttry {\n\t\tnm = hashAlgo.toUpperCase();\n\t\tv = crypto.createSign(nm);\n\t} catch (e) {\n\t\terr = e;\n\t}\n\tif (v === undefined || (err instanceof Error &&\n\t err.message.match(/Unknown message digest/))) {\n\t\tnm = 'RSA-';\n\t\tnm += hashAlgo.toUpperCase();\n\t\tv = crypto.createSign(nm);\n\t}\n\tassert.ok(v, 'failed to create verifier');\n\tvar oldSign = v.sign.bind(v);\n\tvar key = this.toBuffer('pkcs1');\n\tvar type = this.type;\n\tvar curve = this.curve;\n\tv.sign = function () {\n\t\tvar sig = oldSign(key);\n\t\tif (typeof (sig) === 'string')\n\t\t\tsig = Buffer.from(sig, 'binary');\n\t\tsig = Signature.parse(sig, type, 'asn1');\n\t\tsig.hashAlgorithm = hashAlgo;\n\t\tsig.curve = curve;\n\t\treturn (sig);\n\t};\n\treturn (v);\n};\n\nPrivateKey.parse = function (data, format, options) {\n\tif (typeof (data) !== 'string')\n\t\tassert.buffer(data, 'data');\n\tif (format === undefined)\n\t\tformat = 'auto';\n\tassert.string(format, 'format');\n\tif (typeof (options) === 'string')\n\t\toptions = { filename: options };\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalString(options.filename, 'options.filename');\n\tif (options.filename === undefined)\n\t\toptions.filename = '(unnamed)';\n\n\tassert.object(formats[format], 'formats[format]');\n\n\ttry {\n\t\tvar k = formats[format].read(data, options);\n\t\tassert.ok(k instanceof PrivateKey, 'key is not a private key');\n\t\tif (!k.comment)\n\t\t\tk.comment = options.filename;\n\t\treturn (k);\n\t} catch (e) {\n\t\tif (e.name === 'KeyEncryptedError')\n\t\t\tthrow (e);\n\t\tthrow (new KeyParseError(options.filename, format, e));\n\t}\n};\n\nPrivateKey.isPrivateKey = function (obj, ver) {\n\treturn (utils.isCompatible(obj, PrivateKey, ver));\n};\n\nPrivateKey.generate = function (type, options) {\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.object(options, 'options');\n\n\tswitch (type) {\n\tcase 'ecdsa':\n\t\tif (options.curve === undefined)\n\t\t\toptions.curve = 'nistp256';\n\t\tassert.string(options.curve, 'options.curve');\n\t\treturn (generateECDSA(options.curve));\n\tcase 'ed25519':\n\t\treturn (generateED25519());\n\tdefault:\n\t\tthrow (new Error('Key generation not supported with key ' +\n\t\t 'type \"' + type + '\"'));\n\t}\n};\n\n/*\n * API versions for PrivateKey:\n * [1,0] -- initial ver\n * [1,1] -- added auto, pkcs[18], openssh/ssh-private formats\n * [1,2] -- added defaultHashAlgorithm\n * [1,3] -- added derive, ed, createDH\n * [1,4] -- first tagged version\n * [1,5] -- changed ed25519 part names and format\n * [1,6] -- type arguments for hash() and fingerprint()\n */\nPrivateKey.prototype._sshpkApiVersion = [1, 6];\n\nPrivateKey._oldVersionDetect = function (obj) {\n\tassert.func(obj.toPublic);\n\tassert.func(obj.createSign);\n\tif (obj.derive)\n\t\treturn ([1, 3]);\n\tif (obj.defaultHashAlgorithm)\n\t\treturn ([1, 2]);\n\tif (obj.formats['auto'])\n\t\treturn ([1, 1]);\n\treturn ([1, 0]);\n};\n","// Copyright 2015 Joyent, Inc.\n\nmodule.exports = Signature;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar errs = require('./errors');\nvar utils = require('./utils');\nvar asn1 = require('asn1');\nvar SSHBuffer = require('./ssh-buffer');\n\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\nvar SignatureParseError = errs.SignatureParseError;\n\nfunction Signature(opts) {\n\tassert.object(opts, 'options');\n\tassert.arrayOfObject(opts.parts, 'options.parts');\n\tassert.string(opts.type, 'options.type');\n\n\tvar partLookup = {};\n\tfor (var i = 0; i < opts.parts.length; ++i) {\n\t\tvar part = opts.parts[i];\n\t\tpartLookup[part.name] = part;\n\t}\n\n\tthis.type = opts.type;\n\tthis.hashAlgorithm = opts.hashAlgo;\n\tthis.curve = opts.curve;\n\tthis.parts = opts.parts;\n\tthis.part = partLookup;\n}\n\nSignature.prototype.toBuffer = function (format) {\n\tif (format === undefined)\n\t\tformat = 'asn1';\n\tassert.string(format, 'format');\n\n\tvar buf;\n\tvar stype = 'ssh-' + this.type;\n\n\tswitch (this.type) {\n\tcase 'rsa':\n\t\tswitch (this.hashAlgorithm) {\n\t\tcase 'sha256':\n\t\t\tstype = 'rsa-sha2-256';\n\t\t\tbreak;\n\t\tcase 'sha512':\n\t\t\tstype = 'rsa-sha2-512';\n\t\t\tbreak;\n\t\tcase 'sha1':\n\t\tcase undefined:\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow (new Error('SSH signature ' +\n\t\t\t 'format does not support hash ' +\n\t\t\t 'algorithm ' + this.hashAlgorithm));\n\t\t}\n\t\tif (format === 'ssh') {\n\t\t\tbuf = new SSHBuffer({});\n\t\t\tbuf.writeString(stype);\n\t\t\tbuf.writePart(this.part.sig);\n\t\t\treturn (buf.toBuffer());\n\t\t} else {\n\t\t\treturn (this.part.sig.data);\n\t\t}\n\t\tbreak;\n\n\tcase 'ed25519':\n\t\tif (format === 'ssh') {\n\t\t\tbuf = new SSHBuffer({});\n\t\t\tbuf.writeString(stype);\n\t\t\tbuf.writePart(this.part.sig);\n\t\t\treturn (buf.toBuffer());\n\t\t} else {\n\t\t\treturn (this.part.sig.data);\n\t\t}\n\t\tbreak;\n\n\tcase 'dsa':\n\tcase 'ecdsa':\n\t\tvar r, s;\n\t\tif (format === 'asn1') {\n\t\t\tvar der = new asn1.BerWriter();\n\t\t\tder.startSequence();\n\t\t\tr = utils.mpNormalize(this.part.r.data);\n\t\t\ts = utils.mpNormalize(this.part.s.data);\n\t\t\tder.writeBuffer(r, asn1.Ber.Integer);\n\t\t\tder.writeBuffer(s, asn1.Ber.Integer);\n\t\t\tder.endSequence();\n\t\t\treturn (der.buffer);\n\t\t} else if (format === 'ssh' && this.type === 'dsa') {\n\t\t\tbuf = new SSHBuffer({});\n\t\t\tbuf.writeString('ssh-dss');\n\t\t\tr = this.part.r.data;\n\t\t\tif (r.length > 20 && r[0] === 0x00)\n\t\t\t\tr = r.slice(1);\n\t\t\ts = this.part.s.data;\n\t\t\tif (s.length > 20 && s[0] === 0x00)\n\t\t\t\ts = s.slice(1);\n\t\t\tif ((this.hashAlgorithm &&\n\t\t\t this.hashAlgorithm !== 'sha1') ||\n\t\t\t r.length + s.length !== 40) {\n\t\t\t\tthrow (new Error('OpenSSH only supports ' +\n\t\t\t\t 'DSA signatures with SHA1 hash'));\n\t\t\t}\n\t\t\tbuf.writeBuffer(Buffer.concat([r, s]));\n\t\t\treturn (buf.toBuffer());\n\t\t} else if (format === 'ssh' && this.type === 'ecdsa') {\n\t\t\tvar inner = new SSHBuffer({});\n\t\t\tr = this.part.r.data;\n\t\t\tinner.writeBuffer(r);\n\t\t\tinner.writePart(this.part.s);\n\n\t\t\tbuf = new SSHBuffer({});\n\t\t\t/* XXX: find a more proper way to do this? */\n\t\t\tvar curve;\n\t\t\tif (r[0] === 0x00)\n\t\t\t\tr = r.slice(1);\n\t\t\tvar sz = r.length * 8;\n\t\t\tif (sz === 256)\n\t\t\t\tcurve = 'nistp256';\n\t\t\telse if (sz === 384)\n\t\t\t\tcurve = 'nistp384';\n\t\t\telse if (sz === 528)\n\t\t\t\tcurve = 'nistp521';\n\t\t\tbuf.writeString('ecdsa-sha2-' + curve);\n\t\t\tbuf.writeBuffer(inner.toBuffer());\n\t\t\treturn (buf.toBuffer());\n\t\t}\n\t\tthrow (new Error('Invalid signature format'));\n\tdefault:\n\t\tthrow (new Error('Invalid signature data'));\n\t}\n};\n\nSignature.prototype.toString = function (format) {\n\tassert.optionalString(format, 'format');\n\treturn (this.toBuffer(format).toString('base64'));\n};\n\nSignature.parse = function (data, type, format) {\n\tif (typeof (data) === 'string')\n\t\tdata = Buffer.from(data, 'base64');\n\tassert.buffer(data, 'data');\n\tassert.string(format, 'format');\n\tassert.string(type, 'type');\n\n\tvar opts = {};\n\topts.type = type.toLowerCase();\n\topts.parts = [];\n\n\ttry {\n\t\tassert.ok(data.length > 0, 'signature must not be empty');\n\t\tswitch (opts.type) {\n\t\tcase 'rsa':\n\t\t\treturn (parseOneNum(data, type, format, opts));\n\t\tcase 'ed25519':\n\t\t\treturn (parseOneNum(data, type, format, opts));\n\n\t\tcase 'dsa':\n\t\tcase 'ecdsa':\n\t\t\tif (format === 'asn1')\n\t\t\t\treturn (parseDSAasn1(data, type, format, opts));\n\t\t\telse if (opts.type === 'dsa')\n\t\t\t\treturn (parseDSA(data, type, format, opts));\n\t\t\telse\n\t\t\t\treturn (parseECDSA(data, type, format, opts));\n\n\t\tdefault:\n\t\t\tthrow (new InvalidAlgorithmError(type));\n\t\t}\n\n\t} catch (e) {\n\t\tif (e instanceof InvalidAlgorithmError)\n\t\t\tthrow (e);\n\t\tthrow (new SignatureParseError(type, format, e));\n\t}\n};\n\nfunction parseOneNum(data, type, format, opts) {\n\tif (format === 'ssh') {\n\t\ttry {\n\t\t\tvar buf = new SSHBuffer({buffer: data});\n\t\t\tvar head = buf.readString();\n\t\t} catch (e) {\n\t\t\t/* fall through */\n\t\t}\n\t\tif (buf !== undefined) {\n\t\t\tvar msg = 'SSH signature does not match expected ' +\n\t\t\t 'type (expected ' + type + ', got ' + head + ')';\n\t\t\tswitch (head) {\n\t\t\tcase 'ssh-rsa':\n\t\t\t\tassert.strictEqual(type, 'rsa', msg);\n\t\t\t\topts.hashAlgo = 'sha1';\n\t\t\t\tbreak;\n\t\t\tcase 'rsa-sha2-256':\n\t\t\t\tassert.strictEqual(type, 'rsa', msg);\n\t\t\t\topts.hashAlgo = 'sha256';\n\t\t\t\tbreak;\n\t\t\tcase 'rsa-sha2-512':\n\t\t\t\tassert.strictEqual(type, 'rsa', msg);\n\t\t\t\topts.hashAlgo = 'sha512';\n\t\t\t\tbreak;\n\t\t\tcase 'ssh-ed25519':\n\t\t\t\tassert.strictEqual(type, 'ed25519', msg);\n\t\t\t\topts.hashAlgo = 'sha512';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow (new Error('Unknown SSH signature ' +\n\t\t\t\t 'type: ' + head));\n\t\t\t}\n\t\t\tvar sig = buf.readPart();\n\t\t\tassert.ok(buf.atEnd(), 'extra trailing bytes');\n\t\t\tsig.name = 'sig';\n\t\t\topts.parts.push(sig);\n\t\t\treturn (new Signature(opts));\n\t\t}\n\t}\n\topts.parts.push({name: 'sig', data: data});\n\treturn (new Signature(opts));\n}\n\nfunction parseDSAasn1(data, type, format, opts) {\n\tvar der = new asn1.BerReader(data);\n\tder.readSequence();\n\tvar r = der.readString(asn1.Ber.Integer, true);\n\tvar s = der.readString(asn1.Ber.Integer, true);\n\n\topts.parts.push({name: 'r', data: utils.mpNormalize(r)});\n\topts.parts.push({name: 's', data: utils.mpNormalize(s)});\n\n\treturn (new Signature(opts));\n}\n\nfunction parseDSA(data, type, format, opts) {\n\tif (data.length != 40) {\n\t\tvar buf = new SSHBuffer({buffer: data});\n\t\tvar d = buf.readBuffer();\n\t\tif (d.toString('ascii') === 'ssh-dss')\n\t\t\td = buf.readBuffer();\n\t\tassert.ok(buf.atEnd(), 'extra trailing bytes');\n\t\tassert.strictEqual(d.length, 40, 'invalid inner length');\n\t\tdata = d;\n\t}\n\topts.parts.push({name: 'r', data: data.slice(0, 20)});\n\topts.parts.push({name: 's', data: data.slice(20, 40)});\n\treturn (new Signature(opts));\n}\n\nfunction parseECDSA(data, type, format, opts) {\n\tvar buf = new SSHBuffer({buffer: data});\n\n\tvar r, s;\n\tvar inner = buf.readBuffer();\n\tvar stype = inner.toString('ascii');\n\tif (stype.slice(0, 6) === 'ecdsa-') {\n\t\tvar parts = stype.split('-');\n\t\tassert.strictEqual(parts[0], 'ecdsa');\n\t\tassert.strictEqual(parts[1], 'sha2');\n\t\topts.curve = parts[2];\n\t\tswitch (opts.curve) {\n\t\tcase 'nistp256':\n\t\t\topts.hashAlgo = 'sha256';\n\t\t\tbreak;\n\t\tcase 'nistp384':\n\t\t\topts.hashAlgo = 'sha384';\n\t\t\tbreak;\n\t\tcase 'nistp521':\n\t\t\topts.hashAlgo = 'sha512';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow (new Error('Unsupported ECDSA curve: ' +\n\t\t\t opts.curve));\n\t\t}\n\t\tinner = buf.readBuffer();\n\t\tassert.ok(buf.atEnd(), 'extra trailing bytes on outer');\n\t\tbuf = new SSHBuffer({buffer: inner});\n\t\tr = buf.readPart();\n\t} else {\n\t\tr = {data: inner};\n\t}\n\n\ts = buf.readPart();\n\tassert.ok(buf.atEnd(), 'extra trailing bytes');\n\n\tr.name = 'r';\n\ts.name = 's';\n\n\topts.parts.push(r);\n\topts.parts.push(s);\n\treturn (new Signature(opts));\n}\n\nSignature.isSignature = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Signature, ver));\n};\n\n/*\n * API versions for Signature:\n * [1,0] -- initial ver\n * [2,0] -- support for rsa in full ssh format, compat with sshpk-agent\n * hashAlgorithm property\n * [2,1] -- first tagged version\n */\nSignature.prototype._sshpkApiVersion = [2, 1];\n\nSignature._oldVersionDetect = function (obj) {\n\tassert.func(obj.toBuffer);\n\tif (obj.hasOwnProperty('hashAlgorithm'))\n\t\treturn ([2, 0]);\n\treturn ([1, 0]);\n};\n","// Copyright 2015 Joyent, Inc.\n\nmodule.exports = SSHBuffer;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\n\nfunction SSHBuffer(opts) {\n\tassert.object(opts, 'options');\n\tif (opts.buffer !== undefined)\n\t\tassert.buffer(opts.buffer, 'options.buffer');\n\n\tthis._size = opts.buffer ? opts.buffer.length : 1024;\n\tthis._buffer = opts.buffer || Buffer.alloc(this._size);\n\tthis._offset = 0;\n}\n\nSSHBuffer.prototype.toBuffer = function () {\n\treturn (this._buffer.slice(0, this._offset));\n};\n\nSSHBuffer.prototype.atEnd = function () {\n\treturn (this._offset >= this._buffer.length);\n};\n\nSSHBuffer.prototype.remainder = function () {\n\treturn (this._buffer.slice(this._offset));\n};\n\nSSHBuffer.prototype.skip = function (n) {\n\tthis._offset += n;\n};\n\nSSHBuffer.prototype.expand = function () {\n\tthis._size *= 2;\n\tvar buf = Buffer.alloc(this._size);\n\tthis._buffer.copy(buf, 0);\n\tthis._buffer = buf;\n};\n\nSSHBuffer.prototype.readPart = function () {\n\treturn ({data: this.readBuffer()});\n};\n\nSSHBuffer.prototype.readBuffer = function () {\n\tvar len = this._buffer.readUInt32BE(this._offset);\n\tthis._offset += 4;\n\tassert.ok(this._offset + len <= this._buffer.length,\n\t 'length out of bounds at +0x' + this._offset.toString(16) +\n\t ' (data truncated?)');\n\tvar buf = this._buffer.slice(this._offset, this._offset + len);\n\tthis._offset += len;\n\treturn (buf);\n};\n\nSSHBuffer.prototype.readString = function () {\n\treturn (this.readBuffer().toString());\n};\n\nSSHBuffer.prototype.readCString = function () {\n\tvar offset = this._offset;\n\twhile (offset < this._buffer.length &&\n\t this._buffer[offset] !== 0x00)\n\t\toffset++;\n\tassert.ok(offset < this._buffer.length, 'c string does not terminate');\n\tvar str = this._buffer.slice(this._offset, offset).toString();\n\tthis._offset = offset + 1;\n\treturn (str);\n};\n\nSSHBuffer.prototype.readInt = function () {\n\tvar v = this._buffer.readUInt32BE(this._offset);\n\tthis._offset += 4;\n\treturn (v);\n};\n\nSSHBuffer.prototype.readInt64 = function () {\n\tassert.ok(this._offset + 8 < this._buffer.length,\n\t 'buffer not long enough to read Int64');\n\tvar v = this._buffer.slice(this._offset, this._offset + 8);\n\tthis._offset += 8;\n\treturn (v);\n};\n\nSSHBuffer.prototype.readChar = function () {\n\tvar v = this._buffer[this._offset++];\n\treturn (v);\n};\n\nSSHBuffer.prototype.writeBuffer = function (buf) {\n\twhile (this._offset + 4 + buf.length > this._size)\n\t\tthis.expand();\n\tthis._buffer.writeUInt32BE(buf.length, this._offset);\n\tthis._offset += 4;\n\tbuf.copy(this._buffer, this._offset);\n\tthis._offset += buf.length;\n};\n\nSSHBuffer.prototype.writeString = function (str) {\n\tthis.writeBuffer(Buffer.from(str, 'utf8'));\n};\n\nSSHBuffer.prototype.writeCString = function (str) {\n\twhile (this._offset + 1 + str.length > this._size)\n\t\tthis.expand();\n\tthis._buffer.write(str, this._offset);\n\tthis._offset += str.length;\n\tthis._buffer[this._offset++] = 0;\n};\n\nSSHBuffer.prototype.writeInt = function (v) {\n\twhile (this._offset + 4 > this._size)\n\t\tthis.expand();\n\tthis._buffer.writeUInt32BE(v, this._offset);\n\tthis._offset += 4;\n};\n\nSSHBuffer.prototype.writeInt64 = function (v) {\n\tassert.buffer(v, 'value');\n\tif (v.length > 8) {\n\t\tvar lead = v.slice(0, v.length - 8);\n\t\tfor (var i = 0; i < lead.length; ++i) {\n\t\t\tassert.strictEqual(lead[i], 0,\n\t\t\t 'must fit in 64 bits of precision');\n\t\t}\n\t\tv = v.slice(v.length - 8, v.length);\n\t}\n\twhile (this._offset + 8 > this._size)\n\t\tthis.expand();\n\tv.copy(this._buffer, this._offset);\n\tthis._offset += 8;\n};\n\nSSHBuffer.prototype.writeChar = function (v) {\n\twhile (this._offset + 1 > this._size)\n\t\tthis.expand();\n\tthis._buffer[this._offset++] = v;\n};\n\nSSHBuffer.prototype.writePart = function (p) {\n\tthis.writeBuffer(p.data);\n};\n\nSSHBuffer.prototype.write = function (buf) {\n\twhile (this._offset + buf.length > this._size)\n\t\tthis.expand();\n\tbuf.copy(this._buffer, this._offset);\n\tthis._offset += buf.length;\n};\n","// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tbufferSplit: bufferSplit,\n\taddRSAMissing: addRSAMissing,\n\tcalculateDSAPublic: calculateDSAPublic,\n\tcalculateED25519Public: calculateED25519Public,\n\tcalculateX25519Public: calculateX25519Public,\n\tmpNormalize: mpNormalize,\n\tmpDenormalize: mpDenormalize,\n\tecNormalize: ecNormalize,\n\tcountZeros: countZeros,\n\tassertCompatible: assertCompatible,\n\tisCompatible: isCompatible,\n\topensslKeyDeriv: opensslKeyDeriv,\n\topensshCipherInfo: opensshCipherInfo,\n\tpublicFromPrivateECDSA: publicFromPrivateECDSA,\n\tzeroPadToLength: zeroPadToLength,\n\twriteBitString: writeBitString,\n\treadBitString: readBitString,\n\tpbkdf2: pbkdf2\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar PrivateKey = require('./private-key');\nvar Key = require('./key');\nvar crypto = require('crypto');\nvar algs = require('./algs');\nvar asn1 = require('asn1');\n\nvar ec = require('ecc-jsbn/lib/ec');\nvar jsbn = require('jsbn').BigInteger;\nvar nacl = require('tweetnacl');\n\nvar MAX_CLASS_DEPTH = 3;\n\nfunction isCompatible(obj, klass, needVer) {\n\tif (obj === null || typeof (obj) !== 'object')\n\t\treturn (false);\n\tif (needVer === undefined)\n\t\tneedVer = klass.prototype._sshpkApiVersion;\n\tif (obj instanceof klass &&\n\t klass.prototype._sshpkApiVersion[0] == needVer[0])\n\t\treturn (true);\n\tvar proto = Object.getPrototypeOf(obj);\n\tvar depth = 0;\n\twhile (proto.constructor.name !== klass.name) {\n\t\tproto = Object.getPrototypeOf(proto);\n\t\tif (!proto || ++depth > MAX_CLASS_DEPTH)\n\t\t\treturn (false);\n\t}\n\tif (proto.constructor.name !== klass.name)\n\t\treturn (false);\n\tvar ver = proto._sshpkApiVersion;\n\tif (ver === undefined)\n\t\tver = klass._oldVersionDetect(obj);\n\tif (ver[0] != needVer[0] || ver[1] < needVer[1])\n\t\treturn (false);\n\treturn (true);\n}\n\nfunction assertCompatible(obj, klass, needVer, name) {\n\tif (name === undefined)\n\t\tname = 'object';\n\tassert.ok(obj, name + ' must not be null');\n\tassert.object(obj, name + ' must be an object');\n\tif (needVer === undefined)\n\t\tneedVer = klass.prototype._sshpkApiVersion;\n\tif (obj instanceof klass &&\n\t klass.prototype._sshpkApiVersion[0] == needVer[0])\n\t\treturn;\n\tvar proto = Object.getPrototypeOf(obj);\n\tvar depth = 0;\n\twhile (proto.constructor.name !== klass.name) {\n\t\tproto = Object.getPrototypeOf(proto);\n\t\tassert.ok(proto && ++depth <= MAX_CLASS_DEPTH,\n\t\t name + ' must be a ' + klass.name + ' instance');\n\t}\n\tassert.strictEqual(proto.constructor.name, klass.name,\n\t name + ' must be a ' + klass.name + ' instance');\n\tvar ver = proto._sshpkApiVersion;\n\tif (ver === undefined)\n\t\tver = klass._oldVersionDetect(obj);\n\tassert.ok(ver[0] == needVer[0] && ver[1] >= needVer[1],\n\t name + ' must be compatible with ' + klass.name + ' klass ' +\n\t 'version ' + needVer[0] + '.' + needVer[1]);\n}\n\nvar CIPHER_LEN = {\n\t'des-ede3-cbc': { key: 24, iv: 8 },\n\t'aes-128-cbc': { key: 16, iv: 16 },\n\t'aes-256-cbc': { key: 32, iv: 16 }\n};\nvar PKCS5_SALT_LEN = 8;\n\nfunction opensslKeyDeriv(cipher, salt, passphrase, count) {\n\tassert.buffer(salt, 'salt');\n\tassert.buffer(passphrase, 'passphrase');\n\tassert.number(count, 'iteration count');\n\n\tvar clen = CIPHER_LEN[cipher];\n\tassert.object(clen, 'supported cipher');\n\n\tsalt = salt.slice(0, PKCS5_SALT_LEN);\n\n\tvar D, D_prev, bufs;\n\tvar material = Buffer.alloc(0);\n\twhile (material.length < clen.key + clen.iv) {\n\t\tbufs = [];\n\t\tif (D_prev)\n\t\t\tbufs.push(D_prev);\n\t\tbufs.push(passphrase);\n\t\tbufs.push(salt);\n\t\tD = Buffer.concat(bufs);\n\t\tfor (var j = 0; j < count; ++j)\n\t\t\tD = crypto.createHash('md5').update(D).digest();\n\t\tmaterial = Buffer.concat([material, D]);\n\t\tD_prev = D;\n\t}\n\n\treturn ({\n\t key: material.slice(0, clen.key),\n\t iv: material.slice(clen.key, clen.key + clen.iv)\n\t});\n}\n\n/* See: RFC2898 */\nfunction pbkdf2(hashAlg, salt, iterations, size, passphrase) {\n\tvar hkey = Buffer.alloc(salt.length + 4);\n\tsalt.copy(hkey);\n\n\tvar gen = 0, ts = [];\n\tvar i = 1;\n\twhile (gen < size) {\n\t\tvar t = T(i++);\n\t\tgen += t.length;\n\t\tts.push(t);\n\t}\n\treturn (Buffer.concat(ts).slice(0, size));\n\n\tfunction T(I) {\n\t\thkey.writeUInt32BE(I, hkey.length - 4);\n\n\t\tvar hmac = crypto.createHmac(hashAlg, passphrase);\n\t\thmac.update(hkey);\n\n\t\tvar Ti = hmac.digest();\n\t\tvar Uc = Ti;\n\t\tvar c = 1;\n\t\twhile (c++ < iterations) {\n\t\t\thmac = crypto.createHmac(hashAlg, passphrase);\n\t\t\thmac.update(Uc);\n\t\t\tUc = hmac.digest();\n\t\t\tfor (var x = 0; x < Ti.length; ++x)\n\t\t\t\tTi[x] ^= Uc[x];\n\t\t}\n\t\treturn (Ti);\n\t}\n}\n\n/* Count leading zero bits on a buffer */\nfunction countZeros(buf) {\n\tvar o = 0, obit = 8;\n\twhile (o < buf.length) {\n\t\tvar mask = (1 << obit);\n\t\tif ((buf[o] & mask) === mask)\n\t\t\tbreak;\n\t\tobit--;\n\t\tif (obit < 0) {\n\t\t\to++;\n\t\t\tobit = 8;\n\t\t}\n\t}\n\treturn (o*8 + (8 - obit) - 1);\n}\n\nfunction bufferSplit(buf, chr) {\n\tassert.buffer(buf);\n\tassert.string(chr);\n\n\tvar parts = [];\n\tvar lastPart = 0;\n\tvar matches = 0;\n\tfor (var i = 0; i < buf.length; ++i) {\n\t\tif (buf[i] === chr.charCodeAt(matches))\n\t\t\t++matches;\n\t\telse if (buf[i] === chr.charCodeAt(0))\n\t\t\tmatches = 1;\n\t\telse\n\t\t\tmatches = 0;\n\n\t\tif (matches >= chr.length) {\n\t\t\tvar newPart = i + 1;\n\t\t\tparts.push(buf.slice(lastPart, newPart - matches));\n\t\t\tlastPart = newPart;\n\t\t\tmatches = 0;\n\t\t}\n\t}\n\tif (lastPart <= buf.length)\n\t\tparts.push(buf.slice(lastPart, buf.length));\n\n\treturn (parts);\n}\n\nfunction ecNormalize(buf, addZero) {\n\tassert.buffer(buf);\n\tif (buf[0] === 0x00 && buf[1] === 0x04) {\n\t\tif (addZero)\n\t\t\treturn (buf);\n\t\treturn (buf.slice(1));\n\t} else if (buf[0] === 0x04) {\n\t\tif (!addZero)\n\t\t\treturn (buf);\n\t} else {\n\t\twhile (buf[0] === 0x00)\n\t\t\tbuf = buf.slice(1);\n\t\tif (buf[0] === 0x02 || buf[0] === 0x03)\n\t\t\tthrow (new Error('Compressed elliptic curve points ' +\n\t\t\t 'are not supported'));\n\t\tif (buf[0] !== 0x04)\n\t\t\tthrow (new Error('Not a valid elliptic curve point'));\n\t\tif (!addZero)\n\t\t\treturn (buf);\n\t}\n\tvar b = Buffer.alloc(buf.length + 1);\n\tb[0] = 0x0;\n\tbuf.copy(b, 1);\n\treturn (b);\n}\n\nfunction readBitString(der, tag) {\n\tif (tag === undefined)\n\t\ttag = asn1.Ber.BitString;\n\tvar buf = der.readString(tag, true);\n\tassert.strictEqual(buf[0], 0x00, 'bit strings with unused bits are ' +\n\t 'not supported (0x' + buf[0].toString(16) + ')');\n\treturn (buf.slice(1));\n}\n\nfunction writeBitString(der, buf, tag) {\n\tif (tag === undefined)\n\t\ttag = asn1.Ber.BitString;\n\tvar b = Buffer.alloc(buf.length + 1);\n\tb[0] = 0x00;\n\tbuf.copy(b, 1);\n\tder.writeBuffer(b, tag);\n}\n\nfunction mpNormalize(buf) {\n\tassert.buffer(buf);\n\twhile (buf.length > 1 && buf[0] === 0x00 && (buf[1] & 0x80) === 0x00)\n\t\tbuf = buf.slice(1);\n\tif ((buf[0] & 0x80) === 0x80) {\n\t\tvar b = Buffer.alloc(buf.length + 1);\n\t\tb[0] = 0x00;\n\t\tbuf.copy(b, 1);\n\t\tbuf = b;\n\t}\n\treturn (buf);\n}\n\nfunction mpDenormalize(buf) {\n\tassert.buffer(buf);\n\twhile (buf.length > 1 && buf[0] === 0x00)\n\t\tbuf = buf.slice(1);\n\treturn (buf);\n}\n\nfunction zeroPadToLength(buf, len) {\n\tassert.buffer(buf);\n\tassert.number(len);\n\twhile (buf.length > len) {\n\t\tassert.equal(buf[0], 0x00);\n\t\tbuf = buf.slice(1);\n\t}\n\twhile (buf.length < len) {\n\t\tvar b = Buffer.alloc(buf.length + 1);\n\t\tb[0] = 0x00;\n\t\tbuf.copy(b, 1);\n\t\tbuf = b;\n\t}\n\treturn (buf);\n}\n\nfunction bigintToMpBuf(bigint) {\n\tvar buf = Buffer.from(bigint.toByteArray());\n\tbuf = mpNormalize(buf);\n\treturn (buf);\n}\n\nfunction calculateDSAPublic(g, p, x) {\n\tassert.buffer(g);\n\tassert.buffer(p);\n\tassert.buffer(x);\n\tg = new jsbn(g);\n\tp = new jsbn(p);\n\tx = new jsbn(x);\n\tvar y = g.modPow(x, p);\n\tvar ybuf = bigintToMpBuf(y);\n\treturn (ybuf);\n}\n\nfunction calculateED25519Public(k) {\n\tassert.buffer(k);\n\n\tvar kp = nacl.sign.keyPair.fromSeed(new Uint8Array(k));\n\treturn (Buffer.from(kp.publicKey));\n}\n\nfunction calculateX25519Public(k) {\n\tassert.buffer(k);\n\n\tvar kp = nacl.box.keyPair.fromSeed(new Uint8Array(k));\n\treturn (Buffer.from(kp.publicKey));\n}\n\nfunction addRSAMissing(key) {\n\tassert.object(key);\n\tassertCompatible(key, PrivateKey, [1, 1]);\n\n\tvar d = new jsbn(key.part.d.data);\n\tvar buf;\n\n\tif (!key.part.dmodp) {\n\t\tvar p = new jsbn(key.part.p.data);\n\t\tvar dmodp = d.mod(p.subtract(1));\n\n\t\tbuf = bigintToMpBuf(dmodp);\n\t\tkey.part.dmodp = {name: 'dmodp', data: buf};\n\t\tkey.parts.push(key.part.dmodp);\n\t}\n\tif (!key.part.dmodq) {\n\t\tvar q = new jsbn(key.part.q.data);\n\t\tvar dmodq = d.mod(q.subtract(1));\n\n\t\tbuf = bigintToMpBuf(dmodq);\n\t\tkey.part.dmodq = {name: 'dmodq', data: buf};\n\t\tkey.parts.push(key.part.dmodq);\n\t}\n}\n\nfunction publicFromPrivateECDSA(curveName, priv) {\n\tassert.string(curveName, 'curveName');\n\tassert.buffer(priv);\n\tvar params = algs.curves[curveName];\n\tvar p = new jsbn(params.p);\n\tvar a = new jsbn(params.a);\n\tvar b = new jsbn(params.b);\n\tvar curve = new ec.ECCurveFp(p, a, b);\n\tvar G = curve.decodePointHex(params.G.toString('hex'));\n\n\tvar d = new jsbn(mpNormalize(priv));\n\tvar pub = G.multiply(d);\n\tpub = Buffer.from(curve.encodePointHex(pub), 'hex');\n\n\tvar parts = [];\n\tparts.push({name: 'curve', data: Buffer.from(curveName)});\n\tparts.push({name: 'Q', data: pub});\n\n\tvar key = new Key({type: 'ecdsa', curve: curve, parts: parts});\n\treturn (key);\n}\n\nfunction opensshCipherInfo(cipher) {\n\tvar inf = {};\n\tswitch (cipher) {\n\tcase '3des-cbc':\n\t\tinf.keySize = 24;\n\t\tinf.blockSize = 8;\n\t\tinf.opensslName = 'des-ede3-cbc';\n\t\tbreak;\n\tcase 'blowfish-cbc':\n\t\tinf.keySize = 16;\n\t\tinf.blockSize = 8;\n\t\tinf.opensslName = 'bf-cbc';\n\t\tbreak;\n\tcase 'aes128-cbc':\n\tcase 'aes128-ctr':\n\tcase 'aes128-gcm@openssh.com':\n\t\tinf.keySize = 16;\n\t\tinf.blockSize = 16;\n\t\tinf.opensslName = 'aes-128-' + cipher.slice(7, 10);\n\t\tbreak;\n\tcase 'aes192-cbc':\n\tcase 'aes192-ctr':\n\tcase 'aes192-gcm@openssh.com':\n\t\tinf.keySize = 24;\n\t\tinf.blockSize = 16;\n\t\tinf.opensslName = 'aes-192-' + cipher.slice(7, 10);\n\t\tbreak;\n\tcase 'aes256-cbc':\n\tcase 'aes256-ctr':\n\tcase 'aes256-gcm@openssh.com':\n\t\tinf.keySize = 32;\n\t\tinf.blockSize = 16;\n\t\tinf.opensslName = 'aes-256-' + cipher.slice(7, 10);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error(\n\t\t 'Unsupported openssl cipher \"' + cipher + '\"'));\n\t}\n\treturn (inf);\n}\n","'use strict';\n\nvar isNative = /\\.node$/;\n\nfunction forEach(obj, callback) {\n for ( var key in obj ) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) {\n continue;\n }\n callback(key);\n }\n}\n\nfunction assign(target, source) {\n forEach(source, function (key) {\n target[key] = source[key];\n });\n return target;\n}\n\nfunction clearCache(requireCache) {\n forEach(requireCache, function (resolvedPath) {\n if (!isNative.test(resolvedPath)) {\n delete requireCache[resolvedPath];\n }\n });\n}\n\nmodule.exports = function (requireCache, callback, callbackForModulesToKeep, module) {\n\n var originalCache = assign({}, requireCache);\n clearCache(requireCache);\n\n if (callbackForModulesToKeep) {\n\n var originalModuleChildren = module.children ? module.children.slice() : false; // Creates a shallow copy of module.children\n\n callbackForModulesToKeep();\n\n // Lists the cache entries made by callbackForModulesToKeep()\n var modulesToKeep = [];\n forEach(requireCache, function (key) {\n modulesToKeep.push(key);\n });\n\n // Discards the modules required in callbackForModulesToKeep()\n clearCache(requireCache);\n\n if (module.children) { // Only true for node.js\n module.children = originalModuleChildren; // Removes last references to modules required in callbackForModulesToKeep() -> No memory leak\n }\n\n // Takes the cache entries of the original cache in case the modules where required before\n for ( var i = 0; i < modulesToKeep.length; i+=1 ) {\n if (originalCache[modulesToKeep[i]]) {\n requireCache[modulesToKeep[i]] = originalCache[modulesToKeep[i]];\n }\n }\n\n }\n\n var freshModule = callback();\n\n var stealthCache = callbackForModulesToKeep ? assign({}, requireCache) : false;\n\n clearCache(requireCache);\n\n if (callbackForModulesToKeep) {\n // In case modules to keep were required inside the stealthy require for the first time, copy them to the restored cache\n for ( var k = 0; k < modulesToKeep.length; k+=1 ) {\n if (stealthCache[modulesToKeep[k]]) {\n requireCache[modulesToKeep[k]] = stealthCache[modulesToKeep[k]];\n }\n }\n }\n\n assign(requireCache, originalCache);\n\n return freshModule;\n\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || checkTypeSupport('arraybuffer')\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && checkTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + Buffer.from(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\tself._socketTimeout = null\n\tself._socketTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tif ('timeout' in opts && opts.timeout !== 0) {\n\t\tself.setTimeout(opts.timeout)\n\t}\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n body = new Blob(self._body, {\n type: (headersObj['content-type'] || {}).value || ''\n });\n }\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._resetTimers(false)\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself._resetTimers(true)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself._resetTimers(true)\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tself._resetTimers(false)\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress(self._resetTimers.bind(self))\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._resetTimers.bind(self))\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype._resetTimers = function (done) {\n\tvar self = this\n\n\tglobal.clearTimeout(self._socketTimer)\n\tself._socketTimer = null\n\n\tif (done) {\n\t\tglobal.clearTimeout(self._fetchTimer)\n\t\tself._fetchTimer = null\n\t} else if (self._socketTimeout) {\n\t\tself._socketTimer = global.setTimeout(function () {\n\t\t\tself.emit('timeout')\n\t\t}, self._socketTimeout)\n\t}\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function (err) {\n\tvar self = this\n\tself._destroyed = true\n\tself._resetTimers(true)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n\n\tif (err)\n\t\tself.emit('error', err)\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.setTimeout = function (timeout, cb) {\n\tvar self = this\n\n\tif (cb)\n\t\tself.once('timeout', cb)\n\n\tself._socketTimeout = timeout\n\tself._resetTimers(false)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, resetTimers) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\tresetTimers(false)\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(Buffer.from(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tresetTimers(result.done)\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(Buffer.from(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tresetTimers(true)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function (resetTimers) {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text':\n\t\t\tresponse = xhr.responseText\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = Buffer.alloc(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tresetTimers(true)\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tresetTimers(true)\n\t\tself.push(null)\n\t}\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","var bind = Function.prototype.bind,\n slice = Array.prototype.slice,\n toString = Object.prototype.toString;\n\nexports.bind = function (func, that) {\n\tvar args = slice.call(arguments, 2);\n\n\tif (bind) {\n\t\targs.unshift(that);\n\n\t\treturn bind.apply(func, args);\n\t}\n\n\treturn function () {\n\t\treturn func.apply(that, args.concat(slice.call(arguments)));\n\t};\n}\n\nexports.slice = function (object, begin, end) {\n\treturn slice.call(object, begin, end);\n};\n\nexports.toString = function (object) {\n\treturn toString.call(object);\n};\n\n\nexports.isNull = nativeTypeChecker('Null');\nexports.isDate = nativeTypeChecker('Date');\nexports.isMath = nativeTypeChecker('Math');\nexports.isJSON = nativeTypeChecker('JSON');\nexports.isError = nativeTypeChecker('Error');\nexports.isArray = Array.isArray || nativeTypeChecker('Array');\nexports.isObject = nativeTypeChecker('Object');\nexports.isRegExp = nativeTypeChecker('RegExp');\nexports.isNumber = nativeTypeChecker('Number');\nexports.isString = nativeTypeChecker('String');\nexports.isBoolean = nativeTypeChecker('Boolean');\nexports.isFunction = nativeTypeChecker('Function');\nexports.isArguments = nativeTypeChecker('Arguments');\nexports.isUndefined = nativeTypeChecker('Undefined');\n\nfunction nativeTypeChecker (type) {\n\ttype = '[object ' + type + ']';\n\n\treturn function (object) {return toString.call(object) === type;};\n}\n\n\nexports.isValid = function (object) {\n\treturn !exports.isInvalid(object);\n}\n\nexports.isInvalid = function (object) {\n\treturn exports.isNull(object) || exports.isUndefined(object);\n}\n\n\nexports.isImmutable = function (object) {\n\treturn !exports.isMutable(object);\n};\n\nexports.isMutable = function (object) {\n\treturn object &&\n\t\t!exports.isNumber(object) &&\n\t\t!exports.isString(object) &&\n\t\t!exports.isBoolean(object);\n};\n\n\nexports.isEnumerable = function (object) {\n\tif (!object) return false;\n\n\tif (exports.isNumber(object)) return exports.isInteger(object);\n\n\tif (exports.isInteger(object.length)) return object.length >= 0;\n\n\treturn exports.isEnumerableObject(object);\n};\n\nexports.isEnumerableObject = function (object) {\n\tfor (var _ in object) return true;\n\n\treturn false;\n};\n\nexports.isEmpty = function (object) {\n\treturn exports.isObject(object) ?\n\t\t!exports.isEnumerableObject(object) :\n\t\t!exports.isEnumerable(object);\n}\n\n\nexports.isFiniteNumber = function (number) {\n\treturn exports.isNumber(number) && isFinite(number);\n};\n\nexports.isInteger = function (number) {\n\treturn exports.isFiniteNumber(number) && Math.floor(number) === number;\n};\n\nexports.isVague = function (object) {\n\treturn object && typeof object === 'object';\n};\n\nexports.isList = function (list) {\n\treturn (\n\t\texports.isVague(list) &&\n\t\texports.isInteger(list.length) && list.length >= 0);\n};\n\n\nexports.isNaN = isNaN;\n\n\nexports.nativeTypeOf = function (object) {\n\tvar nativeType = object.toString(object);\n\n\treturn nativeType.substring(8, nativeType.length - 1);\n};\n\nexports.typeOf = function (object) {\n\treturn exports.isObject(object) ?\n\t\tobject.constructor.name || 'Object' :\n\t\texports.nativeTypeOf(object);\n};\n\n\nexports.safeApply = function (func, args, that) {\n\treturn exports.isFunction(func) ?\n\t\tfunc.apply(that || this, args) :\n\t\tundefined;\n};\n\n\nexports.enumerate = function (object, iterator, that, _ignoreForEach) {\n\tif (!object) return object;\n\n\tthat = that || this;\n\n\tif (!_ignoreForEach && exports.isFunction(object.forEach))\n\t\treturn object.forEach(iterator, that);\n\n\tvar key = 0, end = object.length;\n\n\tif (exports.isString(object)) {\n\t\tfor (; key < end; key += 1) iterator.call(that, object.charAt(key), key, object);\n\n\t} if (exports.isList(object)) {\n\t\tfor (; key < end; key += 1) iterator.call(that, object[key], key, object);\n\n\t} else if (exports.isInteger(object)) {\n\t\tif (object < 0) {\n\t\t\tend = 0;\n\t\t\tkey = object;\n\n\t\t} else end = object;\n\n\t\tfor (; key < end; key += 1) iterator.call(that, key, Math.abs(key), object);\n\n\t} else exports.enumerateObject(object, iterator, that);\n\n\treturn object;\n};\n\nexports.enumerateObject = function (object, iterator, that) {\n\tvar key;\n\n\tfor (key in object) iterator.call(that, object[key], key, object);\n\n\treturn object;\n}\n\n\nexports.assignAll = function (target, giver, filter, that, _method) {\n\tif (!exports.isMutable(target)) return target;\n\n\t_method = _method === 'enumerate' ? _method : 'enumerateObject';\n\n\texports[_method](giver, function (value, key) {\n\t\tif (!exports.safeApply(filter, arguments, that || target)) {\n\t\t\ttarget[key] = value;\n\t\t}\n\t});\n\n\treturn target;\n};\n\nexports.assignList = function (target, giver, filter, that) {\n\treturn exports.assignAll(target, giver, filter, that, 'enumerate');\n};\n\nexports.assign = function (target, giver, filter, that) {\n\treturn exports.assignAll(target, giver, function (_, key) {\n\t\tif (!giver.hasOwnProperty(key)) return true;\n\n\t\treturn exports.safeApply(filter, arguments, that || this);\n\t}, that);\n};\n\n\nexports.toArray = function (object, begin, end) {\n\tif (exports.isArray()) return exports.isInteger(begin) ?\n\t\texports.slice(object, begin, end) :\n\t\tobject;\n\n\tif (exports.isArguments(object) || exports.isString(object))\n\t\treturn exports.slice(object, begin, end);\n\n\tif (!exports.isList(object)) return undefined;\n\n\tif (!exports.isInteger(end)) end = object.length;\n\n\tbegin = begin || 0;\n\n\treturn exports.assignList([], object, function (_, i) {\n\t\treturn begin > i || i >= end;\n\t});\n};\n","/*!\n * Copyright (c) 2015, Salesforce.com, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of Salesforce.com nor the names of its contributors may\n * be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n'use strict';\nvar net = require('net');\nvar urlParse = require('url').parse;\nvar util = require('util');\nvar pubsuffix = require('./pubsuffix-psl');\nvar Store = require('./store').Store;\nvar MemoryCookieStore = require('./memstore').MemoryCookieStore;\nvar pathMatch = require('./pathMatch').pathMatch;\nvar VERSION = require('./version');\n\nvar punycode;\ntry {\n punycode = require('punycode');\n} catch(e) {\n console.warn(\"tough-cookie: can't load punycode; won't use punycode for domain normalization\");\n}\n\n// From RFC6265 S4.1.1\n// note that it excludes \\x3B \";\"\nvar COOKIE_OCTETS = /^[\\x21\\x23-\\x2B\\x2D-\\x3A\\x3C-\\x5B\\x5D-\\x7E]+$/;\n\nvar CONTROL_CHARS = /[\\x00-\\x1F]/;\n\n// From Chromium // '\\r', '\\n' and '\\0' should be treated as a terminator in\n// the \"relaxed\" mode, see:\n// https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60\nvar TERMINATORS = ['\\n', '\\r', '\\0'];\n\n// RFC6265 S4.1.1 defines path value as 'any CHAR except CTLs or \";\"'\n// Note ';' is \\x3B\nvar PATH_VALUE = /[\\x20-\\x3A\\x3C-\\x7E]+/;\n\n// date-time parsing constants (RFC6265 S5.1.1)\n\nvar DATE_DELIM = /[\\x09\\x20-\\x2F\\x3B-\\x40\\x5B-\\x60\\x7B-\\x7E]/;\n\nvar MONTH_TO_NUM = {\n jan:0, feb:1, mar:2, apr:3, may:4, jun:5,\n jul:6, aug:7, sep:8, oct:9, nov:10, dec:11\n};\nvar NUM_TO_MONTH = [\n 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'\n];\nvar NUM_TO_DAY = [\n 'Sun','Mon','Tue','Wed','Thu','Fri','Sat'\n];\n\nvar MAX_TIME = 2147483647000; // 31-bit max\nvar MIN_TIME = 0; // 31-bit min\n\n/*\n * Parses a Natural number (i.e., non-negative integer) with either the\n * *DIGIT ( non-digit *OCTET )\n * or\n * *DIGIT\n * grammar (RFC6265 S5.1.1).\n *\n * The \"trailingOK\" boolean controls if the grammar accepts a\n * \"( non-digit *OCTET )\" trailer.\n */\nfunction parseDigits(token, minDigits, maxDigits, trailingOK) {\n var count = 0;\n while (count < token.length) {\n var c = token.charCodeAt(count);\n // \"non-digit = %x00-2F / %x3A-FF\"\n if (c <= 0x2F || c >= 0x3A) {\n break;\n }\n count++;\n }\n\n // constrain to a minimum and maximum number of digits.\n if (count < minDigits || count > maxDigits) {\n return null;\n }\n\n if (!trailingOK && count != token.length) {\n return null;\n }\n\n return parseInt(token.substr(0,count), 10);\n}\n\nfunction parseTime(token) {\n var parts = token.split(':');\n var result = [0,0,0];\n\n /* RF6256 S5.1.1:\n * time = hms-time ( non-digit *OCTET )\n * hms-time = time-field \":\" time-field \":\" time-field\n * time-field = 1*2DIGIT\n */\n\n if (parts.length !== 3) {\n return null;\n }\n\n for (var i = 0; i < 3; i++) {\n // \"time-field\" must be strictly \"1*2DIGIT\", HOWEVER, \"hms-time\" can be\n // followed by \"( non-digit *OCTET )\" so therefore the last time-field can\n // have a trailer\n var trailingOK = (i == 2);\n var num = parseDigits(parts[i], 1, 2, trailingOK);\n if (num === null) {\n return null;\n }\n result[i] = num;\n }\n\n return result;\n}\n\nfunction parseMonth(token) {\n token = String(token).substr(0,3).toLowerCase();\n var num = MONTH_TO_NUM[token];\n return num >= 0 ? num : null;\n}\n\n/*\n * RFC6265 S5.1.1 date parser (see RFC for full grammar)\n */\nfunction parseDate(str) {\n if (!str) {\n return;\n }\n\n /* RFC6265 S5.1.1:\n * 2. Process each date-token sequentially in the order the date-tokens\n * appear in the cookie-date\n */\n var tokens = str.split(DATE_DELIM);\n if (!tokens) {\n return;\n }\n\n var hour = null;\n var minute = null;\n var second = null;\n var dayOfMonth = null;\n var month = null;\n var year = null;\n\n for (var i=0; i= 70 && year <= 99) {\n year += 1900;\n } else if (year >= 0 && year <= 69) {\n year += 2000;\n }\n }\n }\n }\n\n /* RFC 6265 S5.1.1\n * \"5. Abort these steps and fail to parse the cookie-date if:\n * * at least one of the found-day-of-month, found-month, found-\n * year, or found-time flags is not set,\n * * the day-of-month-value is less than 1 or greater than 31,\n * * the year-value is less than 1601,\n * * the hour-value is greater than 23,\n * * the minute-value is greater than 59, or\n * * the second-value is greater than 59.\n * (Note that leap seconds cannot be represented in this syntax.)\"\n *\n * So, in order as above:\n */\n if (\n dayOfMonth === null || month === null || year === null || second === null ||\n dayOfMonth < 1 || dayOfMonth > 31 ||\n year < 1601 ||\n hour > 23 ||\n minute > 59 ||\n second > 59\n ) {\n return;\n }\n\n return new Date(Date.UTC(year, month, dayOfMonth, hour, minute, second));\n}\n\nfunction formatDate(date) {\n var d = date.getUTCDate(); d = d >= 10 ? d : '0'+d;\n var h = date.getUTCHours(); h = h >= 10 ? h : '0'+h;\n var m = date.getUTCMinutes(); m = m >= 10 ? m : '0'+m;\n var s = date.getUTCSeconds(); s = s >= 10 ? s : '0'+s;\n return NUM_TO_DAY[date.getUTCDay()] + ', ' +\n d+' '+ NUM_TO_MONTH[date.getUTCMonth()] +' '+ date.getUTCFullYear() +' '+\n h+':'+m+':'+s+' GMT';\n}\n\n// S5.1.2 Canonicalized Host Names\nfunction canonicalDomain(str) {\n if (str == null) {\n return null;\n }\n str = str.trim().replace(/^\\./,''); // S4.1.2.3 & S5.2.3: ignore leading .\n\n // convert to IDN if any non-ASCII characters\n if (punycode && /[^\\u0001-\\u007f]/.test(str)) {\n str = punycode.toASCII(str);\n }\n\n return str.toLowerCase();\n}\n\n// S5.1.3 Domain Matching\nfunction domainMatch(str, domStr, canonicalize) {\n if (str == null || domStr == null) {\n return null;\n }\n if (canonicalize !== false) {\n str = canonicalDomain(str);\n domStr = canonicalDomain(domStr);\n }\n\n /*\n * \"The domain string and the string are identical. (Note that both the\n * domain string and the string will have been canonicalized to lower case at\n * this point)\"\n */\n if (str == domStr) {\n return true;\n }\n\n /* \"All of the following [three] conditions hold:\" (order adjusted from the RFC) */\n\n /* \"* The string is a host name (i.e., not an IP address).\" */\n if (net.isIP(str)) {\n return false;\n }\n\n /* \"* The domain string is a suffix of the string\" */\n var idx = str.indexOf(domStr);\n if (idx <= 0) {\n return false; // it's a non-match (-1) or prefix (0)\n }\n\n // e.g \"a.b.c\".indexOf(\"b.c\") === 2\n // 5 === 3+2\n if (str.length !== domStr.length + idx) { // it's not a suffix\n return false;\n }\n\n /* \"* The last character of the string that is not included in the domain\n * string is a %x2E (\".\") character.\" */\n if (str.substr(idx-1,1) !== '.') {\n return false;\n }\n\n return true;\n}\n\n\n// RFC6265 S5.1.4 Paths and Path-Match\n\n/*\n * \"The user agent MUST use an algorithm equivalent to the following algorithm\n * to compute the default-path of a cookie:\"\n *\n * Assumption: the path (and not query part or absolute uri) is passed in.\n */\nfunction defaultPath(path) {\n // \"2. If the uri-path is empty or if the first character of the uri-path is not\n // a %x2F (\"/\") character, output %x2F (\"/\") and skip the remaining steps.\n if (!path || path.substr(0,1) !== \"/\") {\n return \"/\";\n }\n\n // \"3. If the uri-path contains no more than one %x2F (\"/\") character, output\n // %x2F (\"/\") and skip the remaining step.\"\n if (path === \"/\") {\n return path;\n }\n\n var rightSlash = path.lastIndexOf(\"/\");\n if (rightSlash === 0) {\n return \"/\";\n }\n\n // \"4. Output the characters of the uri-path from the first character up to,\n // but not including, the right-most %x2F (\"/\").\"\n return path.slice(0, rightSlash);\n}\n\nfunction trimTerminator(str) {\n for (var t = 0; t < TERMINATORS.length; t++) {\n var terminatorIdx = str.indexOf(TERMINATORS[t]);\n if (terminatorIdx !== -1) {\n str = str.substr(0,terminatorIdx);\n }\n }\n\n return str;\n}\n\nfunction parseCookiePair(cookiePair, looseMode) {\n cookiePair = trimTerminator(cookiePair);\n\n var firstEq = cookiePair.indexOf('=');\n if (looseMode) {\n if (firstEq === 0) { // '=' is immediately at start\n cookiePair = cookiePair.substr(1);\n firstEq = cookiePair.indexOf('='); // might still need to split on '='\n }\n } else { // non-loose mode\n if (firstEq <= 0) { // no '=' or is at start\n return; // needs to have non-empty \"cookie-name\"\n }\n }\n\n var cookieName, cookieValue;\n if (firstEq <= 0) {\n cookieName = \"\";\n cookieValue = cookiePair.trim();\n } else {\n cookieName = cookiePair.substr(0, firstEq).trim();\n cookieValue = cookiePair.substr(firstEq+1).trim();\n }\n\n if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) {\n return;\n }\n\n var c = new Cookie();\n c.key = cookieName;\n c.value = cookieValue;\n return c;\n}\n\nfunction parse(str, options) {\n if (!options || typeof options !== 'object') {\n options = {};\n }\n str = str.trim();\n\n // We use a regex to parse the \"name-value-pair\" part of S5.2\n var firstSemi = str.indexOf(';'); // S5.2 step 1\n var cookiePair = (firstSemi === -1) ? str : str.substr(0, firstSemi);\n var c = parseCookiePair(cookiePair, !!options.loose);\n if (!c) {\n return;\n }\n\n if (firstSemi === -1) {\n return c;\n }\n\n // S5.2.3 \"unparsed-attributes consist of the remainder of the set-cookie-string\n // (including the %x3B (\";\") in question).\" plus later on in the same section\n // \"discard the first \";\" and trim\".\n var unparsed = str.slice(firstSemi + 1).trim();\n\n // \"If the unparsed-attributes string is empty, skip the rest of these\n // steps.\"\n if (unparsed.length === 0) {\n return c;\n }\n\n /*\n * S5.2 says that when looping over the items \"[p]rocess the attribute-name\n * and attribute-value according to the requirements in the following\n * subsections\" for every item. Plus, for many of the individual attributes\n * in S5.3 it says to use the \"attribute-value of the last attribute in the\n * cookie-attribute-list\". Therefore, in this implementation, we overwrite\n * the previous value.\n */\n var cookie_avs = unparsed.split(';');\n while (cookie_avs.length) {\n var av = cookie_avs.shift().trim();\n if (av.length === 0) { // happens if \";;\" appears\n continue;\n }\n var av_sep = av.indexOf('=');\n var av_key, av_value;\n\n if (av_sep === -1) {\n av_key = av;\n av_value = null;\n } else {\n av_key = av.substr(0,av_sep);\n av_value = av.substr(av_sep+1);\n }\n\n av_key = av_key.trim().toLowerCase();\n\n if (av_value) {\n av_value = av_value.trim();\n }\n\n switch(av_key) {\n case 'expires': // S5.2.1\n if (av_value) {\n var exp = parseDate(av_value);\n // \"If the attribute-value failed to parse as a cookie date, ignore the\n // cookie-av.\"\n if (exp) {\n // over and underflow not realistically a concern: V8's getTime() seems to\n // store something larger than a 32-bit time_t (even with 32-bit node)\n c.expires = exp;\n }\n }\n break;\n\n case 'max-age': // S5.2.2\n if (av_value) {\n // \"If the first character of the attribute-value is not a DIGIT or a \"-\"\n // character ...[or]... If the remainder of attribute-value contains a\n // non-DIGIT character, ignore the cookie-av.\"\n if (/^-?[0-9]+$/.test(av_value)) {\n var delta = parseInt(av_value, 10);\n // \"If delta-seconds is less than or equal to zero (0), let expiry-time\n // be the earliest representable date and time.\"\n c.setMaxAge(delta);\n }\n }\n break;\n\n case 'domain': // S5.2.3\n // \"If the attribute-value is empty, the behavior is undefined. However,\n // the user agent SHOULD ignore the cookie-av entirely.\"\n if (av_value) {\n // S5.2.3 \"Let cookie-domain be the attribute-value without the leading %x2E\n // (\".\") character.\"\n var domain = av_value.trim().replace(/^\\./, '');\n if (domain) {\n // \"Convert the cookie-domain to lower case.\"\n c.domain = domain.toLowerCase();\n }\n }\n break;\n\n case 'path': // S5.2.4\n /*\n * \"If the attribute-value is empty or if the first character of the\n * attribute-value is not %x2F (\"/\"):\n * Let cookie-path be the default-path.\n * Otherwise:\n * Let cookie-path be the attribute-value.\"\n *\n * We'll represent the default-path as null since it depends on the\n * context of the parsing.\n */\n c.path = av_value && av_value[0] === \"/\" ? av_value : null;\n break;\n\n case 'secure': // S5.2.5\n /*\n * \"If the attribute-name case-insensitively matches the string \"Secure\",\n * the user agent MUST append an attribute to the cookie-attribute-list\n * with an attribute-name of Secure and an empty attribute-value.\"\n */\n c.secure = true;\n break;\n\n case 'httponly': // S5.2.6 -- effectively the same as 'secure'\n c.httpOnly = true;\n break;\n\n default:\n c.extensions = c.extensions || [];\n c.extensions.push(av);\n break;\n }\n }\n\n return c;\n}\n\n// avoid the V8 deoptimization monster!\nfunction jsonParse(str) {\n var obj;\n try {\n obj = JSON.parse(str);\n } catch (e) {\n return e;\n }\n return obj;\n}\n\nfunction fromJSON(str) {\n if (!str) {\n return null;\n }\n\n var obj;\n if (typeof str === 'string') {\n obj = jsonParse(str);\n if (obj instanceof Error) {\n return null;\n }\n } else {\n // assume it's an Object\n obj = str;\n }\n\n var c = new Cookie();\n for (var i=0; i 1) {\n var lindex = path.lastIndexOf('/');\n if (lindex === 0) {\n break;\n }\n path = path.substr(0,lindex);\n permutations.push(path);\n }\n permutations.push('/');\n return permutations;\n}\n\nfunction getCookieContext(url) {\n if (url instanceof Object) {\n return url;\n }\n // NOTE: decodeURI will throw on malformed URIs (see GH-32).\n // Therefore, we will just skip decoding for such URIs.\n try {\n url = decodeURI(url);\n }\n catch(err) {\n // Silently swallow error\n }\n\n return urlParse(url);\n}\n\nfunction Cookie(options) {\n options = options || {};\n\n Object.keys(options).forEach(function(prop) {\n if (Cookie.prototype.hasOwnProperty(prop) &&\n Cookie.prototype[prop] !== options[prop] &&\n prop.substr(0,1) !== '_')\n {\n this[prop] = options[prop];\n }\n }, this);\n\n this.creation = this.creation || new Date();\n\n // used to break creation ties in cookieCompare():\n Object.defineProperty(this, 'creationIndex', {\n configurable: false,\n enumerable: false, // important for assert.deepEqual checks\n writable: true,\n value: ++Cookie.cookiesCreated\n });\n}\n\nCookie.cookiesCreated = 0; // incremented each time a cookie is created\n\nCookie.parse = parse;\nCookie.fromJSON = fromJSON;\n\nCookie.prototype.key = \"\";\nCookie.prototype.value = \"\";\n\n// the order in which the RFC has them:\nCookie.prototype.expires = \"Infinity\"; // coerces to literal Infinity\nCookie.prototype.maxAge = null; // takes precedence over expires for TTL\nCookie.prototype.domain = null;\nCookie.prototype.path = null;\nCookie.prototype.secure = false;\nCookie.prototype.httpOnly = false;\nCookie.prototype.extensions = null;\n\n// set by the CookieJar:\nCookie.prototype.hostOnly = null; // boolean when set\nCookie.prototype.pathIsDefault = null; // boolean when set\nCookie.prototype.creation = null; // Date when set; defaulted by Cookie.parse\nCookie.prototype.lastAccessed = null; // Date when set\nObject.defineProperty(Cookie.prototype, 'creationIndex', {\n configurable: true,\n enumerable: false,\n writable: true,\n value: 0\n});\n\nCookie.serializableProperties = Object.keys(Cookie.prototype)\n .filter(function(prop) {\n return !(\n Cookie.prototype[prop] instanceof Function ||\n prop === 'creationIndex' ||\n prop.substr(0,1) === '_'\n );\n });\n\nCookie.prototype.inspect = function inspect() {\n var now = Date.now();\n return 'Cookie=\"'+this.toString() +\n '; hostOnly='+(this.hostOnly != null ? this.hostOnly : '?') +\n '; aAge='+(this.lastAccessed ? (now-this.lastAccessed.getTime())+'ms' : '?') +\n '; cAge='+(this.creation ? (now-this.creation.getTime())+'ms' : '?') +\n '\"';\n};\n\n// Use the new custom inspection symbol to add the custom inspect function if\n// available.\nif (util.inspect.custom) {\n Cookie.prototype[util.inspect.custom] = Cookie.prototype.inspect;\n}\n\nCookie.prototype.toJSON = function() {\n var obj = {};\n\n var props = Cookie.serializableProperties;\n for (var i=0; i= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push({host: options.host, port: options.port, request: req})\n return\n }\n\n // If we are under maxSockets create a new one.\n self.createConnection({host: options.host, port: options.port, request: req})\n}\n\nTunnelingAgent.prototype.createConnection = function createConnection(pending) {\n var self = this\n\n self.createSocket(pending, function(socket) {\n socket.on('free', onFree)\n socket.on('close', onCloseOrRemove)\n socket.on('agentRemove', onCloseOrRemove)\n pending.request.onSocket(socket)\n\n function onFree() {\n self.emit('free', socket, pending.host, pending.port)\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket)\n socket.removeListener('free', onFree)\n socket.removeListener('close', onCloseOrRemove)\n socket.removeListener('agentRemove', onCloseOrRemove)\n }\n })\n}\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this\n var placeholder = {}\n self.sockets.push(placeholder)\n\n var connectOptions = mergeOptions({}, self.proxyOptions,\n { method: 'CONNECT'\n , path: options.host + ':' + options.port\n , agent: false\n }\n )\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {}\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n Buffer.from(connectOptions.proxyAuth).toString('base64')\n }\n\n debug('making CONNECT request')\n var connectReq = self.request(connectOptions)\n connectReq.useChunkedEncodingByDefault = false // for v0.6\n connectReq.once('response', onResponse) // for v0.6\n connectReq.once('upgrade', onUpgrade) // for v0.6\n connectReq.once('connect', onConnect) // for v0.7 or later\n connectReq.once('error', onError)\n connectReq.end()\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head)\n })\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners()\n socket.removeAllListeners()\n\n if (res.statusCode === 200) {\n assert.equal(head.length, 0)\n debug('tunneling connection has established')\n self.sockets[self.sockets.indexOf(placeholder)] = socket\n cb(socket)\n } else {\n debug('tunneling socket could not be established, statusCode=%d', res.statusCode)\n var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode)\n error.code = 'ECONNRESET'\n options.request.emit('error', error)\n self.removeSocket(placeholder)\n }\n }\n\n function onError(cause) {\n connectReq.removeAllListeners()\n\n debug('tunneling socket could not be established, cause=%s\\n', cause.message, cause.stack)\n var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message)\n error.code = 'ECONNRESET'\n options.request.emit('error', error)\n self.removeSocket(placeholder)\n }\n}\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) return\n\n this.sockets.splice(pos, 1)\n\n var pending = this.requests.shift()\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createConnection(pending)\n }\n}\n\nfunction createSecureSocket(options, cb) {\n var self = this\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, mergeOptions({}, self.options,\n { servername: options.host\n , socket: socket\n }\n ))\n self.sockets[self.sockets.indexOf(socket)] = secureSocket\n cb(secureSocket)\n })\n}\n\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i]\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides)\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j]\n if (overrides[k] !== undefined) {\n target[k] = overrides[k]\n }\n }\n }\n }\n return target\n}\n\n\nvar debug\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments)\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0]\n } else {\n args.unshift('TUNNEL:')\n }\n console.error.apply(console, args)\n }\n} else {\n debug = function() {}\n}\nexports.debug = debug // for test\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n mlen = -1;\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n var t, i;\n for (i = 0; i < arguments.length; i++) {\n if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]')\n throw new TypeError('unexpected type ' + t + ', use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\n// TODO: Completely remove this in v0.15.\nif (!nacl.util) {\n nacl.util = {};\n nacl.util.decodeUTF8 = nacl.util.encodeUTF8 = nacl.util.encodeBase64 = nacl.util.decodeBase64 = function() {\n throw new Error('nacl.util moved into separate package: https://github.com/dchest/tweetnacl-util-js');\n };\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return false;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n if (arguments.length !== 2)\n throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?');\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","/** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.URI = global.URI || {})));\n}(this, (function (exports) { 'use strict';\n\nfunction merge() {\n for (var _len = arguments.length, sets = Array(_len), _key = 0; _key < _len; _key++) {\n sets[_key] = arguments[_key];\n }\n\n if (sets.length > 1) {\n sets[0] = sets[0].slice(0, -1);\n var xl = sets.length - 1;\n for (var x = 1; x < xl; ++x) {\n sets[x] = sets[x].slice(1, -1);\n }\n sets[xl] = sets[xl].slice(1);\n return sets.join('');\n } else {\n return sets[0];\n }\n}\nfunction subexp(str) {\n return \"(?:\" + str + \")\";\n}\nfunction typeOf(o) {\n return o === undefined ? \"undefined\" : o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase();\n}\nfunction toUpperCase(str) {\n return str.toUpperCase();\n}\nfunction toArray(obj) {\n return obj !== undefined && obj !== null ? obj instanceof Array ? obj : typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj) : [];\n}\nfunction assign(target, source) {\n var obj = target;\n if (source) {\n for (var key in source) {\n obj[key] = source[key];\n }\n }\n return obj;\n}\n\nfunction buildExps(isIRI) {\n var ALPHA$$ = \"[A-Za-z]\",\n CR$ = \"[\\\\x0D]\",\n DIGIT$$ = \"[0-9]\",\n DQUOTE$$ = \"[\\\\x22]\",\n HEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"),\n //case-insensitive\n LF$$ = \"[\\\\x0A]\",\n SP$$ = \"[\\\\x20]\",\n PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)),\n //expanded\n GEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n SUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n UCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\",\n //subset, excludes bidi control characters\n IPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\",\n //subset\n UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n USERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n DEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n DEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$),\n //relaxed parsing rules\n IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n H16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n LS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n IPV6ADDRESS1$ = subexp(subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$),\n // 6( h16 \":\" ) ls32\n IPV6ADDRESS2$ = subexp(\"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$),\n // \"::\" 5( h16 \":\" ) ls32\n IPV6ADDRESS3$ = subexp(subexp(H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$),\n //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$),\n //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$),\n //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$),\n //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$),\n //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$),\n //[ *5( h16 \":\" ) h16 ] \"::\" h16\n IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\"),\n //[ *6( h16 \":\" ) h16 ] \"::\"\n IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n ZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"),\n //RFC 6874\n IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$),\n //RFC 6874\n IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$),\n //RFC 6874, with relaxed parsing rules\n IPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n IP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"),\n //RFC 6874\n REG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n HOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n PORT$ = subexp(DIGIT$$ + \"*\"),\n AUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n PCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n SEGMENT$ = subexp(PCHAR$ + \"*\"),\n SEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n PATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n PATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"),\n //simplified\n PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$),\n //simplified\n PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$),\n //simplified\n PATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n PATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n QUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n FRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n HIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n RELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n RELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n URI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n ABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n GENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n RELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n ABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n SAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n AUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\";\n return {\n NOT_SCHEME: new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n NOT_USERINFO: new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n NOT_HOST: new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n NOT_PATH: new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n NOT_PATH_NOSCHEME: new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n NOT_QUERY: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n NOT_FRAGMENT: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n ESCAPE: new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n UNRESERVED: new RegExp(UNRESERVED$$, \"g\"),\n OTHER_CHARS: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n PCT_ENCODED: new RegExp(PCT_ENCODED$, \"g\"),\n IPV4ADDRESS: new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n IPV6ADDRESS: new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n };\n}\nvar URI_PROTOCOL = buildExps(false);\n\nvar IRI_PROTOCOL = buildExps(true);\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n/** Highest positive signed 32-bit float value */\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nvar regexPunycode = /^xn--/;\nvar regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nvar regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nvar errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error$1(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tvar result = [];\n\tvar length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tvar parts = string.split('@');\n\tvar result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tvar labels = string.split('.');\n\tvar encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tvar output = [];\n\tvar counter = 0;\n\tvar length = string.length;\n\twhile (counter < length) {\n\t\tvar value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tvar extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t// Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nvar ucs2encode = function ucs2encode(array) {\n\treturn String.fromCodePoint.apply(String, toConsumableArray(array));\n};\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nvar basicToDigit = function basicToDigit(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nvar digitToBasic = function digitToBasic(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nvar adapt = function adapt(delta, numPoints, firstTime) {\n\tvar k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nvar decode = function decode(input) {\n\t// Don't use UCS-2.\n\tvar output = [];\n\tvar inputLength = input.length;\n\tvar i = 0;\n\tvar n = initialN;\n\tvar bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tvar basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (var j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror$1('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (var index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tvar oldi = i;\n\t\tfor (var w = 1, k = base;; /* no condition */k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror$1('invalid-input');\n\t\t\t}\n\n\t\t\tvar digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror$1('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tvar t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror$1('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\t\t}\n\n\t\tvar out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror$1('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\t}\n\n\treturn String.fromCodePoint.apply(String, output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nvar encode = function encode(input) {\n\tvar output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tvar inputLength = input.length;\n\n\t// Initialize the state.\n\tvar n = initialN;\n\tvar delta = 0;\n\tvar bias = initialBias;\n\n\t// Handle the basic code points.\n\tvar _iteratorNormalCompletion = true;\n\tvar _didIteratorError = false;\n\tvar _iteratorError = undefined;\n\n\ttry {\n\t\tfor (var _iterator = input[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\tvar _currentValue2 = _step.value;\n\n\t\t\tif (_currentValue2 < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(_currentValue2));\n\t\t\t}\n\t\t}\n\t} catch (err) {\n\t\t_didIteratorError = true;\n\t\t_iteratorError = err;\n\t} finally {\n\t\ttry {\n\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t_iterator.return();\n\t\t\t}\n\t\t} finally {\n\t\t\tif (_didIteratorError) {\n\t\t\t\tthrow _iteratorError;\n\t\t\t}\n\t\t}\n\t}\n\n\tvar basicLength = output.length;\n\tvar handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tvar m = maxInt;\n\t\tvar _iteratorNormalCompletion2 = true;\n\t\tvar _didIteratorError2 = false;\n\t\tvar _iteratorError2 = undefined;\n\n\t\ttry {\n\t\t\tfor (var _iterator2 = input[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n\t\t\t\tvar currentValue = _step2.value;\n\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow.\n\t\t} catch (err) {\n\t\t\t_didIteratorError2 = true;\n\t\t\t_iteratorError2 = err;\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tif (!_iteratorNormalCompletion2 && _iterator2.return) {\n\t\t\t\t\t_iterator2.return();\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tif (_didIteratorError2) {\n\t\t\t\t\tthrow _iteratorError2;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror$1('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tvar _iteratorNormalCompletion3 = true;\n\t\tvar _didIteratorError3 = false;\n\t\tvar _iteratorError3 = undefined;\n\n\t\ttry {\n\t\t\tfor (var _iterator3 = input[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n\t\t\t\tvar _currentValue = _step3.value;\n\n\t\t\t\tif (_currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror$1('overflow');\n\t\t\t\t}\n\t\t\t\tif (_currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\t\tvar q = delta;\n\t\t\t\t\tfor (var k = base;; /* no condition */k += base) {\n\t\t\t\t\t\tvar t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar qMinusT = q - t;\n\t\t\t\t\t\tvar baseMinusT = base - t;\n\t\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) {\n\t\t\t_didIteratorError3 = true;\n\t\t\t_iteratorError3 = err;\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tif (!_iteratorNormalCompletion3 && _iterator3.return) {\n\t\t\t\t\t_iterator3.return();\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tif (_didIteratorError3) {\n\t\t\t\t\tthrow _iteratorError3;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nvar toUnicode = function toUnicode(input) {\n\treturn mapDomain(input, function (string) {\n\t\treturn regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nvar toASCII = function toASCII(input) {\n\treturn mapDomain(input, function (string) {\n\t\treturn regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nvar punycode = {\n\t/**\n * A string representing the current Punycode.js version number.\n * @memberOf punycode\n * @type String\n */\n\t'version': '2.1.0',\n\t/**\n * An object of methods to convert from JavaScript's internal character\n * representation (UCS-2) to Unicode code points, and back.\n * @see \n * @memberOf punycode\n * @type Object\n */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\n/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author Gary Court\n * @see http://github.com/garycourt/uri-js\n */\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\nvar SCHEMES = {};\nfunction pctEncChar(chr) {\n var c = chr.charCodeAt(0);\n var e = void 0;\n if (c < 16) e = \"%0\" + c.toString(16).toUpperCase();else if (c < 128) e = \"%\" + c.toString(16).toUpperCase();else if (c < 2048) e = \"%\" + (c >> 6 | 192).toString(16).toUpperCase() + \"%\" + (c & 63 | 128).toString(16).toUpperCase();else e = \"%\" + (c >> 12 | 224).toString(16).toUpperCase() + \"%\" + (c >> 6 & 63 | 128).toString(16).toUpperCase() + \"%\" + (c & 63 | 128).toString(16).toUpperCase();\n return e;\n}\nfunction pctDecChars(str) {\n var newStr = \"\";\n var i = 0;\n var il = str.length;\n while (i < il) {\n var c = parseInt(str.substr(i + 1, 2), 16);\n if (c < 128) {\n newStr += String.fromCharCode(c);\n i += 3;\n } else if (c >= 194 && c < 224) {\n if (il - i >= 6) {\n var c2 = parseInt(str.substr(i + 4, 2), 16);\n newStr += String.fromCharCode((c & 31) << 6 | c2 & 63);\n } else {\n newStr += str.substr(i, 6);\n }\n i += 6;\n } else if (c >= 224) {\n if (il - i >= 9) {\n var _c = parseInt(str.substr(i + 4, 2), 16);\n var c3 = parseInt(str.substr(i + 7, 2), 16);\n newStr += String.fromCharCode((c & 15) << 12 | (_c & 63) << 6 | c3 & 63);\n } else {\n newStr += str.substr(i, 9);\n }\n i += 9;\n } else {\n newStr += str.substr(i, 3);\n i += 3;\n }\n }\n return newStr;\n}\nfunction _normalizeComponentEncoding(components, protocol) {\n function decodeUnreserved(str) {\n var decStr = pctDecChars(str);\n return !decStr.match(protocol.UNRESERVED) ? str : decStr;\n }\n if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n if (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n if (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n return components;\n}\n\nfunction _stripLeadingZeros(str) {\n return str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\nfunction _normalizeIPv4(host, protocol) {\n var matches = host.match(protocol.IPV4ADDRESS) || [];\n\n var _matches = slicedToArray(matches, 2),\n address = _matches[1];\n\n if (address) {\n return address.split(\".\").map(_stripLeadingZeros).join(\".\");\n } else {\n return host;\n }\n}\nfunction _normalizeIPv6(host, protocol) {\n var matches = host.match(protocol.IPV6ADDRESS) || [];\n\n var _matches2 = slicedToArray(matches, 3),\n address = _matches2[1],\n zone = _matches2[2];\n\n if (address) {\n var _address$toLowerCase$ = address.toLowerCase().split('::').reverse(),\n _address$toLowerCase$2 = slicedToArray(_address$toLowerCase$, 2),\n last = _address$toLowerCase$2[0],\n first = _address$toLowerCase$2[1];\n\n var firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n var lastFields = last.split(\":\").map(_stripLeadingZeros);\n var isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n var fieldCount = isLastFieldIPv4Address ? 7 : 8;\n var lastFieldsStart = lastFields.length - fieldCount;\n var fields = Array(fieldCount);\n for (var x = 0; x < fieldCount; ++x) {\n fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n }\n if (isLastFieldIPv4Address) {\n fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n }\n var allZeroFields = fields.reduce(function (acc, field, index) {\n if (!field || field === \"0\") {\n var lastLongest = acc[acc.length - 1];\n if (lastLongest && lastLongest.index + lastLongest.length === index) {\n lastLongest.length++;\n } else {\n acc.push({ index: index, length: 1 });\n }\n }\n return acc;\n }, []);\n var longestZeroFields = allZeroFields.sort(function (a, b) {\n return b.length - a.length;\n })[0];\n var newHost = void 0;\n if (longestZeroFields && longestZeroFields.length > 1) {\n var newFirst = fields.slice(0, longestZeroFields.index);\n var newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n newHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n } else {\n newHost = fields.join(\":\");\n }\n if (zone) {\n newHost += \"%\" + zone;\n }\n return newHost;\n } else {\n return host;\n }\n}\nvar URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nvar NO_MATCH_IS_UNDEFINED = \"\".match(/(){0}/)[1] === undefined;\nfunction parse(uriString) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var components = {};\n var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL;\n if (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n var matches = uriString.match(URI_PARSE);\n if (matches) {\n if (NO_MATCH_IS_UNDEFINED) {\n //store each component\n components.scheme = matches[1];\n components.userinfo = matches[3];\n components.host = matches[4];\n components.port = parseInt(matches[5], 10);\n components.path = matches[6] || \"\";\n components.query = matches[7];\n components.fragment = matches[8];\n //fix port number\n if (isNaN(components.port)) {\n components.port = matches[5];\n }\n } else {\n //IE FIX for improper RegExp matching\n //store each component\n components.scheme = matches[1] || undefined;\n components.userinfo = uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined;\n components.host = uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined;\n components.port = parseInt(matches[5], 10);\n components.path = matches[6] || \"\";\n components.query = uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined;\n components.fragment = uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined;\n //fix port number\n if (isNaN(components.port)) {\n components.port = uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined;\n }\n }\n if (components.host) {\n //normalize IP hosts\n components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n }\n //determine reference type\n if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n components.reference = \"same-document\";\n } else if (components.scheme === undefined) {\n components.reference = \"relative\";\n } else if (components.fragment === undefined) {\n components.reference = \"absolute\";\n } else {\n components.reference = \"uri\";\n }\n //check for reference errors\n if (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n components.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n }\n //find scheme handler\n var schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n //check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n //if host component is a domain name\n if (components.host && (options.domainHost || schemeHandler && schemeHandler.domainHost)) {\n //convert Unicode IDN -> ASCII IDN\n try {\n components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n } catch (e) {\n components.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n }\n }\n //convert IRI -> URI\n _normalizeComponentEncoding(components, URI_PROTOCOL);\n } else {\n //normalize encodings\n _normalizeComponentEncoding(components, protocol);\n }\n //perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(components, options);\n }\n } else {\n components.error = components.error || \"URI can not be parsed.\";\n }\n return components;\n}\n\nfunction _recomposeAuthority(components, options) {\n var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL;\n var uriTokens = [];\n if (components.userinfo !== undefined) {\n uriTokens.push(components.userinfo);\n uriTokens.push(\"@\");\n }\n if (components.host !== undefined) {\n //normalize IP hosts, add brackets and escape zone separator for IPv6\n uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, function (_, $1, $2) {\n return \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\";\n }));\n }\n if (typeof components.port === \"number\" || typeof components.port === \"string\") {\n uriTokens.push(\":\");\n uriTokens.push(String(components.port));\n }\n return uriTokens.length ? uriTokens.join(\"\") : undefined;\n}\n\nvar RDS1 = /^\\.\\.?\\//;\nvar RDS2 = /^\\/\\.(\\/|$)/;\nvar RDS3 = /^\\/\\.\\.(\\/|$)/;\nvar RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\nfunction removeDotSegments(input) {\n var output = [];\n while (input.length) {\n if (input.match(RDS1)) {\n input = input.replace(RDS1, \"\");\n } else if (input.match(RDS2)) {\n input = input.replace(RDS2, \"/\");\n } else if (input.match(RDS3)) {\n input = input.replace(RDS3, \"/\");\n output.pop();\n } else if (input === \".\" || input === \"..\") {\n input = \"\";\n } else {\n var im = input.match(RDS5);\n if (im) {\n var s = im[0];\n input = input.slice(s.length);\n output.push(s);\n } else {\n throw new Error(\"Unexpected dot segment condition\");\n }\n }\n }\n return output.join(\"\");\n}\n\nfunction serialize(components) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var protocol = options.iri ? IRI_PROTOCOL : URI_PROTOCOL;\n var uriTokens = [];\n //find scheme handler\n var schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n //perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n if (components.host) {\n //if host component is an IPv6 address\n if (protocol.IPV6ADDRESS.test(components.host)) {}\n //TODO: normalize IPv6 address as per RFC 5952\n\n //if host component is a domain name\n else if (options.domainHost || schemeHandler && schemeHandler.domainHost) {\n //convert IDN via punycode\n try {\n components.host = !options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host);\n } catch (e) {\n components.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n }\n }\n }\n //normalize encoding\n _normalizeComponentEncoding(components, protocol);\n if (options.reference !== \"suffix\" && components.scheme) {\n uriTokens.push(components.scheme);\n uriTokens.push(\":\");\n }\n var authority = _recomposeAuthority(components, options);\n if (authority !== undefined) {\n if (options.reference !== \"suffix\") {\n uriTokens.push(\"//\");\n }\n uriTokens.push(authority);\n if (components.path && components.path.charAt(0) !== \"/\") {\n uriTokens.push(\"/\");\n }\n }\n if (components.path !== undefined) {\n var s = components.path;\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s);\n }\n if (authority === undefined) {\n s = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n }\n uriTokens.push(s);\n }\n if (components.query !== undefined) {\n uriTokens.push(\"?\");\n uriTokens.push(components.query);\n }\n if (components.fragment !== undefined) {\n uriTokens.push(\"#\");\n uriTokens.push(components.fragment);\n }\n return uriTokens.join(\"\"); //merge tokens into a string\n}\n\nfunction resolveComponents(base, relative) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var skipNormalization = arguments[3];\n\n var target = {};\n if (!skipNormalization) {\n base = parse(serialize(base, options), options); //normalize base components\n relative = parse(serialize(relative, options), options); //normalize relative components\n }\n options = options || {};\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme;\n //target.authority = relative.authority;\n target.userinfo = relative.userinfo;\n target.host = relative.host;\n target.port = relative.port;\n target.path = removeDotSegments(relative.path || \"\");\n target.query = relative.query;\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n //target.authority = relative.authority;\n target.userinfo = relative.userinfo;\n target.host = relative.host;\n target.port = relative.port;\n target.path = removeDotSegments(relative.path || \"\");\n target.query = relative.query;\n } else {\n if (!relative.path) {\n target.path = base.path;\n if (relative.query !== undefined) {\n target.query = relative.query;\n } else {\n target.query = base.query;\n }\n } else {\n if (relative.path.charAt(0) === \"/\") {\n target.path = removeDotSegments(relative.path);\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = \"/\" + relative.path;\n } else if (!base.path) {\n target.path = relative.path;\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n }\n target.path = removeDotSegments(target.path);\n }\n target.query = relative.query;\n }\n //target.authority = base.authority;\n target.userinfo = base.userinfo;\n target.host = base.host;\n target.port = base.port;\n }\n target.scheme = base.scheme;\n }\n target.fragment = relative.fragment;\n return target;\n}\n\nfunction resolve(baseURI, relativeURI, options) {\n var schemelessOptions = assign({ scheme: 'null' }, options);\n return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n}\n\nfunction normalize(uri, options) {\n if (typeof uri === \"string\") {\n uri = serialize(parse(uri, options), options);\n } else if (typeOf(uri) === \"object\") {\n uri = parse(serialize(uri, options), options);\n }\n return uri;\n}\n\nfunction equal(uriA, uriB, options) {\n if (typeof uriA === \"string\") {\n uriA = serialize(parse(uriA, options), options);\n } else if (typeOf(uriA) === \"object\") {\n uriA = serialize(uriA, options);\n }\n if (typeof uriB === \"string\") {\n uriB = serialize(parse(uriB, options), options);\n } else if (typeOf(uriB) === \"object\") {\n uriB = serialize(uriB, options);\n }\n return uriA === uriB;\n}\n\nfunction escapeComponent(str, options) {\n return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE, pctEncChar);\n}\n\nfunction unescapeComponent(str, options) {\n return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED, pctDecChars);\n}\n\nvar handler = {\n scheme: \"http\",\n domainHost: true,\n parse: function parse(components, options) {\n //report missing host\n if (!components.host) {\n components.error = components.error || \"HTTP URIs must have a host.\";\n }\n return components;\n },\n serialize: function serialize(components, options) {\n var secure = String(components.scheme).toLowerCase() === \"https\";\n //normalize the default port\n if (components.port === (secure ? 443 : 80) || components.port === \"\") {\n components.port = undefined;\n }\n //normalize the empty path\n if (!components.path) {\n components.path = \"/\";\n }\n //NOTE: We do not parse query strings for HTTP URIs\n //as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n //and not the HTTP spec.\n return components;\n }\n};\n\nvar handler$1 = {\n scheme: \"https\",\n domainHost: handler.domainHost,\n parse: handler.parse,\n serialize: handler.serialize\n};\n\nfunction isSecure(wsComponents) {\n return typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === \"wss\";\n}\n//RFC 6455\nvar handler$2 = {\n scheme: \"ws\",\n domainHost: true,\n parse: function parse(components, options) {\n var wsComponents = components;\n //indicate if the secure flag is set\n wsComponents.secure = isSecure(wsComponents);\n //construct resouce name\n wsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '');\n wsComponents.path = undefined;\n wsComponents.query = undefined;\n return wsComponents;\n },\n serialize: function serialize(wsComponents, options) {\n //normalize the default port\n if (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === \"\") {\n wsComponents.port = undefined;\n }\n //ensure scheme matches secure flag\n if (typeof wsComponents.secure === 'boolean') {\n wsComponents.scheme = wsComponents.secure ? 'wss' : 'ws';\n wsComponents.secure = undefined;\n }\n //reconstruct path from resource name\n if (wsComponents.resourceName) {\n var _wsComponents$resourc = wsComponents.resourceName.split('?'),\n _wsComponents$resourc2 = slicedToArray(_wsComponents$resourc, 2),\n path = _wsComponents$resourc2[0],\n query = _wsComponents$resourc2[1];\n\n wsComponents.path = path && path !== '/' ? path : undefined;\n wsComponents.query = query;\n wsComponents.resourceName = undefined;\n }\n //forbid fragment component\n wsComponents.fragment = undefined;\n return wsComponents;\n }\n};\n\nvar handler$3 = {\n scheme: \"wss\",\n domainHost: handler$2.domainHost,\n parse: handler$2.parse,\n serialize: handler$2.serialize\n};\n\nvar O = {};\nvar isIRI = true;\n//RFC 3986\nvar UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nvar HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nvar PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nvar ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nvar QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nvar VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nvar SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nvar UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nvar PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nvar NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nvar NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nvar NOT_HFVALUE = NOT_HFNAME;\nfunction decodeUnreserved(str) {\n var decStr = pctDecChars(str);\n return !decStr.match(UNRESERVED) ? str : decStr;\n}\nvar handler$4 = {\n scheme: \"mailto\",\n parse: function parse$$1(components, options) {\n var mailtoComponents = components;\n var to = mailtoComponents.to = mailtoComponents.path ? mailtoComponents.path.split(\",\") : [];\n mailtoComponents.path = undefined;\n if (mailtoComponents.query) {\n var unknownHeaders = false;\n var headers = {};\n var hfields = mailtoComponents.query.split(\"&\");\n for (var x = 0, xl = hfields.length; x < xl; ++x) {\n var hfield = hfields[x].split(\"=\");\n switch (hfield[0]) {\n case \"to\":\n var toAddrs = hfield[1].split(\",\");\n for (var _x = 0, _xl = toAddrs.length; _x < _xl; ++_x) {\n to.push(toAddrs[_x]);\n }\n break;\n case \"subject\":\n mailtoComponents.subject = unescapeComponent(hfield[1], options);\n break;\n case \"body\":\n mailtoComponents.body = unescapeComponent(hfield[1], options);\n break;\n default:\n unknownHeaders = true;\n headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n break;\n }\n }\n if (unknownHeaders) mailtoComponents.headers = headers;\n }\n mailtoComponents.query = undefined;\n for (var _x2 = 0, _xl2 = to.length; _x2 < _xl2; ++_x2) {\n var addr = to[_x2].split(\"@\");\n addr[0] = unescapeComponent(addr[0]);\n if (!options.unicodeSupport) {\n //convert Unicode IDN -> ASCII IDN\n try {\n addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n } catch (e) {\n mailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n }\n } else {\n addr[1] = unescapeComponent(addr[1], options).toLowerCase();\n }\n to[_x2] = addr.join(\"@\");\n }\n return mailtoComponents;\n },\n serialize: function serialize$$1(mailtoComponents, options) {\n var components = mailtoComponents;\n var to = toArray(mailtoComponents.to);\n if (to) {\n for (var x = 0, xl = to.length; x < xl; ++x) {\n var toAddr = String(to[x]);\n var atIdx = toAddr.lastIndexOf(\"@\");\n var localPart = toAddr.slice(0, atIdx).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n var domain = toAddr.slice(atIdx + 1);\n //convert IDN via punycode\n try {\n domain = !options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain);\n } catch (e) {\n components.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n }\n to[x] = localPart + \"@\" + domain;\n }\n components.path = to.join(\",\");\n }\n var headers = mailtoComponents.headers = mailtoComponents.headers || {};\n if (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n if (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n var fields = [];\n for (var name in headers) {\n if (headers[name] !== O[name]) {\n fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + \"=\" + headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar));\n }\n }\n if (fields.length) {\n components.query = fields.join(\"&\");\n }\n return components;\n }\n};\n\nvar URN_PARSE = /^([^\\:]+)\\:(.*)/;\n//RFC 2141\nvar handler$5 = {\n scheme: \"urn\",\n parse: function parse$$1(components, options) {\n var matches = components.path && components.path.match(URN_PARSE);\n var urnComponents = components;\n if (matches) {\n var scheme = options.scheme || urnComponents.scheme || \"urn\";\n var nid = matches[1].toLowerCase();\n var nss = matches[2];\n var urnScheme = scheme + \":\" + (options.nid || nid);\n var schemeHandler = SCHEMES[urnScheme];\n urnComponents.nid = nid;\n urnComponents.nss = nss;\n urnComponents.path = undefined;\n if (schemeHandler) {\n urnComponents = schemeHandler.parse(urnComponents, options);\n }\n } else {\n urnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n }\n return urnComponents;\n },\n serialize: function serialize$$1(urnComponents, options) {\n var scheme = options.scheme || urnComponents.scheme || \"urn\";\n var nid = urnComponents.nid;\n var urnScheme = scheme + \":\" + (options.nid || nid);\n var schemeHandler = SCHEMES[urnScheme];\n if (schemeHandler) {\n urnComponents = schemeHandler.serialize(urnComponents, options);\n }\n var uriComponents = urnComponents;\n var nss = urnComponents.nss;\n uriComponents.path = (nid || options.nid) + \":\" + nss;\n return uriComponents;\n }\n};\n\nvar UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\n//RFC 4122\nvar handler$6 = {\n scheme: \"urn:uuid\",\n parse: function parse(urnComponents, options) {\n var uuidComponents = urnComponents;\n uuidComponents.uuid = uuidComponents.nss;\n uuidComponents.nss = undefined;\n if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n uuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n }\n return uuidComponents;\n },\n serialize: function serialize(uuidComponents, options) {\n var urnComponents = uuidComponents;\n //normalize UUID\n urnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n return urnComponents;\n }\n};\n\nSCHEMES[handler.scheme] = handler;\nSCHEMES[handler$1.scheme] = handler$1;\nSCHEMES[handler$2.scheme] = handler$2;\nSCHEMES[handler$3.scheme] = handler$3;\nSCHEMES[handler$4.scheme] = handler$4;\nSCHEMES[handler$5.scheme] = handler$5;\nSCHEMES[handler$6.scheme] = handler$6;\n\nexports.SCHEMES = SCHEMES;\nexports.pctEncChar = pctEncChar;\nexports.pctDecChars = pctDecChars;\nexports.parse = parse;\nexports.removeDotSegments = removeDotSegments;\nexports.serialize = serialize;\nexports.resolveComponents = resolveComponents;\nexports.resolve = resolve;\nexports.normalize = normalize;\nexports.equal = equal;\nexports.escapeComponent = escapeComponent;\nexports.unescapeComponent = unescapeComponent;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=uri.all.js.map\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]]\n ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","/*\n * verror.js: richer JavaScript errors\n */\n\nvar mod_assertplus = require('assert-plus');\nvar mod_util = require('util');\n\nvar mod_extsprintf = require('extsprintf');\nvar mod_isError = require('core-util-is').isError;\nvar sprintf = mod_extsprintf.sprintf;\n\n/*\n * Public interface\n */\n\n/* So you can 'var VError = require('verror')' */\nmodule.exports = VError;\n/* For compatibility */\nVError.VError = VError;\n/* Other exported classes */\nVError.SError = SError;\nVError.WError = WError;\nVError.MultiError = MultiError;\n\n/*\n * Common function used to parse constructor arguments for VError, WError, and\n * SError. Named arguments to this function:\n *\n * strict\t\tforce strict interpretation of sprintf arguments, even\n * \t\t\tif the options in \"argv\" don't say so\n *\n * argv\t\terror's constructor arguments, which are to be\n * \t\t\tinterpreted as described in README.md. For quick\n * \t\t\treference, \"argv\" has one of the following forms:\n *\n * [ sprintf_args... ] (argv[0] is a string)\n * [ cause, sprintf_args... ] (argv[0] is an Error)\n * [ options, sprintf_args... ] (argv[0] is an object)\n *\n * This function normalizes these forms, producing an object with the following\n * properties:\n *\n * options equivalent to \"options\" in third form. This will never\n * \t\t\tbe a direct reference to what the caller passed in\n * \t\t\t(i.e., it may be a shallow copy), so it can be freely\n * \t\t\tmodified.\n *\n * shortmessage result of sprintf(sprintf_args), taking options.strict\n * \t\t\tinto account as described in README.md.\n */\nfunction parseConstructorArguments(args)\n{\n\tvar argv, options, sprintf_args, shortmessage, k;\n\n\tmod_assertplus.object(args, 'args');\n\tmod_assertplus.bool(args.strict, 'args.strict');\n\tmod_assertplus.array(args.argv, 'args.argv');\n\targv = args.argv;\n\n\t/*\n\t * First, figure out which form of invocation we've been given.\n\t */\n\tif (argv.length === 0) {\n\t\toptions = {};\n\t\tsprintf_args = [];\n\t} else if (mod_isError(argv[0])) {\n\t\toptions = { 'cause': argv[0] };\n\t\tsprintf_args = argv.slice(1);\n\t} else if (typeof (argv[0]) === 'object') {\n\t\toptions = {};\n\t\tfor (k in argv[0]) {\n\t\t\toptions[k] = argv[0][k];\n\t\t}\n\t\tsprintf_args = argv.slice(1);\n\t} else {\n\t\tmod_assertplus.string(argv[0],\n\t\t 'first argument to VError, SError, or WError ' +\n\t\t 'constructor must be a string, object, or Error');\n\t\toptions = {};\n\t\tsprintf_args = argv;\n\t}\n\n\t/*\n\t * Now construct the error's message.\n\t *\n\t * extsprintf (which we invoke here with our caller's arguments in order\n\t * to construct this Error's message) is strict in its interpretation of\n\t * values to be processed by the \"%s\" specifier. The value passed to\n\t * extsprintf must actually be a string or something convertible to a\n\t * String using .toString(). Passing other values (notably \"null\" and\n\t * \"undefined\") is considered a programmer error. The assumption is\n\t * that if you actually want to print the string \"null\" or \"undefined\",\n\t * then that's easy to do that when you're calling extsprintf; on the\n\t * other hand, if you did NOT want that (i.e., there's actually a bug\n\t * where the program assumes some variable is non-null and tries to\n\t * print it, which might happen when constructing a packet or file in\n\t * some specific format), then it's better to stop immediately than\n\t * produce bogus output.\n\t *\n\t * However, sometimes the bug is only in the code calling VError, and a\n\t * programmer might prefer to have the error message contain \"null\" or\n\t * \"undefined\" rather than have the bug in the error path crash the\n\t * program (making the first bug harder to identify). For that reason,\n\t * by default VError converts \"null\" or \"undefined\" arguments to their\n\t * string representations and passes those to extsprintf. Programmers\n\t * desiring the strict behavior can use the SError class or pass the\n\t * \"strict\" option to the VError constructor.\n\t */\n\tmod_assertplus.object(options);\n\tif (!options.strict && !args.strict) {\n\t\tsprintf_args = sprintf_args.map(function (a) {\n\t\t\treturn (a === null ? 'null' :\n\t\t\t a === undefined ? 'undefined' : a);\n\t\t});\n\t}\n\n\tif (sprintf_args.length === 0) {\n\t\tshortmessage = '';\n\t} else {\n\t\tshortmessage = sprintf.apply(null, sprintf_args);\n\t}\n\n\treturn ({\n\t 'options': options,\n\t 'shortmessage': shortmessage\n\t});\n}\n\n/*\n * See README.md for reference documentation.\n */\nfunction VError()\n{\n\tvar args, obj, parsed, cause, ctor, message, k;\n\n\targs = Array.prototype.slice.call(arguments, 0);\n\n\t/*\n\t * This is a regrettable pattern, but JavaScript's built-in Error class\n\t * is defined to work this way, so we allow the constructor to be called\n\t * without \"new\".\n\t */\n\tif (!(this instanceof VError)) {\n\t\tobj = Object.create(VError.prototype);\n\t\tVError.apply(obj, arguments);\n\t\treturn (obj);\n\t}\n\n\t/*\n\t * For convenience and backwards compatibility, we support several\n\t * different calling forms. Normalize them here.\n\t */\n\tparsed = parseConstructorArguments({\n\t 'argv': args,\n\t 'strict': false\n\t});\n\n\t/*\n\t * If we've been given a name, apply it now.\n\t */\n\tif (parsed.options.name) {\n\t\tmod_assertplus.string(parsed.options.name,\n\t\t 'error\\'s \"name\" must be a string');\n\t\tthis.name = parsed.options.name;\n\t}\n\n\t/*\n\t * For debugging, we keep track of the original short message (attached\n\t * this Error particularly) separately from the complete message (which\n\t * includes the messages of our cause chain).\n\t */\n\tthis.jse_shortmsg = parsed.shortmessage;\n\tmessage = parsed.shortmessage;\n\n\t/*\n\t * If we've been given a cause, record a reference to it and update our\n\t * message appropriately.\n\t */\n\tcause = parsed.options.cause;\n\tif (cause) {\n\t\tmod_assertplus.ok(mod_isError(cause), 'cause is not an Error');\n\t\tthis.jse_cause = cause;\n\n\t\tif (!parsed.options.skipCauseMessage) {\n\t\t\tmessage += ': ' + cause.message;\n\t\t}\n\t}\n\n\t/*\n\t * If we've been given an object with properties, shallow-copy that\n\t * here. We don't want to use a deep copy in case there are non-plain\n\t * objects here, but we don't want to use the original object in case\n\t * the caller modifies it later.\n\t */\n\tthis.jse_info = {};\n\tif (parsed.options.info) {\n\t\tfor (k in parsed.options.info) {\n\t\t\tthis.jse_info[k] = parsed.options.info[k];\n\t\t}\n\t}\n\n\tthis.message = message;\n\tError.call(this, message);\n\n\tif (Error.captureStackTrace) {\n\t\tctor = parsed.options.constructorOpt || this.constructor;\n\t\tError.captureStackTrace(this, ctor);\n\t}\n\n\treturn (this);\n}\n\nmod_util.inherits(VError, Error);\nVError.prototype.name = 'VError';\n\nVError.prototype.toString = function ve_toString()\n{\n\tvar str = (this.hasOwnProperty('name') && this.name ||\n\t\tthis.constructor.name || this.constructor.prototype.name);\n\tif (this.message)\n\t\tstr += ': ' + this.message;\n\n\treturn (str);\n};\n\n/*\n * This method is provided for compatibility. New callers should use\n * VError.cause() instead. That method also uses the saner `null` return value\n * when there is no cause.\n */\nVError.prototype.cause = function ve_cause()\n{\n\tvar cause = VError.cause(this);\n\treturn (cause === null ? undefined : cause);\n};\n\n/*\n * Static methods\n *\n * These class-level methods are provided so that callers can use them on\n * instances of Errors that are not VErrors. New interfaces should be provided\n * only using static methods to eliminate the class of programming mistake where\n * people fail to check whether the Error object has the corresponding methods.\n */\n\nVError.cause = function (err)\n{\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\treturn (mod_isError(err.jse_cause) ? err.jse_cause : null);\n};\n\nVError.info = function (err)\n{\n\tvar rv, cause, k;\n\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\tcause = VError.cause(err);\n\tif (cause !== null) {\n\t\trv = VError.info(cause);\n\t} else {\n\t\trv = {};\n\t}\n\n\tif (typeof (err.jse_info) == 'object' && err.jse_info !== null) {\n\t\tfor (k in err.jse_info) {\n\t\t\trv[k] = err.jse_info[k];\n\t\t}\n\t}\n\n\treturn (rv);\n};\n\nVError.findCauseByName = function (err, name)\n{\n\tvar cause;\n\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\tmod_assertplus.string(name, 'name');\n\tmod_assertplus.ok(name.length > 0, 'name cannot be empty');\n\n\tfor (cause = err; cause !== null; cause = VError.cause(cause)) {\n\t\tmod_assertplus.ok(mod_isError(cause));\n\t\tif (cause.name == name) {\n\t\t\treturn (cause);\n\t\t}\n\t}\n\n\treturn (null);\n};\n\nVError.hasCauseWithName = function (err, name)\n{\n\treturn (VError.findCauseByName(err, name) !== null);\n};\n\nVError.fullStack = function (err)\n{\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\n\tvar cause = VError.cause(err);\n\n\tif (cause) {\n\t\treturn (err.stack + '\\ncaused by: ' + VError.fullStack(cause));\n\t}\n\n\treturn (err.stack);\n};\n\nVError.errorFromList = function (errors)\n{\n\tmod_assertplus.arrayOfObject(errors, 'errors');\n\n\tif (errors.length === 0) {\n\t\treturn (null);\n\t}\n\n\terrors.forEach(function (e) {\n\t\tmod_assertplus.ok(mod_isError(e));\n\t});\n\n\tif (errors.length == 1) {\n\t\treturn (errors[0]);\n\t}\n\n\treturn (new MultiError(errors));\n};\n\nVError.errorForEach = function (err, func)\n{\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\tmod_assertplus.func(func, 'func');\n\n\tif (err instanceof MultiError) {\n\t\terr.errors().forEach(function iterError(e) { func(e); });\n\t} else {\n\t\tfunc(err);\n\t}\n};\n\n\n/*\n * SError is like VError, but stricter about types. You cannot pass \"null\" or\n * \"undefined\" as string arguments to the formatter.\n */\nfunction SError()\n{\n\tvar args, obj, parsed, options;\n\n\targs = Array.prototype.slice.call(arguments, 0);\n\tif (!(this instanceof SError)) {\n\t\tobj = Object.create(SError.prototype);\n\t\tSError.apply(obj, arguments);\n\t\treturn (obj);\n\t}\n\n\tparsed = parseConstructorArguments({\n\t 'argv': args,\n\t 'strict': true\n\t});\n\n\toptions = parsed.options;\n\tVError.call(this, options, '%s', parsed.shortmessage);\n\n\treturn (this);\n}\n\n/*\n * We don't bother setting SError.prototype.name because once constructed,\n * SErrors are just like VErrors.\n */\nmod_util.inherits(SError, VError);\n\n\n/*\n * Represents a collection of errors for the purpose of consumers that generally\n * only deal with one error. Callers can extract the individual errors\n * contained in this object, but may also just treat it as a normal single\n * error, in which case a summary message will be printed.\n */\nfunction MultiError(errors)\n{\n\tmod_assertplus.array(errors, 'list of errors');\n\tmod_assertplus.ok(errors.length > 0, 'must be at least one error');\n\tthis.ase_errors = errors;\n\n\tVError.call(this, {\n\t 'cause': errors[0]\n\t}, 'first of %d error%s', errors.length, errors.length == 1 ? '' : 's');\n}\n\nmod_util.inherits(MultiError, VError);\nMultiError.prototype.name = 'MultiError';\n\nMultiError.prototype.errors = function me_errors()\n{\n\treturn (this.ase_errors.slice(0));\n};\n\n\n/*\n * See README.md for reference details.\n */\nfunction WError()\n{\n\tvar args, obj, parsed, options;\n\n\targs = Array.prototype.slice.call(arguments, 0);\n\tif (!(this instanceof WError)) {\n\t\tobj = Object.create(WError.prototype);\n\t\tWError.apply(obj, args);\n\t\treturn (obj);\n\t}\n\n\tparsed = parseConstructorArguments({\n\t 'argv': args,\n\t 'strict': false\n\t});\n\n\toptions = parsed.options;\n\toptions['skipCauseMessage'] = true;\n\tVError.call(this, options, '%s', parsed.shortmessage);\n\n\treturn (this);\n}\n\nmod_util.inherits(WError, VError);\nWError.prototype.name = 'WError';\n\nWError.prototype.toString = function we_toString()\n{\n\tvar str = (this.hasOwnProperty('name') && this.name ||\n\t\tthis.constructor.name || this.constructor.prototype.name);\n\tif (this.message)\n\t\tstr += ': ' + this.message;\n\tif (this.jse_cause && this.jse_cause.message)\n\t\tstr += '; caused by ' + this.jse_cause.toString();\n\n\treturn (str);\n};\n\n/*\n * For purely historical reasons, WError's cause() function allows you to set\n * the cause.\n */\nWError.prototype.cause = function we_cause(c)\n{\n\tif (mod_isError(c))\n\t\tthis.jse_cause = c;\n\n\treturn (this.jse_cause);\n};\n","/**\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nmodule.exports = Worker;","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tif (typeof g[typedArray] === 'function') {\n\t\t\tvar arr = new g[typedArray]();\n\t\t\tif (Symbol.toStringTag in arr) {\n\t\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t\t}\n\t\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t\t}\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar foundName = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!foundName) {\n\t\t\ttry {\n\t\t\t\tvar name = getter.call(value);\n\t\t\t\tif (name === typedArray) {\n\t\t\t\t\tfoundName = name;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\t});\n\treturn foundName;\n};\n\nvar isTypedArray = require('is-typed-array');\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!isTypedArray(value)) { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) { return $slice($toString(value), 8, -1); }\n\treturn tryTypedArrays(value);\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","module.exports = child_process;","'use strict';\n\nvar possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\nmodule.exports = function availableTypedArrays() {\n\tvar out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the module cache\n__webpack_require__.c = __webpack_module_cache__;\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// module cache are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nvar __webpack_exports__ = __webpack_require__(74755);\n"],"names":["compileSchema","resolve","Cache","SchemaObject","stableStringify","formats","rules","$dataMetaSchema","util","module","exports","Ajv","prototype","validate","schemaKeyRef","data","v","this","getSchema","Error","schemaObj","_addSchema","_compile","valid","$async","errors","compile","schema","_meta","undefined","addSchema","key","_skipValidation","Array","isArray","i","length","id","_getId","checkUnique","normalizeId","_schemas","addMetaSchema","skipValidation","validateSchema","throwOrLogError","$schema","_opts","defaultMeta","self","meta","META_SCHEMA_ID","logger","warn","message","errorsText","error","keyRef","_getSchemaObj","ref","res","call","root","baseId","_fragments","fragment","_getSchemaFragment","removeSchema","RegExp","_removeAllSchemas","_refs","_cache","clear","del","cacheKey","serialize","addFormat","name","format","_formats","options","separator","dataVar","text","e","dataPath","slice","shouldAddSchema","cached","get","addUsedSchema","recursiveMeta","willValidate","localRefs","ids","put","compiling","callValidate","currentOpts","_metaOpts","refs","refVal","_validate","result","apply","arguments","compileAsync","customKeyword","addKeyword","add","getKeyword","removeKeyword","remove","validateKeyword","errorClasses","ValidationError","Validation","MissingRefError","MissingRef","META_IGNORE_OPTIONS","META_SUPPORT_DATA","opts","copy","log","noop","console","setLogger","cache","_loadingSchemas","_compilations","RULES","schemaId","_get$IdOrId","_get$Id","chooseGetId","loopRequired","Infinity","errorDataPath","_errorDataPathProperty","metaOpts","getMetaSchemaOptions","addInitialFormats","keywords","keyword","addInitialKeywords","$dataSchema","$data","$id","metaSchema","addDefaultMetaSchema","nullable","type","optsSchemas","schemas","addInitialSchemas","regex","test","value","callback","loadSchema","p","loadMetaSchemaOf","then","_compileAsync","sch","$ref","Promise","missingSchema","added","missingRef","schemaPromise","removePromise","loadMissingSchema","url","fullPath","errorSubclass","Subclass","Object","create","constructor","ajv","validation","DATE","DAYS","TIME","HOSTNAME","URI","URITEMPLATE","URL","UUID","JSON_POINTER","JSON_POINTER_URI_FRAGMENT","RELATIVE_JSON_POINTER","mode","date","str","matches","match","year","month","day","isLeapYear","time","full","hour","minute","second","timeZone","fast","uri","email","hostname","ipv4","ipv6","uuid","dateTime","split","DATE_TIME_SEPARATOR","NOT_URI_FRAGMENT","Z_ANCHOR","validateGenerator","ucs2length","equal","checkCompiling","index","compIndex","endCompiling","splice","c","patternCode","patterns","toQuotedString","defaultCode","refValCode","customRuleCode","vars","arr","statement","code","patternsHash","defaults","defaultsHash","customRules","compilation","localCompile","cv","sourceCode","source","_schema","_root","isRoot","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","processCode","Function","makeValidate","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","refId","replaceLocalRef","removeLocalRef","inline","regexStr","valueStr","rule","parentSchema","it","deps","definition","dependencies","every","hasOwnProperty","join","macro","traverse","resolveSchema","parse","refPath","_getFullPath","getFullPath","keys","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","baseIds","fullPaths","allKeys","jsonPtr","rootSchema","parentJsonPtr","parentKeyword","keyIndex","escapeFragment","PREVENT_SCOPE_CHANGE","toHash","parts","part","unescapeFragment","SIMPLE_INLINED","limit","checkNoRef","countKeys","item","count","normalize","TRAILING_SLASH_HASH","replace","ruleModules","ALL","all","types","forEach","group","map","implKeywords","k","push","implements","$comment","concat","custom","obj","len","pos","charCodeAt","checkDataType","dataType","strictNumbers","negate","EQUAL","AND","OK","NOT","o","to","checkDataTypes","dataTypes","t","array","object","null","number","integer","coerceToTypes","optionCoerceTypes","COERCE_TO_TYPES","getProperty","escapeQuotes","varOccurences","varReplace","expr","schemaHasRules","schemaHasRulesExcept","exceptKeyword","schemaUnknownRules","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","getPath","prop","escapeJsonPointer","getData","lvl","paths","up","jsonPointer","segments","segment","unescapeJsonPointer","decodeURIComponent","encodeURIComponent","hash","IDENTIFIER","SINGLE_QUOTE","a","b","KEYWORDS","keywordsJsonPointers","JSON","stringify","j","anyOf","definitions","simpleTypes","statements","not","required","properties","items","modifying","async","const","$keyword","$ruleType","$schemaValue","out","$lvl","level","$dataLvl","dataLevel","$schemaPath","$errSchemaPath","$breakOnError","allErrors","$isData","dataPathArr","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$notOp","$errorKeyword","$$outStack","$schemaValueExcl","$exclusive","$exclType","$exclIsNumber","$opStr","$opExpr","createErrors","messages","verbose","__err","pop","compositeRule","Math","unicode","$it","$closingBraces","$nextValid","$currentBaseId","$allSchemasEmpty","arr1","$sch","$i","l1","strictKeywords","$valid","$errs","$noEmptySchema","$wasComposite","$idx","$dataNxt","$nextData","$nonEmptySchema","$passData","$code","$compile","$inline","$macro","$ruleValidate","$validateCode","$rule","$definition","$rDef","$validateSchema","$ruleErrs","$ruleErr","$asyncKeyword","passContext","$parentData","$parentDataProperty","def_callRuleValidate","def_customError","$schemaDeps","$propertyDeps","$ownProperties","ownProperties","$property","$deps","$currentErrorPath","$propertyKey","$useData","$prop","$propertyPath","$missingProperty","arr2","i2","l2","$vSchema","$unknownFormats","unknownFormats","$allowUnknown","$format","$isObject","$formatType","indexOf","$formatRef","$thenSch","$elseSch","$thenPresent","$elsePresent","$ifClause","allOf","contains","maximum","minimum","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","oneOf","pattern","propertyNames","uniqueItems","$additionalItems","additionalItems","$currErrSchemaPath","multipleOfPrecision","$allErrorsOption","$prevValid","$passingSchemas","$key","$dataProperties","$schemaKeys","filter","notProto","$pProperties","patternProperties","$pPropertyKeys","$aProperties","additionalProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","$requiredHash","i1","$pProperty","$additionalProperty","$useDefaults","useDefaults","arr3","i3","l3","$hasDefault","default","arr4","i4","l4","$invalidName","$refCode","$refVal","$message","missingRefs","__callValidate","$propertySch","$loopRequired","$itemType","$typeIsArray","$method","$refKeywords","$unknownKwd","$keywordsMsg","$top","rootId","strictDefaults","$defaultMsg","$closingBraces1","$closingBraces2","$typeSchema","extendRefs","coerceTypes","$coerceToTypes","$rulesGroup","$shouldUseGroup","$dataType","$coerced","$type","arr5","i5","l5","$shouldUseRule","impl","$ruleImplementsSomeKeyword","definitionSchema","_addRule","ruleGroup","rg","throwError","_validateKeyword","asn1","bignum","define","base","constants","decoders","encoders","inherits","Entity","body","_createNamed","Base","Generated","entity","_initNamed","_getDecoder","enc","decode","_getEncoder","encode","reporter","Reporter","Buffer","DecoderBuffer","isBuffer","offset","EncoderBuffer","isEncoderBuffer","byteLength","isDecoderBuffer","save","restore","isEmpty","readUInt8","skip","raw","fail","bytes","_reporterState","alloc","write","Node","assert","tags","methods","parent","state","_baseState","children","tag","args","reverseArgs","choice","optional","any","use","useDecoder","explicit","implicit","_wrap","stateProps","clone","cstate","method","_init","child","_useArgs","arg","def","val","num","newKey","_decode","input","wrapResult","prevObj","present","prevKey","enterKey","_peekTag","isError","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","start","track","path","_getUse","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","_use","some","node","_createEncoderBuffer","_encode","_encodeValue","_skipDefault","content","primitive","_encodeChoice","_encodePrimitive","cls","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool","_isNumstr","_isPrintstr","ReporterError","msg","rethrow","pathLen","prev","now","err","inherited","elem","stack","partial","captureStackTrace","reverse","tagClass","tagClassByName","tagByName","_reverse","der","DERDecoder","tree","DERNode","derDecodeTag","buf","oct","tagStr","derDecodeLen","buffer","decodedTag","_skipUntilEnd","decoder","possibleEnd","unused","String","fromCharCode","readUInt16BE","numstr","toString","printstr","values","relative","identifiers","ident","subident","first","tmp","mon","min","sec","Date","UTC","pem","PEMDecoder","lines","label","toUpperCase","re","end","base64","from","DEREncoder","two","encodedTag","encodeTag","header","lenOctets","writeUInt16BE","size","objid","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","numArray","toArray","sign","unshift","dataBuffer","defaultBuffer","PEMEncoder","ctor","superCtor","super_","TempCtor","BN","endian","isBN","negative","words","red","wordSize","window","parseHex4Bits","string","parseHexByte","lowerBound","r","parseBase","mul","max","left","right","cmp","_initNumber","_initArray","_parseHex","_parseBase","ceil","w","off","strip","limbLen","limbPow","total","mod","word","imuln","_iaddn","pow","dest","_expand","_normSign","inspect","zeros","groupSizes","groupBases","smallMulTo","lo","carry","ncarry","rword","maxJ","padding","groupSize","groupBase","isZero","modn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","ArrayType","reqLength","littleEndian","q","andln","iushrn","clz32","_countBits","_zeroBits","bitLength","hi","zeroBits","toTwos","width","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","sub","comb10MulTo","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","x","y","mulTo","hncarry","bigMulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","s","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","ie","ro","io","rx","guessLen13b","n","m","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","bits","carryMask","newCarry","ishln","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","shift","_wordDiv","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","acc","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","_strip","output","outLen","next","mod3","one","nOne","lpow","z","inv","wnd","current","currentLen","mont","u","newInvalidAsn1Error","Reader","Writer","ASN1","TypeError","_buf","_size","_len","_offset","defineProperty","enumerable","readByte","peek","readLength","lenB","readSequence","seq","readInt","_readTag","Integer","readBoolean","Boolean","readEnumeration","Enumeration","readString","retbuf","OctetString","readOID","OID","byte","ok","fb","EOC","BitString","Null","ObjectDescriptor","External","Real","PDV","Utf8String","RelativeOID","Sequence","Set","NumericString","PrintableString","T61String","VideotexString","IA5String","UTCTime","GeneralizedTime","GraphicString","VisibleString","GeneralString","UniversalString","CharacterString","BMPString","Constructor","Context","DEFAULT_OPTS","growthFactor","getOwnPropertyNames","getOwnPropertyDescriptor","_options","_seq","writeByte","_ensure","writeInt","sz","writeNull","writeEnumeration","writeBoolean","writeString","writeLength","writeBuffer","writeStringArray","strings","writeOID","parseInt","octet","encodeOctet","startSequence","endSequence","_shift","Ber","BerReader","BerWriter","Stream","UUID_REGEXP","_capitalize","charAt","_toss","expected","oper","actual","AssertionError","operator","stackStartFunction","caller","_getClass","bool","check","func","isNaN","finite","isFinite","stream","regexp","_setExports","ndebug","process","env","NODE_NDEBUG","_typeof","Symbol","iterator","isDeepEqual","isDeepStrictEqual","_require$codes","codes","ERR_AMBIGUOUS_ARGUMENT","ERR_INVALID_ARG_TYPE","ERR_INVALID_ARG_VALUE","ERR_INVALID_RETURN_VALUE","ERR_MISSING_ARGS","_require$types","isPromise","isRegExp","objectAssign","assign","objectIs","is","lazyLoadComparison","comparison","Map","warned","NO_EXCEPTION_SENTINEL","innerFail","innerOk","fn","argLen","generatedMessage","stackStartFn","_key","internalMessage","argsLen","emitWarning","bind","errArgs","notEqual","deepEqual","notDeepEqual","deepStrictEqual","notDeepStrictEqual","strictEqual","notStrictEqual","Comparison","_this","instance","_classCallCheck","compareExceptionKey","expectedException","isPrototypeOf","getActual","checkIsPromise","catch","waitForActual","promiseFn","resultPromise","expectsError","details","fnType","expectsNoError","strict","_len6","_key6","throws","_len2","_key2","rejects","_len3","_key3","doesNotThrow","_len4","_key4","doesNotReject","_len5","_key5","ifError","newErr","origStack","tmp2","tmp1","_defineProperty","configurable","writable","_defineProperties","target","props","descriptor","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_wrapNativeSuper","Class","has","set","Wrapper","_construct","_getPrototypeOf","_setPrototypeOf","isNativeReflectConstruct","Reflect","construct","sham","Proxy","Parent","setPrototypeOf","__proto__","getPrototypeOf","endsWith","search","this_len","substring","blue","green","white","kReadableOperator","strictEqualObject","notStrictEqualObject","notIdentical","copyError","inspectValue","compact","customInspect","depth","maxArrayLength","showHidden","breakLength","showProxy","sorted","getters","_Error","stackTraceLimit","stderr","isTTY","getColorDepth","other","lastPos","skipped","actualInspected","actualLines","expectedLines","indicator","inputLength","columns","floor","maxCount","repeat","maxLines","_actualLines","printedLines","skippedMsg","cur","expectedLine","actualLine","divergingLines","createErrDiff","_res","knownOperators","protoProps","subClass","superClass","_inherits","recurseTimes","ownKeys","getOwnPropertySymbols","sym","_objectSpread","createErrorType","NodeError","_Base","arg1","arg2","arg3","getMessage","thing","determiner","substr","reason","inspected","RangeError","_slicedToArray","_arrayWithHoles","_arr","_n","_d","_e","_s","_i","done","_iterableToArrayLimit","_nonIterableRest","regexFlagsSupported","flags","arrayFromSet","arrayFromMap","objectGetOwnPropertySymbols","numberIsNaN","Number","uncurryThis","f","propertyIsEnumerable","objectToString","isAnyArrayBuffer","isArrayBufferView","isDate","isMap","isSet","isNativeError","isBoxedPrimitive","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isFloat32Array","isFloat64Array","isNonIndex","getOwnNonIndexProperties","compare","innerDeepEqual","val1","val2","memos","buf1","buf2","val1Tag","keys1","keys2","keyCheck","getTime","Uint8Array","byteOffset","areSimilarTypedArrays","areSimilarFloatArrays","_keys","_keys2","valueOf","BigInt","isEqualBoxedPrimitive","getEnumerables","iterationType","aKeys","bKeys","symbolKeysA","symbolKeysB","_symbolKeysB","position","val2MemoA","val2MemoB","areEq","objEquiv","delete","setHasEqualElement","memo","setValues","findLooseMatchingPrimitives","prim","setMightHaveLoosePrim","altValue","mapMightHaveLoosePrim","curB","mapHasEqualEntry","key1","item1","key2","aValues","bValues","_val","setEquiv","aEntries","_aEntries$i","item2","bEntries","_i2","_bEntries$_i","mapEquiv","keysA","arrayLike","newLen","newArr","idx","callArgs","initialParams","isObject","hasSetImmediate","setImmediate","hasNextTick","nextTick","fallback","setTimeout","wrap","defer","setImmediate$1","asyncify","invokeCallback","supportsSymbol","isAsync","toStringTag","wrapAsync","asyncFn","applyEach$1","eachfn","fns","go","that","cb","freeGlobal","freeSelf","Symbol$1","objectProto","nativeObjectToString","symToStringTag$1","nativeObjectToString$1","symToStringTag","baseGetTag","isOwn","unmasked","getRawTag","isLength","isArrayLike","isFunction","breakLoop","once","callFn","iteratorSymbol","isObjectLike","baseIsArguments","objectProto$3","hasOwnProperty$2","isArguments","freeExports","nodeType","freeModule","reIsUint","isIndex","typedArrayTags","freeExports$1","freeModule$1","freeProcess","nodeUtil","require","binding","nodeIsTypedArray","isTypedArray","hasOwnProperty$1","arrayLikeKeys","isArr","isArg","isBuff","isType","skipIndexes","iteratee","baseTimes","objectProto$5","nativeKeys","overArg","hasOwnProperty$3","baseKeys","Ctor","coll","createArrayIterator","getIterator","createES2015Iterator","okeys","createObjectIterator","onlyOnce","_eachOfLimit","nextElem","running","looping","iterateeCallback","replenish","eachOfLimit","doLimit","iterable","eachOfArrayLike","completed","iteratorCallback","eachOfGeneric","eachOf","doParallel","_asyncMap","results","counter","_iteratee","applyEach","doParallelLimit","mapLimit","mapSeries","applyEachSeries","arrayEach","fromRight","baseFor","keysFunc","baseForOwn","baseIsNaN","baseIndexOf","fromIndex","strictIndexOf","predicate","baseFindIndex","auto","tasks","concurrency","numTasks","runningTasks","hasError","listeners","readyTasks","readyToCheck","uncheckedDependencies","enqueueTask","task","taskCallback","safeResults","rkey","taskComplete","taskFn","runTask","processQueue","run","taskName","getDependents","remainingDependencies","dependencyName","taskListeners","dependent","checkForDeadlocks","arrayMap","symbolProto","symbolToString","baseToString","isSymbol","castSlice","baseSlice","reHasUnicode","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsModifier","rsOptVar","rsSeq","rsSymbol","reUnicode","stringToArray","hasUnicode","unicodeToArray","asciiToArray","reTrim","trim","chars","guard","strSymbols","chrSymbols","charsStartIndex","charsEndIndex","FN_ARGS","FN_ARG_SPLIT","FN_ARG","STRIP_COMMENTS","autoInject","newTasks","params","fnIsAsync","hasNoDeps","newTask","parseParams","taskCb","newArgs","DLL","head","tail","setInitial","dll","queue","worker","payload","_worker","numRunning","workersList","processingScheduled","_insert","insertAtFront","started","idle","drain","_tasks","_next","unsaturated","isProcessing","saturated","empty","paused","kill","testFn","pause","resume","cargo","removeLink","insertAfter","newNode","insertBefore","curr","eachOfSeries","reduce","_functions","newargs","nextargs","compose","_concat","concatLimit","mapResults","concatSeries","constant","identity","_createTester","getResult","testResult","testPassed","_findGetResult","detect","detectLimit","detectSeries","consoleFunc","dir","doDuring","_fn","_test","truth","doWhilst","doUntil","during","_withoutIndex","eachLimit","eachLimit$1","eachSeries","ensureAsync","sync","innerArgs","notId","everyLimit","everySeries","baseProperty","filterArray","truthValues","filterGeneric","sort","_filter","filterLimit","filterSeries","forever","errback","groupByLimit","groupBy","groupBySeries","mapValuesLimit","newObj","mapValues","mapValuesSeries","memoize","hasher","queues","memoized","unmemoized","_parallel","parallelLimit","parallelLimit$1","queue$1","priorityQueue","priority","nextNode","race","reduceRight","reflect","reflectCallback","cbArg","reflectAll","reject$1","reject","rejectLimit","rejectSeries","constant$1","retry","DEFAULT_TIMES","DEFAULT_INTERVAL","times","intervalFunc","parseTimes","interval","errorFilter","_task","attempt","retryAttempt","retryable","series","someLimit","someSeries","sortBy","comparator","criteria","timeout","milliseconds","info","timer","timedOut","clearTimeout","nativeCeil","nativeMax","timeLimit","step","baseRange","timesSeries","accumulator","tryEach","unmemoize","whilst","until","waterfall","taskIndex","nextTask","each","parallel","timesLimit","allLimit","allSeries","anyLimit","anySeries","find","findLimit","findSeries","forEachSeries","forEachLimit","forEachOf","forEachOfSeries","forEachOfLimit","inject","foldl","foldr","select","selectLimit","selectSeries","wrapSync","factory","crypto","authorization","hmacSha1","createHmac","secret","update","digest","stringToSign","headers","amazonHeaders","verb","md5","contentType","toUTCString","resource","queryStringToSign","signQuery","canonicalizeHeaders","fields","field","toLowerCase","canonicalizeResource","pathname","query","aws4","querystring","credentialsCache","lru","hmac","encoding","createHash","encodeRfc3986","urlEncodedString","encodeRfc3986Full","HEADERS_TO_IGNORE","RequestSigner","request","credentials","hostParts","service","region","matchHost","host","Host","defaultCredentials","createHost","port","isCodeCommitGit","extraHeadersToIgnore","extraHeadersToInclude","isSingleRegion","prepareRequest","parsePath","parsedPath","sessionToken","datetime","getDateTime","accessKeyId","credentialString","signedHeaders","doNotModifyHeaders","Authorization","signature","authHeader","formatPath","toISOString","getDate","kDate","kRegion","kService","secretAccessKey","kCredentials","canonicalString","bodyHash","pathStr","queryStr","normalizePath","decodePath","doNotEncodePath","decodeSlashesInPath","firstValOnly","reducedQuery","encodedQueryPieces","piece","canonicalHeaders","AWS_ACCESS_KEY_ID","AWS_ACCESS_KEY","AWS_SECRET_ACCESS_KEY","AWS_SECRET_KEY","AWS_SESSION_TOKEN","encodeURI","decodeURI","queryIx","LruCache","capacity","list","DoublyLinkedList","firstNode","lastNode","DoublyLinkedNode","used","prune","moveToFront","_scriptDir","monero_javascript","document","currentScript","src","readyPromiseResolve","readyPromiseReject","Module","read_","readAsync","readBinary","fs","nodePath","requireNodeFS","moduleOverrides","arguments_","thisProgram","quit_","status","toThrow","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","importScripts","ENVIRONMENT_IS_NODE","versions","scriptDirectory","__dirname","filename","binary","readFileSync","onload","onerror","readFile","keepRuntimeAlive","ExitStatus","location","href","lastIndexOf","xhr","XMLHttpRequest","open","send","responseText","responseType","response","uleb128Encode","functionsInTableMap","wasmBinary","freeTableIndexes","tempRet0","setTempRet0","getTempRet0","wasmMemory","noExitRuntime","WebAssembly","abort","EXITSTATUS","ABORT","condition","UTF8Decoder","TextDecoder","UTF8ArrayToString","heapOrArray","maxBytesToRead","endIdx","endPtr","subarray","u0","u1","u2","ch","UTF8ToString","ptr","HEAPU8","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","stringToUTF8","outPtr","lengthBytesUTF8","HEAP8","HEAP16","HEAPU16","HEAP32","HEAPU32","HEAPF32","HEAPF64","UTF16Decoder","UTF16ToString","maxIdx","codeUnit","stringToUTF16","startPtr","numCharsToWrite","lengthBytesUTF16","UTF32ToString","utf32","stringToUTF32","lengthBytesUTF32","allocateUTF8","_malloc","updateGlobalBufferAndViews","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Float32Array","Float64Array","wasmTable","__ATPRERUN__","__ATINIT__","__ATPOSTRUN__","wasmBinaryFile","tempDouble","tempI64","runDependencies","runDependencyWatcher","dependenciesFulfilled","addRunDependency","removeRunDependency","clearInterval","what","RuntimeError","isDataURI","startsWith","isFileURI","getBinary","file","callRuntimeCallbacks","callbacks","dynCall_v","dynCall_vi","setWasmTableEntry","locateFile","exceptionCaught","exception_addRef","add_ref","uncaughtExceptionCount","ExceptionInfo","excPtr","set_type","get_type","set_destructor","destructor","get_destructor","set_refcount","refcount","set_caught","caught","get_caught","set_rethrown","rethrown","get_rethrown","init","set_adjusted_ptr","release_ref","adjustedPtr","get_adjusted_ptr","get_exception_ptr","___cxa_is_pointer_type","adjusted","___cxa_free_exception","_free","exception_decRef","dynCall_ii","exceptionLast","___cxa_rethrow","PATH","isAbs","splitPath","exec","normalizeArray","allowAboveRoot","last","isAbsolute","trailingSlash","dirname","basename","lastSlash","join2","PATH_FS","resolvedPath","resolvedAbsolute","FS","cwd","fromParts","toParts","samePartsLength","outputParts","TTY","ttys","shutdown","register","dev","ops","registerDevice","stream_ops","tty","rdev","ErrnoError","seekable","close","flush","read","get_char","bytesRead","timestamp","put_char","default_tty_ops","readSync","stdin","fd","includes","prompt","readline","intArrayFromString","default_tty1_ops","MEMFS","ops_table","mount","createNode","isBlkdev","isFIFO","getattr","node_ops","setattr","lookup","mknod","rename","unlink","rmdir","readdir","symlink","llseek","allocate","mmap","msync","link","readlink","chrdev","chrdev_stream_ops","isDir","contents","isFile","usedBytes","isLink","isChrdev","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","oldContents","resizeFileStorage","newSize","attr","ino","nlink","uid","gid","atime","mtime","ctime","blksize","blocks","genericErrors","old_node","new_dir","new_name","new_node","lookupNode","entries","newname","oldpath","canOwn","whence","address","prot","allocated","alignment","alignMemory","_emscripten_builtin_memalign","fill","zeroMemory","mmapAlloc","mmapFlags","mounts","devices","streams","nextInode","nameTable","initialized","ignorePermissions","filesystems","syncFSRequests","lookupPath","follow_mount","recurse_count","current_path","islast","isMountpoint","mounted","follow","mountpoint","hashName","parentid","hashAddNode","name_next","hashRemoveNode","errCode","mayLookup","nodeName","FSNode","destroyNode","isSocket","flagModes","modeStringToFlags","flagsToPermissionString","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","errno","mayOpen","MAX_OPEN_FDS","nextfd","fd_start","fd_end","getStream","createStream","FSStream","shared","isRead","isWrite","isAppend","function","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","syncfs","populate","doCallback","errored","pseudo","mountRoot","unmount","mkdir","mkdirTree","dirs","d","mkdev","newpath","old_path","new_path","old_dir","old_dirname","new_dirname","old_name","stat","dontFollow","lstat","chmod","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","utime","created","ungotten","readFiles","isClosed","getdents","seeking","bytesWritten","munmap","ioctl","cmd","writeFile","actualNumBytes","ArrayBuffer","isView","chdir","createDefaultDirectories","createDefaultDevices","random_device","randomBuffer","getRandomValues","crypto_module","getRandomDevice","createDevice","createSpecialDirectories","proc_self","createStandardStreams","ensureErrnoError","setErrno","staticInit","quit","getMode","canRead","canWrite","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createPath","createFile","createDataFile","forceLoadFile","isDevice","isFolder","createLazyFile","LazyUint8Array","lengthKnown","chunks","chunkOffset","chunkSize","chunkNum","getter","setDataGetter","cacheLength","datalength","getResponseHeader","hasByteServing","usesGzip","lazyArray","setRequestHeader","overrideMimeType","doXHR","_length","_chunkSize","defineProperties","createPreloadedFile","dontCreateFile","preFinish","fullname","processData","byteArray","finish","Browser","handledByPreloadPlugin","noRunDep","dep","arrayBuffer","event","asyncLoad","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_NAME","DB_VERSION","DB_STORE_NAME","saveFilesToDB","openRequest","onupgradeneeded","createObjectStore","onsuccess","transaction","files","objectStore","putRequest","loadFilesFromDB","db","getRequest","SYSCALLS","DEFAULT_POLLMASK","calculateAt","dirfd","allowEmpty","dirstream","doStat","doMsync","addr","varargs","getStr","getStreamFromFD","getShiftFromSize","embind_charCodes","readLatin1String","awaitingDependencies","registeredTypes","typeDependencies","extendError","baseErrorType","errorName","errorClass","makeLegalFunctionName","BindingError","throwBindingError","InternalError","throwInternalError","registerType","rawType","registeredInstance","ignoreDuplicateRegistrations","emval_free_list","emval_handle_array","__emval_decref","handle","Emval","simpleReadValueFromPointer","pointer","floatReadValueFromPointer","runDestructors","destructors","runAndAbortIfError","Asyncify","State","Normal","Unwinding","Rewinding","Disabled","StackSize","currData","handleSleepReturnValue","exportCallStack","callStackNameToId","callStackIdToName","callStackId","asyncPromiseHandlers","sleepCallbacks","getCallStackId","funcName","instrumentWasmExports","original","maybeStopUnwind","Fibers","trampoline","whenDone","allocateData","setDataHeader","setDataRewindFunc","stackSize","bottomOfCallStack","rewindId","getDataRewindFunc","doRewind","handleSleep","startAsync","reachedCallback","reachedAfterCallback","mainLoop","asyncWasmReturnValue","handled","synchronous","handleException","callUserCallback","handleAsync","wakeUp","dynCall","sig","dynCallLegacy","_emscripten_get_now","UnboundTypeError","getTypeName","___getTypeName","rv","integerReadValueFromPointer","signed","requireRegisteredType","humanName","emscripten_realloc_buffer","grow","performance","ENV","getEnvStrings","navigator","languages","doWritev","iov","iovcnt","__isLeapYear","__MONTH_DAYS_LEAP","__MONTH_DAYS_REGULAR","stringy","dontAddNull","u8array","numBytesWritten","embind_init_charCodes","calledRun","asmLibraryArg","line","_setThrew","thrown","thrownType","typeArray","caughtType","adjusted_ptr_addr","___cxa_can_catch","___errno_location","length_low","length_high","op","argp","olddirfd","newdirfd","primitiveType","minRange","maxRange","trueValue","falseValue","wt","destructorFunction","argCount","rawArgTypesAddr","rawInvoker","argTypes","firstElement","heap32VectorToArray","rawFunction","argCache","fp","embind__requireFunction","numArguments","overloadTable","proto","methodName","prevFunc","ensureOverloadTable","exposePublicSymbol","unboundTypes","seen","visit","throwUnboundTypeError","myTypes","dependentTypes","getTypeConverters","onComplete","typeConverters","myTypeConverters","invokerArgsArray","replacePublicSymbol","classType","cppInvokerFunc","cppTargetFunc","isClassMethodFunc","needsDestructorStack","returns","expectedArgCount","argsWired","invokerFuncArgs","thisWired","onDone","param","craftInvokerFunction","unregisteredTypes","registered","dt","whenDependentTypesAreResolved","fromWireType","bitshift","isUnsignedType","dataTypeIndex","TA","decodeMemoryView","stdStringIsUTF8","decodeStartPtr","currentBytePtr","stringSegment","valueIsOfTypeString","Uint8ClampedArray","charCode","charSize","decodeString","encodeString","getHeap","lengthBytesUTF","HEAP","isVoid","argv","__emval_lookupTypes","tmPtr","getUTCDay","yday","dst","guessedOffset","getTimezoneOffset","getFullYear","summerOffset","winterOffset","dstOffset","nonDstOffset","trueOffset","setTime","getDay","getSeconds","getMinutes","getHours","getMonth","builtin","__tzset_js","timezone","daylight","tzname","called","currentYear","winter","summer","stdTimezoneOffset","extractZone","toTimeString","winterName","summerName","winterNamePtr","summerNamePtr","_tzset_impl","requestedSize","oldSize","maxHeapSize","cutDown","overGrownHeapSize","__environ","environ_buf","bufSize","writeAsciiToMemory","penviron_count","penviron_buf_size","procExit","exit","offset_low","offset_high","pnum","doReadv","newOffset","DOUBLE_LIMIT","sp","stackSave","dynCall_diii","stackRestore","dynCall_fiii","dynCall_i","dynCall_iii","dynCall_iiii","dynCall_iiiii","dynCall_iiiiid","dynCall_iiiiii","dynCall_iiiiiii","dynCall_iiiiiiii","dynCall_iiiiiiiiii","a10","a11","dynCall_iiiiiiiiiiii","dynCall_iiiiij","dynCall_iiiiiji","dynCall_iiiiji","dynCall_iij","dynCall_j","dynCall_ji","dynCall_jii","dynCall_jiii","dynCall_jiiii","dynCall_jiiiii","dynCall_vii","dynCall_viii","dynCall_viiii","dynCall_viiiii","dynCall_viiiiii","dynCall_viiiiiii","dynCall_viiiiiiii","dynCall_viiiiiiiiii","a12","a13","a14","a15","dynCall_viiiiiiiiiiiiiii","dynCall_viiiji","dynCall_viiijjjjii","dynCall_viij","dynCall_viijii","dynCall_viijiiii","dynCall_viijjd","dynCall_viji","dynCall_vijiijii","username","password","reject_unauthorized_fn_id","body_length","monerojs","HttpClient","LibraryUtils","GenUtils","loadFullModule","view","BYTES_PER_ELEMENT","wakeUpCalled","resolveWithFullResponse","rejectUnauthorized","isRejectUnauthorized","requestApi","isFirefox","resp","respBin","nDataBytes","bodyPtr","respContainer","statusCode","statusText","bodyLength","respStr","lengthBytes","maxsize","tm","tm_zone","tm_sec","tm_min","tm_hour","tm_mday","tm_mon","tm_year","tm_wday","tm_yday","tm_isdst","tm_gmtoff","EXPANSION_RULES_1","WEEKDAYS","MONTHS","leadingSomething","digits","character","leadingNulls","compareByDay","date1","date2","sgn","getFirstWeekStartDate","janFourth","getWeekBasedYear","thisDate","days","newDate","leap","currentMonth","daysInCurrentMonth","setDate","setMonth","setFullYear","__addDays","janFourthThisYear","janFourthNextYear","firstWeekStartThisYear","firstWeekStartNextYear","EXPANSION_RULES_2","twelveHour","sum","__arraySum","jan1","dec31","ahead","writeArrayToMemory","_strftime","receiveInstance","receiveInstantiationResult","instantiateArrayBuffer","receiver","fetch","getBinaryPromise","instantiate","instantiateStreaming","createWasm","doRun","postRun","preRun","WeakMap","funcPtr","updateTableMap","getEmptyTableSlot","wrapped","typeNames","parameters","typeSection","sigRet","sigParam","typeCodes","Instance","convertJsFunctionToWasm","chr","runCaller","ready","getWasmTableEntry","BigInteger","Filter","MoneroError","MoneroRpcConnection","MoneroRpcError","SslOptions","TaskLooper","ThreadPool","ConnectionType","MoneroAltChain","MoneroBan","MoneroBlockHeader","MoneroBlock","MoneroBlockTemplate","MoneroConnectionSpan","MoneroDaemonInfo","MoneroDaemonListener","MoneroDaemonSyncInfo","MoneroDaemonUpdateCheckResult","MoneroDaemonUpdateDownloadResult","MoneroFeeEstimate","MoneroHardForkInfo","MoneroKeyImage","MoneroKeyImageSpentStatus","MoneroMinerTxSum","MoneroMiningStatus","MoneroNetworkType","MoneroOutput","MoneroOutputHistogramEntry","MoneroPruneResult","MoneroSubmitTxResult","MoneroTx","MoneroTxPoolStats","MoneroVersion","MoneroPeer","MoneroAccount","MoneroAccountTag","MoneroAddressBookEntry","MoneroCheck","MoneroCheckReserve","MoneroCheckTx","MoneroDestination","MoneroIntegratedAddress","MoneroKeyImageImportResult","MoneroMultisigInfo","MoneroMultisigInitResult","MoneroMultisigSignResult","MoneroOutputWallet","MoneroOutputQuery","MoneroTxPriority","MoneroTxConfig","MoneroSubaddress","MoneroSyncResult","MoneroTransfer","MoneroIncomingTransfer","MoneroOutgoingTransfer","MoneroTransferQuery","MoneroTxSet","MoneroTxWallet","MoneroTxQuery","MoneroWalletListener","MoneroWalletConfig","MoneroMessageSignatureType","MoneroMessageSignatureResult","MoneroConnectionManager","MoneroConnectionManagerListener","MoneroUtils","MoneroDaemon","MoneroWallet","MoneroDaemonRpc","MoneroWalletRpc","MoneroWalletKeys","MoneroWalletFull","getVersion","connectToDaemonRpc","_connectToDaemonRpc","connectToWalletRpc","_connectToWalletRpc","createWalletFull","createWallet","openWalletFull","openWallet","createWalletKeys","meetsCriteria","parseFloat","assertTrue","isHex","isBase58","isBase64","btoa","atob","isUndefined","isDefined","isUninitialized","isInitialized","equals","isInt","isBoolean","isString","assertInitialized","assertFunction","got","powerSet","getPowerSet","powerSetOfLength","indices","assertArray","found","arrOrElem","compareByReference","arraysEqual","objectsEqual","map1","map2","combinationSize","indexCombinations","getPowerSetOfLength","getIndices","combinations","indexCombinationsIdx","indexCombination","combination","indexCombinationIdx","createElement","createObjectURL","Blob","download","innerHTML","$","append","html","csv","toArrays","fromObjects","char","isWhitespace","styleSheets","styleSheet","internalCss","internalStyleSheet","getInternalStyleSheet","cssRules","cssText","metas","listify","setAttribute","outerHTML","title","dependencyPaths","dependencyPath","onLoad","onLoadCalled","onLoadOnce","opener","buildHtmlDocument","addEventListener","img","quality","canvas","height","naturalHeight","naturalWidth","getContext","drawImage","toDataURL","returned","Image","onResponse","funcs","loadFunc","varArgs","nextSource","nextKey","replaceAt","replacement","searchString","removeVal","random","isWorker","isBrowserMain","isJsDom","isBrowser","userAgent","ua","msie","edge","ints","getRandomInt","randomInt","temp","getFn","setFn","config","errMsg","curVal","reconciledVal","reconcile","resolveDefined","resolveTrue","resolveMax","indent","newline","ignoreUndefined","getIndent","durationMs","signal","on","PromiseThrottle","Request","proxyToWorker","invokeWorker","getUUID","parsed","statusMessage","_DEFAULT_REQUEST","_TASK_QUEUES","_PROMISE_THROTTLES","requestsPerSecond","MAX_REQUESTS_PER_SECOND","promiseImplementation","_DEFAULT_TIMEOUT","MAX_TIMEOUT","requestPromise","_requestFetch","_requestXhr","timeoutPromise","req","agent","_getHttpsAgent","_getHttpAgent","requestCert","auth","user","pass","sendImmediately","submit","normalizedResponse","isBinary","digestAuthRequest","_parseXhrResponseHeaders","getAllResponseHeaders","HTTP_AGENT","http","Agent","keepAlive","HTTPS_AGENT","https","headersStr","headerMap","headerVals","CryptoJS","scheme","nonce","realm","qop","opaque","nc","cnonce","loggingOn","post","successFn","errorFn","makeAuthenticatedRequest","makeUnauthenticatedRequest","firstRequest","onreadystatechange","readyState","digestHeaders","responseHeaders","equalIndex","generateCnonce","isJson","formulateResponse","authenticatedRequest","digestAuthHeader","HA1","MD5","HA2","characters","token","randNum","version","LOG_LEVEL","WASM_MODULE","set_log_level","WORKER","getWasmModule","_initWasmModule","FULL_LOADED","fnId","REJECT_UNAUTHORIZED_FNS","workerDistPath","_prefixWindowsPath","WORKER_DIST_PATH_DEFAULT","WORKER_DIST_PATH","Worker","WORKER_OBJECTS","onmessage","thisArg","callbackFn","terminate","objectId","fnName","getWorker","callbackId","deserializeError","postMessage","serializedErr","wasmModule","taskQueue","queueTask","_proxyToWorker","_timeoutInMs","DEFAULT_TIMEOUT","_connections","_listeners","addListener","listener","removeListener","removeListeners","connection","aConnection","getUri","setProxyToWorker","getConnectionByUri","_currentConnection","_onConnectionChanged","isConnected","getConnection","getConnections","sortedConnections","copyArray","_compareConnections","excludedConnections","prioritizedConnections","_getConnectionsInAscendingPriority","checkPromises","arrayContains","checkConnection","firstAvailable","AggregateError","setConnection","uriOrConnection","prevConnection","addConnection","connectionChanged","_autoSwitch","bestConnection","getBestAvailableConnection","checkConnectionPromises","prioritizedConnection","getResponseTime","pool","periodMs","DEFAULT_CHECK_CONNECTION_PERIOD","_checkLooper","firstCheck","stopCheckingConnection","stop","setAutoSwitch","autoSwitch","getAutoSwitch","timeoutInMs","getTimeout","disconnect","reset","_timeoutMs","getListeners","promises","onConnectionChanged","connectionPriorities","getPriority","ascendingPriorities","ascendingPrioritiesList","priorityConnections","c1","c2","isOnline","localeCompare","super","getCode","uriOrConfigOrConnection","_config","setCredentials","getConfig","DEFAULT_CONFIG","SUPPORTED_FIELDS","_isOnline","_isAuthenticated","getUsername","getPassword","getRejectUnauthorized","getProxyToWorker","setPriority","attributes","getAttribute","isOnlineBefore","isAuthenticatedBefore","startTime","_fakeDisconnected","sendJsonRequest","_responseTime","isAuthenticated","jsonrpc","getLogLevel","_validateHttpResponse","_validateRpcResponse","paramsBin","jsonToBinary","_setFakeDisconnected","fakeDisconnected","rpcDescription","rpcCode","rpcMethod","rpcParams","getRpcMethod","getRpcParams","PROXY_TO_WORKER","mnemonic","NUM_MNEMONIC_WORDS","privateViewKey","validatePrivateViewKey","publicViewKey","validatePublicViewKey","privateSpendKey","validatePrivateSpendKey","publicSpendKey","validatePublicSpendKey","_isHex64","networkType","standardAddress","paymentId","loadKeysModule","integratedAddressJson","get_integrated_address_util","validateAddress","validate_address","validatePaymentId","txExtra","lastPubKeyIdx","paymentId1","paymentId2","txs","tx","aTx","getHash","merge","json","binMemInfoStr","malloc_binary_from_json","binMemInfo","uint8arr","ret_string","binary_to_json","json_str","binary_blocks_to_json","blockStr","amountXmr","decimalDivisor","decimalIdx","multiply","AU_PER_XMR","divide","amountAtomicUnits","quotientAndRemainder","divRem","toJSValue","RING_SIZE","initOneTime","serializeError","httpRequest","setLogLevel","getWasmMemoryUsed","moneroUtilsGetIntegratedAddress","getIntegratedAddress","toJson","moneroUtilsValidateAddress","moneroUtilsJsonToBinary","moneroUtilsBinaryToJson","binaryToJson","moneroUtilsBinaryBlocksToJson","binaryBlocksToJson","daemonAddListener","daemonId","listenerId","blockHeader","daemonListeners","daemonRemoveListener","connectDaemonRpc","daemonGetRpcConnection","getRpcConnection","daemonIsConnected","daemonGetVersion","daemonIsTrusted","isTrusted","daemonGetHeight","getHeight","daemonGetBlockHash","getBlockHash","daemonGetBlockTemplate","walletAddress","reserveSize","getBlockTemplate","daemonGetLastBlockHeader","getLastBlockHeader","daemonGetBlockHeaderByHash","getBlockHeaderByHash","daemonGetBlockHeaderByHeight","getBlockHeaderByHeight","daemonGetBlockHeadersByRange","startHeight","endHeight","blockHeadersJson","getBlockHeadersByRange","daemonGetBlockByHash","blockHash","getBlockByHash","daemonGetBlocksByHash","blockHashes","blocksJson","block","getBlocksByHash","daemonGetBlockByHeight","getBlockByHeight","daemonGetBlocksByHeight","heights","getBlocksByHeight","daemonGetBlocksByRange","getBlocksByRange","daemonGetBlocksByRangeChunked","maxChunkSize","getBlocksByRangeChunked","daemonGetBlockHashes","daemonGetTxs","txHashes","unconfirmedBlock","getTxs","seenBlocks","getBlock","setTxs","setBlock","daemonGetTxHexes","getTxHexes","daemonGetMinerTxSum","numBlocks","getMinerTxSum","daemonGetFeeEstimate","graceBlocks","getFeeEstimate","daemonSubmitTxHex","txHex","doNotRelay","submitTxHex","daemonRelayTxsByHash","relayTxsByHash","daemonGetTxPool","getTxPool","daemonGetTxPoolHashes","getTxPoolHashes","daemonGetTxPoolStats","getTxPoolStats","daemonFlushTxPool","hashes","flushTxPool","daemonGetKeyImageSpentStatuses","keyImages","getKeyImageSpentStatuses","daemonGetOutputHistogram","amounts","minCount","isUnlocked","recentCutoff","entriesJson","entry","getOutputHistogram","daemonGetInfo","getInfo","daemonGetSyncInfo","getSyncInfo","daemonGetHardForkInfo","getHardForkInfo","daemonGetAltChains","altChainsJson","altChain","getAltChains","daemonGetAltBlockHashes","getAltBlockHashes","daemonGetDownloadLimit","getDownloadLimit","daemonSetDownloadLimit","setDownloadLimit","daemonResetDownloadLimit","resetDownloadLimit","daemonGetUploadLimit","getUploadLimit","daemonSetUploadLimit","setUploadLimit","daemonResetUploadLimit","resetUploadLimit","daemonGetPeers","peersJson","peer","getPeers","daemonGetKnownPeers","getKnownPeers","daemonSetOutgoingPeerLimit","setOutgoingPeerLimit","daemonSetIncomingPeerLimit","setIncomingPeerLimit","daemonGetPeerBans","bansJson","ban","getPeerBans","daemonSetPeerBans","bans","banJson","setPeerBans","daemonStartMining","numThreads","isBackground","ignoreBattery","startMining","daemonStopMining","stopMining","daemonGetMiningStatus","getMiningStatus","daemonPruneBlockchain","pruneBlockchain","daemonStop","daemonWaitForNextBlockHeader","waitForNextBlockHeader","openWalletData","walletId","keysData","cacheData","daemonUriOrConfig","daemonConnection","server","_setBrowserMainPath","_createWallet","configJson","setPath","isViewOnly","getNetworkType","getSeed","getSeedLanguage","getSeedLanguages","getPrivateSpendKey","getPrivateViewKey","getPublicViewKey","getPublicSpendKey","getAddress","accountIdx","subaddressIdx","getAddressIndex","setSubaddressLabel","decodeIntegratedAddress","integratedAddress","setDaemonConnection","getDaemonConnection","isConnectedToDaemon","getRestoreHeight","setRestoreHeight","restoreHeight","getDaemonHeight","getDaemonMaxPeerHeight","getHeightByDate","isDaemonSynced","getId","onSyncProgress","percentDone","onNewBlock","onBalancesChanged","newBalance","newUnlockedBalance","onOutputReceived","getTx","onOutputSpent","isSynced","allowConcurrentCalls","startSyncing","syncPeriodInMs","stopSyncing","scanTxs","rescanSpent","rescanBlockchain","getBalance","getUnlockedBalance","getAccounts","includeSubaddresses","accountJsons","account","getAccount","createAccount","getSubaddresses","subaddressIndices","subaddressJsons","subaddress","createSubaddress","blockJsonQuery","DeserializationType","TX_QUERY","getTransfers","getTransferQuery","transfers","transfer","getOutputs","getOutputQuery","outputs","exportOutputs","importOutputs","outputsHex","getKeyImages","keyImagesJson","keyImage","exportKeyImages","importKeyImages","keyImageJson","freezeOutput","thawOutput","isOutputFrozen","createTxs","getTxSet","sweepOutput","sweepUnlocked","txSets","txSetsJson","txSet","sweepDust","relay","relayTxs","txMetadatas","describeTxSet","txSetJson","signTxs","unsignedTxHex","submitTxs","signedTxHex","signMessage","signatureType","verifyMessage","getTxKey","txHash","checkTxKey","txKey","getTxProof","checkTxProof","getSpendProof","checkSpendProof","getReserveProofWallet","getReserveProofAccount","amountStr","checkReserveProof","getTxNotes","setTxNotes","txNotes","getAddressBookEntries","entryIndices","addAddressBookEntry","description","editAddressBookEntry","setAddress","setDescription","deleteAddressBookEntry","tagAccounts","accountIndices","untagAccounts","getAccountTags","setAccountTagLabel","getPaymentUri","parsePaymentUri","backgroundMining","isMultisigImportNeeded","isMultisig","getMultisigInfo","prepareMultisig","makeMultisig","multisigHexes","threshold","exchangeMultisigKeys","exportMultisigHex","importMultisigHex","signMultisigTxHex","multisigTxHex","submitMultisigTxHex","signedMultisigTxHex","changePassword","oldPassword","newPassword","getPrivateKeyPath","privateKeyPath","setPrivateKeyPath","getCertificatePath","certificatePath","setCertificatePath","getCertificateAuthorityFile","certificateAuthorityFile","setCertificateAuthorityFile","getAllowedFingerprints","allowedFingerprints","setAllowedFingerprints","getAllowAnyCert","allowAnyCert","setAllowAnyCert","getTask","periodInMs","_periodInMs","_isStarted","_runLoop","isStarted","setPeriodInMs","_isLooping","maxConcurrency","drainListeners","CONSTRUCT","ZERO","BigInteger_base","base_log10","ONE","M_ONE","_0","_1","small","numerals","digit","radixRegex","baseSection","subtract","al","bl","compareAbs","borrow","addOne","subtractOne","nl","isUnit","square","pl","bi","jlimit","multiplySingleDigit","product","imult1","quotient","remainder","divRemSmall","guess","b_digits","b_index","quot","xlen","ylen","highx","highy","n_s","isPositive","isNegative","exp10","MAX_EXP","aux","modPow","exponent","modulus","NaN","firstNdigits","lowVal","makeUnary","makeBinary","makeTrinary","unary","trinary","cumulative","blockBlob","submitBlocks","blockBlobs","network","MAINNET","TESTNET","STAGENET","uriOrConfig","pollInterval","_normalizeConfig","rpcConfig","rpc","cachedHeaders","_startMonerodProcess","MoneroDaemonRpcProxy","connect","stdout","setEncoding","uriLineContains","uriLineContainsIdx","unformattedLine","sslIdx","sslEnabled","userPassIdx","userPass","daemon","isResolved","origin","getProcess","force","listenersCopy","killProcess","_refreshListening","_checkResponseStatus","release","sendPathRequest","untrusted","wallet_address","reserve_size","_convertRpcBlockTemplate","_convertRpcBlockHeader","block_header","start_height","end_height","rpcHeader","_convertRpcBlock","sendBinaryRequest","rpcBlocks","blockIdx","setHeight","txIdx","setHash","tx_hashes","setIsConfirmed","setInTxPool","setIsMinerTx","setRelay","setIsRelayed","setIsFailed","setIsDoubleSpend","_convertRpcTx","lastHeight","_getMaxBlocks","txs_hashes","decode_as_json","hexes","getPrunedHex","getFullHex","txSum","setEmissionSum","emission_amount","setFeeSum","fee_amount","grace_blocks","feeEstimate","setFee","fee","fees","setFees","setQuantizationMask","quantization_mask","tx_as_hex","do_not_relay","_convertRpcSubmitTxResult","setIsGood","txids","transactions","rpcTx","setNumConfirmations","_convertRpcTxPoolStats","pool_stats","key_images","spent_status","min_count","max_count","unlocked","recent_cutoff","histogram","rpcEntry","_convertRpcOutputHistogramEntry","_convertRpcInfo","_convertRpcSyncInfo","_convertRpcHardForkInfo","chains","rpcChain","_convertRpcAltChain","blks_hashes","_getBandwidthLimits","_setBandwidthLimits","peers","connections","rpcConnection","_convertRpcConnection","gray_list","rpcPeer","_convertRpcPeer","setIsOnline","white_list","out_peers","in_peers","rpcBan","setHost","setIp","ip","setSeconds","seconds","rpcBans","_convertToRpcBan","miner_address","threads_count","do_background_mining","ignore_battery","_convertRpcMiningStatus","setIsPruned","pruned","setPruningSeed","pruning_seed","command","_convertRpcUpdateCheckResult","_convertRpcUpdateDownloadResult","getTxHex","getKeyImageSpentStatus","setPeerBan","submitBlock","pollListener","DaemonPoller","setIsPolling","limit_down","limit_up","downLimit","upLimit","maxHeight","maxReqSize","MAX_REQ_SIZE","reqSize","_getBlockHeaderByHeightCached","getSize","cachedHeader","NUM_HEADERS_PER_REQ","safeSet","setSize","getDepth","setDepth","setDifficulty","getDifficulty","_prefixedHexToBI","setCumulativeDifficulty","getCumulativeDifficulty","getMajorVersion","setMajorVersion","getMinorVersion","setMinorVersion","getNonce","setNonce","getNumTxs","setNumTxs","getOrphanStatus","setOrphanStatus","getPrevHash","setPrevHash","getReward","setReward","getTimestamp","setTimestamp","getWeight","setWeight","getLongTermWeight","setLongTermWeight","getPowHash","setPowHash","setMinerTxHash","rpcBlock","setHex","blob","setTxHashes","rpcMinerTx","miner_tx","minerTx","setMinerTx","getLastRelayedTimestamp","setLastRelayedTimestamp","getReceivedTimestamp","setReceivedTimestamp","getNumConfirmations","isConfirmed","inTxPool","isDoubleSpendSeen","setVersion","getExtra","setExtra","gen","setInputs","rpcVin","_convertRpcOutput","setOutputs","rpcOutput","getRctSignatures","setRctSignatures","txnFee","getFee","getRctSigPrunable","setRctSigPrunable","getUnlockTime","setUnlockTime","setFullHex","isRelayed","getOutputIndices","setOutputIndices","getRelay","isKeptByBlock","setIsKeptByBlock","getSignatures","setSignatures","isFailed","getLastFailedHeight","setLastFailedHeight","DEFAULT_ID","getLastFailedHash","setLastFailedHash","getMaxUsedBlockHeight","setMaxUsedBlockHeight","getMaxUsedBlockHash","setMaxUsedBlockHash","getPrunableHash","setPrunableHash","getPrunableHex","setPrunableHex","setPrunedHex","setIndex","as_json","tx_json","setTx","getAmount","setAmount","amount","getKeyImage","setKeyImage","k_image","getRingOutputIndices","setRingOutputIndices","key_offsets","pubKey","tagged_key","getStealthPublicKey","setStealthPublicKey","rpcTemplate","template","setBlockTemplateBlob","setBlockHashingBlob","setExpectedReward","setReservedOffset","setSeedHeight","setSeedHash","setNextSeedHash","getNextSeedHash","rpcInfo","setNumAltBlocks","setBlockSizeLimit","setBlockSizeMedian","setBlockWeightLimit","setBlockWeightMedian","setBootstrapDaemonAddress","setFreeSpace","setDatabaseSize","setNumOfflinePeers","setHeightWithoutBootstrap","setNumIncomingConnections","setIsOffline","setNumOutgoingConnections","setNumRpcConnections","setStartTimestamp","setAdjustedTimestamp","setTarget","setTargetHeight","setTopBlockHash","setNumTxsPool","setWasBootstrapEverUsed","setNumOnlinePeers","setUpdateAvailable","setNetworkType","parseNetworkType","setCredits","getTopBlockHash","setIsBusySyncing","setIsSynchronized","setIsRestricted","rpcSyncInfo","syncInfo","setPeers","rpcConnections","setSpans","rpcSpans","rpcSpan","getSpans","_convertRpcConnectionSpan","setNextNeededPruningSeed","overview","rpcHardForkInfo","setEarliestHeight","setIsEnabled","setState","setThreshold","setNumVotes","setVoting","setWindow","rpcConnectionSpan","span","setConnectionId","setNumBlocks","setRate","setRemoteAddress","setSpeed","setStartHeight","setNumInstances","setNumUnlockedInstances","setNumRecentInstances","rpcResult","setIsFeeTooLow","setHasInvalidInput","setHasInvalidOutput","setHasTooFewOutputs","setIsMixinTooLow","setIsOverspend","setReason","setIsTooBig","setSanityCheckFailed","setIsTxExtraTooBig","rpcStats","stats","setBytesMax","setBytesMed","setBytesMin","setBytesTotal","setHisto98pc","setNum10m","setNumDoubleSpends","setNumFailing","setNumNotRelayed","setOldestTimestamp","setFeeTotal","setHisto","getHisto","getHisto98pc","chain","setLength","setBlockHashes","setMainChainParentBlockHash","setId","setLastSeenTimestamp","setPort","setRpcPort","setRpcCreditsPerHash","setAvgDownload","setAvgUpload","setCurrentDownload","setCurrentUpload","setIsIncoming","setLiveTime","setIsLocalIp","setIsLocalHost","setNumReceives","setReceiveIdleTime","setNumSends","setSendIdleTime","setNumSupportFlags","setType","getHost","getIp","isBanned","rpcStatus","setIsActive","active","speed","setNumThreads","setIsBackground","is_background_mining_enabled","setAutoUri","setIsUpdateAvailable","setUserUri","getAutoUri","getUserUri","setDownloadPath","getDownloadPath","hex","wrappedListeners","wrappedListener","DaemonWorkerListener","onBlockHeader","_invokeWorker","getListener","versionJson","isRelease","blockHeaderJson","blockJson","entryJson","altChains","altChainJson","peerJson","removeBlockListener","_daemon","_looper","poll","isPolling","_isPolling","_lastHeader","_id","_listener","headerJson","INVALID","IPV4","IPV6","TOR","I2P","difficulty","getBlockHashes","getLength","getMainChainParentBlockHash","mainChainParentBlockHash","setIsBanned","txType","TX","TX_WALLET","getHex","getMinerTx","getTxHashes","_mergeTx","kvLine","cumulativeDifficulty","reward","weight","longTermWeight","majorVersion","minorVersion","getMinerTxHash","minerTxHash","numTxs","orphanStatus","prevHash","powHash","expectedReward","getExpectedReward","getBlockTemplateBlob","blockTemplateBlob","getBlockHashingBlob","blockHashingBlob","prevId","getReservedOffset","reservedOffset","getSeedHeight","seedHeight","getSeedHash","seedHash","nextSeedHash","getConnectionId","connectionId","getNumBlocks","getRemoteAddress","remoteAddress","getRate","rate","getSpeed","getStartHeight","credits","getNumAltBlocks","numAltBlocks","getBlockSizeLimit","blockSizeLimit","getBlockSizeMedian","blockSizeMedian","getBlockWeightLimit","blockWeightLimit","getBlockWeightMedian","blockWeightMedian","getBootstrapDaemonAddress","bootstrapDaemonAddress","getFreeSpace","freeSpace","getNumOfflinePeers","numOfflinePeers","getNumOnlinePeers","numOnlinePeers","getHeightWithoutBootstrap","heightWithoutBootstrap","isOffline","getNumIncomingConnections","numIncomingConnections","getNumOutgoingConnections","numOutgoingConnections","getNumRpcConnections","numRpcConnections","getStartTimestamp","startTimestamp","getAdjustedTimestamp","adjustedTimestamp","getTarget","getTargetHeight","targetHeight","topBlockHash","getNumTxsPool","numTxsPool","getWasBootstrapEverUsed","wasBootstrapEverUsed","getDatabaseSize","databaseSize","getUpdateAvailable","updateAvailable","getCredits","isBusySyncing","isSynchronized","isRestricted","lastHeader","spans","getNextNeededPruningSeed","nextNeededPruningSeed","getOverview","setOverview","isUpdateAvailable","autoUri","userUri","downloadPath","quantizationMask","getFees","getQuantizationMask","getEarliestHeight","earliestHeight","isEnabled","getState","getThreshold","getNumVotes","numVotes","getWindow","getVoting","voting","stateOrHex","setSignature","getSignature","NOT_SPENT","CONFIRMED","TX_POOL","emissionSum","feeSum","getEmissionSum","getFeeSum","isActive","getNumThreads","networkTypeStr","getIndex","ringOutputIndices","stealthPublicKey","getNumInstances","numInstances","getNumUnlockedInstances","numUnlockedInstances","getNumRecentInstances","numRecentInstances","rpcCreditsPerHash","getPort","getLastSeenTimestamp","lastSeenTimestamp","getPruningSeed","pruningSeed","getRpcPort","rpcPort","getRpcCreditsPerHash","getAvgDownload","avgDownload","getAvgUpload","avgUpload","getCurrentDownload","currentDownload","getCurrentUpload","currentUpload","isIncoming","getLiveTime","liveTime","isLocalIp","isLocalHost","getNumReceives","numReceives","getNumSends","numSends","getReceiveIdleTime","receiveIdleTime","getSendIdleTime","sendIdleTime","getNumSupportFlags","numSupportFlags","getType","isPruned","isGood","isFeeTooLow","isMixinTooLow","hasInvalidInput","hasInvalidOutput","hasTooFewOutputs","isOverspend","getReason","isTooBig","getSanityCheckFailed","sanityCheckFailed","isTxExtraTooBig","unlockTime","inputs","isMinerTx","miner","getPaymentId","setPaymentId","getRingSize","ringSize","setRingSize","numConfirmations","lastRelayedTimestamp","receivedTimestamp","getKey","setKey","fullHex","prunedHex","prunableHex","prunableHash","getInputs","outputIndices","getMetadata","metadata","setMetadata","extra","rctSignatures","rctSigPrunable","lastFailedHeight","lastFailedHash","maxUsedBlockHeight","maxUsedBlockHash","signatures","merger","merged","mergee","DEFAULT_PAYMENT_ID","feeTotal","histo","getNumNotRelayed","numNotRelayed","getNumFailing","numFailing","getNumDoubleSpends","numDoubleSpends","getNum10m","num10m","getFeeTotal","getBytesMax","bytesMax","getBytesMed","bytesMed","getBytesMin","bytesMin","getBytesTotal","bytesTotal","histo98pc","getOldestTimestamp","oldestTimestamp","getNumber","setNumber","setIsRelease","listenerOrStartHeight","balance","numBlocksToNextUnlock","numBlocksToLastUnlock","unlockedBalance","isLocked","numBlocksToUnlock","_normalizeTransferQuery","isOutgoing","setIsOutgoing","_normalizeCreateTxsConfig","getCanSplit","setCanSplit","txOrMetadata","txsOrMetadatas","setUnsignedTxHex","setMultisigTxHex","note","notes","entryIdx","setHashes","getInputQuery","setTxQuery","getTxQuery","txQuery","setTransferQuery","setOutputQuery","getDestinations","getSweepEachSubaddress","getBelowAmount","getSubtractFeeFrom","getSubaddressIndices","setSubaddressIndices","getAccountIndex","DEFAULT_LANGUAGE","_getFs","existsSync","configOrPath","daemonUriOrConnection","setPassword","setFs","setServer","setServerUri","getSeedOffset","getPrimaryAddress","getLanguage","getSaveCurrent","getKeysData","getFs","walletExists","setKeysData","setCacheData","_openWalletData","getCacheData","getServer","_createWalletFromSeed","_createWalletFromKeys","_createWalletRandom","MoneroWalletFullProxy","setSeedOffset","wallet","rejectUnauthorizedFnId","setRejectUnauthorizedFn","create_full_wallet","cppAddress","setPrimaryAddress","setPrivateViewKey","setPrivateSpendKey","setLanguage","get_keys_wallet_seed_languages","_path","_password","_fs","_isClosed","_fullListener","WalletFullListener","_fullListenerHandle","_rejectUnauthorized","_rejectUnauthorizedConfigId","_syncPeriodInMs","DEFAULT_SYNC_PERIOD_IN_MS","_module","_assertNotClosed","get_daemon_max_peer_height","_cppAddress","is_daemon_synced","is_synced","get_network_type","get_restore_height","set_restore_height","_moveTo","uriOrRpcConnection","set_daemon_connection","connectionContainerStr","get_daemon_connection","jsonConnection","is_connected_to_daemon","get_integrated_address","decode_integrated_address","get_height","get_daemon_height","get_height_by_date","syncWasm","respJson","numBlocksFetched","receivedMoney","_syncLooper","_backgroundSync","stop_syncing","scan_txs","rescan_spent","rescan_blockchain","balanceStr","get_balance_wallet","get_balance_account","get_balance_subaddress","stringifyBIs","unlockedBalanceStr","get_unlocked_balance_wallet","get_unlocked_balance_account","get_unlocked_balance_subaddress","accountsStr","get_accounts","accounts","accountJson","_sanitizeAccount","accountStr","get_account","create_account","subaddressesJson","get_subaddresses","subaddresses","subaddressJson","_sanitizeSubaddress","subaddressStr","create_subaddress","set_subaddress_label","_normalizeTxQuery","get_txs","blocksJsonStr","_deserializeTxs","get_transfers","_deserializeTransfers","_normalizeOutputQuery","get_outputs","_deserializeOutputs","export_outputs","import_outputs","numImported","export_key_images","keyImagesStr","import_key_images","keyImageImportResultStr","freeze_output","thaw_output","is_output_frozen","create_txs","txSetJsonStr","_normalizeSweepOutputConfig","sweep_output","_normalizeSweepUnlockedConfig","sweep_unlocked","sweep_dust","relay_txs","txHashesJson","getUnsignedTxHex","setSignedTxHex","getSignedTxHex","getMultisigTxHex","describe_tx_set","get_exception_message","sign_txs","submit_txs","SIGN_WITH_SPEND_KEY","sign_message","resultJson","verify_message","isOld","SIGN_WITH_VIEW_KEY","get_tx_key","check_tx_key","respJsonStr","get_tx_proof","errorKey","check_tx_proof","get_spend_proof","check_spend_proof","get_reserve_proof_wallet","get_reserve_proof_account","check_reserve_proof","get_tx_notes","set_tx_notes","get_address_book_entries","add_address_book_entry","edit_address_book_entry","delete_address_book_entry","tag_accounts","accountTags","accountTagJson","get_account_tags","llabel","set_account_tag_label","get_payment_uri","parse_payment_uri","get_attribute","set_attribute","is_multisig_import_needed","is_multisig","get_multisig_info","prepare_multisig","make_multisig","exchange_multisig_keys","export_multisig_hex","import_multisig_hex","sign_multisig_tx_hex","submit_multisig_tx_hex","viewOnly","views","cacheBufferLoc","get_cache_file_buffer","DataView","setInt8","keysBufferLoc","get_keys_file_buffer","change_wallet_password","_save","getNumBlocksToUnlock","getIncomingTransfers","getOutgoingTransfers","createTx","relayTx","getTxNote","setTxNote","daemonUri","daemonUsername","daemonPassword","open_wallet_full","_browserMainPath","set_listener","newListenerHandle","newBalanceStr","newUnlockedBalanceStr","accountIdxStr","subaddressIdxStr","_sanitizeTxWallet","getLabel","setLabel","deserializedBlocks","_sanitizeBlock","_deserializeBlocks","getHashes","txMap","txsSorted","getOutgoingTransfer","browserMainPath","Path","walletDir","mkdirSync","writeFileSync","oldPath","unlinkSync","pathNew","renameSync","_walletId","_wrappedListeners","WalletWorkerListener","blockJsons","_wallet","setAccountIndex","setSubaddressIndex","setIsLocked","create_keys_wallet_random","create_keys_wallet_from_seed","create_keys_wallet_from_keys","is_view_only","versionStr","get_version","get_seed","errorStr","get_seed_language","get_private_spend_key","get_private_view_key","get_public_view_key","get_public_spend_key","get_address","get_address_index","getSubaddress","addressCache","_startWalletRpcProcess","pathOrConfig","_clear","getAccountLookahead","getSubaddressLookahead","language","_handleCreateWalletError","seed","seed_offset","enable_multisig_experimental","restore_height","autosave_current","viewkey","spendkey","key_type","sslOptions","trusted","ssl_support","ssl_private_key_path","ssl_certificate_path","ssl_ca_file","ssl_allowed_fingerprints","ssl_allow_any_cert","subaddressMap","integratedAddressStr","standard_address","payment_id","integrated_address","setStandardAddress","setIntegratedAddress","onProgress","_poll","blocks_fetched","received_money","syncPeriodInSeconds","enable","period","walletPoller","_getBalances","skipBalances","rpcAccount","subaddress_accounts","_convertRpcAccount","setSubaddresses","setBalance","setUnlockedBalance","setNumUnspentOutputs","setNumBlocksToUnlock","all_accounts","per_subaddress","rpcSubaddress","_convertRpcSubaddress","tgtSubaddress","getNumUnspentOutputs","Exception","account_index","address_index","addresses","setIsUsed","transferQuery","inputQuery","outputQuery","setInputQuery","_getTransfersAux","_decontextualize","txsSet","blockMap","getIncludeOutputs","outputQueryAux","_getOutputsAux","outputTxs","txsQueried","txsById","orderedTxs","_isContextual","filterTransfers","filterOutputs","outputs_data_hex","num_imported","_rpcExportKeyImages","rpcKeyImages","key_image","signed_key_images","importResult","setSpentAmount","spent","setUnspentAmount","unspent","frozen","destination","destinations","subtract_fee_from_outputs","subaddr_indices","unlock_time","get_tx_hex","get_tx_metadata","get_tx_keys","fee_list","copyDestinations","_initSentTxWallet","_convertRpcSentTxsToTxSet","_convertRpcTxToTxSet","setSweepEachSubaddress","_rpcSweepAccount","tx_hash","unsigned_txset","multisig_txset","_convertRpcDescribeTransfer","export_raw","signed_txset","tx_data_hex","tx_hash_list","signature_type","good","old","txid","tx_key","confirmations","in_pool","setReceivedAmount","received","setUnconfirmedSpentAmount","setTotalAmount","set_address","set_description","account_tags","rpcAccountTag","recipient_name","getRecipientName","tx_description","getNote","setRecipientName","setNote","multisig_import_needed","setIsMultisig","multisig","setIsReady","setNumParticipants","multisig_info","msResult","setMultisigHex","getMultisigHex","n_outputs","signResult","setSignedMultisigTxHex","old_password","new_password","address_indices","unlocked_balance","_getSubaddressIndices","canBeConfirmed","canBeInTxPool","getMaxHeight","canBeIncoming","hasDestinations","canBeOutgoing","in","pending","failed","getMinHeight","min_height","max_height","filter_by_height","getSubaddressIndex","_convertRpcTxWithTransfer","getOutgoingAmount","outgoingTransfer","transferTotal","_compareTxsByHeight","_compareIncomingTransfers","_getAccountIndices","transfer_type","isSpent","_convertRpcTxWalletWithOutput","_compareOutputs","rpcImage","below_amount","setDestinations","setOutgoingTransfer","WalletPoller","setTag","getTag","destCopies","rpcMap","rpcTxs","_convertRpcTxSet","setTxSet","inputKeyImagesList","inputKeyImage","amountsByDestList","destinationIdx","amountsByDest","_decodeRpcType","setNumSuggestedConfirmations","rpcIndices","rpcIndex","rpcDestination","destinationKey","setInputSum","setOutputSum","setChangeAddress","setChangeAmount","setNumDummyOutputs","setExtraHex","inputKeyImages","setIncomingTransfers","setIsSpent","setIsFrozen","rpcDescribeTransferResult","rpcType","aBlock","tx1","tx2","t1","t2","o1","o2","heightComparison","_prevLockedTxs","_prevUnconfirmedNotifications","_prevConfirmedNotifications","_threadPool","_numPolling","_prevHeight","_prevBalances","_onNewBlock","minHeight","lockedTxs","setMinHeight","setIncludeOutputs","noLongerLockedHashes","prevLockedTx","_getTx","unlockedTxs","lockedTx","searchSet","unannounced","_notifyOutputs","unlockedTx","_checkForChangedBalances","balances","stateOrIndex","primaryAddress","sb","getAccountIndices","setAccountIndices","accoutIndices","getDescription","totalAmount","unconfirmedSpentAmount","getTotalAmount","getUnconfirmedSpentAmount","receivedAmount","getReceivedAmount","stateOrAddress","subaddressIndex","getNumSuggestedConfirmations","numSuggestedConfirmations","getStandardAddress","spentAmount","unspentAmount","getSpentAmount","getUnspentAmount","stateOrIsGood","setIsOld","getSignatureType","setSignatureType","isReady","getNumParticipants","numParticipants","multisigHex","getSignedMultisigTxHex","signedTxMultisigHex","getAddresses","setAddresses","minAmount","maxAmount","getMinAmount","getMaxAmount","setMinAmount","setMaxAmount","queryParent","isFrozen","_EMPTY_OUTPUT","accountIndex","numUnspentOutputs","isUsed","setNumBlocksFetched","setReceivedMoney","getNumBlocksFetched","getReceivedMoney","setHasDestinations","relaxValidation","belowAmount","addDestination","destinationOrAddress","setDestination","subtractFeeFrom","setSubtractFeeFrom","destinationIndices","canSplit","recipientName","setBelowAmount","sweepEachSubaddress","DEFAULT","UNIMPORTANT","NORMAL","ELEVATED","hasPaymentId","setHasPaymentId","getPaymentIds","paymentIds","setPaymentIds","setMaxHeight","includeOutputs","queryChildren","txHeight","matchFound","incomingTransfer","mergeTx","incomingTransfers","inputSum","outputSum","changeAmount","getInputSum","getOutputSum","getChangeAmount","getIncomingAmount","incomingAmt","toRemoves","getChangeAddress","changeAddress","getNumDummyOutputs","numDummyOutputs","getExtraHex","extraHex","_mergeIncomingTransfer","oneLine","aTransfer","networkTypeOrStr","serverUri","serverUsername","serverPassword","getServerUri","getServerUsername","setServerUsername","getServerPassword","setServerPassword","setRejectUnauthorized","setSeed","seedOffset","saveCurrent","setSaveCurrent","accountLookahead","setAccountLookahead","subaddressLookahead","setSubaddressLookahead","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","maxChunkLength","len2","encodeChunk","crypto_hash_sha512","BLF_J","Blowfish","S","P","F","x8","stream2word","databytes","bcrypt_hash","sha2pass","sha2salt","cdata","ciphertext","expandstate","expand0state","encipher","decipher","keybytes","d8","dec","BLOCKS","HASHSIZE","pbkdf","passlen","salt","saltlen","keylen","rounds","amt","stride","tmpout","countsalt","origkeylen","_dereq_","SomePromiseArray","_SomePromiseArray","promise","setHowMany","setUnwrap","firstLineError","schedule","Queue","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","drainQueues","_drainQueues","_schedule","_drainQueue","_drainQueueStep","_settlePromises","setScheduler","hasCustomScheduler","haveItemsQueued","fatalError","isNode","throwLater","invokeLater","_queueTick","invoke","settlePromises","_pushOne","_reset","INTERNAL","tryConvertToPromise","debug","calledBind","rejectThis","_reject","targetRejected","context","promiseRejectionQueued","bindingPromise","_then","bindingResolved","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","bluebird","noConflict","cr","callerCache","getterCache","canEvaluate","classString","ensureMethod","namedGetter","indexedGetter","isIdentifier","propertyName","maybeGetter","getGetter","PromiseArray","apiRejection","tryCatch","errorObj","_async","cancel","cancellation","_warn","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","NEXT_FILTER","getKeys","instances","boundTo","predicateLoop","matchesPredicate","longStackTraces","contextStack","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","trace","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","enableAsyncHooks","disableAsyncHooks","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","deferUnhandledRejectionCheck","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","warnings","wForgottenReturn","unhandledRejectionCheck","_notifyUnhandledRejection","unhandledRejectionClear","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","onPossiblyUnhandledRejection","_getContext","contextBind","onUnhandledRejectionHandled","disableLongStackTraces","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","legacyHandlers","unhandledrejection","before","global","onunhandledrejection","after","rejectionhandled","onrejectionhandled","fireDomEvent","dispatch","legacy","dispatchEvent","CustomEvent","domEvent","detail","cancelable","Event","createEvent","initCustomEvent","fireGlobalEvent","emit","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","branchesRemainingToCancel","warningsOption","_clearCancellationData","_execute","monitoring","_fireEvent","nodeSupportsAsyncResource","asyncHooks","handler","isFulfilled","ignoreSelf","_parent","attachExtraTrace","__stackCleaned__","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","isTraceLine","isInternalFrame","shouldIgnore","stackFramesAsArray","isSoft","localHandler","localEventFired","formatNonError","maxChars","snip","parseLineInfoRegex","parseLineInfo","fileName","_promisesCreated","uncycle","nodes","stackToIndex","cycleEdgeNode","currentChildLength","stacks","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","ignoreUntil","hasStackAfterThrow","color","checkForgottenReturns","returnValue","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","deprecated","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","catchReturn","_value","PromiseReduce","PromiseAll","promiseAllThis","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","OperationalError","cause","errorTypes","RejectionError","isES5","getDescriptor","names","propertyIsWritable","ObjectKeys","desc","PromiseMap","catchFilter","PassThroughHandlerContext","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","Proxyable","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","spread","MappingPromiseArray","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","_init$","_values","preservedValues","_totalResolved","_resolve","booleans","_resolveFromSyncValue","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","setReflectHandler","getDomain","domain","getContextDomain","AsyncResource","getContextAsyncHooks","APPLY","createContext","nodebackForPromise","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","deferReject","fillTypes","didFulfill","didReject","_setIsFinal","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_setNoAsyncGuarantee","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","proxyable","shouldBind","_setFollowee","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","_settlePromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","toFastProperties","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","toResolutionValue","getActualLength","shouldCopyValues","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","promisifiableMethods","promisifiedKey","promisify","copyDescriptors","isClass","Es6Map","mapToEntries","extractEntry","PropertiesPromiseArray","_isMap","castValue","entriesToMap","keyOffset","_capacity","_front","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","srcIndex","dstIndex","arrayMove","ReductionPromiseArray","initialValue","_each","_initialValue","_currentCancellable","_eachValues","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","toggleScheduled","div2","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","ProcessNextTick","isRecentNode","nativePromise","standalone","cordova","documentElement","classList","toggle","observe","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","allSettled","CANCELLATION","_howMany","_unwrap","_initialized","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","__isCancelled","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","HandleWrapper","afterValue","delay","ms","successClear","failureClear","handleWrapper","afterTimeout","NULL","dispose","resources","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_data","_context","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","doDispose","_unsetDisposable","using","spreadArgs","disposer","reflectedResources","inspections","_disposer","tryCatchTarget","globalObject","tryCatcher","isPrimitive","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","rident","safeToString","ArrayFrom","itResult","hasEnvVariables","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","defaultValue","Child","T","appendee","maybeError","FakeConstructor","ic","foo","filledRange","prefix","ignore","runInAsyncScope","supportsAsync","move","_move","for","modrn","allocUnsafe","_toArrayLikeLE","_toArrayLikeBE","isNegNum","Rand","rand","generate","_rand","getBytes","getByte","msCrypto","randomBytes","asUInt32Array","readUInt32BE","scrubVec","cryptBlock","M","keySchedule","SUB_MIX","SBOX","nRounds","t0","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s1","s2","s3","ksRow","RCON","G","INV_SBOX","INV_SUB_MIX","xi","sx","x4","AES","blockSize","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","writeUInt32BE","decryptBlock","m1","scrub","aes","Transform","GHASH","incr32","StreamCipher","iv","decrypt","_cipher","ck","_ghash","_finID","ghash","toPad","ivBits","writeUIntBE","calcIv","_prev","_secCache","_decrypt","_alen","_mode","_authTag","_called","_update","chunk","rump","encrypt","_final","final","xorTest","getAuthTag","setAuthTag","setAAD","ciphers","deciphers","modes","createCipher","Cipher","createCipheriv","Cipheriv","createDecipher","Decipher","createDecipheriv","Decipheriv","listCiphers","getCiphers","AuthCipher","MODES","ebtk","Splitter","_last","_autopadding","suite","padded","unpad","setAutoPadding","setTo","autoPadding","PADDING","padBuff","writeUInt8","ZEROES","fromArray","_multiply","lsbVi","Vi","Zi","abl","pad","encryptStart","encryptByte","byteParam","shiftIn","modeModules","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","DES","aesModes","desModes","keyLen","ivLen","CipherBase","des","EDE","modeName","_des","des3","getr","priv","prime1","prime2","crt","blinds","blinder","publicExponent","unblinder","blind","blinded","qinv","coefficient","exponent1","m2","exponent2","verify","algorithms","Sign","algorithm","Writable","_hashType","_hash","_tag","_signType","Verify","createSign","createVerify","_write","EC","parseKeys","curves","algo","hlen","hbits","bits2int","bits2octets","obits","makeKey","kv","makeR","hashType","signType","curve","curveId","keyFromPrivate","privateKey","toDER","ecSign","priv_key","H","dsaSign","checkValue","pub","pubkey","subjectPrivateKey","ecVerify","pub_key","unpacked","montp","dsaVerify","padNum","copyProps","SafeBuffer","encodingOrOffset","allocUnsafeSlow","SlowBuffer","Zstream","zlib_deflate","zlib_inflate","Zlib","DEFLATE","UNZIP","dictionary","init_done","memLevel","strategy","windowBits","write_in_progress","pending_close","gzip_id_bytes_read","NONE","INFLATE","GZIP","GUNZIP","DEFLATERAW","INFLATERAW","deflateEnd","strm","inflateEnd","in_off","in_len","out_off","out_len","writeSync","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_FINISH","Z_BLOCK","avail_in","next_in","avail_out","next_out","_process","_checkError","_afterSync","_after","next_expected_header_byte","deflate","inflate","Z_NEED_DICT","inflateSetDictionary","Z_OK","Z_DATA_ERROR","Z_STREAM_END","Z_BUF_ERROR","_error","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","_setDictionary","deflateInit2","Z_DEFLATED","inflateInit2","deflateSetDictionary","deflateReset","inflateReset","kMaxLength","kRangeErrorMessage","Z_MIN_WINDOWBITS","Z_MAX_WINDOWBITS","Z_DEFAULT_WINDOWBITS","Z_MIN_CHUNK","Z_MAX_CHUNK","Z_DEFAULT_CHUNK","Z_MIN_MEMLEVEL","Z_MAX_MEMLEVEL","Z_DEFAULT_MEMLEVEL","Z_MIN_LEVEL","Z_MAX_LEVEL","Z_DEFAULT_LEVEL","Z_DEFAULT_COMPRESSION","bkeys","bk","bkey","Z_ERRNO","Z_STREAM_ERROR","Z_MEM_ERROR","Z_VERSION_ERROR","ckeys","ckey","zlibBuffer","engine","buffers","nread","flow","onEnd","zlibBufferSync","flushFlag","_finishFlushFlag","_processChunk","Deflate","Inflate","Gzip","Gunzip","DeflateRaw","InflateRaw","Unzip","isValidFlushFlag","finishFlush","_flushFlag","_handle","_hadError","_close","_buffer","_level","_strategy","emitCloseNT","createDeflate","createInflate","createDeflateRaw","createInflateRaw","createGzip","createGunzip","createUnzip","deflateSync","gzip","gzipSync","deflateRaw","deflateRawSync","unzip","unzipSync","inflateSync","gunzip","gunzipSync","inflateRaw","inflateRawSync","_flush","_transform","kind","_this2","_writableState","ended","ending","needDrain","availInBefore","availOutBefore","inOff","er","availInAfter","availOutAfter","have","newReq","ieee754","customInspectSymbol","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","isEncoding","fromString","arrayView","isInstance","fromArrayBuffer","fromArrayLike","fromArrayView","SharedArrayBuffer","checked","fromObject","toPrimitive","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","foundIndex","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","units","utf16leToBytes","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","typedArraySupport","poolSize","_isBuffer","swap16","swap32","swap64","toLocaleString","thisStart","thisEnd","thisCopy","targetCopy","hexSliceLookupTable","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","readUintLE","readUIntLE","readUintBE","readUIntBE","readUint8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUint8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","E","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_BUFFER_OUT_OF_BOUNDS","isInteger","INVALID_BASE64_RE","leadSurrogate","base64clean","alphabet","table","i16","BufferBigIntNotDefined","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","$apply","$call","$reflectApply","$gOPD","$defineProperty","$max","originalFunction","applyBind","Caseless","dict","clobber","httpify","setHeader","hasHeader","getHeader","removeHeader","StringDecoder","hashMode","_finalOrDigest","__final","_decoder","_encoding","inputEnc","outputEnc","outData","_toString","fin","DelayedStream","CombinedStream","readable","dataSize","maxDataSize","pauseStreams","_released","_streams","_currentStream","_insideLoop","_pendingNext","combinedStream","option","isStreamLike","newStream","pauseStream","_checkDataSize","_handleErrors","pipe","_getNext","_realGetNext","_pipeNext","_emitError","destroy","_updateDataSize","elliptic","ECDH","aliases","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","ec","formatReturnValue","bn","p256","secp256r1","secp192r1","p384","p521","generateKeys","genKeyPair","getPublicKey","computeSecret","inenc","keyFromPublic","getPublic","getPrivate","getX","getPrivateKey","setPublicKey","_importPublic","setPrivateKey","_priv","_importPrivate","RIPEMD160","sha","Hash","alg","Legacy","ZEROS","Hmac","blocksize","_alg","ipad","_ipad","opad","_opad","rng","pseudoRandomBytes","prng","algos","algoKeys","pbkdf2","pbkdf2Sync","dh","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","randomFillSync","createCredentials","BlockCipher","lib","C_algo","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","extend","_doReset","_keyPriorReset","sigBytes","invKsRow","_doCryptBlock","_createHelper","C_lib","WordArray","BufferedBlockAlgorithm","C_enc","Base64","EvpKDF","C_mode","BlockCipherMode","Pkcs7","CipherParams","OpenSSLFormatter","SerializableCipher","OpenSSLKdf","PasswordBasedCipher","Utf8","cfg","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","dataUpdate","_append","finalize","_doFinalize","ivSize","selectCipherStrategy","cipher","Encryptor","Decryptor","_iv","xorBlock","_prevBlock","processBlock","thisBlock","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","modeCreator","_minBufferSize","__creator","_doProcessBlock","finalProcessedBlocks","cipherParams","mixIn","formatter","OpenSSL","openSSLStr","ciphertextWords","encryptor","cipherCfg","_parse","kdf","execute","compute","derivedParams","globalThis","cryptoSecureRandomInt","subtype","overrides","$super","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","nBytes","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","escape","utf8Str","unescape","_nDataBytes","doFlush","processedWords","dataWords","dataSigBytes","nBlocksReady","nWordsReady","nBytesReady","Hasher","messageUpdate","_createHmacHelper","HMAC","_map","base64Chars","triplet","paddingChar","base64Str","base64StrLength","reverseMap","_reverseMap","paddingIndex","bitsCombined","parseLoop","Base64url","urlSafe","_safe_map","swapEndian","Utf16","Utf16BE","utf16Chars","utf16Str","utf16StrLength","Utf16LE","iterations","derivedKey","derivedKeyWords","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","superInit","subInit","typedArray","typedArrayByteLength","offset_i","M_offset_i","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","HmacMD5","generateKeystreamAndEncrypt","keystream","CTRGladman","incWord","_counter","incCounter","_keystream","AnsiX923","lastBytePos","Ansix923","Iso10126","Iso97971","ZeroPadding","NoPadding","SHA1","PBKDF2","blockIndex","blockIndexWords","blockWords","blockWordsLength","intermediate","intermediateWords","C_","RabbitLegacy","K","X","_X","_C","_b","nextState","IV","IV_0","IV_1","i0","gx","ga","gb","gh","gl","Rabbit","RC4","keySigBytes","_S","keyByteIndex","keyByte","_j","generateKeystreamWord","keystreamWord","RC4Drop","drop","_zl","_zr","_sl","_sr","_hl","_hr","cl","dl","el","ar","br","dr","hl","hr","zl","zr","sl","sr","f1","f2","f3","f4","f5","rotl","HmacRIPEMD160","W","HmacSHA1","SHA256","SHA224","HmacSHA224","isPrime","sqrtN","factor","getFractionalBits","nPrime","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","HmacSHA256","X64Word","x64","Word","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","outputLength","_state","nBlockSizeLanes","M2i","M2i1","lane","high","low","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","HmacSHA3","C_x64","X64WordArray","SHA512","SHA384","HmacSHA384","X64Word_create","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","bh","eh","fh","fl","hh","Wil","Wih","Wi","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","t1l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1h","t2l","toX32","HmacSHA512","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","_lBlock","_rBlock","exchangeLR","exchangeRL","lBlock","rBlock","TripleDES","key3","_des1","_des2","_des3","X32WordArray","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","hasSymbols","toStr","origDefineProperty","hasPropertyDescriptors","supportsDescriptors","predicates","_maxDataSizeExceeded","_bufferedEvents","delayedStream","realEmit","_handleEmit","_checkIfMaxDataSizeExceeded","utils","CBCState","_cbcInit","_cbcState","inp","outOff","superProto","bufferOff","_updateDecrypt","_updateEncrypt","_flushBuffer","inputOff","outputOff","_finalEncrypt","_finalDecrypt","_pad","_unpad","DESState","_desState","deriveKeys","shiftTable","kL","kR","pc1","r28shl","pc2","_encrypt","lStart","rStart","keyL","keyR","expand","substitute","rip","EDEState","k1","k2","k3","_edeState","inL","inR","outL","outR","pc2table","sTable","permuteTable","padSplit","generatePrime","DH","ENCODINGS","genc","millerRabin","TWENTYFOUR","ELEVEN","TEN","THREE","SEVEN","_pub","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","rem","simpleSieve","fermatTest","checkPrime","__gen","_gen","getPrime","getGenerator","findPrime","TWO","FIVE","FOUR","_getPrimes","n2","unstupid","ECCurves","ECKey","isPublic","getN","getCurve","decodePointHex","n1","getG","PublicKey","encodeCompressedPointHex","PrivateKey","deriveSharedSecret","toBigInteger","Barrett","ECFieldElementFp","ECPointFp","zinv","ECCurveFp","fromBigInteger","infinity","reducer","modInverse","getY","isInfinity","twice","getInfinity","y1","v2","v3","x1v2","zu2","x3","shiftLeft","y3","z3","signum","y1z1","y1sqz1","R","hBit","testBit","multiplyTwo","both","getQ","getA","getB","encodePointHex","xHex","yHex","oLen","yIsEven","beta","betaValue","getR","shiftRight","intValue","modMult","modReduce","qLen","compareTo","qMinusOne","legendreExponent","U","V","Q","fourQ","modDouble","SecureRandom","lucasSequence","getLowestSetBit","Uh","Vl","Vh","Ql","Qh","X9ECParameters","fromHex","getH","eddsa","getNAF","getJSF","BaseCurve","conf","zero","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","precomputed","point","_fixedNafMul","doubles","_getDoubles","naf","I","nafW","repr","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","jsf","ja","jb","decodePoint","pointFromX","encodeCompressed","precompute","power","_getBeta","_hasDoubles","dbl","EdwardsCurve","twisted","mOneA","dd","oneC","Point","zOne","_mulA","_mulC","rhs","lhs","y2","pointFromY","fromJSON","_extDbl","nx","ny","nt","nz","_projDbl","_extAdd","_projAdd","mulAdd","jmulAdd","zi","eqXToP","xc","short","edwards","MontCurve","a24","aa","bb","diffAdd","da","jumlAdd","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","isRed","inf","JPoint","lambda","betas","_getEndoRoots","lambdas","basis","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","len1","_endoSplit","v1","p1","p2","q1","q2","ax","_endoWnafMulAdd","npoints","ncoeffs","pre","endoMul","obj2point","ys1","dyinv","_precompute","zinv2","ay","pz2","z2","h2","h3","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","pz3","zs","PresetCurve","defineCurve","sha256","sha384","sha512","HmacDRBG","KeyPair","Signature","nh","keyPair","fromPrivate","fromPublic","drbg","pers","persEnc","entropy","hmacStrength","entropyEnc","ns2","_truncateToN","truncOnly","ns1","iter","kp","kpX","recoveryParam","canonical","sinv","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Qprime","privEnc","pubEnc","derive","_importDER","Position","place","initial","octetLen","rmPadding","constructLength","octets","LN2","slen","backHalf","parseBytes","EDDSA","pointClass","encodingLength","keyFromSecret","hashInt","messagePrefix","Rencoded","encodePoint","s_","pubBytes","makeSignature","SG","intFromLE","fromSecret","lastIx","normed","xIsOdd","encodeInt","decodeInt","isPoint","cachedProperty","_secret","_pubBytes","privBytes","getSecret","_R","_Rencoded","_Sencoded","Sencoded","toBytes","toHex","minAssert","minUtils","zero2","m8","d1","d2","m14","m24","computer","firstSource","keysArray","nextIndex","polyfill","ReflectOwnKeys","ReflectApply","NumberIsNaN","EventEmitter","emitter","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","prepend","events","existing","newListener","onceWrapper","fired","wrapFn","_onceWrap","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","wrapListener","removeEventListener","setMaxListeners","getMaxListeners","doError","prependListener","prependOnceListener","originalListener","spliceOne","removeAllListeners","rawListeners","eventNames","keyStart","ivStart","hasOwn","gOPD","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","newValue","copyIsArray","deep","mod_assert","mod_util","jsSprintf","fmt","precision","conversion","argn","doPad","dumpException","jsFprintf","ex","cex","sprintf","printf","fprintf","cycles","aobj","bobj","seenIndex","isCallable","forEachArray","forEachString","forEachObject","ForeverAgent","SSL","ForeverAgentSSL","net","tls","AgentSSL","getConnectionName","localAddress","requests","sockets","freeSockets","maxSockets","defaultMaxSockets","minSockets","defaultMinSockets","socket","onSocket","onIdleError","_onIdleError","createConnection","addRequestNoreuse","addRequest","useChunkedEncodingByDefault","idleSocket","_reusedSocket","removeSocket","createSocket","FormData","ERROR_MESSAGE","funcType","bound","binder","boundLength","boundArgs","Empty","implementation","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","getProto","needsEval","TypedArray","INTRINSICS","Atomics","eval","EvalError","FinalizationRegistry","URIError","WeakRef","WeakSet","doEval","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","stringToPath","quote","subString","getBaseIntrinsic","alias","intrinsicName","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","afterRequest","beforeRequest","browser","cookie","creator","har","page","pageTimings","postData","timings","HARError","createAjvInstance","hasArrayLengthDefineBug","origSymbol","hasSymbolSham","symObj","syms","HashBase","_block","_blockSize","_blockOffset","_finalized","throwIfNotStringOrBuffer","_digest","common","ripemd","sha1","sha224","ripemd160","BlockHash","pendingTotal","outSize","padLength","_delta8","_delta32","join32","inner","outer","rotl32","sum32","sum32_3","sum32_4","Kh","Ah","Bh","Ch","Dh","Eh","rh","sh","toHex32","split32","shaCommon","sum32_5","ft_1","sha1_K","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","T1","T2","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","ch64_hi","xh","xl","yh","yl","zh","ch64_lo","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","rotr32","p32","isSurrogatePair","htonl","zero8","predResist","minEntropy","_reseed","reseedInterval","nonceEnc","_hmac","kmac","reseed","addEnc","pathm","wrapSuccess","wrapFail","getFsInstance","getInstance","appendFile","getFile","fileEntry","reader","FileReader","onloadend","evt","readAsText","readAsDataURL","getDirectory","dirEntry","createReader","readEntries","newFolderName","basePath","exclusive","FileError","isDirectory","fileSystem","quota","webkitPersistentStorage","requestQuota","webkitStorageInfo","PERSISTENT","requestFileSystem","isPhoneGap","grantedBytes","webkitRequestFileSystem","LocalFileSystem","createWriter","writer","onwrite","toURL","seek","isMobile","doGet","dirRef","protocol","supportsFileSystem","parser","signer","parseRequest","signRequest","createSigner","isSigner","sshKeyToPEM","sshKeyFingerprint","fingerprint","pemToRsaSSHKey","verifySignature","verifyHMAC","HttpSignatureError","HASH_ALGOS","PK_ALGOS","InvalidAlgorithmError","validateAlgorithm","ExpiredRequestError","InvalidHeaderError","InvalidParamsError","MissingHeaderError","StrictParsingError","arrayOfString","optionalFinite","clockSkew","authzHeaderName","authorizationHeaderName","substate","tmpName","tmpValue","signingString","authz","keyId","httpVersion","skew","hdr","sshpk","jsprim","AUTHZ_FMT","rs_alg","rs_signFunc","rs_keyId","rs_signer","hashAlgorithm","parsePrivateKey","isPrivateKey","rs_key","rs_headers","rs_lines","writeHeader","writeDateHeader","rfc1123","writeTarget","sigObj","optionalString","optionalArrayOfString","_stringToSign","parseKey","comment","parsedSignature","Key","isKey","hashAlg","h1","validateParams","isLE","mLen","eLen","eMax","eBias","nBits","rt","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","callee","supportsStandardArguments","badArrayLike","isCallableMarker","fnToStr","reflectApply","constructorRegex","isES6ClassFn","fnStr","documentDotAll","tryFunctionObject","strClass","GeneratorFunction","isFnRegex","generatorFunc","getGeneratorFunc","getPolyfill","shim","availableTypedArrays","typedArrays","$slice","toStrTags","anyTrue","tryTypedArrays","isStrictTypedArray","loose","isLooseTypedArray","isStream","isReadable","_read","_readableState","isWritable","isDuplex","dbits","fromNumber","nbi","inBrowser","appName","am","DB","DM","DV","FV","F1","F2","rr","vv","BI_RC","int2char","intAt","nbv","fromInt","nbits","Classic","Montgomery","mp","invDigit","mpl","mph","um","mt2","op_and","op_or","op_xor","op_andnot","lbit","cbit","NullExp","nNop","q3","dlShiftTo","mu","convert","revert","divRemTo","multiplyTo","sqrTo","squareTo","subTo","copyTo","drShiftTo","fromRadix","lShiftTo","bs","cbs","bm","ds","rShiftTo","pm","pt","ts","nsh","ys","y0","yt","qd","exp","toRadix","km","modPowInt","multiplyUpperTo","multiplyLowerTo","dAddOffset","rng_state","rng_pool","rng_pptr","lowprimes","lplim","rng_seed_time","rng_psize","cs","dMultiply","bitwiseTo","isProbablePrime","nextBytes","changeBit","addTo","modInt","byteValue","shortValue","andNot","bitCount","setBit","clearBit","flipBit","divideAndRemainder","g2","is1","ac","appVersion","rng_get_byte","Arcfour","ba","_traverse","arrayKeywords","propsKeywords","skipKeywords","enum","exclusiveMaximum","exclusiveMinimum","primitiveConstructors","changing","checkPropertyChange","property","_changing","checkProp","addError","checkType","unionErrors","priorErrors","theseErrors","readonly","disallow","itemsIsArray","propDef","coerce","objTypeDef","additionalProp","existingOnly","requires","checkObj","enumer","maxDecimal","mustBeValid","serializer","replacer","cycleReplacer","thisPos","spaces","getSerialize","mod_extsprintf","mod_verror","mod_jsonschema","hasKey","pluckv","doFlattenIter","deepCopy","marker","obj1","obj2","forEachKey","pluck","flattenObject","flattenIter","validateJsonObject","validateJsonObjectJS","randElt","extraProperties","allowed","mergeObjects","parseInteger","uopts","optionalObject","baseOverride","PI_DEFAULTS","allowSign","allowPrefix","allowTrailing","allowImprecise","trimWhitespace","leadingZeroIsOctal","pbase","mult","isSpace","prefixToBase","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","iso8601","getUTCMilliseconds","RFC1123_DAYS","RFC1123_MONTHS","parseDateTime","numeric","hrtimediff","hrtimeDiff","hrtimeAccum","hrtimeAdd","assertHrtime","hrtimeNanosec","hrtimeMicrosec","hrtimeMillisec","report","propname","VError","jsv_details","provided","ARRAY16","_a","_c","fnF","fnG","fnH","fnI","brorand","MillerRabin","_randbelow","min_bytes","_randrange","rone","rn1","getDivisor","extensions","preference","extname","EXTRACT_TYPE_REGEXP","TEXT_TYPE_REGEXP","charset","mime","charsets","extension","exts","rfc3986","generateBase","httpMethod","base_uri","normalized","hmacsign","consumer_secret","token_secret","hmacsign256","rsasign","private_key","plaintext","signMethod","skipArgs","keysShim","isArgs","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","keysWorksWithArguments","TYPED_OK","_has","sources","shrinkBuf","fnTyped","arraySet","src_offs","dest_offs","flattenChunks","fnUntyped","setTyped","Buf8","Buf16","Buf32","adler","Z_TREES","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_BINARY","Z_TEXT","Z_UNKNOWN","crcTable","makeTable","crc","configuration_table","trees","adler32","crc32","MAX_MATCH","MIN_LOOKAHEAD","HCRC_STATE","BUSY_STATE","FINISH_STATE","errorCode","rank","flush_pending","pending_buf","pending_out","total_out","flush_block_only","_tr_flush_block","block_start","strstart","put_byte","putShortMSB","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","w_size","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","more","_w_size","window_size","hash_size","total_in","insert","ins_h","hash_shift","hash_mask","deflate_fast","hash_head","bflush","match_length","_tr_tally","max_lazy_match","MIN_MATCH","last_lit","deflate_slow","max_insert","prev_match","match_available","Config","good_length","max_lazy","nice_length","max_chain","DeflateState","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","HEAP_SIZE","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","MAX_BITS","heap_len","heap_max","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","deflateResetKeep","data_type","_tr_init","max_block_size","max_start","deflateInit","deflateSetHeader","old_flush","beg","hcrc","os","bstate","deflate_huff","deflate_rle","_tr_align","_tr_stored_block","avail","tmpDict","dictLength","deflateInfo","_in","_out","dmax","wsize","whave","wnext","s_window","hold","lcode","dcode","lmask","dmask","here","dist","from_source","lencode","distcode","lenbits","distbits","top","dolen","dodist","sane","inflate_fast","inflate_table","TYPE","BAD","zswap32","InflateState","havedict","wbits","ncode","nlen","ndist","work","lendyn","distdyn","back","was","inflateResetKeep","inflateReset2","lenfix","distfix","virgin","fixedtables","updatewindow","inflateInit","here_bits","here_op","here_val","last_bits","last_op","last_val","hbuf","order","inf_leave","xflags","extra_len","inflateGetHeader","inflateInfo","lbase","lext","dbase","dext","lens_index","table_index","incr","huff","base_index","MAXBITS","offs","extra_index","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","D_CODES","_dist_code","_length_code","base_length","static_l_desc","static_d_desc","static_bl_desc","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","put_short","send_bits","send_code","bi_reverse","gen_codes","next_code","init_block","LITERALS","END_BLOCK","bi_windup","smaller","_n2","_m2","pqdownheap","compress_block","ltree","dtree","lc","lx","build_tree","stree","xbits","overflow","gen_bitlen","scan_tree","curlen","prevlen","nextlen","REP_3_6","REPZ_3_10","REPZ_11_138","send_tree","static_init_done","stored_len","copy_block","LENGTH_CODES","L_CODES","tr_static_init","opt_lenb","static_lenb","max_blindex","black_mask","detect_data_type","BL_CODES","build_bl_tree","lcodes","dcodes","blcodes","send_all_trees","STATIC_TREES","bi_flush","certificate","RSAPrivateKey","int","RSAPublicKey","AlgorithmIdentifier","bitstr","null_","PrivateKeyInfo","octstr","EncryptedPrivateKeyInfo","EncryptedPrivateKey","DSAPrivateKey","DSAparam","ECPrivateKey","ECParameters","namedCurve","asn","Time","utcTime","utctime","generalTime","gentime","AttributeTypeValue","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","TBSCertificate","X509Certificate","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherText","cipherKey","match2","aesid","fixProc","compat","passphrase","ndata","stripped","tbsCertificate","subjectPublicKeyInfo","subjectPublicKey","kde","kdeparams","iters","assertPath","normalizeStringPosix","lastSegmentLength","dots","lastSlashIndex","posix","trailingSeparator","joined","fromStart","fromEnd","fromLen","toStart","toLen","lastCommonSep","fromCode","_makeLong","hasRoot","matchedSlash","extIdx","firstNonSlashEnd","startDot","startPart","preDotState","pathObject","sep","_format","delimiter","win32","ZERO_BUF","checkParameters","defaultEncoding","subtle","toBrowser","checks","getNextTick","queueMicrotask","browserPbkdf2","importKey","deriveBits","resolvePromise","prom","checkNative","MAX_ALLOC","sizes","rmd160","saltLen","getDigest","ipad1","ipad2","DK","block1","destPos","hLen","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","uptime","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","umask","lastStartTime","queued","opt","dequeue","addAll","addedPromises","inc","elapsed","candidate","aborted","DOMException","Punycode","internals","punySuffix","wildcard","exception","findRule","punyDomain","toASCII","errorCodes","DOMAIN_TOO_SHORT","DOMAIN_TOO_LONG","LABEL_STARTS_WITH_DASH","LABEL_ENDS_WITH_DASH","LABEL_TOO_LONG","LABEL_TOO_SHORT","LABEL_INVALID_CHARS","ascii","labels","tld","sld","subdomain","listed","domainParts","handlePunycode","tldParts","privateParts","isValid","i2ops","mgf","withPublic","zBuffer","iHash","maskedSeed","maskedDb","dif","oaep","ps","pkcs1","publicKey","paddedMsg","hLen2","dblen","nonZero","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","mapDomain","encoded","ucs2decode","ucs2encode","fromCodePoint","digitToBasic","adapt","numPoints","firstTime","baseMinusTMin","bias","basic","oldi","baseMinusT","currentValue","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","toUnicode","percentTwenties","formatters","RFC1738","RFC3986","allowDots","allowPrototypes","arrayLimit","parameterLimit","plainObjects","strictNullHandling","givenKey","leaf","parseArrays","cleanRoot","parseObject","ignoreQueryPrefix","tempObj","cleanStr","bracketEqualsPos","parseValues","arrayPrefixGenerators","brackets","pushToArray","valueOrArray","toISO","encodeValuesOnly","serializeDate","skipNulls","generateArrayPrefix","objKeys","arrayFormat","addQueryPrefix","hexTable","arrayToObject","compacted","compactQueue","mergeTarget","targetItem","qs","maxKeys","kstr","vstr","stringifyPrimitive","ks","MAX_BYTES","generated","oldBrowser","safeBuffer","randombytes","kBufferMaxLength","kMaxUint32","assertOffset","actualFill","ourBuf","uint","objectKeys","Duplex","Readable","allowHalfOpen","onend","onEndNT","highWaterMark","getBuffer","destroyed","PassThrough","ReadableState","EElistenerCount","OurUint8Array","debugUtil","debuglog","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","needReadable","emittedReadable","readableListening","resumeScheduled","emitClose","autoDestroy","awaitDrain","readingMore","_destroy","readableAddChunk","addToFront","skipChunkCheck","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","_undestroy","undestroy","isPaused","MAX_HWM","howMuchToRead","computeNewHighWaterMark","maybeReadMore_","updateReadableListening","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","finished","xs","nOrig","doRead","pipeOpts","endFn","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","ondata","cleanedUp","pipeOnDrain","dests","ev","asyncIterator","_fromList","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","prefinish","err2","CorkedRequest","corkReq","pendingcb","onCorkedFinish","corkedRequestsFree","WritableState","realHasInstance","internalUtil","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","noDecode","decodeStrings","writing","corked","bufferProcessing","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","rState","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","lastPromise","wrapForNext","_Object$create","enumerableOnly","symbols","hasStrings","_getString","_getBuffer","nb","getOwnPropertyDescriptors","emitErrorAndCloseNT","emitErrorNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","eos","onlegacyfinish","writableEnded","readableEnded","onrequest","isRequest","destroyer","closed","popCallback","destroys","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","pipeline","core","errorText","expose","plumbing","PromiseImpl","constructorMixin","originalInit","requestOptions","_rp_promise","thenExposed","RequestError","StatusCodeError","TransformError","_rp_resolve","_rp_reject","_rp_callbackOrig","defaultTransformations","_rp_options","simple","transform2xxOnly","HEAD","origCallbackThrewException","thrownException","is2xx","transformedResponse","transformErr","exposeTo","bindTo","promisePropertyKey","methodToExpose","exposeAs","Bluebird","configure","stealthyRequire","EOL","bindCLS","cookies","paramsHaveRequestBody","initParams","verbFunc","wrapRequestMethod","requester","patch","jar","store","agentOptions","optionsArg","caseless","helpers","toBase64","Auth","hasAuth","sentAuth","bearerToken","bearer","challenge","ha1","ha1Compute","ha2","digestResponse","authValues","onRequest","authVerb","tough","Cookie","CookieJar","RequestJar","_jar","looseMode","setCookie","cookieOrStr","setCookieSync","getCookieString","getCookieStringSync","getCookies","getCookiesSync","formatHostname","parseNoProxyZone","zone","zoneParts","hasPort","noProxy","NO_PROXY","no_proxy","noProxyZone","isMatchedAt","hostnameMatched","uriInNoProxy","HTTP_PROXY","http_proxy","HTTPS_PROXY","https_proxy","Har","pair","prep","queryObj","headersObj","jsonObj","paramsObj","queryString","mimeType","baseUrl","bodySize","headersSize","form","formData","attachment","createReadStream","calculateMac","app","dlg","localtimeOffsetMsec","artifacts","mac","hasExt","jsonSafeStringify","requestBodyStream","multipart","safeStringify","isReadStream","numbers","isstream","Multipart","boundary","chunked","isChunked","setHeaders","build","preambleCRLF","preamble","postambleCRLF","oauth","OAuth","buildParams","_oauth","qsLib","oa","oauth_version","oauth_timestamp","oauth_nonce","oauth_signature_method","consumer_secret_or_private_key","oauth_consumer_secret","oauth_private_key","oauth_token_secret","oauth_realm","oauth_transport_method","baseurl","oauth_signature","buildBodyHash","signature_method","shasum","concatParams","formContentType","transport","transport_method","body_hash","Querystring","useQuerystring","parseOptions","stringifyOptions","qsParseOptions","qsStringifyOptions","isUrl","Redirect","followRedirect","followRedirects","followAllRedirects","followOriginalHttpMethod","allowRedirect","maxRedirects","redirects","redirectsFollowed","removeRefererHeader","redirectTo","_auth","uriPrev","redirectUri","_started","_form","originalHost","tunnel","defaultProxyHeaderWhiteList","defaultProxyHeaderExclusiveList","Tunnel","proxyHeaderWhiteList","proxyHeaderExclusiveList","tunnelOverride","setup","proxy","uriObject","proxyHeaders","whiteList","constructProxyHeaderWhiteList","tunnelFn","tunnelFnName","getTunnelFn","tunnelOptions","proxyAuth","ca","cert","pfx","secureOptions","secureProtocol","constructTunnelOptions","zlib","aws2","httpSignature","getProxyFromURI","hawk","globalCookieJar","globalPool","requestToJSON","responseToJSON","_har","reserved","nonReserved","filterForNonReserved","isReserved","filterOutReservedFunctions","explicitMethod","_qs","_multipart","_redirect","_tunnel","NODE_DEBUG","headerName","__isRequestRequest","_callbackCalled","baseUrlEndsWithSlash","uriStartsWithSlash","enableUnixSocket","strictSSL","isUnix","hostHeaderName","originalHostHeaderName","requestForm","appendFormValue","formKey","formValue","aws","uriAuthPieces","proxyAuthPieces","setContentLength","timing","elapsedTime","defaultModules","httpModules","httpModule","agentClass","getNewAgent","ntick","_json","_aborted","getHeaders","poolKey","globalAgent","startTimeNow","_aws","reqOptions","timeoutTimer","onRequestResponse","onRequestError","isConnecting","_connecting","connecting","onLookupTiming","onConnectTiming","setReqTimeout","onReqSockConnect","timingStart","timingPhases","wait","dns","tcp","authorized","targetCookieJar","addCookie","ignoreError","_disableCookies","responseContent","_ended","contentEncoding","zlibOptions","_paused","pipeDest","responseStarted","responseStartTime","_destdata","readResponseBody","sslErr","authorizationError","bufferLength","_jsonReviver","headersSent","ctname","clname","pipefilter","jsonReplacer","_jsonReplacer","jsonReviver","unixParts","socketPath","sign_version","signRes","session","bucket","originalCookieHeader","urihref","fn1","fn2","fn3","fn4","fn5","tl","tr","safer","Safer","kStringMaxLength","MAX_LENGTH","MAX_STRING_LENGTH","finalSize","_finalSize","assigned","lowBits","highBits","Algorithm","Sha","_w","rotl30","ft","Sha1","rotl5","Sha256","Sha224","_f","_g","_h","sigma1","Sha384","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","writeInt64BE","Sha512","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","t2h","algInfo","sizePart","algPrivInfo","pkcs8oid","privInfo","hashAlgs","Certificate","algs","Fingerprint","errs","Identity","CertificateParseError","arrayOfObject","subjects","assertCompatible","subjectKey","issuer","issuerKey","serial","validFrom","validUntil","purposes","_hashCache","isExpired","when","isSignedBy","issuerCert","isSignedByKey","getExtension","keyOrOid","getExtensions","maybeExt","oid","x509","extras","openssh","signWith","fmts","didOne","createSelfSigned","subjectOrSubjects","subject","optionalNumber","lifetime","optionalBuffer","hostSubjects","userSubjects","toPublic","isCertificate","ver","isCompatible","_sshpkApiVersion","_oldVersionDetect","generateECDSA","CRYPTO_HAVE_ECDH","osCurve","ecParams","cByteLen","jsbn","generateED25519","nacl","secretKey","_isPriv","_algo","_curve","_p","_ecParams","ECPrivate","ECPublic","_params","mpNormalize","_keyCheck","pk","isPub","otherpk","box","generateKey","Verifier","Signer","hashAlgo","isSignature","detached","sigBuf","FingerprintFormatError","KeyParseError","innerErr","keyName","SignatureParseError","certName","KeyEncryptedError","theirHash","theirHash2","hash2","base64RE","hexRE","enAlgs","isFingerprint","ssh","putty","findDNSSECHeader","dnssec","findPEMHeader","findSSHHeader","findPuTTYHeader","rfc4253","DNSSEC_PRIVKEY_HEADER_PREFIX","algElems","algoNum","algoName","supportedAlgosById","elements","rsaParams","element","elementToBuf","publicFromPrivateECDSA","ecdsaKey","keyString","base64key","keyBuffer","publicExponentLen","rsaKey","ecNormalize","dmodp","dmodq","addRSAMissing","rsaAlgFromOptions","mpDenormalize","dnssecTimestamp","supportedAlgos","timestampStr","fromBuffer","signAsync","getCertType","SSHBuffer","TYPES","ECDSA_ALGO","sshbuf","innerAlgo","readBuffer","certType","getAlg","partCount","readPart","readInt64","principals","pbuf","psshbuf","atEnd","pr","forUser","forHost","int64ToDate","extbuf","critical","signingKeyBuf","consumed","sourceInt64","dateToInt64","upper","lower","noSig","writePart","writeInt64","forceType","si","ei","opensslKeyDeriv","pbesEnd","eder","kdfEnd","kdfOid","hashAlgOid","OID_TO_HASH","cipherOid","OID_TO_CIPHER","cinfo","opensshCipherInfo","opensslName","cipherStream","sshpriv","readSSHPrivate","readType","originalInput","readPkcs1","pkcs8","readPkcs8","writePkcs8","writePkcs1","CIPHER_TO_OID","HASH_TO_OID","readMPInt","iqmp","readECDSACurve","curveOid","readBitString","zeroPadToLength","writePkcs1RSAPrivate","writePkcs1RSAPublic","writePkcs1DSAPrivate","writePkcs1DSAPublic","writePkcs1ECDSAPrivate","writePkcs1ECDSAPublic","writeBitString","writePkcs1EdDSAPrivate","writePkcs1EdDSAPublic","nm","calculateDSAPublic","curveName","calculateED25519Public","calculateX25519Public","pkcs8ToBuffer","writeECDSACurve","curveNames","cd","fieldTypeOid","countZeros","sillyInt","writePkcs8RSAPrivate","writePkcs8RSAPublic","writePkcs8DSAPrivate","writePkcs8DSAPublic","writePkcs8ECDSAPrivate","writePkcs8ECDSAPublic","writePkcs8EdDSAPublic","formatVersion","splitHeader","encryption","publicLines","hash1","publicBuf","keyType","algToKeyType","privateLines","privateBuf","privateKeyParts","keyTypeToAlg","txt","readPartial","readInternal","nd","_rfc4253Cache","magic","readCString","MAGIC","kdfOpts","privKeyBlob","kdfOptsBuf","cinf","bcrypt","salti","privBuf","kdfopts","writeChar","kdfssh","writeCString","trimmed","SSHKEY_RE","SSHKEY_RE2","kbuf","realOffset","trailer","remain","tbsStart","sigOffset","tbsEnd","Local","certAlgOid","SIGN_ALGS","parseAsn1","readDate","issuerUniqueID","subjectUniqueID","extEnd","readExtension","sigAlgOid","sigAlg","sigData","algParts","writeTBSCert","verifier","defaultHashAlgorithm","EXTS","UTCTIME_RE","thisYear","century","setUTCFullYear","setUTCHours","setUTCSeconds","GTIME_RE","writeDate","zeroPad","dateToUTCTime","ALTNAME","OtherName","RFC822Name","DNSName","X400Address","DirectoryName","EDIPartyName","IPAddress","EXTPURPOSE","EXTPURPOSE_REV","KEYUSEBITS","extId","bcEnd","bc","ekEnd","ide","components","setBits","bitIndex","bitLen","bitVal","readBitField","aeEnd","forEmail","toAsn1","altNames","purpose","writeBitField","blen","byteN","DNS_NAME_RE","oids","unoids","componentLookup","cn","dc","mail","NOT_PRINTABLE","NOT_IA5","globMatch","aParts","bParts","asn1type","isIdentity","parseDN","dn","eqPos","parseFingerprint","parseSignature","generatePrivateKey","parseCertificate","createSelfSignedCertificate","createCertificate","identityFromDN","identityForHost","identityForUser","identityForEmail","identityFromArray","edCompat","partLookup","szPart","oldVerify","createDH","dhe","_pubCache","pubParts","newType","fromSecretKey","fromSeed","oldSign","stype","readChar","lead","bufferSplit","lastPart","newPart","bigintToMpBuf","addZero","obit","klass","needVer","D_prev","bufs","clen","CIPHER_LEN","material","hkey","Ti","Uc","bigint","isNative","clearCache","requireCache","callbackForModulesToKeep","originalCache","originalModuleChildren","modulesToKeep","freshModule","stealthCache","EE","_isStdio","didOnEnd","cleanup","ClientRequest","statusCodes","defaultProtocol","IncomingMessage","STATUS_CODES","METHODS","getXHR","XDomainRequest","checkTypeSupport","ReadableStream","writableStream","WritableStream","abortController","AbortController","arraybuffer","msstream","mozchunkedarraybuffer","capability","rStates","readyStates","preferBinary","_body","_headers","useFetch","decideMode","_fetchTimer","_socketTimeout","_socketTimer","_onFinish","lowerName","unsafeHeaders","_destroyed","headersList","controller","_fetchAbortController","requestTimeout","withCredentials","_fetchResponse","_resetTimers","_connect","_xhr","ontimeout","_response","LOADING","DONE","_onXHRProgress","onprogress","statusValid","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","resetTimers","rawHeaders","trailers","rawTrailers","_resumeFetch","pipeTo","getReader","_pos","responseURL","_charset","charsetMatch","newData","MSStreamReader","readAsArrayBuffer","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","utf8CheckExtraBytes","utf8CheckIncomplete","nativeTypeChecker","begin","isNull","isMath","isJSON","isInvalid","isImmutable","isMutable","isEnumerableObject","isFiniteNumber","isVague","isList","nativeTypeOf","nativeType","typeOf","safeApply","enumerate","_ignoreForEach","enumerateObject","assignAll","giver","_method","assignList","punycode","urlParse","pubsuffix","Store","MemoryCookieStore","pathMatch","VERSION","COOKIE_OCTETS","CONTROL_CHARS","TERMINATORS","PATH_VALUE","DATE_DELIM","MONTH_TO_NUM","jan","feb","mar","apr","may","jun","jul","aug","nov","NUM_TO_MONTH","NUM_TO_DAY","MAX_TIME","parseDigits","minDigits","maxDigits","trailingOK","parseTime","parseMonth","parseDate","tokens","dayOfMonth","formatDate","canonicalDomain","domainMatch","domStr","canonicalize","isIP","defaultPath","rightSlash","firstSemi","cookiePair","cookieName","cookieValue","firstEq","terminatorIdx","trimTerminator","parseCookiePair","unparsed","cookie_avs","av","av_key","av_value","av_sep","expires","setMaxAge","secure","httpOnly","jsonParse","serializableProperties","cookieCompare","aPathLen","creation","creationIndex","getCookieContext","cookiesCreated","rejectPublicSuffixes","enableLooseMode","maxAge","hostOnly","pathIsDefault","lastAccessed","cdomain","getPublicSuffix","setExpires","age","cookieString","TTL","expiryTime","relativeTo","expiryDate","millisec","isPersistent","canonicalizedDomain","CAN_BE_SYNC","syncWrap","syncErr","syncResult","updateCookie","oldCookie","newCookie","putCookie","findCookie","expireCheck","expire","allPaths","matchingCookie","removeCookie","findCookies","getSetCookieStrings","serialized","storeType","getAllCookies","serializeSync","_importCookies","putNext","deserialize","strOrObj","deserializeSync","_importCookiesSync","newStore","removeAllCookies","completedCount","removeErrors","removeCookieCb","removeErr","_cloneSync","cloneSync","permuteDomain","permutePath","permutations","lindex","pathMatcher","domainIndex","cookiePath","pathIndex","curPath","domains","curDomain","removeCookies","reqPath","pubSuf","psl","TunnelingAgent","proxyOptions","createSecureSocket","secureSocket","mergeOptions","servername","httpOverHttp","httpsOverHttp","defaultPort","httpOverHttps","httpsOverHttps","onFree","onCloseOrRemove","placeholder","connectOptions","connectReq","onConnect","upgrade","gf","_9","gf0","gf1","_121665","D2","Y","ts64","vn","yi","crypto_verify_16","crypto_verify_32","crypto_core_salsa20","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x5","x6","x7","x9","x10","x11","x12","x13","x14","x15","core_salsa20","crypto_core_hsalsa20","core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","mpos","crypto_stream_salsa20","crypto_stream","sn","crypto_stream_xor","poly1305","t4","t5","t6","t7","leftover","crypto_onetimeauth","outpos","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","car25519","sel25519","pack25519","neq25519","par25519","unpack25519","Z","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b10","b11","b12","b13","b14","b15","inv25519","crypto_scalarmult","x32","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","d0","d3","d4","d5","d6","d7","d9","hibit","h0","h4","h5","h6","h7","h8","h9","r0","r1","r3","r4","r5","r6","r7","r8","r9","macpos","want","crypto_box_afternm","crypto_box_open_afternm","crypto_hashblocks_hl","th","wh","wl","crypto_hash","cswap","pack","ty","scalarmult","scalarbase","crypto_sign_keypair","sk","seeded","L","modL","crypto_sign","sm","smlen","crypto_sign_open","chk","den","den2","den4","den6","pow2523","unpackneg","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","checkLengths","checkArrayTypes","lowlevel","crypto_box","crypto_box_open","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_secretbox_BOXZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","decodeUTF8","encodeUTF8","encodeBase64","decodeBase64","secretbox","keyLength","nonceLength","overheadLength","scalarMult","scalarLength","groupElementLength","checkBoxLengths","publicKeyLength","secretKeyLength","sharedKeyLength","signedMsg","mlen","seedLength","signatureLength","hashLength","setPRNG","sets","subexp","buildExps","isIRI","ALPHA$$","DIGIT$$","HEXDIG$$","PCT_ENCODED$","SUB_DELIMS$$","RESERVED$$","IPRIVATE$$","UNRESERVED$$","SCHEME$","USERINFO$","DEC_OCTET_RELAXED$","IPV4ADDRESS$","H16$","LS32$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","IPV6ADDRESS$","ZONEID$","IPV6ADDRZ_RELAXED$","IPVFUTURE$","IP_LITERAL$","REG_NAME$","HOST$","PORT$","AUTHORITY$","PCHAR$","SEGMENT$","SEGMENT_NZ$","SEGMENT_NZ_NC$","PATH_ABEMPTY$","PATH_ABSOLUTE$","PATH_NOSCHEME$","PATH_ROOTLESS$","PATH_EMPTY$","QUERY$","FRAGMENT$","HIER_PART$","URI$","RELATIVE_PART$","RELATIVE$","NOT_SCHEME","NOT_USERINFO","NOT_HOST","NOT_PATH","NOT_PATH_NOSCHEME","NOT_QUERY","NOT_FRAGMENT","ESCAPE","UNRESERVED","OTHER_CHARS","PCT_ENCODED","IPV4ADDRESS","IPV6ADDRESS","URI_PROTOCOL","IRI_PROTOCOL","slicedToArray","sliceIterator","error$1","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_currentValue2","return","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","_currentValue","SCHEMES","pctEncChar","pctDecChars","newStr","il","c3","_normalizeComponentEncoding","decodeUnreserved","decStr","userinfo","_stripLeadingZeros","_normalizeIPv4","_normalizeIPv6","_matches2","_address$toLowerCase$","_address$toLowerCase$2","firstFields","lastFields","isLastFieldIPv4Address","fieldCount","lastFieldsStart","longestZeroFields","lastLongest","newHost","newFirst","newLast","URI_PARSE","NO_MATCH_IS_UNDEFINED","uriString","iri","reference","schemeHandler","unicodeSupport","domainHost","_recomposeAuthority","uriTokens","$1","$2","RDS1","RDS2","RDS3","RDS5","removeDotSegments","authority","absolutePath","resolveComponents","tolerant","unescapeComponent","handler$1","isSecure","wsComponents","handler$2","resourceName","_wsComponents$resourc","_wsComponents$resourc2","handler$3","O","VCHAR$$","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","handler$4","mailtoComponents","unknownHeaders","hfields","hfield","toAddrs","_x","_xl","_x2","_xl2","setInterval","toAddr","atIdx","localPart","URN_PARSE","handler$5","urnComponents","nid","nss","urnScheme","uriComponents","handler$6","uuidComponents","baseURI","relativeURI","schemelessOptions","uriA","uriB","escapeComponent","Url","slashes","resolveObject","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","rest","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","ae","esc","qm","rel","tkeys","tk","tkey","rkeys","rk","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","hasTrailingSlash","localStorage","isArgumentsObject","isGeneratorFunction","whichTypedArray","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","isArrayBuffer","working","isDataViewToString","isDataView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isBigInt64Array","isBigUint64Array","isWeakMap","isWeakSet","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","descriptors","formatRegExp","objects","noDeprecation","throwDeprecation","traceDeprecation","debugs","debugEnvRegex","debugEnv","stylize","stylizeNoColor","colors","_extend","stylizeWithColor","formatValue","styleType","style","styles","formatPrimitive","visibleKeys","arrayToHash","formatError","braces","formatProperty","formatArray","reduceToSingleString","pid","months","kCustomPromisifiedSymbol","callbackifyOnRejected","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","byteToHex","bth","rnds8","rnds","bytesToUuid","ii","mod_assertplus","mod_isError","parseConstructorArguments","sprintf_args","jse_shortmsg","shortmessage","jse_cause","skipCauseMessage","jse_info","constructorOpt","SError","MultiError","ase_errors","WError","findCauseByName","hasCauseWithName","fullStack","errorFromList","errorForEach","foundName","child_process","possibleNames","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","nmd"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"monero_web_worker.js","mappings":";0CAEA,IAAIA,EAAgB,EAAQ,OACxBC,EAAU,EAAQ,OAClBC,EAAQ,EAAQ,OAChBC,EAAe,EAAQ,OACvBC,EAAkB,EAAQ,OAC1BC,EAAU,EAAQ,MAClBC,EAAQ,EAAQ,OAChBC,EAAkB,EAAQ,MAC1BC,EAAO,EAAQ,OAEnBC,EAAOC,QAAUC,EAEjBA,EAAIC,UAAUC,SA0Ed,SAAkBC,EAAcC,GAC9B,IAAIC,EACJ,GAA2B,iBAAhBF,GAET,KADAE,EAAIC,KAAKC,UAAUJ,IACX,MAAM,IAAIK,MAAM,8BAAgCL,EAAe,SAClE,CACL,IAAIM,EAAYH,KAAKI,WAAWP,GAChCE,EAAII,EAAUP,UAAYI,KAAKK,SAASF,EAC1C,CAEA,IAAIG,EAAQP,EAAED,GAEd,OADiB,IAAbC,EAAEQ,SAAiBP,KAAKQ,OAAST,EAAES,QAChCF,CACT,EAtFAZ,EAAIC,UAAUc,QAgGd,SAAiBC,EAAQC,GACvB,IAAIR,EAAYH,KAAKI,WAAWM,OAAQE,EAAWD,GACnD,OAAOR,EAAUP,UAAYI,KAAKK,SAASF,EAC7C,EAlGAT,EAAIC,UAAUkB,UA8Gd,SAAmBH,EAAQI,EAAKC,EAAiBJ,GAC/C,GAAIK,MAAMC,QAAQP,GAAQ,CACxB,IAAK,IAAIQ,EAAE,EAAGA,EAAER,EAAOS,OAAQD,IAAKlB,KAAKa,UAAUH,EAAOQ,QAAIN,EAAWG,EAAiBJ,GAC1F,OAAOX,IACT,CACA,IAAIoB,EAAKpB,KAAKqB,OAAOX,GACrB,QAAWE,IAAPQ,GAAiC,iBAANA,EAC7B,MAAM,IAAIlB,MAAM,4BAIlB,OAFAoB,EAAYtB,KADZc,EAAM9B,EAAQuC,YAAYT,GAAOM,IAEjCpB,KAAKwB,SAASV,GAAOd,KAAKI,WAAWM,EAAQK,EAAiBJ,GAAO,GAC9DX,IACT,EAzHAN,EAAIC,UAAU8B,cAqId,SAAuBf,EAAQI,EAAKY,GAElC,OADA1B,KAAKa,UAAUH,EAAQI,EAAKY,GAAgB,GACrC1B,IACT,EAvIAN,EAAIC,UAAUgC,eAiJd,SAAwBjB,EAAQkB,GAC9B,IAAIC,EAAUnB,EAAOmB,QACrB,QAAgBjB,IAAZiB,GAA2C,iBAAXA,EAClC,MAAM,IAAI3B,MAAM,4BAElB,KADA2B,EAAUA,GAAW7B,KAAK8B,MAAMC,aAgBlC,SAAqBC,GACnB,IAAIC,EAAOD,EAAKF,MAAMG,KAMtB,OALAD,EAAKF,MAAMC,YAA6B,iBAARE,EACJD,EAAKX,OAAOY,IAASA,EACrBD,EAAK/B,UAAUiC,GACbA,OACAtB,EACvBoB,EAAKF,MAAMC,WACpB,CAxBiDA,CAAY/B,OAIzD,OAFAA,KAAKmC,OAAOC,KAAK,6BACjBpC,KAAKQ,OAAS,MACP,EAET,IAAIF,EAAQN,KAAKJ,SAASiC,EAASnB,GACnC,IAAKJ,GAASsB,EAAiB,CAC7B,IAAIS,EAAU,sBAAwBrC,KAAKsC,aAC3C,GAAiC,OAA7BtC,KAAK8B,MAAMH,eACV,MAAM,IAAIzB,MAAMmC,GADmBrC,KAAKmC,OAAOI,MAAMF,EAE5D,CACA,OAAO/B,CACT,EAjKAZ,EAAIC,UAAUM,UAqLd,SAAmBuC,GACjB,IAAIrC,EAAYsC,EAAczC,KAAMwC,GACpC,cAAerC,GACb,IAAK,SAAU,OAAOA,EAAUP,UAAYI,KAAKK,SAASF,GAC1D,IAAK,SAAU,OAAOH,KAAKC,UAAUE,GACrC,IAAK,YAAa,OAKtB,SAA4B6B,EAAMU,GAChC,IAAIC,EAAM3D,EAAQ0B,OAAOkC,KAAKZ,EAAM,CAAEtB,OAAQ,CAAC,GAAKgC,GACpD,GAAIC,EAAK,CACP,IAAIjC,EAASiC,EAAIjC,OACbmC,EAAOF,EAAIE,KACXC,EAASH,EAAIG,OACb/C,EAAIhB,EAAc6D,KAAKZ,EAAMtB,EAAQmC,OAAMjC,EAAWkC,GAS1D,OARAd,EAAKe,WAAWL,GAAO,IAAIxD,EAAa,CACtCwD,IAAKA,EACLM,UAAU,EACVtC,OAAQA,EACRmC,KAAMA,EACNC,OAAQA,EACRlD,SAAUG,IAELA,CACT,CACF,CAtB6BkD,CAAmBjD,KAAMwC,GAEtD,EA3LA9C,EAAIC,UAAUuD,aAiOd,SAAsBrD,GACpB,GAAIA,aAAwBsD,OAG1B,OAFAC,EAAkBpD,KAAMA,KAAKwB,SAAU3B,GACvCuD,EAAkBpD,KAAMA,KAAKqD,MAAOxD,GAC7BG,KAET,cAAeH,GACb,IAAK,YAIH,OAHAuD,EAAkBpD,KAAMA,KAAKwB,UAC7B4B,EAAkBpD,KAAMA,KAAKqD,OAC7BrD,KAAKsD,OAAOC,QACLvD,KACT,IAAK,SACH,IAAIG,EAAYsC,EAAczC,KAAMH,GAIpC,OAHIM,GAAWH,KAAKsD,OAAOE,IAAIrD,EAAUsD,iBAClCzD,KAAKwB,SAAS3B,UACdG,KAAKqD,MAAMxD,GACXG,KACT,IAAK,SACH,IAAI0D,EAAY1D,KAAK8B,MAAM4B,UACvBD,EAAWC,EAAYA,EAAU7D,GAAgBA,EACrDG,KAAKsD,OAAOE,IAAIC,GAChB,IAAIrC,EAAKpB,KAAKqB,OAAOxB,GACjBuB,IACFA,EAAKpC,EAAQuC,YAAYH,UAClBpB,KAAKwB,SAASJ,UACdpB,KAAKqD,MAAMjC,IAGxB,OAAOpB,IACT,EA9PAN,EAAIC,UAAUgE,UA4Zd,SAAmBC,EAAMC,GAGvB,MAFqB,iBAAVA,IAAoBA,EAAS,IAAIV,OAAOU,IACnD7D,KAAK8D,SAASF,GAAQC,EACf7D,IACT,EA/ZAN,EAAIC,UAAU2C,WAoYd,SAAoB9B,EAAQuD,GAE1B,KADAvD,EAASA,GAAUR,KAAKQ,QACX,MAAO,YAMpB,IAJA,IAAIwD,OAAkCpD,KADtCmD,EAAUA,GAAW,CAAC,GACEC,UAA0B,KAAOD,EAAQC,UAC7DC,OAA8BrD,IAApBmD,EAAQE,QAAwB,OAASF,EAAQE,QAE3DC,EAAO,GACFhD,EAAE,EAAGA,EAAEV,EAAOW,OAAQD,IAAK,CAClC,IAAIiD,EAAI3D,EAAOU,GACXiD,IAAGD,GAAQD,EAAUE,EAAEC,SAAW,IAAMD,EAAE9B,QAAU2B,EAC1D,CACA,OAAOE,EAAKG,MAAM,GAAIL,EAAU7C,OAClC,EA/YAzB,EAAIC,UAAUS,WA0Qd,SAAoBM,EAAQgB,EAAgBO,EAAMqC,GAChD,GAAqB,iBAAV5D,GAAuC,kBAAVA,EACtC,MAAM,IAAIR,MAAM,sCAClB,IAAIwD,EAAY1D,KAAK8B,MAAM4B,UACvBD,EAAWC,EAAYA,EAAUhD,GAAUA,EAC3C6D,EAASvE,KAAKsD,OAAOkB,IAAIf,GAC7B,GAAIc,EAAQ,OAAOA,EAEnBD,EAAkBA,IAAgD,IAA7BtE,KAAK8B,MAAM2C,cAEhD,IAAIrD,EAAKpC,EAAQuC,YAAYvB,KAAKqB,OAAOX,IACrCU,GAAMkD,GAAiBhD,EAAYtB,KAAMoB,GAE7C,IACIsD,EADAC,GAA6C,IAA9B3E,KAAK8B,MAAMH,iBAA6BD,EAEvDiD,KAAkBD,EAAgBtD,GAAMA,GAAMpC,EAAQuC,YAAYb,EAAOmB,WAC3E7B,KAAK2B,eAAejB,GAAQ,GAE9B,IAAIkE,EAAY5F,EAAQ6F,IAAIjC,KAAK5C,KAAMU,GAEnCP,EAAY,IAAIjB,EAAa,CAC/BkC,GAAIA,EACJV,OAAQA,EACRkE,UAAWA,EACXnB,SAAUA,EACVxB,KAAMA,IAQR,MALa,KAATb,EAAG,IAAakD,IAAiBtE,KAAKqD,MAAMjC,GAAMjB,GACtDH,KAAKsD,OAAOwB,IAAIrB,EAAUtD,GAEtBwE,GAAgBD,GAAe1E,KAAK2B,eAAejB,GAAQ,GAExDP,CACT,EA3SAT,EAAIC,UAAUU,SA+Sd,SAAkBF,EAAW0C,GAC3B,GAAI1C,EAAU4E,UAOZ,OANA5E,EAAUP,SAAWoF,EACrBA,EAAatE,OAASP,EAAUO,OAChCsE,EAAaxE,OAAS,KACtBwE,EAAanC,KAAOA,GAAcmC,GACF,IAA5B7E,EAAUO,OAAOH,SACnByE,EAAazE,QAAS,GACjByE,EAIT,IAAIC,EAMAlF,EARJI,EAAU4E,WAAY,EAGlB5E,EAAU8B,OACZgD,EAAcjF,KAAK8B,MACnB9B,KAAK8B,MAAQ9B,KAAKkF,WAIpB,IAAMnF,EAAIhB,EAAc6D,KAAK5C,KAAMG,EAAUO,OAAQmC,EAAM1C,EAAUyE,UAQrE,CAPA,MAAMT,GAEJ,aADOhE,EAAUP,SACXuE,CACR,CACA,QACEhE,EAAU4E,WAAY,EAClB5E,EAAU8B,OAAMjC,KAAK8B,MAAQmD,EACnC,CAMA,OAJA9E,EAAUP,SAAWG,EACrBI,EAAUgF,KAAOpF,EAAEoF,KACnBhF,EAAUiF,OAASrF,EAAEqF,OACrBjF,EAAU0C,KAAO9C,EAAE8C,KACZ9C,EAIP,SAASiF,IAEP,IAAIK,EAAYlF,EAAUP,SACtB0F,EAASD,EAAUE,MAAMvF,KAAMwF,WAEnC,OADAR,EAAaxE,OAAS6E,EAAU7E,OACzB8E,CACT,CACF,EAzVA5F,EAAIC,UAAU8F,aAAe,EAAQ,OACrC,IAAIC,EAAgB,EAAQ,OAC5BhG,EAAIC,UAAUgG,WAAaD,EAAcE,IACzClG,EAAIC,UAAUkG,WAAaH,EAAclB,IACzC9E,EAAIC,UAAUmG,cAAgBJ,EAAcK,OAC5CrG,EAAIC,UAAUqG,gBAAkBN,EAAc9F,SAE9C,IAAIqG,EAAe,EAAQ,OAC3BvG,EAAIwG,gBAAkBD,EAAaE,WACnCzG,EAAI0G,gBAAkBH,EAAaI,WACnC3G,EAAIJ,gBAAkBA,EAEtB,IAAI4C,EAAiB,yCAEjBoE,EAAsB,CAAE,mBAAoB,cAAe,cAAe,kBAC1EC,EAAoB,CAAC,eAQzB,SAAS7G,EAAI8G,GACX,KAAMxG,gBAAgBN,GAAM,OAAO,IAAIA,EAAI8G,GAC3CA,EAAOxG,KAAK8B,MAAQvC,EAAKkH,KAAKD,IAAS,CAAC,EAwb1C,SAAmBxE,GACjB,IAAIG,EAASH,EAAKF,MAAMK,OACxB,IAAe,IAAXA,EACFH,EAAKG,OAAS,CAACuE,IAAKC,EAAMvE,KAAMuE,EAAMpE,MAAOoE,OACxC,CAEL,QADe/F,IAAXuB,IAAsBA,EAASyE,WACZ,iBAAVzE,GAAsBA,EAAOuE,KAAOvE,EAAOC,MAAQD,EAAOI,OACrE,MAAM,IAAIrC,MAAM,qDAClB8B,EAAKG,OAASA,CAChB,CACF,CAjcE0E,CAAU7G,MACVA,KAAKwB,SAAW,CAAC,EACjBxB,KAAKqD,MAAQ,CAAC,EACdrD,KAAK+C,WAAa,CAAC,EACnB/C,KAAK8D,SAAW1E,EAAQoH,EAAK3C,QAE7B7D,KAAKsD,OAASkD,EAAKM,OAAS,IAAI7H,EAChCe,KAAK+G,gBAAkB,CAAC,EACxB/G,KAAKgH,cAAgB,GACrBhH,KAAKiH,MAAQ5H,IACbW,KAAKqB,OAwTP,SAAqBmF,GACnB,OAAQA,EAAKU,UACX,IAAK,OAAQ,OAAOC,EACpB,IAAK,KAAM,OAAO9F,EAClB,QAAS,OAAO+F,EAEpB,CA9TgBC,CAAYb,GAE1BA,EAAKc,aAAed,EAAKc,cAAgBC,IACf,YAAtBf,EAAKgB,gBAA6BhB,EAAKiB,wBAAyB,QAC7C7G,IAAnB4F,EAAK9C,YAAyB8C,EAAK9C,UAAYvE,GACnDa,KAAKkF,UAgaP,SAA8BlD,GAE5B,IADA,IAAI0F,EAAWnI,EAAKkH,KAAKzE,EAAKF,OACrBZ,EAAE,EAAGA,EAAEoF,EAAoBnF,OAAQD,WACnCwG,EAASpB,EAAoBpF,IACtC,OAAOwG,CACT,CAramBC,CAAqB3H,MAElCwG,EAAKpH,SAwYX,SAA2B4C,GACzB,IAAK,IAAI4B,KAAQ5B,EAAKF,MAAM1C,QAAS,CACnC,IAAIyE,EAAS7B,EAAKF,MAAM1C,QAAQwE,GAChC5B,EAAK2B,UAAUC,EAAMC,EACvB,CACF,CA7YoB+D,CAAkB5H,MAChCwG,EAAKqB,UA+YX,SAA4B7F,GAC1B,IAAK,IAAI4B,KAAQ5B,EAAKF,MAAM+F,SAAU,CACpC,IAAIC,EAAU9F,EAAKF,MAAM+F,SAASjE,GAClC5B,EAAK2D,WAAW/B,EAAMkE,EACxB,CACF,CApZqBC,CAAmB/H,MAiXxC,SAA8BgC,GAC5B,IAAIgG,EAKJ,GAJIhG,EAAKF,MAAMmG,QACbD,EAAc,EAAQ,KACtBhG,EAAKP,cAAcuG,EAAaA,EAAYE,KAAK,KAE3B,IAApBlG,EAAKF,MAAMG,KAAf,CACA,IAAIkG,EAAa,EAAQ,MACrBnG,EAAKF,MAAMmG,QAAOE,EAAa7I,EAAgB6I,EAAY5B,IAC/DvE,EAAKP,cAAc0G,EAAYjG,GAAgB,GAC/CF,EAAKqB,MAAM,iCAAmCnB,CAJT,CAKvC,CA3XEkG,CAAqBpI,MACG,iBAAbwG,EAAKvE,MAAkBjC,KAAKyB,cAAc+E,EAAKvE,MACtDuE,EAAK6B,UAAUrI,KAAK2F,WAAW,WAAY,CAACwC,WAAY,CAACG,KAAM,aA4XrE,SAA2BtG,GACzB,IAAIuG,EAAcvG,EAAKF,MAAM0G,QAC7B,GAAKD,EACL,GAAIvH,MAAMC,QAAQsH,GAAcvG,EAAKnB,UAAU0H,QAC1C,IAAK,IAAIzH,KAAOyH,EAAavG,EAAKnB,UAAU0H,EAAYzH,GAAMA,EACrE,CAhYE2H,CAAkBzI,KACpB,CA0JA,SAASyC,EAAcT,EAAMQ,GAE3B,OADAA,EAASxD,EAAQuC,YAAYiB,GACtBR,EAAKR,SAASgB,IAAWR,EAAKqB,MAAMb,IAAWR,EAAKe,WAAWP,EACxE,CA6CA,SAASY,EAAkBpB,EAAMwG,EAASE,GACxC,IAAK,IAAIlG,KAAUgG,EAAS,CAC1B,IAAIrI,EAAYqI,EAAQhG,GACnBrC,EAAU8B,MAAUyG,IAASA,EAAMC,KAAKnG,KAC3CR,EAAKsB,OAAOE,IAAIrD,EAAUsD,iBACnB+E,EAAQhG,GAEnB,CACF,CAkGA,SAASnB,EAAOX,GAEd,OADIA,EAAOwH,KAAKlI,KAAKmC,OAAOC,KAAK,qBAAsB1B,EAAOwH,KACvDxH,EAAOU,EAChB,CAGA,SAASgG,EAAQ1G,GAEf,OADIA,EAAOU,IAAIpB,KAAKmC,OAAOC,KAAK,oBAAqB1B,EAAOU,IACrDV,EAAOwH,GAChB,CAGA,SAASf,EAAYzG,GACnB,GAAIA,EAAOwH,KAAOxH,EAAOU,IAAMV,EAAOwH,KAAOxH,EAAOU,GAClD,MAAM,IAAIlB,MAAM,mCAClB,OAAOQ,EAAOwH,KAAOxH,EAAOU,EAC9B,CA8EA,SAASE,EAAYU,EAAMZ,GACzB,GAAIY,EAAKR,SAASJ,IAAOY,EAAKqB,MAAMjC,GAClC,MAAM,IAAIlB,MAAM,0BAA4BkB,EAAK,mBACrD,CAwBA,SAASuF,IAAQ,0BCtfjB,IAAI1H,EAAQO,EAAOC,QAAU,WAC3BO,KAAKsD,OAAS,CAAC,CACjB,EAGArE,EAAMU,UAAUmF,IAAM,SAAmBhE,EAAK8H,GAC5C5I,KAAKsD,OAAOxC,GAAO8H,CACrB,EAGA3J,EAAMU,UAAU6E,IAAM,SAAmB1D,GACvC,OAAOd,KAAKsD,OAAOxC,EACrB,EAGA7B,EAAMU,UAAU6D,IAAM,SAAmB1C,UAChCd,KAAKsD,OAAOxC,EACrB,EAGA7B,EAAMU,UAAU4D,MAAQ,WACtBvD,KAAKsD,OAAS,CAAC,CACjB,gCCvBA,IAAI8C,EAAkB,oBAEtB5G,EAAOC,QAYP,SAASgG,EAAa/E,EAAQuB,EAAM4G,GAIlC,IAAI7G,EAAOhC,KACX,GAAoC,mBAAzBA,KAAK8B,MAAMgH,WACpB,MAAM,IAAI5I,MAAM,2CAEC,mBAAR+B,IACT4G,EAAW5G,EACXA,OAAOrB,GAGT,IAAImI,EAAIC,EAAiBtI,GAAQuI,MAAK,WACpC,IAAI9I,EAAY6B,EAAK5B,WAAWM,OAAQE,EAAWqB,GACnD,OAAO9B,EAAUP,UAAYsJ,EAAc/I,EAC7C,IASA,OAPI0I,GACFE,EAAEE,MACA,SAASlJ,GAAK8I,EAAS,KAAM9I,EAAI,GACjC8I,GAIGE,EAGP,SAASC,EAAiBG,GACxB,IAAItH,EAAUsH,EAAItH,QAClB,OAAOA,IAAYG,EAAK/B,UAAU4B,GACxB4D,EAAa7C,KAAKZ,EAAM,CAAEoH,KAAMvH,IAAW,GAC3CwH,QAAQrK,SACpB,CAGA,SAASkK,EAAc/I,GACrB,IAAM,OAAO6B,EAAK3B,SAASF,EAI3B,CAHA,MAAMgE,GACJ,GAAIA,aAAaiC,EAAiB,OAKpC,SAA2BjC,GACzB,IAAIzB,EAAMyB,EAAEmF,cACZ,GAAIC,EAAM7G,GAAM,MAAM,IAAIxC,MAAM,UAAYwC,EAAM,kBAAoByB,EAAEqF,WAAa,uBAErF,IAAIC,EAAgBzH,EAAK+E,gBAAgBrE,GAMzC,OALK+G,IACHA,EAAgBzH,EAAK+E,gBAAgBrE,GAAOV,EAAKF,MAAMgH,WAAWpG,IACpDuG,KAAKS,EAAeA,GAG7BD,EAAcR,MAAK,SAAUE,GAClC,IAAKI,EAAM7G,GACT,OAAOsG,EAAiBG,GAAKF,MAAK,WAC3BM,EAAM7G,IAAMV,EAAKnB,UAAUsI,EAAKzG,OAAK9B,EAAWqB,EACvD,GAEJ,IAAGgH,MAAK,WACN,OAAOC,EAAc/I,EACvB,IAEA,SAASuJ,WACA1H,EAAK+E,gBAAgBrE,EAC9B,CAEA,SAAS6G,EAAM7G,GACb,OAAOV,EAAKqB,MAAMX,IAAQV,EAAKR,SAASkB,EAC1C,CACF,CAhC2CiH,CAAkBxF,GAC3D,MAAMA,CACR,CA+BF,CACF,gCCvFA,IAAInF,EAAU,EAAQ,OAoBtB,SAASoH,EAAgBtD,EAAQJ,EAAKL,GACpCrC,KAAKqC,QAAUA,GAAW+D,EAAgB/D,QAAQS,EAAQJ,GAC1D1C,KAAKwJ,WAAaxK,EAAQ4K,IAAI9G,EAAQJ,GACtC1C,KAAKsJ,cAAgBtK,EAAQuC,YAAYvC,EAAQ6K,SAAS7J,KAAKwJ,YACjE,CAGA,SAASM,EAAcC,GAGrB,OAFAA,EAASpK,UAAYqK,OAAOC,OAAO/J,MAAMP,WACzCoK,EAASpK,UAAUuK,YAAcH,EAC1BA,CACT,CA7BAvK,EAAOC,QAAU,CACf0G,WAAY2D,GAKd,SAAyBtJ,GACvBR,KAAKqC,QAAU,oBACfrC,KAAKQ,OAASA,EACdR,KAAKmK,IAAMnK,KAAKoK,YAAa,CAC/B,IARE/D,WAAYyD,EAAc1D,IAW5BA,EAAgB/D,QAAU,SAAUS,EAAQJ,GAC1C,MAAO,2BAA8BA,EAAM,YAAcI,CAC3D,+BCjBA,IAAIvD,EAAO,EAAQ,OAEf8K,EAAO,6BACPC,EAAO,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAC3CC,EAAO,0DACPC,EAAW,wGACXC,EAAM,+nCAGNC,EAAc,oLAKdC,EAAM,grDACNC,EAAO,+DACPC,EAAe,4BACfC,EAA4B,+DAC5BC,EAAwB,mDAK5B,SAAS3L,EAAQ4L,GAEf,OADAA,EAAe,QAARA,EAAiB,OAAS,OAC1BzL,EAAKkH,KAAKrH,EAAQ4L,GAC3B,CA6DA,SAASC,EAAKC,GAEZ,IAAIC,EAAUD,EAAIE,MAAMf,GACxB,IAAKc,EAAS,OAAO,EAErB,IAAIE,GAAQF,EAAQ,GAChBG,GAASH,EAAQ,GACjBI,GAAOJ,EAAQ,GAEnB,OAAOG,GAAS,GAAKA,GAAS,IAAMC,GAAO,GACnCA,IAAiB,GAATD,GAhBlB,SAAoBD,GAElB,OAAOA,EAAO,GAAM,IAAMA,EAAO,KAAQ,GAAKA,EAAO,KAAQ,EAC/D,CAagCG,CAAWH,GAAQ,GAAKf,EAAKgB,GAC7D,CAGA,SAASG,EAAKP,EAAKQ,GACjB,IAAIP,EAAUD,EAAIE,MAAMb,GACxB,IAAKY,EAAS,OAAO,EAErB,IAAIQ,EAAOR,EAAQ,GACfS,EAAST,EAAQ,GACjBU,EAASV,EAAQ,GACjBW,EAAWX,EAAQ,GACvB,OAASQ,GAAQ,IAAMC,GAAU,IAAMC,GAAU,IAChC,IAARF,GAAwB,IAAVC,GAA0B,IAAVC,MAC9BH,GAAQI,EACnB,CA3FAtM,EAAOC,QAAUL,EAQjBA,EAAQ2M,KAAO,CAEbd,KAAM,6BAENQ,KAAM,8EACN,YAAa,0GAEbO,IAAK,6CACL,gBAAiB,0EACjB,eAAgBtB,EAChBd,IAAKe,EAILsB,MAAO,mHACPC,SAAU1B,EAEV2B,KAAM,4EAENC,KAAM,qpCACN1D,MAAOA,EAEP2D,KAAMzB,EAGN,eAAgBC,EAChB,4BAA6BC,EAE7B,wBAAyBC,GAI3B3L,EAAQsM,KAAO,CACbT,KAAMA,EACNQ,KAAMA,EACN,YAoDF,SAAmBP,GAEjB,IAAIoB,EAAWpB,EAAIqB,MAAMC,GACzB,OAA0B,GAAnBF,EAASnL,QAAe8J,EAAKqB,EAAS,KAAOb,EAAKa,EAAS,IAAI,EACxE,EAvDEN,IA2DF,SAAad,GAEX,OAAOuB,EAAiB9D,KAAKuC,IAAQT,EAAI9B,KAAKuC,EAChD,EA7DE,gBA3DW,yoCA4DX,eAAgBR,EAChBd,IAAKe,EACLsB,MAAO,2IACPC,SAAU1B,EACV2B,KAAM,4EACNC,KAAM,qpCACN1D,MAAOA,EACP2D,KAAMzB,EACN,eAAgBC,EAChB,4BAA6BC,EAC7B,wBAAyBC,GAsC3B,IAAIyB,EAAsB,QAQtBC,EAAmB,OAOnBC,EAAW,WACf,SAAShE,EAAMwC,GACb,GAAIwB,EAAS/D,KAAKuC,GAAM,OAAO,EAC/B,IAEE,OADA,IAAI/H,OAAO+H,IACJ,CAGT,CAFE,MAAM/G,GACN,OAAO,CACT,CACF,gCC3IA,IAAInF,EAAU,EAAQ,OAClBO,EAAO,EAAQ,OACf0G,EAAe,EAAQ,OACvB9G,EAAkB,EAAQ,OAE1BwN,EAAoB,EAAQ,OAM5BC,EAAarN,EAAKqN,WAClBC,EAAQ,EAAQ,OAGhB3G,EAAkBD,EAAaE,WAySnC,SAAS2G,EAAepM,EAAQmC,EAAMC,GAEpC,IAAIiK,EAAQC,EAAUpK,KAAK5C,KAAMU,EAAQmC,EAAMC,GAC/C,OAAIiK,GAAS,EAAU,CAAEA,MAAOA,EAAOhI,WAAW,IAClDgI,EAAQ/M,KAAKgH,cAAc7F,OAC3BnB,KAAKgH,cAAc+F,GAAS,CAC1BrM,OAAQA,EACRmC,KAAMA,EACNC,OAAQA,GAEH,CAAEiK,MAAOA,EAAOhI,WAAW,GACpC,CAUA,SAASkI,EAAavM,EAAQmC,EAAMC,GAElC,IAAI5B,EAAI8L,EAAUpK,KAAK5C,KAAMU,EAAQmC,EAAMC,GACvC5B,GAAK,GAAGlB,KAAKgH,cAAckG,OAAOhM,EAAG,EAC3C,CAWA,SAAS8L,EAAUtM,EAAQmC,EAAMC,GAE/B,IAAK,IAAI5B,EAAE,EAAGA,EAAElB,KAAKgH,cAAc7F,OAAQD,IAAK,CAC9C,IAAIiM,EAAInN,KAAKgH,cAAc9F,GAC3B,GAAIiM,EAAEzM,QAAUA,GAAUyM,EAAEtK,MAAQA,GAAQsK,EAAErK,QAAUA,EAAQ,OAAO5B,CACzE,CACA,OAAQ,CACV,CAGA,SAASkM,EAAYlM,EAAGmM,GACtB,MAAO,cAAgBnM,EAAI,iBAAmB3B,EAAK+N,eAAeD,EAASnM,IAAM,IACnF,CAGA,SAASqM,EAAYrM,GACnB,MAAO,cAAgBA,EAAI,eAAiBA,EAAI,IAClD,CAGA,SAASsM,EAAWtM,EAAGkE,GACrB,YAAqBxE,IAAdwE,EAAOlE,GAAmB,GAAK,aAAeA,EAAI,aAAeA,EAAI,IAC9E,CAGA,SAASuM,EAAevM,GACtB,MAAO,iBAAmBA,EAAI,kBAAoBA,EAAI,IACxD,CAGA,SAASwM,EAAKC,EAAKC,GACjB,IAAKD,EAAIxM,OAAQ,MAAO,GAExB,IADA,IAAI0M,EAAO,GACF3M,EAAE,EAAGA,EAAEyM,EAAIxM,OAAQD,IAC1B2M,GAAQD,EAAU1M,EAAGyM,GACvB,OAAOE,CACT,CA/WArO,EAAOC,QAYP,SAASgB,EAAQC,EAAQmC,EAAM+B,EAAW9B,GAGxC,IAAId,EAAOhC,KACPwG,EAAOxG,KAAK8B,MACZsD,EAAS,MAAExE,GACXuE,EAAO,CAAC,EACRkI,EAAW,GACXS,EAAe,CAAC,EAChBC,EAAW,GACXC,EAAe,CAAC,EAChBC,EAAc,GAElBpL,EAAOA,GAAQ,CAAEnC,OAAQA,EAAQ0E,OAAQA,EAAQD,KAAMA,GAEvD,IAAIgI,EAAIL,EAAelK,KAAK5C,KAAMU,EAAQmC,EAAMC,GAC5CoL,EAAclO,KAAKgH,cAAcmG,EAAEJ,OACvC,GAAII,EAAEpI,UAAW,OAAQmJ,EAAYlJ,aAwBrC,SAASA,IAEP,IAAIpF,EAAWsO,EAAYtO,SACvB0F,EAAS1F,EAAS2F,MAAMvF,KAAMwF,WAElC,OADAR,EAAaxE,OAASZ,EAASY,OACxB8E,CACT,EA5BA,IAAIlG,EAAUY,KAAK8D,SACfmD,EAAQjH,KAAKiH,MAEjB,IACE,IAAIlH,EAAIoO,EAAazN,EAAQmC,EAAM+B,EAAW9B,GAC9CoL,EAAYtO,SAAWG,EACvB,IAAIqO,EAAKF,EAAYlJ,aAUrB,OATIoJ,IACFA,EAAG1N,OAASX,EAAEW,OACd0N,EAAG5N,OAAS,KACZ4N,EAAGjJ,KAAOpF,EAAEoF,KACZiJ,EAAGhJ,OAASrF,EAAEqF,OACdgJ,EAAGvL,KAAO9C,EAAE8C,KACZuL,EAAG7N,OAASR,EAAEQ,OACViG,EAAK6H,aAAYD,EAAGE,OAASvO,EAAEuO,SAE9BvO,CAGT,CAFE,QACAkN,EAAarK,KAAK5C,KAAMU,EAAQmC,EAAMC,EACxC,CAWA,SAASqL,EAAaI,EAASC,EAAO5J,EAAW9B,GAC/C,IAAI2L,GAAUD,GAAUA,GAASA,EAAM9N,QAAU6N,EACjD,GAAIC,EAAM9N,QAAUmC,EAAKnC,OACvB,OAAOD,EAAQmC,KAAKZ,EAAMuM,EAASC,EAAO5J,EAAW9B,GAEvD,IAgCIlD,EAhCAW,GAA4B,IAAnBgO,EAAQhO,OAEjB8N,EAAa1B,EAAkB,CACjC+B,OAAO,EACPhO,OAAQ6N,EACRE,OAAQA,EACR3L,OAAQA,EACRD,KAAM2L,EACNG,WAAY,GACZC,cAAe,IACfC,UAAW,KACXzI,gBAAiBH,EAAaI,WAC9BY,MAAOA,EACPrH,SAAU+M,EACVpN,KAAMA,EACNP,QAASA,EACT8P,WAAYA,EACZC,WAAYA,EACZC,WAAYA,EACZC,cAAeA,EACfzI,KAAMA,EACNpH,QAASA,EACT+C,OAAQH,EAAKG,OACbH,KAAMA,IAGRqM,EAAaX,EAAKtI,EAAQoI,GAAcE,EAAKL,EAAUD,GACtCM,EAAKK,EAAUR,GAAeG,EAAKO,EAAaR,GAChDY,EAEb7H,EAAK0I,cAAab,EAAa7H,EAAK0I,YAAYb,EAAYE,IAGhE,IAeE3O,EAdmB,IAAIuP,SACrB,OACA,QACA,UACA,OACA,SACA,WACA,cACA,QACA,aACA,kBACAd,EAGSe,CACTpN,EACAiF,EACA7H,EACAyD,EACAuC,EACA2I,EACAE,EACApB,EACAD,EACA1G,GAGFd,EAAO,GAAKxF,CAId,CAHE,MAAMuE,GAEN,MADAnC,EAAKG,OAAOI,MAAM,yCAA0C8L,GACtDlK,CACR,CAgBA,OAdAvE,EAASc,OAAS6N,EAClB3O,EAASY,OAAS,KAClBZ,EAASuF,KAAOA,EAChBvF,EAASwF,OAASA,EAClBxF,EAASiD,KAAO4L,EAAS7O,EAAW4O,EAChCjO,IAAQX,EAASW,QAAS,IACN,IAApBiG,EAAK6H,aACPzO,EAAS0O,OAAS,CAChBT,KAAMQ,EACNhB,SAAUA,EACVU,SAAUA,IAIPnO,CACT,CAEA,SAASkP,EAAWhM,EAAQJ,EAAK+L,GAC/B/L,EAAM1D,EAAQ4K,IAAI9G,EAAQJ,GAC1B,IACI2M,EAASC,EADTC,EAAWpK,EAAKzC,GAEpB,QAAiB9B,IAAb2O,EAGF,OAAOC,EAFPH,EAAUjK,EAAOmK,GACjBD,EAAU,UAAYC,EAAW,KAGnC,IAAKd,GAAU5L,EAAKsC,KAAM,CACxB,IAAIsK,EAAY5M,EAAKsC,KAAKzC,GAC1B,QAAkB9B,IAAd6O,EAGF,OAAOD,EAFPH,EAAUxM,EAAKuC,OAAOqK,GACtBH,EAAUI,EAAYhN,EAAK2M,GAG/B,CAEAC,EAAUI,EAAYhN,GACtB,IAAI3C,EAAIf,EAAQ4D,KAAKZ,EAAMmM,EAActL,EAAMH,GAC/C,QAAU9B,IAANb,EAAiB,CACnB,IAAI4P,EAAc/K,GAAaA,EAAUlC,GACrCiN,IACF5P,EAAIf,EAAQ4Q,UAAUD,EAAanJ,EAAKqJ,YAClCF,EACAlP,EAAQmC,KAAKZ,EAAM2N,EAAa9M,EAAM+B,EAAW9B,GAE3D,CAEA,QAAUlC,IAANb,EAIF,OAeJ,SAAyB2C,EAAK3C,GAC5B,IAAI+P,EAAQ3K,EAAKzC,GACjB0C,EAAO0K,GAAS/P,CAClB,CAnBIgQ,CAAgBrN,EAAK3C,GACdyP,EAAYzP,EAAGuP,IAW1B,SAAwB5M,UACfyC,EAAKzC,EACd,CAhBIsN,CAAetN,EAKnB,CAEA,SAASgN,EAAYhN,EAAK3C,GACxB,IAAI+P,EAAQ1K,EAAOjE,OAGnB,OAFAiE,EAAO0K,GAAS/P,EAChBoF,EAAKzC,GAAOoN,EACL,SAAWA,CACpB,CAWA,SAASN,EAAYpK,EAAQyI,GAC3B,MAAwB,iBAAVzI,GAAuC,kBAAVA,EACjC,CAAEyI,KAAMA,EAAMnN,OAAQ0E,EAAQ6K,QAAQ,GACtC,CAAEpC,KAAMA,EAAMtN,OAAQ6E,KAAYA,EAAO7E,OACrD,CAEA,SAASwO,EAAWmB,GAClB,IAAInD,EAAQe,EAAaoC,GAKzB,YAJctP,IAAVmM,IACFA,EAAQe,EAAaoC,GAAY7C,EAASlM,OAC1CkM,EAASN,GAASmD,GAEb,UAAYnD,CACrB,CAEA,SAASiC,EAAWpG,GAClB,cAAeA,GACb,IAAK,UACL,IAAK,SACH,MAAO,GAAKA,EACd,IAAK,SACH,OAAOrJ,EAAK+N,eAAe1E,GAC7B,IAAK,SACH,GAAc,OAAVA,EAAgB,MAAO,OAC3B,IAAIuH,EAAWhR,EAAgByJ,GAC3BmE,EAAQiB,EAAamC,GAKzB,YAJcvP,IAAVmM,IACFA,EAAQiB,EAAamC,GAAYpC,EAAS5M,OAC1C4M,EAAShB,GAASnE,GAEb,UAAYmE,EAEzB,CAEA,SAASkC,EAAcmB,EAAM1P,EAAQ2P,EAAcC,GACjD,IAAkC,IAA9BtO,EAAKF,MAAMH,eAA0B,CACvC,IAAI4O,EAAOH,EAAKI,WAAWC,aAC3B,GAAIF,IAASA,EAAKG,OAAM,SAAS5I,GAC/B,OAAOkC,OAAOrK,UAAUgR,eAAe/N,KAAKyN,EAAcvI,EAC5D,IACE,MAAM,IAAI5H,MAAM,kDAAoDqQ,EAAKK,KAAK,MAEhF,IAAIjP,EAAiByO,EAAKI,WAAW7O,eACrC,GAAIA,IACUA,EAAejB,GACf,CACV,IAAI2B,EAAU,8BAAgCL,EAAKM,WAAWX,EAAenB,QAC7E,GAAiC,OAA7BwB,EAAKF,MAAMH,eACV,MAAM,IAAIzB,MAAMmC,GADmBL,EAAKG,OAAOI,MAAMF,EAE5D,CAEJ,CAEA,IAIIzC,EAJAa,EAAU2P,EAAKI,WAAW/P,QAC1BwP,EAASG,EAAKI,WAAWP,OACzBY,EAAQT,EAAKI,WAAWK,MAG5B,GAAIpQ,EACFb,EAAWa,EAAQmC,KAAKZ,EAAMtB,EAAQ2P,EAAcC,QAC/C,GAAIO,EACTjR,EAAWiR,EAAMjO,KAAKZ,EAAMtB,EAAQ2P,EAAcC,IACtB,IAAxB9J,EAAK7E,gBAA0BK,EAAKL,eAAe/B,GAAU,QAC5D,GAAIqQ,EACTrQ,EAAWqQ,EAAOrN,KAAKZ,EAAMsO,EAAIF,EAAKtI,QAASpH,EAAQ2P,QAGvD,KADAzQ,EAAWwQ,EAAKI,WAAW5Q,UACZ,OAGjB,QAAiBgB,IAAbhB,EACF,MAAM,IAAIM,MAAM,mBAAqBkQ,EAAKtI,QAAU,sBAEtD,IAAIiF,EAAQkB,EAAY9M,OAGxB,OAFA8M,EAAYlB,GAASnN,EAEd,CACLiO,KAAM,aAAed,EACrBnN,SAAUA,EAEd,CACF,gCC7SA,IAAI6K,EAAM,EAAQ,OACdoC,EAAQ,EAAQ,OAChBtN,EAAO,EAAQ,OACfL,EAAe,EAAQ,OACvB4R,EAAW,EAAQ,OAmBvB,SAAS9R,EAAQyB,EAASoC,EAAMH,GAE9B,IAAI0C,EAASpF,KAAKqD,MAAMX,GACxB,GAAqB,iBAAV0C,EAAoB,CAC7B,IAAIpF,KAAKqD,MAAM+B,GACV,OAAOpG,EAAQ4D,KAAK5C,KAAMS,EAASoC,EAAMuC,GADtBA,EAASpF,KAAKqD,MAAM+B,EAE9C,CAGA,IADAA,EAASA,GAAUpF,KAAKwB,SAASkB,cACXxD,EACpB,OAAO0Q,EAAUxK,EAAO1E,OAAQV,KAAK8B,MAAM+N,YACjCzK,EAAO1E,OACP0E,EAAOxF,UAAYI,KAAKK,SAAS+E,GAG7C,IACI1E,EAAQX,EAAG+C,EADXH,EAAMoO,EAAcnO,KAAK5C,KAAM6C,EAAMH,GAgBzC,OAdIC,IACFjC,EAASiC,EAAIjC,OACbmC,EAAOF,EAAIE,KACXC,EAASH,EAAIG,QAGXpC,aAAkBxB,EACpBa,EAAIW,EAAOd,UAAYa,EAAQmC,KAAK5C,KAAMU,EAAOA,OAAQmC,OAAMjC,EAAWkC,QACtDlC,IAAXF,IACTX,EAAI6P,EAAUlP,EAAQV,KAAK8B,MAAM+N,YAC3BnP,EACAD,EAAQmC,KAAK5C,KAAMU,EAAQmC,OAAMjC,EAAWkC,IAG7C/C,CACT,CAUA,SAASgR,EAAclO,EAAMH,GAE3B,IAAIqG,EAAI0B,EAAIuG,MAAMtO,GACduO,EAAUC,EAAanI,GACvBjG,EAASqO,EAAYnR,KAAKqB,OAAOwB,EAAKnC,SAC1C,GAAwC,IAApCsJ,OAAOoH,KAAKvO,EAAKnC,QAAQS,QAAgB8P,IAAYnO,EAAQ,CAC/D,IAAI1B,EAAKG,EAAY0P,GACjB7L,EAASpF,KAAKqD,MAAMjC,GACxB,GAAqB,iBAAVgE,EACT,OAAOiM,EAAiBzO,KAAK5C,KAAM6C,EAAMuC,EAAQ2D,GAC5C,GAAI3D,aAAkBlG,EACtBkG,EAAOxF,UAAUI,KAAKK,SAAS+E,GACpCvC,EAAOuC,MACF,CAEL,MADAA,EAASpF,KAAKwB,SAASJ,cACDlC,GAMpB,OAJA,GADKkG,EAAOxF,UAAUI,KAAKK,SAAS+E,GAChChE,GAAMG,EAAYmB,GACpB,MAAO,CAAEhC,OAAQ0E,EAAQvC,KAAMA,EAAMC,OAAQA,GAC/CD,EAAOuC,CAIX,CACA,IAAKvC,EAAKnC,OAAQ,OAClBoC,EAASqO,EAAYnR,KAAKqB,OAAOwB,EAAKnC,QACxC,CACA,OAAO4Q,EAAe1O,KAAK5C,KAAM+I,EAAGjG,EAAQD,EAAKnC,OAAQmC,EAC3D,CAIA,SAASwO,EAAiBxO,EAAMH,EAAK6O,GAEnC,IAAI5O,EAAMoO,EAAcnO,KAAK5C,KAAM6C,EAAMH,GACzC,GAAIC,EAAK,CACP,IAAIjC,EAASiC,EAAIjC,OACboC,EAASH,EAAIG,OACjBD,EAAOF,EAAIE,KACX,IAAIzB,EAAKpB,KAAKqB,OAAOX,GAErB,OADIU,IAAI0B,EAAS0O,EAAW1O,EAAQ1B,IAC7BkQ,EAAe1O,KAAK5C,KAAMuR,EAAWzO,EAAQpC,EAAQmC,EAC9D,CACF,CAtGArD,EAAOC,QAAUT,EAEjBA,EAAQuC,YAAcA,EACtBvC,EAAQ6K,SAAWsH,EACnBnS,EAAQ4K,IAAM4H,EACdxS,EAAQ6F,IA0NR,SAAoBnE,GAClB,IAAIwG,EAAW3F,EAAYvB,KAAKqB,OAAOX,IACnC+Q,EAAU,CAAC,GAAIvK,GACfwK,EAAY,CAAC,GAAIP,EAAYjK,GAAU,IACvCtC,EAAY,CAAC,EACb5C,EAAOhC,KAgCX,OA9BA8Q,EAASpQ,EAAQ,CAACiR,SAAS,IAAO,SAASxI,EAAKyI,EAASC,EAAYC,EAAeC,EAAe1B,EAAc2B,GAC/G,GAAgB,KAAZJ,EAAJ,CACA,IAAIxQ,EAAKY,EAAKX,OAAO8H,GACjBrG,EAAS2O,EAAQK,GACjBjI,EAAW6H,EAAUI,GAAiB,IAAMC,EAIhD,QAHiBnR,IAAboR,IACFnI,GAAY,KAA0B,iBAAZmI,EAAuBA,EAAWzS,EAAK0S,eAAeD,KAEjE,iBAAN5Q,EAAgB,CACzBA,EAAK0B,EAASvB,EAAYuB,EAAS2H,EAAIzL,QAAQ8D,EAAQ1B,GAAMA,GAE7D,IAAIgE,EAASpD,EAAKqB,MAAMjC,GAExB,GADqB,iBAAVgE,IAAoBA,EAASpD,EAAKqB,MAAM+B,IAC/CA,GAAUA,EAAO1E,QACnB,IAAKmM,EAAM1D,EAAK/D,EAAO1E,QACrB,MAAM,IAAIR,MAAM,OAASkB,EAAK,2CAC3B,GAAIA,GAAMG,EAAYsI,GAC3B,GAAa,KAATzI,EAAG,GAAW,CAChB,GAAIwD,EAAUxD,KAAQyL,EAAM1D,EAAKvE,EAAUxD,IACzC,MAAM,IAAIlB,MAAM,OAASkB,EAAK,sCAChCwD,EAAUxD,GAAM+H,CAClB,MACEnH,EAAKqB,MAAMjC,GAAMyI,CAGvB,CACA4H,EAAQG,GAAW9O,EACnB4O,EAAUE,GAAW/H,CA1BK,CA2B5B,IAEOjF,CACT,EA/PA5F,EAAQ4Q,UAAYA,EACpB5Q,EAAQ0B,OAASqQ,EAkGjB,IAAImB,EAAuB3S,EAAK4S,OAAO,CAAC,aAAc,oBAAqB,OAAQ,eAAgB,gBAEnG,SAASb,EAAeC,EAAWzO,EAAQpC,EAAQmC,GAGjD,GADA0O,EAAUvO,SAAWuO,EAAUvO,UAAY,GACN,KAAjCuO,EAAUvO,SAASqB,MAAM,EAAE,GAA/B,CAGA,IAFA,IAAI+N,EAAQb,EAAUvO,SAASuJ,MAAM,KAE5BrL,EAAI,EAAGA,EAAIkR,EAAMjR,OAAQD,IAAK,CACrC,IAAImR,EAAOD,EAAMlR,GACjB,GAAImR,EAAM,CAGR,QAAezR,KADfF,EAASA,EADT2R,EAAO9S,EAAK+S,iBAAiBD,KAEH,MAC1B,IAAIjR,EACJ,IAAK8Q,EAAqBG,MACxBjR,EAAKpB,KAAKqB,OAAOX,MACToC,EAAS0O,EAAW1O,EAAQ1B,IAChCV,EAAO0I,MAAM,CACf,IAAIA,EAAOoI,EAAW1O,EAAQpC,EAAO0I,MACjCzG,EAAMoO,EAAcnO,KAAK5C,KAAM6C,EAAMuG,GACrCzG,IACFjC,EAASiC,EAAIjC,OACbmC,EAAOF,EAAIE,KACXC,EAASH,EAAIG,OAEjB,CAEJ,CACF,CACA,YAAelC,IAAXF,GAAwBA,IAAWmC,EAAKnC,OACnC,CAAEA,OAAQA,EAAQmC,KAAMA,EAAMC,OAAQA,QAD/C,CAzBgD,CA2BlD,CAGA,IAAIyP,EAAiBhT,EAAK4S,OAAO,CAC/B,OAAQ,SAAU,UAClB,YAAa,YACb,gBAAiB,gBACjB,WAAY,WACZ,UAAW,UACX,cAAe,aACf,WAAY,SAEd,SAASvC,EAAUlP,EAAQ8R,GACzB,OAAc,IAAVA,SACU5R,IAAV4R,IAAiC,IAAVA,EAAuBC,EAAW/R,GACpD8R,EAAcE,EAAUhS,IAAW8R,OAAvC,EACP,CAGA,SAASC,EAAW/R,GAClB,IAAIiS,EACJ,GAAI3R,MAAMC,QAAQP,IAChB,IAAK,IAAIQ,EAAE,EAAGA,EAAER,EAAOS,OAAQD,IAE7B,GAAmB,iBADnByR,EAAOjS,EAAOQ,MACkBuR,EAAWE,GAAO,OAAO,OAG3D,IAAK,IAAI7R,KAAOJ,EAAQ,CACtB,GAAW,QAAPI,EAAe,OAAO,EAE1B,GAAmB,iBADnB6R,EAAOjS,EAAOI,MACkB2R,EAAWE,GAAO,OAAO,CAC3D,CAEF,OAAO,CACT,CAGA,SAASD,EAAUhS,GACjB,IAAeiS,EAAXC,EAAQ,EACZ,GAAI5R,MAAMC,QAAQP,IAChB,IAAK,IAAIQ,EAAE,EAAGA,EAAER,EAAOS,OAAQD,IAG7B,GADmB,iBADnByR,EAAOjS,EAAOQ,MACe0R,GAASF,EAAUC,IAC5CC,GAASrL,IAAU,OAAOA,SAGhC,IAAK,IAAIzG,KAAOJ,EAAQ,CACtB,GAAW,QAAPI,EAAe,OAAOyG,IAC1B,GAAIgL,EAAezR,GACjB8R,SAIA,GADmB,iBADnBD,EAAOjS,EAAOI,MACe8R,GAASF,EAAUC,GAAQ,GACpDC,GAASrL,IAAU,OAAOA,GAElC,CAEF,OAAOqL,CACT,CAGA,SAASzB,EAAY/P,EAAIyR,GAGvB,OAFkB,IAAdA,IAAqBzR,EAAKG,EAAYH,IAEnC8P,EADCzG,EAAIuG,MAAM5P,GAEpB,CAGA,SAAS8P,EAAanI,GACpB,OAAO0B,EAAI/G,UAAUqF,GAAGwD,MAAM,KAAK,GAAK,GAC1C,CAGA,IAAIuG,EAAsB,QAC1B,SAASvR,EAAYH,GACnB,OAAOA,EAAKA,EAAG2R,QAAQD,EAAqB,IAAM,EACpD,CAGA,SAAStB,EAAW1O,EAAQ1B,GAE1B,OADAA,EAAKG,EAAYH,GACVqJ,EAAIzL,QAAQ8D,EAAQ1B,EAC7B,gCCjOA,IAAI4R,EAAc,EAAQ,OACtBb,EAAS,gBAEb3S,EAAOC,QAAU,WACf,IAAIwH,EAAQ,CACV,CAAEqB,KAAM,SACNjJ,MAAO,CAAE,CAAE,QAAW,CAAC,qBACd,CAAE,QAAW,CAAC,qBAAuB,aAAc,WAC9D,CAAEiJ,KAAM,SACNjJ,MAAO,CAAE,YAAa,YAAa,UAAW,WAChD,CAAEiJ,KAAM,QACNjJ,MAAO,CAAE,WAAY,WAAY,QAAS,WAAY,gBACxD,CAAEiJ,KAAM,SACNjJ,MAAO,CAAE,gBAAiB,gBAAiB,WAAY,eAAgB,gBAC9D,CAAE,WAAc,CAAC,uBAAwB,wBACpD,CAAEA,MAAO,CAAE,OAAQ,QAAS,OAAQ,MAAO,QAAS,QAAS,QAAS,QAGpE4T,EAAM,CAAE,OAAQ,YA4CpB,OAnCAhM,EAAMiM,IAAMf,EAAOc,GACnBhM,EAAMkM,MAAQhB,EAFF,CAAE,SAAU,UAAW,SAAU,QAAS,SAAU,UAAW,SAI3ElL,EAAMmM,SAAQ,SAAUC,GACtBA,EAAMhU,MAAQgU,EAAMhU,MAAMiU,KAAI,SAAUxL,GACtC,IAAIyL,EACJ,GAAsB,iBAAXzL,EAAqB,CAC9B,IAAIhH,EAAMkJ,OAAOoH,KAAKtJ,GAAS,GAC/ByL,EAAezL,EAAQhH,GACvBgH,EAAUhH,EACVyS,EAAaH,SAAQ,SAAUI,GAC7BP,EAAIQ,KAAKD,GACTvM,EAAMiM,IAAIM,IAAK,CACjB,GACF,CAOA,OANAP,EAAIQ,KAAK3L,GACEb,EAAMiM,IAAIpL,GAAW,CAC9BA,QAASA,EACT+F,KAAMmF,EAAYlL,GAClB4L,WAAYH,EAGhB,IAEAtM,EAAMiM,IAAIS,SAAW,CACnB7L,QAAS,WACT+F,KAAMmF,EAAYW,UAGhBN,EAAM/K,OAAMrB,EAAMkM,MAAME,EAAM/K,MAAQ+K,EAC5C,IAEApM,EAAMY,SAAWsK,EAAOc,EAAIW,OAxCb,CACb,UAAW,MAAO,KAAM,QAAS,SAAU,QAC3C,cAAe,UAAW,cAC1B,WAAY,WAAY,YACxB,mBAAoB,kBACpB,kBAAmB,OAAQ,UAoC7B3M,EAAM4M,OAAS,CAAC,EAET5M,CACT,gCC/DA,IAAI1H,EAAO,EAAQ,OAEnBC,EAAOC,QAEP,SAAsBqU,GACpBvU,EAAKkH,KAAKqN,EAAK9T,KACjB,yBCJAR,EAAOC,QAAU,SAAoByL,GAKnC,IAJA,IAGItC,EAHAzH,EAAS,EACT4S,EAAM7I,EAAI/J,OACV6S,EAAM,EAEHA,EAAMD,GACX5S,KACAyH,EAAQsC,EAAI+I,WAAWD,OACV,OAAUpL,GAAS,OAAUoL,EAAMD,GAGtB,QAAX,OADbnL,EAAQsC,EAAI+I,WAAWD,MACSA,IAGpC,OAAO7S,CACT,gCCiBA,SAAS+S,EAAcC,EAAUrU,EAAMsU,EAAeC,GACpD,IAAIC,EAAQD,EAAS,QAAU,QAC3BE,EAAMF,EAAS,OAAS,OACxBG,EAAKH,EAAS,IAAM,GACpBI,EAAMJ,EAAS,GAAK,IACxB,OAAQF,GACN,IAAK,OAAQ,OAAOrU,EAAOwU,EAAQ,OACnC,IAAK,QAAS,OAAOE,EAAK,iBAAmB1U,EAAO,IACpD,IAAK,SAAU,MAAO,IAAM0U,EAAK1U,EAAOyU,EAClB,UAAYzU,EAAOwU,EAAQ,WAAaC,EACxCE,EAAM,iBAAmB3U,EAAO,KACtD,IAAK,UAAW,MAAO,WAAaA,EAAOwU,EAAQ,WAAaC,EACzCE,EAAM,IAAM3U,EAAO,QACnByU,EAAMzU,EAAOwU,EAAQxU,GACpBsU,EAAiBG,EAAMC,EAAK,YAAc1U,EAAO,IAAO,IAAM,IACtF,IAAK,SAAU,MAAO,WAAaA,EAAOwU,EAAQ,IAAMH,EAAW,KAC5CC,EAAiBG,EAAMC,EAAK,YAAc1U,EAAO,IAAO,IAAM,IACrF,QAAS,MAAO,UAAYA,EAAOwU,EAAQ,IAAMH,EAAW,IAEhE,CApDA3U,EAAOC,QAAU,CACfgH,KAyBF,SAAciO,EAAGC,GAEf,IAAK,IAAI7T,KADT6T,EAAKA,GAAM,CAAC,EACID,EAAGC,EAAG7T,GAAO4T,EAAE5T,GAC/B,OAAO6T,CACT,EA5BET,cAAeA,EACfU,eAoDF,SAAwBC,EAAW/U,EAAMsU,GACvC,GACO,IADCS,EAAU1T,OACR,OAAO+S,EAAcW,EAAU,GAAI/U,EAAMsU,GAAe,GAE9D,IAAIvG,EAAO,GACPsF,EAAQhB,EAAO0C,GASnB,IAAK,IAAIC,KARL3B,EAAM4B,OAAS5B,EAAM6B,SACvBnH,EAAOsF,EAAM8B,KAAO,IAAK,KAAOnV,EAAO,OACvC+N,GAAQ,UAAY/N,EAAO,wBACpBqT,EAAM8B,YACN9B,EAAM4B,aACN5B,EAAM6B,QAEX7B,EAAM+B,eAAe/B,EAAMgC,QACjBhC,EACZtF,IAASA,EAAO,OAAS,IAAOqG,EAAcY,EAAGhV,EAAMsU,GAAe,GAExE,OAAOvG,CAEb,EAtEEuH,cA0EF,SAAuBC,EAAmBR,GACxC,GAAI7T,MAAMC,QAAQ4T,GAAY,CAE5B,IADA,IAAI1B,EAAQ,GACHjS,EAAE,EAAGA,EAAE2T,EAAU1T,OAAQD,IAAK,CACrC,IAAI4T,EAAID,EAAU3T,IACdoU,EAAgBR,IACW,UAAtBO,GAAuC,UAANP,KADlB3B,EAAMA,EAAMhS,QAAU2T,EAEhD,CACA,GAAI3B,EAAMhS,OAAQ,OAAOgS,CAC3B,KAAO,IAAImC,EAAgBT,GACzB,MAAO,CAACA,GACH,GAA0B,UAAtBQ,GAA+C,UAAdR,EAC1C,MAAO,CAAC,QACV,CACF,EAvFE1C,OAAQA,EACRoD,YAAaA,EACbC,aAAcA,EACd3I,MAAO,EAAQ,OACfD,WAAY,EAAQ,MACpB6I,cAgHF,SAAuBvK,EAAKjH,GAC1BA,GAAW,SACX,IAAIkH,EAAUD,EAAIE,MAAM,IAAIjI,OAAOc,EAAS,MAC5C,OAAOkH,EAAUA,EAAQhK,OAAS,CACpC,EAnHEuU,WAsHF,SAAoBxK,EAAKjH,EAAS0R,GAGhC,OAFA1R,GAAW,WACX0R,EAAOA,EAAK5C,QAAQ,MAAO,QACpB7H,EAAI6H,QAAQ,IAAI5P,OAAOc,EAAS,KAAM0R,EAAO,KACtD,EAzHEC,eA4HF,SAAwBlV,EAAQrB,GAC9B,GAAqB,kBAAVqB,EAAqB,OAAQA,EACxC,IAAK,IAAII,KAAOJ,EAAQ,GAAIrB,EAAMyB,GAAM,OAAO,CACjD,EA9HE+U,qBAiIF,SAA8BnV,EAAQrB,EAAOyW,GAC3C,GAAqB,kBAAVpV,EAAqB,OAAQA,GAA2B,OAAjBoV,EAClD,IAAK,IAAIhV,KAAOJ,EAAQ,GAAII,GAAOgV,GAAiBzW,EAAMyB,GAAM,OAAO,CACzE,EAnIEiV,mBAsIF,SAA4BrV,EAAQrB,GAClC,GAAqB,kBAAVqB,EACX,IAAK,IAAII,KAAOJ,EAAQ,IAAKrB,EAAMyB,GAAM,OAAOA,CAClD,EAxIEwM,eAAgBA,EAChB0I,YA+IF,SAAqBC,EAAaN,EAAMO,EAAcC,GAIpD,OAAOC,EAAUH,EAHNC,EACG,SAAaP,GAAQQ,EAAW,GAAK,8CACpCA,EAAW,SAAaR,EAAO,SAAa,YAAiBA,EAAO,YAErF,EAnJEU,QAsJF,SAAiBJ,EAAaK,EAAMJ,GAIlC,OAAOE,EAAUH,EAFH3I,EADH4I,EACkB,IAAMK,EAAkBD,GACxBf,EAAYe,IAE3C,EA1JEE,QA+JF,SAAiBvO,EAAOwO,EAAKC,GAC3B,IAAIC,EAAIC,EAAa9W,EAAMqL,EAC3B,GAAc,KAAVlD,EAAc,MAAO,WACzB,GAAgB,KAAZA,EAAM,GAAW,CACnB,IAAK4C,EAAalC,KAAKV,GAAQ,MAAM,IAAI/H,MAAM,yBAA2B+H,GAC1E2O,EAAc3O,EACdnI,EAAO,UACT,KAAO,CAEL,KADAqL,EAAUlD,EAAMmD,MAAML,IACR,MAAM,IAAI7K,MAAM,yBAA2B+H,GAGzD,GAFA0O,GAAMxL,EAAQ,GAEK,MADnByL,EAAczL,EAAQ,IACE,CACtB,GAAIwL,GAAMF,EAAK,MAAM,IAAIvW,MAAM,gCAAkCyW,EAAK,gCAAkCF,GACxG,OAAOC,EAAMD,EAAME,EACrB,CAEA,GAAIA,EAAKF,EAAK,MAAM,IAAIvW,MAAM,sBAAwByW,EAAK,gCAAkCF,GAE7F,GADA3W,EAAO,QAAW2W,EAAME,GAAO,KAC1BC,EAAa,OAAO9W,CAC3B,CAIA,IAFA,IAAI6V,EAAO7V,EACP+W,EAAWD,EAAYrK,MAAM,KACxBrL,EAAE,EAAGA,EAAE2V,EAAS1V,OAAQD,IAAK,CACpC,IAAI4V,EAAUD,EAAS3V,GACnB4V,IAEFnB,GAAQ,QADR7V,GAAQyV,EAAYwB,EAAoBD,KAG5C,CACA,OAAOnB,CACT,EA9LErD,iBAuMF,SAA0BpH,GACxB,OAAO6L,EAAoBC,mBAAmB9L,GAChD,EAxME6L,oBAAqBA,EACrB9E,eA0MF,SAAwB/G,GACtB,OAAO+L,mBAAmBV,EAAkBrL,GAC9C,EA3MEqL,kBAAmBA,GAuDrB,IAAIjB,EAAkBnD,EAAO,CAAE,SAAU,SAAU,UAAW,UAAW,SAkBzE,SAASA,EAAOxE,GAEd,IADA,IAAIuJ,EAAO,CAAC,EACHhW,EAAE,EAAGA,EAAEyM,EAAIxM,OAAQD,IAAKgW,EAAKvJ,EAAIzM,KAAM,EAChD,OAAOgW,CACT,CAGA,IAAIC,EAAa,wBACbC,EAAe,QACnB,SAAS7B,EAAYzU,GACnB,MAAqB,iBAAPA,EACJ,IAAMA,EAAM,IACZqW,EAAWxO,KAAK7H,GACd,IAAMA,EACN,KAAO0U,EAAa1U,GAAO,IACzC,CAGA,SAAS0U,EAAatK,GACpB,OAAOA,EAAI6H,QAAQqE,EAAc,QACtBrE,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,MAC5B,CAmCA,SAASzF,EAAepC,GACtB,MAAO,IAAOsK,EAAatK,GAAO,GACpC,CAmBA,IAAIL,EAAe,sBACfE,EAAwB,mCAoC5B,SAASqL,EAAWiB,EAAGC,GACrB,MAAS,MAALD,EAAkBC,GACdD,EAAI,MAAQC,GAAGvE,QAAQ,iBAAkB,KACnD,CAaA,SAASwD,EAAkBrL,GACzB,OAAOA,EAAI6H,QAAQ,KAAM,MAAMA,QAAQ,MAAO,KAChD,CAGA,SAASgE,EAAoB7L,GAC3B,OAAOA,EAAI6H,QAAQ,MAAO,KAAKA,QAAQ,MAAO,IAChD,yBC5OA,IAAIwE,EAAW,CACb,aACA,UACA,mBACA,UACA,mBACA,YACA,YACA,UACA,kBACA,WACA,WACA,cACA,gBACA,gBACA,WACA,uBACA,OACA,SACA,SAGF/X,EAAOC,QAAU,SAAU0I,EAAYqP,GACrC,IAAK,IAAItW,EAAE,EAAGA,EAAEsW,EAAqBrW,OAAQD,IAAK,CAChDiH,EAAasP,KAAKzG,MAAMyG,KAAKC,UAAUvP,IACvC,IAEIwP,EAFAd,EAAWW,EAAqBtW,GAAGqL,MAAM,KACzC1E,EAAWM,EAEf,IAAKwP,EAAE,EAAGA,EAAEd,EAAS1V,OAAQwW,IAC3B9P,EAAWA,EAASgP,EAASc,IAE/B,IAAKA,EAAE,EAAGA,EAAEJ,EAASpW,OAAQwW,IAAK,CAChC,IAAI7W,EAAMyW,EAASI,GACfjX,EAASmH,EAAS/G,GAClBJ,IACFmH,EAAS/G,GAAO,CACd8W,MAAO,CACLlX,EACA,CAAE0I,KAAM,oFAIhB,CACF,CAEA,OAAOjB,CACT,gCC9CA,IAAIA,EAAa,EAAQ,MAEzB3I,EAAOC,QAAU,CACfyI,IAAK,4EACL2P,YAAa,CACXC,YAAa3P,EAAW0P,YAAYC,aAEtCxP,KAAM,SACNmI,aAAc,CACZ/P,OAAQ,CAAC,YACTuH,MAAO,CAAC,YACR8P,WAAY,CAAC,UACbzX,MAAO,CAAC0X,IAAK,CAACC,SAAU,CAAC,YAE3BC,WAAY,CACV5P,KAAMH,EAAW+P,WAAW5P,KAC5B5H,OAAQ,CAAC4H,KAAM,WACfyP,WAAY,CAACzP,KAAM,WACnBmI,aAAc,CACZnI,KAAM,QACN6P,MAAO,CAAC7P,KAAM,WAEhBH,WAAY,CAACG,KAAM,UACnB8P,UAAW,CAAC9P,KAAM,WAClBhI,MAAO,CAACgI,KAAM,WACdL,MAAO,CAACK,KAAM,WACd+P,MAAO,CAAC/P,KAAM,WACd9H,OAAQ,CACNoX,MAAO,CACL,CAACtP,KAAM,WACP,CAACgQ,MAAO,oCC/BhB9Y,EAAOC,QAAU,SAAyB6Q,EAAIiI,EAAUC,GACtD,IAUEC,EAVEC,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UAEzBjR,EAAQ,QAAU4Q,GAAY,IAC9BM,EAAU7I,EAAG9J,KAAKyB,OAASpG,GAAWA,EAAQoG,MAE9CkR,GACFT,GAAO,cAAgB,EAAS,MAASpI,EAAG/Q,KAAKiX,QAAQ3U,EAAQoG,MAAO4Q,EAAUvI,EAAG8I,aAAgB,KACrGX,EAAe,SAAWE,GAE1BF,EAAe5W,EAEjB,IAAIwX,EAAqB,WAAZd,EACXe,EAAoBD,EAAS,mBAAqB,mBAClDE,EAAcjJ,EAAG5P,OAAO4Y,GACxBE,EAAclJ,EAAG9J,KAAKyB,OAASsR,GAAeA,EAAYtR,MAC1DwR,EAAMJ,EAAS,IAAM,IACrBK,EAASL,EAAS,IAAM,IACxBM,OAAgB/Y,EAClB,IAAMuY,GAA6B,iBAAXtX,QAAmCjB,IAAZiB,EAC7C,MAAM,IAAI3B,MAAMqY,EAAW,mBAE7B,IAAMiB,QAA+B5Y,IAAhB2Y,GAAmD,iBAAfA,GAAiD,kBAAfA,EACzF,MAAM,IAAIrZ,MAAMoZ,EAAoB,8BAEtC,GAAIE,EAAa,CACf,IAUII,EAVAC,EAAmBvJ,EAAG/Q,KAAKiX,QAAQ+C,EAAYtR,MAAO4Q,EAAUvI,EAAG8I,aACrEU,EAAa,YAAcnB,EAC3BoB,EAAY,WAAapB,EACzBqB,EAAgB,eAAiBrB,EAEjCsB,EAAS,QADTC,EAAU,KAAOvB,GACY,OAC/BD,GAAO,kBAAoB,EAAS,MAAQ,EAAqB,KAEjEA,GAAO,QAAU,EAAe,SAAW,EAAc,cADzDmB,EAAmB,aAAelB,GAC2D,SAAW,EAAc,oBAAwB,EAAc,sBAA0B,EAAc,mBAChMgB,EAAgBL,GAChBM,EAAaA,GAAc,IACpBnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,iBAAoBiB,GAAiB,mBAAqB,oCAA0CrJ,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,kBACjK,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,gBAAmB,EAAsB,wBAE9CpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EACZA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,gBACHS,IACFT,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,IAAM,EAAc,qBAAyB,EAAe,MAAQ,EAAiB,qBAAuB,EAAqB,IAAM,EAAQ,KAAO,EAAiB,OAAS,EAAU,IAAM,EAAW,KAAO,EAAqB,MAAQ,EAAU,IAAM,EAAW,IAAM,EAAiB,WAAa,EAAe,MAAQ,EAAqB,gBAAkB,EAAU,IAAM,EAAW,KAAO,EAAiB,MAAQ,EAAU,IAAM,EAAW,IAAM,EAAiB,SAAW,EAAU,QAAU,EAAU,aAAe,EAAS,MAAQ,EAAe,OAAU,EAAQ,QAAY,EAAQ,YAC9kB9X,IAAZiB,IACF8X,EAAgBL,EAChBN,EAAiB1I,EAAG1B,cAAgB,IAAM0K,EAC1Cb,EAAeoB,EACfV,EAAUK,EAEd,MAGE,GADES,EAASR,GADPO,EAAsC,iBAAfT,IAENJ,EAAS,CAC5B,IAAIe,EAAU,IAAOD,EAAS,IAC9BvB,GAAO,SACHS,IACFT,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,MAAQ,EAAiB,qBAAuB,EAAgB,IAAM,EAAQ,KAAO,EAAiB,MAAQ,EAAU,IAAM,EAAW,KAAO,EAAgB,MAAQ,EAAU,IAAM,EAAW,IAAM,EAAiB,SAAW,EAAU,QAAU,EAAU,MAC5Q,MACMsB,QAA6BpZ,IAAZiB,GACnBiY,GAAa,EACbH,EAAgBL,EAChBN,EAAiB1I,EAAG1B,cAAgB,IAAM0K,EAC1Cb,EAAec,EACfG,GAAU,MAENM,IAAevB,EAAegC,KAAKpB,EAAS,MAAQ,OAAOE,EAAa1X,IACxE0X,MAAiBS,GAAgBvB,IACnCqB,GAAa,EACbH,EAAgBL,EAChBN,EAAiB1I,EAAG1B,cAAgB,IAAM0K,EAC1CI,GAAU,MAEVI,GAAa,EACbG,GAAU,MAGVC,EAAU,IAAOD,EAAS,IAC9BvB,GAAO,SACHS,IACFT,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,IAAM,EAAU,IAAM,EAAW,IAAM,EAAiB,OAAS,EAAU,QAAU,EAAU,OA8C1G,OA3CAiB,EAAgBA,GAAiBpB,GAC7BqB,EAAaA,GAAc,IACpBnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,iBAAoBiB,GAAiB,UAAY,oCAA0CrJ,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,4BAA8B,EAAY,YAAc,EAAiB,gBAAkB,EAAe,OAClQ,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,0BAA6B,EAAW,IAE7CA,GADES,EACK,OAAU,EAEL,EAAiB,KAG7B7I,EAAG9J,KAAK6T,UACV3B,GAAO,eAELA,GADES,EACK,kBAAoB,EAEpB,GAAK,EAEdT,GAAO,2CAA8CpI,EAAa,WAAI,YAAc,EAAU,KAEhGoI,GAAO,OAEPA,GAAO,OAEL4B,EAAQ5B,EACZA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,MACHO,IACFP,GAAO,YAEFA,CACT,0BCjKAlZ,EAAOC,QAAU,SAA8B6Q,EAAIiI,EAAUC,GAC3D,IAUEC,EAVEC,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UAEzBjR,EAAQ,QAAU4Q,GAAY,IAC9BM,EAAU7I,EAAG9J,KAAKyB,OAASpG,GAAWA,EAAQoG,MAQlD,GANIkR,GACFT,GAAO,cAAgB,EAAS,MAASpI,EAAG/Q,KAAKiX,QAAQ3U,EAAQoG,MAAO4Q,EAAUvI,EAAG8I,aAAgB,KACrGX,EAAe,SAAWE,GAE1BF,EAAe5W,GAEXsX,GAA6B,iBAAXtX,EACtB,MAAM,IAAI3B,MAAMqY,EAAW,mBAG7BG,GAAO,QACHS,IACFT,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,IAAM,EAAU,YALD,YAAZH,EAAyB,IAAM,KAKG,IAAM,EAAiB,OACnE,IAAIoB,EAAgBpB,EAChBqB,EAAaA,GAAc,GAC/BA,EAAWnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,iBAAoBiB,GAAiB,eAAiB,oCAA0CrJ,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,uBAAyB,EAAiB,OACvM,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,gCAELA,GADc,YAAZH,EACK,OAEA,QAETG,GAAO,SAELA,GADES,EACK,OAAU,EAAiB,OAE3B,GAAK,EAEdT,GAAO,YAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,eAELA,GADES,EACK,kBAAoB,EAEpB,GAAK,EAEdT,GAAO,2CAA8CpI,EAAa,WAAI,YAAc,EAAU,KAEhGoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EAgBZ,OAfAA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,KACHO,IACFP,GAAO,YAEFA,CACT,0BC9EAlZ,EAAOC,QAAU,SAA+B6Q,EAAIiI,EAAUC,GAC5D,IAUEC,EAVEC,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UAEzBjR,EAAQ,QAAU4Q,GAAY,IAC9BM,EAAU7I,EAAG9J,KAAKyB,OAASpG,GAAWA,EAAQoG,MAQlD,GANIkR,GACFT,GAAO,cAAgB,EAAS,MAASpI,EAAG/Q,KAAKiX,QAAQ3U,EAAQoG,MAAO4Q,EAAUvI,EAAG8I,aAAgB,KACrGX,EAAe,SAAWE,GAE1BF,EAAe5W,GAEXsX,GAA6B,iBAAXtX,EACtB,MAAM,IAAI3B,MAAMqY,EAAW,mBAE7B,IAAIkB,EAAkB,aAAZlB,EAA0B,IAAM,IAC1CG,GAAO,QACHS,IACFT,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,sBAExD,IAApBpI,EAAG9J,KAAKkU,QACVhC,GAAO,IAAM,EAAU,WAEvBA,GAAO,eAAiB,EAAU,KAEpCA,GAAO,IAAM,EAAQ,IAAM,EAAiB,OAC5C,IAAIiB,EAAgBpB,EAChBqB,EAAaA,GAAc,GAC/BA,EAAWnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,iBAAoBiB,GAAiB,gBAAkB,oCAA0CrJ,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,uBAAyB,EAAiB,OACxM,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,8BAELA,GADc,aAAZH,EACK,SAEA,UAETG,GAAO,SAELA,GADES,EACK,OAAU,EAAiB,OAE3B,GAAK,EAEdT,GAAO,iBAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,eAELA,GADES,EACK,kBAAoB,EAEpB,GAAK,EAEdT,GAAO,2CAA8CpI,EAAa,WAAI,YAAc,EAAU,KAEhGoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EAgBZ,OAfAA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,KACHO,IACFP,GAAO,YAEFA,CACT,0BCnFAlZ,EAAOC,QAAU,SAAmC6Q,EAAIiI,EAAUC,GAChE,IAUEC,EAVEC,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UAEzBjR,EAAQ,QAAU4Q,GAAY,IAC9BM,EAAU7I,EAAG9J,KAAKyB,OAASpG,GAAWA,EAAQoG,MAQlD,GANIkR,GACFT,GAAO,cAAgB,EAAS,MAASpI,EAAG/Q,KAAKiX,QAAQ3U,EAAQoG,MAAO4Q,EAAUvI,EAAG8I,aAAgB,KACrGX,EAAe,SAAWE,GAE1BF,EAAe5W,GAEXsX,GAA6B,iBAAXtX,EACtB,MAAM,IAAI3B,MAAMqY,EAAW,mBAG7BG,GAAO,QACHS,IACFT,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,gBAAkB,EAAU,aALb,iBAAZH,EAA8B,IAAM,KAKW,IAAM,EAAiB,OAChF,IAAIoB,EAAgBpB,EAChBqB,EAAaA,GAAc,GAC/BA,EAAWnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,iBAAoBiB,GAAiB,oBAAsB,oCAA0CrJ,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,uBAAyB,EAAiB,OAC5M,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,gCAELA,GADc,iBAAZH,EACK,OAEA,QAETG,GAAO,SAELA,GADES,EACK,OAAU,EAAiB,OAE3B,GAAK,EAEdT,GAAO,iBAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,eAELA,GADES,EACK,kBAAoB,EAEpB,GAAK,EAEdT,GAAO,2CAA8CpI,EAAa,WAAI,YAAc,EAAU,KAEhGoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EAgBZ,OAfAA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,KACHO,IACFP,GAAO,YAEFA,CACT,0BC9EAlZ,EAAOC,QAAU,SAAwB6Q,EAAIiI,EAAUC,GACrD,IAAIE,EAAM,IACN7W,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzByB,EAAMrK,EAAG/Q,KAAKkH,KAAK6J,GACnBsK,EAAiB,GACrBD,EAAI/B,QACJ,IAAIiC,EAAa,QAAUF,EAAI/B,MAC3BkC,EAAiBH,EAAI7X,OACvBiY,GAAmB,EACjBC,EAAOnZ,EACX,GAAImZ,EAGF,IAFA,IAAIC,EAAMC,GAAM,EACdC,EAAKH,EAAK7Z,OAAS,EACd+Z,EAAKC,GACVF,EAAOD,EAAKE,GAAM,IACb5K,EAAG9J,KAAK4U,eAAiC,iBAARH,GAAoBjR,OAAOoH,KAAK6J,GAAM9Z,OAAS,IAAe,IAAT8Z,EAAiB3K,EAAG/Q,KAAKqW,eAAeqF,EAAM3K,EAAGrJ,MAAMiM,QAChJ6H,GAAmB,EACnBJ,EAAIja,OAASua,EACbN,EAAIhM,WAAaoK,EAAc,IAAMmC,EAAK,IAC1CP,EAAI/L,cAAgBoK,EAAiB,IAAMkC,EAC3CxC,GAAO,KAAQpI,EAAG1Q,SAAS+a,GAAQ,IACnCA,EAAI7X,OAASgY,EACT7B,IACFP,GAAO,QAAU,EAAe,OAChCkC,GAAkB,MAY1B,OAPI3B,IAEAP,GADEqC,EACK,gBAEA,IAAOH,EAAevW,MAAM,GAAI,GAAM,KAG1CqU,CACT,0BCxCAlZ,EAAOC,QAAU,SAAwB6Q,EAAIiI,EAAUC,GACrD,IAAIE,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzBjR,EAAQ,QAAU4Q,GAAY,IAC9BwC,EAAS,QAAU1C,EACnB2C,EAAQ,SAAW3C,EACnBgC,EAAMrK,EAAG/Q,KAAKkH,KAAK6J,GACnBsK,EAAiB,GACrBD,EAAI/B,QACJ,IAAIiC,EAAa,QAAUF,EAAI/B,MAC3B2C,EAAiB1Z,EAAQ6O,OAAM,SAASuK,GAC1C,OAAQ3K,EAAG9J,KAAK4U,eAAiC,iBAARH,GAAoBjR,OAAOoH,KAAK6J,GAAM9Z,OAAS,IAAe,IAAT8Z,EAAiB3K,EAAG/Q,KAAKqW,eAAeqF,EAAM3K,EAAGrJ,MAAMiM,IACvJ,IACA,GAAIqI,EAAgB,CAClB,IAAIT,EAAiBH,EAAI7X,OACzB4V,GAAO,QAAU,EAAU,kBAAoB,EAAW,cAC1D,IAAI8C,EAAgBlL,EAAGkK,cACvBlK,EAAGkK,cAAgBG,EAAIH,eAAgB,EACvC,IAAIQ,EAAOnZ,EACX,GAAImZ,EAGF,IAFA,IAAIC,EAAMC,GAAM,EACdC,EAAKH,EAAK7Z,OAAS,EACd+Z,EAAKC,GACVF,EAAOD,EAAKE,GAAM,GAClBP,EAAIja,OAASua,EACbN,EAAIhM,WAAaoK,EAAc,IAAMmC,EAAK,IAC1CP,EAAI/L,cAAgBoK,EAAiB,IAAMkC,EAC3CxC,GAAO,KAAQpI,EAAG1Q,SAAS+a,GAAQ,IACnCA,EAAI7X,OAASgY,EACbpC,GAAO,IAAM,EAAW,MAAQ,EAAW,OAAS,EAAe,UAAY,EAAW,OAC1FkC,GAAkB,IAGtBtK,EAAGkK,cAAgBG,EAAIH,cAAgBgB,EACvC9C,GAAO,IAAM,EAAmB,SAAW,EAAW,sBAC9B,IAApBpI,EAAG6J,cACLzB,GAAO,sDAAyEpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,kBACtI,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,oDAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACFpI,EAAGkK,eAAiBvB,IAEnB3I,EAAG+H,MACLK,GAAO,wCAEPA,GAAO,8CAGXA,GAAO,uBAAyB,EAAU,iCAAmC,EAAU,sBAAwB,EAAU,4BACrHpI,EAAG9J,KAAK0S,YACVR,GAAO,MAEX,MACMO,IACFP,GAAO,iBAGX,OAAOA,CACT,0BCvEAlZ,EAAOC,QAAU,SAA0B6Q,EAAIiI,EAAUC,GACvD,IAAIE,EAAM,IACN7W,EAAUyO,EAAG5P,OAAO6X,GACpBS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAE1C5E,GADiBrD,EAAG9J,KAAK0S,UACd5I,EAAG/Q,KAAK+N,eAAezL,IAMtC,OALyB,IAArByO,EAAG9J,KAAKmN,SACV+E,GAAO,gBAAkB,EAAa,KACF,mBAApBpI,EAAG9J,KAAKmN,WACxB+E,GAAO,wBAA0B,EAAa,KAAQpI,EAAG/Q,KAAK+N,eAAe0L,GAAmB,4BAE3FN,CACT,0BCZAlZ,EAAOC,QAAU,SAAwB6Q,EAAIiI,EAAUC,GACrD,IAAIE,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzBjR,EAAQ,QAAU4Q,GAAY,IAC9BwC,EAAS,QAAU1C,EACnBQ,EAAU7I,EAAG9J,KAAKyB,OAASpG,GAAWA,EAAQoG,MAE9CkR,IACFT,GAAO,cAAgB,EAAS,MAASpI,EAAG/Q,KAAKiX,QAAQ3U,EAAQoG,MAAO4Q,EAAUvI,EAAG8I,aAAgB,MAKlGD,IACHT,GAAO,cAAgB,EAAS,qBAAuB,EAAgB,KAEzEA,GAAO,OAAS,EAAW,YAAc,EAAU,WAAa,EAAS,WAAa,EAAW,SACjG,IAAIkB,EAAaA,GAAc,GAC/BA,EAAWnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,sDAAyEpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,oCAAsC,EAAS,OACrL,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,8CAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EAgBZ,OAfAA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,KACHO,IACFP,GAAO,YAEFA,CACT,yBCtDAlZ,EAAOC,QAAU,SAA2B6Q,EAAIiI,EAAUC,GACxD,IAAIE,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzBjR,EAAQ,QAAU4Q,GAAY,IAC9BwC,EAAS,QAAU1C,EACnB2C,EAAQ,SAAW3C,EACnBgC,EAAMrK,EAAG/Q,KAAKkH,KAAK6J,GAEvBqK,EAAI/B,QACJ,IAAIiC,EAAa,QAAUF,EAAI/B,MAC3B6C,EAAO,IAAM9C,EACf+C,EAAWf,EAAI7B,UAAYxI,EAAGwI,UAAY,EAC1C6C,EAAY,OAASD,EACrBZ,EAAiBxK,EAAGxN,OACpB8Y,EAAmBtL,EAAG9J,KAAK4U,eAAoC,iBAAXvZ,GAAuBmI,OAAOoH,KAAKvP,GAASV,OAAS,IAAkB,IAAZU,EAAoByO,EAAG/Q,KAAKqW,eAAe/T,EAASyO,EAAGrJ,MAAMiM,KAE9K,GADAwF,GAAO,OAAS,EAAU,iBAAmB,EAAW,IACpDkD,EAAiB,CACnB,IAAIJ,EAAgBlL,EAAGkK,cACvBlK,EAAGkK,cAAgBG,EAAIH,eAAgB,EACvCG,EAAIja,OAASmB,EACb8Y,EAAIhM,WAAaoK,EACjB4B,EAAI/L,cAAgBoK,EACpBN,GAAO,QAAU,EAAe,sBAAwB,EAAS,SAAW,EAAS,MAAQ,EAAU,YAAc,EAAS,SAC9HiC,EAAI9L,UAAYyB,EAAG/Q,KAAKyW,YAAY1F,EAAGzB,UAAW4M,EAAMnL,EAAG9J,KAAK0P,cAAc,GAC9E,IAAI2F,EAAY5T,EAAQ,IAAMwT,EAAO,IACrCd,EAAIvB,YAAYsC,GAAYD,EAC5B,IAAIK,EAAQxL,EAAG1Q,SAAS+a,GACxBA,EAAI7X,OAASgY,EACTxK,EAAG/Q,KAAKkW,cAAcqG,EAAOH,GAAa,EAC5CjD,GAAO,IAAOpI,EAAG/Q,KAAKmW,WAAWoG,EAAOH,EAAWE,GAAc,IAEjEnD,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAExEA,GAAO,QAAU,EAAe,eAChCpI,EAAGkK,cAAgBG,EAAIH,cAAgBgB,EACvC9C,GAAO,UAAoC,EAAe,KAC5D,MACEA,GAAO,QAAU,EAAU,kBAE7B,IAAIkB,EAAaA,GAAc,GAC/BA,EAAWnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,yDAA4EpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,kBACzI,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,8CAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EAmBZ,OAlBAA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,aACHkD,IACFlD,GAAO,cAAgB,EAAU,iCAAmC,EAAU,sBAAwB,EAAU,6BAE9GpI,EAAG9J,KAAK0S,YACVR,GAAO,OAEFA,CACT,0BC/EAlZ,EAAOC,QAAU,SAAyB6Q,EAAIiI,EAAUC,GACtD,IAOImB,EAKFlB,EAZEC,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UAEzBjR,EAAQ,QAAU4Q,GAAY,IAC9BwC,EAAS,QAAU1C,EACnB2C,EAAQ,SAAW3C,EACnBQ,EAAU7I,EAAG9J,KAAKyB,OAASpG,GAAWA,EAAQoG,MAE9CkR,GACFT,GAAO,cAAgB,EAAS,MAASpI,EAAG/Q,KAAKiX,QAAQ3U,EAAQoG,MAAO4Q,EAAUvI,EAAG8I,aAAgB,KACrGX,EAAe,SAAWE,GAE1BF,EAAe5W,EAEjB,IAIIka,EAAUC,EAASC,EAAQC,EAAeC,EAJ1CC,EAAQpc,KACVqc,EAAc,aAAe1D,EAC7B2D,EAAQF,EAAM5L,WACdoK,EAAiB,GAEnB,GAAIzB,GAAWmD,EAAMrU,MAAO,CAC1BkU,EAAgB,kBAAoBxD,EACpC,IAAI4D,EAAkBD,EAAM3a,eAC5B+W,GAAO,QAAU,EAAgB,oBAAuB,EAAa,sBAAyB,EAAkB,MAAQ,EAAgB,YAC1I,KAAO,CAEL,KADAwD,EAAgB5L,EAAGrB,cAAcmN,EAAOva,EAASyO,EAAG5P,OAAQ4P,IACxC,OACpBmI,EAAe,kBAAoBM,EACnCoD,EAAgBD,EAAcrO,KAC9BkO,EAAWO,EAAM7b,QACjBub,EAAUM,EAAMrM,OAChBgM,EAASK,EAAMzL,KACjB,CACA,IAAI2L,EAAYL,EAAgB,UAC9BjB,EAAK,IAAMvC,EACX8D,EAAW,UAAY9D,EACvB+D,EAAgBJ,EAAMjE,MACxB,GAAIqE,IAAkBpM,EAAG+H,MAAO,MAAM,IAAInY,MAAM,gCAahD,GAZM8b,GAAWC,IACfvD,GAAY,EAAc,YAE5BA,GAAO,OAAS,EAAU,iBAAmB,EAAW,IACpDS,GAAWmD,EAAMrU,QACnB2S,GAAkB,IAClBlC,GAAO,QAAU,EAAiB,qBAAuB,EAAW,qBAChE6D,IACF3B,GAAkB,IAClBlC,GAAO,IAAM,EAAW,MAAQ,EAAgB,mBAAqB,EAAiB,UAAY,EAAW,SAG7GsD,EACEM,EAAMvE,WACRW,GAAO,IAAOwD,EAAsB,SAAI,IAExCxD,GAAO,IAAM,EAAW,MAASwD,EAAsB,SAAI,UAExD,GAAID,EAAQ,CACjB,IAAItB,EAAMrK,EAAG/Q,KAAKkH,KAAK6J,GACnBsK,EAAiB,GACrBD,EAAI/B,QACJ,IAAIiC,EAAa,QAAUF,EAAI/B,MAC/B+B,EAAIja,OAASwb,EAActc,SAC3B+a,EAAIhM,WAAa,GACjB,IAAI6M,EAAgBlL,EAAGkK,cACvBlK,EAAGkK,cAAgBG,EAAIH,eAAgB,EACvC,IAAIsB,EAAQxL,EAAG1Q,SAAS+a,GAAK5H,QAAQ,oBAAqBoJ,GAC1D7L,EAAGkK,cAAgBG,EAAIH,cAAgBgB,EACvC9C,GAAO,IAAM,CACf,KAAO,EACDkB,EAAaA,GAAc,IACpBnG,KAAKiF,GAChBA,EAAM,GACNA,GAAO,KAAO,EAAkB,UAC5BpI,EAAG9J,KAAKmW,YACVjE,GAAO,OAEPA,GAAO,OAELqD,IAA6B,IAAjBO,EAAM5b,OACpBgY,GAAO,MAAQ,EAAU,IAEzBA,GAAO,MAAQ,EAAiB,MAAQ,EAAU,qBAAwBpI,EAAa,WAAI,IAE7FoI,GAAO,sBACa,MAAhBpI,EAAGzB,YACL6J,GAAO,MAASpI,EAAY,WAE9B,IAAIsM,EAAc/D,EAAW,QAAWA,EAAW,GAAM,IAAM,aAC7DgE,EAAsBhE,EAAWvI,EAAG8I,YAAYP,GAAY,qBAE1DiE,EADJpE,GAAO,MAAQ,EAAgB,MAAQ,EAAwB,kBAE/DA,EAAMkB,EAAWW,OACI,IAAjB+B,EAAM9b,QACRkY,GAAO,IAAM,EAAW,MACpBgE,IACFhE,GAAO,UAETA,GAAY,EAAyB,MAInCA,GAFEgE,EAEK,SADPF,EAAY,eAAiB7D,GACE,kBAAoB,EAAW,YAAc,EAAyB,mBAAqB,EAAW,+CAAiD,EAAc,gCAE7L,IAAM,EAAc,YAAc,EAAW,MAAQ,EAAyB,IAG3F,CAKA,GAJI2D,EAAMlE,YACRM,GAAO,QAAU,EAAgB,KAAO,EAAU,MAAQ,EAAgB,IAAM,EAAwB,MAE1GA,GAAO,GAAK,EACR4D,EAAMhc,MACJ2Y,IACFP,GAAO,qBAEJ,CAcL,IAGIkB,EAhBJlB,GAAO,cACa9X,IAAhB0b,EAAMhc,OACRoY,GAAO,KAELA,GADEuD,EACK,GAAK,EAEL,GAAK,GAGdvD,GAAO,KAAQ4D,EAAMhc,MAAS,IAEhCoY,GAAO,OACPiB,EAAgByC,EAAMtU,SAClB8R,EAAaA,GAAc,IACpBnG,KAAKiF,GAChBA,EAAM,IACFkB,EAAaA,GAAc,IACpBnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,iBAAoBiB,GAAiB,UAAY,oCAA0CrJ,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,0BAA8BoD,EAAa,QAAI,QACvM,IAArB9L,EAAG9J,KAAK4T,WACV1B,GAAO,8BAAiC0D,EAAa,QAAI,2BAEvD9L,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EACZA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnC,IAAIqE,EAAkBrE,EACtBA,EAAMkB,EAAWW,MACbyB,EACEM,EAAM9b,OACY,QAAhB8b,EAAM9b,SACRkY,GAAO,cAAgB,EAAO,IAAM,EAAU,KAAO,EAAO,YAAc,EAAO,aAAe,EAAa,cAAgB,EAAO,UAAY,EAAa,4BAA8B,EAAa,kCAAuCpI,EAAY,UAAI,SAAW,EAAa,gCAAkC,EAAa,kBAAoB,EAAmB,QACzWA,EAAG9J,KAAK6T,UACV3B,GAAO,IAAM,EAAa,aAAe,EAAiB,KAAO,EAAa,WAAa,EAAU,MAEvGA,GAAO,QAGY,IAAjB4D,EAAM9b,OACRkY,GAAO,IAAM,EAAoB,KAEjCA,GAAO,QAAU,EAAU,iBAAmB,EAAoB,uBAAyB,EAAO,IAAM,EAAU,KAAO,EAAO,YAAc,EAAO,aAAe,EAAa,cAAgB,EAAO,UAAY,EAAa,4BAA8B,EAAa,kCAAuCpI,EAAY,UAAI,SAAW,EAAa,gCAAkC,EAAa,kBAAoB,EAAmB,QAC7aA,EAAG9J,KAAK6T,UACV3B,GAAO,IAAM,EAAa,aAAe,EAAiB,KAAO,EAAa,WAAa,EAAU,MAEvGA,GAAO,SAGFuD,GACTvD,GAAO,mBACiB,IAApBpI,EAAG6J,cACLzB,GAAO,iBAAoBiB,GAAiB,UAAY,oCAA0CrJ,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,0BAA8BoD,EAAa,QAAI,QACvM,IAArB9L,EAAG9J,KAAK4T,WACV1B,GAAO,8BAAiC0D,EAAa,QAAI,2BAEvD9L,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACFpI,EAAGkK,eAAiBvB,IAEnB3I,EAAG+H,MACLK,GAAO,wCAEPA,GAAO,gDAIU,IAAjB4D,EAAM9b,OACRkY,GAAO,IAAM,EAAoB,KAEjCA,GAAO,sBAAwB,EAAc,wCAA0C,EAAc,mCAAqC,EAAc,yCAA2C,EAAO,IAAM,EAAU,KAAO,EAAO,YAAc,EAAO,aAAe,EAAa,cAAgB,EAAO,UAAY,EAAa,4BAA8B,EAAa,kCAAuCpI,EAAY,UAAI,MAAQ,EAAa,kBAAoB,EAAmB,OACneA,EAAG9J,KAAK6T,UACV3B,GAAO,IAAM,EAAa,aAAe,EAAiB,KAAO,EAAa,WAAa,EAAU,MAEvGA,GAAO,eAAiB,EAAoB,OAGhDA,GAAO,MACHO,IACFP,GAAO,WAEX,CACA,OAAOA,CACT,0BClOAlZ,EAAOC,QAAU,SAA+B6Q,EAAIiI,EAAUC,GAC5D,IAAIE,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzBjR,EAAQ,QAAU4Q,GAAY,IAC9ByC,EAAQ,SAAW3C,EACnBgC,EAAMrK,EAAG/Q,KAAKkH,KAAK6J,GACnBsK,EAAiB,GACrBD,EAAI/B,QACJ,IAAIiC,EAAa,QAAUF,EAAI/B,MAC3BoE,EAAc,CAAC,EACjBC,EAAgB,CAAC,EACjBC,EAAiB5M,EAAG9J,KAAK2W,cAC3B,IAAKC,KAAavb,EAChB,GAAiB,aAAbub,EAAJ,CACA,IAAInC,EAAOpZ,EAAQub,GACfC,EAAQrc,MAAMC,QAAQga,GAAQgC,EAAgBD,EAClDK,EAAMD,GAAanC,CAHmB,CAKxCvC,GAAO,OAAS,EAAU,aAC1B,IAAI4E,EAAoBhN,EAAGzB,UAE3B,IAAK,IAAIuO,KADT1E,GAAO,cAAgB,EAAS,IACVuE,EAEpB,IADAI,EAAQJ,EAAcG,IACZjc,OAAQ,CAKhB,GAJAuX,GAAO,SAAW,EAAWpI,EAAG/Q,KAAKgW,YAAY6H,GAAc,kBAC3DF,IACFxE,GAAO,4CAA8C,EAAU,MAAUpI,EAAG/Q,KAAKiW,aAAa4H,GAAc,OAE1GnE,EAAe,CACjBP,GAAO,SACP,IAAIsC,EAAOqC,EACX,GAAIrC,EAGF,IAFA,IAAkBE,GAAM,EACtBC,EAAKH,EAAK7Z,OAAS,EACd+Z,EAAKC,GACVoC,EAAevC,EAAKE,GAAM,GACtBA,IACFxC,GAAO,QAITA,GAAO,SADL8E,EAAWvV,GADTwV,EAAQnN,EAAG/Q,KAAKgW,YAAYgI,KAEF,kBAC1BL,IACFxE,GAAO,8CAAgD,EAAU,MAAUpI,EAAG/Q,KAAKiW,aAAa+H,GAAiB,OAEnH7E,GAAO,gBAAkB,EAAS,MAASpI,EAAG/Q,KAAK+N,eAAegD,EAAG9J,KAAK0P,aAAeqH,EAAeE,GAAU,OAGtH/E,GAAO,SACP,IAAIgF,EAAgB,UAAY/E,EAC9BgF,EAAmB,OAAUD,EAAgB,OAC3CpN,EAAG9J,KAAKiB,yBACV6I,EAAGzB,UAAYyB,EAAG9J,KAAK0P,aAAe5F,EAAG/Q,KAAKyW,YAAYsH,EAAmBI,GAAe,GAAQJ,EAAoB,MAAQI,GAElI,IAAI9D,EAAaA,GAAc,GAC/BA,EAAWnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,6DAAgFpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,2BAA+B1I,EAAG/Q,KAAKiW,aAAa4H,GAAc,wBAA4B,EAAqB,iBAAqBC,EAAY,OAAI,YAAgB/M,EAAG/Q,KAAKiW,aAA6B,GAAhB6H,EAAMlc,OAAckc,EAAM,GAAKA,EAAMzM,KAAK,OAAU,QAC9X,IAArBN,EAAG9J,KAAK4T,WACV1B,GAAO,4BACa,GAAhB2E,EAAMlc,OACRuX,GAAO,YAAepI,EAAG/Q,KAAKiW,aAAa6H,EAAM,IAEjD3E,GAAO,cAAiBpI,EAAG/Q,KAAKiW,aAAa6H,EAAMzM,KAAK,OAE1D8H,GAAO,kBAAqBpI,EAAG/Q,KAAKiW,aAAa4H,GAAc,iBAE7D9M,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EACZA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,8EAErC,KAAO,CACLA,GAAO,QACP,IAAIkF,EAAOP,EACX,GAAIO,EAGF,IAFA,IAAIL,EAAcM,GAAM,EACtBC,EAAKF,EAAKzc,OAAS,EACd0c,EAAKC,GAAI,CACdP,EAAeK,EAAKC,GAAM,GAC1B,IAAIJ,EAAQnN,EAAG/Q,KAAKgW,YAAYgI,GAE9BC,GADAG,EAAmBrN,EAAG/Q,KAAKiW,aAAa+H,GAC7BtV,EAAQwV,GACjBnN,EAAG9J,KAAKiB,yBACV6I,EAAGzB,UAAYyB,EAAG/Q,KAAK8W,QAAQiH,EAAmBC,EAAcjN,EAAG9J,KAAK0P,eAE1EwC,GAAO,SAAW,EAAa,kBAC3BwE,IACFxE,GAAO,8CAAgD,EAAU,MAAUpI,EAAG/Q,KAAKiW,aAAa+H,GAAiB,OAEnH7E,GAAO,qBACiB,IAApBpI,EAAG6J,cACLzB,GAAO,6DAAgFpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,2BAA+B1I,EAAG/Q,KAAKiW,aAAa4H,GAAc,wBAA4B,EAAqB,iBAAqBC,EAAY,OAAI,YAAgB/M,EAAG/Q,KAAKiW,aAA6B,GAAhB6H,EAAMlc,OAAckc,EAAM,GAAKA,EAAMzM,KAAK,OAAU,QAC9X,IAArBN,EAAG9J,KAAK4T,WACV1B,GAAO,4BACa,GAAhB2E,EAAMlc,OACRuX,GAAO,YAAepI,EAAG/Q,KAAKiW,aAAa6H,EAAM,IAEjD3E,GAAO,cAAiBpI,EAAG/Q,KAAKiW,aAAa6H,EAAMzM,KAAK,OAE1D8H,GAAO,kBAAqBpI,EAAG/Q,KAAKiW,aAAa4H,GAAc,iBAE7D9M,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACT,CAEJ,CACAA,GAAO,QACHO,IACF2B,GAAkB,IAClBlC,GAAO,WAEX,CAEFpI,EAAGzB,UAAYyO,EACf,IAAIxC,EAAiBH,EAAI7X,OACzB,IAAK,IAAIsa,KAAaJ,EAChB/B,EAAO+B,EAAYI,IAClB9M,EAAG9J,KAAK4U,eAAiC,iBAARH,GAAoBjR,OAAOoH,KAAK6J,GAAM9Z,OAAS,IAAe,IAAT8Z,EAAiB3K,EAAG/Q,KAAKqW,eAAeqF,EAAM3K,EAAGrJ,MAAMiM,QAChJwF,GAAO,IAAM,EAAe,iBAAmB,EAAWpI,EAAG/Q,KAAKgW,YAAY6H,GAAc,kBACxFF,IACFxE,GAAO,4CAA8C,EAAU,MAAUpI,EAAG/Q,KAAKiW,aAAa4H,GAAc,OAE9G1E,GAAO,OACPiC,EAAIja,OAASua,EACbN,EAAIhM,WAAaoK,EAAczI,EAAG/Q,KAAKgW,YAAY6H,GACnDzC,EAAI/L,cAAgBoK,EAAiB,IAAM1I,EAAG/Q,KAAK0S,eAAemL,GAClE1E,GAAO,KAAQpI,EAAG1Q,SAAS+a,GAAQ,IACnCA,EAAI7X,OAASgY,EACbpC,GAAO,OACHO,IACFP,GAAO,QAAU,EAAe,OAChCkC,GAAkB,MAOxB,OAHI3B,IACFP,GAAO,MAAQ,EAAmB,QAAU,EAAU,iBAEjDA,CACT,0BCtKAlZ,EAAOC,QAAU,SAAuB6Q,EAAIiI,EAAUC,GACpD,IAAIE,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzBjR,EAAQ,QAAU4Q,GAAY,IAC9BwC,EAAS,QAAU1C,EACnBQ,EAAU7I,EAAG9J,KAAKyB,OAASpG,GAAWA,EAAQoG,MAE9CkR,IACFT,GAAO,cAAgB,EAAS,MAASpI,EAAG/Q,KAAKiX,QAAQ3U,EAAQoG,MAAO4Q,EAAUvI,EAAG8I,aAAgB,MAKvG,IAAI8B,EAAK,IAAMvC,EACboF,EAAW,SAAWpF,EACnBQ,IACHT,GAAO,QAAU,EAAa,qBAAuB,EAAgB,KAEvEA,GAAO,OAAS,EAAW,IACvBS,IACFT,GAAO,cAAgB,EAAS,mBAAqB,EAAW,0CAA4C,EAAS,MAAQ,EAAW,oBAE1IA,GAAY,EAAW,qBAAuB,EAAO,OAAS,EAAO,IAAM,EAAa,YAAc,EAAO,iBAAmB,EAAU,KAAO,EAAa,IAAM,EAAO,SAAW,EAAW,oBAC7LS,IACFT,GAAO,SAETA,GAAO,SAAW,EAAW,SAC7B,IAAIkB,EAAaA,GAAc,GAC/BA,EAAWnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,qDAAwEpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,qCAAuC,EAAS,OACrL,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,+DAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EAgBZ,OAfAA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,KACHO,IACFP,GAAO,YAEFA,CACT,0BChEAlZ,EAAOC,QAAU,SAAyB6Q,EAAIiI,EAAUC,GACtD,IAAIE,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzBjR,EAAQ,QAAU4Q,GAAY,IAClC,IAAuB,IAAnBvI,EAAG9J,KAAK3C,OAIV,OAHIoV,IACFP,GAAO,iBAEFA,EAET,IACED,EADEU,EAAU7I,EAAG9J,KAAKyB,OAASpG,GAAWA,EAAQoG,MAE9CkR,GACFT,GAAO,cAAgB,EAAS,MAASpI,EAAG/Q,KAAKiX,QAAQ3U,EAAQoG,MAAO4Q,EAAUvI,EAAG8I,aAAgB,KACrGX,EAAe,SAAWE,GAE1BF,EAAe5W,EAEjB,IAAImc,EAAkB1N,EAAG9J,KAAKyX,eAC5BC,EAAgBld,MAAMC,QAAQ+c,GAChC,GAAI7E,EAIFT,GAAO,SAHHyF,EAAU,SAAWxF,GAGI,cAAgB,EAAiB,WAF5DyF,EAAY,WAAazF,GAE6D,aAAe,EAAY,qBAAyB,EAAY,0BAA4B,EAAY,mBAD9L0F,EAAc,aAAe1F,GACqM,MAAQ,EAAc,OAAS,EAAY,0BAA8B,EAAc,OACvTrI,EAAG+H,QACLK,GAAO,aAAe,EAAS,MAAQ,EAAY,YAErDA,GAAO,IAAM,EAAY,MAAQ,EAAY,sBACzCS,IACFT,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,KACgB,UAAnBsF,IACFtF,GAAO,KAAO,EAAiB,QAAU,EAAY,IACjDwF,IACFxF,GAAO,yCAA2C,EAAiB,YAErEA,GAAO,SAETA,GAAO,KAAO,EAAY,OAAS,EAAgB,QAAW,EAAc,iBAAoB,EAAY,oBACxGpI,EAAG+H,MACLK,GAAO,UAAY,EAAS,YAAc,EAAY,IAAM,EAAU,OAAS,EAAY,IAAM,EAAU,MAE3GA,GAAO,IAAM,EAAY,IAAM,EAAU,KAE3CA,GAAO,MAAQ,EAAY,SAAW,EAAU,cAC3C,CACL,IAAIyF,EACJ,KADIA,EAAU7N,EAAGlR,QAAQyC,IACX,CACZ,GAAuB,UAAnBmc,EAKF,OAJA1N,EAAGnO,OAAOC,KAAK,mBAAqBP,EAAU,gCAAkCyO,EAAG1B,cAAgB,KAC/FqK,IACFP,GAAO,iBAEFA,EACF,GAAIwF,GAAiBF,EAAgBM,QAAQzc,IAAY,EAI9D,OAHIoX,IACFP,GAAO,iBAEFA,EAEP,MAAM,IAAIxY,MAAM,mBAAqB2B,EAAU,gCAAkCyO,EAAG1B,cAAgB,IAExG,CACA,IAAIwP,EACAC,GADAD,EAA8B,iBAAXD,KAAyBA,aAAmBhb,SAAWgb,EAAQve,WACvDue,EAAQ7V,MAAQ,SAC/C,GAAI8V,EAAW,CACb,IAAI7d,GAA2B,IAAlB4d,EAAQ9F,MACrB8F,EAAUA,EAAQve,QACpB,CACA,GAAIye,GAAe7F,EAIjB,OAHIS,IACFP,GAAO,iBAEFA,EAET,GAAInY,EAAQ,CACV,IAAK+P,EAAG+H,MAAO,MAAM,IAAInY,MAAM,+BAE/BwY,GAAO,iBADH6F,EAAa,UAAYjO,EAAG/Q,KAAKgW,YAAY1T,GAAW,aACpB,IAAM,EAAU,QAC1D,KAAO,CACL6W,GAAO,UACP,IAAI6F,EAAa,UAAYjO,EAAG/Q,KAAKgW,YAAY1T,GAC7Cuc,IAAWG,GAAc,aAE3B7F,GADoB,mBAAXyF,EACF,IAAM,EAAe,IAAM,EAAU,KAErC,IAAM,EAAe,SAAW,EAAU,KAEnDzF,GAAO,MACT,CACF,CACA,IAAIkB,EAAaA,GAAc,GAC/BA,EAAWnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,uDAA0EpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,yBAE9JN,GADES,EACK,GAAK,EAEL,GAAM7I,EAAG/Q,KAAK+N,eAAezL,GAEtC6W,GAAO,QACkB,IAArBpI,EAAG9J,KAAK4T,WACV1B,GAAO,sCAELA,GADES,EACK,OAAU,EAAiB,OAE3B,GAAM7I,EAAG/Q,KAAKiW,aAAa3T,GAEpC6W,GAAO,QAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,eAELA,GADES,EACK,kBAAoB,EAEpB,GAAM7I,EAAG/Q,KAAK+N,eAAezL,GAEtC6W,GAAO,2CAA8CpI,EAAa,WAAI,YAAc,EAAU,KAEhGoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EAgBZ,OAfAA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,MACHO,IACFP,GAAO,YAEFA,CACT,0BCpJAlZ,EAAOC,QAAU,SAAqB6Q,EAAIiI,EAAUC,GAClD,IAAIE,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzBjR,EAAQ,QAAU4Q,GAAY,IAC9BwC,EAAS,QAAU1C,EACnB2C,EAAQ,SAAW3C,EACnBgC,EAAMrK,EAAG/Q,KAAKkH,KAAK6J,GACvBqK,EAAI/B,QACJ,IAAIiC,EAAa,QAAUF,EAAI/B,MAC3B4F,EAAWlO,EAAG5P,OAAa,KAC7B+d,EAAWnO,EAAG5P,OAAa,KAC3Bge,OAA4B9d,IAAb4d,IAA2BlO,EAAG9J,KAAK4U,eAAqC,iBAAZoD,GAAwBxU,OAAOoH,KAAKoN,GAAUrd,OAAS,IAAmB,IAAbqd,EAAqBlO,EAAG/Q,KAAKqW,eAAe4I,EAAUlO,EAAGrJ,MAAMiM,MACvMyL,OAA4B/d,IAAb6d,IAA2BnO,EAAG9J,KAAK4U,eAAqC,iBAAZqD,GAAwBzU,OAAOoH,KAAKqN,GAAUtd,OAAS,IAAmB,IAAbsd,EAAqBnO,EAAG/Q,KAAKqW,eAAe6I,EAAUnO,EAAGrJ,MAAMiM,MACvM4H,EAAiBH,EAAI7X,OACvB,GAAI4b,GAAgBC,EAAc,CAChC,IAAIC,EACJjE,EAAIR,cAAe,EACnBQ,EAAIja,OAASmB,EACb8Y,EAAIhM,WAAaoK,EACjB4B,EAAI/L,cAAgBoK,EACpBN,GAAO,QAAU,EAAU,kBAAoB,EAAW,aAC1D,IAAI8C,EAAgBlL,EAAGkK,cACvBlK,EAAGkK,cAAgBG,EAAIH,eAAgB,EACvC9B,GAAO,KAAQpI,EAAG1Q,SAAS+a,GAAQ,IACnCA,EAAI7X,OAASgY,EACbH,EAAIR,cAAe,EACnBzB,GAAO,cAAgB,EAAU,iCAAmC,EAAU,sBAAwB,EAAU,6BAChHpI,EAAGkK,cAAgBG,EAAIH,cAAgBgB,EACnCkD,GACFhG,GAAO,QAAU,EAAe,QAChCiC,EAAIja,OAAS4P,EAAG5P,OAAa,KAC7Bia,EAAIhM,WAAa2B,EAAG3B,WAAa,QACjCgM,EAAI/L,cAAgB0B,EAAG1B,cAAgB,QACvC8J,GAAO,KAAQpI,EAAG1Q,SAAS+a,GAAQ,IACnCA,EAAI7X,OAASgY,EACbpC,GAAO,IAAM,EAAW,MAAQ,EAAe,KAC3CgG,GAAgBC,EAElBjG,GAAO,SADPkG,EAAY,WAAajG,GACM,cAE/BiG,EAAY,SAEdlG,GAAO,MACHiG,IACFjG,GAAO,aAGTA,GAAO,SAAW,EAAe,OAE/BiG,IACFhE,EAAIja,OAAS4P,EAAG5P,OAAa,KAC7Bia,EAAIhM,WAAa2B,EAAG3B,WAAa,QACjCgM,EAAI/L,cAAgB0B,EAAG1B,cAAgB,QACvC8J,GAAO,KAAQpI,EAAG1Q,SAAS+a,GAAQ,IACnCA,EAAI7X,OAASgY,EACbpC,GAAO,IAAM,EAAW,MAAQ,EAAe,KAC3CgG,GAAgBC,EAElBjG,GAAO,SADPkG,EAAY,WAAajG,GACM,cAE/BiG,EAAY,SAEdlG,GAAO,OAETA,GAAO,SAAW,EAAW,sBACL,IAApBpI,EAAG6J,cACLzB,GAAO,mDAAsEpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,gCAAkC,EAAc,OACnL,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,mCAAsC,EAAc,mBAEzDpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACFpI,EAAGkK,eAAiBvB,IAEnB3I,EAAG+H,MACLK,GAAO,wCAEPA,GAAO,8CAGXA,GAAO,QACHO,IACFP,GAAO,WAEX,MACMO,IACFP,GAAO,iBAGX,OAAOA,CACT,gCCnGAlZ,EAAOC,QAAU,CACf,KAAQ,EAAQ,OAChBof,MAAO,EAAQ,OACfjH,MAAO,EAAQ,OACf,SAAY,EAAQ,OACpBU,MAAO,EAAQ,OACfwG,SAAU,EAAQ,MAClBrO,aAAc,EAAQ,OACtB,KAAQ,EAAQ,OAChB5M,OAAQ,EAAQ,OAChB,GAAM,EAAQ,OACdsU,MAAO,EAAQ,OACf4G,QAAS,EAAQ,OACjBC,QAAS,EAAQ,OACjBC,SAAU,EAAQ,OAClBC,SAAU,EAAQ,OAClBC,UAAW,EAAQ,OACnBC,UAAW,EAAQ,OACnBC,cAAe,EAAQ,OACvBC,cAAe,EAAQ,OACvBC,WAAY,EAAQ,OACpBvH,IAAK,EAAQ,OACbwH,MAAO,EAAQ,OACfC,QAAS,EAAQ,OACjBvH,WAAY,EAAQ,OACpBwH,cAAe,EAAQ,OACvBzH,SAAU,EAAQ,OAClB0H,YAAa,EAAQ,MACrB/f,SAAU,EAAQ,gCC9BpBJ,EAAOC,QAAU,SAAwB6Q,EAAIiI,EAAUC,GACrD,IAAIE,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzBjR,EAAQ,QAAU4Q,GAAY,IAC9BwC,EAAS,QAAU1C,EACnB2C,EAAQ,SAAW3C,EACnBgC,EAAMrK,EAAG/Q,KAAKkH,KAAK6J,GACnBsK,EAAiB,GACrBD,EAAI/B,QACJ,IAAIiC,EAAa,QAAUF,EAAI/B,MAC3B6C,EAAO,IAAM9C,EACf+C,EAAWf,EAAI7B,UAAYxI,EAAGwI,UAAY,EAC1C6C,EAAY,OAASD,EACrBZ,EAAiBxK,EAAGxN,OAEtB,GADA4V,GAAO,OAAS,EAAU,iBAAmB,EAAW,IACpD1X,MAAMC,QAAQY,GAAU,CAC1B,IAAI+d,EAAmBtP,EAAG5P,OAAOmf,gBACjC,IAAyB,IAArBD,EAA4B,CAC9BlH,GAAO,IAAM,EAAW,MAAQ,EAAU,cAAiB7W,EAAc,OAAI,KAC7E,IAAIie,EAAqB9G,EACzBA,EAAiB1I,EAAG1B,cAAgB,mBACpC8J,GAAO,UAAY,EAAW,SAC9B,IAAIkB,EAAaA,GAAc,GAC/BA,EAAWnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,gEAAmFpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,uBAA0BnX,EAAc,OAAI,OAC5L,IAArByO,EAAG9J,KAAK4T,WACV1B,GAAO,0CAA8C7W,EAAc,OAAI,YAErEyO,EAAG9J,KAAK6T,UACV3B,GAAO,mDAAsDpI,EAAa,WAAI,YAAc,EAAU,KAExGoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EACZA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,MACPM,EAAiB8G,EACb7G,IACF2B,GAAkB,IAClBlC,GAAO,WAEX,CACA,IAAIsC,EAAOnZ,EACX,GAAImZ,EAGF,IAFA,IAAIC,EAAMC,GAAM,EACdC,EAAKH,EAAK7Z,OAAS,EACd+Z,EAAKC,GAEV,GADAF,EAAOD,EAAKE,GAAM,GACb5K,EAAG9J,KAAK4U,eAAiC,iBAARH,GAAoBjR,OAAOoH,KAAK6J,GAAM9Z,OAAS,IAAe,IAAT8Z,EAAiB3K,EAAG/Q,KAAKqW,eAAeqF,EAAM3K,EAAGrJ,MAAMiM,KAAO,CACvJwF,GAAO,IAAM,EAAe,gBAAkB,EAAU,aAAe,EAAO,OAC9E,IAAImD,EAAY5T,EAAQ,IAAMiT,EAAK,IACnCP,EAAIja,OAASua,EACbN,EAAIhM,WAAaoK,EAAc,IAAMmC,EAAK,IAC1CP,EAAI/L,cAAgBoK,EAAiB,IAAMkC,EAC3CP,EAAI9L,UAAYyB,EAAG/Q,KAAKyW,YAAY1F,EAAGzB,UAAWqM,EAAI5K,EAAG9J,KAAK0P,cAAc,GAC5EyE,EAAIvB,YAAYsC,GAAYR,EAC5B,IAAIY,EAAQxL,EAAG1Q,SAAS+a,GACxBA,EAAI7X,OAASgY,EACTxK,EAAG/Q,KAAKkW,cAAcqG,EAAOH,GAAa,EAC5CjD,GAAO,IAAOpI,EAAG/Q,KAAKmW,WAAWoG,EAAOH,EAAWE,GAAc,IAEjEnD,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAExEA,GAAO,OACHO,IACFP,GAAO,QAAU,EAAe,OAChCkC,GAAkB,IAEtB,CAG2B,iBAApBgF,IAAiCtP,EAAG9J,KAAK4U,eAA6C,iBAApBwE,GAAgC5V,OAAOoH,KAAKwO,GAAkBze,OAAS,IAA2B,IAArBye,EAA6BtP,EAAG/Q,KAAKqW,eAAegK,EAAkBtP,EAAGrJ,MAAMiM,QACvOyH,EAAIja,OAASkf,EACbjF,EAAIhM,WAAa2B,EAAG3B,WAAa,mBACjCgM,EAAI/L,cAAgB0B,EAAG1B,cAAgB,mBACvC8J,GAAO,IAAM,EAAe,gBAAkB,EAAU,aAAgB7W,EAAc,OAAI,iBAAmB,EAAS,MAASA,EAAc,OAAI,KAAO,EAAS,MAAQ,EAAU,YAAc,EAAS,SAC1M8Y,EAAI9L,UAAYyB,EAAG/Q,KAAKyW,YAAY1F,EAAGzB,UAAW4M,EAAMnL,EAAG9J,KAAK0P,cAAc,GAC1E2F,EAAY5T,EAAQ,IAAMwT,EAAO,IACrCd,EAAIvB,YAAYsC,GAAYD,EACxBK,EAAQxL,EAAG1Q,SAAS+a,GACxBA,EAAI7X,OAASgY,EACTxK,EAAG/Q,KAAKkW,cAAcqG,EAAOH,GAAa,EAC5CjD,GAAO,IAAOpI,EAAG/Q,KAAKmW,WAAWoG,EAAOH,EAAWE,GAAc,IAEjEnD,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAEpEO,IACFP,GAAO,SAAW,EAAe,aAEnCA,GAAO,SACHO,IACFP,GAAO,QAAU,EAAe,OAChCkC,GAAkB,KAGxB,MAAYtK,EAAG9J,KAAK4U,eAAoC,iBAAXvZ,GAAuBmI,OAAOoH,KAAKvP,GAASV,OAAS,IAAkB,IAAZU,EAAoByO,EAAG/Q,KAAKqW,eAAe/T,EAASyO,EAAGrJ,MAAMiM,QACnKyH,EAAIja,OAASmB,EACb8Y,EAAIhM,WAAaoK,EACjB4B,EAAI/L,cAAgBoK,EACpBN,GAAO,cAAgB,EAAhB,SAA8C,EAAS,MAAQ,EAAU,YAAc,EAAS,SACvGiC,EAAI9L,UAAYyB,EAAG/Q,KAAKyW,YAAY1F,EAAGzB,UAAW4M,EAAMnL,EAAG9J,KAAK0P,cAAc,GAC1E2F,EAAY5T,EAAQ,IAAMwT,EAAO,IACrCd,EAAIvB,YAAYsC,GAAYD,EACxBK,EAAQxL,EAAG1Q,SAAS+a,GACxBA,EAAI7X,OAASgY,EACTxK,EAAG/Q,KAAKkW,cAAcqG,EAAOH,GAAa,EAC5CjD,GAAO,IAAOpI,EAAG/Q,KAAKmW,WAAWoG,EAAOH,EAAWE,GAAc,IAEjEnD,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAEpEO,IACFP,GAAO,SAAW,EAAe,aAEnCA,GAAO,MAKT,OAHIO,IACFP,GAAO,IAAM,EAAmB,QAAU,EAAU,iBAE/CA,CACT,0BC1IAlZ,EAAOC,QAAU,SAA6B6Q,EAAIiI,EAAUC,GAC1D,IASEC,EATEC,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzBjR,EAAQ,QAAU4Q,GAAY,IAC9BM,EAAU7I,EAAG9J,KAAKyB,OAASpG,GAAWA,EAAQoG,MAQlD,GANIkR,GACFT,GAAO,cAAgB,EAAS,MAASpI,EAAG/Q,KAAKiX,QAAQ3U,EAAQoG,MAAO4Q,EAAUvI,EAAG8I,aAAgB,KACrGX,EAAe,SAAWE,GAE1BF,EAAe5W,GAEXsX,GAA6B,iBAAXtX,EACtB,MAAM,IAAI3B,MAAMqY,EAAW,mBAE7BG,GAAO,eAAiB,EAAS,QAC7BS,IACFT,GAAO,IAAM,EAAiB,8BAAgC,EAAiB,oBAEjFA,GAAO,aAAe,EAAS,MAAQ,EAAU,MAAQ,EAAiB,KACtEpI,EAAG9J,KAAKuZ,oBACVrH,GAAO,gCAAkC,EAAS,eAAiB,EAAS,UAAapI,EAAG9J,KAAwB,oBAAI,IAExHkS,GAAO,YAAc,EAAS,yBAA2B,EAAS,KAEpEA,GAAO,MACHS,IACFT,GAAO,SAETA,GAAO,UACP,IAAIkB,EAAaA,GAAc,GAC/BA,EAAWnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,2DAA8EpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,4BAA8B,EAAiB,OAC1L,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,sCAELA,GADES,EACK,OAAU,EAEL,EAAiB,KAG7B7I,EAAG9J,KAAK6T,UACV3B,GAAO,eAELA,GADES,EACK,kBAAoB,EAEpB,GAAK,EAEdT,GAAO,2CAA8CpI,EAAa,WAAI,YAAc,EAAU,KAEhGoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EAgBZ,OAfAA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,KACHO,IACFP,GAAO,YAEFA,CACT,0BC9EAlZ,EAAOC,QAAU,SAAsB6Q,EAAIiI,EAAUC,GACnD,IAAIE,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzBjR,EAAQ,QAAU4Q,GAAY,IAC9ByC,EAAQ,SAAW3C,EACnBgC,EAAMrK,EAAG/Q,KAAKkH,KAAK6J,GACvBqK,EAAI/B,QACJ,IAAIiC,EAAa,QAAUF,EAAI/B,MAC/B,GAAKtI,EAAG9J,KAAK4U,eAAoC,iBAAXvZ,GAAuBmI,OAAOoH,KAAKvP,GAASV,OAAS,IAAkB,IAAZU,EAAoByO,EAAG/Q,KAAKqW,eAAe/T,EAASyO,EAAGrJ,MAAMiM,KAAO,CACnKyH,EAAIja,OAASmB,EACb8Y,EAAIhM,WAAaoK,EACjB4B,EAAI/L,cAAgBoK,EACpBN,GAAO,QAAU,EAAU,eAC3B,IAGIsH,EAHAxE,EAAgBlL,EAAGkK,cACvBlK,EAAGkK,cAAgBG,EAAIH,eAAgB,EACvCG,EAAIR,cAAe,EAEfQ,EAAInU,KAAK0S,YACX8G,EAAmBrF,EAAInU,KAAK0S,UAC5ByB,EAAInU,KAAK0S,WAAY,GAEvBR,GAAO,IAAOpI,EAAG1Q,SAAS+a,GAAQ,IAClCA,EAAIR,cAAe,EACf6F,IAAkBrF,EAAInU,KAAK0S,UAAY8G,GAC3C1P,EAAGkK,cAAgBG,EAAIH,cAAgBgB,EACvC9C,GAAO,QAAU,EAAe,SAChC,IAAIkB,EAAaA,GAAc,GAC/BA,EAAWnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,oDAAuEpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,kBACpI,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,sCAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EACZA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,uBAAyB,EAAU,iCAAmC,EAAU,sBAAwB,EAAU,4BACrHpI,EAAG9J,KAAK0S,YACVR,GAAO,MAEX,MACEA,GAAO,kBACiB,IAApBpI,EAAG6J,cACLzB,GAAO,oDAAuEpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,kBACpI,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,sCAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAETA,GAAO,+EACHO,IACFP,GAAO,kBAGX,OAAOA,CACT,0BClFAlZ,EAAOC,QAAU,SAAwB6Q,EAAIiI,EAAUC,GACrD,IAAIE,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzBjR,EAAQ,QAAU4Q,GAAY,IAC9BwC,EAAS,QAAU1C,EACnB2C,EAAQ,SAAW3C,EACnBgC,EAAMrK,EAAG/Q,KAAKkH,KAAK6J,GACnBsK,EAAiB,GACrBD,EAAI/B,QACJ,IAAIiC,EAAa,QAAUF,EAAI/B,MAC3BkC,EAAiBH,EAAI7X,OACvBmd,EAAa,YAActH,EAC3BuH,EAAkB,iBAAmBvH,EACvCD,GAAO,OAAS,EAAU,eAAiB,EAAe,cAAgB,EAAW,cAAgB,EAAoB,YACzH,IAAI8C,EAAgBlL,EAAGkK,cACvBlK,EAAGkK,cAAgBG,EAAIH,eAAgB,EACvC,IAAIQ,EAAOnZ,EACX,GAAImZ,EAGF,IAFA,IAAIC,EAAMC,GAAM,EACdC,EAAKH,EAAK7Z,OAAS,EACd+Z,EAAKC,GACVF,EAAOD,EAAKE,GAAM,IACb5K,EAAG9J,KAAK4U,eAAiC,iBAARH,GAAoBjR,OAAOoH,KAAK6J,GAAM9Z,OAAS,IAAe,IAAT8Z,EAAiB3K,EAAG/Q,KAAKqW,eAAeqF,EAAM3K,EAAGrJ,MAAMiM,OAChJyH,EAAIja,OAASua,EACbN,EAAIhM,WAAaoK,EAAc,IAAMmC,EAAK,IAC1CP,EAAI/L,cAAgBoK,EAAiB,IAAMkC,EAC3CxC,GAAO,KAAQpI,EAAG1Q,SAAS+a,GAAQ,IACnCA,EAAI7X,OAASgY,GAEbpC,GAAO,QAAU,EAAe,YAE9BwC,IACFxC,GAAO,QAAU,EAAe,OAAS,EAAe,OAAS,EAAW,aAAe,EAAoB,OAAS,EAAoB,KAAO,EAAO,eAC1JkC,GAAkB,KAEpBlC,GAAO,QAAU,EAAe,OAAS,EAAW,MAAQ,EAAe,YAAc,EAAoB,MAAQ,EAAO,MA8BhI,OA3BApI,EAAGkK,cAAgBG,EAAIH,cAAgBgB,EACvC9C,GAAY,EAAmB,QAAU,EAAW,sBAC5B,IAApBpI,EAAG6J,cACLzB,GAAO,sDAAyEpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,gCAAkC,EAAoB,OAC5L,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,2DAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACFpI,EAAGkK,eAAiBvB,IAEnB3I,EAAG+H,MACLK,GAAO,wCAEPA,GAAO,8CAGXA,GAAO,sBAAwB,EAAU,iCAAmC,EAAU,sBAAwB,EAAU,2BACpHpI,EAAG9J,KAAK0S,YACVR,GAAO,OAEFA,CACT,0BCvEAlZ,EAAOC,QAAU,SAA0B6Q,EAAIiI,EAAUC,GACvD,IASEC,EATEC,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzBjR,EAAQ,QAAU4Q,GAAY,IAC9BM,EAAU7I,EAAG9J,KAAKyB,OAASpG,GAAWA,EAAQoG,MAE9CkR,GACFT,GAAO,cAAgB,EAAS,MAASpI,EAAG/Q,KAAKiX,QAAQ3U,EAAQoG,MAAO4Q,EAAUvI,EAAG8I,aAAgB,KACrGX,EAAe,SAAWE,GAE1BF,EAAe5W,EAGjB6W,GAAO,QACHS,IACFT,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,MALOS,EAAU,eAAiBV,EAAe,KAAOnI,EAAGvB,WAAWlN,IAKnD,SAAW,EAAU,WAC/C,IAAI+X,EAAaA,GAAc,GAC/BA,EAAWnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,wDAA2EpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,0BAE/JN,GADES,EACK,GAAK,EAEL,GAAM7I,EAAG/Q,KAAK+N,eAAezL,GAEtC6W,GAAO,QACkB,IAArBpI,EAAG9J,KAAK4T,WACV1B,GAAO,uCAELA,GADES,EACK,OAAU,EAAiB,OAE3B,GAAM7I,EAAG/Q,KAAKiW,aAAa3T,GAEpC6W,GAAO,QAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,eAELA,GADES,EACK,kBAAoB,EAEpB,GAAM7I,EAAG/Q,KAAK+N,eAAezL,GAEtC6W,GAAO,2CAA8CpI,EAAa,WAAI,YAAc,EAAU,KAEhGoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EAgBZ,OAfAA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,KACHO,IACFP,GAAO,YAEFA,CACT,0BCzEAlZ,EAAOC,QAAU,SAA6B6Q,EAAIiI,EAAUC,GAC1D,IAAIE,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzBjR,EAAQ,QAAU4Q,GAAY,IAC9ByC,EAAQ,SAAW3C,EACnBgC,EAAMrK,EAAG/Q,KAAKkH,KAAK6J,GACnBsK,EAAiB,GACrBD,EAAI/B,QACJ,IAAIiC,EAAa,QAAUF,EAAI/B,MAC3BuH,EAAO,MAAQxH,EACjB8C,EAAO,MAAQ9C,EACf+C,EAAWf,EAAI7B,UAAYxI,EAAGwI,UAAY,EAC1C6C,EAAY,OAASD,EACrB0E,EAAkB,iBAAmBzH,EACnC0H,EAAcrW,OAAOoH,KAAKvP,GAAW,CAAC,GAAGye,OAAOC,GAClDC,EAAelQ,EAAG5P,OAAO+f,mBAAqB,CAAC,EAC/CC,EAAiB1W,OAAOoH,KAAKoP,GAAcF,OAAOC,GAClDI,EAAerQ,EAAG5P,OAAOkgB,qBACzBC,EAAkBR,EAAYlf,QAAUuf,EAAevf,OACvD2f,GAAiC,IAAjBH,EAChBI,EAA6C,iBAAhBJ,GAA4B3W,OAAOoH,KAAKuP,GAAcxf,OACnF6f,EAAoB1Q,EAAG9J,KAAKya,iBAC5BC,EAAmBJ,GAAiBC,GAAuBC,EAC3D9D,EAAiB5M,EAAG9J,KAAK2W,cACzBrC,EAAiBxK,EAAGxN,OAClBqe,EAAY7Q,EAAG5P,OAAOuX,SAC1B,GAAIkJ,KAAe7Q,EAAG9J,KAAKyB,QAASkZ,EAAUlZ,QAAUkZ,EAAUhgB,OAASmP,EAAG9J,KAAKc,aACjF,IAAI8Z,EAAgB9Q,EAAG/Q,KAAK4S,OAAOgP,GAGrC,SAASZ,EAASxX,GAChB,MAAa,cAANA,CACT,CAKA,GAJA2P,GAAO,OAAS,EAAU,iBAAmB,EAAe,WACxDwE,IACFxE,GAAO,QAAU,EAAoB,iBAEnCwI,EAAkB,CAMpB,GAJExI,GADEwE,EACK,IAAM,EAAoB,MAAQ,EAAoB,mBAAqB,EAAU,eAAiB,EAAS,OAAS,EAAS,IAAM,EAAoB,YAAc,EAAS,aAAe,EAAS,MAAQ,EAAoB,IAAM,EAAS,MAErP,aAAe,EAAS,OAAS,EAAU,OAEhD2D,EAAiB,CAEnB,GADAnI,GAAO,oBAAsB,EAAS,cAClC2H,EAAYlf,OACd,GAAIkf,EAAYlf,OAAS,EACvBuX,GAAO,sBAAwB,EAAgB,mBAAqB,EAAS,SACxE,CACL,IAAIsC,EAAOqF,EACX,GAAIrF,EAGF,IAFA,IAAkBqG,GAAM,EACtBlG,EAAKH,EAAK7Z,OAAS,EACdkgB,EAAKlG,GACVoC,EAAevC,EAAKqG,GAAM,GAC1B3I,GAAO,OAAS,EAAS,OAAUpI,EAAG/Q,KAAK+N,eAAeiQ,GAAiB,GAGjF,CAEF,GAAImD,EAAevf,OAAQ,CACzB,IAAIyc,EAAO8C,EACX,GAAI9C,EAGF,IAFA,IAAgB1C,GAAM,EACpB4C,EAAKF,EAAKzc,OAAS,EACd+Z,EAAK4C,GACVwD,GAAa1D,EAAK1C,GAAM,GACxBxC,GAAO,OAAUpI,EAAGvB,WAAWuS,IAAe,SAAW,EAAS,IAGxE,CACA5I,GAAO,uBAAyB,EAAS,MAC3C,CACA,GAAyB,OAArBsI,EACFtI,GAAO,WAAa,EAAU,IAAM,EAAS,UACxC,CACL,IAAI4E,EAAoBhN,EAAGzB,UACvB0S,EAAsB,OAAUpB,EAAO,OAI3C,GAHI7P,EAAG9J,KAAKiB,yBACV6I,EAAGzB,UAAYyB,EAAG/Q,KAAKyW,YAAY1F,EAAGzB,UAAWsR,EAAM7P,EAAG9J,KAAK0P,eAE7D4K,EACF,GAAIE,EACFtI,GAAO,WAAa,EAAU,IAAM,EAAS,UACxC,CACLA,GAAO,IAAM,EAAe,aAC5B,IAAIoH,EAAqB9G,EACzBA,EAAiB1I,EAAG1B,cAAgB,yBAChCgL,GAAaA,IAAc,IACpBnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,qEAAwFpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,qCAAwC,EAAwB,QACrN,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,gBACHpI,EAAG9J,KAAKiB,uBACViR,GAAO,oCAEPA,GAAO,wCAETA,GAAO,MAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,mDAAsDpI,EAAa,WAAI,YAAc,EAAU,KAExGoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EACZA,EAAMkB,GAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCM,EAAiB8G,EACb7G,IACFP,GAAO,WAEX,MACK,GAAIqI,EACT,GAAyB,WAArBC,EAAgC,CAClCtI,GAAO,QAAU,EAAU,eAC3B,IAAI8C,EAAgBlL,EAAGkK,cACvBlK,EAAGkK,cAAgBG,EAAIH,eAAgB,EACvCG,EAAIja,OAASigB,EACbhG,EAAIhM,WAAa2B,EAAG3B,WAAa,wBACjCgM,EAAI/L,cAAgB0B,EAAG1B,cAAgB,wBACvC+L,EAAI9L,UAAYyB,EAAG9J,KAAKiB,uBAAyB6I,EAAGzB,UAAYyB,EAAG/Q,KAAKyW,YAAY1F,EAAGzB,UAAWsR,EAAM7P,EAAG9J,KAAK0P,cAChH,IAAI2F,EAAY5T,EAAQ,IAAMkY,EAAO,IACrCxF,EAAIvB,YAAYsC,GAAYyE,EAC5B,IAAIrE,EAAQxL,EAAG1Q,SAAS+a,GACxBA,EAAI7X,OAASgY,EACTxK,EAAG/Q,KAAKkW,cAAcqG,EAAOH,GAAa,EAC5CjD,GAAO,IAAOpI,EAAG/Q,KAAKmW,WAAWoG,EAAOH,EAAWE,GAAc,IAEjEnD,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAExEA,GAAO,SAAW,EAAe,gBAAkB,EAAU,wHAA0H,EAAU,IAAM,EAAS,SAChNpI,EAAGkK,cAAgBG,EAAIH,cAAgBgB,CACzC,MACEb,EAAIja,OAASigB,EACbhG,EAAIhM,WAAa2B,EAAG3B,WAAa,wBACjCgM,EAAI/L,cAAgB0B,EAAG1B,cAAgB,wBACvC+L,EAAI9L,UAAYyB,EAAG9J,KAAKiB,uBAAyB6I,EAAGzB,UAAYyB,EAAG/Q,KAAKyW,YAAY1F,EAAGzB,UAAWsR,EAAM7P,EAAG9J,KAAK0P,cAC5G2F,EAAY5T,EAAQ,IAAMkY,EAAO,IACrCxF,EAAIvB,YAAYsC,GAAYyE,EACxBrE,EAAQxL,EAAG1Q,SAAS+a,GACxBA,EAAI7X,OAASgY,EACTxK,EAAG/Q,KAAKkW,cAAcqG,EAAOH,GAAa,EAC5CjD,GAAO,IAAOpI,EAAG/Q,KAAKmW,WAAWoG,EAAOH,EAAWE,GAAc,IAEjEnD,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAEpEO,IACFP,GAAO,SAAW,EAAe,aAIvCpI,EAAGzB,UAAYyO,CACjB,CACIuD,IACFnI,GAAO,OAETA,GAAO,OACHO,IACFP,GAAO,QAAU,EAAe,OAChCkC,GAAkB,IAEtB,CACA,IAAI4G,EAAelR,EAAG9J,KAAKib,cAAgBnR,EAAGkK,cAC9C,GAAI6F,EAAYlf,OAAQ,CACtB,IAAIugB,EAAOrB,EACX,GAAIqB,EAGF,IAFA,IAAInE,EAAcoE,GAAM,EACtBC,EAAKF,EAAKvgB,OAAS,EACdwgB,EAAKC,GAAI,CAEd,IAAI3G,EAAOpZ,EADX0b,EAAemE,EAAKC,GAAM,IAE1B,GAAKrR,EAAG9J,KAAK4U,eAAiC,iBAARH,GAAoBjR,OAAOoH,KAAK6J,GAAM9Z,OAAS,IAAe,IAAT8Z,EAAiB3K,EAAG/Q,KAAKqW,eAAeqF,EAAM3K,EAAGrJ,MAAMiM,KAAO,CACvJ,IAAIuK,EAAQnN,EAAG/Q,KAAKgW,YAAYgI,GAE9BsE,IADAhG,EAAY5T,EAAQwV,EACN+D,QAAiC5gB,IAAjBqa,EAAK6G,SAQrC,GAPAnH,EAAIja,OAASua,EACbN,EAAIhM,WAAaoK,EAAc0E,EAC/B9C,EAAI/L,cAAgBoK,EAAiB,IAAM1I,EAAG/Q,KAAK0S,eAAesL,GAClE5C,EAAI9L,UAAYyB,EAAG/Q,KAAK8W,QAAQ/F,EAAGzB,UAAW0O,EAAcjN,EAAG9J,KAAK0P,cACpEyE,EAAIvB,YAAYsC,GAAYpL,EAAG/Q,KAAK+N,eAAeiQ,GAC/CzB,EAAQxL,EAAG1Q,SAAS+a,GACxBA,EAAI7X,OAASgY,EACTxK,EAAG/Q,KAAKkW,cAAcqG,EAAOH,GAAa,EAAG,CAC/CG,EAAQxL,EAAG/Q,KAAKmW,WAAWoG,EAAOH,EAAWE,GAC7C,IAAI2B,GAAW3B,CACjB,MACM2B,GAAW7B,EACfjD,GAAO,QAAU,EAAc,MAAQ,EAAc,KAEvD,GAAImJ,GACFnJ,GAAO,IAAM,EAAU,QAClB,CACL,GAAI0I,GAAiBA,EAAc7D,GAAe,CAChD7E,GAAO,SAAW,GAAa,kBAC3BwE,IACFxE,GAAO,8CAAgD,EAAU,MAAUpI,EAAG/Q,KAAKiW,aAAa+H,GAAiB,OAEnH7E,GAAO,OAAS,EAAe,aAC3B4E,EAAoBhN,EAAGzB,UACzBiR,EAAqB9G,EADvB,IAOIY,GALF+D,GAAmBrN,EAAG/Q,KAAKiW,aAAa+H,GACtCjN,EAAG9J,KAAKiB,yBACV6I,EAAGzB,UAAYyB,EAAG/Q,KAAK8W,QAAQiH,EAAmBC,EAAcjN,EAAG9J,KAAK0P,eAE1E8C,EAAiB1I,EAAG1B,cAAgB,aAChCgL,GAAaA,IAAc,IACpBnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,yDAA4EpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,kCAAqC,GAAqB,QACnM,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,gBACHpI,EAAG9J,KAAKiB,uBACViR,GAAO,yBAEPA,GAAO,oCAAuC,GAAqB,MAErEA,GAAO,MAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAEL4B,EAAQ5B,EACZA,EAAMkB,GAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCM,EAAiB8G,EACjBxP,EAAGzB,UAAYyO,EACf5E,GAAO,YACT,MACMO,GACFP,GAAO,SAAW,GAAa,kBAC3BwE,IACFxE,GAAO,8CAAgD,EAAU,MAAUpI,EAAG/Q,KAAKiW,aAAa+H,GAAiB,OAEnH7E,GAAO,OAAS,EAAe,uBAE/BA,GAAO,QAAU,GAAa,kBAC1BwE,IACFxE,GAAO,8CAAgD,EAAU,MAAUpI,EAAG/Q,KAAKiW,aAAa+H,GAAiB,OAEnH7E,GAAO,SAGXA,GAAO,IAAM,EAAU,KACzB,CACF,CACIO,IACFP,GAAO,QAAU,EAAe,OAChCkC,GAAkB,IAEtB,CAEJ,CACA,GAAI8F,EAAevf,OAAQ,CACzB,IAAI4gB,GAAOrB,EACX,GAAIqB,GAGF,IAFA,IAAIT,GAAYU,IAAM,EACpBC,GAAKF,GAAK5gB,OAAS,EACd6gB,GAAKC,IAENhH,EAAOuF,EADXc,GAAaS,GAAKC,IAAM,KAEnB1R,EAAG9J,KAAK4U,eAAiC,iBAARH,GAAoBjR,OAAOoH,KAAK6J,GAAM9Z,OAAS,IAAe,IAAT8Z,EAAiB3K,EAAG/Q,KAAKqW,eAAeqF,EAAM3K,EAAGrJ,MAAMiM,QAChJyH,EAAIja,OAASua,EACbN,EAAIhM,WAAa2B,EAAG3B,WAAa,qBAAuB2B,EAAG/Q,KAAKgW,YAAY+L,IAC5E3G,EAAI/L,cAAgB0B,EAAG1B,cAAgB,sBAAwB0B,EAAG/Q,KAAK0S,eAAeqP,IAEpF5I,GADEwE,EACK,IAAM,EAAoB,MAAQ,EAAoB,mBAAqB,EAAU,eAAiB,EAAS,OAAS,EAAS,IAAM,EAAoB,YAAc,EAAS,aAAe,EAAS,MAAQ,EAAoB,IAAM,EAAS,MAErP,aAAe,EAAS,OAAS,EAAU,OAEpDxE,GAAO,QAAWpI,EAAGvB,WAAWuS,IAAe,SAAW,EAAS,QACnE3G,EAAI9L,UAAYyB,EAAG/Q,KAAKyW,YAAY1F,EAAGzB,UAAWsR,EAAM7P,EAAG9J,KAAK0P,cAC5D2F,EAAY5T,EAAQ,IAAMkY,EAAO,IACrCxF,EAAIvB,YAAYsC,GAAYyE,EACxBrE,EAAQxL,EAAG1Q,SAAS+a,GACxBA,EAAI7X,OAASgY,EACTxK,EAAG/Q,KAAKkW,cAAcqG,EAAOH,GAAa,EAC5CjD,GAAO,IAAOpI,EAAG/Q,KAAKmW,WAAWoG,EAAOH,EAAWE,GAAc,IAEjEnD,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAEpEO,IACFP,GAAO,SAAW,EAAe,aAEnCA,GAAO,MACHO,IACFP,GAAO,SAAW,EAAe,aAEnCA,GAAO,OACHO,IACFP,GAAO,QAAU,EAAe,OAChCkC,GAAkB,KAK5B,CAIA,OAHI3B,IACFP,GAAO,IAAM,EAAmB,QAAU,EAAU,iBAE/CA,CACT,0BC7UAlZ,EAAOC,QAAU,SAAgC6Q,EAAIiI,EAAUC,GAC7D,IAAIE,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzBjR,EAAQ,QAAU4Q,GAAY,IAC9ByC,EAAQ,SAAW3C,EACnBgC,EAAMrK,EAAG/Q,KAAKkH,KAAK6J,GAEvBqK,EAAI/B,QACJ,IAAIiC,EAAa,QAAUF,EAAI/B,MAE/B,GADAF,GAAO,OAAS,EAAU,aACrBpI,EAAG9J,KAAK4U,eAAoC,iBAAXvZ,GAAuBmI,OAAOoH,KAAKvP,GAASV,OAAS,IAAkB,IAAZU,EAAoByO,EAAG/Q,KAAKqW,eAAe/T,EAASyO,EAAGrJ,MAAMiM,KAAO,CACnKyH,EAAIja,OAASmB,EACb8Y,EAAIhM,WAAaoK,EACjB4B,EAAI/L,cAAgBoK,EACpB,IAAImH,EAAO,MAAQxH,EACjB8C,EAAO,MAAQ9C,EACfuC,EAAK,IAAMvC,EACXuJ,EAAe,OAAU/B,EAAO,OAEhCxE,EAAY,QADDhB,EAAI7B,UAAYxI,EAAGwI,UAAY,GAE1CsH,EAAkB,iBAAmBzH,EACrCuE,EAAiB5M,EAAG9J,KAAK2W,cACzBrC,EAAiBxK,EAAGxN,OAClBoa,IACFxE,GAAO,QAAU,EAAoB,kBAGrCA,GADEwE,EACK,IAAM,EAAoB,MAAQ,EAAoB,mBAAqB,EAAU,eAAiB,EAAS,OAAS,EAAS,IAAM,EAAoB,YAAc,EAAS,aAAe,EAAS,MAAQ,EAAoB,IAAM,EAAS,MAErP,aAAe,EAAS,OAAS,EAAU,OAEpDxE,GAAO,iBAAmB,EAAS,cACnC,IAAImD,EAAYsE,EACZ3E,EAAgBlL,EAAGkK,cACvBlK,EAAGkK,cAAgBG,EAAIH,eAAgB,EACvC,IAAIsB,EAAQxL,EAAG1Q,SAAS+a,GACxBA,EAAI7X,OAASgY,EACTxK,EAAG/Q,KAAKkW,cAAcqG,EAAOH,GAAa,EAC5CjD,GAAO,IAAOpI,EAAG/Q,KAAKmW,WAAWoG,EAAOH,EAAWE,GAAc,IAEjEnD,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAExEpI,EAAGkK,cAAgBG,EAAIH,cAAgBgB,EACvC9C,GAAO,SAAW,EAAe,gBAAkB,EAAO,aAAe,EAAS,KAAO,EAAO,YAAc,EAAO,iBAAmB,EAAO,oBAAsB,EAAS,sBACtJ,IAApBpI,EAAG6J,cACLzB,GAAO,8DAAiFpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,+BAAkC,EAAiB,QACjM,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,iCAAqC,EAAiB,oBAE3DpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACFpI,EAAGkK,eAAiBvB,IAEnB3I,EAAG+H,MACLK,GAAO,wCAEPA,GAAO,8CAGPO,IACFP,GAAO,YAETA,GAAO,MACT,CAIA,OAHIO,IACFP,GAAO,SAAmC,EAAU,iBAE/CA,CACT,0BC/EAlZ,EAAOC,QAAU,SAAsB6Q,EAAIiI,EAAUC,GACnD,IAQIjY,EAAQ4hB,EARRzJ,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzBjR,EAAQ,QAAU4Q,GAAY,IAC9BwC,EAAS,QAAU1C,EAEvB,GAAe,KAAX9W,GAA6B,MAAXA,EAChByO,EAAG7B,QACLlO,EAAS+P,EAAG+H,MACZ8J,EAAW,aAEX5hB,GAAmC,IAA1B+P,EAAGzN,KAAKnC,OAAOH,OACxB4hB,EAAW,sBAER,CACL,IAAIC,EAAU9R,EAAGxB,WAAWwB,EAAGxN,OAAQjB,EAASyO,EAAG7B,QACnD,QAAgB7N,IAAZwhB,EAAuB,CACzB,IAAIC,EAAW/R,EAAGlK,gBAAgB/D,QAAQiO,EAAGxN,OAAQjB,GACrD,GAA2B,QAAvByO,EAAG9J,KAAK8b,YAAuB,CACjChS,EAAGnO,OAAOI,MAAM8f,IACZzI,EAAaA,GAAc,IACpBnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,qDAAwEpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,sBAA0B1I,EAAG/Q,KAAKiW,aAAa3T,GAAY,QAChM,IAArByO,EAAG9J,KAAK4T,WACV1B,GAAO,0CAA+CpI,EAAG/Q,KAAKiW,aAAa3T,GAAY,MAErFyO,EAAG9J,KAAK6T,UACV3B,GAAO,cAAiBpI,EAAG/Q,KAAK+N,eAAezL,GAAY,mCAAsCyO,EAAa,WAAI,YAAc,EAAU,KAE5IoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EACZA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAE/BO,IACFP,GAAO,iBAEX,KAAO,IAA2B,UAAvBpI,EAAG9J,KAAK8b,YAMjB,MAAM,IAAIhS,EAAGlK,gBAAgBkK,EAAGxN,OAAQjB,EAASwgB,GALjD/R,EAAGnO,OAAOC,KAAKigB,GACXpJ,IACFP,GAAO,gBAIX,CACF,MAAO,GAAI0J,EAAQnS,OAAQ,CACzB,IAAI0K,EAAMrK,EAAG/Q,KAAKkH,KAAK6J,GACvBqK,EAAI/B,QACJ,IAAIiC,EAAa,QAAUF,EAAI/B,MAC/B+B,EAAIja,OAAS0hB,EAAQ1hB,OACrBia,EAAIhM,WAAa,GACjBgM,EAAI/L,cAAgB/M,EAEpB6W,GAAO,IADKpI,EAAG1Q,SAAS+a,GAAK5H,QAAQ,oBAAqBqP,EAAQvU,MAC3C,IACnBoL,IACFP,GAAO,QAAU,EAAe,OAEpC,MACEnY,GAA4B,IAAnB6hB,EAAQ7hB,QAAoB+P,EAAG+H,QAA4B,IAAnB+J,EAAQ7hB,OACzD4hB,EAAWC,EAAQvU,IAEvB,CACA,GAAIsU,EAAU,CACZ,IAAIvI,KAAaA,GAAc,IACpBnG,KAAKiF,GAChBA,EAAM,GACFpI,EAAG9J,KAAKmW,YACVjE,GAAO,IAAM,EAAa,eAE1BA,GAAO,IAAM,EAAa,KAE5BA,GAAO,IAAM,EAAU,qBACH,MAAhBpI,EAAGzB,YACL6J,GAAO,MAASpI,EAAY,WAK9B,IAAIiS,EADJ7J,GAAO,OAFWG,EAAW,QAAWA,EAAW,GAAM,IAAM,cAEhC,OADPA,EAAWvI,EAAG8I,YAAYP,GAAY,sBACC,gBAG/D,GADAH,EAAMkB,EAAWW,MACbha,EAAQ,CACV,IAAK+P,EAAG+H,MAAO,MAAM,IAAInY,MAAM,0CAC3B+Y,IACFP,GAAO,QAAU,EAAW,MAE9BA,GAAO,gBAAkB,EAAmB,KACxCO,IACFP,GAAO,IAAM,EAAW,aAE1BA,GAAO,4KACHO,IACFP,GAAO,IAAM,EAAW,cAE1BA,GAAO,MACHO,IACFP,GAAO,QAAU,EAAW,OAEhC,MACEA,GAAO,SAAW,EAAmB,uCAAyC,EAAa,0CAA4C,EAAa,wCAChJO,IACFP,GAAO,WAGb,CACA,OAAOA,CACT,0BC1HAlZ,EAAOC,QAAU,SAA2B6Q,EAAIiI,EAAUC,GACxD,IAAIE,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzBjR,EAAQ,QAAU4Q,GAAY,IAC9BwC,EAAS,QAAU1C,EACnBQ,EAAU7I,EAAG9J,KAAKyB,OAASpG,GAAWA,EAAQoG,MAE9CkR,IACFT,GAAO,cAAgB,EAAS,MAASpI,EAAG/Q,KAAKiX,QAAQ3U,EAAQoG,MAAO4Q,EAAUvI,EAAG8I,aAAgB,MAKvG,IAAI2E,EAAW,SAAWpF,EAC1B,IAAKQ,EACH,GAAItX,EAAQV,OAASmP,EAAG9J,KAAKc,cAAgBgJ,EAAG5P,OAAOwX,YAAclO,OAAOoH,KAAKd,EAAG5P,OAAOwX,YAAY/W,OAAQ,CAC7G,IAAIggB,EAAY,GACZnG,EAAOnZ,EACX,GAAImZ,EAGF,IAFA,IAAIoC,EAAWiE,GAAM,EACnBlG,EAAKH,EAAK7Z,OAAS,EACdkgB,EAAKlG,GAAI,CACdiC,EAAYpC,EAAKqG,GAAM,GACvB,IAAImB,EAAelS,EAAG5P,OAAOwX,WAAWkF,GAClCoF,IAAiBlS,EAAG9J,KAAK4U,eAAyC,iBAAhBoH,GAA4BxY,OAAOoH,KAAKoR,GAAcrhB,OAAS,IAAuB,IAAjBqhB,EAAyBlS,EAAG/Q,KAAKqW,eAAe4M,EAAclS,EAAGrJ,MAAMiM,QAClMiO,EAAUA,EAAUhgB,QAAUic,EAElC,CAEJ,MACM+D,EAAYtf,EAGpB,GAAIsX,GAAWgI,EAAUhgB,OAAQ,CAC/B,IAAImc,EAAoBhN,EAAGzB,UACzB4T,EAAgBtJ,GAAWgI,EAAUhgB,QAAUmP,EAAG9J,KAAKc,aACvD4V,EAAiB5M,EAAG9J,KAAK2W,cAC3B,GAAIlE,EAEF,GADAP,GAAO,eAAiB,EAAS,KAC7B+J,EAAe,CACZtJ,IACHT,GAAO,QAAU,EAAa,qBAAuB,EAAgB,MAEvE,IAEEiF,EAAmB,QADnBD,EAAgB,SAAW/E,EAAO,KADhCuC,EAAK,IAAMvC,GACgC,KACA,OAC3CrI,EAAG9J,KAAKiB,yBACV6I,EAAGzB,UAAYyB,EAAG/Q,KAAKyW,YAAYsH,EAAmBI,EAAepN,EAAG9J,KAAK0P,eAE/EwC,GAAO,QAAU,EAAW,YACxBS,IACFT,GAAO,cAAgB,EAAS,mBAAqB,EAAW,0CAA4C,EAAS,MAAQ,EAAW,oBAE1IA,GAAO,aAAe,EAAO,SAAW,EAAO,MAAQ,EAAa,YAAc,EAAO,SAAW,EAAW,MAAQ,EAAU,IAAM,EAAa,IAAM,EAAO,oBAC7JwE,IACFxE,GAAO,8CAAgD,EAAU,KAAO,EAAa,IAAM,EAAO,OAEpGA,GAAO,UAAY,EAAW,cAC1BS,IACFT,GAAO,SAETA,GAAO,UAAY,EAAW,UAC1BkB,EAAaA,GAAc,IACpBnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,yDAA4EpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,kCAAqC,EAAqB,QACnM,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,gBACHpI,EAAG9J,KAAKiB,uBACViR,GAAO,yBAEPA,GAAO,oCAAuC,EAAqB,MAErEA,GAAO,MAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EACZA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,YACT,KAAO,CACLA,GAAO,SACP,IAwBIkB,EAxBAgE,EAAOuD,EACX,GAAIvD,EAGF,IAFA,IAAkB1C,GAAM,EACtB4C,EAAKF,EAAKzc,OAAS,EACd+Z,EAAK4C,GACVP,EAAeK,EAAK1C,GAAM,GACtBA,IACFxC,GAAO,QAITA,GAAO,SADL8E,EAAWvV,GADTwV,EAAQnN,EAAG/Q,KAAKgW,YAAYgI,KAEF,kBAC1BL,IACFxE,GAAO,8CAAgD,EAAU,MAAUpI,EAAG/Q,KAAKiW,aAAa+H,GAAiB,OAEnH7E,GAAO,gBAAkB,EAAS,MAASpI,EAAG/Q,KAAK+N,eAAegD,EAAG9J,KAAK0P,aAAeqH,EAAeE,GAAU,OAGtH/E,GAAO,QAELiF,EAAmB,QADjBD,EAAgB,UAAY/E,GACe,OAC3CrI,EAAG9J,KAAKiB,yBACV6I,EAAGzB,UAAYyB,EAAG9J,KAAK0P,aAAe5F,EAAG/Q,KAAKyW,YAAYsH,EAAmBI,GAAe,GAAQJ,EAAoB,MAAQI,IAE9H9D,EAAaA,GAAc,IACpBnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,yDAA4EpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,kCAAqC,EAAqB,QACnM,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,gBACHpI,EAAG9J,KAAKiB,uBACViR,GAAO,yBAEPA,GAAO,oCAAuC,EAAqB,MAErEA,GAAO,MAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAEL4B,EAAQ5B,EACZA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,YACT,MAEA,GAAI+J,EAAe,CAIjB,IACE/E,EAJGvE,IACHT,GAAO,QAAU,EAAa,qBAAuB,EAAgB,MAIrEiF,EAAmB,QADnBD,EAAgB,SAAW/E,EAAO,KADhCuC,EAAK,IAAMvC,GACgC,KACA,OAC3CrI,EAAG9J,KAAKiB,yBACV6I,EAAGzB,UAAYyB,EAAG/Q,KAAKyW,YAAYsH,EAAmBI,EAAepN,EAAG9J,KAAK0P,eAE3EiD,IACFT,GAAO,QAAU,EAAa,sBAAwB,EAAa,sBAC3C,IAApBpI,EAAG6J,cACLzB,GAAO,yDAA4EpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,kCAAqC,EAAqB,QACnM,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,gBACHpI,EAAG9J,KAAKiB,uBACViR,GAAO,yBAEPA,GAAO,oCAAuC,EAAqB,MAErEA,GAAO,MAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAETA,GAAO,0FAA4F,EAAa,sBAElHA,GAAO,aAAe,EAAO,SAAW,EAAO,MAAQ,EAAa,YAAc,EAAO,aAAe,EAAU,IAAM,EAAa,IAAM,EAAO,oBAC9IwE,IACFxE,GAAO,8CAAgD,EAAU,KAAO,EAAa,IAAM,EAAO,OAEpGA,GAAO,qBACiB,IAApBpI,EAAG6J,cACLzB,GAAO,yDAA4EpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,kCAAqC,EAAqB,QACnM,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,gBACHpI,EAAG9J,KAAKiB,uBACViR,GAAO,yBAEPA,GAAO,oCAAuC,EAAqB,MAErEA,GAAO,MAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAETA,GAAO,mFACHS,IACFT,GAAO,QAEX,KAAO,CACL,IAAIgJ,EAAOP,EACX,GAAIO,EAGF,IAFA,IAAInE,EAAcoE,GAAM,EACtBC,EAAKF,EAAKvgB,OAAS,EACdwgB,EAAKC,GAAI,CACdrE,EAAemE,EAAKC,GAAM,GAC1B,IAAIlE,EAAQnN,EAAG/Q,KAAKgW,YAAYgI,GAE9BC,GADAG,EAAmBrN,EAAG/Q,KAAKiW,aAAa+H,GAC7BtV,EAAQwV,GACjBnN,EAAG9J,KAAKiB,yBACV6I,EAAGzB,UAAYyB,EAAG/Q,KAAK8W,QAAQiH,EAAmBC,EAAcjN,EAAG9J,KAAK0P,eAE1EwC,GAAO,SAAW,EAAa,kBAC3BwE,IACFxE,GAAO,8CAAgD,EAAU,MAAUpI,EAAG/Q,KAAKiW,aAAa+H,GAAiB,OAEnH7E,GAAO,qBACiB,IAApBpI,EAAG6J,cACLzB,GAAO,yDAA4EpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,kCAAqC,EAAqB,QACnM,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,gBACHpI,EAAG9J,KAAKiB,uBACViR,GAAO,yBAEPA,GAAO,oCAAuC,EAAqB,MAErEA,GAAO,MAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACT,CAEJ,CAEFpI,EAAGzB,UAAYyO,CACjB,MAAWrE,IACTP,GAAO,gBAET,OAAOA,CACT,yBC5QAlZ,EAAOC,QAAU,SAA8B6Q,EAAIiI,EAAUC,GAC3D,IAUEC,EAVEC,EAAM,IACNC,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UACzBjR,EAAQ,QAAU4Q,GAAY,IAC9BwC,EAAS,QAAU1C,EACnBQ,EAAU7I,EAAG9J,KAAKyB,OAASpG,GAAWA,EAAQoG,MAQlD,GANIkR,GACFT,GAAO,cAAgB,EAAS,MAASpI,EAAG/Q,KAAKiX,QAAQ3U,EAAQoG,MAAO4Q,EAAUvI,EAAG8I,aAAgB,KACrGX,EAAe,SAAWE,GAE1BF,EAAe5W,GAEZA,GAAWsX,KAAoC,IAAxB7I,EAAG9J,KAAKmZ,YAAuB,CACrDxG,IACFT,GAAO,QAAU,EAAW,SAAW,EAAiB,iBAAmB,EAAiB,mBAAqB,EAAW,4BAA8B,EAAiB,kBAAsB,EAAW,qBAE9MA,GAAO,YAAc,EAAU,aAAe,EAAW,6BACzD,IAAIgK,EAAYpS,EAAG5P,OAAOyX,OAAS7H,EAAG5P,OAAOyX,MAAM7P,KACjDqa,EAAe3hB,MAAMC,QAAQyhB,GAC/B,IAAKA,GAA0B,UAAbA,GAAsC,SAAbA,GAAyBC,IAAiBD,EAAUpE,QAAQ,WAAa,GAAKoE,EAAUpE,QAAQ,UAAY,GACrJ5F,GAAO,uDAAyD,EAAU,QAAU,EAAU,WAAa,EAAW,oCACjH,CACLA,GAAO,yDAA2D,EAAU,QAC5E,IAAIkK,EAAU,iBAAmBD,EAAe,IAAM,IACtDjK,GAAO,QAAWpI,EAAG/Q,KAAKqjB,GAASF,EAAW,OAAQpS,EAAG9J,KAAK4N,eAAe,GAAS,eAClFuO,IACFjK,GAAO,sDAETA,GAAO,gDAAoD,EAAW,qEACxE,CACAA,GAAO,MACHS,IACFT,GAAO,SAETA,GAAO,SAAW,EAAW,SAC7B,IAAIkB,EAAaA,GAAc,GAC/BA,EAAWnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,4DAA+EpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,8BAC5I,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,mGAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,eAELA,GADES,EACK,kBAAoB,EAEpB,GAAK,EAEdT,GAAO,2CAA8CpI,EAAa,WAAI,YAAc,EAAU,KAEhGoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EACZA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,MACHO,IACFP,GAAO,WAEX,MACMO,IACFP,GAAO,iBAGX,OAAOA,CACT,0BCpFAlZ,EAAOC,QAAU,SAA2B6Q,EAAIiI,EAAUC,GACxD,IAAIE,EAAM,GACNnY,GAA8B,IAArB+P,EAAG5P,OAAOH,OACrBsiB,EAAevS,EAAG/Q,KAAKsW,qBAAqBvF,EAAG5P,OAAQ4P,EAAGrJ,MAAMiM,IAAK,QACrEhL,EAAMoI,EAAGtO,KAAKX,OAAOiP,EAAG5P,QAC1B,GAAI4P,EAAG9J,KAAK4U,eAAgB,CAC1B,IAAI0H,EAAcxS,EAAG/Q,KAAKwW,mBAAmBzF,EAAG5P,OAAQ4P,EAAGrJ,MAAMY,UACjE,GAAIib,EAAa,CACf,IAAIC,EAAe,oBAAsBD,EACzC,GAA+B,QAA3BxS,EAAG9J,KAAK4U,eACP,MAAM,IAAIlb,MAAM6iB,GADiBzS,EAAGnO,OAAOC,KAAK2gB,EAEvD,CACF,CAYA,GAXIzS,EAAG5B,QACLgK,GAAO,mBACHnY,IACF+P,EAAG+H,OAAQ,EACXK,GAAO,UAETA,GAAO,sFACHxQ,IAAQoI,EAAG9J,KAAK6H,YAAciC,EAAG9J,KAAK0I,eACxCwJ,GAAO,kBAA2BxQ,EAA3B,SAGa,kBAAboI,EAAG5P,SAAyBmiB,IAAgBvS,EAAG5P,OAAO0I,KAAO,CAClEmP,EAAW,eAAf,IACII,EAAOrI,EAAGsI,MACVC,EAAWvI,EAAGwI,UACdjX,EAAUyO,EAAG5P,OAAO6X,GACpBQ,EAAczI,EAAG3B,WAAa2B,EAAG/Q,KAAKgW,YAAYgD,GAClDS,EAAiB1I,EAAG1B,cAAgB,IAAM2J,EAC1CU,GAAiB3I,EAAG9J,KAAK0S,UAEzBjR,EAAQ,QAAU4Q,GAAY,IAC9BwC,EAAS,QAAU1C,EACvB,IAAkB,IAAdrI,EAAG5P,OAAkB,CACnB4P,EAAG5B,MACLuK,GAAgB,EAEhBP,GAAO,QAAU,EAAW,cAE1BkB,EAAaA,GAAc,IACpBnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,6DAAiGpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,kBAC9J,IAArB1I,EAAG9J,KAAK4T,WACV1B,GAAO,0CAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,mDAAsDpI,EAAa,WAAI,YAAc,EAAU,KAExGoI,GAAO,OAEPA,GAAO,OAET,IAAI4B,EAAQ5B,EACZA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,8EAErC,MACMpI,EAAG5B,MAEHgK,GADEnY,EACK,iBAEA,yCAGTmY,GAAO,QAAU,EAAW,YAMhC,OAHIpI,EAAG5B,QACLgK,GAAO,yBAEFA,CACT,CACA,GAAIpI,EAAG5B,MAAO,CACZ,IAAIsU,EAAO1S,EAAG5B,MAQd,GAPEiK,EAAOrI,EAAGsI,MAAQ,EAClBC,EAAWvI,EAAGwI,UAAY,EAC1B7Q,EAAQ,OACVqI,EAAG2S,OAAS3S,EAAGtR,QAAQ6K,SAASyG,EAAGtO,KAAKX,OAAOiP,EAAGzN,KAAKnC,SACvD4P,EAAGxN,OAASwN,EAAGxN,QAAUwN,EAAG2S,cACrB3S,EAAG5B,MACV4B,EAAG8I,YAAc,CAAC,SACQxY,IAAtB0P,EAAG5P,OAAOohB,SAAyBxR,EAAG9J,KAAKib,aAAenR,EAAG9J,KAAK0c,eAAgB,CACpF,IAAIC,EAAc,wCAClB,GAA+B,QAA3B7S,EAAG9J,KAAK0c,eACP,MAAM,IAAIhjB,MAAMijB,GADiB7S,EAAGnO,OAAOC,KAAK+gB,EAEvD,CACAzK,GAAO,wBACPA,GAAO,wBACPA,GAAO,gDACT,KAAO,CAKL,GAJIC,EAAOrI,EAAGsI,MAEZ3Q,EAAQ,SADR4Q,EAAWvI,EAAGwI,YACgB,IAC5B5Q,IAAKoI,EAAGxN,OAASwN,EAAGtR,QAAQ4K,IAAI0G,EAAGxN,OAAQoF,IAC3C3H,IAAW+P,EAAG+H,MAAO,MAAM,IAAInY,MAAM,+BACzCwY,GAAO,aAAe,EAAS,YACjC,CACI2C,EAAS,QAAU1C,EACrBM,GAAiB3I,EAAG9J,KAAK0S,UAD3B,IAEEkK,EAAkB,GAClBC,EAAkB,GAEhBC,EAAchT,EAAG5P,OAAO4H,KAC1Bqa,EAAe3hB,MAAMC,QAAQqiB,GAa/B,GAZIA,GAAehT,EAAG9J,KAAK6B,WAAmC,IAAvBiI,EAAG5P,OAAO2H,WAC3Csa,GACkC,GAAhCW,EAAYhF,QAAQ,UAAegF,EAAcA,EAAY1P,OAAO,SAChD,QAAf0P,IACTA,EAAc,CAACA,EAAa,QAC5BX,GAAe,IAGfA,GAAsC,GAAtBW,EAAYniB,SAC9BmiB,EAAcA,EAAY,GAC1BX,GAAe,GAEbrS,EAAG5P,OAAO0I,MAAQyZ,EAAc,CAClC,GAA0B,QAAtBvS,EAAG9J,KAAK+c,WACV,MAAM,IAAIrjB,MAAM,qDAAuDoQ,EAAG1B,cAAgB,8BAC1D,IAAvB0B,EAAG9J,KAAK+c,aACjBV,GAAe,EACfvS,EAAGnO,OAAOC,KAAK,6CAA+CkO,EAAG1B,cAAgB,KAErF,CAIA,GAHI0B,EAAG5P,OAAOiT,UAAYrD,EAAG9J,KAAKmN,WAChC+E,GAAO,IAAOpI,EAAGrJ,MAAMiM,IAAIS,SAAS9F,KAAKyC,EAAI,aAE3CgT,EAAa,CACf,GAAIhT,EAAG9J,KAAKgd,YACV,IAAIC,EAAiBnT,EAAG/Q,KAAK6V,cAAc9E,EAAG9J,KAAKgd,YAAaF,GAElE,IAAII,EAAcpT,EAAGrJ,MAAMkM,MAAMmQ,GACjC,GAAIG,GAAkBd,IAAgC,IAAhBe,GAAyBA,IAAgBC,EAAgBD,GAAe,CACxG3K,EAAczI,EAAG3B,WAAa,QAChCqK,EAAiB1I,EAAG1B,cAAgB,QAClCmK,EAAczI,EAAG3B,WAAa,QAChCqK,EAAiB1I,EAAG1B,cAAgB,QAHtC,IAIEgU,EAAUD,EAAe,iBAAmB,gBAE9C,GADAjK,GAAO,QAAWpI,EAAG/Q,KAAKqjB,GAASU,EAAarb,EAAOqI,EAAG9J,KAAK4N,eAAe,GAAS,OACnFqP,EAAgB,CAClB,IAAIG,EAAY,WAAajL,EAC3BkL,EAAW,UAAYlL,EACzBD,GAAO,QAAU,EAAc,aAAe,EAAU,SAAW,EAAa,iBACrD,SAAvBpI,EAAG9J,KAAKgd,cACV9K,GAAO,QAAU,EAAc,iCAAqC,EAAU,QAAU,EAAU,mBAAqB,EAAU,MAAQ,EAAU,QAAU,EAAc,aAAe,EAAU,SAAYpI,EAAG/Q,KAAK2U,cAAc5D,EAAG5P,OAAO4H,KAAML,EAAOqI,EAAG9J,KAAK4N,eAAkB,KAAO,EAAa,MAAQ,EAAU,QAE/TsE,GAAO,QAAU,EAAa,qBAC9B,IAAIsC,EAAOyI,EACX,GAAIzI,EAGF,IAFA,IAAI8I,EAAO5I,GAAM,EACfC,EAAKH,EAAK7Z,OAAS,EACd+Z,EAAKC,GAEG,WADb2I,EAAQ9I,EAAKE,GAAM,IAEjBxC,GAAO,aAAe,EAAc,mBAAuB,EAAc,kBAAsB,EAAa,WAAe,EAAU,cAAgB,EAAU,cAAgB,EAAa,UAC1K,UAAToL,GAA8B,WAATA,GAC9BpL,GAAO,aAAe,EAAc,oBAAwB,EAAU,iBAAmB,EAAc,mBAAuB,EAAU,OAAS,EAAU,QAAU,EAAU,IAClK,WAAToL,IACFpL,GAAO,SAAW,EAAU,SAE9BA,GAAO,MAAQ,EAAa,OAAS,EAAU,MAC7B,WAAToL,EACTpL,GAAO,aAAe,EAAU,mBAAuB,EAAU,aAAe,EAAU,cAAgB,EAAa,sBAAwB,EAAU,kBAAsB,EAAU,WAAa,EAAa,YACjM,QAAToL,EACTpL,GAAO,aAAe,EAAU,cAAkB,EAAU,aAAe,EAAU,eAAiB,EAAa,YACnF,SAAvBpI,EAAG9J,KAAKgd,aAAmC,SAATM,IAC3CpL,GAAO,aAAe,EAAc,mBAAuB,EAAc,mBAAuB,EAAc,oBAAwB,EAAU,aAAe,EAAa,OAAS,EAAU,OAIrMA,GAAO,cACHkB,EAAaA,GAAc,IACpBnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,qDAAyFpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,uBAE7KN,GADEiK,EACK,GAAMW,EAAY1S,KAAK,KAEvB,GAAK,EAEd8H,GAAO,QACkB,IAArBpI,EAAG9J,KAAK4T,WACV1B,GAAO,0BAELA,GADEiK,EACK,GAAMW,EAAY1S,KAAK,KAEvB,GAAK,EAEd8H,GAAO,MAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAEL4B,EAAQ5B,EACZA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,UAAY,EAAa,sBAChC,IAAIkE,EAAc/D,EAAW,QAAWA,EAAW,GAAM,IAAM,aAE/DH,GAAO,IAAM,EAAU,MAAQ,EAAa,KACvCG,IACHH,GAAO,OAAS,EAAgB,mBAElCA,GAAO,IAAM,EAAgB,KALLG,EAAWvI,EAAG8I,YAAYP,GAAY,sBAKH,OAAS,EAAa,MACnF,MACMe,EAAaA,GAAc,IACpBnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,qDAAyFpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,uBAE7KN,GADEiK,EACK,GAAMW,EAAY1S,KAAK,KAEvB,GAAK,EAEd8H,GAAO,QACkB,IAArBpI,EAAG9J,KAAK4T,WACV1B,GAAO,0BAELA,GADEiK,EACK,GAAMW,EAAY1S,KAAK,KAEvB,GAAK,EAEd8H,GAAO,MAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAEL4B,EAAQ5B,EACZA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAGrCA,GAAO,KACT,CACF,CACA,GAAIpI,EAAG5P,OAAO0I,OAASyZ,EACrBnK,GAAO,IAAOpI,EAAGrJ,MAAMiM,IAAI9J,KAAKyE,KAAKyC,EAAI,QAAW,IAChD2I,IACFP,GAAO,qBAELA,GADEsK,EACK,IAEA,QAAU,EAEnBtK,GAAO,OACP2K,GAAmB,SAEhB,CACL,IAAIzF,EAAOtN,EAAGrJ,MACd,GAAI2W,EAGF,IAFA,IAAiBC,GAAM,EACrBC,EAAKF,EAAKzc,OAAS,EACd0c,EAAKC,GAEV,GAAI6F,EADJD,EAAc9F,EAAKC,GAAM,IACS,CAIhC,GAHI6F,EAAYpb,OACdoQ,GAAO,QAAWpI,EAAG/Q,KAAK2U,cAAcwP,EAAYpb,KAAML,EAAOqI,EAAG9J,KAAK4N,eAAkB,QAEzF9D,EAAG9J,KAAKib,YACV,GAAwB,UAApBiC,EAAYpb,MAAoBgI,EAAG5P,OAAOwX,WAAY,CACpDrW,EAAUyO,EAAG5P,OAAOwX,WAAxB,IAEIwJ,EADY1X,OAAOoH,KAAKvP,GAE5B,GAAI6f,EAGF,IAFA,IAAInE,EAAcoE,GAAM,EACtBC,EAAKF,EAAKvgB,OAAS,EACdwgB,EAAKC,GAGV,QAAqBhhB,KADjBqa,EAAOpZ,EADX0b,EAAemE,EAAKC,GAAM,KAEjBG,QAAuB,CAC9B,IAAIjG,EAAY5T,EAAQqI,EAAG/Q,KAAKgW,YAAYgI,GAC5C,GAAIjN,EAAGkK,eACL,GAAIlK,EAAG9J,KAAK0c,eAAgB,CAE1B,GADIC,EAAc,2BAA6BtH,EAChB,QAA3BvL,EAAG9J,KAAK0c,eACP,MAAM,IAAIhjB,MAAMijB,GADiB7S,EAAGnO,OAAOC,KAAK+gB,EAEvD,OAEAzK,GAAO,QAAU,EAAc,kBACJ,SAAvBpI,EAAG9J,KAAKib,cACV/I,GAAO,OAAS,EAAc,gBAAkB,EAAc,YAEhEA,GAAO,MAAQ,EAAc,MACF,UAAvBpI,EAAG9J,KAAKib,YACV/I,GAAO,IAAOpI,EAAGtB,WAAWiM,EAAK6G,SAAY,IAE7CpJ,GAAO,IAAOjB,KAAKC,UAAUuD,EAAK6G,SAAY,IAEhDpJ,GAAO,IAEX,CAGN,MAAO,GAAwB,SAApBgL,EAAYpb,MAAmBtH,MAAMC,QAAQqP,EAAG5P,OAAOyX,OAAQ,CACxE,IAAI4J,EAAOzR,EAAG5P,OAAOyX,MACrB,GAAI4J,EACF,CAAU7G,GAAM,EAEhB,IAFA,IAAID,EACFgH,EAAKF,EAAK5gB,OAAS,EACd+Z,EAAK+G,GAEV,QAAqBrhB,KADrBqa,EAAO8G,EAAK7G,GAAM,IACT4G,QAEP,GADIjG,EAAY5T,EAAQ,IAAMiT,EAAK,IAC/B5K,EAAGkK,eACL,GAAIlK,EAAG9J,KAAK0c,eAAgB,CAE1B,GADIC,EAAc,2BAA6BtH,EAChB,QAA3BvL,EAAG9J,KAAK0c,eACP,MAAM,IAAIhjB,MAAMijB,GADiB7S,EAAGnO,OAAOC,KAAK+gB,EAEvD,OAEAzK,GAAO,QAAU,EAAc,kBACJ,SAAvBpI,EAAG9J,KAAKib,cACV/I,GAAO,OAAS,EAAc,gBAAkB,EAAc,YAEhEA,GAAO,MAAQ,EAAc,MACF,UAAvBpI,EAAG9J,KAAKib,YACV/I,GAAO,IAAOpI,EAAGtB,WAAWiM,EAAK6G,SAAY,IAE7CpJ,GAAO,IAAOjB,KAAKC,UAAUuD,EAAK6G,SAAY,IAEhDpJ,GAAO,IAtBS,CA2B1B,CAEF,IA2BQkB,EA3BJmK,EAAOL,EAAYrkB,MACvB,GAAI0kB,EAGF,IAFA,IAAI3H,EAAO4H,GAAM,EACfC,EAAKF,EAAK5iB,OAAS,EACd6iB,EAAKC,GAEV,GAAIC,EADJ9H,EAAQ2H,EAAKC,GAAM,IACQ,CACzB,IAAIlI,EAAQM,EAAMvO,KAAKyC,EAAI8L,EAAMtU,QAAS4b,EAAYpb,MAClDwT,IACFpD,GAAO,IAAM,EAAU,IACnBO,IACFmK,GAAmB,KAGzB,CAOJ,GAJInK,IACFP,GAAO,IAAM,EAAoB,IACjC0K,EAAkB,IAEhBM,EAAYpb,OACdoQ,GAAO,MACH4K,GAAeA,IAAgBI,EAAYpb,OAASmb,GACtD/K,GAAO,WACHK,EAAczI,EAAG3B,WAAa,QAChCqK,EAAiB1I,EAAG1B,cAAgB,SAClCgL,EAAaA,GAAc,IACpBnG,KAAKiF,GAChBA,EAAM,IACkB,IAApBpI,EAAG6J,cACLzB,GAAO,qDAAyFpI,EAAY,UAAI,kBAAqBA,EAAG/Q,KAAK+N,eAAe0L,GAAmB,uBAE7KN,GADEiK,EACK,GAAMW,EAAY1S,KAAK,KAEvB,GAAK,EAEd8H,GAAO,QACkB,IAArBpI,EAAG9J,KAAK4T,WACV1B,GAAO,0BAELA,GADEiK,EACK,GAAMW,EAAY1S,KAAK,KAEvB,GAAK,EAEd8H,GAAO,MAELpI,EAAG9J,KAAK6T,UACV3B,GAAO,6BAA+B,EAAgB,mCAAsCpI,EAAa,WAAI,YAAc,EAAU,KAEvIoI,GAAO,OAEPA,GAAO,OAEL4B,EAAQ5B,EACZA,EAAMkB,EAAWW,OACZjK,EAAGkK,eAAiBvB,EAEnB3I,EAAG+H,MACLK,GAAO,+BAAiC,EAAU,OAElDA,GAAO,uBAAyB,EAAU,oBAG5CA,GAAO,cAAgB,EAAU,+EAEnCA,GAAO,MAGPO,IACFP,GAAO,mBAELA,GADEsK,EACK,IAEA,QAAU,EAEnBtK,GAAO,OACP2K,GAAmB,IAEvB,CAGN,CAiBA,SAASM,EAAgBD,GAEvB,IADA,IAAIrkB,EAAQqkB,EAAYrkB,MACf6B,EAAI,EAAGA,EAAI7B,EAAM8B,OAAQD,IAChC,GAAIgjB,EAAe7kB,EAAM6B,IAAK,OAAO,CACzC,CAEA,SAASgjB,EAAe9H,GACtB,YAAoCxb,IAA7B0P,EAAG5P,OAAO0b,EAAMtU,UAA2BsU,EAAM1I,YAG1D,SAAoC0I,GAElC,IADA,IAAI+H,EAAO/H,EAAM1I,WACRxS,EAAI,EAAGA,EAAIijB,EAAKhjB,OAAQD,IAC/B,QAA2BN,IAAvB0P,EAAG5P,OAAOyjB,EAAKjjB,IAAmB,OAAO,CACjD,CAPwEkjB,CAA2BhI,EACnG,CAOA,OA/BInD,IACFP,GAAO,IAAM,EAAoB,KAE/BsK,GACEziB,GACFmY,GAAO,6CACPA,GAAO,+CAEPA,GAAO,+BACPA,GAAO,gCAETA,GAAO,wBAEPA,GAAO,QAAU,EAAW,sBAAwB,EAAS,IAkBxDA,CACT,gCC/dA,IAAIvB,EAAa,yBACb1J,EAAiB,EAAQ,OACzB4W,EAAmB,EAAQ,OAE/B7kB,EAAOC,QAAU,CACfmG,IAcF,SAAoBkC,EAAS0I,GAG3B,IAAIvJ,EAAQjH,KAAKiH,MACjB,GAAIA,EAAMY,SAASC,GACjB,MAAM,IAAI5H,MAAM,WAAa4H,EAAU,uBAEzC,IAAKqP,EAAWxO,KAAKb,GACnB,MAAM,IAAI5H,MAAM,WAAa4H,EAAU,8BAEzC,GAAI0I,EAAY,CACdxQ,KAAKgG,gBAAgBwK,GAAY,GAEjC,IAAI2D,EAAW3D,EAAWlI,KAC1B,GAAItH,MAAMC,QAAQkT,GAChB,IAAK,IAAIjT,EAAE,EAAGA,EAAEiT,EAAShT,OAAQD,IAC/BojB,EAASxc,EAASqM,EAASjT,GAAIsP,QAEjC8T,EAASxc,EAASqM,EAAU3D,GAG9B,IAAIrI,EAAaqI,EAAWrI,WACxBA,IACEqI,EAAWvI,OAASjI,KAAK8B,MAAMmG,QACjCE,EAAa,CACXyP,MAAO,CACLzP,EACA,CAAE,KAAQ,qFAIhBqI,EAAW7O,eAAiB3B,KAAKS,QAAQ0H,GAAY,GAEzD,CAKA,SAASmc,EAASxc,EAASqM,EAAU3D,GAEnC,IADA,IAAI+T,EACKrjB,EAAE,EAAGA,EAAE+F,EAAM9F,OAAQD,IAAK,CACjC,IAAIsjB,EAAKvd,EAAM/F,GACf,GAAIsjB,EAAGlc,MAAQ6L,EAAU,CACvBoQ,EAAYC,EACZ,KACF,CACF,CAEKD,IACHA,EAAY,CAAEjc,KAAM6L,EAAU9U,MAAO,IACrC4H,EAAMwM,KAAK8Q,IAGb,IAAInU,EAAO,CACTtI,QAASA,EACT0I,WAAYA,EACZqD,QAAQ,EACRhG,KAAMJ,EACNiG,WAAYlD,EAAWkD,YAEzB6Q,EAAUllB,MAAMoU,KAAKrD,GACrBnJ,EAAM4M,OAAO/L,GAAWsI,CAC1B,CAEA,OA7BAnJ,EAAMY,SAASC,GAAWb,EAAMiM,IAAIpL,IAAW,EA6BxC9H,IACT,EA9EEwE,IAuFF,SAAoBsD,GAElB,IAAIsI,EAAOpQ,KAAKiH,MAAM4M,OAAO/L,GAC7B,OAAOsI,EAAOA,EAAKI,WAAaxQ,KAAKiH,MAAMY,SAASC,KAAY,CAClE,EA1FE/B,OAmGF,SAAuB+B,GAErB,IAAIb,EAAQjH,KAAKiH,aACVA,EAAMY,SAASC,UACfb,EAAMiM,IAAIpL,UACVb,EAAM4M,OAAO/L,GACpB,IAAK,IAAI5G,EAAE,EAAGA,EAAE+F,EAAM9F,OAAQD,IAE5B,IADA,IAAI7B,EAAQ4H,EAAM/F,GAAG7B,MACZsY,EAAE,EAAGA,EAAEtY,EAAM8B,OAAQwW,IAC5B,GAAItY,EAAMsY,GAAG7P,SAAWA,EAAS,CAC/BzI,EAAM6N,OAAOyK,EAAG,GAChB,KACF,CAGJ,OAAO3X,IACT,EAlHEJ,SA4HF,SAASoG,EAAgBwK,EAAYiU,GACnCze,EAAgBxF,OAAS,KACzB,IAAIT,EAAIC,KAAK0kB,iBAAmB1kB,KAAK0kB,kBACF1kB,KAAKS,QAAQ4jB,GAAkB,GAElE,GAAItkB,EAAEyQ,GAAa,OAAO,EAE1B,GADAxK,EAAgBxF,OAAST,EAAES,OACvBikB,EACF,MAAM,IAAIvkB,MAAM,yCAA4CF,KAAKsC,WAAWvC,EAAES,SAE9E,OAAO,CACX,iCC/IA,MAAMmkB,EAAOllB,EAEbklB,EAAKC,OAAS,EAAQ,MAEtBD,EAAKE,OAAS,gBACdF,EAAKG,KAAO,EAAQ,OACpBH,EAAKI,UAAY,EAAQ,OACzBJ,EAAKK,SAAW,EAAQ,OACxBL,EAAKM,SAAW,EAAQ,qCCRxB,MAAMA,EAAW,EAAQ,OACnBD,EAAW,EAAQ,OACnBE,EAAW,EAAQ,OAQzB,SAASC,EAAOvhB,EAAMwhB,GACpBplB,KAAK4D,KAAOA,EACZ5D,KAAKolB,KAAOA,EAEZplB,KAAKglB,SAAW,CAAC,EACjBhlB,KAAKilB,SAAW,CAAC,CACnB,CAZYxlB,EAERolB,OAAS,SAAgBjhB,EAAMwhB,GACjC,OAAO,IAAID,EAAOvhB,EAAMwhB,EAC1B,EAUAD,EAAOxlB,UAAU0lB,aAAe,SAAqBC,GACnD,MAAM1hB,EAAO5D,KAAK4D,KAElB,SAAS2hB,EAAUC,GACjBxlB,KAAKylB,WAAWD,EAAQ5hB,EAC1B,CAMA,OALAshB,EAASK,EAAWD,GACpBC,EAAU5lB,UAAU8lB,WAAa,SAAoBD,EAAQ5hB,GAC3D0hB,EAAK1iB,KAAK5C,KAAMwlB,EAAQ5hB,EAC1B,EAEO,IAAI2hB,EAAUvlB,KACvB,EAEAmlB,EAAOxlB,UAAU+lB,YAAc,SAAqBC,GAKlD,OAJAA,EAAMA,GAAO,MAER3lB,KAAKglB,SAASrU,eAAegV,KAChC3lB,KAAKglB,SAASW,GAAO3lB,KAAKqlB,aAAaL,EAASW,KAC3C3lB,KAAKglB,SAASW,EACvB,EAEAR,EAAOxlB,UAAUimB,OAAS,SAAgB9lB,EAAM6lB,EAAK5hB,GACnD,OAAO/D,KAAK0lB,YAAYC,GAAKC,OAAO9lB,EAAMiE,EAC5C,EAEAohB,EAAOxlB,UAAUkmB,YAAc,SAAqBF,GAKlD,OAJAA,EAAMA,GAAO,MAER3lB,KAAKilB,SAAStU,eAAegV,KAChC3lB,KAAKilB,SAASU,GAAO3lB,KAAKqlB,aAAaJ,EAASU,KAC3C3lB,KAAKilB,SAASU,EACvB,EAEAR,EAAOxlB,UAAUmmB,OAAS,SAAgBhmB,EAAM6lB,EAAoBI,GAClE,OAAO/lB,KAAK6lB,YAAYF,GAAKG,OAAOhmB,EAAMimB,EAC5C,gCCtDA,MAAMb,EAAW,EAAQ,OACnBc,EAAW,WACXC,EAAS,eAEf,SAASC,EAAcpB,EAAM/gB,GAC3BiiB,EAASpjB,KAAK5C,KAAM+D,GACfkiB,EAAOE,SAASrB,IAKrB9kB,KAAK8kB,KAAOA,EACZ9kB,KAAKomB,OAAS,EACdpmB,KAAKmB,OAAS2jB,EAAK3jB,QANjBnB,KAAKuC,MAAM,mBAOf,CAuEA,SAAS8jB,EAAczd,EAAOmd,GAC5B,GAAI/kB,MAAMC,QAAQ2H,GAChB5I,KAAKmB,OAAS,EACdnB,KAAK4I,MAAQA,EAAM0K,KAAI,SAASX,GAI9B,OAHK0T,EAAcC,gBAAgB3T,KACjCA,EAAO,IAAI0T,EAAc1T,EAAMoT,IACjC/lB,KAAKmB,QAAUwR,EAAKxR,OACbwR,CACT,GAAG3S,WACE,GAAqB,iBAAV4I,EAAoB,CACpC,KAAM,GAAKA,GAASA,GAAS,KAC3B,OAAOmd,EAASxjB,MAAM,gCACxBvC,KAAK4I,MAAQA,EACb5I,KAAKmB,OAAS,CAChB,MAAO,GAAqB,iBAAVyH,EAChB5I,KAAK4I,MAAQA,EACb5I,KAAKmB,OAAS8kB,EAAOM,WAAW3d,OAC3B,KAAIqd,EAAOE,SAASvd,GAIzB,OAAOmd,EAASxjB,MAAM,4BAA8BqG,GAHpD5I,KAAK4I,MAAQA,EACb5I,KAAKmB,OAASyH,EAAMzH,MAGtB,CACF,CA7FA+jB,EAASgB,EAAeF,GACxBvmB,EAAQ,EAAgBymB,EAExBA,EAAcM,gBAAkB,SAAyB1mB,GACvD,OAAIA,aAAgBomB,GAKiB,iBAATpmB,GAC1BmmB,EAAOE,SAASrmB,EAAKglB,OACK,kBAA1BhlB,EAAKoK,YAAYtG,MACM,iBAAhB9D,EAAKsmB,QACW,iBAAhBtmB,EAAKqB,QACS,mBAAdrB,EAAK2mB,MACY,mBAAjB3mB,EAAK4mB,SACY,mBAAjB5mB,EAAK6mB,SACc,mBAAnB7mB,EAAK8mB,WACS,mBAAd9mB,EAAK+mB,MACQ,mBAAb/mB,EAAKgnB,GAGhB,EAEAZ,EAAcvmB,UAAU8mB,KAAO,WAC7B,MAAO,CAAEL,OAAQpmB,KAAKomB,OAAQL,SAAUC,EAASrmB,UAAU8mB,KAAK7jB,KAAK5C,MACvE,EAEAkmB,EAAcvmB,UAAU+mB,QAAU,SAAiBD,GAEjD,MAAM9jB,EAAM,IAAIujB,EAAclmB,KAAK8kB,MAOnC,OANAniB,EAAIyjB,OAASK,EAAKL,OAClBzjB,EAAIxB,OAASnB,KAAKomB,OAElBpmB,KAAKomB,OAASK,EAAKL,OACnBJ,EAASrmB,UAAU+mB,QAAQ9jB,KAAK5C,KAAMymB,EAAKV,UAEpCpjB,CACT,EAEAujB,EAAcvmB,UAAUgnB,QAAU,WAChC,OAAO3mB,KAAKomB,SAAWpmB,KAAKmB,MAC9B,EAEA+kB,EAAcvmB,UAAUinB,UAAY,SAAmBG,GACrD,OAAI/mB,KAAKomB,OAAS,GAAKpmB,KAAKmB,OACnBnB,KAAK8kB,KAAK8B,UAAU5mB,KAAKomB,UAAU,GAEnCpmB,KAAKuC,MAAMwkB,GAAQ,wBAC9B,EAEAb,EAAcvmB,UAAUknB,KAAO,SAAcG,EAAOD,GAClD,KAAM/mB,KAAKomB,OAASY,GAAShnB,KAAKmB,QAChC,OAAOnB,KAAKuC,MAAMwkB,GAAQ,yBAE5B,MAAMpkB,EAAM,IAAIujB,EAAclmB,KAAK8kB,MAQnC,OALAniB,EAAIskB,eAAiBjnB,KAAKinB,eAE1BtkB,EAAIyjB,OAASpmB,KAAKomB,OAClBzjB,EAAIxB,OAASnB,KAAKomB,OAASY,EAC3BhnB,KAAKomB,QAAUY,EACRrkB,CACT,EAEAujB,EAAcvmB,UAAUmnB,IAAM,SAAaL,GACzC,OAAOzmB,KAAK8kB,KAAKzgB,MAAMoiB,EAAOA,EAAKL,OAASpmB,KAAKomB,OAAQpmB,KAAKmB,OAChE,EA0BA1B,EAAQ,EAAgB4mB,EAExBA,EAAcC,gBAAkB,SAAyBxmB,GACvD,OAAIA,aAAgBumB,GAKiB,iBAATvmB,GACA,kBAA1BA,EAAKoK,YAAYtG,MACM,iBAAhB9D,EAAKqB,QACS,mBAAdrB,EAAK8Q,IAGhB,EAEAyV,EAAc1mB,UAAUiR,KAAO,SAAc8H,EAAK0N,GAMhD,OALK1N,IACHA,EAAMuN,EAAOiB,MAAMlnB,KAAKmB,SACrBilB,IACHA,EAAS,GAES,IAAhBpmB,KAAKmB,SAGLH,MAAMC,QAAQjB,KAAK4I,OACrB5I,KAAK4I,MAAMwK,SAAQ,SAAST,GAC1BA,EAAK/B,KAAK8H,EAAK0N,GACfA,GAAUzT,EAAKxR,MACjB,KAE0B,iBAAfnB,KAAK4I,MACd8P,EAAI0N,GAAUpmB,KAAK4I,MACU,iBAAf5I,KAAK4I,MACnB8P,EAAIyO,MAAMnnB,KAAK4I,MAAOwd,GACfH,EAAOE,SAASnmB,KAAK4I,QAC5B5I,KAAK4I,MAAMnC,KAAKiS,EAAK0N,GACvBA,GAAUpmB,KAAKmB,SAdRuX,CAkBX,gCCtJA,MAAMoM,EAAOrlB,EAEbqlB,EAAKkB,SAAW,WAChBlB,EAAKoB,cAAgB,WACrBpB,EAAKuB,cAAgB,WACrBvB,EAAKsC,KAAO,EAAQ,qCCLpB,MAAMpB,EAAW,WACXK,EAAgB,WAChBH,EAAgB,WAChBmB,EAAS,EAAQ,OAGjBC,EAAO,CACX,MAAO,QAAS,MAAO,QAAS,QAAS,OACzC,UAAW,UAAW,QAAS,OAAQ,MAAO,UAC9C,SAAU,SAAU,UAAW,SAAU,WAAY,SAAU,YAC/D,SAAU,SAAU,WAAY,SAAU,SAAU,UAAW,YAI3DC,EAAU,CACd,MAAO,MAAO,MAAO,WAAY,WAAY,WAAY,MAAO,SAChE,MAAO,YACP3T,OAAO0T,GAYT,SAASF,EAAKzB,EAAK6B,EAAQ5jB,GACzB,MAAM6jB,EAAQ,CAAC,EACfznB,KAAK0nB,WAAaD,EAElBA,EAAM7jB,KAAOA,EACb6jB,EAAM9B,IAAMA,EAEZ8B,EAAMD,OAASA,GAAU,KACzBC,EAAME,SAAW,KAGjBF,EAAMG,IAAM,KACZH,EAAMI,KAAO,KACbJ,EAAMK,YAAc,KACpBL,EAAMM,OAAS,KACfN,EAAMO,UAAW,EACjBP,EAAMQ,KAAM,EACZR,EAAM3T,KAAM,EACZ2T,EAAMS,IAAM,KACZT,EAAMU,WAAa,KACnBV,EAAM3mB,IAAM,KACZ2mB,EAAe,QAAI,KACnBA,EAAMW,SAAW,KACjBX,EAAMY,SAAW,KACjBZ,EAAM3I,SAAW,KAGZ2I,EAAMD,SACTC,EAAME,SAAW,GACjB3nB,KAAKsoB,QAET,CACA9oB,EAAOC,QAAU2nB,EAEjB,MAAMmB,EAAa,CACjB,MAAO,SAAU,WAAY,MAAO,OAAQ,cAAe,SAC3D,WAAY,MAAO,MAAO,MAAO,aAAc,MAAO,UAAW,WACjE,WAAY,YAGdnB,EAAKznB,UAAU6oB,MAAQ,WACrB,MAAMf,EAAQznB,KAAK0nB,WACbe,EAAS,CAAC,EAChBF,EAAWnV,SAAQ,SAASkD,GAC1BmS,EAAOnS,GAAQmR,EAAMnR,EACvB,IACA,MAAM3T,EAAM,IAAI3C,KAAKkK,YAAYue,EAAOjB,QAExC,OADA7kB,EAAI+kB,WAAae,EACV9lB,CACT,EAEAykB,EAAKznB,UAAU2oB,MAAQ,WACrB,MAAMb,EAAQznB,KAAK0nB,WACnBH,EAAQnU,SAAQ,SAASsV,GACvB1oB,KAAK0oB,GAAU,WACb,MAAMF,EAAQ,IAAIxoB,KAAKkK,YAAYlK,MAEnC,OADAynB,EAAME,SAASlU,KAAK+U,GACbA,EAAME,GAAQnjB,MAAMijB,EAAOhjB,UACpC,CACF,GAAGxF,KACL,EAEAonB,EAAKznB,UAAUgpB,MAAQ,SAAcvD,GACnC,MAAMqC,EAAQznB,KAAK0nB,WAEnBL,EAAwB,OAAjBI,EAAMD,QACbpC,EAAKxiB,KAAK5C,MAGVynB,EAAME,SAAWF,EAAME,SAASrH,QAAO,SAASsI,GAC9C,OAAOA,EAAMlB,WAAWF,SAAWxnB,IACrC,GAAGA,MACHqnB,EAAOxa,MAAM4a,EAAME,SAASxmB,OAAQ,EAAG,oCACzC,EAEAimB,EAAKznB,UAAUkpB,SAAW,SAAiBhB,GACzC,MAAMJ,EAAQznB,KAAK0nB,WAGbC,EAAWE,EAAKvH,QAAO,SAASwI,GACpC,OAAOA,aAAe9oB,KAAKkK,WAC7B,GAAGlK,MACH6nB,EAAOA,EAAKvH,QAAO,SAASwI,GAC1B,QAASA,aAAe9oB,KAAKkK,YAC/B,GAAGlK,MAEqB,IAApB2nB,EAASxmB,SACXkmB,EAA0B,OAAnBI,EAAME,UACbF,EAAME,SAAWA,EAGjBA,EAASvU,SAAQ,SAASwV,GACxBA,EAAMlB,WAAWF,OAASxnB,IAC5B,GAAGA,OAEe,IAAhB6nB,EAAK1mB,SACPkmB,EAAsB,OAAfI,EAAMI,MACbJ,EAAMI,KAAOA,EACbJ,EAAMK,YAAcD,EAAKvU,KAAI,SAASwV,GACpC,GAAmB,iBAARA,GAAoBA,EAAI5e,cAAgBF,OACjD,OAAO8e,EAET,MAAMnmB,EAAM,CAAC,EAOb,OANAqH,OAAOoH,KAAK0X,GAAK1V,SAAQ,SAAStS,GAC5BA,IAAc,EAANA,KACVA,GAAO,GACT,MAAM8H,EAAQkgB,EAAIhoB,GAClB6B,EAAIiG,GAAS9H,CACf,IACO6B,CACT,IAEJ,EAzHkB,CAChB,WAAY,aAAc,OAC1B,aAAc,eAAgB,cAC9B,cAAe,aAAc,cAAe,cAE5C,mBAAoB,aAAc,eAAgB,cAClD,cAAe,aAAc,eAyHrByQ,SAAQ,SAASsV,GACzBtB,EAAKznB,UAAU+oB,GAAU,WACvB,MAAMjB,EAAQznB,KAAK0nB,WACnB,MAAM,IAAIxnB,MAAMwoB,EAAS,kCAAoCjB,EAAM9B,IACrE,CACF,IAMA2B,EAAKlU,SAAQ,SAASwU,GACpBR,EAAKznB,UAAUioB,GAAO,WACpB,MAAMH,EAAQznB,KAAK0nB,WACbG,EAAO7mB,MAAMrB,UAAU0E,MAAMzB,KAAK4C,WAOxC,OALA6hB,EAAqB,OAAdI,EAAMG,KACbH,EAAMG,IAAMA,EAEZ5nB,KAAK6oB,SAAShB,GAEP7nB,IACT,CACF,IAEAonB,EAAKznB,UAAUuoB,IAAM,SAAavV,GAChC0U,EAAO1U,GACP,MAAM8U,EAAQznB,KAAK0nB,WAKnB,OAHAL,EAAqB,OAAdI,EAAMS,KACbT,EAAMS,IAAMvV,EAEL3S,IACT,EAEAonB,EAAKznB,UAAUqoB,SAAW,WAKxB,OAJchoB,KAAK0nB,WAEbM,UAAW,EAEVhoB,IACT,EAEAonB,EAAKznB,UAAUopB,IAAM,SAAaC,GAChC,MAAMvB,EAAQznB,KAAK0nB,WAMnB,OAJAL,EAA4B,OAArBI,EAAe,SACtBA,EAAe,QAAIuB,EACnBvB,EAAMO,UAAW,EAEVhoB,IACT,EAEAonB,EAAKznB,UAAUyoB,SAAW,SAAkBa,GAC1C,MAAMxB,EAAQznB,KAAK0nB,WAKnB,OAHAL,EAA0B,OAAnBI,EAAMW,UAAwC,OAAnBX,EAAMY,UACxCZ,EAAMW,SAAWa,EAEVjpB,IACT,EAEAonB,EAAKznB,UAAU0oB,SAAW,SAAkBY,GAC1C,MAAMxB,EAAQznB,KAAK0nB,WAKnB,OAHAL,EAA0B,OAAnBI,EAAMW,UAAwC,OAAnBX,EAAMY,UACxCZ,EAAMY,SAAWY,EAEVjpB,IACT,EAEAonB,EAAKznB,UAAUmU,IAAM,WACnB,MAAM2T,EAAQznB,KAAK0nB,WACbG,EAAO7mB,MAAMrB,UAAU0E,MAAMzB,KAAK4C,WAOxC,OALAiiB,EAAM3T,KAAM,EAEQ,IAAhB+T,EAAK1mB,QACPnB,KAAK6oB,SAAShB,GAET7nB,IACT,EAEAonB,EAAKznB,UAAUmB,IAAM,SAAaooB,GAChC,MAAMzB,EAAQznB,KAAK0nB,WAKnB,OAHAL,EAAqB,OAAdI,EAAM3mB,KACb2mB,EAAM3mB,IAAMooB,EAELlpB,IACT,EAEAonB,EAAKznB,UAAUsoB,IAAM,WAKnB,OAJcjoB,KAAK0nB,WAEbO,KAAM,EAELjoB,IACT,EAEAonB,EAAKznB,UAAUooB,OAAS,SAAgBjU,GACtC,MAAM2T,EAAQznB,KAAK0nB,WAQnB,OANAL,EAAwB,OAAjBI,EAAMM,QACbN,EAAMM,OAASjU,EACf9T,KAAK6oB,SAAS7e,OAAOoH,KAAK0C,GAAKR,KAAI,SAASxS,GAC1C,OAAOgT,EAAIhT,EACb,KAEOd,IACT,EAEAonB,EAAKznB,UAAUmf,SAAW,SAAkBnM,GAC1C,MAAM8U,EAAQznB,KAAK0nB,WAKnB,OAHAL,EAAqB,OAAdI,EAAMS,KACbT,EAAM3I,SAAWnM,EAEV3S,IACT,EAMAonB,EAAKznB,UAAUwpB,QAAU,SAAgBC,EAAOrlB,GAC9C,MAAM0jB,EAAQznB,KAAK0nB,WAGnB,GAAqB,OAAjBD,EAAMD,OACR,OAAO4B,EAAMC,WAAW5B,EAAME,SAAS,GAAGwB,QAAQC,EAAOrlB,IAE3D,IAuCIulB,EAvCAhkB,EAASmiB,EAAe,QACxB8B,GAAU,EAEVC,EAAU,KAKd,GAJkB,OAAd/B,EAAM3mB,MACR0oB,EAAUJ,EAAMK,SAAShC,EAAM3mB,MAG7B2mB,EAAMO,SAAU,CAClB,IAAIJ,EAAM,KAQV,GAPuB,OAAnBH,EAAMW,SACRR,EAAMH,EAAMW,SACc,OAAnBX,EAAMY,SACbT,EAAMH,EAAMY,SACS,OAAdZ,EAAMG,MACbA,EAAMH,EAAMG,KAEF,OAARA,GAAiBH,EAAMQ,KAgBzB,GAFAsB,EAAUvpB,KAAK0pB,SAASN,EAAOxB,EAAKH,EAAMQ,KAEtCmB,EAAMO,QAAQJ,GAChB,OAAOA,MAjBqB,CAE9B,MAAM9C,EAAO2C,EAAM3C,OACnB,IACuB,OAAjBgB,EAAMM,OACR/nB,KAAK4pB,eAAenC,EAAMG,IAAKwB,EAAOrlB,GAEtC/D,KAAK6pB,cAAcT,EAAOrlB,GAC5BwlB,GAAU,CAGZ,CAFE,MAAOplB,GACPolB,GAAU,CACZ,CACAH,EAAM1C,QAAQD,EAChB,CAMF,CAOA,GAHIgB,EAAM3T,KAAOyV,IACfD,EAAUF,EAAMU,eAEdP,EAAS,CAEX,GAAuB,OAAnB9B,EAAMW,SAAmB,CAC3B,MAAMA,EAAWpoB,KAAK+pB,WAAWX,EAAO3B,EAAMW,UAC9C,GAAIgB,EAAMO,QAAQvB,GAChB,OAAOA,EACTgB,EAAQhB,CACV,CAEA,MAAM4B,EAAQZ,EAAMhD,OAGpB,GAAkB,OAAdqB,EAAMS,KAAiC,OAAjBT,EAAMM,OAAiB,CAC/C,IAAItB,EACAgB,EAAMQ,MACRxB,EAAO2C,EAAM3C,QACf,MAAMrB,EAAOplB,KAAK+pB,WAChBX,EACmB,OAAnB3B,EAAMY,SAAoBZ,EAAMY,SAAWZ,EAAMG,IACjDH,EAAMQ,KAER,GAAImB,EAAMO,QAAQvE,GAChB,OAAOA,EAELqC,EAAMQ,IACR3iB,EAAS8jB,EAAMtC,IAAIL,GAEnB2C,EAAQhE,CACZ,CAiBA,GAfIrhB,GAAWA,EAAQkmB,OAAuB,OAAdxC,EAAMG,KACpC7jB,EAAQkmB,MAAMb,EAAMc,OAAQF,EAAOZ,EAAMjoB,OAAQ,UAE/C4C,GAAWA,EAAQkmB,OAAuB,OAAdxC,EAAMG,KACpC7jB,EAAQkmB,MAAMb,EAAMc,OAAQd,EAAMhD,OAAQgD,EAAMjoB,OAAQ,WAGtDsmB,EAAMQ,MAGR3iB,EAD0B,OAAjBmiB,EAAMM,OACN/nB,KAAK4pB,eAAenC,EAAMG,IAAKwB,EAAOrlB,GAEtC/D,KAAK6pB,cAAcT,EAAOrlB,IAGjCqlB,EAAMO,QAAQrkB,GAChB,OAAOA,EAYT,GATKmiB,EAAMQ,KAAwB,OAAjBR,EAAMM,QAAsC,OAAnBN,EAAME,UAC/CF,EAAME,SAASvU,SAAQ,SAAwBwV,GAG7CA,EAAMO,QAAQC,EAAOrlB,EACvB,IAIE0jB,EAAM3I,WAA2B,WAAd2I,EAAMG,KAAkC,WAAdH,EAAMG,KAAmB,CACxE,MAAM9nB,EAAO,IAAIomB,EAAc5gB,GAC/BA,EAAStF,KAAKmqB,QAAQ1C,EAAM3I,SAAUsK,EAAMnC,eAAenT,KACxDqV,QAAQrpB,EAAMiE,EACnB,CACF,CAYA,OATI0jB,EAAM3T,KAAOyV,IACfjkB,EAAS8jB,EAAMgB,YAAYd,IAGX,OAAd7B,EAAM3mB,KAA4B,OAAXwE,IAA+B,IAAZikB,EAEzB,OAAZC,GACPJ,EAAMiB,QAAQb,GAFdJ,EAAMkB,SAASd,EAAS/B,EAAM3mB,IAAKwE,GAI9BA,CACT,EAEA8hB,EAAKznB,UAAUiqB,eAAiB,SAAuBhC,EAAKwB,EAAOrlB,GACjE,MAAM0jB,EAAQznB,KAAK0nB,WAEnB,MAAY,QAARE,GAAyB,QAARA,EACZ,KACG,UAARA,GAA2B,UAARA,EACd5nB,KAAKuqB,YAAYnB,EAAOxB,EAAKH,EAAMI,KAAK,GAAI9jB,GAC5C,OAAO4E,KAAKif,GACZ5nB,KAAKwqB,WAAWpB,EAAOxB,EAAK7jB,GACpB,UAAR6jB,GAAmBH,EAAMI,KACzB7nB,KAAKyqB,aAAarB,EAAO3B,EAAMI,KAAK,GAAIJ,EAAMI,KAAK,GAAI9jB,GAC/C,UAAR6jB,EACA5nB,KAAKyqB,aAAarB,EAAO,KAAM,KAAMrlB,GAC7B,YAAR6jB,GAA6B,YAARA,EACrB5nB,KAAK0qB,YAAYtB,EAAOxB,EAAK7jB,GACrB,UAAR6jB,EACA5nB,KAAK2qB,YAAYvB,EAAOrlB,GAChB,SAAR6jB,EACA5nB,KAAK4qB,YAAYxB,EAAOrlB,GAChB,YAAR6jB,EACA5nB,KAAKwqB,WAAWpB,EAAOxB,EAAK7jB,GACpB,QAAR6jB,GAAyB,SAARA,EACjB5nB,KAAK6qB,WAAWzB,EAAO3B,EAAMI,MAAQJ,EAAMI,KAAK,GAAI9jB,GAE3C,OAAd0jB,EAAMS,IACDloB,KAAKmqB,QAAQ1C,EAAMS,IAAKkB,EAAMnC,eAAenT,KACjDqV,QAAQC,EAAOrlB,GAEXqlB,EAAM7mB,MAAM,gBAAkBqlB,EAEzC,EAEAR,EAAKznB,UAAUwqB,QAAU,SAAiB3E,EAAQ1R,GAEhD,MAAM2T,EAAQznB,KAAK0nB,WASnB,OAPAD,EAAMU,WAAanoB,KAAK8qB,KAAKtF,EAAQ1R,GACrCuT,EAA8C,OAAvCI,EAAMU,WAAWT,WAAWF,QACnCC,EAAMU,WAAaV,EAAMU,WAAWT,WAAWC,SAAS,GACpDF,EAAMY,WAAaZ,EAAMU,WAAWT,WAAWW,WACjDZ,EAAMU,WAAaV,EAAMU,WAAWK,QACpCf,EAAMU,WAAWT,WAAWW,SAAWZ,EAAMY,UAExCZ,EAAMU,UACf,EAEAf,EAAKznB,UAAUkqB,cAAgB,SAAsBT,EAAOrlB,GAC1D,MAAM0jB,EAAQznB,KAAK0nB,WACnB,IAAIpiB,EAAS,KACT8F,GAAQ,EAmBZ,OAjBApB,OAAOoH,KAAKqW,EAAMM,QAAQgD,MAAK,SAASjqB,GACtC,MAAM2lB,EAAO2C,EAAM3C,OACbuE,EAAOvD,EAAMM,OAAOjnB,GAC1B,IACE,MAAM8H,EAAQoiB,EAAK7B,QAAQC,EAAOrlB,GAClC,GAAIqlB,EAAMO,QAAQ/gB,GAChB,OAAO,EAETtD,EAAS,CAAEgD,KAAMxH,EAAK8H,MAAOA,GAC7BwC,GAAQ,CAIV,CAHE,MAAOjH,GAEP,OADAilB,EAAM1C,QAAQD,IACP,CACT,CACA,OAAO,CACT,GAAGzmB,MAEEoL,EAGE9F,EAFE8jB,EAAM7mB,MAAM,qBAGvB,EAMA6kB,EAAKznB,UAAUsrB,qBAAuB,SAA6BnrB,GACjE,OAAO,IAAIumB,EAAcvmB,EAAME,KAAK+lB,SACtC,EAEAqB,EAAKznB,UAAUurB,QAAU,SAAgBprB,EAAMimB,EAAUyB,GACvD,MAAMC,EAAQznB,KAAK0nB,WACnB,GAAyB,OAArBD,EAAe,SAAcA,EAAe,UAAM3nB,EACpD,OAEF,MAAMwF,EAAStF,KAAKmrB,aAAarrB,EAAMimB,EAAUyB,GACjD,YAAe5mB,IAAX0E,GAGAtF,KAAKorB,aAAa9lB,EAAQygB,EAAUyB,QAHxC,EAMOliB,CACT,EAEA8hB,EAAKznB,UAAUwrB,aAAe,SAAgBrrB,EAAMimB,EAAUyB,GAC5D,MAAMC,EAAQznB,KAAK0nB,WAGnB,GAAqB,OAAjBD,EAAMD,OACR,OAAOC,EAAME,SAAS,GAAGuD,QAAQprB,EAAMimB,GAAY,IAAIC,GAEzD,IAAI1gB,EAAS,KAMb,GAHAtF,KAAK+lB,SAAWA,EAGZ0B,EAAMO,eAAqBpnB,IAATd,EAAoB,CACxC,GAAyB,OAArB2nB,EAAe,QAGjB,OAFA3nB,EAAO2nB,EAAe,OAG1B,CAGA,IAAI4D,EAAU,KACVC,GAAY,EAChB,GAAI7D,EAAMQ,IAER3iB,EAAStF,KAAKirB,qBAAqBnrB,QAC9B,GAAI2nB,EAAMM,OACfziB,EAAStF,KAAKurB,cAAczrB,EAAMimB,QAC7B,GAAI0B,EAAM3I,SACfuM,EAAUrrB,KAAKmqB,QAAQ1C,EAAM3I,SAAU0I,GAAQ0D,QAAQprB,EAAMimB,GAC7DuF,GAAY,OACP,GAAI7D,EAAME,SACf0D,EAAU5D,EAAME,SAASrU,KAAI,SAASsV,GACpC,GAA6B,UAAzBA,EAAMlB,WAAWE,IACnB,OAAOgB,EAAMsC,QAAQ,KAAMnF,EAAUjmB,GAEvC,GAA6B,OAAzB8oB,EAAMlB,WAAW5mB,IACnB,OAAOilB,EAASxjB,MAAM,2BACxB,MAAMinB,EAAUzD,EAAS0D,SAASb,EAAMlB,WAAW5mB,KAEnD,GAAoB,iBAAThB,EACT,OAAOimB,EAASxjB,MAAM,2CAExB,MAAMI,EAAMimB,EAAMsC,QAAQprB,EAAK8oB,EAAMlB,WAAW5mB,KAAMilB,EAAUjmB,GAGhE,OAFAimB,EAASuE,SAASd,GAEX7mB,CACT,GAAG3C,MAAMsgB,QAAO,SAASsI,GACvB,OAAOA,CACT,IACAyC,EAAUrrB,KAAKirB,qBAAqBI,QAEpC,GAAkB,UAAd5D,EAAMG,KAAiC,UAAdH,EAAMG,IAAiB,CAElD,IAAMH,EAAMI,MAA8B,IAAtBJ,EAAMI,KAAK1mB,OAC7B,OAAO4kB,EAASxjB,MAAM,uBAAyBklB,EAAMG,KAEvD,IAAK5mB,MAAMC,QAAQnB,GACjB,OAAOimB,EAASxjB,MAAM,sCAExB,MAAMqmB,EAAQ5oB,KAAKwoB,QACnBI,EAAMlB,WAAWW,SAAW,KAC5BgD,EAAUrrB,KAAKirB,qBAAqBnrB,EAAKwT,KAAI,SAASX,GACpD,MAAM8U,EAAQznB,KAAK0nB,WAEnB,OAAO1nB,KAAKmqB,QAAQ1C,EAAMI,KAAK,GAAI/nB,GAAMorB,QAAQvY,EAAMoT,EACzD,GAAG6C,GACL,MAAyB,OAAdnB,EAAMS,IACf5iB,EAAStF,KAAKmqB,QAAQ1C,EAAMS,IAAKV,GAAQ0D,QAAQprB,EAAMimB,IAEvDsF,EAAUrrB,KAAKwrB,iBAAiB/D,EAAMG,IAAK9nB,GAC3CwrB,GAAY,GAKhB,IAAK7D,EAAMQ,KAAwB,OAAjBR,EAAMM,OAAiB,CACvC,MAAMH,EAAyB,OAAnBH,EAAMY,SAAoBZ,EAAMY,SAAWZ,EAAMG,IACvD6D,EAAyB,OAAnBhE,EAAMY,SAAoB,YAAc,UAExC,OAART,EACgB,OAAdH,EAAMS,KACRnC,EAASxjB,MAAM,wCAEC,OAAdklB,EAAMS,MACR5iB,EAAStF,KAAK0rB,iBAAiB9D,EAAK0D,EAAWG,EAAKJ,GAE1D,CAMA,OAHuB,OAAnB5D,EAAMW,WACR9iB,EAAStF,KAAK0rB,iBAAiBjE,EAAMW,UAAU,EAAO,UAAW9iB,IAE5DA,CACT,EAEA8hB,EAAKznB,UAAU4rB,cAAgB,SAAsBzrB,EAAMimB,GACzD,MAAM0B,EAAQznB,KAAK0nB,WAEbsD,EAAOvD,EAAMM,OAAOjoB,EAAKwI,MAO/B,OANK0iB,GACH3D,GACE,EACAvnB,EAAKwI,KAAO,iBACNmP,KAAKC,UAAU1N,OAAOoH,KAAKqW,EAAMM,UAEpCiD,EAAKE,QAAQprB,EAAK8I,MAAOmd,EAClC,EAEAqB,EAAKznB,UAAU6rB,iBAAmB,SAAyB5D,EAAK9nB,GAC9D,MAAM2nB,EAAQznB,KAAK0nB,WAEnB,GAAI,OAAO/e,KAAKif,GACd,OAAO5nB,KAAK2rB,WAAW7rB,EAAM8nB,GAC1B,GAAY,UAARA,GAAmBH,EAAMI,KAChC,OAAO7nB,KAAK4rB,aAAa9rB,EAAM2nB,EAAMK,YAAY,GAAIL,EAAMI,KAAK,IAC7D,GAAY,UAARD,EACP,OAAO5nB,KAAK4rB,aAAa9rB,EAAM,KAAM,MAClC,GAAY,YAAR8nB,GAA6B,YAARA,EAC5B,OAAO5nB,KAAK6rB,YAAY/rB,EAAM8nB,GAC3B,GAAY,UAARA,EACP,OAAO5nB,KAAK8rB,cACT,GAAY,QAARlE,GAAyB,SAARA,EACxB,OAAO5nB,KAAK+rB,WAAWjsB,EAAM2nB,EAAMI,MAAQJ,EAAMK,YAAY,IAC1D,GAAY,SAARF,EACP,OAAO5nB,KAAKgsB,YAAYlsB,GACrB,GAAY,YAAR8nB,EACP,OAAO5nB,KAAK2rB,WAAW7rB,EAAM8nB,GAE7B,MAAM,IAAI1nB,MAAM,oBAAsB0nB,EAC1C,EAEAR,EAAKznB,UAAUssB,UAAY,SAAkB/gB,GAC3C,MAAO,YAAYvC,KAAKuC,EAC1B,EAEAkc,EAAKznB,UAAUusB,YAAc,SAAoBhhB,GAC/C,MAAO,6BAA6BvC,KAAKuC,EAC3C,gCC3nBA,MAAMga,EAAW,EAAQ,OAEzB,SAASc,EAASjiB,GAChB/D,KAAKinB,eAAiB,CACpBnT,IAAK,KACLoW,KAAM,GACNnmB,QAASA,GAAW,CAAC,EACrBvD,OAAQ,GAEZ,CA2FA,SAAS2rB,EAAcjC,EAAMkC,GAC3BpsB,KAAKkqB,KAAOA,EACZlqB,KAAKqsB,QAAQD,EACf,CA7FA3sB,EAAQ,EAAWumB,EAEnBA,EAASrmB,UAAUgqB,QAAU,SAAiB7V,GAC5C,OAAOA,aAAeqY,CACxB,EAEAnG,EAASrmB,UAAU8mB,KAAO,WACxB,MAAMgB,EAAQznB,KAAKinB,eAEnB,MAAO,CAAEnT,IAAK2T,EAAM3T,IAAKwY,QAAS7E,EAAMyC,KAAK/oB,OAC/C,EAEA6kB,EAASrmB,UAAU+mB,QAAU,SAAiB5mB,GAC5C,MAAM2nB,EAAQznB,KAAKinB,eAEnBQ,EAAM3T,IAAMhU,EAAKgU,IACjB2T,EAAMyC,KAAOzC,EAAMyC,KAAK7lB,MAAM,EAAGvE,EAAKwsB,QACxC,EAEAtG,EAASrmB,UAAU8pB,SAAW,SAAkB3oB,GAC9C,OAAOd,KAAKinB,eAAeiD,KAAKzW,KAAK3S,EACvC,EAEAklB,EAASrmB,UAAU0qB,QAAU,SAAiBtd,GAC5C,MAAM0a,EAAQznB,KAAKinB,eAEnBQ,EAAMyC,KAAOzC,EAAMyC,KAAK7lB,MAAM,EAAG0I,EAAQ,EAC3C,EAEAiZ,EAASrmB,UAAU2qB,SAAW,SAAkBvd,EAAOjM,EAAK8H,GAC1D,MAAM6e,EAAQznB,KAAKinB,eAEnBjnB,KAAKqqB,QAAQtd,GACK,OAAd0a,EAAM3T,MACR2T,EAAM3T,IAAIhT,GAAO8H,EACrB,EAEAod,EAASrmB,UAAUuqB,KAAO,WACxB,OAAOlqB,KAAKinB,eAAeiD,KAAKtZ,KAAK,IACvC,EAEAoV,EAASrmB,UAAUmqB,YAAc,WAC/B,MAAMrC,EAAQznB,KAAKinB,eAEbsF,EAAO9E,EAAM3T,IAEnB,OADA2T,EAAM3T,IAAM,CAAC,EACNyY,CACT,EAEAvG,EAASrmB,UAAUyqB,YAAc,SAAqBmC,GACpD,MAAM9E,EAAQznB,KAAKinB,eAEbuF,EAAM/E,EAAM3T,IAElB,OADA2T,EAAM3T,IAAMyY,EACLC,CACT,EAEAxG,EAASrmB,UAAU4C,MAAQ,SAAe6pB,GACxC,IAAIK,EACJ,MAAMhF,EAAQznB,KAAKinB,eAEbyF,EAAYN,aAAeD,EASjC,GAPEM,EADEC,EACIN,EAEA,IAAID,EAAc1E,EAAMyC,KAAK5W,KAAI,SAASqZ,GAC9C,MAAO,IAAMlV,KAAKC,UAAUiV,GAAQ,GACtC,IAAG/b,KAAK,IAAKwb,EAAI/pB,SAAW+pB,EAAKA,EAAIQ,QAGlCnF,EAAM1jB,QAAQ8oB,QACjB,MAAMJ,EAKR,OAHKC,GACHjF,EAAMjnB,OAAOiT,KAAKgZ,GAEbA,CACT,EAEAzG,EAASrmB,UAAU0pB,WAAa,SAAoB/jB,GAClD,MAAMmiB,EAAQznB,KAAKinB,eACnB,OAAKQ,EAAM1jB,QAAQ8oB,QAGZ,CACLvnB,OAAQtF,KAAK2pB,QAAQrkB,GAAU,KAAOA,EACtC9E,OAAQinB,EAAMjnB,QAJP8E,CAMX,EAMA4f,EAASiH,EAAejsB,OAExBisB,EAAcxsB,UAAU0sB,QAAU,SAAiBD,GAKjD,GAJApsB,KAAKqC,QAAU+pB,EAAM,SAAWpsB,KAAKkqB,MAAQ,aACzChqB,MAAM4sB,mBACR5sB,MAAM4sB,kBAAkB9sB,KAAMmsB,IAE3BnsB,KAAK4sB,MACR,IAEE,MAAM,IAAI1sB,MAAMF,KAAKqC,QAGvB,CAFE,MAAO8B,GACPnE,KAAK4sB,MAAQzoB,EAAEyoB,KACjB,CAEF,OAAO5sB,IACT,8BCvHA,SAAS+sB,EAAQzZ,GACf,MAAM3Q,EAAM,CAAC,EAWb,OATAqH,OAAOoH,KAAKkC,GAAKF,SAAQ,SAAStS,IAErB,EAANA,IAAYA,IACfA,GAAY,GAEd,MAAM8H,EAAQ0K,EAAIxS,GAClB6B,EAAIiG,GAAS9H,CACf,IAEO6B,CACT,CAEAlD,EAAQutB,SAAW,CACjB,EAAG,YACH,EAAG,cACH,EAAG,UACH,EAAG,WAELvtB,EAAQwtB,eAAiBF,EAAQttB,EAAQutB,UAEzCvtB,EAAQmoB,IAAM,CACZ,EAAM,MACN,EAAM,OACN,EAAM,MACN,EAAM,SACN,EAAM,SACN,EAAM,QACN,EAAM,QACN,EAAM,UACN,EAAM,WACN,EAAM,OACN,GAAM,OACN,GAAM,QACN,GAAM,UACN,GAAM,cACN,GAAM,MACN,GAAM,MACN,GAAM,SACN,GAAM,WACN,GAAM,SACN,GAAM,WACN,GAAM,SACN,GAAM,UACN,GAAM,UACN,GAAM,WACN,GAAM,YACN,GAAM,SACN,GAAM,SACN,GAAM,UACN,GAAM,UAERnoB,EAAQytB,UAAYH,EAAQttB,EAAQmoB,mCCvDpC,MAAM7C,EAAYtlB,EAGlBslB,EAAUoI,SAAW,SAAiB7Z,GACpC,MAAM3Q,EAAM,CAAC,EAWb,OATAqH,OAAOoH,KAAKkC,GAAKF,SAAQ,SAAStS,IAErB,EAANA,IAAYA,IACfA,GAAY,GAEd,MAAM8H,EAAQ0K,EAAIxS,GAClB6B,EAAIiG,GAAS9H,CACf,IAEO6B,CACT,EAEAoiB,EAAUqI,IAAM,EAAQ,qCClBxB,MAAMlI,EAAW,EAAQ,OAEnBN,EAAS,EAAQ,MACjBsB,EAAgB,WAChBkB,EAAO,EAAQ,OAGfgG,EAAM,EAAQ,OAEpB,SAASC,EAAW7H,GAClBxlB,KAAK2lB,IAAM,MACX3lB,KAAK4D,KAAO4hB,EAAO5hB,KACnB5D,KAAKwlB,OAASA,EAGdxlB,KAAKstB,KAAO,IAAIC,EAChBvtB,KAAKstB,KAAK3E,MAAMnD,EAAOJ,KACzB,CAaA,SAASmI,EAAQ/F,GACfJ,EAAKxkB,KAAK5C,KAAM,MAAOwnB,EACzB,CA6OA,SAASgG,EAAaC,EAAK1G,GACzB,IAAIa,EAAM6F,EAAI7G,UAAUG,GACxB,GAAI0G,EAAI9D,QAAQ/B,GACd,OAAOA,EAET,MAAM6D,EAAM2B,EAAIJ,SAASpF,GAAO,GAC1B0D,EAA6B,IAAV,GAAN1D,GAGnB,GAAqB,KAAV,GAANA,GAAsB,CACzB,IAAI8F,EAAM9F,EAEV,IADAA,EAAM,EACkB,MAAV,IAAN8F,IAAsB,CAE5B,GADAA,EAAMD,EAAI7G,UAAUG,GAChB0G,EAAI9D,QAAQ+D,GACd,OAAOA,EAET9F,IAAQ,EACRA,GAAa,IAAN8F,CACT,CACF,MACE9F,GAAO,GAIT,MAAO,CACL6D,IAAKA,EACLH,UAAWA,EACX1D,IAAKA,EACL+F,OANaP,EAAIxF,IAAIA,GAQzB,CAEA,SAASgG,EAAaH,EAAKnC,EAAWvE,GACpC,IAAIhT,EAAM0Z,EAAI7G,UAAUG,GACxB,GAAI0G,EAAI9D,QAAQ5V,GACd,OAAOA,EAGT,IAAKuX,GAAqB,MAARvX,EAChB,OAAO,KAGT,GAAqB,IAAV,IAANA,GAEH,OAAOA,EAIT,MAAMkV,EAAY,IAANlV,EACZ,GAAIkV,EAAM,EACR,OAAOwE,EAAIlrB,MAAM,6BAEnBwR,EAAM,EACN,IAAK,IAAI7S,EAAI,EAAGA,EAAI+nB,EAAK/nB,IAAK,CAC5B6S,IAAQ,EACR,MAAM4D,EAAI8V,EAAI7G,UAAUG,GACxB,GAAI0G,EAAI9D,QAAQhS,GACd,OAAOA,EACT5D,GAAO4D,CACT,CAEA,OAAO5D,CACT,CA1TAvU,EAAOC,QAAU4tB,EAEjBA,EAAW1tB,UAAUimB,OAAS,SAAgB9lB,EAAMiE,GAKlD,OAJKmiB,EAAcM,gBAAgB1mB,KACjCA,EAAO,IAAIomB,EAAcpmB,EAAMiE,IAG1B/D,KAAKstB,KAAKnE,QAAQrpB,EAAMiE,EACjC,EAOAmhB,EAASqI,EAASnG,GAElBmG,EAAQ5tB,UAAU+pB,SAAW,SAAiBmE,EAAQjG,EAAKK,GACzD,GAAI4F,EAAOlH,UACT,OAAO,EAET,MAAMc,EAAQoG,EAAOpH,OACfqH,EAAaN,EAAaK,EAAQ,wBAA0BjG,EAAM,KACxE,OAAIiG,EAAOlE,QAAQmE,GACVA,GAETD,EAAOnH,QAAQe,GAERqG,EAAWlG,MAAQA,GAAOkG,EAAWH,SAAW/F,GACpDkG,EAAWH,OAAS,OAAU/F,GAAOK,EAC1C,EAEAsF,EAAQ5tB,UAAUoqB,WAAa,SAAmB8D,EAAQjG,EAAKK,GAC7D,MAAM6F,EAAaN,EAAaK,EAC9B,4BAA8BjG,EAAM,KACtC,GAAIiG,EAAOlE,QAAQmE,GACjB,OAAOA,EAET,IAAI/Z,EAAM6Z,EAAaC,EACrBC,EAAWxC,UACX,4BAA8B1D,EAAM,KAGtC,GAAIiG,EAAOlE,QAAQ5V,GACjB,OAAOA,EAET,IAAKkU,GACD6F,EAAWlG,MAAQA,GACnBkG,EAAWH,SAAW/F,GACtBkG,EAAWH,OAAS,OAAS/F,EAC/B,OAAOiG,EAAOtrB,MAAM,yBAA2BqlB,EAAM,KAGvD,GAAIkG,EAAWxC,WAAqB,OAARvX,EAC1B,OAAO8Z,EAAOhH,KAAK9S,EAAK,6BAA+B6T,EAAM,KAG/D,MAAMH,EAAQoG,EAAOpH,OACf9jB,EAAM3C,KAAK+tB,cACfF,EACA,2CAA6C7tB,KAAK4nB,IAAM,KAC1D,OAAIiG,EAAOlE,QAAQhnB,GACVA,GAEToR,EAAM8Z,EAAOzH,OAASqB,EAAMrB,OAC5ByH,EAAOnH,QAAQe,GACRoG,EAAOhH,KAAK9S,EAAK,6BAA+B6T,EAAM,KAC/D,EAEA2F,EAAQ5tB,UAAUouB,cAAgB,SAAsBF,EAAQ9G,GAC9D,OAAS,CACP,MAAMa,EAAM4F,EAAaK,EAAQ9G,GACjC,GAAI8G,EAAOlE,QAAQ/B,GACjB,OAAOA,EACT,MAAM7T,EAAM6Z,EAAaC,EAAQjG,EAAI0D,UAAWvE,GAChD,GAAI8G,EAAOlE,QAAQ5V,GACjB,OAAOA,EAET,IAAIpR,EAOJ,GALEA,EADEilB,EAAI0D,WAAqB,OAARvX,EACb8Z,EAAOhH,KAAK9S,GAEZ/T,KAAK+tB,cAAcF,EAAQ9G,GAG/B8G,EAAOlE,QAAQhnB,GACjB,OAAOA,EAET,GAAmB,QAAfilB,EAAI+F,OACN,KACJ,CACF,EAEAJ,EAAQ5tB,UAAU4qB,YAAc,SAAoBsD,EAAQjG,EAAKoG,EAC/DjqB,GACA,MAAMuB,EAAS,GACf,MAAQuoB,EAAOlH,WAAW,CACxB,MAAMsH,EAAcjuB,KAAK0pB,SAASmE,EAAQ,OAC1C,GAAIA,EAAOlE,QAAQsE,GACjB,OAAOA,EAET,MAAMtrB,EAAMqrB,EAAQpI,OAAOiI,EAAQ,MAAO9pB,GAC1C,GAAI8pB,EAAOlE,QAAQhnB,IAAQsrB,EACzB,MACF3oB,EAAOmO,KAAK9Q,EACd,CACA,OAAO2C,CACT,EAEAioB,EAAQ5tB,UAAU6qB,WAAa,SAAmBqD,EAAQjG,GACxD,GAAY,WAARA,EAAkB,CACpB,MAAMsG,EAASL,EAAOjH,YACtB,OAAIiH,EAAOlE,QAAQuE,GACVA,EACF,CAAEA,OAAQA,EAAQpuB,KAAM+tB,EAAO/G,MACxC,CAAO,GAAY,WAARc,EAAkB,CAC3B,MAAMd,EAAM+G,EAAO/G,MACnB,GAAIA,EAAI3lB,OAAS,GAAM,EACrB,OAAO0sB,EAAOtrB,MAAM,mDAEtB,IAAI2I,EAAM,GACV,IAAK,IAAIhK,EAAI,EAAGA,EAAI4lB,EAAI3lB,OAAS,EAAGD,IAClCgK,GAAOijB,OAAOC,aAAatH,EAAIuH,aAAiB,EAAJntB,IAE9C,OAAOgK,CACT,CAAO,GAAY,WAAR0c,EAAkB,CAC3B,MAAM0G,EAAST,EAAO/G,MAAMyH,SAAS,SACrC,OAAKvuB,KAAKisB,UAAUqC,GAIbA,EAHET,EAAOtrB,MAAM,yDAIxB,CAAO,GAAY,WAARqlB,EACT,OAAOiG,EAAO/G,MACT,GAAY,YAARc,EACT,OAAOiG,EAAO/G,MACT,GAAY,aAARc,EAAoB,CAC7B,MAAM4G,EAAWX,EAAO/G,MAAMyH,SAAS,SACvC,OAAKvuB,KAAKksB,YAAYsC,GAIfA,EAHEX,EAAOtrB,MAAM,2DAIxB,CAAO,MAAI,OAAOoG,KAAKif,GACdiG,EAAO/G,MAAMyH,WAEbV,EAAOtrB,MAAM,4BAA8BqlB,EAAM,eAE5D,EAEA2F,EAAQ5tB,UAAU8qB,aAAe,SAAqBoD,EAAQY,EAAQC,GACpE,IAAIppB,EACJ,MAAMqpB,EAAc,GACpB,IAAIC,EAAQ,EACRC,EAAW,EACf,MAAQhB,EAAOlH,WACbkI,EAAWhB,EAAOjH,YAClBgI,IAAU,EACVA,GAAoB,IAAXC,EACiB,IAAV,IAAXA,KACHF,EAAYlb,KAAKmb,GACjBA,EAAQ,GAGG,IAAXC,GACFF,EAAYlb,KAAKmb,GAEnB,MAAME,EAASH,EAAY,GAAK,GAAM,EAChC9iB,EAAS8iB,EAAY,GAAK,GAOhC,GAJErpB,EADEopB,EACOC,EAEA,CAACG,EAAOjjB,GAAQ+H,OAAO+a,EAAYtqB,MAAM,IAEhDoqB,EAAQ,CACV,IAAIM,EAAMN,EAAOnpB,EAAOsL,KAAK,WACjBhQ,IAARmuB,IACFA,EAAMN,EAAOnpB,EAAOsL,KAAK,YACfhQ,IAARmuB,IACFzpB,EAASypB,EACb,CAEA,OAAOzpB,CACT,EAEAioB,EAAQ5tB,UAAU+qB,YAAc,SAAoBmD,EAAQjG,GAC1D,MAAM1c,EAAM2iB,EAAO/G,MAAMyH,WAEzB,IAAIljB,EACA2jB,EACAzjB,EACAI,EACAsjB,EACAC,EACJ,GAAY,YAARtH,EACFvc,EAAyB,EAAlBH,EAAI7G,MAAM,EAAG,GACpB2qB,EAAwB,EAAlB9jB,EAAI7G,MAAM,EAAG,GACnBkH,EAAwB,EAAlBL,EAAI7G,MAAM,EAAG,GACnBsH,EAA0B,EAAnBT,EAAI7G,MAAM,EAAG,IACpB4qB,EAA0B,EAApB/jB,EAAI7G,MAAM,GAAI,IACpB6qB,EAA0B,EAApBhkB,EAAI7G,MAAM,GAAI,QACf,IAAY,YAARujB,EAYT,OAAOiG,EAAOtrB,MAAM,YAAcqlB,EAAM,8BAXxCvc,EAAyB,EAAlBH,EAAI7G,MAAM,EAAG,GACpB2qB,EAAwB,EAAlB9jB,EAAI7G,MAAM,EAAG,GACnBkH,EAAwB,EAAlBL,EAAI7G,MAAM,EAAG,GACnBsH,EAAyB,EAAlBT,EAAI7G,MAAM,EAAG,GACpB4qB,EAAyB,EAAnB/jB,EAAI7G,MAAM,EAAG,IACnB6qB,EAA0B,EAApBhkB,EAAI7G,MAAM,GAAI,IAElBgH,EADEA,EAAO,GACF,IAAOA,EAEP,KAAOA,CAGlB,CAEA,OAAO8jB,KAAKC,IAAI/jB,EAAM2jB,EAAM,EAAGzjB,EAAKI,EAAMsjB,EAAKC,EAAK,EACtD,EAEA3B,EAAQ5tB,UAAUgrB,YAAc,WAC9B,OAAO,IACT,EAEA4C,EAAQ5tB,UAAUirB,YAAc,SAAoBiD,GAClD,MAAMlrB,EAAMkrB,EAAOjH,YACnB,OAAIiH,EAAOlE,QAAQhnB,GACVA,EAEQ,IAARA,CACX,EAEA4qB,EAAQ5tB,UAAUkrB,WAAa,SAAmBgD,EAAQY,GAExD,MAAM3H,EAAM+G,EAAO/G,MACnB,IAAInkB,EAAM,IAAIiiB,EAAOkC,GAKrB,OAHI2H,IACF9rB,EAAM8rB,EAAO9rB,EAAI4rB,SAAS,MAAQ5rB,GAE7BA,CACT,EAEA4qB,EAAQ5tB,UAAUmrB,KAAO,SAAatF,EAAQ1R,GAG5C,MAFsB,mBAAX0R,IACTA,EAASA,EAAO1R,IACX0R,EAAOE,YAAY,OAAO4H,IACnC,gCCzQA,MAAMtI,EAAWvlB,EAEjBulB,EAASoI,IAAM,EAAQ,OACvBpI,EAASqK,IAAM,EAAQ,qCCHvB,MAAMnK,EAAW,EAAQ,OACnBe,EAAS,eAEToH,EAAa,EAAQ,OAE3B,SAASiC,EAAW9J,GAClB6H,EAAWzqB,KAAK5C,KAAMwlB,GACtBxlB,KAAK2lB,IAAM,KACb,CACAT,EAASoK,EAAYjC,GACrB7tB,EAAOC,QAAU6vB,EAEjBA,EAAW3vB,UAAUimB,OAAS,SAAgB9lB,EAAMiE,GAClD,MAAMwrB,EAAQzvB,EAAKyuB,WAAWhiB,MAAM,YAE9BijB,EAAQzrB,EAAQyrB,MAAMC,cAEtBC,EAAK,kCACX,IAAI1F,GAAS,EACT2F,GAAO,EACX,IAAK,IAAIzuB,EAAI,EAAGA,EAAIquB,EAAMpuB,OAAQD,IAAK,CACrC,MAAMkK,EAAQmkB,EAAMruB,GAAGkK,MAAMskB,GAC7B,GAAc,OAAVtkB,GAGAA,EAAM,KAAOokB,EAAjB,CAGA,IAAe,IAAXxF,EAIG,CACL,GAAiB,QAAb5e,EAAM,GACR,MACFukB,EAAMzuB,EACN,KACF,CARE,GAAiB,UAAbkK,EAAM,GACR,MACF4e,EAAQ9oB,CALA,CAYZ,CACA,IAAe,IAAX8oB,IAAyB,IAAT2F,EAClB,MAAM,IAAIzvB,MAAM,8BAAgCsvB,GAElD,MAAMI,EAASL,EAAMlrB,MAAM2lB,EAAQ,EAAG2F,GAAK/e,KAAK,IAEhDgf,EAAO7c,QAAQ,kBAAmB,IAElC,MAAMqW,EAAQnD,EAAO4J,KAAKD,EAAQ,UAClC,OAAOvC,EAAW1tB,UAAUimB,OAAOhjB,KAAK5C,KAAMopB,EAAOrlB,EACvD,gCChDA,MAAMmhB,EAAW,EAAQ,OACnBe,EAAS,eACTmB,EAAO,EAAQ,OAGfgG,EAAM,EAAQ,OAEpB,SAAS0C,EAAWtK,GAClBxlB,KAAK2lB,IAAM,MACX3lB,KAAK4D,KAAO4hB,EAAO5hB,KACnB5D,KAAKwlB,OAASA,EAGdxlB,KAAKstB,KAAO,IAAIC,EAChBvtB,KAAKstB,KAAK3E,MAAMnD,EAAOJ,KACzB,CASA,SAASmI,EAAQ/F,GACfJ,EAAKxkB,KAAK5C,KAAM,MAAOwnB,EACzB,CAkHA,SAASuI,EAAI9G,GACX,OAAIA,EAAM,GACD,IAAMA,EAENA,CACX,CAjIAzpB,EAAOC,QAAUqwB,EAEjBA,EAAWnwB,UAAUmmB,OAAS,SAAgBhmB,EAAMimB,GAClD,OAAO/lB,KAAKstB,KAAKpC,QAAQprB,EAAMimB,GAAUnV,MAC3C,EAOAsU,EAASqI,EAASnG,GAElBmG,EAAQ5tB,UAAU+rB,iBAAmB,SAAyB9D,EAC5D0D,EACAG,EACAJ,GACA,MAAM2E,EA2OR,SAAmBpI,EAAK0D,EAAWG,EAAK1F,GACtC,IAAIpjB,EAOJ,GALY,UAARilB,EACFA,EAAM,MACS,UAARA,IACPA,EAAM,OAEJwF,EAAIF,UAAUvc,eAAeiX,GAC/BjlB,EAAMyqB,EAAIF,UAAUtF,OACjB,IAAmB,iBAARA,IAA2B,EAANA,KAAaA,EAGhD,OAAO7B,EAASxjB,MAAM,gBAAkBqlB,GAFxCjlB,EAAMilB,CAEsC,CAE9C,OAAIjlB,GAAO,GACFojB,EAASxjB,MAAM,yCAEnB+oB,IACH3oB,GAAO,IAETA,GAAQyqB,EAAIH,eAAexB,GAAO,cAAgB,EAE3C9oB,EACT,CAnQqBstB,CAAUrI,EAAK0D,EAAWG,EAAKzrB,KAAK+lB,UAGvD,GAAIsF,EAAQlqB,OAAS,IAAM,CACzB,MAAM+uB,EAASjK,EAAOiB,MAAM,GAG5B,OAFAgJ,EAAO,GAAKF,EACZE,EAAO,GAAK7E,EAAQlqB,OACbnB,KAAKirB,qBAAqB,CAAEiF,EAAQ7E,GAC7C,CAIA,IAAI8E,EAAY,EAChB,IAAK,IAAIjvB,EAAImqB,EAAQlqB,OAAQD,GAAK,IAAOA,IAAM,EAC7CivB,IAEF,MAAMD,EAASjK,EAAOiB,MAAM,EAAQiJ,GACpCD,EAAO,GAAKF,EACZE,EAAO,GAAK,IAAOC,EAEnB,IAAK,IAAIjvB,EAAI,EAAIivB,EAAWxY,EAAI0T,EAAQlqB,OAAQwW,EAAI,EAAGzW,IAAKyW,IAAM,EAChEuY,EAAOhvB,GAAS,IAAJyW,EAEd,OAAO3X,KAAKirB,qBAAqB,CAAEiF,EAAQ7E,GAC7C,EAEAkC,EAAQ5tB,UAAUgsB,WAAa,SAAmBzgB,EAAK0c,GACrD,GAAY,WAARA,EACF,OAAO5nB,KAAKirB,qBAAqB,CAAe,EAAb/f,EAAIgjB,OAAYhjB,EAAIpL,OAClD,GAAY,WAAR8nB,EAAkB,CAC3B,MAAM6F,EAAMxH,EAAOiB,MAAmB,EAAbhc,EAAI/J,QAC7B,IAAK,IAAID,EAAI,EAAGA,EAAIgK,EAAI/J,OAAQD,IAC9BusB,EAAI2C,cAAcllB,EAAI+I,WAAW/S,GAAQ,EAAJA,GAEvC,OAAOlB,KAAKirB,qBAAqBwC,EACnC,CAAO,MAAY,WAAR7F,EACJ5nB,KAAKisB,UAAU/gB,GAIblL,KAAKirB,qBAAqB/f,GAHxBlL,KAAK+lB,SAASxjB,MAAM,kEAIZ,aAARqlB,EACJ5nB,KAAKksB,YAAYhhB,GAQflL,KAAKirB,qBAAqB/f,GAPxBlL,KAAK+lB,SAASxjB,MAAM,qNAQpB,OAAOoG,KAAKif,IAEJ,YAARA,EADF5nB,KAAKirB,qBAAqB/f,GAI1BlL,KAAK+lB,SAASxjB,MAAM,4BAA8BqlB,EAC9B,eAE/B,EAEA2F,EAAQ5tB,UAAUisB,aAAe,SAAqBxqB,EAAIqtB,EAAQC,GAChE,GAAkB,iBAAPttB,EAAiB,CAC1B,IAAKqtB,EACH,OAAOzuB,KAAK+lB,SAASxjB,MAAM,+CAC7B,IAAKksB,EAAO9d,eAAevP,GACzB,OAAOpB,KAAK+lB,SAASxjB,MAAM,iCAC7BnB,EAAKqtB,EAAOrtB,GAAImL,MAAM,WACtB,IAAK,IAAIrL,EAAI,EAAGA,EAAIE,EAAGD,OAAQD,IAC7BE,EAAGF,IAAM,CACb,MAAO,GAAIF,MAAMC,QAAQG,GAAK,CAC5BA,EAAKA,EAAGiD,QACR,IAAK,IAAInD,EAAI,EAAGA,EAAIE,EAAGD,OAAQD,IAC7BE,EAAGF,IAAM,CACb,CAEA,IAAKF,MAAMC,QAAQG,GACjB,OAAOpB,KAAK+lB,SAASxjB,MAAM,kDACUkV,KAAKC,UAAUtW,IAGtD,IAAKstB,EAAU,CACb,GAAIttB,EAAG,IAAM,GACX,OAAOpB,KAAK+lB,SAASxjB,MAAM,+BAC7BnB,EAAG8L,OAAO,EAAG,EAAW,GAAR9L,EAAG,GAAUA,EAAG,GAClC,CAGA,IAAIivB,EAAO,EACX,IAAK,IAAInvB,EAAI,EAAGA,EAAIE,EAAGD,OAAQD,IAAK,CAClC,IAAI0tB,EAAQxtB,EAAGF,GACf,IAAKmvB,IAAQzB,GAAS,IAAMA,IAAU,EACpCyB,GACJ,CAEA,MAAMC,EAAQrK,EAAOiB,MAAMmJ,GAC3B,IAAIjK,EAASkK,EAAMnvB,OAAS,EAC5B,IAAK,IAAID,EAAIE,EAAGD,OAAS,EAAGD,GAAK,EAAGA,IAAK,CACvC,IAAI0tB,EAAQxtB,EAAGF,GAEf,IADAovB,EAAMlK,KAAoB,IAARwI,GACVA,IAAU,GAAK,GACrB0B,EAAMlK,KAAY,IAAgB,IAARwI,CAC9B,CAEA,OAAO5uB,KAAKirB,qBAAqBqF,EACnC,EASA/C,EAAQ5tB,UAAUksB,YAAc,SAAoBpgB,EAAMmc,GACxD,IAAI1c,EACJ,MAAMD,EAAO,IAAIkkB,KAAK1jB,GA0BtB,MAxBY,YAARmc,EACF1c,EAAM,CACJ6kB,EAAI9kB,EAAKslB,kBACTR,EAAI9kB,EAAKulB,cAAgB,GACzBT,EAAI9kB,EAAKwlB,cACTV,EAAI9kB,EAAKylB,eACTX,EAAI9kB,EAAK0lB,iBACTZ,EAAI9kB,EAAK2lB,iBACT,KACAhgB,KAAK,IACU,YAARgX,EACT1c,EAAM,CACJ6kB,EAAI9kB,EAAKslB,iBAAmB,KAC5BR,EAAI9kB,EAAKulB,cAAgB,GACzBT,EAAI9kB,EAAKwlB,cACTV,EAAI9kB,EAAKylB,eACTX,EAAI9kB,EAAK0lB,iBACTZ,EAAI9kB,EAAK2lB,iBACT,KACAhgB,KAAK,IAEP5Q,KAAK+lB,SAASxjB,MAAM,YAAcqlB,EAAM,8BAGnC5nB,KAAK2rB,WAAWzgB,EAAK,SAC9B,EAEAqiB,EAAQ5tB,UAAUmsB,YAAc,WAC9B,OAAO9rB,KAAKirB,qBAAqB,GACnC,EAEAsC,EAAQ5tB,UAAUosB,WAAa,SAAmB9C,EAAKwF,GACrD,GAAmB,iBAARxF,EAAkB,CAC3B,IAAKwF,EACH,OAAOzuB,KAAK+lB,SAASxjB,MAAM,+CAC7B,IAAKksB,EAAO9d,eAAesY,GACzB,OAAOjpB,KAAK+lB,SAASxjB,MAAM,+BACAkV,KAAKC,UAAUuR,IAE5CA,EAAMwF,EAAOxF,EACf,CAGA,GAAmB,iBAARA,IAAqBhD,EAAOE,SAAS8C,GAAM,CACpD,MAAM4H,EAAW5H,EAAI6H,WAChB7H,EAAI8H,MAAsB,IAAdF,EAAS,IACxBA,EAASG,QAAQ,GAEnB/H,EAAMhD,EAAO4J,KAAKgB,EACpB,CAEA,GAAI5K,EAAOE,SAAS8C,GAAM,CACxB,IAAIoH,EAAOpH,EAAI9nB,OACI,IAAf8nB,EAAI9nB,QACNkvB,IAEF,MAAM3X,EAAMuN,EAAOiB,MAAMmJ,GAIzB,OAHApH,EAAIxiB,KAAKiS,GACU,IAAfuQ,EAAI9nB,SACNuX,EAAI,GAAK,GACJ1Y,KAAKirB,qBAAqBvS,EACnC,CAEA,GAAIuQ,EAAM,IACR,OAAOjpB,KAAKirB,qBAAqBhC,GAEnC,GAAIA,EAAM,IACR,OAAOjpB,KAAKirB,qBAAqB,CAAC,EAAGhC,IAEvC,IAAIoH,EAAO,EACX,IAAK,IAAInvB,EAAI+nB,EAAK/nB,GAAK,IAAOA,IAAM,EAClCmvB,IAEF,MAAM3X,EAAM,IAAI1X,MAAMqvB,GACtB,IAAK,IAAInvB,EAAIwX,EAAIvX,OAAS,EAAGD,GAAK,EAAGA,IACnCwX,EAAIxX,GAAW,IAAN+nB,EACTA,IAAQ,EAMV,OAJY,IAATvQ,EAAI,IACLA,EAAIsY,QAAQ,GAGPhxB,KAAKirB,qBAAqBhF,EAAO4J,KAAKnX,GAC/C,EAEA6U,EAAQ5tB,UAAUqsB,YAAc,SAAoBpjB,GAClD,OAAO5I,KAAKirB,qBAAqBriB,EAAQ,IAAO,EAClD,EAEA2kB,EAAQ5tB,UAAUmrB,KAAO,SAAatF,EAAQ1R,GAG5C,MAFsB,mBAAX0R,IACTA,EAASA,EAAO1R,IACX0R,EAAOK,YAAY,OAAOyH,IACnC,EAEAC,EAAQ5tB,UAAUyrB,aAAe,SAAqB6F,EAAYlL,EAAUyB,GAC1E,MAAMC,EAAQznB,KAAK0nB,WACnB,IAAIxmB,EACJ,GAAyB,OAArBumB,EAAe,QACjB,OAAO,EAET,MAAM3nB,EAAOmxB,EAAWrgB,OAIxB,QAH4BhQ,IAAxB6mB,EAAMyJ,gBACRzJ,EAAMyJ,cAAgBlxB,KAAKmrB,aAAa1D,EAAe,QAAG1B,EAAUyB,GAAQ5W,QAE1E9Q,EAAKqB,SAAWsmB,EAAMyJ,cAAc/vB,OACtC,OAAO,EAET,IAAKD,EAAE,EAAGA,EAAIpB,EAAKqB,OAAQD,IACzB,GAAIpB,EAAKoB,KAAOumB,EAAMyJ,cAAchwB,GAClC,OAAO,EAEX,OAAO,CACT,gCCxQA,MAAM+jB,EAAWxlB,EAEjBwlB,EAASmI,IAAM,EAAQ,OACvBnI,EAASoK,IAAM,EAAQ,mCCHvB,MAAMnK,EAAW,EAAQ,OAEnB4K,EAAa,EAAQ,OAE3B,SAASqB,EAAW3L,GAClBsK,EAAWltB,KAAK5C,KAAMwlB,GACtBxlB,KAAK2lB,IAAM,KACb,CACAT,EAASiM,EAAYrB,GACrBtwB,EAAOC,QAAU0xB,EAEjBA,EAAWxxB,UAAUmmB,OAAS,SAAgBhmB,EAAMiE,GAClD,MAEMgF,EAFM+mB,EAAWnwB,UAAUmmB,OAAOljB,KAAK5C,KAAMF,GAErCyuB,SAAS,UACjB7V,EAAM,CAAE,cAAgB3U,EAAQyrB,MAAQ,SAC9C,IAAK,IAAItuB,EAAI,EAAGA,EAAI6H,EAAE5H,OAAQD,GAAK,GACjCwX,EAAIjF,KAAK1K,EAAE1E,MAAMnD,EAAGA,EAAI,KAE1B,OADAwX,EAAIjF,KAAK,YAAc1P,EAAQyrB,MAAQ,SAChC9W,EAAI9H,KAAK,KAClB,yBCtBA,SAAWpR,EAAQC,GACjB,aAGA,SAAS4nB,EAAQ2B,EAAKoD,GACpB,IAAKpD,EAAK,MAAM,IAAI9oB,MAAMksB,GAAO,mBACnC,CAIA,SAASlH,EAAUkM,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,WAAa,EAC5BA,EAAS5xB,UAAY0xB,EAAU1xB,UAC/ByxB,EAAKzxB,UAAY,IAAI4xB,EACrBH,EAAKzxB,UAAUuK,YAAcknB,CAC/B,CAIA,SAASI,EAAItc,EAAQ4P,EAAM2M,GACzB,GAAID,EAAGE,KAAKxc,GACV,OAAOA,EAGTlV,KAAK2xB,SAAW,EAChB3xB,KAAK4xB,MAAQ,KACb5xB,KAAKmB,OAAS,EAGdnB,KAAK6xB,IAAM,KAEI,OAAX3c,IACW,OAAT4P,GAA0B,OAATA,IACnB2M,EAAS3M,EACTA,EAAO,IAGT9kB,KAAK2oB,MAAMzT,GAAU,EAAG4P,GAAQ,GAAI2M,GAAU,MAElD,CAUA,IAAIxL,EATkB,iBAAXzmB,EACTA,EAAOC,QAAU+xB,EAEjB/xB,EAAQ+xB,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGM,SAAW,GAGd,IAEI7L,EADoB,oBAAX8L,aAAmD,IAAlBA,OAAO9L,OACxC8L,OAAO9L,OAEP,eAGb,CADE,MAAO9hB,GACT,CA+HA,SAAS6tB,EAAeC,EAAQllB,GAC9B,IAAII,EAAI8kB,EAAOhe,WAAWlH,GAE1B,OAAII,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,GAGHA,EAAI,GAAM,EAEtB,CAEA,SAAS+kB,EAAcD,EAAQE,EAAYplB,GACzC,IAAIqlB,EAAIJ,EAAcC,EAAQllB,GAI9B,OAHIA,EAAQ,GAAKolB,IACfC,GAAKJ,EAAcC,EAAQllB,EAAQ,IAAM,GAEpCqlB,CACT,CA6CA,SAASC,EAAWnnB,EAAK8e,EAAO2F,EAAK2C,GAGnC,IAFA,IAAIF,EAAI,EACJre,EAAM0G,KAAKwU,IAAI/jB,EAAI/J,OAAQwuB,GACtBzuB,EAAI8oB,EAAO9oB,EAAI6S,EAAK7S,IAAK,CAChC,IAAIiM,EAAIjC,EAAI+I,WAAW/S,GAAK,GAE5BkxB,GAAKE,EAIHF,GADEjlB,GAAK,GACFA,EAAI,GAAK,GAGLA,GAAK,GACTA,EAAI,GAAK,GAITA,CAET,CACA,OAAOilB,CACT,CApNAZ,EAAGE,KAAO,SAAezI,GACvB,OAAIA,aAAeuI,GAIJ,OAARvI,GAA+B,iBAARA,GAC5BA,EAAI/e,YAAY4nB,WAAaN,EAAGM,UAAY9wB,MAAMC,QAAQgoB,EAAI2I,MAClE,EAEAJ,EAAGe,IAAM,SAAcC,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,CACT,EAEAjB,EAAGvC,IAAM,SAAcuD,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,CACT,EAEAjB,EAAG7xB,UAAUgpB,MAAQ,SAAezT,EAAQ4P,EAAM2M,GAChD,GAAsB,iBAAXvc,EACT,OAAOlV,KAAK2yB,YAAYzd,EAAQ4P,EAAM2M,GAGxC,GAAsB,iBAAXvc,EACT,OAAOlV,KAAK4yB,WAAW1d,EAAQ4P,EAAM2M,GAG1B,QAAT3M,IACFA,EAAO,IAETuC,EAAOvC,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAGnD,IAAIkF,EAAQ,EACM,OAFlB9U,EAASA,EAAOqZ,WAAWxb,QAAQ,OAAQ,KAEhC,KACTiX,IACAhqB,KAAK2xB,SAAW,GAGd3H,EAAQ9U,EAAO/T,SACJ,KAAT2jB,EACF9kB,KAAK6yB,UAAU3d,EAAQ8U,EAAOyH,IAE9BzxB,KAAK8yB,WAAW5d,EAAQ4P,EAAMkF,GACf,OAAXyH,GACFzxB,KAAK4yB,WAAW5yB,KAAK8wB,UAAWhM,EAAM2M,IAI9C,EAEAD,EAAG7xB,UAAUgzB,YAAc,SAAsBzd,EAAQ4P,EAAM2M,GACzDvc,EAAS,IACXlV,KAAK2xB,SAAW,EAChBzc,GAAUA,GAERA,EAAS,UACXlV,KAAK4xB,MAAQ,CAAW,SAAT1c,GACflV,KAAKmB,OAAS,GACL+T,EAAS,kBAClBlV,KAAK4xB,MAAQ,CACF,SAAT1c,EACCA,EAAS,SAAa,UAEzBlV,KAAKmB,OAAS,IAEdkmB,EAAOnS,EAAS,kBAChBlV,KAAK4xB,MAAQ,CACF,SAAT1c,EACCA,EAAS,SAAa,SACvB,GAEFlV,KAAKmB,OAAS,GAGD,OAAXswB,GAGJzxB,KAAK4yB,WAAW5yB,KAAK8wB,UAAWhM,EAAM2M,EACxC,EAEAD,EAAG7xB,UAAUizB,WAAa,SAAqB1d,EAAQ4P,EAAM2M,GAG3D,GADApK,EAAgC,iBAAlBnS,EAAO/T,QACjB+T,EAAO/T,QAAU,EAGnB,OAFAnB,KAAK4xB,MAAQ,CAAE,GACf5xB,KAAKmB,OAAS,EACPnB,KAGTA,KAAKmB,OAASsZ,KAAKsY,KAAK7d,EAAO/T,OAAS,GACxCnB,KAAK4xB,MAAQ,IAAI5wB,MAAMhB,KAAKmB,QAC5B,IAAK,IAAID,EAAI,EAAGA,EAAIlB,KAAKmB,OAAQD,IAC/BlB,KAAK4xB,MAAM1wB,GAAK,EAGlB,IAAIyW,EAAGqb,EACHC,EAAM,EACV,GAAe,OAAXxB,EACF,IAAKvwB,EAAIgU,EAAO/T,OAAS,EAAGwW,EAAI,EAAGzW,GAAK,EAAGA,GAAK,EAC9C8xB,EAAI9d,EAAOhU,GAAMgU,EAAOhU,EAAI,IAAM,EAAMgU,EAAOhU,EAAI,IAAM,GACzDlB,KAAK4xB,MAAMja,IAAOqb,GAAKC,EAAO,SAC9BjzB,KAAK4xB,MAAMja,EAAI,GAAMqb,IAAO,GAAKC,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACPtb,UAGC,GAAe,OAAX8Z,EACT,IAAKvwB,EAAI,EAAGyW,EAAI,EAAGzW,EAAIgU,EAAO/T,OAAQD,GAAK,EACzC8xB,EAAI9d,EAAOhU,GAAMgU,EAAOhU,EAAI,IAAM,EAAMgU,EAAOhU,EAAI,IAAM,GACzDlB,KAAK4xB,MAAMja,IAAOqb,GAAKC,EAAO,SAC9BjzB,KAAK4xB,MAAMja,EAAI,GAAMqb,IAAO,GAAKC,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACPtb,KAIN,OAAO3X,KAAKkzB,OACd,EAwBA1B,EAAG7xB,UAAUkzB,UAAY,SAAoB3d,EAAQ8U,EAAOyH,GAE1DzxB,KAAKmB,OAASsZ,KAAKsY,MAAM7d,EAAO/T,OAAS6oB,GAAS,GAClDhqB,KAAK4xB,MAAQ,IAAI5wB,MAAMhB,KAAKmB,QAC5B,IAAK,IAAID,EAAI,EAAGA,EAAIlB,KAAKmB,OAAQD,IAC/BlB,KAAK4xB,MAAM1wB,GAAK,EAIlB,IAGI8xB,EAHAC,EAAM,EACNtb,EAAI,EAGR,GAAe,OAAX8Z,EACF,IAAKvwB,EAAIgU,EAAO/T,OAAS,EAAGD,GAAK8oB,EAAO9oB,GAAK,EAC3C8xB,EAAId,EAAahd,EAAQ8U,EAAO9oB,IAAM+xB,EACtCjzB,KAAK4xB,MAAMja,IAAU,SAAJqb,EACbC,GAAO,IACTA,GAAO,GACPtb,GAAK,EACL3X,KAAK4xB,MAAMja,IAAMqb,IAAM,IAEvBC,GAAO,OAKX,IAAK/xB,GADagU,EAAO/T,OAAS6oB,GACX,GAAM,EAAIA,EAAQ,EAAIA,EAAO9oB,EAAIgU,EAAO/T,OAAQD,GAAK,EAC1E8xB,EAAId,EAAahd,EAAQ8U,EAAO9oB,IAAM+xB,EACtCjzB,KAAK4xB,MAAMja,IAAU,SAAJqb,EACbC,GAAO,IACTA,GAAO,GACPtb,GAAK,EACL3X,KAAK4xB,MAAMja,IAAMqb,IAAM,IAEvBC,GAAO,EAKbjzB,KAAKkzB,OACP,EA0BA1B,EAAG7xB,UAAUmzB,WAAa,SAAqB5d,EAAQ4P,EAAMkF,GAE3DhqB,KAAK4xB,MAAQ,CAAE,GACf5xB,KAAKmB,OAAS,EAGd,IAAK,IAAIgyB,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWtO,EAClEqO,IAEFA,IACAC,EAAWA,EAAUtO,EAAQ,EAO7B,IALA,IAAIuO,EAAQne,EAAO/T,OAAS6oB,EACxBsJ,EAAMD,EAAQF,EACdxD,EAAMlV,KAAKwU,IAAIoE,EAAOA,EAAQC,GAAOtJ,EAErCuJ,EAAO,EACFryB,EAAI8oB,EAAO9oB,EAAIyuB,EAAKzuB,GAAKiyB,EAChCI,EAAOlB,EAAUnd,EAAQhU,EAAGA,EAAIiyB,EAASrO,GAEzC9kB,KAAKwzB,MAAMJ,GACPpzB,KAAK4xB,MAAM,GAAK2B,EAAO,SACzBvzB,KAAK4xB,MAAM,IAAM2B,EAEjBvzB,KAAKyzB,OAAOF,GAIhB,GAAY,IAARD,EAAW,CACb,IAAII,EAAM,EAGV,IAFAH,EAAOlB,EAAUnd,EAAQhU,EAAGgU,EAAO/T,OAAQ2jB,GAEtC5jB,EAAI,EAAGA,EAAIoyB,EAAKpyB,IACnBwyB,GAAO5O,EAGT9kB,KAAKwzB,MAAME,GACP1zB,KAAK4xB,MAAM,GAAK2B,EAAO,SACzBvzB,KAAK4xB,MAAM,IAAM2B,EAEjBvzB,KAAKyzB,OAAOF,EAEhB,CAEAvzB,KAAKkzB,OACP,EAEA1B,EAAG7xB,UAAU8G,KAAO,SAAektB,GACjCA,EAAK/B,MAAQ,IAAI5wB,MAAMhB,KAAKmB,QAC5B,IAAK,IAAID,EAAI,EAAGA,EAAIlB,KAAKmB,OAAQD,IAC/ByyB,EAAK/B,MAAM1wB,GAAKlB,KAAK4xB,MAAM1wB,GAE7ByyB,EAAKxyB,OAASnB,KAAKmB,OACnBwyB,EAAKhC,SAAW3xB,KAAK2xB,SACrBgC,EAAK9B,IAAM7xB,KAAK6xB,GAClB,EAEAL,EAAG7xB,UAAU6oB,MAAQ,WACnB,IAAI4J,EAAI,IAAIZ,EAAG,MAEf,OADAxxB,KAAKyG,KAAK2rB,GACHA,CACT,EAEAZ,EAAG7xB,UAAUi0B,QAAU,SAAkBvD,GACvC,KAAOrwB,KAAKmB,OAASkvB,GACnBrwB,KAAK4xB,MAAM5xB,KAAKmB,UAAY,EAE9B,OAAOnB,IACT,EAGAwxB,EAAG7xB,UAAUuzB,MAAQ,WACnB,KAAOlzB,KAAKmB,OAAS,GAAqC,IAAhCnB,KAAK4xB,MAAM5xB,KAAKmB,OAAS,IACjDnB,KAAKmB,SAEP,OAAOnB,KAAK6zB,WACd,EAEArC,EAAG7xB,UAAUk0B,UAAY,WAKvB,OAHoB,IAAhB7zB,KAAKmB,QAAkC,IAAlBnB,KAAK4xB,MAAM,KAClC5xB,KAAK2xB,SAAW,GAEX3xB,IACT,EAEAwxB,EAAG7xB,UAAUm0B,QAAU,WACrB,OAAQ9zB,KAAK6xB,IAAM,UAAY,SAAW7xB,KAAKuuB,SAAS,IAAM,GAChE,EAgCA,IAAIwF,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,6BAGEC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGhBC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAsjB9D,SAASC,EAAYlyB,EAAMinB,EAAKvQ,GAC9BA,EAAIiZ,SAAW1I,EAAI0I,SAAW3vB,EAAK2vB,SACnC,IAAI5d,EAAO/R,EAAKb,OAAS8nB,EAAI9nB,OAAU,EACvCuX,EAAIvX,OAAS4S,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIsD,EAAoB,EAAhBrV,EAAK4vB,MAAM,GACfta,EAAmB,EAAf2R,EAAI2I,MAAM,GACdQ,EAAI/a,EAAIC,EAER6c,EAAS,SAAJ/B,EACLgC,EAAShC,EAAI,SAAa,EAC9B1Z,EAAIkZ,MAAM,GAAKuC,EAEf,IAAK,IAAI3gB,EAAI,EAAGA,EAAIO,EAAKP,IAAK,CAM5B,IAHA,IAAI6gB,EAASD,IAAU,GACnBE,EAAgB,SAARF,EACRG,EAAO9Z,KAAKwU,IAAIzb,EAAGyV,EAAI9nB,OAAS,GAC3BwW,EAAI8C,KAAK8X,IAAI,EAAG/e,EAAIxR,EAAKb,OAAS,GAAIwW,GAAK4c,EAAM5c,IAAK,CAC7D,IAAIzW,EAAKsS,EAAImE,EAAK,EAIlB0c,IADAjC,GAFA/a,EAAoB,EAAhBrV,EAAK4vB,MAAM1wB,KACfoW,EAAmB,EAAf2R,EAAI2I,MAAMja,IACF2c,GACG,SAAa,EAC5BA,EAAY,SAAJlC,CACV,CACA1Z,EAAIkZ,MAAMpe,GAAa,EAAR8gB,EACfF,EAAiB,EAATC,CACV,CAOA,OANc,IAAVD,EACF1b,EAAIkZ,MAAMpe,GAAa,EAAR4gB,EAEf1b,EAAIvX,SAGCuX,EAAIwa,OACb,CA1lBA1B,EAAG7xB,UAAU4uB,SAAW,SAAmBzJ,EAAM0P,GAI/C,IAAI9b,EACJ,GAHA8b,EAAoB,EAAVA,GAAe,EAGZ,MAJb1P,EAAOA,GAAQ,KAIa,QAATA,EAAgB,CACjCpM,EAAM,GAGN,IAFA,IAAIua,EAAM,EACNmB,EAAQ,EACHlzB,EAAI,EAAGA,EAAIlB,KAAKmB,OAAQD,IAAK,CACpC,IAAI8xB,EAAIhzB,KAAK4xB,MAAM1wB,GACfqyB,GAA+B,UAArBP,GAAKC,EAAOmB,IAAmB7F,SAAS,IAGpD7V,EADY,IADd0b,EAASpB,IAAO,GAAKC,EAAQ,WACV/xB,IAAMlB,KAAKmB,OAAS,EAC/B4yB,EAAM,EAAIR,EAAKpyB,QAAUoyB,EAAO7a,EAEhC6a,EAAO7a,GAEfua,GAAO,IACI,KACTA,GAAO,GACP/xB,IAEJ,CAIA,IAHc,IAAVkzB,IACF1b,EAAM0b,EAAM7F,SAAS,IAAM7V,GAEtBA,EAAIvX,OAASqzB,GAAY,GAC9B9b,EAAM,IAAMA,EAKd,OAHsB,IAAlB1Y,KAAK2xB,WACPjZ,EAAM,IAAMA,GAEPA,CACT,CAEA,GAAIoM,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAI2P,EAAYT,EAAWlP,GAEvB4P,EAAYT,EAAWnP,GAC3BpM,EAAM,GACN,IAAIvL,EAAInN,KAAKwoB,QAEb,IADArb,EAAEwkB,SAAW,GACLxkB,EAAEwnB,UAAU,CAClB,IAAIvC,EAAIjlB,EAAEynB,KAAKF,GAAWnG,SAASzJ,GAMjCpM,GALFvL,EAAIA,EAAE0nB,MAAMH,IAELC,SAGCvC,EAAI1Z,EAFJqb,EAAMU,EAAYrC,EAAEjxB,QAAUixB,EAAI1Z,CAI5C,CAIA,IAHI1Y,KAAK20B,WACPjc,EAAM,IAAMA,GAEPA,EAAIvX,OAASqzB,GAAY,GAC9B9b,EAAM,IAAMA,EAKd,OAHsB,IAAlB1Y,KAAK2xB,WACPjZ,EAAM,IAAMA,GAEPA,CACT,CAEA2O,GAAO,EAAO,kCAChB,EAEAmK,EAAG7xB,UAAUm1B,SAAW,WACtB,IAAIC,EAAM/0B,KAAK4xB,MAAM,GASrB,OARoB,IAAhB5xB,KAAKmB,OACP4zB,GAAuB,SAAhB/0B,KAAK4xB,MAAM,GACO,IAAhB5xB,KAAKmB,QAAkC,IAAlBnB,KAAK4xB,MAAM,GAEzCmD,GAAO,iBAAoC,SAAhB/0B,KAAK4xB,MAAM,GAC7B5xB,KAAKmB,OAAS,GACvBkmB,GAAO,EAAO,8CAEU,IAAlBrnB,KAAK2xB,UAAmBoD,EAAMA,CACxC,EAEAvD,EAAG7xB,UAAUq1B,OAAS,WACpB,OAAOh1B,KAAKuuB,SAAS,GACvB,EAEAiD,EAAG7xB,UAAUs1B,SAAW,SAAmBxD,EAAQtwB,GAEjD,OADAkmB,OAAyB,IAAXpB,GACPjmB,KAAKk1B,YAAYjP,EAAQwL,EAAQtwB,EAC1C,EAEAqwB,EAAG7xB,UAAUmxB,QAAU,SAAkBW,EAAQtwB,GAC/C,OAAOnB,KAAKk1B,YAAYl0B,MAAOywB,EAAQtwB,EACzC,EAEAqwB,EAAG7xB,UAAUu1B,YAAc,SAAsBC,EAAW1D,EAAQtwB,GAClE,IAAIolB,EAAavmB,KAAKumB,aAClB6O,EAAYj0B,GAAUsZ,KAAK8X,IAAI,EAAGhM,GACtCc,EAAOd,GAAc6O,EAAW,yCAChC/N,EAAO+N,EAAY,EAAG,+BAEtBp1B,KAAKkzB,QACL,IAGI5b,EAAGpW,EAHHm0B,EAA0B,OAAX5D,EACf9uB,EAAM,IAAIwyB,EAAUC,GAGpBE,EAAIt1B,KAAKwoB,QACb,GAAK6M,EAYE,CACL,IAAKn0B,EAAI,GAAIo0B,EAAEX,SAAUzzB,IACvBoW,EAAIge,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAET7yB,EAAIzB,GAAKoW,EAGX,KAAOpW,EAAIk0B,EAAWl0B,IACpByB,EAAIzB,GAAK,CAEb,KAvBmB,CAEjB,IAAKA,EAAI,EAAGA,EAAIk0B,EAAY7O,EAAYrlB,IACtCyB,EAAIzB,GAAK,EAGX,IAAKA,EAAI,GAAIo0B,EAAEX,SAAUzzB,IACvBoW,EAAIge,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAET7yB,EAAIyyB,EAAYl0B,EAAI,GAAKoW,CAE7B,CAaA,OAAO3U,CACT,EAEI8X,KAAKgb,MACPjE,EAAG7xB,UAAU+1B,WAAa,SAAqB1C,GAC7C,OAAO,GAAKvY,KAAKgb,MAAMzC,EACzB,EAEAxB,EAAG7xB,UAAU+1B,WAAa,SAAqB1C,GAC7C,IAAIle,EAAIke,EACJZ,EAAI,EAiBR,OAhBItd,GAAK,OACPsd,GAAK,GACLtd,KAAO,IAELA,GAAK,KACPsd,GAAK,EACLtd,KAAO,GAELA,GAAK,IACPsd,GAAK,EACLtd,KAAO,GAELA,GAAK,IACPsd,GAAK,EACLtd,KAAO,GAEFsd,EAAItd,CACb,EAGF0c,EAAG7xB,UAAUg2B,UAAY,SAAoB3C,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAIle,EAAIke,EACJZ,EAAI,EAoBR,OAnBqB,IAAZ,KAAJtd,KACHsd,GAAK,GACLtd,KAAO,IAEU,IAAV,IAAJA,KACHsd,GAAK,EACLtd,KAAO,GAES,IAAT,GAAJA,KACHsd,GAAK,EACLtd,KAAO,GAES,IAAT,EAAJA,KACHsd,GAAK,EACLtd,KAAO,GAES,IAAT,EAAJA,IACHsd,IAEKA,CACT,EAGAZ,EAAG7xB,UAAUi2B,UAAY,WACvB,IAAI5C,EAAIhzB,KAAK4xB,MAAM5xB,KAAKmB,OAAS,GAC7B00B,EAAK71B,KAAK01B,WAAW1C,GACzB,OAA2B,IAAnBhzB,KAAKmB,OAAS,GAAU00B,CAClC,EAgBArE,EAAG7xB,UAAUm2B,SAAW,WACtB,GAAI91B,KAAK20B,SAAU,OAAO,EAG1B,IADA,IAAIvC,EAAI,EACClxB,EAAI,EAAGA,EAAIlB,KAAKmB,OAAQD,IAAK,CACpC,IAAIoW,EAAItX,KAAK21B,UAAU31B,KAAK4xB,MAAM1wB,IAElC,GADAkxB,GAAK9a,EACK,KAANA,EAAU,KAChB,CACA,OAAO8a,CACT,EAEAZ,EAAG7xB,UAAU4mB,WAAa,WACxB,OAAO9L,KAAKsY,KAAK/yB,KAAK41B,YAAc,EACtC,EAEApE,EAAG7xB,UAAUo2B,OAAS,SAAiBC,GACrC,OAAsB,IAAlBh2B,KAAK2xB,SACA3xB,KAAKi2B,MAAMC,MAAMF,GAAOG,MAAM,GAEhCn2B,KAAKwoB,OACd,EAEAgJ,EAAG7xB,UAAUy2B,SAAW,SAAmBJ,GACzC,OAAIh2B,KAAKq2B,MAAML,EAAQ,GACdh2B,KAAKs2B,KAAKN,GAAOG,MAAM,GAAGI,OAE5Bv2B,KAAKwoB,OACd,EAEAgJ,EAAG7xB,UAAU62B,MAAQ,WACnB,OAAyB,IAAlBx2B,KAAK2xB,QACd,EAGAH,EAAG7xB,UAAU82B,IAAM,WACjB,OAAOz2B,KAAKwoB,QAAQ+N,MACtB,EAEA/E,EAAG7xB,UAAU42B,KAAO,WAKlB,OAJKv2B,KAAK20B,WACR30B,KAAK2xB,UAAY,GAGZ3xB,IACT,EAGAwxB,EAAG7xB,UAAU+2B,KAAO,SAAezN,GACjC,KAAOjpB,KAAKmB,OAAS8nB,EAAI9nB,QACvBnB,KAAK4xB,MAAM5xB,KAAKmB,UAAY,EAG9B,IAAK,IAAID,EAAI,EAAGA,EAAI+nB,EAAI9nB,OAAQD,IAC9BlB,KAAK4xB,MAAM1wB,GAAKlB,KAAK4xB,MAAM1wB,GAAK+nB,EAAI2I,MAAM1wB,GAG5C,OAAOlB,KAAKkzB,OACd,EAEA1B,EAAG7xB,UAAUg3B,IAAM,SAAc1N,GAE/B,OADA5B,EAA0C,IAAlCrnB,KAAK2xB,SAAW1I,EAAI0I,WACrB3xB,KAAK02B,KAAKzN,EACnB,EAGAuI,EAAG7xB,UAAUi3B,GAAK,SAAa3N,GAC7B,OAAIjpB,KAAKmB,OAAS8nB,EAAI9nB,OAAenB,KAAKwoB,QAAQmO,IAAI1N,GAC/CA,EAAIT,QAAQmO,IAAI32B,KACzB,EAEAwxB,EAAG7xB,UAAUk3B,IAAM,SAAc5N,GAC/B,OAAIjpB,KAAKmB,OAAS8nB,EAAI9nB,OAAenB,KAAKwoB,QAAQkO,KAAKzN,GAChDA,EAAIT,QAAQkO,KAAK12B,KAC1B,EAGAwxB,EAAG7xB,UAAUm3B,MAAQ,SAAgB7N,GAEnC,IAAI3R,EAEFA,EADEtX,KAAKmB,OAAS8nB,EAAI9nB,OAChB8nB,EAEAjpB,KAGN,IAAK,IAAIkB,EAAI,EAAGA,EAAIoW,EAAEnW,OAAQD,IAC5BlB,KAAK4xB,MAAM1wB,GAAKlB,KAAK4xB,MAAM1wB,GAAK+nB,EAAI2I,MAAM1wB,GAK5C,OAFAlB,KAAKmB,OAASmW,EAAEnW,OAETnB,KAAKkzB,OACd,EAEA1B,EAAG7xB,UAAUo3B,KAAO,SAAe9N,GAEjC,OADA5B,EAA0C,IAAlCrnB,KAAK2xB,SAAW1I,EAAI0I,WACrB3xB,KAAK82B,MAAM7N,EACpB,EAGAuI,EAAG7xB,UAAUq3B,IAAM,SAAc/N,GAC/B,OAAIjpB,KAAKmB,OAAS8nB,EAAI9nB,OAAenB,KAAKwoB,QAAQuO,KAAK9N,GAChDA,EAAIT,QAAQuO,KAAK/2B,KAC1B,EAEAwxB,EAAG7xB,UAAUs3B,KAAO,SAAehO,GACjC,OAAIjpB,KAAKmB,OAAS8nB,EAAI9nB,OAAenB,KAAKwoB,QAAQsO,MAAM7N,GACjDA,EAAIT,QAAQsO,MAAM92B,KAC3B,EAGAwxB,EAAG7xB,UAAUu3B,MAAQ,SAAgBjO,GAEnC,IAAI5R,EACAC,EACAtX,KAAKmB,OAAS8nB,EAAI9nB,QACpBkW,EAAIrX,KACJsX,EAAI2R,IAEJ5R,EAAI4R,EACJ3R,EAAItX,MAGN,IAAK,IAAIkB,EAAI,EAAGA,EAAIoW,EAAEnW,OAAQD,IAC5BlB,KAAK4xB,MAAM1wB,GAAKmW,EAAEua,MAAM1wB,GAAKoW,EAAEsa,MAAM1wB,GAGvC,GAAIlB,OAASqX,EACX,KAAOnW,EAAImW,EAAElW,OAAQD,IACnBlB,KAAK4xB,MAAM1wB,GAAKmW,EAAEua,MAAM1wB,GAM5B,OAFAlB,KAAKmB,OAASkW,EAAElW,OAETnB,KAAKkzB,OACd,EAEA1B,EAAG7xB,UAAUw3B,KAAO,SAAelO,GAEjC,OADA5B,EAA0C,IAAlCrnB,KAAK2xB,SAAW1I,EAAI0I,WACrB3xB,KAAKk3B,MAAMjO,EACpB,EAGAuI,EAAG7xB,UAAUy3B,IAAM,SAAcnO,GAC/B,OAAIjpB,KAAKmB,OAAS8nB,EAAI9nB,OAAenB,KAAKwoB,QAAQ2O,KAAKlO,GAChDA,EAAIT,QAAQ2O,KAAKn3B,KAC1B,EAEAwxB,EAAG7xB,UAAU03B,KAAO,SAAepO,GACjC,OAAIjpB,KAAKmB,OAAS8nB,EAAI9nB,OAAenB,KAAKwoB,QAAQ0O,MAAMjO,GACjDA,EAAIT,QAAQ0O,MAAMl3B,KAC3B,EAGAwxB,EAAG7xB,UAAUu2B,MAAQ,SAAgBF,GACnC3O,EAAwB,iBAAV2O,GAAsBA,GAAS,GAE7C,IAAIsB,EAAsC,EAAxB7c,KAAKsY,KAAKiD,EAAQ,IAChCuB,EAAWvB,EAAQ,GAGvBh2B,KAAK4zB,QAAQ0D,GAETC,EAAW,GACbD,IAIF,IAAK,IAAIp2B,EAAI,EAAGA,EAAIo2B,EAAap2B,IAC/BlB,KAAK4xB,MAAM1wB,GAAsB,UAAhBlB,KAAK4xB,MAAM1wB,GAS9B,OALIq2B,EAAW,IACbv3B,KAAK4xB,MAAM1wB,IAAMlB,KAAK4xB,MAAM1wB,GAAM,UAAc,GAAKq2B,GAIhDv3B,KAAKkzB,OACd,EAEA1B,EAAG7xB,UAAU22B,KAAO,SAAeN,GACjC,OAAOh2B,KAAKwoB,QAAQ0N,MAAMF,EAC5B,EAGAxE,EAAG7xB,UAAU63B,KAAO,SAAeC,EAAKzO,GACtC3B,EAAsB,iBAARoQ,GAAoBA,GAAO,GAEzC,IAAIxE,EAAOwE,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAUjB,OARAz3B,KAAK4zB,QAAQX,EAAM,GAGjBjzB,KAAK4xB,MAAMqB,GADTjK,EACgBhpB,KAAK4xB,MAAMqB,GAAQ,GAAKyE,EAExB13B,KAAK4xB,MAAMqB,KAAS,GAAKyE,GAGtC13B,KAAKkzB,OACd,EAGA1B,EAAG7xB,UAAUg4B,KAAO,SAAe1O,GACjC,IAAImJ,EAkBA/a,EAAGC,EAfP,GAAsB,IAAlBtX,KAAK2xB,UAAmC,IAAjB1I,EAAI0I,SAI7B,OAHA3xB,KAAK2xB,SAAW,EAChBS,EAAIpyB,KAAK43B,KAAK3O,GACdjpB,KAAK2xB,UAAY,EACV3xB,KAAK6zB,YAGP,GAAsB,IAAlB7zB,KAAK2xB,UAAmC,IAAjB1I,EAAI0I,SAIpC,OAHA1I,EAAI0I,SAAW,EACfS,EAAIpyB,KAAK43B,KAAK3O,GACdA,EAAI0I,SAAW,EACRS,EAAEyB,YAKP7zB,KAAKmB,OAAS8nB,EAAI9nB,QACpBkW,EAAIrX,KACJsX,EAAI2R,IAEJ5R,EAAI4R,EACJ3R,EAAItX,MAIN,IADA,IAAIo0B,EAAQ,EACHlzB,EAAI,EAAGA,EAAIoW,EAAEnW,OAAQD,IAC5BkxB,GAAkB,EAAb/a,EAAEua,MAAM1wB,KAAwB,EAAboW,EAAEsa,MAAM1wB,IAAUkzB,EAC1Cp0B,KAAK4xB,MAAM1wB,GAAS,SAAJkxB,EAChBgC,EAAQhC,IAAM,GAEhB,KAAiB,IAAVgC,GAAelzB,EAAImW,EAAElW,OAAQD,IAClCkxB,GAAkB,EAAb/a,EAAEua,MAAM1wB,IAAUkzB,EACvBp0B,KAAK4xB,MAAM1wB,GAAS,SAAJkxB,EAChBgC,EAAQhC,IAAM,GAIhB,GADApyB,KAAKmB,OAASkW,EAAElW,OACF,IAAVizB,EACFp0B,KAAK4xB,MAAM5xB,KAAKmB,QAAUizB,EAC1Bp0B,KAAKmB,cAEA,GAAIkW,IAAMrX,KACf,KAAOkB,EAAImW,EAAElW,OAAQD,IACnBlB,KAAK4xB,MAAM1wB,GAAKmW,EAAEua,MAAM1wB,GAI5B,OAAOlB,IACT,EAGAwxB,EAAG7xB,UAAUiG,IAAM,SAAcqjB,GAC/B,IAAItmB,EACJ,OAAqB,IAAjBsmB,EAAI0I,UAAoC,IAAlB3xB,KAAK2xB,UAC7B1I,EAAI0I,SAAW,EACfhvB,EAAM3C,KAAK63B,IAAI5O,GACfA,EAAI0I,UAAY,EACThvB,GACmB,IAAjBsmB,EAAI0I,UAAoC,IAAlB3xB,KAAK2xB,UACpC3xB,KAAK2xB,SAAW,EAChBhvB,EAAMsmB,EAAI4O,IAAI73B,MACdA,KAAK2xB,SAAW,EACThvB,GAGL3C,KAAKmB,OAAS8nB,EAAI9nB,OAAenB,KAAKwoB,QAAQmP,KAAK1O,GAEhDA,EAAIT,QAAQmP,KAAK33B,KAC1B,EAGAwxB,EAAG7xB,UAAUi4B,KAAO,SAAe3O,GAEjC,GAAqB,IAAjBA,EAAI0I,SAAgB,CACtB1I,EAAI0I,SAAW,EACf,IAAIS,EAAIpyB,KAAK23B,KAAK1O,GAElB,OADAA,EAAI0I,SAAW,EACRS,EAAEyB,WAGX,CAAO,GAAsB,IAAlB7zB,KAAK2xB,SAId,OAHA3xB,KAAK2xB,SAAW,EAChB3xB,KAAK23B,KAAK1O,GACVjpB,KAAK2xB,SAAW,EACT3xB,KAAK6zB,YAId,IAWIxc,EAAGC,EAXHob,EAAM1yB,KAAK0yB,IAAIzJ,GAGnB,GAAY,IAARyJ,EAIF,OAHA1yB,KAAK2xB,SAAW,EAChB3xB,KAAKmB,OAAS,EACdnB,KAAK4xB,MAAM,GAAK,EACT5xB,KAKL0yB,EAAM,GACRrb,EAAIrX,KACJsX,EAAI2R,IAEJ5R,EAAI4R,EACJ3R,EAAItX,MAIN,IADA,IAAIo0B,EAAQ,EACHlzB,EAAI,EAAGA,EAAIoW,EAAEnW,OAAQD,IAE5BkzB,GADAhC,GAAkB,EAAb/a,EAAEua,MAAM1wB,KAAwB,EAAboW,EAAEsa,MAAM1wB,IAAUkzB,IAC7B,GACbp0B,KAAK4xB,MAAM1wB,GAAS,SAAJkxB,EAElB,KAAiB,IAAVgC,GAAelzB,EAAImW,EAAElW,OAAQD,IAElCkzB,GADAhC,GAAkB,EAAb/a,EAAEua,MAAM1wB,IAAUkzB,IACV,GACbp0B,KAAK4xB,MAAM1wB,GAAS,SAAJkxB,EAIlB,GAAc,IAAVgC,GAAelzB,EAAImW,EAAElW,QAAUkW,IAAMrX,KACvC,KAAOkB,EAAImW,EAAElW,OAAQD,IACnBlB,KAAK4xB,MAAM1wB,GAAKmW,EAAEua,MAAM1wB,GAU5B,OANAlB,KAAKmB,OAASsZ,KAAK8X,IAAIvyB,KAAKmB,OAAQD,GAEhCmW,IAAMrX,OACRA,KAAK2xB,SAAW,GAGX3xB,KAAKkzB,OACd,EAGA1B,EAAG7xB,UAAUk4B,IAAM,SAAc5O,GAC/B,OAAOjpB,KAAKwoB,QAAQoP,KAAK3O,EAC3B,EA8CA,IAAI6O,EAAc,SAAsB91B,EAAMinB,EAAKvQ,GACjD,IAIIyb,EACA4D,EACAlC,EANAxe,EAAIrV,EAAK4vB,MACTta,EAAI2R,EAAI2I,MACRld,EAAIgE,EAAIkZ,MACRzkB,EAAI,EAIJ6qB,EAAY,EAAP3gB,EAAE,GACP4gB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP9gB,EAAE,GACP+gB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPjhB,EAAE,GACPkhB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPphB,EAAE,GACPqhB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPvhB,EAAE,GACPwhB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP1hB,EAAE,GACP2hB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7hB,EAAE,GACP8hB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhiB,EAAE,GACPiiB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPniB,EAAE,GACPoiB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPtiB,EAAE,GACPuiB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPxiB,EAAE,GACPyiB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP3iB,EAAE,GACP4iB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP9iB,EAAE,GACP+iB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPjjB,EAAE,GACPkjB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPpjB,EAAE,GACPqjB,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAPvjB,EAAE,GACPwjB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP1jB,EAAE,GACP2jB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP7jB,EAAE,GACP8jB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPhkB,EAAE,GACPikB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPnkB,EAAE,GACPokB,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjB/iB,EAAIiZ,SAAW3vB,EAAK2vB,SAAW1I,EAAI0I,SACnCjZ,EAAIvX,OAAS,GAMb,IAAIy6B,IAAQzuB,GAJZgnB,EAAK1Z,KAAKohB,KAAK5D,EAAK8B,IAIE,KAAa,MAFnChC,GADAA,EAAMtd,KAAKohB,KAAK5D,EAAK+B,IACRvf,KAAKohB,KAAK3D,EAAK6B,GAAQ,KAEU,IAAO,EACrD5sB,IAFA0oB,EAAKpb,KAAKohB,KAAK3D,EAAK8B,KAEPjC,IAAQ,IAAO,IAAM6D,KAAO,IAAO,EAChDA,IAAM,SAENzH,EAAK1Z,KAAKohB,KAAKzD,EAAK2B,GAEpBhC,GADAA,EAAMtd,KAAKohB,KAAKzD,EAAK4B,IACRvf,KAAKohB,KAAKxD,EAAK0B,GAAQ,EACpClE,EAAKpb,KAAKohB,KAAKxD,EAAK2B,GAKpB,IAAI8B,IAAQ3uB,GAJZgnB,EAAMA,EAAK1Z,KAAKohB,KAAK5D,EAAKiC,GAAQ,GAIZ,KAAa,MAFnCnC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK5D,EAAKkC,GAAQ,GACvB1f,KAAKohB,KAAK3D,EAAKgC,GAAQ,KAEU,IAAO,EACrD/sB,IAFA0oB,EAAMA,EAAKpb,KAAKohB,KAAK3D,EAAKiC,GAAQ,IAErBpC,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAEN3H,EAAK1Z,KAAKohB,KAAKtD,EAAKwB,GAEpBhC,GADAA,EAAMtd,KAAKohB,KAAKtD,EAAKyB,IACRvf,KAAKohB,KAAKrD,EAAKuB,GAAQ,EACpClE,EAAKpb,KAAKohB,KAAKrD,EAAKwB,GACpB7F,EAAMA,EAAK1Z,KAAKohB,KAAKzD,EAAK8B,GAAQ,EAElCnC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKzD,EAAK+B,GAAQ,GACvB1f,KAAKohB,KAAKxD,EAAK6B,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAKohB,KAAKxD,EAAK8B,GAAQ,EAKlC,IAAI4B,IAAQ5uB,GAJZgnB,EAAMA,EAAK1Z,KAAKohB,KAAK5D,EAAKoC,GAAQ,GAIZ,KAAa,MAFnCtC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK5D,EAAKqC,GAAQ,GACvB7f,KAAKohB,KAAK3D,EAAKmC,GAAQ,KAEU,IAAO,EACrDltB,IAFA0oB,EAAMA,EAAKpb,KAAKohB,KAAK3D,EAAKoC,GAAQ,IAErBvC,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAEN5H,EAAK1Z,KAAKohB,KAAKnD,EAAKqB,GAEpBhC,GADAA,EAAMtd,KAAKohB,KAAKnD,EAAKsB,IACRvf,KAAKohB,KAAKlD,EAAKoB,GAAQ,EACpClE,EAAKpb,KAAKohB,KAAKlD,EAAKqB,GACpB7F,EAAMA,EAAK1Z,KAAKohB,KAAKtD,EAAK2B,GAAQ,EAElCnC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKtD,EAAK4B,GAAQ,GACvB1f,KAAKohB,KAAKrD,EAAK0B,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAKohB,KAAKrD,EAAK2B,GAAQ,EAClChG,EAAMA,EAAK1Z,KAAKohB,KAAKzD,EAAKiC,GAAQ,EAElCtC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKzD,EAAKkC,GAAQ,GACvB7f,KAAKohB,KAAKxD,EAAKgC,GAAQ,EACpCxE,EAAMA,EAAKpb,KAAKohB,KAAKxD,EAAKiC,GAAQ,EAKlC,IAAI0B,IAAQ7uB,GAJZgnB,EAAMA,EAAK1Z,KAAKohB,KAAK5D,EAAKuC,GAAQ,GAIZ,KAAa,MAFnCzC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK5D,EAAKwC,GAAQ,GACvBhgB,KAAKohB,KAAK3D,EAAKsC,GAAQ,KAEU,IAAO,EACrDrtB,IAFA0oB,EAAMA,EAAKpb,KAAKohB,KAAK3D,EAAKuC,GAAQ,IAErB1C,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAEN7H,EAAK1Z,KAAKohB,KAAKhD,EAAKkB,GAEpBhC,GADAA,EAAMtd,KAAKohB,KAAKhD,EAAKmB,IACRvf,KAAKohB,KAAK/C,EAAKiB,GAAQ,EACpClE,EAAKpb,KAAKohB,KAAK/C,EAAKkB,GACpB7F,EAAMA,EAAK1Z,KAAKohB,KAAKnD,EAAKwB,GAAQ,EAElCnC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKnD,EAAKyB,GAAQ,GACvB1f,KAAKohB,KAAKlD,EAAKuB,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAKohB,KAAKlD,EAAKwB,GAAQ,EAClChG,EAAMA,EAAK1Z,KAAKohB,KAAKtD,EAAK8B,GAAQ,EAElCtC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKtD,EAAK+B,GAAQ,GACvB7f,KAAKohB,KAAKrD,EAAK6B,GAAQ,EACpCxE,EAAMA,EAAKpb,KAAKohB,KAAKrD,EAAK8B,GAAQ,EAClCnG,EAAMA,EAAK1Z,KAAKohB,KAAKzD,EAAKoC,GAAQ,EAElCzC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKzD,EAAKqC,GAAQ,GACvBhgB,KAAKohB,KAAKxD,EAAKmC,GAAQ,EACpC3E,EAAMA,EAAKpb,KAAKohB,KAAKxD,EAAKoC,GAAQ,EAKlC,IAAIwB,IAAQ9uB,GAJZgnB,EAAMA,EAAK1Z,KAAKohB,KAAK5D,EAAK0C,GAAQ,GAIZ,KAAa,MAFnC5C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK5D,EAAK2C,IAAQ,GACvBngB,KAAKohB,KAAK3D,EAAKyC,GAAQ,KAEU,IAAO,EACrDxtB,IAFA0oB,EAAMA,EAAKpb,KAAKohB,KAAK3D,EAAK0C,IAAQ,IAErB7C,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAEN9H,EAAK1Z,KAAKohB,KAAK7C,EAAKe,GAEpBhC,GADAA,EAAMtd,KAAKohB,KAAK7C,EAAKgB,IACRvf,KAAKohB,KAAK5C,EAAKc,GAAQ,EACpClE,EAAKpb,KAAKohB,KAAK5C,EAAKe,GACpB7F,EAAMA,EAAK1Z,KAAKohB,KAAKhD,EAAKqB,GAAQ,EAElCnC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKhD,EAAKsB,GAAQ,GACvB1f,KAAKohB,KAAK/C,EAAKoB,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAKohB,KAAK/C,EAAKqB,GAAQ,EAClChG,EAAMA,EAAK1Z,KAAKohB,KAAKnD,EAAK2B,GAAQ,EAElCtC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKnD,EAAK4B,GAAQ,GACvB7f,KAAKohB,KAAKlD,EAAK0B,GAAQ,EACpCxE,EAAMA,EAAKpb,KAAKohB,KAAKlD,EAAK2B,GAAQ,EAClCnG,EAAMA,EAAK1Z,KAAKohB,KAAKtD,EAAKiC,GAAQ,EAElCzC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKtD,EAAKkC,GAAQ,GACvBhgB,KAAKohB,KAAKrD,EAAKgC,GAAQ,EACpC3E,EAAMA,EAAKpb,KAAKohB,KAAKrD,EAAKiC,GAAQ,EAClCtG,EAAMA,EAAK1Z,KAAKohB,KAAKzD,EAAKuC,GAAQ,EAElC5C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKzD,EAAKwC,IAAQ,GACvBngB,KAAKohB,KAAKxD,EAAKsC,GAAQ,EACpC9E,EAAMA,EAAKpb,KAAKohB,KAAKxD,EAAKuC,IAAQ,EAKlC,IAAIsB,IAAQ/uB,GAJZgnB,EAAMA,EAAK1Z,KAAKohB,KAAK5D,EAAK6C,IAAQ,GAIZ,KAAa,MAFnC/C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK5D,EAAK8C,IAAQ,GACvBtgB,KAAKohB,KAAK3D,EAAK4C,IAAQ,KAEU,IAAO,EACrD3tB,IAFA0oB,EAAMA,EAAKpb,KAAKohB,KAAK3D,EAAK6C,IAAQ,IAErBhD,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAEN/H,EAAK1Z,KAAKohB,KAAK1C,EAAKY,GAEpBhC,GADAA,EAAMtd,KAAKohB,KAAK1C,EAAKa,IACRvf,KAAKohB,KAAKzC,EAAKW,GAAQ,EACpClE,EAAKpb,KAAKohB,KAAKzC,EAAKY,GACpB7F,EAAMA,EAAK1Z,KAAKohB,KAAK7C,EAAKkB,GAAQ,EAElCnC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK7C,EAAKmB,GAAQ,GACvB1f,KAAKohB,KAAK5C,EAAKiB,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAKohB,KAAK5C,EAAKkB,GAAQ,EAClChG,EAAMA,EAAK1Z,KAAKohB,KAAKhD,EAAKwB,GAAQ,EAElCtC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKhD,EAAKyB,GAAQ,GACvB7f,KAAKohB,KAAK/C,EAAKuB,GAAQ,EACpCxE,EAAMA,EAAKpb,KAAKohB,KAAK/C,EAAKwB,GAAQ,EAClCnG,EAAMA,EAAK1Z,KAAKohB,KAAKnD,EAAK8B,GAAQ,EAElCzC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKnD,EAAK+B,GAAQ,GACvBhgB,KAAKohB,KAAKlD,EAAK6B,GAAQ,EACpC3E,EAAMA,EAAKpb,KAAKohB,KAAKlD,EAAK8B,GAAQ,EAClCtG,EAAMA,EAAK1Z,KAAKohB,KAAKtD,EAAKoC,GAAQ,EAElC5C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKtD,EAAKqC,IAAQ,GACvBngB,KAAKohB,KAAKrD,EAAKmC,GAAQ,EACpC9E,EAAMA,EAAKpb,KAAKohB,KAAKrD,EAAKoC,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAKohB,KAAKzD,EAAK0C,IAAQ,EAElC/C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKzD,EAAK2C,IAAQ,GACvBtgB,KAAKohB,KAAKxD,EAAKyC,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAKohB,KAAKxD,EAAK0C,IAAQ,EAKlC,IAAIoB,IAAQhvB,GAJZgnB,EAAMA,EAAK1Z,KAAKohB,KAAK5D,EAAKgD,IAAQ,GAIZ,KAAa,MAFnClD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK5D,EAAKiD,IAAQ,GACvBzgB,KAAKohB,KAAK3D,EAAK+C,IAAQ,KAEU,IAAO,EACrD9tB,IAFA0oB,EAAMA,EAAKpb,KAAKohB,KAAK3D,EAAKgD,IAAQ,IAErBnD,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAENhI,EAAK1Z,KAAKohB,KAAKvC,EAAKS,GAEpBhC,GADAA,EAAMtd,KAAKohB,KAAKvC,EAAKU,IACRvf,KAAKohB,KAAKtC,EAAKQ,GAAQ,EACpClE,EAAKpb,KAAKohB,KAAKtC,EAAKS,GACpB7F,EAAMA,EAAK1Z,KAAKohB,KAAK1C,EAAKe,GAAQ,EAElCnC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK1C,EAAKgB,GAAQ,GACvB1f,KAAKohB,KAAKzC,EAAKc,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAKohB,KAAKzC,EAAKe,GAAQ,EAClChG,EAAMA,EAAK1Z,KAAKohB,KAAK7C,EAAKqB,GAAQ,EAElCtC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK7C,EAAKsB,GAAQ,GACvB7f,KAAKohB,KAAK5C,EAAKoB,GAAQ,EACpCxE,EAAMA,EAAKpb,KAAKohB,KAAK5C,EAAKqB,GAAQ,EAClCnG,EAAMA,EAAK1Z,KAAKohB,KAAKhD,EAAK2B,GAAQ,EAElCzC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKhD,EAAK4B,GAAQ,GACvBhgB,KAAKohB,KAAK/C,EAAK0B,GAAQ,EACpC3E,EAAMA,EAAKpb,KAAKohB,KAAK/C,EAAK2B,GAAQ,EAClCtG,EAAMA,EAAK1Z,KAAKohB,KAAKnD,EAAKiC,GAAQ,EAElC5C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKnD,EAAKkC,IAAQ,GACvBngB,KAAKohB,KAAKlD,EAAKgC,GAAQ,EACpC9E,EAAMA,EAAKpb,KAAKohB,KAAKlD,EAAKiC,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAKohB,KAAKtD,EAAKuC,IAAQ,EAElC/C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKtD,EAAKwC,IAAQ,GACvBtgB,KAAKohB,KAAKrD,EAAKsC,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAKohB,KAAKrD,EAAKuC,IAAQ,EAClC5G,EAAMA,EAAK1Z,KAAKohB,KAAKzD,EAAK6C,IAAQ,EAElClD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKzD,EAAK8C,IAAQ,GACvBzgB,KAAKohB,KAAKxD,EAAK4C,IAAQ,EACpCpF,EAAMA,EAAKpb,KAAKohB,KAAKxD,EAAK6C,IAAQ,EAKlC,IAAIkB,IAAQjvB,GAJZgnB,EAAMA,EAAK1Z,KAAKohB,KAAK5D,EAAKmD,IAAQ,GAIZ,KAAa,MAFnCrD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK5D,EAAKoD,IAAQ,GACvB5gB,KAAKohB,KAAK3D,EAAKkD,IAAQ,KAEU,IAAO,EACrDjuB,IAFA0oB,EAAMA,EAAKpb,KAAKohB,KAAK3D,EAAKmD,IAAQ,IAErBtD,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAENjI,EAAK1Z,KAAKohB,KAAKpC,EAAKM,GAEpBhC,GADAA,EAAMtd,KAAKohB,KAAKpC,EAAKO,IACRvf,KAAKohB,KAAKnC,EAAKK,GAAQ,EACpClE,EAAKpb,KAAKohB,KAAKnC,EAAKM,GACpB7F,EAAMA,EAAK1Z,KAAKohB,KAAKvC,EAAKY,GAAQ,EAElCnC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKvC,EAAKa,GAAQ,GACvB1f,KAAKohB,KAAKtC,EAAKW,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAKohB,KAAKtC,EAAKY,GAAQ,EAClChG,EAAMA,EAAK1Z,KAAKohB,KAAK1C,EAAKkB,GAAQ,EAElCtC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK1C,EAAKmB,GAAQ,GACvB7f,KAAKohB,KAAKzC,EAAKiB,GAAQ,EACpCxE,EAAMA,EAAKpb,KAAKohB,KAAKzC,EAAKkB,GAAQ,EAClCnG,EAAMA,EAAK1Z,KAAKohB,KAAK7C,EAAKwB,GAAQ,EAElCzC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK7C,EAAKyB,GAAQ,GACvBhgB,KAAKohB,KAAK5C,EAAKuB,GAAQ,EACpC3E,EAAMA,EAAKpb,KAAKohB,KAAK5C,EAAKwB,GAAQ,EAClCtG,EAAMA,EAAK1Z,KAAKohB,KAAKhD,EAAK8B,GAAQ,EAElC5C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKhD,EAAK+B,IAAQ,GACvBngB,KAAKohB,KAAK/C,EAAK6B,GAAQ,EACpC9E,EAAMA,EAAKpb,KAAKohB,KAAK/C,EAAK8B,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAKohB,KAAKnD,EAAKoC,IAAQ,EAElC/C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKnD,EAAKqC,IAAQ,GACvBtgB,KAAKohB,KAAKlD,EAAKmC,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAKohB,KAAKlD,EAAKoC,IAAQ,EAClC5G,EAAMA,EAAK1Z,KAAKohB,KAAKtD,EAAK0C,IAAQ,EAElClD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKtD,EAAK2C,IAAQ,GACvBzgB,KAAKohB,KAAKrD,EAAKyC,IAAQ,EACpCpF,EAAMA,EAAKpb,KAAKohB,KAAKrD,EAAK0C,IAAQ,EAClC/G,EAAMA,EAAK1Z,KAAKohB,KAAKzD,EAAKgD,IAAQ,EAElCrD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKzD,EAAKiD,IAAQ,GACvB5gB,KAAKohB,KAAKxD,EAAK+C,IAAQ,EACpCvF,EAAMA,EAAKpb,KAAKohB,KAAKxD,EAAKgD,IAAQ,EAKlC,IAAIgB,IAAQlvB,GAJZgnB,EAAMA,EAAK1Z,KAAKohB,KAAK5D,EAAKsD,IAAQ,GAIZ,KAAa,MAFnCxD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK5D,EAAKuD,IAAQ,GACvB/gB,KAAKohB,KAAK3D,EAAKqD,IAAQ,KAEU,IAAO,EACrDpuB,IAFA0oB,EAAMA,EAAKpb,KAAKohB,KAAK3D,EAAKsD,IAAQ,IAErBzD,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAENlI,EAAK1Z,KAAKohB,KAAKjC,EAAKG,GAEpBhC,GADAA,EAAMtd,KAAKohB,KAAKjC,EAAKI,IACRvf,KAAKohB,KAAKhC,EAAKE,GAAQ,EACpClE,EAAKpb,KAAKohB,KAAKhC,EAAKG,GACpB7F,EAAMA,EAAK1Z,KAAKohB,KAAKpC,EAAKS,GAAQ,EAElCnC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKpC,EAAKU,GAAQ,GACvB1f,KAAKohB,KAAKnC,EAAKQ,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAKohB,KAAKnC,EAAKS,GAAQ,EAClChG,EAAMA,EAAK1Z,KAAKohB,KAAKvC,EAAKe,GAAQ,EAElCtC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKvC,EAAKgB,GAAQ,GACvB7f,KAAKohB,KAAKtC,EAAKc,GAAQ,EACpCxE,EAAMA,EAAKpb,KAAKohB,KAAKtC,EAAKe,GAAQ,EAClCnG,EAAMA,EAAK1Z,KAAKohB,KAAK1C,EAAKqB,GAAQ,EAElCzC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK1C,EAAKsB,GAAQ,GACvBhgB,KAAKohB,KAAKzC,EAAKoB,GAAQ,EACpC3E,EAAMA,EAAKpb,KAAKohB,KAAKzC,EAAKqB,GAAQ,EAClCtG,EAAMA,EAAK1Z,KAAKohB,KAAK7C,EAAK2B,GAAQ,EAElC5C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK7C,EAAK4B,IAAQ,GACvBngB,KAAKohB,KAAK5C,EAAK0B,GAAQ,EACpC9E,EAAMA,EAAKpb,KAAKohB,KAAK5C,EAAK2B,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAKohB,KAAKhD,EAAKiC,IAAQ,EAElC/C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKhD,EAAKkC,IAAQ,GACvBtgB,KAAKohB,KAAK/C,EAAKgC,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAKohB,KAAK/C,EAAKiC,IAAQ,EAClC5G,EAAMA,EAAK1Z,KAAKohB,KAAKnD,EAAKuC,IAAQ,EAElClD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKnD,EAAKwC,IAAQ,GACvBzgB,KAAKohB,KAAKlD,EAAKsC,IAAQ,EACpCpF,EAAMA,EAAKpb,KAAKohB,KAAKlD,EAAKuC,IAAQ,EAClC/G,EAAMA,EAAK1Z,KAAKohB,KAAKtD,EAAK6C,IAAQ,EAElCrD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKtD,EAAK8C,IAAQ,GACvB5gB,KAAKohB,KAAKrD,EAAK4C,IAAQ,EACpCvF,EAAMA,EAAKpb,KAAKohB,KAAKrD,EAAK6C,IAAQ,EAClClH,EAAMA,EAAK1Z,KAAKohB,KAAKzD,EAAKmD,IAAQ,EAElCxD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKzD,EAAKoD,IAAQ,GACvB/gB,KAAKohB,KAAKxD,EAAKkD,IAAQ,EACpC1F,EAAMA,EAAKpb,KAAKohB,KAAKxD,EAAKmD,IAAQ,EAKlC,IAAIc,IAAQnvB,GAJZgnB,EAAMA,EAAK1Z,KAAKohB,KAAK5D,EAAKyD,IAAQ,GAIZ,KAAa,MAFnC3D,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK5D,EAAK0D,IAAQ,GACvBlhB,KAAKohB,KAAK3D,EAAKwD,IAAQ,KAEU,IAAO,EACrDvuB,IAFA0oB,EAAMA,EAAKpb,KAAKohB,KAAK3D,EAAKyD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAENnI,EAAK1Z,KAAKohB,KAAKjC,EAAKM,GAEpBnC,GADAA,EAAMtd,KAAKohB,KAAKjC,EAAKO,IACR1f,KAAKohB,KAAKhC,EAAKK,GAAQ,EACpCrE,EAAKpb,KAAKohB,KAAKhC,EAAKM,GACpBhG,EAAMA,EAAK1Z,KAAKohB,KAAKpC,EAAKY,GAAQ,EAElCtC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKpC,EAAKa,GAAQ,GACvB7f,KAAKohB,KAAKnC,EAAKW,GAAQ,EACpCxE,EAAMA,EAAKpb,KAAKohB,KAAKnC,EAAKY,GAAQ,EAClCnG,EAAMA,EAAK1Z,KAAKohB,KAAKvC,EAAKkB,GAAQ,EAElCzC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKvC,EAAKmB,GAAQ,GACvBhgB,KAAKohB,KAAKtC,EAAKiB,GAAQ,EACpC3E,EAAMA,EAAKpb,KAAKohB,KAAKtC,EAAKkB,GAAQ,EAClCtG,EAAMA,EAAK1Z,KAAKohB,KAAK1C,EAAKwB,GAAQ,EAElC5C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK1C,EAAKyB,IAAQ,GACvBngB,KAAKohB,KAAKzC,EAAKuB,GAAQ,EACpC9E,EAAMA,EAAKpb,KAAKohB,KAAKzC,EAAKwB,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAKohB,KAAK7C,EAAK8B,IAAQ,EAElC/C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK7C,EAAK+B,IAAQ,GACvBtgB,KAAKohB,KAAK5C,EAAK6B,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAKohB,KAAK5C,EAAK8B,IAAQ,EAClC5G,EAAMA,EAAK1Z,KAAKohB,KAAKhD,EAAKoC,IAAQ,EAElClD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKhD,EAAKqC,IAAQ,GACvBzgB,KAAKohB,KAAK/C,EAAKmC,IAAQ,EACpCpF,EAAMA,EAAKpb,KAAKohB,KAAK/C,EAAKoC,IAAQ,EAClC/G,EAAMA,EAAK1Z,KAAKohB,KAAKnD,EAAK0C,IAAQ,EAElCrD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKnD,EAAK2C,IAAQ,GACvB5gB,KAAKohB,KAAKlD,EAAKyC,IAAQ,EACpCvF,EAAMA,EAAKpb,KAAKohB,KAAKlD,EAAK0C,IAAQ,EAClClH,EAAMA,EAAK1Z,KAAKohB,KAAKtD,EAAKgD,IAAQ,EAElCxD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKtD,EAAKiD,IAAQ,GACvB/gB,KAAKohB,KAAKrD,EAAK+C,IAAQ,EACpC1F,EAAMA,EAAKpb,KAAKohB,KAAKrD,EAAKgD,IAAQ,EAKlC,IAAIe,IAASpvB,GAJbgnB,EAAMA,EAAK1Z,KAAKohB,KAAKzD,EAAKsD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKzD,EAAKuD,IAAQ,GACvBlhB,KAAKohB,KAAKxD,EAAKqD,IAAQ,KAEW,IAAO,EACtDvuB,IAFA0oB,EAAMA,EAAKpb,KAAKohB,KAAKxD,EAAKsD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMwE,KAAQ,IAAO,EACjDA,IAAO,SAEPpI,EAAK1Z,KAAKohB,KAAKjC,EAAKS,GAEpBtC,GADAA,EAAMtd,KAAKohB,KAAKjC,EAAKU,IACR7f,KAAKohB,KAAKhC,EAAKQ,GAAQ,EACpCxE,EAAKpb,KAAKohB,KAAKhC,EAAKS,GACpBnG,EAAMA,EAAK1Z,KAAKohB,KAAKpC,EAAKe,GAAQ,EAElCzC,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKpC,EAAKgB,GAAQ,GACvBhgB,KAAKohB,KAAKnC,EAAKc,GAAQ,EACpC3E,EAAMA,EAAKpb,KAAKohB,KAAKnC,EAAKe,GAAQ,EAClCtG,EAAMA,EAAK1Z,KAAKohB,KAAKvC,EAAKqB,GAAQ,EAElC5C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKvC,EAAKsB,IAAQ,GACvBngB,KAAKohB,KAAKtC,EAAKoB,GAAQ,EACpC9E,EAAMA,EAAKpb,KAAKohB,KAAKtC,EAAKqB,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAKohB,KAAK1C,EAAK2B,IAAQ,EAElC/C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK1C,EAAK4B,IAAQ,GACvBtgB,KAAKohB,KAAKzC,EAAK0B,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAKohB,KAAKzC,EAAK2B,IAAQ,EAClC5G,EAAMA,EAAK1Z,KAAKohB,KAAK7C,EAAKiC,IAAQ,EAElClD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK7C,EAAKkC,IAAQ,GACvBzgB,KAAKohB,KAAK5C,EAAKgC,IAAQ,EACpCpF,EAAMA,EAAKpb,KAAKohB,KAAK5C,EAAKiC,IAAQ,EAClC/G,EAAMA,EAAK1Z,KAAKohB,KAAKhD,EAAKuC,IAAQ,EAElCrD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKhD,EAAKwC,IAAQ,GACvB5gB,KAAKohB,KAAK/C,EAAKsC,IAAQ,EACpCvF,EAAMA,EAAKpb,KAAKohB,KAAK/C,EAAKuC,IAAQ,EAClClH,EAAMA,EAAK1Z,KAAKohB,KAAKnD,EAAK6C,IAAQ,EAElCxD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKnD,EAAK8C,IAAQ,GACvB/gB,KAAKohB,KAAKlD,EAAK4C,IAAQ,EACpC1F,EAAMA,EAAKpb,KAAKohB,KAAKlD,EAAK6C,IAAQ,EAKlC,IAAIgB,IAASrvB,GAJbgnB,EAAMA,EAAK1Z,KAAKohB,KAAKtD,EAAKmD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKtD,EAAKoD,IAAQ,GACvBlhB,KAAKohB,KAAKrD,EAAKkD,IAAQ,KAEW,IAAO,EACtDvuB,IAFA0oB,EAAMA,EAAKpb,KAAKohB,KAAKrD,EAAKmD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEPrI,EAAK1Z,KAAKohB,KAAKjC,EAAKY,GAEpBzC,GADAA,EAAMtd,KAAKohB,KAAKjC,EAAKa,IACRhgB,KAAKohB,KAAKhC,EAAKW,GAAQ,EACpC3E,EAAKpb,KAAKohB,KAAKhC,EAAKY,GACpBtG,EAAMA,EAAK1Z,KAAKohB,KAAKpC,EAAKkB,GAAQ,EAElC5C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKpC,EAAKmB,IAAQ,GACvBngB,KAAKohB,KAAKnC,EAAKiB,GAAQ,EACpC9E,EAAMA,EAAKpb,KAAKohB,KAAKnC,EAAKkB,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAKohB,KAAKvC,EAAKwB,IAAQ,EAElC/C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKvC,EAAKyB,IAAQ,GACvBtgB,KAAKohB,KAAKtC,EAAKuB,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAKohB,KAAKtC,EAAKwB,IAAQ,EAClC5G,EAAMA,EAAK1Z,KAAKohB,KAAK1C,EAAK8B,IAAQ,EAElClD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK1C,EAAK+B,IAAQ,GACvBzgB,KAAKohB,KAAKzC,EAAK6B,IAAQ,EACpCpF,EAAMA,EAAKpb,KAAKohB,KAAKzC,EAAK8B,IAAQ,EAClC/G,EAAMA,EAAK1Z,KAAKohB,KAAK7C,EAAKoC,IAAQ,EAElCrD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK7C,EAAKqC,IAAQ,GACvB5gB,KAAKohB,KAAK5C,EAAKmC,IAAQ,EACpCvF,EAAMA,EAAKpb,KAAKohB,KAAK5C,EAAKoC,IAAQ,EAClClH,EAAMA,EAAK1Z,KAAKohB,KAAKhD,EAAK0C,IAAQ,EAElCxD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKhD,EAAK2C,IAAQ,GACvB/gB,KAAKohB,KAAK/C,EAAKyC,IAAQ,EACpC1F,EAAMA,EAAKpb,KAAKohB,KAAK/C,EAAK0C,IAAQ,EAKlC,IAAIiB,IAAStvB,GAJbgnB,EAAMA,EAAK1Z,KAAKohB,KAAKnD,EAAKgD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKnD,EAAKiD,IAAQ,GACvBlhB,KAAKohB,KAAKlD,EAAK+C,IAAQ,KAEW,IAAO,EACtDvuB,IAFA0oB,EAAMA,EAAKpb,KAAKohB,KAAKlD,EAAKgD,IAAQ,IAErB5D,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPtI,EAAK1Z,KAAKohB,KAAKjC,EAAKe,GAEpB5C,GADAA,EAAMtd,KAAKohB,KAAKjC,EAAKgB,KACRngB,KAAKohB,KAAKhC,EAAKc,GAAQ,EACpC9E,EAAKpb,KAAKohB,KAAKhC,EAAKe,IACpBzG,EAAMA,EAAK1Z,KAAKohB,KAAKpC,EAAKqB,IAAQ,EAElC/C,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKpC,EAAKsB,IAAQ,GACvBtgB,KAAKohB,KAAKnC,EAAKoB,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAKohB,KAAKnC,EAAKqB,IAAQ,EAClC5G,EAAMA,EAAK1Z,KAAKohB,KAAKvC,EAAK2B,IAAQ,EAElClD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKvC,EAAK4B,IAAQ,GACvBzgB,KAAKohB,KAAKtC,EAAK0B,IAAQ,EACpCpF,EAAMA,EAAKpb,KAAKohB,KAAKtC,EAAK2B,IAAQ,EAClC/G,EAAMA,EAAK1Z,KAAKohB,KAAK1C,EAAKiC,IAAQ,EAElCrD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK1C,EAAKkC,IAAQ,GACvB5gB,KAAKohB,KAAKzC,EAAKgC,IAAQ,EACpCvF,EAAMA,EAAKpb,KAAKohB,KAAKzC,EAAKiC,IAAQ,EAClClH,EAAMA,EAAK1Z,KAAKohB,KAAK7C,EAAKuC,IAAQ,EAElCxD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK7C,EAAKwC,IAAQ,GACvB/gB,KAAKohB,KAAK5C,EAAKsC,IAAQ,EACpC1F,EAAMA,EAAKpb,KAAKohB,KAAK5C,EAAKuC,IAAQ,EAKlC,IAAIkB,IAASvvB,GAJbgnB,EAAMA,EAAK1Z,KAAKohB,KAAKhD,EAAK6C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKhD,EAAK8C,IAAQ,GACvBlhB,KAAKohB,KAAK/C,EAAK4C,IAAQ,KAEW,IAAO,EACtDvuB,IAFA0oB,EAAMA,EAAKpb,KAAKohB,KAAK/C,EAAK6C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEPvI,EAAK1Z,KAAKohB,KAAKjC,EAAKkB,IAEpB/C,GADAA,EAAMtd,KAAKohB,KAAKjC,EAAKmB,KACRtgB,KAAKohB,KAAKhC,EAAKiB,IAAQ,EACpCjF,EAAKpb,KAAKohB,KAAKhC,EAAKkB,IACpB5G,EAAMA,EAAK1Z,KAAKohB,KAAKpC,EAAKwB,IAAQ,EAElClD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKpC,EAAKyB,IAAQ,GACvBzgB,KAAKohB,KAAKnC,EAAKuB,IAAQ,EACpCpF,EAAMA,EAAKpb,KAAKohB,KAAKnC,EAAKwB,IAAQ,EAClC/G,EAAMA,EAAK1Z,KAAKohB,KAAKvC,EAAK8B,IAAQ,EAElCrD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKvC,EAAK+B,IAAQ,GACvB5gB,KAAKohB,KAAKtC,EAAK6B,IAAQ,EACpCvF,EAAMA,EAAKpb,KAAKohB,KAAKtC,EAAK8B,IAAQ,EAClClH,EAAMA,EAAK1Z,KAAKohB,KAAK1C,EAAKoC,IAAQ,EAElCxD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK1C,EAAKqC,IAAQ,GACvB/gB,KAAKohB,KAAKzC,EAAKmC,IAAQ,EACpC1F,EAAMA,EAAKpb,KAAKohB,KAAKzC,EAAKoC,IAAQ,EAKlC,IAAImB,IAASxvB,GAJbgnB,EAAMA,EAAK1Z,KAAKohB,KAAK7C,EAAK0C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK7C,EAAK2C,IAAQ,GACvBlhB,KAAKohB,KAAK5C,EAAKyC,IAAQ,KAEW,IAAO,EACtDvuB,IAFA0oB,EAAMA,EAAKpb,KAAKohB,KAAK5C,EAAK0C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEPxI,EAAK1Z,KAAKohB,KAAKjC,EAAKqB,IAEpBlD,GADAA,EAAMtd,KAAKohB,KAAKjC,EAAKsB,KACRzgB,KAAKohB,KAAKhC,EAAKoB,IAAQ,EACpCpF,EAAKpb,KAAKohB,KAAKhC,EAAKqB,IACpB/G,EAAMA,EAAK1Z,KAAKohB,KAAKpC,EAAK2B,IAAQ,EAElCrD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKpC,EAAK4B,IAAQ,GACvB5gB,KAAKohB,KAAKnC,EAAK0B,IAAQ,EACpCvF,EAAMA,EAAKpb,KAAKohB,KAAKnC,EAAK2B,IAAQ,EAClClH,EAAMA,EAAK1Z,KAAKohB,KAAKvC,EAAKiC,IAAQ,EAElCxD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKvC,EAAKkC,IAAQ,GACvB/gB,KAAKohB,KAAKtC,EAAKgC,IAAQ,EACpC1F,EAAMA,EAAKpb,KAAKohB,KAAKtC,EAAKiC,IAAQ,EAKlC,IAAIoB,IAASzvB,GAJbgnB,EAAMA,EAAK1Z,KAAKohB,KAAK1C,EAAKuC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMtd,KAAKohB,KAAK1C,EAAKwC,IAAQ,GACvBlhB,KAAKohB,KAAKzC,EAAKsC,IAAQ,KAEW,IAAO,EACtDvuB,IAFA0oB,EAAMA,EAAKpb,KAAKohB,KAAKzC,EAAKuC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEPzI,EAAK1Z,KAAKohB,KAAKjC,EAAKwB,IAEpBrD,GADAA,EAAMtd,KAAKohB,KAAKjC,EAAKyB,KACR5gB,KAAKohB,KAAKhC,EAAKuB,IAAQ,EACpCvF,EAAKpb,KAAKohB,KAAKhC,EAAKwB,IACpBlH,EAAMA,EAAK1Z,KAAKohB,KAAKpC,EAAK8B,IAAQ,EAElCxD,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKpC,EAAK+B,IAAQ,GACvB/gB,KAAKohB,KAAKnC,EAAK6B,IAAQ,EACpC1F,EAAMA,EAAKpb,KAAKohB,KAAKnC,EAAK8B,IAAQ,EAKlC,IAAIqB,IAAS1vB,GAJbgnB,EAAMA,EAAK1Z,KAAKohB,KAAKvC,EAAKoC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKvC,EAAKqC,IAAQ,GACvBlhB,KAAKohB,KAAKtC,EAAKmC,IAAQ,KAEW,IAAO,EACtDvuB,IAFA0oB,EAAMA,EAAKpb,KAAKohB,KAAKtC,EAAKoC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEP1I,EAAK1Z,KAAKohB,KAAKjC,EAAK2B,IAEpBxD,GADAA,EAAMtd,KAAKohB,KAAKjC,EAAK4B,KACR/gB,KAAKohB,KAAKhC,EAAK0B,IAAQ,EACpC1F,EAAKpb,KAAKohB,KAAKhC,EAAK2B,IAKpB,IAAIsB,IAAS3vB,GAJbgnB,EAAMA,EAAK1Z,KAAKohB,KAAKpC,EAAKiC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMtd,KAAKohB,KAAKpC,EAAKkC,IAAQ,GACvBlhB,KAAKohB,KAAKnC,EAAKgC,IAAQ,KAEW,IAAO,EACtDvuB,IAFA0oB,EAAMA,EAAKpb,KAAKohB,KAAKnC,EAAKiC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAMP,IAAIC,IAAS5vB,GAJbgnB,EAAK1Z,KAAKohB,KAAKjC,EAAK8B,KAIG,KAAa,MAFpC3D,GADAA,EAAMtd,KAAKohB,KAAKjC,EAAK+B,KACRlhB,KAAKohB,KAAKhC,EAAK6B,IAAQ,KAEW,IAAO,EA0BtD,OAzBAvuB,IAFA0oB,EAAKpb,KAAKohB,KAAKhC,EAAK8B,MAEP5D,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SACProB,EAAE,GAAKknB,GACPlnB,EAAE,GAAKonB,GACPpnB,EAAE,GAAKqnB,GACPrnB,EAAE,GAAKsnB,GACPtnB,EAAE,GAAKunB,GACPvnB,EAAE,GAAKwnB,GACPxnB,EAAE,GAAKynB,GACPznB,EAAE,GAAK0nB,GACP1nB,EAAE,GAAK2nB,GACP3nB,EAAE,GAAK4nB,GACP5nB,EAAE,IAAM6nB,GACR7nB,EAAE,IAAM8nB,GACR9nB,EAAE,IAAM+nB,GACR/nB,EAAE,IAAMgoB,GACRhoB,EAAE,IAAMioB,GACRjoB,EAAE,IAAMkoB,GACRloB,EAAE,IAAMmoB,GACRnoB,EAAE,IAAMooB,GACRpoB,EAAE,IAAMqoB,GACE,IAAN5vB,IACFuH,EAAE,IAAMvH,EACRuL,EAAIvX,UAECuX,CACT,EAgDA,SAASskB,EAAYh7B,EAAMinB,EAAKvQ,GAE9B,OADW,IAAIukB,GACHC,KAAKl7B,EAAMinB,EAAKvQ,EAC9B,CAqBA,SAASukB,EAAME,EAAGC,GAChBp9B,KAAKm9B,EAAIA,EACTn9B,KAAKo9B,EAAIA,CACX,CAxEK3iB,KAAKohB,OACR/D,EAAc5D,GAiDhB1C,EAAG7xB,UAAU09B,MAAQ,SAAgBpU,EAAKvQ,GACxC,IAAI/V,EACAoR,EAAM/T,KAAKmB,OAAS8nB,EAAI9nB,OAW5B,OATEwB,EADkB,KAAhB3C,KAAKmB,QAAgC,KAAf8nB,EAAI9nB,OACtB22B,EAAY93B,KAAMipB,EAAKvQ,GACpB3E,EAAM,GACTmgB,EAAWl0B,KAAMipB,EAAKvQ,GACnB3E,EAAM,KArDnB,SAAmB/R,EAAMinB,EAAKvQ,GAC5BA,EAAIiZ,SAAW1I,EAAI0I,SAAW3vB,EAAK2vB,SACnCjZ,EAAIvX,OAASa,EAAKb,OAAS8nB,EAAI9nB,OAI/B,IAFA,IAAIizB,EAAQ,EACRkJ,EAAU,EACL9pB,EAAI,EAAGA,EAAIkF,EAAIvX,OAAS,EAAGqS,IAAK,CAGvC,IAAI6gB,EAASiJ,EACbA,EAAU,EAGV,IAFA,IAAIhJ,EAAgB,SAARF,EACRG,EAAO9Z,KAAKwU,IAAIzb,EAAGyV,EAAI9nB,OAAS,GAC3BwW,EAAI8C,KAAK8X,IAAI,EAAG/e,EAAIxR,EAAKb,OAAS,GAAIwW,GAAK4c,EAAM5c,IAAK,CAC7D,IAAIzW,EAAIsS,EAAImE,EAGRya,GAFoB,EAAhBpwB,EAAK4vB,MAAM1wB,KACI,EAAf+nB,EAAI2I,MAAMja,IAGdwc,EAAS,SAAJ/B,EAGTkC,EAAa,UADbH,EAAMA,EAAKG,EAAS,GAIpBgJ,IAFAjJ,GAHAA,EAAUA,GAAWjC,EAAI,SAAa,GAAM,IAGxB+B,IAAO,IAAO,KAEZ,GACtBE,GAAU,QACZ,CACA3b,EAAIkZ,MAAMpe,GAAK8gB,EACfF,EAAQC,EACRA,EAASiJ,CACX,CAOA,OANc,IAAVlJ,EACF1b,EAAIkZ,MAAMpe,GAAK4gB,EAEf1b,EAAIvX,SAGCuX,EAAIwa,OACb,CAeUqK,CAASv9B,KAAMipB,EAAKvQ,GAEpBskB,EAAWh9B,KAAMipB,EAAKvQ,GAGvB/V,CACT,EAUAs6B,EAAKt9B,UAAU69B,QAAU,SAAkBC,GAGzC,IAFA,IAAI3oB,EAAI,IAAI9T,MAAMy8B,GACdC,EAAIlM,EAAG7xB,UAAU+1B,WAAW+H,GAAK,EAC5Bv8B,EAAI,EAAGA,EAAIu8B,EAAGv8B,IACrB4T,EAAE5T,GAAKlB,KAAK29B,OAAOz8B,EAAGw8B,EAAGD,GAG3B,OAAO3oB,CACT,EAGAmoB,EAAKt9B,UAAUg+B,OAAS,SAAiBR,EAAGO,EAAGD,GAC7C,GAAU,IAANN,GAAWA,IAAMM,EAAI,EAAG,OAAON,EAGnC,IADA,IAAIS,EAAK,EACA18B,EAAI,EAAGA,EAAIw8B,EAAGx8B,IACrB08B,IAAW,EAAJT,IAAWO,EAAIx8B,EAAI,EAC1Bi8B,IAAM,EAGR,OAAOS,CACT,EAIAX,EAAKt9B,UAAUk+B,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GACpE,IAAK,IAAIv8B,EAAI,EAAGA,EAAIu8B,EAAGv8B,IACrB+8B,EAAK/8B,GAAK68B,EAAID,EAAI58B,IAClBg9B,EAAKh9B,GAAK88B,EAAIF,EAAI58B,GAEtB,EAEA+7B,EAAKt9B,UAAUw+B,UAAY,SAAoBJ,EAAKC,EAAKC,EAAMC,EAAMT,EAAGK,GACtE99B,KAAK69B,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GAExC,IAAK,IAAIW,EAAI,EAAGA,EAAIX,EAAGW,IAAM,EAM3B,IALA,IAAIV,EAAIU,GAAK,EAETC,EAAQ5jB,KAAK6jB,IAAI,EAAI7jB,KAAK8jB,GAAKb,GAC/Bc,EAAQ/jB,KAAKgkB,IAAI,EAAIhkB,KAAK8jB,GAAKb,GAE1B30B,EAAI,EAAGA,EAAI00B,EAAG10B,GAAK20B,EAI1B,IAHA,IAAIgB,EAASL,EACTM,EAASH,EAEJ7mB,EAAI,EAAGA,EAAIymB,EAAGzmB,IAAK,CAC1B,IAAI+X,EAAKuO,EAAKl1B,EAAI4O,GACdinB,EAAKV,EAAKn1B,EAAI4O,GAEdknB,EAAKZ,EAAKl1B,EAAI4O,EAAIymB,GAClBU,EAAKZ,EAAKn1B,EAAI4O,EAAIymB,GAElBW,EAAKL,EAASG,EAAKF,EAASG,EAEhCA,EAAKJ,EAASI,EAAKH,EAASE,EAC5BA,EAAKE,EAELd,EAAKl1B,EAAI4O,GAAK+X,EAAKmP,EACnBX,EAAKn1B,EAAI4O,GAAKinB,EAAKE,EAEnBb,EAAKl1B,EAAI4O,EAAIymB,GAAK1O,EAAKmP,EACvBX,EAAKn1B,EAAI4O,EAAIymB,GAAKQ,EAAKE,EAGnBnnB,IAAM+lB,IACRqB,EAAKV,EAAQK,EAASF,EAAQG,EAE9BA,EAASN,EAAQM,EAASH,EAAQE,EAClCA,EAASK,EAEb,CAGN,EAEA9B,EAAKt9B,UAAUq/B,YAAc,SAAsBC,EAAGC,GACpD,IAAIzB,EAAqB,EAAjBhjB,KAAK8X,IAAI2M,EAAGD,GAChBE,EAAU,EAAJ1B,EACNv8B,EAAI,EACR,IAAKu8B,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/Bv8B,IAGF,OAAO,GAAKA,EAAI,EAAIi+B,CACtB,EAEAlC,EAAKt9B,UAAUy/B,UAAY,SAAoBrB,EAAKC,EAAKP,GACvD,KAAIA,GAAK,GAET,IAAK,IAAIv8B,EAAI,EAAGA,EAAIu8B,EAAI,EAAGv8B,IAAK,CAC9B,IAAI4T,EAAIipB,EAAI78B,GAEZ68B,EAAI78B,GAAK68B,EAAIN,EAAIv8B,EAAI,GACrB68B,EAAIN,EAAIv8B,EAAI,GAAK4T,EAEjBA,EAAIkpB,EAAI98B,GAER88B,EAAI98B,IAAM88B,EAAIP,EAAIv8B,EAAI,GACtB88B,EAAIP,EAAIv8B,EAAI,IAAM4T,CACpB,CACF,EAEAmoB,EAAKt9B,UAAU0/B,aAAe,SAAuBC,EAAI7B,GAEvD,IADA,IAAIrJ,EAAQ,EACHlzB,EAAI,EAAGA,EAAIu8B,EAAI,EAAGv8B,IAAK,CAC9B,IAAI8xB,EAAoC,KAAhCvY,KAAK8kB,MAAMD,EAAG,EAAIp+B,EAAI,GAAKu8B,GACjChjB,KAAK8kB,MAAMD,EAAG,EAAIp+B,GAAKu8B,GACvBrJ,EAEFkL,EAAGp+B,GAAS,SAAJ8xB,EAGNoB,EADEpB,EAAI,SACE,EAEAA,EAAI,SAAY,CAE5B,CAEA,OAAOsM,CACT,EAEArC,EAAKt9B,UAAU6/B,WAAa,SAAqBF,EAAIvrB,EAAKgqB,EAAKN,GAE7D,IADA,IAAIrJ,EAAQ,EACHlzB,EAAI,EAAGA,EAAI6S,EAAK7S,IACvBkzB,GAAyB,EAARkL,EAAGp+B,GAEpB68B,EAAI,EAAI78B,GAAa,KAARkzB,EAAgBA,KAAkB,GAC/C2J,EAAI,EAAI78B,EAAI,GAAa,KAARkzB,EAAgBA,KAAkB,GAIrD,IAAKlzB,EAAI,EAAI6S,EAAK7S,EAAIu8B,IAAKv8B,EACzB68B,EAAI78B,GAAK,EAGXmmB,EAAiB,IAAV+M,GACP/M,EAA6B,KAAb,KAAR+M,GACV,EAEA6I,EAAKt9B,UAAU8/B,KAAO,SAAehC,GAEnC,IADA,IAAIiC,EAAK,IAAI1+B,MAAMy8B,GACVv8B,EAAI,EAAGA,EAAIu8B,EAAGv8B,IACrBw+B,EAAGx+B,GAAK,EAGV,OAAOw+B,CACT,EAEAzC,EAAKt9B,UAAUu9B,KAAO,SAAeC,EAAGC,EAAG1kB,GACzC,IAAI+kB,EAAI,EAAIz9B,KAAKg/B,YAAY7B,EAAEh8B,OAAQi8B,EAAEj8B,QAErC28B,EAAM99B,KAAKw9B,QAAQC,GAEnBkC,EAAI3/B,KAAKy/B,KAAKhC,GAEdM,EAAM,IAAI/8B,MAAMy8B,GAChBmC,EAAO,IAAI5+B,MAAMy8B,GACjBoC,EAAO,IAAI7+B,MAAMy8B,GAEjBqC,EAAO,IAAI9+B,MAAMy8B,GACjBsC,EAAQ,IAAI/+B,MAAMy8B,GAClBuC,EAAQ,IAAIh/B,MAAMy8B,GAElBwC,EAAOvnB,EAAIkZ,MACfqO,EAAK9+B,OAASs8B,EAEdz9B,KAAKw/B,WAAWrC,EAAEvL,MAAOuL,EAAEh8B,OAAQ48B,EAAKN,GACxCz9B,KAAKw/B,WAAWpC,EAAExL,MAAOwL,EAAEj8B,OAAQ2+B,EAAMrC,GAEzCz9B,KAAKm+B,UAAUJ,EAAK4B,EAAGC,EAAMC,EAAMpC,EAAGK,GACtC99B,KAAKm+B,UAAU2B,EAAMH,EAAGI,EAAOC,EAAOvC,EAAGK,GAEzC,IAAK,IAAI58B,EAAI,EAAGA,EAAIu8B,EAAGv8B,IAAK,CAC1B,IAAI69B,EAAKa,EAAK1+B,GAAK6+B,EAAM7+B,GAAK2+B,EAAK3+B,GAAK8+B,EAAM9+B,GAC9C2+B,EAAK3+B,GAAK0+B,EAAK1+B,GAAK8+B,EAAM9+B,GAAK2+B,EAAK3+B,GAAK6+B,EAAM7+B,GAC/C0+B,EAAK1+B,GAAK69B,CACZ,CASA,OAPA/+B,KAAKo/B,UAAUQ,EAAMC,EAAMpC,GAC3Bz9B,KAAKm+B,UAAUyB,EAAMC,EAAMI,EAAMN,EAAGlC,EAAGK,GACvC99B,KAAKo/B,UAAUa,EAAMN,EAAGlC,GACxBz9B,KAAKq/B,aAAaY,EAAMxC,GAExB/kB,EAAIiZ,SAAWwL,EAAExL,SAAWyL,EAAEzL,SAC9BjZ,EAAIvX,OAASg8B,EAAEh8B,OAASi8B,EAAEj8B,OACnBuX,EAAIwa,OACb,EAGA1B,EAAG7xB,UAAU2yB,IAAM,SAAcrJ,GAC/B,IAAIvQ,EAAM,IAAI8Y,EAAG,MAEjB,OADA9Y,EAAIkZ,MAAQ,IAAI5wB,MAAMhB,KAAKmB,OAAS8nB,EAAI9nB,QACjCnB,KAAKq9B,MAAMpU,EAAKvQ,EACzB,EAGA8Y,EAAG7xB,UAAUugC,KAAO,SAAejX,GACjC,IAAIvQ,EAAM,IAAI8Y,EAAG,MAEjB,OADA9Y,EAAIkZ,MAAQ,IAAI5wB,MAAMhB,KAAKmB,OAAS8nB,EAAI9nB,QACjC67B,EAAWh9B,KAAMipB,EAAKvQ,EAC/B,EAGA8Y,EAAG7xB,UAAUk8B,KAAO,SAAe5S,GACjC,OAAOjpB,KAAKwoB,QAAQ6U,MAAMpU,EAAKjpB,KACjC,EAEAwxB,EAAG7xB,UAAU6zB,MAAQ,SAAgBvK,GACnC5B,EAAsB,iBAAR4B,GACd5B,EAAO4B,EAAM,UAIb,IADA,IAAImL,EAAQ,EACHlzB,EAAI,EAAGA,EAAIlB,KAAKmB,OAAQD,IAAK,CACpC,IAAI8xB,GAAqB,EAAhBhzB,KAAK4xB,MAAM1wB,IAAU+nB,EAC1BkL,GAAU,SAAJnB,IAA0B,SAARoB,GAC5BA,IAAU,GACVA,GAAUpB,EAAI,SAAa,EAE3BoB,GAASD,IAAO,GAChBn0B,KAAK4xB,MAAM1wB,GAAU,SAALizB,CAClB,CAOA,OALc,IAAVC,IACFp0B,KAAK4xB,MAAM1wB,GAAKkzB,EAChBp0B,KAAKmB,UAGAnB,IACT,EAEAwxB,EAAG7xB,UAAUwgC,KAAO,SAAelX,GACjC,OAAOjpB,KAAKwoB,QAAQgL,MAAMvK,EAC5B,EAGAuI,EAAG7xB,UAAUygC,IAAM,WACjB,OAAOpgC,KAAKsyB,IAAItyB,KAClB,EAGAwxB,EAAG7xB,UAAU0gC,KAAO,WAClB,OAAOrgC,KAAK67B,KAAK77B,KAAKwoB,QACxB,EAGAgJ,EAAG7xB,UAAU+zB,IAAM,SAAczK,GAC/B,IAAI+J,EAxxCN,SAAqB/J,GAGnB,IAFA,IAAI+J,EAAI,IAAIhyB,MAAMioB,EAAI2M,aAEb6B,EAAM,EAAGA,EAAMzE,EAAE7xB,OAAQs2B,IAAO,CACvC,IAAIxE,EAAOwE,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjBzE,EAAEyE,IAAQxO,EAAI2I,MAAMqB,GAAQ,GAAKyE,KAAWA,CAC9C,CAEA,OAAO1E,CACT,CA6wCUsN,CAAWrX,GACnB,GAAiB,IAAb+J,EAAE7xB,OAAc,OAAO,IAAIqwB,EAAG,GAIlC,IADA,IAAI7uB,EAAM3C,KACDkB,EAAI,EAAGA,EAAI8xB,EAAE7xB,QACP,IAAT6xB,EAAE9xB,GADsBA,IAAKyB,EAAMA,EAAIy9B,OAI7C,KAAMl/B,EAAI8xB,EAAE7xB,OACV,IAAK,IAAIm0B,EAAI3yB,EAAIy9B,MAAOl/B,EAAI8xB,EAAE7xB,OAAQD,IAAKo0B,EAAIA,EAAE8K,MAClC,IAATpN,EAAE9xB,KAENyB,EAAMA,EAAI2vB,IAAIgD,IAIlB,OAAO3yB,CACT,EAGA6uB,EAAG7xB,UAAU4gC,OAAS,SAAiBC,GACrCnZ,EAAuB,iBAATmZ,GAAqBA,GAAQ,GAC3C,IAGIt/B,EAHAkxB,EAAIoO,EAAO,GACXpC,GAAKoC,EAAOpO,GAAK,GACjBqO,EAAa,WAAe,GAAKrO,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAIgC,EAAQ,EAEZ,IAAKlzB,EAAI,EAAGA,EAAIlB,KAAKmB,OAAQD,IAAK,CAChC,IAAIw/B,EAAW1gC,KAAK4xB,MAAM1wB,GAAKu/B,EAC3BtzB,GAAsB,EAAhBnN,KAAK4xB,MAAM1wB,IAAUw/B,GAAatO,EAC5CpyB,KAAK4xB,MAAM1wB,GAAKiM,EAAIinB,EACpBA,EAAQsM,IAAc,GAAKtO,CAC7B,CAEIgC,IACFp0B,KAAK4xB,MAAM1wB,GAAKkzB,EAChBp0B,KAAKmB,SAET,CAEA,GAAU,IAANi9B,EAAS,CACX,IAAKl9B,EAAIlB,KAAKmB,OAAS,EAAGD,GAAK,EAAGA,IAChClB,KAAK4xB,MAAM1wB,EAAIk9B,GAAKp+B,KAAK4xB,MAAM1wB,GAGjC,IAAKA,EAAI,EAAGA,EAAIk9B,EAAGl9B,IACjBlB,KAAK4xB,MAAM1wB,GAAK,EAGlBlB,KAAKmB,QAAUi9B,CACjB,CAEA,OAAOp+B,KAAKkzB,OACd,EAEA1B,EAAG7xB,UAAUghC,MAAQ,SAAgBH,GAGnC,OADAnZ,EAAyB,IAAlBrnB,KAAK2xB,UACL3xB,KAAKugC,OAAOC,EACrB,EAKAhP,EAAG7xB,UAAU61B,OAAS,SAAiBgL,EAAMI,EAAMC,GAEjD,IAAIC,EADJzZ,EAAuB,iBAATmZ,GAAqBA,GAAQ,GAGzCM,EADEF,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAIxO,EAAIoO,EAAO,GACXpC,EAAI3jB,KAAKwU,KAAKuR,EAAOpO,GAAK,GAAIpyB,KAAKmB,QACnC4/B,EAAO,SAAc,WAAc3O,GAAMA,EACzC4O,EAAcH,EAMlB,GAJAC,GAAK1C,EACL0C,EAAIrmB,KAAK8X,IAAI,EAAGuO,GAGZE,EAAa,CACf,IAAK,IAAI9/B,EAAI,EAAGA,EAAIk9B,EAAGl9B,IACrB8/B,EAAYpP,MAAM1wB,GAAKlB,KAAK4xB,MAAM1wB,GAEpC8/B,EAAY7/B,OAASi9B,CACvB,CAEA,GAAU,IAANA,QAEG,GAAIp+B,KAAKmB,OAASi9B,EAEvB,IADAp+B,KAAKmB,QAAUi9B,EACVl9B,EAAI,EAAGA,EAAIlB,KAAKmB,OAAQD,IAC3BlB,KAAK4xB,MAAM1wB,GAAKlB,KAAK4xB,MAAM1wB,EAAIk9B,QAGjCp+B,KAAK4xB,MAAM,GAAK,EAChB5xB,KAAKmB,OAAS,EAGhB,IAAIizB,EAAQ,EACZ,IAAKlzB,EAAIlB,KAAKmB,OAAS,EAAGD,GAAK,IAAgB,IAAVkzB,GAAelzB,GAAK4/B,GAAI5/B,IAAK,CAChE,IAAIqyB,EAAuB,EAAhBvzB,KAAK4xB,MAAM1wB,GACtBlB,KAAK4xB,MAAM1wB,GAAMkzB,GAAU,GAAKhC,EAAOmB,IAASnB,EAChDgC,EAAQb,EAAOwN,CACjB,CAYA,OATIC,GAAyB,IAAV5M,IACjB4M,EAAYpP,MAAMoP,EAAY7/B,UAAYizB,GAGxB,IAAhBp0B,KAAKmB,SACPnB,KAAK4xB,MAAM,GAAK,EAChB5xB,KAAKmB,OAAS,GAGTnB,KAAKkzB,OACd,EAEA1B,EAAG7xB,UAAUshC,MAAQ,SAAgBT,EAAMI,EAAMC,GAG/C,OADAxZ,EAAyB,IAAlBrnB,KAAK2xB,UACL3xB,KAAKw1B,OAAOgL,EAAMI,EAAMC,EACjC,EAGArP,EAAG7xB,UAAUuhC,KAAO,SAAeV,GACjC,OAAOxgC,KAAKwoB,QAAQmY,MAAMH,EAC5B,EAEAhP,EAAG7xB,UAAUwhC,MAAQ,SAAgBX,GACnC,OAAOxgC,KAAKwoB,QAAQ+X,OAAOC,EAC7B,EAGAhP,EAAG7xB,UAAUyhC,KAAO,SAAeZ,GACjC,OAAOxgC,KAAKwoB,QAAQyY,MAAMT,EAC5B,EAEAhP,EAAG7xB,UAAU0hC,MAAQ,SAAgBb,GACnC,OAAOxgC,KAAKwoB,QAAQgN,OAAOgL,EAC7B,EAGAhP,EAAG7xB,UAAU02B,MAAQ,SAAgBoB,GACnCpQ,EAAsB,iBAARoQ,GAAoBA,GAAO,GACzC,IAAIrF,EAAIqF,EAAM,GACV2G,GAAK3G,EAAMrF,GAAK,GAChBkD,EAAI,GAAKlD,EAGb,QAAIpyB,KAAKmB,QAAUi9B,KAGXp+B,KAAK4xB,MAAMwM,GAEL9I,GAChB,EAGA9D,EAAG7xB,UAAU2hC,OAAS,SAAiBd,GACrCnZ,EAAuB,iBAATmZ,GAAqBA,GAAQ,GAC3C,IAAIpO,EAAIoO,EAAO,GACXpC,GAAKoC,EAAOpO,GAAK,GAIrB,GAFA/K,EAAyB,IAAlBrnB,KAAK2xB,SAAgB,2CAExB3xB,KAAKmB,QAAUi9B,EACjB,OAAOp+B,KAQT,GALU,IAANoyB,GACFgM,IAEFp+B,KAAKmB,OAASsZ,KAAKwU,IAAImP,EAAGp+B,KAAKmB,QAErB,IAANixB,EAAS,CACX,IAAI2O,EAAO,SAAc,WAAc3O,GAAMA,EAC7CpyB,KAAK4xB,MAAM5xB,KAAKmB,OAAS,IAAM4/B,CACjC,CAEA,OAAO/gC,KAAKkzB,OACd,EAGA1B,EAAG7xB,UAAU4hC,MAAQ,SAAgBf,GACnC,OAAOxgC,KAAKwoB,QAAQ8Y,OAAOd,EAC7B,EAGAhP,EAAG7xB,UAAUw2B,MAAQ,SAAgBlN,GAGnC,OAFA5B,EAAsB,iBAAR4B,GACd5B,EAAO4B,EAAM,UACTA,EAAM,EAAUjpB,KAAKwhC,OAAOvY,GAGV,IAAlBjpB,KAAK2xB,SACa,IAAhB3xB,KAAKmB,SAAiC,EAAhBnB,KAAK4xB,MAAM,IAAU3I,GAC7CjpB,KAAK4xB,MAAM,GAAK3I,GAAuB,EAAhBjpB,KAAK4xB,MAAM,IAClC5xB,KAAK2xB,SAAW,EACT3xB,OAGTA,KAAK2xB,SAAW,EAChB3xB,KAAKwhC,MAAMvY,GACXjpB,KAAK2xB,SAAW,EACT3xB,MAIFA,KAAKyzB,OAAOxK,EACrB,EAEAuI,EAAG7xB,UAAU8zB,OAAS,SAAiBxK,GACrCjpB,KAAK4xB,MAAM,IAAM3I,EAGjB,IAAK,IAAI/nB,EAAI,EAAGA,EAAIlB,KAAKmB,QAAUnB,KAAK4xB,MAAM1wB,IAAM,SAAWA,IAC7DlB,KAAK4xB,MAAM1wB,IAAM,SACbA,IAAMlB,KAAKmB,OAAS,EACtBnB,KAAK4xB,MAAM1wB,EAAI,GAAK,EAEpBlB,KAAK4xB,MAAM1wB,EAAI,KAKnB,OAFAlB,KAAKmB,OAASsZ,KAAK8X,IAAIvyB,KAAKmB,OAAQD,EAAI,GAEjClB,IACT,EAGAwxB,EAAG7xB,UAAU6hC,MAAQ,SAAgBvY,GAGnC,GAFA5B,EAAsB,iBAAR4B,GACd5B,EAAO4B,EAAM,UACTA,EAAM,EAAG,OAAOjpB,KAAKm2B,OAAOlN,GAEhC,GAAsB,IAAlBjpB,KAAK2xB,SAIP,OAHA3xB,KAAK2xB,SAAW,EAChB3xB,KAAKm2B,MAAMlN,GACXjpB,KAAK2xB,SAAW,EACT3xB,KAKT,GAFAA,KAAK4xB,MAAM,IAAM3I,EAEG,IAAhBjpB,KAAKmB,QAAgBnB,KAAK4xB,MAAM,GAAK,EACvC5xB,KAAK4xB,MAAM,IAAM5xB,KAAK4xB,MAAM,GAC5B5xB,KAAK2xB,SAAW,OAGhB,IAAK,IAAIzwB,EAAI,EAAGA,EAAIlB,KAAKmB,QAAUnB,KAAK4xB,MAAM1wB,GAAK,EAAGA,IACpDlB,KAAK4xB,MAAM1wB,IAAM,SACjBlB,KAAK4xB,MAAM1wB,EAAI,IAAM,EAIzB,OAAOlB,KAAKkzB,OACd,EAEA1B,EAAG7xB,UAAU8hC,KAAO,SAAexY,GACjC,OAAOjpB,KAAKwoB,QAAQ2N,MAAMlN,EAC5B,EAEAuI,EAAG7xB,UAAU+hC,KAAO,SAAezY,GACjC,OAAOjpB,KAAKwoB,QAAQgZ,MAAMvY,EAC5B,EAEAuI,EAAG7xB,UAAUgiC,KAAO,WAGlB,OAFA3hC,KAAK2xB,SAAW,EAET3xB,IACT,EAEAwxB,EAAG7xB,UAAUs2B,IAAM,WACjB,OAAOj2B,KAAKwoB,QAAQmZ,MACtB,EAEAnQ,EAAG7xB,UAAUiiC,aAAe,SAAuB3Y,EAAKqJ,EAAKuP,GAC3D,IACI3gC,EAIA8xB,EALAjf,EAAMkV,EAAI9nB,OAAS0gC,EAGvB7hC,KAAK4zB,QAAQ7f,GAGb,IAAIqgB,EAAQ,EACZ,IAAKlzB,EAAI,EAAGA,EAAI+nB,EAAI9nB,OAAQD,IAAK,CAC/B8xB,GAA6B,EAAxBhzB,KAAK4xB,MAAM1wB,EAAI2gC,IAAczN,EAClC,IAAI3B,GAAwB,EAAfxJ,EAAI2I,MAAM1wB,IAAUoxB,EAEjC8B,IADApB,GAAa,SAARP,IACS,KAAQA,EAAQ,SAAa,GAC3CzyB,KAAK4xB,MAAM1wB,EAAI2gC,GAAa,SAAJ7O,CAC1B,CACA,KAAO9xB,EAAIlB,KAAKmB,OAAS0gC,EAAO3gC,IAE9BkzB,GADApB,GAA6B,EAAxBhzB,KAAK4xB,MAAM1wB,EAAI2gC,IAAczN,IACrB,GACbp0B,KAAK4xB,MAAM1wB,EAAI2gC,GAAa,SAAJ7O,EAG1B,GAAc,IAAVoB,EAAa,OAAOp0B,KAAKkzB,QAK7B,IAFA7L,GAAkB,IAAX+M,GACPA,EAAQ,EACHlzB,EAAI,EAAGA,EAAIlB,KAAKmB,OAAQD,IAE3BkzB,GADApB,IAAsB,EAAhBhzB,KAAK4xB,MAAM1wB,IAAUkzB,IACd,GACbp0B,KAAK4xB,MAAM1wB,GAAS,SAAJ8xB,EAIlB,OAFAhzB,KAAK2xB,SAAW,EAET3xB,KAAKkzB,OACd,EAEA1B,EAAG7xB,UAAUmiC,SAAW,SAAmB7Y,EAAKje,GAC9C,IAAI62B,GAAQ7hC,KAAKmB,OAAS8nB,EAAI9nB,QAE1BkW,EAAIrX,KAAKwoB,QACTlR,EAAI2R,EAGJ8Y,EAA8B,EAAxBzqB,EAAEsa,MAAMta,EAAEnW,OAAS,GAGf,IADd0gC,EAAQ,GADM7hC,KAAK01B,WAAWqM,MAG5BzqB,EAAIA,EAAE6pB,MAAMU,GACZxqB,EAAEkpB,OAAOsB,GACTE,EAA8B,EAAxBzqB,EAAEsa,MAAMta,EAAEnW,OAAS,IAI3B,IACIm0B,EADA4J,EAAI7nB,EAAElW,OAASmW,EAAEnW,OAGrB,GAAa,QAAT6J,EAAgB,EAClBsqB,EAAI,IAAI9D,EAAG,OACTrwB,OAAS+9B,EAAI,EACf5J,EAAE1D,MAAQ,IAAI5wB,MAAMs0B,EAAEn0B,QACtB,IAAK,IAAID,EAAI,EAAGA,EAAIo0B,EAAEn0B,OAAQD,IAC5Bo0B,EAAE1D,MAAM1wB,GAAK,CAEjB,CAEA,IAAI8gC,EAAO3qB,EAAEmR,QAAQoZ,aAAatqB,EAAG,EAAG4nB,GAClB,IAAlB8C,EAAKrQ,WACPta,EAAI2qB,EACA1M,IACFA,EAAE1D,MAAMsN,GAAK,IAIjB,IAAK,IAAIvnB,EAAIunB,EAAI,EAAGvnB,GAAK,EAAGA,IAAK,CAC/B,IAAIsqB,EAAmC,UAAL,EAAxB5qB,EAAEua,MAAMta,EAAEnW,OAASwW,KACE,EAA5BN,EAAEua,MAAMta,EAAEnW,OAASwW,EAAI,IAO1B,IAHAsqB,EAAKxnB,KAAKwU,IAAKgT,EAAKF,EAAO,EAAG,UAE9B1qB,EAAEuqB,aAAatqB,EAAG2qB,EAAItqB,GACA,IAAfN,EAAEsa,UACPsQ,IACA5qB,EAAEsa,SAAW,EACbta,EAAEuqB,aAAatqB,EAAG,EAAGK,GAChBN,EAAEsd,WACLtd,EAAEsa,UAAY,GAGd2D,IACFA,EAAE1D,MAAMja,GAAKsqB,EAEjB,CAWA,OAVI3M,GACFA,EAAEpC,QAEJ7b,EAAE6b,QAGW,QAATloB,GAA4B,IAAV62B,GACpBxqB,EAAEme,OAAOqM,GAGJ,CACLK,IAAK5M,GAAK,KACVhC,IAAKjc,EAET,EAMAma,EAAG7xB,UAAUwiC,OAAS,SAAiBlZ,EAAKje,EAAMo3B,GAGhD,OAFA/a,GAAQ4B,EAAI0L,UAER30B,KAAK20B,SACA,CACLuN,IAAK,IAAI1Q,EAAG,GACZ8B,IAAK,IAAI9B,EAAG,IAKM,IAAlBxxB,KAAK2xB,UAAmC,IAAjB1I,EAAI0I,UAC7BhvB,EAAM3C,KAAKy2B,MAAM0L,OAAOlZ,EAAKje,GAEhB,QAATA,IACFk3B,EAAMv/B,EAAIu/B,IAAIzL,OAGH,QAATzrB,IACFsoB,EAAM3wB,EAAI2wB,IAAImD,MACV2L,GAA6B,IAAjB9O,EAAI3B,UAClB2B,EAAIqE,KAAK1O,IAIN,CACLiZ,IAAKA,EACL5O,IAAKA,IAIa,IAAlBtzB,KAAK2xB,UAAmC,IAAjB1I,EAAI0I,UAC7BhvB,EAAM3C,KAAKmiC,OAAOlZ,EAAIwN,MAAOzrB,GAEhB,QAATA,IACFk3B,EAAMv/B,EAAIu/B,IAAIzL,OAGT,CACLyL,IAAKA,EACL5O,IAAK3wB,EAAI2wB,MAI0B,IAAlCtzB,KAAK2xB,SAAW1I,EAAI0I,WACvBhvB,EAAM3C,KAAKy2B,MAAM0L,OAAOlZ,EAAIwN,MAAOzrB,GAEtB,QAATA,IACFsoB,EAAM3wB,EAAI2wB,IAAImD,MACV2L,GAA6B,IAAjB9O,EAAI3B,UAClB2B,EAAIsE,KAAK3O,IAIN,CACLiZ,IAAKv/B,EAAIu/B,IACT5O,IAAKA,IAOLrK,EAAI9nB,OAASnB,KAAKmB,QAAUnB,KAAK0yB,IAAIzJ,GAAO,EACvC,CACLiZ,IAAK,IAAI1Q,EAAG,GACZ8B,IAAKtzB,MAKU,IAAfipB,EAAI9nB,OACO,QAAT6J,EACK,CACLk3B,IAAKliC,KAAKqiC,KAAKpZ,EAAI2I,MAAM,IACzB0B,IAAK,MAII,QAATtoB,EACK,CACLk3B,IAAK,KACL5O,IAAK,IAAI9B,EAAGxxB,KAAK40B,KAAK3L,EAAI2I,MAAM,MAI7B,CACLsQ,IAAKliC,KAAKqiC,KAAKpZ,EAAI2I,MAAM,IACzB0B,IAAK,IAAI9B,EAAGxxB,KAAK40B,KAAK3L,EAAI2I,MAAM,MAI7B5xB,KAAK8hC,SAAS7Y,EAAKje,GAlF1B,IAAIk3B,EAAK5O,EAAK3wB,CAmFhB,EAGA6uB,EAAG7xB,UAAUuiC,IAAM,SAAcjZ,GAC/B,OAAOjpB,KAAKmiC,OAAOlZ,EAAK,OAAO,GAAOiZ,GACxC,EAGA1Q,EAAG7xB,UAAU2zB,IAAM,SAAcrK,GAC/B,OAAOjpB,KAAKmiC,OAAOlZ,EAAK,OAAO,GAAOqK,GACxC,EAEA9B,EAAG7xB,UAAU2iC,KAAO,SAAerZ,GACjC,OAAOjpB,KAAKmiC,OAAOlZ,EAAK,OAAO,GAAMqK,GACvC,EAGA9B,EAAG7xB,UAAU4iC,SAAW,SAAmBtZ,GACzC,IAAIuZ,EAAKxiC,KAAKmiC,OAAOlZ,GAGrB,GAAIuZ,EAAGlP,IAAIqB,SAAU,OAAO6N,EAAGN,IAE/B,IAAI5O,EAA0B,IAApBkP,EAAGN,IAAIvQ,SAAiB6Q,EAAGlP,IAAIsE,KAAK3O,GAAOuZ,EAAGlP,IAEpDmP,EAAOxZ,EAAIoY,MAAM,GACjBqB,EAAKzZ,EAAIsM,MAAM,GACf7C,EAAMY,EAAIZ,IAAI+P,GAGlB,OAAI/P,EAAM,GAAY,IAAPgQ,GAAoB,IAARhQ,EAAkB8P,EAAGN,IAGrB,IAApBM,EAAGN,IAAIvQ,SAAiB6Q,EAAGN,IAAIV,MAAM,GAAKgB,EAAGN,IAAI/L,MAAM,EAChE,EAEA3E,EAAG7xB,UAAUi1B,KAAO,SAAe3L,GACjC5B,EAAO4B,GAAO,UAId,IAHA,IAAIlgB,GAAK,GAAK,IAAMkgB,EAEhB0Z,EAAM,EACDzhC,EAAIlB,KAAKmB,OAAS,EAAGD,GAAK,EAAGA,IACpCyhC,GAAO55B,EAAI45B,GAAuB,EAAhB3iC,KAAK4xB,MAAM1wB,KAAW+nB,EAG1C,OAAO0Z,CACT,EAGAnR,EAAG7xB,UAAUk1B,MAAQ,SAAgB5L,GACnC5B,EAAO4B,GAAO,UAGd,IADA,IAAImL,EAAQ,EACHlzB,EAAIlB,KAAKmB,OAAS,EAAGD,GAAK,EAAGA,IAAK,CACzC,IAAI8xB,GAAqB,EAAhBhzB,KAAK4xB,MAAM1wB,IAAkB,SAARkzB,EAC9Bp0B,KAAK4xB,MAAM1wB,GAAM8xB,EAAI/J,EAAO,EAC5BmL,EAAQpB,EAAI/J,CACd,CAEA,OAAOjpB,KAAKkzB,OACd,EAEA1B,EAAG7xB,UAAU0iC,KAAO,SAAepZ,GACjC,OAAOjpB,KAAKwoB,QAAQqM,MAAM5L,EAC5B,EAEAuI,EAAG7xB,UAAUijC,KAAO,SAAe75B,GACjCse,EAAsB,IAAfte,EAAE4oB,UACTtK,GAAQte,EAAE4rB,UAEV,IAAIwI,EAAIn9B,KACJo9B,EAAIr0B,EAAEyf,QAGR2U,EADiB,IAAfA,EAAExL,SACAwL,EAAEmF,KAAKv5B,GAEPo0B,EAAE3U,QAaR,IATA,IAAIqa,EAAI,IAAIrR,EAAG,GACXsR,EAAI,IAAItR,EAAG,GAGXuR,EAAI,IAAIvR,EAAG,GACXwR,EAAI,IAAIxR,EAAG,GAEXyR,EAAI,EAED9F,EAAE+F,UAAY9F,EAAE8F,UACrB/F,EAAE3H,OAAO,GACT4H,EAAE5H,OAAO,KACPyN,EAMJ,IAHA,IAAIE,EAAK/F,EAAE5U,QACP4a,EAAKjG,EAAE3U,SAEH2U,EAAExI,UAAU,CAClB,IAAK,IAAIzzB,EAAI,EAAGmiC,EAAK,EAAyB,IAArBlG,EAAEvL,MAAM,GAAKyR,IAAaniC,EAAI,KAAMA,EAAGmiC,IAAO,GACvE,GAAIniC,EAAI,EAEN,IADAi8B,EAAE3H,OAAOt0B,GACFA,KAAM,IACP2hC,EAAES,SAAWR,EAAEQ,WACjBT,EAAElL,KAAKwL,GACPL,EAAElL,KAAKwL,IAGTP,EAAErN,OAAO,GACTsN,EAAEtN,OAAO,GAIb,IAAK,IAAI7d,EAAI,EAAG4rB,EAAK,EAAyB,IAArBnG,EAAExL,MAAM,GAAK2R,IAAa5rB,EAAI,KAAMA,EAAG4rB,IAAO,GACvE,GAAI5rB,EAAI,EAEN,IADAylB,EAAE5H,OAAO7d,GACFA,KAAM,IACPorB,EAAEO,SAAWN,EAAEM,WACjBP,EAAEpL,KAAKwL,GACPH,EAAEpL,KAAKwL,IAGTL,EAAEvN,OAAO,GACTwN,EAAExN,OAAO,GAIT2H,EAAEzK,IAAI0K,IAAM,GACdD,EAAEvF,KAAKwF,GACPyF,EAAEjL,KAAKmL,GACPD,EAAElL,KAAKoL,KAEP5F,EAAExF,KAAKuF,GACP4F,EAAEnL,KAAKiL,GACPG,EAAEpL,KAAKkL,GAEX,CAEA,MAAO,CACLzrB,EAAG0rB,EACHzrB,EAAG0rB,EACHQ,IAAKpG,EAAEmD,OAAO0C,GAElB,EAKAzR,EAAG7xB,UAAU8jC,OAAS,SAAiB16B,GACrCse,EAAsB,IAAfte,EAAE4oB,UACTtK,GAAQte,EAAE4rB,UAEV,IAAItd,EAAIrX,KACJsX,EAAIvO,EAAEyf,QAGRnR,EADiB,IAAfA,EAAEsa,SACAta,EAAEirB,KAAKv5B,GAEPsO,EAAEmR,QAQR,IALA,IAuCI7lB,EAvCA+gC,EAAK,IAAIlS,EAAG,GACZmS,EAAK,IAAInS,EAAG,GAEZoS,EAAQtsB,EAAEkR,QAEPnR,EAAEwsB,KAAK,GAAK,GAAKvsB,EAAEusB,KAAK,GAAK,GAAG,CACrC,IAAK,IAAI3iC,EAAI,EAAGmiC,EAAK,EAAyB,IAArBhsB,EAAEua,MAAM,GAAKyR,IAAaniC,EAAI,KAAMA,EAAGmiC,IAAO,GACvE,GAAIniC,EAAI,EAEN,IADAmW,EAAEme,OAAOt0B,GACFA,KAAM,GACPwiC,EAAGJ,SACLI,EAAG/L,KAAKiM,GAGVF,EAAGlO,OAAO,GAId,IAAK,IAAI7d,EAAI,EAAG4rB,EAAK,EAAyB,IAArBjsB,EAAEsa,MAAM,GAAK2R,IAAa5rB,EAAI,KAAMA,EAAG4rB,IAAO,GACvE,GAAI5rB,EAAI,EAEN,IADAL,EAAEke,OAAO7d,GACFA,KAAM,GACPgsB,EAAGL,SACLK,EAAGhM,KAAKiM,GAGVD,EAAGnO,OAAO,GAIVne,EAAEqb,IAAIpb,IAAM,GACdD,EAAEugB,KAAKtgB,GACPosB,EAAG9L,KAAK+L,KAERrsB,EAAEsgB,KAAKvgB,GACPssB,EAAG/L,KAAK8L,GAEZ,CAaA,OATE/gC,EADgB,IAAd0U,EAAEwsB,KAAK,GACHH,EAEAC,GAGAE,KAAK,GAAK,GAChBlhC,EAAIg1B,KAAK5uB,GAGJpG,CACT,EAEA6uB,EAAG7xB,UAAU6jC,IAAM,SAAcva,GAC/B,GAAIjpB,KAAK20B,SAAU,OAAO1L,EAAIgN,MAC9B,GAAIhN,EAAI0L,SAAU,OAAO30B,KAAKi2B,MAE9B,IAAI5e,EAAIrX,KAAKwoB,QACTlR,EAAI2R,EAAIT,QACZnR,EAAEsa,SAAW,EACbra,EAAEqa,SAAW,EAGb,IAAK,IAAIkQ,EAAQ,EAAGxqB,EAAE6rB,UAAY5rB,EAAE4rB,SAAUrB,IAC5CxqB,EAAEme,OAAO,GACTle,EAAEke,OAAO,GAGX,OAAG,CACD,KAAOne,EAAE6rB,UACP7rB,EAAEme,OAAO,GAEX,KAAOle,EAAE4rB,UACP5rB,EAAEke,OAAO,GAGX,IAAIpD,EAAI/a,EAAEqb,IAAIpb,GACd,GAAI8a,EAAI,EAAG,CAET,IAAItd,EAAIuC,EACRA,EAAIC,EACJA,EAAIxC,CACN,MAAO,GAAU,IAANsd,GAAyB,IAAd9a,EAAEusB,KAAK,GAC3B,MAGFxsB,EAAEugB,KAAKtgB,EACT,CAEA,OAAOA,EAAEipB,OAAOsB,EAClB,EAGArQ,EAAG7xB,UAAUmkC,KAAO,SAAe7a,GACjC,OAAOjpB,KAAK4iC,KAAK3Z,GAAK5R,EAAEirB,KAAKrZ,EAC/B,EAEAuI,EAAG7xB,UAAUujC,OAAS,WACpB,OAA+B,IAAP,EAAhBljC,KAAK4xB,MAAM,GACrB,EAEAJ,EAAG7xB,UAAU2jC,MAAQ,WACnB,OAA+B,IAAP,EAAhBtjC,KAAK4xB,MAAM,GACrB,EAGAJ,EAAG7xB,UAAU41B,MAAQ,SAAgBtM,GACnC,OAAOjpB,KAAK4xB,MAAM,GAAK3I,CACzB,EAGAuI,EAAG7xB,UAAUokC,MAAQ,SAAgBtM,GACnCpQ,EAAsB,iBAARoQ,GACd,IAAIrF,EAAIqF,EAAM,GACV2G,GAAK3G,EAAMrF,GAAK,GAChBkD,EAAI,GAAKlD,EAGb,GAAIpyB,KAAKmB,QAAUi9B,EAGjB,OAFAp+B,KAAK4zB,QAAQwK,EAAI,GACjBp+B,KAAK4xB,MAAMwM,IAAM9I,EACVt1B,KAKT,IADA,IAAIo0B,EAAQkB,EACHp0B,EAAIk9B,EAAa,IAAVhK,GAAelzB,EAAIlB,KAAKmB,OAAQD,IAAK,CACnD,IAAI8xB,EAAoB,EAAhBhzB,KAAK4xB,MAAM1wB,GAEnBkzB,GADApB,GAAKoB,KACS,GACdpB,GAAK,SACLhzB,KAAK4xB,MAAM1wB,GAAK8xB,CAClB,CAKA,OAJc,IAAVoB,IACFp0B,KAAK4xB,MAAM1wB,GAAKkzB,EAChBp0B,KAAKmB,UAEAnB,IACT,EAEAwxB,EAAG7xB,UAAUg1B,OAAS,WACpB,OAAuB,IAAhB30B,KAAKmB,QAAkC,IAAlBnB,KAAK4xB,MAAM,EACzC,EAEAJ,EAAG7xB,UAAUkkC,KAAO,SAAe5a,GACjC,IAOItmB,EAPAgvB,EAAW1I,EAAM,EAErB,GAAsB,IAAlBjpB,KAAK2xB,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlB3xB,KAAK2xB,UAAkBA,EAAU,OAAO,EAK5C,GAHA3xB,KAAKkzB,QAGDlzB,KAAKmB,OAAS,EAChBwB,EAAM,MACD,CACDgvB,IACF1I,GAAOA,GAGT5B,EAAO4B,GAAO,SAAW,qBAEzB,IAAI+J,EAAoB,EAAhBhzB,KAAK4xB,MAAM,GACnBjvB,EAAMqwB,IAAM/J,EAAM,EAAI+J,EAAI/J,GAAO,EAAI,CACvC,CACA,OAAsB,IAAlBjpB,KAAK2xB,SAA8B,GAANhvB,EAC1BA,CACT,EAMA6uB,EAAG7xB,UAAU+yB,IAAM,SAAczJ,GAC/B,GAAsB,IAAlBjpB,KAAK2xB,UAAmC,IAAjB1I,EAAI0I,SAAgB,OAAQ,EACvD,GAAsB,IAAlB3xB,KAAK2xB,UAAmC,IAAjB1I,EAAI0I,SAAgB,OAAO,EAEtD,IAAIhvB,EAAM3C,KAAKgkC,KAAK/a,GACpB,OAAsB,IAAlBjpB,KAAK2xB,SAA8B,GAANhvB,EAC1BA,CACT,EAGA6uB,EAAG7xB,UAAUqkC,KAAO,SAAe/a,GAEjC,GAAIjpB,KAAKmB,OAAS8nB,EAAI9nB,OAAQ,OAAO,EACrC,GAAInB,KAAKmB,OAAS8nB,EAAI9nB,OAAQ,OAAQ,EAGtC,IADA,IAAIwB,EAAM,EACDzB,EAAIlB,KAAKmB,OAAS,EAAGD,GAAK,EAAGA,IAAK,CACzC,IAAImW,EAAoB,EAAhBrX,KAAK4xB,MAAM1wB,GACfoW,EAAmB,EAAf2R,EAAI2I,MAAM1wB,GAElB,GAAImW,IAAMC,EAAV,CACID,EAAIC,EACN3U,GAAO,EACE0U,EAAIC,IACb3U,EAAM,GAER,KANqB,CAOvB,CACA,OAAOA,CACT,EAEA6uB,EAAG7xB,UAAUskC,IAAM,SAAchb,GAC/B,OAA0B,IAAnBjpB,KAAK6jC,KAAK5a,EACnB,EAEAuI,EAAG7xB,UAAUukC,GAAK,SAAajb,GAC7B,OAAyB,IAAlBjpB,KAAK0yB,IAAIzJ,EAClB,EAEAuI,EAAG7xB,UAAUwkC,KAAO,SAAelb,GACjC,OAAOjpB,KAAK6jC,KAAK5a,IAAQ,CAC3B,EAEAuI,EAAG7xB,UAAUykC,IAAM,SAAcnb,GAC/B,OAAOjpB,KAAK0yB,IAAIzJ,IAAQ,CAC1B,EAEAuI,EAAG7xB,UAAU0kC,IAAM,SAAcpb,GAC/B,OAA2B,IAApBjpB,KAAK6jC,KAAK5a,EACnB,EAEAuI,EAAG7xB,UAAU2kC,GAAK,SAAarb,GAC7B,OAA0B,IAAnBjpB,KAAK0yB,IAAIzJ,EAClB,EAEAuI,EAAG7xB,UAAU4kC,KAAO,SAAetb,GACjC,OAAOjpB,KAAK6jC,KAAK5a,IAAQ,CAC3B,EAEAuI,EAAG7xB,UAAU6kC,IAAM,SAAcvb,GAC/B,OAAOjpB,KAAK0yB,IAAIzJ,IAAQ,CAC1B,EAEAuI,EAAG7xB,UAAU8kC,IAAM,SAAcxb,GAC/B,OAA0B,IAAnBjpB,KAAK6jC,KAAK5a,EACnB,EAEAuI,EAAG7xB,UAAU+kC,GAAK,SAAazb,GAC7B,OAAyB,IAAlBjpB,KAAK0yB,IAAIzJ,EAClB,EAMAuI,EAAGK,IAAM,SAAc5I,GACrB,OAAO,IAAI0b,EAAI1b,EACjB,EAEAuI,EAAG7xB,UAAUilC,MAAQ,SAAgBC,GAGnC,OAFAxd,GAAQrnB,KAAK6xB,IAAK,yCAClBxK,EAAyB,IAAlBrnB,KAAK2xB,SAAgB,iCACrBkT,EAAIC,UAAU9kC,MAAM+kC,UAAUF,EACvC,EAEArT,EAAG7xB,UAAUqlC,QAAU,WAErB,OADA3d,EAAOrnB,KAAK6xB,IAAK,wDACV7xB,KAAK6xB,IAAIoT,YAAYjlC,KAC9B,EAEAwxB,EAAG7xB,UAAUolC,UAAY,SAAoBF,GAE3C,OADA7kC,KAAK6xB,IAAMgT,EACJ7kC,IACT,EAEAwxB,EAAG7xB,UAAUulC,SAAW,SAAmBL,GAEzC,OADAxd,GAAQrnB,KAAK6xB,IAAK,yCACX7xB,KAAK+kC,UAAUF,EACxB,EAEArT,EAAG7xB,UAAUwlC,OAAS,SAAiBlc,GAErC,OADA5B,EAAOrnB,KAAK6xB,IAAK,sCACV7xB,KAAK6xB,IAAIjsB,IAAI5F,KAAMipB,EAC5B,EAEAuI,EAAG7xB,UAAUylC,QAAU,SAAkBnc,GAEvC,OADA5B,EAAOrnB,KAAK6xB,IAAK,uCACV7xB,KAAK6xB,IAAI8F,KAAK33B,KAAMipB,EAC7B,EAEAuI,EAAG7xB,UAAU0lC,OAAS,SAAiBpc,GAErC,OADA5B,EAAOrnB,KAAK6xB,IAAK,sCACV7xB,KAAK6xB,IAAIgG,IAAI73B,KAAMipB,EAC5B,EAEAuI,EAAG7xB,UAAU2lC,QAAU,SAAkBrc,GAEvC,OADA5B,EAAOrnB,KAAK6xB,IAAK,uCACV7xB,KAAK6xB,IAAI+F,KAAK53B,KAAMipB,EAC7B,EAEAuI,EAAG7xB,UAAU4lC,OAAS,SAAiBtc,GAErC,OADA5B,EAAOrnB,KAAK6xB,IAAK,sCACV7xB,KAAK6xB,IAAI2T,IAAIxlC,KAAMipB,EAC5B,EAEAuI,EAAG7xB,UAAU8lC,OAAS,SAAiBxc,GAGrC,OAFA5B,EAAOrnB,KAAK6xB,IAAK,sCACjB7xB,KAAK6xB,IAAI6T,SAAS1lC,KAAMipB,GACjBjpB,KAAK6xB,IAAIS,IAAItyB,KAAMipB,EAC5B,EAEAuI,EAAG7xB,UAAUgmC,QAAU,SAAkB1c,GAGvC,OAFA5B,EAAOrnB,KAAK6xB,IAAK,sCACjB7xB,KAAK6xB,IAAI6T,SAAS1lC,KAAMipB,GACjBjpB,KAAK6xB,IAAIgK,KAAK77B,KAAMipB,EAC7B,EAEAuI,EAAG7xB,UAAUimC,OAAS,WAGpB,OAFAve,EAAOrnB,KAAK6xB,IAAK,sCACjB7xB,KAAK6xB,IAAIgU,SAAS7lC,MACXA,KAAK6xB,IAAIuO,IAAIpgC,KACtB,EAEAwxB,EAAG7xB,UAAUmmC,QAAU,WAGrB,OAFAze,EAAOrnB,KAAK6xB,IAAK,uCACjB7xB,KAAK6xB,IAAIgU,SAAS7lC,MACXA,KAAK6xB,IAAIwO,KAAKrgC,KACvB,EAGAwxB,EAAG7xB,UAAUomC,QAAU,WAGrB,OAFA1e,EAAOrnB,KAAK6xB,IAAK,uCACjB7xB,KAAK6xB,IAAIgU,SAAS7lC,MACXA,KAAK6xB,IAAImU,KAAKhmC,KACvB,EAEAwxB,EAAG7xB,UAAUsmC,QAAU,WAGrB,OAFA5e,EAAOrnB,KAAK6xB,IAAK,uCACjB7xB,KAAK6xB,IAAIgU,SAAS7lC,MACXA,KAAK6xB,IAAIiS,KAAK9jC,KACvB,EAGAwxB,EAAG7xB,UAAUumC,OAAS,WAGpB,OAFA7e,EAAOrnB,KAAK6xB,IAAK,sCACjB7xB,KAAK6xB,IAAIgU,SAAS7lC,MACXA,KAAK6xB,IAAI4E,IAAIz2B,KACtB,EAEAwxB,EAAG7xB,UAAUwmC,OAAS,SAAiBld,GAGrC,OAFA5B,EAAOrnB,KAAK6xB,MAAQ5I,EAAI4I,IAAK,qBAC7B7xB,KAAK6xB,IAAIgU,SAAS7lC,MACXA,KAAK6xB,IAAI6B,IAAI1zB,KAAMipB,EAC5B,EAGA,IAAImd,EAAS,CACXC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQ7iC,EAAMmF,GAErB/I,KAAK4D,KAAOA,EACZ5D,KAAK+I,EAAI,IAAIyoB,EAAGzoB,EAAG,IACnB/I,KAAKi/B,EAAIj/B,KAAK+I,EAAE6sB,YAChB51B,KAAKwT,EAAI,IAAIge,EAAG,GAAG+O,OAAOvgC,KAAKi/B,GAAGrH,KAAK53B,KAAK+I,GAE5C/I,KAAK+uB,IAAM/uB,KAAK0mC,MAClB,CAgDA,SAASC,IACPF,EAAO7jC,KACL5C,KACA,OACA,0EACJ,CA8DA,SAAS4mC,IACPH,EAAO7jC,KACL5C,KACA,OACA,iEACJ,CAGA,SAAS6mC,IACPJ,EAAO7jC,KACL5C,KACA,OACA,wDACJ,CAGA,SAAS8mC,IAEPL,EAAO7jC,KACL5C,KACA,QACA,sEACJ,CA6CA,SAAS2kC,EAAKzF,GACZ,GAAiB,iBAANA,EAAgB,CACzB,IAAI6H,EAAQvV,EAAGwV,OAAO9H,GACtBl/B,KAAKk/B,EAAI6H,EAAMh+B,EACf/I,KAAK+mC,MAAQA,CACf,MACE1f,EAAO6X,EAAE+E,IAAI,GAAI,kCACjBjkC,KAAKk/B,EAAIA,EACTl/B,KAAK+mC,MAAQ,IAEjB,CAgOA,SAASE,EAAM/H,GACbyF,EAAI/hC,KAAK5C,KAAMk/B,GAEfl/B,KAAK6hC,MAAQ7hC,KAAKk/B,EAAEtJ,YAChB51B,KAAK6hC,MAAQ,IAAO,IACtB7hC,KAAK6hC,OAAS,GAAM7hC,KAAK6hC,MAAQ,IAGnC7hC,KAAKoyB,EAAI,IAAIZ,EAAG,GAAG+O,OAAOvgC,KAAK6hC,OAC/B7hC,KAAK0iC,GAAK1iC,KAAKknC,KAAKlnC,KAAKoyB,EAAEgO,OAC3BpgC,KAAKmnC,KAAOnnC,KAAKoyB,EAAEqR,OAAOzjC,KAAKk/B,GAE/Bl/B,KAAKonC,KAAOpnC,KAAKmnC,KAAK7U,IAAItyB,KAAKoyB,GAAGoP,MAAM,GAAGU,IAAIliC,KAAKk/B,GACpDl/B,KAAKonC,KAAOpnC,KAAKonC,KAAK9E,KAAKtiC,KAAKoyB,GAChCpyB,KAAKonC,KAAOpnC,KAAKoyB,EAAEyF,IAAI73B,KAAKonC,KAC9B,CA7aAX,EAAO9mC,UAAU+mC,KAAO,WACtB,IAAI3X,EAAM,IAAIyC,EAAG,MAEjB,OADAzC,EAAI6C,MAAQ,IAAI5wB,MAAMyZ,KAAKsY,KAAK/yB,KAAKi/B,EAAI,KAClClQ,CACT,EAEA0X,EAAO9mC,UAAU0nC,QAAU,SAAkBpe,GAG3C,IACIqe,EADAlV,EAAInJ,EAGR,GACEjpB,KAAKuM,MAAM6lB,EAAGpyB,KAAK+uB,KAGnBuY,GADAlV,GADAA,EAAIpyB,KAAKunC,MAAMnV,IACTuF,KAAK33B,KAAK+uB,MACP6G,kBACF0R,EAAOtnC,KAAKi/B,GAErB,IAAIvM,EAAM4U,EAAOtnC,KAAKi/B,GAAK,EAAI7M,EAAE4R,KAAKhkC,KAAK+I,GAgB3C,OAfY,IAAR2pB,GACFN,EAAER,MAAM,GAAK,EACbQ,EAAEjxB,OAAS,GACFuxB,EAAM,EACfN,EAAEwF,KAAK53B,KAAK+I,QAEInI,IAAZwxB,EAAEc,MAEJd,EAAEc,QAGFd,EAAEoV,SAICpV,CACT,EAEAqU,EAAO9mC,UAAU4M,MAAQ,SAAgB6c,EAAO1Q,GAC9C0Q,EAAMoM,OAAOx1B,KAAKi/B,EAAG,EAAGvmB,EAC1B,EAEA+tB,EAAO9mC,UAAU4nC,MAAQ,SAAgBte,GACvC,OAAOA,EAAI4S,KAAK77B,KAAKwT,EACvB,EAQA0R,EAASyhB,EAAMF,GAEfE,EAAKhnC,UAAU4M,MAAQ,SAAgB6c,EAAOqe,GAK5C,IAHA,IAAI1G,EAAO,QAEP2G,EAASjtB,KAAKwU,IAAI7F,EAAMjoB,OAAQ,GAC3BD,EAAI,EAAGA,EAAIwmC,EAAQxmC,IAC1BumC,EAAO7V,MAAM1wB,GAAKkoB,EAAMwI,MAAM1wB,GAIhC,GAFAumC,EAAOtmC,OAASumC,EAEZte,EAAMjoB,QAAU,EAGlB,OAFAioB,EAAMwI,MAAM,GAAK,OACjBxI,EAAMjoB,OAAS,GAKjB,IAAIorB,EAAOnD,EAAMwI,MAAM,GAGvB,IAFA6V,EAAO7V,MAAM6V,EAAOtmC,UAAYorB,EAAOwU,EAElC7/B,EAAI,GAAIA,EAAIkoB,EAAMjoB,OAAQD,IAAK,CAClC,IAAIymC,EAAwB,EAAjBve,EAAMwI,MAAM1wB,GACvBkoB,EAAMwI,MAAM1wB,EAAI,KAAQymC,EAAO5G,IAAS,EAAMxU,IAAS,GACvDA,EAAOob,CACT,CACApb,KAAU,GACVnD,EAAMwI,MAAM1wB,EAAI,IAAMqrB,EACT,IAATA,GAAcnD,EAAMjoB,OAAS,GAC/BioB,EAAMjoB,QAAU,GAEhBioB,EAAMjoB,QAAU,CAEpB,EAEAwlC,EAAKhnC,UAAU4nC,MAAQ,SAAgBte,GAErCA,EAAI2I,MAAM3I,EAAI9nB,QAAU,EACxB8nB,EAAI2I,MAAM3I,EAAI9nB,OAAS,GAAK,EAC5B8nB,EAAI9nB,QAAU,EAId,IADA,IAAIgzB,EAAK,EACAjzB,EAAI,EAAGA,EAAI+nB,EAAI9nB,OAAQD,IAAK,CACnC,IAAI8xB,EAAmB,EAAf/J,EAAI2I,MAAM1wB,GAClBizB,GAAU,IAAJnB,EACN/J,EAAI2I,MAAM1wB,GAAU,SAALizB,EACfA,EAAS,GAAJnB,GAAamB,EAAK,SAAa,EACtC,CASA,OANkC,IAA9BlL,EAAI2I,MAAM3I,EAAI9nB,OAAS,KACzB8nB,EAAI9nB,SAC8B,IAA9B8nB,EAAI2I,MAAM3I,EAAI9nB,OAAS,IACzB8nB,EAAI9nB,UAGD8nB,CACT,EAQA/D,EAAS0hB,EAAMH,GAQfvhB,EAAS2hB,EAAMJ,GASfvhB,EAAS4hB,EAAQL,GAEjBK,EAAOnnC,UAAU4nC,MAAQ,SAAgBte,GAGvC,IADA,IAAImL,EAAQ,EACHlzB,EAAI,EAAGA,EAAI+nB,EAAI9nB,OAAQD,IAAK,CACnC,IAAI20B,EAA0B,IAAL,EAAf5M,EAAI2I,MAAM1wB,IAAiBkzB,EACjCD,EAAU,SAAL0B,EACTA,KAAQ,GAER5M,EAAI2I,MAAM1wB,GAAKizB,EACfC,EAAQyB,CACV,CAIA,OAHc,IAAVzB,IACFnL,EAAI2I,MAAM3I,EAAI9nB,UAAYizB,GAErBnL,CACT,EAGAuI,EAAGwV,OAAS,SAAgBpjC,GAE1B,GAAIwiC,EAAOxiC,GAAO,OAAOwiC,EAAOxiC,GAEhC,IAAImjC,EACJ,GAAa,SAATnjC,EACFmjC,EAAQ,IAAIJ,OACP,GAAa,SAAT/iC,EACTmjC,EAAQ,IAAIH,OACP,GAAa,SAAThjC,EACTmjC,EAAQ,IAAIF,MACP,IAAa,WAATjjC,EAGT,MAAM,IAAI1D,MAAM,iBAAmB0D,GAFnCmjC,EAAQ,IAAID,CAGd,CAGA,OAFAV,EAAOxiC,GAAQmjC,EAERA,CACT,EAiBApC,EAAIhlC,UAAUkmC,SAAW,SAAmBxuB,GAC1CgQ,EAAsB,IAAfhQ,EAAEsa,SAAgB,iCACzBtK,EAAOhQ,EAAEwa,IAAK,kCAChB,EAEA8S,EAAIhlC,UAAU+lC,SAAW,SAAmBruB,EAAGC,GAC7C+P,EAAqC,IAA7BhQ,EAAEsa,SAAWra,EAAEqa,UAAiB,iCACxCtK,EAAOhQ,EAAEwa,KAAOxa,EAAEwa,MAAQva,EAAEua,IAC1B,kCACJ,EAEA8S,EAAIhlC,UAAUunC,KAAO,SAAe7vB,GAClC,OAAIrX,KAAK+mC,MAAc/mC,KAAK+mC,MAAMM,QAAQhwB,GAAG0tB,UAAU/kC,MAChDqX,EAAEirB,KAAKtiC,KAAKk/B,GAAG6F,UAAU/kC,KAClC,EAEA2kC,EAAIhlC,UAAU82B,IAAM,SAAcpf,GAChC,OAAIA,EAAEsd,SACGtd,EAAEmR,QAGJxoB,KAAKk/B,EAAErH,IAAIxgB,GAAG0tB,UAAU/kC,KACjC,EAEA2kC,EAAIhlC,UAAUiG,IAAM,SAAcyR,EAAGC,GACnCtX,KAAK0lC,SAASruB,EAAGC,GAEjB,IAAI3U,EAAM0U,EAAEzR,IAAI0R,GAIhB,OAHI3U,EAAI+vB,IAAI1yB,KAAKk/B,IAAM,GACrBv8B,EAAIi1B,KAAK53B,KAAKk/B,GAETv8B,EAAIoiC,UAAU/kC,KACvB,EAEA2kC,EAAIhlC,UAAUg4B,KAAO,SAAetgB,EAAGC,GACrCtX,KAAK0lC,SAASruB,EAAGC,GAEjB,IAAI3U,EAAM0U,EAAEsgB,KAAKrgB,GAIjB,OAHI3U,EAAI+vB,IAAI1yB,KAAKk/B,IAAM,GACrBv8B,EAAIi1B,KAAK53B,KAAKk/B,GAETv8B,CACT,EAEAgiC,EAAIhlC,UAAUk4B,IAAM,SAAcxgB,EAAGC,GACnCtX,KAAK0lC,SAASruB,EAAGC,GAEjB,IAAI3U,EAAM0U,EAAEwgB,IAAIvgB,GAIhB,OAHI3U,EAAIkhC,KAAK,GAAK,GAChBlhC,EAAIg1B,KAAK33B,KAAKk/B,GAETv8B,EAAIoiC,UAAU/kC,KACvB,EAEA2kC,EAAIhlC,UAAUi4B,KAAO,SAAevgB,EAAGC,GACrCtX,KAAK0lC,SAASruB,EAAGC,GAEjB,IAAI3U,EAAM0U,EAAEugB,KAAKtgB,GAIjB,OAHI3U,EAAIkhC,KAAK,GAAK,GAChBlhC,EAAIg1B,KAAK33B,KAAKk/B,GAETv8B,CACT,EAEAgiC,EAAIhlC,UAAU6lC,IAAM,SAAcnuB,EAAG4R,GAEnC,OADAjpB,KAAK6lC,SAASxuB,GACPrX,KAAKknC,KAAK7vB,EAAE8pB,MAAMlY,GAC3B,EAEA0b,EAAIhlC,UAAUk8B,KAAO,SAAexkB,EAAGC,GAErC,OADAtX,KAAK0lC,SAASruB,EAAGC,GACVtX,KAAKknC,KAAK7vB,EAAEwkB,KAAKvkB,GAC1B,EAEAqtB,EAAIhlC,UAAU2yB,IAAM,SAAcjb,EAAGC,GAEnC,OADAtX,KAAK0lC,SAASruB,EAAGC,GACVtX,KAAKknC,KAAK7vB,EAAEib,IAAIhb,GACzB,EAEAqtB,EAAIhlC,UAAU0gC,KAAO,SAAehpB,GAClC,OAAOrX,KAAK67B,KAAKxkB,EAAGA,EAAEmR,QACxB,EAEAmc,EAAIhlC,UAAUygC,IAAM,SAAc/oB,GAChC,OAAOrX,KAAKsyB,IAAIjb,EAAGA,EACrB,EAEAstB,EAAIhlC,UAAUqmC,KAAO,SAAe3uB,GAClC,GAAIA,EAAEsd,SAAU,OAAOtd,EAAEmR,QAEzB,IAAIof,EAAO5nC,KAAKk/B,EAAE3J,MAAM,GAIxB,GAHAlO,EAAOugB,EAAO,GAAM,GAGP,IAATA,EAAY,CACd,IAAIlU,EAAM1zB,KAAKk/B,EAAEt5B,IAAI,IAAI4rB,EAAG,IAAIgE,OAAO,GACvC,OAAOx1B,KAAK0zB,IAAIrc,EAAGqc,EACrB,CAOA,IAFA,IAAI4B,EAAIt1B,KAAKk/B,EAAEwC,KAAK,GAChBtD,EAAI,GACA9I,EAAEX,UAA2B,IAAfW,EAAEC,MAAM,IAC5B6I,IACA9I,EAAEE,OAAO,GAEXnO,GAAQiO,EAAEX,UAEV,IAAIkT,EAAM,IAAIrW,EAAG,GAAGoT,MAAM5kC,MACtB8nC,EAAOD,EAAI3B,SAIX6B,EAAO/nC,KAAKk/B,EAAEwC,KAAK,GAAGlM,OAAO,GAC7BwS,EAAIhoC,KAAKk/B,EAAEtJ,YAGf,IAFAoS,EAAI,IAAIxW,EAAG,EAAIwW,EAAIA,GAAGpD,MAAM5kC,MAEW,IAAhCA,KAAK0zB,IAAIsU,EAAGD,GAAMrV,IAAIoV,IAC3BE,EAAE5C,QAAQ0C,GAOZ,IAJA,IAAI36B,EAAInN,KAAK0zB,IAAIsU,EAAG1S,GAChBlD,EAAIpyB,KAAK0zB,IAAIrc,EAAGie,EAAEmM,KAAK,GAAGjM,OAAO,IACjC1gB,EAAI9U,KAAK0zB,IAAIrc,EAAGie,GAChB4J,EAAId,EACc,IAAftpB,EAAE4d,IAAImV,IAAY,CAEvB,IADA,IAAI9Y,EAAMja,EACD5T,EAAI,EAAoB,IAAjB6tB,EAAI2D,IAAImV,GAAY3mC,IAClC6tB,EAAMA,EAAI6W,SAEZve,EAAOnmB,EAAIg+B,GACX,IAAI5nB,EAAItX,KAAK0zB,IAAIvmB,EAAG,IAAIqkB,EAAG,GAAG+O,OAAOrB,EAAIh+B,EAAI,IAE7CkxB,EAAIA,EAAEqT,OAAOnuB,GACbnK,EAAImK,EAAEsuB,SACN9wB,EAAIA,EAAE2wB,OAAOt4B,GACb+xB,EAAIh+B,CACN,CAEA,OAAOkxB,CACT,EAEAuS,EAAIhlC,UAAUmkC,KAAO,SAAezsB,GAClC,IAAI4wB,EAAM5wB,EAAEosB,OAAOzjC,KAAKk/B,GACxB,OAAqB,IAAjB+I,EAAItW,UACNsW,EAAItW,SAAW,EACR3xB,KAAKknC,KAAKe,GAAK/B,UAEflmC,KAAKknC,KAAKe,EAErB,EAEAtD,EAAIhlC,UAAU+zB,IAAM,SAAcrc,EAAG4R,GACnC,GAAIA,EAAI0L,SAAU,OAAO,IAAInD,EAAG,GAAGoT,MAAM5kC,MACzC,GAAoB,IAAhBipB,EAAI4a,KAAK,GAAU,OAAOxsB,EAAEmR,QAEhC,IACI0f,EAAM,IAAIlnC,MAAM,IACpBknC,EAAI,GAAK,IAAI1W,EAAG,GAAGoT,MAAM5kC,MACzBkoC,EAAI,GAAK7wB,EACT,IAAK,IAAInW,EAAI,EAAGA,EAAIgnC,EAAI/mC,OAAQD,IAC9BgnC,EAAIhnC,GAAKlB,KAAKsyB,IAAI4V,EAAIhnC,EAAI,GAAImW,GAGhC,IAAI1U,EAAMulC,EAAI,GACVC,EAAU,EACVC,EAAa,EACbpe,EAAQf,EAAI2M,YAAc,GAK9B,IAJc,IAAV5L,IACFA,EAAQ,IAGL9oB,EAAI+nB,EAAI9nB,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAIqyB,EAAOtK,EAAI2I,MAAM1wB,GACZyW,EAAIqS,EAAQ,EAAGrS,GAAK,EAAGA,IAAK,CACnC,IAAI8f,EAAOlE,GAAQ5b,EAAK,EACpBhV,IAAQulC,EAAI,KACdvlC,EAAM3C,KAAKogC,IAAIz9B,IAGL,IAAR80B,GAAyB,IAAZ0Q,GAKjBA,IAAY,EACZA,GAAW1Q,GA9BE,KA+Bb2Q,GACwC,IAANlnC,GAAiB,IAANyW,KAE7ChV,EAAM3C,KAAKsyB,IAAI3vB,EAAKulC,EAAIC,IACxBC,EAAa,EACbD,EAAU,IAXRC,EAAa,CAYjB,CACApe,EAAQ,EACV,CAEA,OAAOrnB,CACT,EAEAgiC,EAAIhlC,UAAUmlC,UAAY,SAAoB7b,GAC5C,IAAImJ,EAAInJ,EAAIqZ,KAAKtiC,KAAKk/B,GAEtB,OAAO9M,IAAMnJ,EAAMmJ,EAAE5J,QAAU4J,CACjC,EAEAuS,EAAIhlC,UAAUslC,YAAc,SAAsBhc,GAChD,IAAItmB,EAAMsmB,EAAIT,QAEd,OADA7lB,EAAIkvB,IAAM,KACHlvB,CACT,EAMA6uB,EAAG6W,KAAO,SAAepf,GACvB,OAAO,IAAIge,EAAKhe,EAClB,EAkBA/D,EAAS+hB,EAAMtC,GAEfsC,EAAKtnC,UAAUmlC,UAAY,SAAoB7b,GAC7C,OAAOjpB,KAAKknC,KAAKje,EAAIkY,MAAMnhC,KAAK6hC,OAClC,EAEAoF,EAAKtnC,UAAUslC,YAAc,SAAsBhc,GACjD,IAAImJ,EAAIpyB,KAAKknC,KAAKje,EAAIqJ,IAAItyB,KAAKmnC,OAE/B,OADA/U,EAAEP,IAAM,KACDO,CACT,EAEA6U,EAAKtnC,UAAUk8B,KAAO,SAAexkB,EAAGC,GACtC,GAAID,EAAEsd,UAAYrd,EAAEqd,SAGlB,OAFAtd,EAAEua,MAAM,GAAK,EACbva,EAAElW,OAAS,EACJkW,EAGT,IAAIvC,EAAIuC,EAAEwkB,KAAKvkB,GACXnK,EAAI2H,EAAEysB,MAAMvhC,KAAK6hC,OAAOvP,IAAItyB,KAAKonC,MAAM9F,OAAOthC,KAAK6hC,OAAOvP,IAAItyB,KAAKk/B,GACnEoJ,EAAIxzB,EAAE8iB,KAAKzqB,GAAGqoB,OAAOx1B,KAAK6hC,OAC1Bl/B,EAAM2lC,EAQV,OANIA,EAAE5V,IAAI1yB,KAAKk/B,IAAM,EACnBv8B,EAAM2lC,EAAE1Q,KAAK53B,KAAKk/B,GACToJ,EAAEzE,KAAK,GAAK,IACrBlhC,EAAM2lC,EAAE3Q,KAAK33B,KAAKk/B,IAGbv8B,EAAIoiC,UAAU/kC,KACvB,EAEAinC,EAAKtnC,UAAU2yB,IAAM,SAAcjb,EAAGC,GACpC,GAAID,EAAEsd,UAAYrd,EAAEqd,SAAU,OAAO,IAAInD,EAAG,GAAGuT,UAAU/kC,MAEzD,IAAI8U,EAAIuC,EAAEib,IAAIhb,GACVnK,EAAI2H,EAAEysB,MAAMvhC,KAAK6hC,OAAOvP,IAAItyB,KAAKonC,MAAM9F,OAAOthC,KAAK6hC,OAAOvP,IAAItyB,KAAKk/B,GACnEoJ,EAAIxzB,EAAE8iB,KAAKzqB,GAAGqoB,OAAOx1B,KAAK6hC,OAC1Bl/B,EAAM2lC,EAOV,OANIA,EAAE5V,IAAI1yB,KAAKk/B,IAAM,EACnBv8B,EAAM2lC,EAAE1Q,KAAK53B,KAAKk/B,GACToJ,EAAEzE,KAAK,GAAK,IACrBlhC,EAAM2lC,EAAE3Q,KAAK33B,KAAKk/B,IAGbv8B,EAAIoiC,UAAU/kC,KACvB,EAEAinC,EAAKtnC,UAAUmkC,KAAO,SAAezsB,GAGnC,OADUrX,KAAKknC,KAAK7vB,EAAEosB,OAAOzjC,KAAKk/B,GAAG5M,IAAItyB,KAAK0iC,KACnCqC,UAAU/kC,KACvB,CACD,CAr3GD,YAq3G4CA,iBCl3G5CR,EAAOC,QAAU,CAEf8oC,oBAAqB,SAAUnc,GAC7B,IAAIjoB,EAAI,IAAIjE,MAGZ,OAFAiE,EAAEP,KAAO,mBACTO,EAAE9B,QAAU+pB,GAAO,GACZjoB,CACT,oBCRF,IAAI3D,EAAS,EAAQ,OACjB2S,EAAQ,EAAQ,OAEhBq1B,EAAS,EAAQ,OACjBC,EAAS,EAAQ,MAarB,IAAK,IAAI3zB,KARTtV,EAAOC,QAAU,CAEf+oC,OAAQA,EAERC,OAAQA,GAIIt1B,EACRA,EAAMxC,eAAemE,KACvBtV,EAAOC,QAAQqV,GAAK3B,EAAM2B,IAE9B,IAAK,IAAI3Q,KAAK3D,EACRA,EAAOmQ,eAAexM,KACxB3E,EAAOC,QAAQ0E,GAAK3D,EAAO2D,qBCvB/B,IAAIkjB,EAAS,EAAQ,OACjBpB,EAAS,eAETyiB,EAAO,EAAQ,OAMfH,EALS,EAAQ,OAKYA,oBAMjC,SAASC,EAAO1oC,GACd,IAAKA,IAASmmB,EAAOE,SAASrmB,GAC5B,MAAM,IAAI6oC,UAAU,8BAEtB3oC,KAAK4oC,KAAO9oC,EACZE,KAAK6oC,MAAQ/oC,EAAKqB,OAGlBnB,KAAK8oC,KAAO,EACZ9oC,KAAK+oC,QAAU,CACjB,CAEA/+B,OAAOg/B,eAAeR,EAAO7oC,UAAW,SAAU,CAChDspC,YAAY,EACZzkC,IAAK,WAAc,OAAQxE,KAAS,IAAG,IAGzCgK,OAAOg/B,eAAeR,EAAO7oC,UAAW,SAAU,CAChDspC,YAAY,EACZzkC,IAAK,WAAc,OAAQxE,KAAY,OAAG,IAG5CgK,OAAOg/B,eAAeR,EAAO7oC,UAAW,SAAU,CAChD6E,IAAK,WAAc,OAAQxE,KAAK6oC,MAAQ7oC,KAAK+oC,OAAU,IAGzD/+B,OAAOg/B,eAAeR,EAAO7oC,UAAW,SAAU,CAChD6E,IAAK,WAAc,OAAQxE,KAAK4oC,KAAKvkC,MAAMrE,KAAK+oC,QAAW,IAW7DP,EAAO7oC,UAAUupC,SAAW,SAAUC,GACpC,GAAInpC,KAAK6oC,MAAQ7oC,KAAK+oC,QAAU,EAC9B,OAAO,KAET,IAAIzxB,EAA8B,IAA1BtX,KAAK4oC,KAAK5oC,KAAK+oC,SAKvB,OAHKI,IACHnpC,KAAK+oC,SAAW,GAEXzxB,CACT,EAGAkxB,EAAO7oC,UAAUwpC,KAAO,WACtB,OAAOnpC,KAAKkpC,UAAS,EACvB,EAcAV,EAAO7oC,UAAUypC,WAAa,SAAUhjB,GAItC,QAHexlB,IAAXwlB,IACFA,EAASpmB,KAAK+oC,SAEZ3iB,GAAUpmB,KAAK6oC,MACjB,OAAO,KAET,IAAIQ,EAA6B,IAAtBrpC,KAAK4oC,KAAKxiB,KACrB,GAAa,OAATijB,EACF,OAAO,KAET,GAAsB,MAAV,IAAPA,GAAuB,CAG1B,GAAa,IAFbA,GAAQ,KAGN,MAAMd,EAAoB,mCAE5B,GAAIc,EAAO,EACT,MAAMd,EAAoB,qBAE5B,GAAIvoC,KAAK6oC,MAAQziB,EAASijB,EACxB,OAAO,KAETrpC,KAAK8oC,KAAO,EACZ,IAAK,IAAI5nC,EAAI,EAAGA,EAAImoC,EAAMnoC,IACxBlB,KAAK8oC,MAAQ9oC,KAAK8oC,MAAQ,IAA4B,IAAtB9oC,KAAK4oC,KAAKxiB,KAE9C,MAEEpmB,KAAK8oC,KAAOO,EAGd,OAAOjjB,CACT,EAUAoiB,EAAO7oC,UAAU2pC,aAAe,SAAU1hB,GACxC,IAAI2hB,EAAMvpC,KAAKmpC,OACf,GAAY,OAARI,EACF,OAAO,KACT,QAAY3oC,IAARgnB,GAAqBA,IAAQ2hB,EAC/B,MAAMhB,EAAoB,cAAgB3gB,EAAI2G,SAAS,IAC7B,WAAagb,EAAIhb,SAAS,KAEtD,IAAI7Z,EAAI1U,KAAKopC,WAAWppC,KAAK+oC,QAAU,GACvC,OAAU,OAANr0B,EACK,MAET1U,KAAK+oC,QAAUr0B,EACR60B,EACT,EAGAf,EAAO7oC,UAAU6pC,QAAU,WACzB,OAAOxpC,KAAKypC,SAASf,EAAKgB,QAC5B,EAGAlB,EAAO7oC,UAAUgqC,YAAc,WAC7B,OAAwC,IAAhC3pC,KAAKypC,SAASf,EAAKkB,QAC7B,EAGApB,EAAO7oC,UAAUkqC,gBAAkB,WACjC,OAAO7pC,KAAKypC,SAASf,EAAKoB,YAC5B,EAGAtB,EAAO7oC,UAAUoqC,WAAa,SAAUniB,EAAKoiB,GACtCpiB,IACHA,EAAM8gB,EAAKuB,aAEb,IAAI3yB,EAAItX,KAAKmpC,OACb,GAAU,OAAN7xB,EACF,OAAO,KAET,GAAIA,IAAMsQ,EACR,MAAM2gB,EAAoB,cAAgB3gB,EAAI2G,SAAS,IAC7B,WAAajX,EAAEiX,SAAS,KAEpD,IAAI7Z,EAAI1U,KAAKopC,WAAWppC,KAAK+oC,QAAU,GAEvC,GAAU,OAANr0B,EACF,OAAO,KAET,GAAI1U,KAAKmB,OAASnB,KAAK6oC,MAAQn0B,EAC7B,OAAO,KAIT,GAFA1U,KAAK+oC,QAAUr0B,EAEK,IAAhB1U,KAAKmB,OACP,OAAO6oC,EAAS/jB,EAAOiB,MAAM,GAAK,GAEpC,IAAIhc,EAAMlL,KAAK4oC,KAAKvkC,MAAMrE,KAAK+oC,QAAS/oC,KAAK+oC,QAAU/oC,KAAKmB,QAG5D,OAFAnB,KAAK+oC,SAAW/oC,KAAKmB,OAEd6oC,EAAS9+B,EAAMA,EAAIqjB,SAAS,OACrC,EAEAia,EAAO7oC,UAAUuqC,QAAU,SAAUtiB,GAC9BA,IACHA,EAAM8gB,EAAKyB,KAEb,IAAI7yB,EAAItX,KAAK+pC,WAAWniB,GAAK,GAC7B,GAAU,OAANtQ,EACF,OAAO,KAKT,IAHA,IAAImX,EAAS,GACT7lB,EAAQ,EAEH1H,EAAI,EAAGA,EAAIoW,EAAEnW,OAAQD,IAAK,CACjC,IAAIkpC,EAAc,IAAP9yB,EAAEpW,GAEb0H,IAAU,EACVA,GAAgB,IAAPwhC,EACa,IAAV,IAAPA,KACH3b,EAAOhb,KAAK7K,GACZA,EAAQ,EAEZ,CAMA,OAJAA,EAAQ6lB,EAAOoT,QACfpT,EAAOuC,QAAQpoB,EAAQ,IACvB6lB,EAAOuC,QAASpoB,EAAQ,IAAO,GAExB6lB,EAAO7d,KAAK,IACrB,EAGA43B,EAAO7oC,UAAU8pC,SAAW,SAAU7hB,GACpCP,EAAOgjB,QAAWzpC,IAARgnB,GAEV,IAAItQ,EAAItX,KAAKmpC,OAEb,GAAU,OAAN7xB,EACF,OAAO,KAET,GAAIA,IAAMsQ,EACR,MAAM2gB,EAAoB,cAAgB3gB,EAAI2G,SAAS,IAC7B,WAAajX,EAAEiX,SAAS,KAEpD,IAAI7Z,EAAI1U,KAAKopC,WAAWppC,KAAK+oC,QAAU,GACvC,GAAU,OAANr0B,EACF,OAAO,KAET,GAAI1U,KAAKmB,OAAS,EAChB,MAAMonC,EAAoB,qBAAuBvoC,KAAKmB,QAExD,GAAInB,KAAKmB,OAASnB,KAAK6oC,MAAQn0B,EAC7B,OAAO,KACT1U,KAAK+oC,QAAUr0B,EAKf,IAHA,IAAI41B,EAAKtqC,KAAK4oC,KAAK5oC,KAAK+oC,SACpBngC,EAAQ,EAEH1H,EAAI,EAAGA,EAAIlB,KAAKmB,OAAQD,IAC/B0H,IAAU,EACVA,GAAsC,IAA5B5I,KAAK4oC,KAAK5oC,KAAK+oC,WAM3B,OAHoB,MAAV,IAALuB,IAA6B,IAANppC,IAC1B0H,GAAU,GAAU,EAAJ1H,GAEX0H,GAAS,CAClB,EAMApJ,EAAOC,QAAU+oC,aClQjBhpC,EAAOC,QAAU,CACf8qC,IAAK,EACLX,QAAS,EACTF,QAAS,EACTc,UAAW,EACXP,YAAa,EACbQ,KAAM,EACNN,IAAK,EACLO,iBAAkB,EAClBC,SAAU,EACVC,KAAM,EACNd,YAAa,GACbe,IAAK,GACLC,WAAY,GACZC,YAAa,GACbC,SAAU,GACVC,IAAK,GACLC,cAAe,GACfC,gBAAiB,GACjBC,UAAW,GACXC,eAAgB,GAChBC,UAAW,GACXC,QAAS,GACTC,gBAAiB,GACjBC,cAAe,GACfC,cAAe,GACfC,cAAe,GACfC,gBAAiB,GACjBC,gBAAiB,GACjBC,UAAW,GACXC,YAAa,GACbC,QAAS,qBChCX,IAAI3kB,EAAS,EAAQ,OACjBpB,EAAS,eACTyiB,EAAO,EAAQ,OAMfH,EALS,EAAQ,OAKYA,oBAE7B0D,EAAe,CACjB5b,KAAM,KACN6b,aAAc,GA4BhB,SAASzD,EAAO1kC,GAtBhB,IAAe8rB,EAAMlb,EAANkb,EAuBGoc,EAvBGt3B,EAuBW5Q,GAAW,CAAC,EAtB1CsjB,EAAOgjB,GAAGxa,GACVxI,EAAOxa,aAAa,EAAQ,UAC5Bwa,EAAOgjB,GAAG11B,GACV0S,EAAOxa,aAAa,EAAM,UAEf7C,OAAOmiC,oBAAoBtc,GACjCzc,SAAQ,SAAUtS,GACrB,IAAI6T,EAAG7T,GAAP,CAGA,IAAI8H,EAAQoB,OAAOoiC,yBAAyBvc,EAAM/uB,GAClDkJ,OAAOg/B,eAAer0B,EAAI7T,EAAK8H,EAHvB,CAIV,IAUA7E,EARO4Q,EAUP3U,KAAK4oC,KAAO3iB,EAAOiB,MAAMnjB,EAAQssB,MAAQ,MACzCrwB,KAAK6oC,MAAQ7oC,KAAK4oC,KAAKznC,OACvBnB,KAAK+oC,QAAU,EACf/oC,KAAKqsC,SAAWtoC,EAIhB/D,KAAKssC,KAAO,EACd,CAEAtiC,OAAOg/B,eAAeP,EAAO9oC,UAAW,SAAU,CAChD6E,IAAK,WACH,GAAIxE,KAAKssC,KAAKnrC,OACZ,MAAMonC,EAAoBvoC,KAAKssC,KAAKnrC,OAAS,wBAE/C,OAAQnB,KAAK4oC,KAAKvkC,MAAM,EAAGrE,KAAK+oC,QAClC,IAGFN,EAAO9oC,UAAU4sC,UAAY,SAAUj1B,GACrC,GAAmB,iBAAR,EACT,MAAM,IAAIqxB,UAAU,6BAEtB3oC,KAAKwsC,QAAQ,GACbxsC,KAAK4oC,KAAK5oC,KAAK+oC,WAAazxB,CAC9B,EAGAmxB,EAAO9oC,UAAU8sC,SAAW,SAAUvrC,EAAG0mB,GACvC,GAAmB,iBAAR,EACT,MAAM,IAAI+gB,UAAU,6BACD,iBAAV,IACT/gB,EAAM8gB,EAAKgB,SAIb,IAFA,IAAIgD,EAAK,GAEqB,IAAhB,WAAJxrC,KAAgD,UAAhB,WAAJA,KAC/BwrC,EAAK,GACVA,IACAxrC,IAAM,EAGR,GAAIwrC,EAAK,EACP,MAAMnE,EAAoB,mCAM5B,IAJAvoC,KAAKwsC,QAAQ,EAAIE,GACjB1sC,KAAK4oC,KAAK5oC,KAAK+oC,WAAanhB,EAC5B5nB,KAAK4oC,KAAK5oC,KAAK+oC,WAAa2D,EAErBA,KAAO,GACZ1sC,KAAK4oC,KAAK5oC,KAAK+oC,YAAmB,WAAJ7nC,KAAoB,GAClDA,IAAM,CAGV,EAGAunC,EAAO9oC,UAAUgtC,UAAY,WAC3B3sC,KAAKusC,UAAU7D,EAAK+B,MACpBzqC,KAAKusC,UAAU,EACjB,EAGA9D,EAAO9oC,UAAUitC,iBAAmB,SAAU1rC,EAAG0mB,GAC/C,GAAmB,iBAAR,EACT,MAAM,IAAI+gB,UAAU,6BAItB,MAHqB,iBAAV,IACT/gB,EAAM8gB,EAAKoB,aAEN9pC,KAAKysC,SAASvrC,EAAG0mB,EAC1B,EAGA6gB,EAAO9oC,UAAUktC,aAAe,SAAUv1B,EAAGsQ,GAC3C,GAAmB,kBAAR,EACT,MAAM,IAAI+gB,UAAU,8BACD,iBAAV,IACT/gB,EAAM8gB,EAAKkB,SAEb5pC,KAAKwsC,QAAQ,GACbxsC,KAAK4oC,KAAK5oC,KAAK+oC,WAAanhB,EAC5B5nB,KAAK4oC,KAAK5oC,KAAK+oC,WAAa,EAC5B/oC,KAAK4oC,KAAK5oC,KAAK+oC,WAAazxB,EAAI,IAAO,CACzC,EAGAmxB,EAAO9oC,UAAUmtC,YAAc,SAAU1O,EAAGxW,GAC1C,GAAmB,iBAAR,EACT,MAAM,IAAI+gB,UAAU,0CAA4C,EAAM,KACnD,iBAAV,IACT/gB,EAAM8gB,EAAKuB,aAEb,IAAIl2B,EAAMkS,EAAOM,WAAW6X,GAC5Bp+B,KAAKusC,UAAU3kB,GACf5nB,KAAK+sC,YAAYh5B,GACbA,IACF/T,KAAKwsC,QAAQz4B,GACb/T,KAAK4oC,KAAKzhB,MAAMiX,EAAGp+B,KAAK+oC,SACxB/oC,KAAK+oC,SAAWh1B,EAEpB,EAGA00B,EAAO9oC,UAAUqtC,YAAc,SAAUvf,EAAK7F,GAC5C,GAAqB,iBAAV,EACT,MAAM,IAAI+gB,UAAU,wBACtB,IAAK1iB,EAAOE,SAASsH,GACnB,MAAM,IAAIkb,UAAU,6BAEtB3oC,KAAKusC,UAAU3kB,GACf5nB,KAAK+sC,YAAYtf,EAAItsB,QACrBnB,KAAKwsC,QAAQ/e,EAAItsB,QACjBssB,EAAIhnB,KAAKzG,KAAK4oC,KAAM5oC,KAAK+oC,QAAS,EAAGtb,EAAItsB,QACzCnB,KAAK+oC,SAAWtb,EAAItsB,MACtB,EAGAsnC,EAAO9oC,UAAUstC,iBAAmB,SAAUC,GAC5C,IAAMA,aAAmBlsC,MACvB,MAAM,IAAI2nC,UAAU,qCAEtB,IAAI3mC,EAAOhC,KACXktC,EAAQ95B,SAAQ,SAAUgrB,GACxBp8B,EAAK8qC,YAAY1O,EACnB,GACF,EAGAqK,EAAO9oC,UAAUwtC,SAAW,SAAU/O,EAAGxW,GACvC,GAAmB,iBAAR,EACT,MAAM,IAAI+gB,UAAU,6BAItB,GAHqB,iBAAV,IACT/gB,EAAM8gB,EAAKyB,MAER,yBAAyBxhC,KAAKy1B,GACjC,MAAM,IAAIl+B,MAAM,sCA0BlB,IAAI6uB,EAAMqP,EAAE7xB,MAAM,KACdya,EAAQ,GACZA,EAAMvT,KAA4B,GAAvB25B,SAASre,EAAI,GAAI,IAAWqe,SAASre,EAAI,GAAI,KACxDA,EAAI1qB,MAAM,GAAG+O,SAAQ,SAAUkE,IA3B/B,SAAqB0P,EAAOqmB,GACtBA,EAAQ,IACRrmB,EAAMvT,KAAK45B,GACJA,EAAQ,OACfrmB,EAAMvT,KAAM45B,IAAU,EAAK,KAC3BrmB,EAAMvT,KAAa,IAAR45B,IACJA,EAAQ,SACjBrmB,EAAMvT,KAAM45B,IAAU,GAAM,KAC5BrmB,EAAMvT,KAA8B,KAAvB45B,IAAU,EAAK,MAC5BrmB,EAAMvT,KAAa,IAAR45B,IACFA,EAAQ,WACjBrmB,EAAMvT,KAAM45B,IAAU,GAAM,KAC5BrmB,EAAMvT,KAA+B,KAAxB45B,IAAU,GAAM,MAC7BrmB,EAAMvT,KAA8B,KAAvB45B,IAAU,EAAK,MAC5BrmB,EAAMvT,KAAa,IAAR45B,KAEXrmB,EAAMvT,KAA+B,KAAxB45B,IAAU,GAAM,MAC7BrmB,EAAMvT,KAA+B,KAAxB45B,IAAU,GAAM,MAC7BrmB,EAAMvT,KAA+B,KAAxB45B,IAAU,GAAM,MAC7BrmB,EAAMvT,KAA8B,KAAvB45B,IAAU,EAAK,MAC5BrmB,EAAMvT,KAAa,IAAR45B,GAEf,CAMEC,CAAYtmB,EAAOomB,SAAS91B,EAAG,IACjC,IAEA,IAAItV,EAAOhC,KACXA,KAAKwsC,QAAQ,EAAIxlB,EAAM7lB,QACvBnB,KAAKusC,UAAU3kB,GACf5nB,KAAK+sC,YAAY/lB,EAAM7lB,QACvB6lB,EAAM5T,SAAQ,SAAUkE,GACtBtV,EAAKuqC,UAAUj1B,EACjB,GACF,EAGAmxB,EAAO9oC,UAAUotC,YAAc,SAAUh5B,GACvC,GAAqB,iBAAV,EACT,MAAM,IAAI40B,UAAU,6BAItB,GAFA3oC,KAAKwsC,QAAQ,GAETz4B,GAAO,IACT/T,KAAK4oC,KAAK5oC,KAAK+oC,WAAah1B,OACvB,GAAIA,GAAO,IAChB/T,KAAK4oC,KAAK5oC,KAAK+oC,WAAa,IAC5B/oC,KAAK4oC,KAAK5oC,KAAK+oC,WAAah1B,OACvB,GAAIA,GAAO,MAChB/T,KAAK4oC,KAAK5oC,KAAK+oC,WAAa,IAC5B/oC,KAAK4oC,KAAK5oC,KAAK+oC,WAAah1B,GAAO,EACnC/T,KAAK4oC,KAAK5oC,KAAK+oC,WAAah1B,MACvB,MAAIA,GAAO,UAMhB,MAAMw0B,EAAoB,+BAL1BvoC,KAAK4oC,KAAK5oC,KAAK+oC,WAAa,IAC5B/oC,KAAK4oC,KAAK5oC,KAAK+oC,WAAah1B,GAAO,GACnC/T,KAAK4oC,KAAK5oC,KAAK+oC,WAAah1B,GAAO,EACnC/T,KAAK4oC,KAAK5oC,KAAK+oC,WAAah1B,CAG9B,CACF,EAEA00B,EAAO9oC,UAAU4tC,cAAgB,SAAU3lB,GACpB,iBAAV,IACTA,EAAM8gB,EAAKsC,SAAWtC,EAAKqD,aAE7B/rC,KAAKusC,UAAU3kB,GACf5nB,KAAKssC,KAAK74B,KAAKzT,KAAK+oC,SACpB/oC,KAAKwsC,QAAQ,GACbxsC,KAAK+oC,SAAW,CAClB,EAGAN,EAAO9oC,UAAU6tC,YAAc,WAC7B,IAAIjE,EAAMvpC,KAAKssC,KAAK/xB,MAChByP,EAAQuf,EAAM,EACdx1B,EAAM/T,KAAK+oC,QAAU/e,EAEzB,GAAIjW,GAAO,IACT/T,KAAKytC,OAAOzjB,EAAOjW,GAAM,GACzB/T,KAAK4oC,KAAKW,GAAOx1B,OACZ,GAAIA,GAAO,IAChB/T,KAAKytC,OAAOzjB,EAAOjW,GAAM,GACzB/T,KAAK4oC,KAAKW,GAAO,IACjBvpC,KAAK4oC,KAAKW,EAAM,GAAKx1B,OAChB,GAAIA,GAAO,MAChB/T,KAAK4oC,KAAKW,GAAO,IACjBvpC,KAAK4oC,KAAKW,EAAM,GAAKx1B,GAAO,EAC5B/T,KAAK4oC,KAAKW,EAAM,GAAKx1B,MAChB,MAAIA,GAAO,UAOhB,MAAMw0B,EAAoB,qBAN1BvoC,KAAKytC,OAAOzjB,EAAOjW,EAAK,GACxB/T,KAAK4oC,KAAKW,GAAO,IACjBvpC,KAAK4oC,KAAKW,EAAM,GAAKx1B,GAAO,GAC5B/T,KAAK4oC,KAAKW,EAAM,GAAKx1B,GAAO,EAC5B/T,KAAK4oC,KAAKW,EAAM,GAAKx1B,CAGvB,CACF,EAGA00B,EAAO9oC,UAAU8tC,OAAS,SAAUzjB,EAAOjW,EAAK8tB,GAC9Cxa,EAAOgjB,QAAazpC,IAAVopB,GACV3C,EAAOgjB,QAAWzpC,IAARmT,GACVsT,EAAOgjB,GAAGxI,GAEV7hC,KAAK4oC,KAAKniC,KAAKzG,KAAK4oC,KAAM5e,EAAQ6X,EAAO7X,EAAOA,EAAQjW,GACxD/T,KAAK+oC,SAAWlH,CAClB,EAEA4G,EAAO9oC,UAAU6sC,QAAU,SAAUz4B,GAGnC,GAFAsT,EAAOgjB,GAAGt2B,GAEN/T,KAAK6oC,MAAQ7oC,KAAK+oC,QAAUh1B,EAAK,CACnC,IAAI24B,EAAK1sC,KAAK6oC,MAAQ7oC,KAAKqsC,SAASH,aAChCQ,EAAK1sC,KAAK+oC,QAAUh1B,IACtB24B,GAAM34B,GAER,IAAI0Z,EAAMxH,EAAOiB,MAAMwlB,GAEvB1sC,KAAK4oC,KAAKniC,KAAKgnB,EAAK,EAAG,EAAGztB,KAAK+oC,SAC/B/oC,KAAK4oC,KAAOnb,EACZztB,KAAK6oC,MAAQ6D,CACf,CACF,EAMAltC,EAAOC,QAAUgpC,mBCvTjB,IAAIiF,EAAM,EAAQ,OAMlBluC,EAAOC,QAAU,CAEfiuC,IAAKA,EAELC,UAAWD,EAAIlF,OAEfoF,UAAWF,EAAIjF,yDCdbphB,EAAS,EAAQ,OACjBwmB,EAAS,gBACTtuC,EAAO,EAAQ,OAMfuuC,EAAc,gFAKlB,SAASC,EAAY7iC,GACjB,OAAQA,EAAI8iC,OAAO,GAAGve,cAAgBvkB,EAAI7G,MAAM,EACpD,CAEA,SAAS4pC,EAAMrqC,EAAMsqC,EAAUC,EAAMrlB,EAAKslB,GACtC,MAAM,IAAI/mB,EAAOgnB,eAAe,CAC5BhsC,QAAS9C,EAAKsE,OAAO,sBAAuBD,EAAMsqC,GAClDE,YAAoBxtC,IAAXwtC,SAA+B,EAAQA,EAAOtlB,GACvDolB,SAAUA,EACVI,SAAUH,GAAQ,MAClBI,mBAAoBN,EAAMO,QAElC,CAEA,SAASC,EAAU3lB,GACf,OAAQ9e,OAAOrK,UAAU4uB,SAAS3rB,KAAKkmB,GAAKzkB,MAAM,GAAI,EAC1D,CAEA,SAASsC,IAET,CAKA,IAAIwM,EAAQ,CACRu7B,KAAM,CACFC,MAAO,SAAU7lB,GAAO,MAAwB,kBAAV,CAAqB,GAE/D8lB,KAAM,CACFD,MAAO,SAAU7lB,GAAO,MAAwB,mBAAV,CAAsB,GAEhEmJ,OAAQ,CACJ0c,MAAO,SAAU7lB,GAAO,MAAwB,iBAAV,CAAoB,GAE9D9T,OAAQ,CACJ25B,MAAO,SAAU7lB,GACb,MAAwB,iBAAV,GAA8B,OAARA,CACxC,GAEJ5T,OAAQ,CACJy5B,MAAO,SAAU7lB,GACb,MAAwB,iBAAV,IAAuB+lB,MAAM/lB,EAC/C,GAEJgmB,OAAQ,CACJH,MAAO,SAAU7lB,GACb,MAAwB,iBAAV,IAAuB+lB,MAAM/lB,IAAQimB,SAASjmB,EAChE,GAEJ+E,OAAQ,CACJ8gB,MAAO,SAAU7lB,GAAO,OAAO7C,EAAOE,SAAS2C,EAAM,EACrDwlB,SAAU,mBAEdv5B,MAAO,CACH45B,MAAO,SAAU7lB,GAAO,OAAO9nB,MAAMC,QAAQ6nB,EAAM,EACnDwlB,SAAU,iBAEdU,OAAQ,CACJL,MAAO,SAAU7lB,GAAO,OAAOA,aAAe+kB,CAAQ,EACtDS,SAAU,aACVF,OAAQK,GAEZxjC,KAAM,CACF0jC,MAAO,SAAU7lB,GAAO,OAAOA,aAAeqG,IAAM,EACpDmf,SAAU,aACVF,OAAQK,GAEZQ,OAAQ,CACJN,MAAO,SAAU7lB,GAAO,OAAOA,aAAe3lB,MAAQ,EACtDmrC,SAAU,aACVF,OAAQK,GAEZpiC,KAAM,CACFsiC,MAAO,SAAU7lB,GACb,MAAwB,iBAAV,GAAsBglB,EAAYnlC,KAAKmgB,EACzD,EACAwlB,SAAU,WAqHlB9uC,EAAOC,QAjHP,SAASyvC,EAAYC,GACjB,IACIz2B,EADAtH,EAAOpH,OAAOoH,KAAK+B,GA6GvB,OAxGIuF,EADA02B,EAAQC,IAAIC,YACN3oC,EAEA,SAAUmiB,EAAKsD,GACZtD,GACDmlB,EAAM7hB,EAAK,OAAQtD,EAE3B,EAIJ1X,EAAKgC,SAAQ,SAAUI,GACnB,GAAI27B,EACAz2B,EAAIlF,GAAK7M,MADb,CAIA,IAAI2B,EAAO6K,EAAMK,GACjBkF,EAAIlF,GAAK,SAAUsV,EAAKsD,GACf9jB,EAAKqmC,MAAM7lB,IACZmlB,EAAM7hB,EAAK5Y,EAAGlL,EAAKgmC,SAAUxlB,EAAKxgB,EAAK8lC,OAE/C,CANA,CAOJ,IAGAh9B,EAAKgC,SAAQ,SAAUI,GACnB,IAAI5P,EAAO,WAAamqC,EAAYv6B,GACpC,GAAI27B,EACAz2B,EAAI9U,GAAQ+C,MADhB,CAIA,IAAI2B,EAAO6K,EAAMK,GACjBkF,EAAI9U,GAAQ,SAAUklB,EAAKsD,GACnBtD,UAGCxgB,EAAKqmC,MAAM7lB,IACZmlB,EAAM7hB,EAAK5Y,EAAGlL,EAAKgmC,SAAUxlB,EAAKxgB,EAAK8lC,QAE/C,CATA,CAUJ,IAGAh9B,EAAKgC,SAAQ,SAAUI,GACnB,IAAI5P,EAAO,UAAYmqC,EAAYv6B,GACnC,GAAI27B,EACAz2B,EAAI9U,GAAQ+C,MADhB,CAIA,IAAI2B,EAAO6K,EAAMK,GACb06B,EAAW,IAAM16B,EAAI,IACzBkF,EAAI9U,GAAQ,SAAUklB,EAAKsD,GAIvB,IAAIlrB,EACJ,IAJKF,MAAMC,QAAQ6nB,IACfmlB,EAAM7hB,EAAK8hB,EAAU5lC,EAAKgmC,SAAUxlB,EAAKxgB,EAAK8lC,QAG7CltC,EAAI,EAAGA,EAAI4nB,EAAI3nB,OAAQD,IACnBoH,EAAKqmC,MAAM7lB,EAAI5nB,KAChB+sC,EAAM7hB,EAAK8hB,EAAU5lC,EAAKgmC,SAAUxlB,EAAKxgB,EAAK8lC,OAG1D,CAbA,CAcJ,IAGAh9B,EAAKgC,SAAQ,SAAUI,GACnB,IAAI5P,EAAO,kBAAoBmqC,EAAYv6B,GAC3C,GAAI27B,EACAz2B,EAAI9U,GAAQ+C,MADhB,CAIA,IAAI2B,EAAO6K,EAAMK,GACb06B,EAAW,IAAM16B,EAAI,IACzBkF,EAAI9U,GAAQ,SAAUklB,EAAKsD,GAOvB,IAAIlrB,EANJ,GAAI4nB,QAOJ,IAJK9nB,MAAMC,QAAQ6nB,IACfmlB,EAAM7hB,EAAK8hB,EAAU5lC,EAAKgmC,SAAUxlB,EAAKxgB,EAAK8lC,QAG7CltC,EAAI,EAAGA,EAAI4nB,EAAI3nB,OAAQD,IACnBoH,EAAKqmC,MAAM7lB,EAAI5nB,KAChB+sC,EAAM7hB,EAAK8hB,EAAU5lC,EAAKgmC,SAAUxlB,EAAKxgB,EAAK8lC,OAG1D,CAhBA,CAiBJ,IAGApkC,OAAOoH,KAAKiW,GAAQjU,SAAQ,SAAUI,GAM9BkF,EAAIlF,GALE,mBAANA,GAIA27B,EACSxoC,EAJA0gB,EAAO7T,EAQxB,IAGAkF,EAAIw2B,YAAcA,EAEXx2B,CACX,CAEiBw2B,CAAYE,EAAQC,IAAIC,0DC3LzC,SAASC,EAAQz7B,GAAwT,OAAtOy7B,EAArD,mBAAXC,QAAoD,iBAApBA,OAAOC,SAAmC,SAAiB37B,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAX07B,QAAyB17B,EAAI5J,cAAgBslC,QAAU17B,IAAQ07B,OAAO7vC,UAAY,gBAAkBmU,CAAK,EAAYy7B,EAAQz7B,EAAM,CAI9V,IAoBI47B,EACAC,EApBAC,EADW,EAAQ,OACOC,MAC1BC,EAAyBF,EAAeE,uBACxCC,EAAuBH,EAAeG,qBACtCC,EAAwBJ,EAAeI,sBACvCC,EAA2BL,EAAeK,yBAC1CC,EAAmBN,EAAeM,iBAElC7B,EAAiB,EAAQ,OAGzBva,EADY,EAAQ,OACAA,QAEpBqc,EAAiB,eACjBC,EAAYD,EAAeC,UAC3BC,EAAWF,EAAeE,SAE1BC,EAAetmC,OAAOumC,OAASvmC,OAAOumC,OAAS,eAC/CC,EAAWxmC,OAAOymC,GAAKzmC,OAAOymC,GAAK,EAAQ,OAQ/C,SAASC,IACP,IAAIC,EAAa,EAAQ,OAEzBjB,EAAciB,EAAWjB,YACzBC,EAAoBgB,EAAWhB,iBACjC,CAZiB,IAAIiB,IAiBrB,IAOIC,GAAS,EAITxpB,EAAS7nB,EAAOC,QAAU4qC,EAC1ByG,EAAwB,CAAC,EAM7B,SAASC,EAAUj9B,GACjB,GAAIA,EAAIzR,mBAAmBnC,MAAO,MAAM4T,EAAIzR,QAC5C,MAAM,IAAIgsC,EAAev6B,EAC3B,CA+CA,SAASk9B,EAAQC,EAAIC,EAAQtoC,EAAOvG,GAClC,IAAKuG,EAAO,CACV,IAAIuoC,GAAmB,EAEvB,GAAe,IAAXD,EACFC,GAAmB,EACnB9uC,EAAU,iDACL,GAAIA,aAAmBnC,MAC5B,MAAMmC,EAGR,IAAIoqB,EAAM,IAAI4hB,EAAe,CAC3BD,OAAQxlC,EACRslC,UAAU,EACV7rC,QAASA,EACTisC,SAAU,KACV8C,aAAcH,IAGhB,MADAxkB,EAAI0kB,iBAAmBA,EACjB1kB,CACR,CACF,CAIA,SAAS4d,IACP,IAAK,IAAIvB,EAAOtjC,UAAUrE,OAAQ0mB,EAAO,IAAI7mB,MAAM8nC,GAAOuI,EAAO,EAAGA,EAAOvI,EAAMuI,IAC/ExpB,EAAKwpB,GAAQ7rC,UAAU6rC,GAGzBL,EAAQzrC,WAAM,EAAQ,CAAC8kC,EAAIxiB,EAAK1mB,QAAQyS,OAAOiU,GACjD,CAnCAR,EAAON,KAzCP,SAASA,EAAKqnB,EAAQF,EAAU7rC,EAASisC,EAAU8C,GACjD,IACIE,EADAC,EAAU/rC,UAAUrE,OAGxB,GAAgB,IAAZowC,EACFD,EAAkB,cACb,GAAgB,IAAZC,EACTlvC,EAAU+rC,EACVA,OAASxtC,MACJ,CACL,IAAe,IAAXiwC,EAAkB,CACpBA,GAAS,EACT,IAAIzuC,EAAOgtC,EAAQoC,YAAcpC,EAAQoC,YAAc5qC,QAAQxE,KAAKqvC,KAAK7qC,SACzExE,EAAK,2HAAiI,qBAAsB,UAC9J,CAEgB,IAAZmvC,IAAejD,EAAW,KAChC,CAEA,GAAIjsC,aAAmBnC,MAAO,MAAMmC,EACpC,IAAIqvC,EAAU,CACZtD,OAAQA,EACRF,SAAUA,EACVI,cAAuB1tC,IAAb0tC,EAAyB,OAASA,EAC5C8C,aAAcA,GAAgBrqB,QAGhBnmB,IAAZyB,IACFqvC,EAAQrvC,QAAUA,GAGpB,IAAIoqB,EAAM,IAAI4hB,EAAeqD,GAO7B,MALIJ,IACF7kB,EAAIpqB,QAAUivC,EACd7kB,EAAI0kB,kBAAmB,GAGnB1kB,CACR,EAIApF,EAAOgnB,eAAiBA,EAmCxBhnB,EAAOgjB,GAAKA,EAIZhjB,EAAOxa,MAAQ,SAASA,EAAMuhC,EAAQF,EAAU7rC,GAC9C,GAAImD,UAAUrE,OAAS,EACrB,MAAM,IAAI+uC,EAAiB,SAAU,YAInC9B,GAAUF,GACZ6C,EAAU,CACR3C,OAAQA,EACRF,SAAUA,EACV7rC,QAASA,EACTisC,SAAU,KACV8C,aAAcvkC,GAGpB,EAIAwa,EAAOsqB,SAAW,SAASA,EAASvD,EAAQF,EAAU7rC,GACpD,GAAImD,UAAUrE,OAAS,EACrB,MAAM,IAAI+uC,EAAiB,SAAU,YAInC9B,GAAUF,GACZ6C,EAAU,CACR3C,OAAQA,EACRF,SAAUA,EACV7rC,QAASA,EACTisC,SAAU,KACV8C,aAAcO,GAGpB,EAGAtqB,EAAOuqB,UAAY,SAASA,EAAUxD,EAAQF,EAAU7rC,GACtD,GAAImD,UAAUrE,OAAS,EACrB,MAAM,IAAI+uC,EAAiB,SAAU,iBAGnBtvC,IAAhB8uC,GAA2BgB,IAE1BhB,EAAYtB,EAAQF,IACvB6C,EAAU,CACR3C,OAAQA,EACRF,SAAUA,EACV7rC,QAASA,EACTisC,SAAU,YACV8C,aAAcQ,GAGpB,EAGAvqB,EAAOwqB,aAAe,SAASA,EAAazD,EAAQF,EAAU7rC,GAC5D,GAAImD,UAAUrE,OAAS,EACrB,MAAM,IAAI+uC,EAAiB,SAAU,iBAGnBtvC,IAAhB8uC,GAA2BgB,IAE3BhB,EAAYtB,EAAQF,IACtB6C,EAAU,CACR3C,OAAQA,EACRF,SAAUA,EACV7rC,QAASA,EACTisC,SAAU,eACV8C,aAAcS,GAGpB,EAIAxqB,EAAOyqB,gBAAkB,SAASA,EAAgB1D,EAAQF,EAAU7rC,GAClE,GAAImD,UAAUrE,OAAS,EACrB,MAAM,IAAI+uC,EAAiB,SAAU,iBAGnBtvC,IAAhB8uC,GAA2BgB,IAE1Bf,EAAkBvB,EAAQF,IAC7B6C,EAAU,CACR3C,OAAQA,EACRF,SAAUA,EACV7rC,QAASA,EACTisC,SAAU,kBACV8C,aAAcU,GAGpB,EAEAzqB,EAAO0qB,mBAEP,SAASA,EAAmB3D,EAAQF,EAAU7rC,GAC5C,GAAImD,UAAUrE,OAAS,EACrB,MAAM,IAAI+uC,EAAiB,SAAU,iBAGnBtvC,IAAhB8uC,GAA2BgB,IAE3Bf,EAAkBvB,EAAQF,IAC5B6C,EAAU,CACR3C,OAAQA,EACRF,SAAUA,EACV7rC,QAASA,EACTisC,SAAU,qBACV8C,aAAcW,GAGpB,EAEA1qB,EAAO2qB,YAAc,SAASA,EAAY5D,EAAQF,EAAU7rC,GAC1D,GAAImD,UAAUrE,OAAS,EACrB,MAAM,IAAI+uC,EAAiB,SAAU,YAGlCM,EAASpC,EAAQF,IACpB6C,EAAU,CACR3C,OAAQA,EACRF,SAAUA,EACV7rC,QAASA,EACTisC,SAAU,cACV8C,aAAcY,GAGpB,EAEA3qB,EAAO4qB,eAAiB,SAASA,EAAe7D,EAAQF,EAAU7rC,GAChE,GAAImD,UAAUrE,OAAS,EACrB,MAAM,IAAI+uC,EAAiB,SAAU,YAGnCM,EAASpC,EAAQF,IACnB6C,EAAU,CACR3C,OAAQA,EACRF,SAAUA,EACV7rC,QAASA,EACTisC,SAAU,iBACV8C,aAAca,GAGpB,EAEA,IAAIC,EAAa,SAASA,EAAWp+B,EAAK1C,EAAMg9B,GAC9C,IAAI+D,EAAQnyC,MAlSd,SAAyBoyC,EAAUrG,GAAe,KAAMqG,aAAoBrG,GAAgB,MAAM,IAAIpD,UAAU,oCAAwC,CAoStJ0J,CAAgBryC,KAAMkyC,GAEtB9gC,EAAKgC,SAAQ,SAAUtS,GACjBA,KAAOgT,SACMlT,IAAXwtC,GAA+C,iBAAhBA,EAAOttC,IAAqBuvC,EAASv8B,EAAIhT,KAASgT,EAAIhT,GAAK6H,KAAKylC,EAAOttC,IACxGqxC,EAAMrxC,GAAOstC,EAAOttC,GAEpBqxC,EAAMrxC,GAAOgT,EAAIhT,GAGvB,GACF,EAEA,SAASwxC,EAAoBlE,EAAQF,EAAUptC,EAAKuB,EAAS+O,EAAM6/B,GACjE,KAAMnwC,KAAOstC,KAAYuB,EAAkBvB,EAAOttC,GAAMotC,EAASptC,IAAO,CACtE,IAAKuB,EAAS,CAEZ,IAAIgV,EAAI,IAAI66B,EAAW9D,EAAQh9B,GAC3BkG,EAAI,IAAI46B,EAAWhE,EAAU98B,EAAMg9B,GACnC3hB,EAAM,IAAI4hB,EAAe,CAC3BD,OAAQ/2B,EACR62B,SAAU52B,EACVg3B,SAAU,kBACV8C,aAAcH,IAKhB,MAHAxkB,EAAI2hB,OAASA,EACb3hB,EAAIyhB,SAAWA,EACfzhB,EAAI6hB,SAAW2C,EAAGrtC,KACZ6oB,CACR,CAEAskB,EAAU,CACR3C,OAAQA,EACRF,SAAUA,EACV7rC,QAASA,EACTisC,SAAU2C,EAAGrtC,KACbwtC,aAAcH,GAElB,CACF,CAEA,SAASsB,EAAkBnE,EAAQF,EAAU9hB,EAAK6kB,GAChD,GAAwB,mBAAb/C,EAAyB,CAClC,GAAImC,EAASnC,GAAW,OAAOA,EAASvlC,KAAKylC,GAE7C,GAAyB,IAArB5oC,UAAUrE,OACZ,MAAM,IAAI4uC,EAAqB,WAAY,CAAC,WAAY,UAAW7B,GAIrE,GAAwB,WAApBqB,EAAQnB,IAAmC,OAAXA,EAAiB,CACnD,IAAI3hB,EAAM,IAAI4hB,EAAe,CAC3BD,OAAQA,EACRF,SAAUA,EACV7rC,QAAS+pB,EACTkiB,SAAU,kBACV8C,aAAcH,IAGhB,MADAxkB,EAAI6hB,SAAW2C,EAAGrtC,KACZ6oB,CACR,CAEA,IAAIrb,EAAOpH,OAAOoH,KAAK88B,GAGvB,GAAIA,aAAoBhuC,MACtBkR,EAAKqC,KAAK,OAAQ,gBACb,GAAoB,IAAhBrC,EAAKjQ,OACd,MAAM,IAAI6uC,EAAsB,QAAS9B,EAAU,8BAWrD,YARoBttC,IAAhB8uC,GAA2BgB,IAC/Bt/B,EAAKgC,SAAQ,SAAUtS,GACM,iBAAhBstC,EAAOttC,IAAqBuvC,EAASnC,EAASptC,KAASotC,EAASptC,GAAK6H,KAAKylC,EAAOttC,KAI5FwxC,EAAoBlE,EAAQF,EAAUptC,EAAKsrB,EAAKhb,EAAM6/B,EACxD,KACO,CACT,CAGA,YAA2BrwC,IAAvBstC,EAASvuC,WAA2ByuC,aAAkBF,IAItDhuC,MAAMsyC,cAActE,KAIa,IAA9BA,EAAStrC,KAAK,CAAC,EAAGwrC,EAC3B,CAEA,SAASqE,EAAUxB,GACjB,GAAkB,mBAAPA,EACT,MAAM,IAAIlB,EAAqB,KAAM,WAAYkB,GAGnD,IACEA,GAGF,CAFE,MAAO9sC,GACP,OAAOA,CACT,CAEA,OAAO2sC,CACT,CAEA,SAAS4B,EAAe5+B,GAOtB,OAAOs8B,EAAUt8B,IAAgB,OAARA,GAAiC,WAAjBy7B,EAAQz7B,IAAyC,mBAAbA,EAAI7K,MAA4C,mBAAd6K,EAAI6+B,KACrH,CAEA,SAASC,EAAcC,GACrB,OAAOxpC,QAAQrK,UAAUiK,MAAK,WAC5B,IAAI6pC,EAEJ,GAAyB,mBAAdD,GAIT,IAAKH,EAFLI,EAAgBD,KAGd,MAAM,IAAI5C,EAAyB,sBAAuB,YAAa6C,OAEpE,KAAIJ,EAAeG,GAGxB,MAAM,IAAI9C,EAAqB,YAAa,CAAC,WAAY,WAAY8C,GAFrEC,EAAgBD,CAGlB,CAEA,OAAOxpC,QAAQrK,UAAUiK,MAAK,WAC5B,OAAO6pC,CACT,IAAG7pC,MAAK,WACN,OAAO6nC,CACT,IAAG6B,OAAM,SAAUxuC,GACjB,OAAOA,CACT,GACF,GACF,CAEA,SAAS4uC,EAAa3B,EAAchD,EAAQ7rC,EAAOF,GACjD,GAAqB,iBAAVE,EAAoB,CAC7B,GAAyB,IAArBiD,UAAUrE,OACZ,MAAM,IAAI4uC,EAAqB,QAAS,CAAC,SAAU,QAAS,WAAY,UAAWxtC,GAGrF,GAAwB,WAApBgtC,EAAQnB,IAAmC,OAAXA,GAClC,GAAIA,EAAO/rC,UAAYE,EACrB,MAAM,IAAIutC,EAAuB,gBAAiB,sBAAuBl8B,OAAOw6B,EAAO/rC,QAAS,wCAE7F,GAAI+rC,IAAW7rC,EACpB,MAAM,IAAIutC,EAAuB,gBAAiB,cAAel8B,OAAOw6B,EAAQ,mCAGlF/rC,EAAUE,EACVA,OAAQ3B,CACV,MAAO,GAAa,MAAT2B,GAAoC,WAAnBgtC,EAAQhtC,IAAwC,mBAAVA,EAChE,MAAM,IAAIwtC,EAAqB,QAAS,CAAC,SAAU,QAAS,WAAY,UAAWxtC,GAGrF,GAAI6rC,IAAW0C,EAAuB,CACpC,IAAIkC,EAAU,GAEVzwC,GAASA,EAAMqB,OACjBovC,GAAW,KAAKp/B,OAAOrR,EAAMqB,KAAM,MAGrCovC,GAAW3wC,EAAU,KAAKuR,OAAOvR,GAAW,IAC5C,IAAI4wC,EAA+B,YAAtB7B,EAAaxtC,KAAqB,YAAc,YAC7DmtC,EAAU,CACR3C,YAAQxtC,EACRstC,SAAU3rC,EACV+rC,SAAU8C,EAAaxtC,KACvBvB,QAAS,oBAAoBuR,OAAOq/B,GAAQr/B,OAAOo/B,GACnD5B,aAAcA,GAElB,CAEA,GAAI7uC,IAAUgwC,EAAkBnE,EAAQ7rC,EAAOF,EAAS+uC,GACtD,MAAMhD,CAEV,CAEA,SAAS8E,EAAe9B,EAAchD,EAAQ7rC,EAAOF,GACnD,GAAI+rC,IAAW0C,EAAf,CAOA,GALqB,iBAAVvuC,IACTF,EAAUE,EACVA,OAAQ3B,IAGL2B,GAASgwC,EAAkBnE,EAAQ7rC,GAAQ,CAC9C,IAAIywC,EAAU3wC,EAAU,KAAKuR,OAAOvR,GAAW,IAC3C4wC,EAA+B,kBAAtB7B,EAAaxtC,KAA2B,YAAc,YACnEmtC,EAAU,CACR3C,OAAQA,EACRF,SAAU3rC,EACV+rC,SAAU8C,EAAaxtC,KACvBvB,QAAS,gBAAgBuR,OAAOq/B,GAAQr/B,OAAOo/B,EAAS,MAAQ,oBAAqBp/B,OAAOw6B,GAAUA,EAAO/rC,QAAS,KACtH+uC,aAAcA,GAElB,CAEA,MAAMhD,CAnBsC,CAoB9C,CA0FA,SAAS+E,IACP,IAAK,IAAIC,EAAQ5tC,UAAUrE,OAAQ0mB,EAAO,IAAI7mB,MAAMoyC,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFxrB,EAAKwrB,GAAS7tC,UAAU6tC,GAG1BrC,EAAQzrC,WAAM,EAAQ,CAAC4tC,EAAQtrB,EAAK1mB,QAAQyS,OAAOiU,GACrD,CA9FAR,EAAOisB,OAAS,SAASA,EAAOT,GAC9B,IAAK,IAAIU,EAAQ/tC,UAAUrE,OAAQ0mB,EAAO,IAAI7mB,MAAMuyC,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxG3rB,EAAK2rB,EAAQ,GAAKhuC,UAAUguC,GAG9BT,EAAaxtC,WAAM,EAAQ,CAAC+tC,EAAQb,EAAUI,IAAYj/B,OAAOiU,GACnE,EAEAR,EAAOosB,QAAU,SAASA,EAAQZ,GAChC,IAAK,IAAIa,EAAQluC,UAAUrE,OAAQ0mB,EAAO,IAAI7mB,MAAM0yC,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxG9rB,EAAK8rB,EAAQ,GAAKnuC,UAAUmuC,GAG9B,OAAOf,EAAcC,GAAW5pC,MAAK,SAAU3D,GAC7C,OAAOytC,EAAaxtC,WAAM,EAAQ,CAACkuC,EAASnuC,GAAQsO,OAAOiU,GAC7D,GACF,EAEAR,EAAOusB,aAAe,SAASA,EAAa3C,GAC1C,IAAK,IAAI4C,EAAQruC,UAAUrE,OAAQ0mB,EAAO,IAAI7mB,MAAM6yC,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGjsB,EAAKisB,EAAQ,GAAKtuC,UAAUsuC,GAG9BZ,EAAe3tC,WAAM,EAAQ,CAACquC,EAAcnB,EAAUxB,IAAKr9B,OAAOiU,GACpE,EAEAR,EAAO0sB,cAAgB,SAASA,EAAc9C,GAC5C,IAAK,IAAI+C,EAAQxuC,UAAUrE,OAAQ0mB,EAAO,IAAI7mB,MAAMgzC,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGpsB,EAAKosB,EAAQ,GAAKzuC,UAAUyuC,GAG9B,OAAOrB,EAAc3B,GAAIhoC,MAAK,SAAU3D,GACtC,OAAO4tC,EAAe3tC,WAAM,EAAQ,CAACwuC,EAAezuC,GAAQsO,OAAOiU,GACrE,GACF,EAEAR,EAAO6sB,QAAU,SAASA,EAAQznB,GAChC,GAAIA,QAAmC,CACrC,IAAIpqB,EAAU,mCAEO,WAAjBktC,EAAQ9iB,IAA4C,iBAAhBA,EAAIpqB,QACf,IAAvBoqB,EAAIpqB,QAAQlB,QAAgBsrB,EAAIviB,YAClC7H,GAAWoqB,EAAIviB,YAAYtG,KAE3BvB,GAAWoqB,EAAIpqB,QAGjBA,GAAWyxB,EAAQrH,GAGrB,IAAI0nB,EAAS,IAAI9F,EAAe,CAC9BD,OAAQ3hB,EACRyhB,SAAU,KACVI,SAAU,UACVjsC,QAASA,EACT+uC,aAAc8C,IAGZE,EAAY3nB,EAAIG,MAEpB,GAAyB,iBAAdwnB,EAAwB,CAIjC,IAAIC,EAAOD,EAAU7nC,MAAM,MAC3B8nC,EAAKxS,QAIL,IAFA,IAAIyS,EAAOH,EAAOvnB,MAAMrgB,MAAM,MAErBrL,EAAI,EAAGA,EAAImzC,EAAKlzC,OAAQD,IAAK,CAEpC,IAAI8S,EAAMsgC,EAAKh2B,QAAQ+1B,EAAKnzC,IAE5B,IAAa,IAAT8S,EAAY,CAEdsgC,EAAOA,EAAKjwC,MAAM,EAAG2P,GACrB,KACF,CACF,CAEAmgC,EAAOvnB,MAAQ,GAAGhZ,OAAO0gC,EAAK1jC,KAAK,MAAO,MAAMgD,OAAOygC,EAAKzjC,KAAK,MACnE,CAEA,MAAMujC,CACR,CACF,EAWA9sB,EAAO8rB,OAAS7C,EAAa6C,EAAQ9rB,EAAQ,CAC3Cxa,MAAOwa,EAAO2qB,YACdJ,UAAWvqB,EAAOyqB,gBAClBH,SAAUtqB,EAAO4qB,eACjBJ,aAAcxqB,EAAO0qB,qBAEvB1qB,EAAO8rB,OAAOA,OAAS9rB,EAAO8rB,oDChnB9B,SAASoB,EAAgBzgC,EAAKhT,EAAK8H,GAAiK,OAApJ9H,KAAOgT,EAAO9J,OAAOg/B,eAAel1B,EAAKhT,EAAK,CAAE8H,MAAOA,EAAOqgC,YAAY,EAAMuL,cAAc,EAAMC,UAAU,IAAkB3gC,EAAIhT,GAAO8H,EAAgBkL,CAAK,CAIhN,SAAS4gC,EAAkBC,EAAQC,GAAS,IAAK,IAAI1zC,EAAI,EAAGA,EAAI0zC,EAAMzzC,OAAQD,IAAK,CAAE,IAAI2zC,EAAaD,EAAM1zC,GAAI2zC,EAAW5L,WAAa4L,EAAW5L,aAAc,EAAO4L,EAAWL,cAAe,EAAU,UAAWK,IAAYA,EAAWJ,UAAW,GAAMzqC,OAAOg/B,eAAe2L,EAAQE,EAAW/zC,IAAK+zC,EAAa,CAAE,CAI5T,SAASC,EAA2B9yC,EAAMY,GAAQ,OAAIA,GAA2B,WAAlB2sC,EAAQ3sC,IAAsC,mBAATA,EAA8CmyC,EAAuB/yC,GAAtCY,CAA6C,CAEhL,SAASmyC,EAAuB/yC,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIgzC,eAAe,6DAAgE,OAAOhzC,CAAM,CAIrK,SAASizC,EAAiBC,GAAS,IAAI5xC,EAAwB,mBAARstC,IAAqB,IAAIA,SAAQhwC,EAA8nB,OAAnnBq0C,EAAmB,SAA0BC,GAAS,GAAc,OAAVA,IAMlIjE,EANuKiE,GAMjG,IAAzD/lC,SAASof,SAAS3rB,KAAKquC,GAAI3yB,QAAQ,kBAN+H,OAAO42B,EAMjN,IAA2BjE,EAN6L,GAAqB,mBAAViE,EAAwB,MAAM,IAAIvM,UAAU,sDAAyD,QAAsB,IAAXrlC,EAAwB,CAAE,GAAIA,EAAO6xC,IAAID,GAAQ,OAAO5xC,EAAOkB,IAAI0wC,GAAQ5xC,EAAO8xC,IAAIF,EAAOG,EAAU,CAAE,SAASA,IAAY,OAAOC,EAAWJ,EAAO1vC,UAAW+vC,EAAgBv1C,MAAMkK,YAAc,CAAkJ,OAAhJmrC,EAAQ11C,UAAYqK,OAAOC,OAAOirC,EAAMv1C,UAAW,CAAEuK,YAAa,CAAEtB,MAAOysC,EAASpM,YAAY,EAAOwL,UAAU,EAAMD,cAAc,KAAkBgB,EAAgBH,EAASH,EAAQ,EAAUD,EAAiBC,EAAQ,CAEtvB,SAASO,IAA6B,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAiF,OAA3E1mB,KAAKxvB,UAAU4uB,SAAS3rB,KAAK8yC,QAAQC,UAAUxmB,KAAM,IAAI,WAAa,MAAY,CAAkC,CAA1B,MAAOhrB,GAAK,OAAO,CAAO,CAAE,CAElU,SAASmxC,EAAWQ,EAAQjuB,EAAMqtB,GAAoV,OAAzSI,EAA9BG,IAA2CC,QAAQC,UAAiC,SAAoBG,EAAQjuB,EAAMqtB,GAAS,IAAI79B,EAAI,CAAC,MAAOA,EAAE5D,KAAKlO,MAAM8R,EAAGwQ,GAAO,IAAsDuqB,EAAW,IAA/CjjC,SAASsiC,KAAKlsC,MAAMuwC,EAAQz+B,IAA6F,OAAnD69B,GAAOM,EAAgBpD,EAAU8C,EAAMv1C,WAAmByyC,CAAU,EAAYkD,EAAW/vC,MAAM,KAAMC,UAAY,CAIha,SAASgwC,EAAgB9gC,EAAG3L,GAA+G,OAA1GysC,EAAkBxrC,OAAO+rC,gBAAkB,SAAyBrhC,EAAG3L,GAAsB,OAAjB2L,EAAEshC,UAAYjtC,EAAU2L,CAAG,EAAU8gC,EAAgB9gC,EAAG3L,EAAI,CAEzK,SAASwsC,EAAgB7gC,GAAwJ,OAAnJ6gC,EAAkBvrC,OAAO+rC,eAAiB/rC,OAAOisC,eAAiB,SAAyBvhC,GAAK,OAAOA,EAAEshC,WAAahsC,OAAOisC,eAAevhC,EAAI,EAAU6gC,EAAgB7gC,EAAI,CAE5M,SAAS66B,EAAQz7B,GAAwT,OAAtOy7B,EAArD,mBAAXC,QAAoD,iBAApBA,OAAOC,SAAmC,SAAiB37B,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAX07B,QAAyB17B,EAAI5J,cAAgBslC,QAAU17B,IAAQ07B,OAAO7vC,UAAY,gBAAkBmU,CAAK,EAAYy7B,EAAQz7B,EAAM,CAE9V,IACIggB,EADW,EAAQ,OACAA,QAGnBic,EADY,EAAQ,OACaF,MAAME,qBAG3C,SAASmG,EAAShrC,EAAKirC,EAAQC,GAK7B,YAJiBx1C,IAAbw1C,GAA0BA,EAAWlrC,EAAI/J,UAC3Ci1C,EAAWlrC,EAAI/J,QAGV+J,EAAImrC,UAAUD,EAAWD,EAAOh1C,OAAQi1C,KAAcD,CAC/D,CAkBA,IAAIG,EAAO,GACPC,EAAQ,GACR1kB,EAAM,GACN2kB,EAAQ,GACRC,EAAoB,CACtB3E,gBAAiB,6CACjBE,YAAa,wCACb0E,kBAAmB,yDACnB9E,UAAW,4CACX/kC,MAAO,uCACPklC,mBAAoB,sDACpBE,eAAgB,+CAChB0E,qBAAsB,6DACtB9E,aAAc,qDACdF,SAAU,8CACViF,aAAc,6CAMhB,SAASC,EAAUvoC,GACjB,IAAI8C,EAAOpH,OAAOoH,KAAK9C,GACnBqmC,EAAS3qC,OAAOC,OAAOD,OAAOisC,eAAe3nC,IAOjD,OANA8C,EAAKgC,SAAQ,SAAUtS,GACrB6zC,EAAO7zC,GAAOwN,EAAOxN,EACvB,IACAkJ,OAAOg/B,eAAe2L,EAAQ,UAAW,CACvC/rC,MAAO0F,EAAOjM,UAETsyC,CACT,CAEA,SAASmC,EAAa9tB,GAGpB,OAAO8K,EAAQ9K,EAAK,CAClB+tB,SAAS,EACTC,eAAe,EACfC,MAAO,IACPC,eAAgB3vC,IAEhB4vC,YAAY,EAMZC,YAAa7vC,IAEb8vC,WAAW,EACXC,QAAQ,EAERC,SAAS,GAEb,CA8NA,IAAIlJ,EAEJ,SAAUmJ,GAGR,SAASnJ,EAAetqC,GACtB,IAAIouC,EAIJ,GAxVJ,SAAyBC,EAAUrG,GAAe,KAAMqG,aAAoBrG,GAAgB,MAAM,IAAIpD,UAAU,oCAAwC,CAsVpJ0J,CAAgBryC,KAAMquC,GAEG,WAArBkB,EAAQxrC,IAAqC,OAAZA,EACnC,MAAM,IAAIgsC,EAAqB,UAAW,SAAUhsC,GAGtD,IAAI1B,EAAU0B,EAAQ1B,QAClBisC,EAAWvqC,EAAQuqC,SACnB8C,EAAertC,EAAQqtC,aACvBhD,EAASrqC,EAAQqqC,OACjBF,EAAWnqC,EAAQmqC,SACnB17B,EAAQtS,MAAMu3C,gBAGlB,GAFAv3C,MAAMu3C,gBAAkB,EAET,MAAXp1C,EACF8vC,EAAQ2C,EAA2B90C,KAAMu1C,EAAgBlH,GAAgBzrC,KAAK5C,KAAMmuB,OAAO9rB,UA0B3F,GAxBI+sC,EAAQsI,QAAUtI,EAAQsI,OAAOC,QAG/BvI,EAAQsI,QAAUtI,EAAQsI,OAAOE,eAAoD,IAAnCxI,EAAQsI,OAAOE,iBACnEtB,EAAO,QACPC,EAAQ,QACRC,EAAQ,QACR3kB,EAAM,UAENykB,EAAO,GACPC,EAAQ,GACRC,EAAQ,GACR3kB,EAAM,KAOc,WAApB0d,EAAQnB,IAAmC,OAAXA,GAAyC,WAAtBmB,EAAQrB,IAAuC,OAAbA,GAAqB,UAAWE,GAAUA,aAAkBluC,OAAS,UAAWguC,GAAYA,aAAoBhuC,QACvMkuC,EAASyI,EAAUzI,GACnBF,EAAW2I,EAAU3I,IAGN,oBAAbI,GAA+C,gBAAbA,EACpC6D,EAAQ2C,EAA2B90C,KAAMu1C,EAAgBlH,GAAgBzrC,KAAK5C,KA9QtF,SAAuBouC,EAAQF,EAAUI,GACvC,IAAIuJ,EAAQ,GACRl1C,EAAM,GACNm1C,EAAU,EACVnoB,EAAM,GACNooB,GAAU,EACVC,EAAkBlB,EAAa1I,GAC/B6J,EAAcD,EAAgBzrC,MAAM,MACpC2rC,EAAgBpB,EAAa5I,GAAU3hC,MAAM,MAC7CrL,EAAI,EACJi3C,EAAY,GAShB,GANiB,gBAAb7J,GAAkD,WAApBiB,EAAQnB,IAA8C,WAAtBmB,EAAQrB,IAAqC,OAAXE,GAAgC,OAAbF,IACrHI,EAAW,qBAKc,IAAvB2J,EAAY92C,QAAyC,IAAzB+2C,EAAc/2C,QAAgB82C,EAAY,KAAOC,EAAc,GAAI,CACjG,IAAIE,EAAcH,EAAY,GAAG92C,OAAS+2C,EAAc,GAAG/2C,OAI3D,GAAIi3C,GA9Dc,IA+DhB,KAAyB,WAApB7I,EAAQnB,IAAmC,OAAXA,GAA2C,WAAtBmB,EAAQrB,IAAuC,OAAbA,GAAkC,IAAXE,GAA6B,IAAbF,GAEjI,MAAO,GAAGt6B,OAAO6iC,EAAkBnI,GAAW,QAAU,GAAG16B,OAAOqkC,EAAY,GAAI,SAASrkC,OAAOskC,EAAc,GAAI,WAEjH,GAAiB,sBAAb5J,GAML8J,GAFYhJ,EAAQsI,QAAUtI,EAAQsI,OAAOC,MAAQvI,EAAQsI,OAAOW,QAAU,IAErD,CAC3B,KAAOJ,EAAY,GAAG/2C,KAAOg3C,EAAc,GAAGh3C,IAC5CA,IAIEA,EAAI,IAGNi3C,EAAY,OAAOvkC,OApH7B,SAAgB1I,EAAK0H,GAEnB,GADAA,EAAQ6H,KAAK69B,MAAM1lC,GACD,GAAd1H,EAAI/J,QAAwB,GAATyR,EAAY,MAAO,GAC1C,IAAI2lC,EAAWrtC,EAAI/J,OAASyR,EAG5B,IAFAA,EAAQ6H,KAAK69B,MAAM79B,KAAK/T,IAAIkM,GAAS6H,KAAK/T,IAAI,IAEvCkM,GACL1H,GAAOA,EACP0H,IAIF,OADA1H,EAAOA,EAAImrC,UAAU,EAAGkC,EAAWrtC,EAAI/J,OAEzC,CAuGoCq3C,CAAO,IAAKt3C,GAAI,KAC1CA,EAAI,EAER,CAEJ,CAOA,IAHA,IAAImW,EAAI4gC,EAAYA,EAAY92C,OAAS,GACrCmW,EAAI4gC,EAAcA,EAAc/2C,OAAS,GAEtCkW,IAAMC,IACPpW,IAAM,EACRyuB,EAAM,OAAO/b,OAAOyD,GAAGzD,OAAO+b,GAE9BkoB,EAAQxgC,EAGV4gC,EAAY19B,MACZ29B,EAAc39B,MACa,IAAvB09B,EAAY92C,QAAyC,IAAzB+2C,EAAc/2C,SAC9CkW,EAAI4gC,EAAYA,EAAY92C,OAAS,GACrCmW,EAAI4gC,EAAcA,EAAc/2C,OAAS,GAG3C,IAAIs3C,EAAWh+B,KAAK8X,IAAI0lB,EAAY92C,OAAQ+2C,EAAc/2C,QAG1D,GAAiB,IAAbs3C,EAAgB,CAElB,IAAIC,EAAeV,EAAgBzrC,MAAM,MAIzC,GAAImsC,EAAav3C,OAAS,GAGxB,IAFAu3C,EAAa,IAAM,GAAG9kC,OAAO0iC,EAAM,OAAO1iC,OAAO4iC,GAE1CkC,EAAav3C,OAAS,IAC3Bu3C,EAAan+B,MAIjB,MAAO,GAAG3G,OAAO6iC,EAAkBG,aAAc,QAAQhjC,OAAO8kC,EAAa9nC,KAAK,MAAO,KAC3F,CAEI1P,EAAI,IACNyuB,EAAM,KAAK/b,OAAO0iC,EAAM,OAAO1iC,OAAO4iC,GAAO5iC,OAAO+b,GACpDooB,GAAU,GAGE,KAAVF,IACFloB,EAAM,OAAO/b,OAAOikC,GAAOjkC,OAAO+b,GAClCkoB,EAAQ,IAGV,IAAIc,EAAe,EACfvsB,EAAMqqB,EAAkBnI,GAAY,KAAK16B,OAAO2iC,EAAO,YAAY3iC,OAAO4iC,EAAO,KAAK5iC,OAAOie,EAAK,cAAcje,OAAO4iC,GACvHoC,EAAa,IAAIhlC,OAAO0iC,EAAM,OAAO1iC,OAAO4iC,EAAO,kBAEvD,IAAKt1C,EAAI,EAAGA,EAAIu3C,EAAUv3C,IAAK,CAE7B,IAAI23C,EAAM33C,EAAI42C,EAEd,GAAIG,EAAY92C,OAASD,EAAI,EAIvB23C,EAAM,GAAK33C,EAAI,IACb23C,EAAM,GACRl2C,GAAO,KAAKiR,OAAO0iC,EAAM,OAAO1iC,OAAO4iC,GACvCuB,GAAU,GACDc,EAAM,IACfl2C,GAAO,OAAOiR,OAAOskC,EAAch3C,EAAI,IACvCy3C,KAGFh2C,GAAO,OAAOiR,OAAOskC,EAAch3C,EAAI,IACvCy3C,KAIFb,EAAU52C,EAEV22C,GAAS,KAAKjkC,OAAOie,EAAK,KAAKje,OAAO4iC,EAAO,KAAK5iC,OAAOskC,EAAch3C,IACvEy3C,SACK,GAAIT,EAAc/2C,OAASD,EAAI,EAIhC23C,EAAM,GAAK33C,EAAI,IACb23C,EAAM,GACRl2C,GAAO,KAAKiR,OAAO0iC,EAAM,OAAO1iC,OAAO4iC,GACvCuB,GAAU,GACDc,EAAM,IACfl2C,GAAO,OAAOiR,OAAOqkC,EAAY/2C,EAAI,IACrCy3C,KAGFh2C,GAAO,OAAOiR,OAAOqkC,EAAY/2C,EAAI,IACrCy3C,KAIFb,EAAU52C,EAEVyB,GAAO,KAAKiR,OAAO2iC,EAAO,KAAK3iC,OAAO4iC,EAAO,KAAK5iC,OAAOqkC,EAAY/2C,IACrEy3C,QACK,CACL,IAAIG,EAAeZ,EAAch3C,GAC7B63C,EAAad,EAAY/2C,GAIzB83C,EAAiBD,IAAeD,KAAkB5C,EAAS6C,EAAY,MAAQA,EAAW10C,MAAM,GAAI,KAAOy0C,GAU3GE,GAAkB9C,EAAS4C,EAAc,MAAQA,EAAaz0C,MAAM,GAAI,KAAO00C,IACjFC,GAAiB,EACjBD,GAAc,KAGZC,GAIEH,EAAM,GAAK33C,EAAI,IACb23C,EAAM,GACRl2C,GAAO,KAAKiR,OAAO0iC,EAAM,OAAO1iC,OAAO4iC,GACvCuB,GAAU,GACDc,EAAM,IACfl2C,GAAO,OAAOiR,OAAOqkC,EAAY/2C,EAAI,IACrCy3C,KAGFh2C,GAAO,OAAOiR,OAAOqkC,EAAY/2C,EAAI,IACrCy3C,KAIFb,EAAU52C,EAGVyB,GAAO,KAAKiR,OAAO2iC,EAAO,KAAK3iC,OAAO4iC,EAAO,KAAK5iC,OAAOmlC,GACzDlB,GAAS,KAAKjkC,OAAOie,EAAK,KAAKje,OAAO4iC,EAAO,KAAK5iC,OAAOklC,GACzDH,GAAgB,IAIhBh2C,GAAOk1C,EACPA,EAAQ,GAGI,IAARgB,GAAmB,IAAN33C,IACfyB,GAAO,OAAOiR,OAAOmlC,GACrBJ,KAGN,CAGA,GAAIA,EAAe,IAAMz3C,EAAIu3C,EAAW,EACtC,MAAO,GAAG7kC,OAAOwY,GAAKxY,OAAOglC,EAAY,MAAMhlC,OAAOjR,EAAK,MAAMiR,OAAO0iC,EAAM,OAAO1iC,OAAO4iC,GAAO5iC,OAAOikC,EAAO,MAAQ,GAAGjkC,OAAO0iC,EAAM,OAAO1iC,OAAO4iC,EAE3J,CAEA,MAAO,GAAG5iC,OAAOwY,GAAKxY,OAAOmkC,EAAUa,EAAa,GAAI,MAAMhlC,OAAOjR,GAAKiR,OAAOikC,GAAOjkC,OAAO+b,GAAK/b,OAAOukC,EAC7G,CAoD4Fc,CAAc7K,EAAQF,EAAUI,UAC/G,GAAiB,uBAAbA,GAAkD,mBAAbA,EAA+B,CAG7E,IAAIxpB,EAAO2xB,EAAkBnI,GACzB3rC,EAAMm0C,EAAa1I,GAAQ7hC,MAAM,MAQrC,GANiB,mBAAb+hC,GAAqD,WAApBiB,EAAQnB,IAAmC,OAAXA,IACnEtpB,EAAO2xB,EAAkBE,sBAKvBh0C,EAAIxB,OAAS,GAGf,IAFAwB,EAAI,IAAM,GAAGiR,OAAO0iC,EAAM,OAAO1iC,OAAO4iC,GAEjC7zC,EAAIxB,OAAS,IAClBwB,EAAI4X,MAMN43B,EADiB,IAAfxvC,EAAIxB,OACE2zC,EAA2B90C,KAAMu1C,EAAgBlH,GAAgBzrC,KAAK5C,KAAM,GAAG4T,OAAOkR,EAAM,KAAKlR,OAAOjR,EAAI,MAE5GmyC,EAA2B90C,KAAMu1C,EAAgBlH,GAAgBzrC,KAAK5C,KAAM,GAAG4T,OAAOkR,EAAM,QAAQlR,OAAOjR,EAAIiO,KAAK,MAAO,OAEvI,KAAO,CACL,IAAIsoC,EAAOpC,EAAa1I,GAEpByJ,EAAQ,GACRsB,EAAiB1C,EAAkBnI,GAEtB,iBAAbA,GAA4C,aAAbA,GACjC4K,EAAO,GAAGtlC,OAAO6iC,EAAkBnI,GAAW,QAAQ16B,OAAOslC,IAEpD/3C,OAAS,OAChB+3C,EAAO,GAAGtlC,OAAOslC,EAAK70C,MAAM,EAAG,MAAO,SAGxCwzC,EAAQ,GAAGjkC,OAAOkjC,EAAa5I,IAE3BgL,EAAK/3C,OAAS,MAChB+3C,EAAO,GAAGtlC,OAAOslC,EAAK70C,MAAM,EAAG,KAAM,QAGnCwzC,EAAM12C,OAAS,MACjB02C,EAAQ,GAAGjkC,OAAOikC,EAAMxzC,MAAM,EAAG,KAAM,QAGxB,cAAbiqC,GAAyC,UAAbA,EAC9B4K,EAAO,GAAGtlC,OAAOulC,EAAgB,QAAQvlC,OAAOslC,EAAM,wBAEtDrB,EAAQ,IAAIjkC,OAAO06B,EAAU,KAAK16B,OAAOikC,IAI7C1F,EAAQ2C,EAA2B90C,KAAMu1C,EAAgBlH,GAAgBzrC,KAAK5C,KAAM,GAAG4T,OAAOslC,GAAMtlC,OAAOikC,IAC7G,CAyBF,OAtBA33C,MAAMu3C,gBAAkBjlC,EACxB2/B,EAAMhB,kBAAoB9uC,EAC1B2H,OAAOg/B,eAAe+L,EAAuB5C,GAAQ,OAAQ,CAC3DvpC,MAAO,iCACPqgC,YAAY,EACZwL,UAAU,EACVD,cAAc,IAEhBrC,EAAMtkC,KAAO,gBACbskC,EAAM/D,OAASA,EACf+D,EAAMjE,SAAWA,EACjBiE,EAAM7D,SAAWA,EAEbpuC,MAAM4sB,mBAER5sB,MAAM4sB,kBAAkBioB,EAAuB5C,GAAQf,GAIzDe,EAAMvlB,MAENulB,EAAMvuC,KAAO,iBACNkxC,EAA2B3C,EACpC,CAhdF,IAAsBpG,EAAaqN,EAqejC,OA/dF,SAAmBC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAI3Q,UAAU,sDAAyD0Q,EAAS15C,UAAYqK,OAAOC,OAAOqvC,GAAcA,EAAW35C,UAAW,CAAEuK,YAAa,CAAEtB,MAAOywC,EAAU5E,UAAU,EAAMD,cAAc,KAAe8E,GAAY9D,EAAgB6D,EAAUC,EAAa,CAuU9XC,CAAUlL,EAAgBmJ,GA7UNzL,EAkdPsC,EAldoB+K,EAkdJ,CAAC,CAC5Bt4C,IAAK,WACL8H,MAAO,WACL,MAAO,GAAGgL,OAAO5T,KAAK4D,KAAM,MAAMgQ,OAAO5T,KAAK6N,KAAM,OAAO+F,OAAO5T,KAAKqC,QACzE,GACC,CACDvB,IAAKgzB,EAAQjgB,OACbjL,MAAO,SAAe4wC,EAAc3U,GAKlC,OAAO/Q,EAAQ9zB,KAterB,SAAuB20C,GAAU,IAAK,IAAIzzC,EAAI,EAAGA,EAAIsE,UAAUrE,OAAQD,IAAK,CAAE,IAAIoN,EAAyB,MAAhB9I,UAAUtE,GAAasE,UAAUtE,GAAK,CAAC,EAAOu4C,EAAUzvC,OAAOoH,KAAK9C,GAAqD,mBAAjCtE,OAAO0vC,wBAAwCD,EAAUA,EAAQ7lC,OAAO5J,OAAO0vC,sBAAsBprC,GAAQgS,QAAO,SAAUq5B,GAAO,OAAO3vC,OAAOoiC,yBAAyB99B,EAAQqrC,GAAK1Q,UAAY,MAAOwQ,EAAQrmC,SAAQ,SAAUtS,GAAOyzC,EAAgBI,EAAQ7zC,EAAKwN,EAAOxN,GAAO,GAAI,CAAE,OAAO6zC,CAAQ,CAserciF,CAAc,CAAC,EAAG/U,EAAK,CAC1CmS,eAAe,EACfC,MAAO,IAEX,IAle8DmC,GAAY1E,EAAkB3I,EAAYpsC,UAAWy5C,GAqe9G/K,CACT,CA1JA,CA0JE4G,EAAiB/0C,QAEnBV,EAAOC,QAAU4uC,gCCtejB,SAASkB,EAAQz7B,GAAwT,OAAtOy7B,EAArD,mBAAXC,QAAoD,iBAApBA,OAAOC,SAAmC,SAAiB37B,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAX07B,QAAyB17B,EAAI5J,cAAgBslC,QAAU17B,IAAQ07B,OAAO7vC,UAAY,gBAAkBmU,CAAK,EAAYy7B,EAAQz7B,EAAM,CAQ9V,SAASyhC,EAAgB7gC,GAAwJ,OAAnJ6gC,EAAkBvrC,OAAO+rC,eAAiB/rC,OAAOisC,eAAiB,SAAyBvhC,GAAK,OAAOA,EAAEshC,WAAahsC,OAAOisC,eAAevhC,EAAI,EAAU6gC,EAAgB7gC,EAAI,CAI5M,SAAS8gC,EAAgB9gC,EAAG3L,GAA+G,OAA1GysC,EAAkBxrC,OAAO+rC,gBAAkB,SAAyBrhC,EAAG3L,GAAsB,OAAjB2L,EAAEshC,UAAYjtC,EAAU2L,CAAG,EAAU8gC,EAAgB9gC,EAAG3L,EAAI,CAEzK,IAEIse,EACA9nB,EAHAswC,EAAQ,CAAC,EAKb,SAASgK,EAAgBhsC,EAAMxL,EAASijB,GACjCA,IACHA,EAAOplB,OAWT,IAAI45C,EAEJ,SAAUC,GAGR,SAASD,EAAUE,EAAMC,EAAMC,GAC7B,IAAI/H,EAMJ,OA1CN,SAAyBC,EAAUrG,GAAe,KAAMqG,aAAoBrG,GAAgB,MAAM,IAAIpD,UAAU,oCAAwC,CAsClJ0J,CAAgBryC,KAAM85C,GAEtB3H,EAtCN,SAAoCnwC,EAAMY,GAAQ,OAAIA,GAA2B,WAAlB2sC,EAAQ3sC,IAAsC,mBAATA,EAEpG,SAAgCZ,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIgzC,eAAe,6DAAgE,OAAOhzC,CAAM,CAFnB+yC,CAAuB/yC,GAAtCY,CAA6C,CAsClKkyC,CAA2B90C,KAAMu1C,EAAgBuE,GAAWl3C,KAAK5C,KAlB7E,SAAoBg6C,EAAMC,EAAMC,GAC9B,MAAuB,iBAAZ73C,EACFA,EAEAA,EAAQ23C,EAAMC,EAAMC,EAE/B,CAYmFC,CAAWH,EAAMC,EAAMC,KACtG/H,EAAMtkC,KAAOA,EACNskC,CACT,CAEA,OArCJ,SAAmBkH,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAI3Q,UAAU,sDAAyD0Q,EAAS15C,UAAYqK,OAAOC,OAAOqvC,GAAcA,EAAW35C,UAAW,CAAEuK,YAAa,CAAEtB,MAAOywC,EAAU5E,UAAU,EAAMD,cAAc,KAAe8E,GAAY9D,EAAgB6D,EAAUC,EAAa,CAyB5XC,CAAUO,EAAWC,GAYdD,CACT,CAdA,CAcEx0B,GAEFuqB,EAAMhiC,GAAQisC,CAChB,CAGA,SAASt6B,EAAM0uB,EAAUkM,GACvB,GAAIp5C,MAAMC,QAAQitC,GAAW,CAC3B,IAAIn6B,EAAMm6B,EAAS/sC,OAKnB,OAJA+sC,EAAWA,EAAS56B,KAAI,SAAUpS,GAChC,OAAOitB,OAAOjtB,EAChB,IAEI6S,EAAM,EACD,UAAUH,OAAOwmC,EAAO,KAAKxmC,OAAOs6B,EAAS7pC,MAAM,EAAG0P,EAAM,GAAGnD,KAAK,MAAO,SAAWs9B,EAASn6B,EAAM,GAC3F,IAARA,EACF,UAAUH,OAAOwmC,EAAO,KAAKxmC,OAAOs6B,EAAS,GAAI,QAAQt6B,OAAOs6B,EAAS,IAEzE,MAAMt6B,OAAOwmC,EAAO,KAAKxmC,OAAOs6B,EAAS,GAEpD,CACE,MAAO,MAAMt6B,OAAOwmC,EAAO,KAAKxmC,OAAOua,OAAO+f,GAElD,CA6BA2L,EAAgB,yBAA0B,qCAAsClR,WAChFkR,EAAgB,wBAAwB,SAAUj2C,EAAMsqC,EAAUE,GAIhE,IAAIiM,EA/BmBlE,EAwCnB/pB,EA1BYlhB,EAAa8e,EA4B7B,QAdeppB,IAAXymB,IAAsBA,EAAS,EAAQ,QAC3CA,EAAuB,iBAATzjB,EAAmB,2BAIT,iBAAbsqC,IAjCYiI,EAiCkC,OAAVjI,EAhCpCoM,OAAyB,EAAUnE,EAAOh1C,UAAYg1C,IAiC/DkE,EAAa,cACbnM,EAAWA,EAASn7B,QAAQ,QAAS,KAErCsnC,EAAa,UAhCjB,SAAkBnvC,EAAKirC,EAAQC,GAK7B,YAJiBx1C,IAAbw1C,GAA0BA,EAAWlrC,EAAI/J,UAC3Ci1C,EAAWlrC,EAAI/J,QAGV+J,EAAImrC,UAAUD,EAAWD,EAAOh1C,OAAQi1C,KAAcD,CAC/D,CA+BMD,CAAStyC,EAAM,aAEjBwoB,EAAM,OAAOxY,OAAOhQ,EAAM,KAAKgQ,OAAOymC,EAAY,KAAKzmC,OAAO4L,EAAM0uB,EAAU,aACzE,CACL,IAAI5lC,GA/Be,iBAAV0hB,IACTA,EAAQ,GAGNA,EA2BwB,IA3BT7oB,QALH+J,EAgCMtH,GA3BUzC,SAGS,IAAhC+J,EAAIoT,QAwBe,IAxBC0L,GAwBmB,WAAb,YACjCoC,EAAM,QAASxY,OAAOhQ,EAAM,MAAOgQ,OAAOtL,EAAM,KAAKsL,OAAOymC,EAAY,KAAKzmC,OAAO4L,EAAM0uB,EAAU,QACtG,CAIA,OADA9hB,EAAO,mBAAmBxY,OAAO27B,EAAQnB,GAE3C,GAAGzF,WACHkR,EAAgB,yBAAyB,SAAUj2C,EAAMgF,GACvD,IAAI2xC,EAAS/0C,UAAUrE,OAAS,QAAsBP,IAAjB4E,UAAU,GAAmBA,UAAU,GAAK,kBACpE5E,IAATrB,IAAoBA,EAAO,EAAQ,QACvC,IAAIi7C,EAAYj7C,EAAKu0B,QAAQlrB,GAM7B,OAJI4xC,EAAUr5C,OAAS,MACrBq5C,EAAY,GAAG5mC,OAAO4mC,EAAUn2C,MAAM,EAAG,KAAM,QAG1C,iBAAiBuP,OAAOhQ,EAAM,MAAMgQ,OAAO2mC,EAAQ,eAAe3mC,OAAO4mC,EAClF,GAAG7R,UAAW8R,YACdZ,EAAgB,4BAA4B,SAAUzwB,EAAOxlB,EAAMgF,GACjE,IAAIN,EAQJ,OALEA,EADEM,GAASA,EAAMsB,aAAetB,EAAMsB,YAAYtG,KAC3C,eAAegQ,OAAOhL,EAAMsB,YAAYtG,MAExC,QAAQgQ,OAAO27B,EAAQ3mC,IAGzB,YAAYgL,OAAOwV,EAAO,8BAA+BxV,OAAOhQ,EAAM,KAAQ,qBAAqBgQ,OAAOtL,EAAM,IACzH,GAAGqgC,WACHkR,EAAgB,oBAAoB,WAClC,IAAK,IAAI/Q,EAAOtjC,UAAUrE,OAAQ0mB,EAAO,IAAI7mB,MAAM8nC,GAAOuI,EAAO,EAAGA,EAAOvI,EAAMuI,IAC/ExpB,EAAKwpB,GAAQ7rC,UAAU6rC,QAGVzwC,IAAXymB,IAAsBA,EAAS,EAAQ,QAC3CA,EAAOQ,EAAK1mB,OAAS,EAAG,0CACxB,IAAIirB,EAAM,OACNrY,EAAM8T,EAAK1mB,OAKf,OAJA0mB,EAAOA,EAAKvU,KAAI,SAAU+D,GACxB,MAAO,IAAKzD,OAAOyD,EAAG,IACxB,IAEQtD,GACN,KAAK,EACHqY,GAAO,GAAGxY,OAAOiU,EAAK,GAAI,aAC1B,MAEF,KAAK,EACHuE,GAAO,GAAGxY,OAAOiU,EAAK,GAAI,SAASjU,OAAOiU,EAAK,GAAI,cACnD,MAEF,QACEuE,GAAOvE,EAAKxjB,MAAM,EAAG0P,EAAM,GAAGnD,KAAK,MACnCwb,GAAO,SAASxY,OAAOiU,EAAK9T,EAAM,GAAI,cAI1C,MAAO,GAAGH,OAAOwY,EAAK,qBACxB,GAAGuc,WACHnpC,EAAOC,QAAQowC,MAAQA,gCC9LvB,SAAS6K,EAAe/sC,EAAKzM,GAAK,OAMlC,SAAyByM,GAAO,GAAI3M,MAAMC,QAAQ0M,GAAM,OAAOA,CAAK,CAN3BgtC,CAAgBhtC,IAIzD,SAA+BA,EAAKzM,GAAK,IAAI05C,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKn6C,EAAW,IAAM,IAAK,IAAiCo6C,EAA7BC,EAAKttC,EAAI6hC,OAAOC,cAAmBoL,GAAMG,EAAKC,EAAGtT,QAAQuT,QAAoBN,EAAKnnC,KAAKunC,EAAGpyC,QAAY1H,GAAK05C,EAAKz5C,SAAWD,GAA3D25C,GAAK,GAA0M,CAAtI,MAAOpuB,GAAOquB,GAAK,EAAMC,EAAKtuB,CAAK,CAAE,QAAU,IAAWouB,GAAsB,MAAhBI,EAAW,QAAWA,EAAW,QAAmC,CAA5B,QAAU,GAAIH,EAAI,MAAMC,CAAI,CAAE,CAAE,OAAOH,CAAM,CAJvVO,CAAsBxtC,EAAKzM,IAE5F,WAA8B,MAAM,IAAIynC,UAAU,uDAAyD,CAFTyS,EAAoB,CAQtH,SAAS7L,EAAQz7B,GAAwT,OAAtOy7B,EAArD,mBAAXC,QAAoD,iBAApBA,OAAOC,SAAmC,SAAiB37B,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAX07B,QAAyB17B,EAAI5J,cAAgBslC,QAAU17B,IAAQ07B,OAAO7vC,UAAY,gBAAkBmU,CAAK,EAAYy7B,EAAQz7B,EAAM,CAE9V,IAAIunC,OAAqCz6C,IAAf,KAAK06C,MAE3BC,EAAe,SAAsBnG,GACvC,IAAIrgC,EAAQ,GAIZ,OAHAqgC,EAAIhiC,SAAQ,SAAUxK,GACpB,OAAOmM,EAAMtB,KAAK7K,EACpB,IACOmM,CACT,EAEIymC,EAAe,SAAsBloC,GACvC,IAAIyB,EAAQ,GAIZ,OAHAzB,EAAIF,SAAQ,SAAUxK,EAAO9H,GAC3B,OAAOiU,EAAMtB,KAAK,CAAC3S,EAAK8H,GAC1B,IACOmM,CACT,EAEIy7B,EAAWxmC,OAAOymC,GAAKzmC,OAAOymC,GAAK,EAAQ,OAC3CgL,EAA8BzxC,OAAO0vC,sBAAwB1vC,OAAO0vC,sBAAwB,WAC9F,MAAO,EACT,EACIgC,EAAcC,OAAO9M,MAAQ8M,OAAO9M,MAAQ,EAAQ,OAExD,SAAS+M,EAAYC,GACnB,OAAOA,EAAEj5C,KAAK6uC,KAAKoK,EACrB,CAEA,IAAIlrC,EAAiBirC,EAAY5xC,OAAOrK,UAAUgR,gBAC9CmrC,EAAuBF,EAAY5xC,OAAOrK,UAAUm8C,sBACpDC,EAAiBH,EAAY5xC,OAAOrK,UAAU4uB,UAE9C4hB,EAAiB,eACjB6L,EAAmB7L,EAAe6L,iBAClCC,EAAoB9L,EAAe8L,kBACnCC,EAAS/L,EAAe+L,OACxBC,EAAQhM,EAAegM,MACvB9L,EAAWF,EAAeE,SAC1B+L,EAAQjM,EAAeiM,MACvBC,EAAgBlM,EAAekM,cAC/BC,EAAmBnM,EAAemM,iBAClCC,EAAiBpM,EAAeoM,eAChCC,EAAiBrM,EAAeqM,eAChCC,EAAkBtM,EAAesM,gBACjCC,EAAiBvM,EAAeuM,eAChCC,EAAiBxM,EAAewM,eAChCC,EAAiBzM,EAAeyM,eAChCC,EAAiB1M,EAAe0M,eAEpC,SAASC,EAAWh8C,GAClB,GAAmB,IAAfA,EAAIK,QAAgBL,EAAIK,OAAS,GAAI,OAAO,EAEhD,IAAK,IAAID,EAAI,EAAGA,EAAIJ,EAAIK,OAAQD,IAAK,CACnC,IAAI2M,EAAO/M,EAAImT,WAAW/S,GAC1B,GAAI2M,EAAO,IAAMA,EAAO,GAAI,OAAO,CACrC,CAGA,OAAsB,KAAf/M,EAAIK,QAAiBL,GAAO2Z,KAAKiZ,IAAI,EAAG,GACjD,CAEA,SAASqpB,EAAyBn0C,GAChC,OAAOoB,OAAOoH,KAAKxI,GAAO0X,OAAOw8B,GAAYlpC,OAAO6nC,EAA4B7yC,GAAO0X,OAAOtW,OAAOrK,UAAUm8C,qBAAqBrK,KAAK7oC,IAC3I,CAWA,SAASo0C,EAAQ3lC,EAAGC,GAClB,GAAID,IAAMC,EACR,OAAO,EAMT,IAHA,IAAI6lB,EAAI9lB,EAAElW,OACNi8B,EAAI9lB,EAAEnW,OAEDD,EAAI,EAAG6S,EAAM0G,KAAKwU,IAAIkO,EAAGC,GAAIl8B,EAAI6S,IAAO7S,EAC/C,GAAImW,EAAEnW,KAAOoW,EAAEpW,GAAI,CACjBi8B,EAAI9lB,EAAEnW,GACNk8B,EAAI9lB,EAAEpW,GACN,KACF,CAGF,OAAIi8B,EAAIC,GACE,EAGNA,EAAID,EACC,EAGF,CACT,CA8EA,SAAS8f,EAAeC,EAAMC,EAAMhK,EAAQiK,GAE1C,GAAIF,IAASC,EACX,OAAa,IAATD,IACG/J,GAAS3C,EAAS0M,EAAMC,GAIjC,GAAIhK,EAAQ,CACV,GAAsB,WAAlB5D,EAAQ2N,GACV,MAAuB,iBAATA,GAAqBxB,EAAYwB,IAASxB,EAAYyB,GAGtE,GAAsB,WAAlB5N,EAAQ4N,IAA+B,OAATD,GAA0B,OAATC,EACjD,OAAO,EAGT,GAAInzC,OAAOisC,eAAeiH,KAAUlzC,OAAOisC,eAAekH,GACxD,OAAO,CAEX,KAAO,CACL,GAAa,OAATD,GAAmC,WAAlB3N,EAAQ2N,GAC3B,OAAa,OAATC,GAAmC,WAAlB5N,EAAQ4N,KAEpBD,GAAQC,EAMnB,GAAa,OAATA,GAAmC,WAAlB5N,EAAQ4N,GAC3B,OAAO,CAEX,CAEA,IA7E4BE,EAAMC,EA1BTjmC,EAAGC,EAuGxBimC,EAAUxB,EAAemB,GAG7B,GAAIK,IAFUxB,EAAeoB,GAG3B,OAAO,EAGT,GAAIn8C,MAAMC,QAAQi8C,GAAO,CAEvB,GAAIA,EAAK/7C,SAAWg8C,EAAKh8C,OACvB,OAAO,EAGT,IAAIq8C,EAAQT,EAAyBG,GACjCO,EAAQV,EAAyBI,GAErC,OAAIK,EAAMr8C,SAAWs8C,EAAMt8C,QAIpBu8C,EAASR,EAAMC,EAAMhK,EAAQiK,EA/HzB,EA+H0CI,EACvD,CAKA,GAAgB,oBAAZD,KAEGpB,EAAMe,IAASf,EAAMgB,KAAUf,EAAMc,IAASd,EAAMe,IACvD,OAAO,EAIX,GAAIjB,EAAOgB,IACT,IAAKhB,EAAOiB,IAAShuB,KAAKxvB,UAAUg+C,QAAQ/6C,KAAKs6C,KAAU/tB,KAAKxvB,UAAUg+C,QAAQ/6C,KAAKu6C,GACrF,OAAO,OAEJ,GAAI9M,EAAS6M,IAClB,IAAK7M,EAAS8M,KA7IS9lC,EA6ImB6lC,EA7IhB5lC,EA6IsB6lC,IA5I3C9B,EAAsBhkC,EAAE/I,SAAWgJ,EAAEhJ,QAAU+I,EAAEikC,QAAUhkC,EAAEgkC,MAAQn4C,OAAOxD,UAAU4uB,SAAS3rB,KAAKyU,KAAOlU,OAAOxD,UAAU4uB,SAAS3rB,KAAK0U,KA6I7I,OAAO,OAEJ,GAAI+kC,EAAca,IAASA,aAAgBh9C,OAGhD,GAAIg9C,EAAK76C,UAAY86C,EAAK96C,SAAW66C,EAAKt5C,OAASu5C,EAAKv5C,KACtD,OAAO,MAEJ,IAAIq4C,EAAkBiB,GAAO,CAClC,GAAK/J,IAAWyJ,EAAeM,KAASL,EAAeK,IAIhD,IAzIX,SAA+B7lC,EAAGC,GAChC,OAAID,EAAEkP,aAAejP,EAAEiP,YAIwG,IAAxHy2B,EAAQ,IAAIY,WAAWvmC,EAAEwW,OAAQxW,EAAEwmC,WAAYxmC,EAAEkP,YAAa,IAAIq3B,WAAWtmC,EAAEuW,OAAQvW,EAAEumC,WAAYvmC,EAAEiP,YAChH,CAmIgBu3B,CAAsBZ,EAAMC,GACtC,OAAO,OAJP,IApJN,SAA+B9lC,EAAGC,GAChC,GAAID,EAAEkP,aAAejP,EAAEiP,WACrB,OAAO,EAGT,IAAK,IAAIH,EAAS,EAAGA,EAAS/O,EAAEkP,WAAYH,IAC1C,GAAI/O,EAAE+O,KAAY9O,EAAE8O,GAClB,OAAO,EAIX,OAAO,CACT,CAwIW23B,CAAsBb,EAAMC,GAC/B,OAAO,EASX,IAAIa,EAAQjB,EAAyBG,GAEjCe,EAASlB,EAAyBI,GAEtC,OAAIa,EAAM78C,SAAW88C,EAAO98C,QAIrBu8C,EAASR,EAAMC,EAAMhK,EAAQiK,EA/KtB,EA+K0CY,EAC1D,CAAO,GAAI5B,EAAMc,GACf,SAAKd,EAAMe,IAASD,EAAK7sB,OAAS8sB,EAAK9sB,OAIhCqtB,EAASR,EAAMC,EAAMhK,EAAQiK,EAnL3B,GAoLJ,GAAIjB,EAAMe,GACf,SAAKf,EAAMgB,IAASD,EAAK7sB,OAAS8sB,EAAK9sB,OAIhCqtB,EAASR,EAAMC,EAAMhK,EAAQiK,EAxL3B,GAyLJ,GAAIpB,EAAiBkB,IAC1B,GA9JgCI,EA8JAH,GA9JNE,EA8JAH,GA7JhB32B,aAAe+2B,EAAK/2B,YAAsE,IAAxDy2B,EAAQ,IAAIY,WAAWP,GAAO,IAAIO,WAAWN,IA8JvF,OAAO,OAEJ,GAAIhB,EAAiBY,KA7J9B,SAA+BA,EAAMC,GACnC,OAAIZ,EAAeW,GACVX,EAAeY,IAAS3M,EAASmL,OAAOh8C,UAAUu+C,QAAQt7C,KAAKs6C,GAAOvB,OAAOh8C,UAAUu+C,QAAQt7C,KAAKu6C,IAGzGX,EAAeU,GACVV,EAAeW,IAAShvB,OAAOxuB,UAAUu+C,QAAQt7C,KAAKs6C,KAAU/uB,OAAOxuB,UAAUu+C,QAAQt7C,KAAKu6C,GAGnGV,EAAgBS,GACXT,EAAgBU,IAASvT,QAAQjqC,UAAUu+C,QAAQt7C,KAAKs6C,KAAUtT,QAAQjqC,UAAUu+C,QAAQt7C,KAAKu6C,GAGtGT,EAAeQ,GACVR,EAAeS,IAASgB,OAAOx+C,UAAUu+C,QAAQt7C,KAAKs6C,KAAUiB,OAAOx+C,UAAUu+C,QAAQt7C,KAAKu6C,GAGhGR,EAAeQ,IAAS3N,OAAO7vC,UAAUu+C,QAAQt7C,KAAKs6C,KAAU1N,OAAO7vC,UAAUu+C,QAAQt7C,KAAKu6C,EACvG,CA2IwCiB,CAAsBlB,EAAMC,GAChE,OAAO,CACT,CAEA,OAAOO,EAASR,EAAMC,EAAMhK,EAAQiK,EApMpB,EAqMlB,CAEA,SAASiB,EAAer1B,EAAK5X,GAC3B,OAAOA,EAAKkP,QAAO,SAAU9M,GAC3B,OAAOsoC,EAAqB9yB,EAAKxV,EACnC,GACF,CAEA,SAASkqC,EAASR,EAAMC,EAAMhK,EAAQiK,EAAOkB,EAAeC,GAQ1D,GAAyB,IAArB/4C,UAAUrE,OAAc,CAC1Bo9C,EAAQv0C,OAAOoH,KAAK8rC,GACpB,IAAIsB,EAAQx0C,OAAOoH,KAAK+rC,GAExB,GAAIoB,EAAMp9C,SAAWq9C,EAAMr9C,OACzB,OAAO,CAEX,CAKA,IAFA,IAAID,EAAI,EAEDA,EAAIq9C,EAAMp9C,OAAQD,IACvB,IAAKyP,EAAewsC,EAAMoB,EAAMr9C,IAC9B,OAAO,EAIX,GAAIiyC,GAA+B,IAArB3tC,UAAUrE,OAAc,CACpC,IAAIs9C,EAAchD,EAA4ByB,GAE9C,GAA2B,IAAvBuB,EAAYt9C,OAAc,CAC5B,IAAIyR,EAAQ,EAEZ,IAAK1R,EAAI,EAAGA,EAAIu9C,EAAYt9C,OAAQD,IAAK,CACvC,IAAIJ,EAAM29C,EAAYv9C,GAEtB,GAAI46C,EAAqBoB,EAAMp8C,GAAM,CACnC,IAAKg7C,EAAqBqB,EAAMr8C,GAC9B,OAAO,EAGTy9C,EAAM9qC,KAAK3S,GACX8R,GACF,MAAO,GAAIkpC,EAAqBqB,EAAMr8C,GACpC,OAAO,CAEX,CAEA,IAAI49C,EAAcjD,EAA4B0B,GAE9C,GAAIsB,EAAYt9C,SAAWu9C,EAAYv9C,QAAUk9C,EAAelB,EAAMuB,GAAav9C,SAAWyR,EAC5F,OAAO,CAEX,KAAO,CACL,IAAI+rC,EAAelD,EAA4B0B,GAE/C,GAA4B,IAAxBwB,EAAax9C,QAA8D,IAA9Ck9C,EAAelB,EAAMwB,GAAcx9C,OAClE,OAAO,CAEX,CACF,CAEA,GAAqB,IAAjBo9C,EAAMp9C,SA1QM,IA0QWm9C,GAzQd,IAyQ+CA,GAA8C,IAAhBpB,EAAK/7C,QAA8B,IAAd+7C,EAAK7sB,MAClH,OAAO,EAIT,QAAczvB,IAAVw8C,EACFA,EAAQ,CACNF,KAAM,IAAItM,IACVuM,KAAM,IAAIvM,IACVgO,SAAU,OAEP,CAIL,IAAIC,EAAYzB,EAAMF,KAAK14C,IAAI04C,GAE/B,QAAkBt8C,IAAdi+C,EAAyB,CAC3B,IAAIC,EAAY1B,EAAMD,KAAK34C,IAAI24C,GAE/B,QAAkBv8C,IAAdk+C,EACF,OAAOD,IAAcC,CAEzB,CAEA1B,EAAMwB,UACR,CAEAxB,EAAMF,KAAK9H,IAAI8H,EAAME,EAAMwB,UAC3BxB,EAAMD,KAAK/H,IAAI+H,EAAMC,EAAMwB,UAC3B,IAAIG,EAAQC,EAAS9B,EAAMC,EAAMhK,EAAQoL,EAAOnB,EAAOkB,GAGvD,OAFAlB,EAAMF,KAAK+B,OAAO/B,GAClBE,EAAMD,KAAK8B,OAAO9B,GACX4B,CACT,CAEA,SAASG,EAAmB9J,EAAK8H,EAAM/J,EAAQgM,GAI7C,IAFA,IAAIC,EAAY7D,EAAanG,GAEpBl0C,EAAI,EAAGA,EAAIk+C,EAAUj+C,OAAQD,IAAK,CACzC,IAAIi8C,EAAOiC,EAAUl+C,GAErB,GAAI+7C,EAAeC,EAAMC,EAAMhK,EAAQgM,GAGrC,OADA/J,EAAI6J,OAAO9B,IACJ,CAEX,CAEA,OAAO,CACT,CAMA,SAASkC,EAA4BC,GACnC,OAAQ/P,EAAQ+P,IACd,IAAK,YACH,OAAO,KAET,IAAK,SAEH,OAEF,IAAK,SACH,OAAO,EAET,IAAK,SACHA,GAAQA,EAKV,IAAK,SACH,GAAI5D,EAAY4D,GACd,OAAO,EAKb,OAAO,CACT,CAEA,SAASC,EAAsBloC,EAAGC,EAAGgoC,GACnC,IAAIE,EAAWH,EAA4BC,GAC3C,OAAgB,MAAZE,EAAyBA,EACtBloC,EAAE69B,IAAIqK,KAAcnoC,EAAE89B,IAAIqK,EACnC,CAEA,SAASC,EAAsBpoC,EAAGC,EAAGgoC,EAAM3sC,EAAMwsC,GAC/C,IAAIK,EAAWH,EAA4BC,GAE3C,GAAgB,MAAZE,EACF,OAAOA,EAGT,IAAIE,EAAOpoC,EAAE9S,IAAIg7C,GAEjB,aAAa5+C,IAAT8+C,IAAuBpoC,EAAE69B,IAAIqK,KAAcvC,EAAetqC,EAAM+sC,GAAM,EAAOP,MAIzE9nC,EAAE89B,IAAIqK,IAAavC,EAAetqC,EAAM+sC,GAAM,EAAOP,EAC/D,CA0DA,SAASQ,EAAiBvK,EAAK9hC,EAAKssC,EAAMC,EAAO1M,EAAQgM,GAMvD,IAFA,IAAIC,EAAY7D,EAAanG,GAEpBl0C,EAAI,EAAGA,EAAIk+C,EAAUj+C,OAAQD,IAAK,CACzC,IAAI4+C,EAAOV,EAAUl+C,GAErB,GAAI+7C,EAAe2C,EAAME,EAAM3M,EAAQgM,IAASlC,EAAe4C,EAAOvsC,EAAI9O,IAAIs7C,GAAO3M,EAAQgM,GAE3F,OADA/J,EAAI6J,OAAOa,IACJ,CAEX,CAEA,OAAO,CACT,CA0DA,SAASd,EAAS3nC,EAAGC,EAAG67B,EAAQ/hC,EAAMgsC,EAAOkB,GAG3C,IAAIp9C,EAAI,EAER,GA1fW,IA0fPo9C,GACF,IAxIJ,SAAkBjnC,EAAGC,EAAG67B,EAAQgM,GAM9B,IAHA,IAAI/J,EAAM,KACN2K,EAAUxE,EAAalkC,GAElBnW,EAAI,EAAGA,EAAI6+C,EAAQ5+C,OAAQD,IAAK,CACvC,IAAI8nB,EAAM+2B,EAAQ7+C,GAIlB,GAAqB,WAAjBquC,EAAQvmB,IAA6B,OAARA,EACnB,OAARosB,IACFA,EAAM,IAAInK,KAOZmK,EAAIxvC,IAAIojB,QACH,IAAK1R,EAAE69B,IAAInsB,GAAM,CACtB,GAAImqB,EAAQ,OAAO,EAEnB,IAAKoM,EAAsBloC,EAAGC,EAAG0R,GAC/B,OAAO,EAGG,OAARosB,IACFA,EAAM,IAAInK,KAGZmK,EAAIxvC,IAAIojB,EACV,CACF,CAEA,GAAY,OAARosB,EAAc,CAGhB,IAFA,IAAI4K,EAAUzE,EAAajkC,GAElB2jC,EAAK,EAAGA,EAAK+E,EAAQ7+C,OAAQ85C,IAAM,CAC1C,IAAIgF,EAAOD,EAAQ/E,GAGnB,GAAsB,WAAlB1L,EAAQ0Q,IAA+B,OAATA,GAChC,IAAKf,EAAmB9J,EAAK6K,EAAM9M,EAAQgM,GAAO,OAAO,OACpD,IAAKhM,IAAW97B,EAAE89B,IAAI8K,KAAUf,EAAmB9J,EAAK6K,EAAM9M,EAAQgM,GAC3E,OAAO,CAEX,CAEA,OAAoB,IAAb/J,EAAI/kB,IACb,CAEA,OAAO,CACT,CAkFS6vB,CAAS7oC,EAAGC,EAAG67B,EAAQiK,GAC1B,OAAO,OAEJ,GA7fI,IA6fAkB,GACT,IAlEJ,SAAkBjnC,EAAGC,EAAG67B,EAAQgM,GAI9B,IAHA,IAAI/J,EAAM,KACN+K,EAAW3E,EAAankC,GAEnBnW,EAAI,EAAGA,EAAIi/C,EAASh/C,OAAQD,IAAK,CACxC,IAAIk/C,EAAc1F,EAAeyF,EAASj/C,GAAI,GAC1CJ,EAAMs/C,EAAY,GAClBP,EAAQO,EAAY,GAExB,GAAqB,WAAjB7Q,EAAQzuC,IAA6B,OAARA,EACnB,OAARs0C,IACFA,EAAM,IAAInK,KAGZmK,EAAIxvC,IAAI9E,OACH,CAGL,IAAIu/C,EAAQ/oC,EAAE9S,IAAI1D,GAElB,QAAcF,IAAVy/C,IAAwB/oC,EAAE69B,IAAIr0C,KAASm8C,EAAe4C,EAAOQ,EAAOlN,EAAQgM,GAAO,CACrF,GAAIhM,EAAQ,OAAO,EAGnB,IAAKsM,EAAsBpoC,EAAGC,EAAGxW,EAAK++C,EAAOV,GAAO,OAAO,EAE/C,OAAR/J,IACFA,EAAM,IAAInK,KAGZmK,EAAIxvC,IAAI9E,EACV,CACF,CACF,CAEA,GAAY,OAARs0C,EAAc,CAGhB,IAFA,IAAIkL,EAAW9E,EAAalkC,GAEnBipC,EAAM,EAAGA,EAAMD,EAASn/C,OAAQo/C,IAAO,CAC9C,IAAIC,EAAe9F,EAAe4F,EAASC,GAAM,GAE7C5tC,GADA7R,EAAM0/C,EAAa,GACZA,EAAa,IAExB,GAAqB,WAAjBjR,EAAQzuC,IAA6B,OAARA,GAC/B,IAAK6+C,EAAiBvK,EAAK/9B,EAAGvW,EAAK6R,EAAMwgC,EAAQgM,GAAO,OAAO,OAC1D,KAAKhM,GAAY97B,EAAE89B,IAAIr0C,IAASm8C,EAAe5lC,EAAE7S,IAAI1D,GAAM6R,GAAM,EAAOwsC,IAAWQ,EAAiBvK,EAAK/9B,EAAGvW,EAAK6R,GAAM,EAAOwsC,IACnI,OAAO,CAEX,CAEA,OAAoB,IAAb/J,EAAI/kB,IACb,CAEA,OAAO,CACT,CAYSowB,CAASppC,EAAGC,EAAG67B,EAAQiK,GAC1B,OAAO,OAEJ,GAngBM,IAmgBFkB,EACT,KAAOp9C,EAAImW,EAAElW,OAAQD,IAAK,CACxB,IAAIyP,EAAe0G,EAAGnW,GAIf,IAAIyP,EAAe2G,EAAGpW,GAC3B,OAAO,EAKP,IAFA,IAAIw/C,EAAQ12C,OAAOoH,KAAKiG,GAEjBnW,EAAIw/C,EAAMv/C,OAAQD,IAAK,CAC5B,IAAIJ,EAAM4/C,EAAMx/C,GAEhB,IAAKyP,EAAe2G,EAAGxW,KAASm8C,EAAe5lC,EAAEvW,GAAMwW,EAAExW,GAAMqyC,EAAQiK,GACrE,OAAO,CAEX,CAEA,OAAIsD,EAAMv/C,SAAW6I,OAAOoH,KAAKkG,GAAGnW,MAKtC,CAtBE,IAAKwP,EAAe2G,EAAGpW,KAAO+7C,EAAe5lC,EAAEnW,GAAIoW,EAAEpW,GAAIiyC,EAAQiK,GAC/D,OAAO,CAsBb,CAKF,IAAKl8C,EAAI,EAAGA,EAAIkQ,EAAKjQ,OAAQD,IAAK,CAChC,IAAImwC,EAAOjgC,EAAKlQ,GAEhB,IAAK+7C,EAAe5lC,EAAEg6B,GAAO/5B,EAAE+5B,GAAO8B,EAAQiK,GAC5C,OAAO,CAEX,CAEA,OAAO,CACT,CAUA59C,EAAOC,QAAU,CACfiwC,YATF,SAAqBwN,EAAMC,GACzB,OAAOF,EAAeC,EAAMC,GAhjBjB,EAijBb,EAQExN,kBANF,SAA2BuN,EAAMC,GAC/B,OAAOF,EAAeC,EAAMC,GArjBhB,EAsjBd,qDCtqBQ,SAAW19C,GAAW,aAE9B,SAAS4E,EAAMs8C,EAAW32B,GACtBA,GAAc,EAGd,IAFA,IAAI42B,EAASnmC,KAAK8X,IAAIouB,EAAUx/C,OAAS6oB,EAAO,GAC5C62B,EAAS7/C,MAAM4/C,GACXE,EAAM,EAAGA,EAAMF,EAAQE,IAC3BD,EAAOC,GAAOH,EAAU32B,EAAQ82B,GAEpC,OAAOD,CACX,CA+CA,IAAIt7C,EAAQ,SAAS0rC,GACjB,IAAIppB,EAAOxjB,EAAMmB,UAAW,GAC5B,OAAO,WACH,IAAIu7C,EAAW18C,EAAMmB,WACrB,OAAOyrC,EAAG1rC,MAAM,KAAMsiB,EAAKjU,OAAOmtC,GACtC,CACJ,EAEIC,EAAgB,SAAU/P,GAC1B,OAAO,WACH,IAAIppB,EAAOxjB,EAAMmB,WACbqD,EAAWgf,EAAKtN,MACpB02B,EAAGruC,KAAK5C,KAAM6nB,EAAMhf,EACxB,CACJ,EA2BA,SAASo4C,EAASr4C,GAChB,IAAIN,SAAcM,EAClB,OAAgB,MAATA,IAA0B,UAARN,GAA4B,YAARA,EAC/C,CAEA,IAAI44C,EAA0C,mBAAjBC,cAA+BA,aACxDC,EAAiC,iBAAZhS,GAAoD,mBAArBA,EAAQiS,SAEhE,SAASC,EAASrQ,GACdsQ,WAAWtQ,EAAI,EACnB,CAEA,SAASuQ,EAAKC,GACV,OAAO,SAAUxQ,GACb,IAAIppB,EAAOxjB,EAAMmB,UAAW,GAC5Bi8C,GAAM,WACFxQ,EAAG1rC,MAAM,KAAMsiB,EACnB,GACJ,CACJ,CAYA,IAAI65B,EAAiBF,EARjBN,EACSC,aACFC,EACEhS,EAAQiS,SAERC,GA6Db,SAASK,EAAS/S,GACd,OAAOoS,GAAc,SAAUn5B,EAAMhf,GACjC,IAAIvD,EACJ,IACIA,EAASspC,EAAKrpC,MAAMvF,KAAM6nB,EAG9B,CAFE,MAAO1jB,GACL,OAAO0E,EAAS1E,EACpB,CAEI88C,EAAS37C,IAAkC,mBAAhBA,EAAO2D,KAClC3D,EAAO2D,MAAK,SAASL,GACjBg5C,EAAe/4C,EAAU,KAAMD,EACnC,IAAG,SAAS6jB,GACRm1B,EAAe/4C,EAAU4jB,EAAIpqB,QAAUoqB,EAAM,IAAIvsB,MAAMusB,GAC3D,IAEA5jB,EAAS,KAAMvD,EAEvB,GACJ,CAEA,SAASs8C,EAAe/4C,EAAUtG,EAAOqG,GACrC,IACIC,EAAStG,EAAOqG,EAGpB,CAFE,MAAOzE,GACLu9C,EAAer1B,EAASloB,EAC5B,CACJ,CAEA,SAASkoB,EAAQ9pB,GACb,MAAMA,CACV,CAEA,IAAIs/C,EAAmC,mBAAXrS,OAE5B,SAASsS,EAAQ7Q,GACb,OAAO4Q,GAA6C,kBAA3B5Q,EAAGzB,OAAOuS,YACvC,CAEA,SAASC,EAAUC,GACf,OAAOH,EAAQG,GAAWN,EAASM,GAAWA,CAClD,CAEA,SAASC,EAAYC,GACjB,OAAO,SAASC,GACZ,IAAIv6B,EAAOxjB,EAAMmB,UAAW,GACxB68C,EAAKrB,GAAc,SAASn5B,EAAMhf,GAClC,IAAIy5C,EAAOtiD,KACX,OAAOmiD,EAAOC,GAAK,SAAUnR,EAAIsR,GAC7BP,EAAU/Q,GAAI1rC,MAAM+8C,EAAMz6B,EAAKjU,OAAO2uC,GAC1C,GAAG15C,EACP,IACA,OAAIgf,EAAK1mB,OACEkhD,EAAG98C,MAAMvF,KAAM6nB,GAGfw6B,CAEf,CACJ,CAGA,IAAIG,EAA8B,iBAAV,EAAAvf,GAAsB,EAAAA,GAAU,EAAAA,EAAOj5B,SAAWA,QAAU,EAAAi5B,EAGhFwf,EAA0B,iBAARzgD,MAAoBA,MAAQA,KAAKgI,SAAWA,QAAUhI,KAGxEa,EAAO2/C,GAAcC,GAAYtzC,SAAS,cAATA,GAGjCuzC,EAAW7/C,EAAK2sC,OAGhBmT,EAAc34C,OAAOrK,UAGrBgR,EAAiBgyC,EAAYhyC,eAO7BiyC,EAAuBD,EAAYp0B,SAGnCs0B,EAAmBH,EAAWA,EAASX,iBAAcnhD,EA8BzD,IAOIkiD,EAPgB94C,OAAOrK,UAOgB4uB,SAc3C,IAIIw0B,EAAiBL,EAAWA,EAASX,iBAAcnhD,EASvD,SAASoiD,EAAWp6C,GAClB,OAAa,MAATA,OACehI,IAAVgI,EAdQ,qBADL,gBAiBJm6C,GAAkBA,KAAkB/4C,OAAOpB,GA3DrD,SAAmBA,GACjB,IAAIq6C,EAAQtyC,EAAe/N,KAAKgG,EAAOi6C,GACnCj7B,EAAMhf,EAAMi6C,GAEhB,IACEj6C,EAAMi6C,QAAoBjiD,EAC1B,IAAIsiD,GAAW,CACJ,CAAX,MAAO/+C,GAAI,CAEb,IAAImB,EAASs9C,EAAqBhgD,KAAKgG,GAQvC,OAPIs6C,IACED,EACFr6C,EAAMi6C,GAAoBj7B,SAEnBhf,EAAMi6C,IAGVv9C,CACT,CA0CM69C,CAAUv6C,GAvBhB,SAAwBA,GACtB,OAAOk6C,EAAuBlgD,KAAKgG,EACrC,CAsBMmzC,CAAenzC,EACrB,CAgEA,SAASw6C,EAASx6C,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GA9Bb,gBA+BvB,CA2BA,SAASy6C,EAAYz6C,GACnB,OAAgB,MAATA,GAAiBw6C,EAASx6C,EAAMzH,UAtEzC,SAAoByH,GAClB,IAAKq4C,EAASr4C,GACZ,OAAO,EAIT,IAAIgf,EAAMo7B,EAAWp6C,GACrB,MA5BY,qBA4BLgf,GA3BI,8BA2BcA,GA7BZ,0BA6B6BA,GA1B7B,kBA0BgDA,CAC/D,CA8DqD07B,CAAW16C,EAChE,CAIA,IAAI26C,EAAY,CAAC,EAcjB,SAAS58C,IAET,CAEA,SAAS68C,EAAKvS,GACV,OAAO,WACH,GAAW,OAAPA,EAAJ,CACA,IAAIwS,EAASxS,EACbA,EAAK,KACLwS,EAAOl+C,MAAMvF,KAAMwF,UAHI,CAI3B,CACJ,CAEA,IAAIk+C,EAAmC,mBAAXlU,QAAyBA,OAAOC,SAiD5D,SAASkU,EAAa/6C,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,CAYA,SAASg7C,EAAgBh7C,GACvB,OAAO+6C,EAAa/6C,IAVR,sBAUkBo6C,EAAWp6C,EAC3C,CAGA,IAAIi7C,EAAgB75C,OAAOrK,UAGvBmkD,EAAmBD,EAAclzC,eAGjCmrC,EAAuB+H,EAAc/H,qBAoBrCiI,EAAcH,EAAgB,WAAa,OAAOp+C,SAAW,CAA/B,IAAsCo+C,EAAkB,SAASh7C,GACjG,OAAO+6C,EAAa/6C,IAAUk7C,EAAiBlhD,KAAKgG,EAAO,YACxDkzC,EAAqBl5C,KAAKgG,EAAO,SACtC,EAyBI3H,EAAUD,MAAMC,QAoBpB,IAAI+iD,EAAgC,iBAAXvkD,GAAuBA,IAAYA,EAAQwkD,UAAYxkD,EAG5EykD,EAAaF,GAA4CxkD,IAAWA,EAAOykD,UAAYzkD,EAMvFymB,EAHgBi+B,GAAcA,EAAWzkD,UAAYukD,EAG5BnhD,EAAKojB,YAASrlB,EAsBvCulB,GAnBiBF,EAASA,EAAOE,cAAWvlB,IAjBhD,WACE,OAAO,CACT,EAwCIujD,EAAW,mBAUf,SAASC,EAAQx7C,EAAOzH,GACtB,IAAImH,SAAcM,EAGlB,SAFAzH,EAAmB,MAAVA,EAfc,iBAewBA,KAGpC,UAARmH,GACU,UAARA,GAAoB67C,EAASx7C,KAAKC,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQzH,CACjD,CAGA,IA2BIkjD,EAAiB,CAAC,EACtBA,EAZiB,yBAYYA,EAXZ,yBAYjBA,EAXc,sBAWYA,EAVX,uBAWfA,EAVe,uBAUYA,EATZ,uBAUfA,EATsB,8BASYA,EARlB,wBAShBA,EARgB,yBAQY,EAC5BA,EAjCgB,sBAiCYA,EAhCb,kBAiCfA,EApBqB,wBAoBYA,EAhCnB,oBAiCdA,EApBkB,qBAoBYA,EAhChB,iBAiCdA,EAhCe,kBAgCYA,EA/BX,qBAgChBA,EA/Ba,gBA+BYA,EA9BT,mBA+BhBA,EA9BgB,mBA8BYA,EA7BZ,mBA8BhBA,EA7Ba,gBA6BYA,EA5BT,mBA6BhBA,EA5BiB,qBA4BY,EA4B7B,IAPmBzV,EAOf0V,EAAkC,iBAAX7kD,GAAuBA,IAAYA,EAAQwkD,UAAYxkD,EAG9E8kD,EAAeD,GAA8C9kD,IAAWA,EAAOykD,UAAYzkD,EAM3FglD,GAHkBD,GAAgBA,EAAa9kD,UAAY6kD,GAG1B9B,EAAWpT,QAG5CqV,GAAY,WACd,IAIE,OAFYF,GAAgBA,EAAaG,SAAWH,EAAaG,QAAQ,QAAQvxC,OAO1EqxC,IAAeA,GAAYG,SAAWH,GAAYG,QAAQ,OACtD,CAAX,MAAOxgD,GAAI,CACf,CAZe,GAeXygD,GAAmBH,IAAYA,GAASI,aAmBxCA,GAAeD,IArDAhW,EAqD6BgW,GApDvC,SAASh8C,GACd,OAAOgmC,EAAKhmC,EACd,GAfF,SAA0BA,GACxB,OAAO+6C,EAAa/6C,IAClBw6C,EAASx6C,EAAMzH,WAAakjD,EAAerB,EAAWp6C,GAC1D,EAoEIk8C,GAHgB96C,OAAOrK,UAGUgR,eAUrC,SAASo0C,GAAcn8C,EAAO8jB,GAC5B,IAAIs4B,EAAQ/jD,EAAQ2H,GAChBq8C,GAASD,GAASjB,EAAYn7C,GAC9Bs8C,GAAUF,IAAUC,GAAS9+B,EAASvd,GACtCu8C,GAAUH,IAAUC,IAAUC,GAAUL,GAAaj8C,GACrDw8C,EAAcJ,GAASC,GAASC,GAAUC,EAC1C7/C,EAAS8/C,EAjUf,SAAmBnmB,EAAGomB,GAIpB,IAHA,IAAIt4C,GAAS,EACTzH,EAAStE,MAAMi+B,KAEVlyB,EAAQkyB,GACf35B,EAAOyH,GAASs4C,EAASt4C,GAE3B,OAAOzH,CACT,CAyT6BggD,CAAU18C,EAAMzH,OAAQgtB,QAAU,GACzDhtB,EAASmE,EAAOnE,OAEpB,IAAK,IAAIL,KAAO8H,GACT8jB,IAAao4B,GAAiBliD,KAAKgG,EAAO9H,IACzCskD,IAEQ,UAAPtkD,GAECokD,IAAkB,UAAPpkD,GAA0B,UAAPA,IAE9BqkD,IAAkB,UAAPrkD,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDsjD,EAAQtjD,EAAKK,KAElBmE,EAAOmO,KAAK3S,GAGhB,OAAOwE,CACT,CAGA,IAAIigD,GAAgBv7C,OAAOrK,UA+B3B,IAAI6lD,GAPJ,SAAiB5W,EAAMzQ,GACrB,OAAO,SAASrV,GACd,OAAO8lB,EAAKzQ,EAAUrV,GACxB,CACF,CAGiB28B,CAAQz7C,OAAOoH,KAAMpH,QAMlC07C,GAHgB17C,OAAOrK,UAGUgR,eASrC,SAASg1C,GAAS3wC,GAChB,GArCI4wC,GADeh9C,EAsCFoM,IArCGpM,EAAMsB,YAGnBtB,KAFqB,mBAARg9C,GAAsBA,EAAKjmD,WAAc4lD,IAqC3D,OAAOC,GAAWxwC,GAvCtB,IAAqBpM,EACfg9C,EAwCAtgD,EAAS,GACb,IAAK,IAAIxE,KAAOkJ,OAAOgL,GACjB0wC,GAAiB9iD,KAAKoS,EAAQlU,IAAe,eAAPA,GACxCwE,EAAOmO,KAAK3S,GAGhB,OAAOwE,CACT,CA8BA,SAAS8L,GAAK4D,GACZ,OAAOquC,EAAYruC,GAAU+vC,GAAc/vC,GAAU2wC,GAAS3wC,EAChE,CAkCA,SAASy6B,GAASoW,GACd,GAAIxC,EAAYwC,GACZ,OAlCR,SAA6BA,GACzB,IAAI3kD,GAAK,EACL6S,EAAM8xC,EAAK1kD,OACf,OAAO,WACH,QAASD,EAAI6S,EAAM,CAACnL,MAAOi9C,EAAK3kD,GAAIJ,IAAKI,GAAK,IAClD,CACJ,CA4Be4kD,CAAoBD,GAG/B,IAAIpW,EApeU,SAAUoW,GACxB,OAAOnC,GAAkBmC,EAAKnC,IAAmBmC,EAAKnC,IAC1D,CAkemBqC,CAAYF,GAC3B,OAAOpW,EA9BX,SAA8BA,GAC1B,IAAIvuC,GAAK,EACT,OAAO,WACH,IAAIyR,EAAO88B,EAAS9H,OACpB,OAAIh1B,EAAKuoC,KACE,MACXh6C,IACO,CAAC0H,MAAO+J,EAAK/J,MAAO9H,IAAKI,GACpC,CACJ,CAqBsB8kD,CAAqBvW,GAnB3C,SAA8B37B,GAC1B,IAAImyC,EAAQ70C,GAAK0C,GACb5S,GAAK,EACL6S,EAAMkyC,EAAM9kD,OAChB,OAAO,SAASwmC,IACZ,IAAI7mC,EAAMmlD,IAAQ/kD,GAClB,MAAY,cAARJ,EACO6mC,IAEJzmC,EAAI6S,EAAM,CAACnL,MAAOkL,EAAIhT,GAAMA,IAAKA,GAAO,IACnD,CACJ,CAQuDolD,CAAqBL,EAC5E,CAEA,SAASM,GAASlV,GACd,OAAO,WACH,GAAW,OAAPA,EAAa,MAAM,IAAI/wC,MAAM,gCACjC,IAAIujD,EAASxS,EACbA,EAAK,KACLwS,EAAOl+C,MAAMvF,KAAMwF,UACvB,CACJ,CAEA,SAAS4gD,GAAa5zC,GAClB,OAAO,SAAUsB,EAAKuxC,EAAUx8C,GAE5B,GADAA,EAAW26C,EAAK36C,GAAYlC,GACxB6L,GAAS,IAAMsB,EACf,OAAOjL,EAAS,MAEpB,IAAIw9C,EAAW5W,GAAS37B,GACpBonC,GAAO,EACPoL,EAAU,EACVC,GAAU,EAEd,SAASC,EAAiB/5B,EAAK7jB,GAE3B,GADA09C,GAAW,EACP75B,EACAyuB,GAAO,EACPryC,EAAS4jB,OAER,IAAI7jB,IAAU26C,GAAcrI,GAAQoL,GAAW,EAEhD,OADApL,GAAO,EACAryC,EAAS,MAEV09C,GACNE,GACJ,CACJ,CAEA,SAASA,IAEL,IADAF,GAAU,EACHD,EAAU9zC,IAAU0oC,GAAM,CAC7B,IAAIvuB,EAAO05B,IACX,GAAa,OAAT15B,EAKA,OAJAuuB,GAAO,OACHoL,GAAW,GACXz9C,EAAS,OAIjBy9C,GAAW,EACXjB,EAAS14B,EAAK/jB,MAAO+jB,EAAK7rB,IAAKqlD,GAASK,GAC5C,CACAD,GAAU,CACd,CAEAE,GACJ,CACJ,CAsBA,SAASC,GAAYb,EAAMrzC,EAAO6yC,EAAUx8C,GACxCu9C,GAAa5zC,EAAb4zC,CAAoBP,EAAM7D,EAAUqD,GAAWx8C,EACnD,CAEA,SAAS89C,GAAQ1V,EAAIz+B,GACjB,OAAO,SAAUo0C,EAAUvB,EAAUx8C,GACjC,OAAOooC,EAAG2V,EAAUp0C,EAAO6yC,EAAUx8C,EACzC,CACJ,CAGA,SAASg+C,GAAgBhB,EAAMR,EAAUx8C,GACrCA,EAAW26C,EAAK36C,GAAYlC,GAC5B,IAAIoG,EAAQ,EACR+5C,EAAY,EACZ3lD,EAAS0kD,EAAK1kD,OAKlB,SAAS4lD,EAAiBt6B,EAAK7jB,GACvB6jB,EACA5jB,EAAS4jB,KACCq6B,IAAc3lD,GAAWyH,IAAU26C,GAC7C16C,EAAS,KAEjB,CAEA,IAZe,IAAX1H,GACA0H,EAAS,MAWNkE,EAAQ5L,EAAQ4L,IACnBs4C,EAASQ,EAAK94C,GAAQA,EAAOo5C,GAASY,GAE9C,CAGA,IAAIC,GAAgBL,GAAQD,GAAan/C,KAyCrC0/C,GAAS,SAASpB,EAAMR,EAAUx8C,IACPw6C,EAAYwC,GAAQgB,GAAkBG,IAC5CnB,EAAM7D,EAAUqD,GAAWx8C,EACpD,EAEA,SAASq+C,GAAWjW,GAChB,OAAO,SAAUn9B,EAAKuxC,EAAUx8C,GAC5B,OAAOooC,EAAGgW,GAAQnzC,EAAKkuC,EAAUqD,GAAWx8C,EAChD,CACJ,CAEA,SAASs+C,GAAUhF,EAAQx0C,EAAK03C,EAAUx8C,GACtCA,EAAWA,GAAYlC,EACvBgH,EAAMA,GAAO,GACb,IAAIy5C,EAAU,GACVC,EAAU,EACVC,EAAYtF,EAAUqD,GAE1BlD,EAAOx0C,GAAK,SAAU/E,EAAO+2B,EAAG92B,GAC5B,IAAIkE,EAAQs6C,IACZC,EAAU1+C,GAAO,SAAU6jB,EAAK1sB,GAC5BqnD,EAAQr6C,GAAShN,EACjB8I,EAAS4jB,EACb,GACJ,IAAG,SAAUA,GACT5jB,EAAS4jB,EAAK26B,EAClB,GACJ,CAsCA,IAAI9zC,GAAM4zC,GAAWC,IAmCjBI,GAAYrF,EAAY5uC,IAE5B,SAASk0C,GAAgBvW,GACrB,OAAO,SAAUn9B,EAAKtB,EAAO6yC,EAAUx8C,GACnC,OAAOooC,EAAGmV,GAAa5zC,GAAQsB,EAAKkuC,EAAUqD,GAAWx8C,EAC7D,CACJ,CAqBA,IAAI4+C,GAAWD,GAAgBL,IAoB3BO,GAAYf,GAAQc,GAAU,GAqB9BE,GAAkBzF,EAAYwF,IAWlC,SAASE,GAAU7yC,EAAOswC,GAIxB,IAHA,IAAIt4C,GAAS,EACT5L,EAAkB,MAAT4T,EAAgB,EAAIA,EAAM5T,SAE9B4L,EAAQ5L,IAC8B,IAAzCkkD,EAAStwC,EAAMhI,GAAQA,EAAOgI,KAIpC,OAAOA,CACT,CAqCA,IA5BuB8yC,GA4BnBC,GA3BK,SAAS9yC,EAAQqwC,EAAU0C,GAMhC,IALA,IAAIh7C,GAAS,EACT65C,EAAW58C,OAAOgL,GAClB4/B,EAAQmT,EAAS/yC,GACjB7T,EAASyzC,EAAMzzC,OAEZA,KAAU,CACf,IAAIL,EAAM8zC,EAAMiT,GAAY1mD,IAAW4L,GACvC,IAA+C,IAA3Cs4C,EAASuB,EAAS9lD,GAAMA,EAAK8lD,GAC/B,KAEJ,CACA,OAAO5xC,CACT,EAwBF,SAASgzC,GAAWhzC,EAAQqwC,GAC1B,OAAOrwC,GAAU8yC,GAAQ9yC,EAAQqwC,EAAUj0C,GAC7C,CAgCA,SAAS62C,GAAUr/C,GACjB,OAAOA,GAAUA,CACnB,CAiCA,SAASs/C,GAAYnzC,EAAOnM,EAAOu/C,GACjC,OAAOv/C,GAAUA,EAtBnB,SAAuBmM,EAAOnM,EAAOu/C,GAInC,IAHA,IAAIp7C,EAAQo7C,EAAY,EACpBhnD,EAAS4T,EAAM5T,SAEV4L,EAAQ5L,GACf,GAAI4T,EAAMhI,KAAWnE,EACnB,OAAOmE,EAGX,OAAQ,CACV,CAaMq7C,CAAcrzC,EAAOnM,EAAOu/C,GAxDlC,SAAuBpzC,EAAOszC,EAAWF,EAAWN,GAIlD,IAHA,IAAI1mD,EAAS4T,EAAM5T,OACf4L,EAAQo7C,GAAaN,EAAY,GAAK,GAElCA,EAAY96C,MAAYA,EAAQ5L,GACtC,GAAIknD,EAAUtzC,EAAMhI,GAAQA,EAAOgI,GACjC,OAAOhI,EAGX,OAAQ,CACV,CA+CMu7C,CAAcvzC,EAAOkzC,GAAWE,EACtC,CAiFA,IAAII,GAAO,SAAUC,EAAOC,EAAa5/C,GACV,mBAAhB4/C,IAEP5/C,EAAW4/C,EACXA,EAAc,MAElB5/C,EAAW26C,EAAK36C,GAAYlC,GAC5B,IACI+hD,EADUt3C,GAAKo3C,GACIrnD,OACvB,IAAKunD,EACD,OAAO7/C,EAAS,MAEf4/C,IACDA,EAAcC,GAGlB,IAAItB,EAAU,CAAC,EACXuB,EAAe,EACfC,GAAW,EAEXC,EAAY7+C,OAAOC,OAAO,MAE1B6+C,EAAa,GAGbC,EAAe,GAEfC,EAAwB,CAAC,EAsC7B,SAASC,EAAYnoD,EAAKooD,GACtBJ,EAAWr1C,MAAK,YAkCpB,SAAiB3S,EAAKooD,GAClB,IAAIN,EAAJ,CAEA,IAAIO,EAAehD,IAAS,SAAS15B,EAAKnnB,GAKtC,GAJAqjD,IACInjD,UAAUrE,OAAS,IACnBmE,EAASjB,EAAMmB,UAAW,IAE1BinB,EAAK,CACL,IAAI28B,EAAc,CAAC,EACnBpB,GAAWZ,GAAS,SAASp+B,EAAKqgC,GAC9BD,EAAYC,GAAQrgC,CACxB,IACAogC,EAAYtoD,GAAOwE,EACnBsjD,GAAW,EACXC,EAAY7+C,OAAOC,OAAO,MAE1BpB,EAAS4jB,EAAK28B,EAClB,MACIhC,EAAQtmD,GAAOwE,EACfgkD,EAAaxoD,EAErB,IAEA6nD,IACA,IAAIY,EAASvH,EAAUkH,EAAKA,EAAK/nD,OAAS,IACtC+nD,EAAK/nD,OAAS,EACdooD,EAAOnC,EAAS+B,GAEhBI,EAAOJ,EA5BS,CA8BxB,CAhEQK,CAAQ1oD,EAAKooD,EACjB,GACJ,CAEA,SAASO,IACL,GAA0B,IAAtBX,EAAW3nD,QAAiC,IAAjBwnD,EAC3B,OAAO9/C,EAAS,KAAMu+C,GAE1B,KAAM0B,EAAW3nD,QAAUwnD,EAAeF,GAC5BK,EAAWjnB,OACrB6nB,EAGR,CAWA,SAASJ,EAAaK,GAElB/B,GADoBiB,EAAUc,IAAa,IAClB,SAAU1Y,GAC/BA,GACJ,IACAwY,GACJ,CA2DA,SAASG,EAAcD,GACnB,IAAIrkD,EAAS,GAMb,OALA0iD,GAAWQ,GAAO,SAAUU,EAAMpoD,GAC1BG,EAAQioD,IAAShB,GAAYgB,EAAMS,EAAU,IAAM,GACnDrkD,EAAOmO,KAAK3S,EAEpB,IACOwE,CACX,CAvIA0iD,GAAWQ,GAAO,SAAUU,EAAMpoD,GAC9B,IAAKG,EAAQioD,GAIT,OAFAD,EAAYnoD,EAAK,CAACooD,SAClBH,EAAat1C,KAAK3S,GAItB,IAAI2P,EAAey4C,EAAK7kD,MAAM,EAAG6kD,EAAK/nD,OAAS,GAC3C0oD,EAAwBp5C,EAAatP,OACzC,GAA8B,IAA1B0oD,EAGA,OAFAZ,EAAYnoD,EAAKooD,QACjBH,EAAat1C,KAAK3S,GAGtBkoD,EAAsBloD,GAAO+oD,EAE7BjC,GAAUn3C,GAAc,SAAUq5C,GAC9B,IAAKtB,EAAMsB,GACP,MAAM,IAAI5pD,MAAM,oBAAsBY,EAClC,oCACAgpD,EAAiB,QACjBr5C,EAAaG,KAAK,OA+BlC,IAAqB+4C,EAAU1Y,EACvB8Y,EADuB9Y,EA7BK,WAEM,KAD9B4Y,GAEIZ,EAAYnoD,EAAKooD,EAEzB,GAyBAa,EAAgBlB,EADHc,EA7BDG,MAgCZC,EAAgBlB,EAAUc,GAAY,IAG1CI,EAAct2C,KAAKw9B,EA7BnB,GACJ,IAyEA,WAMI,IAFA,IACIoW,EAAU,EACP0B,EAAa5nD,QAEhBkmD,IACAO,GAAUgC,EAFIb,EAAaxuC,QAEW,SAAUyvC,GACD,KAArChB,EAAsBgB,IACxBjB,EAAat1C,KAAKu2C,EAE1B,IAGJ,GAAI3C,IAAYqB,EACZ,MAAM,IAAIxoD,MACN,gEAGZ,CA5FA+pD,GACAR,GAsGJ,EAWA,SAASS,GAASn1C,EAAOswC,GAKvB,IAJA,IAAIt4C,GAAS,EACT5L,EAAkB,MAAT4T,EAAgB,EAAIA,EAAM5T,OACnCmE,EAAStE,MAAMG,KAEV4L,EAAQ5L,GACfmE,EAAOyH,GAASs4C,EAAStwC,EAAMhI,GAAQA,EAAOgI,GAEhD,OAAOzP,CACT,CA4BA,IAGI6kD,GAAczH,EAAWA,EAAS/iD,eAAYiB,EAC9CwpD,GAAiBD,GAAcA,GAAY57B,cAAW3tB,EAU1D,SAASypD,GAAazhD,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI3H,EAAQ2H,GAEV,OAAOshD,GAASthD,EAAOyhD,IAAgB,GAEzC,GA7BF,SAAkBzhD,GAChB,MAAuB,iBAATA,GACX+6C,EAAa/6C,IArBF,mBAqBYo6C,EAAWp6C,EACvC,CA0BM0hD,CAAS1hD,GACX,OAAOwhD,GAAiBA,GAAexnD,KAAKgG,GAAS,GAEvD,IAAItD,EAAUsD,EAAQ,GACtB,MAAkB,KAAVtD,GAAkB,EAAIsD,IA3BjB,SA2BwC,KAAOtD,CAC9D,CAyCA,SAASilD,GAAUx1C,EAAOiV,EAAO2F,GAC/B,IAAIxuB,EAAS4T,EAAM5T,OAEnB,OADAwuB,OAAc/uB,IAAR+uB,EAAoBxuB,EAASwuB,GAC1B3F,GAAS2F,GAAOxuB,EAAU4T,EAjCrC,SAAmBA,EAAOiV,EAAO2F,GAC/B,IAAI5iB,GAAS,EACT5L,EAAS4T,EAAM5T,OAEf6oB,EAAQ,IACVA,GAASA,EAAQ7oB,EAAS,EAAKA,EAAS6oB,IAE1C2F,EAAMA,EAAMxuB,EAASA,EAASwuB,GACpB,IACRA,GAAOxuB,GAETA,EAAS6oB,EAAQ2F,EAAM,EAAMA,EAAM3F,IAAW,EAC9CA,KAAW,EAGX,IADA,IAAI1kB,EAAStE,MAAMG,KACV4L,EAAQ5L,GACfmE,EAAOyH,GAASgI,EAAMhI,EAAQid,GAEhC,OAAO1kB,CACT,CAc6CklD,CAAUz1C,EAAOiV,EAAO2F,EACrE,CA+CA,IAWI86B,GAAetnD,OAAO,uFAc1B,IAQIunD,GAAW,oBACXC,GAAU,kDACVC,GAAS,2BAETC,GAAc,qBACdC,GAAa,kCACbC,GAAa,qCAIbC,GAPa,MAAQL,GAAU,IAAMC,GAO1BK,KACXC,GAAW,oBAEXC,GAAQD,GAAWF,IADP,gBAA0B,CAACH,GAAaC,GAAYC,IAAYn6C,KAAK,KAAO,IAAMs6C,GAAWF,GAAW,MAEpHI,GAAW,MAAQ,CAACP,GAAcF,GAAU,IAAKA,GAASG,GAAYC,GAAYL,IAAU95C,KAAK,KAAO,IAGxGy6C,GAAYloD,OAAOynD,GAAS,MAAQA,GAAS,KAAOQ,GAAWD,GAAO,KAoB1E,SAASG,GAAcr5B,GACrB,OAnDF,SAAoBA,GAClB,OAAOw4B,GAAa9hD,KAAKspB,EAC3B,CAiDSs5B,CAAWt5B,GAZpB,SAAwBA,GACtB,OAAOA,EAAO7mB,MAAMigD,KAAc,EACpC,CAWMG,CAAev5B,GA7ErB,SAAsBA,GACpB,OAAOA,EAAO1lB,MAAM,GACtB,CA4EMk/C,CAAax5B,EACnB,CA4BA,IAAIy5B,GAAS,aAwBb,SAASC,GAAK15B,EAAQ25B,EAAOC,GAE3B,IADA55B,EA7BgB,OADArpB,EA8BEqpB,GA7BK,GAAKo4B,GAAazhD,MA8B1BijD,QAAmBjrD,IAAVgrD,GACtB,OAAO35B,EAAOlf,QAAQ24C,GAAQ,IAhClC,IAAkB9iD,EAkChB,IAAKqpB,KAAY25B,EAAQvB,GAAauB,IACpC,OAAO35B,EAET,IAAI65B,EAAaR,GAAcr5B,GAC3B85B,EAAaT,GAAcM,GAI/B,OAAOrB,GAAUuB,EA/JnB,SAAyBA,EAAYC,GAInC,IAHA,IAAIh/C,GAAS,EACT5L,EAAS2qD,EAAW3qD,SAEf4L,EAAQ5L,GAAU+mD,GAAY6D,EAAYD,EAAW/+C,GAAQ,IAAM,IAC5E,OAAOA,CACT,CAsJci/C,CAAgBF,EAAYC,GA5K1C,SAAuBD,EAAYC,GAGjC,IAFA,IAAIh/C,EAAQ++C,EAAW3qD,OAEhB4L,KAAWm7C,GAAY6D,EAAYD,EAAW/+C,GAAQ,IAAM,IACnE,OAAOA,CACT,CAwKYk/C,CAAcH,EAAYC,GAAc,GAETn7C,KAAK,GAChD,CAEA,IAAIs7C,GAAU,qDACVC,GAAe,IACfC,GAAS,eACTC,GAAiB,mCA8FrB,SAASC,GAAW9D,EAAO3/C,GACvB,IAAI0jD,EAAW,CAAC,EAEhBvE,GAAWQ,GAAO,SAAUe,EAAQzoD,GAChC,IAAI0rD,EACAC,EAAY3K,EAAQyH,GACpBmD,GACED,GAA+B,IAAlBlD,EAAOpoD,QACrBsrD,GAA+B,IAAlBlD,EAAOpoD,OAEzB,GAAIF,EAAQsoD,GACRiD,EAASjD,EAAOllD,MAAM,GAAI,GAC1BklD,EAASA,EAAOA,EAAOpoD,OAAS,GAEhCorD,EAASzrD,GAAO0rD,EAAO54C,OAAO44C,EAAOrrD,OAAS,EAAIwrD,EAAUpD,QACzD,GAAImD,EAEPH,EAASzrD,GAAOyoD,MACb,CAEH,GADAiD,EA/GZ,SAAqB5d,GAOjB,OAJAA,GADAA,GADAA,EAAOA,EAAKrgB,WAAWxb,QAAQs5C,GAAgB,KACnCjhD,MAAM8gD,IAAS,GAAGn5C,QAAQ,IAAK,KAC7B67B,EAAKriC,MAAM4/C,IAAgB,IAC7B74C,KAAI,SAAUwV,GACtB,OAAO6iC,GAAK7iC,EAAI/V,QAAQq5C,GAAQ,IACpC,GAEJ,CAuGqBQ,CAAYrD,GACC,IAAlBA,EAAOpoD,SAAiBsrD,GAA+B,IAAlBD,EAAOrrD,OAC5C,MAAM,IAAIjB,MAAM,0DAIfusD,GAAWD,EAAOjyC,MAEvBgyC,EAASzrD,GAAO0rD,EAAO54C,OAAO+4C,EAClC,CAEA,SAASA,EAAQvF,EAASyF,GACtB,IAAIC,EAAU5C,GAASsC,GAAQ,SAAU5oD,GACrC,OAAOwjD,EAAQxjD,EACnB,IACAkpD,EAAQr5C,KAAKo5C,GACb7K,EAAUuH,GAAQhkD,MAAM,KAAMunD,EAClC,CACJ,IAEAvE,GAAKgE,EAAU1jD,EACnB,CAMA,SAASkkD,KACL/sD,KAAKgtD,KAAOhtD,KAAKitD,KAAO,KACxBjtD,KAAKmB,OAAS,CAClB,CAEA,SAAS+rD,GAAWC,EAAKniC,GACrBmiC,EAAIhsD,OAAS,EACbgsD,EAAIH,KAAOG,EAAIF,KAAOjiC,CAC1B,CA4EA,SAASoiC,GAAMC,EAAQ5E,EAAa6E,GAChC,GAAmB,MAAf7E,EACAA,EAAc,OAEb,GAAmB,IAAhBA,EACJ,MAAM,IAAIvoD,MAAM,gCAGpB,IAAIqtD,EAAUvL,EAAUqL,GACpBG,EAAa,EACbC,EAAc,GAEdC,GAAsB,EAC1B,SAASC,EAAQ7tD,EAAM8tD,EAAe/kD,GAClC,GAAgB,MAAZA,GAAwC,mBAAbA,EAC3B,MAAM,IAAI3I,MAAM,oCAMpB,GAJAo1B,EAAEu4B,SAAU,EACP5sD,EAAQnB,KACTA,EAAO,CAACA,IAEQ,IAAhBA,EAAKqB,QAAgBm0B,EAAEw4B,OAEvB,OAAOpM,GAAe,WAClBpsB,EAAEy4B,OACN,IAGJ,IAAK,IAAI7sD,EAAI,EAAGw8B,EAAI59B,EAAKqB,OAAQD,EAAIw8B,EAAGx8B,IAAK,CACzC,IAAIyR,EAAO,CACP7S,KAAMA,EAAKoB,GACX2H,SAAUA,GAAYlC,GAGtBinD,EACAt4B,EAAE04B,OAAOh9B,QAAQre,GAEjB2iB,EAAE04B,OAAOv6C,KAAKd,EAEtB,CAEK+6C,IACDA,GAAsB,EACtBhM,GAAe,WACXgM,GAAsB,EACtBp4B,EAAE8Z,SACN,IAER,CAEA,SAAS6e,EAAMzF,GACX,OAAO,SAAS/7B,GACZ+gC,GAAc,EAEd,IAAK,IAAItsD,EAAI,EAAGw8B,EAAI8qB,EAAMrnD,OAAQD,EAAIw8B,EAAGx8B,IAAK,CAC1C,IAAIgoD,EAAOV,EAAMtnD,GAEb6L,EAAQm7C,GAAYuF,EAAavE,EAAM,GAC7B,IAAVn8C,EACA0gD,EAAY5rB,QACL90B,EAAQ,GACf0gD,EAAYvgD,OAAOH,EAAO,GAG9Bm8C,EAAKrgD,SAAStD,MAAM2jD,EAAM1jD,WAEf,MAAPinB,GACA6I,EAAE/yB,MAAMkqB,EAAKy8B,EAAKppD,KAE1B,CAEI0tD,GAAel4B,EAAEmzB,YAAcnzB,EAAEzH,QACjCyH,EAAE44B,cAGF54B,EAAEw4B,QACFx4B,EAAEy4B,QAENz4B,EAAE8Z,SACN,CACJ,CAEA,IAAI+e,GAAe,EACf74B,EAAI,CACJ04B,OAAQ,IAAIjB,GACZtE,YAAaA,EACb6E,QAASA,EACTc,UAAWznD,EACXunD,YAAYvnD,EACZknB,OAAQ46B,EAAc,EACtB4F,MAAO1nD,EACPonD,MAAOpnD,EACPpE,MAAOoE,EACPknD,SAAS,EACTS,QAAQ,EACR76C,KAAM,SAAU3T,EAAM+I,GAClB8kD,EAAQ7tD,GAAM,EAAO+I,EACzB,EACA0lD,KAAM,WACFj5B,EAAEy4B,MAAQpnD,EACV2uB,EAAE04B,OAAOK,OACb,EACAr9B,QAAS,SAAUlxB,EAAM+I,GACrB8kD,EAAQ7tD,GAAM,EAAM+I,EACxB,EACA9C,OAAQ,SAAUyoD,GACdl5B,EAAE04B,OAAOjoD,OAAOyoD,EACpB,EACApf,QAAS,WAGL,IAAI+e,EAAJ,CAIA,IADAA,GAAe,GACR74B,EAAEg5B,QAAUd,EAAal4B,EAAEmzB,aAAenzB,EAAE04B,OAAO7sD,QAAO,CAC7D,IAAIqnD,EAAQ,GAAI1oD,EAAO,GACnB49B,EAAIpI,EAAE04B,OAAO7sD,OACbm0B,EAAEg4B,UAAS5vB,EAAIjjB,KAAKwU,IAAIyO,EAAGpI,EAAEg4B,UACjC,IAAK,IAAIpsD,EAAI,EAAGA,EAAIw8B,EAAGx8B,IAAK,CACxB,IAAI8pB,EAAOsK,EAAE04B,OAAOnsB,QACpB2mB,EAAM/0C,KAAKuX,GACXyiC,EAAYh6C,KAAKuX,GACjBlrB,EAAK2T,KAAKuX,EAAKlrB,KACnB,CAEA0tD,GAAc,EAEU,IAApBl4B,EAAE04B,OAAO7sD,QACTm0B,EAAE+4B,QAGFb,IAAel4B,EAAEmzB,aACjBnzB,EAAE84B,YAGN,IAAI7L,EAAK4D,GAAS8H,EAAMzF,IACxB+E,EAAQztD,EAAMyiD,EAClB,CACA4L,GAAe,CA1Bf,CA2BJ,EACAhtD,OAAQ,WACJ,OAAOm0B,EAAE04B,OAAO7sD,MACpB,EACAmlD,QAAS,WACL,OAAOkH,CACX,EACAC,YAAa,WACT,OAAOA,CACX,EACAK,KAAM,WACF,OAAOx4B,EAAE04B,OAAO7sD,OAASqsD,IAAe,CAC5C,EACAiB,MAAO,WACHn5B,EAAEg5B,QAAS,CACf,EACAI,OAAQ,YACa,IAAbp5B,EAAEg5B,SACNh5B,EAAEg5B,QAAS,EACX5M,EAAepsB,EAAE8Z,SACrB,GAEJ,OAAO9Z,CACX,CA+EA,SAASq5B,GAAMtB,EAAQC,GACnB,OAAOF,GAAMC,EAAQ,EAAGC,EAC5B,CA9TAP,GAAIptD,UAAUivD,WAAa,SAAS5jC,GAQhC,OAPIA,EAAKuB,KAAMvB,EAAKuB,KAAKob,KAAO3c,EAAK2c,KAChC3nC,KAAKgtD,KAAOhiC,EAAK2c,KAClB3c,EAAK2c,KAAM3c,EAAK2c,KAAKpb,KAAOvB,EAAKuB,KAChCvsB,KAAKitD,KAAOjiC,EAAKuB,KAEtBvB,EAAKuB,KAAOvB,EAAK2c,KAAO,KACxB3nC,KAAKmB,QAAU,EACR6pB,CACX,EAEA+hC,GAAIptD,UAAU0uD,MAAQ,WAClB,KAAMruD,KAAKgtD,MAAMhtD,KAAK6hC,QACtB,OAAO7hC,IACX,EAEA+sD,GAAIptD,UAAUkvD,YAAc,SAAS7jC,EAAM8jC,GACvCA,EAAQviC,KAAOvB,EACf8jC,EAAQnnB,KAAO3c,EAAK2c,KAChB3c,EAAK2c,KAAM3c,EAAK2c,KAAKpb,KAAOuiC,EAC3B9uD,KAAKitD,KAAO6B,EACjB9jC,EAAK2c,KAAOmnB,EACZ9uD,KAAKmB,QAAU,CACnB,EAEA4rD,GAAIptD,UAAUovD,aAAe,SAAS/jC,EAAM8jC,GACxCA,EAAQviC,KAAOvB,EAAKuB,KACpBuiC,EAAQnnB,KAAO3c,EACXA,EAAKuB,KAAMvB,EAAKuB,KAAKob,KAAOmnB,EAC3B9uD,KAAKgtD,KAAO8B,EACjB9jC,EAAKuB,KAAOuiC,EACZ9uD,KAAKmB,QAAU,CACnB,EAEA4rD,GAAIptD,UAAUqxB,QAAU,SAAShG,GACzBhrB,KAAKgtD,KAAMhtD,KAAK+uD,aAAa/uD,KAAKgtD,KAAMhiC,GACvCkiC,GAAWltD,KAAMgrB,EAC1B,EAEA+hC,GAAIptD,UAAU8T,KAAO,SAASuX,GACtBhrB,KAAKitD,KAAMjtD,KAAK6uD,YAAY7uD,KAAKitD,KAAMjiC,GACtCkiC,GAAWltD,KAAMgrB,EAC1B,EAEA+hC,GAAIptD,UAAUkiC,MAAQ,WAClB,OAAO7hC,KAAKgtD,MAAQhtD,KAAK4uD,WAAW5uD,KAAKgtD,KAC7C,EAEAD,GAAIptD,UAAU4a,IAAM,WAChB,OAAOva,KAAKitD,MAAQjtD,KAAK4uD,WAAW5uD,KAAKitD,KAC7C,EAEAF,GAAIptD,UAAUmxB,QAAU,WAGpB,IAFA,IAAInjB,EAAM3M,MAAMhB,KAAKmB,QACjB6tD,EAAOhvD,KAAKgtD,KACRlM,EAAM,EAAGA,EAAM9gD,KAAKmB,OAAQ2/C,IAChCnzC,EAAImzC,GAAOkO,EAAKlvD,KAChBkvD,EAAOA,EAAKrnB,KAEhB,OAAOh6B,CACX,EAEAo/C,GAAIptD,UAAUoG,OAAS,SAAUyoD,GAE7B,IADA,IAAIQ,EAAOhvD,KAAKgtD,KACRgC,GAAM,CACV,IAAIrnB,EAAOqnB,EAAKrnB,KACZ6mB,EAAOQ,IACPhvD,KAAK4uD,WAAWI,GAEpBA,EAAOrnB,CACX,CACA,OAAO3nC,IACX,EAyQA,IAAIivD,GAAetI,GAAQD,GAAa,GA0CxC,SAASwI,GAAOrJ,EAAM1G,EAAMkG,EAAUx8C,GAClCA,EAAW26C,EAAK36C,GAAYlC,GAC5B,IAAI2gD,EAAYtF,EAAUqD,GAC1B4J,GAAapJ,GAAM,SAAS1oB,EAAGj8B,EAAG2H,GAC9By+C,EAAUnI,EAAMhiB,GAAG,SAAS1Q,EAAK1sB,GAC7Bo/C,EAAOp/C,EACP8I,EAAS4jB,EACb,GACJ,IAAG,SAASA,GACR5jB,EAAS4jB,EAAK0yB,EAClB,GACJ,CAwCA,SAAS5V,KACL,IAAI4lB,EAAajF,GAAS1kD,UAAWw8C,GACrC,OAAO,WACH,IAAIn6B,EAAOxjB,EAAMmB,WACb88C,EAAOtiD,KAEPuiD,EAAK16B,EAAKA,EAAK1mB,OAAS,GACX,mBAANohD,EACP16B,EAAKtN,MAELgoC,EAAK57C,EAGTuoD,GAAOC,EAAYtnC,GAAM,SAASunC,EAASne,EAAIsR,GAC3CtR,EAAG1rC,MAAM+8C,EAAM8M,EAAQx7C,QAAO,SAAS6Y,GACnC,IAAI4iC,EAAWhrD,EAAMmB,UAAW,GAChC+8C,EAAG91B,EAAK4iC,EACZ,IACJ,IACA,SAAS5iC,EAAK26B,GACV7E,EAAGh9C,MAAM+8C,EAAM,CAAC71B,GAAK7Y,OAAOwzC,GAChC,GACJ,CACJ,CAqCA,IAAIkI,GAAU,WACV,OAAO/lB,GAAIhkC,MAAM,KAAMlB,EAAMmB,WAAWunB,UAC5C,EAEIwiC,GAAUvuD,MAAMrB,UAAUiU,OAoB1B47C,GAAc,SAAS3J,EAAMrzC,EAAO6yC,EAAUx8C,GAC9CA,EAAWA,GAAYlC,EACvB,IAAI2gD,EAAYtF,EAAUqD,GAC1BoC,GAAS5B,EAAMrzC,GAAO,SAASwW,EAAKngB,GAChCy+C,EAAUt+B,GAAK,SAASyD,GACpB,OAAIA,EAAY5jB,EAAS4jB,GAClB5jB,EAAS,KAAMxE,EAAMmB,UAAW,GAC3C,GACJ,IAAG,SAASinB,EAAKgjC,GAEb,IADA,IAAInqD,EAAS,GACJpE,EAAI,EAAGA,EAAIuuD,EAAWtuD,OAAQD,IAC/BuuD,EAAWvuD,KACXoE,EAASiqD,GAAQhqD,MAAMD,EAAQmqD,EAAWvuD,KAIlD,OAAO2H,EAAS4jB,EAAKnnB,EACzB,GACJ,EA2BIsO,GAAS+yC,GAAQ6I,GAAajoD,KAoB9BmoD,GAAe/I,GAAQ6I,GAAa,GA4CpCG,GAAW,WACX,IAAIlhC,EAASpqB,EAAMmB,WACfqiB,EAAO,CAAC,MAAMjU,OAAO6a,GACzB,OAAO,WAEH,OADejpB,UAAUA,UAAUrE,OAAS,GAC5BoE,MAAMvF,KAAM6nB,EAChC,CACJ,EAkBA,SAAS+nC,GAAShnD,GAChB,OAAOA,CACT,CAEA,SAASinD,GAAclhB,EAAOmhB,GAC1B,OAAO,SAAS3N,EAAQx0C,EAAK03C,EAAU9C,GACnCA,EAAKA,GAAM57C,EACX,IACIopD,EADAC,GAAa,EAEjB7N,EAAOx0C,GAAK,SAAS/E,EAAO+2B,EAAG92B,GAC3Bw8C,EAASz8C,GAAO,SAAS6jB,EAAKnnB,GACtBmnB,EACA5jB,EAAS4jB,GACFkiB,EAAMrpC,KAAYyqD,GACzBC,GAAa,EACbD,EAAaD,GAAU,EAAMlnD,GAC7BC,EAAS,KAAM06C,IAEf16C,GAER,GACJ,IAAG,SAAS4jB,GACJA,EACA81B,EAAG91B,GAEH81B,EAAG,KAAMyN,EAAaD,EAAaD,GAAU,GAErD,GACJ,CACJ,CAEA,SAASG,GAAelwD,EAAGo9B,GACvB,OAAOA,CACX,CAqCA,IAAI+yB,GAAShJ,GAAW2I,GAAcD,GAAUK,KAwB5CE,GAAc3I,GAAgBqI,GAAcD,GAAUK,KAsBtDG,GAAezJ,GAAQwJ,GAAa,GAExC,SAASE,GAAYzsD,GACjB,OAAO,SAAUqtC,GACb,IAAIppB,EAAOxjB,EAAMmB,UAAW,GAC5BqiB,EAAKpU,MAAK,SAAUgZ,GAChB,IAAI5E,EAAOxjB,EAAMmB,UAAW,GACL,iBAAZoB,UACH6lB,EACI7lB,QAAQrE,OACRqE,QAAQrE,MAAMkqB,GAEX7lB,QAAQhD,IACfgkD,GAAU//B,GAAM,SAAUsV,GACtBv2B,QAAQhD,GAAMu5B,EAClB,IAGZ,IACA6kB,EAAU/Q,GAAI1rC,MAAM,KAAMsiB,EAC9B,CACJ,CA+BA,IAAIyoC,GAAMD,GAAY,OAsBtB,SAASE,GAAStf,EAAItoC,EAAME,GACxBA,EAAWs9C,GAASt9C,GAAYlC,GAChC,IAAI6pD,EAAMxO,EAAU/Q,GAChBwf,EAAQzO,EAAUr5C,GAEtB,SAASg/B,EAAKlb,GACV,GAAIA,EAAK,OAAO5jB,EAAS4jB,GACzB,IAAI5E,EAAOxjB,EAAMmB,UAAW,GAC5BqiB,EAAKpU,KAAKk7B,GACV8hB,EAAMlrD,MAAMvF,KAAM6nB,EACtB,CAEA,SAAS8mB,EAAMliB,EAAKikC,GAChB,OAAIjkC,EAAY5jB,EAAS4jB,GACpBikC,OACLF,EAAI7oB,GADe9+B,EAAS,KAEhC,CAEA8lC,EAAM,MAAM,EAEhB,CAwBA,SAASgiB,GAAStL,EAAU18C,EAAME,GAC9BA,EAAWs9C,GAASt9C,GAAYlC,GAChC,IAAI2gD,EAAYtF,EAAUqD,GACtB1d,EAAO,SAASlb,GAChB,GAAIA,EAAK,OAAO5jB,EAAS4jB,GACzB,IAAI5E,EAAOxjB,EAAMmB,UAAW,GAC5B,GAAImD,EAAKpD,MAAMvF,KAAM6nB,GAAO,OAAOy/B,EAAU3f,GAC7C9+B,EAAStD,MAAM,KAAM,CAAC,MAAMqO,OAAOiU,GACvC,EACAy/B,EAAU3f,EACd,CAsBA,SAASipB,GAAQvL,EAAU18C,EAAME,GAC7B8nD,GAAStL,GAAU,WACf,OAAQ18C,EAAKpD,MAAMvF,KAAMwF,UAC7B,GAAGqD,EACP,CAsCA,SAASgoD,GAAOloD,EAAMsoC,EAAIpoC,GACtBA,EAAWs9C,GAASt9C,GAAYlC,GAChC,IAAI6pD,EAAMxO,EAAU/Q,GAChBwf,EAAQzO,EAAUr5C,GAEtB,SAASg/B,EAAKlb,GACV,GAAIA,EAAK,OAAO5jB,EAAS4jB,GACzBgkC,EAAM9hB,EACV,CAEA,SAASA,EAAMliB,EAAKikC,GAChB,OAAIjkC,EAAY5jB,EAAS4jB,GACpBikC,OACLF,EAAI7oB,GADe9+B,EAAS,KAEhC,CAEA4nD,EAAM9hB,EACV,CAEA,SAASmiB,GAAczL,GACnB,OAAO,SAAUz8C,EAAOmE,EAAOlE,GAC3B,OAAOw8C,EAASz8C,EAAOC,EAC3B,CACJ,CA2DA,SAASkoD,GAAUlL,EAAMR,EAAUx8C,GAC/Bo+C,GAAOpB,EAAMiL,GAAc9O,EAAUqD,IAAYx8C,EACrD,CAsBA,SAASmoD,GAAYnL,EAAMrzC,EAAO6yC,EAAUx8C,GACxCu9C,GAAa5zC,EAAb4zC,CAAoBP,EAAMiL,GAAc9O,EAAUqD,IAAYx8C,EAClE,CAqBA,IAAIooD,GAAatK,GAAQqK,GAAa,GAqCtC,SAASE,GAAYjgB,GACjB,OAAI6Q,EAAQ7Q,GAAYA,EACjB+P,GAAc,SAAUn5B,EAAMhf,GACjC,IAAIsoD,GAAO,EACXtpC,EAAKpU,MAAK,WACN,IAAI29C,EAAY5rD,UACZ2rD,EACAzP,GAAe,WACX74C,EAAStD,MAAM,KAAM6rD,EACzB,IAEAvoD,EAAStD,MAAM,KAAM6rD,EAE7B,IACAngB,EAAG1rC,MAAMvF,KAAM6nB,GACfspC,GAAO,CACX,GACJ,CAEA,SAASE,GAAMtxD,GACX,OAAQA,CACZ,CA8BA,IAAI2Q,GAAQw2C,GAAW2I,GAAcwB,GAAOA,KAsBxCC,GAAa9J,GAAgBqI,GAAcwB,GAAOA,KAqBlDE,GAAc5K,GAAQ2K,GAAY,GAStC,SAASE,GAAa1wD,GACpB,OAAO,SAASkU,GACd,OAAiB,MAAVA,OAAiBpU,EAAYoU,EAAOlU,EAC7C,CACF,CAEA,SAAS2wD,GAAYtP,EAAQx0C,EAAK03C,EAAUx8C,GACxC,IAAI6oD,EAAc,IAAI1wD,MAAM2M,EAAIxM,QAChCghD,EAAOx0C,GAAK,SAAUwvB,EAAGpwB,EAAOlE,GAC5Bw8C,EAASloB,GAAG,SAAU1Q,EAAK1sB,GACvB2xD,EAAY3kD,KAAWhN,EACvB8I,EAAS4jB,EACb,GACJ,IAAG,SAAUA,GACT,GAAIA,EAAK,OAAO5jB,EAAS4jB,GAEzB,IADA,IAAI26B,EAAU,GACLlmD,EAAI,EAAGA,EAAIyM,EAAIxM,OAAQD,IACxBwwD,EAAYxwD,IAAIkmD,EAAQ3zC,KAAK9F,EAAIzM,IAEzC2H,EAAS,KAAMu+C,EACnB,GACJ,CAEA,SAASuK,GAAcxP,EAAQ0D,EAAMR,EAAUx8C,GAC3C,IAAIu+C,EAAU,GACdjF,EAAO0D,GAAM,SAAU1oB,EAAGpwB,EAAOlE,GAC7Bw8C,EAASloB,GAAG,SAAU1Q,EAAK1sB,GACnB0sB,EACA5jB,EAAS4jB,IAEL1sB,GACAqnD,EAAQ3zC,KAAK,CAAC1G,MAAOA,EAAOnE,MAAOu0B,IAEvCt0B,IAER,GACJ,IAAG,SAAU4jB,GACLA,EACA5jB,EAAS4jB,GAET5jB,EAAS,KAAMqhD,GAAS9C,EAAQwK,MAAK,SAAUv6C,EAAGC,GAC9C,OAAOD,EAAEtK,MAAQuK,EAAEvK,KACvB,IAAIykD,GAAa,UAEzB,GACJ,CAEA,SAASK,GAAQ1P,EAAQ0D,EAAMR,EAAUx8C,IACxBw6C,EAAYwC,GAAQ4L,GAAcE,IACxCxP,EAAQ0D,EAAM7D,EAAUqD,GAAWx8C,GAAYlC,EAC1D,CA6BA,IAAI2Z,GAAS4mC,GAAW2K,IAqBpBC,GAActK,GAAgBqK,IAmB9BE,GAAepL,GAAQmL,GAAa,GA+BxC,SAASE,GAAQ/gB,EAAIghB,GACjB,IAAI/W,EAAOiL,GAAS8L,GAAWtrD,GAC3BuiD,EAAOlH,EAAUkP,GAAYjgB,KAEjC,SAAStJ,EAAKlb,GACV,GAAIA,EAAK,OAAOyuB,EAAKzuB,GACrBy8B,EAAKvhB,EACT,CACAA,EACJ,CAqBA,IAAIuqB,GAAe,SAASrM,EAAMrzC,EAAO6yC,EAAUx8C,GAC/CA,EAAWA,GAAYlC,EACvB,IAAI2gD,EAAYtF,EAAUqD,GAC1BoC,GAAS5B,EAAMrzC,GAAO,SAASwW,EAAKngB,GAChCy+C,EAAUt+B,GAAK,SAASyD,EAAK3rB,GACzB,OAAI2rB,EAAY5jB,EAAS4jB,GAClB5jB,EAAS,KAAM,CAAC/H,IAAKA,EAAKkoB,IAAKA,GAC1C,GACJ,IAAG,SAASyD,EAAKgjC,GAKb,IAJA,IAAInqD,EAAS,CAAC,EAEVqL,EAAiB3G,OAAOrK,UAAUgR,eAE7BzP,EAAI,EAAGA,EAAIuuD,EAAWtuD,OAAQD,IACnC,GAAIuuD,EAAWvuD,GAAI,CACf,IAAIJ,EAAM2uD,EAAWvuD,GAAGJ,IACpBkoB,EAAMymC,EAAWvuD,GAAG8nB,IAEpBrY,EAAe/N,KAAK0C,EAAQxE,GAC5BwE,EAAOxE,GAAK2S,KAAKuV,GAEjB1jB,EAAOxE,GAAO,CAACkoB,EAEvB,CAGJ,OAAOngB,EAAS4jB,EAAKnnB,EACzB,GACJ,EAsCI6sD,GAAUxL,GAAQuL,GAAc3qD,KAqBhC6qD,GAAgBzL,GAAQuL,GAAc,GA6BtCxrD,GAAM2pD,GAAY,OAuBtB,SAASgC,GAAev+C,EAAKtB,EAAO6yC,EAAUx8C,GAC1CA,EAAW26C,EAAK36C,GAAYlC,GAC5B,IAAI2rD,EAAS,CAAC,EACVhL,EAAYtF,EAAUqD,GAC1BqB,GAAY5yC,EAAKtB,GAAO,SAASwW,EAAKloB,EAAK6mC,GACvC2f,EAAUt+B,EAAKloB,GAAK,SAAU2rB,EAAKnnB,GAC/B,GAAImnB,EAAK,OAAOkb,EAAKlb,GACrB6lC,EAAOxxD,GAAOwE,EACdqiC,GACJ,GACJ,IAAG,SAAUlb,GACT5jB,EAAS4jB,EAAK6lC,EAClB,GACJ,CA+CA,IAAIC,GAAY5L,GAAQ0L,GAAgB9qD,KAqBpCirD,GAAkB7L,GAAQ0L,GAAgB,GAE9C,SAASld,GAAIrhC,EAAKhT,GACd,OAAOA,KAAOgT,CAClB,CAuCA,SAAS2+C,GAAQxhB,EAAIyhB,GACjB,IAAIvT,EAAOn1C,OAAOC,OAAO,MACrB0oD,EAAS3oD,OAAOC,OAAO,MAC3ByoD,EAASA,GAAU9C,GACnB,IAAIY,EAAMxO,EAAU/Q,GAChB2hB,EAAW5R,GAAc,SAAkBn5B,EAAMhf,GACjD,IAAI/H,EAAM4xD,EAAOntD,MAAM,KAAMsiB,GACzBstB,GAAIgK,EAAMr+C,GACV4gD,GAAe,WACX74C,EAAStD,MAAM,KAAM45C,EAAKr+C,GAC9B,IACOq0C,GAAIwd,EAAQ7xD,GACnB6xD,EAAO7xD,GAAK2S,KAAK5K,IAEjB8pD,EAAO7xD,GAAO,CAAC+H,GACf2nD,EAAIjrD,MAAM,KAAMsiB,EAAKjU,QAAO,WACxB,IAAIiU,EAAOxjB,EAAMmB,WACjB25C,EAAKr+C,GAAO+mB,EACZ,IAAIyN,EAAIq9B,EAAO7xD,UACR6xD,EAAO7xD,GACd,IAAK,IAAII,EAAI,EAAGw8B,EAAIpI,EAAEn0B,OAAQD,EAAIw8B,EAAGx8B,IACjCo0B,EAAEp0B,GAAGqE,MAAM,KAAMsiB,EAEzB,KAER,IAGA,OAFA+qC,EAASzT,KAAOA,EAChByT,EAASC,WAAa5hB,EACf2hB,CACX,CA2CA,IAAIvR,GAAWG,EARXJ,EACWhS,EAAQiS,SACZH,EACIC,aAEAG,GAKf,SAASwR,GAAU3Q,EAAQqG,EAAO3/C,GAC9BA,EAAWA,GAAYlC,EACvB,IAAIygD,EAAU/D,EAAYmF,GAAS,GAAK,CAAC,EAEzCrG,EAAOqG,GAAO,SAAUU,EAAMpoD,EAAK+H,GAC/Bm5C,EAAUkH,EAAVlH,EAAgB,SAAUv1B,EAAKnnB,GACvBE,UAAUrE,OAAS,IACnBmE,EAASjB,EAAMmB,UAAW,IAE9B4hD,EAAQtmD,GAAOwE,EACfuD,EAAS4jB,EACb,GACJ,IAAG,SAAUA,GACT5jB,EAAS4jB,EAAK26B,EAClB,GACJ,CAuEA,SAAS2L,GAAcvK,EAAO3/C,GAC1BiqD,GAAU7L,GAAQuB,EAAO3/C,EAC7B,CAqBA,SAASmqD,GAAgBxK,EAAOh2C,EAAO3J,GACnCiqD,GAAU1M,GAAa5zC,GAAQg2C,EAAO3/C,EAC1C,CA2GA,IAAIoqD,GAAU,SAAU5F,EAAQ5E,GAC5B,IAAI8E,EAAUvL,EAAUqL,GACxB,OAAOD,IAAM,SAAUj1C,EAAOoqC,GAC1BgL,EAAQp1C,EAAM,GAAIoqC,EACtB,GAAGkG,EAAa,EACpB,EAyBIyK,GAAgB,SAAS7F,EAAQ5E,GAEjC,IAAInzB,EAAI29B,GAAQ5F,EAAQ5E,GA4CxB,OAzCAnzB,EAAE7hB,KAAO,SAAS3T,EAAMqzD,EAAUtqD,GAE9B,GADgB,MAAZA,IAAkBA,EAAWlC,GACT,mBAAbkC,EACP,MAAM,IAAI3I,MAAM,oCAMpB,GAJAo1B,EAAEu4B,SAAU,EACP5sD,EAAQnB,KACTA,EAAO,CAACA,IAEQ,IAAhBA,EAAKqB,OAEL,OAAOugD,GAAe,WAClBpsB,EAAEy4B,OACN,IAGJoF,EAAWA,GAAY,EAEvB,IADA,IAAIC,EAAW99B,EAAE04B,OAAOhB,KACjBoG,GAAYD,GAAYC,EAASD,UACpCC,EAAWA,EAASzrB,KAGxB,IAAK,IAAIzmC,EAAI,EAAGw8B,EAAI59B,EAAKqB,OAAQD,EAAIw8B,EAAGx8B,IAAK,CACzC,IAAIyR,EAAO,CACP7S,KAAMA,EAAKoB,GACXiyD,SAAUA,EACVtqD,SAAUA,GAGVuqD,EACA99B,EAAE04B,OAAOe,aAAaqE,EAAUzgD,GAEhC2iB,EAAE04B,OAAOv6C,KAAKd,EAEtB,CACA+uC,EAAepsB,EAAE8Z,QACrB,SAGO9Z,EAAEtE,QAEFsE,CACX,EAsCA,SAAS+9B,GAAK7K,EAAO3/C,GAEjB,GADAA,EAAW26C,EAAK36C,GAAYlC,IACvB1F,EAAQunD,GAAQ,OAAO3/C,EAAS,IAAI8/B,UAAU,yDACnD,IAAK6f,EAAMrnD,OAAQ,OAAO0H,IAC1B,IAAK,IAAI3H,EAAI,EAAGw8B,EAAI8qB,EAAMrnD,OAAQD,EAAIw8B,EAAGx8B,IACrC8gD,EAAUwG,EAAMtnD,GAAhB8gD,CAAoBn5C,EAE5B,CAwBA,SAASyqD,GAAav+C,EAAOoqC,EAAMkG,EAAUx8C,GAEzCqmD,GADe7qD,EAAM0Q,GAAOgY,UACXoyB,EAAMkG,EAAUx8C,EACrC,CAyCA,SAAS0qD,GAAQtiB,GACb,IAAIuf,EAAMxO,EAAU/Q,GACpB,OAAO+P,GAAc,SAAmBn5B,EAAM2rC,GAe1C,OAdA3rC,EAAKpU,MAAK,SAAkBlR,EAAOkxD,GAI3B,IAAI7qD,EAHJrG,EACAixD,EAAgB,KAAM,CAAEjxD,MAAOA,KAI3BqG,EADApD,UAAUrE,QAAU,EACZsyD,EAEApvD,EAAMmB,UAAW,GAE7BguD,EAAgB,KAAM,CAAE5qD,MAAOA,IAEvC,IAEO4nD,EAAIjrD,MAAMvF,KAAM6nB,EAC3B,GACJ,CAqEA,SAAS6rC,GAAWlL,GAChB,IAAIpB,EASJ,OARInmD,EAAQunD,GACRpB,EAAU8C,GAAS1B,EAAO+K,KAE1BnM,EAAU,CAAC,EACXY,GAAWQ,GAAO,SAASU,EAAMpoD,GAC7BsmD,EAAQtmD,GAAOyyD,GAAQ3wD,KAAK5C,KAAMkpD,EACtC,KAEG9B,CACX,CAEA,SAASuM,GAASxR,EAAQx0C,EAAK03C,EAAUx8C,GACrCgpD,GAAQ1P,EAAQx0C,GAAK,SAAS/E,EAAO25C,GACjC8C,EAASz8C,GAAO,SAAS6jB,EAAK1sB,GAC1BwiD,EAAG91B,GAAM1sB,EACb,GACJ,GAAG8I,EACP,CA6BA,IAAI+qD,GAAS1M,GAAWyM,IAqBpBE,GAAcrM,GAAgBmM,IAmB9BG,GAAenN,GAAQkN,GAAa,GAqBxC,SAASE,GAAWnrD,GAClB,OAAO,WACL,OAAOA,CACT,CACF,CAsFA,SAASorD,GAAMxtD,EAAM0iD,EAAMrgD,GACvB,IAAIorD,EAAgB,EAChBC,EAAmB,EAEnBnwD,EAAU,CACVowD,MAAOF,EACPG,aAAcL,GAAWG,IAG7B,SAASG,EAAW1xB,EAAK7tB,GACrB,GAAiB,iBAANA,EACP6tB,EAAIwxB,OAASr/C,EAAEq/C,OAASF,EAExBtxB,EAAIyxB,aAAqC,mBAAft/C,EAAEw/C,SACxBx/C,EAAEw/C,SACFP,IAAYj/C,EAAEw/C,UAAYJ,GAE9BvxB,EAAI4xB,YAAcz/C,EAAEy/C,gBACjB,IAAiB,iBAANz/C,GAA+B,iBAANA,EAGvC,MAAM,IAAI5U,MAAM,qCAFhByiC,EAAIwxB,OAASr/C,GAAKm/C,CAGtB,CACJ,CAUA,GARIzuD,UAAUrE,OAAS,GAAqB,mBAATqF,GAC/BqC,EAAWqgD,GAAQviD,EACnBuiD,EAAO1iD,IAEP6tD,EAAWtwD,EAASyC,GACpBqC,EAAWA,GAAYlC,GAGP,mBAATuiD,EACP,MAAM,IAAIhpD,MAAM,qCAGpB,IAAIs0D,EAAQxS,EAAUkH,GAElBuL,EAAU,EACd,SAASC,IACLF,GAAM,SAAS/nC,GACPA,GAAOgoC,IAAY1wD,EAAQowD,QACI,mBAAvBpwD,EAAQwwD,aACZxwD,EAAQwwD,YAAY9nC,IACxB80B,WAAWmT,EAAc3wD,EAAQqwD,aAAaK,IAE9C5rD,EAAStD,MAAM,KAAMC,UAE7B,GACJ,CAEAkvD,GACJ,CA8BA,IAAIC,GAAY,SAAUnuD,EAAM0iD,GACvBA,IACDA,EAAO1iD,EACPA,EAAO,MAEX,IAAIguD,EAAQxS,EAAUkH,GACtB,OAAOlI,GAAc,SAAUn5B,EAAMhf,GACjC,SAAS0gD,EAAOhH,GACZiS,EAAMjvD,MAAM,KAAMsiB,EAAKjU,OAAO2uC,GAClC,CAEI/7C,EAAMwtD,GAAMxtD,EAAM+iD,EAAQ1gD,GACzBmrD,GAAMzK,EAAQ1gD,EAEvB,GACJ,EAkEA,SAAS+rD,GAAOpM,EAAO3/C,GACnBiqD,GAAU7D,GAAczG,EAAO3/C,EACnC,CAgCA,IAAIkiB,GAAOm8B,GAAW2I,GAAcjmB,QAASgmB,KAuBzCiF,GAAYrN,GAAgBqI,GAAcjmB,QAASgmB,KAsBnDkF,GAAanO,GAAQkO,GAAW,GAiDpC,SAASE,GAAQlP,EAAMR,EAAUx8C,GAC7B,IAAIy+C,EAAYtF,EAAUqD,GAW1B,SAAS2P,EAAWxiC,EAAMC,GACtB,IAAIpb,EAAImb,EAAKyiC,SAAU39C,EAAImb,EAAMwiC,SACjC,OAAO59C,EAAIC,GAAK,EAAID,EAAIC,EAAI,EAAI,CACpC,CAbAhE,GAAIuyC,GAAM,SAAU1oB,EAAGt0B,GACnBy+C,EAAUnqB,GAAG,SAAU1Q,EAAKwoC,GACxB,GAAIxoC,EAAK,OAAO5jB,EAAS4jB,GACzB5jB,EAAS,KAAM,CAACD,MAAOu0B,EAAG83B,SAAUA,GACxC,GACJ,IAAG,SAAUxoC,EAAK26B,GACd,GAAI36B,EAAK,OAAO5jB,EAAS4jB,GACzB5jB,EAAS,KAAMqhD,GAAS9C,EAAQwK,KAAKoD,GAAaxD,GAAa,UACnE,GAMJ,CA2CA,SAAS0D,GAAQjT,EAASkT,EAAcC,GACpC,IAAInkB,EAAK+Q,EAAUC,GAEnB,OAAOjB,GAAc,SAAUn5B,EAAMhf,GACjC,IACIwsD,EADAC,GAAW,EAcfztC,EAAKpU,MAAK,WACD6hD,IACDzsD,EAAStD,MAAM,KAAMC,WACrB+vD,aAAaF,GAErB,IAGAA,EAAQ9T,YAnBR,WACI,IAAI39C,EAAOq+C,EAAQr+C,MAAQ,YACvBrB,EAAS,IAAIrC,MAAM,sBAAwB0D,EAAO,gBACtDrB,EAAMsL,KAAO,YACTunD,IACA7yD,EAAM6yD,KAAOA,GAEjBE,GAAW,EACXzsD,EAAStG,EACb,GAUoC4yD,GACpClkB,EAAG1rC,MAAM,KAAMsiB,EACnB,GACJ,CAGA,IAAI2tC,GAAa/6C,KAAKsY,KAClB0iC,GAAYh7C,KAAK8X,IAyCrB,SAASmjC,GAAU9iD,EAAOJ,EAAO6yC,EAAUx8C,GACvC,IAAIy+C,EAAYtF,EAAUqD,GAC1BoC,GA9BJ,SAAmBz9B,EAAO2F,EAAKgmC,EAAM9N,GAKnC,IAJA,IAAI96C,GAAS,EACT5L,EAASs0D,GAAUD,IAAY7lC,EAAM3F,IAAU2rC,GAAQ,IAAK,GAC5DrwD,EAAStE,MAAMG,GAEZA,KACLmE,EAAOuiD,EAAY1mD,IAAW4L,GAASid,EACvCA,GAAS2rC,EAEX,OAAOrwD,CACT,CAoBaswD,CAAU,EAAGhjD,EAAO,GAAIJ,EAAO80C,EAAWz+C,EACvD,CAkCA,IAAIsrD,GAAQxN,GAAQ+O,GAAWnuD,KAgB3BsuD,GAAclP,GAAQ+O,GAAW,GA4CrC,SAASv3B,GAAW0nB,EAAMiQ,EAAazQ,EAAUx8C,GACzCrD,UAAUrE,QAAU,IACpB0H,EAAWw8C,EACXA,EAAWyQ,EACXA,EAAc70D,EAAQ4kD,GAAQ,GAAK,CAAC,GAExCh9C,EAAW26C,EAAK36C,GAAYlC,GAC5B,IAAI2gD,EAAYtF,EAAUqD,GAE1B4B,GAAOpB,GAAM,SAAS9lD,EAAGyT,EAAG+uC,GACxB+E,EAAUwO,EAAa/1D,EAAGyT,EAAG+uC,EACjC,IAAG,SAAS91B,GACR5jB,EAAS4jB,EAAKqpC,EAClB,GACJ,CAuCA,SAASC,GAAQvN,EAAO3/C,GACpB,IACIvD,EADA/C,EAAQ,KAEZsG,EAAWA,GAAYlC,EACvBsqD,GAAWzI,GAAO,SAASU,EAAMrgD,GAC7Bm5C,EAAUkH,EAAVlH,EAAgB,SAAUv1B,EAAK9pB,GAEvB2C,EADAE,UAAUrE,OAAS,EACVkD,EAAMmB,UAAW,GAEjB7C,EAEbJ,EAAQkqB,EACR5jB,GAAU4jB,EACd,GACJ,IAAG,WACC5jB,EAAStG,EAAO+C,EACpB,GACJ,CAeA,SAAS0wD,GAAU/kB,GACf,OAAO,WACH,OAAQA,EAAG4hB,YAAc5hB,GAAI1rC,MAAM,KAAMC,UAC7C,CACJ,CAoCA,SAASywD,GAAOttD,EAAM08C,EAAUx8C,GAC5BA,EAAWs9C,GAASt9C,GAAYlC,GAChC,IAAI2gD,EAAYtF,EAAUqD,GAC1B,IAAK18C,IAAQ,OAAOE,EAAS,MAC7B,IAAI8+B,EAAO,SAASlb,GAChB,GAAIA,EAAK,OAAO5jB,EAAS4jB,GACzB,GAAI9jB,IAAQ,OAAO2+C,EAAU3f,GAC7B,IAAI9f,EAAOxjB,EAAMmB,UAAW,GAC5BqD,EAAStD,MAAM,KAAM,CAAC,MAAMqO,OAAOiU,GACvC,EACAy/B,EAAU3f,EACd,CAwBA,SAASuuB,GAAMvtD,EAAM08C,EAAUx8C,GAC3BotD,IAAO,WACH,OAAQttD,EAAKpD,MAAMvF,KAAMwF,UAC7B,GAAG6/C,EAAUx8C,EACjB,CA2DA,IAAIstD,GAAY,SAAS3N,EAAO3/C,GAE5B,GADAA,EAAW26C,EAAK36C,GAAYlC,IACvB1F,EAAQunD,GAAQ,OAAO3/C,EAAS,IAAI3I,MAAM,8DAC/C,IAAKsoD,EAAMrnD,OAAQ,OAAO0H,IAC1B,IAAIutD,EAAY,EAEhB,SAASC,EAASxuC,GACd,IAAIqhC,EAAOlH,EAAUwG,EAAM4N,MAC3BvuC,EAAKpU,KAAK0yC,GAASxe,IACnBuhB,EAAK3jD,MAAM,KAAMsiB,EACrB,CAEA,SAAS8f,EAAKlb,GACV,GAAIA,GAAO2pC,IAAc5N,EAAMrnD,OAC3B,OAAO0H,EAAStD,MAAM,KAAMC,WAEhC6wD,EAAShyD,EAAMmB,UAAW,GAC9B,CAEA6wD,EAAS,GACb,EAmEItpD,GAAQ,CACRxH,MAAOA,EACPgiD,UAAWA,GACXI,gBAAiBA,GACjBhG,SAAUA,EACV4G,KAAMA,GACN+D,WAAYA,GACZqC,MAAOA,GACPW,QAASA,GACT17C,OAAQA,GACR47C,YAAaA,GACbE,aAAcA,GACdC,SAAUA,GACVO,OAAQA,GACRC,YAAaA,GACbC,aAAcA,GACdE,IAAKA,GACLC,SAAUA,GACVK,QAASA,GACTD,SAAUA,GACVE,OAAQA,GACRyF,KAAMvF,GACNA,UAAWC,GACX/J,OAAQA,GACRP,YAAaA,GACbuI,aAAcA,GACdgC,WAAYA,GACZC,YAAaA,GACbxgD,MAAOA,GACP4gD,WAAYA,GACZC,YAAaA,GACbjxC,OAAQA,GACRwxC,YAAaA,GACbC,aAAcA,GACdC,QAASA,GACTG,QAASA,GACTD,aAAcA,GACdE,cAAeA,GACf1rD,IAAKA,GACL4M,IAAKA,GACLm0C,SAAUA,GACVC,UAAWA,GACX6K,UAAWA,GACXF,eAAgBA,GAChBG,gBAAiBA,GACjBC,QAASA,GACTpR,SAAUA,GACVkV,SAAUxD,GACVA,cAAeC,GACfE,cAAeA,GACf9F,MAAO6F,GACPI,KAAMA,GACNnE,OAAQA,GACRoE,YAAaA,GACbC,QAASA,GACTG,WAAYA,GACZE,OAAQA,GACRC,YAAaA,GACbC,aAAcA,GACdE,MAAOA,GACPW,UAAWA,GACXprB,IAAKA,GACLqrB,OAAQA,GACRzT,aAAcO,EACd32B,KAAMA,GACN8pC,UAAWA,GACXC,WAAYA,GACZC,OAAQA,GACRG,QAASA,GACTf,MAAOA,GACPqC,WAAYd,GACZG,YAAaA,GACb13B,UAAWA,GACX43B,QAASA,GACTC,UAAWA,GACXE,MAAOA,GACPC,UAAWA,GACXF,OAAQA,GAGR/iD,IAAKxC,GACL+lD,SAAUnF,GACVoF,UAAWnF,GACXtpC,IAAK8C,GACL4rC,SAAU9B,GACV+B,UAAW9B,GACX+B,KAAM3G,GACN4G,UAAW3G,GACX4G,WAAY3G,GACZh9C,QAAS29C,GACTiG,cAAe/F,GACfgG,aAAcjG,GACdkG,UAAWjQ,GACXkQ,gBAAiBlI,GACjBmI,eAAgB1Q,GAChB2Q,OAAQnI,GACRoI,MAAOpI,GACPqI,MAAOjE,GACPkE,OAAQl3C,GACRm3C,YAAa3F,GACb4F,aAAc3F,GACd4F,SAAUhW,GAGdliD,EAAiB,QAAIsN,GACrBtN,EAAQ8F,MAAQA,EAChB9F,EAAQ8nD,UAAYA,GACpB9nD,EAAQkoD,gBAAkBA,GAC1BloD,EAAQkiD,SAAWA,EACnBliD,EAAQ8oD,KAAOA,GACf9oD,EAAQ6sD,WAAaA,GACrB7sD,EAAQkvD,MAAQA,GAChBlvD,EAAQ6vD,QAAUA,GAClB7vD,EAAQmU,OAASA,GACjBnU,EAAQ+vD,YAAcA,GACtB/vD,EAAQiwD,aAAeA,GACvBjwD,EAAQkwD,SAAWA,GACnBlwD,EAAQywD,OAASA,GACjBzwD,EAAQ0wD,YAAcA,GACtB1wD,EAAQ2wD,aAAeA,GACvB3wD,EAAQ6wD,IAAMA,GACd7wD,EAAQ8wD,SAAWA,GACnB9wD,EAAQmxD,QAAUA,GAClBnxD,EAAQkxD,SAAWA,GACnBlxD,EAAQoxD,OAASA,GACjBpxD,EAAQ62D,KAAOvF,GACftxD,EAAQsxD,UAAYC,GACpBvxD,EAAQwnD,OAASA,GACjBxnD,EAAQinD,YAAcA,GACtBjnD,EAAQwvD,aAAeA,GACvBxvD,EAAQwxD,WAAaA,GACrBxxD,EAAQyxD,YAAcA,GACtBzxD,EAAQiR,MAAQA,GAChBjR,EAAQ6xD,WAAaA,GACrB7xD,EAAQ8xD,YAAcA,GACtB9xD,EAAQ6gB,OAASA,GACjB7gB,EAAQqyD,YAAcA,GACtBryD,EAAQsyD,aAAeA,GACvBtyD,EAAQuyD,QAAUA,GAClBvyD,EAAQ0yD,QAAUA,GAClB1yD,EAAQyyD,aAAeA,GACvBzyD,EAAQ2yD,cAAgBA,GACxB3yD,EAAQiH,IAAMA,GACdjH,EAAQ6T,IAAMA,GACd7T,EAAQgoD,SAAWA,GACnBhoD,EAAQioD,UAAYA,GACpBjoD,EAAQ8yD,UAAYA,GACpB9yD,EAAQ4yD,eAAiBA,GACzB5yD,EAAQ+yD,gBAAkBA,GAC1B/yD,EAAQgzD,QAAUA,GAClBhzD,EAAQ4hD,SAAWA,GACnB5hD,EAAQ82D,SAAWxD,GACnBtzD,EAAQszD,cAAgBC,GACxBvzD,EAAQyzD,cAAgBA,GACxBzzD,EAAQ2tD,MAAQ6F,GAChBxzD,EAAQ4zD,KAAOA,GACf5zD,EAAQyvD,OAASA,GACjBzvD,EAAQ6zD,YAAcA,GACtB7zD,EAAQ8zD,QAAUA,GAClB9zD,EAAQi0D,WAAaA,GACrBj0D,EAAQm0D,OAASA,GACjBn0D,EAAQo0D,YAAcA,GACtBp0D,EAAQq0D,aAAeA,GACvBr0D,EAAQu0D,MAAQA,GAChBv0D,EAAQk1D,UAAYA,GACpBl1D,EAAQ8pC,IAAMA,GACd9pC,EAAQm1D,OAASA,GACjBn1D,EAAQ0hD,aAAeO,EACvBjiD,EAAQsrB,KAAOA,GACftrB,EAAQo1D,UAAYA,GACpBp1D,EAAQq1D,WAAaA,GACrBr1D,EAAQs1D,OAASA,GACjBt1D,EAAQy1D,QAAUA,GAClBz1D,EAAQ00D,MAAQA,GAChB10D,EAAQ+2D,WAAad,GACrBj2D,EAAQo2D,YAAcA,GACtBp2D,EAAQ0+B,UAAYA,GACpB1+B,EAAQs2D,QAAUA,GAClBt2D,EAAQu2D,UAAYA,GACpBv2D,EAAQy2D,MAAQA,GAChBz2D,EAAQ02D,UAAYA,GACpB12D,EAAQw2D,OAASA,GACjBx2D,EAAQyT,IAAMxC,GACdjR,EAAQg3D,SAAWnF,GACnB7xD,EAAQi3D,UAAYnF,GACpB9xD,EAAQwoB,IAAM8C,GACdtrB,EAAQk3D,SAAW9B,GACnBp1D,EAAQm3D,UAAY9B,GACpBr1D,EAAQo3D,KAAO3G,GACfzwD,EAAQq3D,UAAY3G,GACpB1wD,EAAQs3D,WAAa3G,GACrB3wD,EAAQ2T,QAAU29C,GAClBtxD,EAAQu3D,cAAgB/F,GACxBxxD,EAAQw3D,aAAejG,GACvBvxD,EAAQy3D,UAAYjQ,GACpBxnD,EAAQ03D,gBAAkBlI,GAC1BxvD,EAAQ23D,eAAiB1Q,GACzBjnD,EAAQ43D,OAASnI,GACjBzvD,EAAQ63D,MAAQpI,GAChBzvD,EAAQ83D,MAAQjE,GAChB7zD,EAAQ+3D,OAASl3C,GACjB7gB,EAAQg4D,YAAc3F,GACtBryD,EAAQi4D,aAAe3F,GACvBtyD,EAAQk4D,SAAWhW,EAEnB33C,OAAOg/B,eAAevpC,EAAS,aAAc,CAAEmJ,OAAO,GAErD,CA1+KgEgvD,CAAQn4D,oBCoBzE,IAAIo4D,EAAS,EAAQ,OACjB7mD,EAAQ,cAORI,EACF,CAAE,MACA,WACA,UACA,eACA,aACA,SACA,iBACA,UACA,WACA,UACA,YACA,aACA,WACA,WAYJ,SAAS0mD,EAAe/zD,GACtB,MAAO,OAASA,EAAQjD,IAAM,IAAMiwB,EAAKhtB,EAC3C,CAaA,SAASg0D,EAAUh0D,GACjB,OAAO8zD,EAAOG,WAAW,OAAQj0D,EAAQk0D,QAAQC,OAAOn0D,EAAQ1B,SAAS81D,OAAO,SAClF,CAYA,SAASpnC,EAAMhtB,GAEb,OADAA,EAAQ1B,QAAU+1D,EAAar0D,GACxBg0D,EAASh0D,EAClB,CAoCA,SAASq0D,EAAcr0D,GACrB,IAAIs0D,EAAUt0D,EAAQu0D,eAAiB,GASvC,OARID,IAASA,GAAW,MAEtB,CAAEt0D,EAAQw0D,KACRx0D,EAAQy0D,IACRz0D,EAAQ00D,YACR10D,EAAQkH,KAAOlH,EAAQkH,KAAKytD,cAAgB,GAC5CL,EAAUt0D,EAAQ40D,UAEb/nD,KAAK,KAChB,CAiBA,SAASgoD,EAAmB70D,GAC1B,MAAO,YAAcA,EAAQkH,KAAO,KAAOlH,EAAQ40D,QACrD,CA9FAn5D,EAAOC,QAAUq4D,EACjBt4D,EAAOC,QAAQq4D,cAAgBA,EAc/Bt4D,EAAOC,QAAQs4D,SAAWA,EAc1Bv4D,EAAOC,QAAQsxB,KAAOA,EAgBtBvxB,EAAOC,QAAQo5D,UAJf,SAAoB90D,GAElB,OADAA,EAAQ1B,QAAUu2D,EAAkB70D,GAC7Bg0D,EAASh0D,EAClB,EAgCAvE,EAAOC,QAAQ24D,aAAeA,EAmB9B54D,EAAOC,QAAQm5D,kBAAoBA,EA8BnCp5D,EAAOC,QAAQq5D,oBAdf,SAA8BT,GAI5B,IAHA,IAAI5qC,EAAM,GACNsrC,EAAS/uD,OAAOoH,KAAKinD,GAEhBn3D,EAAI,EAAG6S,EAAMglD,EAAO53D,OAAQD,EAAI6S,IAAO7S,EAAG,CACjD,IAEI83D,EADAhwC,EAAMqvC,EADNW,EAAQD,EAAO73D,IAIf,KAFA83D,EAAQA,EAAMC,eAEF36C,QAAQ,UACxBmP,EAAIha,KAAKulD,EAAQ,IAAMhwC,EACzB,CACA,OAAOyE,EAAImkC,OAAOhhD,KAAK,KACzB,EA4BApR,EAAOC,QAAQy5D,qBAdf,SAA+BP,GAC7B,IAAI/uD,EAAMoH,EAAM2nD,GAAU,GACtBzuC,EAAOtgB,EAAIuvD,SACX1rC,EAAM,GASV,OANAzjB,OAAOoH,KAAKxH,EAAIwvD,OAAOhmD,SAAQ,SAAStS,GACtC,IAAMsQ,EAAKkN,QAAQxd,GAAnB,CACA,IAAIkoB,EAAM,IAAMpf,EAAIwvD,MAAMt4D,GAAO,GAAK,IAAMmW,mBAAmBrN,EAAIwvD,MAAMt4D,IACzE2sB,EAAIha,KAAK3S,EAAMkoB,EAFU,CAG3B,IAEOkB,GAAQuD,EAAItsB,OAAS,IAAMssB,EAAImkC,OAAOhhD,KAAK,KAAO,GAC3D,yCClNIyoD,EAAO55D,EACPmK,EAAM,EAAQ,MACd0vD,EAAc,EAAQ,OACtBzB,EAAS,EAAQ,OAEjB0B,EADM,EAAQ,MACKC,CAAI,KAI3B,SAASC,EAAK34D,EAAKmxB,EAAQynC,GACzB,OAAO7B,EAAOG,WAAW,SAAUl3D,GAAKo3D,OAAOjmC,EAAQ,QAAQkmC,OAAOuB,EACxE,CAEA,SAASxiD,EAAK+a,EAAQynC,GACpB,OAAO7B,EAAO8B,WAAW,UAAUzB,OAAOjmC,EAAQ,QAAQkmC,OAAOuB,EACnE,CAGA,SAASE,EAAcC,GACrB,OAAOA,EAAiB9mD,QAAQ,YAAY,SAAS5F,GACnD,MAAO,IAAMA,EAAE8G,WAAW,GAAGsa,SAAS,IAAIkB,aAC5C,GACF,CAEA,SAASqqC,EAAkB5uD,GACzB,OAAO0uD,EAAc3iD,mBAAmB/L,GAC1C,CAMA,IAAI6uD,EAAoB,CACtB,eAAiB,EACjB,YAAc,EACd,mBAAmB,EACnB,cAAc,EACd,QAAU,EACV,qBAAqB,EACrB,OAAS,GAKX,SAASC,EAAcC,EAASC,GAEP,iBAAZD,IAAsBA,EAAUrwD,EAAIoH,MAAMipD,IAErD,IAAI5B,EAAU4B,EAAQ5B,QAAW4B,EAAQ5B,SAAW,CAAC,EACjD8B,IAAcn6D,KAAKo6D,UAAYp6D,KAAKq6D,SAAWr6D,KAAKs6D,UAAUL,EAAQ/tD,UAAY+tD,EAAQM,MAAQlC,EAAQmC,MAAQnC,EAAQkC,MAE9Hv6D,KAAKi6D,QAAUA,EACfj6D,KAAKk6D,YAAcA,GAAel6D,KAAKy6D,qBAEvCz6D,KAAKo6D,QAAUH,EAAQG,SAAWD,EAAU,IAAM,GAClDn6D,KAAKq6D,OAASJ,EAAQI,QAAUF,EAAU,IAAM,YAG3B,UAAjBn6D,KAAKo6D,UAAqBp6D,KAAKo6D,QAAU,QAExCH,EAAQvxC,QAAUuxC,EAAQ70C,OAC7B60C,EAAQvxC,OAAS,QAEd2vC,EAAQmC,MAASnC,EAAQkC,OAC5BlC,EAAQmC,KAAOP,EAAQ/tD,UAAY+tD,EAAQM,MAAQv6D,KAAK06D,aAGpDT,EAAQU,OACVtC,EAAQmC,MAAQ,IAAMP,EAAQU,OAE7BV,EAAQ/tD,UAAa+tD,EAAQM,OAChCN,EAAQ/tD,SAAWmsD,EAAQmC,MAAQnC,EAAQkC,MAE7Cv6D,KAAK46D,gBAAmC,eAAjB56D,KAAKo6D,SAA+C,QAAnBH,EAAQvxC,OAEhE1oB,KAAK66D,qBAAuBZ,EAAQY,sBAAwB7wD,OAAOC,OAAO,MAC1EjK,KAAK86D,sBAAwBb,EAAQa,uBAAyB9wD,OAAOC,OAAO,KAC9E,CAEA+vD,EAAcr6D,UAAU26D,UAAY,SAASC,GAC3C,IACIJ,IADSI,GAAQ,IAAInvD,MAAM,oDACL,IAAI/G,MAAM,EAAG,GAQvC,GAHqB,OAAjB81D,EAAU,IAAgC,SAAjBA,EAAU,KACrCA,EAAYA,EAAUptC,WAEJ,MAAhBotC,EAAU,GACZA,EAAU,GAAK,KACfA,EAAU,GAAK,iBAEf,IAAK,IAAIj5D,EAAI,EAAGA,EAAI,EAAGA,IACrB,GAAI,OAAOyH,KAAKwxD,EAAUj5D,IAAK,CAC7Bi5D,EAAU,GAAKA,EAAUj5D,GAAGmD,MAAM,GAClC81D,EAAU,GAAK,KACf,KACF,CAIJ,OAAOA,CACT,EAGAH,EAAcr6D,UAAUo7D,eAAiB,WAEvC,MAAI,CAAC,KAAM,OAAOz8C,QAAQte,KAAKo6D,UAAY,GAAqB,cAAhBp6D,KAAKq6D,QAE9C,CAAC,aAAc,KAAM,UAAW,MAAO,eAAgB,OAC3D/7C,QAAQte,KAAKo6D,UAAY,CAC9B,EAEAJ,EAAcr6D,UAAU+6D,WAAa,WACnC,IAAIL,EAASr6D,KAAK+6D,iBAAmB,GAAK,IAAM/6D,KAAKq6D,OAErD,OADiC,QAAjBr6D,KAAKo6D,QAAoB,QAAUp6D,KAAKo6D,SACrCC,EAAS,gBAC9B,EAEAL,EAAcr6D,UAAUq7D,eAAiB,WACvCh7D,KAAKi7D,YAEL,IAAuD7B,EAAnDa,EAAUj6D,KAAKi6D,QAAS5B,EAAU4B,EAAQ5B,QAE1C4B,EAAQpB,WAEV74D,KAAKk7D,WAAW9B,MAAQA,EAAQp5D,KAAKk7D,WAAW9B,OAAS,CAAC,EAEtDp5D,KAAKk6D,YAAYiB,eACnB/B,EAAM,wBAA0Bp5D,KAAKk6D,YAAYiB,cAE9B,OAAjBn7D,KAAKo6D,SAAqBhB,EAAM,mBAClCA,EAAM,iBAAmB,OAEvBA,EAAM,cACRp5D,KAAKo7D,SAAWhC,EAAM,cAEtBA,EAAM,cAAgBp5D,KAAKq7D,cAE7BjC,EAAM,mBAAqB,mBAC3BA,EAAM,oBAAsBp5D,KAAKk6D,YAAYoB,YAAc,IAAMt7D,KAAKu7D,mBACtEnC,EAAM,uBAAyBp5D,KAAKw7D,kBAI/BvB,EAAQwB,oBAAuBz7D,KAAK46D,mBACnCX,EAAQ70C,MAASizC,EAAQ,iBAAoBA,EAAQ,kBACvDA,EAAQ,gBAAkB,qDAExB4B,EAAQ70C,MAASizC,EAAQ,mBAAsBA,EAAQ,oBACzDA,EAAQ,kBAAoBpyC,EAAOM,WAAW0zC,EAAQ70C,QAEpDplB,KAAKk6D,YAAYiB,cAAiB9C,EAAQ,yBAA4BA,EAAQ,0BAChFA,EAAQ,wBAA0Br4D,KAAKk6D,YAAYiB,cAEhC,OAAjBn7D,KAAKo6D,SAAqB/B,EAAQ,yBAA4BA,EAAQ,0BACxEA,EAAQ,wBAA0BnhD,EAAKlX,KAAKi6D,QAAQ70C,MAAQ,GAAI,QAE9DizC,EAAQ,eAAiBA,EAAQ,cACnCr4D,KAAKo7D,SAAW/C,EAAQ,eAAiBA,EAAQ,cAEjDA,EAAQ,cAAgBr4D,KAAKq7D,sBAG1BhD,EAAQqD,qBACRrD,EAAQP,cAEnB,EAEAkC,EAAcr6D,UAAUoxB,KAAO,WAW7B,OAVK/wB,KAAKk7D,YAAYl7D,KAAKg7D,iBAEvBh7D,KAAKi6D,QAAQpB,UACf74D,KAAKk7D,WAAW9B,MAAM,mBAAqBp5D,KAAK27D,YAEhD37D,KAAKi6D,QAAQ5B,QAAQqD,cAAgB17D,KAAK47D,aAG5C57D,KAAKi6D,QAAQ/vC,KAAOlqB,KAAK67D,aAElB77D,KAAKi6D,OACd,EAEAD,EAAcr6D,UAAU07D,YAAc,WACpC,IAAKr7D,KAAKo7D,SAAU,CAClB,IAAI/C,EAAUr4D,KAAKi6D,QAAQ5B,QACzBptD,EAAO,IAAIkkB,KAAKkpC,EAAQlpC,MAAQkpC,EAAQptD,MAAQ,IAAIkkB,MAEtDnvB,KAAKo7D,SAAWnwD,EAAK6wD,cAAc/oD,QAAQ,iBAAkB,IAGzD/S,KAAK46D,kBAAiB56D,KAAKo7D,SAAWp7D,KAAKo7D,SAAS/2D,MAAM,GAAI,GACpE,CACA,OAAOrE,KAAKo7D,QACd,EAEApB,EAAcr6D,UAAUo8D,QAAU,WAChC,OAAO/7D,KAAKq7D,cAAc/gB,OAAO,EAAG,EACtC,EAEA0f,EAAcr6D,UAAUi8D,WAAa,WACnC,MAAO,CACL,+BAAiC57D,KAAKk6D,YAAYoB,YAAc,IAAMt7D,KAAKu7D,mBAC3E,iBAAmBv7D,KAAKw7D,gBACxB,aAAex7D,KAAK27D,aACpB/qD,KAAK,KACT,EAEAopD,EAAcr6D,UAAUg8D,UAAY,WAClC,IAEIK,EAAOC,EAASC,EAFhBjxD,EAAOjL,KAAK+7D,UACZt4D,EAAW,CAACzD,KAAKk6D,YAAYiC,gBAAiBlxD,EAAMjL,KAAKq6D,OAAQr6D,KAAKo6D,SAASxpD,OACrDwrD,EAAe7C,EAAiB/0D,IAAIf,GAQlE,OAPK24D,IACHJ,EAAQvC,EAAK,OAASz5D,KAAKk6D,YAAYiC,gBAAiBlxD,GACxDgxD,EAAUxC,EAAKuC,EAAOh8D,KAAKq6D,QAC3B6B,EAAWzC,EAAKwC,EAASj8D,KAAKo6D,SAC9BgC,EAAe3C,EAAKyC,EAAU,gBAC9B3C,EAAiBnkB,IAAI3xC,EAAU24D,IAE1B3C,EAAK2C,EAAcp8D,KAAKo4D,eAAgB,MACjD,EAEA4B,EAAcr6D,UAAUy4D,aAAe,WACrC,MAAO,CACL,mBACAp4D,KAAKq7D,cACLr7D,KAAKu7D,mBACLrkD,EAAKlX,KAAKq8D,kBAAmB,QAC7BzrD,KAAK,KACT,EAEAopD,EAAcr6D,UAAU08D,gBAAkB,WACnCr8D,KAAKk7D,YAAYl7D,KAAKg7D,iBAE3B,IAQIsB,EARAC,EAAUv8D,KAAKk7D,WAAWhxC,KAC1BkvC,EAAQp5D,KAAKk7D,WAAW9B,MACxBf,EAAUr4D,KAAKi6D,QAAQ5B,QACvBmE,EAAW,GACXC,EAAiC,OAAjBz8D,KAAKo6D,QACrBsC,EAA8B,OAAjB18D,KAAKo6D,SAAoBp6D,KAAKi6D,QAAQ0C,gBACnDC,EAAuC,OAAjB58D,KAAKo6D,QAC3ByC,EAAgC,OAAjB78D,KAAKo6D,QAYxB,GAREkC,EADmB,OAAjBt8D,KAAKo6D,SAAoBp6D,KAAKi6D,QAAQpB,UAC7B,mBACF74D,KAAK46D,gBACH,GAEAvC,EAAQ,yBAA2BA,EAAQ,yBACpDnhD,EAAKlX,KAAKi6D,QAAQ70C,MAAQ,GAAI,OAG9Bg0C,EAAO,CACT,IAAI0D,EAAe9yD,OAAOoH,KAAKgoD,GAAOlK,QAAO,SAASp7C,EAAKhT,GACzD,OAAKA,GACLgT,EAAIgmD,EAAkBh5D,IAASE,MAAMC,QAAQm4D,EAAMt4D,KAChD+7D,EAAezD,EAAMt4D,GAAK,GAD8Bs4D,EAAMt4D,GAE1DgT,GAHUA,CAInB,GAAG,CAAC,GACAipD,EAAqB,GACzB/yD,OAAOoH,KAAK0rD,GAAclL,OAAOx+C,SAAQ,SAAStS,GAC3CE,MAAMC,QAAQ67D,EAAah8D,IAG9Bg8D,EAAah8D,GAAKwS,IAAIwmD,GAAmBlI,OACtCx+C,SAAQ,SAAS4V,GAAO+zC,EAAmBtpD,KAAK3S,EAAM,IAAMkoB,EAAK,IAHpE+zC,EAAmBtpD,KAAK3S,EAAM,IAAMg5D,EAAkBgD,EAAah8D,IAKvE,IACA07D,EAAWO,EAAmBnsD,KAAK,IACrC,CAgBA,MAfgB,MAAZ2rD,IACEE,IAAeF,EAAUA,EAAQxpD,QAAQ,UAAW,MAUrC,OATnBwpD,EAAUA,EAAQhwD,MAAM,KAAK2iD,QAAO,SAAShlC,EAAM8yC,GAOjD,OANIP,GAA2B,OAAVO,EACnB9yC,EAAK3P,MACKkiD,GAA2B,MAAVO,IACvBN,IAAYM,EAAQhmD,mBAAmBgmD,EAAMjqD,QAAQ,MAAO,OAChEmX,EAAKzW,KAAKqmD,EAAkBkD,KAEvB9yC,CACT,GAAG,IAAItZ,KAAK,MACA,KAAY2rD,EAAU,IAAMA,GACpCK,IAAqBL,EAAUA,EAAQxpD,QAAQ,OAAQ,OAGtD,CACL/S,KAAKi6D,QAAQvxC,QAAU,MACvB6zC,EACAC,EACAx8D,KAAKi9D,mBAAqB,KAC1Bj9D,KAAKw7D,gBACLc,GACA1rD,KAAK,KACT,EAEAopD,EAAcr6D,UAAUs9D,iBAAmB,WACzC,IAAI5E,EAAUr4D,KAAKi6D,QAAQ5B,QAI3B,OAAOruD,OAAOoH,KAAKinD,GAChB/3C,QAAO,SAASxf,GAAO,OAA+C,MAAxCi5D,EAAkBj5D,EAAIm4D,cAAuB,IAC3ErH,MAAK,SAASv6C,EAAGC,GAAK,OAAOD,EAAE4hD,cAAgB3hD,EAAE2hD,eAAiB,EAAI,CAAE,IACxE3lD,KAAI,SAASxS,GAAO,OAAOA,EAAIm4D,cAAgB,IAAcZ,EAAQv3D,GALxDytB,WAAWo9B,OAAO54C,QAAQ,OAAQ,IAK4B,IAC3EnC,KAAK,KACV,EAEAopD,EAAcr6D,UAAU67D,cAAgB,WACtC,IAAIV,EAAwB96D,KAAK86D,sBAC7BD,EAAuB76D,KAAK66D,qBAChC,OAAO7wD,OAAOoH,KAAKpR,KAAKi6D,QAAQ5B,SAC7B/kD,KAAI,SAASxS,GAAO,OAAOA,EAAIm4D,aAAc,IAC7C34C,QAAO,SAASxf,GACf,OAAOg6D,EAAsBh6D,IACA,MAA1Bi5D,EAAkBj5D,KAAiB+5D,EAAqB/5D,EAC7D,IACC8wD,OACAhhD,KAAK,IACV,EAEAopD,EAAcr6D,UAAU47D,iBAAmB,WACzC,MAAO,CACLv7D,KAAK+7D,UACL/7D,KAAKq6D,OACLr6D,KAAKo6D,QACL,gBACAxpD,KAAK,IACT,EAEAopD,EAAcr6D,UAAU86D,mBAAqB,WAC3C,IAAIprB,EAAMD,QAAQC,IAClB,MAAO,CACLisB,YAAajsB,EAAI6tB,mBAAqB7tB,EAAI8tB,eAC1ChB,gBAAiB9sB,EAAI+tB,uBAAyB/tB,EAAIguB,eAClDlC,aAAc9rB,EAAIiuB,kBAEtB,EAEAtD,EAAcr6D,UAAUs7D,UAAY,WAClC,IAAI/wC,EAAOlqB,KAAKi6D,QAAQ/vC,MAAQ,IAK5B,qCAAqCvhB,KAAKuhB,KAC5CA,EAAOqzC,UAAUC,UAAUtzC,KAG7B,IAAIuzC,EAAUvzC,EAAK5L,QAAQ,KACvB86C,EAAQ,KAERqE,GAAW,IACbrE,EAAQE,EAAYtoD,MAAMkZ,EAAK7lB,MAAMo5D,EAAU,IAC/CvzC,EAAOA,EAAK7lB,MAAM,EAAGo5D,IAGvBz9D,KAAKk7D,WAAa,CAChBhxC,KAAMA,EACNkvC,MAAOA,EAEX,EAEAY,EAAcr6D,UAAUk8D,WAAa,WACnC,IAAI3xC,EAAOlqB,KAAKk7D,WAAWhxC,KACvBkvC,EAAQp5D,KAAKk7D,WAAW9B,MAE5B,OAAKA,GAGY,MAAbA,EAAM,YAAoBA,EAAM,IAE7BlvC,EAAO,IAAM0vC,EAAcN,EAAY5hD,UAAU0hD,KALrClvC,CAMrB,EAEAmvC,EAAKW,cAAgBA,EAErBX,EAAKtoC,KAAO,SAASkpC,EAASC,GAC5B,OAAO,IAAIF,EAAcC,EAASC,GAAanpC,MACjD,aCxXA,SAAS2sC,EAASrtC,GAChBrwB,KAAK29D,SAAkB,EAAPttC,EAChBrwB,KAAKsT,IAAMtJ,OAAOC,OAAO,MACzBjK,KAAK49D,KAAO,IAAIC,CAClB,CAqCA,SAASA,IACP79D,KAAK89D,UAAY,KACjB99D,KAAK+9D,SAAW,IAClB,CA0CA,SAASC,EAAiBl9D,EAAKkoB,GAC7BhpB,KAAKc,IAAMA,EACXd,KAAKgpB,IAAMA,EACXhpB,KAAKusB,KAAO,KACZvsB,KAAK2nC,KAAO,IACd,CA/FAnoC,EAAOC,QAAU,SAAS4wB,GACxB,OAAO,IAAIqtC,EAASrtC,EACtB,EAQAqtC,EAAS/9D,UAAU6E,IAAM,SAAS1D,GAChC,IAAIkqB,EAAOhrB,KAAKsT,IAAIxS,GACpB,GAAY,MAARkqB,EAEJ,OADAhrB,KAAKi+D,KAAKjzC,GACHA,EAAKhC,GACd,EAEA00C,EAAS/9D,UAAUy1C,IAAM,SAASt0C,EAAKkoB,GACrC,IAAIgC,EAAOhrB,KAAKsT,IAAIxS,GACpB,GAAY,MAARkqB,EACFA,EAAKhC,IAAMA,MACN,CAEL,GADKhpB,KAAK29D,UAAU39D,KAAKk+D,SACpBl+D,KAAK29D,SAAU,OAAO,EAC3B3yC,EAAO,IAAIgzC,EAAiBl9D,EAAKkoB,GACjChpB,KAAKsT,IAAIxS,GAAOkqB,EAChBhrB,KAAK29D,UACP,CAEA,OADA39D,KAAKi+D,KAAKjzC,IACH,CACT,EAEA0yC,EAAS/9D,UAAUs+D,KAAO,SAASjzC,GACjChrB,KAAK49D,KAAKO,YAAYnzC,EACxB,EAEA0yC,EAAS/9D,UAAUu+D,MAAQ,WACzB,IAAIlzC,EAAOhrB,KAAK49D,KAAKrjD,MACT,MAARyQ,WACKhrB,KAAKsT,IAAI0X,EAAKlqB,KACrBd,KAAK29D,WAET,EAQAE,EAAiBl+D,UAAUw+D,YAAc,SAASnzC,GAC5ChrB,KAAK89D,WAAa9yC,IAEtBhrB,KAAK+F,OAAOilB,GAEU,MAAlBhrB,KAAK89D,WACP99D,KAAK89D,UAAY9yC,EACjBhrB,KAAK+9D,SAAW/yC,EAChBA,EAAKuB,KAAO,KACZvB,EAAK2c,KAAO,OAEZ3c,EAAKuB,KAAO,KACZvB,EAAK2c,KAAO3nC,KAAK89D,UACjB9yC,EAAK2c,KAAKpb,KAAOvB,EACjBhrB,KAAK89D,UAAY9yC,GAErB,EAEA6yC,EAAiBl+D,UAAU4a,IAAM,WAC/B,IAAIwjD,EAAW/9D,KAAK+9D,SAIpB,OAHgB,MAAZA,GACF/9D,KAAK+F,OAAOg4D,GAEPA,CACT,EAEAF,EAAiBl+D,UAAUoG,OAAS,SAASilB,GACvChrB,KAAK89D,WAAa9yC,EACpBhrB,KAAK89D,UAAY9yC,EAAK2c,KACA,MAAb3c,EAAKuB,OACdvB,EAAKuB,KAAKob,KAAO3c,EAAK2c,MAEpB3nC,KAAK+9D,UAAY/yC,EACnBhrB,KAAK+9D,SAAW/yC,EAAKuB,KACC,MAAbvB,EAAK2c,OACd3c,EAAK2c,KAAKpb,KAAOvB,EAAKuB,KAE1B,sBCrFM6xC,+BADFC,GAEqCD,GADnCA,EAAiC,oBAAbE,UAA4BA,SAASC,cAAgBD,SAASC,cAAcC,SAAM59D,gBAG5G,SAASy9D,GAGT,IAA0EI,EAAoBC,EAA1FC,OAAiC,KAFnCN,EAAoBA,GAAqB,CAAC,GAEKA,EAAkB,CAAC,EAA6CM,EAAM,MAAU,IAAIt1D,SAAQ,SAASrK,EAAQ40D,GAAQ6K,EAAoBz/D,EAAQ0/D,EAAmB9K,CAAO,IAAE,IAA8gBgL,EAAMC,EAAUC,EAAmJC,EAAOC,EAAaC,EAAjsBC,EAAgBl1D,OAAOumC,OAAO,CAAC,EAAEouB,GAAYQ,EAAW,GAAOC,EAAY,iBAAqBC,EAAM,CAACC,EAAOC,KAAW,MAAMA,CAAN,EAAmBC,EAAkC,iBAARztC,OAAqB0tC,EAA4C,mBAAfC,cAA8BC,EAAoC,iBAATvwB,GAA4C,iBAAlBA,EAAQwwB,UAAkD,iBAAvBxwB,EAAQwwB,SAAS50C,KAAmB60C,EAAgB,GAAgVF,GAA+CE,EAAvBJ,EAAuC/a,EAAAA,OAAAA,QAAwBmb,GAAiB,IAAyBC,KAAcb,EAAe,KAASD,IAAUD,EAAGra,EAAQ,OAAMsa,EAASta,EAAQ,OAAQ,EAAGka,EAAM,SAAoBmB,EAASC,GAAiE,OAAzDf,IAAgBc,EAASf,EAAQ,UAAce,GAAiBhB,EAAGkB,aAAaF,EAASC,OAAOp/D,EAAU,OAAQ,EAACk+D,EAAYiB,IAAW,IAAIhrC,EAAI6pC,EAAMmB,GAAS,GAA8C,OAApChrC,EAAIlH,SAAQkH,EAAI,IAAI6oB,WAAW7oB,IAAYA,CAAP,EAAa8pC,EAAW,CAACkB,EAASG,EAAOC,KAAWlB,IAAgBc,EAASf,EAAQ,UAAce,GAAUhB,EAAGqB,SAASL,GAAS,SAAStzC,EAAI3sB,GAAS2sB,EAAI0zC,EAAQ1zC,GAAUyzC,EAAOpgE,EAAK+tB,OAAQ,GAArF,EAA4FuhB,EAAO,KAASjuC,OAAO,IAAGi+D,EAAYhwB,EAAO,KAAS,GAAGr8B,QAAQ,MAAM,MAAKosD,EAAW/vB,EAAO,KAAS/qC,MAAM,GAAG+qC,EAAO,GAAO,sBAAqB,SAASmL,GAAQ,MAAMA,CAAO,IAAE8kB,EAAO,CAACC,EAAOC,KAAW,GAAGc,KAA+C,MAA3BjxB,EAAO,SAAakwB,EAAaC,EAApkC,IAA4Bp7D,KAAmkCo7D,aAAhjCe,IAA8B7zC,EAAI,6BAANtoB,GAA6hCirC,EAAO,KAASkwB,EAAhB,EAA0BX,EAAM,QAAY,WAAW,MAAM,4BAA6B,IAASa,GAAoBC,KAA0BA,EAAuBI,EAAgB79D,KAAKu+D,SAASC,KAA8B,oBAAVlC,UAAuBA,SAASC,gBAAesB,EAAgBvB,SAASC,cAAcC,KAAOJ,IAAYyB,EAAgBzB,GAAoDyB,EAAH,IAAnCA,EAAgBvhD,QAAQ,SAA8BuhD,EAAgBvlB,OAAO,EAAEulB,EAAgB9sD,QAAQ,SAAS,IAAI0tD,YAAY,KAAK,GAAwB,GAAI7B,EAAOh1D,IAAM,IAAI82D,EAAI,IAAIC,eAAwD,OAAzCD,EAAIE,KAAK,MAAMh3D,GAAI,GAAO82D,EAAIG,KAAK,MAAaH,EAAII,YAAX,EAA6BrB,IAAuBX,EAAYl1D,IAAM,IAAI82D,EAAI,IAAIC,eAAuF,OAAxED,EAAIE,KAAK,MAAMh3D,GAAI,GAAO82D,EAAIK,aAAa,cAAcL,EAAIG,KAAK,MAAa,IAAIjjB,WAAW8iB,EAAIM,SAA1B,GAAsCnC,EAAW,CAACj1D,EAAIs2D,EAAOC,KAAW,IAAIO,EAAI,IAAIC,eAAeD,EAAIE,KAAK,MAAMh3D,GAAI,GAAM82D,EAAIK,aAAa,cAAcL,EAAIR,OAAQ,KAAoB,KAAZQ,EAAIpB,QAAyB,GAAZoB,EAAIpB,QAAWoB,EAAIM,SAAUd,EAAOQ,EAAIM,UAAiBb,GAAS,EAAGO,EAAIP,QAAQA,EAAQO,EAAIG,KAAK,KAAT,GAAoE,IAAInoD,EAAIimD,EAAM,OAAW/3D,QAAQF,IAAI+qC,KAAK7qC,SAAa6lB,EAAIkyC,EAAM,UAAc/3D,QAAQxE,KAAKqvC,KAAK7qC,SAA4N,SAASq6D,EAAchiC,GAAG,OAAGA,EAAE,IAAW,CAACA,GAAS,CAACA,EAAE,IAAI,IAAIA,GAAG,EAAG,CAAxRj1B,OAAOumC,OAAOouB,EAAOO,GAAiBA,EAAgB,KAAQP,EAAM,YAAcQ,EAAWR,EAAM,WAAiBA,EAAM,cAAgBS,EAAYT,EAAM,aAAmBA,EAAM,OAASU,EAAMV,EAAM,MAA2kC,IAA4BuC,EAAo6BC,EAA57BC,EAAiB,GAAu1BC,EAAS,EAAMC,EAAY14D,IAAQy4D,EAASz4D,CAAT,EAAoB24D,EAAY,IAAIF,EAA2B1C,EAAM,aAAewC,EAAWxC,EAAM,YAAe,IAA8H6C,EAA1HC,EAAc9C,EAAM,gBAAmB,EAA4B,iBAAb+C,aAAuBC,GAAM,mCAAkD,IAAoBC,EAAhBC,GAAM,EAAqB,SAASx6C,EAAOy6C,EAAU59D,GAAU49D,GAAWH,GAAMz9D,EAAO,KAAI69D,EAAgC,oBAAbC,YAAyB,IAAIA,YAAY,aAAQphE,EAAU,SAASqhE,EAAkBC,EAAYphB,EAAIqhB,GAA6D,IAA7C,IAAIC,EAAOthB,EAAIqhB,EAAmBE,EAAOvhB,EAAUohB,EAAYG,MAAWA,GAAQD,MAAUC,EAAO,GAAGA,EAAOvhB,EAAI,IAAIohB,EAAYr0C,QAAQk0C,EAAa,OAAOA,EAAYn8C,OAAOs8C,EAAYI,SAASxhB,EAAIuhB,IAAyB,IAAX,IAAIn3D,EAAI,GAAS41C,EAAIuhB,GAAO,CAAC,IAAIE,EAAGL,EAAYphB,KAAO,GAAQ,IAAHyhB,EAAL,CAAoD,IAAIC,EAAsB,GAAnBN,EAAYphB,KAAU,GAAa,MAAN,IAAHyhB,GAAJ,CAAmE,IAAIE,EAAsB,GAAnBP,EAAYphB,KAA0G,IAA9EyhB,EAAL,MAAN,IAAHA,IAAqB,GAAHA,IAAQ,GAAGC,GAAI,EAAEC,GAAe,EAAHF,IAAO,GAAGC,GAAI,GAAGC,GAAI,EAAqB,GAAnBP,EAAYphB,MAAgB,MAAO51C,GAAKijB,OAAOC,aAAam0C,OAAQ,CAAC,IAAIG,EAAGH,EAAG,MAAMr3D,GAAKijB,OAAOC,aAAa,MAAMs0C,GAAI,GAAG,MAAS,KAAHA,EAAS,CAAjP,MAAjDx3D,GAAKijB,OAAOC,cAAiB,GAAHm0C,IAAQ,EAAEC,EAAnF,MAAtCt3D,GAAKijB,OAAOC,aAAam0C,EAA+V,CAAC,OAAOr3D,CAAI,UAASy3D,EAAaC,EAAIT,GAAgB,OAAOS,EAAIX,EAAkBY,EAAOD,EAAIT,GAAgB,EAAG,UAASW,EAAkB53D,EAAI63D,EAAKC,EAAOC,GAAiB,KAAKA,EAAgB,GAAG,OAAO,EAA0D,IAAxD,IAAIC,EAASF,EAAWZ,EAAOY,EAAOC,EAAgB,EAAU/hE,EAAE,EAAEA,EAAEgK,EAAI/J,SAASD,EAAE,CAAC,IAAIonC,EAAEp9B,EAAI+I,WAAW/S,GAAoF,GAA9EonC,GAAG,OAAOA,GAAG,QAAkCA,EAAE,QAAU,KAAFA,IAAS,IAAO,KAA9Cp9B,EAAI+I,aAAa/S,IAAqConC,GAAG,IAAI,CAAC,GAAG06B,GAAQZ,EAAO,MAAMW,EAAKC,KAAU16B,CAAE,MAAK,GAAGA,GAAG,KAAK,CAAC,GAAG06B,EAAO,GAAGZ,EAAO,MAAMW,EAAKC,KAAU,IAAI16B,GAAG,EAAEy6B,EAAKC,KAAU,IAAM,GAAF16B,CAAK,MAAK,GAAGA,GAAG,MAAM,CAAC,GAAG06B,EAAO,GAAGZ,EAAO,MAAMW,EAAKC,KAAU,IAAI16B,GAAG,GAAGy6B,EAAKC,KAAU,IAAI16B,GAAG,EAAE,GAAGy6B,EAAKC,KAAU,IAAM,GAAF16B,CAAK,KAAI,CAAC,GAAG06B,EAAO,GAAGZ,EAAO,MAAMW,EAAKC,KAAU,IAAI16B,GAAG,GAAGy6B,EAAKC,KAAU,IAAI16B,GAAG,GAAG,GAAGy6B,EAAKC,KAAU,IAAI16B,GAAG,EAAE,GAAGy6B,EAAKC,KAAU,IAAM,GAAF16B,CAAK,CAAC,CAAe,OAAfy6B,EAAKC,GAAQ,EAASA,EAAOE,CAAS,UAASC,EAAaj4D,EAAIk4D,EAAOH,GAAiB,OAAOH,EAAkB53D,EAAI23D,EAAOO,EAAOH,EAAiB,UAASI,EAAgBn4D,GAAe,IAAV,IAAI6I,EAAI,EAAU7S,EAAE,EAAEA,EAAEgK,EAAI/J,SAASD,EAAE,CAAC,IAAIonC,EAAEp9B,EAAI+I,WAAW/S,GAAMonC,GAAG,OAAOA,GAAG,QAAMA,EAAE,QAAU,KAAFA,IAAS,IAAwB,KAApBp9B,EAAI+I,aAAa/S,IAAWonC,GAAG,MAAMv0B,EAAoBA,GAARu0B,GAAG,KAAU,EAAUA,GAAG,MAAW,EAAY,CAAE,QAAOv0B,CAAI,KAAusE8Z,EAAOy1C,EAAMT,EAAOU,EAAOC,EAAQC,EAAOC,EAAQC,EAAQC,EAA7vEC,EAAiC,oBAAb7B,YAAyB,IAAIA,YAAY,iBAAYphE,EAAU,SAASkjE,EAAclB,EAAIT,GAAiF,IAAjE,IAAIE,EAAOO,EAAQ9hB,EAAIuhB,GAAQ,EAAM0B,EAAOjjB,EAAIqhB,EAAe,IAAUrhB,GAAKijB,IAASP,EAAQ1iB,MAAOA,EAAkB,IAAduhB,EAAOvhB,GAAK,GAAY8hB,EAAI,IAAIiB,EAAc,OAAOA,EAAaj+C,OAAOi9C,EAAOP,SAASM,EAAIP,IAAyB,IAAX,IAAIn3D,EAAI,GAAWhK,EAAE,IAAIA,GAAGihE,EAAe,KAAKjhE,EAAE,CAAC,IAAI8iE,EAAST,EAAOX,EAAM,EAAF1hE,GAAK,GAAG,GAAa,GAAV8iE,EAAY,MAAM94D,GAAKijB,OAAOC,aAAa41C,EAAU,QAAO94D,CAAK,UAAS+4D,EAAc/4D,EAAIk4D,EAAOH,GAA4E,QAAtCriE,IAAlBqiE,IAA6BA,EAAgB,YAAcA,EAAgB,EAAE,OAAO,EAAuH,IAAlG,IAAIiB,EAASd,EAAWe,GAA3ClB,GAAiB,GAAqE,EAAX/3D,EAAI/J,OAAS8hE,EAAgB,EAAE/3D,EAAI/J,OAAeD,EAAE,EAAEA,EAAEijE,IAAkBjjE,EAAE,CAAC,IAAI8iE,EAAS94D,EAAI+I,WAAW/S,GAAGqiE,EAAOH,GAAQ,GAAGY,EAASZ,GAAQ,CAAE,CAAoB,OAApBG,EAAOH,GAAQ,GAAG,EAASA,EAAOc,CAAS,UAASE,GAAiBl5D,GAAK,OAAkB,EAAXA,EAAI/J,MAAS,UAASkjE,GAAczB,EAAIT,GAAmC,IAAnB,IAAIjhE,EAAE,EAAMgK,EAAI,KAAWhK,GAAGihE,EAAe,IAAG,CAAC,IAAImC,EAAMb,EAAOb,EAAM,EAAF1hE,GAAK,GAAG,GAAU,GAAPojE,EAAS,MAAU,KAAFpjE,EAAKojE,GAAO,MAAM,CAAC,IAAI5B,EAAG4B,EAAM,MAAMp5D,GAAKijB,OAAOC,aAAa,MAAMs0C,GAAI,GAAG,MAAS,KAAHA,EAAS,MAAKx3D,GAAKijB,OAAOC,aAAak2C,EAAQ,QAAOp5D,CAAI,UAASq5D,GAAcr5D,EAAIk4D,EAAOH,GAA4E,QAAtCriE,IAAlBqiE,IAA6BA,EAAgB,YAAcA,EAAgB,EAAE,OAAO,EAA4D,IAA1D,IAAIiB,EAASd,EAAWf,EAAO6B,EAASjB,EAAgB,EAAU/hE,EAAE,EAAEA,EAAEgK,EAAI/J,SAASD,EAAE,CAAC,IAAI8iE,EAAS94D,EAAI+I,WAAW/S,GAA6K,GAAvK8iE,GAAU,OAAOA,GAAU,QAA8CA,EAAS,QAAiB,KAATA,IAAgB,IAAmB,KAAxE94D,EAAI+I,aAAa/S,IAA4DuiE,EAAOL,GAAQ,GAAGY,GAASZ,GAAQ,GAAY,EAAEf,EAAO,KAAM,CAAoB,OAApBoB,EAAOL,GAAQ,GAAG,EAASA,EAAOc,CAAS,UAASM,GAAiBt5D,GAAe,IAAV,IAAI6I,EAAI,EAAU7S,EAAE,EAAEA,EAAEgK,EAAI/J,SAASD,EAAE,CAAC,IAAI8iE,EAAS94D,EAAI+I,WAAW/S,GAAM8iE,GAAU,OAAOA,GAAU,SAAQ9iE,EAAE6S,GAAK,CAAE,QAAOA,CAAI,UAAS0wD,GAAav5D,GAAK,IAAImlB,EAAKgzC,EAAgBn4D,GAAK,EAAM6pB,EAAI2vC,GAAQr0C,GAAmD,OAA1C0E,GAAI+tC,EAAkB53D,EAAIo4D,EAAMvuC,EAAI1E,GAAa0E,CAAI,CAAkS,SAAS4vC,GAA2Bl3C,GAAKI,EAAOJ,EAAIkxC,EAAM,MAAU2E,EAAM,IAAIsB,UAAUn3C,GAAKkxC,EAAM,OAAW4E,EAAO,IAAIsB,WAAWp3C,GAAKkxC,EAAM,OAAW8E,EAAO,IAAIqB,WAAWr3C,GAAKkxC,EAAM,OAAWkE,EAAO,IAAIjlB,WAAWnwB,GAAKkxC,EAAM,QAAY6E,EAAQ,IAAIuB,YAAYt3C,GAAKkxC,EAAM,QAAY+E,EAAQ,IAAIsB,YAAYv3C,GAAKkxC,EAAM,QAAYgF,EAAQ,IAAIsB,aAAax3C,GAAKkxC,EAAM,QAAYiF,EAAQ,IAAIsB,aAAaz3C,EAAK,CAAmBkxC,EAAM,eAAzB,IAA0DwG,GAAcC,GAAa,GAAOC,GAAW,GAAOC,GAAc,GAAgC,SAASjF,KAAmB,OAAOoB,CAAc,CAAgwB,IAA6iC8D,GAAulFC,GAAeC,GAA/oHC,GAAgB,EAAMC,GAAqB,KAASC,GAAsB,KAAmD,SAASC,GAAiBzkE,GAAIskE,KAAqB/G,EAAM,wBAA4BA,EAAM,uBAA2B+G,GAAkB,UAASI,GAAoB1kE,GAA6G,GAAzGskE,KAAqB/G,EAAM,wBAA4BA,EAAM,uBAA2B+G,IAAqC,GAAjBA,KAA8C,OAAvBC,KAA6BI,cAAcJ,IAAsBA,GAAqB,MAAQC,IAAsB,CAAC,IAAI/8D,EAAS+8D,GAAsBA,GAAsB,KAAK/8D,GAAW,CAAE,UAAS84D,GAAMqE,GAAUrH,EAAM,SAAaA,EAAM,QAAYqH,GAAgCv5C,EAAzBu5C,EAAK,WAAWA,EAAK,KAAcnE,GAAM,EAAKD,EAAW,EAAEoE,GAAM,2CAA2C,IAAI7hE,EAAE,IAAIu9D,YAAYuE,aAAaD,GAA4B,MAAtBtH,EAAmBv6D,GAASA,CAAE,CAA0D,SAAS+hE,GAAUnG,GAAU,OAAOA,EAASoG,WAArF,wCAA+G,UAASC,GAAUrG,GAAU,OAAOA,EAASoG,WAAW,UAAW,CAAqI,SAASE,GAAUC,GAAM,IAAI,GAAGA,GAAMf,IAAgBpE,EAAY,OAAO,IAAIvjB,WAAWujB,GAAY,GAAGrC,EAAY,OAAOA,EAAWwH,GAAW,KAAK,iDAAyE,CAAtB,MAAM75C,GAAKk1C,GAAMl1C,EAAK,CAAC,CAAukL,SAAS85C,GAAqBC,GAAW,KAAMA,EAAUrlE,OAAO,GAAE,CAAC,IAAI0H,EAAS29D,EAAU3kC,QAAQ,GAAoB,mBAAVh5B,EAAV,CAA0D,IAAI+lC,EAAK/lC,EAAS+lC,KAAqB,iBAANA,OAAkChuC,IAAfiI,EAASigB,IAA6B29C,GAAU7jE,KAAK,KAAKgsC,IAAyBzW,EAAuCtvB,EAASigB,IAA5C49C,GAAWnhE,MAAM,KAAK,CAACqpC,EAAKzW,KAA2ByW,OAAoBhuC,IAAfiI,EAASigB,IAAgB,KAAKjgB,EAASigB,IAA9O,MAA1BjgB,EAAS81D,EAAqQ,CAAvH,IAAUxmC,CAA8G,CAAoK,SAASwuC,GAAkB7lB,EAAIlS,GAAMu2B,GAAU/vB,IAAI0L,EAAIlS,EAAM,CAA79Ms3B,GAA7CX,GAAe,6BAAyDA,GAA1pX,SAAoBr7C,GAAM,OAAGy0C,EAAM,WAAuBA,EAAM,WAAez0C,EAAK21C,GAAwBA,EAAgB31C,CAAK,CAAwiX08C,CAAWrB,KAAkrT,IAAIsB,GAAgB,GAAG,SAASC,GAAiB1R,GAAMA,EAAK2R,SAAU,KAAIC,GAAuB,EAAoP,SAASC,GAAcC,GAAQlnE,KAAKknE,OAAOA,EAAOlnE,KAAK4iE,IAAIsE,EAAO,GAAGlnE,KAAKmnE,SAAS,SAAS7+D,GAAMo7D,EAAQ1jE,KAAK4iE,IAAI,GAAG,GAAGt6D,CAAK,EAACtI,KAAKonE,SAAS,WAAW,OAAO1D,EAAQ1jE,KAAK4iE,IAAI,GAAG,EAAG,EAAC5iE,KAAKqnE,eAAe,SAASC,GAAY5D,EAAQ1jE,KAAK4iE,IAAI,GAAG,GAAG0E,CAAW,EAACtnE,KAAKunE,eAAe,WAAW,OAAO7D,EAAQ1jE,KAAK4iE,IAAI,GAAG,EAAG,EAAC5iE,KAAKwnE,aAAa,SAASC,GAAUhE,EAAOzjE,KAAK4iE,KAAK,GAAG6E,CAAS,EAACznE,KAAK0nE,WAAW,SAASC,GAAQA,EAAOA,EAAO,EAAE,EAAErE,EAAMtjE,KAAK4iE,IAAI,IAAI,GAAG+E,CAAO,EAAC3nE,KAAK4nE,WAAW,WAAW,OAA8B,GAAvBtE,EAAMtjE,KAAK4iE,IAAI,IAAI,EAAM,EAAC5iE,KAAK6nE,aAAa,SAASC,GAAUA,EAASA,EAAS,EAAE,EAAExE,EAAMtjE,KAAK4iE,IAAI,IAAI,GAAGkF,CAAS,EAAC9nE,KAAK+nE,aAAa,WAAW,OAA8B,GAAvBzE,EAAMtjE,KAAK4iE,IAAI,IAAI,EAAM,EAAC5iE,KAAKgoE,KAAK,SAAS1/D,EAAKg/D,GAAYtnE,KAAKioE,iBAAiB,GAAGjoE,KAAKmnE,SAAS7+D,GAAMtI,KAAKqnE,eAAeC,GAAYtnE,KAAKwnE,aAAa,GAAGxnE,KAAK0nE,YAAW,GAAO1nE,KAAK6nE,cAAa,EAAO,EAAC7nE,KAAK+mE,QAAQ,WAAW,IAAIn+D,EAAM66D,EAAOzjE,KAAK4iE,KAAK,GAAGa,EAAOzjE,KAAK4iE,KAAK,GAAGh6D,EAAM,CAAE,EAAC5I,KAAKkoE,YAAY,WAAW,IAAI37C,EAAKk3C,EAAOzjE,KAAK4iE,KAAK,GAA8B,OAA3Ba,EAAOzjE,KAAK4iE,KAAK,GAAGr2C,EAAK,EAAgB,IAAPA,CAAS,EAACvsB,KAAKioE,iBAAiB,SAASE,GAAazE,EAAQ1jE,KAAK4iE,IAAI,IAAI,GAAGuF,CAAY,EAACnoE,KAAKooE,iBAAiB,WAAW,OAAO1E,EAAQ1jE,KAAK4iE,IAAI,IAAI,EAAG,EAAC5iE,KAAKqoE,kBAAkB,WAAiE,GAAxCC,GAAuBtoE,KAAKonE,YAA0B,OAAO1D,EAAQ1jE,KAAKknE,QAAQ,GAAG,IAAIqB,EAASvoE,KAAKooE,mBAAmB,OAAc,IAAXG,EAAoBA,EAAgBvoE,KAAKknE,MAAO,CAAC,UAASsB,GAAsB5F,GAAK,OAAO6F,GAAM,IAAIxB,GAAcrE,GAAKA,IAAK,UAAS8F,GAAiBtT,GAAM,GAAGA,EAAK8S,gBAAgB9S,EAAK2S,eAAe,CAAC,IAAIT,EAAWlS,EAAKmS,iBAAoBD,IAAsBnvC,EAAoDi9B,EAAK8R,OAA9CyB,GAAWpjE,MAAM,KAAK,CAAC+hE,EAAWnvC,KAAoBqwC,GAAsBpT,EAAK8R,OAAQ,CAA9G,IAAU/uC,CAAqG,CAA0G,IAAIywC,GAAc,EAAq7C,SAASC,KAAiB,IAAIzT,EAAKyR,GAAgBtsD,MAAU66C,GAAMuM,GAAM,yBAAyB,IAAIiB,EAAIxN,EAAK8R,OAAqJ,MAA1I9R,EAAK2S,iBAAgBlB,GAAgBpzD,KAAK2hD,GAAMA,EAAKyS,cAAa,GAAMzS,EAAKsS,YAAW,GAAOV,MAAyB4B,GAAchG,EAAUA,CAAI,CAA4c,IAAIkG,GAAK,CAACC,MAAM7+C,GAAuB,MAAjBA,EAAK8jB,OAAO,GAASg7B,UAAUjJ,GAA2B,gEAAmFkJ,KAAKlJ,GAAU17D,MAAM,GAAI6kE,eAAe,CAAC92D,EAAM+2D,KAA2B,IAAT,IAAIxyD,EAAG,EAAUzV,EAAEkR,EAAMjR,OAAO,EAAED,GAAG,EAAEA,IAAI,CAAC,IAAIkoE,EAAKh3D,EAAMlR,GAAa,MAAPkoE,EAAYh3D,EAAMlF,OAAOhM,EAAE,GAAkB,OAAPkoE,GAAah3D,EAAMlF,OAAOhM,EAAE,GAAGyV,KAAaA,IAAIvE,EAAMlF,OAAOhM,EAAE,GAAGyV,IAAM,IAAGwyD,EAAgB,KAAKxyD,EAAGA,IAAMvE,EAAM4e,QAAQ,MAAO,OAAO5e,CAAP,EAAcS,UAAUqX,IAAO,IAAIm/C,EAAWP,GAAKC,MAAM7+C,GAAMo/C,EAAgC,MAAlBp/C,EAAKowB,QAAQ,GAA0J,OAAjJpwB,EAAK4+C,GAAKI,eAAeh/C,EAAK3d,MAAM,KAAK+T,QAAOvX,KAAKA,KAAIsgE,GAAYz4D,KAAK,OAAgBy4D,IAAYn/C,EAAK,KAAOA,GAAMo/C,IAAep/C,GAAM,MAAWm/C,EAAW,IAAI,IAAIn/C,CAA1B,EAAgCq/C,QAAQr/C,IAAO,IAAI5kB,EAAOwjE,GAAKE,UAAU9+C,GAAMrnB,EAAKyC,EAAO,GAAGgrD,EAAIhrD,EAAO,GAAG,OAAIzC,GAAOytD,GAAkBA,IAAKA,EAAIA,EAAIhW,OAAO,EAAEgW,EAAInvD,OAAO,IAAU0B,EAAKytD,GAAvD,GAA2C,EAAiBkZ,SAASt/C,IAAO,GAAU,MAAPA,EAAW,MAAM,IAA0D,IAAIu/C,GAAhCv/C,GAA1BA,EAAK4+C,GAAKj2D,UAAUqX,IAAgBnX,QAAQ,MAAM,KAAuB0tD,YAAY,KAAK,OAAgB,IAAbgJ,EAAsBv/C,EAAYA,EAAKowB,OAAOmvB,EAAU,EAA7B,EAAiC74D,KAAK,WAAW,IAAI8F,EAAM1V,MAAMrB,UAAU0E,MAAMzB,KAAK4C,UAAU,GAAG,OAAOsjE,GAAKj2D,UAAU6D,EAAM9F,KAAK,KAAM,EAAC84D,MAAM,CAAChsC,EAAEtL,IAAY02C,GAAKj2D,UAAU6qB,EAAE,IAAItL,IAAsZu3C,GAAQ,CAAC3qE,QAAQ,WAAsD,IAA3C,IAAI4qE,EAAa,GAAGC,GAAiB,EAAc3oE,EAAEsE,UAAUrE,OAAO,EAAED,IAAI,IAAI2oE,EAAiB3oE,IAAI,CAAC,IAAIgpB,EAAKhpB,GAAG,EAAEsE,UAAUtE,GAAG4oE,GAAGC,MAAM,GAAgB,iBAAN7/C,EAAgB,MAAM,IAAIye,UAAU,6CAAkD,IAAIze,EAAM,MAAM,GAAG0/C,EAAa1/C,EAAK,IAAI0/C,EAAaC,EAAiBf,GAAKC,MAAM7+C,EAAM,CAAqG,OAAO2/C,EAAiB,IAAI,KAAjID,EAAad,GAAKI,eAAeU,EAAar9D,MAAM,KAAK+T,QAAOvX,KAAKA,KAAI8gE,GAAkBj5D,KAAK,OAAmD,GAAI,EAAC8d,SAAS,CAACmB,EAAKlb,KAA4E,SAASg3C,EAAKh+C,GAAiB,IAAZ,IAAIqc,EAAM,EAAOA,EAAMrc,EAAIxM,QAAgC,KAAbwM,EAAIqc,GAAhBA,KAAuD,IAArB,IAAI2F,EAAIhiB,EAAIxM,OAAO,EAAOwuB,GAAK,GAAuB,KAAXhiB,EAAIgiB,GAAdA,KAA8B,OAAG3F,EAAM2F,EAAU,GAAUhiB,EAAItJ,MAAM2lB,EAAM2F,EAAI3F,EAAM,EAAG,CAAtR6F,EAAK85C,GAAQ3qE,QAAQ6wB,GAAMyqB,OAAO,GAAG3lC,EAAGg1D,GAAQ3qE,QAAQ2V,GAAI2lC,OAAO,GAAuW,IAApJ,IAAI0vB,EAAUre,EAAK97B,EAAKtjB,MAAM,MAAU09D,EAAQte,EAAKh3C,EAAGpI,MAAM,MAAUpL,EAAOsZ,KAAKwU,IAAI+6C,EAAU7oE,OAAO8oE,EAAQ9oE,QAAY+oE,EAAgB/oE,EAAeD,EAAE,EAAEA,EAAEC,EAAOD,IAAK,GAAG8oE,EAAU9oE,KAAK+oE,EAAQ/oE,GAAG,CAACgpE,EAAgBhpE,EAAE,KAAM,CAAC,IAAIipE,EAAY,GAAG,IAAQjpE,EAAEgpE,EAAgBhpE,EAAE8oE,EAAU7oE,OAAOD,IAAKipE,EAAY12D,KAAK,MAAqE,OAA/D02D,EAAYA,EAAYv2D,OAAOq2D,EAAQ5lE,MAAM6lE,KAAqCt5D,KAAK,IAAxB,GAAmCw5D,GAAI,CAACC,KAAK,GAAGrC,KAAK,WAAY,EAACsC,SAAS,WAAY,EAACC,SAAS,SAASC,EAAIC,GAAKL,GAAIC,KAAKG,GAAK,CAACphD,MAAM,GAAGqe,OAAO,GAAGgjC,IAAIA,GAAKX,GAAGY,eAAeF,EAAIJ,GAAIO,WAAY,EAACA,WAAW,CAAC/J,KAAK,SAAS5xB,GAAQ,IAAI47B,EAAIR,GAAIC,KAAKr7B,EAAOhkB,KAAK6/C,MAAM,IAAID,EAAK,MAAM,IAAId,GAAGgB,WAAW,IAAI97B,EAAO47B,IAAIA,EAAI57B,EAAO+7B,UAAS,CAAM,EAACC,MAAM,SAASh8B,GAAQA,EAAO47B,IAAIH,IAAIQ,MAAMj8B,EAAO47B,IAAK,EAACK,MAAM,SAASj8B,GAAQA,EAAO47B,IAAIH,IAAIQ,MAAMj8B,EAAO47B,IAAK,EAACM,KAAK,SAASl8B,EAAOnhB,EAAOzH,EAAOjlB,EAAO6S,GAAK,IAAIg7B,EAAO47B,MAAM57B,EAAO47B,IAAIH,IAAIU,SAAU,MAAM,IAAIrB,GAAGgB,WAAW,IAAoB,IAAhB,IAAIM,EAAU,EAAUlqE,EAAE,EAAEA,EAAEC,EAAOD,IAAI,CAAC,IAAIoE,EAAO,IAAIA,EAAO0pC,EAAO47B,IAAIH,IAAIU,SAASn8B,EAAO47B,IAA0C,CAArC,MAAMzmE,GAAG,MAAM,IAAI2lE,GAAGgB,WAAW,GAAI,SAAYlqE,IAAT0E,GAAgC,IAAZ8lE,EAAe,MAAM,IAAItB,GAAGgB,WAAW,GAAG,GAAGxlE,QAAkC,MAAM8lE,IAAYv9C,EAAOzH,EAAOllB,GAAGoE,CAAO,CAA+C,OAA5C8lE,IAAWp8B,EAAOhkB,KAAKqgD,UAAUl8C,KAAK3C,OAAa4+C,CAAU,EAACjkD,MAAM,SAAS6nB,EAAOnhB,EAAOzH,EAAOjlB,EAAO6S,GAAK,IAAIg7B,EAAO47B,MAAM57B,EAAO47B,IAAIH,IAAIa,SAAU,MAAM,IAAIxB,GAAGgB,WAAW,IAAI,IAAI,IAAI,IAAI5pE,EAAE,EAAEA,EAAEC,EAAOD,IAAK8tC,EAAO47B,IAAIH,IAAIa,SAASt8B,EAAO47B,IAAI/8C,EAAOzH,EAAOllB,GAA0C,CAArC,MAAMiD,GAAG,MAAM,IAAI2lE,GAAGgB,WAAW,GAAI,CAA4C,OAAzC3pE,IAAQ6tC,EAAOhkB,KAAKqgD,UAAUl8C,KAAK3C,OAAatrB,CAAE,GAAEqqE,gBAAgB,CAACJ,SAAS,SAASP,GAAK,IAAIA,EAAIxhD,MAAMjoB,OAAO,CAAC,IAAImE,EAAO,KAAK,GAAGq6D,EAAoB,CAAC,IAAoBlyC,EAAIxH,EAAOiB,MAAnB,KAAsCkkD,EAAU,EAAE,IAAIA,EAAUrM,EAAGyM,SAASp8B,EAAQq8B,MAAMC,GAAGj+C,EAAI,EAAjG,KAA4G,EAAqE,CAAlE,MAAMtpB,GAAG,IAAGA,EAAEoqB,WAAWo9C,SAAS,OAAwB,MAAMxnE,EAAvBinE,EAAU,CAAe,CAAgB9lE,EAAb8lE,EAAU,EAAU39C,EAAIppB,MAAM,EAAE+mE,GAAW78C,SAAS,SAAqB,IAAM,KAAuB,oBAARwD,QAA2C,mBAAfA,OAAO65C,OAAgE,QAA5CtmE,EAAOysB,OAAO65C,OAAO,cAA6BtmE,GAAQ,MAA+B,mBAAVumE,UAAoD,QAA9BvmE,EAAOumE,cAA6BvmE,GAAQ,MAAM,IAAIA,EAAQ,OAAO,KAAKslE,EAAIxhD,MAAM0iD,GAAmBxmE,GAAO,EAAM,QAAOslE,EAAIxhD,MAAMyY,OAAQ,EAACypC,SAAS,SAASV,EAAI5hD,GAAc,OAANA,GAAkB,KAANA,GAAUtQ,EAAIupD,EAAkB2I,EAAInjC,OAAO,IAAImjC,EAAInjC,OAAO,IAAgB,GAALze,GAAO4hD,EAAInjC,OAAOh0B,KAAKuV,EAAM,EAACiiD,MAAM,SAASL,GAAQA,EAAInjC,QAAQmjC,EAAInjC,OAAOtmC,OAAO,IAAGuX,EAAIupD,EAAkB2I,EAAInjC,OAAO,IAAImjC,EAAInjC,OAAO,GAAI,GAAEskC,iBAAiB,CAACT,SAAS,SAASV,EAAI5hD,GAAc,OAANA,GAAkB,KAANA,GAAUyD,EAAIw1C,EAAkB2I,EAAInjC,OAAO,IAAImjC,EAAInjC,OAAO,IAAgB,GAALze,GAAO4hD,EAAInjC,OAAOh0B,KAAKuV,EAAM,EAACiiD,MAAM,SAASL,GAAQA,EAAInjC,QAAQmjC,EAAInjC,OAAOtmC,OAAO,IAAGsrB,EAAIw1C,EAAkB2I,EAAInjC,OAAO,IAAImjC,EAAInjC,OAAO,GAAI,IAAiT,IAAIukC,GAAM,CAACC,UAAU,KAAKC,MAAM,SAASA,GAAO,OAAOF,GAAMG,WAAW,KAAK,IAAI,MAAU,EAAG,EAACA,WAAW,SAAS3kD,EAAO5jB,EAAKoH,EAAKw/D,GAAK,GAAGV,GAAGsC,SAASphE,IAAO8+D,GAAGuC,OAAOrhE,GAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAQkB,GAAMC,YAAWD,GAAMC,UAAU,CAAC3b,IAAI,CAACtlC,KAAK,CAACshD,QAAQN,GAAMO,SAASD,QAAQE,QAAQR,GAAMO,SAASC,QAAQC,OAAOT,GAAMO,SAASE,OAAOC,MAAMV,GAAMO,SAASG,MAAMC,OAAOX,GAAMO,SAASI,OAAOC,OAAOZ,GAAMO,SAASK,OAAOC,MAAMb,GAAMO,SAASM,MAAMC,QAAQd,GAAMO,SAASO,QAAQC,QAAQf,GAAMO,SAASQ,SAAS/9B,OAAO,CAACg+B,OAAOhB,GAAMrB,WAAWqC,SAAS1G,KAAK,CAACt7C,KAAK,CAACshD,QAAQN,GAAMO,SAASD,QAAQE,QAAQR,GAAMO,SAASC,SAASx9B,OAAO,CAACg+B,OAAOhB,GAAMrB,WAAWqC,OAAO9B,KAAKc,GAAMrB,WAAWO,KAAK/jD,MAAM6kD,GAAMrB,WAAWxjD,MAAM8lD,SAASjB,GAAMrB,WAAWsC,SAASC,KAAKlB,GAAMrB,WAAWuC,KAAKC,MAAMnB,GAAMrB,WAAWwC,QAAQC,KAAK,CAACpiD,KAAK,CAACshD,QAAQN,GAAMO,SAASD,QAAQE,QAAQR,GAAMO,SAASC,QAAQa,SAASrB,GAAMO,SAASc,UAAUr+B,OAAO,CAAC,GAAGs+B,OAAO,CAACtiD,KAAK,CAACshD,QAAQN,GAAMO,SAASD,QAAQE,QAAQR,GAAMO,SAASC,SAASx9B,OAAO86B,GAAGyD,qBAAoB,IAAIviD,EAAK8+C,GAAGqC,WAAW3kD,EAAO5jB,EAAKoH,EAAKw/D,GAAgmB,OAAxlBV,GAAG0D,MAAMxiD,EAAKhgB,OAAOggB,EAAKuhD,SAASP,GAAMC,UAAU3b,IAAItlC,KAAKA,EAAK2/C,WAAWqB,GAAMC,UAAU3b,IAAIthB,OAAOhkB,EAAKyiD,SAAS,CAAC,GAAU3D,GAAG4D,OAAO1iD,EAAKhgB,OAAOggB,EAAKuhD,SAASP,GAAMC,UAAU3F,KAAKt7C,KAAKA,EAAK2/C,WAAWqB,GAAMC,UAAU3F,KAAKt3B,OAAOhkB,EAAK2iD,UAAU,EAAE3iD,EAAKyiD,SAAS,MAAa3D,GAAG8D,OAAO5iD,EAAKhgB,OAAOggB,EAAKuhD,SAASP,GAAMC,UAAUmB,KAAKpiD,KAAKA,EAAK2/C,WAAWqB,GAAMC,UAAUmB,KAAKp+B,QAAe86B,GAAG+D,SAAS7iD,EAAKhgB,QAAOggB,EAAKuhD,SAASP,GAAMC,UAAUqB,OAAOtiD,KAAKA,EAAK2/C,WAAWqB,GAAMC,UAAUqB,OAAOt+B,QAAOhkB,EAAKqgD,UAAUl8C,KAAK3C,MAAShF,IAAQA,EAAOimD,SAAS7pE,GAAMonB,EAAKxD,EAAO6jD,UAAUrgD,EAAKqgD,WAAiBrgD,CAAK,EAAC8iD,wBAAwB,SAAS9iD,GAAM,OAAIA,EAAKyiD,SAAqCziD,EAAKyiD,SAASnL,SAAgBt3C,EAAKyiD,SAASnL,SAAS,EAAEt3C,EAAK2iD,WAAkB,IAAI/vB,WAAW5yB,EAAKyiD,UAAvH,IAAI7vB,WAAW,EAAkH,EAACmwB,kBAAkB,SAAS/iD,EAAKgjD,GAAa,IAAIC,EAAajjD,EAAKyiD,SAASziD,EAAKyiD,SAAStsE,OAAO,EAAE,KAAG8sE,GAAcD,GAAjB,CAAwEA,EAAYvzD,KAAK8X,IAAIy7C,EAAYC,GAAcA,EAAzD,QAA4F,EAAE,SAAS,GAAoB,GAAdA,IAAgBD,EAAYvzD,KAAK8X,IAAIy7C,EAAY,MAAK,IAAIE,EAAYljD,EAAKyiD,SAASziD,EAAKyiD,SAAS,IAAI7vB,WAAWowB,GAAgBhjD,EAAK2iD,UAAU,GAAE3iD,EAAKyiD,SAASr4B,IAAI84B,EAAY5L,SAAS,EAAEt3C,EAAK2iD,WAAW,EAAnV,CAAsV,EAACQ,kBAAkB,SAASnjD,EAAKojD,GAAS,GAAGpjD,EAAK2iD,WAAWS,EAAe,GAAY,GAATA,EAAYpjD,EAAKyiD,SAAS,KAAKziD,EAAK2iD,UAAU,MAAM,CAAC,IAAIO,EAAYljD,EAAKyiD,SAASziD,EAAKyiD,SAAS,IAAI7vB,WAAWwwB,GAAYF,GAAaljD,EAAKyiD,SAASr4B,IAAI84B,EAAY5L,SAAS,EAAE7nD,KAAKwU,IAAIm/C,EAAQpjD,EAAK2iD,aAAa3iD,EAAK2iD,UAAUS,CAAQ,CAAC,EAAC7B,SAAS,CAACD,QAAQ,SAASthD,GAAM,IAAIqjD,EAAK,CAAC,EAA4d,OAA1dA,EAAK7D,IAAIV,GAAG+D,SAAS7iD,EAAKhgB,MAAMggB,EAAK5pB,GAAG,EAAEitE,EAAKC,IAAItjD,EAAK5pB,GAAGitE,EAAKrjE,KAAKggB,EAAKhgB,KAAKqjE,EAAKE,MAAM,EAAEF,EAAKG,IAAI,EAAEH,EAAKI,IAAI,EAAEJ,EAAKxD,KAAK7/C,EAAK6/C,KAAQf,GAAG0D,MAAMxiD,EAAKhgB,MAAOqjE,EAAKh+C,KAAK,KAAay5C,GAAG4D,OAAO1iD,EAAKhgB,MAAOqjE,EAAKh+C,KAAKrF,EAAK2iD,UAAkB7D,GAAG8D,OAAO5iD,EAAKhgB,MAAOqjE,EAAKh+C,KAAKrF,EAAKoiD,KAAKjsE,OAAYktE,EAAKh+C,KAAK,EAAEg+C,EAAKK,MAAM,IAAIv/C,KAAKnE,EAAKqgD,WAAWgD,EAAKM,MAAM,IAAIx/C,KAAKnE,EAAKqgD,WAAWgD,EAAKO,MAAM,IAAIz/C,KAAKnE,EAAKqgD,WAAWgD,EAAKQ,QAAQ,KAAKR,EAAKS,OAAOr0D,KAAKsY,KAAKs7C,EAAKh+C,KAAKg+C,EAAKQ,SAAgBR,CAAK,EAAC7B,QAAQ,SAASxhD,EAAKqjD,QAAqBztE,IAAZytE,EAAKrjE,OAAkBggB,EAAKhgB,KAAKqjE,EAAKrjE,WAAyBpK,IAAjBytE,EAAKhD,YAAuBrgD,EAAKqgD,UAAUgD,EAAKhD,gBAAyBzqE,IAAZytE,EAAKh+C,MAAkB27C,GAAMmC,kBAAkBnjD,EAAKqjD,EAAKh+C,KAAO,EAACo8C,OAAO,SAASjlD,EAAO5jB,GAAM,MAAMkmE,GAAGiF,cAAc,GAAI,EAACrC,MAAM,SAASllD,EAAO5jB,EAAKoH,EAAKw/D,GAAK,OAAOwB,GAAMG,WAAW3kD,EAAO5jB,EAAKoH,EAAKw/D,EAAK,EAACmC,OAAO,SAASqC,EAASC,EAAQC,GAAU,GAAGpF,GAAG0D,MAAMwB,EAAShkE,MAAM,CAAC,IAAImkE,EAAS,IAAIA,EAASrF,GAAGsF,WAAWH,EAAQC,EAAoB,CAAV,MAAM/qE,GAAI,IAAGgrE,EAAU,IAAI,IAAIjuE,KAAKiuE,EAAS1B,SAAU,MAAM,IAAI3D,GAAGgB,WAAW,GAAM,QAAOkE,EAASxnD,OAAOimD,SAASuB,EAASprE,MAAMorE,EAASxnD,OAAO6jD,UAAUl8C,KAAK3C,MAAMwiD,EAASprE,KAAKsrE,EAASD,EAAQxB,SAASyB,GAAUF,EAASC,EAAQ5D,UAAU2D,EAASxnD,OAAO6jD,UAAU2D,EAASxnD,OAAOynD,CAAQ,EAACrC,OAAO,SAASplD,EAAO5jB,UAAa4jB,EAAOimD,SAAS7pE,GAAM4jB,EAAO6jD,UAAUl8C,KAAK3C,KAAM,EAACqgD,MAAM,SAASrlD,EAAO5jB,GAAM,IAAIonB,EAAK8+C,GAAGsF,WAAW5nD,EAAO5jB,GAAM,IAAI,IAAI1C,KAAK8pB,EAAKyiD,SAAU,MAAM,IAAI3D,GAAGgB,WAAW,WAAWtjD,EAAOimD,SAAS7pE,GAAM4jB,EAAO6jD,UAAUl8C,KAAK3C,KAAM,EAACsgD,QAAQ,SAAS9hD,GAAM,IAAIqkD,EAAQ,CAAC,IAAI,MAAM,IAAI,IAAIvuE,KAAOkqB,EAAKyiD,SAAcziD,EAAKyiD,SAAS98D,eAAe7P,IAAeuuE,EAAQ57D,KAAK3S,GAAK,OAAOuuE,CAAQ,EAACtC,QAAQ,SAASvlD,EAAO8nD,EAAQC,GAAS,IAAIvkD,EAAKghD,GAAMG,WAAW3kD,EAAO8nD,EAAQ,MAAU,GAAqB,OAAlBtkD,EAAKoiD,KAAKmC,EAAevkD,CAAK,EAACqiD,SAAS,SAASriD,GAAM,IAAI8+C,GAAG8D,OAAO5iD,EAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,OAAO9/C,EAAKoiD,IAAK,GAAEzC,WAAW,CAACO,KAAK,SAASl8B,EAAOnhB,EAAOzH,EAAOjlB,EAAOy9C,GAAU,IAAI6uB,EAASz+B,EAAOhkB,KAAKyiD,SAAS,GAAG7uB,GAAU5P,EAAOhkB,KAAK2iD,UAAU,OAAO,EAAE,IAAIt9C,EAAK5V,KAAKwU,IAAI+f,EAAOhkB,KAAK2iD,UAAU/uB,EAASz9C,GAAQ,GAAGkvB,EAAK,GAAGo9C,EAASnL,SAAUz0C,EAAOunB,IAAIq4B,EAASnL,SAAS1jB,EAASA,EAASvuB,GAAMjK,QAAa,IAAI,IAAIllB,EAAE,EAAEA,EAAEmvB,EAAKnvB,IAAI2sB,EAAOzH,EAAOllB,GAAGusE,EAAS7uB,EAAS19C,GAAG,OAAOmvB,CAAK,EAAClJ,MAAM,SAAS6nB,EAAOnhB,EAAOzH,EAAOjlB,EAAOy9C,EAAS4wB,GAAsD,GAA3C3hD,EAAOA,SAASy1C,EAAMz1C,SAAQ2hD,GAAO,IAAUruE,EAAO,OAAO,EAAE,IAAI6pB,EAAKgkB,EAAOhkB,KAA+B,GAA1BA,EAAKqgD,UAAUl8C,KAAK3C,MAASqB,EAAOy0C,YAAYt3C,EAAKyiD,UAAUziD,EAAKyiD,SAASnL,UAAU,CAAC,GAAGkN,EAAkF,OAA1ExkD,EAAKyiD,SAAS5/C,EAAOy0C,SAASl8C,EAAOA,EAAOjlB,GAAQ6pB,EAAK2iD,UAAUxsE,EAAcA,EAAY,GAAoB,IAAjB6pB,EAAK2iD,WAA0B,IAAX/uB,EAAqF,OAAvE5zB,EAAKyiD,SAAS5/C,EAAOxpB,MAAM+hB,EAAOA,EAAOjlB,GAAQ6pB,EAAK2iD,UAAUxsE,EAAcA,EAAY,GAAGy9C,EAASz9C,GAAQ6pB,EAAK2iD,UAA6E,OAAlE3iD,EAAKyiD,SAASr4B,IAAIvnB,EAAOy0C,SAASl8C,EAAOA,EAAOjlB,GAAQy9C,GAAiBz9C,CAAQ,CAA8C,GAA9C6qE,GAAM+B,kBAAkB/iD,EAAK4zB,EAASz9C,GAAW6pB,EAAKyiD,SAASnL,UAAUz0C,EAAOy0C,SAAUt3C,EAAKyiD,SAASr4B,IAAIvnB,EAAOy0C,SAASl8C,EAAOA,EAAOjlB,GAAQy9C,QAAe,IAAI,IAAI19C,EAAE,EAAEA,EAAEC,EAAOD,IAAK8pB,EAAKyiD,SAAS7uB,EAAS19C,GAAG2sB,EAAOzH,EAAOllB,GAA4D,OAAxD8pB,EAAK2iD,UAAUlzD,KAAK8X,IAAIvH,EAAK2iD,UAAU/uB,EAASz9C,GAAeA,CAAO,EAAC6rE,OAAO,SAASh+B,EAAO5oB,EAAOqpD,GAAQ,IAAI7wB,EAASx4B,EAAqI,GAAlH,IAATqpD,EAAY7wB,GAAU5P,EAAO4P,SAA0B,IAAT6wB,GAAe3F,GAAG4D,OAAO1+B,EAAOhkB,KAAKhgB,QAAO4zC,GAAU5P,EAAOhkB,KAAK2iD,WAAc/uB,EAAS,EAAG,MAAM,IAAIkrB,GAAGgB,WAAW,IAAI,OAAOlsB,CAAS,EAACquB,SAAS,SAASj+B,EAAO5oB,EAAOjlB,GAAQ6qE,GAAM+B,kBAAkB/+B,EAAOhkB,KAAK5E,EAAOjlB,GAAQ6tC,EAAOhkB,KAAK2iD,UAAUlzD,KAAK8X,IAAIyc,EAAOhkB,KAAK2iD,UAAUvnD,EAAOjlB,EAAQ,EAAC+rE,KAAK,SAASl+B,EAAO0gC,EAAQvuE,EAAOy9C,EAAS+wB,EAAKr0B,GAAO,GAAa,IAAVo0B,EAAa,MAAM,IAAI5F,GAAGgB,WAAW,IAAI,IAAIhB,GAAG4D,OAAO1+B,EAAOhkB,KAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,IAAIlI,EAAQgN,EAAcnC,EAASz+B,EAAOhkB,KAAKyiD,SAAS,GAAW,EAANnyB,GAAUmyB,EAAS5/C,SAASA,EAAoD,CAA8O,IAA1O+wB,EAAS,GAAGA,EAASz9C,EAAOssE,EAAStsE,UAA8BssE,EAAnBA,EAASnL,SAAmBmL,EAASnL,SAAS1jB,EAASA,EAASz9C,GAAsBH,MAAMrB,UAAU0E,MAAMzB,KAAK6qE,EAAS7uB,EAASA,EAASz9C,IAASyuE,GAAU,IAAKhN,EAA9zN,SAAmBvyC,GAAMA,EAAzG,SAAqBA,EAAKw/C,GAAW,OAA0F,MAAnFp1D,KAAKsY,KAAK1C,EAAyE,MAA/C,CAA8By/C,CAAYz/C,GAAY,IAAIuyC,EAAImN,GAA6B,MAAM1/C,GAAM,OAAIuyC,GAAjQ,SAAoB8M,EAAQr/C,GAAMwyC,EAAOmN,KAAK,EAAEN,EAAQA,EAAQr/C,EAAM,CAAwM4/C,CAAWrN,EAAIvyC,GAAauyC,GAA9B,CAAkC,CAA0qNsN,CAAU/uE,IAAiB,MAAM,IAAI2oE,GAAGgB,WAAW,IAAIxH,EAAMluB,IAAIq4B,EAAS7K,EAAK,MAAvVgN,GAAU,EAAMhN,EAAI6K,EAAS5vB,WAA0T,MAAM,CAAC+kB,IAAIA,EAAIgN,UAAUA,EAAW,EAACzC,MAAM,SAASn+B,EAAOnhB,EAAOzH,EAAOjlB,EAAOgvE,GAAW,IAAIrG,GAAG4D,OAAO1+B,EAAOhkB,KAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,OAAa,EAAVqF,GAAuCnE,GAAMrB,WAAWxjD,MAAM6nB,EAAOnhB,EAAO,EAAE1sB,EAAOilB,GAAO,GAAxE,CAAwF,IAAwZ0jD,GAAG,CAACjnE,KAAK,KAAKutE,OAAO,GAAGC,QAAQ,CAAC,EAAEC,QAAQ,GAAGC,UAAU,EAAEC,UAAU,KAAKv6D,YAAY,IAAIw6D,aAAY,EAAMC,mBAAkB,EAAK5F,WAAW,KAAKiE,cAAc,CAAC,EAAE4B,YAAY,KAAKC,eAAe,EAAEC,WAAW,CAAC3mD,EAAK1jB,EAAK,CAAC,KAAyC,KAApC0jB,EAAKy/C,GAAQ3qE,QAAQ8qE,GAAGC,MAAM7/C,IAAe,MAAM,CAACA,KAAK,GAAGc,KAAK,MAAyF,IAAlCxkB,EAAKwD,OAAOumC,OAAhD,CAACugC,cAAa,EAAKC,cAAc,GAA+BvqE,IAAcuqE,cAAc,EAAG,MAAM,IAAIjH,GAAGgB,WAAW,IAAiH,IAA7G,IAAI14D,EAAM02D,GAAKI,eAAeh/C,EAAK3d,MAAM,KAAK+T,QAAOvX,KAAKA,KAAG,GAAWo/B,EAAQ2hC,GAAGjnE,KAASmuE,EAAa,IAAY9vE,EAAE,EAAEA,EAAEkR,EAAMjR,OAAOD,IAAI,CAAC,IAAI+vE,EAAO/vE,IAAIkR,EAAMjR,OAAO,EAAE,GAAG8vE,GAAQzqE,EAAKghB,OAAQ,MAA+L,GAAzL2gB,EAAQ2hC,GAAGsF,WAAWjnC,EAAQ/1B,EAAMlR,IAAI8vE,EAAalI,GAAKY,MAAMsH,EAAa5+D,EAAMlR,IAAO4oE,GAAGoH,aAAa/oC,MAAc8oC,GAAQA,GAAQzqE,EAAKsqE,gBAAc3oC,EAAQA,EAAQgpC,QAAQtuE,OAAUouE,GAAQzqE,EAAK4qE,OAAoB,IAAZ,IAAIx+D,EAAM,EAAQk3D,GAAG8D,OAAOzlC,EAAQn9B,OAAM,CAAC,IAAIoiE,EAAKtD,GAAGuD,SAAS2D,GAA4K,GAA9JA,EAAarH,GAAQ3qE,QAAQ8pE,GAAKS,QAAQyH,GAAc5D,GAAkFjlC,EAAjE2hC,GAAG+G,WAAWG,EAAa,CAACD,cAAcvqE,EAAKuqE,cAAc,IAAmB/lD,KAAQpY,IAAQ,GAAI,MAAM,IAAIk3D,GAAGgB,WAAW,GAAK,CAAE,OAAM,CAAC5gD,KAAK8mD,EAAahmD,KAAKmd,EAA9B,EAAwC9xB,QAAQ2U,IAAgB,IAAT,IAAId,IAAgB,CAAC,GAAG4/C,GAAGr7D,OAAOuc,GAAM,CAAC,IAAIkhD,EAAMlhD,EAAKkhD,MAAMmF,WAAW,OAAInnD,EAAiD,MAAxBgiD,EAAMA,EAAM/qE,OAAO,GAAS+qE,EAAM,IAAIhiD,EAAKgiD,EAAMhiD,EAA9DgiD,CAAmE,CAAAhiD,EAAKA,EAAKc,EAAKpnB,KAAK,IAAIsmB,EAAKc,EAAKpnB,KAAKonB,EAAKA,EAAKxD,MAAO,GAAE8pD,SAAS,CAACC,EAAS3tE,KAAmB,IAAX,IAAIsT,EAAK,EAAUhW,EAAE,EAAEA,EAAE0C,EAAKzC,OAAOD,IAAKgW,GAAMA,GAAM,GAAGA,EAAKtT,EAAKqQ,WAAW/S,GAAG,EAAE,OAAOqwE,EAASr6D,IAAO,GAAG4yD,GAAG0G,UAAUrvE,MAAvC,EAA+CqwE,YAAYxmD,IAAO,IAAI9T,EAAK4yD,GAAGwH,SAAStmD,EAAKxD,OAAOpmB,GAAG4pB,EAAKpnB,MAAMonB,EAAKymD,UAAU3H,GAAG0G,UAAUt5D,GAAM4yD,GAAG0G,UAAUt5D,GAAM8T,CAAnB,EAAyB0mD,eAAe1mD,IAAO,IAAI9T,EAAK4yD,GAAGwH,SAAStmD,EAAKxD,OAAOpmB,GAAG4pB,EAAKpnB,MAAM,GAAGkmE,GAAG0G,UAAUt5D,KAAQ8T,EAAM8+C,GAAG0G,UAAUt5D,GAAM8T,EAAKymD,eAA8C,IAA/B,IAAItpC,EAAQ2hC,GAAG0G,UAAUt5D,GAAYixB,GAAQ,CAAC,GAAGA,EAAQspC,YAAYzmD,EAAK,CAACmd,EAAQspC,UAAUzmD,EAAKymD,UAAU,KAAM,CAAAtpC,EAAQA,EAAQspC,SAAU,CAAC,EAAErC,WAAW,CAAC5nD,EAAO5jB,KAAQ,IAAI+tE,EAAQ7H,GAAG8H,UAAUpqD,GAAQ,GAAGmqD,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,EAAQnqD,GAA6C,IAArC,IAAItQ,EAAK4yD,GAAGwH,SAAS9pD,EAAOpmB,GAAGwC,GAAconB,EAAK8+C,GAAG0G,UAAUt5D,GAAM8T,EAAKA,EAAKA,EAAKymD,UAAU,CAAC,IAAII,EAAS7mD,EAAKpnB,KAAK,GAAGonB,EAAKxD,OAAOpmB,KAAKomB,EAAOpmB,IAAIywE,IAAWjuE,EAAM,OAAOonB,CAAM,QAAO8+C,GAAG2C,OAAOjlD,EAAO5jB,EAAxB,EAA+BuoE,WAAW,CAAC3kD,EAAO5jB,EAAKoH,EAAK6/D,KAAQ,IAAI7/C,EAAK,IAAI8+C,GAAGgI,OAAOtqD,EAAO5jB,EAAKoH,EAAK6/D,GAA2B,OAArBf,GAAG0H,YAAYxmD,GAAaA,CAAP,EAAa+mD,YAAY/mD,IAAO8+C,GAAG4H,eAAe1mD,EAAlB,EAAyBvc,OAAOuc,GAAcA,IAAOA,EAAKxD,OAAQ0pD,aAAalmD,KAAeA,EAAKmmD,QAASzD,OAAO1iE,GAA4B,QAAT,MAALA,GAAqBwiE,MAAMxiE,GAA4B,QAAT,MAALA,GAAqB4iE,OAAO5iE,GAA4B,QAAT,MAALA,GAAqB6iE,SAAS7iE,GAA4B,OAAT,MAALA,GAAoBohE,SAASphE,GAA4B,QAAT,MAALA,GAAqBqhE,OAAOrhE,GAA4B,OAAT,MAALA,GAAoBgnE,SAAShnE,GAA4B,QAAT,MAALA,GAAqBinE,UAAU,CAAC,EAAI,EAAE,KAAK,EAAE,EAAI,IAAI,KAAK,IAAI,EAAI,KAAK,KAAK,MAAMC,kBAAkBhnE,IAAM,IAAIowC,EAAMwuB,GAAGmI,UAAU/mE,GAAK,QAAiB,IAAPowC,EAAoB,MAAM,IAAIp7C,MAAM,2BAA2BgL,GAAK,OAAOowC,CAAP,EAAc62B,wBAAwBC,IAAO,IAAIC,EAAM,CAAC,IAAI,IAAI,MAAW,EAALD,GAAgC,OAAhB,IAALA,IAAUC,GAAO,KAAWA,CAAP,EAAcC,gBAAgB,CAACtnD,EAAKqnD,IAAYvI,GAAG4G,qBAA+B2B,EAAM1G,SAAS,MAAkB,IAAV3gD,EAAKhgB,SAA4BqnE,EAAM1G,SAAS,MAAkB,IAAV3gD,EAAKhgB,SAA4BqnE,EAAM1G,SAAS,MAAkB,GAAV3gD,EAAKhgB,MAAjJ,EAAmD,EAA2H4mE,UAAUthB,GAAkBwZ,GAAGwI,gBAAgBhiB,EAAI,OAAmCA,EAAIic,SAASE,OAAuB,EAAT,GAAY8F,UAAU,CAACjiB,EAAI1sD,KAAQ,IAAqC,OAAxBkmE,GAAGsF,WAAW9e,EAAI1sD,GAAa,EAAa,CAAV,MAAMO,GAAI,QAAO2lE,GAAGwI,gBAAgBhiB,EAAI,KAA9B,EAAqCkiB,UAAU,CAACliB,EAAI1sD,EAAK6uE,KAAS,IAAIznD,EAAK,IAAIA,EAAK8+C,GAAGsF,WAAW9e,EAAI1sD,EAA8B,CAAxB,MAAMO,GAAG,OAAOA,EAAEuuE,KAAM,KAAIf,EAAQ7H,GAAGwI,gBAAgBhiB,EAAI,MAAM,GAAGqhB,EAAS,OAAOA,EAAQ,GAAGc,EAAM,CAAC,IAAI3I,GAAG0D,MAAMxiD,EAAKhgB,MAAO,OAAO,GAAG,GAAG8+D,GAAGr7D,OAAOuc,IAAO8+C,GAAGzzD,QAAQ2U,KAAQ8+C,GAAGC,MAAO,OAAO,EAAI,MAAK,GAAGD,GAAG0D,MAAMxiD,EAAKhgB,MAAO,OAAO,GAAI,OAAO,CAAP,EAAU2nE,QAAQ,CAAC3nD,EAAKswB,IAAatwB,EAAmB8+C,GAAG8D,OAAO5iD,EAAKhgB,MAAc,GAAW8+D,GAAG0D,MAAMxiD,EAAKhgB,QAA8C,MAApC8+D,GAAGqI,wBAAwB72B,IAAoB,IAANA,GAAkB,GAAWwuB,GAAGwI,gBAAgBtnD,EAAK8+C,GAAGqI,wBAAwB72B,IAA/L,GAAwMs3B,aAAa,KAAKC,OAAO,CAACC,EAAS,EAAEC,EAAOjJ,GAAG8I,gBAAgB,IAAI,IAAIlH,EAAGoH,EAASpH,GAAIqH,EAAOrH,IAAM,IAAI5B,GAAGwG,QAAQ5E,GAAK,OAAOA,EAAI,MAAM,IAAI5B,GAAGgB,WAAW,GAAxB,EAA6BkI,UAAUtH,GAAI5B,GAAGwG,QAAQ5E,GAAIuH,aAAa,CAACjkC,EAAO8jC,EAASC,KAAcjJ,GAAGoJ,WAAUpJ,GAAGoJ,SAAS,WAAWlzE,KAAKmzE,OAAO,CAAC,CAAE,EAACrJ,GAAGoJ,SAASvzE,UAAU,CAACqV,OAAO,CAACxQ,IAAI,WAAW,OAAOxE,KAAKgrB,IAAK,EAACoqB,IAAI,SAASpsB,GAAKhpB,KAAKgrB,KAAKhC,CAAI,GAAEoqD,OAAO,CAAC5uE,IAAI,WAAW,OAA6B,IAAX,QAAXxE,KAAKs7C,MAAmB,GAAE+3B,QAAQ,CAAC7uE,IAAI,WAAW,OAA6B,IAAX,QAAXxE,KAAKs7C,MAAmB,GAAEg4B,SAAS,CAAC9uE,IAAI,WAAW,OAAkB,KAAXxE,KAAKs7C,KAAW,GAAEA,MAAM,CAAC92C,IAAI,WAAW,OAAOxE,KAAKmzE,OAAO73B,KAAM,EAAClG,IAAI,SAASpsB,GAAKhpB,KAAKmzE,OAAO73B,MAAMtyB,CAAI,GAAE41B,SAAS,CAAK20B,eAAW,OAAOvzE,KAAKmzE,OAAOv0B,QAAS,EAACxJ,IAAI,SAASpsB,GAAKhpB,KAAKmzE,OAAOv0B,SAAS51B,CAAI,KAAGgmB,EAAOhlC,OAAOumC,OAAO,IAAIu5B,GAAGoJ,SAASlkC,GAAQ,IAAI08B,EAAG5B,GAAG+I,OAAOC,EAASC,GAA2C,OAAnC/jC,EAAO08B,GAAGA,EAAG5B,GAAGwG,QAAQ5E,GAAI18B,EAAcA,CAAP,EAAewkC,YAAY9H,IAAK5B,GAAGwG,QAAQ5E,GAAI,IAAf,EAAqB6B,kBAAkB,CAAC3M,KAAK5xB,IAAS,IAAIykC,EAAO3J,GAAG4J,UAAU1kC,EAAOhkB,KAAK6/C,MAAM77B,EAAO27B,WAAW8I,EAAO9I,WAAc37B,EAAO27B,WAAW/J,MAAM5xB,EAAO27B,WAAW/J,KAAK5xB,EAAQ,EAAEg+B,OAAO,KAAK,MAAM,IAAIlD,GAAGgB,WAAW,GAAxB,GAA8B6I,MAAMnJ,GAAKA,GAAK,EAAEoJ,MAAMpJ,GAAS,IAAJA,EAAQqJ,QAAQ,CAACC,EAAGC,IAAKD,GAAI,EAAEC,EAAGrJ,eAAe,CAACF,EAAIC,KAAOX,GAAGuG,QAAQ7F,GAAK,CAACG,WAAWF,EAA5B,EAAkCiJ,UAAUlJ,GAAKV,GAAGuG,QAAQ7F,GAAKwJ,UAAU9H,IAAwC,IAAhC,IAAIkE,EAAO,GAAOzhC,EAAM,CAACu9B,GAAav9B,EAAMxtC,QAAO,CAAC,IAAI+9B,EAAEyP,EAAMp0B,MAAM61D,EAAO38D,KAAKyrB,GAAGyP,EAAMl7B,KAAKlO,MAAMopC,EAAMzP,EAAEkxC,OAAQ,QAAOA,CAAP,EAAe6D,OAAO,CAACC,EAASrrE,KAAgC,mBAAVqrE,IAAsBrrE,EAASqrE,EAASA,GAAS,GAAMpK,GAAG8G,iBAAoB9G,GAAG8G,eAAe,GAAGnkD,EAAI,YAAYq9C,GAAG8G,eAAe,2EAA2E,IAAIR,EAAOtG,GAAGkK,UAAUlK,GAAGjnE,KAAKqpE,OAAWplB,EAAU,EAAE,SAASqtB,EAAWxC,GAA6B,OAApB7H,GAAG8G,iBAAwB/nE,EAAS8oE,EAAS,UAASz2B,EAAKy2B,GAAS,GAAGA,EAAS,OAAIz2B,EAAKk5B,aAAsD,GAA7Cl5B,EAAKk5B,SAAQ,EAAYD,EAAWxC,MAAqB7qB,GAAWspB,EAAOjvE,QAAQgzE,EAAW,KAAO,CAAA/D,EAAOh9D,SAAQ84D,IAAQ,IAAIA,EAAM5jE,KAAK2rE,OAAQ,OAAO/4B,EAAK,MAAMgxB,EAAM5jE,KAAK2rE,OAAO/H,EAAMgI,EAASh5B,EAAjC,GAAhE,EAA0GgxB,MAAM,CAAC5jE,EAAK9B,EAAK6qE,KAAc,IAAqDrmD,EAAjDnoB,EAAkB,MAAbwuE,EAAqBgD,GAAQhD,EAAoB,GAAGxuE,GAAMinE,GAAGjnE,KAAM,MAAM,IAAIinE,GAAGgB,WAAW,IAAS,IAAIjoE,IAAOwxE,EAAO,CAAC,IAAI5H,EAAO3C,GAAG+G,WAAWQ,EAAW,CAACP,cAAa,IAAgD,GAAxCO,EAAW5E,EAAOviD,KAAKc,EAAKyhD,EAAOzhD,KAAQ8+C,GAAGoH,aAAalmD,GAAO,MAAM,IAAI8+C,GAAGgB,WAAW,IAAI,IAAIhB,GAAG0D,MAAMxiD,EAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,GAAK,KAAIoB,EAAM,CAAC5jE,KAAKA,EAAK9B,KAAKA,EAAK6qE,WAAWA,EAAWjB,OAAO,IAAQkE,EAAUhsE,EAAK4jE,MAAMA,GAA4J,OAArJoI,EAAUpI,MAAMA,EAAMA,EAAMrpE,KAAKyxE,EAAazxE,EAAMinE,GAAGjnE,KAAKyxE,EAAkBtpD,IAAMA,EAAKmmD,QAAQjF,EAASlhD,EAAKkhD,OAAOlhD,EAAKkhD,MAAMkE,OAAO38D,KAAKy4D,IAAeoI,CAAP,EAAkBC,QAAQlD,IAAa,IAAI5E,EAAO3C,GAAG+G,WAAWQ,EAAW,CAACP,cAAa,IAAQ,IAAIhH,GAAGoH,aAAazE,EAAOzhD,MAAO,MAAM,IAAI8+C,GAAGgB,WAAW,IAAI,IAAI9/C,EAAKyhD,EAAOzhD,KAASkhD,EAAMlhD,EAAKmmD,QAAYf,EAAOtG,GAAGkK,UAAU9H,GAAOliE,OAAOoH,KAAK04D,GAAG0G,WAAWp9D,SAAQ8D,IAAsC,IAA/B,IAAIixB,EAAQ2hC,GAAG0G,UAAUt5D,GAAYixB,GAAQ,CAAC,IAAIR,EAAKQ,EAAQspC,UAAarB,EAAOzE,SAASxjC,EAAQ+jC,QAAQpC,GAAGiI,YAAY5pC,GAASA,EAAQR,CAAK,KAAG3c,EAAKmmD,QAAQ,KAAK,IAAIrwB,EAAI91B,EAAKkhD,MAAMkE,OAAO9xD,QAAQ4tD,GAAOlhD,EAAKkhD,MAAMkE,OAAOljE,OAAO4zC,EAAI,EAA7B,EAAiC2rB,OAAO,CAACjlD,EAAO5jB,IAAe4jB,EAAO+kD,SAASE,OAAOjlD,EAAO5jB,GAAO8oE,MAAM,CAACxiD,EAAKlf,EAAKw/D,KAAO,IAAiDhjD,EAAtCsiD,GAAG+G,WAAW3mD,EAAK,CAAC1C,QAAO,IAAyBwD,KAASpnB,EAAKklE,GAAKU,SAASt/C,GAAM,IAAItmB,GAAa,MAAPA,GAAmB,OAAPA,EAAa,MAAM,IAAIkmE,GAAGgB,WAAW,IAAI,IAAI6G,EAAQ7H,GAAGyI,UAAU/qD,EAAO5jB,GAAM,GAAG+tE,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,GAAS,IAAInqD,EAAO+kD,SAASG,MAAO,MAAM,IAAI5C,GAAGgB,WAAW,IAAI,OAAOtjD,EAAO+kD,SAASG,MAAMllD,EAAO5jB,EAAKoH,EAAKw/D,EAA9C,EAAoDvgE,OAAO,CAACigB,EAAKlf,KAAQA,OAAYpK,IAAPoK,EAAiBA,EAAK,IAAIA,GAAM,KAAKA,GAAM,MAAa8+D,GAAG4C,MAAMxiD,EAAKlf,EAAK,IAAIwpE,MAAM,CAACtqD,EAAKlf,KAAQA,OAAYpK,IAAPoK,EAAiBA,EAAK,IAAIA,GAAM,KAAQA,GAAM,MAAa8+D,GAAG4C,MAAMxiD,EAAKlf,EAAK,IAAIypE,UAAU,CAACvqD,EAAKlf,KAA0C,IAAlC,IAAI0pE,EAAKxqD,EAAK3d,MAAM,KAASooE,EAAE,GAAWzzE,EAAE,EAAEA,EAAEwzE,EAAKvzE,SAASD,EAAG,GAAIwzE,EAAKxzE,GAAT,CAAqByzE,GAAG,IAAID,EAAKxzE,GAAG,IAAI4oE,GAAG0K,MAAMG,EAAE3pE,EAAsC,CAAhC,MAAM7G,GAAG,GAAY,IAATA,EAAEuuE,MAAU,MAAMvuE,CAAE,CAArE,CAAsE,EAAEywE,MAAM,CAAC1qD,EAAKlf,EAAKw/D,UAAsB,IAALA,IAAkBA,EAAIx/D,EAAKA,EAAK,KAAIA,GAAM,KAAY8+D,GAAG4C,MAAMxiD,EAAKlf,EAAKw/D,IAAMuC,QAAQ,CAACwC,EAAQsF,KAAW,IAAIlL,GAAQ3qE,QAAQuwE,GAAU,MAAM,IAAIzF,GAAGgB,WAAW,IAAI,IAAoDtjD,EAAzCsiD,GAAG+G,WAAWgE,EAAQ,CAACrtD,QAAO,IAAyBwD,KAAK,IAAIxD,EAAQ,MAAM,IAAIsiD,GAAGgB,WAAW,IAAI,IAAIwE,EAAQxG,GAAKU,SAASqL,GAAalD,EAAQ7H,GAAGyI,UAAU/qD,EAAO8nD,GAAS,GAAGqC,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,GAAS,IAAInqD,EAAO+kD,SAASQ,QAAS,MAAM,IAAIjD,GAAGgB,WAAW,IAAI,OAAOtjD,EAAO+kD,SAASQ,QAAQvlD,EAAO8nD,EAAQC,EAA9C,EAAwD5C,OAAO,CAACmI,EAASC,KAAY,IAAmKC,EAAQ/F,EAAvKgG,EAAYnM,GAAKS,QAAQuL,GAAcI,EAAYpM,GAAKS,QAAQwL,GAAcI,EAASrM,GAAKU,SAASsL,GAAc5F,EAASpG,GAAKU,SAASuL,GAAuK,GAArFC,EAAtClL,GAAG+G,WAAWiE,EAAS,CAACttD,QAAO,IAAsBwD,KAAkDikD,EAAtCnF,GAAG+G,WAAWkE,EAAS,CAACvtD,QAAO,IAAsBwD,MAASgqD,IAAU/F,EAAQ,MAAM,IAAInF,GAAGgB,WAAW,IAAI,GAAGkK,EAAQ9I,QAAQ+C,EAAQ/C,MAAO,MAAM,IAAIpC,GAAGgB,WAAW,IAAI,IAAuQqE,EAAnQH,EAASlF,GAAGsF,WAAW4F,EAAQG,GAAczmD,EAASi7C,GAAQj7C,SAASomD,EAASI,GAAa,GAAwB,MAArBxmD,EAASsf,OAAO,GAAU,MAAM,IAAI87B,GAAGgB,WAAW,IAAoD,GAAwB,OAAxEp8C,EAASi7C,GAAQj7C,SAASqmD,EAASE,IAAyBjnC,OAAO,GAAU,MAAM,IAAI87B,GAAGgB,WAAW,IAAiB,IAAIqE,EAASrF,GAAGsF,WAAWH,EAAQC,EAAoB,CAAV,MAAM/qE,GAAI,IAAG6qE,IAAWG,EAAd,CAA+B,IAAIsD,EAAM3I,GAAG0D,MAAMwB,EAAShkE,MAAU2mE,EAAQ7H,GAAG0I,UAAUwC,EAAQG,EAAS1C,GAAO,GAAGd,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,GAA8F,GAArFA,EAAQxC,EAASrF,GAAG0I,UAAUvD,EAAQC,EAASuD,GAAO3I,GAAGyI,UAAUtD,EAAQC,GAAsB,MAAM,IAAIpF,GAAGgB,WAAW6G,GAAS,IAAIqD,EAAQzI,SAASI,OAAQ,MAAM,IAAI7C,GAAGgB,WAAW,IAAI,GAAGhB,GAAGoH,aAAalC,IAAWG,GAAUrF,GAAGoH,aAAa/B,GAAW,MAAM,IAAIrF,GAAGgB,WAAW,IAAI,GAAGmE,IAAU+F,IAASrD,EAAQ7H,GAAGwI,gBAAgB0C,EAAQ,MAAiB,MAAM,IAAIlL,GAAGgB,WAAW6G,GAAU7H,GAAG4H,eAAe1C,GAAU,IAAIgG,EAAQzI,SAASI,OAAOqC,EAASC,EAAQC,EAA4D,CAAlD,MAAM/qE,GAAG,MAAMA,CAAE,CAAxE,QAAgF2lE,GAAG0H,YAAYxC,EAAU,CAA3oB,CAA2oB,EAAEnC,MAAM3iD,IAAO,IAAiD1C,EAAtCsiD,GAAG+G,WAAW3mD,EAAK,CAAC1C,QAAO,IAAyBwD,KAASpnB,EAAKklE,GAAKU,SAASt/C,GAAUc,EAAK8+C,GAAGsF,WAAW5nD,EAAO5jB,GAAU+tE,EAAQ7H,GAAG0I,UAAUhrD,EAAO5jB,GAAK,GAAM,GAAG+tE,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,GAAS,IAAInqD,EAAO+kD,SAASM,MAAO,MAAM,IAAI/C,GAAGgB,WAAW,IAAI,GAAGhB,GAAGoH,aAAalmD,GAAO,MAAM,IAAI8+C,GAAGgB,WAAW,IAAItjD,EAAO+kD,SAASM,MAAMrlD,EAAO5jB,GAAMkmE,GAAGiI,YAAY/mD,EAAf,EAAsB8hD,QAAQ5iD,IAAO,IAAiDc,EAAtC8+C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAO,IAAuBpmD,KAAK,IAAIA,EAAKuhD,SAASO,QAAS,MAAM,IAAIhD,GAAGgB,WAAW,IAAI,OAAO9/C,EAAKuhD,SAASO,QAAQ9hD,EAA7B,EAAoC4hD,OAAO1iD,IAAO,IAAiD1C,EAAtCsiD,GAAG+G,WAAW3mD,EAAK,CAAC1C,QAAO,IAAyBwD,KAAK,IAAIxD,EAAQ,MAAM,IAAIsiD,GAAGgB,WAAW,IAAI,IAAIlnE,EAAKklE,GAAKU,SAASt/C,GAAUc,EAAK8+C,GAAGsF,WAAW5nD,EAAO5jB,GAAU+tE,EAAQ7H,GAAG0I,UAAUhrD,EAAO5jB,GAAK,GAAO,GAAG+tE,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,GAAS,IAAInqD,EAAO+kD,SAASK,OAAQ,MAAM,IAAI9C,GAAGgB,WAAW,IAAI,GAAGhB,GAAGoH,aAAalmD,GAAO,MAAM,IAAI8+C,GAAGgB,WAAW,IAAItjD,EAAO+kD,SAASK,OAAOplD,EAAO5jB,GAAMkmE,GAAGiI,YAAY/mD,EAAf,EAAsBqiD,SAASnjD,IAAO,IAAmCkjD,EAAxBtD,GAAG+G,WAAW3mD,GAAsBc,KAAK,IAAIoiD,EAAM,MAAM,IAAItD,GAAGgB,WAAW,IAAI,IAAIsC,EAAKb,SAASc,SAAU,MAAM,IAAIvD,GAAGgB,WAAW,IAAI,OAAOnB,GAAQ3qE,QAAQ8qE,GAAGzzD,QAAQ+2D,EAAK5lD,QAAQ4lD,EAAKb,SAASc,SAASD,GAAtE,EAA8EgI,KAAK,CAAClrD,EAAKmrD,KAAc,IAAwDrqD,EAA7C8+C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAQiE,IAA6BrqD,KAAK,IAAIA,EAAM,MAAM,IAAI8+C,GAAGgB,WAAW,IAAI,IAAI9/C,EAAKuhD,SAASD,QAAS,MAAM,IAAIxC,GAAGgB,WAAW,IAAI,OAAO9/C,EAAKuhD,SAASD,QAAQthD,EAA7B,EAAoCsqD,MAAMprD,GAAc4/C,GAAGsL,KAAKlrD,GAAK,GAAOqrD,MAAM,CAACrrD,EAAKlf,EAAKqqE,KAAc,IAAIrqD,EAAmH,KAAhCA,EAA9D,iBAANd,EAA2B4/C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAQiE,IAAyBrqD,KAAed,GAAcqiD,SAASC,QAAS,MAAM,IAAI1C,GAAGgB,WAAW,IAAI9/C,EAAKuhD,SAASC,QAAQxhD,EAAK,CAAChgB,KAAU,KAALA,GAAoB,KAAVggB,EAAKhgB,KAAWqgE,UAAUl8C,KAAK3C,OAA1E,EAAmFgpD,OAAO,CAACtrD,EAAKlf,KAAQ8+D,GAAGyL,MAAMrrD,EAAKlf,GAAK,EAAnB,EAA0ByqE,OAAO,CAAC/J,EAAG1gE,KAAQ,IAAIgkC,EAAO86B,GAAGkJ,UAAUtH,GAAI,IAAI18B,EAAQ,MAAM,IAAI86B,GAAGgB,WAAW,GAAGhB,GAAGyL,MAAMvmC,EAAOhkB,KAAKhgB,EAArB,EAA4B0qE,MAAM,CAACxrD,EAAKskD,EAAIC,EAAI4G,KAAc,IAAIrqD,EAAmH,KAAhCA,EAA9D,iBAANd,EAA2B4/C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAQiE,IAAyBrqD,KAAed,GAAcqiD,SAASC,QAAS,MAAM,IAAI1C,GAAGgB,WAAW,IAAI9/C,EAAKuhD,SAASC,QAAQxhD,EAAK,CAACqgD,UAAUl8C,KAAK3C,OAA3C,EAAoDmpD,OAAO,CAACzrD,EAAKskD,EAAIC,KAAO3E,GAAG4L,MAAMxrD,EAAKskD,EAAIC,GAAI,EAAtB,EAA6BmH,OAAO,CAAClK,EAAG8C,EAAIC,KAAO,IAAIz/B,EAAO86B,GAAGkJ,UAAUtH,GAAI,IAAI18B,EAAQ,MAAM,IAAI86B,GAAGgB,WAAW,GAAGhB,GAAG4L,MAAM1mC,EAAOhkB,KAAKwjD,EAAIC,EAAzB,EAA+BoH,SAAS,CAAC3rD,EAAKnW,KAAO,GAAGA,EAAI,EAAG,MAAM,IAAI+1D,GAAGgB,WAAW,IAAI,IAAI9/C,EAA4G,KAAhCA,EAAvD,iBAANd,EAA2B4/C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAO,IAAmBpmD,KAAed,GAAcqiD,SAASC,QAAS,MAAM,IAAI1C,GAAGgB,WAAW,IAAI,GAAGhB,GAAG0D,MAAMxiD,EAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,IAAIhB,GAAG4D,OAAO1iD,EAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,IAAI6G,EAAQ7H,GAAGwI,gBAAgBtnD,EAAK,KAAK,GAAG2mD,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,GAAS3mD,EAAKuhD,SAASC,QAAQxhD,EAAK,CAACqF,KAAKtc,EAAIs3D,UAAUl8C,KAAK3C,OAApD,EAA6DspD,UAAU,CAACpK,EAAG33D,KAAO,IAAIi7B,EAAO86B,GAAGkJ,UAAUtH,GAAI,IAAI18B,EAAQ,MAAM,IAAI86B,GAAGgB,WAAW,GAAG,GAA4B,IAAX,QAAb97B,EAAOsM,OAAoB,MAAM,IAAIwuB,GAAGgB,WAAW,IAAIhB,GAAG+L,SAAS7mC,EAAOhkB,KAAKjX,EAAxB,EAA8BgiE,MAAM,CAAC7rD,EAAKwkD,EAAMC,KAAS,IAAiD3jD,EAAtC8+C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAO,IAAuBpmD,KAAKA,EAAKuhD,SAASC,QAAQxhD,EAAK,CAACqgD,UAAU5wD,KAAK8X,IAAIm8C,EAAMC,IAArD,EAA+D/N,KAAK,CAAC12C,EAAKoxB,EAAMtwC,KAAQ,GAAU,KAAPkf,EAAW,MAAM,IAAI4/C,GAAGgB,WAAW,IAAwJ,IAAI9/C,EAAK,GAA9FhgB,OAAkB,IAANA,EAAkB,IAAIA,EAAkBA,EAAJ,IAA/GswC,EAAoB,iBAAPA,EAAgBwuB,GAAGoI,kBAAkB52B,GAAOA,GAAoE,KAALtwC,EAAU,MAAgB,EAA2B,iBAANkf,EAAgBc,EAAKd,MAAS,CAACA,EAAK4+C,GAAKj2D,UAAUqX,GAAM,IAA4Dc,EAA7C8+C,GAAG+G,WAAW3mD,EAAK,CAACknD,SAAe,OAAN91B,KAA4BtwB,IAAe,CAAV,MAAM7mB,GAAI,CAAC,KAAI6xE,GAAQ,EAAM,GAAS,GAAN16B,EAAU,GAAGtwB,GAAM,GAAS,IAANswB,EAAW,MAAM,IAAIwuB,GAAGgB,WAAW,SAAU9/C,EAAK8+C,GAAG4C,MAAMxiD,EAAKlf,EAAK,GAAGgrE,GAAQ,EAAM,IAAIhrD,EAAM,MAAM,IAAI8+C,GAAGgB,WAAW,IAA2C,GAApChB,GAAG+D,SAAS7iD,EAAKhgB,QAAOswC,IAAO,KAAc,MAANA,IAAcwuB,GAAG0D,MAAMxiD,EAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,IAAIkL,EAAQ,CAAC,IAAIrE,EAAQ7H,GAAG6I,QAAQ3nD,EAAKswB,GAAO,GAAGq2B,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,EAAU,CAAS,IAANr2B,IAAY06B,GAASlM,GAAG+L,SAAS7qD,EAAK,GAAGswB,IAAO,OAAkB,IAAItM,EAAO86B,GAAGmJ,aAAa,CAACjoD,KAAKA,EAAKd,KAAK4/C,GAAGzzD,QAAQ2U,GAAMswB,MAAMA,EAAMyvB,UAAS,EAAKnsB,SAAS,EAAE+rB,WAAW3/C,EAAK2/C,WAAWsL,SAAS,GAAG1zE,OAAM,IAA4L,OAAjLysC,EAAO27B,WAAW/J,MAAM5xB,EAAO27B,WAAW/J,KAAK5xB,IAAW2vB,EAAM,cAA0B,EAANrjB,IAAcwuB,GAAGoM,YAAUpM,GAAGoM,UAAU,CAAC,GAAOhsD,KAAQ4/C,GAAGoM,YAAYpM,GAAGoM,UAAUhsD,GAAM,IAAU8kB,CAAP,EAAeg8B,MAAMh8B,IAAS,GAAG86B,GAAGqM,SAASnnC,GAAS,MAAM,IAAI86B,GAAGgB,WAAW,GAAM97B,EAAOonC,WAASpnC,EAAOonC,SAAS,MAAK,IAAOpnC,EAAO27B,WAAWK,OAAOh8B,EAAO27B,WAAWK,MAAMh8B,EAA4D,CAAnD,MAAM7qC,GAAG,MAAMA,CAAE,CAAlF,QAA0F2lE,GAAG0J,YAAYxkC,EAAO08B,GAAI,CAAA18B,EAAO08B,GAAG,IAAV,EAAgByK,SAASnnC,GAA4B,OAAZA,EAAO08B,GAAWsB,OAAO,CAACh+B,EAAO5oB,EAAOqpD,KAAU,GAAG3F,GAAGqM,SAASnnC,GAAS,MAAM,IAAI86B,GAAGgB,WAAW,GAAG,IAAI97B,EAAO+7B,WAAW/7B,EAAO27B,WAAWqC,OAAQ,MAAM,IAAIlD,GAAGgB,WAAW,IAAI,GAAW,GAAR2E,GAAmB,GAARA,GAAmB,GAARA,EAAW,MAAM,IAAI3F,GAAGgB,WAAW,IAAsF,OAAlF97B,EAAO4P,SAAS5P,EAAO27B,WAAWqC,OAAOh+B,EAAO5oB,EAAOqpD,GAAQzgC,EAAOinC,SAAS,GAAUjnC,EAAO4P,QAAd,EAAwBssB,KAAK,CAACl8B,EAAOnhB,EAAOzH,EAAOjlB,EAAOy9C,KAAY,GAAGz9C,EAAO,GAAGy9C,EAAS,EAAG,MAAM,IAAIkrB,GAAGgB,WAAW,IAAI,GAAGhB,GAAGqM,SAASnnC,GAAS,MAAM,IAAI86B,GAAGgB,WAAW,GAAG,GAA4B,IAAX,QAAb97B,EAAOsM,OAAoB,MAAM,IAAIwuB,GAAGgB,WAAW,GAAG,GAAGhB,GAAG0D,MAAMx+B,EAAOhkB,KAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,IAAI97B,EAAO27B,WAAWO,KAAM,MAAM,IAAIpB,GAAGgB,WAAW,IAAI,IAAIuL,OAAyB,IAAVz3B,EAAsB,GAAIy3B,GAAuC,IAAIrnC,EAAO+7B,SAAU,MAAM,IAAIjB,GAAGgB,WAAW,SAA3ElsB,EAAS5P,EAAO4P,SAA+D,IAAIwsB,EAAUp8B,EAAO27B,WAAWO,KAAKl8B,EAAOnhB,EAAOzH,EAAOjlB,EAAOy9C,GAAiD,OAAnCy3B,IAAQrnC,EAAO4P,UAAUwsB,GAAiBA,CAAP,EAAkBjkD,MAAM,CAAC6nB,EAAOnhB,EAAOzH,EAAOjlB,EAAOy9C,EAAS4wB,KAAU,GAAGruE,EAAO,GAAGy9C,EAAS,EAAG,MAAM,IAAIkrB,GAAGgB,WAAW,IAAI,GAAGhB,GAAGqM,SAASnnC,GAAS,MAAM,IAAI86B,GAAGgB,WAAW,GAAG,GAA4B,IAAX,QAAb97B,EAAOsM,OAAoB,MAAM,IAAIwuB,GAAGgB,WAAW,GAAG,GAAGhB,GAAG0D,MAAMx+B,EAAOhkB,KAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,IAAI97B,EAAO27B,WAAWxjD,MAAO,MAAM,IAAI2iD,GAAGgB,WAAW,IAAO97B,EAAO+7B,UAAuB,KAAb/7B,EAAOsM,OAAYwuB,GAAGkD,OAAOh+B,EAAO,EAAE,GAAG,IAAIqnC,OAAyB,IAAVz3B,EAAsB,GAAIy3B,GAAuC,IAAIrnC,EAAO+7B,SAAU,MAAM,IAAIjB,GAAGgB,WAAW,SAA3ElsB,EAAS5P,EAAO4P,SAA+D,IAAI03B,EAAatnC,EAAO27B,WAAWxjD,MAAM6nB,EAAOnhB,EAAOzH,EAAOjlB,EAAOy9C,EAAS4wB,GAAkD,OAAtC6G,IAAQrnC,EAAO4P,UAAU03B,GAAoBA,CAAP,EAAqBrJ,SAAS,CAACj+B,EAAO5oB,EAAOjlB,KAAU,GAAG2oE,GAAGqM,SAASnnC,GAAS,MAAM,IAAI86B,GAAGgB,WAAW,GAAG,GAAG1kD,EAAO,GAAGjlB,GAAQ,EAAG,MAAM,IAAI2oE,GAAGgB,WAAW,IAAI,GAA4B,IAAX,QAAb97B,EAAOsM,OAAoB,MAAM,IAAIwuB,GAAGgB,WAAW,GAAG,IAAIhB,GAAG4D,OAAO1+B,EAAOhkB,KAAKhgB,QAAQ8+D,GAAG0D,MAAMx+B,EAAOhkB,KAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,IAAI97B,EAAO27B,WAAWsC,SAAU,MAAM,IAAInD,GAAGgB,WAAW,KAAK97B,EAAO27B,WAAWsC,SAASj+B,EAAO5oB,EAAOjlB,EAAzC,EAAkD+rE,KAAK,CAACl+B,EAAO0gC,EAAQvuE,EAAOy9C,EAAS+wB,EAAKr0B,KAAS,GAAc,IAAL,EAALq0B,IAAyB,IAAL,EAANr0B,IAAuC,IAAX,QAAbtM,EAAOsM,OAAoB,MAAM,IAAIwuB,GAAGgB,WAAW,GAAG,GAA4B,IAAX,QAAb97B,EAAOsM,OAAoB,MAAM,IAAIwuB,GAAGgB,WAAW,GAAG,IAAI97B,EAAO27B,WAAWuC,KAAM,MAAM,IAAIpD,GAAGgB,WAAW,IAAI,OAAO97B,EAAO27B,WAAWuC,KAAKl+B,EAAO0gC,EAAQvuE,EAAOy9C,EAAS+wB,EAAKr0B,EAAlE,EAA0E6xB,MAAM,CAACn+B,EAAOnhB,EAAOzH,EAAOjlB,EAAOgvE,IAAiBnhC,GAASA,EAAO27B,WAAWwC,MAAuBn+B,EAAO27B,WAAWwC,MAAMn+B,EAAOnhB,EAAOzH,EAAOjlB,EAAOgvE,GAA7D,EAAyEoG,OAAOvnC,GAAQ,EAAEwnC,MAAM,CAACxnC,EAAOynC,EAAI3tD,KAAO,IAAIkmB,EAAO27B,WAAW6L,MAAO,MAAM,IAAI1M,GAAGgB,WAAW,IAAI,OAAO97B,EAAO27B,WAAW6L,MAAMxnC,EAAOynC,EAAI3tD,EAA1C,EAAgDs3C,SAAS,CAACl2C,EAAK1jB,EAAK,CAAC,KAAoE,GAA/DA,EAAK80C,MAAM90C,EAAK80C,OAAO,EAAE90C,EAAKkzD,SAASlzD,EAAKkzD,UAAU,SAA4B,SAAhBlzD,EAAKkzD,UAAmC,WAAhBlzD,EAAKkzD,SAAqB,MAAM,IAAIx5D,MAAM,0BAA0BsG,EAAKkzD,SAAS,KAAK,IAAI3kC,EAAQia,EAAO86B,GAAGlJ,KAAK12C,EAAK1jB,EAAK80C,OAAkCn6C,EAAlB2oE,GAAGsL,KAAKlrD,GAAsBmG,KAAS5C,EAAI,IAAImwB,WAAWz8C,GAA0J,OAAlJ2oE,GAAGoB,KAAKl8B,EAAOvhB,EAAI,EAAEtsB,EAAO,GAAsB,SAAhBqF,EAAKkzD,SAAmB3kC,EAAIktC,EAAkBx0C,EAAI,GAA2B,WAAhBjnB,EAAKkzD,WAAqB3kC,EAAItH,GAAIq8C,GAAGkB,MAAMh8B,GAAeja,CAAP,EAAY2hD,UAAU,CAACxsD,EAAKpqB,EAAK0G,EAAK,CAAC,KAAKA,EAAK80C,MAAM90C,EAAK80C,OAAO,IAAI,IAAItM,EAAO86B,GAAGlJ,KAAK12C,EAAK1jB,EAAK80C,MAAM90C,EAAKwE,MAAM,GAAgB,iBAANlL,EAAe,CAAC,IAAI2tB,EAAI,IAAImwB,WAAWylB,EAAgBvjE,GAAM,GAAO62E,EAAe7T,EAAkBhjE,EAAK2tB,EAAI,EAAEA,EAAItsB,QAAQ2oE,GAAG3iD,MAAM6nB,EAAOvhB,EAAI,EAAEkpD,OAAe/1E,EAAU4F,EAAKgpE,OAAQ,KAAK,KAAGoH,YAAYC,OAAO/2E,GAA0E,MAAM,IAAII,MAAM,yBAAnF4pE,GAAG3iD,MAAM6nB,EAAOlvC,EAAK,EAAEA,EAAKymB,gBAAW3lB,EAAU4F,EAAKgpE,OAAsD,CAAA1F,GAAGkB,MAAMh8B,EAAT,EAAkB+6B,IAAI,IAAID,GAAG7zD,YAAY6gE,MAAM5sD,IAAO,IAAIuiD,EAAO3C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAO,IAAO,GAAiB,OAAd3E,EAAOzhD,KAAa,MAAM,IAAI8+C,GAAGgB,WAAW,IAAI,IAAIhB,GAAG0D,MAAMf,EAAOzhD,KAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,IAAI6G,EAAQ7H,GAAGwI,gBAAgB7F,EAAOzhD,KAAK,KAAK,GAAG2mD,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,GAAS7H,GAAG7zD,YAAYw2D,EAAOviD,IAAtB,EAA4B6sD,yBAAyB,KAAKjN,GAAG0K,MAAM,QAAQ1K,GAAG0K,MAAM,SAAS1K,GAAG0K,MAAM,iBAAT,EAA4BwC,qBAAqB,KAAKlN,GAAG0K,MAAM,QAAQ1K,GAAGY,eAAeZ,GAAG+J,QAAQ,EAAE,GAAG,CAAC3I,KAAK,IAAI,EAAE/jD,MAAM,CAAC6nB,EAAOnhB,EAAOzH,EAAOjlB,EAAO6S,IAAM7S,IAAS2oE,GAAG8K,MAAM,YAAY9K,GAAG+J,QAAQ,EAAE,IAAIzJ,GAAIG,SAAST,GAAG+J,QAAQ,EAAE,GAAGzJ,GAAImB,iBAAiBnB,GAAIG,SAAST,GAAG+J,QAAQ,EAAE,GAAGzJ,GAAI2B,kBAAkBjC,GAAG8K,MAAM,WAAW9K,GAAG+J,QAAQ,EAAE,IAAI/J,GAAG8K,MAAM,YAAY9K,GAAG+J,QAAQ,EAAE,IAAI,IAAIoD,EAAh18B,WAA2B,GAAkB,iBAARpf,QAAoD,mBAA3BA,OAAM,gBAAgC,CAAC,IAAIqf,EAAa,IAAIt5B,WAAW,GAAG,OAAO,WAAgD,OAArCia,OAAOsf,gBAAgBD,GAAqBA,EAAa,EAAG,CAAC,CAAK,GAAGvX,EAAqB,IAAI,IAAIyX,EAAc1yB,EAAQ,OAAU,OAAO,WAAW,OAAO0yB,EAAa,YAAgB,GAAG,EAAG,CAAW,CAAV,MAAMjzE,GAAI,CAAC,OAAO,WAAWw9D,GAAM,eAAgB,CAAC,CAAi97B0V,GAAkBvN,GAAGwN,aAAa,OAAO,SAASL,GAAenN,GAAGwN,aAAa,OAAO,UAAUL,GAAenN,GAAG0K,MAAM,YAAY1K,GAAG0K,MAAM,eAAT,EAA0B+C,yBAAyB,KAAKzN,GAAG0K,MAAM,SAAS,IAAIgD,EAAU1N,GAAG0K,MAAM,cAAc1K,GAAG0K,MAAM,iBAAiB1K,GAAGoC,MAAM,CAACA,MAAM,KAAK,IAAIlhD,EAAK8+C,GAAGqC,WAAWqL,EAAU,KAAK,MAAU,IAAyO,OAArOxsD,EAAKuhD,SAAS,CAACE,OAAO,CAACjlD,EAAO5jB,KAAQ,IAAI8nE,GAAI9nE,EAASorC,EAAO86B,GAAGkJ,UAAUtH,GAAI,IAAI18B,EAAO,MAAM,IAAI86B,GAAGgB,WAAW,GAAG,IAAI/1C,EAAI,CAACvN,OAAO,KAAK0kD,MAAM,CAACmF,WAAW,QAAQ9E,SAAS,CAACc,SAAS,IAAIr+B,EAAO9kB,OAAsB,OAAf6K,EAAIvN,OAAOuN,EAAWA,CAAP,GAAoB/J,CAAP,GAAc,CAAC,EAAE,gBAA/T,EAAiVysD,sBAAsB,KAAQ9Y,EAAM,MAAWmL,GAAGwN,aAAa,OAAO,QAAQ3Y,EAAM,OAAgBmL,GAAGiD,QAAQ,WAAW,cAAiBpO,EAAM,OAAYmL,GAAGwN,aAAa,OAAO,SAAS,KAAK3Y,EAAM,QAAiBmL,GAAGiD,QAAQ,WAAW,eAAkBpO,EAAM,OAAYmL,GAAGwN,aAAa,OAAO,SAAS,KAAK3Y,EAAM,QAAiBmL,GAAGiD,QAAQ,YAAY,eAAyBjD,GAAGlJ,KAAK,aAAa,GAAckJ,GAAGlJ,KAAK,cAAc,GAAckJ,GAAGlJ,KAAK,cAAc,EAAjC,EAAqC8W,iBAAiB,KAAQ5N,GAAGgB,aAAkBhB,GAAGgB,WAAW,SAAoB4H,EAAM1nD,GAAMhrB,KAAKgrB,KAAKA,EAAKhrB,KAAK23E,SAAS,SAASjF,GAAO1yE,KAAK0yE,MAAMA,CAAM,EAAC1yE,KAAK23E,SAASjF,GAAO1yE,KAAKqC,QAAQ,UAAW,EAACynE,GAAGgB,WAAWnrE,UAAU,IAAIO,MAAM4pE,GAAGgB,WAAWnrE,UAAUuK,YAAY4/D,GAAGgB,WAAW,CAAC,IAAI13D,SAAQvF,IAAOi8D,GAAGiF,cAAclhE,GAAM,IAAIi8D,GAAGgB,WAAWj9D,GAAMi8D,GAAGiF,cAAclhE,GAAM+e,MAAM,2BAA7B,IAAnE,EAA+HgrD,WAAW,KAAK9N,GAAG4N,mBAAmB5N,GAAG0G,UAAU,IAAIxvE,MAAM,MAAM8oE,GAAGoC,MAAMF,GAAM,CAAC,EAAE,KAAKlC,GAAGiN,2BAA2BjN,GAAGkN,uBAAuBlN,GAAGyN,2BAA2BzN,GAAG6G,YAAY,CAAC,MAAQ3E,GAAxB,EAAgChE,KAAK,CAAC5+C,EAAMqe,EAAOllC,KAASunE,GAAG9B,KAAKyI,aAAY,EAAK3G,GAAG4N,mBAAmB/Y,EAAM,MAAUv1C,GAAOu1C,EAAM,MAAUA,EAAM,OAAWl3B,GAAQk3B,EAAM,OAAWA,EAAM,OAAWp8D,GAAOo8D,EAAM,OAAWmL,GAAG2N,uBAAH,EAA4BI,KAAK,KAAK/N,GAAG9B,KAAKyI,aAAY,EAAM,IAAI,IAAIvvE,EAAE,EAAEA,EAAE4oE,GAAGwG,QAAQnvE,OAAOD,IAAI,CAAC,IAAI8tC,EAAO86B,GAAGwG,QAAQpvE,GAAO8tC,GAAiB86B,GAAGkB,MAAMh8B,EAAQ,GAAE8oC,QAAQ,CAACC,EAAQC,KAAY,IAAIhtE,EAAK,EAAgD,OAA3C+sE,IAAQ/sE,GAAM,KAAUgtE,IAAShtE,GAAM,KAAWA,CAAP,EAAaitE,WAAW,CAAC/tD,EAAKguD,KAAuB,IAAInjD,EAAI+0C,GAAGqO,YAAYjuD,EAAKguD,GAAqB,OAAGnjD,EAAIqjD,OAAerjD,EAAI/f,OAAmB,IAAK,EAAEmjE,YAAY,CAACjuD,EAAKguD,KAAuB,IAAiEhuD,GAAzDuiD,EAAO3C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAQ8G,KAAkChuD,IAAe,CAAV,MAAM/lB,GAAI,KAAI4wB,EAAI,CAACtmB,QAAO,EAAM2pE,QAAO,EAAM71E,MAAM,EAAEqB,KAAK,KAAKsmB,KAAK,KAAKlV,OAAO,KAAKqjE,cAAa,EAAMC,WAAW,KAAKC,aAAa,MAAM,IAAI,IAAI9L,EAAO3C,GAAG+G,WAAW3mD,EAAK,CAAC1C,QAAO,IAAOuN,EAAIsjD,cAAa,EAAKtjD,EAAIujD,WAAW7L,EAAOviD,KAAK6K,EAAIwjD,aAAa9L,EAAOzhD,KAAK+J,EAAInxB,KAAKklE,GAAKU,SAASt/C,GAAMuiD,EAAO3C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAQ8G,IAAsBnjD,EAAIqjD,QAAO,EAAKrjD,EAAI7K,KAAKuiD,EAAOviD,KAAK6K,EAAI/f,OAAOy3D,EAAOzhD,KAAK+J,EAAInxB,KAAK6oE,EAAOzhD,KAAKpnB,KAAKmxB,EAAItmB,OAAqB,MAAdg+D,EAAOviD,IAAsC,CAA3B,MAAM/lB,GAAG4wB,EAAIxyB,MAAM4B,EAAEuuE,KAAM,QAAO39C,CAAP,EAAYyjD,WAAW,CAAChxD,EAAO0C,EAAK6tD,EAAQC,KAAYxwD,EAAsB,iBAARA,EAAiBA,EAAOsiD,GAAGzzD,QAAQmR,GAA4C,IAApC,IAAIpV,EAAM8X,EAAK3d,MAAM,KAAKwgB,UAAgB3a,EAAMjR,QAAO,CAAC,IAAIkR,EAAKD,EAAMmI,MAAM,GAAIlI,EAAJ,CAAkB,IAAI81B,EAAQ2gC,GAAKY,MAAMliD,EAAOnV,GAAM,IAAIy3D,GAAG0K,MAAMrsC,EAAmB,CAAV,MAAMhkC,GAAI,CAAAqjB,EAAO2gB,CAA5E,CAAoF,QAAOA,CAAP,EAAgBswC,WAAW,CAACjxD,EAAO5jB,EAAKsU,EAAW6/D,EAAQC,KAAY,IAAI9tD,EAAK4+C,GAAKY,MAAqB,iBAARliD,EAAiBA,EAAOsiD,GAAGzzD,QAAQmR,GAAQ5jB,GAAUoH,EAAK8+D,GAAGgO,QAAQC,EAAQC,GAAU,OAAOlO,GAAG7/D,OAAOigB,EAAKlf,EAAtB,EAA6B0tE,eAAe,CAAClxD,EAAO5jB,EAAK9D,EAAKi4E,EAAQC,EAASxI,KAAU,IAAItlD,EAAKtmB,EAAQ4jB,IAAQA,EAAsB,iBAARA,EAAiBA,EAAOsiD,GAAGzzD,QAAQmR,GAAQ0C,EAAKtmB,EAAKklE,GAAKY,MAAMliD,EAAO5jB,GAAM4jB,GAAO,IAAIxc,EAAK8+D,GAAGgO,QAAQC,EAAQC,GAAchtD,EAAK8+C,GAAG7/D,OAAOigB,EAAKlf,GAAM,GAAGlL,EAAK,CAAC,GAAgB,iBAANA,EAAe,CAAgC,IAA/B,IAAI6N,EAAI,IAAI3M,MAAMlB,EAAKqB,QAAgBD,EAAE,EAAE6S,EAAIjU,EAAKqB,OAAOD,EAAE6S,IAAM7S,EAAEyM,EAAIzM,GAAGpB,EAAKmU,WAAW/S,GAAGpB,EAAK6N,CAAI,CAAAm8D,GAAGyL,MAAMvqD,EAAU,IAALhgB,GAAU,IAAIgkC,EAAO86B,GAAGlJ,KAAK51C,EAAK,KAAK8+C,GAAG3iD,MAAM6nB,EAAOlvC,EAAK,EAAEA,EAAKqB,OAAO,EAAEquE,GAAQ1F,GAAGkB,MAAMh8B,GAAQ86B,GAAGyL,MAAMvqD,EAAKhgB,EAAM,QAAOggB,CAAP,EAAassD,aAAa,CAAC9vD,EAAO5jB,EAAKwlB,EAAMqe,KAAU,IAAIvd,EAAK4+C,GAAKY,MAAqB,iBAARliD,EAAiBA,EAAOsiD,GAAGzzD,QAAQmR,GAAQ5jB,GAAUoH,EAAK8+D,GAAGgO,UAAU1uD,IAAQqe,GAAYqiC,GAAGwN,aAAa3D,QAAM7J,GAAGwN,aAAa3D,MAAM,IAAG,IAAInJ,EAAIV,GAAG+J,QAAQ/J,GAAGwN,aAAa3D,QAAQ,GAAirB,OAA9qB7J,GAAGY,eAAeF,EAAI,CAAC5J,KAAK5xB,IAASA,EAAO+7B,UAAS,CAAhB,EAAuBC,MAAMh8B,IAAYvH,GAAQA,EAAO5Z,QAAQ4Z,EAAO5Z,OAAO1sB,QAAQsmC,EAAO,GAAI,EAAEyjC,KAAK,CAACl8B,EAAOnhB,EAAOzH,EAAOjlB,EAAO6S,KAAuB,IAAhB,IAAIo3D,EAAU,EAAUlqE,EAAE,EAAEA,EAAEC,EAAOD,IAAI,CAAC,IAAIoE,EAAO,IAAIA,EAAO8jB,GAA6C,CAArC,MAAMjlB,GAAG,MAAM,IAAI2lE,GAAGgB,WAAW,GAAI,SAAYlqE,IAAT0E,GAAgC,IAAZ8lE,EAAe,MAAM,IAAItB,GAAGgB,WAAW,GAAG,GAAGxlE,QAAkC,MAAM8lE,IAAYv9C,EAAOzH,EAAOllB,GAAGoE,CAAO,CAA+C,OAA5C8lE,IAAWp8B,EAAOhkB,KAAKqgD,UAAUl8C,KAAK3C,OAAa4+C,CAAP,EAAkBjkD,MAAM,CAAC6nB,EAAOnhB,EAAOzH,EAAOjlB,EAAO6S,KAAO,IAAI,IAAI9S,EAAE,EAAEA,EAAEC,EAAOD,IAAK,IAAIumC,EAAO5Z,EAAOzH,EAAOllB,GAAyC,CAArC,MAAMiD,GAAG,MAAM,IAAI2lE,GAAGgB,WAAW,GAAI,CAA6C,OAAzC3pE,IAAQ6tC,EAAOhkB,KAAKqgD,UAAUl8C,KAAK3C,OAAatrB,CAAP,IAAmB4oE,GAAG8K,MAAM1qD,EAAKlf,EAAKw/D,EAA1B,EAAgCmO,cAAc7kE,IAAM,GAAGA,EAAI8kE,UAAU9kE,EAAI+kE,UAAU/kE,EAAIs5D,MAAMt5D,EAAI25D,SAAS,OAAO,EAAK,GAA0B,oBAAhB9M,eAA6B,MAAM,IAAIzgE,MAAM,oMAAyM,IAAG0+D,EAA6I,MAAM,IAAI1+D,MAAM,iDAAtJ,IAAI4T,EAAI25D,SAAS3B,GAAmBlN,EAAM9qD,EAAIlK,MAAK,GAAMkK,EAAI65D,UAAU75D,EAAI25D,SAAStsE,MAA4C,CAArC,MAAMgD,GAAG,MAAM,IAAI2lE,GAAGgB,WAAW,GAAI,CAAuE,EAAEgO,eAAe,CAACtxD,EAAO5jB,EAAKgG,EAAImuE,EAAQC,KAAY,SAASe,IAAiB/4E,KAAKg5E,aAAY,EAAMh5E,KAAKi5E,OAAO,EAAG,CAA2qE,GAA3qEF,EAAep5E,UAAU6E,IAAI,SAA4Bs8C,GAAK,KAAGA,EAAI9gD,KAAKmB,OAAO,GAAG2/C,EAAI,GAA1B,CAA8C,IAAIo4B,EAAYp4B,EAAI9gD,KAAKm5E,UAAcC,EAASt4B,EAAI9gD,KAAKm5E,UAAU,EAAE,OAAOn5E,KAAKq5E,OAAOD,GAAUF,EAAlG,CAA+G,EAACH,EAAep5E,UAAU25E,cAAc,SAAsCD,GAAQr5E,KAAKq5E,OAAOA,CAAO,EAACN,EAAep5E,UAAU45E,YAAY,WAAsC,IAAI7Y,EAAI,IAAIC,eAAyD,GAA1CD,EAAIE,KAAK,OAAOh3D,GAAI,GAAO82D,EAAIG,KAAK,QAAWH,EAAIpB,QAAQ,KAAKoB,EAAIpB,OAAO,KAAkB,MAAboB,EAAIpB,QAAc,MAAM,IAAIp/D,MAAM,iBAAiB0J,EAAI,aAAa82D,EAAIpB,QAAQ,IAAmEpvC,EAA/DspD,EAAW79B,OAAO+kB,EAAI+Y,kBAAkB,mBAAkCC,GAAgBxpD,EAAOwwC,EAAI+Y,kBAAkB,mBAA4B,UAATvpD,EAAqBypD,GAAUzpD,EAAOwwC,EAAI+Y,kBAAkB,sBAA+B,SAATvpD,EAAoBipD,EAAU,QAAcO,IAAeP,EAAUK,GAAW,IAAwsBI,EAAU55E,KAAK45E,EAAUN,eAAcF,IAAW,IAAIpvD,EAAMovD,EAASD,EAAcxpD,GAAKypD,EAAS,GAAGD,EAAU,EAAgI,GAA9HxpD,EAAIlV,KAAKwU,IAAIU,EAAI6pD,EAAW,QAAyC,IAA5BI,EAAUX,OAAOG,KAAwBQ,EAAUX,OAAOG,GAAj5B,EAACvpD,EAAKlb,KAAM,GAAGkb,EAAKlb,EAAG,MAAM,IAAIzU,MAAM,kBAAkB2vB,EAAK,KAAKlb,EAAG,4BAA4B,GAAGA,EAAG6kE,EAAW,EAAE,MAAM,IAAIt5E,MAAM,QAAQs5E,EAAW,uCAAuC,IAAI9Y,EAAI,IAAIC,eAAwP,GAAzOD,EAAIE,KAAK,MAAMh3D,GAAI,GAAU4vE,IAAaL,GAAUzY,EAAImZ,iBAAiB,QAAQ,SAAShqD,EAAK,IAAIlb,GAAI+rD,EAAIK,aAAa,cAAiBL,EAAIoZ,kBAAkBpZ,EAAIoZ,iBAAiB,sCAAsCpZ,EAAIG,KAAK,QAAWH,EAAIpB,QAAQ,KAAKoB,EAAIpB,OAAO,KAAkB,MAAboB,EAAIpB,QAAc,MAAM,IAAIp/D,MAAM,iBAAiB0J,EAAI,aAAa82D,EAAIpB,QAAQ,YAAkB1+D,IAAf8/D,EAAIM,SAA6B,IAAIpjB,WAAW8iB,EAAIM,UAAU,IAAgB8K,GAAmBpL,EAAII,cAAc,IAAG,EAAM,EAAmOiZ,CAAM/vD,EAAM2F,SAA2C,IAA5BiqD,EAAUX,OAAOG,GAAuB,MAAM,IAAIl5E,MAAM,iBAAiB,OAAO05E,EAAUX,OAAOG,EAAxB,KAAuCO,GAAWH,IAAYL,EAAUK,EAAW,EAAEA,EAAWx5E,KAAKq5E,OAAO,GAAGl4E,OAAOg4E,EAAUK,EAAW9gE,EAAI,gFAA+E1Y,KAAKg6E,QAAQR,EAAWx5E,KAAKi6E,WAAWd,EAAUn5E,KAAKg5E,aAAY,CAAK,EAA2B,oBAAhBrY,eAA4B,CAAC,IAAIlB,EAAsB,KAAK,sHAAsH,IAAIma,EAAU,IAAIb,EAAe/uE,OAAOkwE,iBAAiBN,EAAU,CAACz4E,OAAO,CAACqD,IAAI,WAAoD,OAArCxE,KAAKg5E,aAAah5E,KAAKu5E,cAAqBv5E,KAAKg6E,OAAQ,GAAEb,UAAU,CAAC30E,IAAI,WAAoD,OAArCxE,KAAKg5E,aAAah5E,KAAKu5E,cAAqBv5E,KAAKi6E,UAAW,KAAI,IAAI/hE,EAAW,CAAC0gE,UAAS,EAAMnL,SAASmM,EAAW,MAAS1hE,EAAW,CAAC0gE,UAAS,EAAMhvE,IAAIA,GAAK,IAAIohB,EAAK8+C,GAAG2O,WAAWjxD,EAAO5jB,EAAKsU,EAAW6/D,EAAQC,GAAa9/D,EAAWu1D,SAAUziD,EAAKyiD,SAASv1D,EAAWu1D,SAAiBv1D,EAAWtO,MAAKohB,EAAKyiD,SAAS,KAAKziD,EAAKphB,IAAIsO,EAAWtO,KAAII,OAAOkwE,iBAAiBlvD,EAAK,CAAC2iD,UAAU,CAACnpE,IAAI,WAAW,OAAOxE,KAAKytE,SAAStsE,MAAO,KAAI,IAAIwpE,EAAW,CAAC,EAA6kB,OAAlkB3gE,OAAOoH,KAAK4Z,EAAK2/C,YAAiBv3D,SAAQtS,IAAM,IAAImwC,EAAGjmB,EAAK2/C,WAAW7pE,GAAK6pE,EAAW7pE,GAAK,WAAoD,OAAvBgpE,GAAG6O,cAAc3tD,GAAaimB,EAAG1rC,MAAM,KAAKC,UAAW,CAApG,IAAuGmlE,EAAWO,KAAM,CAACl8B,EAAOnhB,EAAOzH,EAAOjlB,EAAOy9C,KAAYkrB,GAAG6O,cAAc3tD,GAAM,IAAIyiD,EAASz+B,EAAOhkB,KAAKyiD,SAAS,GAAG7uB,GAAU6uB,EAAStsE,OAAO,OAAO,EAAE,IAAIkvB,EAAK5V,KAAKwU,IAAIw+C,EAAStsE,OAAOy9C,EAASz9C,GAAQ,GAAGssE,EAASppE,MAAO,IAAI,IAAInD,EAAE,EAAEA,EAAEmvB,EAAKnvB,IAAK2sB,EAAOzH,EAAOllB,GAAGusE,EAAS7uB,EAAS19C,QAAS,IAAQA,EAAE,EAAEA,EAAEmvB,EAAKnvB,IAAK2sB,EAAOzH,EAAOllB,GAAGusE,EAASjpE,IAAIo6C,EAAS19C,GAAI,OAAOmvB,CAAP,EAAcrF,EAAK2/C,WAAWA,EAAkB3/C,CAAP,EAAamvD,oBAAoB,CAAC3yD,EAAO5jB,EAAKgG,EAAImuE,EAAQC,EAAS9X,EAAOC,EAAQia,EAAe5K,EAAO6K,KAAa,IAAIC,EAAS12E,EAAK+lE,GAAQ3qE,QAAQ8pE,GAAKY,MAAMliD,EAAO5jB,IAAO4jB,EAAsD,SAAS+yD,EAAYC,GAAW,SAASC,EAAOD,GAAcH,GAAUA,IAAgBD,GAAgBtQ,GAAG4O,eAAelxD,EAAO5jB,EAAK42E,EAAUzC,EAAQC,EAASxI,GAAWtP,GAAOA,IAAS4F,IAAyB,CAAG4U,QAAQC,uBAAuBH,EAAUF,EAASG,GAAO,KAAQta,GAAQA,IAAU2F,IAAA,KAAmC2U,EAAOD,EAAW,CAAA3U,KAAqC,iBAALj8D,EAA1w5B,SAAmBA,EAAIs2D,EAAOC,EAAQya,GAAU,IAAIC,EAAqC,MAAMjxE,EAAQi1D,EAAUj1D,GAAI,SAASkxE,GAAazzD,EAAOyzD,EAAY,sBAAsBlxE,EAAI,8BAA0n5B2wE,EAArl5B,IAAI38B,WAAWk9B,IAAiBD,GAAI/U,IAAyB,IAAC,SAASiV,GAAO,IAAG5a,EAAwB,KAAK,sBAAsBv2D,EAAI,YAA9Cu2D,GAA2D,IAAK0a,GAAIhV,IAAsB,CAAw44BmV,CAAUpxE,EAAI4wE,EAAkCra,GAAcoa,EAAY3wE,EAAK,EAAEqxE,UAAU,IAAYlpD,OAAOkpD,WAAWlpD,OAAOmpD,cAAcnpD,OAAOopD,iBAAiBppD,OAAOqpD,YAAaC,QAAQ,IAAW,SAAStpD,OAAOwuC,SAASpH,SAAUmiB,WAAW,GAAGC,cAAc,YAAYC,cAAc,CAAC9kE,EAAMwpD,EAAOC,KAAWD,EAAOA,GAAM,SAAWC,EAAQA,GAAO,SAAW,IAAI8a,EAAUnR,GAAGmR,YAAY,IAAI,IAAIQ,EAAYR,EAAUra,KAAKkJ,GAAGuR,UAAUvR,GAAGwR,WAAuC,CAA3B,MAAMn3E,GAAG,OAAOg8D,EAAQh8D,EAAG,CAAAs3E,EAAYC,gBAAiB,KAAKhjE,EAAI,eAAsB+iE,EAAYn2E,OAAUq2E,kBAAkB7R,GAAGyR,cAAxB,EAAyCE,EAAYG,UAAW,KAAK,IAA8BC,EAAvBJ,EAAYn2E,OAA0Bu2E,YAAY,CAAC/R,GAAGyR,eAAe,aAAiBO,EAAMD,EAAYE,YAAYjS,GAAGyR,eAAmBlxC,EAAG,EAAEtjB,EAAK,EAAEsM,EAAM3c,EAAMvV,OAAO,SAASs5E,IAAkB,GAAN1zD,EAAQm5C,IAAcC,GAAU,CAAAzpD,EAAMtD,SAAQ8W,IAAO,IAAI8xD,EAAWF,EAAMh3E,IAAIglE,GAAGqO,YAAYjuD,GAAMlV,OAAOy4D,SAASvjD,GAAM8xD,EAAWJ,UAAW,OAAKvxC,EAAWtjB,GAAMsM,GAAMonD,GAAQ,EAAGuB,EAAW7b,QAAS,KAAKp5C,IAAUsjB,EAAGtjB,GAAMsM,GAAMonD,GAAQ,CAA1D,IAA+DoB,EAAY1b,QAAQA,CAApB,EAA8Bsb,EAAYtb,QAAQA,CAApB,EAA6B8b,gBAAgB,CAACvlE,EAAMwpD,EAAOC,KAAWD,EAAOA,GAAM,SAAWC,EAAQA,GAAO,SAAW,IAAI8a,EAAUnR,GAAGmR,YAAY,IAAI,IAAIQ,EAAYR,EAAUra,KAAKkJ,GAAGuR,UAAUvR,GAAGwR,WAAuC,CAA3B,MAAMn3E,GAAG,OAAOg8D,EAAQh8D,EAAG,CAAAs3E,EAAYC,gBAAgBvb,EAAQsb,EAAYG,UAAW,KAAK,IAAIM,EAAGT,EAAYn2E,OAAO,IAAI,IAAIu2E,EAAYK,EAAGL,YAAY,CAAC/R,GAAGyR,eAAe,WAAuC,CAA3B,MAAMp3E,GAAc,YAAXg8D,EAAQh8D,EAAU,KAAI23E,EAAMD,EAAYE,YAAYjS,GAAGyR,eAAmBlxC,EAAG,EAAEtjB,EAAK,EAAEsM,EAAM3c,EAAMvV,OAAO,SAASs5E,IAAkB,GAAN1zD,EAAQm5C,IAAcC,GAAU,CAAAzpD,EAAMtD,SAAQ8W,IAAO,IAAIiyD,EAAWL,EAAMt3E,IAAI0lB,GAAMiyD,EAAWP,UAAW,KAAQ9R,GAAGqO,YAAYjuD,GAAMkuD,QAAQtO,GAAG8C,OAAO1iD,GAAM4/C,GAAG4O,eAAe5P,GAAKS,QAAQr/C,GAAM4+C,GAAKU,SAASt/C,GAAMiyD,EAAW72E,QAAO,GAAK,GAAK,KAAM+kC,EAAWtjB,GAAMsM,GAAMonD,GAAQ,EAAG0B,EAAWhc,QAAS,KAAKp5C,IAAUsjB,EAAGtjB,GAAMsM,GAAMonD,GAAQ,CAA1D,IAA+DoB,EAAY1b,QAAQA,CAApB,EAA8Bsb,EAAYtb,QAAQA,CAApB,GAAkCic,GAAS,CAACC,iBAAiB,EAAEC,YAAY,SAASC,EAAMryD,EAAKsyD,GAAY,GAAG1T,GAAKC,MAAM7+C,GAAO,OAAOA,EAAK,IAAIomC,EAAI,IAAY,MAATisB,EAAcjsB,EAAIwZ,GAAGC,UAAU,CAAC,IAAI0S,EAAU3S,GAAGkJ,UAAUuJ,GAAO,IAAIE,EAAU,MAAM,IAAI3S,GAAGgB,WAAW,GAAGxa,EAAImsB,EAAUvyD,IAAK,IAAgB,GAAbA,EAAK/oB,OAAU,CAAC,IAAIq7E,EAAY,MAAM,IAAI1S,GAAGgB,WAAW,IAAI,OAAOxa,CAAI,QAAOwY,GAAKY,MAAMpZ,EAAIpmC,EAAM,EAACwyD,OAAO,SAAS9tC,EAAK1kB,EAAKuD,GAAK,IAAI,IAAI2nD,EAAKxmC,EAAK1kB,EAA0G,CAApG,MAAM/lB,GAAG,GAAGA,GAAGA,EAAE6mB,MAAM89C,GAAKj2D,UAAUqX,KAAQ4+C,GAAKj2D,UAAUi3D,GAAGzzD,QAAQlS,EAAE6mB,OAAQ,OAAO,GAAG,MAAM7mB,CAAE,CAAw/B,OAAx/Bs/D,EAAOh2C,GAAK,GAAG2nD,EAAK5K,IAAI/G,EAAOh2C,EAAI,GAAG,GAAG,EAAEg2C,EAAOh2C,EAAI,GAAG,GAAG2nD,EAAK9G,IAAI7K,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAKpqE,KAAKy4D,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAK7G,MAAM9K,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAK5G,IAAI/K,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAK3G,IAAIhL,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAKvK,KAAKpH,EAAOh2C,EAAI,IAAI,GAAG,EAAEg4C,GAAQ,CAAC2P,EAAK/kD,OAAO,GAAGm1C,GAAW4P,EAAK/kD,MAAM5V,KAAKwb,IAAIuvC,KAAa,EAAEA,GAAW,GAA2D,EAAxD/qD,KAAKwU,KAAKxU,KAAK69B,MAAMktB,GAAW,YAAY,eAAiB,KAAK/qD,KAAKsY,MAAMyyC,OAAeA,KAAa,IAAI,cAAc,EAAE,IAAI/B,EAAOh2C,EAAI,IAAI,GAAGg4C,GAAQ,GAAGhC,EAAOh2C,EAAI,IAAI,GAAGg4C,GAAQ,GAAGhC,EAAOh2C,EAAI,IAAI,GAAG,KAAKg2C,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAKtG,OAAOrL,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAK1G,MAAM/wB,UAAU,IAAI,EAAE8lB,EAAOh2C,EAAI,IAAI,GAAG,EAAEg2C,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAKzG,MAAMhxB,UAAU,IAAI,EAAE8lB,EAAOh2C,EAAI,IAAI,GAAG,EAAEg2C,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAKxG,MAAMjxB,UAAU,IAAI,EAAE8lB,EAAOh2C,EAAI,IAAI,GAAG,EAAEg4C,GAAQ,CAAC2P,EAAK9G,MAAM,GAAG9I,GAAW4P,EAAK9G,KAAK7zD,KAAKwb,IAAIuvC,KAAa,EAAEA,GAAW,GAA2D,EAAxD/qD,KAAKwU,KAAKxU,KAAK69B,MAAMktB,GAAW,YAAY,eAAiB,KAAK/qD,KAAKsY,MAAMyyC,OAAeA,KAAa,IAAI,cAAc,EAAE,IAAI/B,EAAOh2C,EAAI,IAAI,GAAGg4C,GAAQ,GAAGhC,EAAOh2C,EAAI,IAAI,GAAGg4C,GAAQ,GAAU,CAAE,EAACkX,QAAQ,SAASC,EAAK5tC,EAAOj7B,EAAIunC,EAAMl1B,GAAQ,IAAIyH,EAAOg1C,EAAOx+D,MAAMu4E,EAAKA,EAAK7oE,GAAK+1D,GAAGqD,MAAMn+B,EAAOnhB,EAAOzH,EAAOrS,EAAIunC,EAAO,EAACuhC,aAAQj8E,EAAU4D,IAAI,WAAqE,OAA1D43E,GAASS,SAAS,EAAUpZ,EAAO2Y,GAASS,QAAQ,GAAG,EAAc,EAACC,OAAO,SAASla,GAA+B,OAAlBD,EAAaC,EAAgB,EAACma,gBAAgB,SAASrR,GAAI,IAAI18B,EAAO86B,GAAGkJ,UAAUtH,GAAI,IAAI18B,EAAO,MAAM,IAAI86B,GAAGgB,WAAW,GAAG,OAAO97B,CAAO,GAA07F,SAASguC,GAAiB3sD,GAAM,OAAOA,GAAM,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,MAAM,IAAIsY,UAAU,sBAAsBtY,GAAO,CAAwI,IAAI4sD,QAAiBr8E,EAAU,SAASs8E,GAAiBta,GAA0B,IAArB,IAAI7tC,EAAI,GAAO5nB,EAAEy1D,EAAUC,EAAO11D,IAAI4nB,GAAKkoD,GAAiBpa,EAAO11D,MAAM,OAAO4nB,CAAI,KAAIooD,GAAqB,CAAC,EAAMC,GAAgB,CAAC,EAAMC,GAAiB,CAAC,EAAiW,SAASC,GAAYC,EAAcC,GAAW,IAA/Ip4D,EAAmJq4D,GAAnJr4D,EAA4L,SAAS/iB,GAASrC,KAAK4D,KAAK45E,EAAUx9E,KAAKqC,QAAQA,EAAQ,IAAIuqB,EAAM,IAAI1sB,MAAMmC,GAASuqB,WAAiBhsB,IAARgsB,IAAmB5sB,KAAK4sB,MAAM5sB,KAAKuuB,WAAW,KAAK3B,EAAM7Z,QAAQ,qBAAqB,IAAK,EAA1lB,SAA+BnP,GAAM,QAAGhD,IAAYgD,EAAM,MAAM,YAAWA,EAAKA,EAAKmP,QAAQ,iBAAiB,MAAgBkB,WAAW,EAAuD,CAA6CypE,CAAuKF,GAApI,WAAgB,OAAOp4D,EAAK7f,MAAMvF,KAAKwF,UAAW,GAAmgB,OAAzOi4E,EAAW99E,UAAUqK,OAAOC,OAAOszE,EAAc59E,WAAW89E,EAAW99E,UAAUuK,YAAYuzE,EAAWA,EAAW99E,UAAU4uB,SAAS,WAAW,YAAkB3tB,IAAfZ,KAAKqC,QAA4BrC,KAAK4D,KAAiB5D,KAAK4D,KAAK,KAAK5D,KAAKqC,OAAS,EAAQo7E,CAAW,KAAIE,QAAa/8E,EAAU,SAASg9E,GAAkBv7E,GAAS,MAAM,IAAIs7E,GAAat7E,EAAS,KAAIw7E,QAAcj9E,EAAU,SAASk9E,GAAmBz7E,GAAS,MAAM,IAAIw7E,GAAcx7E,EAAS,CAAw7B,SAAS07E,GAAaC,EAAQC,EAAmBl6E,EAAQ,CAAC,GAAG,KAAK,mBAAmBk6E,GAAqB,MAAM,IAAIt1C,UAAU,2DAA2D,IAAI/kC,EAAKq6E,EAAmBr6E,KAAmG,GAA1Fo6E,GAASJ,GAAkB,SAASh6E,EAAK,iDAAoDw5E,GAAgBzsE,eAAeqtE,GAAS,CAAC,GAAGj6E,EAAQm6E,6BAA8B,OAAYN,GAAkB,yBAAyBh6E,EAAK,UAAY,CAA6E,GAA7Ew5E,GAAgBY,GAASC,SAA0BZ,GAAiBW,GAAYb,GAAqBxsE,eAAeqtE,GAAS,CAAC,IAAIxX,EAAU2W,GAAqBa,UAAgBb,GAAqBa,GAASxX,EAAUpzD,SAAQmvC,GAAIA,KAAM,CAAC,CAAojB,IAAI47B,GAAgB,GAAOC,GAAmB,CAAC,CAAC,EAAE,CAACx1E,WAAMhI,GAAW,CAACgI,MAAM,MAAM,CAACA,OAAM,GAAM,CAACA,OAAM,IAAQ,SAASy1E,GAAeC,GAAWA,EAAO,GAAG,KAAMF,GAAmBE,GAAQ7W,WAAU2W,GAAmBE,QAAQ19E,EAAUu9E,GAAgB1qE,KAAK6qE,GAAS,CAA8Z,IAAIC,GAAeD,IAAaA,GAAQV,GAAkB,oCAAoCU,GAAeF,GAAmBE,GAAQ11E,OAApI21E,GAAoJ31E,IAAQ,OAAOA,GAAO,UAAKhI,EAAU,OAAO,EAAE,KAAK,KAAK,OAAO,EAAE,KAAK,EAAK,OAAO,EAAE,KAAK,EAAM,OAAO,EAAE,QAAS,IAAI09E,EAAOH,GAAgBh9E,OAAOg9E,GAAgB5jE,MAAM6jE,GAAmBj9E,OAA2D,OAApDi9E,GAAmBE,GAAQ,CAAC7W,SAAS,EAAE7+D,MAAMA,GAAc01E,EAAtP,EAAiQ,SAASE,GAA2BC,GAAS,OAAOz+E,KAAA,aAAqB0jE,EAAQ+a,GAAS,GAAI,CAAgX,SAASC,GAA0B96E,EAAKi+B,GAAO,OAAOA,GAAO,KAAK,EAAE,OAAO,SAAS48C,GAAS,OAAOz+E,KAAA,aAAqB2jE,EAAQ8a,GAAS,GAAI,EAAC,KAAK,EAAE,OAAO,SAASA,GAAS,OAAOz+E,KAAA,aAAqB4jE,EAAQ6a,GAAS,GAAI,EAAC,QAAQ,MAAM,IAAI91C,UAAU,uBAAuB/kC,GAAO,CAA+V,SAAS+6E,GAAeC,GAAa,KAAMA,EAAYz9E,QAAO,CAAC,IAAIyhE,EAAIgc,EAAYrkE,MAAcqkE,EAAYrkE,KAAM/W,CAAIo/D,EAAK,CAAC,UAASic,GAAmBjwC,GAAM,IAAI,OAAOA,GAAyB,CAAlB,MAAMzqC,GAAGw9D,GAAMx9D,EAAG,CAAC,CAAmI,IAAI26E,GAAS,CAACC,MAAM,CAACC,OAAO,EAAEC,UAAU,EAAEC,UAAU,EAAEC,SAAS,GAAG13D,MAAM,EAAE23D,UAAU,KAAKC,SAAS,KAAKC,uBAAuB,EAAEC,gBAAgB,GAAGC,kBAAkB,CAAC,EAAEC,kBAAkB,CAAC,EAAEC,YAAY,EAAEC,qBAAqB,KAAKC,eAAe,GAAGC,eAAe,SAASC,GAAU,IAAI1+E,EAAG09E,GAASU,kBAAkBM,GAAuI,YAArHl/E,IAALQ,IAAgBA,EAAG09E,GAASY,cAAcZ,GAASU,kBAAkBM,GAAU1+E,EAAG09E,GAASW,kBAAkBr+E,GAAI0+E,GAAgB1+E,CAAG,EAAC2+E,sBAAsB,SAAStgF,GAAS,IAAIs1B,EAAI,CAAC,EAAE,IAAI,IAAIoI,KAAK19B,GAAS,SAAU09B,GAAG,IAAI6iD,EAASvgF,EAAQ09B,GAAmCpI,EAAIoI,GAAhB,mBAAV6iD,EAA6B,WAAWlB,GAASS,gBAAgB9rE,KAAK0pB,GAAG,IAAI,OAAO6iD,EAASz6E,MAAM,KAAKC,UAA6G,CAA5I,QAAkD,IAAIq8D,EAAM,CAAC,IAAIzkC,EAAE0hD,GAASS,gBAAgBhlE,MAAM8M,EAAO+V,IAAID,GAAG2hD,GAASmB,iBAAkB,CAAC,CAAC,EAAaD,CAAlR,EAA8R7iD,GAAG,OAAOpI,CAAI,EAACkrD,gBAAgB,WAAcnB,GAASO,UAAUP,GAASr3D,QAAQq3D,GAASC,MAAME,WAA6C,IAAlCH,GAASS,gBAAgBp+E,SAAY29E,GAASr3D,MAAMq3D,GAASC,MAAMC,OAAOH,GAAmBlgB,EAAM,uBAA6C,oBAARuhB,QAAqBA,OAAOC,aAAe,EAACC,SAAS,WAAW,OAAO,IAAI/2E,SAAQ,CAACrK,EAAQ40D,KAAUkrB,GAASa,qBAAqB,CAAC3gF,QAAQA,EAAQ40D,OAAOA,EAAtD,GAAgE,EAACysB,aAAa,WAAW,IAAIzd,EAAI8B,GAAQ,GAAGoa,GAASM,WAAiG,OAAtFN,GAASwB,cAAc1d,EAAIA,EAAI,GAAGkc,GAASM,WAAWN,GAASyB,kBAAkB3d,GAAYA,CAAI,EAAC0d,cAAc,SAAS1d,EAAIh2C,EAAM4zD,GAAW/c,EAAOb,GAAK,GAAGh2C,EAAM62C,EAAOb,EAAI,GAAG,GAAGh2C,EAAM4zD,CAAU,EAACD,kBAAkB,SAAS3d,GAAK,IAAI6d,EAAkB3B,GAASS,gBAAgB,GAAOmB,EAAS5B,GAASe,eAAeY,GAAmBhd,EAAOb,EAAI,GAAG,GAAG8d,CAAS,EAACC,kBAAkB,SAAS/d,GAAK,IAAIxhE,EAAGqiE,EAAOb,EAAI,GAAG,GAAOh/D,EAAKk7E,GAASW,kBAAkBr+E,GAAiC,OAApBu9D,EAAM,IAAQ/6D,EAAkB,EAACg9E,SAAS,SAAShe,GAA+C,OAAhCkc,GAAS6B,kBAAkB/d,EAAY54C,EAAQ,EAAC62D,YAAY,SAASC,GAAY,IAAGjf,EAAH,CAAgB,GAAGid,GAASr3D,QAAQq3D,GAASC,MAAMC,OAAO,CAAC,IAAI+B,GAAgB,EAAUC,GAAqB,EAAMF,GAAWxB,IAAyB,IAAGzd,IAAaid,GAASQ,uBAAuBA,GAAwB,EAAEyB,GAAgB,EAASC,GAAJ,CAAiClC,GAASr3D,MAAMq3D,GAASC,MAAMG,UAAUL,IAAmB,IAAIlgB,EAAM,uBAA2BmgB,GAASO,YAA8B,oBAAT3E,SAAsBA,QAAQuG,SAASryC,MAAM8rC,QAAQuG,SAASvyB,SAAS,IAAIwyB,EAAqBv3D,GAAQ,EAAM,IAAIu3D,EAAqBpC,GAAS8B,SAAS9B,GAASO,SAA2D,CAAjD,MAAM5yD,GAAKy0D,EAAqBz0D,EAAI9C,GAAQ,CAAK,KAAIw3D,GAAQ,EAAM,IAAIrC,GAASO,SAAS,CAAC,IAAIM,EAAqBb,GAASa,qBAAwBA,IAAsBb,GAASa,qBAAqB,MAAMh2D,EAAQg2D,EAAqB/rB,OAAO+rB,EAAqB3gF,SAASkiF,GAAsBC,GAAQ,EAAM,IAAGx3D,IAAUw3D,EAAS,MAAMD,CAA1nB,CAA+oB,IAAGF,GAAqB,EAASD,IAAiBjC,GAASr3D,MAAMq3D,GAASC,MAAME,UAAUH,GAASO,SAASP,GAASuB,eAAexB,IAAmB,IAAIlgB,EAAM,uBAA2BmgB,GAASO,YAA8B,oBAAT3E,SAAsBA,QAAQuG,SAASryC,MAAM8rC,QAAQuG,SAASxyB,QAAU,MAAQqwB,GAASr3D,QAAQq3D,GAASC,MAAMG,WAAWJ,GAASr3D,MAAMq3D,GAASC,MAAMC,OAAOH,GAAmBlgB,EAAM,uBAA2B8J,GAAMqW,GAASO,UAAUP,GAASO,SAAS,KAAKP,GAASc,eAAexsE,SAAQw7B,GAA35G,SAA0BA,EAAKwyC,GAAa,IAAGvf,EAAc,GAAGuf,EAAaxyC,SAAc,IAAIA,GAAmC,CAA5B,MAAMzqC,IAA/37D,SAAyBA,GAAG,GAAGA,aAAam8D,IAAe,UAAHn8D,EAAa,OAAOy9D,EAAWvC,EAAM,EAAEl7D,EAAG,CAAgy7Dk9E,CAAgBl9E,EAAG,CAAC,CAA8xGm9E,CAAiB1yC,MAAY+yB,GAAM,kBAAkBmd,GAASr3D,OAAO,OAAOq3D,GAASQ,sBAAj/C,CAAwgD,EAACiC,YAAY,SAAST,GAAY,OAAOhC,GAAS+B,aAAYW,IAASV,IAAa73E,KAAKu4E,EAAlB,GAA4B,GAA6zG,SAASC,GAAQC,EAAI9e,EAAI/6C,GAAM,OAA5K,SAAuB65D,EAAI9e,EAAI/6C,GAAM,IAAIg0B,EAAE8iB,EAAO,WAAW+iB,GAAK,OAAO75D,GAAMA,EAAK1mB,OAAO06C,EAAEt2C,MAAM,KAAK,CAACq9D,GAAKhvD,OAAOiU,IAAOg0B,EAAEj5C,KAAK,KAAKggE,EAAK,CAAsC+e,CAAcD,EAAI9e,EAAI/6C,EAAM,CAA6c,IAAg2V+5D,GAA51VC,QAAiBjhF,EAAU,SAASkhF,GAAYx5E,GAAM,IAAIs6D,EAAImf,GAAez5E,GAAU05E,EAAG9E,GAAiBta,GAAgB,OAAX6F,GAAM7F,GAAYof,CAAG,CAAw8B,SAASC,GAA4Br+E,EAAKi+B,EAAMqgD,GAAQ,OAAOrgD,GAAO,KAAK,EAAE,OAAOqgD,EAAO,SAA2BzD,GAAS,OAAOnb,EAAMmb,EAAS,EAAC,SAA2BA,GAAS,OAAO5b,EAAO4b,EAAS,EAAC,KAAK,EAAE,OAAOyD,EAAO,SAA4BzD,GAAS,OAAOlb,EAAOkb,GAAS,EAAG,EAAC,SAA4BA,GAAS,OAAOjb,EAAQib,GAAS,EAAG,EAAC,KAAK,EAAE,OAAOyD,EAAO,SAA4BzD,GAAS,OAAOhb,EAAOgb,GAAS,EAAG,EAAC,SAA4BA,GAAS,OAAO/a,EAAQ+a,GAAS,EAAG,EAAC,QAAQ,MAAM,IAAI91C,UAAU,yBAAyB/kC,GAAO,CAAu4J,SAASu+E,GAAsBnE,EAAQoE,GAAW,IAAIj+D,EAAKi5D,GAAgBY,GAAqG,YAAzFp9E,IAAYujB,GAAMy5D,GAAkBwE,EAAU,qBAAqBN,GAAY9D,IAAiB75D,CAAK,CAA8zI,SAASk+D,GAA0BhyD,GAAM,IAAqG,OAAjGmxC,EAAW8gB,KAAKjyD,EAAKxC,EAAOtH,WAAW,QAAQ,IAAIo+C,GAA2BnD,EAAW3zC,QAAe,CAAY,CAAV,MAAM1pB,GAAI,CAAC,CAAlSy9E,GAArBjiB,EAA0C,KAAK,IAAI7qD,EAAEs6B,EAAO,SAAa,OAAY,IAALt6B,EAAE,GAAOA,EAAE,GAAG,GAArB,EAAqD,IAAIytE,YAAY/1D,MAAwvB,IAAIg2D,GAAI,CAAC,EAAoE,SAASC,KAAgB,IAAIA,GAAcv1C,QAAQ,CAAC,IAAsHmC,EAAI,CAAC,KAAO,WAAW,QAAU,WAAW,KAAO,IAAI,IAAM,IAAI,KAAO,iBAAiB,MAAnL,iBAAXqzC,WAAqBA,UAAUC,WAAWD,UAAUC,UAAU,IAAI,KAAK5vE,QAAQ,IAAI,KAAK,SAAkH,EAA7SqsD,GAAa,kBAAyT,IAAI,IAAIjiC,KAAKqlD,QAAiB5hF,IAAT4hF,GAAIrlD,UAAsBkS,EAAIlS,GAAQkS,EAAIlS,GAAGqlD,GAAIrlD,GAAG,IAAI+P,EAAQ,GAAG,IAAI,IAAI/P,KAAKkS,EAAKnC,EAAQz5B,KAAK0pB,EAAE,IAAIkS,EAAIlS,IAAIslD,GAAcv1C,QAAQA,CAAQ,QAAOu1C,GAAcv1C,OAAQ,CAAwrB,SAAS01C,GAAS5zC,EAAO6zC,EAAIC,EAAO18D,GAAkB,IAAV,IAAI2O,EAAI,EAAU7zB,EAAE,EAAEA,EAAE4hF,EAAO5hF,IAAI,CAAC,IAAI0hE,EAAIc,EAAQmf,GAAK,GAAO9uE,EAAI2vD,EAAQmf,EAAI,GAAG,GAAGA,GAAK,EAAE,IAAI7zB,EAAK8a,GAAG3iD,MAAM6nB,EAAOs0B,EAAMV,EAAI7uD,EAAIqS,GAAQ,GAAG4oC,EAAK,EAAE,OAAO,EAAEj6B,GAAKi6B,CAAK,QAAOj6B,CAAI,CAAg9D,SAASguD,GAAa13E,GAAM,OAAOA,EAAK,GAAI,IAAIA,EAAK,KAAM,GAAGA,EAAK,KAAM,EAAG,CAA6F,IAAI23E,GAAkB,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAQC,GAAqB,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAi1L,IAAInR,GAAO,SAAStqD,EAAO5jB,EAAKoH,EAAK6/D,GAAUrjD,IAAQA,EAAOxnB,MAAKA,KAAKwnB,OAAOA,EAAOxnB,KAAKksE,MAAM1kD,EAAO0kD,MAAMlsE,KAAKmxE,QAAQ,KAAKnxE,KAAKoB,GAAG0oE,GAAGyG,YAAYvwE,KAAK4D,KAAKA,EAAK5D,KAAKgL,KAAKA,EAAKhL,KAAKusE,SAAS,CAAC,EAAEvsE,KAAK2qE,WAAW,CAAC,EAAE3qE,KAAK6qE,KAAKA,CAAK,EAA6vB,SAASiB,GAAmBoX,EAAQC,EAAYhiF,GAAQ,IAAI4S,EAAI5S,EAAO,EAAEA,EAAOkiE,EAAgB6f,GAAS,EAAME,EAAQ,IAAIpiF,MAAM+S,GAASsvE,EAAgBvgB,EAAkBogB,EAAQE,EAAQ,EAAEA,EAAQjiF,QAAsD,OAA3CgiF,IAAYC,EAAQjiF,OAAOkiF,GAAuBD,CAAQ,CAAj+Bp5E,OAAOkwE,iBAAiBpI,GAAOnyE,UAAU,CAACurE,KAAK,CAAC1mE,IAAI,WAAW,OAAxF,UAA+FxE,KAAKgL,KAA0B,EAACoqC,IAAI,SAASpsB,GAAKA,EAAIhpB,KAAKgL,MAA1J,IAAyKhL,KAAKgL,OAAM,GAAU,GAAEmc,MAAM,CAAC3iB,IAAI,WAAW,OAAjM,UAAwMxE,KAAKgL,KAA4B,EAACoqC,IAAI,SAASpsB,GAAKA,EAAIhpB,KAAKgL,MAArQ,IAAqRhL,KAAKgL,OAAM,GAAW,GAAE6tE,SAAS,CAACr0E,IAAI,WAAW,OAAOslE,GAAG0D,MAAMxtE,KAAKgL,KAAM,GAAE4tE,SAAS,CAACp0E,IAAI,WAAW,OAAOslE,GAAG+D,SAAS7tE,KAAKgL,KAAM,KAAI8+D,GAAGgI,OAAOA,GAAOhI,GAAG8N,aAA7xmC,WAA0D,IAAzB,IAAI/nC,EAAM,IAAI7uC,MAAM,KAAaE,EAAE,EAAEA,EAAE,MAAMA,EAAG2uC,EAAM3uC,GAAGitB,OAAOC,aAAaltB,GAAG+7E,GAAiBptC,CAAM,CAAkqmCyzC,GAAwB3F,GAAahf,EAAM,aAAiB2e,GAAYp9E,MAAM,gBAAgB29E,GAAclf,EAAM,cAAkB2e,GAAYp9E,MAAM,iBAAhz+By+D,EAAM,oBAAxU,WAA2C,IAAZ,IAAI/rD,EAAM,EAAU1R,EAAE,EAAEA,EAAEk9E,GAAmBj9E,SAASD,OAA8BN,IAAxBw9E,GAAmBl9E,MAAkB0R,EAAO,OAAOA,CAAM,EAAgO+rD,EAAM,gBAAtO,WAA2B,IAAI,IAAIz9D,EAAE,EAAEA,EAAEk9E,GAAmBj9E,SAASD,EAAG,QAA2BN,IAAxBw9E,GAAmBl9E,GAAgB,OAAOk9E,GAAmBl9E,GAAI,OAAO,IAAK,EAAo2+B2gF,GAAiBljB,EAAM,iBAAqB2e,GAAYp9E,MAAM,oBAAqlB,IAAkz0OqjF,GAA9y0OC,GAAc,CAAC,GAA/13F,WAAqB/2D,EAAI,8BAA8Bk1C,IAAO,EAAG,EAA6y3F,GAA7y3F,WAA4Bl1C,EAAI,qCAAqCk1C,IAAO,EAAG,EAAov3F,GAApv3F,WAAgCl1C,EAAI,yCAAyCk1C,IAAO,EAAG,EAAur3F,EAAvr3F,WAAwBl1C,EAAI,iCAAiCk1C,IAAO,EAAG,EAAio3F,GAAjo3F,WAAoCl1C,EAAI,6CAA6Ck1C,IAAO,EAAG,EAAgk3F,GAAhk3F,WAAyBl1C,EAAI,kCAAkCk1C,IAAO,EAAG,EAA0g3F,GAA1g3F,WAAsBl1C,EAAI,+BAA+Bk1C,IAAO,EAAG,EAAu92F,GAAv92F,WAA0Cl1C,EAAI,mDAAmDk1C,IAAO,EAAG,EAAg52F,GAAh52F,WAAiIl1C,EAAI,0IAA0Ik1C,IAAO,EAAG,EAAkv2F,GAAlv2F,WAA+Hl1C,EAAI,wIAAwIk1C,IAAO,EAAG,EAAsl2F,GAAtl2F,WAAgFl1C,EAAI,yFAAyFk1C,IAAO,EAAG,EAAy+1F,GAAz+1F,WAAgGl1C,EAAI,yGAAyGk1C,IAAO,EAAG,EAA421F,GAA521F,WAAkGl1C,EAAI,2GAA2Gk1C,IAAO,EAAG,EAA6u1F,GAA7u1F,WAAoFl1C,EAAI,6FAA6Fk1C,IAAO,EAAG,EAA4n1F,GAA5n1F,WAAqFl1C,EAAI,8FAA8Fk1C,IAAO,EAAG,EAA0g1F,EAA1g1F,WAAqFl1C,EAAI,8FAA8Fk1C,IAAO,EAAG,EAAu50F,GAAv50F,WAA2Fl1C,EAAI,oGAAoGk1C,IAAO,EAAG,EAA+x0F,GAA/x0F,WAA4Fl1C,EAAI,qGAAqGk1C,IAAO,EAAG,EAAsq0F,GAAtq0F,WAAuDl1C,EAAI,gEAAgEk1C,IAAO,EAAG,EAAkl0F,GAAll0F,WAA6Cl1C,EAAI,sDAAsDk1C,IAAO,EAAG,EAAwg0F,EAAxg0F,SAAwBG,EAAU/B,EAAS0jB,EAAK70C,GAAM+yB,GAAM,qBAAqBgB,EAAab,GAAW,SAAS,CAAC/B,EAAS4C,EAAa5C,GAAU,mBAAmB0jB,EAAK70C,EAAK+zB,EAAa/zB,GAAM,oBAAqB,EAAm0zF,EAAn0zF,SAAmCve,GAAM,OAAOq0C,GAAQr0C,EAAK,IAAI,EAAG,EAA6xzF,EAA1rzF,SAA4BuyC,GAAK,IAAIxN,EAAK,IAAI6R,GAAcrE,GAAsJ,OAA7IxN,EAAKwS,eAAcxS,EAAKsS,YAAW,GAAMV,MAAyB5R,EAAKyS,cAAa,GAAOhB,GAAgBpzD,KAAK2hD,GAAM0R,GAAiB1R,GAAaA,EAAKiT,mBAAoB,EAA+9yF,EAAzxvF,SAA6CzF,GAASA,GAAW8F,GAAiB,IAAIzB,GAAcrE,GAAM,EAAutvF,EAAnsvF,WAA4B8gB,GAAU,GAAkChb,GAAtB7B,GAAgBtsD,OAA6BquD,GAAc,CAAE,EAAymvF,EAAzhvF,WAAwC,IAAI+a,EAAO/a,GAAc,IAAI+a,EAAuB,OAAfriB,EAAY,GAAU,EAAE,IAAIlM,EAAK,IAAI6R,GAAc0c,GAAQvuB,EAAK6S,iBAAiB0b,GAAQ,IAAIC,EAAWxuB,EAAKgS,WAAW,IAAIwc,EAA2B,OAAftiB,EAAY,GAAUqiB,EAA2D,IAApD,IAAIE,EAAU7iF,MAAMrB,UAAU0E,MAAMzB,KAAK4C,WAAmBtE,EAAE,EAAEA,EAAE2iF,EAAU1iF,OAAOD,IAAI,CAAC,IAAI4iF,EAAWD,EAAU3iF,GAAG,GAAgB,IAAb4iF,GAAgBA,IAAaF,EAAY,MAAM,IAAIG,EAAkB3uB,EAAKwN,IAAI,GAAG,GAAGohB,GAAiBF,EAAWF,EAAWG,GAA4C,OAAxBziB,EAAYwiB,GAAmBH,CAAQ,CAAwB,OAAxBriB,EAAYsiB,GAAmBD,CAAO,EAAq/tF,EAAr/tF,WAAwC,IAAIA,EAAO/a,GAAc,IAAI+a,EAAuB,OAAfriB,EAAY,GAAU,EAAE,IAAIlM,EAAK,IAAI6R,GAAc0c,GAAQvuB,EAAK6S,iBAAiB0b,GAAQ,IAAIC,EAAWxuB,EAAKgS,WAAW,IAAIwc,EAA2B,OAAftiB,EAAY,GAAUqiB,EAA2D,IAApD,IAAIE,EAAU7iF,MAAMrB,UAAU0E,MAAMzB,KAAK4C,WAAmBtE,EAAE,EAAEA,EAAE2iF,EAAU1iF,OAAOD,IAAI,CAAC,IAAI4iF,EAAWD,EAAU3iF,GAAG,GAAgB,IAAb4iF,GAAgBA,IAAaF,EAAY,MAAM,IAAIG,EAAkB3uB,EAAKwN,IAAI,GAAG,GAAGohB,GAAiBF,EAAWF,EAAWG,GAA4C,OAAxBziB,EAAYwiB,GAAmBH,CAAQ,CAAwB,OAAxBriB,EAAYsiB,GAAmBD,CAAO,EAAi9sF,EAAInb,GAAsB,EAA3+sF,SAA6C5F,GAASA,GAAWkE,GAAiB,IAAIG,GAAcrE,GAAM,EAAy6sF,GAAKiG,GAAe,GAA/qsF,SAA0CjG,GAAK,GAAIA,EAAJ,CAAe,IAAIxN,EAAK,IAAI6R,GAAcrE,GAAKiE,GAAgBpzD,KAAK2hD,GAAMA,EAAKyS,cAAa,GAAMgB,IAApF,CAAqG,EAAmjsF,EAAnjsF,SAAsBjG,EAAIt6D,EAAKg/D,GAAkH,MAA7F,IAAIL,GAAcrE,GAAUoF,KAAK1/D,EAAKg/D,GAAYsB,GAAchG,EAAIoE,KAA+BpE,CAAI,EAAy6rF,GAAz6rF,WAAsC,OAAOoE,EAAuB,EAAq4rF,EAAx1vF,SAA4BpE,GAA0C,MAAjCgG,KAAeA,GAAchG,GAAUA,CAAI,EAA+xvF,EAApwxC,SAA4B8I,EAAG+K,EAAIoG,GAAST,GAASS,QAAQA,EAAQ,IAAI,IAAI7tC,EAAOotC,GAASW,gBAAgBrR,GAAI,OAAO+K,GAAK,KAAK,EAA0B,OAAnB3tD,EAAIszD,GAAS53E,OAAa,GAAU,GAA2BslE,GAAGmJ,aAAajkC,EAAOlmB,GAAsB4iD,GAAG,KAAK,EAAE,KAAK,EAA6K,KAAK,EAAE,KAAK,EAAE,OAAO,EAAvL,KAAK,EAAE,OAAO18B,EAAOsM,MAAM,KAAK,EAAG,IAAIxyB,EAAIszD,GAAS53E,MAAwB,OAAlBwqC,EAAOsM,OAAOxyB,EAAW,EAAE,KAAK,EAA+D,OAAxDA,EAAIszD,GAAS53E,MAAmB++D,EAAOz6C,EAAT,GAAqB,GAAG,EAAS,EAAyB,KAAK,GAAG,KAAK,EAAyC,QAAS,OAAO,GAA7C,KAAK,EAAe,OAAJ,GAAhn7C26C,EAAOwgB,MAAqB,GAAol7C,IAAW,EAAgH,CAAzF,MAAM9/E,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAA8qwC,GAA9qwC,SAA8BhH,GAAI,IAA4C,OAA7B0Q,GAASW,gBAAgBrR,GAAW,CAA2F,CAAzF,MAAMvnE,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAAuhwC,GAAvhwC,SAAgChH,EAAGwY,EAAWC,GAAa,IAAI,IAAIhjF,EAAmB,WAAZgjF,GAAwBD,IAAa,GAA2B,OAAxBpa,GAAGgM,UAAUpK,EAAGvqE,GAAe,CAA2F,CAAzF,MAAMgD,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAAs0vC,GAAt0vC,SAA0BhH,EAAG0Y,EAAGvH,GAAST,GAASS,QAAQA,EAAQ,IAAI,IAAI7tC,EAAOotC,GAASW,gBAAgBrR,GAAI,OAAO0Y,GAAI,KAAK,MAAM,KAAK,MAAyC,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAoP,KAAK,MAAyC,KAAK,MAAO,OAAIp1C,EAAO47B,IAAqB,GAAV,GAA3R,KAAK,MAAO,IAAI57B,EAAO47B,IAAI,OAAO,GAAG,IAAIyZ,EAAKjI,GAAS53E,MAAwB,OAAlBi/D,EAAO4gB,GAAM,GAAG,EAAS,EAAE,KAAK,MAAO,OAAIr1C,EAAO47B,KAAqB,IAAV,GAAa,KAAK,MAA+B,OAApByZ,EAAKjI,GAAS53E,MAAaslE,GAAG0M,MAAMxnC,EAAOo1C,EAAGC,GAAkG,QAAQ1iB,GAAM,qBAAqByiB,GAA8F,CAAzF,MAAMjgF,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAA4puC,GAA5puC,SAA4B6J,EAAMryD,EAAKlf,GAAM,IAAoL,OAAhLkf,EAAKkyD,GAASU,OAAO5yD,GAAMA,EAAKkyD,GAASE,YAAYC,EAAMryD,GAAyD,OAAnDA,EAAK4+C,GAAKj2D,UAAUqX,IAAcA,EAAK/oB,OAAO,KAAS+oB,EAAKA,EAAKowB,OAAO,EAAEpwB,EAAK/oB,OAAO,IAAG2oE,GAAG0K,MAAMtqD,EAAKlf,EAAK,GAAU,CAA2F,CAAzF,MAAM7G,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAAg3tC,EAAh3tC,SAA2B6J,EAAMryD,EAAKoxB,EAAMuhC,GAAST,GAASS,QAAQA,EAAQ,IAAI3yD,EAAKkyD,GAASU,OAAO5yD,GAAMA,EAAKkyD,GAASE,YAAYC,EAAMryD,GAAM,IAAIlf,EAAK6xE,EAAQT,GAAS53E,MAAM,EAAE,OAAOslE,GAAGlJ,KAAK12C,EAAKoxB,EAAMtwC,GAAM0gE,EAA4F,CAAzF,MAAMvnE,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAAoltC,GAApltC,SAA6B4R,EAAS/U,EAAQgV,EAAS1P,GAAS,IAA+L,OAA3LtF,EAAQ6M,GAASU,OAAOvN,GAASsF,EAAQuH,GAASU,OAAOjI,GAAStF,EAAQ6M,GAASE,YAAYgI,EAAS/U,GAASsF,EAAQuH,GAASE,YAAYiI,EAAS1P,GAAS/K,GAAG6C,OAAO4C,EAAQsF,GAAgB,CAA2F,CAAzF,MAAM1wE,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAA2wsC,GAA3wsC,SAA2BxoD,EAAKuD,GAAK,IAA+B,OAA3BvD,EAAKkyD,GAASU,OAAO5yD,GAAakyD,GAASM,OAAO5S,GAAGsL,KAAKlrD,EAAKuD,EAA8F,CAAzF,MAAMtpB,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAA2lsC,GAA3lsC,SAAkC8R,EAAc5gF,EAAKysB,EAAKo0D,EAASC,GAAW,EAA2isC,GAAn3lC,SAAgC1G,EAAQp6E,EAAKysB,EAAKs0D,EAAUC,GAAY,IAAI/iD,EAAMm7C,GAAiB3sD,GAAkC0tD,GAAaC,EAAQ,CAACp6E,KAAlDA,EAAKs5E,GAAiBt5E,GAAsC,aAAe,SAASihF,GAAI,QAAQA,CAAG,EAAC,WAAa,SAASjG,EAAYlqE,GAAG,OAAOA,EAAEiwE,EAAUC,CAAW,EAAC,eAAiB,EAAE,qBAAuB,SAASnG,GAAS,IAAI1b,EAAK,GAAU,IAAP1yC,EAAU0yC,EAAKO,OAAW,GAAU,IAAPjzC,EAAU0yC,EAAKQ,MAAY,IAAU,IAAPlzC,EAA2B,MAAM,IAAIsY,UAAU,8BAA8B/kC,GAAnEm/D,EAAKU,CAAoE,QAAOzjE,KAAA,aAAqB+iE,EAAK0b,GAAS58C,GAAQ,EAACijD,mBAAmB,MAAO,EAA21kC,GAAtriC,SAAiC9G,EAAQp6E,GAAkCm6E,GAAaC,EAAQ,CAACp6E,KAAlDA,EAAKs5E,GAAiBt5E,GAAsC,aAAe,SAAS06E,GAAQ,IAAI0D,EAAGzD,GAAcD,GAA+B,OAAvBD,GAAeC,GAAe0D,CAAG,EAAC,WAAa,SAASpD,EAAYh2E,GAAO,OAAO21E,GAAe31E,EAAO,EAAC,eAAiB,EAAE,qBAAuB41E,GAA2BsG,mBAAmB,MAAO,EAAm2hC,EAAxkhC,SAAiC9G,EAAQp6E,EAAKysB,GAAM,IAAIwR,EAAMm7C,GAAiB3sD,GAAkC0tD,GAAaC,EAAQ,CAACp6E,KAAlDA,EAAKs5E,GAAiBt5E,GAAsC,aAAe,SAASgF,GAAO,OAAOA,CAAM,EAAC,WAAa,SAASg2E,EAAYh2E,GAAO,OAAOA,CAAM,EAAC,eAAiB,EAAE,qBAAuB81E,GAA0B96E,EAAKi+B,GAAOijD,mBAAmB,MAAO,EAAqwgC,EAAzowB,SAAoClhF,EAAKmhF,EAASC,EAAgBrpB,EAAUspB,EAAWh0C,GAAI,IAAIi0C,EAApsD,SAA6BtyE,EAAMuyE,GAA2B,IAAb,IAAIpwE,EAAM,GAAW7T,EAAE,EAAEA,EAAE0R,EAAM1R,IAAK6T,EAAMtB,KAAKgwD,GAAQ0hB,GAAc,GAAGjkF,IAAI,OAAO6T,CAAM,CAAikDqwE,CAAoBL,EAASC,GAAiBphF,EAAKs5E,GAAiBt5E,GAAMqhF,EAAp+B,SAAiCtpB,EAAU0pB,GAAa1pB,EAAUuhB,GAAiBvhB,GAA+E,IAAnS+lB,EAAI9e,EAAS0iB,EAA0RC,GAAvS7D,EAA4Q/lB,EAAxQiH,EAAkRyiB,EAAzQC,EAAS,GAAU,WAA+D,OAApDA,EAASnkF,OAAO,EAAE6I,OAAOumC,OAAO+0C,EAAS9/E,WAAkBi8E,GAAQC,EAAI9e,EAAI0iB,EAAU,GAA6S,MAArG,mBAAJC,GAAgB3H,GAAkB,2CAA2CjiB,EAAU,KAAK0pB,GAAoBE,CAAG,CAAyrBC,CAAwB7pB,EAAUspB,GAA76E,SAA4BrhF,EAAKgF,EAAM68E,GAAiB9mB,EAAOhuD,eAAe/M,UAAUhD,IAAY6kF,QAAc7kF,IAAY+9D,EAAO/6D,GAAM8hF,oBAAe9kF,IAAY+9D,EAAO/6D,GAAM8hF,cAAcD,KAAe7H,GAAkB,gCAAgCh6E,EAAK,WAA10B,SAA6B+hF,EAAMC,EAAWxD,GAAW,QAAGxhF,IAAY+kF,EAAMC,GAAYF,cAAc,CAAC,IAAIG,EAASF,EAAMC,GAAYD,EAAMC,GAAY,WAAyP,OAA1OD,EAAMC,GAAYF,cAAc/0E,eAAenL,UAAUrE,SAASy8E,GAAkB,aAAawE,EAAU,iDAAiD58E,UAAUrE,OAAO,uBAAuBwkF,EAAMC,GAAYF,cAAc,MAAaC,EAAMC,GAAYF,cAAclgF,UAAUrE,QAAQoE,MAAMvF,KAAKwF,UAAW,EAACmgF,EAAMC,GAAYF,cAAc,GAAGC,EAAMC,GAAYF,cAAcG,EAASd,UAAUc,CAAS,CAAC,CAAkRC,CAAoBnnB,EAAO/6D,EAAKA,GAAS+6D,EAAOhuD,eAAe80E,IAAe7H,GAAkB,uFAAuF6H,EAAa,MAAM9mB,EAAO/6D,GAAM8hF,cAAcD,GAAc78E,IAAW+1D,EAAO/6D,GAAMgF,OAAShI,IAAY6kF,IAAc9mB,EAAO/6D,GAAM6hF,aAAaA,GAAe,CAAg1DM,CAAmBniF,GAAK,YAAtnB,SAA+BvB,EAAQ8Q,GAAO,IAAI6yE,EAAa,GAAOC,EAAK,CAAC,EAAmN,MAArB9yE,EAAMC,SAAlM,SAAS8yE,EAAM59E,GAAS29E,EAAK39E,IAAiB80E,GAAgB90E,KAAiB+0E,GAAiB/0E,GAAO+0E,GAAiB/0E,GAAM8K,QAAQ8yE,IAAcF,EAAavyE,KAAKnL,GAAM29E,EAAK39E,IAAM,GAAK,IAA2B,IAAIu5E,GAAiBx/E,EAAQ,KAAK2jF,EAAa1yE,IAAIwuE,IAAalxE,KAAK,CAAC,OAAQ,CAA8Qu1E,CAAsB,eAAeviF,EAAK,wBAAwBshF,EAAU,GAACH,EAAS,GAA5xZ,SAAuCqB,EAAQC,EAAeC,GAA0F,SAASC,EAAWC,GAAgB,IAAIC,EAAyoZ,SAASvB,GAAU,IAAIwB,EAAiB,CAACxB,EAAS,GAAG,MAAMtxE,OAAOsxE,EAAS7gF,MAAM,IAAwG,OAAniE,SAA6BT,EAAKgF,EAAM68E,GAAkB9mB,EAAOhuD,eAAe/M,IAAOk6E,GAAmB,4CAA0Cl9E,IAAY+9D,EAAO/6D,GAAM8hF,oBAAe9kF,IAAY6kF,EAAc9mB,EAAO/6D,GAAM8hF,cAAcD,GAAc78E,GAAW+1D,EAAO/6D,GAAMgF,EAAM+1D,EAAO/6D,GAAMmhF,SAASU,EAAc,CAA8nDkB,CAAoB/iF,EAAh0J,SAA8Bw+E,EAAU8C,EAAS0B,EAAUC,EAAeC,GAAe,IAAI/B,EAASG,EAAS/jF,OAAU4jF,EAAS,GAAGnH,GAAkB,kFAA4K,IAA1F,IAAImJ,EAAgC,OAAd7B,EAAS,IAAuB,OAAZ0B,EAAqBI,GAAqB,EAAc9lF,EAAE,EAAEA,EAAEgkF,EAAS/jF,SAASD,EAAG,GAAiB,OAAdgkF,EAAShkF,SAA4CN,IAAjCskF,EAAShkF,GAAG4jF,mBAA+B,CAACkC,GAAqB,EAAK,KAAM,CAAC,IAAIC,EAA2B,SAAnB/B,EAAS,GAAGthF,KAAkBsjF,EAAiBnC,EAAS,EAAMoC,EAAU,IAAInmF,MAAMkmF,GAAsBE,EAAgB,GAAOxI,EAAY,GAAG,OAAO,WAAoM,IAAIyI,EAA1L7hF,UAAUrE,SAAS+lF,GAAkBtJ,GAAkB,YAAYwE,EAAU,gBAAgB58E,UAAUrE,OAAO,wBAAwB+lF,EAAiB,UAAUtI,EAAYz9E,OAAO,EAAgBimF,EAAgBjmF,OAAO4lF,EAAkB,EAAE,EAAEK,EAAgB,GAAGN,EAAiBC,IAAmBM,EAAUnC,EAAS,GAAT,WAA0BtG,EAAY5+E,MAAMonF,EAAgB,GAAGC,GAAU,IAAI,IAAInmF,EAAE,EAAEA,EAAEgmF,IAAmBhmF,EAAGimF,EAAUjmF,GAAGgkF,EAAShkF,EAAE,GAAX,WAA4B09E,EAAYp5E,UAAUtE,IAAIkmF,EAAgB3zE,KAAK0zE,EAAUjmF,IAAI,IAAI8gF,EAAG6E,EAAethF,MAAM,KAAK6hF,GAAiB,SAASE,EAAOtF,GAAI,GAAGgF,EAAsBrI,GAAeC,QAAkB,IAAI,IAAI19E,EAAE6lF,EAAkB,EAAE,EAAE7lF,EAAEgkF,EAAS/jF,OAAOD,IAAI,CAAC,IAAIqmF,EAAU,IAAJrmF,EAAMmmF,EAAUF,EAAUjmF,EAAE,GAAuC,OAAjCgkF,EAAShkF,GAAG4jF,oBAA2BI,EAAShkF,GAAG4jF,mBAAmByC,EAAQ,CAAC,GAAGN,EAAS,OAAO/B,EAAS,GAAT,aAA4BlD,EAAK,QAAGlD,GAASO,SAAiBP,GAASsB,WAAWn3E,KAAKq+E,GAAeA,EAAOtF,EAAI,CAAC,CAAgxGwF,CAAqB5jF,EAAK8iF,EAAiB,KAAKzB,EAAWh0C,GAAI8zC,EAAS,GAAS,EAAG,CAA1zZuB,CAAkBE,GAAmBC,EAAiBtlF,SAASilF,EAAQjlF,QAAQ28E,GAAmB,mCAAmC,IAAI,IAAI58E,EAAE,EAAEA,EAAEklF,EAAQjlF,SAASD,EAAG68E,GAAaqI,EAAQllF,GAAGulF,EAAiBvlF,GAAK,CAArVklF,EAAQhzE,SAAQ,SAAS9K,GAAM+0E,GAAiB/0E,GAAM+9E,CAAe,IAAgR,IAAIG,EAAe,IAAIxlF,MAAMqlF,EAAellF,QAAYsmF,EAAkB,GAAOC,EAAW,EAAErB,EAAejzE,SAAQ,CAACu0E,EAAGzmF,KAAQk8E,GAAgBzsE,eAAeg3E,GAAKnB,EAAetlF,GAAGk8E,GAAgBuK,IAASF,EAAkBh0E,KAAKk0E,GAAQxK,GAAqBxsE,eAAeg3E,KAAKxK,GAAqBwK,GAAI,IAAGxK,GAAqBwK,GAAIl0E,MAAK,KAAK+yE,EAAetlF,GAAGk8E,GAAgBuK,KAAMD,IAA2BD,EAAkBtmF,QAAQolF,EAAWC,EAAgB,IAAG,IAAM,IAAIiB,EAAkBtmF,QAAQolF,EAAWC,EAAiB,CAAu2XoB,CAA8B,GAAG1C,EAA6M,EAAmlvB,EAAzhuB,SAAmCV,EAAc5gF,EAAKysB,EAAKo0D,EAASC,GAAU9gF,EAAKs5E,GAAiBt5E,IAAqB,IAAZ8gF,IAAeA,EAAS,YAAW,IAAI7iD,EAAMm7C,GAAiB3sD,GAAUw3D,EAAaj/E,GAAOA,EAAM,GAAc,IAAX67E,EAAa,CAAC,IAAIqD,EAAS,GAAG,EAAEz3D,EAAKw3D,EAAcj/E,GAAOA,GAAOk/E,IAAWA,CAAU,KAAIC,EAAenkF,EAAK+nE,SAAS,YAA8QoS,GAAayG,EAAc,CAAC5gF,KAAKA,EAAK,aAAeikF,EAAa,WAAvQE,EAA2B,SAASnJ,EAAYh2E,GAAwC,OAAX5I,KAAK4D,KAAagF,IAAQ,CAAE,EAAiB,SAASg2E,EAAYh2E,GAAwC,OAAX5I,KAAK4D,KAAagF,CAAM,EAA2F,eAAiB,EAAE,qBAAuBq5E,GAA4Br+E,EAAKi+B,EAAiB,IAAX4iD,GAAcK,mBAAmB,MAAO,EAA6wsB,EAA7wsB,SAAuC9G,EAAQgK,EAAcpkF,GAAM,IAAmHqkF,EAAnG,CAACrjB,UAAUhnB,WAAWinB,WAAWE,YAAYD,WAAWE,YAAYC,aAAaC,cAAiC8iB,GAAe,SAASE,EAAiB5J,GAAyB,IAAIvb,EAAKW,EAAYrzC,EAAK0yC,EAA3Cub,IAAe,GAA6Cx+E,EAAKijE,EAAKub,EAAO,GAAG,OAAO,IAAI2J,EAAGp6D,EAAO/tB,EAAKuwB,EAAM,CAA4B0tD,GAAaC,EAAQ,CAACp6E,KAAlDA,EAAKs5E,GAAiBt5E,GAAsC,aAAeskF,EAAiB,eAAiB,EAAE,qBAAuBA,GAAkB,CAAChK,8BAA6B,GAAO,EAA4wrB,EAA5wrB,SAAsCF,EAAQp6E,GAAkC,IAAIukF,EAAuB,iBAAvDvkF,EAAKs5E,GAAiBt5E,IAA+Cm6E,GAAaC,EAAQ,CAACp6E,KAAKA,EAAK,aAAe,SAASgF,GAAO,IAAiCsC,EAA7B/J,EAAOuiE,EAAQ96D,GAAO,GAAW,GAAGu/E,EAA4C,IAA3B,IAAIC,EAAex/E,EAAM,EAAU1H,EAAE,EAAEA,GAAGC,IAASD,EAAE,CAAC,IAAImnF,EAAez/E,EAAM,EAAE1H,EAAE,GAAGA,GAAGC,GAAgC,GAAxB0hE,EAAOwlB,GAAmB,CAAC,IAA8CC,EAAc3lB,EAAaylB,EAA7DC,EAAeD,QAA+ExnF,IAANsK,EAAiBA,EAAIo9E,GAAmBp9E,GAAKijB,OAAOC,aAAa,GAAGljB,GAAKo9E,GAAcF,EAAeC,EAAe,CAAE,CAAC,KAAK,CAAC,IAAIhxE,EAAE,IAAIrW,MAAMG,GAAQ,IAAQD,EAAE,EAAEA,EAAEC,IAASD,EAAGmW,EAAEnW,GAAGitB,OAAOC,aAAay0C,EAAOj6D,EAAM,EAAE1H,IAAIgK,EAAImM,EAAEzG,KAAK,GAAI,CAAa,OAAb63D,GAAM7/D,GAAcsC,CAAI,EAAC,WAAa,SAAS0zE,EAAYh2E,GAAUA,aAAiBguE,cAAahuE,EAAM,IAAIg1C,WAAWh1C,IAAqB,IAAI2/E,EAAkC,iBAAP3/E,EAAqB2/E,GAAqB3/E,aAAiBg1C,YAAYh1C,aAAiB4/E,mBAAmB5/E,aAAiBg8D,WAAYgZ,GAAkB,yCAA2J,IAAIz8E,GAAnHgnF,GAAiBI,EAAgC,IAAIllB,EAAgBz6D,GAAwB,IAAIA,EAAMzH,UAAmCyhE,EAAI8B,GAAQ,EAAEvjE,EAAO,GAA0B,GAAvBuiE,EAAQd,GAAK,GAAGzhE,EAAUgnF,GAAiBI,EAAqBplB,EAAav6D,EAAMg6D,EAAI,EAAEzhE,EAAO,QAAQ,GAAGonF,EAAqB,IAAI,IAAIrnF,EAAE,EAAEA,EAAEC,IAASD,EAAE,CAAC,IAAIunF,EAAS7/E,EAAMqL,WAAW/S,GAAMunF,EAAS,MAAKhgB,GAAM7F,GAAKgb,GAAkB,2DAA0D/a,EAAOD,EAAI,EAAE1hE,GAAGunF,CAAS,MAAM,IAAQvnF,EAAE,EAAEA,EAAEC,IAASD,EAAG2hE,EAAOD,EAAI,EAAE1hE,GAAG0H,EAAM1H,GAAwD,OAAlC,OAAd09E,GAAoBA,EAAYnrE,KAAKg1D,GAAM7F,GAAYA,CAAI,EAAC,eAAiB,EAAE,qBAAuB4b,GAA2BsG,mBAAmB,SAASliB,GAAK6F,GAAM7F,EAAK,GAAG,EAAmjoB,EAAnjoB,SAAuCob,EAAQ0K,EAAS9kF,GAAkC,IAAI+kF,EAAaC,EAAaC,EAAQC,EAAejnD,EAAjFj+B,EAAKs5E,GAAiBt5E,GAA+E,IAAX8kF,GAAcC,EAAa7kB,EAAc8kB,EAAa3kB,EAAc6kB,EAAe1kB,GAAiBykB,EAAS,IAAIrlB,EAAS3hC,EAAM,GAAqB,IAAX6mD,IAAcC,EAAatkB,GAAcukB,EAAarkB,GAAcukB,EAAetkB,GAAiBqkB,EAAS,IAAInlB,EAAS7hC,EAAM,GAAEk8C,GAAaC,EAAQ,CAACp6E,KAAKA,EAAK,aAAe,SAASgF,GAA0F,IAAnF,IAAoDsC,EAAhD/J,EAAOuiE,EAAQ96D,GAAO,GAAOmgF,EAAKF,IAAsBT,EAAex/E,EAAM,EAAU1H,EAAE,EAAEA,GAAGC,IAASD,EAAE,CAAC,IAAImnF,EAAez/E,EAAM,EAAE1H,EAAEwnF,EAAS,GAAGxnF,GAAGC,GAAqC,GAA7B4nF,EAAKV,GAAgBxmD,GAAU,CAAC,IAAmDymD,EAAcK,EAAaP,EAA7DC,EAAeD,QAAoFxnF,IAANsK,EAAiBA,EAAIo9E,GAAmBp9E,GAAKijB,OAAOC,aAAa,GAAGljB,GAAKo9E,GAAcF,EAAeC,EAAeK,CAAS,CAAC,CAAa,OAAbjgB,GAAM7/D,GAAcsC,CAAI,EAAC,WAAa,SAAS0zE,EAAYh2E,GAA0B,iBAAPA,GAAkBg1E,GAAkB,6CAA6Ch6E,GAAM,IAAIzC,EAAO2nF,EAAelgF,GAAWg6D,EAAI8B,GAAQ,EAAEvjE,EAAOunF,GAAqI,OAA3HhlB,EAAQd,GAAK,GAAGzhE,GAAQ0gC,EAAM+mD,EAAahgF,EAAMg6D,EAAI,EAAEzhE,EAAOunF,GAA2B,OAAd9J,GAAoBA,EAAYnrE,KAAKg1D,GAAM7F,GAAYA,CAAI,EAAC,eAAiB,EAAE,qBAAuB4b,GAA2BsG,mBAAmB,SAASliB,GAAK6F,GAAM7F,EAAK,GAAG,EAA+tlB,GAA/tlB,SAAgCob,EAAQp6E,GAAkCm6E,GAAaC,EAAQ,CAACgL,QAAO,EAAKplF,KAA9DA,EAAKs5E,GAAiBt5E,GAAkD,eAAiB,EAAE,aAAe,WAA4B,EAAC,WAAa,SAASg7E,EAAYlqE,GAAoB,GAAG,EAA6glB,EAA7glB,WAAiC,OAAOya,KAAK3C,KAAM,EAAo/kB,GAA59kB,WAA6C,OAAlD,CAAwE,EAAg8kB,GAAh8kB,SAAmCthB,EAAI6I,GAAKovD,EAAa/D,EAAYl0D,EAAI6I,EAAK,EAAi5kB,GAAnikB,SAAsBuqE,EAAOyG,EAASG,EAAS+D,GAAM3K,EAAOC,GAAcD,GAAsF,IAA9E,IAAInrE,EAAxQ,SAA6B4xE,EAASG,GAAoC,IAA1B,IAAI7tE,EAAE,IAAIrW,MAAM+jF,GAAkB7jF,EAAE,EAAEA,EAAE6jF,IAAW7jF,EAAGmW,EAAEnW,GAAGihF,GAAsB1e,GAAQyhB,GAAU,GAAGhkF,GAAG,aAAaA,GAAG,OAAOmW,CAAE,CAA4F6xE,CAAoBnE,EAASG,GAAcr9D,EAAK,IAAI7mB,MAAM+jF,GAAkB7jF,EAAE,EAAEA,EAAE6jF,IAAW7jF,EAAE,CAAC,IAAIoH,EAAK6K,EAAMjS,GAAG2mB,EAAK3mB,GAAGoH,EAAI,qBAAyB2gF,GAAMA,GAAM3gF,EAAI,cAAmB,KAAI05E,EAAG1D,EAAO/4E,WAAM3E,EAAUinB,GAAM,OAAO02D,GAAeyD,EAAI,EAAiujB,GAAK3D,GAAe,GAArvjB,SAAwBvvD,EAAMjjB,GAAgE,OAAxDijB,EAAMyvD,GAAczvD,KAAcyvD,GAAc1yE,EAA6B,EAAspjB,EAAtpjB,SAAwByyE,GAAWA,EAAO,IAAGF,GAAmBE,GAAQ7W,UAAU,EAAG,EAAoljB,GAApljB,SAA4Bn/D,EAAK2gF,GAA2D,IAAIlpF,GAAzDuI,EAAK65E,GAAsB75E,EAAK,sBAA+B,qBAAyB2gF,GAAM,OAAO1K,GAAex+E,EAAG,EAA88iB,GAA98iB,SAAqB0L,EAAK09E,GAAO,IAAIl+E,EAAK,IAAIkkB,KAAqB,IAAhBs0C,EAAOh4D,GAAM,IAAQg4D,EAAO0lB,GAAO,GAAGl+E,EAAK2lB,gBAAgB6yC,EAAO0lB,EAAM,GAAG,GAAGl+E,EAAK0lB,gBAAgB8yC,EAAO0lB,EAAM,GAAG,GAAGl+E,EAAKylB,cAAc+yC,EAAO0lB,EAAM,IAAI,GAAGl+E,EAAKwlB,aAAagzC,EAAO0lB,EAAM,IAAI,GAAGl+E,EAAKulB,cAAcizC,EAAO0lB,EAAM,IAAI,GAAGl+E,EAAKslB,iBAAiB,KAAKkzC,EAAO0lB,EAAM,IAAI,GAAGl+E,EAAKm+E,YAAY,IAAIp/D,EAAMmF,KAAKC,IAAInkB,EAAKslB,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,GAAO84D,GAAMp+E,EAAK0yC,UAAU3zB,GAAhB,MAAsC,EAAEy5C,EAAO0lB,EAAM,IAAI,GAAGE,CAAK,EAAkgiB,GAAlgiB,SAAqBF,GAAO,IAAIl+E,EAAK,IAAIkkB,KAAKs0C,EAAO0lB,EAAM,IAAI,GAAG,KAAK1lB,EAAO0lB,EAAM,IAAI,GAAG1lB,EAAO0lB,EAAM,IAAI,GAAG1lB,EAAO0lB,EAAM,GAAG,GAAG1lB,EAAO0lB,EAAM,GAAG,GAAG1lB,EAAO0lB,GAAO,GAAG,GAAOG,EAAI7lB,EAAO0lB,EAAM,IAAI,GAAOI,EAAct+E,EAAKu+E,oBAAwBx/D,EAAM,IAAImF,KAAKlkB,EAAKw+E,cAAc,EAAE,GAAOC,EAAa,IAAIv6D,KAAKlkB,EAAKw+E,cAAc,EAAE,GAAGD,oBAAwBG,EAAa3/D,EAAMw/D,oBAAwBI,EAAUnvE,KAAKwU,IAAI06D,EAAaD,GAAc,GAAGJ,EAAI,EAAG7lB,EAAO0lB,EAAM,IAAI,GAAGxtC,OAAO+tC,GAAcC,GAAcC,GAAWL,QAAoB,GAAGD,EAAI,IAAIM,GAAWL,GAAe,CAAC,IAAIM,EAAapvE,KAAK8X,IAAIo3D,EAAaD,GAAkBI,EAAWR,EAAI,EAAEM,EAAUC,EAAa5+E,EAAK8+E,QAAQ9+E,EAAK0yC,UAAqC,KAA1BmsC,EAAWP,GAAoB,CAAA9lB,EAAO0lB,EAAM,IAAI,GAAGl+E,EAAK++E,SAAS,IAAIX,GAAMp+E,EAAK0yC,UAAU3zB,EAAM2zB,WAAtB,MAAgD,EAA6M,OAA3M8lB,EAAO0lB,EAAM,IAAI,GAAGE,EAAK5lB,EAAO0lB,GAAO,GAAGl+E,EAAKg/E,aAAaxmB,EAAO0lB,EAAM,GAAG,GAAGl+E,EAAKi/E,aAAazmB,EAAO0lB,EAAM,GAAG,GAAGl+E,EAAKk/E,WAAW1mB,EAAO0lB,EAAM,IAAI,GAAGl+E,EAAK8wD,UAAU0H,EAAO0lB,EAAM,IAAI,GAAGl+E,EAAKm/E,WAAkBn/E,EAAK0yC,UAAU,IAAI,CAAE,EAA8+f,GAA9+f,SAAmBi/B,EAAK7oE,EAAI47D,EAAKr0B,EAAMowB,EAAGz4C,EAAI28C,EAAUya,GAAS,IAAI,IAAIj1B,EAAK0U,GAAGkJ,UAAUtH,GAAI,IAAItW,EAAK,OAAO,EAAE,IAAIzyD,EAAImnE,GAAGoD,KAAK9X,EAAKwnB,EAAK7oE,EAAIkf,EAAI08C,EAAKr0B,GAAWsnB,EAAIjgE,EAAIigE,IAAuC,OAAnCa,EAAOmM,GAAW,GAAGjtE,EAAIitE,UAAiBhN,CAA6F,CAAzF,MAAMz+D,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAAssf,GAAtsf,SAAoBkK,EAAK7oE,EAAIunC,EAAMowB,GAAI,IAAwD,OAApD0Q,GAASO,QAAQC,EAAK9S,GAAGkJ,UAAUtH,GAAI33D,EAAIunC,EAAM,GAAU,CAA2F,CAAzF,MAAMn3C,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAAohf,GAAphf,SAAqBkK,EAAK7oE,EAAI47D,EAAKr0B,EAAMowB,EAAGtlD,GAAQ,IAAI,IAAI4oB,EAAO86B,GAAGkJ,UAAUtH,GAAO18B,IAAgB,EAAL2gC,GAAQyM,GAASO,QAAQC,EAAK5tC,EAAOj7B,EAAIunC,EAAMl1B,GAAQ0jD,GAAGyM,OAAOvnC,GAAkG,CAAzF,MAAM7qC,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAA+xe,GAAv9c,SAAS4X,EAAWC,EAASC,EAASC,GAAWH,EAAWI,SAAcJ,EAAWI,QAAO,EAAp6B,SAAqBH,EAASC,EAASC,GAAQ,IAAIE,GAAa,IAAIx7D,MAAMs6D,cAAkBmB,EAAO,IAAIz7D,KAAKw7D,EAAY,EAAE,GAAOE,EAAO,IAAI17D,KAAKw7D,EAAY,EAAE,GAAOhB,EAAaiB,EAAOpB,oBAAwBE,EAAamB,EAAOrB,oBAAwBsB,EAAkBrwE,KAAK8X,IAAIo3D,EAAaD,GAA8G,SAASqB,EAAY9/E,GAAM,IAAIG,EAAMH,EAAK+/E,eAAe5/E,MAAM,qBAAqB,OAAOA,EAAMA,EAAM,GAAG,KAAM,CAAhNq4D,EAAO8mB,GAAU,GAAqB,GAAlBO,EAAqBrnB,EAAO+mB,GAAU,GAAG7uC,OAAOguC,GAAcD,GAA8H,IAAIuB,EAAWF,EAAYH,GAAYM,EAAWH,EAAYF,GAAYM,EAAc1mB,GAAawmB,GAAgBG,EAAc3mB,GAAaymB,GAAexB,EAAaC,GAAclmB,EAAOgnB,GAAQ,GAAGU,EAAc1nB,EAAOgnB,EAAO,GAAG,GAAGW,IAAmB3nB,EAAOgnB,GAAQ,GAAGW,EAAc3nB,EAAOgnB,EAAO,GAAG,GAAGU,EAAe,CAAiGE,CAAYd,EAASC,EAASC,GAAQ,EAAg2c,EAAh2c,WAAkB9oB,GAAM,GAAI,EAA+0c,GAA/0c,WAAoC,OAAO,UAAW,EAAuzc,EAAIigB,GAAoB,GAA7/b,SAAiC0J,GAAe,IAA6JnuD,EAAzJouD,EAAQ1oB,EAAO1hE,OAA2CqqF,EAA3c,WAAkf,IAA3EF,KAA8B,GAA8DE,EAAa,OAAO,EAAiE,IAAI,IAAIC,EAAQ,EAAEA,GAAS,EAAEA,GAAS,EAAE,CAAC,IAAIC,EAAkBH,GAAS,EAAE,GAAGE,GAA6N,GAApNC,EAAkBjxE,KAAKwU,IAAIy8D,EAAkBJ,EAAc,WAAsHjJ,GAA/F5nE,KAAKwU,IAAIu8D,GAA/NruD,EAAmP1iB,KAAK8X,IAAI+4D,EAAcI,KAAmB,MAApQvuD,EAAoQ,eAA2E,OAAO,CAAM,QAAO,CAAM,EAA28a,GAAt5Z,SAAsBwuD,EAAUC,GAAa,IAAIC,EAAQ,EAAgK,OAA9JpJ,KAAgBrvE,SAAQ,SAAS6e,EAAO/wB,GAAG,IAAI0hE,EAAIgpB,EAAYC,EAAQpoB,EAAOkoB,EAAY,EAAFzqF,GAAK,GAAG0hE,EAA/o1F,SAA4B13D,EAAI2iB,EAAOs1D,GAAa,IAAI,IAAIjiF,EAAE,EAAEA,EAAEgK,EAAI/J,SAASD,EAAGoiE,EAAMz1C,KAAU,GAAG3iB,EAAI+I,WAAW/S,GAAmBoiE,EAAMz1C,GAAQ,GAAG,CAAE,CAAy/0Fi+D,CAAmB75D,EAAO2wC,GAAKipB,GAAS55D,EAAO9wB,OAAO,CAAE,IAAS,CAAE,EAAssZ,GAAtsZ,SAA4B4qF,EAAeC,GAAmB,IAAI9+C,EAAQu1C,KAAgBhf,EAAOsoB,GAAgB,GAAG7+C,EAAQ/rC,OAAO,IAAI0qF,EAAQ,EAAmG,OAAjG3+C,EAAQ95B,SAAQ,SAAS6e,GAAQ45D,GAAS55D,EAAO9wB,OAAO,CAAE,IAAEsiE,EAAOuoB,GAAmB,GAAGH,EAAe,CAAE,EAAm+Y,EAAn+Y,SAAevsB,IAAohqP,SAAcA,EAAOj3C,GAAUu5C,EAAWtC,EAAO2sB,GAAS3sB,EAAQ,CAA9kqP4sB,CAAK5sB,EAAQ,EAAy8Y,EAAz8Y,SAAmBoM,GAAI,IAAI,IAAI18B,EAAOotC,GAASW,gBAAgBrR,GAAqB,OAAjB5B,GAAGkB,MAAMh8B,GAAe,CAA2F,CAAzF,MAAM7qC,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAAgyY,GAAhkY,SAAoBhH,EAAGmX,EAAIC,EAAOqJ,EAAWC,EAAYC,GAAM,IAAI,IAA4CpjE,EAAI25D,GAArCxG,GAASW,gBAAgBrR,GAA4BmX,EAAIC,EAAOqJ,GAAgC,OAApB1oB,EAAO4oB,GAAM,GAAGpjE,EAAW,CAA2F,CAAzF,MAAM9kB,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAA+zX,EAA/kX,SAAkBhH,EAAGmX,EAAIC,EAAOuJ,GAAM,IAAI,IAA4CpjE,EAAtU,SAAiB+lB,EAAO6zC,EAAIC,EAAO18D,GAAkB,IAAV,IAAI2O,EAAI,EAAU7zB,EAAE,EAAEA,EAAE4hF,EAAO5hF,IAAI,CAAC,IAAI0hE,EAAIc,EAAQmf,GAAK,GAAO9uE,EAAI2vD,EAAQmf,EAAI,GAAG,GAAGA,GAAK,EAAE,IAAI7zB,EAAK8a,GAAGoB,KAAKl8B,EAAOs0B,EAAMV,EAAI7uD,EAAgKu4E,WAApJ,GAAGt9B,EAAK,EAAE,OAAO,EAAY,GAAVj6B,GAAKi6B,EAAQA,EAAKj7C,EAAI,KAAM,QAAOghB,CAAI,CAA0Fu3D,CAArClQ,GAASW,gBAAgBrR,GAA2BmX,EAAIC,GAA4B,OAApBrf,EAAO4oB,GAAM,GAAGpjE,EAAW,CAA2F,CAAzF,MAAM9kB,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAAg3W,GAAh3W,SAAkBhH,EAAGygB,EAAWC,EAAY3c,EAAO8c,GAAW,IAAI,IAAIv9C,EAAOotC,GAASW,gBAAgBrR,GAAmCtlD,EAAf,WAAsBgmE,GAAyBD,IAAa,GAAOK,EAAa,iBAAiB,OAAGpmE,IAASomE,GAAcpmE,GAAQomE,EAAqB,IAAG1iB,GAAGkD,OAAOh+B,EAAO5oB,EAAOqpD,GAAQhK,GAAQ,CAACz2B,EAAO4P,WAAW,GAAG4mB,GAAWx2B,EAAO4P,UAAUnkC,KAAKwb,IAAIuvC,KAAa,EAAEA,GAAW,GAA2D,EAAxD/qD,KAAKwU,KAAKxU,KAAK69B,MAAMktB,GAAW,YAAY,eAAiB,KAAK/qD,KAAKsY,MAAMyyC,OAAeA,KAAa,IAAI,cAAc,EAAE,IAAI/B,EAAO8oB,GAAW,GAAG9mB,GAAQ,GAAGhC,EAAO8oB,EAAU,GAAG,GAAG9mB,GAAQ,GAAMz2B,EAAOonC,UAAmB,IAAThwD,GAAqB,IAATqpD,IAAWzgC,EAAOonC,SAAS,MAAY,EAA2F,CAAzF,MAAMjyE,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAAmoV,EAAnoV,SAAmBhH,EAAGmX,EAAIC,EAAOuJ,GAAM,IAAI,IAA4CpjE,EAAI25D,GAArCxG,GAASW,gBAAgBrR,GAA4BmX,EAAIC,GAA4B,OAApBrf,EAAO4oB,GAAM,GAAGpjE,EAAW,CAA2F,CAAzF,MAAM9kB,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAAm6U,EAAn6U,WAAwB,OAAOnR,GAAc,EAAu4U,EAAi5mO,SAAqBx0D,EAAMorB,EAAGG,EAAGG,GAAI,IAAIg0D,EAAGC,KAAY,IAAI,OAAOC,GAAa5/E,EAAMorB,EAAGG,EAAGG,EAAgE,CAA5D,MAAMt0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA9hnO,EAAoumO,SAAqB32E,EAAMorB,EAAGG,EAAGG,GAAI,IAAIg0D,EAAGC,KAAY,IAAI,OAAOG,GAAa9/E,EAAMorB,EAAGG,EAAGG,EAAgE,CAA5D,MAAMt0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAj3mO,EAA8gnO,SAAkB32E,GAAO,IAAI0/E,EAAGC,KAAY,IAAI,OAAOI,GAAU//E,EAAmE,CAA5D,MAAM5I,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAtonO,EAA26hO,SAAmB32E,EAAMorB,GAAI,IAAIs0D,EAAGC,KAAY,IAAI,OAAO/jB,GAAW57D,EAAMorB,EAAgE,CAA5D,MAAMh0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA1iiO,EAAo+gO,SAAoB32E,EAAMorB,EAAGG,GAAI,IAAIm0D,EAAGC,KAAY,IAAI,OAAOK,GAAYhgF,EAAMorB,EAAGG,EAAgE,CAA5D,MAAMn0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA1mhO,EAAypiO,SAAqB32E,EAAMorB,EAAGG,EAAGG,GAAI,IAAIg0D,EAAGC,KAAY,IAAI,OAAOM,GAAajgF,EAAMorB,EAAGG,EAAGG,EAAgE,CAA5D,MAAMt0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAtyiO,EAAgvjO,SAAsB32E,EAAMorB,EAAGG,EAAGG,EAAGG,GAAI,IAAI6zD,EAAGC,KAAY,IAAI,OAAOO,GAAclgF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMz0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAp4jO,EAA49lO,SAAuB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAI0zD,EAAGC,KAAY,IAAI,OAAOQ,GAAengF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM50B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAvnmO,EAA6xlO,SAAuB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAI0zD,EAAGC,KAAY,IAAI,OAAOS,GAAepgF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM50B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAx7lO,EAAsllO,SAAwB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIuzD,EAAGC,KAAY,IAAI,OAAOU,GAAgBrgF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM/0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAxvlO,EAA2gkO,SAAyB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIozD,EAAGC,KAAY,IAAI,OAAOW,GAAiBtgF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMl1B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAprkO,GAAk2kO,SAA2B32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAI8yD,EAAGC,KAAY,IAAI,OAAOY,GAAmBvgF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMx1B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAxhlO,EAA4pnO,SAA6B32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAG4zD,EAAIC,GAAK,IAAIf,EAAGC,KAAY,IAAI,OAAOe,GAAqB1gF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAG4zD,EAAIC,EAAiE,CAA5D,MAAMrpF,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAr2nO,GAA4nuO,SAAuB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIuzD,EAAGC,KAAY,IAAI,OAAOgB,GAAe3gF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM/0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA5xuO,GAA47pO,SAAwB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIozD,EAAGC,KAAY,IAAI,OAAOiB,GAAgB5gF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMl1B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAnmqO,GAAqvpO,SAAuB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIuzD,EAAGC,KAAY,IAAI,OAAOkB,GAAe7gF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM/0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAr5pO,GAAkwqO,SAAoB32E,EAAMorB,EAAGG,EAAGG,GAAI,IAAIg0D,EAAGC,KAAY,IAAI,OAAOmB,GAAY9gF,EAAMorB,EAAGG,EAAGG,EAAgE,CAA5D,MAAMt0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA74qO,GAAiwtO,SAAkB32E,GAAO,IAAI0/E,EAAGC,KAAY,IAAI,OAAOoB,GAAU/gF,EAAmE,CAA5D,MAAM5I,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAx3tO,GAA25oO,SAAmB32E,EAAMorB,GAAI,IAAIs0D,EAAGC,KAAY,IAAI,OAAOqB,GAAWhhF,EAAMorB,EAAgE,CAA5D,MAAMh0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAzhpO,GAAswsO,SAAoB32E,EAAMorB,EAAGG,GAAI,IAAIm0D,EAAGC,KAAY,IAAI,OAAOsB,GAAYjhF,EAAMorB,EAAGG,EAAgE,CAA5D,MAAMn0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA34sO,GAA24sO,SAAqB32E,EAAMorB,EAAGG,EAAGG,GAAI,IAAIg0D,EAAGC,KAAY,IAAI,OAAOuB,GAAalhF,EAAMorB,EAAGG,EAAGG,EAAgE,CAA5D,MAAMt0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAvhtO,GAAgksO,SAAsB32E,EAAMorB,EAAGG,EAAGG,EAAGG,GAAI,IAAI6zD,EAAGC,KAAY,IAAI,OAAOwB,GAAcnhF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMz0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAntsO,GAAi4rO,SAAuB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAI0zD,EAAGC,KAAY,IAAI,OAAOyB,GAAephF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM50B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA3hsO,EAAmthO,SAAkB32E,GAAO,IAAI0/E,EAAGC,KAAY,IAAIjmB,GAAU15D,EAAmE,CAA5D,MAAM5I,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAp0hO,EAAi+hO,SAAmB32E,EAAMorB,GAAI,IAAIs0D,EAAGC,KAAY,IAAIhmB,GAAW35D,EAAMorB,EAAgE,CAA5D,MAAMh0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAzliO,EAAuwgO,SAAoB32E,EAAMorB,EAAGG,GAAI,IAAIm0D,EAAGC,KAAY,IAAI0B,GAAYrhF,EAAMorB,EAAGG,EAAgE,CAA5D,MAAMn0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAt4gO,EAAs4gO,SAAqB32E,EAAMorB,EAAGG,EAAGG,GAAI,IAAIg0D,EAAGC,KAAY,IAAI2B,GAAathF,EAAMorB,EAAGG,EAAGG,EAAgE,CAA5D,MAAMt0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA5ghO,EAA0jiO,SAAsB32E,EAAMorB,EAAGG,EAAGG,EAAGG,GAAI,IAAI6zD,EAAGC,KAAY,IAAI4B,GAAcvhF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMz0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAvsiO,EAAusiO,SAAuB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAI0zD,EAAGC,KAAY,IAAI6B,GAAexhF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM50B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA31iO,EAA23jO,SAAwB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIuzD,EAAGC,KAAY,IAAI8B,GAAgBzhF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM/0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAthkO,EAAirmO,SAAyB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIozD,EAAGC,KAAY,IAAI+B,GAAiB1hF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMl1B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAn1mO,GAAy9iO,SAA0B32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIizD,EAAGC,KAAY,IAAIgC,GAAkB3hF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMr1B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAjojO,EAA8hnO,SAA4B32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAG4zD,GAAK,IAAId,EAAGC,KAAY,IAAIiC,GAAoB5hF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAG4zD,EAAiE,CAA5D,MAAMppF,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAvtnO,EAAutnO,SAAiC32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAG4zD,EAAIC,EAAIoB,EAAIC,EAAIC,EAAIC,GAAK,IAAItC,EAAGC,KAAY,IAAIsC,GAAyBjiF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAG4zD,EAAIC,EAAIoB,EAAIC,EAAIC,EAAIC,EAAiE,CAA5D,MAAM5qF,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA77nO,GAAqysO,SAAuB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIuzD,EAAGC,KAAY,IAAIuC,GAAeliF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM/0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA97sO,GAA0kqO,SAA2B32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAG4zD,EAAIC,EAAIoB,EAAIC,GAAK,IAAIpC,EAAGC,KAAY,IAAIwC,GAAmBniF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAG4zD,EAAIC,EAAIoB,EAAIC,EAAiE,CAA5D,MAAM1qF,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAzxqO,GAAyxqO,SAAqB32E,EAAMorB,EAAGG,EAAGG,EAAGG,GAAI,IAAI6zD,EAAGC,KAAY,IAAIyC,GAAapiF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMz0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAp6qO,GAA2htO,SAAuB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIuzD,EAAGC,KAAY,IAAI0C,GAAeriF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM/0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAprtO,GAA+2nO,SAAyB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIizD,EAAGC,KAAY,IAAI2C,GAAiBtiF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMr1B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAthoO,GAA6qpO,SAAuB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIozD,EAAGC,KAAY,IAAI4C,GAAeviF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMl1B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA50pO,GAAgpoO,SAAqB32E,EAAMorB,EAAGG,EAAGG,EAAGG,GAAI,IAAI6zD,EAAGC,KAAY,IAAI6C,GAAaxiF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMz0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA3xoO,GAAw1qO,SAAyB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAI8yD,EAAGC,KAAY,IAAI8C,GAAiBziF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMx1B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAArgrO,GAA1imG,SAAgC13E,EAAIyjF,EAASC,EAASC,EAA0BjnE,EAAOtD,EAAKwqE,EAAY16B,GAAS,MAAM26B,EAASnrC,EAAQ,OAAkBorC,EAAWD,EAASC,WAAiBC,EAAaF,EAASE,aAAmBC,EAASH,EAASG,SAAS,OAAOlR,GAAS+B,aAAY,SAASW,GAAQuO,EAAaE,iBAAiBhnF,MAAKzJ,IAAS,IAAIojE,EAAIx9C,EAASjkB,EAAOyuF,EAAgBM,EAAK,IAAItyC,WAAWz8C,GAAQ,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAOD,IAAKgvF,EAAKhvF,GAAGy9D,EAAOkE,OAAOD,EAAIhlB,WAAWuyC,kBAAkBjvF,GAAG,IAAIkvF,GAAa,EAAMN,EAAW71B,QAAQ,CAACvxC,OAAOi6C,EAAaj6C,GAAQ1c,IAAI22D,EAAa32D,GAAKyjF,SAAS9sB,EAAa8sB,GAAUC,SAAS/sB,EAAa+sB,GAAUtqE,KAAK8qE,EAAKG,yBAAwB,EAAKC,mBAAmBP,EAAaQ,qBAAqB5tB,EAAagtB,IAA4Ba,WAAWR,EAASS,YAAY,MAAM,UAAUxnF,MAAKynF,IAAO,IAAIC,EAAQD,EAAKtrE,KAAUurE,aAAmB/yC,aAAah3C,QAAQrE,MAAM,0BAA0BqE,QAAQrE,MAAMouF,IAAS,IAAIC,EAAWD,EAAQxvF,OAAOwvF,EAAQR,kBAAsBU,EAAQlyB,EAAO+F,QAAQksB,GAAqB,IAAIhzC,WAAW+gB,EAAOkE,OAAOh1C,OAAOgjE,EAAQD,GAAiBx7C,IAAI,IAAIwI,WAAW+yC,EAAQ9iE,OAAO8iE,EAAQ9yC,WAAW+yC,IAAa,IAAIE,EAAc,CAACjjF,KAAK6iF,EAAKK,WAAW1uF,QAAQquF,EAAKM,WAAW34B,QAAQq4B,EAAKr4B,QAAQw4B,QAAQA,EAAQI,WAAWN,EAAQxvF,QAAY+vF,EAAQz5E,KAAKC,UAAUo5E,GAAmBK,EAAYxyB,EAAO0E,gBAAgB6tB,GAAS,EAAMtuB,EAAIjE,EAAO+F,QAAQysB,GAAaxyB,EAAOwE,aAAa+tB,EAAQtuB,EAAIuuB,GAAaf,GAAa,EAAK5O,EAAO5e,EAAP,IAAcjwB,OAAMlmB,IAAM,GAAG2jE,EAA0F,MAA5ExpF,QAAQrE,MAAM,yDAAyDkqB,GAAW,IAAIvsB,MAAM,yDAAyDusB,GAAK,IAAIvhB,EAAIuhB,EAAIpqB,QAAQoqB,EAAIpqB,QAAQ,GAAGoqB,EAAIvhB,EAAIuM,KAAKC,UAAU,CAACnV,MAAM2I,IAAM,IAAIimF,EAAYxyB,EAAO0E,gBAAgBn4D,GAAK,EAAM03D,EAAIjE,EAAO+F,QAAQysB,GAAaxyB,EAAOwE,aAAaj4D,EAAI03D,EAAIuuB,GAAaf,GAAa,EAAK5O,EAAO5e,EAAP,GAAh4C,IAAg5CjwB,OAAMlmB,IAAM,MAAM,IAAIvsB,MAAM,kCAAhB,GAAqD,GAAE,EAAwmiG,GAAxmiG,SAA8B8L,EAAIyjF,EAASC,EAASC,EAA0BjnE,EAAOtD,EAAK8vC,GAAS,MAAM26B,EAASnrC,EAAQ,OAAkBorC,EAAWD,EAASC,WAAiBC,EAAaF,EAASE,aAAmBC,EAASH,EAASG,SAAS,OAAOlR,GAAS+B,aAAY,SAASW,GAAQ,IAAI4O,GAAa,EAAMN,EAAW71B,QAAQ,CAACvxC,OAAOi6C,EAAaj6C,GAAQ1c,IAAI22D,EAAa32D,GAAKyjF,SAAS9sB,EAAa8sB,GAAUC,SAAS/sB,EAAa+sB,GAAUtqE,KAAKu9C,EAAav9C,GAAMirE,yBAAwB,EAAKC,mBAAmBP,EAAaQ,qBAAqB5tB,EAAagtB,IAA4Ba,WAAWR,EAASS,YAAY,MAAM,UAAUxnF,MAAKynF,IAAO,IAAII,EAAc,CAACjjF,KAAK6iF,EAAKK,WAAW1uF,QAAQquF,EAAKM,WAAW5rE,KAAKsrE,EAAKtrE,KAAKizC,QAAQq4B,EAAKr4B,SAAa64B,EAAQz5E,KAAKC,UAAUo5E,GAAmBK,EAAYxyB,EAAO0E,gBAAgB6tB,GAAS,EAAMtuB,EAAIjE,EAAO+F,QAAQysB,GAAaxyB,EAAOwE,aAAa+tB,EAAQtuB,EAAIuuB,GAAaf,GAAa,EAAK5O,EAAO5e,EAAP,IAAcjwB,OAAMlmB,IAAM,GAAG2jE,EAA0F,MAA5ExpF,QAAQrE,MAAM,yDAAyDkqB,GAAW,IAAIvsB,MAAM,yDAAyDusB,GAAK,IAAIvhB,EAAIuhB,EAAIpqB,QAAQoqB,EAAIpqB,QAAQ,GAAGoqB,EAAIvhB,EAAIuM,KAAKC,UAAU,CAACnV,MAAM2I,IAAM,IAAIimF,EAAYxyB,EAAO0E,gBAAgBn4D,GAAK,EAAM03D,EAAIjE,EAAO+F,QAAQysB,GAAaxyB,EAAOwE,aAAaj4D,EAAI03D,EAAIuuB,GAAaf,GAAa,EAAK5O,EAAO5e,EAAP,GAAc,GAAE,EAAuy/F,EAAxrW,SAA6Bt6D,GAAM,OAAOA,CAAK,EAAiqW,GAAjqW,SAAoBuF,GAAMo+E,GAASp+E,EAAM,EAAwoW,GAAxoW,WAAyB4e,EAAI,kCAAkCk1C,IAAO,EAAG,EAAklW,EAAllW,SAAsB34C,GAAKs4C,EAAYt4C,EAAK,EAAujW,GAA/mK,SAAqBoV,EAAEgzD,EAAQvtF,EAAOwtF,GAAI,OAAnqK,SAAmBjzD,EAAEgzD,EAAQvtF,EAAOwtF,GAAI,IAAIC,EAAQ7tB,EAAO4tB,EAAG,IAAI,GAAOpmF,EAAK,CAACsmF,OAAO9tB,EAAO4tB,GAAI,GAAGG,OAAO/tB,EAAO4tB,EAAG,GAAG,GAAGI,QAAQhuB,EAAO4tB,EAAG,GAAG,GAAGK,QAAQjuB,EAAO4tB,EAAG,IAAI,GAAGM,OAAOluB,EAAO4tB,EAAG,IAAI,GAAGO,QAAQnuB,EAAO4tB,EAAG,IAAI,GAAGQ,QAAQpuB,EAAO4tB,EAAG,IAAI,GAAGS,QAAQruB,EAAO4tB,EAAG,IAAI,GAAGU,SAAStuB,EAAO4tB,EAAG,IAAI,GAAGW,UAAUvuB,EAAO4tB,EAAG,IAAI,GAAGC,QAAQA,EAAQ3uB,EAAa2uB,GAAS,IAAQ7xE,EAAQkjD,EAAa9+D,GAAYouF,EAAkB,CAAC,KAAK,uBAAuB,KAAK,WAAW,KAAK,WAAW,KAAK,KAAK,KAAK,cAAc,KAAK,QAAQ,KAAK,WAAW,KAAK,WAAW,KAAK,WAAW,MAAM,KAAK,MAAM,KAAK,MAAM,WAAW,MAAM,WAAW,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,IAAI,IAAI7hF,KAAQ6hF,EAAmBxyE,EAAQA,EAAQ1M,QAAQ,IAAI5P,OAAOiN,EAAK,KAAK6hF,EAAkB7hF,IAAO,IAAI8hF,EAAS,CAAC,SAAS,SAAS,UAAU,YAAY,WAAW,SAAS,YAAgBC,EAAO,CAAC,UAAU,WAAW,QAAQ,QAAQ,MAAM,OAAO,OAAO,SAAS,YAAY,UAAU,WAAW,YAAY,SAASC,EAAiBxpF,EAAMypF,EAAOC,GAAqE,IAA1D,IAAIpnF,EAAkB,iBAAPtC,EAAgBA,EAAM2lB,WAAW3lB,GAAO,GAASsC,EAAI/J,OAAOkxF,GAAQnnF,EAAIonF,EAAU,GAAGpnF,EAAI,OAAOA,CAAI,UAASqnF,EAAa3pF,EAAMypF,GAAQ,OAAOD,EAAiBxpF,EAAMypF,EAAO,IAAK,UAASG,EAAaC,EAAMC,GAAO,SAASC,EAAI/pF,GAAO,OAAOA,EAAM,GAAG,EAAEA,EAAM,EAAE,EAAE,CAAE,KAAIo0C,EAA8K,OAA1G,KAAxDA,EAAQ21C,EAAIF,EAAMhJ,cAAciJ,EAAMjJ,iBAA2E,KAAlDzsC,EAAQ21C,EAAIF,EAAMrI,WAAWsI,EAAMtI,eAAkBptC,EAAQ21C,EAAIF,EAAM12B,UAAU22B,EAAM32B,YAAmB/e,CAAQ,UAAS41C,EAAsBC,GAAW,OAAOA,EAAU7I,UAAU,KAAK,EAAE,OAAO,IAAI76D,KAAK0jE,EAAUpJ,cAAc,EAAE,GAAG,IAAI,KAAK,EAAE,OAAOoJ,EAAU,KAAK,EAAE,OAAO,IAAI1jE,KAAK0jE,EAAUpJ,cAAc,EAAE,GAAG,KAAK,EAAE,OAAO,IAAIt6D,KAAK0jE,EAAUpJ,cAAc,EAAE,GAAG,KAAK,EAAE,OAAO,IAAIt6D,KAAK0jE,EAAUpJ,cAAc,EAAE,GAAG,KAAK,EAAE,OAAO,IAAIt6D,KAAK0jE,EAAUpJ,cAAc,EAAE,GAAG,IAAI,KAAK,EAAE,OAAO,IAAIt6D,KAAK0jE,EAAUpJ,cAAc,EAAE,GAAG,IAAK,UAASqJ,EAAiB7nF,GAAM,IAAI8nF,EAA9kF,SAAmB9nF,EAAK+nF,GAA2C,IAArC,IAAIC,EAAQ,IAAI9jE,KAAKlkB,EAAK0yC,WAAiBq1C,EAAK,GAAE,CAAC,IAAIE,EAAKnQ,GAAakQ,EAAQxJ,eAAmB0J,EAAaF,EAAQ7I,WAAegJ,GAAoBF,EAAKlQ,GAAkBC,IAAsBkQ,GAAc,KAAGH,EAAKI,EAAmBH,EAAQl3B,WAAoP,OAAxCk3B,EAAQI,QAAQJ,EAAQl3B,UAAUi3B,GAAaC,EAAhPD,GAAMI,EAAmBH,EAAQl3B,UAAU,EAAEk3B,EAAQI,QAAQ,GAAMF,EAAa,GAAIF,EAAQK,SAASH,EAAa,IAAQF,EAAQK,SAAS,GAAGL,EAAQM,YAAYN,EAAQxJ,cAAc,GAAiE,QAAOwJ,CAAQ,CAA4iEO,CAAU,IAAIrkE,KAAKlkB,EAAK2mF,QAAQ,KAAK,EAAE,GAAG3mF,EAAK6mF,SAAa2B,EAAkB,IAAItkE,KAAK4jE,EAAStJ,cAAc,EAAE,GAAOiK,EAAkB,IAAIvkE,KAAK4jE,EAAStJ,cAAc,EAAE,EAAE,GAAOkK,EAAuBf,EAAsBa,GAAuBG,EAAuBhB,EAAsBc,GAAmB,OAAGlB,EAAamB,EAAuBZ,IAAW,EAAMP,EAAaoB,EAAuBb,IAAW,EAAUA,EAAStJ,cAAc,EAAcsJ,EAAStJ,cAA2BsJ,EAAStJ,cAAc,CAAG,KAAIoK,EAAkB,CAAC,KAAK,SAAS5oF,GAAM,OAAOinF,EAASjnF,EAAK4mF,SAASx7C,UAAU,EAAE,EAAG,EAAC,KAAK,SAASprC,GAAM,OAAOinF,EAASjnF,EAAK4mF,QAAS,EAAC,KAAK,SAAS5mF,GAAM,OAAOknF,EAAOlnF,EAAK0mF,QAAQt7C,UAAU,EAAE,EAAG,EAAC,KAAK,SAASprC,GAAM,OAAOknF,EAAOlnF,EAAK0mF,OAAQ,EAAC,KAAK,SAAS1mF,GAAiC,OAAOsnF,GAAzBtnF,EAAK2mF,QAAQ,MAA8B,IAAI,EAAE,EAAG,EAAC,KAAK,SAAS3mF,GAAM,OAAOsnF,EAAatnF,EAAKymF,QAAQ,EAAG,EAAC,KAAK,SAASzmF,GAAM,OAAOmnF,EAAiBnnF,EAAKymF,QAAQ,EAAE,IAAK,EAAC,KAAK,SAASzmF,GAAM,OAAO6nF,EAAiB7nF,GAAMsjB,WAAW8nB,UAAU,EAAG,EAAC,KAAK,SAASprC,GAAM,OAAO6nF,EAAiB7nF,EAAM,EAAC,KAAK,SAASA,GAAM,OAAOsnF,EAAatnF,EAAKwmF,QAAQ,EAAG,EAAC,KAAK,SAASxmF,GAAM,IAAI6oF,EAAW7oF,EAAKwmF,QAA4E,OAArD,GAAZqC,EAAcA,EAAW,GAAWA,EAAW,KAAGA,GAAY,IAAUvB,EAAauB,EAAW,EAAG,EAAC,KAAK,SAAS7oF,GAAM,OAAOsnF,EAAatnF,EAAKymF,QAA7nI,SAAoB38E,EAAMhI,GAAiB,IAAV,IAAIgnF,EAAI,EAAU7yF,EAAE,EAAEA,GAAG6L,EAAMgnF,GAAKh/E,EAAM7T,MAAO,OAAO6yF,CAAI,CAAwiIC,CAAWjR,GAAa93E,EAAK2mF,QAAQ,MAAM5O,GAAkBC,GAAqBh4E,EAAK0mF,OAAO,GAAG,EAAG,EAAC,KAAK,SAAS1mF,GAAM,OAAOsnF,EAAatnF,EAAK0mF,OAAO,EAAE,EAAG,EAAC,KAAK,SAAS1mF,GAAM,OAAOsnF,EAAatnF,EAAKumF,OAAO,EAAG,EAAC,KAAK,WAAW,MAAM,IAAK,EAAC,KAAK,SAASvmF,GAAM,OAAGA,EAAKwmF,SAAS,GAAGxmF,EAAKwmF,QAAQ,GAAU,KAAgB,IAAM,EAAC,KAAK,SAASxmF,GAAM,OAAOsnF,EAAatnF,EAAKsmF,OAAO,EAAG,EAAC,KAAK,WAAW,MAAM,IAAK,EAAC,KAAK,SAAStmF,GAAM,OAAOA,EAAK4mF,SAAS,CAAE,EAAC,KAAK,SAAS5mF,GAAM,IAAI+nF,EAAK/nF,EAAK6mF,QAAQ,EAAE7mF,EAAK4mF,QAAQ,OAAOU,EAAa93E,KAAK69B,MAAM06C,EAAK,GAAG,EAAG,EAAC,KAAK,SAAS/nF,GAAM,IAAI+d,EAAIvO,KAAK69B,OAAOrtC,EAAK6mF,QAAQ,GAAG7mF,EAAK4mF,QAAQ,GAAG,GAAG,GAAoD,IAA7C5mF,EAAK4mF,QAAQ,IAAI5mF,EAAK6mF,QAAQ,GAAG,GAAG,GAAG9oE,IAAUA,GAA6H,GAAQ,IAALA,EAAQ,CAAC,IAAIirE,GAAMhpF,EAAK4mF,QAAQ,IAAI5mF,EAAK6mF,SAAS,EAAW,GAANmC,GAAgB,GAANA,GAAUlR,GAAa93E,EAAK2mF,WAAU5oE,EAAI,EAAE,MAAzO,CAACA,EAAI,GAAG,IAAIkrE,GAAOjpF,EAAK4mF,QAAQ,EAAE5mF,EAAK6mF,QAAQ,GAAG,GAAY,GAAPoC,GAAiB,GAAPA,GAAUnR,GAAa93E,EAAK2mF,QAAQ,IAAI,KAAI5oE,GAAO,CAAqH,OAAOupE,EAAavpE,EAAI,EAAG,EAAC,KAAK,SAAS/d,GAAM,OAAOA,EAAK4mF,OAAQ,EAAC,KAAK,SAAS5mF,GAAM,IAAI+nF,EAAK/nF,EAAK6mF,QAAQ,GAAG7mF,EAAK4mF,QAAQ,GAAG,EAAE,OAAOU,EAAa93E,KAAK69B,MAAM06C,EAAK,GAAG,EAAG,EAAC,KAAK,SAAS/nF,GAAM,OAAOA,EAAK2mF,QAAQ,MAAMrjE,WAAW8nB,UAAU,EAAG,EAAC,KAAK,SAASprC,GAAM,OAAOA,EAAK2mF,QAAQ,IAAK,EAAC,KAAK,SAAS3mF,GAAM,IAAIgoB,EAAIhoB,EAAK+mF,UAAcmC,EAAMlhE,GAAK,EAA6C,OAAtBA,GAArBA,EAAIxY,KAAKwb,IAAIhD,GAAK,IAAW,GAAG,IAAIA,EAAI,IAAUkhE,EAAM,IAAI,KAAKhmE,OAAO,OAAO8E,GAAK5uB,OAAO,EAAG,EAAC,KAAK,SAAS4G,GAAM,OAAOA,EAAKqmF,OAAQ,EAAC,KAAK,WAAW,MAAM,GAAI,GAAwC,IAAI,IAAIlhF,KAA9CqP,EAAQA,EAAQ1M,QAAQ,MAAM,QAAwB8gF,EAAsBp0E,EAAQksD,SAASv7D,KAAOqP,EAAQA,EAAQ1M,QAAQ,IAAI5P,OAAOiN,EAAK,KAAKyjF,EAAkBzjF,GAAMnF,KAA6C,IAAI+b,EAAM8kD,GAA/CrsD,EAAQA,EAAQ1M,QAAQ,QAAQ,MAA0C,GAAO,OAAGiU,EAAM7lB,OAAOiwF,EAAgB,GAAlzmG,SAA4Br8E,EAAM8Y,GAAQy1C,EAAMluB,IAAIrgC,EAAM8Y,EAAQ,CAAkvmGumE,CAAmBptE,EAAMoX,GAAUpX,EAAM7lB,OAAO,EAAE,CAAiDkzF,CAAUj2D,EAAEgzD,EAAQvtF,EAAOwtF,EAAI,EAAgjK,GAAhjK,WAAiC5kE,EAAI,0CAA0Ck1C,IAAO,EAAG,GAA8qK8G,IAA/iqG,WAAsB,IAAIrT,EAAK,CAAC,EAAIouB,IAAe,SAAS8Q,EAAgBliD,EAAS5yC,GAAQ,IAA5qE+iD,EAAgrE9iD,EAAQ2yC,EAAS3yC,QAAQA,EAAQq/E,GAASiB,sBAAsBtgF,GAASk/D,EAAM,IAAQl/D,EAAuCklE,IAA/BnD,EAAW7C,EAAM,IAAN,IAA0D9wC,QAAQs3C,GAAUxG,EAAM,IAAN,GAAt2Epc,EAAo4Eoc,EAAM,IAAN,GAAh4E0G,GAAWr0C,QAAQuxB,GAAk4EujB,IAAwC,CAAqC,SAASyuB,EAA2BjvF,GAAQgvF,EAAgBhvF,EAAM,SAAc,UAASkvF,EAAuBC,GAAU,OAApoC,WAA4B,IAAItzB,IAAa3B,GAAoBC,GAAuB,CAAC,GAAiB,mBAAPi1B,QAAoBtuB,GAAUb,IAAiB,OAAOmvB,MAAMnvB,GAAe,CAACrL,YAAY,gBAAgBjxD,MAAK,SAAS+3D,GAAU,IAAIA,EAAQ,GAAQ,KAAK,uCAAuCuE,GAAe,IAAI,OAAOvE,EAAQ,aAAkB,IAAEruB,OAAM,WAAW,OAAO0zB,GAAUd,GAAgB,IAAO,GAAG1G,EAAW,OAAO,IAAIx1D,SAAQ,SAASrK,EAAQ40D,GAAQiL,EAAU0G,IAAe,SAASvE,GAAUhiE,EAAQ,IAAI4+C,WAAWojB,GAAW,GAACpN,EAAQ,GAAI,QAAOvqD,QAAQrK,UAAUiK,MAAK,WAAW,OAAOo9D,GAAUd,GAAgB,GAAE,CAAwhBovB,GAAmB1rF,MAAK,SAAS+2D,GAAQ,OAAO0B,YAAYkzB,YAAY50B,EAAO5K,EAAM,IAAEnsD,MAAK,SAASmpC,GAAU,OAAOA,CAAS,IAAEnpC,KAAKwrF,GAAS,SAASl6C,GAAQ9tB,EAAI,0CAA0C8tB,GAAQonB,GAAMpnB,EAAQ,GAAE,CAA2lB,GAAv+BsrB,KAA0+BlH,EAAM,gBAAqB,IAAI,IAAIl/D,EAAQk/D,EAAM,gBAAoBvJ,EAAKk/B,GAAiE,OAAxCxV,GAASiB,sBAAsBtgF,EAA2G,CAAnF,MAAM0E,GAAgE,OAA7DsoB,EAAI,sDAAsDtoB,IAAU,CAAM,EAA3yBg9D,GAAqD,mBAAlCO,YAAYmzB,sBAAmC3uB,GAAUX,KAAkBa,GAAUb,KAA+B,mBAAPmvB,MAAuYF,EAAuBD,GAApYG,MAAMnvB,GAAe,CAACrL,YAAY,gBAAgBjxD,MAAK,SAAS+3D,GAAqE,OAAhDU,YAAYmzB,qBAAqB7zB,EAAS5L,GAAoBnsD,KAAKsrF,GAA2B,SAASh6C,GAAuG,OAA/F9tB,EAAI,kCAAkC8tB,GAAQ9tB,EAAI,6CAAoD+nE,EAAuBD,EAA4B,GAAE,KAAsU5hD,MAAM+rB,EAA6B,CAA4vmGo2B,GAAoCn2B,EAAM,mBAAuB,WAAW,OAA0BA,EAAM,mBAAuBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAWm5D,EAAM,MAAU,WAAW,OAAO8J,GAAM9J,EAAM,MAAUA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAAmn3Fy+E,IAAvj3FtlB,EAAM,uDAA2D,WAAW,OAA8DA,EAAM,uDAA2DA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsJm5D,EAAM,iJAAqJ,WAAW,OAAwJA,EAAM,iJAAqJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqJm5D,EAAM,gJAAoJ,WAAW,OAAuJA,EAAM,gJAAoJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsQm5D,EAAM,iQAAqQ,WAAW,OAAwQA,EAAM,iQAAqQA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiOm5D,EAAM,4NAAgO,WAAW,OAAmOA,EAAM,4NAAgOA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiJm5D,EAAM,4IAAgJ,WAAW,OAAmJA,EAAM,4IAAgJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwJm5D,EAAM,mJAAuJ,WAAW,OAA0JA,EAAM,mJAAuJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwIm5D,EAAM,mIAAuI,WAAW,OAA0IA,EAAM,mIAAuIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Jm5D,EAAM,uJAA2J,WAAW,OAA8JA,EAAM,uJAA2JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyJm5D,EAAM,oJAAwJ,WAAW,OAA2JA,EAAM,oJAAwJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoLm5D,EAAM,+KAAmL,WAAW,OAAsLA,EAAM,+KAAmLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+Im5D,EAAM,0IAA8I,WAAW,OAAiJA,EAAM,0IAA8IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqJm5D,EAAM,gJAAoJ,WAAW,OAAuJA,EAAM,gJAAoJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Jm5D,EAAM,yJAA6J,WAAW,OAAgKA,EAAM,yJAA6JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Im5D,EAAM,wIAA4I,WAAW,OAA+IA,EAAM,wIAA4IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoLm5D,EAAM,+KAAmL,WAAW,OAAsLA,EAAM,+KAAmLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+Im5D,EAAM,0IAA8I,WAAW,OAAiJA,EAAM,0IAA8IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAgPm5D,EAAM,2OAA+O,WAAW,OAAkPA,EAAM,2OAA+OA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Jm5D,EAAM,wJAA4J,WAAW,OAA+JA,EAAM,wJAA4JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsJm5D,EAAM,iJAAqJ,WAAW,OAAwJA,EAAM,iJAAqJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Jm5D,EAAM,wJAA4J,WAAW,OAA+JA,EAAM,wJAA4JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Im5D,EAAM,uIAA2I,WAAW,OAA8IA,EAAM,uIAA2IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Jm5D,EAAM,yJAA6J,WAAW,OAAgKA,EAAM,yJAA6JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmMm5D,EAAM,8LAAkM,WAAW,OAAqMA,EAAM,8LAAkMA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkLm5D,EAAM,6KAAiL,WAAW,OAAoLA,EAAM,6KAAiLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Im5D,EAAM,wIAA4I,WAAW,OAA+IA,EAAM,wIAA4IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Im5D,EAAM,uIAA2I,WAAW,OAA8IA,EAAM,uIAA2IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyKm5D,EAAM,oKAAwK,WAAW,OAA2KA,EAAM,oKAAwKA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoIm5D,EAAM,+HAAmI,WAAW,OAAsIA,EAAM,+HAAmIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+Km5D,EAAM,0KAA8K,WAAW,OAAiLA,EAAM,0KAA8KA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA0Im5D,EAAM,qIAAyI,WAAW,OAA4IA,EAAM,qIAAyIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAgJm5D,EAAM,2IAA+I,WAAW,OAAkJA,EAAM,2IAA+IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Km5D,EAAM,yKAA6K,WAAW,OAAgLA,EAAM,yKAA6KA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyIm5D,EAAM,oIAAwI,WAAW,OAA2IA,EAAM,oIAAwIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwIm5D,EAAM,mIAAuI,WAAW,OAA0IA,EAAM,mIAAuIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkLm5D,EAAM,6KAAiL,WAAW,OAAoLA,EAAM,6KAAiLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Im5D,EAAM,wIAA4I,WAAW,OAA+IA,EAAM,wIAA4IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsLm5D,EAAM,iLAAqL,WAAW,OAAwLA,EAAM,iLAAqLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiJm5D,EAAM,4IAAgJ,WAAW,OAAmJA,EAAM,4IAAgJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2Km5D,EAAM,sKAA0K,WAAW,OAA6KA,EAAM,sKAA0KA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsIm5D,EAAM,iIAAqI,WAAW,OAAwIA,EAAM,iIAAqIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA0Lm5D,EAAM,qLAAyL,WAAW,OAA4LA,EAAM,qLAAyLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2Km5D,EAAM,sKAA0K,WAAW,OAA6KA,EAAM,sKAA0KA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsIm5D,EAAM,iIAAqI,WAAW,OAAwIA,EAAM,iIAAqIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Jm5D,EAAM,yJAA6J,WAAW,OAAgKA,EAAM,yJAA6JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAgKm5D,EAAM,2JAA+J,WAAW,OAAkKA,EAAM,2JAA+JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Jm5D,EAAM,uJAA2J,WAAW,OAA8JA,EAAM,uJAA2JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiLm5D,EAAM,4KAAgL,WAAW,OAAmLA,EAAM,4KAAgLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmMm5D,EAAM,8LAAkM,WAAW,OAAqMA,EAAM,8LAAkMA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAgKm5D,EAAM,2JAA+J,WAAW,OAAkKA,EAAM,2JAA+JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Lm5D,EAAM,yLAA6L,WAAW,OAAgMA,EAAM,yLAA6LA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyJm5D,EAAM,oJAAwJ,WAAW,OAA2JA,EAAM,oJAAwJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwLm5D,EAAM,mLAAuL,WAAW,OAA0LA,EAAM,mLAAuLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsJm5D,EAAM,iJAAqJ,WAAW,OAAwJA,EAAM,iJAAqJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsIm5D,EAAM,iIAAqI,WAAW,OAAwIA,EAAM,iIAAqIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAgJm5D,EAAM,2IAA+I,WAAW,OAAkJA,EAAM,2IAA+IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwKm5D,EAAM,mKAAuK,WAAW,OAA0KA,EAAM,mKAAuKA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA0Im5D,EAAM,qIAAyI,WAAW,OAA4IA,EAAM,qIAAyIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsNm5D,EAAM,iNAAqN,WAAW,OAAwNA,EAAM,iNAAqNA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Jm5D,EAAM,yJAA6J,WAAW,OAAgKA,EAAM,yJAA6JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Lm5D,EAAM,wLAA4L,WAAW,OAA+LA,EAAM,wLAA4LA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwJm5D,EAAM,mJAAuJ,WAAW,OAA0JA,EAAM,mJAAuJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAuIm5D,EAAM,kIAAsI,WAAW,OAAyIA,EAAM,kIAAsIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Nm5D,EAAM,yNAA6N,WAAW,OAAgOA,EAAM,yNAA6NA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmNm5D,EAAM,8MAAkN,WAAW,OAAqNA,EAAM,8MAAkNA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Im5D,EAAM,yIAA6I,WAAW,OAAgJA,EAAM,yIAA6IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsJm5D,EAAM,iJAAqJ,WAAW,OAAwJA,EAAM,iJAAqJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqJm5D,EAAM,gJAAoJ,WAAW,OAAuJA,EAAM,gJAAoJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsQm5D,EAAM,iQAAqQ,WAAW,OAAwQA,EAAM,iQAAqQA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiOm5D,EAAM,4NAAgO,WAAW,OAAmOA,EAAM,4NAAgOA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiJm5D,EAAM,4IAAgJ,WAAW,OAAmJA,EAAM,4IAAgJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwJm5D,EAAM,mJAAuJ,WAAW,OAA0JA,EAAM,mJAAuJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwIm5D,EAAM,mIAAuI,WAAW,OAA0IA,EAAM,mIAAuIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Jm5D,EAAM,uJAA2J,WAAW,OAA8JA,EAAM,uJAA2JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyJm5D,EAAM,oJAAwJ,WAAW,OAA2JA,EAAM,oJAAwJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoLm5D,EAAM,+KAAmL,WAAW,OAAsLA,EAAM,+KAAmLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+Im5D,EAAM,0IAA8I,WAAW,OAAiJA,EAAM,0IAA8IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqJm5D,EAAM,gJAAoJ,WAAW,OAAuJA,EAAM,gJAAoJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Jm5D,EAAM,yJAA6J,WAAW,OAAgKA,EAAM,yJAA6JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Im5D,EAAM,wIAA4I,WAAW,OAA+IA,EAAM,wIAA4IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoLm5D,EAAM,+KAAmL,WAAW,OAAsLA,EAAM,+KAAmLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+Im5D,EAAM,0IAA8I,WAAW,OAAiJA,EAAM,0IAA8IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAgPm5D,EAAM,2OAA+O,WAAW,OAAkPA,EAAM,2OAA+OA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Jm5D,EAAM,wJAA4J,WAAW,OAA+JA,EAAM,wJAA4JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsJm5D,EAAM,iJAAqJ,WAAW,OAAwJA,EAAM,iJAAqJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Jm5D,EAAM,wJAA4J,WAAW,OAA+JA,EAAM,wJAA4JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Im5D,EAAM,uIAA2I,WAAW,OAA8IA,EAAM,uIAA2IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Jm5D,EAAM,yJAA6J,WAAW,OAAgKA,EAAM,yJAA6JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmMm5D,EAAM,8LAAkM,WAAW,OAAqMA,EAAM,8LAAkMA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkLm5D,EAAM,6KAAiL,WAAW,OAAoLA,EAAM,6KAAiLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Im5D,EAAM,wIAA4I,WAAW,OAA+IA,EAAM,wIAA4IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Im5D,EAAM,uIAA2I,WAAW,OAA8IA,EAAM,uIAA2IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyKm5D,EAAM,oKAAwK,WAAW,OAA2KA,EAAM,oKAAwKA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoIm5D,EAAM,+HAAmI,WAAW,OAAsIA,EAAM,+HAAmIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+Km5D,EAAM,0KAA8K,WAAW,OAAiLA,EAAM,0KAA8KA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA0Im5D,EAAM,qIAAyI,WAAW,OAA4IA,EAAM,qIAAyIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAgJm5D,EAAM,2IAA+I,WAAW,OAAkJA,EAAM,2IAA+IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Km5D,EAAM,yKAA6K,WAAW,OAAgLA,EAAM,yKAA6KA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyIm5D,EAAM,oIAAwI,WAAW,OAA2IA,EAAM,oIAAwIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwIm5D,EAAM,mIAAuI,WAAW,OAA0IA,EAAM,mIAAuIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkLm5D,EAAM,6KAAiL,WAAW,OAAoLA,EAAM,6KAAiLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Im5D,EAAM,wIAA4I,WAAW,OAA+IA,EAAM,wIAA4IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsLm5D,EAAM,iLAAqL,WAAW,OAAwLA,EAAM,iLAAqLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiJm5D,EAAM,4IAAgJ,WAAW,OAAmJA,EAAM,4IAAgJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2Km5D,EAAM,sKAA0K,WAAW,OAA6KA,EAAM,sKAA0KA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsIm5D,EAAM,iIAAqI,WAAW,OAAwIA,EAAM,iIAAqIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA0Lm5D,EAAM,qLAAyL,WAAW,OAA4LA,EAAM,qLAAyLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2Km5D,EAAM,sKAA0K,WAAW,OAA6KA,EAAM,sKAA0KA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsIm5D,EAAM,iIAAqI,WAAW,OAAwIA,EAAM,iIAAqIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Jm5D,EAAM,yJAA6J,WAAW,OAAgKA,EAAM,yJAA6JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAgKm5D,EAAM,2JAA+J,WAAW,OAAkKA,EAAM,2JAA+JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Jm5D,EAAM,uJAA2J,WAAW,OAA8JA,EAAM,uJAA2JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiLm5D,EAAM,4KAAgL,WAAW,OAAmLA,EAAM,4KAAgLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmMm5D,EAAM,8LAAkM,WAAW,OAAqMA,EAAM,8LAAkMA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAgKm5D,EAAM,2JAA+J,WAAW,OAAkKA,EAAM,2JAA+JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Lm5D,EAAM,yLAA6L,WAAW,OAAgMA,EAAM,yLAA6LA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyJm5D,EAAM,oJAAwJ,WAAW,OAA2JA,EAAM,oJAAwJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwLm5D,EAAM,mLAAuL,WAAW,OAA0LA,EAAM,mLAAuLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsJm5D,EAAM,iJAAqJ,WAAW,OAAwJA,EAAM,iJAAqJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsIm5D,EAAM,iIAAqI,WAAW,OAAwIA,EAAM,iIAAqIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAgJm5D,EAAM,2IAA+I,WAAW,OAAkJA,EAAM,2IAA+IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwKm5D,EAAM,mKAAuK,WAAW,OAA0KA,EAAM,mKAAuKA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA0Im5D,EAAM,qIAAyI,WAAW,OAA4IA,EAAM,qIAAyIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsNm5D,EAAM,iNAAqN,WAAW,OAAwNA,EAAM,iNAAqNA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Jm5D,EAAM,yJAA6J,WAAW,OAAgKA,EAAM,yJAA6JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Lm5D,EAAM,wLAA4L,WAAW,OAA+LA,EAAM,wLAA4LA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwJm5D,EAAM,mJAAuJ,WAAW,OAA0JA,EAAM,mJAAuJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAuIm5D,EAAM,kIAAsI,WAAW,OAAyIA,EAAM,kIAAsIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Nm5D,EAAM,yNAA6N,WAAW,OAAgOA,EAAM,yNAA6NA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmNm5D,EAAM,8MAAkN,WAAW,OAAqNA,EAAM,8MAAkNA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Im5D,EAAM,yIAA6I,WAAW,OAAgJA,EAAM,yIAA6IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAuBm5D,EAAM,kBAAsB,WAAW,OAAOslB,GAAkBtlB,EAAM,kBAAsBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAAKk/D,GAAQ/F,EAAM,QAAY,WAAW,OAAO+F,GAAQ/F,EAAM,QAAYA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+wwHu8E,IAArowHpjB,EAAM,qIAAyI,WAAW,OAA4IA,EAAM,qIAAyIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Km5D,EAAM,wKAA4K,WAAW,OAA+KA,EAAM,wKAA4KA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Im5D,EAAM,uIAA2I,WAAW,OAA8IA,EAAM,uIAA2IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Km5D,EAAM,uKAA2K,WAAW,OAA8KA,EAAM,uKAA2KA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiMm5D,EAAM,4LAAgM,WAAW,OAAmMA,EAAM,4LAAgMA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Jm5D,EAAM,uJAA2J,WAAW,OAA8JA,EAAM,uJAA2JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Jm5D,EAAM,uJAA2J,WAAW,OAA8JA,EAAM,uJAA2JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA0Jm5D,EAAM,qJAAyJ,WAAW,OAA4JA,EAAM,qJAAyJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA0Lm5D,EAAM,qLAAyL,WAAW,OAA4LA,EAAM,qLAAyLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwJm5D,EAAM,mJAAuJ,WAAW,OAA0JA,EAAM,mJAAuJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2Om5D,EAAM,sOAA0O,WAAW,OAA6OA,EAAM,sOAA0OA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqRm5D,EAAM,gRAAoR,WAAW,OAAuRA,EAAM,gRAAoRA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwKm5D,EAAM,mKAAuK,WAAW,OAA0KA,EAAM,mKAAuKA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Mm5D,EAAM,yMAA6M,WAAW,OAAgNA,EAAM,yMAA6MA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Lm5D,EAAM,wLAA4L,WAAW,OAA+LA,EAAM,wLAA4LA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Qm5D,EAAM,wQAA4Q,WAAW,OAA+QA,EAAM,wQAA4QA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2Jm5D,EAAM,sJAA0J,WAAW,OAA6JA,EAAM,sJAA0JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA0Rm5D,EAAM,qRAAyR,WAAW,OAA4RA,EAAM,qRAAyRA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmRm5D,EAAM,8QAAkR,WAAW,OAAqRA,EAAM,8QAAkRA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsKm5D,EAAM,iKAAqK,WAAW,OAAwKA,EAAM,iKAAqKA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA0Rm5D,EAAM,qRAAyR,WAAW,OAA4RA,EAAM,qRAAyRA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwQm5D,EAAM,mQAAuQ,WAAW,OAA0QA,EAAM,mQAAuQA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Om5D,EAAM,wOAA4O,WAAW,OAA+OA,EAAM,wOAA4OA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiMm5D,EAAM,4LAAgM,WAAW,OAAmMA,EAAM,4LAAgMA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Jm5D,EAAM,uJAA2J,WAAW,OAA8JA,EAAM,uJAA2JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyIm5D,EAAM,oIAAwI,WAAW,OAA2IA,EAAM,oIAAwIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAuNm5D,EAAM,kNAAsN,WAAW,OAAyNA,EAAM,kNAAsNA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Qm5D,EAAM,yQAA6Q,WAAW,OAAgRA,EAAM,yQAA6QA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Qm5D,EAAM,yQAA6Q,WAAW,OAAgRA,EAAM,yQAA6QA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmOm5D,EAAM,8NAAkO,WAAW,OAAqOA,EAAM,8NAAkOA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkNm5D,EAAM,6MAAiN,WAAW,OAAoNA,EAAM,6MAAiNA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkTm5D,EAAM,6SAAiT,WAAW,OAAoTA,EAAM,6SAAiTA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+Qm5D,EAAM,0QAA8Q,WAAW,OAAiRA,EAAM,0QAA8QA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkRm5D,EAAM,6QAAiR,WAAW,OAAoRA,EAAM,6QAAiRA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAgKm5D,EAAM,2JAA+J,WAAW,OAAkKA,EAAM,2JAA+JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmRm5D,EAAM,8QAAkR,WAAW,OAAqRA,EAAM,8QAAkRA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiPm5D,EAAM,4OAAgP,WAAW,OAAmPA,EAAM,4OAAgPA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA0Mm5D,EAAM,qMAAyM,WAAW,OAA4MA,EAAM,qMAAyMA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Pm5D,EAAM,wPAA4P,WAAW,OAA+PA,EAAM,wPAA4PA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiIm5D,EAAM,4HAAgI,WAAW,OAAmIA,EAAM,4HAAgIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoKm5D,EAAM,+JAAmK,WAAW,OAAsKA,EAAM,+JAAmKA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+Hm5D,EAAM,0HAA8H,WAAW,OAAiIA,EAAM,0HAA8HA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmIm5D,EAAM,8HAAkI,WAAW,OAAqIA,EAAM,8HAAkIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmKm5D,EAAM,8JAAkK,WAAW,OAAqKA,EAAM,8JAAkKA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwLm5D,EAAM,mLAAuL,WAAW,OAA0LA,EAAM,mLAAuLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmJm5D,EAAM,8IAAkJ,WAAW,OAAqJA,EAAM,8IAAkJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Im5D,EAAM,uIAA2I,WAAW,OAA8IA,EAAM,uIAA2IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Pm5D,EAAM,wPAA4P,WAAW,OAA+PA,EAAM,wPAA4PA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwNm5D,EAAM,mNAAuN,WAAW,OAA0NA,EAAM,mNAAuNA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwIm5D,EAAM,mIAAuI,WAAW,OAA0IA,EAAM,mIAAuIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+Im5D,EAAM,0IAA8I,WAAW,OAAiJA,EAAM,0IAA8IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmJm5D,EAAM,8IAAkJ,WAAW,OAAqJA,EAAM,8IAAkJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAgJm5D,EAAM,2IAA+I,WAAW,OAAkJA,EAAM,2IAA+IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2Km5D,EAAM,sKAA0K,WAAW,OAA6KA,EAAM,sKAA0KA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsIm5D,EAAM,iIAAqI,WAAW,OAAwIA,EAAM,iIAAqIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Im5D,EAAM,uIAA2I,WAAW,OAA8IA,EAAM,uIAA2IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqJm5D,EAAM,gJAAoJ,WAAW,OAAuJA,EAAM,gJAAoJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2Km5D,EAAM,sKAA0K,WAAW,OAA6KA,EAAM,sKAA0KA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsIm5D,EAAM,iIAAqI,WAAW,OAAwIA,EAAM,iIAAqIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAuOm5D,EAAM,kOAAsO,WAAW,OAAyOA,EAAM,kOAAsOA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoJm5D,EAAM,+IAAmJ,WAAW,OAAsJA,EAAM,+IAAmJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Im5D,EAAM,wIAA4I,WAAW,OAA+IA,EAAM,wIAA4IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoJm5D,EAAM,+IAAmJ,WAAW,OAAsJA,EAAM,+IAAmJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmIm5D,EAAM,8HAAkI,WAAW,OAAqIA,EAAM,8HAAkIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqJm5D,EAAM,gJAAoJ,WAAW,OAAuJA,EAAM,gJAAoJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA0Lm5D,EAAM,qLAAyL,WAAW,OAA4LA,EAAM,qLAAyLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyKm5D,EAAM,oKAAwK,WAAW,OAA2KA,EAAM,oKAAwKA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoIm5D,EAAM,+HAAmI,WAAW,OAAsIA,EAAM,+HAAmIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmIm5D,EAAM,8HAAkI,WAAW,OAAqIA,EAAM,8HAAkIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsKm5D,EAAM,iKAAqK,WAAW,OAAwKA,EAAM,iKAAqKA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiIm5D,EAAM,4HAAgI,WAAW,OAAmIA,EAAM,4HAAgIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAuIm5D,EAAM,kIAAsI,WAAW,OAAyIA,EAAM,kIAAsIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqKm5D,EAAM,gKAAoK,WAAW,OAAuKA,EAAM,gKAAoKA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAgIm5D,EAAM,2HAA+H,WAAW,OAAkIA,EAAM,2HAA+HA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+Hm5D,EAAM,0HAA8H,WAAW,OAAiIA,EAAM,0HAA8HA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2Hm5D,EAAM,sHAA0H,WAAW,OAA6HA,EAAM,sHAA0HA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyKm5D,EAAM,oKAAwK,WAAW,OAA2KA,EAAM,oKAAwKA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoIm5D,EAAM,+HAAmI,WAAW,OAAsIA,EAAM,+HAAmIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Km5D,EAAM,wKAA4K,WAAW,OAA+KA,EAAM,wKAA4KA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwIm5D,EAAM,mIAAuI,WAAW,OAA0IA,EAAM,mIAAuIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkKm5D,EAAM,6JAAiK,WAAW,OAAoKA,EAAM,6JAAiKA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Hm5D,EAAM,wHAA4H,WAAW,OAA+HA,EAAM,wHAA4HA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiLm5D,EAAM,4KAAgL,WAAW,OAAmLA,EAAM,4KAAgLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAgKm5D,EAAM,2JAA+J,WAAW,OAAkKA,EAAM,2JAA+JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkKm5D,EAAM,6JAAiK,WAAW,OAAoKA,EAAM,6JAAiKA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Hm5D,EAAM,wHAA4H,WAAW,OAA+HA,EAAM,wHAA4HA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmJm5D,EAAM,8IAAkJ,WAAW,OAAqJA,EAAM,8IAAkJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoIm5D,EAAM,+HAAmI,WAAW,OAAsIA,EAAM,+HAAmIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiJm5D,EAAM,4IAAgJ,WAAW,OAAmJA,EAAM,4IAAgJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqLm5D,EAAM,gLAAoL,WAAW,OAAuLA,EAAM,gLAAoLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAgJm5D,EAAM,2IAA+I,WAAW,OAAkJA,EAAM,2IAA+IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwLm5D,EAAM,mLAAuL,WAAW,OAA0LA,EAAM,mLAAuLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmJm5D,EAAM,8IAAkJ,WAAW,OAAqJA,EAAM,8IAAkJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyKm5D,EAAM,oKAAwK,WAAW,OAA2KA,EAAM,oKAAwKA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiLm5D,EAAM,4KAAgL,WAAW,OAAmLA,EAAM,4KAAgLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+Im5D,EAAM,0IAA8I,WAAW,OAAiJA,EAAM,0IAA8IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAuJm5D,EAAM,kJAAsJ,WAAW,OAAyJA,EAAM,kJAAsJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkOm5D,EAAM,6NAAiO,WAAW,OAAoOA,EAAM,6NAAiOA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Qm5D,EAAM,uQAA2Q,WAAW,OAA8QA,EAAM,uQAA2QA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+Jm5D,EAAM,0JAA8J,WAAW,OAAiKA,EAAM,0JAA8JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA0Lm5D,EAAM,qLAAyL,WAAW,OAA4LA,EAAM,qLAAyLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqJm5D,EAAM,gJAAoJ,WAAW,OAAuJA,EAAM,gJAAoJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+Jm5D,EAAM,0JAA8J,WAAW,OAAiKA,EAAM,0JAA8JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqMm5D,EAAM,gMAAoM,WAAW,OAAuMA,EAAM,gMAAoMA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoLm5D,EAAM,+KAAmL,WAAW,OAAsLA,EAAM,+KAAmLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoQm5D,EAAM,+PAAmQ,WAAW,OAAsQA,EAAM,+PAAmQA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkJm5D,EAAM,6IAAiJ,WAAW,OAAoJA,EAAM,6IAAiJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiRm5D,EAAM,4QAAgR,WAAW,OAAmRA,EAAM,4QAAgRA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwKm5D,EAAM,mKAAuK,WAAW,OAA0KA,EAAM,mKAAuKA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA0Qm5D,EAAM,qQAAyQ,WAAW,OAA4QA,EAAM,qQAAyQA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Jm5D,EAAM,wJAA4J,WAAW,OAA+JA,EAAM,wJAA4JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiRm5D,EAAM,4QAAgR,WAAW,OAAmRA,EAAM,4QAAgRA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+Pm5D,EAAM,0PAA8P,WAAW,OAAiQA,EAAM,0PAA8PA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoOm5D,EAAM,+NAAmO,WAAW,OAAsOA,EAAM,+NAAmOA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwLm5D,EAAM,mLAAuL,WAAW,OAA0LA,EAAM,mLAAuLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmJm5D,EAAM,8IAAkJ,WAAW,OAAqJA,EAAM,8IAAkJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAgIm5D,EAAM,2HAA+H,WAAW,OAAkIA,EAAM,2HAA+HA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Mm5D,EAAM,yMAA6M,WAAW,OAAgNA,EAAM,yMAA6MA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqQm5D,EAAM,gQAAoQ,WAAW,OAAuQA,EAAM,gQAAoQA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqQm5D,EAAM,gQAAoQ,WAAW,OAAuQA,EAAM,gQAAoQA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA0Nm5D,EAAM,qNAAyN,WAAW,OAA4NA,EAAM,qNAAyNA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyMm5D,EAAM,oMAAwM,WAAW,OAA2MA,EAAM,oMAAwMA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAySm5D,EAAM,oSAAwS,WAAW,OAA2SA,EAAM,oSAAwSA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Mm5D,EAAM,wMAA4M,WAAW,OAA+MA,EAAM,wMAA4MA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsQm5D,EAAM,iQAAqQ,WAAW,OAAwQA,EAAM,iQAAqQA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyQm5D,EAAM,oQAAwQ,WAAW,OAA2QA,EAAM,oQAAwQA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAuJm5D,EAAM,kJAAsJ,WAAW,OAAyJA,EAAM,kJAAsJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA0Qm5D,EAAM,qQAAyQ,WAAW,OAA4QA,EAAM,qQAAyQA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwOm5D,EAAM,mOAAuO,WAAW,OAA0OA,EAAM,mOAAuOA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiMm5D,EAAM,4LAAgM,WAAW,OAAmMA,EAAM,4LAAgMA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoPm5D,EAAM,+OAAmP,WAAW,OAAsPA,EAAM,+OAAmPA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2Jm5D,EAAM,sJAA0J,WAAW,OAA6JA,EAAM,sJAA0JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqMm5D,EAAM,gMAAoM,WAAW,OAAuMA,EAAM,gMAAoMA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Mm5D,EAAM,yMAA6M,WAAW,OAAgNA,EAAM,yMAA6MA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyJm5D,EAAM,oJAAwJ,WAAW,OAA2JA,EAAM,oJAAwJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2Lm5D,EAAM,sLAA0L,WAAW,OAA6LA,EAAM,sLAA0LA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkLm5D,EAAM,6KAAiL,WAAW,OAAoLA,EAAM,6KAAiLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2Jm5D,EAAM,sJAA0J,WAAW,OAA6JA,EAAM,sJAA0JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoMm5D,EAAM,+LAAmM,WAAW,OAAsMA,EAAM,+LAAmMA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+Jm5D,EAAM,0JAA8J,WAAW,OAAiKA,EAAM,0JAA8JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Pm5D,EAAM,wPAA4P,WAAW,OAA+PA,EAAM,wPAA4PA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkNm5D,EAAM,6MAAiN,WAAW,OAAoNA,EAAM,6MAAiNA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Lm5D,EAAM,yLAA6L,WAAW,OAAgMA,EAAM,yLAA6LA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyJm5D,EAAM,oJAAwJ,WAAW,OAA2JA,EAAM,oJAAwJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiMm5D,EAAM,4LAAgM,WAAW,OAAmMA,EAAM,4LAAgMA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Jm5D,EAAM,uJAA2J,WAAW,OAA8JA,EAAM,uJAA2JA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA0Im5D,EAAM,qIAAyI,WAAW,OAA4IA,EAAM,qIAAyIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Im5D,EAAM,wIAA4I,WAAW,OAA+IA,EAAM,wIAA4IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+Im5D,EAAM,0IAA8I,WAAW,OAAiJA,EAAM,0IAA8IA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwLm5D,EAAM,mLAAuL,WAAW,OAA0LA,EAAM,mLAAuLA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmJm5D,EAAM,8IAAkJ,WAAW,OAAqJA,EAAM,8IAAkJA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6Km5D,EAAM,wKAA4K,WAAW,OAA+KA,EAAM,wKAA4KA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAwIm5D,EAAM,mIAAuI,WAAW,OAA0IA,EAAM,mIAAuIA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoBm5D,EAAM,eAAmB,WAAW,OAAOojB,GAAepjB,EAAM,eAAmBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAA2QuqE,IAA1NpR,EAAM,4CAAgD,WAAW,OAAmDA,EAAM,4CAAgDA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkCm5D,EAAM,6BAAiC,WAAW,OAAOoR,GAA6BpR,EAAM,6BAAiCA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAAKk+E,GAAU/kB,EAAM,UAAc,WAAW,OAAO+kB,GAAU/kB,EAAM,UAAcA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKknF,GAAU/tB,EAAM,UAAc,WAAW,OAAO+tB,GAAU/tB,EAAM,UAAcA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKonF,GAAajuB,EAAM,aAAiB,WAAW,OAAOiuB,GAAajuB,EAAM,aAAiBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKw+E,GAAiBrlB,EAAM,iBAAqB,WAAW,OAAOqlB,GAAiBrlB,EAAM,iBAAqBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAK8iE,GAAuB3J,EAAM,uBAA2B,WAAW,OAAO2J,GAAuB3J,EAAM,uBAA2BA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKmjE,GAAWhK,EAAM,WAAe,WAAW,OAAOgK,GAAWhK,EAAM,WAAeA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKkhE,GAAW/H,EAAM,WAAe,WAAW,OAAO+H,GAAW/H,EAAM,WAAeA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKunF,GAAYpuB,EAAM,YAAgB,WAAW,OAAOouB,GAAYpuB,EAAM,YAAgBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAK4oF,GAAYzvB,EAAM,YAAgB,WAAW,OAAOyvB,GAAYzvB,EAAM,YAAgBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKihE,GAAU9H,EAAM,UAAc,WAAW,OAAO8H,GAAU9H,EAAM,UAAcA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAK+oF,GAAe5vB,EAAM,eAAmB,WAAW,OAAO4vB,GAAe5vB,EAAM,eAAmBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKqoF,GAAYlvB,EAAM,YAAgB,WAAW,OAAOkvB,GAAYlvB,EAAM,YAAgBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2cuoF,IAArbpvB,EAAM,iBAAqB,WAAW,OAAwBA,EAAM,iBAAqBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqBm5D,EAAM,gBAAoB,WAAW,OAAuBA,EAAM,gBAAoBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqBm5D,EAAM,gBAAoB,WAAW,OAAuBA,EAAM,gBAAoBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAgBm5D,EAAM,WAAe,WAAW,OAAOovB,GAAWpvB,EAAM,WAAeA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAAK6oF,GAAa1vB,EAAM,aAAiB,WAAW,OAAO0vB,GAAa1vB,EAAM,aAAiBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKwnF,GAAaruB,EAAM,aAAiB,WAAW,OAAOquB,GAAaruB,EAAM,aAAiBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKynF,GAActuB,EAAM,cAAkB,WAAW,OAAOsuB,GAActuB,EAAM,cAAkBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAK6pF,GAAiB1wB,EAAM,iBAAqB,WAAW,OAAO0wB,GAAiB1wB,EAAM,iBAAqBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAK8oF,GAAc3vB,EAAM,cAAkB,WAAW,OAAO2vB,GAAc3vB,EAAM,cAAkBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2I0oF,IAA1HvvB,EAAM,YAAgB,WAAW,OAAmBA,EAAM,YAAgBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmBm5D,EAAM,cAAkB,WAAW,OAAOuvB,GAAcvvB,EAAM,cAAkBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAAK2pF,GAAaxwB,EAAM,aAAiB,WAAW,OAAOwwB,GAAaxwB,EAAM,aAAiBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmJwoF,IAAhIrvB,EAAM,cAAkB,WAAW,OAAqBA,EAAM,cAAkBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiBm5D,EAAM,YAAgB,WAAW,OAAOqvB,GAAYrvB,EAAM,YAAgBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAAKyoF,GAAatvB,EAAM,aAAiB,WAAW,OAAOsvB,GAAatvB,EAAM,aAAiBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKgpF,GAAgB7vB,EAAM,gBAAoB,WAAW,OAAO6vB,GAAgB7vB,EAAM,gBAAoBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKypF,GAAetwB,EAAM,eAAmB,WAAW,OAAOswB,GAAetwB,EAAM,eAAmBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyT2nF,IAApSxuB,EAAM,gBAAoB,WAAW,OAAuBA,EAAM,gBAAoBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAuBm5D,EAAM,kBAAsB,WAAW,OAAyBA,EAAM,kBAAsBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoBm5D,EAAM,eAAmB,WAAW,OAAOwuB,GAAexuB,EAAM,eAAmBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAAqS+pF,IAAhR5wB,EAAM,gBAAoB,WAAW,OAAuBA,EAAM,gBAAoBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkBm5D,EAAM,aAAiB,WAAW,OAAoBA,EAAM,aAAiBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkBm5D,EAAM,aAAiB,WAAW,OAAO4wB,GAAa5wB,EAAM,aAAiBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAA6TgqF,IAArS7wB,EAAM,mBAAuB,WAAW,OAA0BA,EAAM,mBAAuBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqBm5D,EAAM,gBAAoB,WAAW,OAAuBA,EAAM,gBAAoBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsBm5D,EAAM,iBAAqB,WAAW,OAAO6wB,GAAiB7wB,EAAM,iBAAqBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAAiS4pF,IAA9QzwB,EAAM,cAAkB,WAAW,OAAqBA,EAAM,cAAkBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmBm5D,EAAM,cAAkB,WAAW,OAAqBA,EAAM,cAAkBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoBm5D,EAAM,eAAmB,WAAW,OAAOywB,GAAezwB,EAAM,eAAmBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAAKkpF,GAAkB/vB,EAAM,kBAAsB,WAAW,OAAO+vB,GAAkB/vB,EAAM,kBAAsBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAK6nF,GAAiB1uB,EAAM,iBAAqB,WAAW,OAAO0uB,GAAiB1uB,EAAM,iBAAqBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKooF,GAAejvB,EAAM,eAAmB,WAAW,OAAOivB,GAAejvB,EAAM,eAAmBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKmoF,GAAgBhvB,EAAM,gBAAoB,WAAW,OAAOgvB,GAAgBhvB,EAAM,gBAAoBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAK8pF,GAAe3wB,EAAM,eAAmB,WAAW,OAAO2wB,GAAe3wB,EAAM,eAAmBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAK0pF,GAAmBvwB,EAAM,mBAAuB,WAAW,OAAOuwB,GAAmBvwB,EAAM,mBAAuBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAK2oF,GAAexvB,EAAM,eAAmB,WAAW,OAAOwvB,GAAexvB,EAAM,eAAmBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAK8nF,GAAmB3uB,EAAM,mBAAuB,WAAW,OAAO2uB,GAAmB3uB,EAAM,mBAAuBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAK4nF,GAAgBzuB,EAAM,gBAAoB,WAAW,OAAOyuB,GAAgBzuB,EAAM,gBAAoBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAuKmpF,IAA/IhwB,EAAM,mBAAuB,WAAW,OAA0BA,EAAM,mBAAuBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyBm5D,EAAM,oBAAwB,WAAW,OAAOgwB,GAAoBhwB,EAAM,oBAAwBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAAKipF,GAAiB9vB,EAAM,iBAAqB,WAAW,OAAO8vB,GAAiB9vB,EAAM,iBAAqBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA6mBsoF,IAA1lBnvB,EAAM,cAAkB,WAAW,OAAqBA,EAAM,cAAkBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA8Bm5D,EAAM,yBAA6B,WAAW,OAAgCA,EAAM,yBAA6BA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkBm5D,EAAM,aAAiB,WAAW,OAAoBA,EAAM,aAAiBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAqBm5D,EAAM,gBAAoB,WAAW,OAAuBA,EAAM,gBAAoBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAem5D,EAAM,UAAc,WAAW,OAAOmvB,GAAUnvB,EAAM,UAAcA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAAKkoF,GAAe/uB,EAAM,eAAmB,WAAW,OAAO+uB,GAAe/uB,EAAM,eAAmBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAK0nF,GAAevuB,EAAM,eAAmB,WAAW,OAAOuuB,GAAevuB,EAAM,eAAmBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAyVqnF,IAAhUluB,EAAM,oBAAwB,WAAW,OAA2BA,EAAM,oBAAwBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2Bm5D,EAAM,sBAA0B,WAAW,OAA6BA,EAAM,sBAA0BA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkBm5D,EAAM,aAAiB,WAAW,OAAOkuB,GAAaluB,EAAM,aAAiBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAAKmnF,GAAahuB,EAAM,aAAiB,WAAW,OAAOguB,GAAahuB,EAAM,aAAiBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKsnF,GAAUnuB,EAAM,UAAc,WAAW,OAAOmuB,GAAUnuB,EAAM,UAAcA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKioF,GAAqB9uB,EAAM,qBAAyB,WAAW,OAAO8uB,GAAqB9uB,EAAM,qBAAyBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKwpF,GAAyBrwB,EAAM,yBAA6B,WAAW,OAAOqwB,GAAyBrwB,EAAM,yBAA6BA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAstQ,SAAS86D,GAAWhB,GAAQt/D,KAAK4D,KAAK,aAAa5D,KAAKqC,QAAQ,gCAAgCi9D,EAAO,IAAIt/D,KAAKs/D,OAAOA,CAAO,CAA8G,SAAS5V,GAAI7hC,GAA+F,SAASktE,IAAWxR,KAAiBA,IAAU,EAAK5kB,EAAM,WAAc,EAAQkD,IAAxm9UlD,EAAM,UAAemL,GAAG9B,KAAKyI,aAAY3G,GAAG9B,OAAO8B,GAAG4G,mBAAkB,EAAMtG,GAAIpC,OAAOzB,GAAqBlB,IAAqh9U5G,EAAoBE,GAAWA,EAAM,sBAAyBA,EAAM,uBAA7k9U,WAAmB,GAAGA,EAAM,QAA2F,IAAjD,mBAAnBA,EAAM,UAAwBA,EAAM,QAAY,CAACA,EAAM,UAAmBA,EAAM,QAAYx9D,QAA2MohD,EAAtLoc,EAAM,QAAY98B,QAAwKyjC,GAAct0C,QAAQuxB,GAAhD,IAAsBA,EAA1JgkB,GAAqBjB,GAAe,CAAo48U0vB,IAAU,CAA7SntE,EAAKA,GAAMs3C,EAAcuG,GAAgB,IAAtv9U,WAAkB,GAAG/G,EAAM,OAAuF,IAA/C,mBAAlBA,EAAM,SAAuBA,EAAM,OAAW,CAACA,EAAM,SAAkBA,EAAM,OAAWx9D,QAAwfohD,EAApeoc,EAAM,OAAW98B,QAAudujC,GAAap0C,QAAQuxB,GAA9C,IAAqBA,EAAzcgkB,GAAqBnB,GAAc,CAAqi9U6vB,GAAYvvB,GAAgB,IAAiO/G,EAAM,WAAeA,EAAM,UAAc,cAAcpd,YAAW,WAAWA,YAAW,WAAWod,EAAM,UAAc,GAAI,GAAC,GAAGo2B,GAAQ,GAAC,IAAQA,KAAS,CAAoF,SAAS9I,GAASp+E,GAAM+zD,EAAW/zD,EAASwyD,OAAuB1B,EAAM,QAAWA,EAAM,OAAW9wD,GAAMg0D,GAAM,GAAKxC,EAAMxxD,EAAK,IAAIyyD,GAAWzyD,GAAO,IAApnS8wD,EAAM,gBAAoB,WAAW,OAAuBA,EAAM,gBAAoBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsBm5D,EAAM,iBAAqB,WAAW,OAAwBA,EAAM,iBAAqBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Bm5D,EAAM,uBAA2B,WAAW,OAA8BA,EAAM,uBAA2BA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2Bm5D,EAAM,sBAA0B,WAAW,OAA6BA,EAAM,sBAA0BA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA4Bm5D,EAAM,uBAA2B,WAAW,OAA8BA,EAAM,uBAA2BA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2Bm5D,EAAM,sBAA0B,WAAW,OAA6BA,EAAM,sBAA0BA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAs/Nm5D,EAAM,aAAiBgE,EAAahE,EAAM,aAAiBwE,EAAaxE,EAAM,gBAAoB0E,EAAgB1E,EAAM,YAAl8nV,SAAqB/vB,EAAK8yC,GAAiG,GAAxFxgB,IAAqBA,EAAoB,IAAIg0B,QAApO,SAAwB9uE,EAAOxT,GAAO,IAAI,IAAI1R,EAA6M,EAApMA,EAAoM,EAA3L0R,EAAM1R,IAAI,CAAC,IAAIyR,GAAizbwiF,EAA1xbj0F,EAA0ybikE,GAAU3gE,IAAI2wF,IAAlzbxiF,GAAMuuD,EAAoB9rB,IAAIziC,EAAKzR,EAAI,CAAktb,IAA2Bi0F,CAA5ub,CAAwFC,CAAe,EAAEjwB,GAAUhkE,SAAW+/D,EAAoB/rB,IAAIvG,GAAO,OAAOsyB,EAAoB18D,IAAIoqC,GAAM,IAAI7Z,EAAjlB,WAA6B,GAAGqsC,EAAiBjgE,OAAQ,OAAOigE,EAAiB7mD,MAAM,IAAI4qD,GAAUmd,KAAK,EAAmH,CAAhH,MAAM71D,GAAK,KAAKA,aAAeguB,YAAa,MAAMhuB,EAAI,KAAK,oDAAqD,QAAO04C,GAAUhkE,OAAO,CAAE,CAA8Vk0F,GAAoB,IAAI1uB,GAAkB5xC,EAAI6Z,EAAwI,CAAlI,MAAMniB,GAAK,KAAKA,aAAekc,WAAY,MAAMlc,EAAI,IAAI6oE,EAA/uD,SAAiC1mD,EAAK8yC,GAAK,GAAgC,mBAAtBhgB,YAAYvyD,SAAqB,CAA6H,IAA5H,IAAIomF,EAAU,CAAC,EAAI,MAAM,EAAI,MAAM,EAAI,MAAM,EAAI,OAAWjtF,EAAK,CAACktF,WAAW,GAAGpuC,QAAgB,KAARs6B,EAAI,GAAQ,GAAG,CAAC6T,EAAU7T,EAAI,MAAcxgF,EAAE,EAAEA,EAAEwgF,EAAIvgF,SAASD,EAAGoH,EAAKktF,WAAW/hF,KAAK8hF,EAAU7T,EAAIxgF,KAAK,OAAO,IAAIwgE,YAAYvyD,SAAS7G,EAAKsmC,EAAM,KAAI6mD,EAAY,CAAC,EAAE,IAAQC,EAAOhU,EAAIr9E,MAAM,EAAE,GAAOsxF,EAASjU,EAAIr9E,MAAM,GAAOuxF,EAAU,CAAC,EAAI,IAAI,EAAI,IAAI,EAAI,IAAI,EAAI,KAAoE,IAA/DH,EAAYA,EAAY7hF,OAAOqtD,EAAc00B,EAASx0F,SAAiBD,EAAE,EAAEA,EAAEy0F,EAASx0F,SAASD,EAAGu0F,EAAYhiF,KAAKmiF,EAAUD,EAASz0F,KAAgB,KAARw0F,EAAaD,EAAYhiF,KAAK,GAAQgiF,EAAYA,EAAY7hF,OAAO,CAAC,EAAEgiF,EAAUF,KAAUD,EAAY,CAAC,GAAG7hF,OAAOqtD,EAAcw0B,EAAYt0F,QAAQs0F,GAAa,IAAIzuE,EAAM,IAAI42B,WAAW,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,GAAGhqC,OAAO6hF,EAAY,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAASj2F,EAAO,IAAIkiE,YAAY/C,OAAO33C,GAA4G,OAAxF,IAAI06C,YAAYm0B,SAASr2F,EAAO,CAAC,EAAI,CAAC,EAAIovC,KAAiCnvC,QAAT,CAAyC,CAA0vBq2F,CAAwBlnD,EAAK8yC,GAAK/a,GAAkB5xC,EAAIugE,EAAS,CAAkC,OAAlCp0B,EAAoB9rB,IAAIxG,EAAK7Z,GAAYA,CAAI,EAAijnV4pC,EAAM,YAAgB4C,EAAY5C,EAAM,iBAAzi1O,SAA0B5pD,GAAkB,IAAX,IAAIggB,EAAI,GAAW7zB,EAAE,EAAEA,EAAE6T,EAAM5T,OAAOD,IAAI,CAAC,IAAI60F,EAAIhhF,EAAM7T,GAAM60F,EAAI,MAA6HA,GAAK,KAAIhhE,EAAIthB,KAAK0a,OAAOC,aAAa2nE,GAAM,QAAOhhE,EAAInkB,KAAK,GAAI,EAA070Og1D,GAAsB,SAASowB,IAAgBzS,IAAU75B,KAAU65B,KAAU3d,GAAsBowB,EAAU,EAA6dr3B,EAAM,IAAQjV,GAAgOiV,EAAM,QAA2F,IAAjD,mBAAnBA,EAAM,UAAwBA,EAAM,QAAY,CAACA,EAAM,UAAmBA,EAAM,QAAYx9D,OAAO,GAAGw9D,EAAM,QAAYpkD,KAAlBokD,GAGl4zV,OAH65zVjV,KAGt5zV2U,EAAkB43B,KAC1B,GAICz2F,EAAOC,QAAU4+D,uBCdbD,+BADFC,GAEqCD,GADnCA,EAAiC,oBAAbE,UAA4BA,SAASC,cAAgBD,SAASC,cAAcC,SAAM59D,gBAG5G,SAASy9D,GAGT,IAA0EI,EAAoBC,EAA1FC,OAAiC,KAFnCN,EAAoBA,GAAqB,CAAC,GAEKA,EAAkB,CAAC,EAA6CM,EAAM,MAAU,IAAIt1D,SAAQ,SAASrK,EAAQ40D,GAAQ6K,EAAoBz/D,EAAQ0/D,EAAmB9K,CAAO,IAAE,IAA8gBgL,EAAMC,EAAUC,EAAmJC,EAAOC,EAAaC,EAAjsBC,EAAgBl1D,OAAOumC,OAAO,CAAC,EAAEouB,GAAYQ,EAAW,GAAOC,EAAY,iBAAqBC,EAAM,CAACC,EAAOC,KAAW,MAAMA,CAAN,EAAmBC,EAAkC,iBAARztC,OAAqB0tC,EAA4C,mBAAfC,cAA8BC,EAAoC,iBAATvwB,GAA4C,iBAAlBA,EAAQwwB,UAAkD,iBAAvBxwB,EAAQwwB,SAAS50C,KAAmB60C,EAAgB,GAAgVF,GAA+CE,EAAvBJ,EAAuC/a,EAAAA,OAAAA,QAAwBmb,GAAiB,IAAyBC,KAAcb,EAAe,KAASD,IAAUD,EAAGra,EAAQ,OAAMsa,EAASta,EAAQ,OAAQ,EAAGka,EAAM,SAAoBmB,EAASC,GAAiE,OAAzDf,IAAgBc,EAASf,EAAQ,UAAce,GAAiBhB,EAAGkB,aAAaF,EAASC,OAAOp/D,EAAU,OAAQ,EAACk+D,EAAYiB,IAAW,IAAIhrC,EAAI6pC,EAAMmB,GAAS,GAA8C,OAApChrC,EAAIlH,SAAQkH,EAAI,IAAI6oB,WAAW7oB,IAAYA,CAAP,EAAa8pC,EAAW,CAACkB,EAASG,EAAOC,KAAWlB,IAAgBc,EAASf,EAAQ,UAAce,GAAUhB,EAAGqB,SAASL,GAAS,SAAStzC,EAAI3sB,GAAS2sB,EAAI0zC,EAAQ1zC,GAAUyzC,EAAOpgE,EAAK+tB,OAAQ,GAArF,EAA4FuhB,EAAO,KAASjuC,OAAO,IAAGi+D,EAAYhwB,EAAO,KAAS,GAAGr8B,QAAQ,MAAM,MAAKosD,EAAW/vB,EAAO,KAAS/qC,MAAM,GAAG+qC,EAAO,GAAO,sBAAqB,SAASmL,GAAQ,MAAMA,CAAO,IAAE8kB,EAAO,CAACC,EAAOC,KAAW,GAAGc,KAA+C,MAA3BjxB,EAAO,SAAakwB,EAAaC,EAApkC,IAA4Bp7D,KAAmkCo7D,aAAhjCe,IAA8B7zC,EAAI,6BAANtoB,GAA6hCirC,EAAO,KAASkwB,EAAhB,EAA0BX,EAAM,QAAY,WAAW,MAAM,4BAA6B,IAASa,GAAoBC,KAA0BA,EAAuBI,EAAgB79D,KAAKu+D,SAASC,KAA8B,oBAAVlC,UAAuBA,SAASC,gBAAesB,EAAgBvB,SAASC,cAAcC,KAAOJ,IAAYyB,EAAgBzB,GAAoDyB,EAAH,IAAnCA,EAAgBvhD,QAAQ,SAA8BuhD,EAAgBvlB,OAAO,EAAEulB,EAAgB9sD,QAAQ,SAAS,IAAI0tD,YAAY,KAAK,GAAwB,GAAI7B,EAAOh1D,IAAM,IAAI82D,EAAI,IAAIC,eAAwD,OAAzCD,EAAIE,KAAK,MAAMh3D,GAAI,GAAO82D,EAAIG,KAAK,MAAaH,EAAII,YAAX,EAA6BrB,IAAuBX,EAAYl1D,IAAM,IAAI82D,EAAI,IAAIC,eAAuF,OAAxED,EAAIE,KAAK,MAAMh3D,GAAI,GAAO82D,EAAIK,aAAa,cAAcL,EAAIG,KAAK,MAAa,IAAIjjB,WAAW8iB,EAAIM,SAA1B,GAAsCnC,EAAW,CAACj1D,EAAIs2D,EAAOC,KAAW,IAAIO,EAAI,IAAIC,eAAeD,EAAIE,KAAK,MAAMh3D,GAAI,GAAM82D,EAAIK,aAAa,cAAcL,EAAIR,OAAQ,KAAoB,KAAZQ,EAAIpB,QAAyB,GAAZoB,EAAIpB,QAAWoB,EAAIM,SAAUd,EAAOQ,EAAIM,UAAiBb,GAAS,EAAGO,EAAIP,QAAQA,EAAQO,EAAIG,KAAK,KAAT,GAAoE,IAAInoD,EAAIimD,EAAM,OAAW/3D,QAAQF,IAAI+qC,KAAK7qC,SAAa6lB,EAAIkyC,EAAM,UAAc/3D,QAAQxE,KAAKqvC,KAAK7qC,SAA4N,SAASq6D,EAAchiC,GAAG,OAAGA,EAAE,IAAW,CAACA,GAAS,CAACA,EAAE,IAAI,IAAIA,GAAG,EAAG,CAAxRj1B,OAAOumC,OAAOouB,EAAOO,GAAiBA,EAAgB,KAAQP,EAAM,YAAcQ,EAAWR,EAAM,WAAiBA,EAAM,cAAgBS,EAAYT,EAAM,aAAmBA,EAAM,OAASU,EAAMV,EAAM,MAA2kC,IAA4BuC,EAAo6BC,EAA57BC,EAAiB,GAAu1BC,EAAS,EAAMC,EAAY14D,IAAQy4D,EAASz4D,CAAT,EAAoB24D,EAAY,IAAIF,EAA2B1C,EAAM,aAAewC,EAAWxC,EAAM,YAAe,IAA8H6C,EAA1HC,EAAc9C,EAAM,gBAAmB,EAA4B,iBAAb+C,aAAuBC,GAAM,mCAAkD,IAAIE,GAAM,EAAiF,IAAIE,EAAgC,oBAAbC,YAAyB,IAAIA,YAAY,aAAQphE,EAAU,SAASqhE,EAAkBC,EAAYphB,EAAIqhB,GAA6D,IAA7C,IAAIC,EAAOthB,EAAIqhB,EAAmBE,EAAOvhB,EAAUohB,EAAYG,MAAWA,GAAQD,MAAUC,EAAO,GAAGA,EAAOvhB,EAAI,IAAIohB,EAAYr0C,QAAQk0C,EAAa,OAAOA,EAAYn8C,OAAOs8C,EAAYI,SAASxhB,EAAIuhB,IAAyB,IAAX,IAAIn3D,EAAI,GAAS41C,EAAIuhB,GAAO,CAAC,IAAIE,EAAGL,EAAYphB,KAAO,GAAQ,IAAHyhB,EAAL,CAAoD,IAAIC,EAAsB,GAAnBN,EAAYphB,KAAU,GAAa,MAAN,IAAHyhB,GAAJ,CAAmE,IAAIE,EAAsB,GAAnBP,EAAYphB,KAA0G,IAA9EyhB,EAAL,MAAN,IAAHA,IAAqB,GAAHA,IAAQ,GAAGC,GAAI,EAAEC,GAAe,EAAHF,IAAO,GAAGC,GAAI,GAAGC,GAAI,EAAqB,GAAnBP,EAAYphB,MAAgB,MAAO51C,GAAKijB,OAAOC,aAAam0C,OAAQ,CAAC,IAAIG,EAAGH,EAAG,MAAMr3D,GAAKijB,OAAOC,aAAa,MAAMs0C,GAAI,GAAG,MAAS,KAAHA,EAAS,CAAjP,MAAjDx3D,GAAKijB,OAAOC,cAAiB,GAAHm0C,IAAQ,EAAEC,EAAnF,MAAtCt3D,GAAKijB,OAAOC,aAAam0C,EAA+V,CAAC,OAAOr3D,CAAI,UAASy3D,EAAaC,EAAIT,GAAgB,OAAOS,EAAIX,EAAkBY,EAAOD,EAAIT,GAAgB,EAAG,UAASW,EAAkB53D,EAAI63D,EAAKC,EAAOC,GAAiB,KAAKA,EAAgB,GAAG,OAAO,EAA0D,IAAxD,IAAIC,EAASF,EAAWZ,EAAOY,EAAOC,EAAgB,EAAU/hE,EAAE,EAAEA,EAAEgK,EAAI/J,SAASD,EAAE,CAAC,IAAIonC,EAAEp9B,EAAI+I,WAAW/S,GAAoF,GAA9EonC,GAAG,OAAOA,GAAG,QAAkCA,EAAE,QAAU,KAAFA,IAAS,IAAO,KAA9Cp9B,EAAI+I,aAAa/S,IAAqConC,GAAG,IAAI,CAAC,GAAG06B,GAAQZ,EAAO,MAAMW,EAAKC,KAAU16B,CAAE,MAAK,GAAGA,GAAG,KAAK,CAAC,GAAG06B,EAAO,GAAGZ,EAAO,MAAMW,EAAKC,KAAU,IAAI16B,GAAG,EAAEy6B,EAAKC,KAAU,IAAM,GAAF16B,CAAK,MAAK,GAAGA,GAAG,MAAM,CAAC,GAAG06B,EAAO,GAAGZ,EAAO,MAAMW,EAAKC,KAAU,IAAI16B,GAAG,GAAGy6B,EAAKC,KAAU,IAAI16B,GAAG,EAAE,GAAGy6B,EAAKC,KAAU,IAAM,GAAF16B,CAAK,KAAI,CAAC,GAAG06B,EAAO,GAAGZ,EAAO,MAAMW,EAAKC,KAAU,IAAI16B,GAAG,GAAGy6B,EAAKC,KAAU,IAAI16B,GAAG,GAAG,GAAGy6B,EAAKC,KAAU,IAAI16B,GAAG,EAAE,GAAGy6B,EAAKC,KAAU,IAAM,GAAF16B,CAAK,CAAC,CAAe,OAAfy6B,EAAKC,GAAQ,EAASA,EAAOE,CAAS,UAASC,EAAaj4D,EAAIk4D,EAAOH,GAAiB,OAAOH,EAAkB53D,EAAI23D,EAAOO,EAAOH,EAAiB,UAASI,EAAgBn4D,GAAe,IAAV,IAAI6I,EAAI,EAAU7S,EAAE,EAAEA,EAAEgK,EAAI/J,SAASD,EAAE,CAAC,IAAIonC,EAAEp9B,EAAI+I,WAAW/S,GAAMonC,GAAG,OAAOA,GAAG,QAAMA,EAAE,QAAU,KAAFA,IAAS,IAAwB,KAApBp9B,EAAI+I,aAAa/S,IAAWonC,GAAG,MAAMv0B,EAAoBA,GAARu0B,GAAG,KAAU,EAAUA,GAAG,MAAW,EAAY,CAAE,QAAOv0B,CAAI,KAAusE8Z,EAAOy1C,EAAMT,EAAOU,EAAOC,EAAQC,EAAOC,EAAQC,EAAQC,EAA7vEC,EAAiC,oBAAb7B,YAAyB,IAAIA,YAAY,iBAAYphE,EAAU,SAASkjE,EAAclB,EAAIT,GAAiF,IAAjE,IAAIE,EAAOO,EAAQ9hB,EAAIuhB,GAAQ,EAAM0B,EAAOjjB,EAAIqhB,EAAe,IAAUrhB,GAAKijB,IAASP,EAAQ1iB,MAAOA,EAAkB,IAAduhB,EAAOvhB,GAAK,GAAY8hB,EAAI,IAAIiB,EAAc,OAAOA,EAAaj+C,OAAOi9C,EAAOP,SAASM,EAAIP,IAAyB,IAAX,IAAIn3D,EAAI,GAAWhK,EAAE,IAAIA,GAAGihE,EAAe,KAAKjhE,EAAE,CAAC,IAAI8iE,EAAST,EAAOX,EAAM,EAAF1hE,GAAK,GAAG,GAAa,GAAV8iE,EAAY,MAAM94D,GAAKijB,OAAOC,aAAa41C,EAAU,QAAO94D,CAAK,UAAS+4D,EAAc/4D,EAAIk4D,EAAOH,GAA4E,QAAtCriE,IAAlBqiE,IAA6BA,EAAgB,YAAcA,EAAgB,EAAE,OAAO,EAAuH,IAAlG,IAAIiB,EAASd,EAAWe,GAA3ClB,GAAiB,GAAqE,EAAX/3D,EAAI/J,OAAS8hE,EAAgB,EAAE/3D,EAAI/J,OAAeD,EAAE,EAAEA,EAAEijE,IAAkBjjE,EAAE,CAAC,IAAI8iE,EAAS94D,EAAI+I,WAAW/S,GAAGqiE,EAAOH,GAAQ,GAAGY,EAASZ,GAAQ,CAAE,CAAoB,OAApBG,EAAOH,GAAQ,GAAG,EAASA,EAAOc,CAAS,UAASE,EAAiBl5D,GAAK,OAAkB,EAAXA,EAAI/J,MAAS,UAASkjE,EAAczB,EAAIT,GAAmC,IAAnB,IAAIjhE,EAAE,EAAMgK,EAAI,KAAWhK,GAAGihE,EAAe,IAAG,CAAC,IAAImC,EAAMb,EAAOb,EAAM,EAAF1hE,GAAK,GAAG,GAAU,GAAPojE,EAAS,MAAU,KAAFpjE,EAAKojE,GAAO,MAAM,CAAC,IAAI5B,EAAG4B,EAAM,MAAMp5D,GAAKijB,OAAOC,aAAa,MAAMs0C,GAAI,GAAG,MAAS,KAAHA,EAAS,MAAKx3D,GAAKijB,OAAOC,aAAak2C,EAAQ,QAAOp5D,CAAI,UAASq5D,GAAcr5D,EAAIk4D,EAAOH,GAA4E,QAAtCriE,IAAlBqiE,IAA6BA,EAAgB,YAAcA,EAAgB,EAAE,OAAO,EAA4D,IAA1D,IAAIiB,EAASd,EAAWf,EAAO6B,EAASjB,EAAgB,EAAU/hE,EAAE,EAAEA,EAAEgK,EAAI/J,SAASD,EAAE,CAAC,IAAI8iE,EAAS94D,EAAI+I,WAAW/S,GAA6K,GAAvK8iE,GAAU,OAAOA,GAAU,QAA8CA,EAAS,QAAiB,KAATA,IAAgB,IAAmB,KAAxE94D,EAAI+I,aAAa/S,IAA4DuiE,EAAOL,GAAQ,GAAGY,GAASZ,GAAQ,GAAY,EAAEf,EAAO,KAAM,CAAoB,OAApBoB,EAAOL,GAAQ,GAAG,EAASA,EAAOc,CAAS,UAASM,GAAiBt5D,GAAe,IAAV,IAAI6I,EAAI,EAAU7S,EAAE,EAAEA,EAAEgK,EAAI/J,SAASD,EAAE,CAAC,IAAI8iE,EAAS94D,EAAI+I,WAAW/S,GAAM8iE,GAAU,OAAOA,GAAU,SAAQ9iE,EAAE6S,GAAK,CAAE,QAAOA,CAAI,UAAS0wD,GAAav5D,GAAK,IAAImlB,EAAKgzC,EAAgBn4D,GAAK,EAAM6pB,EAAI2vC,GAAQr0C,GAAmD,OAA1C0E,GAAI+tC,EAAkB53D,EAAIo4D,EAAMvuC,EAAI1E,GAAa0E,CAAI,CAAkS,SAAS4vC,GAA2Bl3C,GAAKI,EAAOJ,EAAIkxC,EAAM,MAAU2E,EAAM,IAAIsB,UAAUn3C,GAAKkxC,EAAM,OAAW4E,EAAO,IAAIsB,WAAWp3C,GAAKkxC,EAAM,OAAW8E,EAAO,IAAIqB,WAAWr3C,GAAKkxC,EAAM,OAAWkE,EAAO,IAAIjlB,WAAWnwB,GAAKkxC,EAAM,QAAY6E,EAAQ,IAAIuB,YAAYt3C,GAAKkxC,EAAM,QAAY+E,EAAQ,IAAIsB,YAAYv3C,GAAKkxC,EAAM,QAAYgF,EAAQ,IAAIsB,aAAax3C,GAAKkxC,EAAM,QAAYiF,EAAQ,IAAIsB,aAAaz3C,EAAK,CAAmBkxC,EAAM,eAAzB,IAA0DwG,GAAcC,GAAa,GAAOC,GAAW,GAAOC,GAAc,GAAgC,SAASjF,KAAmB,OAAOoB,CAAc,CAAgwB,IAA6iC8D,GAAu/EC,GAAeC,GAA/iHC,GAAgB,EAAMC,GAAqB,KAASC,GAAsB,KAAmD,SAASC,GAAiBzkE,GAAIskE,KAAqB/G,EAAM,wBAA4BA,EAAM,uBAA2B+G,GAAkB,UAASI,GAAoB1kE,GAA6G,GAAzGskE,KAAqB/G,EAAM,wBAA4BA,EAAM,uBAA2B+G,IAAqC,GAAjBA,KAA8C,OAAvBC,KAA6BI,cAAcJ,IAAsBA,GAAqB,MAAQC,IAAsB,CAAC,IAAI/8D,EAAS+8D,GAAsBA,GAAsB,KAAK/8D,GAAW,CAAE,UAAS84D,GAAMqE,GAAUrH,EAAM,SAAaA,EAAM,QAAYqH,GAAgCv5C,EAAzBu5C,EAAK,WAAWA,EAAK,KAAcnE,GAAM,EAAkBmE,GAAM,2CAA2C,IAAI7hE,EAAE,IAAIu9D,YAAYuE,aAAaD,GAA4B,MAAtBtH,EAAmBv6D,GAASA,CAAE,CAA0D,SAAS+hE,GAAUnG,GAAU,OAAOA,EAASoG,WAArF,wCAA+G,UAASC,GAAUrG,GAAU,OAAOA,EAASoG,WAAW,UAAW,CAAqI,SAASE,GAAUC,GAAM,IAAI,GAAGA,GAAMf,IAAgBpE,EAAY,OAAO,IAAIvjB,WAAWujB,GAAY,GAAGrC,EAAY,OAAOA,EAAWwH,GAAW,KAAK,iDAAyE,CAAtB,MAAM75C,GAAKk1C,GAAMl1C,EAAK,CAAC,CAA8qE,SAAS85C,GAAqBC,GAAW,KAAMA,EAAUrlE,OAAO,GAAE,CAAC,IAAI0H,EAAS29D,EAAU3kC,QAAQ,GAAoB,mBAAVh5B,EAAV,CAA0D,IAAI+lC,EAAK/lC,EAAS+lC,KAAqB,iBAANA,OAAkChuC,IAAfiI,EAASigB,IAAiBotE,GAAkBtnD,EAAlBsnD,GAA+BA,GAAkBtnD,EAAlBsnD,CAAwBrtF,EAASigB,KAAW8lB,OAAoBhuC,IAAfiI,EAASigB,IAAgB,KAAKjgB,EAASigB,IAArM,MAA1BjgB,EAAS81D,EAA4N,CAAC,UAASu3B,GAAkBf,GAAS,OAAOhwB,GAAU3gE,IAAI2wF,EAAS,UAASxuB,GAAkB7lB,EAAIlS,GAAMu2B,GAAU/vB,IAAI0L,EAAIlS,EAAM,CAAz7Fs3B,GAA7CX,GAAe,6BAAyDA,GAA1pX,SAAoBr7C,GAAM,OAAGy0C,EAAM,WAAuBA,EAAM,WAAez0C,EAAK21C,GAAwBA,EAAgB31C,CAAK,CAAwiX08C,CAAWrB,KAAs1G,IAAIsB,GAAgB,GAAsDG,GAAuB,EAAwP4B,GAAc,EAAE,SAAS3B,GAAcC,GAAQlnE,KAAKknE,OAAOA,EAAOlnE,KAAK4iE,IAAIsE,EAAO,GAAGlnE,KAAKmnE,SAAS,SAAS7+D,GAAMo7D,EAAQ1jE,KAAK4iE,IAAI,GAAG,GAAGt6D,CAAK,EAACtI,KAAKonE,SAAS,WAAW,OAAO1D,EAAQ1jE,KAAK4iE,IAAI,GAAG,EAAG,EAAC5iE,KAAKqnE,eAAe,SAASC,GAAY5D,EAAQ1jE,KAAK4iE,IAAI,GAAG,GAAG0E,CAAW,EAACtnE,KAAKunE,eAAe,WAAW,OAAO7D,EAAQ1jE,KAAK4iE,IAAI,GAAG,EAAG,EAAC5iE,KAAKwnE,aAAa,SAASC,GAAUhE,EAAOzjE,KAAK4iE,KAAK,GAAG6E,CAAS,EAACznE,KAAK0nE,WAAW,SAASC,GAAQA,EAAOA,EAAO,EAAE,EAAErE,EAAMtjE,KAAK4iE,IAAI,IAAI,GAAG+E,CAAO,EAAC3nE,KAAK4nE,WAAW,WAAW,OAA8B,GAAvBtE,EAAMtjE,KAAK4iE,IAAI,IAAI,EAAM,EAAC5iE,KAAK6nE,aAAa,SAASC,GAAUA,EAASA,EAAS,EAAE,EAAExE,EAAMtjE,KAAK4iE,IAAI,IAAI,GAAGkF,CAAS,EAAC9nE,KAAK+nE,aAAa,WAAW,OAA8B,GAAvBzE,EAAMtjE,KAAK4iE,IAAI,IAAI,EAAM,EAAC5iE,KAAKgoE,KAAK,SAAS1/D,EAAKg/D,GAAYtnE,KAAKioE,iBAAiB,GAAGjoE,KAAKmnE,SAAS7+D,GAAMtI,KAAKqnE,eAAeC,GAAYtnE,KAAKwnE,aAAa,GAAGxnE,KAAK0nE,YAAW,GAAO1nE,KAAK6nE,cAAa,EAAO,EAAC7nE,KAAK+mE,QAAQ,WAAW,IAAIn+D,EAAM66D,EAAOzjE,KAAK4iE,KAAK,GAAGa,EAAOzjE,KAAK4iE,KAAK,GAAGh6D,EAAM,CAAE,EAAC5I,KAAKkoE,YAAY,WAAW,IAAI37C,EAAKk3C,EAAOzjE,KAAK4iE,KAAK,GAA8B,OAA3Ba,EAAOzjE,KAAK4iE,KAAK,GAAGr2C,EAAK,EAAgB,IAAPA,CAAS,EAACvsB,KAAKioE,iBAAiB,SAASE,GAAazE,EAAQ1jE,KAAK4iE,IAAI,IAAI,GAAGuF,CAAY,EAACnoE,KAAKooE,iBAAiB,WAAW,OAAO1E,EAAQ1jE,KAAK4iE,IAAI,IAAI,EAAG,EAAC5iE,KAAKqoE,kBAAkB,WAAiE,GAAxCC,GAAuBtoE,KAAKonE,YAA0B,OAAO1D,EAAQ1jE,KAAKknE,QAAQ,GAAG,IAAIqB,EAASvoE,KAAKooE,mBAAmB,OAAc,IAAXG,EAAoBA,EAAgBvoE,KAAKknE,MAAO,CAAC,UAASsB,GAAsB5F,GAAK,OAAO6F,GAAM,IAAIxB,GAAcrE,GAAKA,IAAK,CAAilE,IAAIkG,GAAK,CAACC,MAAM7+C,GAAuB,MAAjBA,EAAK8jB,OAAO,GAASg7B,UAAUjJ,GAA2B,gEAAmFkJ,KAAKlJ,GAAU17D,MAAM,GAAI6kE,eAAe,CAAC92D,EAAM+2D,KAA2B,IAAT,IAAIxyD,EAAG,EAAUzV,EAAEkR,EAAMjR,OAAO,EAAED,GAAG,EAAEA,IAAI,CAAC,IAAIkoE,EAAKh3D,EAAMlR,GAAa,MAAPkoE,EAAYh3D,EAAMlF,OAAOhM,EAAE,GAAkB,OAAPkoE,GAAah3D,EAAMlF,OAAOhM,EAAE,GAAGyV,KAAaA,IAAIvE,EAAMlF,OAAOhM,EAAE,GAAGyV,IAAM,IAAGwyD,EAAgB,KAAKxyD,EAAGA,IAAMvE,EAAM4e,QAAQ,MAAO,OAAO5e,CAAP,EAAcS,UAAUqX,IAAO,IAAIm/C,EAAWP,GAAKC,MAAM7+C,GAAMo/C,EAAgC,MAAlBp/C,EAAKowB,QAAQ,GAA0J,OAAjJpwB,EAAK4+C,GAAKI,eAAeh/C,EAAK3d,MAAM,KAAK+T,QAAOvX,KAAKA,KAAIsgE,GAAYz4D,KAAK,OAAgBy4D,IAAYn/C,EAAK,KAAOA,GAAMo/C,IAAep/C,GAAM,MAAWm/C,EAAW,IAAI,IAAIn/C,CAA1B,EAAgCq/C,QAAQr/C,IAAO,IAAI5kB,EAAOwjE,GAAKE,UAAU9+C,GAAMrnB,EAAKyC,EAAO,GAAGgrD,EAAIhrD,EAAO,GAAG,OAAIzC,GAAOytD,GAAkBA,IAAKA,EAAIA,EAAIhW,OAAO,EAAEgW,EAAInvD,OAAO,IAAU0B,EAAKytD,GAAvD,GAA2C,EAAiBkZ,SAASt/C,IAAO,GAAU,MAAPA,EAAW,MAAM,IAA0D,IAAIu/C,GAAhCv/C,GAA1BA,EAAK4+C,GAAKj2D,UAAUqX,IAAgBnX,QAAQ,MAAM,KAAuB0tD,YAAY,KAAK,OAAgB,IAAbgJ,EAAsBv/C,EAAYA,EAAKowB,OAAOmvB,EAAU,EAA7B,EAAiC74D,KAAK,WAAW,IAAI8F,EAAM1V,MAAMrB,UAAU0E,MAAMzB,KAAK4C,UAAU,GAAG,OAAOsjE,GAAKj2D,UAAU6D,EAAM9F,KAAK,KAAM,EAAC84D,MAAM,CAAChsC,EAAEtL,IAAY02C,GAAKj2D,UAAU6qB,EAAE,IAAItL,IAAsZu3C,GAAQ,CAAC3qE,QAAQ,WAAsD,IAA3C,IAAI4qE,EAAa,GAAGC,GAAiB,EAAc3oE,EAAEsE,UAAUrE,OAAO,EAAED,IAAI,IAAI2oE,EAAiB3oE,IAAI,CAAC,IAAIgpB,EAAKhpB,GAAG,EAAEsE,UAAUtE,GAAG4oE,GAAGC,MAAM,GAAgB,iBAAN7/C,EAAgB,MAAM,IAAIye,UAAU,6CAAkD,IAAIze,EAAM,MAAM,GAAG0/C,EAAa1/C,EAAK,IAAI0/C,EAAaC,EAAiBf,GAAKC,MAAM7+C,EAAM,CAAqG,OAAO2/C,EAAiB,IAAI,KAAjID,EAAad,GAAKI,eAAeU,EAAar9D,MAAM,KAAK+T,QAAOvX,KAAKA,KAAI8gE,GAAkBj5D,KAAK,OAAmD,GAAI,EAAC8d,SAAS,CAACmB,EAAKlb,KAA4E,SAASg3C,EAAKh+C,GAAiB,IAAZ,IAAIqc,EAAM,EAAOA,EAAMrc,EAAIxM,QAAgC,KAAbwM,EAAIqc,GAAhBA,KAAuD,IAArB,IAAI2F,EAAIhiB,EAAIxM,OAAO,EAAOwuB,GAAK,GAAuB,KAAXhiB,EAAIgiB,GAAdA,KAA8B,OAAG3F,EAAM2F,EAAU,GAAUhiB,EAAItJ,MAAM2lB,EAAM2F,EAAI3F,EAAM,EAAG,CAAtR6F,EAAK85C,GAAQ3qE,QAAQ6wB,GAAMyqB,OAAO,GAAG3lC,EAAGg1D,GAAQ3qE,QAAQ2V,GAAI2lC,OAAO,GAAuW,IAApJ,IAAI0vB,EAAUre,EAAK97B,EAAKtjB,MAAM,MAAU09D,EAAQte,EAAKh3C,EAAGpI,MAAM,MAAUpL,EAAOsZ,KAAKwU,IAAI+6C,EAAU7oE,OAAO8oE,EAAQ9oE,QAAY+oE,EAAgB/oE,EAAeD,EAAE,EAAEA,EAAEC,EAAOD,IAAK,GAAG8oE,EAAU9oE,KAAK+oE,EAAQ/oE,GAAG,CAACgpE,EAAgBhpE,EAAE,KAAM,CAAC,IAAIipE,EAAY,GAAG,IAAQjpE,EAAEgpE,EAAgBhpE,EAAE8oE,EAAU7oE,OAAOD,IAAKipE,EAAY12D,KAAK,MAAqE,OAA/D02D,EAAYA,EAAYv2D,OAAOq2D,EAAQ5lE,MAAM6lE,KAAqCt5D,KAAK,IAAxB,GAAmCw5D,GAAI,CAACC,KAAK,GAAGrC,KAAK,WAAY,EAACsC,SAAS,WAAY,EAACC,SAAS,SAASC,EAAIC,GAAKL,GAAIC,KAAKG,GAAK,CAACphD,MAAM,GAAGqe,OAAO,GAAGgjC,IAAIA,GAAKX,GAAGY,eAAeF,EAAIJ,GAAIO,WAAY,EAACA,WAAW,CAAC/J,KAAK,SAAS5xB,GAAQ,IAAI47B,EAAIR,GAAIC,KAAKr7B,EAAOhkB,KAAK6/C,MAAM,IAAID,EAAK,MAAM,IAAId,GAAGgB,WAAW,IAAI97B,EAAO47B,IAAIA,EAAI57B,EAAO+7B,UAAS,CAAM,EAACC,MAAM,SAASh8B,GAAQA,EAAO47B,IAAIH,IAAIQ,MAAMj8B,EAAO47B,IAAK,EAACK,MAAM,SAASj8B,GAAQA,EAAO47B,IAAIH,IAAIQ,MAAMj8B,EAAO47B,IAAK,EAACM,KAAK,SAASl8B,EAAOnhB,EAAOzH,EAAOjlB,EAAO6S,GAAK,IAAIg7B,EAAO47B,MAAM57B,EAAO47B,IAAIH,IAAIU,SAAU,MAAM,IAAIrB,GAAGgB,WAAW,IAAoB,IAAhB,IAAIM,EAAU,EAAUlqE,EAAE,EAAEA,EAAEC,EAAOD,IAAI,CAAC,IAAIoE,EAAO,IAAIA,EAAO0pC,EAAO47B,IAAIH,IAAIU,SAASn8B,EAAO47B,IAA0C,CAArC,MAAMzmE,GAAG,MAAM,IAAI2lE,GAAGgB,WAAW,GAAI,SAAYlqE,IAAT0E,GAAgC,IAAZ8lE,EAAe,MAAM,IAAItB,GAAGgB,WAAW,GAAG,GAAGxlE,QAAkC,MAAM8lE,IAAYv9C,EAAOzH,EAAOllB,GAAGoE,CAAO,CAA+C,OAA5C8lE,IAAWp8B,EAAOhkB,KAAKqgD,UAAUl8C,KAAK3C,OAAa4+C,CAAU,EAACjkD,MAAM,SAAS6nB,EAAOnhB,EAAOzH,EAAOjlB,EAAO6S,GAAK,IAAIg7B,EAAO47B,MAAM57B,EAAO47B,IAAIH,IAAIa,SAAU,MAAM,IAAIxB,GAAGgB,WAAW,IAAI,IAAI,IAAI,IAAI5pE,EAAE,EAAEA,EAAEC,EAAOD,IAAK8tC,EAAO47B,IAAIH,IAAIa,SAASt8B,EAAO47B,IAAI/8C,EAAOzH,EAAOllB,GAA0C,CAArC,MAAMiD,GAAG,MAAM,IAAI2lE,GAAGgB,WAAW,GAAI,CAA4C,OAAzC3pE,IAAQ6tC,EAAOhkB,KAAKqgD,UAAUl8C,KAAK3C,OAAatrB,CAAE,GAAEqqE,gBAAgB,CAACJ,SAAS,SAASP,GAAK,IAAIA,EAAIxhD,MAAMjoB,OAAO,CAAC,IAAImE,EAAO,KAAK,GAAGq6D,EAAoB,CAAC,IAAoBlyC,EAAIxH,EAAOiB,MAAnB,KAAsCkkD,EAAU,EAAE,IAAIA,EAAUrM,EAAGyM,SAASp8B,EAAQq8B,MAAMC,GAAGj+C,EAAI,EAAjG,KAA4G,EAAqE,CAAlE,MAAMtpB,GAAG,IAAGA,EAAEoqB,WAAWo9C,SAAS,OAAwB,MAAMxnE,EAAvBinE,EAAU,CAAe,CAAgB9lE,EAAb8lE,EAAU,EAAU39C,EAAIppB,MAAM,EAAE+mE,GAAW78C,SAAS,SAAqB,IAAM,KAAuB,oBAARwD,QAA2C,mBAAfA,OAAO65C,OAAgE,QAA5CtmE,EAAOysB,OAAO65C,OAAO,cAA6BtmE,GAAQ,MAA+B,mBAAVumE,UAAoD,QAA9BvmE,EAAOumE,cAA6BvmE,GAAQ,MAAM,IAAIA,EAAQ,OAAO,KAAKslE,EAAIxhD,MAAM0iD,GAAmBxmE,GAAO,EAAM,QAAOslE,EAAIxhD,MAAMyY,OAAQ,EAACypC,SAAS,SAASV,EAAI5hD,GAAc,OAANA,GAAkB,KAANA,GAAUtQ,EAAIupD,EAAkB2I,EAAInjC,OAAO,IAAImjC,EAAInjC,OAAO,IAAgB,GAALze,GAAO4hD,EAAInjC,OAAOh0B,KAAKuV,EAAM,EAACiiD,MAAM,SAASL,GAAQA,EAAInjC,QAAQmjC,EAAInjC,OAAOtmC,OAAO,IAAGuX,EAAIupD,EAAkB2I,EAAInjC,OAAO,IAAImjC,EAAInjC,OAAO,GAAI,GAAEskC,iBAAiB,CAACT,SAAS,SAASV,EAAI5hD,GAAc,OAANA,GAAkB,KAANA,GAAUyD,EAAIw1C,EAAkB2I,EAAInjC,OAAO,IAAImjC,EAAInjC,OAAO,IAAgB,GAALze,GAAO4hD,EAAInjC,OAAOh0B,KAAKuV,EAAM,EAACiiD,MAAM,SAASL,GAAQA,EAAInjC,QAAQmjC,EAAInjC,OAAOtmC,OAAO,IAAGsrB,EAAIw1C,EAAkB2I,EAAInjC,OAAO,IAAImjC,EAAInjC,OAAO,GAAI,IAAwCukC,GAAM,CAACC,UAAU,KAAKC,MAAM,SAASA,GAAO,OAAOF,GAAMG,WAAW,KAAK,IAAI,MAAU,EAAG,EAACA,WAAW,SAAS3kD,EAAO5jB,EAAKoH,EAAKw/D,GAAK,GAAGV,GAAGsC,SAASphE,IAAO8+D,GAAGuC,OAAOrhE,GAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAQkB,GAAMC,YAAWD,GAAMC,UAAU,CAAC3b,IAAI,CAACtlC,KAAK,CAACshD,QAAQN,GAAMO,SAASD,QAAQE,QAAQR,GAAMO,SAASC,QAAQC,OAAOT,GAAMO,SAASE,OAAOC,MAAMV,GAAMO,SAASG,MAAMC,OAAOX,GAAMO,SAASI,OAAOC,OAAOZ,GAAMO,SAASK,OAAOC,MAAMb,GAAMO,SAASM,MAAMC,QAAQd,GAAMO,SAASO,QAAQC,QAAQf,GAAMO,SAASQ,SAAS/9B,OAAO,CAACg+B,OAAOhB,GAAMrB,WAAWqC,SAAS1G,KAAK,CAACt7C,KAAK,CAACshD,QAAQN,GAAMO,SAASD,QAAQE,QAAQR,GAAMO,SAASC,SAASx9B,OAAO,CAACg+B,OAAOhB,GAAMrB,WAAWqC,OAAO9B,KAAKc,GAAMrB,WAAWO,KAAK/jD,MAAM6kD,GAAMrB,WAAWxjD,MAAM8lD,SAASjB,GAAMrB,WAAWsC,SAASC,KAAKlB,GAAMrB,WAAWuC,KAAKC,MAAMnB,GAAMrB,WAAWwC,QAAQC,KAAK,CAACpiD,KAAK,CAACshD,QAAQN,GAAMO,SAASD,QAAQE,QAAQR,GAAMO,SAASC,QAAQa,SAASrB,GAAMO,SAASc,UAAUr+B,OAAO,CAAC,GAAGs+B,OAAO,CAACtiD,KAAK,CAACshD,QAAQN,GAAMO,SAASD,QAAQE,QAAQR,GAAMO,SAASC,SAASx9B,OAAO86B,GAAGyD,qBAAoB,IAAIviD,EAAK8+C,GAAGqC,WAAW3kD,EAAO5jB,EAAKoH,EAAKw/D,GAAgmB,OAAxlBV,GAAG0D,MAAMxiD,EAAKhgB,OAAOggB,EAAKuhD,SAASP,GAAMC,UAAU3b,IAAItlC,KAAKA,EAAK2/C,WAAWqB,GAAMC,UAAU3b,IAAIthB,OAAOhkB,EAAKyiD,SAAS,CAAC,GAAU3D,GAAG4D,OAAO1iD,EAAKhgB,OAAOggB,EAAKuhD,SAASP,GAAMC,UAAU3F,KAAKt7C,KAAKA,EAAK2/C,WAAWqB,GAAMC,UAAU3F,KAAKt3B,OAAOhkB,EAAK2iD,UAAU,EAAE3iD,EAAKyiD,SAAS,MAAa3D,GAAG8D,OAAO5iD,EAAKhgB,OAAOggB,EAAKuhD,SAASP,GAAMC,UAAUmB,KAAKpiD,KAAKA,EAAK2/C,WAAWqB,GAAMC,UAAUmB,KAAKp+B,QAAe86B,GAAG+D,SAAS7iD,EAAKhgB,QAAOggB,EAAKuhD,SAASP,GAAMC,UAAUqB,OAAOtiD,KAAKA,EAAK2/C,WAAWqB,GAAMC,UAAUqB,OAAOt+B,QAAOhkB,EAAKqgD,UAAUl8C,KAAK3C,MAAShF,IAAQA,EAAOimD,SAAS7pE,GAAMonB,EAAKxD,EAAO6jD,UAAUrgD,EAAKqgD,WAAiBrgD,CAAK,EAAC8iD,wBAAwB,SAAS9iD,GAAM,OAAIA,EAAKyiD,SAAqCziD,EAAKyiD,SAASnL,SAAgBt3C,EAAKyiD,SAASnL,SAAS,EAAEt3C,EAAK2iD,WAAkB,IAAI/vB,WAAW5yB,EAAKyiD,UAAvH,IAAI7vB,WAAW,EAAkH,EAACmwB,kBAAkB,SAAS/iD,EAAKgjD,GAAa,IAAIC,EAAajjD,EAAKyiD,SAASziD,EAAKyiD,SAAStsE,OAAO,EAAE,KAAG8sE,GAAcD,GAAjB,CAAwEA,EAAYvzD,KAAK8X,IAAIy7C,EAAYC,GAAcA,EAAzD,QAA4F,EAAE,SAAS,GAAoB,GAAdA,IAAgBD,EAAYvzD,KAAK8X,IAAIy7C,EAAY,MAAK,IAAIE,EAAYljD,EAAKyiD,SAASziD,EAAKyiD,SAAS,IAAI7vB,WAAWowB,GAAgBhjD,EAAK2iD,UAAU,GAAE3iD,EAAKyiD,SAASr4B,IAAI84B,EAAY5L,SAAS,EAAEt3C,EAAK2iD,WAAW,EAAnV,CAAsV,EAACQ,kBAAkB,SAASnjD,EAAKojD,GAAS,GAAGpjD,EAAK2iD,WAAWS,EAAe,GAAY,GAATA,EAAYpjD,EAAKyiD,SAAS,KAAKziD,EAAK2iD,UAAU,MAAM,CAAC,IAAIO,EAAYljD,EAAKyiD,SAASziD,EAAKyiD,SAAS,IAAI7vB,WAAWwwB,GAAYF,GAAaljD,EAAKyiD,SAASr4B,IAAI84B,EAAY5L,SAAS,EAAE7nD,KAAKwU,IAAIm/C,EAAQpjD,EAAK2iD,aAAa3iD,EAAK2iD,UAAUS,CAAQ,CAAC,EAAC7B,SAAS,CAACD,QAAQ,SAASthD,GAAM,IAAIqjD,EAAK,CAAC,EAA4d,OAA1dA,EAAK7D,IAAIV,GAAG+D,SAAS7iD,EAAKhgB,MAAMggB,EAAK5pB,GAAG,EAAEitE,EAAKC,IAAItjD,EAAK5pB,GAAGitE,EAAKrjE,KAAKggB,EAAKhgB,KAAKqjE,EAAKE,MAAM,EAAEF,EAAKG,IAAI,EAAEH,EAAKI,IAAI,EAAEJ,EAAKxD,KAAK7/C,EAAK6/C,KAAQf,GAAG0D,MAAMxiD,EAAKhgB,MAAOqjE,EAAKh+C,KAAK,KAAay5C,GAAG4D,OAAO1iD,EAAKhgB,MAAOqjE,EAAKh+C,KAAKrF,EAAK2iD,UAAkB7D,GAAG8D,OAAO5iD,EAAKhgB,MAAOqjE,EAAKh+C,KAAKrF,EAAKoiD,KAAKjsE,OAAYktE,EAAKh+C,KAAK,EAAEg+C,EAAKK,MAAM,IAAIv/C,KAAKnE,EAAKqgD,WAAWgD,EAAKM,MAAM,IAAIx/C,KAAKnE,EAAKqgD,WAAWgD,EAAKO,MAAM,IAAIz/C,KAAKnE,EAAKqgD,WAAWgD,EAAKQ,QAAQ,KAAKR,EAAKS,OAAOr0D,KAAKsY,KAAKs7C,EAAKh+C,KAAKg+C,EAAKQ,SAAgBR,CAAK,EAAC7B,QAAQ,SAASxhD,EAAKqjD,QAAqBztE,IAAZytE,EAAKrjE,OAAkBggB,EAAKhgB,KAAKqjE,EAAKrjE,WAAyBpK,IAAjBytE,EAAKhD,YAAuBrgD,EAAKqgD,UAAUgD,EAAKhD,gBAAyBzqE,IAAZytE,EAAKh+C,MAAkB27C,GAAMmC,kBAAkBnjD,EAAKqjD,EAAKh+C,KAAO,EAACo8C,OAAO,SAASjlD,EAAO5jB,GAAM,MAAMkmE,GAAGiF,cAAc,GAAI,EAACrC,MAAM,SAASllD,EAAO5jB,EAAKoH,EAAKw/D,GAAK,OAAOwB,GAAMG,WAAW3kD,EAAO5jB,EAAKoH,EAAKw/D,EAAK,EAACmC,OAAO,SAASqC,EAASC,EAAQC,GAAU,GAAGpF,GAAG0D,MAAMwB,EAAShkE,MAAM,CAAC,IAAImkE,EAAS,IAAIA,EAASrF,GAAGsF,WAAWH,EAAQC,EAAoB,CAAV,MAAM/qE,GAAI,IAAGgrE,EAAU,IAAI,IAAIjuE,KAAKiuE,EAAS1B,SAAU,MAAM,IAAI3D,GAAGgB,WAAW,GAAM,QAAOkE,EAASxnD,OAAOimD,SAASuB,EAASprE,MAAMorE,EAASxnD,OAAO6jD,UAAUl8C,KAAK3C,MAAMwiD,EAASprE,KAAKsrE,EAASD,EAAQxB,SAASyB,GAAUF,EAASC,EAAQ5D,UAAU2D,EAASxnD,OAAO6jD,UAAU2D,EAASxnD,OAAOynD,CAAQ,EAACrC,OAAO,SAASplD,EAAO5jB,UAAa4jB,EAAOimD,SAAS7pE,GAAM4jB,EAAO6jD,UAAUl8C,KAAK3C,KAAM,EAACqgD,MAAM,SAASrlD,EAAO5jB,GAAM,IAAIonB,EAAK8+C,GAAGsF,WAAW5nD,EAAO5jB,GAAM,IAAI,IAAI1C,KAAK8pB,EAAKyiD,SAAU,MAAM,IAAI3D,GAAGgB,WAAW,WAAWtjD,EAAOimD,SAAS7pE,GAAM4jB,EAAO6jD,UAAUl8C,KAAK3C,KAAM,EAACsgD,QAAQ,SAAS9hD,GAAM,IAAIqkD,EAAQ,CAAC,IAAI,MAAM,IAAI,IAAIvuE,KAAOkqB,EAAKyiD,SAAcziD,EAAKyiD,SAAS98D,eAAe7P,IAAeuuE,EAAQ57D,KAAK3S,GAAK,OAAOuuE,CAAQ,EAACtC,QAAQ,SAASvlD,EAAO8nD,EAAQC,GAAS,IAAIvkD,EAAKghD,GAAMG,WAAW3kD,EAAO8nD,EAAQ,MAAU,GAAqB,OAAlBtkD,EAAKoiD,KAAKmC,EAAevkD,CAAK,EAACqiD,SAAS,SAASriD,GAAM,IAAI8+C,GAAG8D,OAAO5iD,EAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,OAAO9/C,EAAKoiD,IAAK,GAAEzC,WAAW,CAACO,KAAK,SAASl8B,EAAOnhB,EAAOzH,EAAOjlB,EAAOy9C,GAAU,IAAI6uB,EAASz+B,EAAOhkB,KAAKyiD,SAAS,GAAG7uB,GAAU5P,EAAOhkB,KAAK2iD,UAAU,OAAO,EAAE,IAAIt9C,EAAK5V,KAAKwU,IAAI+f,EAAOhkB,KAAK2iD,UAAU/uB,EAASz9C,GAAQ,GAAGkvB,EAAK,GAAGo9C,EAASnL,SAAUz0C,EAAOunB,IAAIq4B,EAASnL,SAAS1jB,EAASA,EAASvuB,GAAMjK,QAAa,IAAI,IAAIllB,EAAE,EAAEA,EAAEmvB,EAAKnvB,IAAI2sB,EAAOzH,EAAOllB,GAAGusE,EAAS7uB,EAAS19C,GAAG,OAAOmvB,CAAK,EAAClJ,MAAM,SAAS6nB,EAAOnhB,EAAOzH,EAAOjlB,EAAOy9C,EAAS4wB,GAAsD,GAA3C3hD,EAAOA,SAASy1C,EAAMz1C,SAAQ2hD,GAAO,IAAUruE,EAAO,OAAO,EAAE,IAAI6pB,EAAKgkB,EAAOhkB,KAA+B,GAA1BA,EAAKqgD,UAAUl8C,KAAK3C,MAASqB,EAAOy0C,YAAYt3C,EAAKyiD,UAAUziD,EAAKyiD,SAASnL,UAAU,CAAC,GAAGkN,EAAkF,OAA1ExkD,EAAKyiD,SAAS5/C,EAAOy0C,SAASl8C,EAAOA,EAAOjlB,GAAQ6pB,EAAK2iD,UAAUxsE,EAAcA,EAAY,GAAoB,IAAjB6pB,EAAK2iD,WAA0B,IAAX/uB,EAAqF,OAAvE5zB,EAAKyiD,SAAS5/C,EAAOxpB,MAAM+hB,EAAOA,EAAOjlB,GAAQ6pB,EAAK2iD,UAAUxsE,EAAcA,EAAY,GAAGy9C,EAASz9C,GAAQ6pB,EAAK2iD,UAA6E,OAAlE3iD,EAAKyiD,SAASr4B,IAAIvnB,EAAOy0C,SAASl8C,EAAOA,EAAOjlB,GAAQy9C,GAAiBz9C,CAAQ,CAA8C,GAA9C6qE,GAAM+B,kBAAkB/iD,EAAK4zB,EAASz9C,GAAW6pB,EAAKyiD,SAASnL,UAAUz0C,EAAOy0C,SAAUt3C,EAAKyiD,SAASr4B,IAAIvnB,EAAOy0C,SAASl8C,EAAOA,EAAOjlB,GAAQy9C,QAAe,IAAI,IAAI19C,EAAE,EAAEA,EAAEC,EAAOD,IAAK8pB,EAAKyiD,SAAS7uB,EAAS19C,GAAG2sB,EAAOzH,EAAOllB,GAA4D,OAAxD8pB,EAAK2iD,UAAUlzD,KAAK8X,IAAIvH,EAAK2iD,UAAU/uB,EAASz9C,GAAeA,CAAO,EAAC6rE,OAAO,SAASh+B,EAAO5oB,EAAOqpD,GAAQ,IAAI7wB,EAASx4B,EAAqI,GAAlH,IAATqpD,EAAY7wB,GAAU5P,EAAO4P,SAA0B,IAAT6wB,GAAe3F,GAAG4D,OAAO1+B,EAAOhkB,KAAKhgB,QAAO4zC,GAAU5P,EAAOhkB,KAAK2iD,WAAc/uB,EAAS,EAAG,MAAM,IAAIkrB,GAAGgB,WAAW,IAAI,OAAOlsB,CAAS,EAACquB,SAAS,SAASj+B,EAAO5oB,EAAOjlB,GAAQ6qE,GAAM+B,kBAAkB/+B,EAAOhkB,KAAK5E,EAAOjlB,GAAQ6tC,EAAOhkB,KAAK2iD,UAAUlzD,KAAK8X,IAAIyc,EAAOhkB,KAAK2iD,UAAUvnD,EAAOjlB,EAAQ,EAAC+rE,KAAK,SAASl+B,EAAO0gC,EAAQvuE,EAAOy9C,EAAS+wB,EAAKr0B,GAAO,GAAa,IAAVo0B,EAAa,MAAM,IAAI5F,GAAGgB,WAAW,IAAI,IAAIhB,GAAG4D,OAAO1+B,EAAOhkB,KAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,IAAIlI,EAAQgN,EAAcnC,EAASz+B,EAAOhkB,KAAKyiD,SAAS,GAAW,EAANnyB,GAAUmyB,EAAS5/C,SAASA,EAAoD,CAA8O,IAA1O+wB,EAAS,GAAGA,EAASz9C,EAAOssE,EAAStsE,UAA8BssE,EAAnBA,EAASnL,SAAmBmL,EAASnL,SAAS1jB,EAASA,EAASz9C,GAAsBH,MAAMrB,UAAU0E,MAAMzB,KAAK6qE,EAAS7uB,EAASA,EAASz9C,IAASyuE,GAAU,IAAKhN,OAA9qNjB,MAA6sN,MAAM,IAAImI,GAAGgB,WAAW,IAAIxH,EAAMluB,IAAIq4B,EAAS7K,EAAK,MAAvVgN,GAAU,EAAMhN,EAAI6K,EAAS5vB,WAA0T,MAAM,CAAC+kB,IAAIA,EAAIgN,UAAUA,EAAW,EAACzC,MAAM,SAASn+B,EAAOnhB,EAAOzH,EAAOjlB,EAAOgvE,GAAW,IAAIrG,GAAG4D,OAAO1+B,EAAOhkB,KAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,OAAa,EAAVqF,GAAuCnE,GAAMrB,WAAWxjD,MAAM6nB,EAAOnhB,EAAO,EAAE1sB,EAAOilB,GAAO,GAAxE,CAAwF,IAAwZ0jD,GAAG,CAACjnE,KAAK,KAAKutE,OAAO,GAAGC,QAAQ,CAAC,EAAEC,QAAQ,GAAGC,UAAU,EAAEC,UAAU,KAAKv6D,YAAY,IAAIw6D,aAAY,EAAMC,mBAAkB,EAAK5F,WAAW,KAAKiE,cAAc,CAAC,EAAE4B,YAAY,KAAKC,eAAe,EAAEC,WAAW,CAAC3mD,EAAK1jB,EAAK,CAAC,KAAyC,KAApC0jB,EAAKy/C,GAAQ3qE,QAAQ8qE,GAAGC,MAAM7/C,IAAe,MAAM,CAACA,KAAK,GAAGc,KAAK,MAAyF,IAAlCxkB,EAAKwD,OAAOumC,OAAhD,CAACugC,cAAa,EAAKC,cAAc,GAA+BvqE,IAAcuqE,cAAc,EAAG,MAAM,IAAIjH,GAAGgB,WAAW,IAAiH,IAA7G,IAAI14D,EAAM02D,GAAKI,eAAeh/C,EAAK3d,MAAM,KAAK+T,QAAOvX,KAAKA,KAAG,GAAWo/B,EAAQ2hC,GAAGjnE,KAASmuE,EAAa,IAAY9vE,EAAE,EAAEA,EAAEkR,EAAMjR,OAAOD,IAAI,CAAC,IAAI+vE,EAAO/vE,IAAIkR,EAAMjR,OAAO,EAAE,GAAG8vE,GAAQzqE,EAAKghB,OAAQ,MAA+L,GAAzL2gB,EAAQ2hC,GAAGsF,WAAWjnC,EAAQ/1B,EAAMlR,IAAI8vE,EAAalI,GAAKY,MAAMsH,EAAa5+D,EAAMlR,IAAO4oE,GAAGoH,aAAa/oC,MAAc8oC,GAAQA,GAAQzqE,EAAKsqE,gBAAc3oC,EAAQA,EAAQgpC,QAAQtuE,OAAUouE,GAAQzqE,EAAK4qE,OAAoB,IAAZ,IAAIx+D,EAAM,EAAQk3D,GAAG8D,OAAOzlC,EAAQn9B,OAAM,CAAC,IAAIoiE,EAAKtD,GAAGuD,SAAS2D,GAA4K,GAA9JA,EAAarH,GAAQ3qE,QAAQ8pE,GAAKS,QAAQyH,GAAc5D,GAAkFjlC,EAAjE2hC,GAAG+G,WAAWG,EAAa,CAACD,cAAcvqE,EAAKuqE,cAAc,IAAmB/lD,KAAQpY,IAAQ,GAAI,MAAM,IAAIk3D,GAAGgB,WAAW,GAAK,CAAE,OAAM,CAAC5gD,KAAK8mD,EAAahmD,KAAKmd,EAA9B,EAAwC9xB,QAAQ2U,IAAgB,IAAT,IAAId,IAAgB,CAAC,GAAG4/C,GAAGr7D,OAAOuc,GAAM,CAAC,IAAIkhD,EAAMlhD,EAAKkhD,MAAMmF,WAAW,OAAInnD,EAAiD,MAAxBgiD,EAAMA,EAAM/qE,OAAO,GAAS+qE,EAAM,IAAIhiD,EAAKgiD,EAAMhiD,EAA9DgiD,CAAmE,CAAAhiD,EAAKA,EAAKc,EAAKpnB,KAAK,IAAIsmB,EAAKc,EAAKpnB,KAAKonB,EAAKA,EAAKxD,MAAO,GAAE8pD,SAAS,CAACC,EAAS3tE,KAAmB,IAAX,IAAIsT,EAAK,EAAUhW,EAAE,EAAEA,EAAE0C,EAAKzC,OAAOD,IAAKgW,GAAMA,GAAM,GAAGA,EAAKtT,EAAKqQ,WAAW/S,GAAG,EAAE,OAAOqwE,EAASr6D,IAAO,GAAG4yD,GAAG0G,UAAUrvE,MAAvC,EAA+CqwE,YAAYxmD,IAAO,IAAI9T,EAAK4yD,GAAGwH,SAAStmD,EAAKxD,OAAOpmB,GAAG4pB,EAAKpnB,MAAMonB,EAAKymD,UAAU3H,GAAG0G,UAAUt5D,GAAM4yD,GAAG0G,UAAUt5D,GAAM8T,CAAnB,EAAyB0mD,eAAe1mD,IAAO,IAAI9T,EAAK4yD,GAAGwH,SAAStmD,EAAKxD,OAAOpmB,GAAG4pB,EAAKpnB,MAAM,GAAGkmE,GAAG0G,UAAUt5D,KAAQ8T,EAAM8+C,GAAG0G,UAAUt5D,GAAM8T,EAAKymD,eAA8C,IAA/B,IAAItpC,EAAQ2hC,GAAG0G,UAAUt5D,GAAYixB,GAAQ,CAAC,GAAGA,EAAQspC,YAAYzmD,EAAK,CAACmd,EAAQspC,UAAUzmD,EAAKymD,UAAU,KAAM,CAAAtpC,EAAQA,EAAQspC,SAAU,CAAC,EAAErC,WAAW,CAAC5nD,EAAO5jB,KAAQ,IAAI+tE,EAAQ7H,GAAG8H,UAAUpqD,GAAQ,GAAGmqD,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,EAAQnqD,GAA6C,IAArC,IAAItQ,EAAK4yD,GAAGwH,SAAS9pD,EAAOpmB,GAAGwC,GAAconB,EAAK8+C,GAAG0G,UAAUt5D,GAAM8T,EAAKA,EAAKA,EAAKymD,UAAU,CAAC,IAAII,EAAS7mD,EAAKpnB,KAAK,GAAGonB,EAAKxD,OAAOpmB,KAAKomB,EAAOpmB,IAAIywE,IAAWjuE,EAAM,OAAOonB,CAAM,QAAO8+C,GAAG2C,OAAOjlD,EAAO5jB,EAAxB,EAA+BuoE,WAAW,CAAC3kD,EAAO5jB,EAAKoH,EAAK6/D,KAAQ,IAAI7/C,EAAK,IAAI8+C,GAAGgI,OAAOtqD,EAAO5jB,EAAKoH,EAAK6/D,GAA2B,OAArBf,GAAG0H,YAAYxmD,GAAaA,CAAP,EAAa+mD,YAAY/mD,IAAO8+C,GAAG4H,eAAe1mD,EAAlB,EAAyBvc,OAAOuc,GAAcA,IAAOA,EAAKxD,OAAQ0pD,aAAalmD,KAAeA,EAAKmmD,QAASzD,OAAO1iE,GAA4B,QAAT,MAALA,GAAqBwiE,MAAMxiE,GAA4B,QAAT,MAALA,GAAqB4iE,OAAO5iE,GAA4B,QAAT,MAALA,GAAqB6iE,SAAS7iE,GAA4B,OAAT,MAALA,GAAoBohE,SAASphE,GAA4B,QAAT,MAALA,GAAqBqhE,OAAOrhE,GAA4B,OAAT,MAALA,GAAoBgnE,SAAShnE,GAA4B,QAAT,MAALA,GAAqBinE,UAAU,CAAC,EAAI,EAAE,KAAK,EAAE,EAAI,IAAI,KAAK,IAAI,EAAI,KAAK,KAAK,MAAMC,kBAAkBhnE,IAAM,IAAIowC,EAAMwuB,GAAGmI,UAAU/mE,GAAK,QAAiB,IAAPowC,EAAoB,MAAM,IAAIp7C,MAAM,2BAA2BgL,GAAK,OAAOowC,CAAP,EAAc62B,wBAAwBC,IAAO,IAAIC,EAAM,CAAC,IAAI,IAAI,MAAW,EAALD,GAAgC,OAAhB,IAALA,IAAUC,GAAO,KAAWA,CAAP,EAAcC,gBAAgB,CAACtnD,EAAKqnD,IAAYvI,GAAG4G,qBAA+B2B,EAAM1G,SAAS,MAAkB,IAAV3gD,EAAKhgB,SAA4BqnE,EAAM1G,SAAS,MAAkB,IAAV3gD,EAAKhgB,SAA4BqnE,EAAM1G,SAAS,MAAkB,GAAV3gD,EAAKhgB,MAAjJ,EAAmD,EAA2H4mE,UAAUthB,GAAkBwZ,GAAGwI,gBAAgBhiB,EAAI,OAAmCA,EAAIic,SAASE,OAAuB,EAAT,GAAY8F,UAAU,CAACjiB,EAAI1sD,KAAQ,IAAqC,OAAxBkmE,GAAGsF,WAAW9e,EAAI1sD,GAAa,EAAa,CAAV,MAAMO,GAAI,QAAO2lE,GAAGwI,gBAAgBhiB,EAAI,KAA9B,EAAqCkiB,UAAU,CAACliB,EAAI1sD,EAAK6uE,KAAS,IAAIznD,EAAK,IAAIA,EAAK8+C,GAAGsF,WAAW9e,EAAI1sD,EAA8B,CAAxB,MAAMO,GAAG,OAAOA,EAAEuuE,KAAM,KAAIf,EAAQ7H,GAAGwI,gBAAgBhiB,EAAI,MAAM,GAAGqhB,EAAS,OAAOA,EAAQ,GAAGc,EAAM,CAAC,IAAI3I,GAAG0D,MAAMxiD,EAAKhgB,MAAO,OAAO,GAAG,GAAG8+D,GAAGr7D,OAAOuc,IAAO8+C,GAAGzzD,QAAQ2U,KAAQ8+C,GAAGC,MAAO,OAAO,EAAI,MAAK,GAAGD,GAAG0D,MAAMxiD,EAAKhgB,MAAO,OAAO,GAAI,OAAO,CAAP,EAAU2nE,QAAQ,CAAC3nD,EAAKswB,IAAatwB,EAAmB8+C,GAAG8D,OAAO5iD,EAAKhgB,MAAc,GAAW8+D,GAAG0D,MAAMxiD,EAAKhgB,QAA8C,MAApC8+D,GAAGqI,wBAAwB72B,IAAoB,IAANA,GAAkB,GAAWwuB,GAAGwI,gBAAgBtnD,EAAK8+C,GAAGqI,wBAAwB72B,IAA/L,GAAwMs3B,aAAa,KAAKC,OAAO,CAACC,EAAS,EAAEC,EAAOjJ,GAAG8I,gBAAgB,IAAI,IAAIlH,EAAGoH,EAASpH,GAAIqH,EAAOrH,IAAM,IAAI5B,GAAGwG,QAAQ5E,GAAK,OAAOA,EAAI,MAAM,IAAI5B,GAAGgB,WAAW,GAAxB,EAA6BkI,UAAUtH,GAAI5B,GAAGwG,QAAQ5E,GAAIuH,aAAa,CAACjkC,EAAO8jC,EAASC,KAAcjJ,GAAGoJ,WAAUpJ,GAAGoJ,SAAS,WAAWlzE,KAAKmzE,OAAO,CAAC,CAAE,EAACrJ,GAAGoJ,SAASvzE,UAAU,CAACqV,OAAO,CAACxQ,IAAI,WAAW,OAAOxE,KAAKgrB,IAAK,EAACoqB,IAAI,SAASpsB,GAAKhpB,KAAKgrB,KAAKhC,CAAI,GAAEoqD,OAAO,CAAC5uE,IAAI,WAAW,OAA6B,IAAX,QAAXxE,KAAKs7C,MAAmB,GAAE+3B,QAAQ,CAAC7uE,IAAI,WAAW,OAA6B,IAAX,QAAXxE,KAAKs7C,MAAmB,GAAEg4B,SAAS,CAAC9uE,IAAI,WAAW,OAAkB,KAAXxE,KAAKs7C,KAAW,GAAEA,MAAM,CAAC92C,IAAI,WAAW,OAAOxE,KAAKmzE,OAAO73B,KAAM,EAAClG,IAAI,SAASpsB,GAAKhpB,KAAKmzE,OAAO73B,MAAMtyB,CAAI,GAAE41B,SAAS,CAAK20B,eAAW,OAAOvzE,KAAKmzE,OAAOv0B,QAAS,EAACxJ,IAAI,SAASpsB,GAAKhpB,KAAKmzE,OAAOv0B,SAAS51B,CAAI,KAAGgmB,EAAOhlC,OAAOumC,OAAO,IAAIu5B,GAAGoJ,SAASlkC,GAAQ,IAAI08B,EAAG5B,GAAG+I,OAAOC,EAASC,GAA2C,OAAnC/jC,EAAO08B,GAAGA,EAAG5B,GAAGwG,QAAQ5E,GAAI18B,EAAcA,CAAP,EAAewkC,YAAY9H,IAAK5B,GAAGwG,QAAQ5E,GAAI,IAAf,EAAqB6B,kBAAkB,CAAC3M,KAAK5xB,IAAS,IAAIykC,EAAO3J,GAAG4J,UAAU1kC,EAAOhkB,KAAK6/C,MAAM77B,EAAO27B,WAAW8I,EAAO9I,WAAc37B,EAAO27B,WAAW/J,MAAM5xB,EAAO27B,WAAW/J,KAAK5xB,EAAQ,EAAEg+B,OAAO,KAAK,MAAM,IAAIlD,GAAGgB,WAAW,GAAxB,GAA8B6I,MAAMnJ,GAAKA,GAAK,EAAEoJ,MAAMpJ,GAAS,IAAJA,EAAQqJ,QAAQ,CAACC,EAAGC,IAAKD,GAAI,EAAEC,EAAGrJ,eAAe,CAACF,EAAIC,KAAOX,GAAGuG,QAAQ7F,GAAK,CAACG,WAAWF,EAA5B,EAAkCiJ,UAAUlJ,GAAKV,GAAGuG,QAAQ7F,GAAKwJ,UAAU9H,IAAwC,IAAhC,IAAIkE,EAAO,GAAOzhC,EAAM,CAACu9B,GAAav9B,EAAMxtC,QAAO,CAAC,IAAI+9B,EAAEyP,EAAMp0B,MAAM61D,EAAO38D,KAAKyrB,GAAGyP,EAAMl7B,KAAKlO,MAAMopC,EAAMzP,EAAEkxC,OAAQ,QAAOA,CAAP,EAAe6D,OAAO,CAACC,EAASrrE,KAAgC,mBAAVqrE,IAAsBrrE,EAASqrE,EAASA,GAAS,GAAMpK,GAAG8G,iBAAoB9G,GAAG8G,eAAe,GAAGnkD,EAAI,YAAYq9C,GAAG8G,eAAe,2EAA2E,IAAIR,EAAOtG,GAAGkK,UAAUlK,GAAGjnE,KAAKqpE,OAAWplB,EAAU,EAAE,SAASqtB,EAAWxC,GAA6B,OAApB7H,GAAG8G,iBAAwB/nE,EAAS8oE,EAAS,UAASz2B,EAAKy2B,GAAS,GAAGA,EAAS,OAAIz2B,EAAKk5B,aAAsD,GAA7Cl5B,EAAKk5B,SAAQ,EAAYD,EAAWxC,MAAqB7qB,GAAWspB,EAAOjvE,QAAQgzE,EAAW,KAAO,CAAA/D,EAAOh9D,SAAQ84D,IAAQ,IAAIA,EAAM5jE,KAAK2rE,OAAQ,OAAO/4B,EAAK,MAAMgxB,EAAM5jE,KAAK2rE,OAAO/H,EAAMgI,EAASh5B,EAAjC,GAAhE,EAA0GgxB,MAAM,CAAC5jE,EAAK9B,EAAK6qE,KAAc,IAAqDrmD,EAAjDnoB,EAAkB,MAAbwuE,EAAqBgD,GAAQhD,EAAoB,GAAGxuE,GAAMinE,GAAGjnE,KAAM,MAAM,IAAIinE,GAAGgB,WAAW,IAAS,IAAIjoE,IAAOwxE,EAAO,CAAC,IAAI5H,EAAO3C,GAAG+G,WAAWQ,EAAW,CAACP,cAAa,IAAgD,GAAxCO,EAAW5E,EAAOviD,KAAKc,EAAKyhD,EAAOzhD,KAAQ8+C,GAAGoH,aAAalmD,GAAO,MAAM,IAAI8+C,GAAGgB,WAAW,IAAI,IAAIhB,GAAG0D,MAAMxiD,EAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,GAAK,KAAIoB,EAAM,CAAC5jE,KAAKA,EAAK9B,KAAKA,EAAK6qE,WAAWA,EAAWjB,OAAO,IAAQkE,EAAUhsE,EAAK4jE,MAAMA,GAA4J,OAArJoI,EAAUpI,MAAMA,EAAMA,EAAMrpE,KAAKyxE,EAAazxE,EAAMinE,GAAGjnE,KAAKyxE,EAAkBtpD,IAAMA,EAAKmmD,QAAQjF,EAASlhD,EAAKkhD,OAAOlhD,EAAKkhD,MAAMkE,OAAO38D,KAAKy4D,IAAeoI,CAAP,EAAkBC,QAAQlD,IAAa,IAAI5E,EAAO3C,GAAG+G,WAAWQ,EAAW,CAACP,cAAa,IAAQ,IAAIhH,GAAGoH,aAAazE,EAAOzhD,MAAO,MAAM,IAAI8+C,GAAGgB,WAAW,IAAI,IAAI9/C,EAAKyhD,EAAOzhD,KAASkhD,EAAMlhD,EAAKmmD,QAAYf,EAAOtG,GAAGkK,UAAU9H,GAAOliE,OAAOoH,KAAK04D,GAAG0G,WAAWp9D,SAAQ8D,IAAsC,IAA/B,IAAIixB,EAAQ2hC,GAAG0G,UAAUt5D,GAAYixB,GAAQ,CAAC,IAAIR,EAAKQ,EAAQspC,UAAarB,EAAOzE,SAASxjC,EAAQ+jC,QAAQpC,GAAGiI,YAAY5pC,GAASA,EAAQR,CAAK,KAAG3c,EAAKmmD,QAAQ,KAAK,IAAIrwB,EAAI91B,EAAKkhD,MAAMkE,OAAO9xD,QAAQ4tD,GAAOlhD,EAAKkhD,MAAMkE,OAAOljE,OAAO4zC,EAAI,EAA7B,EAAiC2rB,OAAO,CAACjlD,EAAO5jB,IAAe4jB,EAAO+kD,SAASE,OAAOjlD,EAAO5jB,GAAO8oE,MAAM,CAACxiD,EAAKlf,EAAKw/D,KAAO,IAAiDhjD,EAAtCsiD,GAAG+G,WAAW3mD,EAAK,CAAC1C,QAAO,IAAyBwD,KAASpnB,EAAKklE,GAAKU,SAASt/C,GAAM,IAAItmB,GAAa,MAAPA,GAAmB,OAAPA,EAAa,MAAM,IAAIkmE,GAAGgB,WAAW,IAAI,IAAI6G,EAAQ7H,GAAGyI,UAAU/qD,EAAO5jB,GAAM,GAAG+tE,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,GAAS,IAAInqD,EAAO+kD,SAASG,MAAO,MAAM,IAAI5C,GAAGgB,WAAW,IAAI,OAAOtjD,EAAO+kD,SAASG,MAAMllD,EAAO5jB,EAAKoH,EAAKw/D,EAA9C,EAAoDvgE,OAAO,CAACigB,EAAKlf,KAAQA,OAAYpK,IAAPoK,EAAiBA,EAAK,IAAIA,GAAM,KAAKA,GAAM,MAAa8+D,GAAG4C,MAAMxiD,EAAKlf,EAAK,IAAIwpE,MAAM,CAACtqD,EAAKlf,KAAQA,OAAYpK,IAAPoK,EAAiBA,EAAK,IAAIA,GAAM,KAAQA,GAAM,MAAa8+D,GAAG4C,MAAMxiD,EAAKlf,EAAK,IAAIypE,UAAU,CAACvqD,EAAKlf,KAA0C,IAAlC,IAAI0pE,EAAKxqD,EAAK3d,MAAM,KAASooE,EAAE,GAAWzzE,EAAE,EAAEA,EAAEwzE,EAAKvzE,SAASD,EAAG,GAAIwzE,EAAKxzE,GAAT,CAAqByzE,GAAG,IAAID,EAAKxzE,GAAG,IAAI4oE,GAAG0K,MAAMG,EAAE3pE,EAAsC,CAAhC,MAAM7G,GAAG,GAAY,IAATA,EAAEuuE,MAAU,MAAMvuE,CAAE,CAArE,CAAsE,EAAEywE,MAAM,CAAC1qD,EAAKlf,EAAKw/D,UAAsB,IAALA,IAAkBA,EAAIx/D,EAAKA,EAAK,KAAIA,GAAM,KAAY8+D,GAAG4C,MAAMxiD,EAAKlf,EAAKw/D,IAAMuC,QAAQ,CAACwC,EAAQsF,KAAW,IAAIlL,GAAQ3qE,QAAQuwE,GAAU,MAAM,IAAIzF,GAAGgB,WAAW,IAAI,IAAoDtjD,EAAzCsiD,GAAG+G,WAAWgE,EAAQ,CAACrtD,QAAO,IAAyBwD,KAAK,IAAIxD,EAAQ,MAAM,IAAIsiD,GAAGgB,WAAW,IAAI,IAAIwE,EAAQxG,GAAKU,SAASqL,GAAalD,EAAQ7H,GAAGyI,UAAU/qD,EAAO8nD,GAAS,GAAGqC,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,GAAS,IAAInqD,EAAO+kD,SAASQ,QAAS,MAAM,IAAIjD,GAAGgB,WAAW,IAAI,OAAOtjD,EAAO+kD,SAASQ,QAAQvlD,EAAO8nD,EAAQC,EAA9C,EAAwD5C,OAAO,CAACmI,EAASC,KAAY,IAAmKC,EAAQ/F,EAAvKgG,EAAYnM,GAAKS,QAAQuL,GAAcI,EAAYpM,GAAKS,QAAQwL,GAAcI,EAASrM,GAAKU,SAASsL,GAAc5F,EAASpG,GAAKU,SAASuL,GAAuK,GAArFC,EAAtClL,GAAG+G,WAAWiE,EAAS,CAACttD,QAAO,IAAsBwD,KAAkDikD,EAAtCnF,GAAG+G,WAAWkE,EAAS,CAACvtD,QAAO,IAAsBwD,MAASgqD,IAAU/F,EAAQ,MAAM,IAAInF,GAAGgB,WAAW,IAAI,GAAGkK,EAAQ9I,QAAQ+C,EAAQ/C,MAAO,MAAM,IAAIpC,GAAGgB,WAAW,IAAI,IAAuQqE,EAAnQH,EAASlF,GAAGsF,WAAW4F,EAAQG,GAAczmD,EAASi7C,GAAQj7C,SAASomD,EAASI,GAAa,GAAwB,MAArBxmD,EAASsf,OAAO,GAAU,MAAM,IAAI87B,GAAGgB,WAAW,IAAoD,GAAwB,OAAxEp8C,EAASi7C,GAAQj7C,SAASqmD,EAASE,IAAyBjnC,OAAO,GAAU,MAAM,IAAI87B,GAAGgB,WAAW,IAAiB,IAAIqE,EAASrF,GAAGsF,WAAWH,EAAQC,EAAoB,CAAV,MAAM/qE,GAAI,IAAG6qE,IAAWG,EAAd,CAA+B,IAAIsD,EAAM3I,GAAG0D,MAAMwB,EAAShkE,MAAU2mE,EAAQ7H,GAAG0I,UAAUwC,EAAQG,EAAS1C,GAAO,GAAGd,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,GAA8F,GAArFA,EAAQxC,EAASrF,GAAG0I,UAAUvD,EAAQC,EAASuD,GAAO3I,GAAGyI,UAAUtD,EAAQC,GAAsB,MAAM,IAAIpF,GAAGgB,WAAW6G,GAAS,IAAIqD,EAAQzI,SAASI,OAAQ,MAAM,IAAI7C,GAAGgB,WAAW,IAAI,GAAGhB,GAAGoH,aAAalC,IAAWG,GAAUrF,GAAGoH,aAAa/B,GAAW,MAAM,IAAIrF,GAAGgB,WAAW,IAAI,GAAGmE,IAAU+F,IAASrD,EAAQ7H,GAAGwI,gBAAgB0C,EAAQ,MAAiB,MAAM,IAAIlL,GAAGgB,WAAW6G,GAAU7H,GAAG4H,eAAe1C,GAAU,IAAIgG,EAAQzI,SAASI,OAAOqC,EAASC,EAAQC,EAA4D,CAAlD,MAAM/qE,GAAG,MAAMA,CAAE,CAAxE,QAAgF2lE,GAAG0H,YAAYxC,EAAU,CAA3oB,CAA2oB,EAAEnC,MAAM3iD,IAAO,IAAiD1C,EAAtCsiD,GAAG+G,WAAW3mD,EAAK,CAAC1C,QAAO,IAAyBwD,KAASpnB,EAAKklE,GAAKU,SAASt/C,GAAUc,EAAK8+C,GAAGsF,WAAW5nD,EAAO5jB,GAAU+tE,EAAQ7H,GAAG0I,UAAUhrD,EAAO5jB,GAAK,GAAM,GAAG+tE,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,GAAS,IAAInqD,EAAO+kD,SAASM,MAAO,MAAM,IAAI/C,GAAGgB,WAAW,IAAI,GAAGhB,GAAGoH,aAAalmD,GAAO,MAAM,IAAI8+C,GAAGgB,WAAW,IAAItjD,EAAO+kD,SAASM,MAAMrlD,EAAO5jB,GAAMkmE,GAAGiI,YAAY/mD,EAAf,EAAsB8hD,QAAQ5iD,IAAO,IAAiDc,EAAtC8+C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAO,IAAuBpmD,KAAK,IAAIA,EAAKuhD,SAASO,QAAS,MAAM,IAAIhD,GAAGgB,WAAW,IAAI,OAAO9/C,EAAKuhD,SAASO,QAAQ9hD,EAA7B,EAAoC4hD,OAAO1iD,IAAO,IAAiD1C,EAAtCsiD,GAAG+G,WAAW3mD,EAAK,CAAC1C,QAAO,IAAyBwD,KAAK,IAAIxD,EAAQ,MAAM,IAAIsiD,GAAGgB,WAAW,IAAI,IAAIlnE,EAAKklE,GAAKU,SAASt/C,GAAUc,EAAK8+C,GAAGsF,WAAW5nD,EAAO5jB,GAAU+tE,EAAQ7H,GAAG0I,UAAUhrD,EAAO5jB,GAAK,GAAO,GAAG+tE,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,GAAS,IAAInqD,EAAO+kD,SAASK,OAAQ,MAAM,IAAI9C,GAAGgB,WAAW,IAAI,GAAGhB,GAAGoH,aAAalmD,GAAO,MAAM,IAAI8+C,GAAGgB,WAAW,IAAItjD,EAAO+kD,SAASK,OAAOplD,EAAO5jB,GAAMkmE,GAAGiI,YAAY/mD,EAAf,EAAsBqiD,SAASnjD,IAAO,IAAmCkjD,EAAxBtD,GAAG+G,WAAW3mD,GAAsBc,KAAK,IAAIoiD,EAAM,MAAM,IAAItD,GAAGgB,WAAW,IAAI,IAAIsC,EAAKb,SAASc,SAAU,MAAM,IAAIvD,GAAGgB,WAAW,IAAI,OAAOnB,GAAQ3qE,QAAQ8qE,GAAGzzD,QAAQ+2D,EAAK5lD,QAAQ4lD,EAAKb,SAASc,SAASD,GAAtE,EAA8EgI,KAAK,CAAClrD,EAAKmrD,KAAc,IAAwDrqD,EAA7C8+C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAQiE,IAA6BrqD,KAAK,IAAIA,EAAM,MAAM,IAAI8+C,GAAGgB,WAAW,IAAI,IAAI9/C,EAAKuhD,SAASD,QAAS,MAAM,IAAIxC,GAAGgB,WAAW,IAAI,OAAO9/C,EAAKuhD,SAASD,QAAQthD,EAA7B,EAAoCsqD,MAAMprD,GAAc4/C,GAAGsL,KAAKlrD,GAAK,GAAOqrD,MAAM,CAACrrD,EAAKlf,EAAKqqE,KAAc,IAAIrqD,EAAmH,KAAhCA,EAA9D,iBAANd,EAA2B4/C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAQiE,IAAyBrqD,KAAed,GAAcqiD,SAASC,QAAS,MAAM,IAAI1C,GAAGgB,WAAW,IAAI9/C,EAAKuhD,SAASC,QAAQxhD,EAAK,CAAChgB,KAAU,KAALA,GAAoB,KAAVggB,EAAKhgB,KAAWqgE,UAAUl8C,KAAK3C,OAA1E,EAAmFgpD,OAAO,CAACtrD,EAAKlf,KAAQ8+D,GAAGyL,MAAMrrD,EAAKlf,GAAK,EAAnB,EAA0ByqE,OAAO,CAAC/J,EAAG1gE,KAAQ,IAAIgkC,EAAO86B,GAAGkJ,UAAUtH,GAAI,IAAI18B,EAAQ,MAAM,IAAI86B,GAAGgB,WAAW,GAAGhB,GAAGyL,MAAMvmC,EAAOhkB,KAAKhgB,EAArB,EAA4B0qE,MAAM,CAACxrD,EAAKskD,EAAIC,EAAI4G,KAAc,IAAIrqD,EAAmH,KAAhCA,EAA9D,iBAANd,EAA2B4/C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAQiE,IAAyBrqD,KAAed,GAAcqiD,SAASC,QAAS,MAAM,IAAI1C,GAAGgB,WAAW,IAAI9/C,EAAKuhD,SAASC,QAAQxhD,EAAK,CAACqgD,UAAUl8C,KAAK3C,OAA3C,EAAoDmpD,OAAO,CAACzrD,EAAKskD,EAAIC,KAAO3E,GAAG4L,MAAMxrD,EAAKskD,EAAIC,GAAI,EAAtB,EAA6BmH,OAAO,CAAClK,EAAG8C,EAAIC,KAAO,IAAIz/B,EAAO86B,GAAGkJ,UAAUtH,GAAI,IAAI18B,EAAQ,MAAM,IAAI86B,GAAGgB,WAAW,GAAGhB,GAAG4L,MAAM1mC,EAAOhkB,KAAKwjD,EAAIC,EAAzB,EAA+BoH,SAAS,CAAC3rD,EAAKnW,KAAO,GAAGA,EAAI,EAAG,MAAM,IAAI+1D,GAAGgB,WAAW,IAAI,IAAI9/C,EAA4G,KAAhCA,EAAvD,iBAANd,EAA2B4/C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAO,IAAmBpmD,KAAed,GAAcqiD,SAASC,QAAS,MAAM,IAAI1C,GAAGgB,WAAW,IAAI,GAAGhB,GAAG0D,MAAMxiD,EAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,IAAIhB,GAAG4D,OAAO1iD,EAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,IAAI6G,EAAQ7H,GAAGwI,gBAAgBtnD,EAAK,KAAK,GAAG2mD,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,GAAS3mD,EAAKuhD,SAASC,QAAQxhD,EAAK,CAACqF,KAAKtc,EAAIs3D,UAAUl8C,KAAK3C,OAApD,EAA6DspD,UAAU,CAACpK,EAAG33D,KAAO,IAAIi7B,EAAO86B,GAAGkJ,UAAUtH,GAAI,IAAI18B,EAAQ,MAAM,IAAI86B,GAAGgB,WAAW,GAAG,GAA4B,IAAX,QAAb97B,EAAOsM,OAAoB,MAAM,IAAIwuB,GAAGgB,WAAW,IAAIhB,GAAG+L,SAAS7mC,EAAOhkB,KAAKjX,EAAxB,EAA8BgiE,MAAM,CAAC7rD,EAAKwkD,EAAMC,KAAS,IAAiD3jD,EAAtC8+C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAO,IAAuBpmD,KAAKA,EAAKuhD,SAASC,QAAQxhD,EAAK,CAACqgD,UAAU5wD,KAAK8X,IAAIm8C,EAAMC,IAArD,EAA+D/N,KAAK,CAAC12C,EAAKoxB,EAAMtwC,KAAQ,GAAU,KAAPkf,EAAW,MAAM,IAAI4/C,GAAGgB,WAAW,IAAwJ,IAAI9/C,EAAK,GAA9FhgB,OAAkB,IAANA,EAAkB,IAAIA,EAAkBA,EAAJ,IAA/GswC,EAAoB,iBAAPA,EAAgBwuB,GAAGoI,kBAAkB52B,GAAOA,GAAoE,KAALtwC,EAAU,MAAgB,EAA2B,iBAANkf,EAAgBc,EAAKd,MAAS,CAACA,EAAK4+C,GAAKj2D,UAAUqX,GAAM,IAA4Dc,EAA7C8+C,GAAG+G,WAAW3mD,EAAK,CAACknD,SAAe,OAAN91B,KAA4BtwB,IAAe,CAAV,MAAM7mB,GAAI,CAAC,KAAI6xE,GAAQ,EAAM,GAAS,GAAN16B,EAAU,GAAGtwB,GAAM,GAAS,IAANswB,EAAW,MAAM,IAAIwuB,GAAGgB,WAAW,SAAU9/C,EAAK8+C,GAAG4C,MAAMxiD,EAAKlf,EAAK,GAAGgrE,GAAQ,EAAM,IAAIhrD,EAAM,MAAM,IAAI8+C,GAAGgB,WAAW,IAA2C,GAApChB,GAAG+D,SAAS7iD,EAAKhgB,QAAOswC,IAAO,KAAc,MAANA,IAAcwuB,GAAG0D,MAAMxiD,EAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,IAAIkL,EAAQ,CAAC,IAAIrE,EAAQ7H,GAAG6I,QAAQ3nD,EAAKswB,GAAO,GAAGq2B,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,EAAU,CAAS,IAANr2B,IAAY06B,GAASlM,GAAG+L,SAAS7qD,EAAK,GAAGswB,IAAO,OAAkB,IAAItM,EAAO86B,GAAGmJ,aAAa,CAACjoD,KAAKA,EAAKd,KAAK4/C,GAAGzzD,QAAQ2U,GAAMswB,MAAMA,EAAMyvB,UAAS,EAAKnsB,SAAS,EAAE+rB,WAAW3/C,EAAK2/C,WAAWsL,SAAS,GAAG1zE,OAAM,IAA4L,OAAjLysC,EAAO27B,WAAW/J,MAAM5xB,EAAO27B,WAAW/J,KAAK5xB,IAAW2vB,EAAM,cAA0B,EAANrjB,IAAcwuB,GAAGoM,YAAUpM,GAAGoM,UAAU,CAAC,GAAOhsD,KAAQ4/C,GAAGoM,YAAYpM,GAAGoM,UAAUhsD,GAAM,IAAU8kB,CAAP,EAAeg8B,MAAMh8B,IAAS,GAAG86B,GAAGqM,SAASnnC,GAAS,MAAM,IAAI86B,GAAGgB,WAAW,GAAM97B,EAAOonC,WAASpnC,EAAOonC,SAAS,MAAK,IAAOpnC,EAAO27B,WAAWK,OAAOh8B,EAAO27B,WAAWK,MAAMh8B,EAA4D,CAAnD,MAAM7qC,GAAG,MAAMA,CAAE,CAAlF,QAA0F2lE,GAAG0J,YAAYxkC,EAAO08B,GAAI,CAAA18B,EAAO08B,GAAG,IAAV,EAAgByK,SAASnnC,GAA4B,OAAZA,EAAO08B,GAAWsB,OAAO,CAACh+B,EAAO5oB,EAAOqpD,KAAU,GAAG3F,GAAGqM,SAASnnC,GAAS,MAAM,IAAI86B,GAAGgB,WAAW,GAAG,IAAI97B,EAAO+7B,WAAW/7B,EAAO27B,WAAWqC,OAAQ,MAAM,IAAIlD,GAAGgB,WAAW,IAAI,GAAW,GAAR2E,GAAmB,GAARA,GAAmB,GAARA,EAAW,MAAM,IAAI3F,GAAGgB,WAAW,IAAsF,OAAlF97B,EAAO4P,SAAS5P,EAAO27B,WAAWqC,OAAOh+B,EAAO5oB,EAAOqpD,GAAQzgC,EAAOinC,SAAS,GAAUjnC,EAAO4P,QAAd,EAAwBssB,KAAK,CAACl8B,EAAOnhB,EAAOzH,EAAOjlB,EAAOy9C,KAAY,GAAGz9C,EAAO,GAAGy9C,EAAS,EAAG,MAAM,IAAIkrB,GAAGgB,WAAW,IAAI,GAAGhB,GAAGqM,SAASnnC,GAAS,MAAM,IAAI86B,GAAGgB,WAAW,GAAG,GAA4B,IAAX,QAAb97B,EAAOsM,OAAoB,MAAM,IAAIwuB,GAAGgB,WAAW,GAAG,GAAGhB,GAAG0D,MAAMx+B,EAAOhkB,KAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,IAAI97B,EAAO27B,WAAWO,KAAM,MAAM,IAAIpB,GAAGgB,WAAW,IAAI,IAAIuL,OAAyB,IAAVz3B,EAAsB,GAAIy3B,GAAuC,IAAIrnC,EAAO+7B,SAAU,MAAM,IAAIjB,GAAGgB,WAAW,SAA3ElsB,EAAS5P,EAAO4P,SAA+D,IAAIwsB,EAAUp8B,EAAO27B,WAAWO,KAAKl8B,EAAOnhB,EAAOzH,EAAOjlB,EAAOy9C,GAAiD,OAAnCy3B,IAAQrnC,EAAO4P,UAAUwsB,GAAiBA,CAAP,EAAkBjkD,MAAM,CAAC6nB,EAAOnhB,EAAOzH,EAAOjlB,EAAOy9C,EAAS4wB,KAAU,GAAGruE,EAAO,GAAGy9C,EAAS,EAAG,MAAM,IAAIkrB,GAAGgB,WAAW,IAAI,GAAGhB,GAAGqM,SAASnnC,GAAS,MAAM,IAAI86B,GAAGgB,WAAW,GAAG,GAA4B,IAAX,QAAb97B,EAAOsM,OAAoB,MAAM,IAAIwuB,GAAGgB,WAAW,GAAG,GAAGhB,GAAG0D,MAAMx+B,EAAOhkB,KAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,IAAI97B,EAAO27B,WAAWxjD,MAAO,MAAM,IAAI2iD,GAAGgB,WAAW,IAAO97B,EAAO+7B,UAAuB,KAAb/7B,EAAOsM,OAAYwuB,GAAGkD,OAAOh+B,EAAO,EAAE,GAAG,IAAIqnC,OAAyB,IAAVz3B,EAAsB,GAAIy3B,GAAuC,IAAIrnC,EAAO+7B,SAAU,MAAM,IAAIjB,GAAGgB,WAAW,SAA3ElsB,EAAS5P,EAAO4P,SAA+D,IAAI03B,EAAatnC,EAAO27B,WAAWxjD,MAAM6nB,EAAOnhB,EAAOzH,EAAOjlB,EAAOy9C,EAAS4wB,GAAkD,OAAtC6G,IAAQrnC,EAAO4P,UAAU03B,GAAoBA,CAAP,EAAqBrJ,SAAS,CAACj+B,EAAO5oB,EAAOjlB,KAAU,GAAG2oE,GAAGqM,SAASnnC,GAAS,MAAM,IAAI86B,GAAGgB,WAAW,GAAG,GAAG1kD,EAAO,GAAGjlB,GAAQ,EAAG,MAAM,IAAI2oE,GAAGgB,WAAW,IAAI,GAA4B,IAAX,QAAb97B,EAAOsM,OAAoB,MAAM,IAAIwuB,GAAGgB,WAAW,GAAG,IAAIhB,GAAG4D,OAAO1+B,EAAOhkB,KAAKhgB,QAAQ8+D,GAAG0D,MAAMx+B,EAAOhkB,KAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,IAAI97B,EAAO27B,WAAWsC,SAAU,MAAM,IAAInD,GAAGgB,WAAW,KAAK97B,EAAO27B,WAAWsC,SAASj+B,EAAO5oB,EAAOjlB,EAAzC,EAAkD+rE,KAAK,CAACl+B,EAAO0gC,EAAQvuE,EAAOy9C,EAAS+wB,EAAKr0B,KAAS,GAAc,IAAL,EAALq0B,IAAyB,IAAL,EAANr0B,IAAuC,IAAX,QAAbtM,EAAOsM,OAAoB,MAAM,IAAIwuB,GAAGgB,WAAW,GAAG,GAA4B,IAAX,QAAb97B,EAAOsM,OAAoB,MAAM,IAAIwuB,GAAGgB,WAAW,GAAG,IAAI97B,EAAO27B,WAAWuC,KAAM,MAAM,IAAIpD,GAAGgB,WAAW,IAAI,OAAO97B,EAAO27B,WAAWuC,KAAKl+B,EAAO0gC,EAAQvuE,EAAOy9C,EAAS+wB,EAAKr0B,EAAlE,EAA0E6xB,MAAM,CAACn+B,EAAOnhB,EAAOzH,EAAOjlB,EAAOgvE,IAAiBnhC,GAASA,EAAO27B,WAAWwC,MAAuBn+B,EAAO27B,WAAWwC,MAAMn+B,EAAOnhB,EAAOzH,EAAOjlB,EAAOgvE,GAA7D,EAAyEoG,OAAOvnC,GAAQ,EAAEwnC,MAAM,CAACxnC,EAAOynC,EAAI3tD,KAAO,IAAIkmB,EAAO27B,WAAW6L,MAAO,MAAM,IAAI1M,GAAGgB,WAAW,IAAI,OAAO97B,EAAO27B,WAAW6L,MAAMxnC,EAAOynC,EAAI3tD,EAA1C,EAAgDs3C,SAAS,CAACl2C,EAAK1jB,EAAK,CAAC,KAAoE,GAA/DA,EAAK80C,MAAM90C,EAAK80C,OAAO,EAAE90C,EAAKkzD,SAASlzD,EAAKkzD,UAAU,SAA4B,SAAhBlzD,EAAKkzD,UAAmC,WAAhBlzD,EAAKkzD,SAAqB,MAAM,IAAIx5D,MAAM,0BAA0BsG,EAAKkzD,SAAS,KAAK,IAAI3kC,EAAQia,EAAO86B,GAAGlJ,KAAK12C,EAAK1jB,EAAK80C,OAAkCn6C,EAAlB2oE,GAAGsL,KAAKlrD,GAAsBmG,KAAS5C,EAAI,IAAImwB,WAAWz8C,GAA0J,OAAlJ2oE,GAAGoB,KAAKl8B,EAAOvhB,EAAI,EAAEtsB,EAAO,GAAsB,SAAhBqF,EAAKkzD,SAAmB3kC,EAAIktC,EAAkBx0C,EAAI,GAA2B,WAAhBjnB,EAAKkzD,WAAqB3kC,EAAItH,GAAIq8C,GAAGkB,MAAMh8B,GAAeja,CAAP,EAAY2hD,UAAU,CAACxsD,EAAKpqB,EAAK0G,EAAK,CAAC,KAAKA,EAAK80C,MAAM90C,EAAK80C,OAAO,IAAI,IAAItM,EAAO86B,GAAGlJ,KAAK12C,EAAK1jB,EAAK80C,MAAM90C,EAAKwE,MAAM,GAAgB,iBAANlL,EAAe,CAAC,IAAI2tB,EAAI,IAAImwB,WAAWylB,EAAgBvjE,GAAM,GAAO62E,EAAe7T,EAAkBhjE,EAAK2tB,EAAI,EAAEA,EAAItsB,QAAQ2oE,GAAG3iD,MAAM6nB,EAAOvhB,EAAI,EAAEkpD,OAAe/1E,EAAU4F,EAAKgpE,OAAQ,KAAK,KAAGoH,YAAYC,OAAO/2E,GAA0E,MAAM,IAAII,MAAM,yBAAnF4pE,GAAG3iD,MAAM6nB,EAAOlvC,EAAK,EAAEA,EAAKymB,gBAAW3lB,EAAU4F,EAAKgpE,OAAsD,CAAA1F,GAAGkB,MAAMh8B,EAAT,EAAkB+6B,IAAI,IAAID,GAAG7zD,YAAY6gE,MAAM5sD,IAAO,IAAIuiD,EAAO3C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAO,IAAO,GAAiB,OAAd3E,EAAOzhD,KAAa,MAAM,IAAI8+C,GAAGgB,WAAW,IAAI,IAAIhB,GAAG0D,MAAMf,EAAOzhD,KAAKhgB,MAAO,MAAM,IAAI8+D,GAAGgB,WAAW,IAAI,IAAI6G,EAAQ7H,GAAGwI,gBAAgB7F,EAAOzhD,KAAK,KAAK,GAAG2mD,EAAS,MAAM,IAAI7H,GAAGgB,WAAW6G,GAAS7H,GAAG7zD,YAAYw2D,EAAOviD,IAAtB,EAA4B6sD,yBAAyB,KAAKjN,GAAG0K,MAAM,QAAQ1K,GAAG0K,MAAM,SAAS1K,GAAG0K,MAAM,iBAAT,EAA4BwC,qBAAqB,KAAKlN,GAAG0K,MAAM,QAAQ1K,GAAGY,eAAeZ,GAAG+J,QAAQ,EAAE,GAAG,CAAC3I,KAAK,IAAI,EAAE/jD,MAAM,CAAC6nB,EAAOnhB,EAAOzH,EAAOjlB,EAAO6S,IAAM7S,IAAS2oE,GAAG8K,MAAM,YAAY9K,GAAG+J,QAAQ,EAAE,IAAIzJ,GAAIG,SAAST,GAAG+J,QAAQ,EAAE,GAAGzJ,GAAImB,iBAAiBnB,GAAIG,SAAST,GAAG+J,QAAQ,EAAE,GAAGzJ,GAAI2B,kBAAkBjC,GAAG8K,MAAM,WAAW9K,GAAG+J,QAAQ,EAAE,IAAI/J,GAAG8K,MAAM,YAAY9K,GAAG+J,QAAQ,EAAE,IAAI,IAAIoD,EAAnk8B,WAA2B,GAAkB,iBAARpf,QAAoD,mBAA3BA,OAAM,gBAAgC,CAAC,IAAIqf,EAAa,IAAIt5B,WAAW,GAAG,OAAO,WAAgD,OAArCia,OAAOsf,gBAAgBD,GAAqBA,EAAa,EAAG,CAAC,CAAK,GAAGvX,EAAqB,IAAI,IAAIyX,EAAc1yB,EAAQ,OAAU,OAAO,WAAW,OAAO0yB,EAAa,YAAgB,GAAG,EAAG,CAAW,CAAV,MAAMjzE,GAAI,CAAC,OAAO,WAAWw9D,GAAM,eAAgB,CAAC,CAAos7B0V,GAAkBvN,GAAGwN,aAAa,OAAO,SAASL,GAAenN,GAAGwN,aAAa,OAAO,UAAUL,GAAenN,GAAG0K,MAAM,YAAY1K,GAAG0K,MAAM,eAAT,EAA0B+C,yBAAyB,KAAKzN,GAAG0K,MAAM,SAAS,IAAIgD,EAAU1N,GAAG0K,MAAM,cAAc1K,GAAG0K,MAAM,iBAAiB1K,GAAGoC,MAAM,CAACA,MAAM,KAAK,IAAIlhD,EAAK8+C,GAAGqC,WAAWqL,EAAU,KAAK,MAAU,IAAyO,OAArOxsD,EAAKuhD,SAAS,CAACE,OAAO,CAACjlD,EAAO5jB,KAAQ,IAAI8nE,GAAI9nE,EAASorC,EAAO86B,GAAGkJ,UAAUtH,GAAI,IAAI18B,EAAO,MAAM,IAAI86B,GAAGgB,WAAW,GAAG,IAAI/1C,EAAI,CAACvN,OAAO,KAAK0kD,MAAM,CAACmF,WAAW,QAAQ9E,SAAS,CAACc,SAAS,IAAIr+B,EAAO9kB,OAAsB,OAAf6K,EAAIvN,OAAOuN,EAAWA,CAAP,GAAoB/J,CAAP,GAAc,CAAC,EAAE,gBAA/T,EAAiVysD,sBAAsB,KAAQ9Y,EAAM,MAAWmL,GAAGwN,aAAa,OAAO,QAAQ3Y,EAAM,OAAgBmL,GAAGiD,QAAQ,WAAW,cAAiBpO,EAAM,OAAYmL,GAAGwN,aAAa,OAAO,SAAS,KAAK3Y,EAAM,QAAiBmL,GAAGiD,QAAQ,WAAW,eAAkBpO,EAAM,OAAYmL,GAAGwN,aAAa,OAAO,SAAS,KAAK3Y,EAAM,QAAiBmL,GAAGiD,QAAQ,YAAY,eAAyBjD,GAAGlJ,KAAK,aAAa,GAAckJ,GAAGlJ,KAAK,cAAc,GAAckJ,GAAGlJ,KAAK,cAAc,EAAjC,EAAqC8W,iBAAiB,KAAQ5N,GAAGgB,aAAkBhB,GAAGgB,WAAW,SAAoB4H,EAAM1nD,GAAMhrB,KAAKgrB,KAAKA,EAAKhrB,KAAK23E,SAAS,SAASjF,GAAO1yE,KAAK0yE,MAAMA,CAAM,EAAC1yE,KAAK23E,SAASjF,GAAO1yE,KAAKqC,QAAQ,UAAW,EAACynE,GAAGgB,WAAWnrE,UAAU,IAAIO,MAAM4pE,GAAGgB,WAAWnrE,UAAUuK,YAAY4/D,GAAGgB,WAAW,CAAC,IAAI13D,SAAQvF,IAAOi8D,GAAGiF,cAAclhE,GAAM,IAAIi8D,GAAGgB,WAAWj9D,GAAMi8D,GAAGiF,cAAclhE,GAAM+e,MAAM,2BAA7B,IAAnE,EAA+HgrD,WAAW,KAAK9N,GAAG4N,mBAAmB5N,GAAG0G,UAAU,IAAIxvE,MAAM,MAAM8oE,GAAGoC,MAAMF,GAAM,CAAC,EAAE,KAAKlC,GAAGiN,2BAA2BjN,GAAGkN,uBAAuBlN,GAAGyN,2BAA2BzN,GAAG6G,YAAY,CAAC,MAAQ3E,GAAxB,EAAgChE,KAAK,CAAC5+C,EAAMqe,EAAOllC,KAASunE,GAAG9B,KAAKyI,aAAY,EAAK3G,GAAG4N,mBAAmB/Y,EAAM,MAAUv1C,GAAOu1C,EAAM,MAAUA,EAAM,OAAWl3B,GAAQk3B,EAAM,OAAWA,EAAM,OAAWp8D,GAAOo8D,EAAM,OAAWmL,GAAG2N,uBAAH,EAA4BI,KAAK,KAAK/N,GAAG9B,KAAKyI,aAAY,EAAM,IAAI,IAAIvvE,EAAE,EAAEA,EAAE4oE,GAAGwG,QAAQnvE,OAAOD,IAAI,CAAC,IAAI8tC,EAAO86B,GAAGwG,QAAQpvE,GAAO8tC,GAAiB86B,GAAGkB,MAAMh8B,EAAQ,GAAE8oC,QAAQ,CAACC,EAAQC,KAAY,IAAIhtE,EAAK,EAAgD,OAA3C+sE,IAAQ/sE,GAAM,KAAUgtE,IAAShtE,GAAM,KAAWA,CAAP,EAAaitE,WAAW,CAAC/tD,EAAKguD,KAAuB,IAAInjD,EAAI+0C,GAAGqO,YAAYjuD,EAAKguD,GAAqB,OAAGnjD,EAAIqjD,OAAerjD,EAAI/f,OAAmB,IAAK,EAAEmjE,YAAY,CAACjuD,EAAKguD,KAAuB,IAAiEhuD,GAAzDuiD,EAAO3C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAQ8G,KAAkChuD,IAAe,CAAV,MAAM/lB,GAAI,KAAI4wB,EAAI,CAACtmB,QAAO,EAAM2pE,QAAO,EAAM71E,MAAM,EAAEqB,KAAK,KAAKsmB,KAAK,KAAKlV,OAAO,KAAKqjE,cAAa,EAAMC,WAAW,KAAKC,aAAa,MAAM,IAAI,IAAI9L,EAAO3C,GAAG+G,WAAW3mD,EAAK,CAAC1C,QAAO,IAAOuN,EAAIsjD,cAAa,EAAKtjD,EAAIujD,WAAW7L,EAAOviD,KAAK6K,EAAIwjD,aAAa9L,EAAOzhD,KAAK+J,EAAInxB,KAAKklE,GAAKU,SAASt/C,GAAMuiD,EAAO3C,GAAG+G,WAAW3mD,EAAK,CAACknD,QAAQ8G,IAAsBnjD,EAAIqjD,QAAO,EAAKrjD,EAAI7K,KAAKuiD,EAAOviD,KAAK6K,EAAI/f,OAAOy3D,EAAOzhD,KAAK+J,EAAInxB,KAAK6oE,EAAOzhD,KAAKpnB,KAAKmxB,EAAItmB,OAAqB,MAAdg+D,EAAOviD,IAAsC,CAA3B,MAAM/lB,GAAG4wB,EAAIxyB,MAAM4B,EAAEuuE,KAAM,QAAO39C,CAAP,EAAYyjD,WAAW,CAAChxD,EAAO0C,EAAK6tD,EAAQC,KAAYxwD,EAAsB,iBAARA,EAAiBA,EAAOsiD,GAAGzzD,QAAQmR,GAA4C,IAApC,IAAIpV,EAAM8X,EAAK3d,MAAM,KAAKwgB,UAAgB3a,EAAMjR,QAAO,CAAC,IAAIkR,EAAKD,EAAMmI,MAAM,GAAIlI,EAAJ,CAAkB,IAAI81B,EAAQ2gC,GAAKY,MAAMliD,EAAOnV,GAAM,IAAIy3D,GAAG0K,MAAMrsC,EAAmB,CAAV,MAAMhkC,GAAI,CAAAqjB,EAAO2gB,CAA5E,CAAoF,QAAOA,CAAP,EAAgBswC,WAAW,CAACjxD,EAAO5jB,EAAKsU,EAAW6/D,EAAQC,KAAY,IAAI9tD,EAAK4+C,GAAKY,MAAqB,iBAARliD,EAAiBA,EAAOsiD,GAAGzzD,QAAQmR,GAAQ5jB,GAAUoH,EAAK8+D,GAAGgO,QAAQC,EAAQC,GAAU,OAAOlO,GAAG7/D,OAAOigB,EAAKlf,EAAtB,EAA6B0tE,eAAe,CAAClxD,EAAO5jB,EAAK9D,EAAKi4E,EAAQC,EAASxI,KAAU,IAAItlD,EAAKtmB,EAAQ4jB,IAAQA,EAAsB,iBAARA,EAAiBA,EAAOsiD,GAAGzzD,QAAQmR,GAAQ0C,EAAKtmB,EAAKklE,GAAKY,MAAMliD,EAAO5jB,GAAM4jB,GAAO,IAAIxc,EAAK8+D,GAAGgO,QAAQC,EAAQC,GAAchtD,EAAK8+C,GAAG7/D,OAAOigB,EAAKlf,GAAM,GAAGlL,EAAK,CAAC,GAAgB,iBAANA,EAAe,CAAgC,IAA/B,IAAI6N,EAAI,IAAI3M,MAAMlB,EAAKqB,QAAgBD,EAAE,EAAE6S,EAAIjU,EAAKqB,OAAOD,EAAE6S,IAAM7S,EAAEyM,EAAIzM,GAAGpB,EAAKmU,WAAW/S,GAAGpB,EAAK6N,CAAI,CAAAm8D,GAAGyL,MAAMvqD,EAAU,IAALhgB,GAAU,IAAIgkC,EAAO86B,GAAGlJ,KAAK51C,EAAK,KAAK8+C,GAAG3iD,MAAM6nB,EAAOlvC,EAAK,EAAEA,EAAKqB,OAAO,EAAEquE,GAAQ1F,GAAGkB,MAAMh8B,GAAQ86B,GAAGyL,MAAMvqD,EAAKhgB,EAAM,QAAOggB,CAAP,EAAassD,aAAa,CAAC9vD,EAAO5jB,EAAKwlB,EAAMqe,KAAU,IAAIvd,EAAK4+C,GAAKY,MAAqB,iBAARliD,EAAiBA,EAAOsiD,GAAGzzD,QAAQmR,GAAQ5jB,GAAUoH,EAAK8+D,GAAGgO,UAAU1uD,IAAQqe,GAAYqiC,GAAGwN,aAAa3D,QAAM7J,GAAGwN,aAAa3D,MAAM,IAAG,IAAInJ,EAAIV,GAAG+J,QAAQ/J,GAAGwN,aAAa3D,QAAQ,GAAirB,OAA9qB7J,GAAGY,eAAeF,EAAI,CAAC5J,KAAK5xB,IAASA,EAAO+7B,UAAS,CAAhB,EAAuBC,MAAMh8B,IAAYvH,GAAQA,EAAO5Z,QAAQ4Z,EAAO5Z,OAAO1sB,QAAQsmC,EAAO,GAAI,EAAEyjC,KAAK,CAACl8B,EAAOnhB,EAAOzH,EAAOjlB,EAAO6S,KAAuB,IAAhB,IAAIo3D,EAAU,EAAUlqE,EAAE,EAAEA,EAAEC,EAAOD,IAAI,CAAC,IAAIoE,EAAO,IAAIA,EAAO8jB,GAA6C,CAArC,MAAMjlB,GAAG,MAAM,IAAI2lE,GAAGgB,WAAW,GAAI,SAAYlqE,IAAT0E,GAAgC,IAAZ8lE,EAAe,MAAM,IAAItB,GAAGgB,WAAW,GAAG,GAAGxlE,QAAkC,MAAM8lE,IAAYv9C,EAAOzH,EAAOllB,GAAGoE,CAAO,CAA+C,OAA5C8lE,IAAWp8B,EAAOhkB,KAAKqgD,UAAUl8C,KAAK3C,OAAa4+C,CAAP,EAAkBjkD,MAAM,CAAC6nB,EAAOnhB,EAAOzH,EAAOjlB,EAAO6S,KAAO,IAAI,IAAI9S,EAAE,EAAEA,EAAEC,EAAOD,IAAK,IAAIumC,EAAO5Z,EAAOzH,EAAOllB,GAAyC,CAArC,MAAMiD,GAAG,MAAM,IAAI2lE,GAAGgB,WAAW,GAAI,CAA6C,OAAzC3pE,IAAQ6tC,EAAOhkB,KAAKqgD,UAAUl8C,KAAK3C,OAAatrB,CAAP,IAAmB4oE,GAAG8K,MAAM1qD,EAAKlf,EAAKw/D,EAA1B,EAAgCmO,cAAc7kE,IAAM,GAAGA,EAAI8kE,UAAU9kE,EAAI+kE,UAAU/kE,EAAIs5D,MAAMt5D,EAAI25D,SAAS,OAAO,EAAK,GAA0B,oBAAhB9M,eAA6B,MAAM,IAAIzgE,MAAM,oMAAyM,IAAG0+D,EAA6I,MAAM,IAAI1+D,MAAM,iDAAtJ,IAAI4T,EAAI25D,SAAS3B,GAAmBlN,EAAM9qD,EAAIlK,MAAK,GAAMkK,EAAI65D,UAAU75D,EAAI25D,SAAStsE,MAA4C,CAArC,MAAMgD,GAAG,MAAM,IAAI2lE,GAAGgB,WAAW,GAAI,CAAuE,EAAEgO,eAAe,CAACtxD,EAAO5jB,EAAKgG,EAAImuE,EAAQC,KAAY,SAASe,IAAiB/4E,KAAKg5E,aAAY,EAAMh5E,KAAKi5E,OAAO,EAAG,CAA2qE,GAA3qEF,EAAep5E,UAAU6E,IAAI,SAA4Bs8C,GAAK,KAAGA,EAAI9gD,KAAKmB,OAAO,GAAG2/C,EAAI,GAA1B,CAA8C,IAAIo4B,EAAYp4B,EAAI9gD,KAAKm5E,UAAcC,EAASt4B,EAAI9gD,KAAKm5E,UAAU,EAAE,OAAOn5E,KAAKq5E,OAAOD,GAAUF,EAAlG,CAA+G,EAACH,EAAep5E,UAAU25E,cAAc,SAAsCD,GAAQr5E,KAAKq5E,OAAOA,CAAO,EAACN,EAAep5E,UAAU45E,YAAY,WAAsC,IAAI7Y,EAAI,IAAIC,eAAyD,GAA1CD,EAAIE,KAAK,OAAOh3D,GAAI,GAAO82D,EAAIG,KAAK,QAAWH,EAAIpB,QAAQ,KAAKoB,EAAIpB,OAAO,KAAkB,MAAboB,EAAIpB,QAAc,MAAM,IAAIp/D,MAAM,iBAAiB0J,EAAI,aAAa82D,EAAIpB,QAAQ,IAAmEpvC,EAA/DspD,EAAW79B,OAAO+kB,EAAI+Y,kBAAkB,mBAAkCC,GAAgBxpD,EAAOwwC,EAAI+Y,kBAAkB,mBAA4B,UAATvpD,EAAqBypD,GAAUzpD,EAAOwwC,EAAI+Y,kBAAkB,sBAA+B,SAATvpD,EAAoBipD,EAAU,QAAcO,IAAeP,EAAUK,GAAW,IAAwsBI,EAAU55E,KAAK45E,EAAUN,eAAcF,IAAW,IAAIpvD,EAAMovD,EAASD,EAAcxpD,GAAKypD,EAAS,GAAGD,EAAU,EAAgI,GAA9HxpD,EAAIlV,KAAKwU,IAAIU,EAAI6pD,EAAW,QAAyC,IAA5BI,EAAUX,OAAOG,KAAwBQ,EAAUX,OAAOG,GAAj5B,EAACvpD,EAAKlb,KAAM,GAAGkb,EAAKlb,EAAG,MAAM,IAAIzU,MAAM,kBAAkB2vB,EAAK,KAAKlb,EAAG,4BAA4B,GAAGA,EAAG6kE,EAAW,EAAE,MAAM,IAAIt5E,MAAM,QAAQs5E,EAAW,uCAAuC,IAAI9Y,EAAI,IAAIC,eAAwP,GAAzOD,EAAIE,KAAK,MAAMh3D,GAAI,GAAU4vE,IAAaL,GAAUzY,EAAImZ,iBAAiB,QAAQ,SAAShqD,EAAK,IAAIlb,GAAI+rD,EAAIK,aAAa,cAAiBL,EAAIoZ,kBAAkBpZ,EAAIoZ,iBAAiB,sCAAsCpZ,EAAIG,KAAK,QAAWH,EAAIpB,QAAQ,KAAKoB,EAAIpB,OAAO,KAAkB,MAAboB,EAAIpB,QAAc,MAAM,IAAIp/D,MAAM,iBAAiB0J,EAAI,aAAa82D,EAAIpB,QAAQ,YAAkB1+D,IAAf8/D,EAAIM,SAA6B,IAAIpjB,WAAW8iB,EAAIM,UAAU,IAAgB8K,GAAmBpL,EAAII,cAAc,IAAG,EAAM,EAAmOiZ,CAAM/vD,EAAM2F,SAA2C,IAA5BiqD,EAAUX,OAAOG,GAAuB,MAAM,IAAIl5E,MAAM,iBAAiB,OAAO05E,EAAUX,OAAOG,EAAxB,KAAuCO,GAAWH,IAAYL,EAAUK,EAAW,EAAEA,EAAWx5E,KAAKq5E,OAAO,GAAGl4E,OAAOg4E,EAAUK,EAAW9gE,EAAI,gFAA+E1Y,KAAKg6E,QAAQR,EAAWx5E,KAAKi6E,WAAWd,EAAUn5E,KAAKg5E,aAAY,CAAK,EAA2B,oBAAhBrY,eAA4B,CAAC,IAAIlB,EAAsB,KAAK,sHAAsH,IAAIma,EAAU,IAAIb,EAAe/uE,OAAOkwE,iBAAiBN,EAAU,CAACz4E,OAAO,CAACqD,IAAI,WAAoD,OAArCxE,KAAKg5E,aAAah5E,KAAKu5E,cAAqBv5E,KAAKg6E,OAAQ,GAAEb,UAAU,CAAC30E,IAAI,WAAoD,OAArCxE,KAAKg5E,aAAah5E,KAAKu5E,cAAqBv5E,KAAKi6E,UAAW,KAAI,IAAI/hE,EAAW,CAAC0gE,UAAS,EAAMnL,SAASmM,EAAW,MAAS1hE,EAAW,CAAC0gE,UAAS,EAAMhvE,IAAIA,GAAK,IAAIohB,EAAK8+C,GAAG2O,WAAWjxD,EAAO5jB,EAAKsU,EAAW6/D,EAAQC,GAAa9/D,EAAWu1D,SAAUziD,EAAKyiD,SAASv1D,EAAWu1D,SAAiBv1D,EAAWtO,MAAKohB,EAAKyiD,SAAS,KAAKziD,EAAKphB,IAAIsO,EAAWtO,KAAII,OAAOkwE,iBAAiBlvD,EAAK,CAAC2iD,UAAU,CAACnpE,IAAI,WAAW,OAAOxE,KAAKytE,SAAStsE,MAAO,KAAI,IAAIwpE,EAAW,CAAC,EAA6kB,OAAlkB3gE,OAAOoH,KAAK4Z,EAAK2/C,YAAiBv3D,SAAQtS,IAAM,IAAImwC,EAAGjmB,EAAK2/C,WAAW7pE,GAAK6pE,EAAW7pE,GAAK,WAAoD,OAAvBgpE,GAAG6O,cAAc3tD,GAAaimB,EAAG1rC,MAAM,KAAKC,UAAW,CAApG,IAAuGmlE,EAAWO,KAAM,CAACl8B,EAAOnhB,EAAOzH,EAAOjlB,EAAOy9C,KAAYkrB,GAAG6O,cAAc3tD,GAAM,IAAIyiD,EAASz+B,EAAOhkB,KAAKyiD,SAAS,GAAG7uB,GAAU6uB,EAAStsE,OAAO,OAAO,EAAE,IAAIkvB,EAAK5V,KAAKwU,IAAIw+C,EAAStsE,OAAOy9C,EAASz9C,GAAQ,GAAGssE,EAASppE,MAAO,IAAI,IAAInD,EAAE,EAAEA,EAAEmvB,EAAKnvB,IAAK2sB,EAAOzH,EAAOllB,GAAGusE,EAAS7uB,EAAS19C,QAAS,IAAQA,EAAE,EAAEA,EAAEmvB,EAAKnvB,IAAK2sB,EAAOzH,EAAOllB,GAAGusE,EAASjpE,IAAIo6C,EAAS19C,GAAI,OAAOmvB,CAAP,EAAcrF,EAAK2/C,WAAWA,EAAkB3/C,CAAP,EAAamvD,oBAAoB,CAAC3yD,EAAO5jB,EAAKgG,EAAImuE,EAAQC,EAAS9X,EAAOC,EAAQia,EAAe5K,EAAO6K,KAAa,IAAIC,EAAS12E,EAAK+lE,GAAQ3qE,QAAQ8pE,GAAKY,MAAMliD,EAAO5jB,IAAO4jB,EAAsD,SAAS+yD,EAAYC,GAAW,SAASC,EAAOD,GAAcH,GAAUA,IAAgBD,GAAgBtQ,GAAG4O,eAAelxD,EAAO5jB,EAAK42E,EAAUzC,EAAQC,EAASxI,GAAWtP,GAAOA,IAAS4F,IAAyB,CAAG4U,QAAQC,uBAAuBH,EAAUF,EAASG,GAAO,KAAQta,GAAQA,IAAU2F,IAAA,KAAmC2U,EAAOD,EAAW,CAAA3U,KAAqC,iBAALj8D,EAA1w5B,SAAmBA,EAAIs2D,EAAOC,EAAQya,GAAU,IAAIC,EAAqC,MAAMjxE,EAAQi1D,EAAUj1D,GAAI,SAASkxE,GAAyq5BN,IAA36tDt2E,IAAky0B,sBAAsB0F,EAAI,6BAAtCkxE,GAAjw0BnZ,GAAMz9D,GAA25tDq2E,EAArl5B,IAAI38B,WAAWk9B,IAAiBD,GAAI/U,IAAyB,IAAC,SAASiV,GAAO,IAAG5a,EAAwB,KAAK,sBAAsBv2D,EAAI,YAA9Cu2D,GAA2D,IAAK0a,GAAIhV,IAAsB,CAAw44BmV,CAAUpxE,EAAI4wE,EAAkCra,GAAcoa,EAAY3wE,EAAK,EAAEqxE,UAAU,IAAYlpD,OAAOkpD,WAAWlpD,OAAOmpD,cAAcnpD,OAAOopD,iBAAiBppD,OAAOqpD,YAAaC,QAAQ,IAAW,SAAStpD,OAAOwuC,SAASpH,SAAUmiB,WAAW,GAAGC,cAAc,YAAYC,cAAc,CAAC9kE,EAAMwpD,EAAOC,KAAWD,EAAOA,GAAM,SAAWC,EAAQA,GAAO,SAAW,IAAI8a,EAAUnR,GAAGmR,YAAY,IAAI,IAAIQ,EAAYR,EAAUra,KAAKkJ,GAAGuR,UAAUvR,GAAGwR,WAAuC,CAA3B,MAAMn3E,GAAG,OAAOg8D,EAAQh8D,EAAG,CAAAs3E,EAAYC,gBAAiB,KAAKhjE,EAAI,eAAsB+iE,EAAYn2E,OAAUq2E,kBAAkB7R,GAAGyR,cAAxB,EAAyCE,EAAYG,UAAW,KAAK,IAA8BC,EAAvBJ,EAAYn2E,OAA0Bu2E,YAAY,CAAC/R,GAAGyR,eAAe,aAAiBO,EAAMD,EAAYE,YAAYjS,GAAGyR,eAAmBlxC,EAAG,EAAEtjB,EAAK,EAAEsM,EAAM3c,EAAMvV,OAAO,SAASs5E,IAAkB,GAAN1zD,EAAQm5C,IAAcC,GAAU,CAAAzpD,EAAMtD,SAAQ8W,IAAO,IAAI8xD,EAAWF,EAAMh3E,IAAIglE,GAAGqO,YAAYjuD,GAAMlV,OAAOy4D,SAASvjD,GAAM8xD,EAAWJ,UAAW,OAAKvxC,EAAWtjB,GAAMsM,GAAMonD,GAAQ,EAAGuB,EAAW7b,QAAS,KAAKp5C,IAAUsjB,EAAGtjB,GAAMsM,GAAMonD,GAAQ,CAA1D,IAA+DoB,EAAY1b,QAAQA,CAApB,EAA8Bsb,EAAYtb,QAAQA,CAApB,EAA6B8b,gBAAgB,CAACvlE,EAAMwpD,EAAOC,KAAWD,EAAOA,GAAM,SAAWC,EAAQA,GAAO,SAAW,IAAI8a,EAAUnR,GAAGmR,YAAY,IAAI,IAAIQ,EAAYR,EAAUra,KAAKkJ,GAAGuR,UAAUvR,GAAGwR,WAAuC,CAA3B,MAAMn3E,GAAG,OAAOg8D,EAAQh8D,EAAG,CAAAs3E,EAAYC,gBAAgBvb,EAAQsb,EAAYG,UAAW,KAAK,IAAIM,EAAGT,EAAYn2E,OAAO,IAAI,IAAIu2E,EAAYK,EAAGL,YAAY,CAAC/R,GAAGyR,eAAe,WAAuC,CAA3B,MAAMp3E,GAAc,YAAXg8D,EAAQh8D,EAAU,KAAI23E,EAAMD,EAAYE,YAAYjS,GAAGyR,eAAmBlxC,EAAG,EAAEtjB,EAAK,EAAEsM,EAAM3c,EAAMvV,OAAO,SAASs5E,IAAkB,GAAN1zD,EAAQm5C,IAAcC,GAAU,CAAAzpD,EAAMtD,SAAQ8W,IAAO,IAAIiyD,EAAWL,EAAMt3E,IAAI0lB,GAAMiyD,EAAWP,UAAW,KAAQ9R,GAAGqO,YAAYjuD,GAAMkuD,QAAQtO,GAAG8C,OAAO1iD,GAAM4/C,GAAG4O,eAAe5P,GAAKS,QAAQr/C,GAAM4+C,GAAKU,SAASt/C,GAAMiyD,EAAW72E,QAAO,GAAK,GAAK,KAAM+kC,EAAWtjB,GAAMsM,GAAMonD,GAAQ,EAAG0B,EAAWhc,QAAS,KAAKp5C,IAAUsjB,EAAGtjB,GAAMsM,GAAMonD,GAAQ,CAA1D,IAA+DoB,EAAY1b,QAAQA,CAApB,EAA8Bsb,EAAYtb,QAAQA,CAApB,GAAkCic,GAAS,CAACC,iBAAiB,EAAEC,YAAY,SAASC,EAAMryD,EAAKsyD,GAAY,GAAG1T,GAAKC,MAAM7+C,GAAO,OAAOA,EAAK,IAAIomC,EAAI,IAAY,MAATisB,EAAcjsB,EAAIwZ,GAAGC,UAAU,CAAC,IAAI0S,EAAU3S,GAAGkJ,UAAUuJ,GAAO,IAAIE,EAAU,MAAM,IAAI3S,GAAGgB,WAAW,GAAGxa,EAAImsB,EAAUvyD,IAAK,IAAgB,GAAbA,EAAK/oB,OAAU,CAAC,IAAIq7E,EAAY,MAAM,IAAI1S,GAAGgB,WAAW,IAAI,OAAOxa,CAAI,QAAOwY,GAAKY,MAAMpZ,EAAIpmC,EAAM,EAACwyD,OAAO,SAAS9tC,EAAK1kB,EAAKuD,GAAK,IAAI,IAAI2nD,EAAKxmC,EAAK1kB,EAA0G,CAApG,MAAM/lB,GAAG,GAAGA,GAAGA,EAAE6mB,MAAM89C,GAAKj2D,UAAUqX,KAAQ4+C,GAAKj2D,UAAUi3D,GAAGzzD,QAAQlS,EAAE6mB,OAAQ,OAAO,GAAG,MAAM7mB,CAAE,CAAw/B,OAAx/Bs/D,EAAOh2C,GAAK,GAAG2nD,EAAK5K,IAAI/G,EAAOh2C,EAAI,GAAG,GAAG,EAAEg2C,EAAOh2C,EAAI,GAAG,GAAG2nD,EAAK9G,IAAI7K,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAKpqE,KAAKy4D,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAK7G,MAAM9K,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAK5G,IAAI/K,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAK3G,IAAIhL,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAKvK,KAAKpH,EAAOh2C,EAAI,IAAI,GAAG,EAAEg4C,GAAQ,CAAC2P,EAAK/kD,OAAO,GAAGm1C,GAAW4P,EAAK/kD,MAAM5V,KAAKwb,IAAIuvC,KAAa,EAAEA,GAAW,GAA2D,EAAxD/qD,KAAKwU,KAAKxU,KAAK69B,MAAMktB,GAAW,YAAY,eAAiB,KAAK/qD,KAAKsY,MAAMyyC,OAAeA,KAAa,IAAI,cAAc,EAAE,IAAI/B,EAAOh2C,EAAI,IAAI,GAAGg4C,GAAQ,GAAGhC,EAAOh2C,EAAI,IAAI,GAAGg4C,GAAQ,GAAGhC,EAAOh2C,EAAI,IAAI,GAAG,KAAKg2C,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAKtG,OAAOrL,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAK1G,MAAM/wB,UAAU,IAAI,EAAE8lB,EAAOh2C,EAAI,IAAI,GAAG,EAAEg2C,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAKzG,MAAMhxB,UAAU,IAAI,EAAE8lB,EAAOh2C,EAAI,IAAI,GAAG,EAAEg2C,EAAOh2C,EAAI,IAAI,GAAG2nD,EAAKxG,MAAMjxB,UAAU,IAAI,EAAE8lB,EAAOh2C,EAAI,IAAI,GAAG,EAAEg4C,GAAQ,CAAC2P,EAAK9G,MAAM,GAAG9I,GAAW4P,EAAK9G,KAAK7zD,KAAKwb,IAAIuvC,KAAa,EAAEA,GAAW,GAA2D,EAAxD/qD,KAAKwU,KAAKxU,KAAK69B,MAAMktB,GAAW,YAAY,eAAiB,KAAK/qD,KAAKsY,MAAMyyC,OAAeA,KAAa,IAAI,cAAc,EAAE,IAAI/B,EAAOh2C,EAAI,IAAI,GAAGg4C,GAAQ,GAAGhC,EAAOh2C,EAAI,IAAI,GAAGg4C,GAAQ,GAAU,CAAE,EAACkX,QAAQ,SAASC,EAAK5tC,EAAOj7B,EAAIunC,EAAMl1B,GAAQ,IAAIyH,EAAOg1C,EAAOx+D,MAAMu4E,EAAKA,EAAK7oE,GAAK+1D,GAAGqD,MAAMn+B,EAAOnhB,EAAOzH,EAAOrS,EAAIunC,EAAO,EAACuhC,aAAQj8E,EAAU4D,IAAI,WAAqE,OAA1D43E,GAASS,SAAS,EAAUpZ,EAAO2Y,GAASS,QAAQ,GAAG,EAAc,EAACC,OAAO,SAASla,GAA+B,OAAlBD,EAAaC,EAAgB,EAACma,gBAAgB,SAASrR,GAAI,IAAI18B,EAAO86B,GAAGkJ,UAAUtH,GAAI,IAAI18B,EAAO,MAAM,IAAI86B,GAAGgB,WAAW,GAAG,OAAO97B,CAAO,GAA0rE,SAASguC,GAAiB3sD,GAAM,OAAOA,GAAM,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,MAAM,IAAIsY,UAAU,sBAAsBtY,GAAO,CAAwI,IAAI4sD,QAAiBr8E,EAAU,SAASs8E,GAAiBta,GAA0B,IAArB,IAAI7tC,EAAI,GAAO5nB,EAAEy1D,EAAUC,EAAO11D,IAAI4nB,GAAKkoD,GAAiBpa,EAAO11D,MAAM,OAAO4nB,CAAI,KAAIooD,GAAqB,CAAC,EAAMC,GAAgB,CAAC,EAAMC,GAAiB,CAAC,EAAiW,SAASC,GAAYC,EAAcC,GAAW,IAA/Ip4D,EAAmJq4D,GAAnJr4D,EAA4L,SAAS/iB,GAASrC,KAAK4D,KAAK45E,EAAUx9E,KAAKqC,QAAQA,EAAQ,IAAIuqB,EAAM,IAAI1sB,MAAMmC,GAASuqB,WAAiBhsB,IAARgsB,IAAmB5sB,KAAK4sB,MAAM5sB,KAAKuuB,WAAW,KAAK3B,EAAM7Z,QAAQ,qBAAqB,IAAK,EAA1lB,SAA+BnP,GAAM,QAAGhD,IAAYgD,EAAM,MAAM,YAAWA,EAAKA,EAAKmP,QAAQ,iBAAiB,MAAgBkB,WAAW,EAAuD,CAA6CypE,CAAuKF,GAApI,WAAgB,OAAOp4D,EAAK7f,MAAMvF,KAAKwF,UAAW,GAAmgB,OAAzOi4E,EAAW99E,UAAUqK,OAAOC,OAAOszE,EAAc59E,WAAW89E,EAAW99E,UAAUuK,YAAYuzE,EAAWA,EAAW99E,UAAU4uB,SAAS,WAAW,YAAkB3tB,IAAfZ,KAAKqC,QAA4BrC,KAAK4D,KAAiB5D,KAAK4D,KAAK,KAAK5D,KAAKqC,OAAS,EAAQo7E,CAAW,KAAIE,QAAa/8E,EAAU,SAASg9E,GAAkBv7E,GAAS,MAAM,IAAIs7E,GAAat7E,EAAS,KAAIw7E,QAAcj9E,EAAU,SAASk9E,GAAmBz7E,GAAS,MAAM,IAAIw7E,GAAcx7E,EAAS,CAAw7B,SAAS07E,GAAaC,EAAQC,EAAmBl6E,EAAQ,CAAC,GAAG,KAAK,mBAAmBk6E,GAAqB,MAAM,IAAIt1C,UAAU,2DAA2D,IAAI/kC,EAAKq6E,EAAmBr6E,KAAmG,GAA1Fo6E,GAASJ,GAAkB,SAASh6E,EAAK,iDAAoDw5E,GAAgBzsE,eAAeqtE,GAAS,CAAC,GAAGj6E,EAAQm6E,6BAA8B,OAAYN,GAAkB,yBAAyBh6E,EAAK,UAAY,CAA6E,GAA7Ew5E,GAAgBY,GAASC,SAA0BZ,GAAiBW,GAAYb,GAAqBxsE,eAAeqtE,GAAS,CAAC,IAAIxX,EAAU2W,GAAqBa,UAAgBb,GAAqBa,GAASxX,EAAUpzD,SAAQmvC,GAAIA,KAAM,CAAC,CAAojB,IAAI47B,GAAgB,GAAOC,GAAmB,CAAC,CAAC,EAAE,CAACx1E,WAAMhI,GAAW,CAACgI,MAAM,MAAM,CAACA,OAAM,GAAM,CAACA,OAAM,IAAQ,SAASy1E,GAAeC,GAAWA,EAAO,GAAG,KAAMF,GAAmBE,GAAQ7W,WAAU2W,GAAmBE,QAAQ19E,EAAUu9E,GAAgB1qE,KAAK6qE,GAAS,CAA8Z,IAAIC,GAAeD,IAAaA,GAAQV,GAAkB,oCAAoCU,GAAeF,GAAmBE,GAAQ11E,OAApI21E,GAAoJ31E,IAAQ,OAAOA,GAAO,UAAKhI,EAAU,OAAO,EAAE,KAAK,KAAK,OAAO,EAAE,KAAK,EAAK,OAAO,EAAE,KAAK,EAAM,OAAO,EAAE,QAAS,IAAI09E,EAAOH,GAAgBh9E,OAAOg9E,GAAgB5jE,MAAM6jE,GAAmBj9E,OAA2D,OAApDi9E,GAAmBE,GAAQ,CAAC7W,SAAS,EAAE7+D,MAAMA,GAAc01E,EAAtP,EAAiQ,SAASE,GAA2BC,GAAS,OAAOz+E,KAAA,aAAqB0jE,EAAQ+a,GAAS,GAAI,CAAgX,SAASC,GAA0B96E,EAAKi+B,GAAO,OAAOA,GAAO,KAAK,EAAE,OAAO,SAAS48C,GAAS,OAAOz+E,KAAA,aAAqB2jE,EAAQ8a,GAAS,GAAI,EAAC,KAAK,EAAE,OAAO,SAASA,GAAS,OAAOz+E,KAAA,aAAqB4jE,EAAQ6a,GAAS,GAAI,EAAC,QAAQ,MAAM,IAAI91C,UAAU,uBAAuB/kC,GAAO,CAA+V,SAAS+6E,GAAeC,GAAa,KAAMA,EAAYz9E,QAAO,CAAC,IAAIyhE,EAAIgc,EAAYrkE,MAAcqkE,EAAYrkE,KAAM/W,CAAIo/D,EAAK,CAAC,CAA6vG,SAAS6e,GAAQC,EAAI9e,EAAI/6C,GAAM,OAAG65D,EAAI/V,SAAS,KAA5L,SAAuB+V,EAAI9e,EAAI/6C,GAAM,IAAIg0B,EAAE8iB,EAAO,WAAW+iB,GAAK,OAAO75D,GAAMA,EAAK1mB,OAAO06C,EAAEt2C,MAAM,KAAK,CAACq9D,GAAKhvD,OAAOiU,IAAOg0B,EAAEj5C,KAAK,KAAKggE,EAAK,CAA4D+e,CAAcD,EAAI9e,EAAI/6C,GAAaquE,GAAkBtzB,GAAKr9D,MAAM,KAAKsiB,EAAM,CAA+gB,IAAIg6D,QAAiBjhF,EAAU,SAASkhF,GAAYx5E,GAAM,IAAIs6D,EAAImf,GAAez5E,GAAU05E,EAAG9E,GAAiBta,GAAgB,OAAX6F,GAAM7F,GAAYof,CAAG,CAAw8B,SAASC,GAA4Br+E,EAAKi+B,EAAMqgD,GAAQ,OAAOrgD,GAAO,KAAK,EAAE,OAAOqgD,EAAO,SAA2BzD,GAAS,OAAOnb,EAAMmb,EAAS,EAAC,SAA2BA,GAAS,OAAO5b,EAAO4b,EAAS,EAAC,KAAK,EAAE,OAAOyD,EAAO,SAA4BzD,GAAS,OAAOlb,EAAOkb,GAAS,EAAG,EAAC,SAA4BA,GAAS,OAAOjb,EAAQib,GAAS,EAAG,EAAC,KAAK,EAAE,OAAOyD,EAAO,SAA4BzD,GAAS,OAAOhb,EAAOgb,GAAS,EAAG,EAAC,SAA4BA,GAAS,OAAO/a,EAAQ+a,GAAS,EAAG,EAAC,QAAQ,MAAM,IAAI91C,UAAU,yBAAyB/kC,GAAO,CAAu4J,SAASu+E,GAAsBnE,EAAQoE,GAAW,IAAIj+D,EAAKi5D,GAAgBY,GAAqG,YAAzFp9E,IAAYujB,GAAMy5D,GAAkBwE,EAAU,qBAAqBN,GAAY9D,IAAiB75D,CAAK,CAA+jH,SAASk+D,GAA0BhyD,GAAM,IAAqG,OAAjGmxC,EAAW8gB,KAAKjyD,EAAKxC,EAAOtH,WAAW,QAAQ,IAAIo+C,GAA2BnD,EAAW3zC,QAAe,CAAY,CAAV,MAAM1pB,GAAI,CAAC,CAA+kB,IAAIq+E,GAAI,CAAC,EAAoE,SAASC,KAAgB,IAAIA,GAAcv1C,QAAQ,CAAC,IAAsHmC,EAAI,CAAC,KAAO,WAAW,QAAU,WAAW,KAAO,IAAI,IAAM,IAAI,KAAO,iBAAiB,MAAnL,iBAAXqzC,WAAqBA,UAAUC,WAAWD,UAAUC,UAAU,IAAI,KAAK5vE,QAAQ,IAAI,KAAK,SAAkH,EAA7SqsD,GAAa,kBAAyT,IAAI,IAAIjiC,KAAKqlD,QAAiB5hF,IAAT4hF,GAAIrlD,UAAsBkS,EAAIlS,GAAQkS,EAAIlS,GAAGqlD,GAAIrlD,GAAG,IAAI+P,EAAQ,GAAG,IAAI,IAAI/P,KAAKkS,EAAKnC,EAAQz5B,KAAK0pB,EAAE,IAAIkS,EAAIlS,IAAIslD,GAAcv1C,QAAQA,CAAQ,QAAOu1C,GAAcv1C,OAAQ,CAA8gF,SAAS61C,GAAa13E,GAAM,OAAOA,EAAK,GAAI,IAAIA,EAAK,KAAM,GAAGA,EAAK,KAAM,EAAG,CAA6F,IAAI23E,GAAkB,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAQC,GAAqB,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAi1L,IAAInR,GAAO,SAAStqD,EAAO5jB,EAAKoH,EAAK6/D,GAAUrjD,IAAQA,EAAOxnB,MAAKA,KAAKwnB,OAAOA,EAAOxnB,KAAKksE,MAAM1kD,EAAO0kD,MAAMlsE,KAAKmxE,QAAQ,KAAKnxE,KAAKoB,GAAG0oE,GAAGyG,YAAYvwE,KAAK4D,KAAKA,EAAK5D,KAAKgL,KAAKA,EAAKhL,KAAKusE,SAAS,CAAC,EAAEvsE,KAAK2qE,WAAW,CAAC,EAAE3qE,KAAK6qE,KAAKA,CAAK,EAA6vB,SAASiB,GAAmBoX,EAAQC,EAAYhiF,GAAQ,IAAI4S,EAAI5S,EAAO,EAAEA,EAAOkiE,EAAgB6f,GAAS,EAAME,EAAQ,IAAIpiF,MAAM+S,GAASsvE,EAAgBvgB,EAAkBogB,EAAQE,EAAQ,EAAEA,EAAQjiF,QAAsD,OAA3CgiF,IAAYC,EAAQjiF,OAAOkiF,GAAuBD,CAAQ,CAAj+Bp5E,OAAOkwE,iBAAiBpI,GAAOnyE,UAAU,CAACurE,KAAK,CAAC1mE,IAAI,WAAW,OAAxF,UAA+FxE,KAAKgL,KAA0B,EAACoqC,IAAI,SAASpsB,GAAKA,EAAIhpB,KAAKgL,MAA1J,IAAyKhL,KAAKgL,OAAM,GAAU,GAAEmc,MAAM,CAAC3iB,IAAI,WAAW,OAAjM,UAAwMxE,KAAKgL,KAA4B,EAACoqC,IAAI,SAASpsB,GAAKA,EAAIhpB,KAAKgL,MAArQ,IAAqRhL,KAAKgL,OAAM,GAAW,GAAE6tE,SAAS,CAACr0E,IAAI,WAAW,OAAOslE,GAAG0D,MAAMxtE,KAAKgL,KAAM,GAAE4tE,SAAS,CAACp0E,IAAI,WAAW,OAAOslE,GAAG+D,SAAS7tE,KAAKgL,KAAM,KAAI8+D,GAAGgI,OAAOA,GAAOhI,GAAG8N,aAApl9B,WAA0D,IAAzB,IAAI/nC,EAAM,IAAI7uC,MAAM,KAAaE,EAAE,EAAEA,EAAE,MAAMA,EAAG2uC,EAAM3uC,GAAGitB,OAAOC,aAAaltB,GAAG+7E,GAAiBptC,CAAM,CAAy98ByzC,GAAwB3F,GAAahf,EAAM,aAAiB2e,GAAYp9E,MAAM,gBAAgB29E,GAAclf,EAAM,cAAkB2e,GAAYp9E,MAAM,iBAAvm1By+D,EAAM,oBAAxU,WAA2C,IAAZ,IAAI/rD,EAAM,EAAU1R,EAAE,EAAEA,EAAEk9E,GAAmBj9E,SAASD,OAA8BN,IAAxBw9E,GAAmBl9E,MAAkB0R,EAAO,OAAOA,CAAM,EAAgO+rD,EAAM,gBAAtO,WAA2B,IAAI,IAAIz9D,EAAE,EAAEA,EAAEk9E,GAAmBj9E,SAASD,EAAG,QAA2BN,IAAxBw9E,GAAmBl9E,GAAgB,OAAOk9E,GAAmBl9E,GAAI,OAAO,IAAK,EAA2p1B2gF,GAAiBljB,EAAM,iBAAqB2e,GAAYp9E,MAAM,oBAAqlB,IAAyzWqjF,GAArzWC,GAAc,CAAC,GAA37lF,WAAgC/2D,EAAI,yCAAyCk1C,IAAO,EAAG,EAA83lF,GAA93lF,WAAoCl1C,EAAI,6CAA6Ck1C,IAAO,EAAG,EAA6zlF,EAA7zlF,SAAwBG,EAAU/B,EAAS0jB,EAAK70C,GAAM+yB,GAAM,qBAAqBgB,EAAab,GAAW,SAAS,CAAC/B,EAAS4C,EAAa5C,GAAU,mBAAmB0jB,EAAK70C,EAAK+zB,EAAa/zB,GAAM,oBAAqB,EAAwnlF,EAAxnlF,SAAmCve,GAAM,OAAOq0C,GAAQr0C,EAAK,IAAI,EAAG,EAAkllF,EAA/+kF,SAA4BuyC,GAAK,IAAIxN,EAAK,IAAI6R,GAAcrE,GAAsJ,OAA7IxN,EAAKwS,eAAcxS,EAAKsS,YAAW,GAAMV,MAAyB5R,EAAKyS,cAAa,GAAOhB,GAAgBpzD,KAAK2hD,GAAjQ,SAA0BA,GAAMA,EAAK2R,SAAU,CAAwND,CAAiB1R,GAAaA,EAAKiT,mBAAoB,EAAoxkF,EAA1lhF,WAA4Bqb,GAAU,GAAtP,SAA0BtuB,GAAM,GAAGA,EAAK8S,gBAAgB9S,EAAK2S,eAAe,CAAC,IAAIT,EAAWlS,EAAKmS,iBAAoBD,GAAY4uB,GAAkB5uB,EAAlB4uB,CAA8B9gC,EAAK8R,QAAQsB,GAAsBpT,EAAK8R,OAAQ,CAAC,CAAwEwB,CAAtB7B,GAAgBtsD,OAA6BquD,GAAc,CAAE,EAAgghF,EAAh7gF,WAAwC,IAAI+a,EAAO/a,GAAc,IAAI+a,EAAuB,OAAfriB,EAAY,GAAU,EAAE,IAAIlM,EAAK,IAAI6R,GAAc0c,GAAQvuB,EAAK6S,iBAAiB0b,GAAQ,IAAIC,EAAWxuB,EAAKgS,WAAW,IAAIwc,EAA2B,OAAftiB,EAAY,GAAUqiB,EAA2D,IAApD,IAAIE,EAAU7iF,MAAMrB,UAAU0E,MAAMzB,KAAK4C,WAAmBtE,EAAE,EAAEA,EAAE2iF,EAAU1iF,OAAOD,IAAI,CAAC,IAAI4iF,EAAWD,EAAU3iF,GAAG,GAAgB,IAAb4iF,GAAgBA,IAAaF,EAAY,MAAM,IAAIG,EAAkB3uB,EAAKwN,IAAI,GAAG,GAAGohB,GAAiBF,EAAWF,EAAWG,GAA4C,OAAxBziB,EAAYwiB,GAAmBH,CAAQ,CAAwB,OAAxBriB,EAAYsiB,GAAmBD,CAAO,EAA44/E,EAA54/E,WAAwC,IAAIA,EAAO/a,GAAc,IAAI+a,EAAuB,OAAfriB,EAAY,GAAU,EAAE,IAAIlM,EAAK,IAAI6R,GAAc0c,GAAQvuB,EAAK6S,iBAAiB0b,GAAQ,IAAIC,EAAWxuB,EAAKgS,WAAW,IAAIwc,EAA2B,OAAftiB,EAAY,GAAUqiB,EAA2D,IAApD,IAAIE,EAAU7iF,MAAMrB,UAAU0E,MAAMzB,KAAK4C,WAAmBtE,EAAE,EAAEA,EAAE2iF,EAAU1iF,OAAOD,IAAI,CAAC,IAAI4iF,EAAWD,EAAU3iF,GAAG,GAAgB,IAAb4iF,GAAgBA,IAAaF,EAAY,MAAM,IAAIG,EAAkB3uB,EAAKwN,IAAI,GAAG,GAAGohB,GAAiBF,EAAWF,EAAWG,GAA4C,OAAxBziB,EAAYwiB,GAAmBH,CAAQ,CAAwB,OAAxBriB,EAAYsiB,GAAmBD,CAAO,EAAw2+E,EAAInb,GAAsB,EAAl4+E,WAA0B,IAAIpT,EAAKyR,GAAgBtsD,MAAU66C,GAAMuM,GAAM,yBAAyB,IAAIiB,EAAIxN,EAAK8R,OAAqJ,MAA1I9R,EAAK2S,iBAAgBlB,GAAgBpzD,KAAK2hD,GAAMA,EAAKyS,cAAa,GAAMzS,EAAKsS,YAAW,GAAOV,MAAyB4B,GAAchG,EAAUA,CAAI,EAAuo+E,EAAvo+E,SAAsBA,EAAIt6D,EAAKg/D,GAAkH,MAA7F,IAAIL,GAAcrE,GAAUoF,KAAK1/D,EAAKg/D,GAAYsB,GAAchG,EAAIoE,KAA+BpE,CAAI,EAA6/9E,GAA7/9E,WAAsC,OAAOoE,EAAuB,EAAy99E,EAAhqhF,SAA4BpE,GAA0C,MAAjCgG,KAAeA,GAAchG,GAAUA,CAAI,EAAumhF,EAArmkC,SAA4B8I,EAAG+K,EAAIoG,GAAST,GAASS,QAAQA,EAAQ,IAAI,IAAI7tC,EAAOotC,GAASW,gBAAgBrR,GAAI,OAAO+K,GAAK,KAAK,EAA0B,OAAnB3tD,EAAIszD,GAAS53E,OAAa,GAAU,GAA2BslE,GAAGmJ,aAAajkC,EAAOlmB,GAAsB4iD,GAAG,KAAK,EAAE,KAAK,EAA6K,KAAK,EAAE,KAAK,EAAE,OAAO,EAAvL,KAAK,EAAE,OAAO18B,EAAOsM,MAAM,KAAK,EAAG,IAAIxyB,EAAIszD,GAAS53E,MAAwB,OAAlBwqC,EAAOsM,OAAOxyB,EAAW,EAAE,KAAK,EAA+D,OAAxDA,EAAIszD,GAAS53E,MAAmB++D,EAAOz6C,EAAT,GAAqB,GAAG,EAAS,EAAyB,KAAK,GAAG,KAAK,EAAyC,QAAS,OAAO,GAA7C,KAAK,EAAe,OAAJ,GAAn26C26C,EAAOwgB,MAAqB,GAAu06C,IAAW,EAAgH,CAAzF,MAAM9/E,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAA+gjC,GAA/gjC,SAA0BhH,EAAG0Y,EAAGvH,GAAST,GAASS,QAAQA,EAAQ,IAAI,IAAI7tC,EAAOotC,GAASW,gBAAgBrR,GAAI,OAAO0Y,GAAI,KAAK,MAAM,KAAK,MAAyC,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAoP,KAAK,MAAyC,KAAK,MAAO,OAAIp1C,EAAO47B,IAAqB,GAAV,GAA3R,KAAK,MAAO,IAAI57B,EAAO47B,IAAI,OAAO,GAAG,IAAIyZ,EAAKjI,GAAS53E,MAAwB,OAAlBi/D,EAAO4gB,GAAM,GAAG,EAAS,EAAE,KAAK,MAAO,OAAIr1C,EAAO47B,KAAqB,IAAV,GAAa,KAAK,MAA+B,OAApByZ,EAAKjI,GAAS53E,MAAaslE,GAAG0M,MAAMxnC,EAAOo1C,EAAGC,GAAkG,QAAQ1iB,GAAM,qBAAqByiB,GAA8F,CAAzF,MAAMjgF,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAAq2hC,GAAr2hC,SAA4B6J,EAAMryD,EAAKlf,GAAM,IAAoL,OAAhLkf,EAAKkyD,GAASU,OAAO5yD,GAAMA,EAAKkyD,GAASE,YAAYC,EAAMryD,GAAyD,OAAnDA,EAAK4+C,GAAKj2D,UAAUqX,IAAcA,EAAK/oB,OAAO,KAAS+oB,EAAKA,EAAKowB,OAAO,EAAEpwB,EAAK/oB,OAAO,IAAG2oE,GAAG0K,MAAMtqD,EAAKlf,EAAK,GAAU,CAA2F,CAAzF,MAAM7G,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAAyjhC,EAAzjhC,SAA2B6J,EAAMryD,EAAKoxB,EAAMuhC,GAAST,GAASS,QAAQA,EAAQ,IAAI3yD,EAAKkyD,GAASU,OAAO5yD,GAAMA,EAAKkyD,GAASE,YAAYC,EAAMryD,GAAM,IAAIlf,EAAK6xE,EAAQT,GAAS53E,MAAM,EAAE,OAAOslE,GAAGlJ,KAAK12C,EAAKoxB,EAAMtwC,GAAM0gE,EAA4F,CAAzF,MAAMvnE,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAA6xgC,GAA7xgC,SAA2BxoD,EAAKuD,GAAK,IAA+B,OAA3BvD,EAAKkyD,GAASU,OAAO5yD,GAAakyD,GAASM,OAAO5S,GAAGsL,KAAKlrD,EAAKuD,EAA8F,CAAzF,MAAMtpB,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAA6mgC,EAA7mgC,SAAkC8R,EAAc5gF,EAAKysB,EAAKo0D,EAASC,GAAW,EAA4jgC,GAAp45B,SAAgC1G,EAAQp6E,EAAKysB,EAAKs0D,EAAUC,GAAY,IAAI/iD,EAAMm7C,GAAiB3sD,GAAkC0tD,GAAaC,EAAQ,CAACp6E,KAAlDA,EAAKs5E,GAAiBt5E,GAAsC,aAAe,SAASihF,GAAI,QAAQA,CAAG,EAAC,WAAa,SAASjG,EAAYlqE,GAAG,OAAOA,EAAEiwE,EAAUC,CAAW,EAAC,eAAiB,EAAE,qBAAuB,SAASnG,GAAS,IAAI1b,EAAK,GAAU,IAAP1yC,EAAU0yC,EAAKO,OAAW,GAAU,IAAPjzC,EAAU0yC,EAAKQ,MAAY,IAAU,IAAPlzC,EAA2B,MAAM,IAAIsY,UAAU,8BAA8B/kC,GAAnEm/D,EAAKU,CAAoE,QAAOzjE,KAAA,aAAqB+iE,EAAK0b,GAAS58C,GAAQ,EAACijD,mBAAmB,MAAO,EAA424B,GAAvs2B,SAAiC9G,EAAQp6E,GAAkCm6E,GAAaC,EAAQ,CAACp6E,KAAlDA,EAAKs5E,GAAiBt5E,GAAsC,aAAe,SAAS06E,GAAQ,IAAI0D,EAAGzD,GAAcD,GAA+B,OAAvBD,GAAeC,GAAe0D,CAAG,EAAC,WAAa,SAASpD,EAAYh2E,GAAO,OAAO21E,GAAe31E,EAAO,EAAC,eAAiB,EAAE,qBAAuB41E,GAA2BsG,mBAAmB,MAAO,EAAo31B,EAAzl1B,SAAiC9G,EAAQp6E,EAAKysB,GAAM,IAAIwR,EAAMm7C,GAAiB3sD,GAAkC0tD,GAAaC,EAAQ,CAACp6E,KAAlDA,EAAKs5E,GAAiBt5E,GAAsC,aAAe,SAASgF,GAAO,OAAOA,CAAM,EAAC,WAAa,SAASg2E,EAAYh2E,GAAO,OAAOA,CAAM,EAAC,eAAiB,EAAE,qBAAuB81E,GAA0B96E,EAAKi+B,GAAOijD,mBAAmB,MAAO,EAAsx0B,EAA1wrB,SAAoClhF,EAAKmhF,EAASC,EAAgBrpB,EAAUspB,EAAWh0C,GAAI,IAAIi0C,EAA30D,SAA6BtyE,EAAMuyE,GAA2B,IAAb,IAAIpwE,EAAM,GAAW7T,EAAE,EAAEA,EAAE0R,EAAM1R,IAAK6T,EAAMtB,KAAKgwD,GAAQ0hB,GAAc,GAAGjkF,IAAI,OAAO6T,CAAM,CAAwsDqwE,CAAoBL,EAASC,GAAiBphF,EAAKs5E,GAAiBt5E,GAAMqhF,EAAtiC,SAAiCtpB,EAAU0pB,GAAyL,IAArW3D,EAAI9e,EAAS0iB,EAA4VC,GAAhL5pB,EAAUuhB,GAAiBvhB,IAAiDgQ,SAAS,MAA9Q+V,EAAwS/lB,EAApSiH,EAA8SyiB,EAArSC,EAAS,GAAU,WAA+D,OAApDA,EAASnkF,OAAO,EAAE6I,OAAOumC,OAAO+0C,EAAS9/E,WAAkBi8E,GAAQC,EAAI9e,EAAI0iB,EAAU,GAAsM4Q,GAAkB7Q,GAAuJ,MAArG,mBAAJE,GAAgB3H,GAAkB,2CAA2CjiB,EAAU,KAAK0pB,GAAoBE,CAAG,CAAyrBC,CAAwB7pB,EAAUspB,GAApjF,SAA4BrhF,EAAKgF,EAAM68E,GAAiB9mB,EAAOhuD,eAAe/M,UAAUhD,IAAY6kF,QAAc7kF,IAAY+9D,EAAO/6D,GAAM8hF,oBAAe9kF,IAAY+9D,EAAO/6D,GAAM8hF,cAAcD,KAAe7H,GAAkB,gCAAgCh6E,EAAK,WAA10B,SAA6B+hF,EAAMC,EAAWxD,GAAW,QAAGxhF,IAAY+kF,EAAMC,GAAYF,cAAc,CAAC,IAAIG,EAASF,EAAMC,GAAYD,EAAMC,GAAY,WAAyP,OAA1OD,EAAMC,GAAYF,cAAc/0E,eAAenL,UAAUrE,SAASy8E,GAAkB,aAAawE,EAAU,iDAAiD58E,UAAUrE,OAAO,uBAAuBwkF,EAAMC,GAAYF,cAAc,MAAaC,EAAMC,GAAYF,cAAclgF,UAAUrE,QAAQoE,MAAMvF,KAAKwF,UAAW,EAACmgF,EAAMC,GAAYF,cAAc,GAAGC,EAAMC,GAAYF,cAAcG,EAASd,UAAUc,CAAS,CAAC,CAAkRC,CAAoBnnB,EAAO/6D,EAAKA,GAAS+6D,EAAOhuD,eAAe80E,IAAe7H,GAAkB,uFAAuF6H,EAAa,MAAM9mB,EAAO/6D,GAAM8hF,cAAcD,GAAc78E,IAAW+1D,EAAO/6D,GAAMgF,OAAShI,IAAY6kF,IAAc9mB,EAAO/6D,GAAM6hF,aAAaA,GAAe,CAAu9DM,CAAmBniF,GAAK,YAAtnB,SAA+BvB,EAAQ8Q,GAAO,IAAI6yE,EAAa,GAAOC,EAAK,CAAC,EAAmN,MAArB9yE,EAAMC,SAAlM,SAAS8yE,EAAM59E,GAAS29E,EAAK39E,IAAiB80E,GAAgB90E,KAAiB+0E,GAAiB/0E,GAAO+0E,GAAiB/0E,GAAM8K,QAAQ8yE,IAAcF,EAAavyE,KAAKnL,GAAM29E,EAAK39E,IAAM,GAAK,IAA2B,IAAIu5E,GAAiBx/E,EAAQ,KAAK2jF,EAAa1yE,IAAIwuE,IAAalxE,KAAK,CAAC,OAAQ,CAA8Qu1E,CAAsB,eAAeviF,EAAK,wBAAwBshF,EAAU,GAACH,EAAS,GAA5qS,SAAuCqB,EAAQC,EAAeC,GAA0F,SAASC,EAAWC,GAAgB,IAAIC,EAAyhS,SAASvB,GAAU,IAAIwB,EAAiB,CAACxB,EAAS,GAAG,MAAMtxE,OAAOsxE,EAAS7gF,MAAM,IAAwG,OAA1qE,SAA6BT,EAAKgF,EAAM68E,GAAkB9mB,EAAOhuD,eAAe/M,IAAOk6E,GAAmB,4CAA0Cl9E,IAAY+9D,EAAO/6D,GAAM8hF,oBAAe9kF,IAAY6kF,EAAc9mB,EAAO/6D,GAAM8hF,cAAcD,GAAc78E,GAAW+1D,EAAO/6D,GAAMgF,EAAM+1D,EAAO/6D,GAAMmhF,SAASU,EAAc,CAAqwDkB,CAAoB/iF,EAAz4J,SAA8Bw+E,EAAU8C,EAAS0B,EAAUC,EAAeC,GAAe,IAAI/B,EAASG,EAAS/jF,OAAU4jF,EAAS,GAAGnH,GAAkB,kFAA4K,IAA1F,IAAImJ,EAAgC,OAAd7B,EAAS,IAAuB,OAAZ0B,EAAqBI,GAAqB,EAAc9lF,EAAE,EAAEA,EAAEgkF,EAAS/jF,SAASD,EAAG,GAAiB,OAAdgkF,EAAShkF,SAA4CN,IAAjCskF,EAAShkF,GAAG4jF,mBAA+B,CAACkC,GAAqB,EAAK,KAAM,CAAC,IAAIC,EAA2B,SAAnB/B,EAAS,GAAGthF,KAAkBsjF,EAAiBnC,EAAS,EAAMoC,EAAU,IAAInmF,MAAMkmF,GAAsBE,EAAgB,GAAOxI,EAAY,GAAG,OAAO,WAAoM,IAAIyI,EAA1L7hF,UAAUrE,SAAS+lF,GAAkBtJ,GAAkB,YAAYwE,EAAU,gBAAgB58E,UAAUrE,OAAO,wBAAwB+lF,EAAiB,UAAUtI,EAAYz9E,OAAO,EAAgBimF,EAAgBjmF,OAAO4lF,EAAkB,EAAE,EAAEK,EAAgB,GAAGN,EAAiBC,IAAmBM,EAAUnC,EAAS,GAAT,WAA0BtG,EAAY5+E,MAAMonF,EAAgB,GAAGC,GAAU,IAAI,IAAInmF,EAAE,EAAEA,EAAEgmF,IAAmBhmF,EAAGimF,EAAUjmF,GAAGgkF,EAAShkF,EAAE,GAAX,WAA4B09E,EAAYp5E,UAAUtE,IAAIkmF,EAAgB3zE,KAAK0zE,EAAUjmF,IAAsD,SAASomF,EAAOtF,GAAI,GAAGgF,EAAsBrI,GAAeC,QAAkB,IAAI,IAAI19E,EAAE6lF,EAAkB,EAAE,EAAE7lF,EAAEgkF,EAAS/jF,OAAOD,IAAI,CAAC,IAAIqmF,EAAU,IAAJrmF,EAAMmmF,EAAUF,EAAUjmF,EAAE,GAAuC,OAAjCgkF,EAAShkF,GAAG4jF,oBAA2BI,EAAShkF,GAAG4jF,mBAAmByC,EAAQ,CAAC,GAAGN,EAAS,OAAO/B,EAAS,GAAT,aAA4BlD,EAAK,QAAOsF,EAAtWT,EAAethF,MAAM,KAAK6hF,GAAuV,CAAC,CAAu5GI,CAAqB5jF,EAAK8iF,EAAiB,KAAKzB,EAAWh0C,GAAI8zC,EAAS,GAAS,EAAG,CAA1sSuB,CAAkBE,GAAmBC,EAAiBtlF,SAASilF,EAAQjlF,QAAQ28E,GAAmB,mCAAmC,IAAI,IAAI58E,EAAE,EAAEA,EAAEklF,EAAQjlF,SAASD,EAAG68E,GAAaqI,EAAQllF,GAAGulF,EAAiBvlF,GAAK,CAArVklF,EAAQhzE,SAAQ,SAAS9K,GAAM+0E,GAAiB/0E,GAAM+9E,CAAe,IAAgR,IAAIG,EAAe,IAAIxlF,MAAMqlF,EAAellF,QAAYsmF,EAAkB,GAAOC,EAAW,EAAErB,EAAejzE,SAAQ,CAACu0E,EAAGzmF,KAAQk8E,GAAgBzsE,eAAeg3E,GAAKnB,EAAetlF,GAAGk8E,GAAgBuK,IAASF,EAAkBh0E,KAAKk0E,GAAQxK,GAAqBxsE,eAAeg3E,KAAKxK,GAAqBwK,GAAI,IAAGxK,GAAqBwK,GAAIl0E,MAAK,KAAK+yE,EAAetlF,GAAGk8E,GAAgBuK,KAAMD,IAA2BD,EAAkBtmF,QAAQolF,EAAWC,EAAgB,IAAG,IAAM,IAAIiB,EAAkBtmF,QAAQolF,EAAWC,EAAiB,CAAuvQoB,CAA8B,GAAG1C,EAA6M,EAAotqB,EAA1ppB,SAAmCV,EAAc5gF,EAAKysB,EAAKo0D,EAASC,GAAU9gF,EAAKs5E,GAAiBt5E,IAAqB,IAAZ8gF,IAAeA,EAAS,YAAW,IAAI7iD,EAAMm7C,GAAiB3sD,GAAUw3D,EAAaj/E,GAAOA,EAAM,GAAc,IAAX67E,EAAa,CAAC,IAAIqD,EAAS,GAAG,EAAEz3D,EAAKw3D,EAAcj/E,GAAOA,GAAOk/E,IAAWA,CAAU,KAAIC,EAAenkF,EAAK+nE,SAAS,YAA8QoS,GAAayG,EAAc,CAAC5gF,KAAKA,EAAK,aAAeikF,EAAa,WAAvQE,EAA2B,SAASnJ,EAAYh2E,GAAwC,OAAX5I,KAAK4D,KAAagF,IAAQ,CAAE,EAAiB,SAASg2E,EAAYh2E,GAAwC,OAAX5I,KAAK4D,KAAagF,CAAM,EAA2F,eAAiB,EAAE,qBAAuBq5E,GAA4Br+E,EAAKi+B,EAAiB,IAAX4iD,GAAcK,mBAAmB,MAAO,EAA84nB,EAA94nB,SAAuC9G,EAAQgK,EAAcpkF,GAAM,IAAmHqkF,EAAnG,CAACrjB,UAAUhnB,WAAWinB,WAAWE,YAAYD,WAAWE,YAAYC,aAAaC,cAAiC8iB,GAAe,SAASE,EAAiB5J,GAAyB,IAAIvb,EAAKW,EAAYrzC,EAAK0yC,EAA3Cub,IAAe,GAA6Cx+E,EAAKijE,EAAKub,EAAO,GAAG,OAAO,IAAI2J,EAAGp6D,EAAO/tB,EAAKuwB,EAAM,CAA4B0tD,GAAaC,EAAQ,CAACp6E,KAAlDA,EAAKs5E,GAAiBt5E,GAAsC,aAAeskF,EAAiB,eAAiB,EAAE,qBAAuBA,GAAkB,CAAChK,8BAA6B,GAAO,EAA64mB,EAA74mB,SAAsCF,EAAQp6E,GAAkC,IAAIukF,EAAuB,iBAAvDvkF,EAAKs5E,GAAiBt5E,IAA+Cm6E,GAAaC,EAAQ,CAACp6E,KAAKA,EAAK,aAAe,SAASgF,GAAO,IAAiCsC,EAA7B/J,EAAOuiE,EAAQ96D,GAAO,GAAW,GAAGu/E,EAA4C,IAA3B,IAAIC,EAAex/E,EAAM,EAAU1H,EAAE,EAAEA,GAAGC,IAASD,EAAE,CAAC,IAAImnF,EAAez/E,EAAM,EAAE1H,EAAE,GAAGA,GAAGC,GAAgC,GAAxB0hE,EAAOwlB,GAAmB,CAAC,IAA8CC,EAAc3lB,EAAaylB,EAA7DC,EAAeD,QAA+ExnF,IAANsK,EAAiBA,EAAIo9E,GAAmBp9E,GAAKijB,OAAOC,aAAa,GAAGljB,GAAKo9E,GAAcF,EAAeC,EAAe,CAAE,CAAC,KAAK,CAAC,IAAIhxE,EAAE,IAAIrW,MAAMG,GAAQ,IAAQD,EAAE,EAAEA,EAAEC,IAASD,EAAGmW,EAAEnW,GAAGitB,OAAOC,aAAay0C,EAAOj6D,EAAM,EAAE1H,IAAIgK,EAAImM,EAAEzG,KAAK,GAAI,CAAa,OAAb63D,GAAM7/D,GAAcsC,CAAI,EAAC,WAAa,SAAS0zE,EAAYh2E,GAAUA,aAAiBguE,cAAahuE,EAAM,IAAIg1C,WAAWh1C,IAAqB,IAAI2/E,EAAkC,iBAAP3/E,EAAqB2/E,GAAqB3/E,aAAiBg1C,YAAYh1C,aAAiB4/E,mBAAmB5/E,aAAiBg8D,WAAYgZ,GAAkB,yCAA2J,IAAIz8E,GAAnHgnF,GAAiBI,EAAgC,IAAIllB,EAAgBz6D,GAAwB,IAAIA,EAAMzH,UAAmCyhE,EAAI8B,GAAQ,EAAEvjE,EAAO,GAA0B,GAAvBuiE,EAAQd,GAAK,GAAGzhE,EAAUgnF,GAAiBI,EAAqBplB,EAAav6D,EAAMg6D,EAAI,EAAEzhE,EAAO,QAAQ,GAAGonF,EAAqB,IAAI,IAAIrnF,EAAE,EAAEA,EAAEC,IAASD,EAAE,CAAC,IAAIunF,EAAS7/E,EAAMqL,WAAW/S,GAAMunF,EAAS,MAAKhgB,GAAM7F,GAAKgb,GAAkB,2DAA0D/a,EAAOD,EAAI,EAAE1hE,GAAGunF,CAAS,MAAM,IAAQvnF,EAAE,EAAEA,EAAEC,IAASD,EAAG2hE,EAAOD,EAAI,EAAE1hE,GAAG0H,EAAM1H,GAAwD,OAAlC,OAAd09E,GAAoBA,EAAYnrE,KAAKg1D,GAAM7F,GAAYA,CAAI,EAAC,eAAiB,EAAE,qBAAuB4b,GAA2BsG,mBAAmB,SAASliB,GAAK6F,GAAM7F,EAAK,GAAG,EAAorjB,EAAprjB,SAAuCob,EAAQ0K,EAAS9kF,GAAkC,IAAI+kF,EAAaC,EAAaC,EAAQC,EAAejnD,EAAjFj+B,EAAKs5E,GAAiBt5E,GAA+E,IAAX8kF,GAAcC,EAAa7kB,EAAc8kB,EAAa3kB,EAAc6kB,EAAe1kB,EAAiBykB,EAAS,IAAIrlB,EAAS3hC,EAAM,GAAqB,IAAX6mD,IAAcC,EAAatkB,EAAcukB,EAAarkB,GAAcukB,EAAetkB,GAAiBqkB,EAAS,IAAInlB,EAAS7hC,EAAM,GAAEk8C,GAAaC,EAAQ,CAACp6E,KAAKA,EAAK,aAAe,SAASgF,GAA0F,IAAnF,IAAoDsC,EAAhD/J,EAAOuiE,EAAQ96D,GAAO,GAAOmgF,EAAKF,IAAsBT,EAAex/E,EAAM,EAAU1H,EAAE,EAAEA,GAAGC,IAASD,EAAE,CAAC,IAAImnF,EAAez/E,EAAM,EAAE1H,EAAEwnF,EAAS,GAAGxnF,GAAGC,GAAqC,GAA7B4nF,EAAKV,GAAgBxmD,GAAU,CAAC,IAAmDymD,EAAcK,EAAaP,EAA7DC,EAAeD,QAAoFxnF,IAANsK,EAAiBA,EAAIo9E,GAAmBp9E,GAAKijB,OAAOC,aAAa,GAAGljB,GAAKo9E,GAAcF,EAAeC,EAAeK,CAAS,CAAC,CAAa,OAAbjgB,GAAM7/D,GAAcsC,CAAI,EAAC,WAAa,SAAS0zE,EAAYh2E,GAA0B,iBAAPA,GAAkBg1E,GAAkB,6CAA6Ch6E,GAAM,IAAIzC,EAAO2nF,EAAelgF,GAAWg6D,EAAI8B,GAAQ,EAAEvjE,EAAOunF,GAAqI,OAA3HhlB,EAAQd,GAAK,GAAGzhE,GAAQ0gC,EAAM+mD,EAAahgF,EAAMg6D,EAAI,EAAEzhE,EAAOunF,GAA2B,OAAd9J,GAAoBA,EAAYnrE,KAAKg1D,GAAM7F,GAAYA,CAAI,EAAC,eAAiB,EAAE,qBAAuB4b,GAA2BsG,mBAAmB,SAASliB,GAAK6F,GAAM7F,EAAK,GAAG,EAAg2gB,GAAh2gB,SAAgCob,EAAQp6E,GAAkCm6E,GAAaC,EAAQ,CAACgL,QAAO,EAAKplF,KAA9DA,EAAKs5E,GAAiBt5E,GAAkD,eAAiB,EAAE,aAAe,WAA4B,EAAC,WAAa,SAASg7E,EAAYlqE,GAAoB,GAAG,EAA8ogB,EAA9ogB,WAAiC,OAAOya,KAAK3C,KAAM,EAAqngB,GAA7lgB,WAA6C,OAAlD,CAAwE,EAAikgB,GAAjkgB,SAAmCthB,EAAI6I,GAAKovD,EAAa/D,EAAYl0D,EAAI6I,EAAK,EAAkhgB,GAApqf,SAAsBuqE,EAAOyG,EAASG,EAAS+D,GAAM3K,EAAOC,GAAcD,GAAsF,IAA9E,IAAInrE,EAAxQ,SAA6B4xE,EAASG,GAAoC,IAA1B,IAAI7tE,EAAE,IAAIrW,MAAM+jF,GAAkB7jF,EAAE,EAAEA,EAAE6jF,IAAW7jF,EAAGmW,EAAEnW,GAAGihF,GAAsB1e,GAAQyhB,GAAU,GAAGhkF,GAAG,aAAaA,GAAG,OAAOmW,CAAE,CAA4F6xE,CAAoBnE,EAASG,GAAcr9D,EAAK,IAAI7mB,MAAM+jF,GAAkB7jF,EAAE,EAAEA,EAAE6jF,IAAW7jF,EAAE,CAAC,IAAIoH,EAAK6K,EAAMjS,GAAG2mB,EAAK3mB,GAAGoH,EAAI,qBAAyB2gF,GAAMA,GAAM3gF,EAAI,cAAmB,KAAI05E,EAAG1D,EAAO/4E,WAAM3E,EAAUinB,GAAM,OAAO02D,GAAeyD,EAAI,EAAk2e,GAAK3D,GAAe,GAAt3e,SAAwBvvD,EAAMjjB,GAAgE,OAAxDijB,EAAMyvD,GAAczvD,KAAcyvD,GAAc1yE,EAA6B,EAAuxe,EAAvxe,SAAwByyE,GAAWA,EAAO,IAAGF,GAAmBE,GAAQ7W,UAAU,EAAG,EAAqte,GAArte,SAA4Bn/D,EAAK2gF,GAA2D,IAAIlpF,GAAzDuI,EAAK65E,GAAsB75E,EAAK,sBAA+B,qBAAyB2gF,GAAM,OAAO1K,GAAex+E,EAAG,EAA+ke,GAA/ke,SAAqB0L,EAAK09E,GAAO,IAAIl+E,EAAK,IAAIkkB,KAAqB,IAAhBs0C,EAAOh4D,GAAM,IAAQg4D,EAAO0lB,GAAO,GAAGl+E,EAAK2lB,gBAAgB6yC,EAAO0lB,EAAM,GAAG,GAAGl+E,EAAK0lB,gBAAgB8yC,EAAO0lB,EAAM,GAAG,GAAGl+E,EAAKylB,cAAc+yC,EAAO0lB,EAAM,IAAI,GAAGl+E,EAAKwlB,aAAagzC,EAAO0lB,EAAM,IAAI,GAAGl+E,EAAKulB,cAAcizC,EAAO0lB,EAAM,IAAI,GAAGl+E,EAAKslB,iBAAiB,KAAKkzC,EAAO0lB,EAAM,IAAI,GAAGl+E,EAAKm+E,YAAY,IAAIp/D,EAAMmF,KAAKC,IAAInkB,EAAKslB,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,GAAO84D,GAAMp+E,EAAK0yC,UAAU3zB,GAAhB,MAAsC,EAAEy5C,EAAO0lB,EAAM,IAAI,GAAGE,CAAK,EAAmod,GAAnod,SAAqBF,GAAO,IAAIl+E,EAAK,IAAIkkB,KAAKs0C,EAAO0lB,EAAM,IAAI,GAAG,KAAK1lB,EAAO0lB,EAAM,IAAI,GAAG1lB,EAAO0lB,EAAM,IAAI,GAAG1lB,EAAO0lB,EAAM,GAAG,GAAG1lB,EAAO0lB,EAAM,GAAG,GAAG1lB,EAAO0lB,GAAO,GAAG,GAAOG,EAAI7lB,EAAO0lB,EAAM,IAAI,GAAOI,EAAct+E,EAAKu+E,oBAAwBx/D,EAAM,IAAImF,KAAKlkB,EAAKw+E,cAAc,EAAE,GAAOC,EAAa,IAAIv6D,KAAKlkB,EAAKw+E,cAAc,EAAE,GAAGD,oBAAwBG,EAAa3/D,EAAMw/D,oBAAwBI,EAAUnvE,KAAKwU,IAAI06D,EAAaD,GAAc,GAAGJ,EAAI,EAAG7lB,EAAO0lB,EAAM,IAAI,GAAGxtC,OAAO+tC,GAAcC,GAAcC,GAAWL,QAAoB,GAAGD,EAAI,IAAIM,GAAWL,GAAe,CAAC,IAAIM,EAAapvE,KAAK8X,IAAIo3D,EAAaD,GAAkBI,EAAWR,EAAI,EAAEM,EAAUC,EAAa5+E,EAAK8+E,QAAQ9+E,EAAK0yC,UAAqC,KAA1BmsC,EAAWP,GAAoB,CAAA9lB,EAAO0lB,EAAM,IAAI,GAAGl+E,EAAK++E,SAAS,IAAIX,GAAMp+E,EAAK0yC,UAAU3zB,EAAM2zB,WAAtB,MAAgD,EAA6M,OAA3M8lB,EAAO0lB,EAAM,IAAI,GAAGE,EAAK5lB,EAAO0lB,GAAO,GAAGl+E,EAAKg/E,aAAaxmB,EAAO0lB,EAAM,GAAG,GAAGl+E,EAAKi/E,aAAazmB,EAAO0lB,EAAM,GAAG,GAAGl+E,EAAKk/E,WAAW1mB,EAAO0lB,EAAM,IAAI,GAAGl+E,EAAK8wD,UAAU0H,EAAO0lB,EAAM,IAAI,GAAGl+E,EAAKm/E,WAAkBn/E,EAAK0yC,UAAU,IAAI,CAAE,EAA+mb,GAAvyZ,SAAS2sC,EAAWC,EAASC,EAASC,GAAWH,EAAWI,SAAcJ,EAAWI,QAAO,EAAp6B,SAAqBH,EAASC,EAASC,GAAQ,IAAIE,GAAa,IAAIx7D,MAAMs6D,cAAkBmB,EAAO,IAAIz7D,KAAKw7D,EAAY,EAAE,GAAOE,EAAO,IAAI17D,KAAKw7D,EAAY,EAAE,GAAOhB,EAAaiB,EAAOpB,oBAAwBE,EAAamB,EAAOrB,oBAAwBsB,EAAkBrwE,KAAK8X,IAAIo3D,EAAaD,GAA8G,SAASqB,EAAY9/E,GAAM,IAAIG,EAAMH,EAAK+/E,eAAe5/E,MAAM,qBAAqB,OAAOA,EAAMA,EAAM,GAAG,KAAM,CAAhNq4D,EAAO8mB,GAAU,GAAqB,GAAlBO,EAAqBrnB,EAAO+mB,GAAU,GAAG7uC,OAAOguC,GAAcD,GAA8H,IAAIuB,EAAWF,EAAYH,GAAYM,EAAWH,EAAYF,GAAYM,EAAc1mB,GAAawmB,GAAgBG,EAAc3mB,GAAaymB,GAAexB,EAAaC,GAAclmB,EAAOgnB,GAAQ,GAAGU,EAAc1nB,EAAOgnB,EAAO,GAAG,GAAGW,IAAmB3nB,EAAOgnB,GAAQ,GAAGW,EAAc3nB,EAAOgnB,EAAO,GAAG,GAAGU,EAAe,CAAiGE,CAAYd,EAASC,EAASC,GAAQ,EAAgrZ,EAAhrZ,WAAkB9oB,GAAM,GAAI,EAA+pZ,GAA/pZ,WAAoC,OAAO,UAAW,EAAuoZ,GAArzY,SAAiC2pB,GAAe,IAA6JnuD,EAAzJouD,EAAQ1oB,EAAO1hE,OAA2CqqF,EAA3c,WAAkf,IAA3EF,KAA8B,GAA8DE,EAAa,OAAO,EAAiE,IAAI,IAAIC,EAAQ,EAAEA,GAAS,EAAEA,GAAS,EAAE,CAAC,IAAIC,EAAkBH,GAAS,EAAE,GAAGE,GAA6N,GAApNC,EAAkBjxE,KAAKwU,IAAIy8D,EAAkBJ,EAAc,WAAsHjJ,GAA/F5nE,KAAKwU,IAAIu8D,GAA/NruD,EAAmP1iB,KAAK8X,IAAI+4D,EAAcI,KAAmB,MAApQvuD,EAAoQ,eAA2E,OAAO,CAAM,QAAO,CAAM,EAAmwX,GAA9sW,SAAsBwuD,EAAUC,GAAa,IAAIC,EAAQ,EAAgK,OAA9JpJ,KAAgBrvE,SAAQ,SAAS6e,EAAO/wB,GAAG,IAAI0hE,EAAIgpB,EAAYC,EAAQpoB,EAAOkoB,EAAY,EAAFzqF,GAAK,GAAG0hE,EAAji9E,SAA4B13D,EAAI2iB,EAAOs1D,GAAa,IAAI,IAAIjiF,EAAE,EAAEA,EAAEgK,EAAI/J,SAASD,EAAGoiE,EAAMz1C,KAAU,GAAG3iB,EAAI+I,WAAW/S,GAAmBoiE,EAAMz1C,GAAQ,GAAG,CAAE,CAA248Ei+D,CAAmB75D,EAAO2wC,GAAKipB,GAAS55D,EAAO9wB,OAAO,CAAE,IAAS,CAAE,EAA8/V,GAA9/V,SAA4B4qF,EAAeC,GAAmB,IAAI9+C,EAAQu1C,KAAgBhf,EAAOsoB,GAAgB,GAAG7+C,EAAQ/rC,OAAO,IAAI0qF,EAAQ,EAAmG,OAAjG3+C,EAAQ95B,SAAQ,SAAS6e,GAAQ45D,GAAS55D,EAAO9wB,OAAO,CAAE,IAAEsiE,EAAOuoB,GAAmB,GAAGH,EAAe,CAAE,EAA2xV,EAA3xV,SAAevsB,IAAisrB,SAAcA,EAAOj3C,GAA4B4jE,GAAS3sB,EAAQ,CAA3vrB4sB,CAAK5sB,EAAQ,EAAiwV,EAAjwV,SAAmBoM,GAAI,IAAI,IAAI18B,EAAOotC,GAASW,gBAAgBrR,GAAqB,OAAjB5B,GAAGkB,MAAMh8B,GAAe,CAA2F,CAAzF,MAAM7qC,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAAwlV,EAAx2U,SAAkBhH,EAAGmX,EAAIC,EAAOuJ,GAAM,IAAI,IAA4CpjE,EAAtU,SAAiB+lB,EAAO6zC,EAAIC,EAAO18D,GAAkB,IAAV,IAAI2O,EAAI,EAAU7zB,EAAE,EAAEA,EAAE4hF,EAAO5hF,IAAI,CAAC,IAAI0hE,EAAIc,EAAQmf,GAAK,GAAO9uE,EAAI2vD,EAAQmf,EAAI,GAAG,GAAGA,GAAK,EAAE,IAAI7zB,EAAK8a,GAAGoB,KAAKl8B,EAAOs0B,EAAMV,EAAI7uD,EAAgKu4E,WAApJ,GAAGt9B,EAAK,EAAE,OAAO,EAAY,GAAVj6B,GAAKi6B,EAAQA,EAAKj7C,EAAI,KAAM,QAAOghB,CAAI,CAA0Fu3D,CAArClQ,GAASW,gBAAgBrR,GAA2BmX,EAAIC,GAA4B,OAApBrf,EAAO4oB,GAAM,GAAGpjE,EAAW,CAA2F,CAAzF,MAAM9kB,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAAyoU,EAAzoU,SAAkBhH,EAAGygB,EAAWC,EAAY3c,EAAO8c,GAAW,IAAI,IAAIv9C,EAAOotC,GAASW,gBAAgBrR,GAAmCtlD,EAAf,WAAsBgmE,GAAyBD,IAAa,GAAOK,EAAa,iBAAiB,OAAGpmE,IAASomE,GAAcpmE,GAAQomE,EAAqB,IAAG1iB,GAAGkD,OAAOh+B,EAAO5oB,EAAOqpD,GAAQhK,GAAQ,CAACz2B,EAAO4P,WAAW,GAAG4mB,GAAWx2B,EAAO4P,UAAUnkC,KAAKwb,IAAIuvC,KAAa,EAAEA,GAAW,GAA2D,EAAxD/qD,KAAKwU,KAAKxU,KAAK69B,MAAMktB,GAAW,YAAY,eAAiB,KAAK/qD,KAAKsY,MAAMyyC,OAAeA,KAAa,IAAI,cAAc,EAAE,IAAI/B,EAAO8oB,GAAW,GAAG9mB,GAAQ,GAAGhC,EAAO8oB,EAAU,GAAG,GAAG9mB,GAAQ,GAAMz2B,EAAOonC,UAAmB,IAAThwD,GAAqB,IAATqpD,IAAWzgC,EAAOonC,SAAS,MAAY,EAA2F,CAAzF,MAAMjyE,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAA25S,EAA3rS,SAAmBhH,EAAGmX,EAAIC,EAAOuJ,GAAM,IAAI,IAA4CpjE,EAAvT,SAAkB+lB,EAAO6zC,EAAIC,EAAO18D,GAAkB,IAAV,IAAI2O,EAAI,EAAU7zB,EAAE,EAAEA,EAAE4hF,EAAO5hF,IAAI,CAAC,IAAI0hE,EAAIc,EAAQmf,GAAK,GAAO9uE,EAAI2vD,EAAQmf,EAAI,GAAG,GAAGA,GAAK,EAAE,IAAI7zB,EAAK8a,GAAG3iD,MAAM6nB,EAAOs0B,EAAMV,EAAI7uD,EAA+I6uE,WAAnI,GAAG5zB,EAAK,EAAE,OAAO,EAAEj6B,GAAKi6B,CAAK,QAAOj6B,CAAI,CAA2F6tD,CAArCxG,GAASW,gBAAgBrR,GAA4BmX,EAAIC,GAA4B,OAApBrf,EAAO4oB,GAAM,GAAGpjE,EAAW,CAA2F,CAAzF,MAAM9kB,GAAG,QAAc,IAAJ2lE,MAAmB3lE,aAAa2lE,GAAGgB,YAAY,MAAM3mE,EAAE,OAAOA,EAAEuuE,KAAM,CAAC,EAA29R,EAA39R,WAAwB,OAAOnR,GAAc,EAA+7R,EAA2/O,SAAqBx0D,EAAMorB,EAAGG,EAAGG,GAAI,IAAIg0D,EAAGC,KAAY,IAAI,OAAOwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAGG,EAAgE,CAA5D,MAAMt0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA9oP,EAAw0O,SAAqB32E,EAAMorB,EAAGG,EAAGG,GAAI,IAAIg0D,EAAGC,KAAY,IAAI,OAAOwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAGG,EAAgE,CAA5D,MAAMt0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA39O,EAA8nP,SAAkB32E,GAAO,IAAI0/E,EAAGC,KAAY,IAAI,OAAOwJ,GAAkBnpF,EAAlBmpF,EAAuF,CAA5D,MAAM/xF,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAhwP,EAA2+K,SAAmB32E,EAAMorB,GAAI,IAAIs0D,EAAGC,KAAY,IAAI,OAAOwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAgE,CAA5D,MAAMh0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAlnL,EAAyrK,SAAoB32E,EAAMorB,EAAGG,GAAI,IAAIm0D,EAAGC,KAAY,IAAI,OAAOwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAgE,CAA5D,MAAMn0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAt0K,EAAmmL,SAAqB32E,EAAMorB,EAAGG,EAAGG,GAAI,IAAIg0D,EAAGC,KAAY,IAAI,OAAOwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAGG,EAAgE,CAA5D,MAAMt0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAtvL,EAAgiM,SAAsB32E,EAAMorB,EAAGG,EAAGG,EAAGG,GAAI,IAAI6zD,EAAGC,KAAY,IAAI,OAAOwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMz0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAzrM,GAA63N,SAAuB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAI0zD,EAAGC,KAAY,IAAI,OAAOwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM50B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA3hO,EAAyrN,SAAuB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAI0zD,EAAGC,KAAY,IAAI,OAAOwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM50B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAx1N,EAAopM,SAAwB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIuzD,EAAGC,KAAY,IAAI,OAAOwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM/0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAzzM,EAAs/N,SAAyB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIozD,EAAGC,KAAY,IAAI,OAAOwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMl1B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAjqO,EAA8yP,SAA6B32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAG4zD,EAAIC,GAAK,IAAIf,EAAGC,KAAY,IAAI,OAAOwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAG4zD,EAAIC,EAAiE,CAA5D,MAAMrpF,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAr/P,EAAwhT,SAAuB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIuzD,EAAGC,KAAY,IAAI,OAAOgB,GAAe3gF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM/0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAzrT,GAA+uR,SAAmB32E,EAAMorB,GAAI,IAAIs0D,EAAGC,KAAY,IAAI,OAAOqB,GAAWhhF,EAAMorB,EAAgE,CAA5D,MAAMh0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA72R,GAA62R,SAAoB32E,EAAMorB,EAAGG,GAAI,IAAIm0D,EAAGC,KAAY,IAAI,OAAOsB,GAAYjhF,EAAMorB,EAAGG,EAAgE,CAA5D,MAAMn0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAl/R,EAAk/R,SAAqB32E,EAAMorB,EAAGG,EAAGG,GAAI,IAAIg0D,EAAGC,KAAY,IAAI,OAAOuB,GAAalhF,EAAMorB,EAAGG,EAAGG,EAAgE,CAA5D,MAAMt0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA/nS,GAA+3Q,SAAsB32E,EAAMorB,EAAGG,EAAGG,EAAGG,GAAI,IAAI6zD,EAAGC,KAAY,IAAI,OAAOwB,GAAcnhF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMz0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAlhR,EAA8mK,SAAkB32E,GAAO,IAAI0/E,EAAGC,KAAY,IAAIwJ,GAAkBnpF,EAAlBmpF,EAAuF,CAA5D,MAAM/xF,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAzuK,EAA6rL,SAAmB32E,EAAMorB,GAAI,IAAIs0D,EAAGC,KAAY,IAAIwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAgE,CAA5D,MAAMh0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA7zL,EAAkyJ,SAAoB32E,EAAMorB,EAAGG,GAAI,IAAIm0D,EAAGC,KAAY,IAAIwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAgE,CAA5D,MAAMn0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAx6J,EAAogL,SAAqB32E,EAAMorB,EAAGG,EAAGG,GAAI,IAAIg0D,EAAGC,KAAY,IAAIwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAGG,EAAgE,CAA5D,MAAMt0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAhpL,EAAgmJ,SAAsB32E,EAAMorB,EAAGG,EAAGG,EAAGG,GAAI,IAAI6zD,EAAGC,KAAY,IAAIwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMz0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAlvJ,EAA+mM,SAAuB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAI0zD,EAAGC,KAAY,IAAIwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM50B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAvwM,GAAuwM,SAAwB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIuzD,EAAGC,KAAY,IAAIwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM/0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAp6M,EAA05O,SAAyB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIozD,EAAGC,KAAY,IAAIwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMl1B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA9jP,EAA6xP,SAA4B32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAG4zD,GAAK,IAAId,EAAGC,KAAY,IAAIwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAG4zD,EAAiE,CAA5D,MAAMppF,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAr9P,EAAq9P,SAAiC32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAG4zD,EAAIC,EAAIoB,EAAIC,EAAIC,EAAIC,GAAK,IAAItC,EAAGC,KAAY,IAAIwJ,GAAkBnpF,EAAlBmpF,CAAyB/9D,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAG4zD,EAAIC,EAAIoB,EAAIC,EAAIC,EAAIC,EAAiE,CAA5D,MAAM5qF,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAArrQ,EAAq7R,SAAuB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIuzD,EAAGC,KAAY,IAAIuC,GAAeliF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM/0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAA/kS,GAAw0Q,SAAqB32E,EAAMorB,EAAGG,EAAGG,EAAGG,GAAI,IAAI6zD,EAAGC,KAAY,IAAIyC,GAAapiF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAMz0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAn9Q,EAA8jS,SAAuB32E,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,GAAI,IAAIuzD,EAAGC,KAAY,IAAI0C,GAAeriF,EAAMorB,EAAGG,EAAGG,EAAGG,EAAGG,EAAGG,EAAgE,CAA5D,MAAM/0B,GAAoB,GAAjByoF,GAAaH,GAAOtoF,IAAIA,EAAE,EAAE,MAAMA,EAAEu/E,GAAU,EAAE,EAAG,CAAC,EAAxtS,EAA98S,SAA6Bp7E,GAAM,OAAOA,CAAK,EAAu7S,GAAv7S,SAAoBuF,GAAMo+E,GAASp+E,EAAM,EAA85S,EAA95S,SAAsBmb,GAAKs4C,EAAYt4C,EAAK,EAAm4S,GAA37G,SAAqBoV,EAAEgzD,EAAQvtF,EAAOwtF,GAAI,OAAnqK,SAAmBjzD,EAAEgzD,EAAQvtF,EAAOwtF,GAAI,IAAIC,EAAQ7tB,EAAO4tB,EAAG,IAAI,GAAOpmF,EAAK,CAACsmF,OAAO9tB,EAAO4tB,GAAI,GAAGG,OAAO/tB,EAAO4tB,EAAG,GAAG,GAAGI,QAAQhuB,EAAO4tB,EAAG,GAAG,GAAGK,QAAQjuB,EAAO4tB,EAAG,IAAI,GAAGM,OAAOluB,EAAO4tB,EAAG,IAAI,GAAGO,QAAQnuB,EAAO4tB,EAAG,IAAI,GAAGQ,QAAQpuB,EAAO4tB,EAAG,IAAI,GAAGS,QAAQruB,EAAO4tB,EAAG,IAAI,GAAGU,SAAStuB,EAAO4tB,EAAG,IAAI,GAAGW,UAAUvuB,EAAO4tB,EAAG,IAAI,GAAGC,QAAQA,EAAQ3uB,EAAa2uB,GAAS,IAAQ7xE,EAAQkjD,EAAa9+D,GAAYouF,EAAkB,CAAC,KAAK,uBAAuB,KAAK,WAAW,KAAK,WAAW,KAAK,KAAK,KAAK,cAAc,KAAK,QAAQ,KAAK,WAAW,KAAK,WAAW,KAAK,WAAW,MAAM,KAAK,MAAM,KAAK,MAAM,WAAW,MAAM,WAAW,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,IAAI,IAAI7hF,KAAQ6hF,EAAmBxyE,EAAQA,EAAQ1M,QAAQ,IAAI5P,OAAOiN,EAAK,KAAK6hF,EAAkB7hF,IAAO,IAAI8hF,EAAS,CAAC,SAAS,SAAS,UAAU,YAAY,WAAW,SAAS,YAAgBC,EAAO,CAAC,UAAU,WAAW,QAAQ,QAAQ,MAAM,OAAO,OAAO,SAAS,YAAY,UAAU,WAAW,YAAY,SAASC,EAAiBxpF,EAAMypF,EAAOC,GAAqE,IAA1D,IAAIpnF,EAAkB,iBAAPtC,EAAgBA,EAAM2lB,WAAW3lB,GAAO,GAASsC,EAAI/J,OAAOkxF,GAAQnnF,EAAIonF,EAAU,GAAGpnF,EAAI,OAAOA,CAAI,UAASqnF,EAAa3pF,EAAMypF,GAAQ,OAAOD,EAAiBxpF,EAAMypF,EAAO,IAAK,UAASG,EAAaC,EAAMC,GAAO,SAASC,EAAI/pF,GAAO,OAAOA,EAAM,GAAG,EAAEA,EAAM,EAAE,EAAE,CAAE,KAAIo0C,EAA8K,OAA1G,KAAxDA,EAAQ21C,EAAIF,EAAMhJ,cAAciJ,EAAMjJ,iBAA2E,KAAlDzsC,EAAQ21C,EAAIF,EAAMrI,WAAWsI,EAAMtI,eAAkBptC,EAAQ21C,EAAIF,EAAM12B,UAAU22B,EAAM32B,YAAmB/e,CAAQ,UAAS41C,EAAsBC,GAAW,OAAOA,EAAU7I,UAAU,KAAK,EAAE,OAAO,IAAI76D,KAAK0jE,EAAUpJ,cAAc,EAAE,GAAG,IAAI,KAAK,EAAE,OAAOoJ,EAAU,KAAK,EAAE,OAAO,IAAI1jE,KAAK0jE,EAAUpJ,cAAc,EAAE,GAAG,KAAK,EAAE,OAAO,IAAIt6D,KAAK0jE,EAAUpJ,cAAc,EAAE,GAAG,KAAK,EAAE,OAAO,IAAIt6D,KAAK0jE,EAAUpJ,cAAc,EAAE,GAAG,KAAK,EAAE,OAAO,IAAIt6D,KAAK0jE,EAAUpJ,cAAc,EAAE,GAAG,IAAI,KAAK,EAAE,OAAO,IAAIt6D,KAAK0jE,EAAUpJ,cAAc,EAAE,GAAG,IAAK,UAASqJ,EAAiB7nF,GAAM,IAAI8nF,EAA9kF,SAAmB9nF,EAAK+nF,GAA2C,IAArC,IAAIC,EAAQ,IAAI9jE,KAAKlkB,EAAK0yC,WAAiBq1C,EAAK,GAAE,CAAC,IAAIE,EAAKnQ,GAAakQ,EAAQxJ,eAAmB0J,EAAaF,EAAQ7I,WAAegJ,GAAoBF,EAAKlQ,GAAkBC,IAAsBkQ,GAAc,KAAGH,EAAKI,EAAmBH,EAAQl3B,WAAoP,OAAxCk3B,EAAQI,QAAQJ,EAAQl3B,UAAUi3B,GAAaC,EAAhPD,GAAMI,EAAmBH,EAAQl3B,UAAU,EAAEk3B,EAAQI,QAAQ,GAAMF,EAAa,GAAIF,EAAQK,SAASH,EAAa,IAAQF,EAAQK,SAAS,GAAGL,EAAQM,YAAYN,EAAQxJ,cAAc,GAAiE,QAAOwJ,CAAQ,CAA4iEO,CAAU,IAAIrkE,KAAKlkB,EAAK2mF,QAAQ,KAAK,EAAE,GAAG3mF,EAAK6mF,SAAa2B,EAAkB,IAAItkE,KAAK4jE,EAAStJ,cAAc,EAAE,GAAOiK,EAAkB,IAAIvkE,KAAK4jE,EAAStJ,cAAc,EAAE,EAAE,GAAOkK,EAAuBf,EAAsBa,GAAuBG,EAAuBhB,EAAsBc,GAAmB,OAAGlB,EAAamB,EAAuBZ,IAAW,EAAMP,EAAaoB,EAAuBb,IAAW,EAAUA,EAAStJ,cAAc,EAAcsJ,EAAStJ,cAA2BsJ,EAAStJ,cAAc,CAAG,KAAIoK,EAAkB,CAAC,KAAK,SAAS5oF,GAAM,OAAOinF,EAASjnF,EAAK4mF,SAASx7C,UAAU,EAAE,EAAG,EAAC,KAAK,SAASprC,GAAM,OAAOinF,EAASjnF,EAAK4mF,QAAS,EAAC,KAAK,SAAS5mF,GAAM,OAAOknF,EAAOlnF,EAAK0mF,QAAQt7C,UAAU,EAAE,EAAG,EAAC,KAAK,SAASprC,GAAM,OAAOknF,EAAOlnF,EAAK0mF,OAAQ,EAAC,KAAK,SAAS1mF,GAAiC,OAAOsnF,GAAzBtnF,EAAK2mF,QAAQ,MAA8B,IAAI,EAAE,EAAG,EAAC,KAAK,SAAS3mF,GAAM,OAAOsnF,EAAatnF,EAAKymF,QAAQ,EAAG,EAAC,KAAK,SAASzmF,GAAM,OAAOmnF,EAAiBnnF,EAAKymF,QAAQ,EAAE,IAAK,EAAC,KAAK,SAASzmF,GAAM,OAAO6nF,EAAiB7nF,GAAMsjB,WAAW8nB,UAAU,EAAG,EAAC,KAAK,SAASprC,GAAM,OAAO6nF,EAAiB7nF,EAAM,EAAC,KAAK,SAASA,GAAM,OAAOsnF,EAAatnF,EAAKwmF,QAAQ,EAAG,EAAC,KAAK,SAASxmF,GAAM,IAAI6oF,EAAW7oF,EAAKwmF,QAA4E,OAArD,GAAZqC,EAAcA,EAAW,GAAWA,EAAW,KAAGA,GAAY,IAAUvB,EAAauB,EAAW,EAAG,EAAC,KAAK,SAAS7oF,GAAM,OAAOsnF,EAAatnF,EAAKymF,QAA7nI,SAAoB38E,EAAMhI,GAAiB,IAAV,IAAIgnF,EAAI,EAAU7yF,EAAE,EAAEA,GAAG6L,EAAMgnF,GAAKh/E,EAAM7T,MAAO,OAAO6yF,CAAI,CAAwiIC,CAAWjR,GAAa93E,EAAK2mF,QAAQ,MAAM5O,GAAkBC,GAAqBh4E,EAAK0mF,OAAO,GAAG,EAAG,EAAC,KAAK,SAAS1mF,GAAM,OAAOsnF,EAAatnF,EAAK0mF,OAAO,EAAE,EAAG,EAAC,KAAK,SAAS1mF,GAAM,OAAOsnF,EAAatnF,EAAKumF,OAAO,EAAG,EAAC,KAAK,WAAW,MAAM,IAAK,EAAC,KAAK,SAASvmF,GAAM,OAAGA,EAAKwmF,SAAS,GAAGxmF,EAAKwmF,QAAQ,GAAU,KAAgB,IAAM,EAAC,KAAK,SAASxmF,GAAM,OAAOsnF,EAAatnF,EAAKsmF,OAAO,EAAG,EAAC,KAAK,WAAW,MAAM,IAAK,EAAC,KAAK,SAAStmF,GAAM,OAAOA,EAAK4mF,SAAS,CAAE,EAAC,KAAK,SAAS5mF,GAAM,IAAI+nF,EAAK/nF,EAAK6mF,QAAQ,EAAE7mF,EAAK4mF,QAAQ,OAAOU,EAAa93E,KAAK69B,MAAM06C,EAAK,GAAG,EAAG,EAAC,KAAK,SAAS/nF,GAAM,IAAI+d,EAAIvO,KAAK69B,OAAOrtC,EAAK6mF,QAAQ,GAAG7mF,EAAK4mF,QAAQ,GAAG,GAAG,GAAoD,IAA7C5mF,EAAK4mF,QAAQ,IAAI5mF,EAAK6mF,QAAQ,GAAG,GAAG,GAAG9oE,IAAUA,GAA6H,GAAQ,IAALA,EAAQ,CAAC,IAAIirE,GAAMhpF,EAAK4mF,QAAQ,IAAI5mF,EAAK6mF,SAAS,EAAW,GAANmC,GAAgB,GAANA,GAAUlR,GAAa93E,EAAK2mF,WAAU5oE,EAAI,EAAE,MAAzO,CAACA,EAAI,GAAG,IAAIkrE,GAAOjpF,EAAK4mF,QAAQ,EAAE5mF,EAAK6mF,QAAQ,GAAG,GAAY,GAAPoC,GAAiB,GAAPA,GAAUnR,GAAa93E,EAAK2mF,QAAQ,IAAI,KAAI5oE,GAAO,CAAqH,OAAOupE,EAAavpE,EAAI,EAAG,EAAC,KAAK,SAAS/d,GAAM,OAAOA,EAAK4mF,OAAQ,EAAC,KAAK,SAAS5mF,GAAM,IAAI+nF,EAAK/nF,EAAK6mF,QAAQ,GAAG7mF,EAAK4mF,QAAQ,GAAG,EAAE,OAAOU,EAAa93E,KAAK69B,MAAM06C,EAAK,GAAG,EAAG,EAAC,KAAK,SAAS/nF,GAAM,OAAOA,EAAK2mF,QAAQ,MAAMrjE,WAAW8nB,UAAU,EAAG,EAAC,KAAK,SAASprC,GAAM,OAAOA,EAAK2mF,QAAQ,IAAK,EAAC,KAAK,SAAS3mF,GAAM,IAAIgoB,EAAIhoB,EAAK+mF,UAAcmC,EAAMlhE,GAAK,EAA6C,OAAtBA,GAArBA,EAAIxY,KAAKwb,IAAIhD,GAAK,IAAW,GAAG,IAAIA,EAAI,IAAUkhE,EAAM,IAAI,KAAKhmE,OAAO,OAAO8E,GAAK5uB,OAAO,EAAG,EAAC,KAAK,SAAS4G,GAAM,OAAOA,EAAKqmF,OAAQ,EAAC,KAAK,WAAW,MAAM,GAAI,GAAwC,IAAI,IAAIlhF,KAA9CqP,EAAQA,EAAQ1M,QAAQ,MAAM,QAAwB8gF,EAAsBp0E,EAAQksD,SAASv7D,KAAOqP,EAAQA,EAAQ1M,QAAQ,IAAI5P,OAAOiN,EAAK,KAAKyjF,EAAkBzjF,GAAMnF,KAA6C,IAAI+b,EAAM8kD,GAA/CrsD,EAAQA,EAAQ1M,QAAQ,QAAQ,MAA0C,GAAO,OAAGiU,EAAM7lB,OAAOiwF,EAAgB,GAA12tF,SAA4Br8E,EAAM8Y,GAAQy1C,EAAMluB,IAAIrgC,EAAM8Y,EAAQ,CAA0ytFumE,CAAmBptE,EAAMoX,GAAUpX,EAAM7lB,OAAO,EAAE,CAAiDkzF,CAAUj2D,EAAEgzD,EAAQvtF,EAAOwtF,EAAI,EAA43G,GAA53G,WAAiC5kE,EAAI,0CAA0Ck1C,IAAO,EAAG,GAA0/G+C,IAAn7tF,WAAsB,IAAItP,EAAK,CAAC,EAAIouB,IAAe,SAAS8Q,EAAgBliD,EAAS5yC,GAAQ,IAA5qE+iD,EAAgrE9iD,EAAQ2yC,EAAS3yC,QAAQk/D,EAAM,IAAQl/D,EAAuCklE,IAA/BnD,EAAW7C,EAAM,IAAN,IAA0D9wC,QAAQs3C,GAAUxG,EAAM,IAAN,GAAtzEpc,EAAo1Eoc,EAAM,IAAN,GAAh1E0G,GAAWr0C,QAAQuxB,GAAk1EujB,IAAwC,CAAqC,SAASyuB,EAA2BjvF,GAAQgvF,EAAgBhvF,EAAM,SAAc,UAASkvF,EAAuBC,GAAU,OAAplC,WAA4B,IAAItzB,IAAa3B,GAAoBC,GAAuB,CAAC,GAAiB,mBAAPi1B,QAAoBtuB,GAAUb,IAAiB,OAAOmvB,MAAMnvB,GAAe,CAACrL,YAAY,gBAAgBjxD,MAAK,SAAS+3D,GAAU,IAAIA,EAAQ,GAAQ,KAAK,uCAAuCuE,GAAe,IAAI,OAAOvE,EAAQ,aAAkB,IAAEruB,OAAM,WAAW,OAAO0zB,GAAUd,GAAgB,IAAO,GAAG1G,EAAW,OAAO,IAAIx1D,SAAQ,SAASrK,EAAQ40D,GAAQiL,EAAU0G,IAAe,SAASvE,GAAUhiE,EAAQ,IAAI4+C,WAAWojB,GAAW,GAACpN,EAAQ,GAAI,QAAOvqD,QAAQrK,UAAUiK,MAAK,WAAW,OAAOo9D,GAAUd,GAAgB,GAAE,CAAweovB,GAAmB1rF,MAAK,SAAS+2D,GAAQ,OAAO0B,YAAYkzB,YAAY50B,EAAO5K,EAAM,IAAEnsD,MAAK,SAASmpC,GAAU,OAAOA,CAAS,IAAEnpC,KAAKwrF,GAAS,SAASl6C,GAAQ9tB,EAAI,0CAA0C8tB,GAAQonB,GAAMpnB,EAAQ,GAAE,CAA2lB,GAAv+BsrB,KAA0+BlH,EAAM,gBAAqB,IAAgE,OAAhDA,EAAM,gBAAoBvJ,EAAKk/B,EAAmH,CAAnF,MAAMnwF,GAAgE,OAA7DsoB,EAAI,sDAAsDtoB,IAAU,CAAM,EAA3vBg9D,GAAqD,mBAAlCO,YAAYmzB,sBAAmC3uB,GAAUX,KAAkBa,GAAUb,KAA+B,mBAAPmvB,MAAuYF,EAAuBD,GAApYG,MAAMnvB,GAAe,CAACrL,YAAY,gBAAgBjxD,MAAK,SAAS+3D,GAAqE,OAAhDU,YAAYmzB,qBAAqB7zB,EAAS5L,GAAoBnsD,KAAKsrF,GAA2B,SAASh6C,GAAuG,OAA/F9tB,EAAI,kCAAkC8tB,GAAQ9tB,EAAI,6CAAoD+nE,EAAuBD,EAA4B,GAAE,KAAsR5hD,MAAM+rB,EAA6B,CAAguqFo2B,GAAoCn2B,EAAM,mBAAuB,WAAW,OAA0BA,EAAM,mBAAuBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAam5D,EAAM,QAAY,WAAW,OAAO+F,GAAQ/F,EAAM,QAAYA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAAuTijE,IAA3P9J,EAAM,uDAA2D,WAAW,OAA8DA,EAAM,uDAA2DA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAWm5D,EAAM,MAAU,WAAW,OAAO8J,GAAM9J,EAAM,MAAUA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAAKy+E,GAAkBtlB,EAAM,kBAAsB,WAAW,OAAOslB,GAAkBtlB,EAAM,kBAAsBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKu8E,GAAepjB,EAAM,eAAmB,WAAW,OAAOojB,GAAepjB,EAAM,eAAmBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2Qk+E,IAA1N/kB,EAAM,4CAAgD,WAAW,OAAmDA,EAAM,4CAAgDA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAem5D,EAAM,UAAc,WAAW,OAAO+kB,GAAU/kB,EAAM,UAAcA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAAKknF,GAAU/tB,EAAM,UAAc,WAAW,OAAO+tB,GAAU/tB,EAAM,UAAcA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKonF,GAAajuB,EAAM,aAAiB,WAAW,OAAOiuB,GAAajuB,EAAM,aAAiBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKw+E,GAAiBrlB,EAAM,iBAAqB,WAAW,OAAOqlB,GAAiBrlB,EAAM,iBAAqBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAK8iE,GAAuB3J,EAAM,uBAA2B,WAAW,OAAO2J,GAAuB3J,EAAM,uBAA2BA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKuoF,GAAWpvB,EAAM,WAAe,WAAW,OAAOovB,GAAWpvB,EAAM,WAAeA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA2a4pF,IAAtZzwB,EAAM,gBAAoB,WAAW,OAAuBA,EAAM,gBAAoBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiBm5D,EAAM,YAAgB,WAAW,OAAmBA,EAAM,YAAgBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkBm5D,EAAM,aAAiB,WAAW,OAAoBA,EAAM,aAAiBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoBm5D,EAAM,eAAmB,WAAW,OAAOywB,GAAezwB,EAAM,eAAmBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAAK0oF,GAAcvvB,EAAM,cAAkB,WAAW,OAAOuvB,GAAcvvB,EAAM,cAAkBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAK2pF,GAAaxwB,EAAM,aAAiB,WAAW,OAAOwwB,GAAaxwB,EAAM,aAAiBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmJwoF,IAAhIrvB,EAAM,cAAkB,WAAW,OAAqBA,EAAM,cAAkBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAiBm5D,EAAM,YAAgB,WAAW,OAAOqvB,GAAYrvB,EAAM,YAAgBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAAKyoF,GAAatvB,EAAM,aAAiB,WAAW,OAAOsvB,GAAatvB,EAAM,aAAiBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAKypF,GAAetwB,EAAM,eAAmB,WAAW,OAAOswB,GAAetwB,EAAM,eAAmBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmbkoF,IAA9Z/uB,EAAM,gBAAoB,WAAW,OAAuBA,EAAM,gBAAoBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAmBm5D,EAAM,cAAkB,WAAW,OAAqBA,EAAM,cAAkBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAkBm5D,EAAM,aAAiB,WAAW,OAAoBA,EAAM,aAAiBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAoBm5D,EAAM,eAAmB,WAAW,OAAO+uB,GAAe/uB,EAAM,eAAmBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,GAA+/K,SAAS86D,GAAWhB,GAAQt/D,KAAK4D,KAAK,aAAa5D,KAAKqC,QAAQ,gCAAgCi9D,EAAO,IAAIt/D,KAAKs/D,OAAOA,CAAO,CAA8G,SAAS5V,GAAI7hC,GAA+F,SAASktE,IAAWxR,KAAiBA,IAAU,EAAK5kB,EAAM,WAAc,EAAQkD,IAAvqmGlD,EAAM,UAAemL,GAAG9B,KAAKyI,aAAY3G,GAAG9B,OAAO8B,GAAG4G,mBAAkB,EAAMtG,GAAIpC,OAAOzB,GAAqBlB,IAAolmG5G,EAAoBE,GAAWA,EAAM,sBAAyBA,EAAM,uBAA5omG,WAAmB,GAAGA,EAAM,QAA2F,IAAjD,mBAAnBA,EAAM,UAAwBA,EAAM,QAAY,CAACA,EAAM,UAAmBA,EAAM,QAAYx9D,QAA2MohD,EAAtLoc,EAAM,QAAY98B,QAAwKyjC,GAAct0C,QAAQuxB,GAAhD,IAAsBA,EAA1JgkB,GAAqBjB,GAAe,CAAm8lG0vB,IAAU,CAA7SntE,EAAKA,GAAMs3C,EAAcuG,GAAgB,IAArzmG,WAAkB,GAAG/G,EAAM,OAAuF,IAA/C,mBAAlBA,EAAM,SAAuBA,EAAM,OAAW,CAACA,EAAM,SAAkBA,EAAM,OAAWx9D,QAAwfohD,EAApeoc,EAAM,OAAW98B,QAAudujC,GAAap0C,QAAQuxB,GAA9C,IAAqBA,EAAzcgkB,GAAqBnB,GAAc,CAAommG6vB,GAAYvvB,GAAgB,IAAiO/G,EAAM,WAAeA,EAAM,UAAc,cAAcpd,YAAW,WAAWA,YAAW,WAAWod,EAAM,UAAc,GAAI,GAAC,GAAGo2B,GAAQ,GAAC,IAAQA,KAAS,CAAoF,SAAS9I,GAASp+E,GAA0BwyD,OAAuB1B,EAAM,QAAWA,EAAM,OAAW9wD,GAAMg0D,GAAM,GAAKxC,EAAMxxD,EAAK,IAAIyyD,GAAWzyD,GAAO,IAA75M8wD,EAAM,gBAAoB,WAAW,OAAuBA,EAAM,gBAAoBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAAsBm5D,EAAM,iBAAqB,WAAW,OAAwBA,EAAM,iBAAqBA,EAAM,IAAN,IAAqBp5D,MAAM,KAAKC,UAAW,EAA+9Jm5D,EAAM,aAAiBgE,EAAahE,EAAM,aAAiBwE,EAAaxE,EAAM,gBAAoB0E,EAAgB1E,EAAM,YAAjgxG,SAAqB/vB,EAAK8yC,GAAiG,GAAxFxgB,IAAqBA,EAAoB,IAAIg0B,QAApO,SAAwB9uE,EAAOxT,GAAO,IAAI,IAAI1R,EAA6M,EAApMA,EAAoM,EAA3L0R,EAAM1R,IAAI,CAAC,IAAIyR,EAAKujF,GAAkBh1F,GAAMyR,GAAMuuD,EAAoB9rB,IAAIziC,EAAKzR,EAAI,CAAC,CAAwFk0F,CAAe,EAAEjwB,GAAUhkE,SAAW+/D,EAAoB/rB,IAAIvG,GAAO,OAAOsyB,EAAoB18D,IAAIoqC,GAAM,IAAI7Z,EAAjlB,WAA6B,GAAGqsC,EAAiBjgE,OAAQ,OAAOigE,EAAiB7mD,MAAM,IAAI4qD,GAAUmd,KAAK,EAAmH,CAAhH,MAAM71D,GAAK,KAAKA,aAAeguB,YAAa,MAAMhuB,EAAI,KAAK,oDAAqD,QAAO04C,GAAUhkE,OAAO,CAAE,CAA8Vk0F,GAAoB,IAAI1uB,GAAkB5xC,EAAI6Z,EAAwI,CAAlI,MAAMniB,GAAK,KAAKA,aAAekc,WAAY,MAAMlc,EAAI,IAAI6oE,EAA/uD,SAAiC1mD,EAAK8yC,GAAK,GAAgC,mBAAtBhgB,YAAYvyD,SAAqB,CAA6H,IAA5H,IAAIomF,EAAU,CAAC,EAAI,MAAM,EAAI,MAAM,EAAI,MAAM,EAAI,OAAWjtF,EAAK,CAACktF,WAAW,GAAGpuC,QAAgB,KAARs6B,EAAI,GAAQ,GAAG,CAAC6T,EAAU7T,EAAI,MAAcxgF,EAAE,EAAEA,EAAEwgF,EAAIvgF,SAASD,EAAGoH,EAAKktF,WAAW/hF,KAAK8hF,EAAU7T,EAAIxgF,KAAK,OAAO,IAAIwgE,YAAYvyD,SAAS7G,EAAKsmC,EAAM,KAAI6mD,EAAY,CAAC,EAAE,IAAQC,EAAOhU,EAAIr9E,MAAM,EAAE,GAAOsxF,EAASjU,EAAIr9E,MAAM,GAAOuxF,EAAU,CAAC,EAAI,IAAI,EAAI,IAAI,EAAI,IAAI,EAAI,KAAoE,IAA/DH,EAAYA,EAAY7hF,OAAOqtD,EAAc00B,EAASx0F,SAAiBD,EAAE,EAAEA,EAAEy0F,EAASx0F,SAASD,EAAGu0F,EAAYhiF,KAAKmiF,EAAUD,EAASz0F,KAAgB,KAARw0F,EAAaD,EAAYhiF,KAAK,GAAQgiF,EAAYA,EAAY7hF,OAAO,CAAC,EAAEgiF,EAAUF,KAAUD,EAAY,CAAC,GAAG7hF,OAAOqtD,EAAcw0B,EAAYt0F,QAAQs0F,GAAa,IAAIzuE,EAAM,IAAI42B,WAAW,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,GAAGhqC,OAAO6hF,EAAY,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAASj2F,EAAO,IAAIkiE,YAAY/C,OAAO33C,GAA4G,OAAxF,IAAI06C,YAAYm0B,SAASr2F,EAAO,CAAC,EAAI,CAAC,EAAIovC,KAAiCnvC,QAAT,CAAyC,CAA0vBq2F,CAAwBlnD,EAAK8yC,GAAK/a,GAAkB5xC,EAAIugE,EAAS,CAAkC,OAAlCp0B,EAAoB9rB,IAAIxG,EAAK7Z,GAAYA,CAAI,EAAgnwG4pC,EAAM,YAAgB4C,EAAY5C,EAAM,iBAAhjX,SAA0B5pD,GAAkB,IAAX,IAAIggB,EAAI,GAAW7zB,EAAE,EAAEA,EAAE6T,EAAM5T,OAAOD,IAAI,CAAC,IAAI60F,EAAIhhF,EAAM7T,GAAM60F,EAAI,MAA6HA,GAAK,KAAIhhE,EAAIthB,KAAK0a,OAAOC,aAAa2nE,GAAM,QAAOhhE,EAAInkB,KAAK,GAAI,EAAi8Wg1D,GAAsB,SAASowB,IAAgBzS,IAAU75B,KAAU65B,KAAU3d,GAAsBowB,EAAU,EAA6dr3B,EAAM,IAAQjV,GAAgOiV,EAAM,QAA2F,IAAjD,mBAAnBA,EAAM,UAAwBA,EAAM,QAAY,CAACA,EAAM,UAAmBA,EAAM,QAAYx9D,OAAO,GAAGw9D,EAAM,QAAYpkD,KAAlBokD,GAGj88G,OAH498GjV,KAGr98G2U,EAAkB43B,KAC1B,GAICz2F,EAAOC,QAAU4+D,gCCTnB7+D,EAAOC,QAAU,CAAC,EAGlBD,EAAOC,QAAQuwF,SAAW,EAA1BxwF,OACAA,EAAOC,QAAQ02F,WAAa,EAA5B32F,OAAAA,WACAA,EAAOC,QAAQ22F,OAAS,EAAxB52F,OACAA,EAAOC,QAAQ42F,YAAc,EAA7B72F,OACAA,EAAOC,QAAQqwF,WAAa,EAA5BtwF,OACAA,EAAOC,QAAQswF,aAAe,EAA9BvwF,OACAA,EAAOC,QAAQ62F,oBAAsB,EAArC92F,OACAA,EAAOC,QAAQ82F,eAAiB,EAAhC/2F,OACAA,EAAOC,QAAQ+2F,WAAa,EAA5Bh3F,OACAA,EAAOC,QAAQg3F,WAAa,EAA5Bj3F,OACAA,EAAOC,QAAQi3F,WAAa,EAA5Bl3F,OAGAA,EAAOC,QAAQk3F,eAAiB,EAAhCn3F,OACAA,EAAOC,QAAQm3F,eAAiB,EAAhCp3F,OACAA,EAAOC,QAAQo3F,UAAY,EAA3Br3F,MACAA,EAAOC,QAAQq3F,kBAAoB,EAAnCt3F,OACAA,EAAOC,QAAQs3F,YAAc,EAA7Bv3F,OACAA,EAAOC,QAAQu3F,oBAAsB,EAArCx3F,OACAA,EAAOC,QAAQw3F,qBAAuB,EAAtCz3F,OACAA,EAAOC,QAAQy3F,iBAAmB,EAAlC13F,OACAA,EAAOC,QAAQ03F,qBAAuB,EAAtC33F,MACAA,EAAOC,QAAQ23F,qBAAuB,EAAtC53F,MACAA,EAAOC,QAAQ43F,8BAAgC,EAA/C73F,OACAA,EAAOC,QAAQ63F,iCAAmC,EAAlD93F,OACAA,EAAOC,QAAQ83F,kBAAoB,EAAnC/3F,OACAA,EAAOC,QAAQ+3F,mBAAqB,EAApCh4F,OACAA,EAAOC,QAAQg4F,eAAiB,EAAhCj4F,OACAA,EAAOC,QAAQi4F,0BAA4B,EAA3Cl4F,OACAA,EAAOC,QAAQk4F,iBAAmB,EAAlCn4F,OACAA,EAAOC,QAAQm4F,mBAAqB,EAApCp4F,OACAA,EAAOC,QAAQo4F,kBAAoB,EAAnCr4F,OACAA,EAAOC,QAAQq4F,aAAe,EAA9Bt4F,OACAA,EAAOC,QAAQs4F,2BAA6B,EAA5Cv4F,OACAA,EAAOC,QAAQu4F,kBAAoB,EAAnCx4F,OACAA,EAAOC,QAAQw4F,qBAAuB,EAAtCz4F,OACAA,EAAOC,QAAQy4F,SAAW,EAA1B14F,MACAA,EAAOC,QAAQ04F,kBAAoB,EAAnC34F,OACAA,EAAOC,QAAQ24F,cAAgB,EAA/B54F,OACAA,EAAOC,QAAQ44F,WAAa,EAA5B74F,OAGAA,EAAOC,QAAQ64F,cAAgB,EAA/B94F,OACAA,EAAOC,QAAQ84F,iBAAmB,EAAlC/4F,OACAA,EAAOC,QAAQ+4F,uBAAyB,EAAxCh5F,OACAA,EAAOC,QAAQg5F,YAAc,EAA7Bj5F,OACAA,EAAOC,QAAQi5F,mBAAqB,EAApCl5F,OACAA,EAAOC,QAAQk5F,cAAgB,EAA/Bn5F,OACAA,EAAOC,QAAQm5F,kBAAoB,EAAnCp5F,OACAA,EAAOC,QAAQo5F,wBAA0B,EAAzCr5F,OACAA,EAAOC,QAAQq5F,2BAA6B,EAA5Ct5F,OACAA,EAAOC,QAAQs5F,mBAAqB,EAApCv5F,OACAA,EAAOC,QAAQu5F,yBAA2B,EAA1Cx5F,OACAA,EAAOC,QAAQw5F,yBAA2B,EAA1Cz5F,OACAA,EAAOC,QAAQy5F,mBAAqB,EAApC15F,OACAA,EAAOC,QAAQ05F,kBAAoB,EAAnC35F,OACAA,EAAOC,QAAQ25F,iBAAmB,EAAlC55F,OACAA,EAAOC,QAAQ45F,eAAiB,EAAhC75F,OACAA,EAAOC,QAAQ65F,iBAAmB,EAAlC95F,OACAA,EAAOC,QAAQ85F,iBAAmB,EAAlC/5F,OACAA,EAAOC,QAAQ+5F,eAAiB,EAAhCh6F,OACAA,EAAOC,QAAQg6F,uBAAyB,EAAxCj6F,OACAA,EAAOC,QAAQi6F,uBAAyB,EAAxCl6F,OACAA,EAAOC,QAAQk6F,oBAAsB,EAArCn6F,OACAA,EAAOC,QAAQm6F,YAAc,EAA7Bp6F,OACAA,EAAOC,QAAQo6F,eAAiB,EAAhCr6F,OACAA,EAAOC,QAAQq6F,cAAgB,EAA/Bt6F,OACAA,EAAOC,QAAQs6F,qBAAuB,EAAtCv6F,OACAA,EAAOC,QAAQu6F,mBAAqB,EAApCx6F,OACAA,EAAOC,QAAQw6F,2BAA6B,EAA5Cz6F,OACAA,EAAOC,QAAQy6F,6BAA+B,EAA9C16F,OAGAA,EAAOC,QAAQ06F,wBAA0B,EAAzC36F,OACAA,EAAOC,QAAQ26F,gCAAkC,EAAjD56F,OAGAA,EAAOC,QAAQ46F,YAAc,EAA7B76F,OACAA,EAAOC,QAAQ66F,aAAe,EAA9B96F,OACAA,EAAOC,QAAQ86F,aAAe,EAA9B/6F,OACAA,EAAOC,QAAQ+6F,gBAAkB,EAAjCh7F,OACAA,EAAOC,QAAQg7F,gBAAkB,EAAjCj7F,OACAA,EAAOC,QAAQi7F,iBAAmB,EAAlCl7F,OACAA,EAAOC,QAAQk7F,iBAAmB,EAAlCn7F,OASAA,EAAOC,QAAQm7F,WAAa,WACxB,OAAOp7F,EAAOC,QAAQ46F,YAAYO,YACrC,EA+BDp7F,EAAOC,QAAQo7F,mBAAqB,WAAa,OAAOr7F,EAAOC,QAAQ+6F,gBAAgBM,uBAAuBt1F,UAAa,EAyC3HhG,EAAOC,QAAQs7F,mBAAqB,WAAa,OAAOv7F,EAAOC,QAAQg7F,gBAAgBO,uBAAuBx1F,UAAa,EAwC3HhG,EAAOC,QAAQw7F,iBAAmB,WAAa,OAAOz7F,EAAOC,QAAQk7F,iBAAiBO,gBAAgB11F,UAAa,EA6CnHhG,EAAOC,QAAQ07F,eAAiB,WAAa,OAAO37F,EAAOC,QAAQk7F,iBAAiBS,cAAc51F,UAAa,EAyB/GhG,EAAOC,QAAQ47F,iBAAmB,WAAa,OAAO77F,EAAOC,QAAQi7F,iBAAiBQ,gBAAgB11F,UAAa,aChQnHhG,EAAOC,QAzBP,MAQE67F,cAActyE,GACZ,MAAM,IAAI9oB,MAAM,0BACjB,CAUW,aAACogB,EAAQvL,GACnB,OAAOA,EAAMuL,QAAOqM,IAASrM,GAAUA,EAAOg7E,cAAc3uE,IAC7D,oBC3BH,MAAMtF,EAASq9B,EAAQ,OACjByxC,EAAazxC,EAAAA,OAAAA,WA8BnB,MAAMsrC,EAQY,iBAAClnE,GACf,YAAsB,IAARA,CACf,CAQiB,mBAACA,GACjB,YAAsB,IAARA,CACf,CAQmB,qBAACA,GACnB,OAAOA,OACR,CAQqB,uBAACA,GACrB,OAAKA,CAEN,CAQc,gBAACA,GACd,OAAQ+lB,MAAM0sD,WAAWzyE,KAASimB,SAASjmB,EAC5C,CAQW,aAACA,GACX,OAAOA,IAAQskB,SAASuO,OAAO7yB,MAAU+lB,MAAM/lB,KAAS+lB,MAAMzB,SAAStkB,EAAK,IAC7E,CAQa,eAACA,GACb,OAAOA,aAAe9nB,OAASA,MAAMC,QAAQ6nB,EAC9C,CAQc,gBAACA,GACd,MAAsB,iBAARA,CACf,CAQe,iBAACA,GACf,MAAsB,kBAARA,CACf,CAQgB,kBAACA,GAChB,MAAsB,iBAARA,CACf,CASc,gBAACA,EAAKhV,GACnB,QAAKgV,GACc,iBAARA,KACPhV,GAASgV,aAAehV,EAE7B,CAQiB,mBAAC5I,GACjB,OAAOA,EAAIukB,gBAAkBvkB,CAC9B,CAQiB,mBAACA,GACjB,OAAOA,EAAI+tD,gBAAkB/tD,CAC9B,CAQe,iBAACA,EAAKkhB,GACpB4jE,EAASwL,WAAWC,MAAMvwF,GAAMkhB,GAAY,0CAC7C,CAUW,aAACtD,GACX,MAAmB,iBAARA,GACQ,IAAfA,EAAI3nB,SACA2nB,EAAI1d,MAAM,qBAAuB,IAAIjK,SAAW2nB,EAAI3nB,MAC7D,CAKc,gBAAC+J,GACd,MAAmB,iBAARA,IACX8kF,EAASwL,WAAWtwF,EAAI/J,OAAS,EAAG,8CAC7B,wCAAwCwH,KAAKuC,GACrD,CAQkB,oBAACA,EAAKkhB,GACvB4jE,EAASwL,WAAWE,SAASxwF,GAAMkhB,GAAY,gDAChD,CAKc,gBAAClhB,GACd,MAAmB,iBAARA,IACX8kF,EAASwL,WAAWtwF,EAAI/J,OAAS,EAAG,8CAC7B,kEAAkEwH,KAAKuC,GAC/E,CAQkB,oBAACA,EAAKkhB,GACvB4jE,EAASwL,WAAWG,SAASzwF,GAAMkhB,GAAY,gDAChD,CAKc,gBAAClhB,GACd,GAAmB,iBAARA,EAAkB,OAAO,EACpC8kF,EAASwL,WAAWtwF,EAAI/J,OAAS,EAAG,8CACpC,IACE,OAAOy6F,KAAKC,KAAK3wF,KAASA,CAG3B,CAFC,MAAOuhB,GACP,OAAO,CACR,CACF,CAOU,YAACL,GACV,MAAM,IAAIlsB,MAAMksB,GAAY,uBAC7B,CAQgB,kBAACsiB,EAAMtiB,GACtB,GAAoB,kBAATsiB,EAAoB,MAAM,IAAIxuC,MAAM,6BAC/C,IAAKwuC,EAAM,MAAM,IAAIxuC,MAAMksB,GAAY,yCACxC,CAQiB,mBAACsiB,EAAMtiB,GACvB,GAAoB,kBAATsiB,EAAoB,MAAM,IAAIxuC,MAAM,6BAC/C,GAAIwuC,EAAM,MAAM,IAAIxuC,MAAMksB,GAAY,yCACvC,CAQgB,kBAACtD,EAAKsD,GACrB,GAAY,OAARtD,EAAc,MAAM,IAAI5oB,MAAMksB,GAAY,+CAAiDtD,EAChG,CAQmB,qBAACA,EAAKsD,GACxB,GAAY,OAARtD,EAAc,MAAM,IAAI5oB,MAAMksB,GAAY,6CAC/C,CAQmB,qBAACtD,EAAKsD,GACxB,GAAI4jE,EAAS8L,YAAYhzE,GAAM,MAAM,IAAI5oB,MAAMksB,GAAY,iDAC5D,CAQqB,uBAACtD,EAAKsD,GAC1B,GAAI4jE,EAAS+L,UAAUjzE,GAAM,MAAM,IAAI5oB,MAAMksB,GAAY,mDAAqDtD,EAC/G,CAQuB,yBAACA,EAAKsD,GAC5B,GAAI4jE,EAASgM,gBAAgBlzE,GAC3B,MAAM,IAAI5oB,MAAMksB,GAAY,4CAA8CtD,EAE7E,CAQyB,2BAACA,EAAKsD,GAC9B,GAAI4jE,EAASiM,cAAcnzE,GAAM,MAAM,IAAI5oB,MAAMksB,GAAY,yDAC9D,CASkB,oBAAC4tB,EAAMC,EAAM7tB,GAC9B4jE,EAASwL,WAAWxL,EAASkM,OAAOliD,EAAMC,GAAO7tB,GAAY,kDAAoD4tB,EAAO,OAASC,EAClI,CASqB,uBAACD,EAAMC,EAAM7tB,GACjC,GAAI4tB,IAASC,EAAM,MAAM,IAAI/5C,MAAMksB,GAAY,kDAAoD4tB,EAAO,OAASC,EACpH,CAQe,iBAACnxB,EAAKsD,GACpB,IAAK4jE,EAASmM,MAAMrzE,GAAM,MAAM,IAAI5oB,MAAMksB,GAAY,wDACvD,CAQkB,oBAACtD,EAAKsD,GACvB,IAAK4jE,EAAS75E,SAAS2S,GAAM,MAAM,IAAI5oB,MAAMksB,GAAY,oDAC1D,CAQmB,qBAACtD,EAAKsD,GACxB,IAAK4jE,EAASoM,UAAUtzE,GAAM,MAAM,IAAI5oB,MAAMksB,GAAY,sDAC3D,CAQkB,oBAACtD,EAAKsD,GACvB,IAAK4jE,EAASqM,SAASvzE,GAAM,MAAM,IAAI5oB,MAAMksB,GAAY,sDAAwDtD,EAClH,CAQiB,mBAACA,EAAKsD,GACtB,IAAK4jE,EAAS/uF,QAAQ6nB,GAAM,MAAM,IAAI5oB,MAAMksB,GAAY,oDACzD,CAQoB,sBAACtD,EAAKsD,GACzB,IAAK4jE,EAAS1sC,WAAWx6B,GAAM,MAAM,IAAI5oB,MAAMksB,GAAY,oDAC5D,CASkB,oBAACtD,EAAKhV,EAAKsY,GAE5B,GADA4jE,EAASsM,kBAAkBxzE,EAAKsD,GAC5BtY,GACF,IAAKmtC,SAASn4B,EAAKhV,GAAM,MAAM,IAAI5T,MAAMksB,GAAY,gCAAkCtY,EAAIlQ,KAAO,sBAElG,IAAKq9C,SAASn4B,GAAM,MAAM,IAAI5oB,MAAMksB,GAAY,0CAEnD,CAQkB,oBAACxD,EAAOpB,GACzBoB,EAAMjpB,UAAYqK,OAAOC,OAAOud,EAAO7nB,WACvCipB,EAAMjpB,UAAUuK,YAAc0e,CAC/B,CAQY,gBACX,IAAIw5B,EAAM58C,UAAU,GAChBqiB,EAAO,GACX,IAAK,IAAI3mB,EAAI,EAAGA,EAAIsE,UAAUrE,OAAQD,IAAK2mB,EAAKpU,KAAKjO,UAAUtE,IAC/D,IAAK,IAAIA,EAAI,EAAGA,EAAIkhD,EAAIjhD,OAAQD,IAC9Bq7F,eAAen6C,EAAIlhD,GAAI,aAAeA,EAAI,qBAC1CkhD,EAAIlhD,GAAGqE,MAAM,KAAMsiB,EAEtB,CAQiB,mBAACla,GACjB,IAAIsjC,EAAK,SAAShS,EAAGu/B,EAAKg+B,EAAKtpF,GAC7B,GAAS,GAAL+rB,EAMJ,IAAK,IAAItnB,EAAI,EAAGA,EAAI6mD,EAAIr9D,OAAQwW,IAC9Bs5B,EAAGhS,EAAI,EAAGu/B,EAAIn6D,MAAMsT,EAAI,GAAI6kF,EAAI5oF,OAAO,CAAE4qD,EAAI7mD,KAAOzE,QANhDspF,EAAIr7F,OAAS,IACf+R,EAAIA,EAAI/R,QAAUq7F,EAQvB,EACGtpF,EAAM,GACVA,EAAIO,KAAK,IACT,IAAK,IAAIvS,EAAI,EAAGA,EAAIyM,EAAIxM,OAAQD,IAC9B+vC,EAAG/vC,EAAGyM,EAAK,GAAIuF,GAGjB,OADAA,EAAIO,KAAK9F,GACFuF,CACR,CASyB,2BAACvF,EAAK0iB,GAC9BisE,kBAAkB3uF,GAClB2uF,kBAAkBjsE,GAClB2/D,EAASwL,WAAWnrE,GAAQ,GAC5B,IAAIosE,EAAWC,YAAY/uF,GACvBgvF,EAAmB,GACvB,IAAK,IAAIz7F,EAAI,EAAGA,EAAIu7F,EAASt7F,OAAQD,IAC/Bu7F,EAASv7F,GAAGC,SAAWkvB,GACzBssE,EAAiBlpF,KAAKgpF,EAASv7F,IAGnC,OAAOy7F,CACR,CAQgB,kBAACtsE,GAChB,IAAIusE,EAAU,GACd,IAAK,IAAI17F,EAAI,EAAGA,EAAImvB,EAAMnvB,IACxB07F,EAAQnpF,KAAKvS,GAEf,OAAO07F,CACR,CAQmB,qBAACjvF,GACnB,OAAOA,EAAI2S,QAAO,SAAS1X,EAAOmE,EAAO/K,GACvC,OAAOA,EAAKsc,QAAQ1V,KAAWmE,CAChC,GACF,CAQe,iBAACY,GACfqiF,EAAS6M,YAAYlvF,GACrB,IAAIlH,EAAO,GACX,IAAK,IAAIvF,EAAI,EAAGA,EAAIyM,EAAIxM,OAAQD,IAAKuF,EAAKgN,KAAK9F,EAAIzM,IACnD,OAAOuF,CACR,CASY,cAACkH,EAAKqb,GACjB,IAAI8zE,GAAQ,EACZ,IAAK,IAAI57F,EAAIyM,EAAIxM,OAAS,EAAGD,GAAK,EAAGA,IAC/ByM,EAAIzM,KAAO8nB,IACbrb,EAAIT,OAAOhM,EAAG,GACd47F,GAAQ,EACR57F,KAGJ,OAAO47F,CACR,CAQsB,wBAACnvF,GACtB,IAAIiQ,EAAO,GACX,IAAK,IAAI1c,EAAI,EAAGA,EAAIyM,EAAIxM,OAAQD,IAC9B0c,EAAKnK,KAAK9F,EAAIzM,GAAG+3D,eAEnB,OAAOr7C,CACR,CAQa,eAACm/E,GACb,OAAO/M,EAAS/uF,QAAQ87F,GAAaA,EAAY,CAACA,EACnD,CAUmB,qBAACpvF,EAAKmG,EAAKkpF,GAC7BhN,EAASwL,WAAWxL,EAAS/uF,QAAQ0M,IACrC,IAAK,IAAIzM,EAAI,EAAGA,EAAIyM,EAAIxM,OAAQD,IAAK,CACnC,GAAIyM,EAAIzM,KAAO4S,EAAK,OAAO,EAC3B,IAAKkpF,GAAsBhN,EAASkM,OAAOvuF,EAAIzM,GAAI4S,GAAM,OAAO,CACjE,CACD,OAAO,CACR,CASiB,mBAAC5I,EAAKmrC,GACtB,OAAOnrC,EAAIoT,QAAQ+3B,IAAc,CAClC,CASiB,mBAACr7B,EAAM4C,GACvB,GAAI5C,IAAS4C,EAAM,OAAO,EAC1B,GAAY,MAAR5C,GAAwB,MAAR4C,EAAc,OAAO,EACzC,GAAY,MAAR5C,GAAwB,MAAR4C,EAAc,OAAO,EACzC,QAAoB,IAAT5C,QAAwC,IAAT4C,EAAsB,OAAO,EACvE,QAAoB,IAAT5C,QAAwC,IAAT4C,EAAsB,OAAO,EACvE,IAAKoyE,EAAS/uF,QAAQ+Z,GAAO,MAAM,IAAI9a,MAAM,kCAC7C,IAAK8vF,EAAS/uF,QAAQ2c,GAAO,MAAM,IAAI1d,MAAM,mCAC7C,GAAI8a,EAAK7Z,QAAUyc,EAAKzc,OAAQ,OAAO,EACvC,IAAK,IAAID,EAAI,EAAGA,EAAI8Z,EAAK7Z,SAAUD,EACjC,IAAK8uF,EAASkM,OAAOlhF,EAAK9Z,GAAI0c,EAAK1c,IAAK,OAAO,EAEjD,OAAO,CACR,CASY,cAAC84C,EAAMC,GAClB,OAAI+1C,EAAS/uF,QAAQ+4C,IAASg2C,EAAS/uF,QAAQg5C,GAAc+1C,EAASiN,YAAYjjD,EAAMC,GACpF+1C,EAAS/uC,SAASjH,IAASg2C,EAAS/uC,SAAShH,GAAc+1C,EAASkN,aAAaljD,EAAMC,GACpFD,IAASC,CACjB,CAWkB,oBAACkjD,EAAMC,GACxB,IAAI5/C,EAAQxzC,OAAOoH,KAAK+rF,GACpB1/C,EAAQzzC,OAAOoH,KAAKgsF,GAGxB,IAAK,IAAIx9C,KAAQpC,EAAO,CACtB,IAAIs/C,GAAQ,EACZ,IAAK,IAAIh9C,KAAQrC,EACf,GAAImC,IAASE,EAAM,CACjB,IAAKkwC,EAASkM,OAAOiB,EAAKv9C,GAAOw9C,EAAKt9C,IAAQ,OAAO,EACrDg9C,GAAQ,EACR,KACD,CAEH,IAAKA,QAAwBl8F,IAAfu8F,EAAKv9C,GAAqB,OAAO,CAChD,CAGD,IAAK,IAAIE,KAAQrC,EAAO,CACtB,IAAIq/C,GAAQ,EACZ,IAAK,IAAIl9C,KAAQpC,EACf,GAAIoC,IAASE,EAAM,CACjBg9C,GAAQ,EACR,KACD,CAEH,IAAKA,QAAwBl8F,IAAfw8F,EAAKt9C,GAAqB,OAAO,CAChD,CACD,OAAO,CAWR,CAOyB,2BAAChsC,GACzB,IAAK,IAAIhT,KAAOkJ,OAAOoH,KAAK0C,QACTlT,IAAbkT,EAAIhT,WAA2BgT,EAAIhT,EAE1C,CAQqB,uBAAC6M,EAAK0vF,GAG1Bf,kBAAkB3uF,GAClB2uF,kBAAkBe,GAClBrN,EAASwL,WAAW6B,GAAmB,GAGvC,IAAIC,EAAoBC,oBAAoBC,WAAW7vF,EAAIxM,QAASk8F,GAGhEI,EAAe,GACnB,IAAK,IAAIC,EAAuB,EAAGA,EAAuBJ,EAAkBn8F,OAAQu8F,IAAwB,CAG1G,IAAIC,EAAmBL,EAAkBI,GAGrCE,EAAc,GAClB,IAAK,IAAIC,EAAsB,EAAGA,EAAsBF,EAAiBx8F,OAAQ08F,IAC/ED,EAAYnqF,KAAK9F,EAAIgwF,EAAiBE,KAIxCJ,EAAahqF,KAAKmqF,EACnB,CAED,OAAOH,CACR,CASsB,wBAAC75F,EAAM6pE,GAC5B,IAAIp2D,EAAI0a,OAAOusC,SAASw/B,cAAc,KAKtC,OAJAzmF,EAAEmpD,KAAOzuC,OAAOpnB,IAAIozF,gBAAgB,IAAIC,KAAK,CAACvwB,GAAW,CAACnlE,KAAM,gBAChE+O,EAAE4mF,SAAWr6F,EACbyT,EAAEs9B,OAAO,SACTt9B,EAAE6mF,UAAYt6F,EACPyT,CACR,CAQkB,oBAAC2T,GAClB,OAAOmzE,EAAE,SAASC,OAAOD,EAAEnzE,GAAMxC,SAAS61E,MAC3C,CAQoB,sBAACvqF,GACpB,OAAO2D,KAAKzG,MAAMyG,KAAKC,UAAU5D,GAClC,CAOsB,wBAACA,GACtB,IAAI8gC,EAAQ,GACZ,IAAK,IAAIt+B,KAAQxC,EAAK8gC,EAAMnhC,KAAK6C,GACjC,IAAKpV,EAAI,EAAGA,EAAI0zC,EAAMzzC,OAAQD,WAAY4S,EAAI8gC,EAAM1zC,GAAGqtB,WACxD,CAQc,gBAAC+vE,GACd,OAAOH,EAAEG,IAAIC,SAASD,EACvB,CAQc,gBAAC3wF,GACd,OAAOwwF,EAAEG,IAAIE,YAAY7wF,EAAK,CAAC0qD,SAAS,GACzC,CAQmB,qBAACntD,GACnB,MAAO,MAAMvC,KAAKuC,EACnB,CAQkB,oBAACuzF,GAClB,MAAO,KAAK91F,KAAK81F,EAClB,CAQe,iBAACA,GACf,MAAgB,OAATA,GAA0B,OAATA,CACzB,CAQkC,oCAACvzF,GAClC,IAAI0H,EAAQ,EACZ,IAAK,IAAI1R,EAAI,EAAGA,EAAIgK,EAAI/J,OAAQD,IACzBw9F,aAAaxzF,EAAI8iC,OAAO9sC,KAAK0R,IAEpC,OAAOA,CACR,CAQyB,2BAAC1H,GACzB,OAAOA,EAAIE,MAAM,OAClB,CAQc,gBAACF,GACd,OAAOA,EAAIE,MAAM,YAClB,CAO2B,+BAC1B,IAAK,IAAIlK,EAAI,EAAGA,EAAIo9D,SAASqgC,YAAYx9F,OAAQD,IAAK,CACpD,IAAI09F,EAAatgC,SAASqgC,YAAYz9F,GACtC,IAAK09F,EAAWp+B,KAAM,OAAOo+B,CAC9B,CACD,OAAO,IACR,CAO+B,mCAC9B,IAAIC,EAAc,GACdC,EAAqBC,wBACzB,IAAKD,EAAoB,OAAO,KAChC,IAAK,IAAI59F,EAAI,EAAGA,EAAI49F,EAAmBE,SAAS79F,OAAQD,IACtD29F,GAAeC,EAAmBE,SAAS99F,GAAG+9F,QAAU,KAE1D,OAAOJ,CACR,CAauB,yBAACxzE,GACvB,IAAIngB,EAAM,kBAIV,GAHAA,GAAO,eAGHmgB,EAAQ6zE,MAAO,CACjB,IAAIA,EAAQC,QAAQ9zE,EAAQ6zE,OAC5B,IAAK,IAAIh+F,EAAI,EAAGA,EAAIg+F,EAAM/9F,OAAQD,IAAK,CACrC,IAAIe,EAAOi9F,EAAMh+F,GACbyrB,EAAO2xC,SAASw/B,cAAc,QAClC,IAAK,IAAIxnF,KAAQrU,EACXA,EAAK0O,eAAe2F,IACtBqW,EAAKyyE,aAAa9oF,EAAKiY,WAAYtsB,EAAKqU,EAAKiY,aAGjDrjB,GAAOyhB,EAAK0yE,SACb,CACF,CAOD,GAJAn0F,GAAOmgB,EAAQi0E,MAAQ,UAAYj0E,EAAQi0E,MAAQ,WAAa,GAChEp0F,GAAOmgB,EAAQwzE,YAAc,UAAYxzE,EAAQwzE,YAAc,WAAa,GAGxExzE,EAAQk0E,gBAAiB,CAC3B,IAAIA,EAAkBJ,QAAQ9zE,EAAQk0E,iBACtC,IAAK,IAAIr+F,EAAI,EAAGA,EAAIq+F,EAAgBp+F,OAAQD,IAAK,CAC/C,IAAIs+F,EAAiBD,EAAgBr+F,GACrC,GAAIs+F,EAAetpD,SAAS,OAAQhrC,GAAO,gBAAkBs0F,EAAiB,oBACzE,GAAIA,EAAetpD,SAAS,QAAShrC,GAAO,gDAAkDs0F,EAAiB,UAC/G,KAAIA,EAAetpD,SAAS,UAAWspD,EAAetpD,SAAS,QAC/D,MAAM,IAAIh2C,MAAM,2CAA6Cs/F,GADYt0F,GAAO,aAAes0F,EAAiB,IAChH,CACN,CACF,CAID,OAHAt0F,GAAO,gBACHmgB,EAAQ6W,MAAKh3B,GAAOizF,EAAE,SAASC,OAAO/yE,EAAQ6W,IAAI1Z,SAAS61E,QAC/DnzF,GAAO,iBACAA,CACR,CAae,iBAACmgB,EAASo0E,GACxB,IAAIC,GAAe,EACf1sE,EAAIjB,OAAO6uC,OAaf,SAAS++B,EAAWlzE,EAAKsF,GACnB2tE,IACJA,GAAe,EACXD,GAAQA,EAAOhzE,EAAKsF,GACzB,CAhBIkqE,cAAcjpE,IAAOipE,cAAcjpE,EAAEsrC,WAI1CtrC,EAAE4sE,OAAS,KACX5sE,EAAEsrC,SAASn3C,MAAM04E,kBAAkBx0E,IACnC2H,EAAE8sE,iBAAiB,QAAQ,WACzBH,EAAW,KAAM3sE,EAClB,IACDA,EAAEsrC,SAAS0M,SART20B,EAAW,IAAIz/F,MAAM,kCAgBxB,CAQkB,oBAAC6/F,EAAKC,GACvB,IAAIC,EAAS3hC,SAASw/B,cAAc,UAKpC,OAJAmC,EAAOC,OAASH,EAAII,cACpBF,EAAOjqE,MAAQ+pE,EAAIK,aACLH,EAAOI,WAAW,MACxBC,UAAUP,EAAK,EAAG,GACnBE,EAAOM,UAAUP,EACzB,CASuB,yBAACp2F,EAAKsrD,EAASoyB,GAGrC,IAAIkZ,GAAW,EAGXT,EAAM,IAAIU,MAmBd,SAASC,EAAWv8F,GACdq8F,IACJA,GAAW,OACM,IAANr8F,GAAgC,UAAXA,EAAEmE,KAAkBg/E,GAAO,GACtDA,GAAO,GACb,CAvBDyY,EAAI7/B,OAASwgC,EACbX,EAAI5/B,QAAUugC,EACdX,EAAIvhC,IAAM50D,EAAM,MAAQ,IAAIulB,KAG5BoyB,YAAW,WACTJ,cAAa,WACXA,cAAa,WACXA,cAAa,WACNq/C,IACHA,GAAW,EACXlZ,GAAO,GAEV,GACF,GACF,GACF,GAAEpyB,EAQJ,CAQe,iBAACoR,GACf,OAAOA,EAAK1iE,KAAKsyC,SAAS,SAAyB,oBAAdowB,EAAKh+D,IAC3C,CAQgB,kBAACg+D,GAChB,OAAOA,EAAK1iE,KAAKsyC,SAAS,UAA0B,qBAAdowB,EAAKh+D,IAC5C,CAQe,iBAACg+D,GACf,OAAOA,EAAK1iE,KAAKsyC,SAAS,SAAyB,aAAdowB,EAAKh+D,IAC3C,CAQe,iBAACg+D,GACf,OAAOA,EAAK1iE,KAAKsyC,SAAS,SAAyB,eAAdowB,EAAKh+D,IAC3C,CAUe,iBAACoO,EAAO4wE,GAGjB0I,EAAS/uF,QAAQyV,KACpBs5E,EAASwL,WAAWa,SAAS3lF,IAC7BA,EAAQ,CAACA,IAIX,IAAIiqF,EAAQ,GACZ,IAAK,IAAIz/F,EAAI,EAAGA,EAAIwV,EAAMvV,OAAQD,IAChCy/F,EAAMltF,KAAKmtF,EAASlqF,EAAMxV,KAO5B,SAAS0/F,EAAS12E,GAChB,OAAO,SAASo9D,GACd,IAAIyY,EAAM,IAAIU,MACdV,EAAI7/B,OAAS,WAAaonB,EAAO,KAAMyY,EAAO,EAC9CA,EAAI5/B,QAAU,WAAamnB,EAAO,IAAIpnF,MAAM,sBAAwBgqB,GAAS,EAC7E61E,EAAIvhC,IAAMt0C,CACX,CACF,CAVD7R,MAAMk+C,SAASoqC,EAAOrZ,EAWvB,CAQe,iBAACnmF,GACf,IAAI+J,EAAM,GACV,IAAK,IAAIhK,EAAI,EAAGA,EAAIC,EAAQD,IAAKgK,GAAO,KACxC,OAAOA,CACR,CAEmB,uBAIU,iBAAjBlB,OAAOumC,QAEhBvmC,OAAOg/B,eAAeh/B,OAAQ,SAAU,CACtCpB,MAAO,SAAgB+rC,EAAQksD,GAE7B,GAAc,MAAVlsD,EACF,MAAM,IAAIhM,UAAU,8CAGtB,IAAIh0B,EAAK3K,OAAO2qC,GAEhB,IAAK,IAAI5nC,EAAQ,EAAGA,EAAQvH,UAAUrE,OAAQ4L,IAAS,CACrD,IAAI+zF,EAAat7F,UAAUuH,GAE3B,GAAkB,MAAd+zF,EACF,IAAK,IAAIC,KAAWD,EAEd92F,OAAOrK,UAAUgR,eAAe/N,KAAKk+F,EAAYC,KACnDpsF,EAAGosF,GAAWD,EAAWC,GAIhC,CACD,OAAOpsF,CACR,EACD8/B,UAAU,EACVD,cAAc,IAOlBrmB,OAAOxuB,UAAUqhG,UAAU,SAASlgD,EAAKmgD,GACvC,OAAOjhG,KAAKs6C,OAAO,EAAGwG,GAAOmgD,EAAcjhG,KAAKs6C,OAAOwG,EAAMmgD,EAAY9/F,OAC1E,EAODgtB,OAAOxuB,UAAUwmE,WAAa,SAAS+6B,EAActiD,GACnD,OAAO5+C,KAAKs6C,OAAOsE,GAAY,EAAGsiD,EAAa//F,UAAY+/F,CAC5D,EAOD/yE,OAAOxuB,UAAUu2C,SAAW,SAASgrD,EAActiD,GAGjD,OAFMA,EAAW5+C,KAAKmB,OACjBy9C,GAAY,EADcA,EAAW5+C,KAAKmB,OAExCnB,KAAKs6C,OAAOsE,EAAWsiD,EAAa//F,OAAQ+/F,EAAa//F,UAAY+/F,CAC7E,EAODlgG,MAAMrB,UAAUwhG,UAAY,SAASn4E,GAEnC,IADA,IAAI8zE,GAAQ,EACH57F,EAAI,EAAGA,EAAIlB,KAAKmB,OAAQD,IAC3BlB,KAAKkB,IAAM8nB,IACb8zE,GAAQ,EACR98F,KAAKkN,OAAOhM,EAAG,GACfA,KAGJ,OAAO47F,CACR,CACF,CAOa,iBACZ,MAAO,uCAAuC/pF,QAAQ,SAAS,SAAS5F,GACtE,IAAIilB,EAAoB,GAAhB3X,KAAK2mF,SAAgB,EAC7B,OADyC,KAALj0F,EAAWilB,EAAS,EAAJA,EAAU,GACrD7D,SAAS,GACnB,GACF,CAOe,mBACd,IAAI8yE,EAAoC,mBAAlB3hC,cAClB4hC,EAAgB,IAAInyF,SAAS,qDAAb,GAChBoyF,IAAUD,GAAgB,IAAInyF,SAAS,oFAAb,GAC9B,OAAOkyF,GAAaC,IAAkBC,CACvC,CAOe,mBACd,OAAOvhG,KAAKwhG,aAAe9e,UAAU+e,UAAUnjF,QAAQ,WAAa,CACrE,CASkB,sBACjB,IAAIojF,EAAK3vE,OAAO2wD,UAAU+e,UAEtBE,EAAOD,EAAGpjF,QAAQ,SACtB,GAAIqjF,EAAO,EAEP,OAAOv0D,SAASs0D,EAAGrrD,UAAUsrD,EAAO,EAAGD,EAAGpjF,QAAQ,IAAKqjF,IAAQ,IAInE,GADcD,EAAGpjF,QAAQ,YACX,EAAG,CAEb,IAAI0jE,EAAK0f,EAAGpjF,QAAQ,OACpB,OAAO8uB,SAASs0D,EAAGrrD,UAAU2rC,EAAK,EAAG0f,EAAGpjF,QAAQ,IAAK0jE,IAAM,GAC9D,CAED,IAAI4f,EAAOF,EAAGpjF,QAAQ,SACtB,OAAIsjF,EAAO,EAEDx0D,SAASs0D,EAAGrrD,UAAUurD,EAAO,EAAGF,EAAGpjF,QAAQ,IAAKsjF,IAAQ,IAI3D,IACR,CAWwB,0BAACh+F,EAAMgG,GACzBA,IAAKA,EAAMmoB,OAAOwuC,SAASC,MAChC58D,EAAOA,EAAKmP,QAAQ,UAAW,QAC/B,IAA6Dq0C,EAAjD,IAAIjkD,OAAO,OAASS,EAAO,qBAAsCqlE,KAAKr/D,GAClF,OAAKw9C,EACAA,EAAQ,GACNpwC,mBAAmBowC,EAAQ,GAAGr0C,QAAQ,MAAO,MAD5B,GADH,IAGtB,CAUkB,oBAACkc,EAAKsD,GAGvB,OAFAtD,EAAMxU,KAAKsY,KAAK9D,GAChBsD,EAAM9X,KAAK69B,MAAM/lB,GACV9X,KAAK69B,MAAM79B,KAAK2mF,UAAY7uE,EAAMtD,EAAM,IAAMA,CACtD,CASmB,qBAACA,EAAKsD,EAAK3f,GAC7Bo9E,EAASwL,WAA4B,iBAAV5oF,GAC3B,IAAIivF,EAAO,GACX,IAAK,IAAI3gG,EAAI,EAAGA,EAAI0R,EAAO1R,IAAK2gG,EAAKpuF,KAAKu8E,EAAS8R,aAAa7yE,EAAKsD,IACrE,OAAOsvE,CACR,CASyB,2BAAC5yE,EAAKsD,EAAK3f,GACnC,IAAIivF,EAAO,GAGX,IAFA7R,EAASwL,WAAW5oF,GAAS,GAC7Bo9E,EAASwL,WAAWjpE,EAAMtD,EAAM,GAAKrc,GAC9BivF,EAAK1gG,OAASyR,GAAO,CAC1B,IAAImvF,EAAY/R,EAAS8R,aAAa7yE,EAAKsD,GACtCsvE,EAAKl2B,SAASo2B,IAAYF,EAAKpuF,KAAKsuF,EAC1C,CACD,OAAOF,CACR,CAOa,eAAC9sF,GACb,IAAK,IAAI7T,EAAI6T,EAAM5T,OAAS,EAAGD,EAAI,EAAGA,IAAK,CACzC,IAAIyW,EAAI8C,KAAK69B,MAAM79B,KAAK2mF,UAAYlgG,EAAI,IACpC8gG,EAAOjtF,EAAM7T,GACjB6T,EAAM7T,GAAK6T,EAAM4C,GACjB5C,EAAM4C,GAAKqqF,CACZ,CACF,CAOU,YAACjtF,GACVA,EAAM68C,MAAK,CAACv6C,EAAGC,IAAMD,IAAMC,EAAI,EAAID,EAAIC,EAAI,GAAK,GACjD,CAiBa,eAACxD,EAAKmuF,EAAOC,EAAOl5E,EAAKm5E,EAAQC,GAC7C,IAAIC,EAASJ,EAAMr/F,KAAKkR,GACpBwuF,EAAgBtS,EAASuS,UAAUF,EAAQr5E,EAAKm5E,EAAQC,GACxDC,IAAWC,GAAeJ,EAAMt/F,KAAKkR,EAAKwuF,EAC/C,CAgBe,iBAACplD,EAAMC,EAAMglD,EAAQC,GAGnC,GAAIllD,IAASC,EAAM,OAAOD,EAG1B,IAAIvM,EACJ,GAAIuM,aAAgBi5C,GAAch5C,aAAgBg5C,IAChDxlD,EAAauM,EAAKF,QAAQG,GACP,IAAfxM,GAAkB,OAAOuM,EAI/B,QAAat8C,IAATs8C,QAA+Bt8C,IAATu8C,EACxB,OAAIglD,IAAoC,IAA1BA,EAAOK,oBAA0B,OAC1B5hG,IAATs8C,EAAqBC,EAAOD,EAI1C,GAAIilD,QAAiCvhG,IAAvBuhG,EAAOM,aAA6C,kBAATvlD,GAAsC,kBAATC,EAEpF,OADA91B,EAAOxa,aAAas1F,EAAOM,YAAa,WACjCN,EAAOM,YAIhB,GAAIN,QAAgCvhG,IAAtBuhG,EAAOO,WAA0B,CAI7C,GAHAr7E,EAAOxa,aAAas1F,EAAOO,WAAY,WAGnB,iBAATxlD,GAAqC,iBAATC,EACrC,OAAOglD,EAAOO,WAAajoF,KAAK8X,IAAI2qB,EAAMC,GAAQ1iC,KAAKwU,IAAIiuB,EAAMC,GAInE,GAAID,aAAgBi5C,GAAch5C,aAAgBg5C,EAChD,OAAOgM,EAAOO,WAAc/xD,EAAa,EAAIwM,EAAOD,EAASvM,EAAa,EAAIuM,EAAOC,CAExF,CAID,OADA91B,EAAOuqB,UAAUsL,EAAMC,EAAMilD,GAAkB,2BAA6BllD,EAAO,QAAUC,EAAO,iBAAmB1lC,KAAKC,UAAUyqF,IAC/HjlD,CACR,CAYY,cAACp8C,EAAK8H,EAAO+5F,EAAS,EAAGC,GAAU,EAAMC,GAAkB,GACtE,YAAcjiG,IAAVgI,GAAuBi6F,EAAwB,GAC5C7S,EAAS8S,UAAUH,GAAU7hG,EAAM,KAAO8H,GAASg6F,EAAU,KAAO,GAC5E,CASkB,oBAAC13F,GAClB,OAAOA,EAAI6H,QAAQ,6BAA8B,SAClD,CAOqB,uBAACqZ,GACrB,IAAM,MAAM,IAAIlsB,MAAMksB,EACmB,CAAzC,MAAOK,GAAO7lB,QAAQrE,MAAMkqB,EAAIG,MAAS,CAC1C,CAOmB,qBAACm2E,GACnB,OAAO,IAAI15F,SAAQ,SAASrK,GAAWuiD,WAAWviD,EAAS+jG,EAAc,GAC1E,CASuB,yBAAC3zD,EAAS4zD,GAChC,OAAO,IAAI35F,SAAQ,CAACrK,EAAS40D,KAC3BxkB,EAAQ6zD,GAAG,QAAQ,SAASp1F,EAAMm1F,GAAUhkG,EAAQ6O,EAAQ,IAC5DuhC,EAAQ6zD,GAAG,SAAS,SAASx2E,GAAOmnC,EAAOnnC,EAAO,IAClD,IACO2iB,EAAQmf,KAAKy0C,GAAkB,WAAWhkG,GAGhD,CAFC,MAAOytB,GACPmnC,EAAOnnC,EACR,IAEJ,CAQkB,oBAACzgB,GAClB,IAAKA,EAAK,MAAM9L,MAAM,iCAGtB,OAFA8L,EAAMA,EAAI+G,QAAQ,MAAO,IACpB,IAAI5P,OAAO,cAAcwF,KAAKqD,KAAMA,EAAK,UAAYA,GACnDA,CACR,EAGHxM,EAAOC,QAAUuwF,mBCv/CAtrC,EAAQ,OAAzB,MACMqrC,EAAerrC,EAAQ,OACvB21C,EAAc31C,EAAQ,OACtBgyC,EAAahyC,EAAQ,OACrBw+C,EAAkBx+C,EAAQ,OAC1By+C,EAAUz+C,EAAQ,MAOxB,MAAMorC,EAuBgB,qBAAC71B,GAGnB,GAAIA,EAAQmpC,cACV,IACE,aAAarT,EAAasT,kBAAaziG,EAAW,cAAeq5D,EAQlE,CAPC,MAAOxtC,GACP,GAAIA,EAAIpqB,QAAQlB,OAAS,GAA+B,MAA1BsrB,EAAIpqB,QAAQ2rC,OAAO,GAAY,CAC3D,IAAIs1D,EAAS7rF,KAAKzG,MAAMyb,EAAIpqB,SAC5BoqB,EAAIpqB,QAAUihG,EAAOC,cACrB92E,EAAIskE,WAAauS,EAAOvS,UACzB,CACD,MAAMtkE,CACP,CAIHwtC,EAAUjwD,OAAOumC,OAAO,CAAC,EAAGu/C,EAAW0T,iBAAkBvpC,GAGzD,IAAMA,EAAQM,KAAO,IAAI5vD,IAAIsvD,EAAQjuD,KAAKuuD,IAC6B,CAAvE,MAAO9tC,GAAO,MAAM,IAAIvsB,MAAM,wBAA0B+5D,EAAQjuD,IAAO,CACvE,GAAIiuD,EAAQ70C,MAAkC,iBAAjB60C,EAAQ70C,MAA6C,iBAAjB60C,EAAQ70C,KACvE,MAAM,IAAIllB,MAAM,6CAIb4vF,EAAW2T,aAAaxpC,EAAQM,QAAOu1B,EAAW2T,aAAaxpC,EAAQM,MAAQ,IAAIm8B,EAAW,IAG9F5G,EAAW4T,mBAAmBzpC,EAAQM,QACzCu1B,EAAW4T,mBAAmBzpC,EAAQM,MAAQ,IAAI2oC,EAAgB,CAChES,kBAAmBtJ,EAAYuJ,wBAC/BC,sBAAuBx6F,WAK3B,IAAI6rD,OAA8Bt0D,IAApBq5D,EAAQ/E,QAAwB46B,EAAWgU,iBAAuC,IAApB7pC,EAAQ/E,QAAgB46B,EAAWiU,YAAc9pC,EAAQ/E,QACjI8uC,EAAwC,UAAvB/pC,EAAQu2B,WAAyBV,EAAWmU,cAAchqC,GAAW61B,EAAWoU,YAAYjqC,GAC7GkqC,EAAiB,IAAI96F,SAAQ,CAACrK,EAAS40D,KACzC,IAAIxyD,EAAKmgD,YAAW,KAClBgU,aAAan0D,GACbwyD,EAAO,wBAAyBsB,EAAU,gBAA1C,GACCA,EAHH,IAKF,OAAO7rD,QAAQgqD,KAAK,CAAC2wC,EAAgBG,GACtC,CAIyB,2BAACC,GAGzB,IAAI59F,EAAO,CACTkiB,OAAQ07E,EAAI17E,OACZ1c,IAAKo4F,EAAIp4F,IACToZ,KAAMg/E,EAAIh/E,KACVi/E,MAAOD,EAAIp4F,IAAIm6D,WAAW,SAAW2pB,EAAWwU,iBAAmBxU,EAAWyU,gBAC9EjU,mBAAoB8T,EAAI9T,mBACxBD,wBAAyB+T,EAAI/T,wBAC7BmU,aAAa,GAEXJ,EAAI3U,WACNjpF,EAAKwrD,SAAU,EACfxrD,EAAKi+F,KAAO,CACVC,KAAMN,EAAI3U,SACVkV,KAAMP,EAAI1U,SACVkV,iBAAiB,IAGjBR,EAAIh/E,gBAAgBw4B,aAAYp3C,EAAKkzD,SAAW,MAGpD,IAAIa,EAAO6pC,EAAI7pC,KACXm2B,QAAaZ,EAAW2T,aAAalpC,GAAMsqC,QAAOxsF,iBACpD,OAAOy3E,EAAW4T,mBAAmBnpC,GAAM30D,IAAI,SAASY,GAAQ,OAAO28F,EAAQ38F,EAAQ,EAACirC,KAAKzxC,KAAMwG,GACpG,IAGGs+F,EAAqB,CAAC,EAS1B,OARIV,EAAI/T,yBACNyU,EAAmB/T,WAAaL,EAAKK,WACrC+T,EAAmB9T,WAAaN,EAAK6S,cACrCuB,EAAmBzsC,QAAUq4B,EAAKr4B,QAClCysC,EAAmB1/E,KAAOsrE,EAAKtrE,MAE/B0/E,EAAmB1/E,KAAOsrE,EAErBoU,CACR,CAEuB,yBAACV,GACvB,GAAIA,EAAI/rC,QAAS,MAAM,IAAIn4D,MAAM,iDAGjC,IAAIwoB,EAAS07E,EAAI17E,OACb1c,EAAMo4F,EAAIp4F,IACVuuD,EAAO6pC,EAAI7pC,KACXk1B,EAAW2U,EAAI3U,SACfC,EAAW0U,EAAI1U,SACftqE,EAAOg/E,EAAIh/E,KACX2/E,EAAW3/E,aAAgBw4B,WAG3B8yC,QAAaZ,EAAW2T,aAAalpC,GAAMsqC,QAAOxsF,iBACpD,OAAOy3E,EAAW4T,mBAAmBnpC,GAAM30D,IAAI,WAC7C,OAAO,IAAIyD,SAAQ,SAASrK,EAAS40D,GACX,IAAIk8B,EAAWkV,kBAAkBt8E,EAAQ1c,EAAKyjF,EAAUC,GAC9Dz1B,SAAQ,SAASy2B,GACjC1xF,EAAQ0xF,EACT,IAAE,SAASA,GACNA,EAAKpxB,OAAQtgE,EAAQ0xF,GACpB98B,EAAO,IAAI1zD,MAAM,oCAAsCwoB,EAAS,IAAM1c,GAC5E,GAAEoZ,EACJ,GACF,EAACqsB,KAAKzxC,MACR,IAGG8kG,EAAqB,CAAC,EAM1B,OALAA,EAAmB/T,WAAaL,EAAKpxB,OACrCwlC,EAAmB9T,WAAaN,EAAKM,WACrC8T,EAAmBzsC,QAAUy3B,EAAWmV,yBAAyBvU,EAAKwU,yBACtEJ,EAAmB1/E,KAAO2/E,EAAW,IAAInnD,WAAW8yC,EAAK1vB,UAAY0vB,EAAK1vB,SACtE8jC,EAAmB1/E,gBAAgBwxD,cAAakuB,EAAmB1/E,KAAO,IAAIw4B,WAAWknD,EAAmB1/E,OACzG0/E,CACR,CAOmB,uBAClB,IAAKhV,EAAWqV,WAAY,CAC1B,IAAIC,EAAO1gD,EAAQ,MACnBorC,EAAWqV,WAAa,IAAIC,EAAKC,MAAM,CAACC,WAAW,GACpD,CACD,OAAOxV,EAAWqV,UACnB,CAOoB,wBACnB,IAAKrV,EAAWyV,YAAa,CAC3B,IAAIC,EAAQ9gD,EAAQ,OACpBorC,EAAWyV,YAAc,IAAIC,EAAMH,MAAM,CAACC,WAAW,GACtD,CACD,OAAOxV,EAAWyV,WACnB,CAG8B,gCAACE,GAC9B,IAAIC,EAAY,CAAC,EACbrtC,EAAUotC,EAAW95C,OAAOp/C,MAAM,WACtC,IAAK,IAAI2jB,KAAUmoC,EAAS,CAC1B,IAAIstC,EAAaz1E,EAAO3jB,MAAM,MAC9Bm5F,EAAUC,EAAW,IAAMA,EAAW,EACvC,CACD,OAAOD,CACR,EAUH5V,EAAWkV,kBAAoB,SAASt8E,EAAQ9e,EAAK6lF,EAAUC,GAC7D,IAAI1tF,EAAOhC,KAEX,QAAwB,IAAb4lG,EACT,IAAIA,EAAWlhD,EAAQ,OAGzB1kD,KAAK6lG,OAAS,KACd7lG,KAAK8lG,MAAQ,KACb9lG,KAAK+lG,MAAQ,KACb/lG,KAAKgmG,IAAM,KACXhmG,KAAKghE,SAAW,KAChBhhE,KAAKimG,OAAS,KACdjmG,KAAKkmG,GAAK,EACVlmG,KAAKmmG,OAAS,KAGdnmG,KAAKk1D,QAAU,IACfl1D,KAAKomG,WAAY,EAGjBpmG,KAAKqmG,MAAO,EACiB,SAAzB39E,EAAOuwC,eAAqD,QAAzBvwC,EAAOuwC,gBAC5Cj5D,KAAKqmG,MAAO,GAOdrmG,KAAKi6D,QAAU,SAASqsC,EAAWC,EAASzmG,GAG1C,GAAIA,EACF,IACEkC,EAAKlC,KAAOA,aAAgB89C,YAA8B,iBAAT99C,EAAoBA,EAAO2X,KAAKC,UAAU5X,EAI5F,CAHC,MAAO2sB,GAEP,MADA7lB,QAAQrE,MAAMkqB,GACRA,CACP,CAEHzqB,EAAKskG,UAAYA,EACjBtkG,EAAKukG,QAAUA,EAEVvkG,EAAK8jG,MAGR9jG,EAAKwkG,2BAFLxkG,EAAKykG,2BAA2BzkG,EAAKlC,KAIxC,EACDE,KAAKymG,2BAA6B,SAAS3mG,GACzCkC,EAAK0kG,aAAe,IAAI/lC,eACxB3+D,EAAK0kG,aAAa9lC,KAAKl4C,EAAQ9e,GAAK,GACpC5H,EAAK0kG,aAAaxxC,QAAUlzD,EAAKkzD,QAE7BlzD,EAAKqkG,MAAQvmG,IACK,iBAATA,EACTkC,EAAK0kG,aAAa7sB,iBAAiB,eAAgB,cAEnD73E,EAAK0kG,aAAa3lC,aAAe,eAIrC/+D,EAAK0kG,aAAaC,mBAAqB,WAGrC,GAAqC,IAAjC3kG,EAAK0kG,aAAaE,WAAkB,CAEtC,IAGIC,EAHAC,EAAkB9kG,EAAK0kG,aAAaxB,wBACxC4B,EAAkBA,EAAgBv6F,MAAM,MAGxC,IAAI,IAAIrL,EAAI,EAAGA,EAAI4lG,EAAgB3lG,OAAQD,IACY,MAAjD4lG,EAAgB5lG,GAAGkK,MAAM,uBAC3By7F,EAAgBC,EAAgB5lG,IAIpC,GAAqB,MAAjB2lG,EAAuB,CAKzB,IAFAA,GADAA,EAAgBA,EAAcxiG,MAAMwiG,EAAcvoF,QAAQ,KAAO,GAAI,IACvC/R,MAAM,KACpCvK,EAAK6jG,OAASgB,EAAc,GAAGt6F,MAAM,MAAM,GAClCrL,EAAI,EAAGA,EAAI2lG,EAAc1lG,OAAQD,IAAK,CAC7C,IAAI6lG,EAAaF,EAAc3lG,GAAGod,QAAQ,KACxCxd,EAAM+lG,EAAc3lG,GAAGm1C,UAAU,EAAG0wD,GACpC/9E,EAAM69E,EAAc3lG,GAAGm1C,UAAU0wD,EAAa,GAChD/9E,EAAMA,EAAIjW,QAAQ,SAAU,IAED,MAAvBjS,EAAIsK,MAAM,YACZpJ,EAAK+jG,MAAQ/8E,GAGY,MAAvBloB,EAAIsK,MAAM,YACZpJ,EAAK8jG,MAAQ98E,GAGa,MAAxBloB,EAAIsK,MAAM,aACZpJ,EAAKikG,OAASj9E,GAGS,MAArBloB,EAAIsK,MAAM,UACZpJ,EAAKgkG,IAAMh9E,EAEd,CAEDhnB,EAAKmkG,OAASnkG,EAAKglG,iBACnBhlG,EAAKkkG,KAELlkG,EAAK0E,IAAI,qBACT1E,EAAK0E,IAAI,YAAY1E,EAAK+jG,OAC1B/jG,EAAK0E,IAAI,YAAY1E,EAAK8jG,OAC1B9jG,EAAK0E,IAAI,aAAa1E,EAAKikG,QAC3BjkG,EAAK0E,IAAI,UAAU1E,EAAKgkG,KAExBhkG,EAAKwkG,0BACN,CACF,CACoC,IAAjCxkG,EAAK0kG,aAAaE,YACa,MAA7B5kG,EAAK0kG,aAAapnC,SACpBt9D,EAAK0E,IAAI,mCAAmCkD,GACxC9J,aAAgB89C,WAClB57C,EAAKskG,UAAUtkG,EAAK0kG,cAEmB,cAAnC1kG,EAAK0kG,aAAa5lC,aAChB9+D,EAAK0kG,aAAa5lC,aAAa3/D,OAAS,IAEtCa,EAAKilG,OAAOjlG,EAAK0kG,aAAa5lC,cAChC9+D,EAAKskG,UAAUtkG,EAAK0kG,eAMxB1kG,EAAKskG,YAKd,EAEGtkG,EAAKqkG,KAEPrkG,EAAK0kG,aAAa7lC,KAAK7+D,EAAKlC,MAE5BkC,EAAK0kG,aAAa7lC,OAEpB7+D,EAAK0E,IAAI,8BAA8BkD,GAGvC5H,EAAK0kG,aAAavmC,QAAU,WACO,MAA7Bn+D,EAAK0kG,aAAapnC,SACpBt9D,EAAK0E,IAAI,UAAU1E,EAAK0kG,aAAapnC,OAAO,mCAAmC11D,GAC/E5H,EAAKukG,QAAQvkG,EAAK0kG,cAErB,CACF,EACD1mG,KAAKwmG,yBAA0B,WAE7BxkG,EAAKg/D,SAAWh/D,EAAKklG,oBACrBllG,EAAKmlG,qBAAuB,IAAIxmC,eAChC3+D,EAAKmlG,qBAAqBvmC,KAAKl4C,EAAQ9e,GAAK,GAC5C5H,EAAKmlG,qBAAqBjyC,QAAUlzD,EAAKkzD,QACzC,IAAIkyC,EAAmBplG,EAAK6jG,OAAL7jG,cACRytF,EADQztF,aAEXA,EAAK+jG,MAFM/jG,aAGXA,EAAK8jG,MAHM9jG,WAIb4H,EAJa5H,gBAKRA,EAAKg/D,SALGh/D,cAMVA,EAAKikG,OANKjkG,UAOdA,EAAKgkG,IAPShkG,SAQd,WAAaA,EAAKkkG,IAAI7hG,OAAO,GARfrC,aASVA,EAAKmkG,OAAO,IACzBnkG,EAAKmlG,qBAAqBttB,iBAAiB,gBAAiButB,GAC5DplG,EAAK0E,IAAI,2CACT1E,EAAK0E,IAAI0gG,GAELplG,EAAKqkG,MAAQrkG,EAAKlC,OACK,iBAAdkC,EAAKlC,KACdkC,EAAKmlG,qBAAqBttB,iBAAiB,eAAgB,cAE3D73E,EAAKmlG,qBAAqBpmC,aAAe,eAG7C/+D,EAAKmlG,qBAAqBjnC,OAAS,WAE7Bl+D,EAAKmlG,qBAAqB7nC,QAAU,KAAOt9D,EAAKmlG,qBAAqB7nC,OAAS,KAEhFt9D,EAAKkkG,KAEDlkG,EAAKlC,gBAAgB89C,WACvB57C,EAAKskG,UAAUtkG,EAAKmlG,sBAE2B,cAA3CnlG,EAAKmlG,qBAAqBrmC,cAAgC9+D,EAAKmlG,qBAAqBrmC,aAAa3/D,OAAS,GAExGa,EAAKilG,OAAOjlG,EAAKmlG,qBAAqBrmC,cACxC9+D,EAAKskG,UAAUtkG,EAAKmlG,uBAKvBnlG,EAAKskG,cAMRtkG,EAAK8jG,MAAQ,KACb9jG,EAAKukG,QAAQvkG,EAAKmlG,sBAErB,EAEDnlG,EAAKmlG,qBAAqBhnC,QAAU,WAClCn+D,EAAK0E,IAAI,UAAU1E,EAAKmlG,qBAAqB7nC,OAAO,iCAAiC11D,GACrF5H,EAAK8jG,MAAQ,KACb9jG,EAAKukG,QAAQvkG,EAAKmlG,qBACnB,EAEGnlG,EAAKqkG,KACPrkG,EAAKmlG,qBAAqBtmC,KAAK7+D,EAAKlC,MAEpCkC,EAAKmlG,qBAAqBtmC,OAE5B7+D,EAAK0E,IAAI,4BAA4BkD,EACtC,EAED5J,KAAKknG,kBAAoB,WACvB,IAAIG,EAAMzB,EAAS0B,IAAI7X,EAAS,IAAIztF,EAAK+jG,MAAM,IAAIrW,GAAUnhE,WACzDg5E,EAAM3B,EAAS0B,IAAI5+E,EAAO,IAAI9e,GAAK2kB,WAOvC,OANeq3E,EAAS0B,IAAID,EAAI,IAC9BrlG,EAAK8jG,MAAM,KACV,WAAa9jG,EAAKkkG,IAAI7hG,OAAO,GAAG,IACjCrC,EAAKmkG,OAAO,IACZnkG,EAAKgkG,IAAI,IACTuB,GAAKh5E,UAER,EAEDvuB,KAAKgnG,eAAiB,WAGpB,IAFA,IAAIQ,EAAa,mBACbC,EAAQ,GACHvmG,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAIwmG,EAAUjtF,KAAK8kB,MAAM9kB,KAAK2mF,SAAWoG,EAAWrmG,QACpDsmG,GAASD,EAAWltD,OAAOotD,EAAS,EACrC,CACD,OAAOD,CACR,EACDznG,KAAK2hE,MAAQ,WACX3/D,EAAK0E,IAAI,0CAA0CkD,GAC1B,MAArB5H,EAAK0kG,cAC6B,GAAhC1kG,EAAK0kG,aAAaE,YAAiB5kG,EAAK0kG,aAAa/kC,QAE1B,MAA7B3/D,EAAKmlG,sBACqC,GAAxCnlG,EAAKmlG,qBAAqBP,YAAiB5kG,EAAKmlG,qBAAqBxlC,OAE5E,EACD3hE,KAAKinG,OAAS,SAAS/7F,GACrB,IACEuM,KAAKzG,MAAM9F,EAGZ,CAFC,MAAOuhB,GACP,OAAO,CACR,CACD,OAAO,CACR,EACDzsB,KAAK0G,IAAM,SAASwE,GACdlJ,EAAKokG,WACPx/F,QAAQF,IAAI,uBAAuBwE,EAEtC,EACDlL,KAAK2nG,QAAU,WAAa,MAAO,OAAS,CAC7C,EAGD7X,EAAW0T,iBAAmB,CAC5B96E,OAAQ,MACR8nE,WAAY,QACZH,yBAAyB,EACzBC,oBAAoB,GAItBR,EAAW4T,mBAAqB,GAChC5T,EAAW2T,aAAe,GAC1B3T,EAAWgU,iBAAmB,IAC9BhU,EAAWiU,YAAc,WAEzBvkG,EAAOC,QAAUqwF,mBC/ejB,MAAMzoE,EAASq9B,EAAQ,OACjBsrC,EAAWtrC,EAAQ,OACnB2xC,EAAc3xC,EAAQ,OACtBgyC,EAAahyC,EAAQ,OAO3B,MAAMqrC,EAQM,WAACn3E,EAAOwT,GAChB/E,EAAOzO,IAAUw0B,SAASx0B,EAAO,KAAOA,GAAS,EAAG,qCAChDm3E,EAAa6X,WAAahvF,GAAOhS,QAAQF,IAAI0lB,EAClD,CAOuB,yBAACxT,GACvByO,EAAOzO,IAAUw0B,SAASx0B,EAAO,KAAOA,GAAS,EAAG,qCACpDm3E,EAAa6X,UAAYhvF,EACrBm3E,EAAa8X,aAAa9X,EAAa8X,YAAYC,cAAclvF,GACjEm3E,EAAagY,cAAchY,EAAasT,kBAAaziG,EAAW,cAAe,CAACgY,GACrF,CAOiB,qBAChB,OAAOm3E,EAAa6X,SACrB,CAO6B,iCAC5B,IAAIv0E,EAAQ,EAGZ,OAFI08D,EAAagY,SAAQ10E,SAAe08D,EAAasT,kBAAaziG,EAAW,oBAAqB,KAC9FmvF,EAAaiY,iBAAmBjY,EAAaiY,gBAAgB1kC,QAAOjwC,GAAS08D,EAAaiY,gBAAgB1kC,MAAMniE,QAC7GkyB,CACR,CAKmB,uBAClB,OAAO08D,EAAa8X,WACrB,CAK0B,8BAGzB,OAAI9X,EAAa8X,YAAoB9X,EAAa8X,oBAG3C9X,EAAa8X,YACpB9X,EAAa8X,YAAcnjD,EAAQ,MAARA,GACpB,IAAIr7C,SAAQ,SAASrK,EAAS40D,GACnCm8B,EAAa8X,YAAY5+F,MAAKzJ,IAC5BuwF,EAAa8X,YAAcroG,SACpBuwF,EAAa8X,YAAY5+F,KAChC8mF,EAAakY,gBAAgBlY,EAAa8X,aAC1C7oG,EAAQ+wF,EAAa8X,YAArB,GAEH,IACF,CAS0B,8BAGzB,OAAI9X,EAAa8X,aAAe9X,EAAamY,YAAoBnY,EAAa8X,oBAGvE9X,EAAa8X,YACpB9X,EAAa8X,YAAcnjD,EAAQ,KAARA,GACpB,IAAIr7C,SAAQ,SAASrK,EAAS40D,GACnCm8B,EAAa8X,YAAY5+F,MAAKzJ,IAC5BuwF,EAAa8X,YAAcroG,SACpBuwF,EAAa8X,YAAY5+F,KAChC8mF,EAAamY,aAAc,EAC3BnY,EAAakY,gBAAgBlY,EAAa8X,aAC1C7oG,EAAQ+wF,EAAa8X,YAArB,GAEH,IACF,CAS6B,+BAACM,EAAMl3D,GAC9B8+C,EAAaqY,0BAAyBrY,EAAaqY,wBAA0B,SACvExnG,IAAPqwC,SAAyB8+C,EAAaqY,wBAAwBD,GAC7DpY,EAAaqY,wBAAwBD,GAAQl3D,CACnD,CAO0B,4BAACk3D,GAC1B,IAAKpY,EAAaqY,wBAAwBD,GAAO,MAAM,IAAIjoG,MAAM,kCAAoCioG,EAAO,sDAC5G,OAAOpY,EAAaqY,wBAAwBD,IAC7C,CAQuB,yBAACE,GACvB,IAAIn+E,EAAO6lE,EAAauY,mBAAmBD,GAAkCtY,EAAawY,0BACtFr+E,IAAS6lE,EAAayY,yBAAyBzY,EAAagY,OAChEhY,EAAayY,iBAAmBt+E,CACjC,CAOqB,yBAGpB,IAAK6lE,EAAagY,OAAQ,CACxB,GAAI/X,EAASwR,YAAazR,EAAagY,OAAS,IAAIU,OAAO1Y,EAAayY,sBACnE,CACJ,MAAMC,EAAS/jD,EAAQ,OACvBqrC,EAAagY,OAAS,IAAIU,EAAO1Y,EAAayY,iBAC9C,CACDzY,EAAa2Y,eAAiB,CAAC,EAG/B3Y,EAAagY,OAAO5nC,QAAU,SAAS1zC,GACrC7lB,QAAQrE,MAAM,8GACdqE,QAAQF,IAAI+lB,EACb,EAGDsjE,EAAagY,OAAOY,UAAY,SAASxkG,GAGvC,IAAIykG,EAAU,KACVC,EAAa9Y,EAAa2Y,eAAevkG,EAAErE,KAAK,IAAI0mE,UAAUriE,EAAErE,KAAK,IACzE,QAAmBc,IAAfioG,EAA0B,MAAM,IAAI3oG,MAAM,gDAAkDiE,EAAErE,KAAK,GAAK,KACxG+oG,aAAsB7nG,QACxB4nG,EAAUC,EAAW,GACrBA,EAAaA,EAAW,IAI1BA,EAAWtjG,MAAMqjG,EAASzkG,EAAErE,KAAKuE,MAAM,GACxC,CACF,CACD,OAAO0rF,EAAagY,MACrB,CAK2B,+BACtBhY,EAAagY,SACfhY,EAAagY,OAAOe,mBACb/Y,EAAagY,OACpBhY,EAAagY,YAASnnG,EAEzB,CAUwB,0BAACmoG,EAAUC,EAAQnhF,GAC1CR,EAAO2hF,EAAO7nG,QAAU,GACxB,IAAIksD,QAAe0iC,EAAakZ,YAC5BC,OAA4BtoG,IAAbmoG,EAGnB,OAFIG,IAAcH,EAAW/Y,EAASmZ,WACjCpZ,EAAa2Y,eAAeK,KAAWhZ,EAAa2Y,eAAeK,GAAY,CAACviC,UAAW,CAAC,UACpF,IAAIn9D,SAAQ,SAASrK,EAAS40D,GACzC,IAAIw1C,EAAapZ,EAASmZ,UAC1BpZ,EAAa2Y,eAAeK,GAAUviC,UAAU4iC,GAAc,SAAS1Y,GACrEA,EAAQA,EAAKnuF,MAAQqxD,EAAOm8B,EAAasZ,iBAAiB3Y,EAAKnuF,QAAUvD,EAAQ0xF,EAAKprF,QAAWtG,WAC1F+wF,EAAa2Y,eAAeK,GAAUviC,UAAU4iC,GACnDF,UAAqBnZ,EAAa2Y,eAAeK,EACtD,EACD17C,EAAOi8C,YAAY,CAACP,EAAUC,EAAQI,GAAYx1F,YAAgBhT,IAATinB,EAAqB,GAAKmoE,EAASmP,QAAQt3E,IACrG,GACF,CAEoB,sBAAC4E,GACpB,MAAM88E,EAAgB,CAAE3lG,KAAM6oB,EAAI7oB,KAAMvB,QAASoqB,EAAIpqB,QAASuqB,MAAOH,EAAIG,OAEzE,OADIH,aAAe4pE,IAAakT,EAAcjhG,KAAO,eAC9CihG,CACR,CAEsB,wBAACA,GACtB,MAAM98E,EAA6B,gBAAvB88E,EAAcjhG,KAAyB,IAAI+tF,EAAYkT,EAAclnG,SAAW,IAAInC,MAAMqpG,EAAclnG,SAGpH,OAFAoqB,EAAI7oB,KAAO2lG,EAAc3lG,KACzB6oB,EAAIG,MAAQ28E,EAAc38E,MACnBH,CACR,CAIqB,uBAAC+8E,GACrBA,EAAWC,UAAY,IAAI/S,EAAW,GACtC8S,EAAWE,UAAYrxF,eAAe4pC,GAAW,OAAOunD,EAAWC,UAAU5E,OAAO5iD,EAAW,CAChG,CAEwB,0BAAC/3B,GAExB,MADI,UAAUvhB,KAAKuhB,KAAqC,GAA5BA,EAAK5L,QAAQ,aAAkB4L,EAAO,UAAYA,GACvEA,CACR,EAGH6lE,EAAa6X,UAAY,EACzB7X,EAAawY,yBAA2BvY,EAASwR,YAAc,wBAA0B,WACrF,MAAMt3E,EAAOw6B,EAAQ,OACrB,OAAOqrC,EAAauY,mBAAmBp+E,EAAKtZ,SAAgB,wBAC/D,CAHwF,GAIzFm/E,EAAayY,iBAAmBzY,EAAawY,yBAE7C/oG,EAAOC,QAAUswF,mBC/PjB,MAAMC,EAAWtrC,EAAQ,OACnB2xC,EAAc3xC,EAAQ,OACtB4xC,EAAsB5xC,EAAQ,OAC9B+xC,EAAa/xC,EAAQ,OACrBgyC,EAAahyC,EAAQ,OAwD3B,MAAMy1C,EAOJjwF,YAAYk5F,GACVpjG,KAAK2pG,gBAAmC,IAAlBvG,EACtBpjG,KAAK4pG,aAAezP,EAAwB0P,gBAC5C7pG,KAAK8pG,aAAe,GACpB9pG,KAAK+pG,WAAa,EACnB,CAQDC,YAAYC,GAEV,OADAjqG,KAAK+pG,WAAWt2F,KAAKw2F,GACdjqG,IACR,CAQDkqG,eAAeD,GACb,IAAKja,EAASjqF,OAAO/F,KAAK+pG,WAAYE,GAAW,MAAM,IAAI5T,EAAY,iEACvE,OAAOr2F,IACR,CAODmqG,kBAEE,OADAnqG,KAAK+pG,WAAW78F,OAAO,EAAGlN,KAAK+pG,WAAW5oG,QACnCnB,IACR,CAQkB,oBAACoqG,GAClB,IAAK,IAAIC,KAAerqG,KAAK8pG,aAC3B,GAAIO,EAAYC,WAAaF,EAAWE,SAAU,MAAM,IAAIjU,EAAY,iCAI1E,YAF4Bz1F,IAAxBZ,KAAK2pG,gBAA8BS,EAAWG,iBAAiBvqG,KAAK2pG,gBACxE3pG,KAAK8pG,aAAar2F,KAAK22F,GAChBpqG,IACR,CAQqB,uBAACgM,GACrB,IAAIo+F,EAAapqG,KAAKwqG,mBAAmBx+F,GACzC,IAAKo+F,EAAY,MAAM,IAAI/T,EAAY,kCAAoCrqF,GAM3E,OALAgkF,EAASjqF,OAAO/F,KAAK8pG,aAAcM,GAC/BA,IAAepqG,KAAKyqG,qBACtBzqG,KAAKyqG,wBAAqB7pG,EAC1BZ,KAAK0qG,qBAAqB1qG,KAAKyqG,qBAE1BzqG,IACR,CAOD2qG,cACE,QAAK3qG,KAAKyqG,oBACHzqG,KAAKyqG,mBAAmBE,aAChC,CAODC,gBACE,OAAO5qG,KAAKyqG,kBACb,CAQDD,mBAAmBx+F,GACjB,IAAK,IAAIo+F,KAAcpqG,KAAK8pG,aAAc,GAAIM,EAAWE,WAAat+F,EAAK,OAAOo+F,CAEnF,CAODS,iBACE,IAAIC,EAAoB9a,EAAS+a,UAAU/qG,KAAK8pG,cAEhD,OADAgB,EAAkBl5C,KAAK5xD,KAAKgrG,oBAAoBv5D,KAAKzxC,OAC9C8qG,CACR,CAQ+B,iCAACG,GAG/B,IAAK,IAAIC,KAA0BlrG,KAAKmrG,qCACtC,IAGE,IAAI7oD,EAAOtiD,KACPorG,EAAgB,GACpB,IAAK,IAAIhB,KAAcc,EACjBD,GAAuBjb,EAASqb,cAAcJ,EAAqBb,IACvEgB,EAAc33F,KAAK,IAAIpK,SAAQgP,eAAerZ,EAAS40D,SAC/Cw2C,EAAWkB,gBAAgBhpD,EAAKsnD,cAClCQ,EAAWO,cAAe3rG,EAAQorG,GACjCx2C,GACN,KAIH,IAAI23C,QAAuBliG,QAAQ4e,IAAImjF,GACvC,GAAIG,EAAgB,OAAOA,CAG5B,CAFC,MAAO9+E,GACP,KAAMA,aAAe++E,gBAAiB,MAAM,IAAInV,EAAY5pE,EAC7D,CAGJ,CAYDg/E,cAAcC,GAGZ,GAAIA,GAA8C,iBAApBA,EAA8B,CAC1D,IAAItB,EAAapqG,KAAKwqG,mBAAmBkB,GACzC,OAAO1rG,KAAKyrG,mBAA6B7qG,IAAfwpG,EAA2B,IAAI9T,EAAoBoV,GAAmBtB,EACjG,CAGD,IAAIA,EAAasB,EACjB,GAAI1rG,KAAKyqG,qBAAuBL,EAAY,OAAOpqG,KAGnD,IAAKoqG,EAGH,OAFApqG,KAAKyqG,wBAAqB7pG,EAC1BZ,KAAK0qG,0BAAqB9pG,GACnBZ,KAIT,KAAMoqG,aAAsB9T,GAAsB,MAAM,IAAID,EAAY,gEACxE,IAAK+T,EAAWE,SAAU,MAAM,IAAIjU,EAAY,6BAGhD,IAAIsV,EAAiB3rG,KAAKwqG,mBAAmBJ,EAAWE,UAMxD,OALIqB,GAAgB3b,EAASjqF,OAAO/F,KAAK8pG,aAAc6B,GACvD3rG,KAAK4rG,cAAcxB,GACnBpqG,KAAKyqG,mBAAqBL,EAC1BpqG,KAAK0qG,qBAAqB1qG,KAAKyqG,oBAExBzqG,IACR,CAOoB,wBACnB,IAAI6rG,GAAoB,EACpBzB,EAAapqG,KAAK4qG,gBAEtB,GADIR,SAAoBA,EAAWkB,gBAAgBtrG,KAAK4pG,gBAAeiC,GAAoB,GACvF7rG,KAAK8rG,cAAgB9rG,KAAK2qG,cAAe,CAC3C,IAAIoB,QAAuB/rG,KAAKgsG,2BAA2B,CAAC5B,IAC5D,GAAI2B,EAEF,OADA/rG,KAAKyrG,cAAcM,GACZ/rG,IAEV,CAED,OADI6rG,SAAyB7rG,KAAK0qG,qBAAqBN,GAChDpqG,IACR,CAOqB,yBAMpB,SAHMqJ,QAAQ6J,IAAIlT,KAAKisG,2BAGnBjsG,KAAK8rG,cAAgB9rG,KAAK2qG,cAC5B,IAAK,IAAIO,KAA0BlrG,KAAKmrG,qCAAsC,CAC5E,IAAIY,EACJ,IAAK,IAAIG,KAAyBhB,EAC5BgB,EAAsBvB,iBAAmBoB,GAAkBG,EAAsBC,kBAAoBJ,EAAeI,qBACtHJ,EAAiBG,GAGrB,GAAIH,EAAgB,CAClB/rG,KAAKyrG,cAAcM,GACnB,KACD,CACF,CAEH,OAAO/rG,IACR,CAQDisG,0BACE,IAAI3pD,EAAOtiD,KACPorG,EAAgB,GAChBgB,EAAO,IAAI1V,EAAW12F,KAAK8pG,aAAa3oG,QAC5C,IAAK,IAAIipG,KAAcpqG,KAAK6qG,iBAC1BO,EAAc33F,KAAK24F,EAAKvH,QAAOxsF,iBAC7B,UACY+xF,EAAWkB,gBAAgBhpD,EAAKsnD,eAAiBQ,IAAepqG,KAAKyqG,0BAA0BnoD,EAAKooD,qBAAqBN,EAGpI,CAFC,MAAO39E,GAER,CACF,KAGH,OADApjB,QAAQ6J,IAAIk4F,GACLA,CACR,CAQ4B,8BAACiB,GAG5B,SAFMrsG,KAAKsrG,kBACNe,IAAUA,EAAWlS,EAAwBmS,iCAC9CtsG,KAAKusG,aAAc,OAAOvsG,KAC9B,IAAIsiD,EAAOtiD,KACPwsG,GAAa,EAUjB,OATAxsG,KAAKusG,aAAe,IAAI9V,GAAWp+E,iBACjC,GAAIm0F,EACFA,GAAa,OAGf,UAAYlqD,EAAKgpD,iBACkD,CAAnE,MAAO7+E,GAAO7lB,QAAQrE,MAAM,8BAAgCkqB,EAAO,CACpE,IACDzsB,KAAKusG,aAAaviF,MAAMqiF,GACjBrsG,IACR,CAODysG,yBAGE,OAFIzsG,KAAKusG,cAAcvsG,KAAKusG,aAAaG,cAClC1sG,KAAKusG,aACLvsG,IACR,CAQD2sG,cAAcC,GAEZ,OADA5sG,KAAK8rG,YAAcc,EACZ5sG,IACR,CAOD6sG,gBACE,OAAO7sG,KAAK8rG,WACb,CAQDvqD,WAAWurD,GAET,OADA9sG,KAAK4pG,aAAekD,EACb9sG,IACR,CAOD+sG,aACE,OAAO/sG,KAAK4pG,YACb,CAOuB,2BACtB,MAAM,IAAIvT,EAAY,kBACvB,CAOD2W,aAEE,OADAhtG,KAAKyrG,mBAAc7qG,GACZZ,IACR,CAODuD,QAME,OALAvD,KAAK8pG,aAAa58F,OAAO,EAAGlN,KAAK8pG,aAAa3oG,QAC1CnB,KAAKyqG,qBACPzqG,KAAKyqG,wBAAqB7pG,EAC1BZ,KAAK0qG,0BAAqB9pG,IAErBZ,IACR,CAODitG,QAME,OALAjtG,KAAKmqG,kBACLnqG,KAAKysG,yBACLzsG,KAAKuD,QACLvD,KAAKktG,WAAa/S,EAAwB0P,gBAC1C7pG,KAAK8rG,aAAc,EACZ9rG,IACR,CAODmtG,eACE,OAAOntG,KAAK+pG,UACb,CAIyB,2BAACK,GACzB,IAAIgD,EAAW,GACf,IAAK,IAAInD,KAAYjqG,KAAK+pG,WAAYqD,EAAS35F,KAAKw2F,EAASoD,oBAAoBjD,IACjF,OAAO/gG,QAAQ6J,IAAIk6F,EACpB,CAEDjC,qCACE,IAAImC,EAAuB,IAAI18D,IAC/B,IAAK,IAAIw5D,KAAcpqG,KAAK8pG,aACrBwD,EAAqBn4D,IAAIi1D,EAAWmD,gBAAgBD,EAAqBl4D,IAAIg1D,EAAWmD,cAAe,IAC5GD,EAAqB9oG,IAAI4lG,EAAWmD,eAAe95F,KAAK22F,GAE1D,IAAIoD,EAAsB,IAAI58D,IAAI,IAAI08D,GAAsB17C,MAAK,CAACv6C,EAAGC,IAAM81B,SAAS/1B,EAAE,IAAM+1B,SAAS91B,EAAE,OACnGm2F,EAA0B,GAC9B,IAAK,IAAIC,KAAuBF,EAAoB/+E,SAAUg/E,EAAwBh6F,KAAKi6F,GAE3F,OADIJ,EAAqBn4D,IAAI,IAAIs4D,EAAwBh6F,KAAKg6F,EAAwBvgG,OAAO,EAAG,GAAG,IAC5FugG,CACR,CAEDzC,oBAAoB2C,EAAIC,GAGpB,OAAID,IAAO3tG,KAAKyqG,oBAA4B,EACxCmD,IAAO5tG,KAAKyqG,mBAA2B,EAGvCkD,EAAGE,aAAeD,EAAGC,WACnBF,EAAGJ,gBAAkBK,EAAGL,cAAsBI,EAAGrD,SAASwD,cAAcF,EAAGtD,UAC/C,GAApBqD,EAAGJ,cAAqB,EAAwB,GAApBK,EAAGL,eAAsB,EAAII,EAAGJ,cAAgBK,EAAGL,cAEvFI,EAAGE,YAAoB,EAClBD,EAAGC,WAAmB,OACJjtG,IAAlB+sG,EAAGE,YAAkC,EAClC,CAEjB,EAGH1T,EAAwB0P,gBAAkB,IAC1C1P,EAAwBmS,gCAAkC,KAE1D9sG,EAAOC,QAAU06F,aCxejB36F,EAAOC,QAVP,MAO2B,0BAAC2qG,GAAe,cCP3C,MAAM/T,UAAoBn2F,MAQxBgK,YAAY7H,EAASwL,GACnBkgG,MAAM1rG,GACNrC,KAAK6N,KAAOA,CACb,CAEDmgG,UACE,OAAOhuG,KAAK6N,IACb,CAED0gB,WACE,QAAqB3tB,IAAjBZ,KAAKqC,cAA4CzB,IAAnBZ,KAAKguG,UAAyB,OAAOD,MAAM1rG,QAC7E,IAAI6I,EAAM,GAGV,YAFuBtK,IAAnBZ,KAAKguG,YAAyB9iG,GAAOlL,KAAKguG,UAAY,MAC1D9iG,GAAOlL,KAAKqC,QACL6I,CACR,EAGH1L,EAAOC,QAAU42F,mBC7BjB,MAAMrG,EAAWtrC,EAAQ,OACnBorC,EAAaprC,EAAQ,OACrBqrC,EAAerrC,EAAQ,OACvB2xC,EAAc3xC,EAAQ,OACtB6xC,EAAiB7xC,EAAQ,OACzB21C,EAAc31C,EAAQ,OAK5B,MAAM4xC,EA6BJpsF,YAAY+jG,EAAyBxe,EAAUC,EAAUY,EAAoB8S,GAG3E,GAAuC,iBAA5B6K,EACTjuG,KAAKkuG,QAAU,CAACliG,IAAKiiG,GACrBjuG,KAAKmuG,eAAe1e,EAAUC,QACH9uF,IAAvB0vF,IAAkCtwF,KAAKkuG,QAAQ5d,mBAAqBA,QAClD1vF,IAAlBwiG,IAA6BpjG,KAAKkuG,QAAQ9K,cAAgBA,QACzD,GAAuC,iBAA5B6K,EAAsC,CACtD,QAAiBrtG,IAAb6uF,QAAuC7uF,IAAb8uF,QAAiD9uF,IAAvB0vF,QAAsD1vF,IAAlBwiG,EAA6B,MAAM,IAAI/M,EAAY,oDACnFr2F,KAAKkuG,QAA7DD,aAAmC3X,EAAoCtsF,OAAOumC,OAAO,CAAC,EAAG09D,EAAwBG,aACjGpkG,OAAOumC,OAAO,CAAC,EAAG09D,GACtCjuG,KAAKmuG,eAAenuG,KAAKkuG,QAAQze,SAAUzvF,KAAKkuG,QAAQxe,SACzD,MAAM,QAAgC9uF,IAA5BqtG,EACT,MAAM,IAAI5X,EAAY,+GAUxB,GANAr2F,KAAKkuG,QAAUlkG,OAAOumC,OAAO,CAAC,EAAG+lD,EAAoB+X,eAAgBruG,KAAKkuG,SAGtEluG,KAAKkuG,QAAQliG,MAAKhM,KAAKkuG,QAAQliG,IAAMgkF,EAASse,aAAatuG,KAAKkuG,QAAQliG,MAGxEhM,KAAKkuG,QAAQxJ,MAAQ1kG,KAAKkuG,QAAQvJ,KAAM,MAAM,IAAItO,EAAY,yHAGlE,IAAK,IAAIv1F,KAAOkJ,OAAOoH,KAAKpR,KAAKkuG,SAC/B,IAAKle,EAASqb,cAAc/U,EAAoBiY,iBAAkBztG,GAChE,MAAM,IAAIu1F,EAAY,+CAAiDv1F,EAAM,IAGlF,CAEDqtG,eAAe1e,EAAUC,GAGvB,GAFiB,KAAbD,IAAiBA,OAAW7uF,GACf,KAAb8uF,IAAiBA,OAAW9uF,GAC5B6uF,GAAYC,EAAU,CACxB,IAAKD,EAAU,MAAM,IAAI4G,EAAY,wDACrC,IAAK3G,EAAU,MAAM,IAAI2G,EAAY,uDACtC,CASD,MAR8B,KAA1Br2F,KAAKkuG,QAAQze,WAAiBzvF,KAAKkuG,QAAQze,cAAW7uF,GAC5B,KAA1BZ,KAAKkuG,QAAQxe,WAAiB1vF,KAAKkuG,QAAQxe,cAAW9uF,GACtDZ,KAAKkuG,QAAQze,WAAaA,GAAYzvF,KAAKkuG,QAAQxe,WAAaA,IAClE1vF,KAAKwuG,eAAY5tG,EACjBZ,KAAKyuG,sBAAmB7tG,GAE1BZ,KAAKkuG,QAAQze,SAAWA,EACxBzvF,KAAKkuG,QAAQxe,SAAWA,EACjB1vF,IACR,CAEDsqG,SACE,OAAOtqG,KAAKkuG,QAAQliG,GACrB,CAED0iG,cACE,OAAO1uG,KAAKkuG,QAAQze,SAAWzvF,KAAKkuG,QAAQze,SAAW,EACxD,CAEDkf,cACE,OAAO3uG,KAAKkuG,QAAQxe,SAAW1vF,KAAKkuG,QAAQxe,SAAW,EACxD,CAEDkf,wBACE,OAAO5uG,KAAKkuG,QAAQ5d,kBACrB,CAEDia,iBAAiBnH,GAEf,OADApjG,KAAKkuG,QAAQ9K,cAAgBA,EACtBpjG,IACR,CAED6uG,mBACE,OAAO7uG,KAAKkuG,QAAQ9K,aACrB,CAEDgL,YACE,OAAOpuG,KAAKkuG,OACb,CAEDX,cACE,OAAOvtG,KAAKkuG,QAAQ/6C,QACrB,CASD27C,YAAY37C,GACV,KAAMA,GAAY,GAAI,MAAM,IAAIkjC,EAAY,yBAE5C,OADAr2F,KAAKkuG,QAAQ/6C,SAAWA,EACjBnzD,IACR,CAEDo/F,aAAat+F,EAAK8H,GAGhB,OAFK5I,KAAK+uG,aAAY/uG,KAAK+uG,WAAa,IAAIn+D,KAC5C5wC,KAAK+uG,WAAWjqG,IAAIhE,EAAK8H,GAClB5I,IACR,CAEDgvG,aAAaluG,GACX,OAAOd,KAAK+uG,WAAWvqG,IAAI1D,EAC5B,CAQoB,sBAACgsG,GACpB,IAAImC,EAAiBjvG,KAAKwuG,UACtBU,EAAwBlvG,KAAKyuG,iBAC7BU,EAAYhgF,KAAK3C,MACrB,IACE,GAAIxsB,KAAKovG,kBAAmB,MAAM,IAAIlvG,MAAM,yCACtCF,KAAKqvG,gBAAgB,mBAAezuG,EAAWksG,GACrD9sG,KAAKwuG,WAAY,EACjBxuG,KAAKyuG,kBAAmB,CAUzB,CATC,MAAOhiF,GACHA,aAAe8pE,GAAoC,MAAlB9pE,EAAIuhF,WACvChuG,KAAKwuG,WAAY,EACjBxuG,KAAKyuG,kBAAmB,IAExBzuG,KAAKwuG,WAAY,EACjBxuG,KAAKyuG,sBAAmB7tG,EACxBZ,KAAKsvG,mBAAgB1uG,EAExB,CAED,OADIZ,KAAKwuG,YAAWxuG,KAAKsvG,cAAgBngF,KAAK3C,MAAQ2iF,GAC/CF,IAAmBjvG,KAAKwuG,WAAaU,IAA0BlvG,KAAKyuG,gBAC5E,CASD9D,cACE,YAA0B/pG,IAAnBZ,KAAKwuG,eAA0B5tG,EAAYZ,KAAKwuG,YAAuC,IAA1BxuG,KAAKyuG,gBAC1E,CASDZ,WACE,OAAO7tG,KAAKwuG,SACb,CASDe,kBACE,OAAOvvG,KAAKyuG,gBACb,CAEDtC,kBACE,OAAOnsG,KAAKsvG,aACb,CAUoB,sBAAC5mF,EAAQ8jC,EAAQsgD,GACpC,IAGE,IAAI1nF,EAAO3N,KAAKC,UAAU,CACxBtW,GAAI,IACJouG,QAAS,MACT9mF,OAAQA,EACR8jC,OAAQA,IAINujC,EAAa0f,eAAiB,GAAG1f,EAAarpF,IAAI,EAAG,qCAAuCgiB,EAAS,eAAiBtD,GAG1H,IAAI+pF,GAAY,IAAIhgF,MAAOwuB,UACvB+yC,QAAaZ,EAAW71B,QAAQ,CAClCvxC,OAAQ,OACR1c,IAAKhM,KAAKsqG,SAAW,YACrB7a,SAAUzvF,KAAK0uG,cACfhf,SAAU1vF,KAAK2uG,cACfvpF,KAAMA,EACN8vC,QAAS43C,EACTxc,mBAAoBtwF,KAAKkuG,QAAQ5d,mBACjCE,WAAYR,EAASS,YAAc,MAAQ,QAC3C2S,cAAepjG,KAAKkuG,QAAQ9K,gBAO9B,GAHA9M,EAAoBoZ,sBAAsBhf,GAGtB,KAAhBA,EAAKtrE,KAAK,GAAW,MAAMsrE,EAAKtrE,KAEpC,GADAsrE,EAAOj5E,KAAKzG,MAAM0/E,EAAKtrE,KAAKrS,QAAQ,6BAA8B,WAC9Dg9E,EAAa0f,eAAiB,EAAG,CACnC,IAAIve,EAAUz5E,KAAKC,UAAUg5E,GAC7BX,EAAarpF,IAAI,EAAG,kCAAoCgiB,EAAS,eAAiBwoE,EAAQ76C,UAAU,EAAG57B,KAAKwU,IAAI,IAAMiiE,EAAQ/vF,QAAU,MAAO,IAAIguB,MAAOwuB,UAAYwxD,GAAa,QACpL,CAID,OADA7Y,EAAoBqZ,qBAAqBjf,EAAMhoE,EAAQ8jC,GAChDkkC,CAIR,CAHC,MAAOjkE,GACP,MAAIA,aAAe8pE,EAAsB9pE,EAC9B,IAAI8pE,EAAe9pE,EAAKA,EAAIskE,WAAYroE,EAAQ8jC,EAC5D,CACF,CAYoB,sBAACtiC,EAAMsiC,EAAQsgD,GAClC,IAGM/c,EAAa0f,eAAiB,GAAG1f,EAAarpF,IAAI,EAAG,mCAAqCwjB,EAAO,iBAAmBzS,KAAKC,UAAU80C,IAGvI,IAAI2iD,GAAY,IAAIhgF,MAAOwuB,UACvB+yC,QAAaZ,EAAW71B,QAAQ,CAClCvxC,OAAQ,OACR1c,IAAKhM,KAAKsqG,SAAW,IAAMpgF,EAC3BulE,SAAUzvF,KAAK0uG,cACfhf,SAAU1vF,KAAK2uG,cACfvpF,KAAM3N,KAAKC,UAAU80C,GACrB0I,QAAS43C,EACTxc,mBAAoBtwF,KAAKkuG,QAAQ5d,mBACjCE,WAAYR,EAASS,YAAc,MAAQ,QAC3C2S,cAAepjG,KAAKkuG,QAAQ9K,gBAO9B,GAHA9M,EAAoBoZ,sBAAsBhf,GAGtB,KAAhBA,EAAKtrE,KAAK,GAAW,MAAMsrE,EAAKtrE,KAGpC,GAFAsrE,EAAOj5E,KAAKzG,MAAM0/E,EAAKtrE,KAAKrS,QAAQ,6BAA8B,WAC9C,iBAAT29E,IAAmBA,EAAOj5E,KAAKzG,MAAM0/E,IAC5CX,EAAa0f,eAAiB,EAAG,CACnC,IAAIve,EAAUz5E,KAAKC,UAAUg5E,GAC7BX,EAAarpF,IAAI,EAAG,gCAAkCgiB,OAAS,eAAiBwoE,EAAQ76C,UAAU,EAAG57B,KAAKwU,IAAI,IAAMiiE,EAAQ/vF,QAAU,MAAO,IAAIguB,MAAOwuB,UAAYwxD,GAAa,QAClL,CAID,OADA7Y,EAAoBqZ,qBAAqBjf,EAAMxmE,EAAMsiC,GAC9CkkC,CAIR,CAHC,MAAOjkE,GACP,MAAIA,aAAe8pE,EAAsB9pE,EAC9B,IAAI8pE,EAAe9pE,EAAKA,EAAIskE,WAAY7mE,EAAMsiC,EAC1D,CACF,CAUsB,wBAACtiC,EAAMsiC,EAAQsgD,GAGpC,IAAI8C,QAAkBvV,EAAYwV,aAAarjD,GAE/C,IAGMujC,EAAa0f,eAAiB,GAAG1f,EAAarpF,IAAI,EAAG,qCAAuCwjB,EAAO,iBAAmBzS,KAAKC,UAAU80C,IAGzI,IAAIkkC,QAAaZ,EAAW71B,QAAQ,CAClCvxC,OAAQ,OACR1c,IAAKhM,KAAKsqG,SAAW,IAAMpgF,EAC3BulE,SAAUzvF,KAAK0uG,cACfhf,SAAU1vF,KAAK2uG,cACfvpF,KAAMwqF,EACN16C,QAAS43C,EACTxc,mBAAoBtwF,KAAKkuG,QAAQ5d,mBACjCE,WAAYR,EAASS,YAAc,MAAQ,QAC3C2S,cAAepjG,KAAKkuG,QAAQ9K,gBAY9B,GARA9M,EAAoBoZ,sBAAsBhf,GAG1CA,EAAOA,EAAKtrE,KACNsrE,aAAgB9yC,aACpBh3C,QAAQrE,MAAM,0BACdqE,QAAQrE,MAAMmuF,IAEZA,EAAKnuF,MAAO,MAAM,IAAIg0F,EAAe7F,EAAKnuF,MAAMF,QAASquF,EAAKnuF,MAAMsL,KAAMqc,EAAMsiC,GACpF,OAAOkkC,CAIR,CAHC,MAAOjkE,GACP,MAAIA,aAAe8pE,EAAsB9pE,EAC9B,IAAI8pE,EAAe9pE,EAAKA,EAAIskE,WAAY7mE,EAAMsiC,EAC1D,CACF,CAEDsjD,SACE,OAAO9vG,KAAKkuG,OACb,CAED3/E,WACE,OAAOvuB,KAAKsqG,SAAW,cAAgBtqG,KAAK0uG,cAAgB,eAAiB1uG,KAAK2uG,cAAgB,MAAQ3uG,KAAK2uG,eAAiB,cAAgB3uG,KAAKutG,cAAgB,cAAgBvtG,KAAK6tG,WAAa,qBAAuB7tG,KAAKuvG,kBAAoB,GACxP,CAI2B,6BAAC7e,GAC3B,IAAI7iF,EAAO6iF,EAAKK,WAChB,GAAIljF,EAAO,KAAOA,EAAO,IAAK,CAC5B,IAAIwd,EAAUqlE,EAAKtrE,KACnB,MAAM,IAAImxE,EAAe1oF,EAAO,IAAM6iF,EAAKM,YAAe3lE,EAAgB,KAAOA,EAAb,IAAwBxd,OAAMjN,OAAWA,EAC9G,CACF,CAE0B,4BAAC8vF,EAAMhoE,EAAQ8jC,GACxC,GAAKkkC,EAAKnuF,MACV,MAAM,IAAIg0F,EAAe7F,EAAKnuF,MAAMF,QAASquF,EAAKnuF,MAAMsL,KAAM6a,EAAQ8jC,EACvE,CAEDujD,qBAAqBC,GACnBhwG,KAAKovG,kBAAoBY,CAC1B,EAMH1Z,EAAoB+X,eAAiB,CACjCriG,SAAKpL,EACL6uF,cAAU7uF,EACV8uF,cAAU9uF,EACV0vF,oBAAoB,EACpB8S,eAAe,EACfjwC,SAAU,GAGdmjC,EAAoBiY,iBAAmB,CAAC,MAAO,WAAY,WAAY,qBAAsB,WAAY,iBAEzG/uG,EAAOC,QAAU62F,mBC1ZjB,MAAMD,EAAc3xC,EAAQ,OAoC5BllD,EAAOC,QA/BP,cAA6B42F,EAU3BnsF,YAAY+lG,EAAgBC,EAASC,EAAWC,GAC9CrC,MAAMkC,EAAgBC,GACtBlwG,KAAKmwG,UAAYA,EACjBnwG,KAAKowG,UAAYA,CAClB,CAEDC,eACE,OAAOrwG,KAAKmwG,SACb,CAEDG,eACE,OAAOtwG,KAAKowG,SACb,CAED7hF,WACE,IAAIrjB,EAAM6iG,MAAMx/E,WAEhB,OADIvuB,KAAKmwG,WAAanwG,KAAKowG,aAAWllG,GAAO,eAAiBlL,KAAKmwG,UAAY,mBAA+C,iBAAnBnwG,KAAKowG,UAAyB34F,KAAKC,UAAU1X,KAAKowG,WAAapwG,KAAKowG,YACxKllG,CACR,0CCjCH,MAAMmc,EAASq9B,EAAQ,OACjByxC,EAAazxC,EAAAA,OAAAA,WACbsrC,EAAWtrC,EAAQ,OACnBqrC,EAAerrC,EAAQ,OACvB2xC,EAAc3xC,EAAQ,OACtBm0C,EAA0Bn0C,EAAQ,OAClCmzC,EAAoBnzC,EAAQ,OAOlC,MAAM21C,EAOa,oBACf,MAAO,OACR,CAOsB,wBAAC+I,GACtB/I,EAAYkW,gBAAkBnN,IAAiB,CAChD,CAS4B,8BAACoN,GAC5BnpF,EAAOmpF,EAAU,sCACjB,IAAI5+E,EAAQ4+E,EAASjkG,MAAM,KAC3B,GAAIqlB,EAAMzwB,SAAWk5F,EAAYoW,mBAAoB,MAAM,IAAIpa,EAAY,sBAAwBzkE,EAAMzwB,OAAS,sBAAwBk5F,EAAYoW,mBACvJ,CAQiC,mCAACC,GACjC,IAEE,aADMrW,EAAYsW,uBAAuBD,IAClC,CAGR,CAFC,MAAOvsG,GACP,OAAO,CACR,CACF,CAQgC,kCAACysG,GAChC,IAEE,aADMvW,EAAYwW,sBAAsBD,IACjC,CAGR,CAFC,MAAOzsG,GACP,OAAO,CACR,CACF,CAQkC,oCAAC2sG,GAClC,IAEE,aADMzW,EAAY0W,wBAAwBD,IACnC,CAGR,CAFC,MAAO3sG,GACP,OAAO,CACR,CACF,CAQiC,mCAAC6sG,GACjC,IAEE,aADM3W,EAAY4W,uBAAuBD,IAClC,CAGR,CAFC,MAAO7sG,GACP,OAAO,CACR,CACF,CAOkC,oCAACusG,GAClC,IAAKrW,EAAY6W,SAASR,GAAiB,MAAM,IAAIra,EAAY,oDAClE,CAOiC,mCAACua,GACjC,IAAKvW,EAAY6W,SAASN,GAAgB,MAAM,IAAIva,EAAY,mDACjE,CAOmC,qCAACya,GACnC,IAAKzW,EAAY6W,SAASJ,GAAkB,MAAM,IAAIza,EAAY,qDACnE,CAOkC,oCAAC2a,GAClC,IAAK3W,EAAY6W,SAASF,GAAiB,MAAM,IAAI3a,EAAY,oDAClE,CAUgC,kCAAC8a,EAAaC,EAAiBC,GAC9D,OAAIhX,EAAYkW,gBAAwB,IAAI1X,QAA8B9I,EAAasT,kBAAaziG,EAAW,kCAAmCI,MAAM6uB,KAAKrqB,cAG7JqyF,EAAkBj4F,SAASuxG,GAC3B9pF,EAAkC,iBAApB+pF,EAA8B,yBAC5C/pF,EAAO+pF,EAAgBjwG,OAAS,EAAG,oBACnCkmB,EAAO2oE,EAAS0L,SAAS0V,GAAkB,+BAGNxwG,IAAjCmvF,EAAaiY,uBAAqCjY,EAAauhB,iBAG5DvhB,EAAaiY,gBAAgB0B,WAAUrxF,iBAC5C,IAAIk5F,EAAwBxhB,EAAaiY,gBAAgBwJ,4BAA4BL,EAAaC,EAAiBC,GAAwB,IAC3I,GAAwC,MAApCE,EAAsBvjE,OAAO,GAAY,MAAM,IAAIqoD,EAAYkb,GACnE,OAAO,IAAI1Y,EAAwBphF,KAAKzG,MAAMugG,GAC/C,IACF,CAS0B,4BAAC7hC,EAASyhC,GACnC,IAEE,aADM9W,EAAYoX,gBAAgB/hC,EAASyhC,IACpC,CAGR,CAFC,MAAO1kF,GACP,OAAO,CACR,CACF,CAQ2B,6BAACijD,EAASyhC,GACpC,OAAI9W,EAAYkW,gBAAwBxgB,EAAasT,kBAAaziG,EAAW,6BAA8BI,MAAM6uB,KAAKrqB,aAGtH6hB,EAA0B,iBAAZqoD,EAAsB,yBACpCroD,EAAOqoD,EAAQvuE,OAAS,EAAG,oBAC3BkmB,EAAO2oE,EAAS0L,SAAShsB,GAAU,0BACnCmoB,EAAkBj4F,SAASuxG,QAGUvwG,IAAjCmvF,EAAaiY,uBAAqCjY,EAAauhB,iBAG5DvhB,EAAaiY,gBAAgB0B,WAAUrxF,iBAC5C,IAAI+pF,EAASrS,EAAaiY,gBAAgB0J,iBAAiBhiC,EAASyhC,GACpE,GAAI/O,EAAQ,MAAM,IAAI/L,EAAY+L,EACnC,IACF,CAQ4B,8BAACiP,GAC5B,IAEE,aADMhX,EAAYsX,kBAAkBN,IAC7B,CAGR,CAFC,MAAOltG,GACP,OAAO,CACR,CACF,CAS6B,+BAACktG,GAC7BhqF,EAAOxa,aAAawkG,EAAW,UAC/BhqF,EAA4B,KAArBgqF,EAAUlwG,QAAsC,KAArBkwG,EAAUlwG,OAC7C,CAW2B,6BAACywG,GAC3B,IAAIC,EACJ,IAAK,IAAI3wG,EAAI,EAAGA,EAAI0wG,EAAQzwG,OAAQD,IAAK,CACvC,IAAI0mB,EAAMgqF,EAAQ1wG,GAClB,GAAY,IAAR0mB,GAAqB,IAARA,EACf1mB,GAAK,EAAI0wG,EAAQ1wG,EAAI,OAChB,IAAY,IAAR0mB,EAGJ,MAAM,IAAIyuE,EAAY,0BAA4BzuE,GAFvDiqF,EAAgB3wG,EAAI,EACpBA,GAAK,EACA,CACR,CACD,OAAO+kB,EAAO4J,KAAK,IAAI+tB,WAAWg0D,EAAQvtG,MAAMwtG,EAAeA,EAAgB,MAAMtjF,SAAS,MAC/F,CAWqB,uBAACujF,EAAYC,GACjC,IAAI5yF,EAAY1E,KAAK8X,IAAIu/E,EAAW3wG,OAAQ4wG,EAAW5wG,QACvD,IAAK,IAAID,EAAI,EAAGA,EAAIie,EAAWje,IAAK,CAClC,GAAIA,EAAI4wG,EAAW3wG,QAAUD,EAAI6wG,EAAW5wG,QAAU2wG,EAAW5wG,KAAO6wG,EAAW7wG,GAAI,OAAO,EAC9F,GAAIA,GAAK4wG,EAAW3wG,QAA4B,MAAlB4wG,EAAW7wG,GAAY,OAAO,EAC5D,GAAIA,GAAK6wG,EAAW5wG,QAA4B,MAAlB2wG,EAAW5wG,GAAY,OAAO,CAC7D,CACD,OAAO,CACR,CAQa,eAAC8wG,EAAKC,GAClB,IAAK,IAAIC,KAAOF,EACd,GAAIE,EAAIC,YAAcF,EAAGE,UAEvB,YADAD,EAAIE,MAAMH,GAIdD,EAAIv+F,KAAKw+F,EACV,CAQwB,0BAACI,GACxB,OAAIhY,EAAYkW,gBAAwBxgB,EAAasT,kBAAaziG,EAAW,0BAA2BI,MAAM6uB,KAAKrqB,kBAG9E5E,IAAjCmvF,EAAaiY,uBAAqCjY,EAAauhB,iBAG5DvhB,EAAaiY,gBAAgB0B,WAAUrxF,iBAG5C,IAAIi6F,EAAgBviB,EAAaiY,gBAAgBuK,wBAAwB96F,KAAKC,UAAU26F,IAGpFG,EAAa/6F,KAAKzG,MAAMshG,GAC5BE,EAAW5vC,IAAMx1B,SAASolE,EAAW5vC,KACrC4vC,EAAWrxG,OAASisC,SAASolE,EAAWrxG,QAGxC,IAAI+uF,EAAO,IAAItyC,WAAW40D,EAAWrxG,QACrC,IAAK,IAAID,EAAI,EAAGA,EAAIsxG,EAAWrxG,OAAQD,IACrCgvF,EAAKhvF,GAAK6uF,EAAaiY,gBAAgBnlC,OAAO2vC,EAAW5vC,IAAMhlB,WAAWuyC,kBAAoBjvF,GAOhG,OAHA6uF,EAAaiY,gBAAgBv/B,MAAM+pC,EAAW5vC,KAGvCstB,CACR,IACF,CAQwB,0BAACuiB,GACxB,OAAIpY,EAAYkW,gBAAwBxgB,EAAasT,kBAAaziG,EAAW,0BAA2BI,MAAM6uB,KAAKrqB,kBAG9E5E,IAAjCmvF,EAAaiY,uBAAqCjY,EAAauhB,iBAG5DvhB,EAAaiY,gBAAgB0B,WAAUrxF,iBAG5C,IAAIuqD,EAAMmtB,EAAaiY,gBAAgBtjC,QAAQ+tC,EAAStxG,OAASsxG,EAAStiB,mBACtEptB,EAAO,IAAInlB,WAAWmyC,EAAaiY,gBAAgBnlC,OAAOh1C,OAAQ+0C,EAAK6vC,EAAStxG,OAASsxG,EAAStiB,mBACtG,GAAIvtB,IAAQG,EAAKllB,WAAY,MAAM,IAAIw4C,EAAY,kCAGnDtzB,EAAK3tB,IAAI,IAAIwI,WAAW60D,EAAS5kF,SAGjC,IAAI2kF,EAAa,CAAE5vC,IAAKA,EAAKzhE,OAAQsxG,EAAStxG,QAG9C,MAAMuxG,EAAa3iB,EAAaiY,gBAAgB2K,eAAel7F,KAAKC,UAAU86F,IAM9E,OAHAziB,EAAaiY,gBAAgBv/B,MAAM7F,GAG5BnrD,KAAKzG,MAAM0hG,EACnB,IACF,CAQ8B,gCAACD,GAC9B,OAAIpY,EAAYkW,gBAAwBxgB,EAAasT,kBAAaziG,EAAW,gCAAiCI,MAAM6uB,KAAKrqB,kBAGpF5E,IAAjCmvF,EAAaiY,uBAAqCjY,EAAauhB,iBAG5DvhB,EAAaiY,gBAAgB0B,WAAUrxF,iBAG5C,IAAIuqD,EAAMmtB,EAAaiY,gBAAgBtjC,QAAQ+tC,EAAStxG,OAASsxG,EAAStiB,mBACtEptB,EAAO,IAAInlB,WAAWmyC,EAAaiY,gBAAgBnlC,OAAOh1C,OAAQ+0C,EAAK6vC,EAAStxG,OAASsxG,EAAStiB,mBACtG,GAAIvtB,IAAQG,EAAKllB,WAAY,MAAM,IAAIw4C,EAAY,kCAGnDtzB,EAAK3tB,IAAI,IAAIwI,WAAW60D,EAAS5kF,SAGjC,IAAI2kF,EAAa,CAAE5vC,IAAKA,EAAKzhE,OAAQsxG,EAAStxG,QAG9C,MAAMyxG,EAAW7iB,EAAaiY,gBAAgB6K,sBAAsBp7F,KAAKC,UAAU86F,IAGnFziB,EAAaiY,gBAAgBv/B,MAAM7F,GAGnC,IAAIyvC,EAAO56F,KAAKzG,MAAM4hG,GAGtB,OAFAP,EAAKvjC,OAASujC,EAAKvjC,OAAOx7D,KAAIw/F,GAAYr7F,KAAKzG,MAAM8hG,KACrDT,EAAKL,IAAMK,EAAKL,IAAI1+F,KAAI0+F,GAAOA,EAAMA,EAAI1+F,KAAI2+F,GAAMx6F,KAAKzG,MAAMihG,EAAGl/F,QAAQ,IAAK,KAAO,OAAQ,KACtFs/F,CACR,IACF,CAQsB,wBAACU,GACtB,GAAyB,iBAAdA,EAAwBA,EAAY,GAAKA,OAC/C,GAAyB,iBAAdA,EAAwB,MAAM,IAAI1c,EAAY,+EAC9D,IAAI2c,EAAiB,EACjBC,EAAaF,EAAUz0F,QAAQ,KAKnC,OAJI20F,GAAc,IAChBD,EAAiBv4F,KAAKiZ,IAAI,GAAIq/E,EAAU5xG,OAAS8xG,EAAa,GAC9DF,EAAYA,EAAU1uG,MAAM,EAAG4uG,GAAcF,EAAU1uG,MAAM4uG,EAAa,IAErE,IAAI9c,EAAW4c,GAAWG,SAAS,IAAI/c,EAAWkE,EAAY8Y,aAAaC,OAAO,IAAIjd,EAAW6c,GACzG,CAQsB,wBAACK,GACtB,GAAiC,iBAAtBA,EAAgCA,EAAoB,IAAIld,EAAWkd,QACzE,KAAMA,aAA6Bld,GAAa,MAAM,IAAIE,EAAY,uEAC3E,IAAIid,EAAuBD,EAAkBE,OAAO,IAAIpd,EAAWkE,EAAY8Y,aAC/E,OAAOx3D,OAAO23D,EAAqB,GAAGE,YAAcF,EAAqB,GAAGE,YAAcnZ,EAAY8Y,WACvG,CAEc,gBAACjoG,GACd,MAAsB,iBAARA,GAAmC,KAAfA,EAAI/J,QAAiB6uF,EAASyL,MAAMvwF,EACvE,EAGHmvF,EAAYkW,iBAAkB,EAC9BlW,EAAYoW,mBAAqB,GACjCpW,EAAYoZ,UAAY,GACxBpZ,EAAYuJ,wBAA0B,GACtCvJ,EAAY8Y,WAAa,KAEzB3zG,EAAOC,QAAU46F,mBCpcjB,MAAMhzE,EAASq9B,EAAQ,OACjBsrC,EAAWtrC,EAAQ,OACnBorC,EAAaprC,EAAQ,OACrBqrC,EAAerrC,EAAQ,OACvBmyC,EAAYnyC,EAAQ,MACpBqyC,EAAcryC,EAAQ,OACtByyC,EAAuBzyC,EAAQ,MAC/B81C,EAAkB91C,EAAQ,OAC1B2xC,EAAc3xC,EAAQ,OACtB+yC,EAAiB/yC,EAAQ,OACzB4xC,EAAsB5xC,EAAQ,OAC9B20C,EAAiB30C,EAAQ,OACzBk1C,EAAcl1C,EAAQ,OACtB21C,EAAc31C,EAAQ,OACtBs1C,EAAqBt1C,EAAQ,OAC7Bq1C,EAAuBr1C,EAAQ,OAC/Bi2C,EAAmBj2C,EAAQ,OAWjCikD,UAAYtwF,eAAelU,SAGnBnC,KAAK0xG,cAGX,IAAI3K,EAAW5kG,EAAErE,KAAK,GAClBkpG,EAAS7kG,EAAErE,KAAK,GAChBspG,EAAajlG,EAAErE,KAAK,GAGxB,GAFAunB,EAAO2hF,EAAQ,wCACf3hF,EAAO+hF,EAAY,uCACdpnG,KAAKgnG,GAAS,MAAM,IAAI9oG,MAAM,WAAa8oG,EAAS,mCACzD7kG,EAAErE,KAAKoN,OAAO,EAAG,GAGjB,IACEo8F,YAAY,CAACP,EAAUK,EAAY,CAAC9jG,aAActD,KAAKgnG,GAAQzjG,MAAM,KAAMpB,EAAErE,QAI9E,CAHC,MAAOqE,GACDA,aAAajE,QAAQiE,EAAI,IAAIjE,MAAMiE,IACzCmlG,YAAY,CAACP,EAAUK,EAAY,CAAC7mG,MAAOwtF,EAAa4jB,eAAexvG,KACxE,CACF,EAEDnC,KAAK0xG,YAAcr7F,iBACZrW,KAAKi6F,gBACRj6F,KAAK0mG,eAAiB,CAAC,EACvB1mG,KAAKi6F,eAAgB,EACrB5B,EAAYkW,iBAAkB,EAEjC,EAIDvuG,KAAK4xG,YAAcv7F,eAAe0wF,EAAUviG,GAC1C,IACE,aAAaspF,EAAW71B,QAAQjwD,OAAOumC,OAAO/pC,EAAM,CAAC48F,eAAe,IAGrE,CAFC,MAAO32E,GACP,MAAMA,EAAIskE,WAAa,IAAI7wF,MAAMuX,KAAKC,UAAU,CAACq5E,WAAYtkE,EAAIskE,WAAYwS,cAAe92E,EAAIpqB,WAAaoqB,CAC9G,CACF,EAEDzqB,KAAK6xG,YAAcx7F,eAAe0wF,EAAUnwF,GAC1C,OAAOm3E,EAAa8jB,YAAYj7F,EACjC,EAED5W,KAAK8xG,kBAAoBz7F,eAAe0wF,GACtC,OAAOhZ,EAAaiY,iBAAmBjY,EAAaiY,gBAAgB1kC,MAAQysB,EAAaiY,gBAAgB1kC,MAAMniE,YAASP,CACzH,EAIDoB,KAAK+xG,gCAAkC17F,eAAe0wF,EAAUoI,EAAaC,EAAiBC,GAC5F,aAAchX,EAAY2Z,qBAAqB7C,EAAaC,EAAiBC,IAAYvB,QAC1F,EAED9tG,KAAKiyG,2BAA6B57F,eAAe0wF,EAAUr5B,EAASyhC,GAClE,OAAO9W,EAAYoX,gBAAgB/hC,EAASyhC,EAC7C,EAEDnvG,KAAKkyG,wBAA0B77F,eAAe0wF,EAAUsJ,GACtD,OAAOhY,EAAYwV,aAAawC,EACjC,EAEDrwG,KAAKmyG,wBAA0B97F,eAAe0wF,EAAU0J,GACtD,OAAOpY,EAAY+Z,aAAa3B,EACjC,EAEDzwG,KAAKqyG,8BAAgCh8F,eAAe0wF,EAAU0J,GAC5D,OAAOpY,EAAYia,mBAAmB7B,EACvC,EAIDzwG,KAAKuyG,kBAAoBl8F,eAAem8F,EAAUC,GAChD,IAAIxK,EAAW,IAAI,cAAc9S,EACZ,oBAACud,GAClB1yG,KAAKsnG,YAAY,CAACkL,EAAU,iBAAmBC,EAAYC,EAAY5E,UACxE,GAEE9tG,KAAK2yG,kBAAiB3yG,KAAK2yG,gBAAkB,CAAC,GACnD3yG,KAAK2yG,gBAAgBF,GAAcxK,QAC7BjoG,KAAK0mG,eAAe8L,GAAUxK,YAAYC,EACjD,EAEDjoG,KAAK4yG,qBAAuBv8F,eAAem8F,EAAUC,GACnD,IAAKzyG,KAAK2yG,gBAAgBF,GAAa,MAAM,IAAIpe,EAAY,iDAAmDoe,SAC1GzyG,KAAK0mG,eAAe8L,GAAUtK,eAAeloG,KAAK2yG,gBAAgBF,WACjEzyG,KAAK2yG,gBAAgBF,EAC7B,EAEDzyG,KAAK6yG,iBAAmBx8F,eAAem8F,EAAUrS,GAC/CngG,KAAK0mG,eAAe8L,GAAY,IAAIha,EAAgB2H,EACrD,EAEDngG,KAAK8yG,uBAAyBz8F,eAAem8F,GAC3C,IAAIpK,QAAmBpoG,KAAK0mG,eAAe8L,GAAUO,mBACrD,OAAO3K,EAAaA,EAAWgE,iBAAcxtG,CAC9C,EAEDoB,KAAKgzG,kBAAoB38F,eAAem8F,GACtC,OAAOxyG,KAAK0mG,eAAe8L,GAAU7J,aACtC,EAED3oG,KAAKizG,iBAAmB58F,eAAem8F,GACrC,aAAcxyG,KAAK0mG,eAAe8L,GAAU5Z,cAAckV,QAC3D,EAED9tG,KAAKkzG,gBAAkB78F,eAAem8F,GACpC,OAAOxyG,KAAK0mG,eAAe8L,GAAUW,WACtC,EAEDnzG,KAAKozG,gBAAkB/8F,eAAem8F,GACpC,OAAOxyG,KAAK0mG,eAAe8L,GAAUa,WACtC,EAEDrzG,KAAKszG,mBAAqBj9F,eAAem8F,EAAUtU,GACjD,OAAOl+F,KAAK0mG,eAAe8L,GAAUe,aAAarV,EACnD,EAEDl+F,KAAKwzG,uBAAyBn9F,eAAem8F,EAAUiB,EAAeC,GACpE,aAAc1zG,KAAK0mG,eAAe8L,GAAUmB,iBAAiBF,EAAeC,IAAc5F,QAC3F,EAED9tG,KAAK4zG,yBAA2Bv9F,eAAem8F,GAC7C,aAAcxyG,KAAK0mG,eAAe8L,GAAUqB,sBAAsB/F,QACnE,EAED9tG,KAAK8zG,2BAA6Bz9F,eAAem8F,EAAUt9F,GACzD,aAAclV,KAAK0mG,eAAe8L,GAAUuB,qBAAqB7+F,IAAO44F,QACzE,EAED9tG,KAAKg0G,6BAA+B39F,eAAem8F,EAAUtU,GAC3D,aAAcl+F,KAAK0mG,eAAe8L,GAAUyB,uBAAuB/V,IAAS4P,QAC7E,EAED9tG,KAAKk0G,6BAA+B79F,eAAem8F,EAAU2B,EAAaC,GACxE,IAAIC,EAAmB,GACvB,IAAK,IAAI3B,WAAqB1yG,KAAK0mG,eAAe8L,GAAU8B,uBAAuBH,EAAaC,GAAYC,EAAiB5iG,KAAKihG,EAAY5E,UAC9I,OAAOuG,CACR,EAEDr0G,KAAKu0G,qBAAuBl+F,eAAem8F,EAAUgC,GACnD,aAAcx0G,KAAK0mG,eAAe8L,GAAUiC,eAAeD,IAAY1G,QACxE,EAED9tG,KAAK00G,sBAAwBr+F,eAAem8F,EAAUmC,EAAaR,EAAaj4C,GAC9E,IAAI04C,EAAa,GACjB,IAAK,IAAIC,WAAe70G,KAAK0mG,eAAe8L,GAAUsC,gBAAgBH,EAAaR,EAAaj4C,GAAQ04C,EAAWnjG,KAAKojG,EAAM/G,UAC9H,OAAO8G,CACR,EAED50G,KAAK+0G,uBAAyB1+F,eAAem8F,EAAUtU,GACrD,aAAcl+F,KAAK0mG,eAAe8L,GAAUwC,iBAAiB9W,IAAS4P,QACvE,EAED9tG,KAAKi1G,wBAA0B5+F,eAAem8F,EAAU0C,GACtD,IAAIN,EAAa,GACjB,IAAK,IAAIC,WAAe70G,KAAK0mG,eAAe8L,GAAU2C,kBAAkBD,GAAUN,EAAWnjG,KAAKojG,EAAM/G,UACxG,OAAO8G,CACR,EAED50G,KAAKo1G,uBAAyB/+F,eAAem8F,EAAU2B,EAAaC,GAClE,IAAIQ,EAAa,GACjB,IAAK,IAAIC,WAAe70G,KAAK0mG,eAAe8L,GAAU6C,iBAAiBlB,EAAaC,GAAYQ,EAAWnjG,KAAKojG,EAAM/G,UACtH,OAAO8G,CACR,EAED50G,KAAKs1G,8BAAgCj/F,eAAem8F,EAAU2B,EAAaC,EAAWmB,GACpF,IAAIX,EAAa,GACjB,IAAK,IAAIC,WAAe70G,KAAK0mG,eAAe8L,GAAUgD,wBAAwBrB,EAAaC,EAAWmB,GAAeX,EAAWnjG,KAAKojG,EAAM/G,UAC3I,OAAO8G,CACR,EAED50G,KAAKy1G,qBAAuBp/F,eAAem8F,EAAUmC,EAAaR,GAChE,MAAM,IAAIj2G,MAAM,wCACjB,EAGD8B,KAAK01G,aAAer/F,eAAem8F,EAAUmD,EAAUz5C,GAGrD,IAII05C,EAJA5F,QAAYhwG,KAAK0mG,eAAe8L,GAAUqD,OAAOF,EAAUz5C,GAG3D4Q,EAAS,GAETgpC,EAAa,IAAI7sE,IACrB,IAAK,IAAIgnE,KAAMD,EACRC,EAAG8F,aACDH,IAAkBA,GAAmB,IAAI7gB,GAAcihB,OAAO,KACnE/F,EAAGgG,SAASL,GACZA,EAAiBC,SAASpkG,KAAKw+F,IAE5B6F,EAAW3iE,IAAI88D,EAAG8F,cACrBD,EAAWlyG,IAAIqsG,EAAG8F,YAClBjpC,EAAOr7D,KAAKw+F,EAAG8F,aAKnB,IAAK,IAAI72G,EAAI,EAAGA,EAAI4tE,EAAO3tE,OAAQD,IAAK4tE,EAAO5tE,GAAK4tE,EAAO5tE,GAAG4uG,SAC9D,OAAOhhC,CACR,EAED9sE,KAAKk2G,iBAAmB7/F,eAAem8F,EAAUmD,EAAUz5C,GACzD,OAAOl8D,KAAK0mG,eAAe8L,GAAU2D,WAAWR,EAAUz5C,EAC3D,EAEDl8D,KAAKo2G,oBAAsB//F,eAAem8F,EAAUtU,EAAQmY,GAC1D,aAAcr2G,KAAK0mG,eAAe8L,GAAU8D,cAAcpY,EAAQmY,IAAYvI,QAC/E,EAED9tG,KAAKu2G,qBAAuBlgG,eAAem8F,EAAUgE,GACnD,aAAcx2G,KAAK0mG,eAAe8L,GAAUiE,eAAeD,IAAc1I,QAC1E,EAED9tG,KAAK02G,kBAAoBrgG,eAAem8F,EAAUmE,EAAOC,GACvD,aAAc52G,KAAK0mG,eAAe8L,GAAUqE,YAAYF,EAAOC,IAAa9I,QAC7E,EAED9tG,KAAK82G,qBAAuBzgG,eAAem8F,EAAUmD,GACnD,OAAO31G,KAAK0mG,eAAe8L,GAAUuE,eAAepB,EACrD,EAED31G,KAAKg3G,gBAAkB3gG,eAAem8F,GACpC,IAAIxC,QAAYhwG,KAAK0mG,eAAe8L,GAAUyE,YAC1CpC,GAAQ,IAAI9f,GAAcihB,OAAOhG,GACrC,IAAK,IAAIC,KAAMD,EAAKC,EAAGgG,SAASpB,GAChC,OAAOA,EAAM/G,QACd,EAED9tG,KAAKk3G,sBAAwB7gG,eAAem8F,GAC1C,OAAOxyG,KAAK0mG,eAAe8L,GAAU2E,iBACtC,EAMDn3G,KAAKo3G,qBAAuB/gG,eAAem8F,GACzC,aAAcxyG,KAAK0mG,eAAe8L,GAAU6E,kBAAkBvJ,QAC/D,EAED9tG,KAAKs3G,kBAAoBjhG,eAAem8F,EAAU+E,GAChD,OAAOv3G,KAAK0mG,eAAe8L,GAAUgF,YAAYD,EAClD,EAEDv3G,KAAKy3G,+BAAiCphG,eAAem8F,EAAUkF,GAC7D,OAAO13G,KAAK0mG,eAAe8L,GAAUmF,yBAAyBD,EAC/D,EAOD13G,KAAK43G,yBAA2BvhG,eAAem8F,EAAUqF,EAASC,EAAUvhE,EAAUwhE,EAAYC,GAChG,IAAIC,EAAc,GAClB,IAAK,IAAIC,WAAel4G,KAAK0mG,eAAe8L,GAAU2F,mBAAmBN,EAASC,EAAUvhE,EAAUwhE,EAAYC,GAChHC,EAAYxmG,KAAKymG,EAAMpK,UAEzB,OAAOmK,CACR,EAODj4G,KAAKo4G,cAAgB/hG,eAAem8F,GAClC,aAAcxyG,KAAK0mG,eAAe8L,GAAU6F,WAAWvK,QACxD,EAED9tG,KAAKs4G,kBAAoBjiG,eAAem8F,GACtC,aAAcxyG,KAAK0mG,eAAe8L,GAAU+F,eAAezK,QAC5D,EAED9tG,KAAKw4G,sBAAwBniG,eAAem8F,GAC1C,aAAcxyG,KAAK0mG,eAAe8L,GAAUiG,mBAAmB3K,QAChE,EAED9tG,KAAK04G,mBAAqBriG,eAAem8F,GACvC,IAAImG,EAAgB,GACpB,IAAK,IAAIC,WAAkB54G,KAAK0mG,eAAe8L,GAAUqG,eAAgBF,EAAclnG,KAAKmnG,EAAS9K,UACrG,OAAO6K,CACR,EAED34G,KAAK84G,wBAA0BziG,eAAem8F,GAC5C,OAAOxyG,KAAK0mG,eAAe8L,GAAUuG,mBACtC,EAED/4G,KAAKg5G,uBAAyB3iG,eAAem8F,GAC3C,OAAOxyG,KAAK0mG,eAAe8L,GAAUyG,kBACtC,EAEDj5G,KAAKk5G,uBAAyB7iG,eAAem8F,EAAUhiG,GACrD,OAAOxQ,KAAK0mG,eAAe8L,GAAU2G,iBAAiB3oG,EACvD,EAEDxQ,KAAKo5G,yBAA2B/iG,eAAem8F,GAC7C,OAAOxyG,KAAK0mG,eAAe8L,GAAU6G,oBACtC,EAEDr5G,KAAKs5G,qBAAuBjjG,eAAem8F,GACzC,OAAOxyG,KAAK0mG,eAAe8L,GAAU+G,gBACtC,EAEDv5G,KAAKw5G,qBAAuBnjG,eAAem8F,EAAUhiG,GACnD,OAAOxQ,KAAK0mG,eAAe8L,GAAUiH,eAAejpG,EACrD,EAEDxQ,KAAK05G,uBAAyBrjG,eAAem8F,GAC3C,OAAOxyG,KAAK0mG,eAAe8L,GAAUmH,kBACtC,EAED35G,KAAK45G,eAAiBvjG,eAAem8F,GACnC,IAAIqH,EAAY,GAChB,IAAK,IAAIC,WAAc95G,KAAK0mG,eAAe8L,GAAUuH,WAAYF,EAAUpoG,KAAKqoG,EAAKhM,UACrF,OAAO+L,CACR,EAED75G,KAAKg6G,oBAAsB3jG,eAAem8F,GACxC,IAAIqH,EAAY,GAChB,IAAK,IAAIC,WAAc95G,KAAK0mG,eAAe8L,GAAUyH,gBAAiBJ,EAAUpoG,KAAKqoG,EAAKhM,UAC1F,OAAO+L,CACR,EAED75G,KAAKk6G,2BAA6B7jG,eAAem8F,EAAUhiG,GACzD,OAAOxQ,KAAK0mG,eAAe8L,GAAU2H,qBAAqB3pG,EAC3D,EAEDxQ,KAAKo6G,2BAA6B/jG,eAAem8F,EAAUhiG,GACzD,OAAOxQ,KAAK0mG,eAAe8L,GAAU6H,qBAAqB7pG,EAC3D,EAEDxQ,KAAKs6G,kBAAoBjkG,eAAem8F,GACtC,IAAI+H,EAAW,GACf,IAAK,IAAIC,WAAax6G,KAAK0mG,eAAe8L,GAAUiI,cAAeF,EAAS9oG,KAAK+oG,EAAI1M,UACrF,OAAOyM,CACR,EAEDv6G,KAAK06G,kBAAoBrkG,eAAem8F,EAAU+H,GAChD,IAAII,EAAO,GACX,IAAK,IAAIC,KAAWL,EAAUI,EAAKlpG,KAAK,IAAIojF,EAAU+lB,IACtD,OAAO56G,KAAK0mG,eAAe8L,GAAUqI,YAAYF,EAClD,EAED36G,KAAK86G,kBAAoBzkG,eAAem8F,EAAU9kC,EAASqtC,EAAYC,EAAcC,GACnF,OAAOj7G,KAAK0mG,eAAe8L,GAAU0I,YAAYxtC,EAASqtC,EAAYC,EAAcC,EACrF,EAEDj7G,KAAKm7G,iBAAmB9kG,eAAem8F,GACrC,OAAOxyG,KAAK0mG,eAAe8L,GAAU4I,YACtC,EAEDp7G,KAAKq7G,sBAAwBhlG,eAAem8F,GAC1C,aAAcxyG,KAAK0mG,eAAe8L,GAAU8I,mBAAmBxN,QAChE,EAED9tG,KAAKu7G,sBAAwBllG,eAAem8F,EAAU7lE,GACpD,aAAc3sC,KAAK0mG,eAAe8L,GAAUgJ,gBAAgB7uE,IAAQmhE,QACrE,EAeD9tG,KAAKy7G,WAAaplG,eAAem8F,GAC/B,OAAOxyG,KAAK0mG,eAAe8L,GAAU9H,MACtC,EAED1qG,KAAK07G,6BAA+BrlG,eAAem8F,GACjD,aAAcxyG,KAAK0mG,eAAe8L,GAAUmJ,0BAA0B7N,QACvE,EAID9tG,KAAK47G,eAAiBvlG,eAAewlG,EAAU3zF,EAAMwlE,EAAUyhB,EAAa2M,EAAUC,EAAWC,GAC/F,IAAIC,EAAmBD,EAAoB,IAAI1nB,EAAoB0nB,QAAqBp9G,EACxFoB,KAAK0mG,eAAemV,SAAkBljB,EAAiBS,WAAW,CAAClxE,KAAM,GAAIwlE,SAAUA,EAAUyhB,YAAaA,EAAa2M,SAAUA,EAAUC,UAAWA,EAAWG,OAAQD,EAAkB7a,eAAe,IAC9MphG,KAAK0mG,eAAemV,GAAUM,oBAAoBj0F,EACnD,EAEDloB,KAAKo8G,cAAgB/lG,eAAewlG,EAAUQ,GAC5C,IAAIlc,EAAS,IAAInI,EAAmBqkB,GAChCn0F,EAAOi4E,EAAO9rF,UAClB8rF,EAAOmc,QAAQ,IACfnc,EAAOoI,kBAAiB,GACxBvoG,KAAK0mG,eAAemV,SAAkBljB,EAAiBO,aAAaiH,GACpEngG,KAAK0mG,eAAemV,GAAUM,oBAAoBj0F,EACnD,EAEDloB,KAAKu8G,WAAalmG,eAAewlG,GAC/B,OAAO77G,KAAK0mG,eAAemV,GAAUU,YACtC,EAEDv8G,KAAKw8G,eAAiBnmG,eAAewlG,GACnC,OAAO77G,KAAK0mG,eAAemV,GAAUW,gBACtC,EAODx8G,KAAKy8G,QAAUpmG,eAAewlG,GAC5B,OAAO77G,KAAK0mG,eAAemV,GAAUY,SACtC,EAEDz8G,KAAK08G,gBAAkBrmG,eAAewlG,GACpC,OAAO77G,KAAK0mG,eAAemV,GAAUa,iBACtC,EAED18G,KAAK28G,iBAAmBtmG,eAAewlG,GACrC,OAAO77G,KAAK0mG,eAAemV,GAAUc,kBACtC,EAED38G,KAAK48G,mBAAqBvmG,eAAewlG,GACvC,OAAO77G,KAAK0mG,eAAemV,GAAUe,oBACtC,EAED58G,KAAK68G,kBAAoBxmG,eAAewlG,GACtC,OAAO77G,KAAK0mG,eAAemV,GAAUgB,mBACtC,EAED78G,KAAK88G,iBAAmBzmG,eAAewlG,GACrC,OAAO77G,KAAK0mG,eAAemV,GAAUiB,kBACtC,EAED98G,KAAK+8G,kBAAoB1mG,eAAewlG,GACtC,OAAO77G,KAAK0mG,eAAemV,GAAUkB,mBACtC,EAED/8G,KAAKg9G,WAAa3mG,eAAewlG,EAAUoB,EAAYC,GACrD,OAAOl9G,KAAK0mG,eAAemV,GAAUmB,WAAWC,EAAYC,EAC7D,EAEDl9G,KAAKm9G,gBAAkB9mG,eAAewlG,EAAUnuC,GAC9C,aAAc1tE,KAAK0mG,eAAemV,GAAUsB,gBAAgBzvC,IAAUogC,QACvE,EAED9tG,KAAKo9G,mBAAqB/mG,eAAewlG,EAAUoB,EAAYC,EAAe1vF,SACtExtB,KAAK0mG,eAAemV,GAAUuB,mBAAmBH,EAAYC,EAAe1vF,EACnF,EAEDxtB,KAAKgyG,qBAAuB37F,eAAewlG,EAAUzM,EAAiBC,GACpE,aAAcrvG,KAAK0mG,eAAemV,GAAU7J,qBAAqB5C,EAAiBC,IAAYvB,QAC/F,EAED9tG,KAAKq9G,wBAA0BhnG,eAAewlG,EAAUyB,GACtD,aAAct9G,KAAK0mG,eAAemV,GAAUwB,wBAAwBC,IAAoBxP,QACzF,EAED9tG,KAAKu9G,oBAAsBlnG,eAAewlG,EAAU1b,GAClD,OAAOngG,KAAK0mG,eAAemV,GAAU0B,oBAAoBpd,EAAS,IAAI7L,EAAoBtsF,OAAOumC,OAAO4xD,EAAQ,CAACiB,eAAe,UAAWxiG,EAC5I,EAEDoB,KAAKw9G,oBAAsBnnG,eAAewlG,GACxC,IAAIzT,QAAmBpoG,KAAK0mG,eAAemV,GAAU2B,sBACrD,OAAOpV,EAAaA,EAAWgE,iBAAcxtG,CAC9C,EAEDoB,KAAKy9G,oBAAsBpnG,eAAewlG,GACxC,OAAO77G,KAAK0mG,eAAemV,GAAU4B,qBACtC,EAEDz9G,KAAK09G,iBAAmBrnG,eAAewlG,GACrC,OAAO77G,KAAK0mG,eAAemV,GAAU6B,kBACtC,EAED19G,KAAK29G,iBAAmBtnG,eAAewlG,EAAU+B,GAC/C,OAAO59G,KAAK0mG,eAAemV,GAAU8B,iBAAiBC,EACvD,EAED59G,KAAK69G,gBAAkBxnG,eAAewlG,GACpC,OAAO77G,KAAK0mG,eAAemV,GAAUgC,iBACtC,EAED79G,KAAK89G,uBAAyBznG,eAAewlG,GAC3C,OAAO77G,KAAK0mG,eAAemV,GAAUiC,wBACtC,EAED99G,KAAK+9G,gBAAkB1nG,eAAewlG,EAAUxyG,EAAMC,EAAOC,GAC3D,OAAOvJ,KAAK0mG,eAAemV,GAAUkC,gBAAgB10G,EAAMC,EAAOC,EACnE,EAEDvJ,KAAKg+G,eAAiB3nG,eAAewlG,GACnC,OAAO77G,KAAK0mG,eAAemV,GAAUmC,gBACtC,EAEDh+G,KAAKqzG,UAAYh9F,eAAewlG,GAC9B,OAAO77G,KAAK0mG,eAAemV,GAAUxI,WACtC,EAEDrzG,KAAKgoG,YAAc3xF,eAAewlG,EAAUpJ,GA+C1C,IAAIxK,EAAW,IAtCf,cAAyClQ,EAEvC7vF,YAAY2zG,EAAUz8G,EAAIisD,GACxB0gD,QACA/tG,KAAK69G,SAAWA,EAChB79G,KAAKoB,GAAKA,EACVpB,KAAKqtD,OAASA,CACf,CAED4yD,QACE,OAAOjgH,KAAKoB,EACb,CAED8+G,eAAehgB,EAAQiW,EAAaC,EAAW+J,EAAa99G,GAC1DrC,KAAKqtD,OAAOi8C,YAAY,CAACtpG,KAAK69G,SAAU,kBAAoB79G,KAAKigH,QAAS/f,EAAQiW,EAAaC,EAAW+J,EAAa99G,GACxH,CAED+9G,WAAWlgB,GACTlgG,KAAKqtD,OAAOi8C,YAAY,CAACtpG,KAAK69G,SAAU,cAAgB79G,KAAKigH,QAAS/f,GACvE,CAEDmgB,kBAAkBC,EAAYC,GAC5BvgH,KAAKqtD,OAAOi8C,YAAY,CAACtpG,KAAK69G,SAAU,qBAAuB79G,KAAKigH,QAASK,EAAW/xF,WAAYgyF,EAAmBhyF,YACxH,CAEDiyF,iBAAiB/4E,GACf,IAAIovE,EAAQpvE,EAAOg5E,QAAQ1I,gBACbn3G,IAAVi2G,IAAqBA,GAAQ,IAAI9f,GAAcihB,OAAO,CAACvwE,EAAOg5E,WAClEzgH,KAAKqtD,OAAOi8C,YAAY,CAACtpG,KAAK69G,SAAU,oBAAsB79G,KAAKigH,QAASpJ,EAAM/G,UACnF,CAED4Q,cAAcj5E,GACZ,IAAIovE,EAAQpvE,EAAOg5E,QAAQ1I,gBACbn3G,IAAVi2G,IAAqBA,GAAQ,IAAI9f,GAAcihB,OAAO,CAACvwE,EAAOg5E,WAClEzgH,KAAKqtD,OAAOi8C,YAAY,CAACtpG,KAAK69G,SAAU,iBAAmB79G,KAAKigH,QAASpJ,EAAM/G,UAChF,GAG2C+N,EAAUpJ,EAAYzyG,MAC/DA,KAAK6mD,YAAW7mD,KAAK6mD,UAAY,IACtC7mD,KAAK6mD,UAAUp1C,KAAKw2F,SACdjoG,KAAK0mG,eAAemV,GAAU7T,YAAYC,EACjD,EAEDjoG,KAAKkoG,eAAiB7xF,eAAewlG,EAAUpJ,GAC7C,IAAK,IAAIvzG,EAAI,EAAGA,EAAIc,KAAK6mD,UAAU1nD,OAAQD,IACzC,GAAIc,KAAK6mD,UAAU3nD,GAAG++G,UAAYxL,EAGlC,aAFMzyG,KAAK0mG,eAAemV,GAAU3T,eAAeloG,KAAK6mD,UAAU3nD,SAClEc,KAAK6mD,UAAU37C,OAAOhM,EAAG,GAG3B,MAAM,IAAIm1F,EAAY,yCACvB,EAEDr0F,KAAK2+G,SAAWtoG,eAAewlG,GAC7B,OAAO77G,KAAK0mG,eAAemV,GAAU8C,UACtC,EAED3+G,KAAKmvD,KAAO94C,eAAewlG,EAAU1H,EAAayK,GAChD,aAAa5+G,KAAK0mG,eAAemV,GAAU1sD,UAAKvwD,EAAWu1G,EAAayK,EACzE,EAED5+G,KAAK6+G,aAAexoG,eAAewlG,EAAUiD,GAC3C,OAAO9+G,KAAK0mG,eAAemV,GAAUgD,aAAaC,EACnD,EAED9+G,KAAK++G,YAAc1oG,eAAewlG,GAChC,OAAO77G,KAAK0mG,eAAemV,GAAUkD,aACtC,EAED/+G,KAAKg/G,QAAU3oG,eAAewlG,EAAUlG,GACtC,OAAO31G,KAAK0mG,eAAemV,GAAUmD,QAAQrJ,EAC9C,EAED31G,KAAKi/G,YAAc5oG,eAAewlG,GAChC,OAAO77G,KAAK0mG,eAAemV,GAAUoD,aACtC,EAEDj/G,KAAKk/G,iBAAmB7oG,eAAewlG,GACrC,OAAO77G,KAAK0mG,eAAemV,GAAUqD,kBACtC,EAEDl/G,KAAKm/G,WAAa9oG,eAAewlG,EAAUoB,EAAYC,GACrD,aAAcl9G,KAAK0mG,eAAemV,GAAUsD,WAAWlC,EAAYC,IAAgB3wF,UACpF,EAEDvsB,KAAKo/G,mBAAqB/oG,eAAewlG,EAAUoB,EAAYC,GAC7D,aAAcl9G,KAAK0mG,eAAemV,GAAUuD,mBAAmBnC,EAAYC,IAAgB3wF,UAC5F,EAEDvsB,KAAKq/G,YAAchpG,eAAewlG,EAAUyD,EAAqB15F,GAC/D,IAAI25F,EAAe,GACnB,IAAK,IAAIC,WAAiBx/G,KAAK0mG,eAAemV,GAAUwD,YAAYC,EAAqB15F,GAAM25F,EAAa9tG,KAAK+tG,EAAQ1R,UACzH,OAAOyR,CACR,EAEDv/G,KAAKy/G,WAAappG,eAAewlG,EAAUoB,EAAYqC,GACrD,aAAct/G,KAAK0mG,eAAemV,GAAU4D,WAAWxC,EAAYqC,IAAsBxR,QAC1F,EAED9tG,KAAK0/G,cAAgBrpG,eAAewlG,EAAUruF,GAC5C,aAAcxtB,KAAK0mG,eAAemV,GAAU6D,cAAclyF,IAAQsgF,QACnE,EAED9tG,KAAK2/G,gBAAkBtpG,eAAewlG,EAAUoB,EAAY2C,GAC1D,IAAIC,EAAkB,GACtB,IAAK,IAAIC,WAAoB9/G,KAAK0mG,eAAemV,GAAU8D,gBAAgB1C,EAAY2C,GAAoBC,EAAgBpuG,KAAKquG,EAAWhS,UAC3I,OAAO+R,CACR,EAED7/G,KAAK+/G,iBAAmB1pG,eAAewlG,EAAUoB,EAAYzvF,GAC3D,aAAcxtB,KAAK0mG,eAAemV,GAAUkE,iBAAiB9C,EAAYzvF,IAAQsgF,QAClF,EAGD9tG,KAAK61G,OAASx/F,eAAewlG,EAAUmE,GAGrC,IAOIpK,EAPAx+C,EAAQ,IAAI29B,EAAYirB,EAAgBjrB,EAAYkrB,oBAAoBC,UAAUrK,SAAS,GAG3F7F,QAAYhwG,KAAK0mG,eAAemV,GAAUhG,OAAOz+C,GAGjD0+C,EAAa,IAAI7sE,IAEjB6jC,EAAS,GACb,IAAK,IAAImjC,KAAMD,EACRC,EAAG8F,aACDH,IAAkBA,GAAmB,IAAI7gB,GAAcihB,OAAO,KACnE/F,EAAGgG,SAASL,GACZA,EAAiBC,SAASpkG,KAAKw+F,IAE5B6F,EAAW3iE,IAAI88D,EAAG8F,cACrBD,EAAWlyG,IAAIqsG,EAAG8F,YAClBjpC,EAAOr7D,KAAKw+F,EAAG8F,aAKnB,IAAK,IAAI72G,EAAI,EAAGA,EAAI4tE,EAAO3tE,OAAQD,IAAK4tE,EAAO5tE,GAAK4tE,EAAO5tE,GAAG4uG,SAC9D,MAAO,CAAChhC,OAAQA,EACjB,EAED9sE,KAAKmgH,aAAe9pG,eAAewlG,EAAUmE,GAG3C,IAMIpK,EANAx+C,EAAQ,IAAI29B,EAAYirB,EAAgBjrB,EAAYkrB,oBAAoBC,UAAUrK,SAAS,GAAGuK,mBAG9FC,QAAkBrgH,KAAK0mG,eAAemV,GAAUsE,aAAa/oD,GAI7D0V,EAAS,GACTgpC,EAAa,IAAI7sE,IACrB,IAAK,IAAIq3E,KAAYD,EAAW,CAC9B,IAAIpQ,EAAKqQ,EAAS7B,QACbxO,EAAG8F,aACDH,IAAkBA,GAAmB,IAAI7gB,GAAcihB,OAAO,KACnE/F,EAAGgG,SAASL,GACZA,EAAiBC,SAASpkG,KAAKw+F,IAE5B6F,EAAW3iE,IAAI88D,EAAG8F,cACrBD,EAAWlyG,IAAIqsG,EAAG8F,YAClBjpC,EAAOr7D,KAAKw+F,EAAG8F,YAElB,CAGD,IAAK,IAAI72G,EAAI,EAAGA,EAAI4tE,EAAO3tE,OAAQD,IAAK4tE,EAAO5tE,GAAK4tE,EAAO5tE,GAAG4uG,SAC9D,OAAOhhC,CACR,EAED9sE,KAAKugH,WAAalqG,eAAewlG,EAAUmE,GAGzC,IAMIpK,EANAx+C,EAAQ,IAAI29B,EAAYirB,EAAgBjrB,EAAYkrB,oBAAoBC,UAAUrK,SAAS,GAAG2K,iBAG9FC,QAAgBzgH,KAAK0mG,eAAemV,GAAU0E,WAAWnpD,GAIzD0V,EAAS,GACTgpC,EAAa,IAAI7sE,IACrB,IAAK,IAAIxD,KAAUg7E,EAAS,CAC1B,IAAIxQ,EAAKxqE,EAAOg5E,QACXxO,EAAG8F,aACDH,IAAkBA,GAAmB,IAAI7gB,GAAcihB,OAAO,KACnE/F,EAAGgG,SAASL,GACZA,EAAiBC,SAASpkG,KAAKw+F,IAE5B6F,EAAW3iE,IAAI88D,EAAG8F,cACrBD,EAAWlyG,IAAIqsG,EAAG8F,YAClBjpC,EAAOr7D,KAAKw+F,EAAG8F,YAElB,CAGD,IAAK,IAAI72G,EAAI,EAAGA,EAAI4tE,EAAO3tE,OAAQD,IAAK4tE,EAAO5tE,GAAK4tE,EAAO5tE,GAAG4uG,SAC9D,OAAOhhC,CACR,EAED9sE,KAAK0gH,cAAgBrqG,eAAewlG,EAAU3qG,GAC5C,OAAOlR,KAAK0mG,eAAemV,GAAU6E,cAAcxvG,EACpD,EAEDlR,KAAK2gH,cAAgBtqG,eAAewlG,EAAU+E,GAC5C,OAAO5gH,KAAK0mG,eAAemV,GAAU8E,cAAcC,EACpD,EAED5gH,KAAK6gH,aAAexqG,eAAewlG,EAAU3qG,GAC3C,IAAI4vG,EAAgB,GACpB,IAAK,IAAIC,WAAkB/gH,KAAK0mG,eAAemV,GAAUmF,gBAAgB9vG,GAAM4vG,EAAcrvG,KAAKsvG,EAASjT,UAC3G,OAAOgT,CACR,EAED9gH,KAAKihH,gBAAkB5qG,eAAewlG,EAAUiF,GAC9C,IAAIpJ,EAAY,GAChB,IAAK,IAAIwJ,KAAgBJ,EAAepJ,EAAUjmG,KAAK,IAAIgkF,EAAeyrB,IAC1E,aAAclhH,KAAK0mG,eAAemV,GAAUoF,gBAAgBvJ,IAAY5J,QACzE,EAMD9tG,KAAKmhH,aAAe9qG,eAAewlG,EAAUkF,GAC3C,OAAO/gH,KAAK0mG,eAAemV,GAAUsF,aAAaJ,EACnD,EAED/gH,KAAKohH,WAAa/qG,eAAewlG,EAAUkF,GACzC,OAAO/gH,KAAK0mG,eAAemV,GAAUuF,WAAWL,EACjD,EAED/gH,KAAKqhH,eAAiBhrG,eAAewlG,EAAUkF,GAC7C,OAAO/gH,KAAK0mG,eAAemV,GAAUwF,eAAeN,EACrD,EAED/gH,KAAKshH,UAAYjrG,eAAewlG,EAAU1b,GAGxC,MAFsB,iBAAXA,IAAqBA,EAAS,IAAI9I,EAAe8I,WAC5CngG,KAAK0mG,eAAemV,GAAUyF,UAAUnhB,IAC7C,GAAGohB,WAAWzT,QAC1B,EAED9tG,KAAKwhH,YAAcnrG,eAAewlG,EAAU1b,GAG1C,MAFsB,iBAAXA,IAAqBA,EAAS,IAAI9I,EAAe8I,WAC7CngG,KAAK0mG,eAAemV,GAAU2F,YAAYrhB,IAC/CohB,WAAWzT,QACtB,EAED9tG,KAAKyhH,cAAgBprG,eAAewlG,EAAU1b,GACtB,iBAAXA,IAAqBA,EAAS,IAAI9I,EAAe8I,IAC5D,IAAI6P,QAAYhwG,KAAK0mG,eAAemV,GAAU4F,cAActhB,GACxDuhB,EAAS,GACb,IAAK,IAAIzR,KAAMD,EAAUhiB,EAASqb,cAAcqY,EAAQzR,EAAGsR,aAAaG,EAAOjwG,KAAKw+F,EAAGsR,YACvF,IAAII,EAAa,GACjB,IAAK,IAAIC,KAASF,EAAQC,EAAWlwG,KAAKmwG,EAAM9T,UAChD,OAAO6T,CACR,EAED3hH,KAAK6hH,UAAYxrG,eAAewlG,EAAUiG,GACxC,IAAI9R,QAAYhwG,KAAK0mG,eAAemV,GAAUgG,UAAUC,GACxD,OAAsB,IAAf9R,EAAI7wG,OAAe,CAAC,EAAI6wG,EAAI,GAAGuR,WAAWzT,QAClD,EAED9tG,KAAK+hH,SAAW1rG,eAAewlG,EAAUmG,GACvC,OAAOhiH,KAAK0mG,eAAemV,GAAUkG,SAASC,EAC/C,EAEDhiH,KAAKiiH,cAAgB5rG,eAAewlG,EAAUqG,GAC5C,aAAcliH,KAAK0mG,eAAemV,GAAUoG,cAAc,IAAIrqB,EAAYsqB,KAAapU,QACxF,EAED9tG,KAAKmiH,QAAU9rG,eAAewlG,EAAUuG,GACtC,OAAOpiH,KAAK0mG,eAAemV,GAAUsG,QAAQC,EAC9C,EAEDpiH,KAAKqiH,UAAYhsG,eAAewlG,EAAUyG,GACxC,OAAOtiH,KAAK0mG,eAAemV,GAAUwG,UAAUC,EAChD,EAEDtiH,KAAKuiH,YAAclsG,eAAewlG,EAAUx7G,EAASmiH,EAAevF,EAAYC,GAC9E,OAAOl9G,KAAK0mG,eAAemV,GAAU0G,YAAYliH,EAASmiH,EAAevF,EAAYC,EACtF,EAEDl9G,KAAKyiH,cAAgBpsG,eAAewlG,EAAUx7G,EAASqtE,EAAS/T,GAC9D,aAAc35D,KAAK0mG,eAAemV,GAAU4G,cAAcpiH,EAASqtE,EAAS/T,IAAYm0C,QACzF,EAED9tG,KAAK0iH,SAAWrsG,eAAewlG,EAAU8G,GACvC,OAAO3iH,KAAK0mG,eAAemV,GAAU6G,SAASC,EAC/C,EAED3iH,KAAK4iH,WAAavsG,eAAewlG,EAAU8G,EAAQE,EAAOn1C,GACxD,aAAc1tE,KAAK0mG,eAAemV,GAAU+G,WAAWD,EAAQE,EAAOn1C,IAAUogC,QACjF,EAED9tG,KAAK8iH,WAAazsG,eAAewlG,EAAU8G,EAAQj1C,EAASrtE,GAC1D,OAAOL,KAAK0mG,eAAemV,GAAUiH,WAAWH,EAAQj1C,EAASrtE,EAClE,EAEDL,KAAK+iH,aAAe1sG,eAAewlG,EAAU8G,EAAQj1C,EAASrtE,EAASs5D,GACrE,aAAc35D,KAAK0mG,eAAemV,GAAUkH,aAAaJ,EAAQj1C,EAASrtE,EAASs5D,IAAYm0C,QAChG,EAED9tG,KAAKgjH,cAAgB3sG,eAAewlG,EAAU8G,EAAQtiH,GACpD,OAAOL,KAAK0mG,eAAemV,GAAUmH,cAAcL,EAAQtiH,EAC5D,EAEDL,KAAKijH,gBAAkB5sG,eAAewlG,EAAU8G,EAAQtiH,EAASs5D,GAC/D,OAAO35D,KAAK0mG,eAAemV,GAAUoH,gBAAgBN,EAAQtiH,EAASs5D,EACvE,EAED35D,KAAKkjH,sBAAwB7sG,eAAewlG,EAAUx7G,GACpD,OAAOL,KAAK0mG,eAAemV,GAAUqH,sBAAsB7iH,EAC5D,EAEDL,KAAKmjH,uBAAyB9sG,eAAewlG,EAAUoB,EAAYmG,EAAW/iH,GAC5E,OAAOL,KAAK0mG,eAAemV,GAAUsH,uBAAuBlG,EAAYmG,EAAW/iH,EACpF,EAEDL,KAAKqjH,kBAAoBhtG,eAAewlG,EAAUnuC,EAASrtE,EAASs5D,GAClE,aAAc35D,KAAK0mG,eAAemV,GAAUwH,kBAAkB31C,EAASrtE,EAASs5D,IAAYm0C,QAC7F,EAED9tG,KAAKsjH,WAAajtG,eAAewlG,EAAUlG,GACzC,OAAO31G,KAAK0mG,eAAemV,GAAUyH,WAAW3N,EACjD,EAED31G,KAAKujH,WAAaltG,eAAewlG,EAAUlG,EAAU6N,GACnD,OAAOxjH,KAAK0mG,eAAemV,GAAU0H,WAAW5N,EAAU6N,EAC3D,EAEDxjH,KAAKyjH,sBAAwBptG,eAAewlG,EAAU6H,GACpD,IAAIzL,EAAc,GAClB,IAAK,IAAIC,WAAel4G,KAAK0mG,eAAemV,GAAU4H,sBAAsBC,GAAezL,EAAYxmG,KAAKymG,EAAMpK,UAClH,OAAOmK,CACR,EAEDj4G,KAAK2jH,oBAAsBttG,eAAewlG,EAAUnuC,EAASk2C,GAC3D,OAAO5jH,KAAK0mG,eAAemV,GAAU8H,oBAAoBj2C,EAASk2C,EACnE,EAED5jH,KAAK6jH,qBAAuBxtG,eAAewlG,EAAU9wG,EAAO+4G,EAAYp2C,EAASq2C,EAAgBH,GAC/F,OAAO5jH,KAAK0mG,eAAemV,GAAUgI,qBAAqB94G,EAAO+4G,EAAYp2C,EAASq2C,EAAgBH,EACvG,EAED5jH,KAAKgkH,uBAAyB3tG,eAAewlG,EAAU9wG,GACrD,OAAO/K,KAAK0mG,eAAemV,GAAUmI,uBAAuBj5G,EAC7D,EAED/K,KAAKikH,YAAc5tG,eAAewlG,EAAUj2F,EAAKs+F,GAC/C,MAAM,IAAIhmH,MAAM,kBACjB,EAED8B,KAAKmkH,cAAgB9tG,eAAewlG,EAAUqI,GAC5C,MAAM,IAAIhmH,MAAM,kBACjB,EAED8B,KAAKokH,eAAiB/tG,eAAewlG,GACnC,MAAM,IAAI39G,MAAM,kBACjB,EAED8B,KAAKqkH,mBAAqBhuG,eAAewlG,EAAUj2F,EAAK4H,GACtD,MAAM,IAAItvB,MAAM,kBACjB,EAED8B,KAAKskH,cAAgBjuG,eAAewlG,EAAUQ,GAC5C,OAAOr8G,KAAK0mG,eAAemV,GAAUyI,cAAc,IAAIjtB,EAAeglB,GACvE,EAEDr8G,KAAKukH,gBAAkBluG,eAAewlG,EAAU7xG,GAC9C,aAAchK,KAAK0mG,eAAemV,GAAU0I,gBAAgBv6G,IAAM8jG,QACnE,EAED9tG,KAAKgtG,aAAe32F,eAAewlG,EAAU/8G,GAC3C,OAAOkB,KAAK0mG,eAAemV,GAAU7O,aAAaluG,EACnD,EAEDkB,KAAKo9F,aAAe/mF,eAAewlG,EAAU/8G,EAAK8H,GAChD,OAAO5G,KAAK0mG,eAAemV,GAAUze,aAAat+F,EAAK8H,EACxD,EAED5G,KAAKk7G,YAAc7kG,eAAewlG,EAAUd,EAAYyJ,EAAkBvJ,GACxE,OAAOj7G,KAAK0mG,eAAemV,GAAUX,YAAYH,EAAYyJ,EAAkBvJ,EAChF,EAEDj7G,KAAKo7G,WAAa/kG,eAAewlG,GAC/B,OAAO77G,KAAK0mG,eAAemV,GAAUT,YACtC,EAEDp7G,KAAKykH,uBAAyBpuG,eAAewlG,GAC3C,OAAO77G,KAAK0mG,eAAemV,GAAU4I,wBACtC,EAEDzkH,KAAK0kH,WAAaruG,eAAewlG,GAC/B,OAAO77G,KAAK0mG,eAAemV,GAAU6I,YACtC,EAED1kH,KAAK2kH,gBAAkBtuG,eAAewlG,GACpC,aAAc77G,KAAK0mG,eAAemV,GAAU8I,mBAAmB7W,QAChE,EAED9tG,KAAK4kH,gBAAkBvuG,eAAewlG,GACpC,OAAO77G,KAAK0mG,eAAemV,GAAU+I,iBACtC,EAED5kH,KAAK6kH,aAAexuG,eAAewlG,EAAUiJ,EAAeC,EAAWr3B,GACrE,aAAa1tF,KAAK0mG,eAAemV,GAAUgJ,aAAaC,EAAeC,EAAWr3B,EACnF,EAED1tF,KAAKglH,qBAAuB3uG,eAAewlG,EAAUiJ,EAAep3B,GAClE,aAAc1tF,KAAK0mG,eAAemV,GAAUmJ,qBAAqBF,EAAep3B,IAAWogB,QAC5F,EAED9tG,KAAKilH,kBAAoB5uG,eAAewlG,GACtC,OAAO77G,KAAK0mG,eAAemV,GAAUoJ,mBACtC,EAEDjlH,KAAKklH,kBAAoB7uG,eAAewlG,EAAUiJ,GAChD,OAAO9kH,KAAK0mG,eAAemV,GAAUqJ,kBAAkBJ,EACxD,EAED9kH,KAAKmlH,kBAAoB9uG,eAAewlG,EAAUuJ,GAChD,aAAcplH,KAAK0mG,eAAemV,GAAUsJ,kBAAkBC,IAAgBtX,QAC/E,EAED9tG,KAAKqlH,oBAAsBhvG,eAAewlG,EAAUyJ,GAClD,OAAOtlH,KAAK0mG,eAAemV,GAAUwJ,oBAAoBC,EAC1D,EAEDtlH,KAAKwU,QAAU6B,eAAewlG,GAC5B,OAAO77G,KAAK0mG,eAAemV,GAAUrnG,SACtC,EAEDxU,KAAKulH,eAAiBlvG,eAAewlG,EAAU2J,EAAaC,GAC1D,OAAOzlH,KAAK0mG,eAAemV,GAAU0J,eAAeC,EAAaC,EAClE,EAEDzlH,KAAKm0E,SAAW99D,eAAewlG,GAC7B,OAAO77G,KAAK0mG,eAAemV,GAAU1nC,UACtC,EAEDn0E,KAAKgpE,MAAQ3yD,eAAewlG,EAAUp3F,GACpC,OAAOzkB,KAAK0mG,eAAemV,GAAU7yC,MAAMvkD,EAC5C,aCn6BDjnB,EAAOC,QApDP,MAEEyK,YAAYud,GACVznB,KAAKynB,MAAQzd,OAAOumC,OAAO,CAAC,EAAG9oB,EAChC,CAEDigG,oBACE,OAAO1nH,KAAKynB,MAAMkgG,cACnB,CAEDC,kBAAkBD,GAEhB,OADA3nH,KAAKynB,MAAMkgG,eAAiBA,EACrB3nH,IACR,CAED6nH,qBACE,OAAO7nH,KAAKynB,MAAMqgG,eACnB,CAEDC,mBAAmBD,GAEjB,OADA9nH,KAAKynB,MAAMqgG,gBAAkBA,EACtB9nH,IACR,CAEDgoH,8BACE,OAAOhoH,KAAKynB,MAAMwgG,wBACnB,CAEDC,4BAA4BD,GAE1B,OADAjoH,KAAKynB,MAAMwgG,yBAA2BA,EAC/BjoH,IACR,CAEDmoH,yBACE,OAAOnoH,KAAKynB,MAAM2gG,mBACnB,CAEDC,uBAAuBD,GAErB,OADApoH,KAAKynB,MAAM2gG,oBAAsBA,EAC1BpoH,IACR,CAEDsoH,kBACE,OAAOtoH,KAAKynB,MAAM8gG,YACnB,CAEDC,gBAAgBD,GAEd,OADAvoH,KAAKynB,MAAM8gG,aAAeA,EACnBvoH,IACR,cCyBHR,EAAOC,QA1EP,MAOEyK,YAAYg/C,GACVlpD,KAAKw0D,MAAQtL,CACd,CAODu/D,UACE,OAAOzoH,KAAKw0D,KACb,CAQDxqC,MAAM0+F,GAEJ,OADA1oH,KAAK2oH,YAAcD,EACf1oH,KAAK4oH,aACT5oH,KAAK4oH,YAAa,EAGlB5oH,KAAK6oH,YAJuB7oH,IAM7B,CAOD8oH,YACE,OAAO9oH,KAAK4oH,UACb,CAKDlc,OACE1sG,KAAK4oH,YAAa,CACnB,CAODG,cAAcL,GACZ1oH,KAAK2oH,YAAcD,CACpB,CAEa,iBACZ,GAAI1oH,KAAKgpH,WAAY,OACrBhpH,KAAKgpH,YAAa,EAClB,IAAI1mE,EAAOtiD,KACX,KAAOA,KAAK4oH,YAAY,CACtB,IAAIzZ,EAAYhgF,KAAK3C,YACfxsB,KAAKw0D,QACPx0D,KAAK4oH,kBAAkB,IAAIv/G,SAAQ,SAASrK,GAAWuiD,WAAWviD,EAASsjD,EAAKqmE,aAAex5F,KAAK3C,MAAQ2iF,GAAc,GAC/H,CACDnvG,KAAKgpH,YAAa,CACnB,oBC1EH,MAAMh5B,EAAWtrC,EAAQ,OAgEzBllD,EAAOC,QA3DP,MAOEyK,YAAY++G,GAEV,QADuBroH,IAAnBqoH,IAA8BA,EAAiB,GAC/CA,EAAiB,EAAG,MAAM,IAAI/oH,MAAM,sDAGxC,MAAMmY,EAAQqsC,EAAQ,OACtB1kD,KAAKypG,UAAYpxF,EAAM+0C,OAAM,SAASnL,EAASp5C,GACzCo5C,EAAQh5C,KAAMg5C,EAAQh5C,MAAKynF,IAAU7nF,EAAS6nF,EAAT,IAAmB/9C,OAAMlmB,IAAS5jB,OAASjI,EAAW6rB,EAApB,IACtEw1B,IAAUh5C,MAAKynF,IAAU7nF,EAAS6nF,EAAT,IAAmB/9C,OAAMlmB,IAAS5jB,OAASjI,EAAW6rB,EAApB,GACjE,GAAEw8F,GAGH,IAAI3mE,EAAOtiD,KACXA,KAAKkpH,eAAiB,GACtBlpH,KAAKypG,UAAU17C,MAAQ,WACrB,IAAK,IAAIk8C,KAAY3nD,EAAK4mE,eAAgBjf,GAC3C,CACF,CAQW,aAAChoD,GACX,IAAIK,EAAOtiD,KACX,OAAO,IAAIqJ,SAAQ,SAASrK,EAAS40D,GACnCtR,EAAKmnD,UAAUh2F,KAAKwuC,GAAS,SAASyuC,EAAMjkE,QAC9B7rB,IAAR6rB,EAAmBmnC,EAAOnnC,GACzBztB,EAAQ0xF,EACd,GACF,GACF,CAOa,iBACZ,GAA8B,IAA1B1wF,KAAKypG,UAAUtoG,OAAc,OACjC,IAAImhD,EAAOtiD,KACX,OAAO,IAAIqJ,SAAQ,SAASrK,GAC1BsjD,EAAK4mE,eAAez1G,MAAK,WACvBu8E,EAASjqF,OAAOu8C,EAAK4mE,eAAgBlpH,MACrChB,GACD,GACF,GACF,mBCnCH,SAAUS,GACV,aAsBA,IAAI0pH,EAAY,CAAC,EAqCjB,SAAShzB,EAAWl3D,EAAGb,EAAGqpE,GACzB,GAAIA,IAAU0hB,EACb,OAAIlqF,aAAak3D,EACTl3D,OAEc,IAANA,EACRmqF,EAEDjzB,EAAWnlF,MAAMiuB,GAIzB,IADAA,EAAIA,GAAK,GACFA,EAAE99B,SAAW89B,EAAEA,EAAE99B,OAAS,MAC9B89B,EAAE99B,OAELnB,KAAK86C,GAAK7b,EACVj/B,KAAKg7C,GAAK/b,EAAE99B,OAAUi9B,GAAK,EAAK,CAChC,CACD+3D,EAAWgzB,UAAYA,EAEvBhzB,EAAW7gD,WAAa,SAASrW,EAAGb,GACnC,OAAO,IAAI+3D,EAAWl3D,EAAGb,EAAG+qF,EAC5B,EAKD,IAAIE,EAAkB,IAGtBlzB,EAAWrxE,KAAOukG,EAClBlzB,EAAWmzB,WAHiB,EAK5B,IAAIF,EAAO,IAAIjzB,EAAW,GAAI,EAAGgzB,GAGjChzB,EAAWizB,KAAOA,EAElB,IAAIG,EAAM,IAAIpzB,EAAW,CAAC,GAAI,EAAGgzB,GAGjChzB,EAAWozB,IAAMA,EAEjB,IAAIC,EAAQ,IAAIrzB,EAAWozB,EAAIzuE,IAAK,EAAGquE,GAGvChzB,EAAWqzB,MAAQA,EAInBrzB,EAAWszB,GAAKL,EAIhBjzB,EAAWuzB,GAAKH,EAahBpzB,EAAWwzB,MAAQ,CAClBP,EACAG,EAEA,IAAIpzB,EAAY,CAAC,GAAI,EAAGgzB,GACxB,IAAIhzB,EAAY,CAAC,GAAI,EAAGgzB,GACxB,IAAIhzB,EAAY,CAAC,GAAI,EAAGgzB,GACxB,IAAIhzB,EAAY,CAAC,GAAI,EAAGgzB,GACxB,IAAIhzB,EAAY,CAAC,GAAI,EAAGgzB,GACxB,IAAIhzB,EAAY,CAAC,GAAI,EAAGgzB,GACxB,IAAIhzB,EAAY,CAAC,GAAI,EAAGgzB,GACxB,IAAIhzB,EAAY,CAAC,GAAI,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,GACxB,IAAIhzB,EAAW,CAAC,IAAK,EAAGgzB,IAIzBhzB,EAAW9D,OAAS,uCAAuC9lF,MAAM,IAiBjE4pF,EAAWx2F,UAAU4uB,SAAW,SAASzJ,GAExC,IADAA,GAAQA,GAAQ,IACL,GAAKA,EAAO,GACtB,MAAM,IAAI5kB,MAAM,iBAAmB4kB,EAAO,KAE3C,GAAgB,IAAZ9kB,KAAKg7C,GACR,MAAO,IAER,GAAa,KAATl2B,EAAa,CAChB,IAAI5Z,EAAMlL,KAAKg7C,GAAK,EAAI,IAAM,GAC9B9vC,GAAOlL,KAAK86C,GAAG96C,KAAK86C,GAAG35C,OAAS,GAAGotB,WACnC,IAAK,IAAIrtB,EAAIlB,KAAK86C,GAAG35C,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAE7C,IADA,IAAImS,EAAQrT,KAAK86C,GAAG55C,GAAGqtB,WAChBlb,EAAMlS,OA/GY,GA+GoBkS,EAAQ,IAAMA,EAC3DnI,GAAOmI,CACP,CACD,OAAOnI,CACP,CAEA,IAAI0+G,EAAWzzB,EAAW9D,OAC1BvtE,EAAOqxE,EAAWwzB,MAAM7kG,GAOxB,IANA,IAII+kG,EAJA94F,EAAO/wB,KAAKg7C,GAEZ/b,EAAIj/B,KAAKi2B,MACTo8D,EAAS,GAGG,IAATpzD,EAAE+b,IAAU,CAClB,IAAI7Y,EAASlD,EAAEs0E,OAAOzuF,GACtBma,EAAIkD,EAAO,GACX0nF,EAAQ1nF,EAAO,GAGfkwD,EAAO5+E,KAAKm2G,EAASC,EAAM3rE,WAC3B,CACD,OAAQntB,EAAO,EAAI,IAAM,IAAMshE,EAAOtlE,UAAUnc,KAAK,GAEtD,EAGDulF,EAAW2zB,WAAa,CACvB,KACA,KACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,aACA,eACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,kBAmCD3zB,EAAWnlF,MAAQ,SAASotB,EAAGtZ,GAoB9BsZ,EAAIA,EAAE7P,gBACc,IAATzJ,GAAkC,KAATA,IACnCsZ,EAAsBA,EAhBZrrB,QAAQ,+BAAgC,KAEvCA,QAAQ,0CAA0C,SAASoqB,EAAGiB,EAAGa,EAAG4c,EAAG1uC,GAEjF,IAAIuwB,GADJvwB,GAAKA,GACO,EACRjM,EAAI+9B,EAAE99B,OAASgM,EACnBgwB,GAAKO,EAAIuB,EAAI4c,GAAG16C,OAChBgM,GAAMA,EAAIsN,KAAKwb,IAAI9oB,KAAOgwB,EAAIhwB,EAAIgwB,EAAIO,EAAI,EAC1C,IAAIsK,EAAK,IAAIhnC,MAAMmM,EAAI,GAAIyD,KAAK,KAC5BwhB,EAAI6M,EAAI4c,EACZ,OAAQzd,GAAK,KAAOV,EAAItL,EAAI4V,EAAI5V,EAAIA,GAAK4V,GAAGsS,OAAO,EAAGp5C,GAAKw8B,EAAIsK,EAAE7mC,OAAS,IAAMD,EAAIkxB,EAAEjxB,OAAS,IAAMixB,EAAEkoB,OAAOp5C,GAAK,GACnH,KAwBF,IAAIkR,EAAQ,IAAIjP,OAAO,oBAfH,IAAT2hB,EACC,SAEK,IAARA,EACG,KAEK,GAARA,EACG,KAEK,GAARA,EACG,KAGA,IAEsC,6BAA8B,KAAKmkD,KAAK7qC,GAC1F,GAAIhsB,EAAO,CACV,IAAI2e,EAAO3e,EAAM,IAAM,IACnB23G,EAAc33G,EAAM,IAAM,GAC1BigF,EAASjgF,EAAM,IAAM,GAEzB,QAAoB,IAAT0S,EAGTA,EADmB,OAAhBilG,GAAwC,OAAhBA,EACpB,GAEiB,OAAhBA,GAAwC,OAAhBA,EACzB,EAEiB,OAAhBA,GAAwC,OAAhBA,EACzB,EAGA,QAGJ,GAAIjlG,EAAO,GAAKA,EAAO,GAC3B,MAAM,IAAI5kB,MAAM,iBAAmB4kB,EAAO,KAM3C,GAHAA,GAAQA,GAGFqxE,EAAW2zB,WAAWhlG,GAAMnc,KAAK0pF,GACtC,MAAM,IAAInyF,MAAM,uBAAyB4kB,GAK1C,GAAsB,KADtButE,EAASA,EAAOt/E,QAAQ,MAAO,IAAIxG,MAAM,KAC9BpL,OACV,OAAOioH,EAOR,GAHAr4F,EAAiB,MAATA,GAAiB,EAAI,EAGjB,IAARjM,EAAY,CAEf,IADA,IAAI6vD,EAAI,GACD0d,EAAOlxF,QAvSW,GAwSxBwzE,EAAElhE,KAAK25B,SAASilD,EAAOnlF,OAAOmlF,EAAOlxF,OAAOg1F,EAAWmzB,WAAYnzB,EAAWmzB,YAAY14G,KAAK,IAAK,KAGrG,OADA+jE,EAAElhE,KAAK25B,SAASilD,EAAOzhF,KAAK,IAAK,KAC1B,IAAIulF,EAAWxhB,EAAG5jD,EAAMo4F,EAC/B,CAGGx0C,EAAIy0C,EACRtkG,EAAOqxE,EAAWwzB,MAAM7kG,GAExB,IADA,IAAI6kG,EAAQxzB,EAAWwzB,MACdzoH,EAAI,EAAGA,EAAImxF,EAAOlxF,OAAQD,IAClCyzE,EAAIA,EAAEu+B,SAASpuF,GAAMlf,IAAI+jH,EAAMv8E,SAASilD,EAAOnxF,GAAI,MAEpD,OAAO,IAAIi1F,EAAWxhB,EAAE75B,GAAI/pB,EAAMo4F,EAClC,CAEA,MAAM,IAAIjpH,MAAM,8BAAgCk+B,EAEjD,EAkBD+3D,EAAWx2F,UAAUiG,IAAM,SAASq5B,GACnC,GAAgB,IAAZj/B,KAAKg7C,GACR,OAAOm7C,EAAWl3D,GAInB,GAAa,KADbA,EAAIk3D,EAAWl3D,IACT+b,GACL,OAAOh7C,KAER,GAAIA,KAAKg7C,KAAO/b,EAAE+b,GAEjB,OADA/b,EAAIA,EAAE5qB,SACCrU,KAAKgqH,SAAS/qF,GAYtB,IATA,IAOI4qF,EAPAxyG,EAAIrX,KAAK86C,GACTxjC,EAAI2nB,EAAE6b,GACNmvE,EAAK5yG,EAAElW,OACP+oH,EAAK5yG,EAAEnW,OACP4yF,EAAM,IAAI/yF,MAAMyZ,KAAK8X,IAAI03F,EAAIC,GAAM,GACnC75F,EAAO5V,KAAKwU,IAAIg7F,EAAIC,GACpB91F,EAAQ,EAGHlzB,EAAI,EAAGA,EAAImvB,EAAMnvB,IACzB2oH,EAAQxyG,EAAEnW,GAAKoW,EAAEpW,GAAKkzB,EACtB2/D,EAAI7yF,GAAK2oH,EAAQR,EACjBj1F,EAASy1F,EAAQR,EAAmB,EAMrC,IAJIa,EAAKD,IACR5yG,EAAIC,EACJ2yG,EAAKC,GAEDhpH,EAAImvB,EAAM+D,GAASlzB,EAAI+oH,EAAI/oH,IAC/B2oH,EAAQxyG,EAAEnW,GAAKkzB,EACf2/D,EAAI7yF,GAAK2oH,EAAQR,EACjBj1F,EAASy1F,EAAQR,EAAmB,EAMrC,IAJIj1F,IACH2/D,EAAI7yF,GAAKkzB,GAGFlzB,EAAI+oH,EAAI/oH,IACf6yF,EAAI7yF,GAAKmW,EAAEnW,GAGZ,OAAO,IAAIi1F,EAAWpC,EAAK/zF,KAAKg7C,GAAImuE,EACpC,EAcDhzB,EAAWx2F,UAAU0U,OAAS,WAC7B,OAAO,IAAI8hF,EAAWn2F,KAAK86C,GAAiB,GAAX96C,KAAKg7C,GAASmuE,EAC/C,EAcDhzB,EAAWx2F,UAAUs2B,IAAM,WAC1B,OAAQj2B,KAAKg7C,GAAK,EAAKh7C,KAAKqU,SAAWrU,IACvC,EAkBDm2F,EAAWx2F,UAAUqqH,SAAW,SAAS/qF,GACxC,GAAgB,IAAZj/B,KAAKg7C,GACR,OAAOm7C,EAAWl3D,GAAG5qB,SAItB,GAAa,KADb4qB,EAAIk3D,EAAWl3D,IACT+b,GACL,OAAOh7C,KAER,GAAIA,KAAKg7C,KAAO/b,EAAE+b,GAEjB,OADA/b,EAAIA,EAAE5qB,SACCrU,KAAK4F,IAAIq5B,GAGjB,IAAIC,EAAIl/B,KAEJA,KAAKg7C,GAAK,IACb9b,EAAI,IAAIi3D,EAAWl3D,EAAE6b,GAAI,EAAGquE,GAC5BlqF,EAAI,IAAIk3D,EAAWn2F,KAAK86C,GAAI,EAAGquE,IAIhC,IAAIp4F,EAAOmO,EAAEirF,WAAWlrF,GACxB,GAAa,IAATlO,EACH,OAAOq4F,EAEH,GAAIr4F,EAAO,EAAG,CAElB,IAAIjc,EAAImqB,EACRA,EAAIC,EACJA,EAAIpqB,CACJ,CAGD,IAMI5T,EACA2oH,EAPAxyG,EAAI6nB,EAAE4b,GACNxjC,EAAI2nB,EAAE6b,GACNmvE,EAAK5yG,EAAElW,OACP+oH,EAAK5yG,EAAEnW,OACP6gC,EAAO,IAAIhhC,MAAMipH,GACjBG,EAAS,EAIb,IAAKlpH,EAAI,EAAGA,EAAIgpH,EAAIhpH,KACnB2oH,EAAQxyG,EAAEnW,GAAKkpH,EAAS9yG,EAAEpW,IACd,GACX2oH,GAASR,EACTe,EAAS,GAGTA,EAAS,EAEVpoF,EAAK9gC,GAAK2oH,EAEX,IAAK3oH,EAAIgpH,EAAIhpH,EAAI+oH,EAAI/oH,IAAK,CAEzB,MADA2oH,EAAQxyG,EAAEnW,GAAKkpH,GACH,GAGP,CACJpoF,EAAK9gC,KAAO2oH,EACZ,KACA,CALAA,GAASR,EAMVrnF,EAAK9gC,GAAK2oH,CACV,CACD,KAAQ3oH,EAAI+oH,EAAI/oH,IACf8gC,EAAK9gC,GAAKmW,EAAEnW,GAGb,OAAO,IAAIi1F,EAAWn0D,EAAMjR,EAAMo4F,EAClC,EAED,WACC,SAASkB,EAAOprF,EAAGlO,GAMlB,IALA,IAAI1Z,EAAI4nB,EAAE6b,GACNi5C,EAAM18E,EAAEhT,QAERnD,EAAI,IAEK,CACZ,IAAI2oH,GAASxyG,EAAEnW,IAAM,GAAK,EAE1B,GADA6yF,EAAI7yF,GAAK2oH,EAAQR,EACbQ,GAASR,QACZ,QAECnoH,CACF,CAED,OAAO,IAAIi1F,EAAWpC,EAAKhjE,EAAMo4F,EACjC,CAED,SAASmB,EAAYrrF,EAAGlO,GAMvB,IALA,IAAI1Z,EAAI4nB,EAAE6b,GACNi5C,EAAM18E,EAAEhT,QAERnD,EAAI,IAEK,CACZ,IAAI2oH,GAASxyG,EAAEnW,IAAM,GAAK,EAC1B,KAAI2oH,EAAQ,GAGP,CACJ91B,EAAI7yF,GAAK2oH,EACT,KACA,CALA91B,EAAI7yF,GAAK2oH,EAAQR,IAMhBnoH,CACF,CAED,OAAO,IAAIi1F,EAAWpC,EAAKhjE,EAAMo4F,EACjC,CAcDhzB,EAAWx2F,UAAUgoC,KAAO,WAC3B,OAAQ3nC,KAAKg7C,IACb,KAAK,EACJ,OAAOuuE,EACR,KAAM,EACL,OAAOe,EAAYtqH,MAAO,GAE3B,QACC,OAAOqqH,EAAOrqH,KAAM,GAErB,EAcDm2F,EAAWx2F,UAAU4sB,KAAO,WAC3B,OAAQvsB,KAAKg7C,IACb,KAAK,EACJ,OAAOwuE,EACR,KAAM,EACL,OAAOa,EAAOrqH,MAAO,GAEtB,QACC,OAAOsqH,EAAYtqH,KAAM,GAE1B,CAtFF,IA2GAm2F,EAAWx2F,UAAUwqH,WAAa,SAASlrF,GAC1C,GAAIj/B,OAASi/B,EACZ,OAAO,EAGR,KAAMA,aAAak3D,GAAa,CAC/B,IAAKpnD,SAAS9P,GACb,OAAO4P,MAAM5P,GAAKA,GAAK,EAExBA,EAAIk3D,EAAWl3D,EACf,CAED,GAAgB,IAAZj/B,KAAKg7C,GACR,OAAiB,IAAT/b,EAAE+b,IAAa,EAAI,EAE5B,GAAa,IAAT/b,EAAE+b,GACL,OAAO,EAGR,IAAItd,EAAI19B,KAAK86C,GAAG35C,OACZopH,EAAKtrF,EAAE6b,GAAG35C,OACd,GAAIu8B,EAAI6sF,EACP,OAAQ,EAEJ,GAAI7sF,EAAI6sF,EACZ,OAAO,EAKR,IAFA,IAAIlzG,EAAIrX,KAAK86C,GACTxjC,EAAI2nB,EAAE6b,GACD55C,EAAIw8B,EAAE,EAAGx8B,GAAK,EAAGA,IACzB,GAAImW,EAAEnW,KAAOoW,EAAEpW,GACd,OAAOmW,EAAEnW,GAAKoW,EAAEpW,IAAM,EAAI,EAI5B,OAAO,CACP,EAkBDi1F,EAAWx2F,UAAUq9C,QAAU,SAAS/d,GACvC,OAAIj/B,OAASi/B,EACL,GAGRA,EAAIk3D,EAAWl3D,GAEC,IAAZj/B,KAAKg7C,IACA/b,EAAE+b,GAGPh7C,KAAKg7C,KAAO/b,EAAE+b,GACPh7C,KAAKmqH,WAAWlrF,GACbj/B,KAAKg7C,GAGXh7C,KAAKg7C,GAEb,EAeDm7C,EAAWx2F,UAAU6qH,OAAS,WAC7B,OAAOxqH,OAASupH,GACfvpH,OAASwpH,GACW,IAAnBxpH,KAAK86C,GAAG35C,QAA+B,IAAfnB,KAAK86C,GAAG,EAClC,EAmBDq7C,EAAWx2F,UAAUuzG,SAAW,SAASj0E,GAExC,GAAgB,IAAZj/B,KAAKg7C,GACR,OAAOouE,EAIR,GAAa,KADbnqF,EAAIk3D,EAAWl3D,IACT+b,GACL,OAAOouE,EAER,GAAIppH,KAAKwqH,SACR,OAAIxqH,KAAKg7C,GAAK,EACN/b,EAAE5qB,SAEH4qB,EAER,GAAIA,EAAEurF,SACL,OAAIvrF,EAAE+b,GAAK,EACHh7C,KAAKqU,SAENrU,KAER,GAAIA,OAASi/B,EACZ,OAAOj/B,KAAKyqH,SAGb,IAQIvpH,EARAkxB,EAAKpyB,KAAK86C,GAAG35C,QAAU89B,EAAE6b,GAAG35C,OAC5BkW,GAAK+a,EAAIpyB,KAAOi/B,GAAG6b,GACnBxjC,GAAK8a,EAAI6M,EAAIj/B,MAAM86C,GACnBmvE,EAAK5yG,EAAElW,OACP+oH,EAAK5yG,EAAEnW,OAEPupH,EAAKT,EAAKC,EACVr9F,EAAU,IAAI7rB,MAAM0pH,GAExB,IAAKxpH,EAAI,EAAGA,EAAIwpH,EAAIxpH,IACnB2rB,EAAQ3rB,GAAK,EAGd,IAAKA,EAAI,EAAGA,EAAIgpH,EAAIhpH,IAAK,CAKxB,IAJA,IAGI2oH,EAHAz1F,EAAQ,EACRu2F,EAAKrzG,EAAEpW,GACP0pH,EAASX,EAAK/oH,EAETyW,EAAIzW,EAAGyW,EAAIizG,EAAQjzG,IAE3Byc,GADAy1F,EAAQh9F,EAAQlV,GAAKgzG,EAAKtzG,EAAEM,EAAIzW,GAAKkzB,GACpBi1F,EAAmB,EACpCx8F,EAAQlV,GAAMkyG,EAAQR,EAAmB,EAEtCj1F,IAEHA,GADAy1F,EAAQh9F,EAAQlV,GAAKyc,GACJi1F,EAAmB,EACpCx8F,EAAQlV,GAAKkyG,EAAQR,EAEtB,CACD,OAAO,IAAIlzB,EAAWtpE,EAAS7sB,KAAKg7C,GAAK/b,EAAE+b,GAAImuE,EAC/C,EAKDhzB,EAAWx2F,UAAUkrH,oBAAsB,SAAS5rF,GACnD,GAAU,IAANA,GAAuB,IAAZj/B,KAAKg7C,GACnB,OAAOouE,EAER,GAAU,IAANnqF,EACH,OAAOj/B,KAGR,IAAI6pH,EACJ,GAAuB,IAAnB7pH,KAAK86C,GAAG35C,OAEX,OACQ,IAAIg1F,GAFZ0zB,EAAQ7pH,KAAK86C,GAAG,GAAK7b,IACRoqF,EACU,CAAEQ,EAAQR,EAAiB,EAC9CQ,EAAQR,EAAiB,GAEP,CAACQ,GAFU,EAAGV,GAKrC,GAAU,IAANlqF,EACH,OAAOj/B,KAAK4F,IAAI5F,MAEjB,GAAIA,KAAKwqH,SACR,OAAO,IAAIr0B,EAAW,CAACl3D,GAAI,EAAGkqF,GAQ/B,IALA,IAAI9xG,EAAIrX,KAAK86C,GACTmvE,EAAK5yG,EAAElW,OAEPupH,EAAKT,EAAK,EACVp9F,EAAU,IAAI7rB,MAAM0pH,GACfxpH,EAAI,EAAGA,EAAIwpH,EAAIxpH,IACvB2rB,EAAQ3rB,GAAK,EAId,IADA,IAAIkzB,EAAQ,EACHzc,EAAI,EAAGA,EAAIsyG,EAAItyG,IAEvByc,GADAy1F,EAAQ5qF,EAAI5nB,EAAEM,GAAKyc,GACFi1F,EAAmB,EACpCx8F,EAAQlV,GAAMkyG,EAAQR,EAAmB,EAM1C,OAJIj1F,IACHvH,EAAQlV,GAAKyc,GAGP,IAAI+hE,EAAWtpE,EAAS,EAAGs8F,EAClC,EAgBDhzB,EAAWx2F,UAAU8qH,OAAS,WAM7B,GAAgB,IAAZzqH,KAAKg7C,GACR,OAAOouE,EAER,GAAIppH,KAAKwqH,SACR,OAAOjB,EAGR,IAGIuB,EAAS12F,EAAO5gB,EAChBtS,EAJAmxF,EAASryF,KAAK86C,GACd35C,EAASkxF,EAAOlxF,OAChB4pH,EAAS,IAAI/pH,MAAMG,EAASA,EAAS,GAKzC,IAAKD,EAAI,EAAGA,EAAIC,EAAQD,IACvBsS,EAAQ,EAAJtS,EAEJkzB,GADA02F,EAAUz4B,EAAOnxF,GAAKmxF,EAAOnxF,IACVmoH,EAAmB,EACtC0B,EAAOv3G,GAAKs3G,EAAUzB,EACtB0B,EAAOv3G,EAAI,GAAK4gB,EAIjB,IAAKlzB,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC5BkzB,EAAQ,EACR5gB,EAAQ,EAAJtS,EAAQ,EACZ,IAAK,IAAIyW,EAAIzW,EAAI,EAAGyW,EAAIxW,EAAQwW,IAAKnE,IAEpC4gB,GADA02F,EAAUz4B,EAAO16E,GAAK06E,EAAOnxF,GAAK,EAAI6pH,EAAOv3G,GAAK4gB,GAC/Bi1F,EAAmB,EACtC0B,EAAOv3G,GAAKs3G,EAAUzB,EAGvB,IAAIQ,EAAQz1F,EAAQ22F,EADpBv3G,EAAIrS,EAASD,GAEbkzB,EAASy1F,EAAQR,EAAmB,EACpC0B,EAAOv3G,GAAKq2G,EAAQR,EACpB0B,EAAOv3G,EAAI,IAAM4gB,CACjB,CAED,OAAO,IAAI+hE,EAAW40B,EAAQ,EAAG5B,EACjC,EAoBDhzB,EAAWx2F,UAAUqrH,SAAW,SAAS/rF,GACxC,OAAOj/B,KAAKuzG,OAAOt0E,GAAG,EACtB,EAMDk3D,EAAWx2F,UAAUyzG,OAASjd,EAAWx2F,UAAUqrH,SAqBnD70B,EAAWx2F,UAAUsrH,UAAY,SAAShsF,GACzC,OAAOj/B,KAAKuzG,OAAOt0E,GAAG,EACtB,EA4BDk3D,EAAWx2F,UAAU4zG,OAAS,SAASt0E,GAEtC,GAAa,KADbA,EAAIk3D,EAAWl3D,IACT+b,GACL,MAAM,IAAI96C,MAAM,kBAEjB,GAAgB,IAAZF,KAAKg7C,GACR,MAAO,CAACouE,EAAMA,GAEf,GAAoB,IAAhBnqF,EAAE6b,GAAG35C,OACR,OAAOnB,KAAKkrH,YAAYjsF,EAAE+b,GAAK/b,EAAE6b,GAAG,IAIrC,OAAQ96C,KAAKmqH,WAAWlrF,IACxB,KAAK,EACJ,MAAO,CAACj/B,KAAKg7C,KAAO/b,EAAE+b,GAAKuuE,EAAMC,EAAOJ,GACzC,KAAM,EACL,MAAO,CAACA,EAAMppH,MAaf,IAVA,IAMImrH,EANAp6F,EAAO/wB,KAAKg7C,GAAK/b,EAAE+b,GACnB3jC,EAAI4nB,EAAEhJ,MACNm1F,EAAWprH,KAAK86C,GAChBuwE,EAAUD,EAASjqH,OAEnBmqH,GADSrsF,EAAE6b,GAAG35C,OACP,IAGPkR,EAAO,IAAI8jF,EAAW,GAAI,EAAGgzB,GAE1BkC,GAIN,GAHAh5G,EAAKyoC,GAAG9pB,QAAQo6F,IAAWC,KAC3Bh5G,EAAO,IAAI8jF,EAAW9jF,EAAKyoC,GAAI,EAAGquE,IAEzBgB,WAAWlrF,GAAK,EACxBqsF,EAAK73G,KAAK,OADX,CAIA,GAAgB,IAAZpB,EAAK2oC,GACRmwE,EAAQ,MAEJ,CACJ,IAAII,EAAOl5G,EAAKyoC,GAAG35C,OAAQqqH,EAAOn0G,EAAEyjC,GAAG35C,OACnCsqH,EAAQp5G,EAAKyoC,GAAGywE,EAAK,GAAGlC,EAAkBh3G,EAAKyoC,GAAGywE,EAAK,GACvDG,EAAQr0G,EAAEyjC,GAAG0wE,EAAK,GAAGnC,EAAkBhyG,EAAEyjC,GAAG0wE,EAAK,GACjDn5G,EAAKyoC,GAAG35C,OAASkW,EAAEyjC,GAAG35C,SAGzBsqH,GAASA,EAAM,GAAGpC,GAEnB8B,EAAQ1wG,KAAKsY,KAAK04F,EAAMC,EACxB,CACD,EAAG,CACF,IAAI/8E,EAAQt3B,EAAEwzG,oBAAoBM,GAClC,GAAIx8E,EAAMw7E,WAAW93G,IAAS,EAC7B,MAED84G,GACA,OAAQA,GAGT,GADAG,EAAK73G,KAAK03G,GACLA,EAAL,CAGA,IAAInpF,EAAO3vB,EAAK23G,SAASr7E,GACzBt8B,EAAKyoC,GAAK9Y,EAAK8Y,GAAGz2C,OAFjB,CA1BA,CA+BF,MAAO,CAAC,IAAI8xF,EAAWm1B,EAAKv+F,UAAWgE,EAAMo4F,GACzC,IAAIhzB,EAAW9jF,EAAKyoC,GAAI96C,KAAKg7C,GAAImuE,GACrC,EAKDhzB,EAAWx2F,UAAUurH,YAAc,SAASjsF,GAC3C,IAAI7M,EAEJ,GAAU,IADV6M,GAAKA,GAEJ,MAAM,IAAI/+B,MAAM,kBAGjB,IAAIyrH,EAAM1sF,EAAI,GAAK,EAAI,EACnBlO,EAAO/wB,KAAKg7C,GAAK2wE,EAGrB,IAFA1sF,EAAIxkB,KAAKwb,IAAIgJ,IAEL,GAAKA,GAAKoqF,EACjB,MAAM,IAAInpH,MAAM,yBAGjB,GAAgB,IAAZF,KAAKg7C,GACR,MAAO,CAACouE,EAAMA,GAGf,GAAU,IAANnqF,IAAkB,IAAPA,EACd,MAAO,CAAW,IAATlO,EAAc/wB,KAAKi2B,MAAQ,IAAIkgE,EAAWn2F,KAAK86C,GAAI/pB,EAAMo4F,GAAYC,GAM/E,GAAuB,IAAnBppH,KAAK86C,GAAG35C,OAAc,CACzB,IAAIm0B,EAAI,IAAI6gE,EAAW,CAAEn2F,KAAK86C,GAAG,GAAK7b,EAAK,GAAI,EAAGkqF,GAQlD,OAPA/2F,EAAI,IAAI+jE,EAAW,CAAEn2F,KAAK86C,GAAG,GAAK7b,EAAK,GAAI,EAAGkqF,GAC1Cp4F,EAAO,IACVuE,EAAIA,EAAEjhB,UAEHrU,KAAKg7C,GAAK,IACb5oB,EAAIA,EAAE/d,UAEA,CAACihB,EAAGlD,EACX,CASD,IAPA,IAKI+4F,EALA94B,EAASryF,KAAK86C,GAAGz2C,QACjBinH,EAAO,IAAItqH,MAAMqxF,EAAOlxF,QACxBkR,EAAO,EACP2vB,EAAO,EACP9gC,EAAI,EAGDmxF,EAAOlxF,SACbkR,EAAOA,EAAOg3G,EAAkBh3B,EAAOA,EAAOlxF,OAAS,IAC5C89B,GACVqsF,EAAKpqH,KAAO,EACZmxF,EAAO93E,MACPynB,EAAOqnF,EAAkBrnF,EAAO3vB,IAWjC2vB,EAAO3vB,EADK4sB,GANXksF,EADY,IAAT94G,EACK,EAGCA,EAAO4sB,EAAK,GAKtBqsF,EAAKpqH,KAAOiqH,EACPA,GAKL94B,EAAO93E,MACPlI,EAAO2vB,GALNqwD,EAAO93E,OAYT,OAJA6X,EAAI,IAAI+jE,EAAW,CAACn0D,GAAO,EAAGmnF,GAC1BnpH,KAAKg7C,GAAK,IACb5oB,EAAIA,EAAE/d,UAEA,CAAC,IAAI8hF,EAAWm1B,EAAKv+F,UAAWgE,EAAMo4F,GAAY/2F,EACzD,EAgBD+jE,EAAWx2F,UAAUujC,OAAS,WAC7B,IAAImvD,EAASryF,KAAK86C,GAClB,OAAmB,IAAZ96C,KAAKg7C,IAA8B,IAAlBq3C,EAAOlxF,QAAiBkxF,EAAO,GAAK,GAAO,CACnE,EAcD8D,EAAWx2F,UAAU2jC,MAAQ,WAC5B,OAAQtjC,KAAKkjC,QACb,EAgBDizD,EAAWx2F,UAAUoxB,KAAO,WAC3B,OAAO/wB,KAAKg7C,EACZ,EAcDm7C,EAAWx2F,UAAUisH,WAAa,WACjC,OAAO5rH,KAAKg7C,GAAK,CACjB,EAcDm7C,EAAWx2F,UAAUksH,WAAa,WACjC,OAAO7rH,KAAKg7C,GAAK,CACjB,EAcDm7C,EAAWx2F,UAAUg1B,OAAS,WAC7B,OAAmB,IAAZ30B,KAAKg7C,EACZ,EA6BDm7C,EAAWx2F,UAAUmsH,MAAQ,SAAS7sF,GAErC,GAAU,IADVA,GAAKA,GAEJ,OAAOj/B,KAER,GAAIya,KAAKwb,IAAIgJ,GAAK0c,OAAOowE,GACxB,MAAM,IAAI7rH,MAAM,0CAGjB,GAAgB,IAAZF,KAAKg7C,GACR,OAAOouE,EAER,GAAInqF,EAAI,EAAG,CAGV,IAFA,IAAIzrB,EAAI,IAAI2iF,EAAWn2F,KAAK86C,GAAGz2C,QAASrE,KAAKg7C,GAAImuE,GAE1ClqF,GA7uCmB,EA6uCSA,GA7uCT,EA8uCzBzrB,EAAEsnC,GAAG9pB,QAAQ,GAEd,OAAS,GAALiO,EACIzrB,GACRA,EAAEwnC,GAAK,EACPxnC,EAAIA,EAAEq3G,oBAAoBpwG,KAAKiZ,IAAI,GAAIuL,IAC/Bj/B,KAAKg7C,GAAK,EAAIxnC,EAAEa,SAAWb,EACnC,CAAM,IAAKyrB,GArvCe,EAqvCVj/B,KAAK86C,GAAG35C,OACxB,OAAOioH,EAIP,IAFI51G,EAAI,IAAI2iF,EAAWn2F,KAAK86C,GAAGz2C,QAASrE,KAAKg7C,GAAImuE,GAE5ClqF,GAAKA,EAAGA,GA1vCa,EA0vCeA,GA1vCf,EA2vCzBzrB,EAAEsnC,GAAGjZ,QAEN,OAAa,GAAL5C,EAAUzrB,EAAIA,EAAE03G,YAAYzwG,KAAKiZ,IAAI,GAAIuL,IAAI,EAEtD,EAqBDk3D,EAAWx2F,UAAU+zB,IAAM,SAASuL,GACnC,GAAIj/B,KAAKwqH,SACR,OAAIxqH,KAAKg7C,GAAK,GAINm7C,EAAWl3D,GAAGqE,QAHdtjC,KAG+BA,KAAKqU,SAK7C,GAAa,KADb4qB,EAAIk3D,EAAWl3D,IACT+b,GACL,OAAOuuE,EAEH,GAAItqF,EAAE+b,GAAK,EAAG,CAClB,GAAgB,IAAZh7C,KAAKg7C,GACR,MAAM,IAAI96C,MAAM,kBAGhB,OAAOkpH,CAER,CACD,GAAgB,IAAZppH,KAAKg7C,GACR,OAAOouE,EAER,GAAInqF,EAAEurF,SACL,OAAOxqH,KAGR,GAAIi/B,EAAEkrF,WAAW4B,GAAW,EAC3B,MAAM,IAAI7rH,MAAM,wCAMjB,IAJA,IAAIi9B,EAAIn9B,KACJgsH,EAAMzC,EACNx5F,EAAMomE,EAAWwzB,MAAM,GAEpB1qF,EAAE2sF,cAAc,CACtB,GAAI3sF,EAAEqE,UACL0oF,EAAMA,EAAI9Y,SAAS/1E,GACf8B,EAAEurF,UACL,OAAOwB,EAGT7uF,EAAIA,EAAEstF,SACNxrF,EAAIA,EAAE+rF,SAASj7F,EACf,CAED,OAAOi8F,CACP,EAsBD71B,EAAWx2F,UAAUssH,OAAS,SAASC,EAAUC,GAIhD,IAHA,IAAI7mH,EAASikH,EACTzkG,EAAO9kB,KAEJksH,EAASN,cACXM,EAAS5oF,UACZh+B,EAASA,EAAO4tG,SAASpuF,GAAMmmG,UAAUkB,KAG1CD,EAAWA,EAASlB,SAAS70B,EAAWwzB,MAAM,KACjCiC,eACZ9mG,EAAOA,EAAK2lG,SAASQ,UAAUkB,IAIjC,OAAO7mH,CACP,EAoBD6wF,EAAWx2F,UAAU+G,IAAM,WAC1B,OAAQ1G,KAAKg7C,IACb,KAAK,EAAI,OAAO,IAChB,KAAM,EAAG,OAAOoxE,IAIhB,IAAI1uF,EAAI19B,KAAK86C,GAAG35C,OAEhB,GAv4C2B,EAu4CvBu8B,EAA0B,GAC7B,OAAOjjB,KAAK/T,IAAI1G,KAAKk+C,WAGtB,IAAIzgB,EAAIhjB,KAAKsY,KAAK,GA34CS,GA44CvBs5F,EAAersH,KAAK86C,GAAGz2C,MAAMq5B,EAAID,GACrC,OAAOhjB,KAAK/T,IAAK,IAAIyvF,EAAWk2B,EAAc,EAAGlD,GAAYjrE,YAAcxgB,EAAID,GAAKhjB,KAAK/T,IAAI2iH,EAC7F,EAiBDlzB,EAAWx2F,UAAUu+C,QAAU,WAC9B,OAAO9Q,SAASptC,KAAKuuB,WAAY,GACjC,EAgBD4nE,EAAWx2F,UAAU6zG,UAAY,WAChC,OAAOpmE,SAASptC,KAAKuuB,WAAY,GACjC,EAMD4nE,EAAWx2F,UAAU2sH,OAAS,WAC7B,OAAOtsH,KAAK86C,GAAG,IAAM,CACrB,EAED,IAAIixE,EAAU51B,EAAW,YAGzBA,EAAW41B,QAAUA,EAErB,WACC,SAASQ,EAAUt7E,GAClB,OAAO,SAAS55B,GACf,OAAO45B,EAAGruC,KAAKuzF,EAAW9+E,GAC1B,CACD,CAED,SAASm1G,EAAWv7E,GACnB,OAAO,SAAS55B,EAAGC,GAClB,OAAO25B,EAAGruC,KAAKuzF,EAAW9+E,GAAI8+E,EAAW7+E,GACzC,CACD,CAED,SAASm1G,EAAYx7E,GACpB,OAAO,SAAS55B,EAAGC,EAAGnK,GACrB,OAAO8jC,EAAGruC,KAAKuzF,EAAW9+E,GAAI8+E,EAAW7+E,GAAI6+E,EAAWhpF,GACxD,CACD,EAED,WACC,IAAIjM,EAAG+vC,EACHy7E,EAAQ,2GAA2GngH,MAAM,KACzHyzD,EAAS,gFAAgFzzD,MAAM,KAC/FogH,EAAU,CAAC,UAEf,IAAKzrH,EAAI,EAAGA,EAAIwrH,EAAMvrH,OAAQD,IAE7Bi1F,EADAllD,EAAKy7E,EAAMxrH,IACMqrH,EAAUp2B,EAAWx2F,UAAUsxC,IAGjD,IAAK/vC,EAAI,EAAGA,EAAI8+D,EAAO7+D,OAAQD,IAE9Bi1F,EADAllD,EAAK+uB,EAAO9+D,IACKsrH,EAAWr2B,EAAWx2F,UAAUsxC,IAGlD,IAAK/vC,EAAI,EAAGA,EAAIyrH,EAAQxrH,OAAQD,IAE/Bi1F,EADAllD,EAAK07E,EAAQzrH,IACIurH,EAAYt2B,EAAWx2F,UAAUsxC,IAGnDklD,EAAW21B,MAAQ,SAAS3uF,EAAG8B,GAC9B,OAAOk3D,EAAWh5D,GAAG2uF,MAAM7sF,EAC3B,CAvBF,GAnBD,IA8CAx/B,EAAQ02F,WAAaA,CAxkDrB,EAykDoC12F,oBCnmDpC,MAAM42F,EAAc3xC,EAAQ,OAssB5BllD,EAAOC,QAzqBP,MAOmB,kBAACwqG,GAChB,MAAM,IAAI5T,EAAY,0BACvB,CAOmB,qBAAC4T,GACnB,MAAM,IAAI5T,EAAY,0BACvB,CAOD8W,eACE,MAAM,IAAI9W,EAAY,0BACvB,CAOgB,oBACf,MAAM,IAAIA,EAAY,0BACvB,CAOe,mBACd,MAAM,IAAIA,EAAY,0BACvB,CAOc,kBACb,MAAM,IAAIA,EAAY,0BACvB,CAOc,kBACb,MAAM,IAAIA,EAAY,0BACvB,CAQiB,mBAAC6J,GACjB,MAAM,IAAI7J,EAAY,0BACvB,CASqB,uBAACof,EAAeC,GACpC,MAAM,IAAIrf,EAAY,0BACvB,CAOuB,2BACtB,MAAM,IAAIA,EAAY,0BACvB,CAQyB,2BAACmgB,GACzB,MAAM,IAAIngB,EAAY,0BACvB,CAQ2B,6BAAC6J,GAC3B,MAAM,IAAI7J,EAAY,0BACvB,CAS2B,6BAAC8f,EAAaC,GACxC,MAAM,IAAI/f,EAAY,0BACvB,CAQmB,qBAACmgB,GACnB,MAAM,IAAIngB,EAAY,0BACvB,CAYoB,sBAACsgB,EAAaR,EAAaj4C,GAC9C,MAAM,IAAIm4B,EAAY,0BACvB,CAQqB,uBAAC6J,GACrB,MAAM,IAAI7J,EAAY,0BACvB,CAQsB,wBAAC6gB,GACtB,MAAM,IAAI7gB,EAAY,0BACvB,CASqB,uBAAC8f,EAAaC,GAClC,MAAM,IAAI/f,EAAY,0BACvB,CAW4B,8BAAC8f,EAAaC,EAAWmB,GACpD,MAAM,IAAIlhB,EAAY,0BACvB,CAWmB,qBAACsgB,EAAaR,GAChC,MAAM,IAAI9f,EAAY,0BACvB,CASU,YAACsuB,EAAQzmD,GAAQ,GAC1B,aAAcl+D,KAAK63G,OAAO,CAAC8M,GAASzmD,IAAQ,EAC7C,CASW,aAACy5C,EAAUz5C,GAAQ,GAC7B,MAAM,IAAIm4B,EAAY,0BACvB,CASa,eAACsuB,EAAQzmD,GAAQ,GAC7B,aAAcl+D,KAAKm4G,WAAW,CAACwM,GAASzmD,IAAQ,EACjD,CASe,iBAACy5C,EAAUz5C,GAAQ,GACjC,MAAM,IAAIm4B,EAAY,0BACvB,CASkB,oBAAC6J,EAAQmY,GAC1B,MAAM,IAAIhiB,EAAY,0BACvB,CAQmB,qBAACmiB,GACnB,MAAM,IAAIniB,EAAY,0BACvB,CASgB,kBAACsiB,EAAOC,GACvB,MAAM,IAAIviB,EAAY,0BACvB,CAOkB,oBAACsuB,GACHjgE,EAAQ,OAChB73C,aAAa83G,EAAQ,SAAU,yCAChC3kH,KAAK+4G,eAAe,CAAC4L,GAC5B,CAOmB,qBAAChN,GACnB,MAAM,IAAIthB,EAAY,0BACvB,CAQc,kBACb,MAAM,IAAIA,EAAY,0BACvB,CAOoB,wBACnB,MAAM,IAAIA,EAAY,0BACvB,CAOqB,yBACpB,MAAM,IAAIA,EAAY,0BACvB,CAOmB,uBAClB,MAAM,IAAIA,EAAY,0BACvB,CAOgB,kBAACkjB,GAChB,MAAM,IAAIljB,EAAY,0BACvB,CAQ2B,6BAAC0sB,GAC3B,aAAc/iH,KAAK25G,yBAAyB,CAACoJ,KAAY,EAC1D,CAQ6B,+BAACrJ,GAC7B,MAAM,IAAIrjB,EAAY,0BACvB,CASe,iBAACosB,GACf,MAAM,IAAIpsB,EAAY,0BACvB,CAcuB,yBAACwjB,EAASC,EAAUvhE,EAAUwhE,EAAYC,GAChE,MAAM,IAAI3jB,EAAY,0BACvB,CAW0B,4BAACwjB,EAAS+S,EAAYzW,EAAaC,GAC5D,MAAM,IAAI/f,EAAY,0BACvB,CAOY,gBACX,MAAM,IAAIA,EAAY,0BACvB,CAOgB,oBACf,MAAM,IAAIA,EAAY,0BACvB,CAOoB,wBACnB,MAAM,IAAIA,EAAY,0BACvB,CAOiB,qBAChB,MAAM,IAAIA,EAAY,0BACvB,CAOsB,0BACrB,MAAM,IAAIA,EAAY,0BACvB,CAOqB,yBACpB,MAAM,IAAIA,EAAY,0BACvB,CAQqB,uBAAC7jF,GACrB,MAAM,IAAI6jF,EAAY,0BACvB,CAOuB,2BACtB,MAAM,IAAIA,EAAY,0BACvB,CAOmB,uBAClB,MAAM,IAAIA,EAAY,0BACvB,CAQmB,qBAAC7jF,GACnB,MAAM,IAAI6jF,EAAY,0BACvB,CAOqB,yBACpB,MAAM,IAAIA,EAAY,0BACvB,CAOa,iBACZ,MAAM,IAAIA,EAAY,0BACvB,CAOkB,sBACjB,MAAM,IAAIA,EAAY,0BACvB,CAOyB,2BAAC7jF,GACzB,MAAM,IAAI6jF,EAAY,0BACvB,CAOyB,2BAAC7jF,GACzB,MAAM,IAAI6jF,EAAY,0BACvB,CAOgB,oBACf,MAAM,IAAIA,EAAY,0BACvB,CAOe,iBAACmmB,GACf,aAAax8G,KAAK68G,YAAY,CAACL,GAChC,CAOgB,kBAACG,GAChB,MAAM,IAAItmB,EAAY,0BACvB,CAUgB,kBAAC3mB,EAASqtC,EAAYC,EAAcC,GACnD,MAAM,IAAI5mB,EAAY,0BACvB,CAKe,mBACd,MAAM,IAAIA,EAAY,0BACvB,CAOoB,wBACnB,MAAM,IAAIA,EAAY,0BACvB,CAOgB,kBAACw2B,SACV7sH,KAAK8sH,aAAa,CAACD,GAC1B,CAQoB,sBAACl+E,GACpB,MAAM,IAAI0nD,EAAY,0BACvB,CAOiB,mBAAC02B,GACjB,MAAM,IAAI12B,EAAY,0BACvB,CAOmB,uBAClB,MAAM,IAAIA,EAAY,0BACvB,CAQmB,qBAACnsE,GACnB,MAAM,IAAImsE,EAAY,0BACvB,CAKS,aACR,MAAM,IAAIA,EAAY,0BACvB,CAO2B,+BAC1B,MAAM,IAAIA,EAAY,0BACvB,CAUsB,wBAAC22B,GACtB,MAAMn1B,EAAoBnzC,EAAQ,OAClC,GAAgB,YAAZsoE,EAAuB,OAAOn1B,EAAkBo1B,QACpD,GAAgB,YAAZD,EAAuB,OAAOn1B,EAAkBq1B,QACpD,GAAgB,aAAZF,EAAwB,OAAOn1B,EAAkBs1B,SACrD,MAAM,IAAI92B,EAAY,kCAAoC22B,EAC3D,oBCnsBH,MAAM3lG,EAASq9B,EAAQ,OACjByxC,EAAazxC,EAAAA,OAAAA,WACbsrC,EAAWtrC,EAAQ,OACnBqrC,EAAerrC,EAAQ,OACvB+xC,EAAa/xC,EAAQ,OACrBkyC,EAAiBlyC,EAAQ,OACzBmyC,EAAYnyC,EAAQ,MACpBqyC,EAAcryC,EAAQ,OACtBoyC,EAAoBpyC,EAAQ,OAC5BsyC,EAAsBtyC,EAAQ,OAC9B41C,EAAe51C,EAAQ,OACvBwyC,EAAmBxyC,EAAQ,OAC3ByyC,EAAuBzyC,EAAQ,MAC/B0yC,EAAuB1yC,EAAQ,MAC/B2xC,EAAc3xC,EAAQ,OACtB6yC,EAAoB7yC,EAAQ,OAC5B8yC,EAAqB9yC,EAAQ,OAC7B+yC,EAAiB/yC,EAAQ,OACzBizC,EAAmBjzC,EAAQ,OAC3BkzC,EAAqBlzC,EAAQ,OAC7BmzC,EAAoBnzC,EAAQ,OAC5BozC,EAAepzC,EAAQ,OACvBqzC,EAA6BrzC,EAAQ,OACrC2zC,EAAa3zC,EAAQ,OACrBszC,EAAoBtzC,EAAQ,OAC5B4xC,EAAsB5xC,EAAQ,OAC9BuzC,EAAuBvzC,EAAQ,OAC/BwzC,EAAWxzC,EAAQ,MACnByzC,EAAoBzzC,EAAQ,OAC5B21C,EAAc31C,EAAQ,OACtB0zC,EAAgB1zC,EAAQ,OA8B9B,MAAM81C,UAAwBF,EAiB5BpwF,YAAYkjH,EAAa39B,EAAUC,EAAUY,EAAoB+8B,EAAcjqB,GAE7E,GADA2K,QACI/d,EAAS/uF,QAAQmsH,GAAc,MAAM,IAAIltH,MAAM,mEAEnD,GADAF,KAAKmiG,OAAS3H,EAAgB8yB,iBAAiBF,EAAa39B,EAAUC,EAAUY,EAAoB+8B,EAAcjqB,GAC9GpjG,KAAKmiG,OAAOiB,cAAe,MAAM,IAAIljG,MAAM,2DAC/C,IAAIqtH,EAAYvjH,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKmiG,eAChCorB,EAAUnqB,qBACVmqB,EAAUF,aACjBrtH,KAAKwtH,IAAM,IAAIl3B,EAAoBi3B,GACnCvtH,KAAK6oD,UAAY,GACjB7oD,KAAKytH,cAAgB,CAAC,CACvB,CAmB+B,iCAACL,EAAa39B,EAAUC,EAAUY,EAAoB+8B,EAAcjqB,GAClG,GAAIpT,EAAS/uF,QAAQmsH,GAAc,OAAO5yB,EAAgBkzB,qBAAqBN,EAAa98B,EAAoB+8B,EAAcjqB,GAC9H,IAAIjB,EAAS3H,EAAgB8yB,iBAAiBF,EAAa39B,EAAUC,EAAUY,EAAoB+8B,EAAcjqB,GACjH,OAAIjB,EAAOiB,cAAsBuqB,EAAqBC,QAAQzrB,GAClD,IAAI3H,EAAgB2H,EACjC,CAEgC,kCAAC1rB,EAAK6Z,EAAoB+8B,EAAcjqB,GASvE,IAAIp3F,EARJqb,EAAO2oE,EAAS/uF,QAAQw1E,GAAM,0DAG9Bz2E,KAAKovC,QAAUsV,EAAAA,OAAAA,MAA+B+xB,EAAI,GAAIA,EAAIpyE,MAAM,GAAI,CAAC,GACrErE,KAAKovC,QAAQy+E,OAAOC,YAAY,QAChC9tH,KAAKovC,QAAQsI,OAAOo2E,YAAY,QAIhC,IAAIxrE,EAAOtiD,KACPynC,EAAS,GACb,OAAO,IAAIp+B,SAAQ,SAASrK,EAAS40D,GAGnCtR,EAAKlT,QAAQy+E,OAAO5qB,GAAG,QAAQ5qF,eAAevY,GAC5C,IAAI2jF,EAAO3jF,EAAKyuB,WAChBwhE,EAAarpF,IAAI,EAAG+8E,GACpBh8C,GAAUg8C,EAAO,KAGjB,IAAIsqC,EAAkB,cAClBC,EAAqBvqC,EAAKnlE,QAAQyvG,GACtC,GAAIC,GAAsB,EAAG,CAC3B,IAAIzzD,EAAOkpB,EAAKptC,UAAU23E,EAAqBD,EAAgB5sH,OAAQsiF,EAAKhjB,YAAY,MACpFwtD,EAAkBxqC,EAAK1wE,QAAQ,gBAAiB,IAAI44C,OACpDgP,EAAOszD,EAAgB53E,UAAU43E,EAAgBxtD,YAAY,KAAO,GACpEytD,EAASz3C,EAAIn4D,QAAQ,aACrB6vG,EAAaD,GAAU,GAAI,WAAaz3C,EAAIy3C,EAAS,GAAGj1D,cAC5DjtD,GAAOmiH,EAAa,QAAU,QAAU,MAAQ5zD,EAAO,IAAMI,CAC9D,CAGD,GAAI8oB,EAAKnlE,QAAQ,+BAAiC,EAAG,CAGnD,IAAI8vG,EAAc33C,EAAIn4D,QAAQ,eAC1B+vG,EAAWD,GAAe,EAAI33C,EAAI23C,EAAc,QAAKxtH,EACrD6uF,OAAwB7uF,IAAbytH,OAAyBztH,EAAYytH,EAASh4E,UAAU,EAAGg4E,EAAS/vG,QAAQ,MACvFoxE,OAAwB9uF,IAAbytH,OAAyBztH,EAAYytH,EAASh4E,UAAUg4E,EAAS/vG,QAAQ,KAAO,GAG3FgwG,QAAehsE,EAAKw4C,oBAAoB9uF,EAAKyjF,EAAUC,EAAUY,EAAoB+8B,EAAcjqB,GACvGkrB,EAAOl/E,QAAUkT,EAAKlT,QAGtBpvC,KAAKuuH,YAAa,EAClBvvH,EAAQsvH,EACT,CACF,IAGDhsE,EAAKlT,QAAQsI,OAAOurD,GAAG,QAAQ,SAASnjG,GAClCiwF,EAAa0f,eAAiB,GAAG7oG,QAAQrE,MAAMzC,EACpD,IAGDwiD,EAAKlT,QAAQ6zD,GAAG,QAAQ,SAASp1F,GAC1B7N,KAAKuuH,YAAY36D,EAAO,IAAI1zD,MAAM,6CAA+C2N,GAAQ45B,EAAS,QAAUA,EAAS,KAC3H,IAGD6a,EAAKlT,QAAQ6zD,GAAG,SAAS,SAASx2E,GAC5BA,EAAIpqB,QAAQic,QAAQ,WAAa,GAAGs1C,EAAO,IAAI1zD,MAAM,mCAAqCu2E,EAAI,GAAK,MAClGz2E,KAAKuuH,YAAY36D,EAAOnnC,EAC9B,IAGD61B,EAAKlT,QAAQ6zD,GAAG,qBAAqB,SAASx2E,EAAK+hG,GACjD5nH,QAAQrE,MAAM,0CAA4CkqB,EAAIpqB,SAC9DuE,QAAQrE,MAAMisH,GACd56D,EAAOnnC,EACR,GACF,GACF,CAODgiG,aACE,OAAOzuH,KAAKovC,OACb,CAQgB,kBAACs/E,GAChB,QAAqB9tH,IAAjBZ,KAAKovC,QAAuB,MAAM,IAAIinD,EAAY,yDACtD,IAAIs4B,EAAgB3+B,EAAS+a,UAAU/qG,KAAKmtG,gBAC5C,IAAK,IAAIlD,KAAY0kB,QAAqB3uH,KAAKkqG,eAAeD,GAC9D,OAAOja,EAAS4+B,YAAY5uH,KAAKovC,QAASs/E,EAAQ,eAAY9tH,EAC/D,CAEgB,kBAACqpG,GAChB5iF,EAAO4iF,aAAoB9S,EAAsB,qDACjDn3F,KAAK6oD,UAAUp1C,KAAKw2F,GACpBjqG,KAAK6uH,mBACN,CAEmB,qBAAC5kB,GACnB5iF,EAAO4iF,aAAoB9S,EAAsB,qDACjD,IAAIr2C,EAAM9gD,KAAK6oD,UAAUvqC,QAAQ2rF,GACjC,KAAInpD,GAAO,GACN,MAAM,IAAIu1C,EAAY,0CADbr2F,KAAK6oD,UAAU37C,OAAO4zC,EAAK,GAEzC9gD,KAAK6uH,mBACN,CAED1hB,eACE,OAAOntG,KAAK6oD,SACb,CAOqB,yBACpB,OAAO7oD,KAAKwtH,GACb,CAEgB,oBACf,IAEE,aADMxtH,KAAK46F,cACJ,CAGR,CAFC,MAAOz2F,GACP,OAAO,CACR,CACF,CAEe,mBACd,IAAIusF,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,eAE1C,OADA7U,EAAgBs0B,qBAAqBp+B,EAAKprF,QACnC,IAAI8yF,EAAc1H,EAAKprF,OAAOqiG,QAASjX,EAAKprF,OAAOypH,QAC3D,CAEc,kBACb,IAAIr+B,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,cAE1C,OADAx0B,EAAgBs0B,qBAAqBp+B,IAC7BA,EAAKu+B,SACd,CAEc,kBACb,IAAIv+B,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,mBAE1C,OADA7U,EAAgBs0B,qBAAqBp+B,EAAKprF,QACnCorF,EAAKprF,OAAOsN,KACpB,CAEiB,mBAACstF,GACjB,aAAclgG,KAAKwtH,IAAIne,gBAAgB,oBAAqB,CAACnP,KAAU56F,MACxE,CAEqB,uBAACmwG,EAAeC,GACpCruF,EAAOouF,GAA0C,iBAAlBA,EAA4B,8CAC3D,IAAI/kB,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,qBAAsB,CAAC6f,eAAgBzZ,EAAe0Z,aAAczZ,IAE9G,OADAlb,EAAgBs0B,qBAAqBp+B,EAAKprF,QACnCk1F,EAAgB40B,yBAAyB1+B,EAAKprF,OACtD,CAEuB,2BACtB,IAAIorF,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,yBAE1C,OADA7U,EAAgBs0B,qBAAqBp+B,EAAKprF,QACnCk1F,EAAgB60B,uBAAuB3+B,EAAKprF,OAAOgqH,aAC3D,CAEyB,2BAAC9Y,GACzB,IAAI9lB,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,2BAA4B,CAACn4F,KAAMs/F,IAE7E,OADAhc,EAAgBs0B,qBAAqBp+B,EAAKprF,QACnCk1F,EAAgB60B,uBAAuB3+B,EAAKprF,OAAOgqH,aAC3D,CAE2B,6BAACpvB,GAC3B,IAAIxP,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,6BAA8B,CAACnP,OAAQA,IAEjF,OADA1F,EAAgBs0B,qBAAqBp+B,EAAKprF,QACnCk1F,EAAgB60B,uBAAuB3+B,EAAKprF,OAAOgqH,aAC3D,CAE2B,6BAACnZ,EAAaC,GAGxC,IAAI1lB,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,0BAA2B,CACnEkgB,aAAcpZ,EACdqZ,WAAYpZ,IAEd5b,EAAgBs0B,qBAAqBp+B,EAAKprF,QAG1C,IAAI+yD,EAAU,GACd,IAAK,IAAIo3D,KAAa/+B,EAAKprF,OAAO+yD,QAChCA,EAAQ5kD,KAAK+mF,EAAgB60B,uBAAuBI,IAEtD,OAAOp3D,CACR,CAEmB,qBAACm+C,GACnB,IAAI9lB,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,YAAa,CAACn4F,KAAMs/F,IAE9D,OADAhc,EAAgBs0B,qBAAqBp+B,EAAKprF,QACnCk1F,EAAgBk1B,iBAAiBh/B,EAAKprF,OAC9C,CAEqB,uBAAC46F,GACrB,IAAIxP,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,YAAa,CAACnP,OAAQA,IAEhE,OADA1F,EAAgBs0B,qBAAqBp+B,EAAKprF,QACnCk1F,EAAgBk1B,iBAAiBh/B,EAAKprF,OAC9C,CAEsB,wBAAC4xG,GAGtB,IAAIvmB,QAAgB3wF,KAAKwtH,IAAImC,kBAAkB,2BAA4B,CAACzY,QAASA,IAGjF0Y,QAAkBv1B,EAAYia,mBAAmB3jB,GACrD6J,EAAgBs0B,qBAAqBc,GAGrCvoG,EAAOxa,MAAM+iH,EAAU5d,IAAI7wG,OAAQyuH,EAAU9gD,OAAO3tE,QACpD,IAAI2tE,EAAS,GACb,IAAK,IAAI+gD,EAAW,EAAGA,EAAWD,EAAU9gD,OAAO3tE,OAAQ0uH,IAAY,CAGrE,IAAIhZ,EAAQrc,EAAgBk1B,iBAAiBE,EAAU9gD,OAAO+gD,IAC9DhZ,EAAMiZ,UAAU5Y,EAAQ2Y,IACxB/gD,EAAOr7D,KAAKojG,GAGZ,IAAI7E,EAAM,GACV,IAAK,IAAI+d,EAAQ,EAAGA,EAAQH,EAAU5d,IAAI6d,GAAU1uH,OAAQ4uH,IAAS,CACnE,IAAI9d,EAAK,IAAI/Z,EACb8Z,EAAIv+F,KAAKw+F,GACTA,EAAG+d,QAAQJ,EAAU9gD,OAAO+gD,GAAUI,UAAUF,IAChD9d,EAAGie,gBAAe,GAClBje,EAAGke,aAAY,GACfle,EAAGme,cAAa,GAChBne,EAAGoe,UAAS,GACZpe,EAAGqe,cAAa,GAChBre,EAAGse,aAAY,GACfte,EAAGue,kBAAiB,GACpBh2B,EAAgBi2B,cAAcb,EAAU5d,IAAI6d,GAAUE,GAAQ9d,EAC/D,CAGD4E,EAAMmB,OAAO,IACb,IAAK,IAAI/F,KAAMD,EACTC,EAAG8F,WAAYlB,EAAMzE,MAAMH,EAAG8F,YAC7BlB,EAAMgB,SAASpkG,KAAKw+F,EAAGgG,SAASpB,GAExC,CAED,OAAO/nC,CACR,CAEqB,uBAACqnC,EAAaC,QACdx1G,IAAhBu1G,IAA2BA,EAAc,QAC3Bv1G,IAAdw1G,IAAyBA,QAAkBp2G,KAAKq1G,YAAc,GAClE,IAAI6B,EAAU,GACd,IAAK,IAAIhX,EAASiW,EAAajW,GAAUkW,EAAWlW,IAAUgX,EAAQzjG,KAAKysF,GAC3E,aAAalgG,KAAKm3G,kBAAkBD,EACrC,CAE4B,8BAACf,EAAaC,EAAWmB,QAChC32G,IAAhBu1G,IAA2BA,EAAc,QAC3Bv1G,IAAdw1G,IAAyBA,QAAkBp2G,KAAKq1G,YAAc,GAClE,IAAIqb,EAAava,EAAc,EAC3BrnC,EAAS,GACb,KAAO4hD,EAAata,GAAW,CAC7B,IAAK,IAAIS,WAAe72G,KAAK2wH,cAAcD,EAAa,EAAGta,EAAWmB,GACpEzoC,EAAOr7D,KAAKojG,GAEd6Z,EAAa5hD,EAAOA,EAAO3tE,OAAS,GAAGk0G,WACxC,CACD,OAAOvmC,CACR,CAEW,aAAC6oC,EAAUz5C,GAGrB72C,EAAOrmB,MAAMC,QAAQ02G,IAAaA,EAASx2G,OAAS,EAAG,+CACvDkmB,OAAiBzmB,IAAVs9D,GAAwC,kBAAVA,EAAqB,wCAG1D,IAAIwyB,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,mBAAoB,CAC5D4B,WAAYjZ,EACZkZ,gBAAgB,EAChB3yD,MAAOA,IAET,IACEs8B,EAAgBs0B,qBAAqBp+B,EAItC,CAHC,MAAOvsF,GACP,GAAIA,EAAE9B,QAAQic,QAAQ,2DAA6D,EAAG,MAAM,IAAI+3E,EAAY,4BAC5G,MAAMlyF,CACP,CAGD,IAAI6tG,EAAM,GACV,GAAIthB,EAAKshB,IACP,IAAK,IAAI+d,EAAQ,EAAGA,EAAQr/B,EAAKshB,IAAI7wG,OAAQ4uH,IAAS,CACpD,IAAI9d,EAAK,IAAI/Z,EACb+Z,EAAGme,cAAa,GAChBpe,EAAIv+F,KAAK+mF,EAAgBi2B,cAAc//B,EAAKshB,IAAI+d,GAAQ9d,GACzD,CAGH,OAAOD,CACR,CAEe,iBAAC2F,EAAUz5C,GACzB,IAAI4yD,EAAQ,GACZ,IAAK,IAAI7e,WAAYjyG,KAAK63G,OAAOF,EAAUz5C,GAAQ4yD,EAAMr9G,KAAKyqD,EAAQ+zC,EAAG8e,eAAiB9e,EAAG+e,cAC7F,OAAOF,CACR,CAEkB,oBAAC5wB,EAAQmY,QACXz3G,IAAXs/F,EAAsBA,EAAS,EAC9B74E,EAAO64E,GAAU,EAAG,uCACPt/F,IAAdy3G,EAAyBA,QAAkBr4G,KAAKq1G,YAC/ChuF,EAAOgxF,GAAa,EAAG,iCAC5B,IAAI3nB,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,sBAAuB,CAACnP,OAAQA,EAAQttF,MAAOylG,IACzF7d,EAAgBs0B,qBAAqBp+B,EAAKprF,QAC1C,IAAI2rH,EAAQ,IAAIt5B,EAGhB,OAFAs5B,EAAMC,eAAe,IAAI/6B,EAAWzF,EAAKprF,OAAO6rH,kBAChDF,EAAMG,UAAU,IAAIj7B,EAAWzF,EAAKprF,OAAO+rH,aACpCJ,CACR,CAEmB,qBAACzY,GACnB,IAAI9nB,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,mBAAoB,CAACiiB,aAAc9Y,IAC7Ehe,EAAgBs0B,qBAAqBp+B,EAAKprF,QAC1C,IAAIisH,EAAc,IAAIh6B,EACtBg6B,EAAYC,OAAO,IAAIr7B,EAAWzF,EAAKprF,OAAOmsH,MAC9C,IAAIC,EAAO,GACX,IAAK,IAAIxwH,EAAI,EAAGA,EAAIwvF,EAAKprF,OAAOosH,KAAKvwH,OAAQD,IAAKwwH,EAAKj+G,KAAK,IAAI0iF,EAAWzF,EAAKprF,OAAOosH,KAAKxwH,KAG5F,OAFAqwH,EAAYI,QAAQD,GACpBH,EAAYK,oBAAoB,IAAIz7B,EAAWzF,EAAKprF,OAAOusH,oBACpDN,CACR,CAEgB,kBAAC5Y,EAAOC,GACvB,IAAIloB,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,uBAAwB,CAAC8C,UAAWnZ,EAAOoZ,aAAcnZ,IAC/FtzG,EAASk1F,EAAgBw3B,0BAA0BthC,GAGvD,IACE8J,EAAgBs0B,qBAAqBp+B,GACrCprF,EAAO2sH,WAAU,EAGlB,CAFC,MAAM9tH,GACNmB,EAAO2sH,WAAU,EAClB,CACD,OAAO3sH,CACR,CAEmB,qBAACqyG,GACnB,IAAIjnB,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,WAAY,CAAC6iB,MAAOva,IAC9Dnd,EAAgBs0B,qBAAqBp+B,EAAKprF,OAC3C,CAEc,kBAGb,IAAIorF,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,wBAC1Cx0B,EAAgBs0B,qBAAqBp+B,GAGrC,IAAIshB,EAAM,GACV,GAAIthB,EAAKyhC,aACP,IAAK,IAAIC,KAAS1hC,EAAKyhC,aAAc,CACnC,IAAIlgB,EAAK,IAAI/Z,EACb8Z,EAAIv+F,KAAKw+F,GACTA,EAAGie,gBAAe,GAClBje,EAAGme,cAAa,GAChBne,EAAGke,aAAY,GACfle,EAAGogB,oBAAoB,GACvB73B,EAAgBi2B,cAAc2B,EAAOngB,EACtC,CAGH,OAAOD,CACR,CAEoB,wBACnB,MAAM,IAAI3b,EAAY,kBACvB,CAEqB,yBACpB,MAAM,IAAIA,EAAY,kBACvB,CAEmB,uBAClB,IAAI3F,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,8BAE1C,OADAx0B,EAAgBs0B,qBAAqBp+B,GAC9B8J,EAAgB83B,uBAAuB5hC,EAAK6hC,WACpD,CAEgB,kBAAChZ,GACZA,IAAQA,EAASvpB,EAASmP,QAAQoa,IACtC,IAAI7oB,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,eAAgB,CAAC6iB,MAAO3Y,IAClE/e,EAAgBs0B,qBAAqBp+B,EAAKprF,OAC3C,CAE6B,+BAACo0G,GAC7B,QAAkB94G,IAAd84G,GAAgD,IAArBA,EAAUv4G,OAAc,MAAM,IAAIk1F,EAAY,kDAC7E,IAAI3F,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,qBAAsB,CAACwD,WAAY9Y,IAE7E,OADAlf,EAAgBs0B,qBAAqBp+B,GAC9BA,EAAK+hC,YACb,CAEuB,yBAAC5Y,EAASC,EAAUvhE,EAAUwhE,EAAYC,GAGhE,IAAItpB,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,uBAAwB,CAChEwK,QAASA,EACT6Y,UAAW5Y,EACX6Y,UAAWp6E,EACXq6E,SAAU7Y,EACV8Y,cAAe7Y,IAEjBxf,EAAgBs0B,qBAAqBp+B,EAAKprF,QAG1C,IAAI+pE,EAAU,GACd,IAAKqhB,EAAKprF,OAAOwtH,UAAW,OAAOzjD,EACnC,IAAK,IAAI0jD,KAAYriC,EAAKprF,OAAOwtH,UAC/BzjD,EAAQ57D,KAAK+mF,EAAgBw4B,gCAAgCD,IAE/D,OAAO1jD,CACR,CAE0B,4BAACwqC,EAAS+S,EAAYzW,EAAaC,GAC5D,MAAM,IAAI/f,EAAY,4DA8BvB,CAEY,gBACX,IAAI3F,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,YAE1C,OADA7U,EAAgBs0B,qBAAqBp+B,EAAKprF,QACnCk1F,EAAgBy4B,gBAAgBviC,EAAKprF,OAC7C,CAEgB,oBACf,IAAIorF,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,aAE1C,OADA7U,EAAgBs0B,qBAAqBp+B,EAAKprF,QACnCk1F,EAAgB04B,oBAAoBxiC,EAAKprF,OACjD,CAEoB,wBACnB,IAAIorF,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,kBAE1C,OADA7U,EAAgBs0B,qBAAqBp+B,EAAKprF,QACnCk1F,EAAgB24B,wBAAwBziC,EAAKprF,OACrD,CAEiB,qBAehB,IAAIorF,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,wBAC1C7U,EAAgBs0B,qBAAqBp+B,EAAKprF,QAC1C,IAAI8tH,EAAS,GACb,IAAK1iC,EAAKprF,OAAO8tH,OAAQ,OAAOA,EAChC,IAAK,IAAIC,KAAY3iC,EAAKprF,OAAO8tH,OAAQA,EAAO3/G,KAAK+mF,EAAgB84B,oBAAoBD,IACzF,OAAOD,CACR,CAEsB,0BASrB,IAAI1iC,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,yBAE1C,OADAx0B,EAAgBs0B,qBAAqBp+B,GAChCA,EAAK6iC,YACH7iC,EAAK6iC,YADkB,EAE/B,CAEqB,yBACpB,aAAcvzH,KAAKwzH,uBAAuB,EAC3C,CAEqB,uBAAChhH,GACrB,IAAc,GAAVA,EAAa,aAAaxS,KAAKq7G,qBACnC,KAAMrrB,EAASmM,MAAM3pF,IAAUA,EAAQ,GAAI,MAAM,IAAI6jF,EAAY,oDACjE,aAAcr2F,KAAKyzH,oBAAoBjhH,EAAO,IAAI,EACnD,CAEuB,2BACtB,aAAcxS,KAAKyzH,qBAAqB,EAAG,IAAI,EAChD,CAEmB,uBAClB,aAAczzH,KAAKwzH,uBAAuB,EAC3C,CAEmB,qBAAChhH,GACnB,IAAc,GAAVA,EAAa,aAAaxS,KAAK27G,mBACnC,KAAM3rB,EAASmM,MAAM3pF,IAAUA,EAAQ,GAAI,MAAM,IAAI6jF,EAAY,kDACjE,aAAcr2F,KAAKyzH,oBAAoB,EAAGjhH,IAAQ,EACnD,CAEqB,yBACpB,aAAcxS,KAAKyzH,oBAAoB,GAAI,IAAI,EAChD,CAEa,iBACZ,IAAI/iC,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,mBAC1C7U,EAAgBs0B,qBAAqBp+B,EAAKprF,QAC1C,IAAIouH,EAAQ,GACZ,IAAKhjC,EAAKprF,OAAOquH,YAAa,OAAOD,EACrC,IAAK,IAAIE,KAAiBljC,EAAKprF,OAAOquH,YACpCD,EAAMjgH,KAAK+mF,EAAgBq5B,sBAAsBD,IAEnD,OAAOF,CACR,CAEkB,sBAGjB,IAAIhjC,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,iBAC1Cx0B,EAAgBs0B,qBAAqBp+B,GAGrC,IAAIgjC,EAAQ,GACZ,GAAIhjC,EAAKojC,UACP,IAAK,IAAIC,KAAWrjC,EAAKojC,UAAW,CAClC,IAAIhY,EAAOthB,EAAgBw5B,gBAAgBD,GAC3CjY,EAAKmY,aAAY,GACjBP,EAAMjgH,KAAKqoG,EACZ,CAEH,GAAIprB,EAAKwjC,WACP,IAAK,IAAIH,KAAWrjC,EAAKwjC,WAAY,CACnC,IAAIpY,EAAOthB,EAAgBw5B,gBAAgBD,GAC3CjY,EAAKmY,aAAY,GACjBP,EAAMjgH,KAAKqoG,EACZ,CAEH,OAAO4X,CACR,CAEyB,2BAAClhH,GACzB,KAAMw9E,EAASmM,MAAM3pF,IAAUA,GAAS,GAAI,MAAM,IAAI6jF,EAAY,oCAClE,IAAI3F,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,YAAa,CAACmF,UAAW3hH,IACnEgoF,EAAgBs0B,qBAAqBp+B,EACtC,CAEyB,2BAACl+E,GACzB,KAAMw9E,EAASmM,MAAM3pF,IAAUA,GAAS,GAAI,MAAM,IAAI6jF,EAAY,oCAClE,IAAI3F,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,WAAY,CAACoF,SAAU5hH,IACjEgoF,EAAgBs0B,qBAAqBp+B,EACtC,CAEgB,oBACf,IAAIA,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,YAC1C7U,EAAgBs0B,qBAAqBp+B,EAAKprF,QAC1C,IAAIq3G,EAAO,GACX,IAAK,IAAI0X,KAAU3jC,EAAKprF,OAAOq3G,KAAM,CACnC,IAAIH,EAAM,IAAI3lB,EACd2lB,EAAI8X,QAAQD,EAAO95D,MACnBiiD,EAAI+X,MAAMF,EAAOG,IACjBhY,EAAIiY,WAAWJ,EAAOK,SACtB/X,EAAKlpG,KAAK+oG,EACX,CACD,OAAOG,CACR,CAEgB,kBAACA,GAChB,IAAIgY,EAAU,GACd,IAAK,IAAInY,KAAOG,EAAMgY,EAAQlhH,KAAK+mF,EAAgBo6B,iBAAiBpY,IACpE,IAAI9rB,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,WAAY,CAACsN,KAAMgY,IAC7Dn6B,EAAgBs0B,qBAAqBp+B,EAAKprF,OAC3C,CAEgB,kBAACoqE,EAASqtC,EAAYC,EAAcC,GACnD51F,EAAOqoD,EAAS,mCAChBroD,EAAO2oE,EAASmM,MAAM4gB,IAAeA,EAAa,EAAG,uDACrD11F,OAAwBzmB,IAAjBo8G,GAAsD,kBAAjBA,GAC5C31F,OAAyBzmB,IAAlBq8G,GAAwD,kBAAlBA,GAC7C,IAAIvsB,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,eAAgB,CACxD6F,cAAenlD,EACfolD,cAAe/X,EACfgY,qBAAsB/X,EACtBgY,eAAgB/X,IAElBziB,EAAgBs0B,qBAAqBp+B,EACtC,CAEe,mBACd,IAAIA,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,eAC1Cx0B,EAAgBs0B,qBAAqBp+B,EACtC,CAEoB,wBACnB,IAAIA,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,iBAE1C,OADAx0B,EAAgBs0B,qBAAqBp+B,GAC9B8J,EAAgBy6B,wBAAwBvkC,EAChD,CAEiB,mBAACq8B,GACjB1lG,EAAOrmB,MAAMC,QAAQ8rH,IAAeA,EAAW5rH,OAAS,EAAG,wDAC3D,IAAIuvF,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,eAAgB0d,GAC1DvyB,EAAgBs0B,qBAAqBp+B,EAAKprF,OAC3C,CAEoB,sBAACqpC,GACpB,IAAI+hD,QAAa1wF,KAAKwtH,IAAIne,gBAAgB,mBAAoB,CAAC1gE,MAAOA,GAAQ,GAC9E6rD,EAAgBs0B,qBAAqBp+B,EAAKprF,QAC1C,IAAIA,EAAS,IAAI0yF,EAGjB,OAFA1yF,EAAO4vH,YAAYxkC,EAAKprF,OAAO6vH,QAC/B7vH,EAAO8vH,eAAe1kC,EAAKprF,OAAO+vH,cAC3B/vH,CACR,CAEmB,uBAClB,IAAIorF,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,SAAU,CAACsG,QAAS,UAE9D,OADA96B,EAAgBs0B,qBAAqBp+B,GAC9B8J,EAAgB+6B,6BAA6B7kC,EACrD,CAEmB,qBAACxmE,GACnB,IAAIwmE,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,SAAU,CAACsG,QAAS,WAAYprG,KAAMA,IAEhF,OADAswE,EAAgBs0B,qBAAqBp+B,GAC9B8J,EAAgBg7B,gCAAgC9kC,EACxD,CAES,aACR,IAAIA,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,eAC1Cx0B,EAAgBs0B,qBAAqBp+B,EACtC,CAE2B,+BAC1B,IAAIpuC,EAAOtiD,KACX,OAAO,IAAIqJ,SAAQgP,eAAerZ,SAC1BsjD,EAAK0nD,YAAY,IAAI,cAAc7S,EACpB,oBAACjnE,SACZoyB,EAAK4nD,eAAelqG,MAC1BhB,EAAQkxB,EACT,GAEJ,GACF,CAIU,cAAK,OAAO69E,MAAM0S,SAASj7G,UAAa,CACrC,iBAAK,OAAOuoG,MAAM0nB,YAAYjwH,UAAa,CAC7B,+BAAK,OAAOuoG,MAAM2nB,0BAA0BlwH,UAAa,CACrE,mBAAK,OAAOuoG,MAAM4nB,cAAcnwH,UAAa,CAC5C,oBAAK,OAAOuoG,MAAM6nB,eAAepwH,UAAa,CAI/DqpH,oBAC2BjuH,MAArBZ,KAAK61H,cAA6B71H,KAAK6oD,UAAU1nD,SAAQnB,KAAK61H,aAAe,IAAIC,EAAa91H,YACxEY,IAAtBZ,KAAK61H,cAA4B71H,KAAK61H,aAAaE,aAAa/1H,KAAK6oD,UAAU1nD,OAAS,EAC7F,CAEwB,4BACvB,IAAIuvF,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,aAE1C,OADAx0B,EAAgBs0B,qBAAqBp+B,GAC9B,CAACA,EAAKslC,WAAYtlC,EAAKulC,SAC/B,CAEwB,0BAACC,EAAWC,QACjBv1H,IAAds1H,IAAyBA,EAAY,QACzBt1H,IAAZu1H,IAAuBA,EAAU,GACrC,IAAIzlC,QAAa1wF,KAAKwtH,IAAIwB,gBAAgB,YAAa,CAACgH,WAAYE,EAAWD,SAAUE,IAEzF,OADA37B,EAAgBs0B,qBAAqBp+B,GAC9B,CAACA,EAAKslC,WAAYtlC,EAAKulC,SAC/B,CAWkB,oBAAC9f,EAAaigB,EAAWC,QACtBz1H,IAAhBu1G,IAA2BA,EAAc,QAC3Bv1G,IAAdw1H,IAAyBA,QAAkBp2H,KAAKq1G,YAAc,QAC/Cz0G,IAAfy1H,IAA0BA,EAAa77B,EAAgB87B,cAG3D,IAAIC,EAAU,EACVngB,EAAYD,EAAc,EAC9B,KAAOogB,EAAUF,GAAcjgB,EAAYggB,GAAW,CAGpD,IAAIlmG,QAAelwB,KAAKw2H,8BAA8BpgB,EAAY,EAAGggB,GAMrE,GAHA/uG,EAAO6I,EAAOumG,WAAaJ,EAAY,uCAAyCnmG,EAAOumG,WAGnFF,EAAUrmG,EAAOumG,UAAYJ,EAAY,MAG7CE,GAAWrmG,EAAOumG,UAClBrgB,GACD,CACD,OAAOA,GAAaD,QAAoBn2G,KAAKq3G,iBAAiBlB,EAAaC,GAAa,EACzF,CASkC,oCAAClW,EAAQk2B,GAG1C,IAAIM,EAAe12H,KAAKytH,cAAcvtB,GACtC,GAAIw2B,EAAc,OAAOA,EAGzB,IAAItgB,EAAY37F,KAAKwU,IAAImnG,EAAWl2B,EAAS1F,EAAgBm8B,oBAAsB,GAC/Et+D,QAAgBr4D,KAAKs2G,uBAAuBpW,EAAQkW,GACxD,IAAK,IAAIlmF,KAAUmoC,EACjBr4D,KAAKytH,cAAcv9F,EAAOmlF,aAAenlF,EAI3C,OAAOlwB,KAAKytH,cAAcvtB,EAC3B,CAIsB,wBAAC+N,EAAyBxe,EAAUC,EAAUY,EAAoB+8B,EAAcjqB,GACrG,IAAIjB,EACJ,GAAuC,iBAA5B8L,EAAsC9L,EAAS,CAACn2F,IAAKiiG,EAAyBxe,SAAUA,EAAUC,SAAUA,EAAU0T,cAAeA,EAAe9S,mBAAoBA,EAAoB+8B,aAAcA,OAChN,CACH,GAAuC,iBAA5Bpf,EAAsC,MAAM,IAAI5X,EAAY,8FACvE,GAAI5G,GAAYC,GAAYY,GAAsB+8B,GAAgBjqB,EAAe,MAAM,IAAI/M,EAAY,gFAC3C8L,EAAxD8L,aAAmC3X,EAA8BtsF,OAAOumC,OAAO,CAAC,EAAG09D,EAAwBG,aACjGpkG,OAAOumC,OAAO,CAAC,EAAG09D,EACjC,CAOD,OANI9L,EAAO+b,SACT/b,EAASn4F,OAAOumC,OAAO4xD,EAAQ,IAAI7L,EAAoB6L,EAAO+b,QAAQ9P,oBAC/DjM,EAAO+b,aAEYt9G,IAAxBuhG,EAAOkrB,eAA4BlrB,EAAOkrB,aAAe,UAChCzsH,IAAzBuhG,EAAOiB,gBAA6BjB,EAAOiB,eAAgB,GACxDjB,CACR,CAE0B,4BAACzR,GAC1B,GAAoB,OAAhBA,EAAKpxB,OAAiB,MAAM,IAAI+2B,EAAY3F,EAAKpxB,OACtD,CAE4B,8BAACmwD,GAC5B,IAAKA,EAAW,OAChB,IAAIv/F,EAAS,IAAI4mE,EACjB,IAAK,IAAIh2F,KAAOkJ,OAAOoH,KAAKq+G,GAAY,CACtC,IAAIzmG,EAAMymG,EAAU3uH,GACR,eAARA,EAAsBkvF,EAAS4mC,QAAQ1mG,EAAQA,EAAOumG,QAASvmG,EAAO2mG,QAAS7tG,GAClE,UAARloB,EAAiBkvF,EAAS4mC,QAAQ1mG,EAAQA,EAAO4mG,SAAU5mG,EAAO6mG,SAAU/tG,GACpE,eAARloB,GACQ,0BAARA,GACQ,qBAARA,GACQ,gCAARA,IACQ,oBAARA,EAA2BovB,EAAO8mG,cAAchnC,EAASuS,UAAUryE,EAAO+mG,gBAAiBz8B,EAAgB08B,iBAAiBluG,KACpH,+BAARloB,EAAsCovB,EAAOinG,wBAAwBnnC,EAASuS,UAAUryE,EAAOknG,0BAA2B58B,EAAgB08B,iBAAiBluG,KACnJ,SAARloB,EAAgBkvF,EAAS4mC,QAAQ1mG,EAAQA,EAAOiiF,QAASjiF,EAAO8/F,QAAShnG,GACjE,WAARloB,EAAkBkvF,EAAS4mC,QAAQ1mG,EAAQA,EAAOmlF,UAAWnlF,EAAO4/F,UAAW9mG,GACvE,kBAARloB,EAAyBkvF,EAAS4mC,QAAQ1mG,EAAQA,EAAOmnG,gBAAiBnnG,EAAOonG,gBAAiBtuG,GAC1F,kBAARloB,EAAyBkvF,EAAS4mC,QAAQ1mG,EAAQA,EAAOqnG,gBAAiBrnG,EAAOsnG,gBAAiBxuG,GAC1F,UAARloB,EAAiBkvF,EAAS4mC,QAAQ1mG,EAAQA,EAAOunG,SAAUvnG,EAAOwnG,SAAU1uG,GACpE,aAARloB,EAAoBkvF,EAAS4mC,QAAQ1mG,EAAQA,EAAOynG,UAAWznG,EAAO0nG,UAAW5uG,GACzE,kBAARloB,EAAyBkvF,EAAS4mC,QAAQ1mG,EAAQA,EAAO2nG,gBAAiB3nG,EAAO4nG,gBAAiB9uG,GAC1F,cAARloB,GAA+B,YAARA,EAAmBkvF,EAAS4mC,QAAQ1mG,EAAQA,EAAO6nG,YAAa7nG,EAAO8nG,YAAahvG,GACnG,WAARloB,EAAkBkvF,EAAS4mC,QAAQ1mG,EAAQA,EAAO+nG,UAAW/nG,EAAOgoG,UAAW/hC,EAAWnlF,MAAMgY,IACxF,cAARloB,EAAqBkvF,EAAS4mC,QAAQ1mG,EAAQA,EAAOioG,aAAcjoG,EAAOkoG,aAAcpvG,GAChF,iBAARloB,EAAwBkvF,EAAS4mC,QAAQ1mG,EAAQA,EAAOmoG,UAAWnoG,EAAOooG,UAAWtvG,GAC7E,qBAARloB,EAA4BkvF,EAAS4mC,QAAQ1mG,EAAQA,EAAOqoG,kBAAmBroG,EAAOsoG,kBAAmBxvG,GACjG,aAARloB,EAAoBkvF,EAAS4mC,QAAQ1mG,EAAQA,EAAOuoG,WAAYvoG,EAAOwoG,WAAoB,KAAR1vG,OAAapoB,EAAYooB,GACpG,cAARloB,GACQ,aAARA,IACQ,kBAARA,EAAyBovB,EAAOyoG,eAAe3vG,GACnDpiB,QAAQF,IAAI,qDAAuD5F,EAAM,MAAQkoB,IACvF,CACD,OAAOkH,CACR,CAEsB,wBAAC0oG,GAGtB,IAAI/hB,EAAQ,IAAI9f,EAAYyD,EAAgB60B,uBAAuBuJ,EAAStJ,aAAesJ,EAAStJ,aAAesJ,IACnH/hB,EAAMgiB,OAAOD,EAASE,MACtBjiB,EAAMkiB,iBAAmCn4H,IAAvBg4H,EAAS3I,UAA0B,GAAK2I,EAAS3I,WAGnE,IAAI+I,EAAaJ,EAASvmB,KAAO56F,KAAKzG,MAAM4nH,EAASvmB,MAAM4mB,SAAWL,EAASK,SAC3EC,EAAU,IAAIhhC,EAMlB,OALA2e,EAAMsiB,WAAWD,GACjBA,EAAQhJ,gBAAe,GACvBgJ,EAAQ9I,cAAa,GACrB51B,EAAgBi2B,cAAcuI,EAAYE,GAEnCriB,CACR,CAWmB,qBAACub,EAAOngB,GAC1B,QAAcrxG,IAAVwxH,EAAqB,OAQzB,IAAIliG,OAPOtvB,IAAPqxG,IAAkBA,EAAK,IAAI/Z,GAQ/B,IAAK,IAAIp3F,KAAOkJ,OAAOoH,KAAKghH,GAAQ,CAClC,IAAIppG,EAAMopG,EAAMtxH,GACJ,YAARA,GAA6B,YAARA,EAAmBkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAGE,QAASF,EAAG+d,QAAShnG,GACxE,oBAARloB,GACFovB,IAAQA,EAAS,IAAI4mE,GAC1B9G,EAAS4mC,QAAQ1mG,EAAQA,EAAOioG,aAAcjoG,EAAOkoG,aAAcpvG,IAEpD,iBAARloB,GACFovB,IAAQA,EAAS,IAAI4mE,GAC1B9G,EAAS4mC,QAAQ1mG,EAAQA,EAAOmlF,UAAWnlF,EAAO4/F,UAAW9mG,IAE9C,sBAARloB,EAA6BkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAGmnB,wBAAyBnnB,EAAGonB,wBAAyBrwG,GAClG,iBAARloB,GAAkC,uBAARA,EAA8BkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAGqnB,qBAAsBrnB,EAAGsnB,qBAAsBvwG,GACvH,kBAARloB,EAAyBkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAGunB,oBAAqBvnB,EAAGogB,oBAAqBrpG,GACtF,YAARloB,GACPkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAGwnB,YAAaxnB,EAAGie,gBAAiBlnG,GACzDgnE,EAAS4mC,QAAQ3kB,EAAIA,EAAGynB,SAAUznB,EAAGke,YAAannG,IAEnC,sBAARloB,EAA6BkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAG0nB,kBAAmB1nB,EAAGue,iBAAkBxnG,GACrF,YAARloB,EAAmBkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAGrX,WAAYqX,EAAG2nB,WAAY5wG,GAC9D,UAARloB,EACY,iBAARkoB,EAAkBpiB,QAAQF,IAAI,8DAAgE5F,EAAM,KAAOkoB,GACjHgnE,EAAS4mC,QAAQ3kB,EAAIA,EAAG4nB,SAAU5nB,EAAG6nB,SAAU9wG,GAErC,QAARloB,EACY,IAAfkoB,EAAI7nB,QAAiB6nB,EAAI,GAAG+wG,KAC9B9nB,EAAG+nB,UAAUhxG,EAAI1V,KAAI2mH,GAAUz/B,EAAgB0/B,kBAAkBD,EAAQhoB,MAG5D,SAARnxG,EAAgBmxG,EAAGkoB,WAAWnxG,EAAI1V,KAAI8mH,GAAa5/B,EAAgB0/B,kBAAkBE,EAAWnoB,MACxF,mBAARnxG,GACPkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAGooB,iBAAkBpoB,EAAGqoB,iBAAkBtxG,GAC3DA,EAAIuxG,QAAQvqC,EAAS4mC,QAAQ3kB,EAAIA,EAAGuoB,OAAQvoB,EAAGuf,OAAQr7B,EAAWnlF,MAAMgY,EAAIuxG,UAEjE,oBAARz5H,EAA2BkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAGwoB,kBAAmBxoB,EAAGyoB,kBAAmB1xG,GACpF,gBAARloB,EAAuBkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAG0oB,cAAe1oB,EAAG2oB,cAAe5xG,GACxE,YAARloB,GAA6B,YAARA,IACb,WAARA,GAA4B,YAARA,EAAmBkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAG+e,WAAY/e,EAAG4oB,WAAY7xG,QAAYpoB,GAC9F,cAARE,EAAqBkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAGwkB,QAASxkB,EAAG4kB,QAAS7tG,GAC1D,WAARloB,EAAkBkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAGomB,UAAWpmB,EAAGqmB,UAAWtvG,GAC3D,QAARloB,EAAekvF,EAAS4mC,QAAQ3kB,EAAIA,EAAGuoB,OAAQvoB,EAAGuf,OAAQr7B,EAAWnlF,MAAMgY,IACnE,YAARloB,EAAmBkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAG6oB,UAAW7oB,EAAGqe,aAActnG,GAC/D,mBAARloB,EAA0BkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAG8oB,iBAAkB9oB,EAAG+oB,iBAAkBhyG,GACjF,iBAARloB,EAAwBkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAGgpB,SAAUhpB,EAAGoe,UAAWrnG,GAChE,kBAARloB,EAAyBkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAGipB,cAAejpB,EAAGkpB,iBAAkBnyG,GAC7E,eAARloB,EAAsBkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAGmpB,cAAenpB,EAAGopB,cAAeryG,GACvE,uBAARloB,EACK,IAARkoB,EAAWgnE,EAAS4mC,QAAQ3kB,EAAIA,EAAGqpB,SAAUrpB,EAAGse,aAAa,IAE/DvgC,EAAS4mC,QAAQ3kB,EAAIA,EAAGqpB,SAAUrpB,EAAGse,aAAa,GAClDvgC,EAAS4mC,QAAQ3kB,EAAIA,EAAGspB,oBAAqBtpB,EAAGupB,oBAAqBxyG,IAGxD,wBAARloB,EACHkoB,IAAQwxE,EAAgBihC,WAAYzrC,EAAS4mC,QAAQ3kB,EAAIA,EAAGqpB,SAAUrpB,EAAGse,aAAa,IAExFvgC,EAAS4mC,QAAQ3kB,EAAIA,EAAGqpB,SAAUrpB,EAAGse,aAAa,GAClDvgC,EAAS4mC,QAAQ3kB,EAAIA,EAAGypB,kBAAmBzpB,EAAG0pB,kBAAmB3yG,IAGpD,0BAARloB,EAAiCkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAG2pB,sBAAuB3pB,EAAG4pB,sBAAuB7yG,GAClG,2BAARloB,EAAkCkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAG6pB,oBAAqB7pB,EAAG8pB,oBAAqB/yG,GAC/F,kBAARloB,EAAyBkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAG+pB,gBAAiB/pB,EAAGgqB,gBAAiBjzG,QAAYpoB,GAC1F,oBAARE,EAA2BkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAGiqB,eAAgBjqB,EAAGkqB,eAAgBnzG,QAAYpoB,GAC1F,kBAARE,EAAyBkvF,EAAS4mC,QAAQ3kB,EAAIA,EAAG8e,aAAc9e,EAAGmqB,aAAcpzG,QAAYpoB,GAChGgG,QAAQF,IAAI,iDAAmD5F,EAAM,KAAOkoB,GAClF,CAoBD,GAjBIkH,GAAQ+hF,EAAGgG,SAAS,IAAIlhB,EAAY7mE,GAAQ8nF,OAAO,CAAC/F,KAGpDA,EAAG8F,iBAA4Cn3G,IAA9BqxG,EAAG8F,WAAW1C,aAA6BpD,EAAG8F,WAAW1C,cAAgBpD,EAAG8F,WAAWogB,iBAC1GlmB,EAAGgG,cAASr3G,GACZqxG,EAAGie,gBAAe,IAIhBje,EAAGwnB,eACLzpC,EAAS4mC,QAAQ3kB,EAAIA,EAAG6oB,UAAW7oB,EAAGqe,cAAc,GACpDtgC,EAAS4mC,QAAQ3kB,EAAIA,EAAGgpB,SAAUhpB,EAAGoe,UAAU,GAC/CrgC,EAAS4mC,QAAQ3kB,EAAIA,EAAGqpB,SAAUrpB,EAAGse,aAAa,IAElDte,EAAGogB,oBAAoB,QAEHzxH,IAAlBqxG,EAAGqpB,YAA0BrpB,EAAGse,aAAY,GAC5Cte,EAAG8oB,oBAAsB9oB,EAAGsQ,aAAe,CAC7Cl7F,EAAOxa,MAAMolG,EAAGsQ,aAAaphH,OAAQ8wG,EAAG8oB,mBAAmB55H,QAC3D,IAAK,IAAID,EAAI,EAAGA,EAAI+wG,EAAGsQ,aAAaphH,OAAQD,IAC1C+wG,EAAGsQ,aAAarhH,GAAGm7H,SAASpqB,EAAG8oB,mBAAmB75H,GAErD,CAMD,OALIkxH,EAAMkK,SAAS9hC,EAAgBi2B,cAAch5G,KAAKzG,MAAMohH,EAAMkK,SAAUrqB,GACxEmgB,EAAMmK,SAAS/hC,EAAgBi2B,cAAch5G,KAAKzG,MAAMohH,EAAMmK,SAAUtqB,GACvEA,EAAG6oB,aAAa7oB,EAAGonB,6BAAwBz4H,GAGzCqxG,CACR,CAEuB,yBAACmoB,EAAWnoB,GAClC,IAAIxqE,EAAS,IAAIqwD,EACjBrwD,EAAO+0F,MAAMvqB,GACb,IAAK,IAAInxG,KAAOkJ,OAAOoH,KAAKgpH,GAAY,CACtC,IAAIpxG,EAAMoxG,EAAUt5H,GACpB,GAAY,QAARA,EAAe,MAAM,IAAIu1F,EAAY,sGACpC,GAAY,QAARv1F,EACPkvF,EAAS4mC,QAAQnvF,EAAQA,EAAOg1F,UAAWh1F,EAAOi1F,UAAW,IAAIvmC,EAAWntE,EAAI2zG,SAChF3sC,EAAS4mC,QAAQnvF,EAAQA,EAAOm1F,YAAan1F,EAAOo1F,YAAa,IAAIplC,EAAezuE,EAAI8zG,UACxF9sC,EAAS4mC,QAAQnvF,EAAQA,EAAOs1F,qBAAsBt1F,EAAOu1F,qBAAsBh0G,EAAIi0G,kBAEpF,GAAY,WAARn8H,EAAkBkvF,EAAS4mC,QAAQnvF,EAAQA,EAAOg1F,UAAWh1F,EAAOi1F,UAAWvmC,EAAWnlF,MAAMgY,SACpG,GAAY,WAARloB,EAAkB,CACzB,IAAIo8H,OAAqBt8H,IAAZooB,EAAIloB,IAAoBkoB,EAAIm0G,WAAWr8H,IAAMkoB,EAAIloB,IAC9DkvF,EAAS4mC,QAAQnvF,EAAQA,EAAO21F,oBAAqB31F,EAAO41F,oBAAqBH,EAClF,MACIt2H,QAAQF,IAAI,8CAAgD5F,EAAM,KAAOkoB,EAC/E,CACD,OAAOye,CACR,CAE8B,gCAAC61F,GAC9B,IAAIC,EAAW,IAAIvmC,EACnB,IAAK,IAAIl2F,KAAOkJ,OAAOoH,KAAKksH,GAAc,CACxC,IAAIt0G,EAAMs0G,EAAYx8H,GACV,sBAARA,EAA6By8H,EAASC,qBAAqBx0G,GAC9C,uBAARloB,EAA8By8H,EAASE,oBAAoBz0G,GACnD,eAARloB,EAAsBy8H,EAASvG,cAAc7gC,EAAWnlF,MAAMgY,IACtD,oBAARloB,EAA2By8H,EAASG,kBAAkB10G,GAC9C,eAARloB,GACQ,qBAARA,IACQ,oBAARA,EAA2By8H,EAASvG,cAAchnC,EAASuS,UAAUg7B,EAAStG,gBAAiBz8B,EAAgB08B,iBAAiBluG,KACxH,WAARloB,EAAkBy8H,EAASzN,UAAU9mG,GAC7B,cAARloB,EAAqBy8H,EAASvF,YAAYhvG,GAClC,oBAARloB,EAA2By8H,EAASI,kBAAkB30G,GAC9C,WAARloB,GACQ,cAARA,IACQ,gBAARA,EAAuBy8H,EAASK,cAAc50G,GACtC,cAARloB,EAAqBy8H,EAASM,YAAY70G,GAClC,mBAARloB,EAA0By8H,EAASO,gBAAgB90G,GACvDpiB,QAAQF,IAAI,yDAA2D5F,EAAM,KAAOkoB,IAC1F,CAED,MADI,KAAOu0G,EAASQ,mBAAmBR,EAASO,qBAAgBl9H,GACzD28H,CACR,CAEqB,uBAACS,GACrB,IAAKA,EAAS,OACd,IAAI5oE,EAAO,IAAI8hC,EACf,IAAK,IAAIp2F,KAAOkJ,OAAOoH,KAAK4sH,GAAU,CACpC,IAAIh1G,EAAMg1G,EAAQl9H,GACN,YAARA,EAAmBs0D,EAAKwkE,WAAW5wG,GACtB,qBAARloB,EAA4Bs0D,EAAK6oE,gBAAgBj1G,GACzC,qBAARloB,EAA4Bs0D,EAAK8oE,kBAAkBl1G,GAC3C,sBAARloB,EAA6Bs0D,EAAK+oE,mBAAmBn1G,GAC7C,uBAARloB,EAA8Bs0D,EAAKgpE,oBAAoBp1G,GAC/C,wBAARloB,EAA+Bs0D,EAAKipE,qBAAqBr1G,GACjD,6BAARloB,EAA0CkoB,GAAKosC,EAAKkpE,0BAA0Bt1G,GACtE,eAARloB,GACQ,0BAARA,GACQ,qBAARA,GACQ,gCAARA,IACQ,oBAARA,EAA2Bs0D,EAAK4hE,cAAchnC,EAASuS,UAAUntC,EAAK6hE,gBAAiBz8B,EAAgB08B,iBAAiBluG,KAChH,+BAARloB,EAAsCs0D,EAAK+hE,wBAAwBnnC,EAASuS,UAAUntC,EAAKgiE,0BAA2B58B,EAAgB08B,iBAAiBluG,KAC/I,eAARloB,EAAsBs0D,EAAKmpE,aAAapoC,EAAWnlF,MAAMgY,IACjD,kBAARloB,EAAyBs0D,EAAKopE,gBAAgBx1G,GACtC,uBAARloB,EAA8Bs0D,EAAKqpE,mBAAmBz1G,GAC9C,WAARloB,EAAkBs0D,EAAK06D,UAAU9mG,GACzB,6BAARloB,EAAoCs0D,EAAKspE,0BAA0B11G,GAC3D,+BAARloB,EAAsCs0D,EAAKupE,0BAA0B31G,GAC7D,YAARloB,EAAmBs0D,EAAKwpE,aAAa51G,GAC7B,+BAARloB,EAAsCs0D,EAAKypE,0BAA0B71G,GAC7D,0BAARloB,EAAiCs0D,EAAK0pE,qBAAqB91G,GACnD,eAARloB,EAAsBs0D,EAAK2pE,kBAAkB/1G,GACrC,kBAARloB,EAAyBs0D,EAAK4pE,qBAAqBh2G,GAC3C,WAARloB,IACQ,WAARA,EAAkBs0D,EAAK6pE,UAAUj2G,GACzB,kBAARloB,EAAyBs0D,EAAK8pE,gBAAgBl2G,GACtC,mBAARloB,EAA0Bs0D,EAAK+pE,gBAAgBn2G,GACvC,aAARloB,EAAoBs0D,EAAKwiE,UAAU5uG,GAC3B,iBAARloB,EAAwBs0D,EAAKgqE,cAAcp2G,GACnC,cAARloB,IACQ,4BAARA,EAAmCs0D,EAAKiqE,wBAAwBr2G,GACxD,wBAARloB,EAA+Bs0D,EAAKkqE,kBAAkBt2G,GAC9C,qBAARloB,EAA4Bs0D,EAAKmqE,mBAAmBv2G,GAC5C,YAARloB,EAAmBkvF,EAAS4mC,QAAQxhE,EAAMA,EAAKopD,eAAgBppD,EAAKoqE,eAAgBllC,EAAamlC,iBAAiBz2G,IAC1G,YAARloB,EAAyBkoB,GAAKgnE,EAAS4mC,QAAQxhE,EAAMA,EAAKopD,eAAgBppD,EAAKoqE,eAAgB3nC,EAAkBo1B,SACzG,YAARnsH,EAAyBkoB,GAAKgnE,EAAS4mC,QAAQxhE,EAAMA,EAAKopD,eAAgBppD,EAAKoqE,eAAgB3nC,EAAkBq1B,SACzG,aAARpsH,EAA0BkoB,GAAKgnE,EAAS4mC,QAAQxhE,EAAMA,EAAKopD,eAAgBppD,EAAKoqE,eAAgB3nC,EAAkBs1B,UAC1G,YAARrsH,EAAmBs0D,EAAKsqE,WAAWvpC,EAAWnlF,MAAMgY,IAC5C,mBAARloB,GAAoC,aAARA,EAAoBs0D,EAAK+pE,gBAAgBnvC,EAASuS,UAAUntC,EAAKuqE,kBAAmB,KAAO32G,OAAMpoB,EAAYooB,IACjI,iBAARloB,EAAwBs0D,EAAKwqE,iBAAiB52G,GACtC,iBAARloB,EAAwBs0D,EAAKyqE,kBAAkB72G,GACvC,eAARloB,EAAsBs0D,EAAK0qE,gBAAgB92G,GAC/CpiB,QAAQF,IAAI,4CAA8C5F,EAAM,KAAOkoB,KAC7E,CACD,OAAOosC,CACR,CAQyB,2BAAC2qE,GACzB,IAAIC,EAAW,IAAI5oC,EACnB,IAAK,IAAIt2F,KAAOkJ,OAAOoH,KAAK2uH,GAAc,CACxC,IAAI/2G,EAAM+2G,EAAYj/H,GACtB,GAAY,WAARA,EAAkBk/H,EAASlQ,UAAU9mG,QACpC,GAAY,UAARloB,EAAiB,CACxBk/H,EAASC,SAAS,IAClB,IAAIC,EAAiBl3G,EACrB,IAAK,IAAI4qG,KAAiBsM,EACxBF,EAASjkB,WAAWtoG,KAAK+mF,EAAgBq5B,sBAAsBD,EAAcx+D,MAEhF,MACI,GAAY,UAARt0D,EAAiB,CACxBk/H,EAASG,SAAS,IAClB,IAAIC,EAAWp3G,EACf,IAAK,IAAIq3G,KAAWD,EAClBJ,EAASM,WAAW7sH,KAAK+mF,EAAgB+lC,0BAA0BF,GAEtE,MAAM,GAAY,WAARv/H,QACN,GAAY,kBAARA,EAAyBk/H,EAASd,gBAAgB/oC,EAAWnlF,MAAMgY,SACvE,GAAY,6BAARloB,EAAoCk/H,EAASQ,yBAAyBx3G,QAC1E,GAAY,aAARloB,EAAoB,CAC3B,IAAI2/H,EACJ,IACEA,EAAWhpH,KAAKzG,MAAMgY,QACLpoB,IAAb6/H,GAA0BA,EAASt/H,OAAS,GAAGyF,QAAQrE,MAAM,0DAA4Dk+H,EAG9H,CAFC,MAAOt8H,GACPyC,QAAQrE,MAAM,qCAAuCk+H,EAAW,KAAOt8H,EAAE9B,QAC1E,CACF,KACgB,YAARvB,EAAmBk/H,EAASN,WAAWvpC,EAAWnlF,MAAMgY,IAChD,aAARloB,EAAoBk/H,EAASb,gBAAgB,KAAOn2G,OAAMpoB,EAAYooB,GAC9D,cAARloB,GACJ8F,QAAQF,IAAI,oDAAsD5F,EAAM,KAAOkoB,EACrF,CACD,OAAOg3G,CACR,CAE6B,+BAACU,GAC7B,IAAItrE,EAAO,IAAIoiC,EACf,IAAK,IAAI12F,KAAOkJ,OAAOoH,KAAKsvH,GAAkB,CAC5C,IAAI13G,EAAM03G,EAAgB5/H,GACd,oBAARA,EAA2Bs0D,EAAKurE,kBAAkB33G,GACrC,YAARloB,EAAmBs0D,EAAKwrE,aAAa53G,GAC7B,UAARloB,EAAiBs0D,EAAKyrE,SAAS73G,GACvB,WAARloB,GACQ,cAARA,IACQ,cAARA,EAAqBs0D,EAAK0rE,aAAa93G,GAC/B,YAARloB,EAAmBs0D,EAAKwkE,WAAW5wG,GAC3B,UAARloB,EAAiBs0D,EAAK2rE,YAAY/3G,GAC1B,WAARloB,EAAkBs0D,EAAK4rE,UAAUh4G,GACzB,WAARloB,EAAkBs0D,EAAK6rE,UAAUj4G,GACzB,YAARloB,EAAmBs0D,EAAKsqE,WAAWvpC,EAAWnlF,MAAMgY,IAC5C,aAARloB,EAAoBs0D,EAAK+pE,gBAAgB,KAAOn2G,OAAMpoB,EAAYooB,GACtEpiB,QAAQF,IAAI,yDAA2D5F,EAAM,KAAOkoB,GAC1F,CACD,OAAOosC,CACR,CAE+B,iCAAC8rE,GAC/B,IAAIC,EAAO,IAAIlqC,qBACf,IAAK,IAAIn2F,KAAOkJ,OAAOoH,KAAK8vH,GAAoB,CAC9C,IAAIl4G,EAAMk4G,EAAkBpgI,GAChB,kBAARA,EAAyBqgI,EAAKC,gBAAgBp4G,GACjC,YAARloB,EAAmBqgI,EAAKE,aAAar4G,GAC7B,SAARloB,EAAgBqgI,EAAKG,QAAQt4G,GACrB,mBAARloB,EAAwC,KAARkoB,GAAYm4G,EAAKI,iBAAiBv4G,GAC1D,SAARloB,EAAgBqgI,EAAKtK,QAAQ7tG,GACrB,UAARloB,EAAiBqgI,EAAKK,SAASx4G,GACvB,uBAARloB,EAA8BqgI,EAAKM,eAAez4G,GACtDpiB,QAAQF,IAAI,iEAAmE5F,EAAM,KAAOkoB,EAClG,CACD,OAAOm4G,CACR,CAEqC,uCAACpO,GACrC,IAAI7Y,EAAQ,IAAIniB,EAChB,IAAK,IAAIj3F,KAAOkJ,OAAOoH,KAAK2hH,GAAW,CACrC,IAAI/pG,EAAM+pG,EAASjyH,GACP,WAARA,EAAkBo5G,EAAMwiB,UAAUvmC,EAAWnlF,MAAMgY,IACtC,oBAARloB,EAA2Bo5G,EAAMwnB,gBAAgB14G,GACzC,uBAARloB,EAA8Bo5G,EAAMynB,wBAAwB34G,GACpD,qBAARloB,EAA4Bo5G,EAAM0nB,sBAAsB54G,GAC5DpiB,QAAQF,IAAI,2DAA6D5F,EAAM,KAAOkoB,EAC5F,CACD,OAAOkxF,CACR,CAE+B,iCAAC2nB,GAC/Bx6G,EAAOw6G,GACP,IAAIv8H,EAAS,IAAI2yF,EACjB,IAAK,IAAIn3F,KAAOkJ,OAAOoH,KAAKywH,GAAY,CACtC,IAAI74G,EAAM64G,EAAU/gI,GACR,iBAARA,EAAwBwE,EAAOkrH,iBAAiBxnG,GACnC,gBAARloB,EAAuBwE,EAAOw8H,eAAe94G,GACrC,kBAARloB,EAAyBwE,EAAOy8H,mBAAmB/4G,GAC3C,mBAARloB,EAA0BwE,EAAO08H,oBAAoBh5G,GAC7C,oBAARloB,EAA2BwE,EAAO28H,oBAAoBj5G,GAC9C,cAARloB,EAAqBwE,EAAO48H,iBAAiBl5G,GACrC,gBAARloB,EAAuBwE,EAAOgrH,cAActnG,GACpC,cAARloB,EAAqBwE,EAAO68H,eAAen5G,GACnC,WAARloB,EAAkBwE,EAAO88H,UAAkB,KAARp5G,OAAapoB,EAAYooB,GACpD,YAARloB,EAAmBwE,EAAO+8H,YAAYr5G,GAC9B,wBAARloB,EAA+BwE,EAAOg9H,qBAAqBt5G,GACnD,YAARloB,EAAmBwE,EAAOo6H,WAAWvpC,EAAWnlF,MAAMgY,IAC9C,WAARloB,GAA4B,cAARA,IACZ,aAARA,EAAoBwE,EAAO65H,gBAAgB,KAAOn2G,OAAMpoB,EAAYooB,GAC5D,qBAARloB,EAA4BwE,EAAOi9H,mBAAmBv5G,GAC1DpiB,QAAQF,IAAI,+DAAiE5F,EAAM,KAAOkoB,GAChG,CACD,OAAO1jB,CACR,CAE4B,8BAACk9H,GAC5Bn7G,EAAOm7G,GACP,IAAIC,EAAQ,IAAItqC,EAChB,IAAK,IAAIr3F,KAAOkJ,OAAOoH,KAAKoxH,GAAW,CACrC,IAAIx5G,EAAMw5G,EAAS1hI,GACnB,GAAY,cAARA,EAAqB2hI,EAAMC,YAAY15G,QACtC,GAAY,cAARloB,EAAqB2hI,EAAME,YAAY35G,QAC3C,GAAY,cAARloB,EAAqB2hI,EAAMG,YAAY55G,QAC3C,GAAY,gBAARloB,EAAuB2hI,EAAMI,cAAc75G,QAC/C,GAAY,eAARloB,EAAsB2hI,EAAMK,aAAa95G,QAC7C,GAAY,YAARloB,EAAmB2hI,EAAMM,UAAU/5G,QACvC,GAAY,sBAARloB,EAA6B2hI,EAAMO,mBAAmBh6G,QAC1D,GAAY,gBAARloB,EAAuB2hI,EAAMQ,cAAcj6G,QAC/C,GAAY,oBAARloB,EAA2B2hI,EAAMS,iBAAiBl6G,QACtD,GAAY,WAARloB,EAAkB2hI,EAAMU,mBAAmBn6G,QAC/C,GAAY,cAARloB,EAAqB2hI,EAAM7K,UAAU5uG,QACzC,GAAY,cAARloB,EAAqB2hI,EAAMW,YAAYjtC,EAAWnlF,MAAMgY,SAC5D,GAAY,UAARloB,EAAiB,CACxB2hI,EAAMY,SAAS,IAAIzyF,KACnB,IAAK,IAAIjkB,KAAQ3D,EAAKy5G,EAAMa,WAAWluF,IAAIzoB,EAAK3F,MAAO2F,EAAKqlF,IAC7D,MACIprG,QAAQF,IAAI,wDAA0D5F,EAAM,KAAOkoB,EACzF,CAYD,OAT6B,IAAzBy5G,EAAMc,gBAAsBd,EAAMK,kBAAaliI,GACzB,IAAtB6hI,EAAM9K,cACR8K,EAAMG,iBAAYhiI,GAClB6hI,EAAME,iBAAY/hI,GAClB6hI,EAAMC,iBAAY9hI,GAClB6hI,EAAMK,kBAAaliI,GACnB6hI,EAAMU,wBAAmBviI,IAGpB6hI,CACR,CAEyB,2BAACpP,GACzBhsG,EAAOgsG,GACP,IAAImQ,EAAQ,IAAI5sC,EAChB,IAAK,IAAI91F,KAAOkJ,OAAOoH,KAAKiiH,GAAW,CACrC,IAAIrqG,EAAMqqG,EAASvyH,GACP,eAARA,GACa,eAARA,GACQ,qBAARA,IACQ,oBAARA,EAA2B0iI,EAAMxM,cAAchnC,EAASuS,UAAUihC,EAAMvM,gBAAiBz8B,EAAgB08B,iBAAiBluG,KAClH,WAARloB,EAAkB0iI,EAAM1T,UAAU9mG,GAC1B,WAARloB,EAAkB0iI,EAAMC,UAAUz6G,GAC1B,iBAARloB,EAAwB0iI,EAAME,eAAe16G,GACrC,4BAARloB,EAAmC0iI,EAAMG,4BAA4B36G,GACzEpiB,QAAQF,IAAI,4DAA8D5F,EAAM,KAAOkoB,GAC7F,CACD,OAAOw6G,CACR,CAEqB,uBAACzP,GACrB1sG,EAAO0sG,GACP,IAAIjY,EAAO,IAAIzjB,EACf,IAAK,IAAIv3F,KAAOkJ,OAAOoH,KAAK2iH,GAAU,CACpC,IAAI/qG,EAAM+qG,EAAQjzH,GACN,SAARA,EAAgBg7G,EAAKwY,QAAQtrG,GAChB,OAARloB,EAAcg7G,EAAK8nB,MAAM,GAAK56G,GACtB,OAARloB,IACQ,cAARA,EAAqBg7G,EAAK+nB,qBAAqB76G,GACvC,SAARloB,EAAgBg7G,EAAKgoB,QAAQ96G,GACrB,aAARloB,EAAoBg7G,EAAKioB,WAAW/6G,GAC5B,iBAARloB,EAAwBg7G,EAAKsZ,eAAepsG,GACpC,yBAARloB,EAAgCg7G,EAAKkoB,qBAAqB7tC,EAAWnlF,MAAMgY,IAC/EpiB,QAAQF,IAAI,mDAAqD5F,EAAM,KAAOkoB,GACpF,CACD,OAAO8yF,CACR,CAE2B,6BAAC8X,GAC3B,IAAI9X,EAAO,IAAIzjB,EACfyjB,EAAKmY,aAAY,GACjB,IAAK,IAAInzH,KAAOkJ,OAAOoH,KAAKwiH,GAAgB,CAC1C,IAAI5qG,EAAM4qG,EAAc9yH,GACZ,YAARA,EAAmBg7G,EAAKgK,WAAW98F,GACtB,iBAARloB,EAAwBg7G,EAAKmoB,eAAej7G,GACpC,eAARloB,EAAsBg7G,EAAKooB,aAAal7G,GAChC,kBAARloB,EAAyBg7G,EAAK8nB,MAAM56G,GAC5B,qBAARloB,EAA4Bg7G,EAAKqoB,mBAAmBn7G,GAC5C,mBAARloB,EAA0Bg7G,EAAKsoB,iBAAiBp7G,GACxC,WAARloB,EAAkBg7G,EAAKgU,UAAU9mG,GACzB,SAARloB,EAAgBg7G,EAAKwY,QAAQtrG,GACrB,OAARloB,IACQ,aAARA,EAAoBg7G,EAAKuoB,cAAcr7G,GAC/B,cAARloB,EAAqBg7G,EAAKwoB,YAAYt7G,GAC9B,aAARloB,EAAoBg7G,EAAKyoB,aAAav7G,GAC9B,cAARloB,EAAqBg7G,EAAK0oB,eAAex7G,GACjC,YAARloB,EAAmBg7G,EAAK8nB,MAAM56G,GACtB,SAARloB,EAAgBg7G,EAAKgoB,QAAQ12F,SAASpkB,IAC9B,aAARloB,EAAoBg7G,EAAKioB,WAAW/6G,GAC5B,eAARloB,EAAsBg7G,EAAK2oB,eAAez7G,GAClC,mBAARloB,EAA0Bg7G,EAAK4oB,mBAAmB17G,GAC1C,eAARloB,EAAsBg7G,EAAK6oB,YAAY37G,GAC/B,mBAARloB,EAA0Bg7G,EAAK8oB,gBAAgB57G,GACvC,UAARloB,EAAiBg7G,EAAK+kB,SAAS73G,GACvB,kBAARloB,EAAyBg7G,EAAK+oB,mBAAmB77G,GACzC,iBAARloB,EAAwBg7G,EAAKsZ,eAAepsG,GACpC,yBAARloB,EAAgCg7G,EAAKkoB,qBAAqB7tC,EAAWnlF,MAAMgY,IACnE,iBAARloB,EAAwBg7G,EAAKgpB,QAAQ97G,GACzCpiB,QAAQF,IAAI,+CAAiD5F,EAAM,KAAOkoB,GAChF,CACD,OAAO8yF,CACR,CAEsB,wBAACU,GACtB,IAAI6X,EAAS,CAAC,EAKd,OAJAA,EAAO95D,KAAOiiD,EAAIuoB,UAClB1Q,EAAOG,GAAKhY,EAAIwoB,QAChB3Q,EAAO7X,IAAMA,EAAIyoB,WACjB5Q,EAAOK,QAAUlY,EAAIvyB,aACdoqC,CACR,CAE6B,+BAAC6Q,GAC7B,IAAI5lE,EAAS,IAAIs4B,EAQjB,OAPAt4B,EAAO6lE,YAAYD,EAAUE,QAC7B9lE,EAAOkiE,SAAS0D,EAAUG,OAC1B/lE,EAAOgmE,cAAcJ,EAAUpQ,eAC3BoQ,EAAUE,SACZ9lE,EAAOwmD,WAAWof,EAAUx1D,SAC5BpQ,EAAOimE,gBAAgBL,EAAUM,+BAE5BlmE,CACR,CAEkC,oCAACuiE,GAClCx6G,EAAOw6G,GACP,IAAIv8H,EAAS,IAAI+xF,8BACjB,IAAK,IAAIv2F,KAAOkJ,OAAOoH,KAAKywH,GAAY,CACtC,IAAI74G,EAAM64G,EAAU/gI,GACR,aAARA,EAAoBwE,EAAOmgI,WAAWz8G,GACzB,SAARloB,EAAgBwE,EAAO0qH,QAAQhnG,GACvB,SAARloB,GACQ,WAARA,IACQ,WAARA,EAAkBwE,EAAOogI,qBAAqB18G,GACtC,aAARloB,EAAoBwE,EAAOqgI,WAAW38G,GAC9B,YAARloB,EAAmBwE,EAAOs0H,WAAW5wG,GAC7B,cAARloB,GACJ8F,QAAQF,IAAI,kEAAoE5F,EAAM,KAAOkoB,GACnG,CAKD,MAJ4B,KAAxB1jB,EAAOsgI,cAAqBtgI,EAAOmgI,gBAAW7kI,GACtB,KAAxB0E,EAAOugI,cAAqBvgI,EAAOqgI,gBAAW/kI,GACtB,KAAxB0E,EAAOs1F,cAAqBt1F,EAAOs0H,gBAAWh5H,GACzB,KAArB0E,EAAO6sG,WAAkB7sG,EAAO0qH,aAAQpvH,GACrC0E,CACR,CAEqC,uCAACu8H,GACrC,IAAIv8H,EAAS,IAAIgyF,iCAAiCkD,EAAgB+6B,6BAA6BsM,IAG/F,OAFAv8H,EAAOwgI,gBAAgBjE,EAAS,MACC,KAA7Bv8H,EAAOygI,mBAA0BzgI,EAAOwgI,qBAAgBllI,GACrD0E,CACR,CAQsB,wBAAC0gI,GAEtB,OADA3+G,EAA+B,OAAxB2+G,EAAI3vF,UAAU,EAAG,IACjB8/C,EAAWnlF,MAAMg1H,EAAK,GAC9B,EAIHxrC,EAAgBihC,WAAa,mEAC7BjhC,EAAgB87B,aAAe,UAC/B97B,EAAgBm8B,oBAAsB,MAOtC,MAAMhJ,UAA6BrzB,EAIb,qBAAC6H,GACnB,IAAIqS,EAAWxkB,EAASmZ,UAGxB,OAFAhH,EAASn4F,OAAOumC,OAAO,CAAC,EAAG4xD,EAAQ,CAACiB,eAAe,UAC7CrT,EAAasT,aAAamR,EAAU,mBAAoB,CAACrS,IACxD,IAAIwrB,EAAqBnZ,QAAgBzkB,EAAakZ,YAC9D,CAID/+F,YAAYsqG,EAAUnnD,GACpB0gD,QACA/tG,KAAKw0G,SAAWA,EAChBx0G,KAAKqtD,OAASA,EACdrtD,KAAKimI,iBAAmB,EACzB,CAEe,mBAEf,CAEgB,kBAACvX,GAChB,QAAqB9tH,IAAjBZ,KAAKovC,QAAuB,MAAM,IAAIinD,EAAY,8DACtD,IAAIs4B,EAAgB3+B,EAAS+a,UAAU/qG,KAAKmtG,gBAC5C,IAAK,IAAIlD,KAAY0kB,QAAqB3uH,KAAKkqG,eAAeD,GAC9D,OAAOja,EAAS4+B,YAAY5uH,KAAKovC,QAASs/E,EAAQ,eAAY9tH,EAC/D,CAEgB,kBAACqpG,GAChB,IAAIi8B,EAAkB,IAAIC,EAAqBl8B,GAC3CwK,EAAayxB,EAAgBjmB,QAGjC,OAFAlwB,EAAa2Y,eAAe1oG,KAAKw0G,UAAUhuC,UAAU,iBAAmBiuC,GAAc,CAACyxB,EAAgBE,cAAeF,GACtHlmI,KAAKimI,iBAAiBxyH,KAAKyyH,GACpBlmI,KAAKqmI,cAAc,oBAAqB,CAAC5xB,GACjD,CAEmB,qBAACxK,GACnB,IAAK,IAAI/oG,EAAI,EAAGA,EAAIlB,KAAKimI,iBAAiB9kI,OAAQD,IAChD,GAAIlB,KAAKimI,iBAAiB/kI,GAAGolI,gBAAkBr8B,EAAU,CACvD,IAAIwK,EAAaz0G,KAAKimI,iBAAiB/kI,GAAG++G,QAI1C,aAHMjgH,KAAKqmI,cAAc,uBAAwB,CAAC5xB,WAC3C1kB,EAAa2Y,eAAe1oG,KAAKw0G,UAAUhuC,UAAU,iBAAmBiuC,QAC/Ez0G,KAAKimI,iBAAiB/4H,OAAOhM,EAAG,EAEjC,CAEH,MAAM,IAAIm1F,EAAY,yCACvB,CAED8W,eACE,IAAItkD,EAAY,GAChB,IAAK,IAAIq9E,KAAmBlmI,KAAKimI,iBAAkBp9E,EAAUp1C,KAAKyyH,EAAgBI,eAClF,OAAOz9E,CACR,CAEqB,yBACpB,IAAIs5C,QAAeniG,KAAKqmI,cAAc,0BACtC,OAAO,IAAI/vC,EAAoB6L,EAChC,CAEgB,oBACf,OAAOniG,KAAKqmI,cAAc,oBAC3B,CAEe,mBACd,IAAIE,QAAoBvmI,KAAKqmI,cAAc,oBAC3C,OAAO,IAAIjuC,EAAcmuC,EAAYrxH,OAAQqxH,EAAYC,UAC1D,CAEc,kBACb,OAAOxmI,KAAKqmI,cAAc,kBAC3B,CAEc,kBACb,OAAOrmI,KAAKqmI,cAAc,kBAC3B,CAEiB,mBAACnmC,GACjB,OAAOlgG,KAAKqmI,cAAc,qBAAsBrlI,MAAM6uB,KAAKrqB,WAC5D,CAEqB,uBAACiwG,EAAeC,GACpC,OAAO,IAAI1e,QAA0Bh3F,KAAKqmI,cAAc,yBAA0BrlI,MAAM6uB,KAAKrqB,YAC9F,CAEuB,2BACtB,OAAO,IAAIsxF,QAAwB92F,KAAKqmI,cAAc,4BACvD,CAEyB,2BAAC7vB,GACzB,OAAO,IAAI1f,QAAwB92F,KAAKqmI,cAAc,6BAA8BrlI,MAAM6uB,KAAKrqB,YAChG,CAE2B,6BAAC06F,GAC3B,OAAO,IAAIpJ,QAAwB92F,KAAKqmI,cAAc,+BAAgCrlI,MAAM6uB,KAAKrqB,YAClG,CAE2B,6BAAC2wG,EAAaC,GACxC,IAAIC,QAAyBr2G,KAAKqmI,cAAc,+BAAgCrlI,MAAM6uB,KAAKrqB,YACvF6yD,EAAU,GACd,IAAK,IAAIouE,KAAmBpwB,EAAkBh+C,EAAQ5kD,KAAK,IAAIqjF,EAAkB2vC,IACjF,OAAOpuE,CACR,CAEmB,qBAACm+C,GACnB,OAAO,IAAIzf,QAAkB/2F,KAAKqmI,cAAc,uBAAwBrlI,MAAM6uB,KAAKrqB,YACpF,CAEoB,sBAACmxG,EAAaR,EAAaj4C,GAC9C,IAAI04C,QAAmB52G,KAAKqmI,cAAc,wBAAyBrlI,MAAM6uB,KAAKrqB,YAC1EspE,EAAS,GACb,IAAK,IAAI43D,KAAa9vB,EAAY9nC,EAAOr7D,KAAK,IAAIsjF,EAAY2vC,IAC9D,OAAO53D,CACR,CAEqB,uBAACoxB,GACrB,OAAO,IAAInJ,QAAkB/2F,KAAKqmI,cAAc,yBAA0BrlI,MAAM6uB,KAAKrqB,YACtF,CAEsB,wBAAC0xG,GACtB,IAAIN,QAAmB52G,KAAKqmI,cAAc,0BAA2BrlI,MAAM6uB,KAAKrqB,YAC5EspE,EAAS,GACb,IAAK,IAAI43D,KAAa9vB,EAAY9nC,EAAOr7D,KAAK,IAAIsjF,EAAY2vC,IAC9D,OAAO53D,CACR,CAEqB,uBAACqnC,EAAaC,GAClC,IAAIQ,QAAmB52G,KAAKqmI,cAAc,yBAA0BrlI,MAAM6uB,KAAKrqB,YAC3EspE,EAAS,GACb,IAAK,IAAI43D,KAAa9vB,EAAY9nC,EAAOr7D,KAAK,IAAIsjF,EAAY2vC,IAC9D,OAAO53D,CACR,CAE4B,8BAACqnC,EAAaC,EAAWmB,GACpD,IAAIX,QAAmB52G,KAAKqmI,cAAc,gCAAiCrlI,MAAM6uB,KAAKrqB,YAClFspE,EAAS,GACb,IAAK,IAAI43D,KAAa9vB,EAAY9nC,EAAOr7D,KAAK,IAAIsjF,EAAY2vC,IAC9D,OAAO53D,CACR,CAEmB,qBAAC6nC,EAAaR,GAChC,OAAOn2G,KAAKqmI,cAAc,uBAAwBrlI,MAAM6uB,KAAKrqB,WAC9D,CAEW,aAACmyG,EAAUz5C,GAAQ,GAG7B,IAAI4Q,EAAS,GACb,IAAK,IAAI43D,WAAmB1mI,KAAKqmI,cAAc,eAAgBrlI,MAAM6uB,KAAKrqB,YACxEspE,EAAOr7D,KAAK,IAAIsjF,EAAY2vC,IAI9B,IAAI10B,EAAM,GACV,IAAK,IAAI6E,KAAS/nC,EAChB,IAAK,IAAImjC,KAAM4E,EAAMgB,SACd5F,EAAGwnB,eAAexnB,EAAGgG,cAASr3G,GACnCoxG,EAAIv+F,KAAKw+F,GAGb,OAAOD,CACR,CAEe,iBAAC2F,EAAUz5C,GAAQ,GACjC,OAAOl+D,KAAKqmI,cAAc,mBAAoBrlI,MAAM6uB,KAAKrqB,WAC1D,CAEkB,oBAAC06F,EAAQmY,GAC1B,OAAO,IAAI1gB,QAAuB33F,KAAKqmI,cAAc,sBAAuBrlI,MAAM6uB,KAAKrqB,YACxF,CAEmB,qBAACgzG,GACnB,OAAO,IAAIjhB,QAAwBv3F,KAAKqmI,cAAc,uBAAwBrlI,MAAM6uB,KAAKrqB,YAC1F,CAEgB,kBAACmzG,EAAOC,GACvB,OAAO,IAAI3gB,QAA2Bj4F,KAAKqmI,cAAc,oBAAqBrlI,MAAM6uB,KAAKrqB,YAC1F,CAEmB,qBAACmyG,GACnB,OAAO33G,KAAKqmI,cAAc,uBAAwBrlI,MAAM6uB,KAAKrqB,WAC9D,CAEc,kBACb,IAAIkhI,QAAkB1mI,KAAKqmI,cAAc,mBACrCr0B,EAAM,IAAIjb,EAAY2vC,GAAW7uB,SACrC,IAAK,IAAI5F,KAAMD,EAAKC,EAAGgG,cAASr3G,GAChC,OAAOoxG,GAAY,EACpB,CAEoB,wBACnB,OAAOhyG,KAAKqmI,cAAc,wBAAyBrlI,MAAM6uB,KAAKrqB,WAC/D,CAEqB,yBACpB,MAAM,IAAI6wF,EAAY,kBACvB,CAEmB,uBAClB,OAAO,IAAI8B,QAAwBn4F,KAAKqmI,cAAc,wBACvD,CAEgB,kBAAC9sB,GAChB,OAAOv5G,KAAKqmI,cAAc,oBAAqBrlI,MAAM6uB,KAAKrqB,WAC3D,CAE6B,+BAACk0G,GAC7B,OAAO15G,KAAKqmI,cAAc,iCAAkCrlI,MAAM6uB,KAAKrqB,WACxE,CAEe,iBAACi9G,GACf,MAAM,IAAIpsB,EAAY,kBACvB,CAEuB,yBAACwjB,EAASC,EAAUvhE,EAAUwhE,EAAYC,GAChE,IAAI3qC,EAAU,GACd,IAAK,IAAIs3D,WAAmB3mI,KAAKqmI,cAAc,2BAA4B,CAACxsB,EAASC,EAAUvhE,EAAUwhE,EAAYC,IACnH3qC,EAAQ57D,KAAK,IAAIskF,EAA2B4uC,IAE9C,OAAOt3D,CACR,CAE0B,4BAACwqC,EAAS+S,EAAYzW,EAAaC,GAC5D,MAAM,IAAI/f,EAAY,kBACvB,CAEY,gBACX,OAAO,IAAIa,QAAuBl3F,KAAKqmI,cAAc,iBACtD,CAEgB,oBACf,OAAO,IAAIjvC,QAA2Bp3F,KAAKqmI,cAAc,qBAC1D,CAEoB,wBACnB,OAAO,IAAI7uC,QAAyBx3F,KAAKqmI,cAAc,yBACxD,CAEiB,qBAChB,IAAIO,EAAY,GAChB,IAAK,IAAIC,WAAsB7mI,KAAKqmI,cAAc,sBAAuBO,EAAUnzH,KAAK,IAAImjF,EAAeiwC,IAC3G,OAAOD,CACR,CAEsB,0BACrB,OAAO5mI,KAAKqmI,cAAc,0BAC3B,CAEqB,yBACpB,OAAOrmI,KAAKqmI,cAAc,yBAC3B,CAEqB,uBAAC7zH,GACrB,OAAOxS,KAAKqmI,cAAc,yBAA0BrlI,MAAM6uB,KAAKrqB,WAChE,CAEuB,2BACtB,OAAOxF,KAAKqmI,cAAc,2BAC3B,CAEmB,uBAClB,OAAOrmI,KAAKqmI,cAAc,uBAC3B,CAEmB,qBAAC7zH,GACnB,OAAOxS,KAAKqmI,cAAc,uBAAwBrlI,MAAM6uB,KAAKrqB,WAC9D,CAEqB,yBACpB,OAAOxF,KAAKqmI,cAAc,yBAC3B,CAEa,iBACZ,IAAI3S,EAAQ,GACZ,IAAK,IAAIoT,WAAkB9mI,KAAKqmI,cAAc,kBAAmB3S,EAAMjgH,KAAK,IAAI4kF,EAAWyuC,IAC3F,OAAOpT,CACR,CAEkB,sBACjB,IAAIA,EAAQ,GACZ,IAAK,IAAIoT,WAAkB9mI,KAAKqmI,cAAc,uBAAwB3S,EAAMjgH,KAAK,IAAI4kF,EAAWyuC,IAChG,OAAOpT,CACR,CAEyB,2BAAClhH,GACzB,OAAOxS,KAAKqmI,cAAc,6BAA8BrlI,MAAM6uB,KAAKrqB,WACpE,CAEyB,2BAACgN,GACzB,OAAOxS,KAAKqmI,cAAc,6BAA8BrlI,MAAM6uB,KAAKrqB,WACpE,CAEgB,oBACf,IAAIm3G,EAAO,GACX,IAAK,IAAIC,WAAiB58G,KAAKqmI,cAAc,qBAAsB1pB,EAAKlpG,KAAK,IAAIojF,EAAU+lB,IAC3F,OAAOD,CACR,CAEgB,kBAACA,GAChB,IAAIJ,EAAW,GACf,IAAK,IAAIC,KAAOG,EAAMJ,EAAS9oG,KAAK+oG,EAAI1M,UACxC,OAAO9vG,KAAKqmI,cAAc,oBAAqB,CAAC9pB,GACjD,CAEgB,kBAAC7sC,EAASqtC,EAAYC,EAAcC,GACnD,OAAOj9G,KAAKqmI,cAAc,oBAAqBrlI,MAAM6uB,KAAKrqB,WAC3D,CAEe,yBACRxF,KAAKqmI,cAAc,mBAC1B,CAEoB,wBACnB,OAAO,IAAIzuC,QAAyB53F,KAAKqmI,cAAc,yBACxD,CAEiB,mBAACtZ,GACjB,MAAM,IAAI12B,EAAY,kBACvB,CAEoB,sBAAC1nD,GACpB,OAAO,IAAIqpD,QAAwBh4F,KAAKqmI,cAAc,yBACvD,CAEmB,uBAClB,MAAM,IAAIhwC,EAAY,kBACvB,CAEmB,qBAACnsE,GACnB,MAAM,IAAImsE,EAAY,kBACvB,CAES,aACR,KAAOr2F,KAAKimI,iBAAiB9kI,cAAcnB,KAAK+mI,oBAAoB/mI,KAAKimI,iBAAiB,GAAGK,eAC7F,OAAOtmI,KAAKqmI,cAAc,aAC3B,CAE2B,+BAC1B,OAAO,IAAIvvC,QAAwB92F,KAAKqmI,cAAc,gCACvD,CAKkB,oBAACr9B,EAAQnhF,GAC1B,OAAOkoE,EAAasT,aAAarjG,KAAKw0G,SAAUxL,EAAQnhF,EACzD,EASH,MAAMiuG,EAEJ5rH,YAAYokH,GACV,IAAIhsE,EAAOtiD,KACXA,KAAKgnI,QAAU1Y,EACftuH,KAAKinI,QAAU,IAAIxwC,GAAWp+E,uBAAyBiqC,EAAK4kF,MAAS,GACtE,CAEDnR,aAAaoR,GACXnnI,KAAKonI,WAAaD,EACdA,EAAWnnI,KAAKinI,QAAQj9G,MAAMhqB,KAAKgnI,QAAQ7kC,OAAOkrB,cACjDrtH,KAAKinI,QAAQv6B,MACnB,CAES,aACR,IAGE,IAAIx8E,QAAelwB,KAAKgnI,QAAQnxB,qBAGhC,IAAK71G,KAAKqnI,YAER,YADArnI,KAAKqnI,kBAAoBrnI,KAAKgnI,QAAQnxB,sBAKxC,GAAI3lF,EAAOiiF,YAAcnyG,KAAKqnI,YAAYl1B,UAAW,CACnDnyG,KAAKqnI,YAAcn3G,EACnB,IAAK,IAAI+5E,KAAYjqG,KAAKgnI,QAAQ75B,qBAC1BlD,EAASm8B,cAAcl2G,EAEhC,CAIF,CAHC,MAAOzD,GACP7lB,QAAQrE,MAAM,2CACdqE,QAAQrE,MAAMkqB,EACf,CACF,EAQH,MAAM05G,EAEJj8H,YAAY+/F,GACVjqG,KAAKsnI,IAAMt3C,EAASmZ,UACpBnpG,KAAKunI,UAAYt9B,CAClB,CAEDgW,QACE,OAAOjgH,KAAKsnI,GACb,CAEDhB,cACE,OAAOtmI,KAAKunI,SACb,CAEkB,oBAACC,GAClB,OAAOxnI,KAAKunI,UAAUnB,cAAc,IAAItvC,EAAkB0wC,GAC3D,EAGHhoI,EAAOC,QAAU+6F,mBCh3DjB,MAAMnzE,EAASq9B,EAAQ,OASvB,MAAMiyC,EAKW,gBAACruF,GACd+e,EAAgB,IAAT/e,GAAuB,IAATA,GAAuB,IAATA,GAAuB,IAATA,EAAY,+BAAiCA,EAC/F,CAKa,eAACA,GACb,OAAgB,IAATA,GAAuB,IAATA,GAAuB,IAATA,GAAc,CAClD,EAMHquF,EAAe8wC,QAAU,EAKzB9wC,EAAe+wC,KAAO,EAKtB/wC,EAAegxC,KAAO,EAKtBhxC,EAAeixC,IAAM,EAKrBjxC,EAAekxC,IAAM,EAErBroI,EAAOC,QAAUk3F,mBCnDjB,MAAMR,EAAazxC,EAAAA,OAAAA,WAiEnBllD,EAAOC,QA5DP,MAEEyK,YAAYud,QAEe7mB,KADzB6mB,EAAQzd,OAAOumC,OAAO,CAAC,EAAG9oB,IAChBqgH,YAA8BrgH,EAAMqgH,sBAAsB3xC,IAAa1uE,EAAMqgH,WAAa3xC,EAAWnlF,MAAMyW,EAAMqgH,aAC3H9nI,KAAKynB,MAAQA,CACd,CAEDqoF,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,OAElC,OADIznB,KAAKi3H,kBAAiB5kB,EAAKy1B,WAAa9nI,KAAKi3H,gBAAgB1oG,YAC1D8jF,CACR,CAED01B,eAAepxB,GACb,OAAO32G,KAAKynB,MAAMkvF,WACnB,CAED+sB,eAAe/sB,GAEb,OADA32G,KAAKynB,MAAMkvF,YAAcA,EAClB32G,IACR,CAEDi3H,gBACE,OAAOj3H,KAAKynB,MAAMqgH,UACnB,CAED9Q,cAAc8Q,GAEZ,OADA9nI,KAAKynB,MAAMqgH,WAAaA,EACjB9nI,IACR,CAEDq1G,YACE,OAAOr1G,KAAKynB,MAAMy4E,MACnB,CAED4vB,UAAU5vB,GAER,OADAlgG,KAAKynB,MAAMy4E,OAASA,EACblgG,IACR,CAEDgoI,YACE,OAAOhoI,KAAKynB,MAAMtmB,MACnB,CAEDsiI,UAAUtiI,GAER,OADAnB,KAAKynB,MAAMtmB,OAASA,EACbnB,IACR,CAEDioI,8BACE,OAAOjoI,KAAKynB,MAAMygH,wBACnB,CAEDvE,4BAA4BuE,GAE1B,OADAloI,KAAKynB,MAAMygH,yBAA2BA,EAC/BloI,IACR,aCZHR,EAAOC,QA/CP,MAEEyK,YAAYud,GACVznB,KAAKynB,MAAQzd,OAAOumC,OAAO,CAAC,EAAG9oB,EAChC,CAEDqoF,SACE,OAAO9lG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,MAC/B,CAEDs9G,UACE,OAAO/kI,KAAKynB,MAAM8yC,IACnB,CAED+5D,QAAQ/5D,GAEN,OADAv6D,KAAKynB,MAAM8yC,KAAOA,EACXv6D,IACR,CAEDglI,QACE,OAAOhlI,KAAKynB,MAAM+sG,EACnB,CAEDD,MAAMC,GAEJ,OADAx0H,KAAKynB,MAAM+sG,GAAKA,EACTx0H,IACR,CAEDilI,WACE,OAAOjlI,KAAKynB,MAAMw9G,QACnB,CAEDkD,YAAYlD,GAEV,OADAjlI,KAAKynB,MAAMw9G,SAAWA,EACfjlI,IACR,CAEDiqF,aACE,OAAOjqF,KAAKynB,MAAMitG,OACnB,CAEDD,WAAWC,GAET,OADA10H,KAAKynB,MAAMitG,QAAUA,EACd10H,IACR,oBC/CH,MAAMqnB,EAASq9B,EAAQ,OACjBsrC,EAAWtrC,EAAQ,OACnBoyC,EAAoBpyC,EAAQ,OAC5BwzC,EAAWxzC,EAAQ,MACnBo1C,EAAgBp1C,EAAQ,OACxBm1C,EAAiBn1C,EAAQ,OAO/B,MAAMqyC,UAAoBD,EAQxB5sF,YAAYud,EAAO2gH,GAQjB,GAPAr6B,MAAMtmF,KACNA,EAAQznB,KAAKynB,OAGHyxG,SAAazxG,EAAMyxG,mBAAmBhhC,IAAWzwE,EAAMyxG,QAAU,IAAIhhC,EAASzwE,EAAMyxG,SAASjhB,SAASj4G,OAG5GynB,EAAMuqF,IACR,IAAK,IAAI9wG,EAAI,EAAGA,EAAIumB,EAAMuqF,IAAI7wG,OAAQD,IACpC,GAAIknI,IAAWrxC,EAAYkrB,oBAAoBomB,SAAiBznI,IAAXwnI,EAC7C3gH,EAAMuqF,IAAI9wG,aAAcg3F,IAAWzwE,EAAMuqF,IAAI9wG,GAAK,IAAIg3F,EAASzwE,EAAMuqF,IAAI9wG,IAAI+2G,SAASj4G,YACvF,GAAIooI,IAAWrxC,EAAYkrB,oBAAoBqmB,UAC9C7gH,EAAMuqF,IAAI9wG,aAAc24F,IAAiBpyE,EAAMuqF,IAAI9wG,GAAK,IAAI24F,EAAepyE,EAAMuqF,IAAI9wG,IAAI+2G,SAASj4G,WACnG,IAAIooI,IAAWrxC,EAAYkrB,oBAAoBC,SAGpD,MAAM,IAAIhiH,MAAM,yCAA2CkoI,GAFrD3gH,EAAMuqF,IAAI9wG,aAAc44F,IAAgBryE,EAAMuqF,IAAI9wG,GAAK,IAAI44F,EAAcryE,EAAMuqF,IAAI9wG,IAAI+2G,SAASj4G,MAGvG,CAGN,CAEDuoI,SACE,OAAOvoI,KAAKynB,MAAMu+G,GACnB,CAEDnN,OAAOmN,GAEL,OADAhmI,KAAKynB,MAAMu+G,IAAMA,EACVhmI,IACR,CAEDwoI,aACE,OAAOxoI,KAAKynB,MAAMyxG,OACnB,CAEDC,WAAWD,GAET,OADAl5H,KAAKynB,MAAMyxG,QAAUA,EACdl5H,IACR,CAED63G,SACE,OAAO73G,KAAKynB,MAAMuqF,GACnB,CAEDgG,OAAOhG,GAEL,OADAhyG,KAAKynB,MAAMuqF,IAAMA,EACVhyG,IACR,CAEDyoI,cACE,OAAOzoI,KAAKynB,MAAMkwF,QACnB,CAEDohB,YAAYphB,GAEV,OADA33G,KAAKynB,MAAMkwF,SAAWA,EACf33G,IACR,CAEDyG,OACE,OAAO,IAAIswF,EAAY/2F,KACxB,CAED8vG,SACE,IAAIuC,EAAOtE,MAAM+B,SAEjB,GADI9vG,KAAKwoI,eAAcn2B,EAAK6mB,QAAUl5H,KAAKwoI,aAAa14B,UACpD9vG,KAAK63G,SAAU,CACjBxF,EAAKL,IAAM,GACX,IAAK,IAAIC,KAAMjyG,KAAK63G,SAAUxF,EAAKL,IAAIv+F,KAAKw+F,EAAGnC,SAChD,CACD,OAAOuC,CACR,CAEDD,MAAMyE,GAEJ,GADAxvF,EAAOwvF,aAAiB9f,GACpB/2F,OAAS62G,EAAO,OAAO72G,KAiB3B,GAdA+tG,MAAMqE,MAAMyE,GAGZ72G,KAAK64H,OAAO7oC,EAASuS,UAAUviG,KAAKuoI,SAAU1xB,EAAM0xB,WACpDvoI,KAAK+4H,YAAY/oC,EAASuS,UAAUviG,KAAKyoI,cAAe5xB,EAAM4xB,qBAGpC7nI,IAAtBZ,KAAKwoI,cAA4BxoI,KAAKm5H,WAAWtiB,EAAM2xB,mBAChC5nI,IAAvBi2G,EAAM2xB,eACR3xB,EAAM2xB,aAAavwB,SAASj4G,MAC5BA,KAAKwoI,aAAap2B,MAAMyE,EAAM2xB,oBAIT5nI,IAAnBi2G,EAAMgB,SACR,IAAK,IAAI5F,KAAM4E,EAAMgB,SACnB5F,EAAGgG,SAASj4G,MACZ+2F,EAAY2xC,SAAS1oI,KAAK63G,SAAU5F,GAIxC,OAAOjyG,IACR,CAEDuuB,SAASo0E,EAAS,GAChB,IAAIz3F,EAAM6iG,MAAMx/E,SAASo0E,GAAU,KAEnC,GADAz3F,GAAO8kF,EAAS24C,OAAO,MAAO3oI,KAAKuoI,SAAU5lC,GACzC3iG,KAAK63G,SAAU,CACjB3sG,GAAO8kF,EAAS24C,OAAO,MAAO,GAAIhmC,GAClC,IAAK,IAAIsP,KAAMjyG,KAAK63G,SAClB3sG,GAAO+mG,EAAG1jF,SAASo0E,EAAS,GAAK,IAEpC,CAMD,OALI3iG,KAAKwoI,eACPt9H,GAAO8kF,EAAS24C,OAAO,WAAY,GAAIhmC,GACvCz3F,GAAOlL,KAAKwoI,aAAaj6G,SAASo0E,EAAS,GAAK,MAElDz3F,GAAO8kF,EAAS24C,OAAO,aAAc3oI,KAAKyoI,cAAe9lC,GAC1B,OAAxBz3F,EAAIA,EAAI/J,OAAS,GAAc+J,EAAI7G,MAAM,EAAG6G,EAAI/J,OAAS,GAAK+J,CACtE,CAGc,gBAAC8mG,EAAKC,GACnB,IAAK,IAAIC,KAAOF,EACd,GAAIE,EAAIC,YAAcF,EAAGE,UAEvB,YADAD,EAAIE,MAAMH,GAIdD,EAAIv+F,KAAKw+F,EACV,EAGHlb,EAAYkrB,oBAAsB,CAC9BomB,GAAI,EACJC,UAAW,EACXpmB,SAAU,GAGd1iH,EAAOC,QAAUs3F,mBC7JjB,MAAM1vE,EAASq9B,EAAQ,OACjByxC,EAAazxC,EAAAA,OAAAA,WACbsrC,EAAWtrC,EAAQ,OAOzB,MAAMoyC,EAOJ5sF,YAAYud,GAGV,GAAKA,EACA,GAAIA,aAAiBqvE,EAAmBrvE,EAAQA,EAAMqoF,aACtD,IAAqB,iBAAVroF,EACX,MAAM,IAAI4uE,YAAY,0DADS5uE,EAAQzd,OAAOumC,OAAO,CAAC,EAAG9oB,EACzD,MAHOA,EAAQ,CAAC,EAIrBznB,KAAKynB,MAAQA,OAGY7mB,IAArB6mB,EAAMqgH,YAA8BrgH,EAAMqgH,sBAAsB3xC,IAAa1uE,EAAMqgH,WAAa3xC,EAAWnlF,MAAMyW,EAAMqgH,kBACxFlnI,IAA/B6mB,EAAMmhH,sBAAwCnhH,EAAMmhH,gCAAgCzyC,IAAa1uE,EAAMmhH,qBAAuBzyC,EAAWnlF,MAAMyW,EAAMmhH,4BACpIhoI,IAAjB6mB,EAAMohH,QAA0BphH,EAAMohH,kBAAkB1yC,IAAa1uE,EAAMohH,OAAS1yC,EAAWnlF,MAAMyW,EAAMohH,QAChH,CAEDpiI,OACE,OAAO,IAAIqwF,EAAkB92F,KAC9B,CAED8vG,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,OAIlC,OAHIznB,KAAKi3H,kBAAiB5kB,EAAKy1B,WAAa9nI,KAAKi3H,gBAAgB1oG,YAC7DvuB,KAAKo3H,4BAA2B/kB,EAAKu2B,qBAAuB5oI,KAAKo3H,0BAA0B7oG,YAC3FvuB,KAAKi4H,cAAa5lB,EAAKw2B,OAAS7oI,KAAKi4H,YAAY1pG,YAC9C8jF,CACR,CAEDF,UACE,OAAOnyG,KAAKynB,MAAMvQ,IACnB,CAED84G,QAAQ94G,GAEN,OADAlX,KAAKynB,MAAMvQ,KAAOA,EACXlX,IACR,CAODq1G,YACE,OAAOr1G,KAAKynB,MAAMy4E,MACnB,CAQD4vB,UAAU5vB,GAER,OADAlgG,KAAKynB,MAAMy4E,OAASA,EACblgG,IACR,CAEDm4H,eACE,OAAOn4H,KAAKynB,MAAM4jD,SACnB,CAED+sD,aAAa/sD,GAEX,OADArrE,KAAKynB,MAAM4jD,UAAYA,EAChBrrE,IACR,CAEDy2H,UACE,OAAOz2H,KAAKynB,MAAM4I,IACnB,CAEDwmG,QAAQxmG,GAEN,OADArwB,KAAKynB,MAAM4I,KAAOA,EACXrwB,IACR,CAEDq4H,YACE,OAAOr4H,KAAKynB,MAAMqhH,MACnB,CAEDxQ,UAAUwQ,GAER,OADA9oI,KAAKynB,MAAMqhH,OAASA,EACb9oI,IACR,CAEDu4H,oBACE,OAAOv4H,KAAKynB,MAAMshH,cACnB,CAEDvQ,kBAAkBuQ,GAEhB,OADA/oI,KAAKynB,MAAMshH,eAAiBA,EACrB/oI,IACR,CAED82H,WACE,OAAO92H,KAAKynB,MAAMwvB,KACnB,CAED8/E,SAAS9/E,GAEP,OADAj3C,KAAKynB,MAAMwvB,MAAQA,EACZj3C,IACR,CAEDi3H,gBACE,OAAOj3H,KAAKynB,MAAMqgH,UACnB,CAED9Q,cAAc8Q,GAEZ,OADA9nI,KAAKynB,MAAMqgH,WAAaA,EACjB9nI,IACR,CAEDo3H,0BACE,OAAOp3H,KAAKynB,MAAMmhH,oBACnB,CAEDzR,wBAAwByR,GAEtB,OADA5oI,KAAKynB,MAAMmhH,qBAAuBA,EAC3B5oI,IACR,CAEDq3H,kBACE,OAAOr3H,KAAKynB,MAAMuhH,YACnB,CAED1R,gBAAgB0R,GAEd,OADAhpI,KAAKynB,MAAMuhH,aAAeA,EACnBhpI,IACR,CAEDu3H,kBACE,OAAOv3H,KAAKynB,MAAMwhH,YACnB,CAEDzR,gBAAgByR,GAEd,OADAjpI,KAAKynB,MAAMwhH,aAAeA,EACnBjpI,IACR,CAEDy3H,WACE,OAAOz3H,KAAKynB,MAAMq+E,KACnB,CAED4xB,SAAS5xB,GAEP,OADA9lG,KAAKynB,MAAMq+E,MAAQA,EACZ9lG,IACR,CAEDkpI,iBACE,OAAOlpI,KAAKynB,MAAM0hH,WACnB,CAEDxQ,eAAewQ,GAEb,OADAnpI,KAAKynB,MAAM0hH,YAAcA,EAClBnpI,IACR,CAED23H,YACE,OAAO33H,KAAKynB,MAAM2hH,MACnB,CAEDxR,UAAUwR,GAER,OADAppI,KAAKynB,MAAM2hH,OAASA,EACbppI,IACR,CAED63H,kBACE,OAAO73H,KAAKynB,MAAM4hH,YACnB,CAEDvR,gBAAgBuR,GAEd,OADArpI,KAAKynB,MAAM4hH,aAAeA,EACnBrpI,IACR,CAED+3H,cACE,OAAO/3H,KAAKynB,MAAM6hH,QACnB,CAEDtR,YAAYsR,GAEV,OADAtpI,KAAKynB,MAAM6hH,SAAWA,EACftpI,IACR,CAEDi4H,YACE,OAAOj4H,KAAKynB,MAAMohH,MACnB,CAED3Q,UAAU2Q,GAER,OADA7oI,KAAKynB,MAAMohH,OAASA,EACb7oI,IACR,CAEDy4H,aACE,OAAOz4H,KAAKynB,MAAM8hH,OACnB,CAED7Q,WAAW6Q,GAET,OADAvpI,KAAKynB,MAAM8hH,QAAUA,EACdvpI,IACR,CAEDoyG,MAAMliF,GAEJ,OADA7I,EAAO6I,aAAkB4mE,GACrB92F,OAASkwB,IACblwB,KAAKgwH,QAAQhgC,EAASuS,UAAUviG,KAAKmyG,UAAWjiF,EAAOiiF,YACvDnyG,KAAK8vH,UAAU9/B,EAASuS,UAAUviG,KAAKq1G,YAAanlF,EAAOmlF,YAAa,CAAC3S,YAAY,KACrF1iG,KAAKo4H,aAAapoC,EAASuS,UAAUviG,KAAKm4H,eAAgBjoG,EAAOioG,eAAgB,CAACz1B,YAAY,KAC9F1iG,KAAK62H,QAAQ7mC,EAASuS,UAAUviG,KAAKy2H,UAAWvmG,EAAOumG,YACvDz2H,KAAKs4H,UAAUtoC,EAASuS,UAAUviG,KAAKq4H,YAAanoG,EAAOmoG,cAC3Dr4H,KAAK+2H,SAAS/mC,EAASuS,UAAUviG,KAAK82H,WAAY5mG,EAAO4mG,aACzD92H,KAAKg3H,cAAchnC,EAASuS,UAAUviG,KAAKi3H,gBAAiB/mG,EAAO+mG,kBACnEj3H,KAAKm3H,wBAAwBnnC,EAASuS,UAAUviG,KAAKo3H,0BAA2BlnG,EAAOknG,4BACvFp3H,KAAKs3H,gBAAgBtnC,EAASuS,UAAUviG,KAAKq3H,kBAAmBnnG,EAAOmnG,oBACvEr3H,KAAKw3H,gBAAgBxnC,EAASuS,UAAUviG,KAAKu3H,kBAAmBrnG,EAAOqnG,oBACvEv3H,KAAK03H,SAAS1nC,EAASuS,UAAUviG,KAAKy3H,WAAYvnG,EAAOunG,aACzDz3H,KAAK24H,eAAe3oC,EAASuS,UAAUviG,KAAKkpI,iBAAkBh5G,EAAOg5G,mBACrElpI,KAAK43H,UAAU5nC,EAASuS,UAAUviG,KAAK23H,YAAaznG,EAAOynG,cAC3D33H,KAAK83H,gBAAgB9nC,EAASuS,UAAUviG,KAAK63H,kBAAmB3nG,EAAO2nG,oBACvE73H,KAAKg4H,YAAYhoC,EAASuS,UAAUviG,KAAK+3H,cAAe7nG,EAAO6nG,gBAC/D/3H,KAAKk4H,UAAUloC,EAASuS,UAAUviG,KAAKi4H,YAAa/nG,EAAO+nG,cAC3Dj4H,KAAK04H,WAAW1oC,EAASuS,UAAUviG,KAAKy4H,aAAcvoG,EAAOuoG,gBAjBjCz4H,IAmB7B,CAEDuuB,SAASo0E,EAAS,GAChB,IAAIz3F,EAAM,GAkBV,OAjBAA,GAAO8kF,EAAS24C,OAAO,OAAQ3oI,KAAKmyG,UAAWxP,GAC/Cz3F,GAAO8kF,EAAS24C,OAAO,SAAU3oI,KAAKq1G,YAAa1S,GACnDz3F,GAAO8kF,EAAS24C,OAAO,YAAa3oI,KAAKm4H,eAAgBx1B,GACzDz3F,GAAO8kF,EAAS24C,OAAO,OAAQ3oI,KAAKy2H,UAAW9zB,GAC/Cz3F,GAAO8kF,EAAS24C,OAAO,SAAU3oI,KAAKq4H,YAAa11B,GACnDz3F,GAAO8kF,EAAS24C,OAAO,QAAS3oI,KAAK82H,WAAYn0B,GACjDz3F,GAAO8kF,EAAS24C,OAAO,aAAc3oI,KAAKi3H,gBAAiBt0B,GAC3Dz3F,GAAO8kF,EAAS24C,OAAO,wBAAyB3oI,KAAKo3H,0BAA2Bz0B,GAChFz3F,GAAO8kF,EAAS24C,OAAO,gBAAiB3oI,KAAKq3H,kBAAmB10B,GAChEz3F,GAAO8kF,EAAS24C,OAAO,gBAAiB3oI,KAAKu3H,kBAAmB50B,GAChEz3F,GAAO8kF,EAAS24C,OAAO,QAAS3oI,KAAKy3H,WAAY90B,GACjDz3F,GAAO8kF,EAAS24C,OAAO,gBAAiB3oI,KAAKkpI,iBAAkBvmC,GAC/Dz3F,GAAO8kF,EAAS24C,OAAO,UAAW3oI,KAAK23H,YAAah1B,GACpDz3F,GAAO8kF,EAAS24C,OAAO,gBAAiB3oI,KAAK63H,kBAAmBl1B,GAChEz3F,GAAO8kF,EAAS24C,OAAO,YAAa3oI,KAAK+3H,cAAep1B,GACxDz3F,GAAO8kF,EAAS24C,OAAO,SAAU3oI,KAAKi4H,YAAat1B,GACnDz3F,GAAO8kF,EAAS24C,OAAO,WAAY3oI,KAAKy4H,aAAc91B,GACvB,OAAxBz3F,EAAIA,EAAI/J,OAAS,GAAc+J,EAAI7G,MAAM,EAAG6G,EAAI/J,OAAS,GAAK+J,CACtE,EAGH1L,EAAOC,QAAUq3F,mBCtQjB,MAAMX,EAAazxC,EAAAA,OAAAA,WAyHnBllD,EAAOC,QApHP,MAEEyK,YAAYud,GACVA,EAAQzd,OAAOumC,OAAO,CAAC,EAAG9oB,GAC1BznB,KAAKynB,MAAQA,OAGgB7mB,IAAzB6mB,EAAM+hH,gBAAkC/hH,EAAM+hH,0BAA0BrzC,IAAa1uE,EAAM+hH,eAAiBrzC,EAAWnlF,MAAMyW,EAAM+hH,sBAC9G5oI,IAArB6mB,EAAMqgH,YAA8BrgH,EAAMqgH,sBAAsB3xC,IAAa1uE,EAAMqgH,WAAa3xC,EAAWnlF,MAAMyW,EAAMqgH,YAC5H,CAEDh4B,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,OAGlC,OAFIznB,KAAKypI,sBAAqBp3B,EAAKm3B,eAAiBxpI,KAAKypI,oBAAoBl7G,YACzEvuB,KAAKi3H,kBAAiB5kB,EAAKy1B,WAAa9nI,KAAKi3H,gBAAgB1oG,YAC1D8jF,CACR,CAEDvC,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,OAGlC,OAFI4qF,EAAKm3B,iBAAgBn3B,EAAKm3B,eAAiBn3B,EAAKm3B,eAAej7G,YAC/D8jF,EAAKy1B,aAAYz1B,EAAKy1B,WAAaz1B,EAAKy1B,WAAWv5G,YAChD8jF,CACR,CAEDq3B,uBACE,OAAO1pI,KAAKynB,MAAMkiH,iBACnB,CAEDnM,qBAAqBmM,GAEnB,OADA3pI,KAAKynB,MAAMkiH,kBAAoBA,EACxB3pI,IACR,CAED4pI,sBACE,OAAO5pI,KAAKynB,MAAMoiH,gBACnB,CAEDpM,oBAAoBoM,GAElB,OADA7pI,KAAKynB,MAAMoiH,iBAAmBA,EACvB7pI,IACR,CAEDi3H,gBACE,OAAOj3H,KAAKynB,MAAMqgH,UACnB,CAED9Q,cAAc8Q,GAEZ,OADA9nI,KAAKynB,MAAMqgH,WAAaA,EACjB9nI,IACR,CAEDypI,oBACE,OAAOzpI,KAAKynB,MAAM+hH,cACnB,CAED9L,kBAAkB8L,GAEhB,OADAxpI,KAAKynB,MAAM+hH,eAAiBA,EACrBxpI,IACR,CAEDq1G,YACE,OAAOr1G,KAAKynB,MAAMy4E,MACnB,CAED4vB,UAAU5vB,GAER,OADAlgG,KAAKynB,MAAMy4E,OAASA,EACblgG,IACR,CAED+3H,cACE,OAAO/3H,KAAKynB,MAAMqiH,MACnB,CAED9R,YAAY8R,GAEV,OADA9pI,KAAKynB,MAAMqiH,OAASA,EACb9pI,IACR,CAED+pI,oBACE,OAAO/pI,KAAKynB,MAAMuiH,cACnB,CAEDrM,kBAAkBqM,GAEhB,OADAhqI,KAAKynB,MAAMuiH,eAAiBA,EACrBhqI,IACR,CAEDiqI,gBACE,OAAOjqI,KAAKynB,MAAMy4E,MACnB,CAED09B,cAAcsM,GAEZ,OADAlqI,KAAKynB,MAAMyiH,WAAaA,EACjBlqI,IACR,CAEDmqI,cACE,OAAOnqI,KAAKynB,MAAM2iH,QACnB,CAEDvM,YAAYuM,GAEV,OADApqI,KAAKynB,MAAM2iH,SAAWA,EACfpqI,IACR,CAED+9H,kBACE,OAAO/9H,KAAKynB,MAAM4iH,YACnB,CAEDvM,gBAAgBuM,GAEd,OADArqI,KAAKynB,MAAM4iH,aAAeA,EACnBrqI,IACR,cCzCHR,EAAOC,QA1EP,MAEEyK,YAAYud,GACVznB,KAAKynB,MAAQzd,OAAOumC,OAAO,CAAC,EAAG9oB,EAChC,CAEDqoF,SACE,OAAO9lG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,MAC/B,CAED6iH,kBACE,OAAOtqI,KAAKynB,MAAM8iH,YACnB,CAEDnJ,gBAAgBmJ,GAEd,OADAvqI,KAAKynB,MAAM8iH,aAAeA,EACnBvqI,IACR,CAEDwqI,eACE,OAAOxqI,KAAKynB,MAAM4wF,SACnB,CAEDgpB,aAAahpB,GAEX,OADAr4G,KAAKynB,MAAM4wF,UAAYA,EAChBr4G,IACR,CAEDyqI,mBACE,OAAOzqI,KAAKynB,MAAMijH,aACnB,CAEDnJ,iBAAiBmJ,GAEf,OADA1qI,KAAKynB,MAAMijH,cAAgBA,EACpB1qI,IACR,CAED2qI,UACE,OAAO3qI,KAAKynB,MAAMmjH,IACnB,CAEDtJ,QAAQsJ,GAEN,OADA5qI,KAAKynB,MAAMmjH,KAAOA,EACX5qI,IACR,CAED6qI,WACE,OAAO7qI,KAAKynB,MAAM49G,KACnB,CAED7D,SAAS6D,GAEP,OADArlI,KAAKynB,MAAM49G,MAAQA,EACZrlI,IACR,CAEDy2H,UACE,OAAOz2H,KAAKynB,MAAM4I,IACnB,CAEDwmG,QAAQxmG,GAEN,OADArwB,KAAKynB,MAAM4I,KAAOA,EACXrwB,IACR,CAED8qI,iBACE,OAAO9qI,KAAKynB,MAAM0uF,WACnB,CAEDsrB,eAAetrB,GAEb,OADAn2G,KAAKynB,MAAM0uF,YAAcA,EAClBn2G,IACR,oBC1EH,MAAMm2F,EAAazxC,EAAAA,OAAAA,WAmUnBllD,EAAOC,QA9TP,MAEEyK,YAAYud,GACVA,EAAQzd,OAAOumC,OAAO,CAAC,EAAG9oB,GAC1BznB,KAAKynB,MAAQA,OAGY7mB,IAArB6mB,EAAMqgH,YAA8BrgH,EAAMqgH,sBAAsB3xC,IAAa1uE,EAAMqgH,WAAa3xC,EAAWnlF,MAAMyW,EAAMqgH,kBACxFlnI,IAA/B6mB,EAAMmhH,sBAAwCnhH,EAAMmhH,gCAAgCzyC,IAAa1uE,EAAMmhH,qBAAuBzyC,EAAWnlF,MAAMyW,EAAMmhH,4BACnIhoI,IAAlB6mB,EAAMsjH,SAA2BtjH,EAAMsjH,mBAAmB50C,IAAa1uE,EAAMsjH,QAAU50C,EAAWnlF,MAAMyW,EAAMsjH,SACnH,CAEDj7B,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,GAAIvwC,KAAKynB,OAIlC,OAHI4qF,EAAKy1B,aAAYz1B,EAAKy1B,WAAaz1B,EAAKy1B,WAAWv5G,YACnD8jF,EAAKu2B,uBAAsBv2B,EAAKu2B,qBAAuBv2B,EAAKu2B,qBAAqBr6G,YACjF8jF,EAAK04B,UAAS14B,EAAK04B,QAAU14B,EAAK04B,QAAQx8G,YACvC8jF,CACR,CAEDzX,aACE,OAAO56F,KAAKynB,MAAMkgF,OACnB,CAEDiyB,WAAWjyB,GAET,OADA3nG,KAAKynB,MAAMkgF,QAAUA,EACd3nG,IACR,CAEDgrI,kBACE,OAAOhrI,KAAKynB,MAAMwjH,YACnB,CAEDhN,gBAAgBgN,GAEd,OADAjrI,KAAKynB,MAAMwjH,aAAeA,EACnBjrI,IACR,CAEDkrI,oBACE,OAAOlrI,KAAKynB,MAAM0jH,cACnB,CAEDjN,kBAAkBiN,GAEhB,OADAnrI,KAAKynB,MAAM0jH,eAAiBA,EACrBnrI,IACR,CAEDorI,qBACE,OAAOprI,KAAKynB,MAAM4jH,eACnB,CAEDlN,mBAAmBkN,GAEjB,OADArrI,KAAKynB,MAAM4jH,gBAAkBA,EACtBrrI,IACR,CAEDsrI,sBACE,OAAOtrI,KAAKynB,MAAM8jH,gBACnB,CAEDnN,oBAAoBmN,GAElB,OADAvrI,KAAKynB,MAAM8jH,iBAAmBA,EACvBvrI,IACR,CAEDwrI,uBACE,OAAOxrI,KAAKynB,MAAMgkH,iBACnB,CAEDpN,qBAAqBoN,GAEnB,OADAzrI,KAAKynB,MAAMgkH,kBAAoBA,EACxBzrI,IACR,CAED0rI,4BACE,OAAO1rI,KAAKynB,MAAMkkH,sBACnB,CAEDrN,0BAA0BqN,GAExB,OADA3rI,KAAKynB,MAAMkkH,uBAAyBA,EAC7B3rI,IACR,CAEDi3H,gBACE,OAAOj3H,KAAKynB,MAAMqgH,UACnB,CAED9Q,cAAc8Q,GAEZ,OADA9nI,KAAKynB,MAAMqgH,WAAaA,EACjB9nI,IACR,CAEDo3H,0BACE,OAAOp3H,KAAKynB,MAAMmhH,oBACnB,CAEDzR,wBAAwByR,GAEtB,OADA5oI,KAAKynB,MAAMmhH,qBAAuBA,EAC3B5oI,IACR,CAED4rI,eACE,OAAO5rI,KAAKynB,MAAMokH,SACnB,CAEDtN,aAAasN,GAEX,OADA7rI,KAAKynB,MAAMokH,UAAYA,EAChB7rI,IACR,CAED8rI,qBACE,OAAO9rI,KAAKynB,MAAMskH,eACnB,CAEDtN,mBAAmBsN,GAEjB,OADA/rI,KAAKynB,MAAMskH,gBAAkBA,EACtB/rI,IACR,CAEDgsI,oBACE,OAAOhsI,KAAKynB,MAAMwkH,cACnB,CAED3M,kBAAkB2M,GAEhB,OADAjsI,KAAKynB,MAAMwkH,eAAiBA,EACrBjsI,IACR,CAEDq1G,YACE,OAAOr1G,KAAKynB,MAAMy4E,MACnB,CAED4vB,UAAU5vB,GAER,OADAlgG,KAAKynB,MAAMy4E,OAASA,EACblgG,IACR,CAEDksI,4BACE,OAAOlsI,KAAKynB,MAAM0kH,sBACnB,CAEDzN,0BAA0ByN,GAExB,OADAnsI,KAAKynB,MAAM0kH,uBAAyBA,EAC7BnsI,IACR,CAEDw+G,iBACE,OAAOx+G,KAAKynB,MAAM0pF,WACnB,CAEDquB,eAAeruB,GAEb,OADAnxG,KAAKynB,MAAM0pF,YAAcA,EAClBnxG,IACR,CAEDosI,YACE,OAAOpsI,KAAKynB,MAAM2kH,SACnB,CAEDxN,aAAawN,GAEX,OADApsI,KAAKynB,MAAM2kH,UAAYA,EAChBpsI,IACR,CAEDqsI,4BACE,OAAOrsI,KAAKynB,MAAM6kH,sBACnB,CAED3N,0BAA0B2N,GAExB,OADAtsI,KAAKynB,MAAM6kH,uBAAyBA,EAC7BtsI,IACR,CAEDusI,4BACE,OAAOvsI,KAAKynB,MAAM+kH,sBACnB,CAED3N,0BAA0B2N,GAExB,OADAxsI,KAAKynB,MAAM+kH,uBAAyBA,EAC7BxsI,IACR,CAEDysI,uBACE,OAAOzsI,KAAKynB,MAAMilH,iBACnB,CAED5N,qBAAqB4N,GAEnB,OADA1sI,KAAKynB,MAAMilH,kBAAoBA,EACxB1sI,IACR,CAED2sI,oBACE,OAAO3sI,KAAKynB,MAAMmlH,cACnB,CAED7N,kBAAkB6N,GAEhB,OADA5sI,KAAKynB,MAAMmlH,eAAiBA,EACrB5sI,IACR,CAED6sI,uBACE,OAAO7sI,KAAKynB,MAAMqlH,iBACnB,CAED9N,qBAAqB8N,GAEnB,OADA9sI,KAAKynB,MAAMqlH,kBAAoBA,EACxB9sI,IACR,CAED+sI,YACE,OAAO/sI,KAAKynB,MAAMktB,MACnB,CAEDsqF,UAAUtqF,GAER,OADA30C,KAAKynB,MAAMktB,OAASA,EACb30C,IACR,CAEDgtI,kBACE,OAAOhtI,KAAKynB,MAAMwlH,YACnB,CAED/N,gBAAgB+N,GAEd,OADAjtI,KAAKynB,MAAMwlH,aAAeA,EACnBjtI,IACR,CAED2/H,kBACE,OAAO3/H,KAAKynB,MAAMylH,YACnB,CAED/N,gBAAgB+N,GAEd,OADAltI,KAAKynB,MAAMylH,aAAeA,EACnBltI,IACR,CAED23H,YACE,OAAO33H,KAAKynB,MAAM2hH,MACnB,CAEDxR,UAAUwR,GAER,OADAppI,KAAKynB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ED1Y,gBAAgB0Y,GAEd,OADA30I,KAAKynB,MAAMktH,aAAeA,EACnB30I,IACR,CAEDy2H,UACE,OAAOz2H,KAAKynB,MAAM4I,IACnB,CAEDwmG,QAAQxmG,GAEN,OADArwB,KAAKynB,MAAM4I,KAAOA,EACXrwB,IACR,CAEDq4H,YACE,OAAOr4H,KAAKynB,MAAMqhH,MACnB,CAEDxQ,UAAUwQ,GAER,OADA9oI,KAAKynB,MAAMqhH,OAASA,EACb9oI,IACR,CAED40I,YACE,OAAO50I,KAAKynB,MAAMksH,MACnB,CAED3Z,UAAU2Z,GAER,OADA3zI,KAAKynB,MAAMksH,OAASA,EACb3zI,IACR,CAEDuiH,aACE,OAAOviH,KAAKynB,MAAMg7F,OACnB,CAED0X,WAAW1X,GAET,OADAziH,KAAKynB,MAAMg7F,QAAUA,EACdziH,IACR,CAED+6H,mBACE,OAAO/6H,KAAKynB,MAAMotH,aACnB,CAED7Z,iBAAiB6Z,GAEf,OADA70I,KAAKynB,MAAMotH,cAAgBA,EACpB70I,IACR,CAED80I,cACE,OAAO90I,KAAKynB,MAAMstH,QACnB,CAEDC,YAAYD,GAEV,OADA/0I,KAAKynB,MAAMstH,SAAWA,EACf/0I,IACR,CAED65H,WACE,OAAO75H,KAAKynB,MAAMwtH,KACnB,CAEDnb,SAASmb,GAEP,OADAj1I,KAAKynB,MAAMwtH,MAAQA,EACZj1I,IACR,CAEDq6H,mBACE,OAAOr6H,KAAKynB,MAAMytH,aACnB,CAED5a,iBAAiB4a,GAEf,OADAl1I,KAAKynB,MAAMytH,cAAgBA,EACpBl1I,IACR,CAEDy6H,oBACE,OAAOz6H,KAAKynB,MAAM0tH,cACnB,CAEDza,kBAAkBya,GAEhB,OADAn1I,KAAKynB,MAAM0tH,eAAiBA,EACrBn1I,IACR,CAEDk7H,gBACE,OAAQl7H,KAAKynB,MAAMyzG,aACpB,CAEDC,iBAAiBD,GAEf,OADAl7H,KAAKynB,MAAMyzG,cAAgBA,EACpBl7H,IACR,CAEDs7H,WACE,OAAOt7H,KAAKynB,MAAM6zG,QACnB,CAED/K,YAAY+K,GAEV,OADAt7H,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A,EACtBp2I,IACR,CAEDq2I,YACE,OAAOr2I,KAAKynB,MAAM6uH,MACnB,CAEDvT,UAAUuT,GAER,OADAt2I,KAAKynB,MAAM6uH,OAASA,EACbt2I,IACR,CAEDu2I,cACE,OAAOv2I,KAAKynB,MAAMouH,QACnB,CAEDzS,YAAYyS,GAEV,OADA71I,KAAKynB,MAAMouH,SAAWA,EACf71I,IACR,CAEDw2I,cACE,OAAOx2I,KAAKynB,MAAMgvH,QACnB,CAED/T,YAAY+T,GAEV,OADAz2I,KAAKynB,MAAMgvH,SAAWA,EACfz2I,IACR,CAED02I,cACE,OAAO12I,KAAKynB,MAAMkvH,QACnB,CAEDhU,YAAYgU,GAEV,OADA32I,KAAKynB,MAAMkvH,SAAWA,EACf32I,IACR,CAED42I,cACE,OAAO52I,KAAKynB,MAAMovH,QACnB,CAEDjU,YAAYiU,GAEV,OADA72I,KAAKynB,MAAMovH,SAAWA,EACf72I,IACR,CAED82I,gBACE,OAAO92I,KAAKynB,MAAMsvH,UACnB,CAEDlU,cAAckU,GAEZ,OADA/2I,KAAKynB,MAAMsvH,WAAaA,EACjB/2I,IACR,CAGDsjI,WACE,OAAOtjI,KAAKynB,MAAMquH,KACnB,CAEDzS,SAASyS,GAEP,OADA91I,KAAKynB,MAAMquH,MAAQA,EACZ91I,IACR,CAEDujI,eACE,OAAOvjI,KAAKynB,MAAMuvH,SACnB,CAEDlU,aAAakU,GAEX,OADAh3I,KAAKynB,MAAMuvH,UAAYA,EAChBh3I,IACR,CAEDi3I,qBACE,OAAOj3I,KAAKynB,MAAMyvH,eACnB,CAED/T,mBAAmB+T,GAEjB,OADAl3I,KAAKynB,MAAMyvH,gBAAkBA,EACtBl3I,IACR,cC5FHR,EAAOC,QAzCP,MAQEyK,YAAYgL,EAAQsxH,GAClBxmI,KAAKynB,MAAQ,CAAC,EACdznB,KAAKynB,MAAMvS,OAASA,EACpBlV,KAAKynB,MAAM++G,UAAYA,CACxB,CAED2Q,YACE,OAAOn3I,KAAKynB,MAAMvS,MACnB,CAEDkiI,UAAUliI,GAER,OADAlV,KAAKynB,MAAMvS,OAASA,EACblV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0BzM,OAAOrmJ,GAAW,GACrEqxG,EAAG+iD,SAASpxC,GACZA,EAAM/L,SAASpkG,KAAKw+F,EACrB,CACF,KACgB,YAARnxG,GACJ8F,QAAQF,IAAI,0DAA4D5F,EAAM,KAAOkoB,EAC3F,CACD,OAAO46F,CACR,CAYoB,sBAAC2yC,EAAStkD,GAC7B,IAAI6lC,EACJ,GAAgB,OAAZye,EACFze,GAAa,EACb7lC,EAAGie,gBAAe,GAClBje,EAAGke,aAAY,GACfle,EAAGqe,cAAa,GAChBre,EAAGoe,UAAS,GACZpe,EAAGse,aAAY,GACfte,EAAGme,cAAa,QACX,GAAgB,QAAZmmC,EACTze,GAAa,EACb7lC,EAAGie,gBAAe,GAClBje,EAAGke,aAAY,GACfle,EAAGqe,cAAa,GAChBre,EAAGoe,UAAS,GACZpe,EAAGse,aAAY,GACfte,EAAGme,cAAa,QACX,GAAgB,SAAZmmC,EACTze,GAAa,EACb7lC,EAAGie,gBAAe,GAClBje,EAAGke,aAAY,GACfle,EAAGqe,cAAa,GAChBre,EAAGoe,UAAS,GACZpe,EAAGse,aAAY,GACfte,EAAGme,cAAa,QACX,GAAgB,YAAZmmC,EACTze,GAAa,EACb7lC,EAAGie,gBAAe,GAClBje,EAAGke,aAAY,GACfle,EAAGqe,cAAa,GAChBre,EAAGoe,UAAS,GACZpe,EAAGse,aAAY,GACfte,EAAGme,cAAa,QACX,GAAgB,UAAZmmC,EACTze,GAAa,EACb7lC,EAAGie,gBAAe,GAClBje,EAAGke,aAAY,GACfle,EAAGqe,cAAa,GAChBre,EAAGoe,UAAS,GACZpe,EAAGse,aAAY,GACfte,EAAGme,cAAa,OACX,IAAgB,WAAZmmC,EAST,MAAM,IAAIlgE,EAAY,+BAAiCkgE,GARvDze,GAAa,EACb7lC,EAAGie,gBAAe,GAClBje,EAAGke,aAAY,GACfle,EAAGqe,cAAa,GAChBre,EAAGoe,UAAS,GACZpe,EAAGse,aAAY,GACfte,EAAGme,cAAa,EAGjB,CACD,OAAO0nB,CACR,CASc,gBAAC7lC,EAAIg1C,EAAOuG,GACzBnmI,OAAwBzmB,IAAjBqxG,EAAGE,WAGV,IAAID,EAAM+0C,EAAMh1C,EAAGE,WAKnB,QAJYvxG,IAARsxG,EAAmB+0C,EAAMh1C,EAAGE,WAAaF,EACxCC,EAAIE,MAAMH,QAGQrxG,IAAnBqxG,EAAGoD,YAA2B,CAChC,IAAImhD,EAAShJ,EAASv7C,EAAGoD,kBACVz0G,IAAX41J,EAAsBhJ,EAASv7C,EAAGoD,aAAepD,EAAG8F,WACnDy+C,EAAOpkD,MAAMH,EAAG8F,WACtB,CACF,CAKyB,2BAAC0+C,EAAKC,GAC9B,QAAwB91J,IAApB61J,EAAIphD,kBAAiDz0G,IAApB81J,EAAIrhD,YAA2B,OAAO,EACtE,QAAwBz0G,IAApB61J,EAAIphD,YAA2B,OAAO,EAC1C,QAAwBz0G,IAApB81J,EAAIrhD,YAA2B,OAAQ,EAChD,IAAIrzE,EAAOy0H,EAAIphD,YAAcqhD,EAAIrhD,YACjC,OAAa,IAATrzE,EAAmBA,EAChBy0H,EAAI1+C,WAAWF,SAASv5F,QAAQm4I,GAAOC,EAAI3+C,WAAWF,SAASv5F,QAAQo4I,EAC/E,CAK+B,iCAACC,EAAIC,GACnC,OAAID,EAAGpd,kBAAoBqd,EAAGrd,mBAA2B,EAChDod,EAAGpd,oBAAsBqd,EAAGrd,kBAA0Bod,EAAGlD,qBAAuBmD,EAAGnD,qBACrF,CACR,CAKqB,uBAACoD,EAAIC,GAGzB,IAAIC,EAAmBt8D,EAAgBq5D,oBAAoB+C,EAAGp2C,QAASq2C,EAAGr2C,SAC1E,GAAyB,IAArBs2C,EAAwB,OAAOA,EAGnC,IAAI/5G,EAAU65G,EAAGtd,kBAAoBud,EAAGvd,kBACxC,OAAgB,IAAZv8F,EAAsBA,GAC1BA,EAAU65G,EAAGpD,qBAAuBqD,EAAGrD,qBACvB,IAAZz2G,EAAsBA,GAC1BA,EAAU65G,EAAG1mB,WAAa2mB,EAAG3mB,WACb,IAAZnzF,EAAsBA,EACnB65G,EAAGj6B,cAAc2L,SAASz6B,cAAcgpD,EAAGl6B,cAAc2L,WACjE,EASH,MAAMksB,EAEJvqJ,YAAYgxI,GACV,IAAI54F,EAAOtiD,KACXA,KAAKioJ,QAAU/M,EACfl7I,KAAKinI,QAAU,IAAIxwC,GAAWp+E,uBAAyBiqC,EAAK4kF,MAAS,IACrElnI,KAAKg3J,eAAiB,GACtBh3J,KAAKi3J,8BAAgC,IAAIhsH,IACzCjrC,KAAKk3J,4BAA8B,IAAIjsH,IACvCjrC,KAAKm3J,YAAc,IAAIzgE,EAAW,GAClC12F,KAAKo3J,YAAc,CACpB,CAEDrhC,aAAaoR,GACXnnI,KAAKonI,WAAaD,EACdA,EAAWnnI,KAAKinI,QAAQj9G,MAAMhqB,KAAKioJ,QAAQnnC,gBAC1C9gH,KAAKinI,QAAQv6B,MACnB,CAEDqc,cAAcL,GACZ1oH,KAAKinI,QAAQle,cAAcL,EAC5B,CAES,aAGR,GAAI1oH,KAAKo3J,YAAc,EAAG,OAC1Bp3J,KAAKo3J,cAGL,IAAI90G,EAAOtiD,KACX,OAAOA,KAAKm3J,YAAYtyD,QAAOxsF,iBAC7B,IAGE,SAAUiqC,EAAK2lG,QAAQ9xE,WAErB,YADA7zB,EAAK80G,cAKP,QAAyBx2J,IAArB0hD,EAAK+0G,YAKP,OAJA/0G,EAAK+0G,kBAAoB/0G,EAAK2lG,QAAQ5yC,YACtC/yD,EAAK00G,qBAAuB10G,EAAK2lG,QAAQpwC,QAAO,IAAI/d,GAAgBsuD,aAAY,IAChF9lG,EAAKg1G,oBAAsBh1G,EAAK2lG,QAAQ2D,oBACxCtpG,EAAK80G,cAKP,IAAIl3D,QAAe59C,EAAK2lG,QAAQ5yC,YAChC,GAAI/yD,EAAK+0G,cAAgBn3D,EAAQ,CAC/B,IAAK,IAAIh/F,EAAIohD,EAAK+0G,YAAan2J,EAAIg/F,EAAQh/F,UAAWohD,EAAKi1G,YAAYr2J,GACvEohD,EAAK+0G,YAAcn3D,CACpB,CAGD,IAAIs3D,EAAY/8I,KAAK8X,IAAI,EAAG2tE,EAAS,IACjCu3D,QAAkBn1G,EAAK2lG,QAAQpwC,QAAO,IAAI/d,GAAgBsuD,aAAY,GAAMsP,aAAaF,GAAWG,mBAAkB,IAGtHC,EAAuB,GAC3B,IAAK,IAAIC,KAAgBv1G,EAAK00G,oBAC2Bp2J,IAAnD0hD,EAAKw1G,OAAOL,EAAWI,EAAa1lD,YACtCylD,EAAqBnkJ,KAAKokJ,EAAa1lD,WAK3C7vD,EAAK00G,eAAiBS,EAGtB,IAAIM,EAA8C,IAAhCH,EAAqBz2J,OAAe,SAAWmhD,EAAK2lG,QAAQpwC,QAAO,IAAI/d,GAAgBsuD,aAAY,GAAOsP,aAAaF,GAAW9e,UAAUkf,GAAsBD,mBAAkB,IAGtM,IAAK,IAAIK,KAAYP,EAAW,CAC9B,IAAIQ,EAAYD,EAASv+B,cAAgBn3E,EAAK40G,4BAA8B50G,EAAK20G,8BAC7EiB,GAAeD,EAAU9iH,IAAI6iH,EAAS7lD,WAC1C8lD,EAAUryJ,IAAIoyJ,EAAS7lD,WACnB+lD,SAAmB51G,EAAK61G,eAAeH,EAC5C,CAGD,IAAK,IAAII,KAAcL,EACrBz1G,EAAK20G,8BAA8Bh4G,OAAOm5G,EAAWjmD,WACrD7vD,EAAK40G,4BAA4Bj4G,OAAOm5G,EAAWjmD,iBAC7C7vD,EAAK61G,eAAeC,SAItB91G,EAAK+1G,2BACX/1G,EAAK80G,aAIN,CAHC,MAAO3qI,GACP61B,EAAK80G,cACLxwJ,QAAQrE,MAAM,mCAAqC+/C,EAAK2lG,QAAQ5xI,UACjE,CACF,GACF,CAEgB,kBAAC6pF,GAChB,IAAK,IAAI+J,KAAYjqG,KAAKioJ,QAAQ96C,qBAAsBlD,EAASmW,WAAWlgB,EAC7E,CAEmB,qBAAC+R,GAGnB,QAAiCrxG,IAA7BqxG,EAAGk1C,sBAAqC,CAC1C9/H,OAA0BzmB,IAAnBqxG,EAAG2iC,aACV,IAAIntG,GAAS,IAAIyxD,GACZwjC,UAAUzqB,EAAGk1C,sBAAsB1qB,YAAY72H,IAAIqsG,EAAGuoB,WACtD0tB,gBAAgBj2C,EAAGk1C,sBAAsB5N,mBACzC4O,mBAA8E,IAA3Dl2C,EAAGk1C,sBAAsB9N,uBAAuBl4I,OAAe8wG,EAAGk1C,sBAAsB9N,uBAAuB,QAAKz4I,GACvI47H,MAAMvqB,GACXA,EAAG+nB,UAAU,CAACvyF,IACd,IAAK,IAAIwiE,KAAYjqG,KAAKioJ,QAAQ96C,qBAAsBlD,EAASyW,cAAcj5E,EAChF,CAGD,QAAkC7mC,IAA9BqxG,EAAGwzC,uBACL,QAAwB7kJ,IAApBqxG,EAAGsQ,cAA8BtQ,EAAGsQ,aAAaphH,OAAS,EAC5D,IAAK,IAAIsmC,KAAUwqE,EAAGsQ,aACpB,IAAK,IAAItY,KAAYjqG,KAAKioJ,QAAQ96C,qBAAsBlD,EAASuW,iBAAiB/4E,OAE/E,CACL,IAAIg7E,EAAU,GACd,IAAK,IAAIH,KAAYrQ,EAAGwzC,uBACtBhjC,EAAQhvG,MAAK,IAAIylF,GACZgvD,gBAAgB5lC,EAASi3B,mBACzB4O,mBAAmB7lC,EAASmxC,sBAC5B/2B,UAAUpa,EAASma,aACnBD,MAAMvqB,IAEbA,EAAGkoB,WAAW1X,GACd,IAAK,IAAIxY,KAAYjqG,KAAKioJ,QAAQ96C,eAChC,IAAK,IAAI1lE,KAAUwqE,EAAGsQ,mBAAoBtY,EAASuW,iBAAiB/4E,EAEvE,CAEJ,CAEDqwH,OAAO9lD,EAAK2S,GACV,IAAK,IAAI1S,KAAMD,EAAK,GAAI2S,IAAW1S,EAAGE,UAAW,OAAOF,CAEzD,CAE6B,iCAC5B,IAAIqmD,QAAiBt4J,KAAKioJ,QAAQ2D,eAClC,GAAmD,IAA/C0M,EAAS,GAAGt7G,QAAQh9C,KAAKs3J,cAAc,KAA4D,IAA/CgB,EAAS,GAAGt7G,QAAQh9C,KAAKs3J,cAAc,IAAW,CACxGt3J,KAAKs3J,cAAgBgB,EACrB,IAAK,IAAIruD,WAAkBjqG,KAAKioJ,QAAQ96C,qBAAsBlD,EAASoW,kBAAkBi4C,EAAS,GAAIA,EAAS,IAC/G,OAAO,CACR,CACD,OAAO,CACR,EAGH79D,EAAgB6hD,0BAA4B,IAE5C98I,EAAOC,QAAUg7F,mBCzgFjB,MAAMpzE,EAASq9B,EAAQ,OACjByxC,EAAazxC,EAAAA,OAAAA,WACb40C,EAAmB50C,EAAQ,OAgIjCllD,EAAOC,QA3HP,MAEEyK,YAAYquJ,EAAcC,EAAgBjhB,EAASG,EAAiB+H,GAGlE,GAA4B,iBAAjB8Y,GAQT,GAPAv4J,KAAKynB,MAAQ8wI,OAGc33J,IAAvBZ,KAAKynB,MAAM8vH,SAA2Bv3I,KAAKynB,MAAM8vH,mBAAmBphD,IAAan2F,KAAKynB,MAAM8vH,QAAUphD,EAAWnlF,MAAMhR,KAAKynB,MAAM8vH,eACnG32I,IAA/BZ,KAAKynB,MAAMiwH,iBAAmC13I,KAAKynB,MAAMiwH,2BAA2BvhD,IAAan2F,KAAKynB,MAAMiwH,gBAAkBvhD,EAAWnlF,MAAMhR,KAAKynB,MAAMiwH,kBAG1J13I,KAAKynB,MAAMg4H,aACb,IAAK,IAAIv+I,EAAI,EAAGA,EAAIlB,KAAKynB,MAAMg4H,aAAat+I,OAAQD,IAC5ClB,KAAKynB,MAAMg4H,aAAav+I,aAAco4F,IAC1Ct5F,KAAKynB,MAAMg4H,aAAav+I,GAAK,IAAIo4F,EAAiBt5F,KAAKynB,MAAMg4H,aAAav+I,UAQhFlB,KAAKynB,MAAQ,CAAC,EACdznB,KAAKq8H,SAASk8B,GACdv4J,KAAKu7I,kBAAkBid,GACvBx4J,KAAKksJ,WAAW3U,GAChBv3I,KAAKmsJ,mBAAmBzU,GACxB13I,KAAKisJ,gBAAgBxM,EAExB,CAED3vC,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,OAGlC,GAFI4qF,EAAKklC,UAASllC,EAAKklC,QAAUllC,EAAKklC,QAAQhpH,YAC1C8jF,EAAKqlC,kBAAiBrlC,EAAKqlC,gBAAkBrlC,EAAKqlC,gBAAgBnpH,YAClE8jF,EAAKotC,aACP,IAAK,IAAIv+I,EAAI,EAAGA,EAAImxG,EAAKotC,aAAat+I,OAAQD,IAC5CmxG,EAAKotC,aAAav+I,GAAKmxG,EAAKotC,aAAav+I,GAAG4uG,SAGhD,OAAOuC,CACR,CAED89B,WACE,OAAOnwI,KAAKynB,MAAM1a,KACnB,CAEDsvH,SAAStvH,GAEP,OADA/M,KAAKynB,MAAM1a,MAAQA,EACZ/M,IACR,CAEDk6I,oBACE,OAAOl6I,KAAKynB,MAAM+wI,cACnB,CAEDjd,kBAAkBid,GAEhB,OADAx4J,KAAKynB,MAAM+wI,eAAiBA,EACrBx4J,IACR,CAEDmhH,aACE,OAAOnhH,KAAKynB,MAAM8vH,OACnB,CAED2U,WAAW3U,GAET,OADAv3I,KAAKynB,MAAM8vH,QAAUA,EACdv3I,IACR,CAEDohH,qBACE,OAAOphH,KAAKynB,MAAMiwH,eACnB,CAEDyU,mBAAmBzU,GAEjB,OADA13I,KAAKynB,MAAMiwH,gBAAkBA,EACtB13I,IACR,CAED20J,SACE,OAAO30J,KAAKynB,MAAMG,GACnB,CAED8sI,OAAO9sI,GAEL,OADA5nB,KAAKynB,MAAMG,IAAMA,EACV5nB,IACR,CAED2hH,kBACE,OAAO3hH,KAAKynB,MAAMg4H,YACnB,CAEDwM,gBAAgBxM,GAGd,GAFAp4H,OAAwBzmB,IAAjB6+I,GAA8Bz+I,MAAMC,QAAQw+I,GAAe,oEAClEz/I,KAAKynB,MAAMg4H,aAAeA,EACtBA,EACF,IAAK,IAAI39B,KAAc29B,EACrB39B,EAAWomC,gBAAgBloJ,KAAKynB,MAAM1a,OAG1C,OAAO/M,IACR,CAEDuuB,SAASo0E,EAAS,GAChB,IAAIz3F,EAAM,GAMV,GALAA,GAAO8kF,SAAS24C,OAAO,QAAS3oI,KAAKmwI,WAAYxtC,GACjDz3F,GAAO8kF,SAAS24C,OAAO,kBAAmB3oI,KAAKk6I,oBAAqBv3C,GACpEz3F,GAAO8kF,SAAS24C,OAAO,UAAW3oI,KAAKmhH,aAAcxe,GACrDz3F,GAAO8kF,SAAS24C,OAAO,mBAAoB3oI,KAAKohH,qBAAsBze,GACtEz3F,GAAO8kF,SAAS24C,OAAO,MAAO3oI,KAAK20J,SAAUhyD,GACf,MAA1B3iG,KAAK2hH,kBAA2B,CAClC82C,IAAMzoE,SAAS24C,OAAO,eAAgB,GAAIhmC,GAC1C,IAAK,IAAIzhG,EAAI,EAAGA,EAAIlB,KAAK2hH,kBAAkBtxF,OAAQnvB,IACjDgK,GAAO8kF,SAAS24C,OAAOznI,EAAI,EAAG,GAAIyhG,EAAS,GAC3Cz3F,GAAOlL,KAAK2hH,kBAAkBzgH,GAAGqtB,SAASo0E,EAAS,GAAK,IAE3D,CACD,OAAOz3F,EAAI7G,MAAM,EAAG6G,EAAI/J,OAAS,EAClC,cCxFH3B,EAAOC,QApCP,MAEEyK,YAAY0d,EAAK4H,EAAO02F,GACtBlmH,KAAK4nB,IAAMA,EACX5nB,KAAKwvB,MAAQA,EACbxvB,KAAKkmH,eAAiBA,CACvB,CAEDyuC,SACE,OAAO30J,KAAK4nB,GACb,CAED8sI,OAAO9sI,GAEL,OADA5nB,KAAK4nB,IAAMA,EACJ5nB,IACR,CAED2mJ,WACE,OAAO3mJ,KAAKwvB,KACb,CAEDo3H,SAASp3H,GAEP,OADAxvB,KAAKwvB,MAAQA,EACNxvB,IACR,CAED04J,oBACE,OAAO14J,KAAKkmH,cACb,CAEDyyC,kBAAkBzyC,GAEhB,OADAlmH,KAAK44J,cAAgB1yC,EACdlmH,IACR,cCcHR,EAAOC,QA/CP,MAEEyK,YAAYud,GACVznB,KAAKynB,MAAQzd,OAAOumC,OAAO,CAAC,EAAG9oB,EAChC,CAEDqoF,SACE,OAAO9lG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,MAC/B,CAED0oH,WACE,OAAOnwI,KAAKynB,MAAM1a,KACnB,CAEDsvH,SAAStvH,GAEP,OADA/M,KAAKynB,MAAM1a,MAAQA,EACZ/M,IACR,CAEDg/G,aACE,OAAOh/G,KAAKynB,MAAMioD,OACnB,CAEDo2C,WAAWp2C,GAET,OADA1vE,KAAKynB,MAAMioD,QAAUA,EACd1vE,IACR,CAED64J,iBACE,OAAO74J,KAAKynB,MAAMm+F,WACnB,CAEDG,eAAeH,GAEb,OADA5lH,KAAKynB,MAAMm+F,YAAcA,EAClB5lH,IACR,CAED8zI,eACE,OAAO9zI,KAAKynB,MAAM4pF,SACnB,CAED0iC,aAAa1iC,GAEX,OADArxG,KAAKynB,MAAM4pF,UAAYA,EAChBrxG,IACR,cC1BHR,EAAOC,QAhBP,MAEEyK,YAAYud,GACVznB,KAAKynB,MAAQzd,OAAOumC,OAAO,CAAC,EAAG9oB,EAChC,CAEDqrH,SACE,OAAO9yI,KAAKynB,MAAMqrH,MACnB,CAED7gB,UAAU6gB,GAER,OADA9yI,KAAKynB,MAAMqrH,OAASA,EACb9yI,IACR,oBClBH,MAAMm2F,EAAazxC,EAAAA,OAAAA,WACb+zC,EAAc/zC,EAAQ,OAyC5BllD,EAAOC,QAlCP,cAAiCg5F,EAE/BvuF,YAAYud,GACVsmF,MAAMtmF,QACyB7mB,IAA3BZ,KAAKynB,MAAMqxI,aAA+B94J,KAAKynB,MAAMqxI,uBAAuB3iE,IAAan2F,KAAKynB,MAAMqxI,YAAc3iE,EAAWnlF,MAAMhR,KAAKynB,MAAMqxI,mBACxGl4J,IAAtCZ,KAAKynB,MAAMsxI,wBAA0C/4J,KAAKynB,MAAMsxI,kCAAkC5iE,IAAan2F,KAAKynB,MAAMsxI,uBAAyB5iE,EAAWnlF,MAAMhR,KAAKynB,MAAMsxI,wBACpL,CAEDjpD,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,OAGlC,OAFIznB,KAAKg5J,mBAAkB3mD,EAAKymD,YAAc94J,KAAKg5J,iBAAiBzqI,YAChEvuB,KAAKi5J,8BAA6B5mD,EAAK0mD,uBAAyB/4J,KAAKi5J,4BAA4B1qI,YAC9F8jF,CACR,CAED2mD,iBACE,OAAOh5J,KAAKynB,MAAMqxI,WACnB,CAED9H,eAAe8H,GAEb,OADA94J,KAAKynB,MAAMqxI,YAAcA,EAClB94J,IACR,CAEDi5J,4BACE,OAAOj5J,KAAKynB,MAAMsxI,sBACnB,CAEDhI,0BAA0BgI,GAExB,OADA/4J,KAAKynB,MAAMsxI,uBAAyBA,EAC7B/4J,IACR,oBCvCH,MAAMy4F,EAAc/zC,EAAQ,OACtByxC,EAAazxC,EAAAA,OAAAA,WAgDnBllD,EAAOC,QAzCP,cAA4Bg5F,EAE1BvuF,YAAYud,GACVsmF,MAAMtmF,QAC4B7mB,IAA9BZ,KAAKynB,MAAMyxI,gBAAkCl5J,KAAKynB,MAAMyxI,0BAA0B/iE,IAAan2F,KAAKynB,MAAMyxI,eAAiB/iE,EAAWnlF,MAAMhR,KAAKynB,MAAMyxI,gBAC5J,CAEDppD,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,OAElC,OADIznB,KAAKm5J,sBAAqB9mD,EAAK6mD,eAAiBl5J,KAAKm5J,oBAAoB5qI,YACtE8jF,CACR,CAEDqnB,WACE,OAAO15H,KAAKynB,MAAMiyG,QACnB,CAEDvJ,YAAYuJ,GAEV,OADA15H,KAAKynB,MAAMiyG,SAAWA,EACf15H,IACR,CAEDw5H,sBACE,OAAOx5H,KAAKynB,MAAM0sH,gBACnB,CAED9hB,oBAAoB8hB,GAElB,OADAn0I,KAAKynB,MAAM0sH,iBAAmBA,EACvBn0I,IACR,CAEDm5J,oBACE,OAAOn5J,KAAKynB,MAAMyxI,cACnB,CAEDrI,kBAAkBqI,GAEhB,OADAl5J,KAAKynB,MAAMyxI,eAAiBA,EACrBl5J,IACR,oBC9CH,MAAMm2F,EAAazxC,EAAAA,OAAAA,WACbsrC,EAAWtrC,EAAQ,OACnB2xC,EAAc3xC,EAAQ,OAK5B,MAAMk0C,EAQJ1uF,YAAYkvJ,EAAgBz8B,GAC1B,GAAKy8B,EACA,GAAIA,aAA0BxgE,EAAmB54F,KAAKynB,MAAQ2xI,EAAetpD,cAC7E,GAA8B,iBAAnBspD,EACdp5J,KAAKynB,MAAQzd,OAAOumC,OAAO,CAAC,EAAG6oH,GACE,iBAAtBp5J,KAAKynB,MAAMk1G,SAAqB38H,KAAKynB,MAAMk1G,OAASxmC,EAAWnlF,MAAMhR,KAAKynB,MAAMk1G,aACtF,IAA8B,iBAAnBy8B,EAIb,MAAM,IAAI/iE,EAAY,gFAHzBr2F,KAAKynB,MAAQ,CAAC,EACdznB,KAAK8lH,WAAWszC,EAEb,MATgBp5J,KAAKynB,MAAQ,CAAC,EAU/Bk1G,IAAQ38H,KAAKynB,MAAMk1G,OAASA,GAChC38H,KAAK08H,UAAU18H,KAAKynB,MAAMk1G,OAC3B,CAED3d,aACE,OAAOh/G,KAAKynB,MAAMioD,OACnB,CAEDo2C,WAAWp2C,GAET,OADA1vE,KAAKynB,MAAMioD,QAAUA,EACd1vE,IACR,CAEDy8H,YACE,OAAOz8H,KAAKynB,MAAMk1G,MACnB,CAEDD,UAAUC,GACR,QAAe/7H,IAAX+7H,KAA0B38H,KAAKynB,MAAMk1G,kBAAkBxmC,GAAa,CACtE,GAAsB,iBAAXwmC,EAAqB,MAAM,IAAItmC,EAAY,mDACtD,IAAMsmC,EAASxmC,EAAWnlF,MAAM2rH,EAC+C,CAA/E,MAAOlwG,GAAO,MAAM,IAAI4pE,EAAY,+BAAiCsmC,EAAU,CAChF,CAED,OADA38H,KAAKynB,MAAMk1G,OAASA,EACb38H,IACR,CAEDyG,OACE,OAAO,IAAImyF,EAAkB54F,KAC9B,CAED8vG,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,OAElC,OADIznB,KAAKy8H,cAAapqB,EAAKsqB,OAAS38H,KAAKy8H,YAAYluG,YAC9C8jF,CACR,CAED9jF,SAASo0E,EAAS,GAChB,IAAIz3F,EAAM8kF,EAAS24C,OAAO,UAAW3oI,KAAKg/G,aAAcrc,GAExD,OADAz3F,GAAO8kF,EAAS24C,OAAO,SAAU3oI,KAAKy8H,YAAcz8H,KAAKy8H,YAAYluG,gBAAa3tB,EAAW+hG,GACtFz3F,EAAI7G,MAAM,EAAG6G,EAAI/J,OAAS,EAClC,EAGH3B,EAAOC,QAAUm5F,mBCtEjB,MAAMvxE,EAASq9B,EAAQ,OACjBsrC,EAAWtrC,EAAQ,OACnB80C,EAAiB90C,EAAQ,OAO/B,MAAM+0C,UAA+BD,EAOnCtvF,YAAYud,GACVsmF,MAAMtmF,EACP,CAEDoqH,aACE,OAAO,CACR,CAED4hB,qBACE,OAAOzzJ,KAAKynB,MAAM4xI,eACnB,CAEDlR,mBAAmBkR,GAEjB,OADAr5J,KAAKynB,MAAM4xI,gBAAkBA,EACtBr5J,IACR,CAEDg/G,aACE,OAAOh/G,KAAKynB,MAAMioD,OACnB,CAEDo2C,WAAWp2C,GAET,OADA1vE,KAAKynB,MAAMioD,QAAUA,EACd1vE,IACR,CAUDs5J,+BACE,OAAOt5J,KAAKynB,MAAM8xI,yBACnB,CAEDhE,6BAA6BgE,GAE3B,OADAv5J,KAAKynB,MAAM8xI,0BAA4BA,EAChCv5J,IACR,CAEDyG,OACE,OAAO,IAAIgzF,EAAuBz5F,KAAK8vG,SACxC,CAWDsC,MAAMkQ,GAGJ,OAFAvU,MAAMqE,MAAMkQ,GACZj7F,EAAOi7F,aAAoB7oB,GACvBz5F,OAASsiH,IACbtiH,KAAKmoJ,mBAAmBn4D,EAASuS,UAAUviG,KAAKyzJ,qBAAsBnxC,EAASmxC,uBAC/EzzJ,KAAK8lH,WAAW91B,EAASuS,UAAUviG,KAAKg/G,aAAcsD,EAAStD,eAC/Dh/G,KAAKu1J,6BAA6BvlE,EAASuS,UAAUviG,KAAKs5J,+BAAgCh3C,EAASg3C,+BAAgC,CAAC52D,YAAY,MAHlH1iG,IAK/B,CAEDuuB,WACE,OAAOvuB,KAAKuuB,SAAS,EACtB,CAEDA,SAASo0E,GACP,IAAIz3F,EAAM6iG,MAAMx/E,SAASo0E,GAAU,KAInC,OAHAz3F,GAAO8kF,EAAS24C,OAAO,mBAAoB3oI,KAAKyzJ,qBAAsB9wD,GACtEz3F,GAAO8kF,EAAS24C,OAAO,UAAW3oI,KAAKg/G,aAAcrc,GACrDz3F,GAAO8kF,EAAS24C,OAAO,8BAA+B3oI,KAAKs5J,+BAAgC32D,GACpFz3F,EAAI7G,MAAM,EAAG6G,EAAI/J,OAAS,EAClC,EAGH3B,EAAOC,QAAUg6F,aClDjBj6F,EAAOC,QA1CP,MAEEyK,YAAYud,GACVznB,KAAKynB,MAAQzd,OAAOumC,OAAO,CAAC,EAAG9oB,EAChC,CAEDqoF,SACE,OAAO9lG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,MAC/B,CAED+xI,qBACE,OAAOx5J,KAAKynB,MAAM2pF,eACnB,CAED85C,mBAAmB95C,GAEjB,OADApxG,KAAKynB,MAAM2pF,gBAAkBA,EACtBpxG,IACR,CAED8zI,eACE,OAAO9zI,KAAKynB,MAAM4pF,SACnB,CAED0iC,aAAa1iC,GAEX,OADArxG,KAAKynB,MAAM4pF,UAAYA,EAChBrxG,IACR,CAEDg0G,uBACE,OAAOh0G,KAAKynB,MAAM63F,iBACnB,CAED6rC,qBAAqB7rC,GAEnB,OADAt/G,KAAKynB,MAAM63F,kBAAoBA,EACxBt/G,IACR,CAEDuuB,WACE,OAAOvuB,KAAKynB,MAAM63F,iBACnB,oBC1CH,MAAMnpB,EAAazxC,EAAAA,OAAAA,WAiDnBllD,EAAOC,QA5CP,MAEEyK,YAAYud,QAEgB7mB,KAD1B6mB,EAAQzd,OAAOumC,OAAO,CAAC,EAAG9oB,IAChBgyI,aAA+BhyI,EAAMgyI,uBAAuBtjE,IAAa1uE,EAAMgyI,YAActjE,EAAWnlF,MAAMyW,EAAMgyI,mBAClG74J,IAAxB6mB,EAAMiyI,eAAiCjyI,EAAMiyI,yBAAyBvjE,IAAa1uE,EAAMiyI,cAAgBvjE,EAAWnlF,MAAMyW,EAAMiyI,gBACpI15J,KAAKynB,MAAQA,CACd,CAEDqoF,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,OAGlC,OAFIznB,KAAK25J,mBAAkBtnD,EAAKonD,YAAcz5J,KAAK25J,iBAAiBprI,YAChEvuB,KAAK45J,qBAAoBvnD,EAAKqnD,cAAgB15J,KAAK45J,mBAAmBrrI,YACnE8jF,CACR,CAEDgD,YACE,OAAOr1G,KAAKynB,MAAMy4E,MACnB,CAED4vB,UAAU5vB,GAER,OADAlgG,KAAKynB,MAAMy4E,OAASA,EACblgG,IACR,CAED25J,iBACE,OAAO35J,KAAKynB,MAAMgyI,WACnB,CAED/K,eAAe+K,GAEb,OADAz5J,KAAKynB,MAAMgyI,YAAcA,EAClBz5J,IACR,CAED45J,mBACE,OAAO55J,KAAKynB,MAAMiyI,aACnB,CAED9K,iBAAiB8K,GAEf,OADA15J,KAAKynB,MAAMiyI,cAAgBA,EACpB15J,IACR,cCcHR,EAAOC,QAvDP,MAEEyK,YAAY2vJ,EAAetX,EAAO/9B,EAAe7c,GAClB,kBAAlBkyD,GACT75J,KAAKynB,MAAQ,CAAC,EACdznB,KAAKynB,MAAMqrH,OAAS+mB,EACpB75J,KAAKynB,MAAM86H,MAAQA,EACnBviJ,KAAKynB,MAAM+8F,cAAgBA,EAC3BxkH,KAAKynB,MAAMkgF,QAAUA,GAErB3nG,KAAKynB,MAAQoyI,CAEhB,CAED/pD,SACE,OAAO9lG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,MAC/B,CAEDqrH,SACE,OAAO9yI,KAAKynB,MAAMqrH,MACnB,CAED7gB,UAAU6gB,GAER,OADA9yI,KAAKynB,MAAMqrH,OAASA,EACb9yI,IACR,CAEDuiJ,QACE,OAAOviJ,KAAKynB,MAAM86H,KACnB,CAEDuX,SAASvX,GAEP,OADAviJ,KAAKynB,MAAM86H,MAAQA,EACZviJ,IACR,CAED+5J,mBACE,OAAO/5J,KAAKynB,MAAM+8F,aACnB,CAEDw1C,iBAAiBx1C,GAEf,OADAxkH,KAAKynB,MAAM+8F,cAAgBA,EACpBxkH,IACR,CAED46F,aACE,OAAO56F,KAAKynB,MAAMkgF,OACnB,CAEDiyB,WAAWjyB,GAET,OADA3nG,KAAKynB,MAAMkgF,QAAUA,EACd3nG,IACR,cCpDH,MAAMi6F,GAKNA,EAA2BkoD,oBAAsB,EAKjDloD,EAA2BuoD,mBAAqB,EAEhDhjJ,EAAOC,QAAUw6F,aC8BjBz6F,EAAOC,QA5CP,MAEEyK,YAAYud,GACVznB,KAAKynB,MAAQzd,OAAOumC,OAAO,CAAC,EAAG9oB,EAChC,CAEDqoF,SACE,OAAO9lG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,MAC/B,CAEDi/F,aACE,OAAO1mH,KAAKynB,MAAMi/F,UACnB,CAEDkrC,cAAclrC,GAEZ,OADA1mH,KAAKynB,MAAMi/F,WAAaA,EACjB1mH,IACR,CAEDi6J,UACE,OAAOj6J,KAAKynB,MAAMwyI,OACnB,CAEDnI,WAAWmI,GACTj6J,KAAKynB,MAAMwyI,QAAUA,CACtB,CAEDjrB,eACE,OAAOhvI,KAAKynB,MAAMs/F,SACnB,CAED+Z,aAAa/Z,GACX/mH,KAAKynB,MAAMs/F,UAAYA,CACxB,CAEDmzC,qBACE,OAAOl6J,KAAKynB,MAAM0yI,eACnB,CAEDpI,mBAAmBoI,GACjBn6J,KAAKynB,MAAM0yI,gBAAkBA,CAC9B,cCVH36J,EAAOC,QA7BP,MAEEyK,YAAYud,GACVznB,KAAKynB,MAAQzd,OAAOumC,OAAO,CAAC,EAAG9oB,EAChC,CAEDqoF,SACE,OAAO9lG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,MAC/B,CAEDu3F,aACE,OAAOh/G,KAAKynB,MAAMioD,OACnB,CAEDo2C,WAAWp2C,GAET,OADA1vE,KAAKynB,MAAMioD,QAAUA,EACd1vE,IACR,CAEDmyJ,iBACE,OAAOnyJ,KAAKynB,MAAM2yI,WACnB,CAEDlI,eAAekI,GAEb,OADAp6J,KAAKynB,MAAM2yI,YAAcA,EAClBp6J,IACR,cCDHR,EAAOC,QA3BP,MAEEyK,YAAYud,GACVznB,KAAKynB,MAAQzd,OAAOumC,OAAO,CAAC,EAAG9oB,EAChC,CAEDqoF,SACE,OAAO9lG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,MAC/B,CAED4yI,yBACE,OAAOr6J,KAAKynB,MAAM6/F,mBACnB,CAEDgrC,uBAAuBgI,GACrBt6J,KAAKynB,MAAM6/F,oBAAsBgzC,CAClC,CAED7xB,cACE,OAAOzoI,KAAKynB,MAAMkwF,QACnB,CAEDohB,YAAYphB,GACV33G,KAAKynB,MAAMkwF,SAAWA,CACvB,oBC3BH,MAAMtwF,EAASq9B,EAAQ,OACjBsrC,EAAWtrC,EAAQ,OACnBk0C,EAAoBl0C,EAAQ,OAC5B80C,EAAiB90C,EAAQ,OAO/B,MAAMg1C,UAA+BF,EAOnCtvF,YAAYud,GAKV,GAJAsmF,MAAMtmF,IACNA,EAAQznB,KAAKynB,OAGHunI,aACR,IAAK,IAAI9tJ,EAAI,EAAGA,EAAIumB,EAAMunI,aAAa7tJ,OAAQD,IACvCumB,EAAMunI,aAAa9tJ,aAAc03F,IAAoBnxE,EAAMunI,aAAa9tJ,GAAK,IAAI03F,EAAkBnxE,EAAMunI,aAAa9tJ,IAGjI,CAED2wI,aACE,OAAO,CACR,CAEDwH,uBACE,OAAOr5I,KAAKynB,MAAMm6F,iBACnB,CAED03B,qBAAqB13B,GAEnB,OADA5hH,KAAKynB,MAAMm6F,kBAAoBA,EACxB5hH,IACR,CAEDu6J,eACE,OAAOv6J,KAAKynB,MAAMslI,SACnB,CAEDyN,aAAazN,GAEX,OADA/sJ,KAAKynB,MAAMslI,UAAYA,EAChB/sJ,IACR,CAEDi5I,kBACE,OAAOj5I,KAAKynB,MAAMunI,YACnB,CAEDuF,gBAAgBvF,GAEd,OADAhvJ,KAAKynB,MAAMunI,aAAeA,EACnBhvJ,IACR,CAEDyG,OACE,OAAO,IAAIizF,EAAuB15F,KACnC,CAED8vG,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,MAAOsmF,MAAM+B,UAC/C,GAAI9vG,KAAKi5I,kBAAmB,CAC1B5mC,EAAK28C,aAAe,GACpB,IAAK,IAAID,KAAe/uJ,KAAKi5I,kBAAmB5mC,EAAK28C,aAAav7I,KAAKs7I,EAAYj/C,SACpF,CAED,cADOuC,EAAKJ,GACLI,CACR,CAWDD,MAAMkQ,GAGJ,OAFAvU,MAAMqE,MAAMkQ,GACZj7F,EAAOi7F,aAAoB5oB,GACvB15F,OAASsiH,IACbtiH,KAAKs5I,qBAAqBtpD,EAASuS,UAAUviG,KAAKq5I,uBAAwB/2B,EAAS+2B,yBACnFr5I,KAAKw6J,aAAaxqE,EAASuS,UAAUviG,KAAKu6J,eAAgBj4C,EAASi4C,iBACnEv6J,KAAKu0J,gBAAgBvkE,EAASuS,UAAUviG,KAAKi5I,kBAAmB32B,EAAS22B,qBAH3Cj5I,IAK/B,CAEDuuB,SAASo0E,EAAS,GAChB,IAAIz3F,EAAM6iG,MAAMx/E,SAASo0E,GAAU,KAGnC,GAFAz3F,GAAO8kF,EAAS24C,OAAO,qBAAsB3oI,KAAKq5I,uBAAwB12C,GAC1Ez3F,GAAO8kF,EAAS24C,OAAO,YAAa3oI,KAAKu6J,eAAgB53D,GACrD3iG,KAAKi5I,kBAAmB,CAC1B/tI,GAAO8kF,EAAS24C,OAAO,eAAgB,GAAIhmC,GAC3C,IAAK,IAAIzhG,EAAI,EAAGA,EAAIlB,KAAKi5I,kBAAkB93I,OAAQD,IACjDgK,GAAO8kF,EAAS24C,OAAOznI,EAAI,EAAG,GAAIyhG,EAAS,GAC3Cz3F,GAAOlL,KAAKi5I,kBAAkB/3I,GAAGqtB,SAASo0E,EAAS,GAAK,IAE3D,CACD,OAAOz3F,EAAI7G,MAAM,EAAG6G,EAAI/J,OAAS,EAClC,EAGH3B,EAAOC,QAAUi6F,mBC5GjB,MAAMvD,EAAazxC,EAAAA,OAAAA,WACb2xC,EAAc3xC,EAAQ,OACtBw0C,EAAqBx0C,EAAQ,OAOnC,MAAMy0C,UAA0BD,EAiC9BhvF,YAAYi4F,GACV4L,MAAM5L,GAGN,MAAMrI,EAAgBp1C,EAAQ,OAK9B,QAJ6B9jD,IAAzBZ,KAAKynB,MAAMgzI,WAA6Bz6J,KAAKynB,MAAMgzI,qBAAqBtkE,IAAan2F,KAAKynB,MAAMgzI,UAAYtkE,EAAWnlF,MAAMhR,KAAKynB,MAAMgzI,iBAC/G75J,IAAzBZ,KAAKynB,MAAMizI,WAA6B16J,KAAKynB,MAAMizI,qBAAqBvkE,IAAan2F,KAAKynB,MAAMizI,UAAYvkE,EAAWnlF,MAAMhR,KAAKynB,MAAMizI,aACxI16J,KAAKynB,MAAMqxH,SAAa94I,KAAKynB,MAAMqxH,mBAAmBh/C,IAAgB95F,KAAKynB,MAAMqxH,QAAU,IAAIh/C,EAAc95F,KAAKynB,MAAMqxH,UACxH94I,KAAKynB,MAAMqxH,SAAS94I,KAAKynB,MAAMqxH,QAAQE,eAAeh5I,WAC9BY,IAAxBZ,KAAKynB,MAAMkwH,SAAwB,MAAM,IAAIthD,EAAY,sDAC9D,CAED5vF,OACE,OAAO,IAAI0yF,EAAkBn5F,KAC9B,CAED8vG,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,MAAOsmF,MAAM+B,UAI/C,OAHI9vG,KAAK26J,iBAAgBtoD,EAAKooD,UAAYz6J,KAAK26J,eAAepsI,YAC1DvuB,KAAK46J,iBAAgBvoD,EAAKqoD,UAAY16J,KAAK46J,eAAersI,mBACvD8jF,EAAKymC,QACLzmC,CACR,CAEDsoD,eACE,OAAO36J,KAAKynB,MAAMgzI,SACnB,CAEDI,aAAaJ,GAEX,OADAz6J,KAAKynB,MAAMgzI,UAAYA,EAChBz6J,IACR,CAED46J,eACE,OAAO56J,KAAKynB,MAAMizI,SACnB,CAEDI,aAAaJ,GAEX,OADA16J,KAAKynB,MAAMizI,UAAYA,EAChB16J,IACR,CAED64I,aACE,OAAO74I,KAAKynB,MAAMqxH,OACnB,CAEDF,WAAWE,GAGT,OAFA94I,KAAKynB,MAAMqxH,QAAUA,EACjBA,IAASA,EAAQrxH,MAAM0lI,YAAcntJ,MAClCA,IACR,CAEDq5I,uBACE,OAAOr5I,KAAKynB,MAAMm6F,iBACnB,CAED03B,qBAAqB13B,GAEnB,OADA5hH,KAAKynB,MAAMm6F,kBAAoBA,EACxB5hH,IACR,CAEDs7F,cAAc7zD,EAAQszH,GACpB,KAAMtzH,aAAkByxD,GAAqB,MAAM,IAAIh5F,MAAM,+DAI7D,QAHoBU,IAAhBm6J,IAA2BA,GAAc,QAGdn6J,IAA3BZ,KAAKu5I,mBAAmCv5I,KAAKu5I,oBAAsB9xG,EAAO8xG,kBAAmB,OAAO,EACxG,QAAkC34I,IAA9BZ,KAAKyzJ,sBAAsCzzJ,KAAKyzJ,uBAAyBhsH,EAAOgsH,qBAAsB,OAAO,EACjH,QAAyB7yJ,IAArBZ,KAAKy8H,aAA8E,IAAjDz8H,KAAKy8H,YAAYz/E,QAAQvV,EAAOg1F,aAAoB,OAAO,EACjG,QAAuB77H,IAAnBZ,KAAKk0J,WAA2Bl0J,KAAKk0J,YAAczsH,EAAOysH,UAAW,OAAO,EAChF,QAAwBtzJ,IAApBZ,KAAKg7J,YAA4Bh7J,KAAKg7J,aAAevzH,EAAOuzH,WAAY,OAAO,EAGnF,QAA2Bp6J,IAAvBZ,KAAK48H,cAA6B,CACpC,QAA6Bh8H,IAAzB6mC,EAAOm1F,cAA6B,OAAO,EAC/C,QAAoCh8H,IAAhCZ,KAAK48H,cAAc2L,UAA0BvoI,KAAK48H,cAAc2L,WAAa9gG,EAAOm1F,cAAc2L,SAAU,OAAO,EACvH,QAA0C3nI,IAAtCZ,KAAK48H,cAAc4S,gBAAgCxvI,KAAK48H,cAAc4S,iBAAmB/nG,EAAOm1F,cAAc4S,eAAgB,OAAO,CAC1I,CAGD,aAAoC5uI,IAAhCZ,KAAKq5I,yBAAyCr5I,KAAKq5I,uBAAuB1tE,SAASlkC,EAAOgsH,uBAG1FzzJ,KAAK64I,eAAiB74I,KAAK64I,aAAav9C,cAAc7zD,EAAOg5E,SAAS,SAG9C7/G,IAAxBZ,KAAK26J,sBAAwD/5J,IAAvB6mC,EAAOg1F,aAA6Bh1F,EAAOg1F,YAAYz/E,QAAQh9C,KAAK26J,gBAAkB,SACpG/5J,IAAxBZ,KAAK46J,sBAAwDh6J,IAAvB6mC,EAAOg1F,aAA6Bh1F,EAAOg1F,YAAYz/E,QAAQh9C,KAAK46J,gBAAkB,GAIjI,EAGHzhE,EAAkB8hE,cAAgB,IAAI/hE,EAEtC15F,EAAOC,QAAU05F,mBC1IjB,MAAM9xE,EAASq9B,EAAQ,OACjBsrC,EAAWtrC,EAAQ,OACnBozC,EAAepzC,EAAQ,OAQ7B,MAAMw0C,UAA2BpB,EAO/B5tF,YAAYud,GACVsmF,MAAMtmF,EACP,CAED8xH,kBACE,OAAOv5I,KAAKynB,MAAMyzI,YACnB,CAEDhT,gBAAgBgT,GAEd,OADAl7J,KAAKynB,MAAMyzI,aAAeA,EACnBl7J,IACR,CAEDyzJ,qBACE,OAAOzzJ,KAAKynB,MAAM4xI,eACnB,CAEDlR,mBAAmBkR,GAEjB,OADAr5J,KAAKynB,MAAM4xI,gBAAkBA,EACtBr5J,IACR,CAEDk0J,UACE,OAAOl0J,KAAKynB,MAAMysI,OACnB,CAEDkC,WAAWlC,GAET,OADAl0J,KAAKynB,MAAMysI,QAAUA,EACdl0J,IACR,CAQDg7J,WACE,OAAOh7J,KAAKynB,MAAMuzI,QACnB,CAED3E,YAAY2E,GAEV,OADAh7J,KAAKynB,MAAMuzI,SAAWA,EACfh7J,IACR,CAED23I,WACE,QAAqB/2I,IAAjBZ,KAAKygH,QACT,OAAOzgH,KAAKygH,QAAQk3B,UACrB,CAEDlxI,OACE,OAAO,IAAIyyF,EAAmBl5F,KAAK8vG,SACpC,CAEDA,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,MAAOsmF,MAAM+B,UAE/C,cADOuC,EAAKJ,GACLI,CACR,CAWDD,MAAM3qE,GAEJ,GADApgB,EAAOogB,aAAkByxD,GACrBl5F,OAASynC,EAMb,OALAsmE,MAAMqE,MAAM3qE,GACZznC,KAAKkoJ,gBAAgBl4D,EAASuS,UAAUviG,KAAKu5I,kBAAmB9xG,EAAO8xG,oBACvEv5I,KAAKmoJ,mBAAmBn4D,EAASuS,UAAUviG,KAAKyzJ,qBAAsBhsH,EAAOgsH,uBAC7EzzJ,KAAKo2J,WAAWpmE,EAASuS,UAAUviG,KAAKk0J,UAAWzsH,EAAOysH,UAAW,CAACzxD,aAAa,KACnFziG,KAAKq2J,YAAYrmE,EAASuS,UAAUviG,KAAKg7J,WAAYvzH,EAAOuzH,aACrDh7J,IACR,CAEDuuB,SAASo0E,GACP,IAAIz3F,EAAM6iG,MAAMx/E,SAASo0E,GAAU,KAKnC,OAJAz3F,GAAO8kF,EAAS24C,OAAO,gBAAiB3oI,KAAKu5I,kBAAmB52C,GAChEz3F,GAAO8kF,EAAS24C,OAAO,mBAAoB3oI,KAAKyzJ,qBAAsB9wD,GACtEz3F,GAAO8kF,EAAS24C,OAAO,WAAY3oI,KAAKk0J,UAAWvxD,GACnDz3F,GAAO8kF,EAAS24C,OAAO,YAAa3oI,KAAKg7J,WAAYr4D,GAC9Cz3F,EAAI7G,MAAM,EAAG6G,EAAI/J,OAAS,EAClC,EAGH3B,EAAOC,QAAUy5F,mBC5GjB,MAAM/C,EAAazxC,EAAAA,OAAAA,WACbsrC,EAAWtrC,EAAQ,OACnBr9B,EAASq9B,EAAQ,OA4HvBllD,EAAOC,QAvHP,MAEEyK,YAAYkvJ,EAAgB8B,EAAcnuJ,QACjBnM,IAAnBw4J,GAA0D,iBAAnBA,GACzCp5J,KAAKynB,MAAQ,CAAC,EACdznB,KAAK8lH,WAAWszC,GAChBp5J,KAAKkoJ,gBAAgBgT,GACrBl7J,KAAKq8H,SAAStvH,KAEd/M,KAAKynB,MAAQ2xI,EACb/xI,OAAwBzmB,IAAjBs6J,QAAwCt6J,IAAVmM,EAAqB,0EAC/BnM,IAAvBZ,KAAKynB,MAAM8vH,SAA2Bv3I,KAAKynB,MAAM8vH,mBAAmBphD,IAAan2F,KAAKynB,MAAM8vH,QAAUphD,EAAWnlF,MAAMhR,KAAKynB,MAAM8vH,eACnG32I,IAA/BZ,KAAKynB,MAAMiwH,iBAAmC13I,KAAKynB,MAAMiwH,2BAA2BvhD,IAAan2F,KAAKynB,MAAMiwH,gBAAkBvhD,EAAWnlF,MAAMhR,KAAKynB,MAAMiwH,kBAEjK,CAED5nC,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,OAGlC,OAFI4qF,EAAKklC,UAASllC,EAAKklC,QAAUllC,EAAKklC,QAAQhpH,YAC1C8jF,EAAKqlC,kBAAiBrlC,EAAKqlC,gBAAkBrlC,EAAKqlC,gBAAgBnpH,YAC/D8jF,CACR,CAEDknC,kBACE,OAAOv5I,KAAKynB,MAAMyzI,YACnB,CAEDhT,gBAAgBgT,GAEd,OADAl7J,KAAKynB,MAAMyzI,aAAeA,EACnBl7J,IACR,CAEDmwI,WACE,OAAOnwI,KAAKynB,MAAM1a,KACnB,CAEDsvH,SAAStvH,GAEP,OADA/M,KAAKynB,MAAM1a,MAAQA,EACZ/M,IACR,CAEDg/G,aACE,OAAOh/G,KAAKynB,MAAMioD,OACnB,CAEDo2C,WAAWp2C,GAET,OADA1vE,KAAKynB,MAAMioD,QAAUA,EACd1vE,IACR,CAED2mJ,WACE,OAAO3mJ,KAAKynB,MAAM+H,KACnB,CAEDo3H,SAASp3H,GAEP,OADAxvB,KAAKynB,MAAM+H,MAAQA,EACZxvB,IACR,CAEDmhH,aACE,OAAOnhH,KAAKynB,MAAM8vH,OACnB,CAED2U,WAAW3U,GAET,OADAv3I,KAAKynB,MAAM8vH,QAAUA,EACdv3I,IACR,CAEDohH,qBACE,OAAOphH,KAAKynB,MAAMiwH,eACnB,CAEDyU,mBAAmBzU,GAEjB,OADA13I,KAAKynB,MAAMiwH,gBAAkBA,EACtB13I,IACR,CAED2sJ,uBACE,OAAO3sJ,KAAKynB,MAAM0zI,iBACnB,CAED/O,qBAAqB+O,GAEnB,OADAn7J,KAAKynB,MAAM0zI,kBAAoBA,EACxBn7J,IACR,CAEDo7J,SACE,OAAOp7J,KAAKynB,MAAM2zI,MACnB,CAEDpO,UAAUoO,GAER,OADAp7J,KAAKynB,MAAM2zI,OAASA,EACbp7J,IACR,CAEDwlJ,uBACE,OAAOxlJ,KAAKynB,MAAMmwH,iBACnB,CAEDyU,qBAAqBzU,GAEnB,OADA53I,KAAKynB,MAAMmwH,kBAAoBA,EACxB53I,IACR,CAEDuuB,SAASo0E,GACP,IAAIz3F,EAAM,GAUV,OATAA,GAAO8kF,EAAS24C,OAAO,gBAAiB3oI,KAAKu5I,kBAAmB52C,GAChEz3F,GAAO8kF,EAAS24C,OAAO,mBAAoB3oI,KAAKmwI,WAAYxtC,GAC5Dz3F,GAAO8kF,EAAS24C,OAAO,UAAW3oI,KAAKg/G,aAAcrc,GACrDz3F,GAAO8kF,EAAS24C,OAAO,QAAS3oI,KAAK2mJ,WAAYhkD,GACjDz3F,GAAO8kF,EAAS24C,OAAO,UAAW3oI,KAAKmhH,aAAcxe,GACrDz3F,GAAO8kF,EAAS24C,OAAO,mBAAoB3oI,KAAKohH,qBAAsBze,GACtEz3F,GAAO8kF,EAAS24C,OAAO,sBAAuB3oI,KAAK2sJ,uBAAwBhqD,GAC3Ez3F,GAAO8kF,EAAS24C,OAAO,UAAW3oI,KAAKo7J,SAAUz4D,GACjDz3F,GAAO8kF,EAAS24C,OAAO,uBAAwB3oI,KAAKwlJ,uBAAwB7iD,GACrEz3F,EAAI7G,MAAM,EAAG6G,EAAI/J,OAAS,EAClC,cC9FH3B,EAAOC,QA1BP,MAEEyK,YAAY4zI,EAAkBC,GAC5B/9I,KAAKq7J,oBAAoBvd,GACzB99I,KAAKs7J,iBAAiBvd,EACvB,CAEDwd,sBACE,OAAOv7J,KAAK89I,gBACb,CAEDud,oBAAoBvd,GAElB,OADA99I,KAAK89I,iBAAmBA,EACjB99I,IACR,CAEDw7J,mBACE,OAAOx7J,KAAK+9I,aACb,CAEDud,iBAAiBvd,GAEf,OADA/9I,KAAK+9I,cAAgBA,EACd/9I,IACR,oBC1BH,MAAMqnB,EAASq9B,EAAQ,OACjByxC,EAAazxC,EAAAA,OAAAA,WACbsrC,EAAWtrC,EAAQ,OAOzB,MAAM80C,EAOJtvF,YAAYud,GAGV,GAAKA,EACA,GAAIA,aAAiB+xE,EAAgB/xE,EAAQA,EAAMqoF,aACnD,IAAqB,iBAAVroF,EACX,MAAM,IAAI4uE,YAAY,uDADS5uE,EAAQzd,OAAOumC,OAAO,CAAC,EAAG9oB,EACzD,MAHOA,EAAQ,CAAC,EAIrBznB,KAAKynB,MAAQA,OAGQ7mB,IAAjB6mB,EAAMk1G,QAA0Bl1G,EAAMk1G,kBAAkBxmC,IAAa1uE,EAAMk1G,OAASxmC,EAAWnlF,MAAMyW,EAAMk1G,SAG/G38H,KAAKqF,WACN,CAEDoB,OACE,OAAO,IAAI+yF,EAAex5F,KAC3B,CAED8vG,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,OAGlC,OAFIznB,KAAKy8H,cAAapqB,EAAKsqB,OAAS38H,KAAKy8H,YAAYluG,mBAC9C8jF,EAAKJ,GACLI,CACR,CAEDoO,QACE,OAAOzgH,KAAKynB,MAAMwqF,EACnB,CAEDuqB,MAAMvqB,GAEJ,OADAjyG,KAAKynB,MAAMwqF,GAAKA,EACTjyG,IACR,CAED83I,aACE,IAAIjG,EAAa7xI,KAAK6xI,aAEtB,OADAxqH,EAA6B,kBAAfwqH,IACNA,CACT,CAEDA,aACE,MAAM,IAAI3xI,MAAM,0BACjB,CAEDq5I,kBACE,OAAOv5I,KAAKynB,MAAMyzI,YACnB,CAEDhT,gBAAgBgT,GAGd,OAFAl7J,KAAKynB,MAAMyzI,aAAeA,EAC1Bl7J,KAAKqF,YACErF,IACR,CAEDy8H,YACE,OAAOz8H,KAAKynB,MAAMk1G,MACnB,CAEDD,UAAUC,GAER,OADA38H,KAAKynB,MAAMk1G,OAASA,EACb38H,IACR,CAYDoyG,MAAMkQ,GAEJ,OADAj7F,EAAOi7F,aAAoB9oB,GACvBx5F,OAASsiH,EAAiBtiH,KAG1BA,KAAKygH,UAAY6B,EAAS7B,SAC5BzgH,KAAKygH,QAAQrO,MAAMkQ,EAAS7B,SACrBzgH,OAITA,KAAKkoJ,gBAAgBl4D,EAASuS,UAAUviG,KAAKu5I,kBAAmBj3B,EAASi3B,yBAGhD34I,IAArBZ,KAAKy8H,kBAAsD77H,IAAzB0hH,EAASma,aAAgF,IAAnDz8H,KAAKy8H,YAAYz/E,QAAQslE,EAASma,cAA2E,IAApDz8H,KAAKy8H,YAAYz/E,QAAQm5C,EAAWnlF,MAAM,OAAuE,IAAxDsxG,EAASma,YAAYz/E,QAAQm5C,EAAWnlF,MAAM,MAG1OhR,KAAK08H,UAAU1sC,EAASuS,UAAUviG,KAAKy8H,YAAana,EAASma,cAF7D71H,QAAQxE,KAAK,8EAKRpC,KACR,CAEDuuB,SAASo0E,EAAS,GAChB,IAAIz3F,EAAM,GAIV,OAHAA,GAAO8kF,EAAS24C,OAAO,cAAe3oI,KAAK6xI,aAAclvC,GACzDz3F,GAAO8kF,EAAS24C,OAAO,gBAAiB3oI,KAAKu5I,kBAAmB52C,GAChEz3F,GAAO8kF,EAAS24C,OAAO,SAAU3oI,KAAKy8H,YAAcz8H,KAAKy8H,YAAYluG,gBAAa3tB,EAAW+hG,GAC9E,KAARz3F,EAAaA,EAAOA,EAAI7G,MAAM,EAAG6G,EAAI/J,OAAS,EACtD,CAEDkE,YACE,QAA+BzE,IAA3BZ,KAAKu5I,mBAAmCv5I,KAAKu5I,kBAAoB,EAAG,MAAM,IAAIljD,YAAY,6BAC/F,EAGH72F,EAAOC,QAAU+5F,mBC/HjB,MAAMC,EAAyB/0C,EAAQ,OACjCg1C,EAAyBh1C,EAAQ,OACjC80C,EAAiB90C,EAAQ,OACzB2xC,EAAc3xC,EAAQ,OAO5B,MAAMi1C,UAA4BH,EA6BhCtvF,YAAYi4F,GACV4L,MAAM5L,GAGN,MAAMrI,EAAgBp1C,EAAQ,QAC1B1kD,KAAKynB,MAAMqxH,SAAa94I,KAAKynB,MAAMqxH,mBAAmBh/C,IAAgB95F,KAAKynB,MAAMqxH,QAAU,IAAIh/C,EAAc95F,KAAKynB,MAAMqxH,UACxH94I,KAAKynB,MAAMqxH,SAAS94I,KAAKynB,MAAMqxH,QAAQC,iBAAiB/4I,WAG9BY,IAA1BZ,KAAKynB,MAAMqwH,aAA0B93I,KAAKynB,MAAMoqH,YAAc7xI,KAAKynB,MAAMqwH,YAG7E93I,KAAKqF,WACN,CAEDoB,OACE,OAAO,IAAIkzF,EAAoB35F,KAChC,CAED8vG,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,MAAOsmF,MAAM+B,UAE/C,cADOuC,EAAKymC,QACLzmC,CACR,CAEDwmC,aACE,OAAO74I,KAAKynB,MAAMqxH,OACnB,CAEDF,WAAWE,GAGT,OAFA94I,KAAKynB,MAAMqxH,QAAUA,EACjBA,IAASA,EAAQrxH,MAAMwlI,cAAgBjtJ,MACpCA,IACR,CAED6xI,aACE,OAAO7xI,KAAKynB,MAAMoqH,UACnB,CAEDxN,cAAcwN,GAEZ,OADA7xI,KAAKynB,MAAMoqH,WAAaA,EACjB7xI,IACR,CAED83I,aACE,YAAiCl3I,IAA1BZ,KAAKynB,MAAMoqH,gBAA2BjxI,GAAaZ,KAAKynB,MAAMoqH,UACtE,CAEDkG,cAAcD,GAEZ,OADA93I,KAAKynB,MAAMoqH,gBAA4BjxI,IAAfk3I,OAA2Bl3I,GAAak3I,EACzD93I,IACR,CAEDg/G,aACE,OAAOh/G,KAAKynB,MAAMioD,OACnB,CAEDo2C,WAAWp2C,GAET,OADA1vE,KAAKynB,MAAMioD,QAAUA,EACd1vE,IACR,CAEDu6J,eACE,OAAOv6J,KAAKynB,MAAMslI,SACnB,CAEDyN,aAAazN,GAEX,OADA/sJ,KAAKynB,MAAMslI,UAAYA,EAChB/sJ,IACR,CAEDyzJ,qBACE,OAAOzzJ,KAAKynB,MAAM4xI,eACnB,CAEDlR,mBAAmBkR,GAGjB,OAFAr5J,KAAKynB,MAAM4xI,gBAAkBA,EAC7Br5J,KAAKqF,YACErF,IACR,CAEDq5I,uBACE,OAAOr5I,KAAKynB,MAAMm6F,iBACnB,CAED03B,qBAAqB13B,GAGnB,OAFA5hH,KAAKynB,MAAMm6F,kBAAoBA,EAC/B5hH,KAAKqF,YACErF,IACR,CAEDi5I,kBACE,OAAOj5I,KAAKynB,MAAMunI,YACnB,CAEDuF,gBAAgBvF,GAEd,OADAhvJ,KAAKynB,MAAMunI,aAAeA,EACnBhvJ,IACR,CAEDgzJ,kBACE,OAAOhzJ,KAAKynB,MAAMurI,eACnB,CAEDyI,mBAAmBzI,GAEjB,OADAhzJ,KAAKynB,MAAMurI,gBAAkBA,EACtBhzJ,IACR,CAQDooJ,YAAYzQ,GAGV,YAF2B/2I,IAAvBZ,KAAKynB,MAAMqxH,UAAuB94I,KAAKynB,MAAMqxH,QAAU,IAAIh/C,eAC/D95F,KAAKynB,MAAMqxH,QAAQsP,YAAYzQ,GACxB33I,IACR,CAEDs7F,cAAcgnB,EAAUy4C,GACtB,KAAMz4C,aAAoB9oB,GAAiB,MAAM,IAAIt5F,MAAM,qEAI3D,QAHoBU,IAAhBm6J,IAA2BA,GAAc,QAGnBn6J,IAAtBZ,KAAK6xI,cAA8B7xI,KAAK6xI,eAAiBvvB,EAASuvB,aAAc,OAAO,EAC3F,QAA0BjxI,IAAtBZ,KAAK83I,cAA8B93I,KAAK83I,eAAiBx1B,EAASw1B,aAAc,OAAO,EAC3F,QAAyBl3I,IAArBZ,KAAKy8H,aAAgF,IAAnDz8H,KAAKy8H,YAAYz/E,QAAQslE,EAASma,aAAoB,OAAO,EACnG,QAA+B77H,IAA3BZ,KAAKu5I,mBAAmCv5I,KAAKu5I,oBAAsBj3B,EAASi3B,kBAAmB,OAAO,EAG1G,GAAIj3B,aAAoB7oB,EAAwB,CAC9C,GAAIz5F,KAAKgzJ,kBAAmB,OAAO,EACnC,QAA0BpyJ,IAAtBZ,KAAKg/G,cAA8Bh/G,KAAKg/G,eAAiBsD,EAAStD,aAAc,OAAO,EAC3F,QAA4Bp+G,IAAxBZ,KAAKu6J,iBAAiCv6J,KAAKu6J,eAAe5uF,SAAS22C,EAAStD,cAAe,OAAO,EACtG,QAAkCp+G,IAA9BZ,KAAKyzJ,sBAAsCzzJ,KAAKyzJ,uBAAyBnxC,EAASmxC,qBAAsB,OAAO,EACnH,QAAoC7yJ,IAAhCZ,KAAKq5I,yBAAyCr5I,KAAKq5I,uBAAuB1tE,SAAS22C,EAASmxC,sBAAuB,OAAO,CAC/H,KAGI,MAAInxC,aAAoB5oB,GA2BxB,MAAM,IAAIx5F,MAAM,qEAxBnB,QAA0BU,IAAtBZ,KAAKg/G,oBAA2Dp+G,IAA5B0hH,EAASi4C,iBAAiCj4C,EAASi4C,eAAe5uF,SAAS3rE,KAAKg/G,eAAgB,OAAO,EAC/I,QAA4Bp+G,IAAxBZ,KAAKu6J,eAA8B,CACrC,IAAKj4C,EAASi4C,eAAgB,OAAO,EACrC,IAAKv6J,KAAKu6J,eAAexvI,MAAK2kD,GAAW4yC,EAASi4C,eAAe5uF,SAAS+D,KAAW,OAAO,CAC7F,CAGD,QAAkC9uE,IAA9BZ,KAAKyzJ,4BAA2E7yJ,IAApC0hH,EAAS+2B,yBAAyC/2B,EAAS+2B,uBAAuB1tE,SAAS3rE,KAAKyzJ,uBAAwB,OAAO,EAC/K,QAAoC7yJ,IAAhCZ,KAAKq5I,uBAAsC,CAC7C,IAAK/2B,EAAS+2B,uBAAwB,OAAO,EAC7C,IAAKr5I,KAAKq5I,uBAAuBtuH,MAAKm0F,GAAiBoD,EAAS+2B,uBAAuB1tE,SAASuzC,KAAiB,OAAO,CACzH,CAGD,QAA+Bt+G,IAA3BZ,KAAKgzJ,kBAAiC,CACxC,GAAIhzJ,KAAKgzJ,wBAAoDpyJ,IAA/B0hH,EAAS22B,kBAAiC,OAAO,EAC/E,IAAKj5I,KAAKgzJ,wBAAoDpyJ,IAA/B0hH,EAAS22B,kBAAiC,OAAO,CACjF,CAOE,CAGL,QAAI8hB,QAAqCn6J,IAAtBZ,KAAK64I,eAA+B74I,KAAK64I,aAAav9C,cAAcgnB,EAAS7B,SAEjG,CAEDp7G,YACE,QAAkCzE,IAA9BZ,KAAKyzJ,sBAAsCzzJ,KAAKyzJ,qBAAuB,EAAG,MAAM,IAAIp9D,EAAY,iCACpG,QAAoCz1F,IAAhCZ,KAAKq5I,uBAAsC,IAAK,IAAIn6B,KAAiBl/G,KAAKq5I,uBAAwB,GAAIn6B,EAAgB,EAAG,MAAM,IAAI7oB,EAAY,kCACpJ,EAGH72F,EAAOC,QAAUk6F,mBC5NjB,MAAMtyE,EAASq9B,EAAQ,OACjByxC,EAAazxC,EAAAA,OAAAA,WACbsrC,EAAWtrC,EAAQ,OACnBk0C,EAAoBl0C,EAAQ,OAC5B2xC,EAAc3xC,EAAQ,OAK5B,MAAM20C,EAoCJnvF,YAAYi4F,EAAQu5D,GAClB,GAAIl2J,UAAUrE,OAAS,EAAG,MAAM,IAAIk1F,EAAY,4EAA8E7wF,UAAUrE,QAGxI,GAAKghG,EACA,GAAIA,aAAkB9I,EAAgBr5F,KAAKynB,MAAQ06E,EAAO2N,aAC1D,IAAsB,iBAAX3N,EAeX,MAAM,IAAI9L,EAAY,oDAAsD8L,GAd/EniG,KAAKynB,MAAQzd,OAAOumC,OAAO,CAAC,EAAG4xD,GAC3Bu5D,IAC+B,iBAAtB17J,KAAKynB,MAAMk1G,SAAqB38H,KAAKynB,MAAMk1G,OAASxmC,EAAWnlF,MAAMhR,KAAKynB,MAAMk1G,SACtD,iBAA1B38H,KAAKynB,MAAMisH,aAAyB1zI,KAAKynB,MAAMisH,WAAav9C,EAAWnlF,MAAMhR,KAAKynB,MAAMisH,aAC7D,iBAA3B1zI,KAAKynB,MAAMk0I,cAA0B37J,KAAKynB,MAAMk0I,YAAcxlE,EAAWnlF,MAAMhR,KAAKynB,MAAMk0I,eAIvG,IAAK,IAAI76J,KAAOkJ,OAAOoH,KAAK+wF,GAC1B,IAAKnS,EAASqb,cAAchS,EAAekV,iBAAkBztG,GAC3D,MAAM,IAAIu1F,EAAY,yCAA2Cv1F,EAAM,IAIxE,MAjBQd,KAAKynB,MAAQ,CAAC,OAoBJ7mB,IAAnBZ,KAAKynB,MAAMgqG,KAAuBzxH,KAAKynB,MAAMgqG,eAAet7B,IAAan2F,KAAKynB,MAAMgqG,IAAMt7B,EAAWnlF,MAAMhR,KAAKynB,MAAMgqG,WAC5F7wH,IAA1BZ,KAAKynB,MAAMisH,YAA8B1zI,KAAKynB,MAAMisH,sBAAsBv9C,IAAan2F,KAAKynB,MAAMisH,WAAav9C,EAAWnlF,MAAMhR,KAAKynB,MAAMisH,kBAChH9yI,IAA3BZ,KAAKynB,MAAMk0I,aAA+B37J,KAAKynB,MAAMk0I,uBAAuBxlE,IAAan2F,KAAKynB,MAAMk0I,YAAcxlE,EAAWnlF,MAAMhR,KAAKynB,MAAMk0I,cAG9I37J,KAAKynB,MAAMunI,eACb3nI,OAA8BzmB,IAAvBZ,KAAKynB,MAAMioD,cAA+C9uE,IAAtBZ,KAAKynB,MAAMk1G,OAAsB,+EAC5E38H,KAAKu0J,gBAAgBv0J,KAAKynB,MAAMunI,aAAa17I,KAAIy7I,GAAeA,aAAuBn2D,EAAoBm2D,EAAc,IAAIn2D,EAAkBm2D,QAI7I/uJ,KAAKynB,MAAMioD,SAAW1vE,KAAKynB,MAAMk1G,UACnCt1G,GAAQrnB,KAAKynB,MAAMunI,aAAc,+EACjChvJ,KAAK8lH,WAAW9lH,KAAKynB,MAAMioD,SAC3B1vE,KAAK08H,UAAU18H,KAAKynB,MAAMk1G,eACnB38H,KAAKynB,MAAMioD,eACX1vE,KAAKynB,MAAMk1G,aAIe/7H,IAA/BZ,KAAKynB,MAAM4xI,kBACbr5J,KAAKs5I,qBAAqB,CAACt5I,KAAKynB,MAAM4xI,yBAC/Br5J,KAAKynB,MAAM4xI,gBAErB,CAED5yJ,OACE,OAAO,IAAI4yF,EAAer5F,KAC3B,CAED8vG,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,OAClC,GAAIznB,KAAKi5I,kBAAmB,CAC1B5mC,EAAK28C,aAAe,GACpB,IAAK,IAAID,KAAe/uJ,KAAKi5I,kBAAmB5mC,EAAK28C,aAAav7I,KAAKs7I,EAAYj/C,SACpF,CAID,OAHI9vG,KAAKw6H,WAAUnoB,EAAKof,IAAMzxH,KAAKw6H,SAASjsG,YACxCvuB,KAAK26H,kBAAiBtoB,EAAKqhC,WAAa1zI,KAAK26H,gBAAgBpsG,YAC7DvuB,KAAKm5I,mBAAkB9mC,EAAKspD,YAAc37J,KAAKm5I,iBAAiB5qH,YAC7D8jF,CACR,CAQDyT,WAAWp2C,GACT,QAAgC9uE,IAA5BZ,KAAKynB,MAAMunI,cAA8BhvJ,KAAKynB,MAAMunI,aAAa7tJ,OAAS,EAAG,MAAM,IAAIk1F,EAAY,+EAGvG,YAFgCz1F,IAA5BZ,KAAKynB,MAAMunI,cAAiE,IAAnChvJ,KAAKynB,MAAMunI,aAAa7tJ,OAAcnB,KAAK47J,eAAe,IAAIhjE,EAAkBlpB,IACxH1vE,KAAKynB,MAAMunI,aAAa,GAAGlpC,WAAWp2C,GACpC1vE,IACR,CAODg/G,aACE,QAAgCp+G,IAA5BZ,KAAKynB,MAAMunI,cAAiE,IAAnChvJ,KAAKynB,MAAMunI,aAAa7tJ,OAAc,MAAM,IAAIk1F,EAAY,mFACzG,OAAOr2F,KAAKynB,MAAMunI,aAAa,GAAGhwC,YACnC,CAQD0d,UAAUC,GACR,QAAe/7H,IAAX+7H,KAA0B38H,KAAKynB,MAAMk1G,kBAAkBxmC,GAAa,CACtE,GAAsB,iBAAXwmC,EAAqB,MAAM,IAAItmC,EAAY,mDACtD,IAAMsmC,EAASxmC,EAAWnlF,MAAM2rH,EAC+C,CAA/E,MAAOlwG,GAAO,MAAM,IAAI4pE,EAAY,+BAAiCsmC,EAAU,CAChF,CACD,QAAgC/7H,IAA5BZ,KAAKynB,MAAMunI,cAA8BhvJ,KAAKynB,MAAMunI,aAAa7tJ,OAAS,EAAG,MAAM,IAAIk1F,EAAY,8EAGvG,YAFgCz1F,IAA5BZ,KAAKynB,MAAMunI,cAAiE,IAAnChvJ,KAAKynB,MAAMunI,aAAa7tJ,OAAcnB,KAAK47J,eAAe,IAAIhjE,OAAkBh4F,EAAW+7H,IACnI38H,KAAKynB,MAAMunI,aAAa,GAAGtyB,UAAUC,GACnC38H,IACR,CAODy8H,YACE,QAAgC77H,IAA5BZ,KAAKynB,MAAMunI,cAAiE,IAAnChvJ,KAAKynB,MAAMunI,aAAa7tJ,OAAc,MAAM,IAAIk1F,EAAY,kFACzG,OAAOr2F,KAAKynB,MAAMunI,aAAa,GAAGvyB,WACnC,CAEDm/B,eAAeC,EAAsBl/B,GACnC,MAAoC,iBAAzBk/B,EAA0C77J,KAAK47J,eAAe,IAAIhjE,EAAkBijE,EAAsBl/B,KACrHt1G,EAAOw0I,aAAgCjjE,QACPh4F,IAA5BZ,KAAKynB,MAAMunI,eAA4BhvJ,KAAKynB,MAAMunI,aAAe,IACrEhvJ,KAAKynB,MAAMunI,aAAav7I,KAAKooJ,GACtB77J,KACR,CAEDi5I,kBACE,OAAOj5I,KAAKynB,MAAMunI,YACnB,CAEDuF,gBAAgBvF,GAGd,OAFIxpJ,UAAUrE,OAAS,IAAG6tJ,EAAehuJ,MAAM6uB,KAAKrqB,YACpDxF,KAAKynB,MAAMunI,aAAeA,EACnBhvJ,IACR,CAED87J,eAAe/M,GACb,OAAO/uJ,KAAKu0J,gBAAgBxF,EAAc,CAACA,GAAeA,EAC3D,CAED3V,qBACE,OAAOp5I,KAAKynB,MAAMs0I,eACnB,CAEDC,mBAAmBC,GAGjB,OAFIz2J,UAAUrE,OAAS,IAAG86J,EAAqBj7J,MAAM6uB,KAAKrqB,YAC1DxF,KAAKynB,MAAMs0I,gBAAkBE,EACtBj8J,IACR,CAED8zI,eACE,OAAO9zI,KAAKynB,MAAM4pF,SACnB,CAED0iC,aAAa1iC,GAEX,OADArxG,KAAKynB,MAAM4pF,UAAYA,EAChBrxG,IACR,CAEDutG,cACE,OAAOvtG,KAAKynB,MAAM0rC,QACnB,CAED27C,YAAY37C,GAEV,OADAnzD,KAAKynB,MAAM0rC,SAAWA,EACfnzD,IACR,CAEDw6H,SACE,OAAOx6H,KAAKynB,MAAMgqG,GACnB,CAEDD,OAAOC,GAEL,OADAzxH,KAAKynB,MAAMgqG,IAAMA,EACVzxH,IACR,CAEDu5I,kBACE,OAAOv5I,KAAKynB,MAAMyzI,YACnB,CAEDhT,gBAAgBgT,GAEd,OADAl7J,KAAKynB,MAAMyzI,aAAeA,EACnBl7J,IACR,CAEDmoJ,mBAAmBkR,GAEjB,OADAr5J,KAAKs5I,qBAAqB,CAAC+f,IACpBr5J,IACR,CAEDq5I,uBACE,OAAOr5I,KAAKynB,MAAMm6F,iBACnB,CAED03B,qBAAqB13B,GAGnB,OAFIp8G,UAAUrE,OAAS,IAAGygH,EAAoB5gH,MAAM6uB,KAAKrqB,YACzDxF,KAAKynB,MAAMm6F,kBAAoBA,EACxB5hH,IACR,CAED26H,gBACE,OAAO36H,KAAKynB,MAAMisH,UACnB,CAED9Y,cAAc8Y,GACZ,QAAmB9yI,IAAf8yI,IACwB,iBAAfA,IAAyBA,EAAa,GAAKA,KAChDA,aAAsBv9C,IAC1B,IAAMu9C,EAAav9C,EAAWnlF,MAAM0iI,EACwC,CAA5E,MAAOjnH,GAAO,MAAM,IAAI4pE,EAAY,wBAA0Bq9C,EAAc,CAIhF,OADA1zI,KAAKynB,MAAMisH,WAAaA,EACjB1zI,IACR,CAEDi7H,WACE,OAAOj7H,KAAKynB,MAAMq8F,KACnB,CAEDuM,SAASvM,GAEP,OADA9jH,KAAKynB,MAAMq8F,MAAQA,EACZ9jH,IACR,CAEDi4I,cACE,OAAOj4I,KAAKynB,MAAMy0I,QACnB,CAEDhkB,YAAYgkB,GAEV,OADAl8J,KAAKynB,MAAMy0I,SAAWA,EACfl8J,IACR,CAEDwxJ,UACE,OAAOxxJ,KAAKynB,MAAM8wH,IACnB,CAEDmZ,QAAQnZ,GAEN,OADAv4I,KAAKynB,MAAM8wH,KAAOA,EACXv4I,IACR,CAEDsxJ,mBACE,OAAOtxJ,KAAKynB,MAAM00I,aACnB,CAED1K,iBAAiB0K,GAEf,OADAn8J,KAAKynB,MAAM00I,cAAgBA,EACpBn8J,IACR,CAIDm5I,iBACE,OAAOn5I,KAAKynB,MAAMk0I,WACnB,CAEDS,eAAeT,GAEb,OADA37J,KAAKynB,MAAMk0I,YAAcA,EAClB37J,IACR,CAEDk5I,yBACE,OAAOl5I,KAAKynB,MAAM40I,mBACnB,CAEDzM,uBAAuByM,GAErB,OADAr8J,KAAKynB,MAAM40I,oBAAsBA,EAC1Br8J,IACR,CAOD48H,cACE,OAAO58H,KAAKynB,MAAMs7F,QACnB,CAOD8Z,YAAY9Z,GAEV,OADA/iH,KAAKynB,MAAMs7F,SAAWA,EACf/iH,IACR,EAGHq5F,EAAekV,iBAAmB,CAAC,UAAW,SAAU,eAAgB,kBAAmB,oBAAqB,QAAS,WAAY,eAAgB,kBAAmB,YAAa,aAAc,OAAQ,gBAAiB,WAAY,cAAe,sBAAuB,YAE9Q/uG,EAAOC,QAAU45F,aC9UjB,MAAMD,GAKNA,EAAiBkjE,QAAU,EAK3BljE,EAAiBmjE,YAAc,EAK/BnjE,EAAiBojE,OAAS,EAK1BpjE,EAAiBqjE,SAAW,EAE5Bj9J,EAAOC,QAAU25F,mBC3BjB,MAAM/xE,EAASq9B,EAAQ,OACjBy0C,EAAoBz0C,EAAQ,OAC5Bi1C,EAAsBj1C,EAAQ,OAC9Bm1C,EAAiBn1C,EAAQ,OAQ/B,MAAMo1C,UAAsBD,EA0C1B3vF,YAAYi4F,GACV4L,MAAM5L,IAGFniG,KAAKynB,MAAMwlI,eAAmBjtJ,KAAKynB,MAAMwlI,yBAAyBtzD,IAAsB35F,KAAKynB,MAAMwlI,cAAgB,IAAItzD,EAAoB35F,KAAKynB,MAAMwlI,iBACtJjtJ,KAAKynB,MAAMylI,YAAgBltJ,KAAKynB,MAAMylI,sBAAsB/zD,IAAoBn5F,KAAKynB,MAAMylI,WAAa,IAAI/zD,EAAkBn5F,KAAKynB,MAAMylI,cACzIltJ,KAAKynB,MAAM0lI,aAAiBntJ,KAAKynB,MAAM0lI,uBAAuBh0D,IAAoBn5F,KAAKynB,MAAM0lI,YAAc,IAAIh0D,EAAkBn5F,KAAKynB,MAAM0lI,cAG5IntJ,KAAKynB,MAAMwlI,eAAejtJ,KAAKynB,MAAMwlI,cAAcrU,WAAW54I,MAC9DA,KAAKynB,MAAMylI,YAAYltJ,KAAKynB,MAAMylI,WAAWtU,WAAW54I,MACxDA,KAAKynB,MAAM0lI,aAAantJ,KAAKynB,MAAM0lI,YAAYvU,WAAW54I,MAG1DA,KAAKynB,MAAMvQ,OACblX,KAAK04I,UAAU,CAAC14I,KAAKynB,MAAMvQ,cACpBlX,KAAKynB,MAAMvQ,KAErB,CAEDzQ,OACE,OAAO,IAAIqzF,EAAc95F,KAC1B,CAED8vG,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,MAAOsmF,MAAM+B,UAK/C,OAJI9vG,KAAKoiH,qBAAoB/P,EAAK46C,cAAgBjtJ,KAAKoiH,mBAAmBtS,UACtE9vG,KAAK24I,kBAAiBtmC,EAAK66C,WAAaltJ,KAAK24I,gBAAgB7oC,UAC7D9vG,KAAKwiH,mBAAkBnQ,EAAK86C,YAAcntJ,KAAKwiH,iBAAiB1S,iBAC7DuC,EAAKwE,MACLxE,CACR,CAEDw/B,aACE,OAAO7xI,KAAKynB,MAAMoqH,UACnB,CAEDxN,cAAcwN,GAEZ,OADA7xI,KAAKynB,MAAMoqH,WAAaA,EACjB7xI,IACR,CAED83I,aACE,OAAO93I,KAAKynB,MAAMqwH,UACnB,CAEDC,cAAcD,GAEZ,OADA93I,KAAKynB,MAAMqwH,WAAaA,EACjB93I,IACR,CAEDgnJ,YACE,OAAOhnJ,KAAKynB,MAAM8xF,MACnB,CAEDm/B,UAAUn/B,GAER,OADAv5G,KAAKynB,MAAM8xF,OAASA,EACbv5G,IACR,CAEDgwH,QAAQ94G,GACN,YAAatW,IAATsW,EAA2BlX,KAAK04I,eAAU93I,IAC9CymB,EAAuB,iBAATnQ,GACPlX,KAAK04I,UAAU,CAACxhI,IACxB,CAEDwlJ,eACE,OAAO18J,KAAKynB,MAAMi1I,YACnB,CAEDC,kBAEE,OADA38J,KAAKynB,MAAMi1I,aAAeA,aACnB18J,IACR,CAED48J,gBACE,OAAO58J,KAAKynB,MAAMo1I,UACnB,CAEDC,cAAcD,GAEZ,OADA78J,KAAKynB,MAAMo1I,WAAaA,EACjB78J,IACR,CAED+zI,aAAa1iC,GACX,YAAkBzwG,IAAdywG,EAAgCrxG,KAAK88J,mBAAcl8J,IACvDymB,EAA4B,iBAAdgqF,GACPrxG,KAAK88J,cAAc,CAACzrD,IAC5B,CAEDgE,YACE,OAAOr1G,KAAKynB,MAAMy4E,MACnB,CAED4vB,UAAU5vB,GAER,OADAlgG,KAAKynB,MAAMy4E,OAASA,EACblgG,IACR,CAEDqzJ,eACE,OAAOrzJ,KAAKynB,MAAM+vI,SACnB,CAEDE,aAAaF,GAEX,OADAx3J,KAAKynB,MAAM+vI,UAAYA,EAChBx3J,IACR,CAED8yJ,eACE,OAAO9yJ,KAAKynB,MAAM2uG,SACnB,CAED2mC,aAAa3mC,GAEX,OADAp2H,KAAKynB,MAAM2uG,UAAYA,EAChBp2H,IACR,CAEDytJ,oBACE,OAAOztJ,KAAKynB,MAAMu1I,cACnB,CAEDrF,kBAAkBqF,GAEhB,OADAh9J,KAAKynB,MAAMu1I,eAAiBA,EACrBh9J,IACR,CAEDoiH,mBACE,OAAOpiH,KAAKynB,MAAMwlI,aACnB,CAEDlU,iBAAiBkU,GAGf,OAFAjtJ,KAAKynB,MAAMwlI,cAAgBA,EACvBA,IAAeA,EAAcxlI,MAAMqxH,QAAU94I,MAC1CA,IACR,CAED24I,gBACE,OAAO34I,KAAKynB,MAAMylI,UACnB,CAEDE,cAAcF,GAGZ,OAFAltJ,KAAKynB,MAAMylI,WAAaA,EACpBA,IAAYA,EAAWzlI,MAAMqxH,QAAU94I,MACpCA,IACR,CAEDwiH,iBACE,OAAOxiH,KAAKynB,MAAM0lI,WACnB,CAEDnU,eAAemU,GAGb,OAFAntJ,KAAKynB,MAAM0lI,YAAcA,EACrBA,IAAaA,EAAY1lI,MAAMqxH,QAAU94I,MACtCA,IACR,CAEDs7F,cAAc2W,EAAIgrD,GAChB,KAAMhrD,aAAcpY,GAAiB,MAAM,IAAI35F,MAAM,mDAIrD,QAHsBU,IAAlBq8J,IAA6BA,GAAgB,QAG1Br8J,IAAnBZ,KAAKmyG,WAA2BnyG,KAAKmyG,YAAcF,EAAGE,UAAW,OAAO,EAC5E,QAA4BvxG,IAAxBZ,KAAK8zI,gBAAgC9zI,KAAK8zI,iBAAmB7hC,EAAG6hC,eAAgB,OAAO,EAC3F,QAA2BlzI,IAAvBZ,KAAKy5H,eAA+Bz5H,KAAKy5H,gBAAkBxnB,EAAGwnB,cAAe,OAAO,EACxF,QAAwB74H,IAApBZ,KAAK05H,YAA4B15H,KAAK05H,aAAeznB,EAAGynB,WAAY,OAAO,EAC/E,QAAwB94H,IAApBZ,KAAKi7H,YAA4Bj7H,KAAKi7H,aAAehpB,EAAGgpB,WAAY,OAAO,EAC/E,QAAyBr6H,IAArBZ,KAAK86H,aAA6B96H,KAAK86H,cAAgB7oB,EAAG6oB,YAAa,OAAO,EAClF,QAAwBl6H,IAApBZ,KAAKs7H,YAA4Bt7H,KAAKs7H,aAAerpB,EAAGqpB,WAAY,OAAO,EAC/E,QAAyB16H,IAArBZ,KAAK4zI,aAA6B5zI,KAAK4zI,cAAgB3hC,EAAG2hC,YAAa,OAAO,EAClF,QAAwBhzI,IAApBZ,KAAK23I,YAA4B33I,KAAK23I,aAAe1lC,EAAG0lC,WAAY,OAAO,EAG/E,QAA4B/2I,IAAxBZ,KAAK08J,eAA8B,CACrC,GAAI18J,KAAK08J,qBAAwC97J,IAAtBqxG,EAAG6hC,eAA8B,OAAO,EACnE,IAAK9zI,KAAK08J,qBAAwC97J,IAAtBqxG,EAAG6hC,eAA8B,OAAO,CACrE,CAGD,QAA0BlzI,IAAtBZ,KAAK6xI,aAA4B,CACnC,GAAI7xI,KAAK6xI,eAAiB5/B,EAAG4/B,aAAc,OAAO,EAClD,IAAK7xI,KAAK6xI,cAAgB5/B,EAAG4/B,aAAc,OAAO,CACnD,CAGD,QAA0BjxI,IAAtBZ,KAAK83I,aAA4B,CACnC,GAAI93I,KAAK83I,eAAiB7lC,EAAG6lC,aAAc,OAAO,EAClD,IAAK93I,KAAK83I,cAAgB7lC,EAAG6lC,aAAc,OAAO,CACnD,CAGD,IAAIolB,OAA6Bt8J,IAAlBqxG,EAAG8F,gBAA2Bn3G,EAAYqxG,EAAG8F,WAAW1C,YACvE,QAAyBz0G,IAArBZ,KAAKgnJ,cAA8BhnJ,KAAKgnJ,YAAYr7E,SAASsmC,EAAGE,WAAY,OAAO,EACvF,QAA6BvxG,IAAzBZ,KAAK48J,kBAAkC58J,KAAK48J,gBAAgBjxF,SAASsmC,EAAG6hC,gBAAiB,OAAO,EACpG,QAAyBlzI,IAArBZ,KAAKq1G,mBAA2Cz0G,IAAbs8J,GAA0BA,IAAal9J,KAAKq1G,aAAc,OAAO,EACxG,QAA4Bz0G,IAAxBZ,KAAKqzJ,qBAA6CzyJ,IAAbs8J,GAA0BA,EAAWl9J,KAAKqzJ,eAAgB,OAAO,EAC1G,QAA4BzyJ,IAAxBZ,KAAK8yJ,sBAA8ClyJ,IAAbs8J,GAA0BA,EAAWl9J,KAAK8yJ,gBAAiB,OAAO,EAI5G,IAAKmK,EAAe,OAAO,EAG3B,GAAIj9J,KAAKoiH,mBAAoB,CAC3B,IAAI+6C,GAAa,EACjB,GAAIlrD,EAAGk1C,uBAAyBnnJ,KAAKoiH,mBAAmB9mB,cAAc2W,EAAGk1C,uBAAuB,GAAQgW,GAAa,OAChH,GAAIlrD,EAAGwzC,uBACV,IAAK,IAAI2X,KAAoBnrD,EAAGwzC,uBAC9B,GAAIzlJ,KAAKoiH,mBAAmB9mB,cAAc8hE,GAAkB,GAAQ,CAClED,GAAa,EACb,KACD,CAGL,IAAKA,EAAY,OAAO,CACzB,CAGD,QAA6Bv8J,IAAzBZ,KAAK24I,gBAA+B,CACtC,QAAuB/3I,IAAnBqxG,EAAG2iC,aAAuD,IAA1B3iC,EAAG2iC,YAAYzzI,OAAc,OAAO,EACxE,IAAIg8J,GAAa,EACjB,IAAK,IAAI/zI,KAAS6oF,EAAG2iC,YACnB,GAAI50I,KAAK24I,gBAAgBr9C,cAAclyE,GAAO,GAAQ,CACpD+zI,GAAa,EACb,KACD,CAEH,IAAKA,EAAY,OAAO,CACzB,CAGD,QAA8Bv8J,IAA1BZ,KAAKwiH,iBAAgC,CACvC,QAAwB5hH,IAApBqxG,EAAGsQ,cAAyD,IAA3BtQ,EAAGsQ,aAAaphH,OAAc,OAAO,EAC1E,IAAIg8J,GAAa,EACjB,IAAK,IAAI11H,KAAUwqE,EAAGsQ,aACpB,GAAIviH,KAAKwiH,iBAAiBlnB,cAAc7zD,GAAQ,GAAQ,CACtD01H,GAAa,EACb,KACD,CAEH,IAAKA,EAAY,OAAO,CACzB,CAED,OAAO,CACR,EAGH39J,EAAOC,QAAUq6F,mBC3SjB,MAAMzyE,EAASq9B,EAAQ,OACjBsrC,EAAWtrC,EAAQ,OACnBm1C,EAAiBn1C,EAAQ,OACzB21C,EAAc31C,EAAQ,OAU5B,MAAMk1C,EAEJ1vF,YAAYud,GAGV,GAAKA,EACA,IAAqB,iBAAVA,EACX,MAAM,IAAI4uE,YAAY,mCADS5uE,EAAQzd,OAAOumC,OAAO,CAAC,EAAG9oB,EACzD,MAFOA,EAAQ,CAAC,EAMrB,GAHAznB,KAAKynB,MAAQA,EAGTA,EAAMuqF,IACR,IAAK,IAAI9wG,EAAI,EAAGA,EAAIumB,EAAMuqF,IAAI7wG,OAAQD,IAC9BumB,EAAMuqF,IAAI9wG,aAAc24F,IAAiBpyE,EAAMuqF,IAAI9wG,GAAK,IAAI24F,EAAepyE,EAAMuqF,IAAI9wG,KAC3FumB,EAAMuqF,IAAI9wG,GAAG8zJ,SAASh1J,KAG3B,CAED8vG,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,OAClC,GAAIznB,KAAK63G,SAAU,CACjBxF,EAAKL,IAAM,GACX,IAAK,IAAIC,KAAMjyG,KAAK63G,SAAUxF,EAAKL,IAAIv+F,KAAKw+F,EAAGnC,SAChD,CACD,OAAOuC,CACR,CAEDwF,SACE,OAAO73G,KAAKynB,MAAMuqF,GACnB,CAEDgG,OAAOhG,GAEL,OADAhyG,KAAKynB,MAAMuqF,IAAMA,EACVhyG,IACR,CAED8hJ,mBACE,OAAO9hJ,KAAKynB,MAAM2/F,aACnB,CAEDkxB,iBAAiBlxB,GAEf,OADApnH,KAAKynB,MAAM2/F,cAAgBA,EACpBpnH,IACR,CAED2hJ,mBACE,OAAO3hJ,KAAKynB,MAAM28F,aACnB,CAEDi0B,iBAAiBj0B,GAEf,OADApkH,KAAKynB,MAAM28F,cAAgBA,EACpBpkH,IACR,CAED6hJ,iBACE,OAAO7hJ,KAAKynB,MAAM68F,WACnB,CAEDs9B,eAAet9B,GAEb,OADAtkH,KAAKynB,MAAM68F,YAAcA,EAClBtkH,IACR,CAEDoyG,MAAMwR,GAEJ,GADAv8F,EAAOu8F,aAAiBhqB,GACpB55F,OAAS4jH,EAAO,OAAO5jH,KAQ3B,GALAA,KAAKs4I,iBAAiBtoD,EAASuS,UAAUviG,KAAK8hJ,mBAAoBl+B,EAAMk+B,qBACxE9hJ,KAAKq4I,iBAAiBroD,EAASuS,UAAUviG,KAAK2hJ,mBAAoB/9B,EAAM+9B,qBACxE3hJ,KAAK4hJ,eAAe5xD,EAASuS,UAAUviG,KAAK6hJ,iBAAkBj+B,EAAMi+B,wBAG7CjhJ,IAAnBgjH,EAAM/L,SACR,IAAK,IAAI5F,KAAM2R,EAAM/L,SACnB5F,EAAG+iD,SAASh1J,MACZq6F,EAAYgjE,QAAQr9J,KAAK63G,SAAU5F,GAIvC,OAAOjyG,IACR,CAEDuuB,SAASo0E,EAAS,GAChB,IAAIz3F,EAAM,GAIV,GAHAA,GAAO8kF,EAAS24C,OAAO,oBAAqB3oI,KAAK8hJ,mBAAoBn/C,GACrEz3F,GAAO8kF,EAAS24C,OAAO,oBAAqB3oI,KAAK2hJ,mBAAoBh/C,GACrEz3F,GAAO8kF,EAAS24C,OAAO,kBAAmB3oI,KAAK6hJ,iBAAkBl/C,QAC3C/hG,IAAlBZ,KAAK63G,SAAwB,CAC/B3sG,GAAO8kF,EAAS24C,OAAO,MAAO,GAAIhmC,GAClC,IAAK,IAAIsP,KAAMjyG,KAAK63G,SAClB3sG,GAAO+mG,EAAG1jF,SAASo0E,EAAS,GAAK,IAEpC,CACD,OAAOz3F,CACR,EAGH1L,EAAOC,QAAUm6F,mBChHjB,MAAMvyE,EAASq9B,EAAQ,OACjByxC,EAAazxC,EAAAA,OAAAA,WACbsrC,EAAWtrC,EAAQ,OACnB+0C,EAAyB/0C,EAAQ,OACjCg1C,EAAyBh1C,EAAQ,OACjCw0C,EAAqBx0C,EAAQ,OAC7BwzC,EAAWxzC,EAAQ,MAQzB,MAAMm1C,UAAuB3B,EAO3BhuF,YAAYud,GAMV,GALAsmF,MAAMtmF,GACFA,aAAiBoyE,GAAkBpyE,EAAM87F,YAAYvjH,KAAKg1J,SAASvtI,EAAM87F,aAC7E97F,EAAQznB,KAAKynB,OAGH61I,kBACR,IAAK,IAAIp8J,EAAI,EAAGA,EAAIumB,EAAM61I,kBAAkBn8J,OAAQD,IAC5CumB,EAAM61I,kBAAkBp8J,aAAcu4F,IAC1ChyE,EAAM61I,kBAAkBp8J,GAAK,IAAIu4F,EAAuBzvF,OAAOumC,OAAO9oB,EAAM61I,kBAAkBp8J,GAAI,CAAC+wG,GAAIjyG,SAW7G,IALIynB,EAAMmsI,kBAAsBnsI,EAAMmsI,4BAA4Bl6D,GAChE15F,KAAKw0J,oBAAoB,IAAI96D,EAAuB1vF,OAAOumC,OAAO9oB,EAAMmsI,iBAAkB,CAAC3hD,GAAIjyG,SAI7FynB,EAAMksH,OACR,IAAK,IAAIzyI,EAAI,EAAGA,EAAIumB,EAAMksH,OAAOxyI,OAAQD,IACjCumB,EAAMksH,OAAOzyI,aAAcg4F,IAC/BzxE,EAAMksH,OAAOzyI,GAAK,IAAIg4F,EAAmBlvF,OAAOumC,OAAO9oB,EAAMksH,OAAOzyI,GAAG4uG,SAAU,CAACmC,GAAIjyG,SAM5F,GAAIynB,EAAMg7F,QACR,IAAK,IAAIvhH,EAAI,EAAGA,EAAIumB,EAAMg7F,QAAQthH,OAAQD,IAClCumB,EAAMg7F,QAAQvhH,aAAcg4F,IAChCzxE,EAAMg7F,QAAQvhH,GAAK,IAAIg4F,EAAmBlvF,OAAOumC,OAAO9oB,EAAMg7F,QAAQvhH,GAAG4uG,SAAU,CAACmC,GAAIjyG,cAMvEY,IAAnB6mB,EAAM81I,UAA4B91I,EAAM81I,oBAAoBpnE,IAAa1uE,EAAM81I,SAAWpnE,EAAWnlF,MAAMyW,EAAM81I,gBAC7F38J,IAApB6mB,EAAM+1I,WAA6B/1I,EAAM+1I,qBAAqBrnE,IAAa1uE,EAAM+1I,UAAYrnE,EAAWnlF,MAAMyW,EAAM+1I,iBAC7F58J,IAAvB6mB,EAAMg2I,cAAgCh2I,EAAMg2I,wBAAwBtnE,IAAa1uE,EAAMg2I,aAAetnE,EAAWnlF,MAAMyW,EAAMg2I,cAClI,CAED3tD,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKynB,MAAOsmF,MAAM+B,UAC/C,GAAI9vG,KAAKylJ,uBAAwB,CAC/BpzC,EAAKirD,kBAAoB,GACzB,IAAK,IAAIF,KAAoBp9J,KAAKylJ,uBAAwBpzC,EAAKirD,kBAAkB7pJ,KAAK2pJ,EAAiBttD,SACxG,CAOD,OANI9vG,KAAKmnJ,wBAAuB90C,EAAKuhD,iBAAmB5zJ,KAAKmnJ,sBAAsBr3C,UAC/E9vG,KAAK09J,gBAAerrD,EAAKkrD,SAAWv9J,KAAK09J,cAAcnvI,YACvDvuB,KAAK29J,iBAAgBtrD,EAAKmrD,UAAYx9J,KAAK29J,eAAepvI,YAC1DvuB,KAAK49J,oBAAmBvrD,EAAKorD,aAAez9J,KAAK49J,kBAAkBrvI,mBAChE8jF,EAAKwE,aACLxE,EAAKuR,MACLvR,CACR,CAEDkR,WACE,OAAOvjH,KAAKynB,MAAMm8F,KACnB,CAEDoxC,SAASpxC,GAEP,OADA5jH,KAAKynB,MAAMm8F,MAAQA,EACZ5jH,IACR,CAED6xI,aACE,OAAO7xI,KAAKynB,MAAMoqH,UACnB,CAEDxN,cAAcwN,GAEZ,OADA7xI,KAAKynB,MAAMoqH,WAAaA,EACjB7xI,IACR,CAED83I,aACE,OAAO93I,KAAKynB,MAAMqwH,UACnB,CAEDC,cAAcD,GAEZ,OADA93I,KAAKynB,MAAMqwH,WAAaA,EACjB93I,IACR,CAED69J,oBACE,QAAoCj9J,IAAhCZ,KAAKylJ,uBAAsC,OAC/C,IAAIqY,EAAc3nE,EAAWnlF,MAAM,KACnC,IAAK,IAAIsxG,KAAYtiH,KAAKylJ,uBAAwBqY,EAAcA,EAAYl4J,IAAI08G,EAASma,aACzF,OAAOqhC,CACR,CAEDnK,oBACE,OAAO3zJ,KAAKmnJ,sBAAwBnnJ,KAAKmnJ,sBAAsB1qB,iBAAc77H,CAC9E,CAEDuhH,aAAa8qC,GACX,IAAI5qC,EAAY,GAEhB,IADIriH,KAAKmnJ,uBAA2B8F,IAAiBA,EAAc3xD,cAAct7F,KAAKmnJ,wBAAyB9kC,EAAU5uG,KAAKzT,KAAKmnJ,uBAC/HnnJ,KAAKylJ,uBACP,IAAK,IAAInjC,KAAYtiH,KAAKylJ,uBACnBwH,IAAiBA,EAAc3xD,cAAcgnB,IAAWD,EAAU5uG,KAAK6uG,GAGhF,OAAOD,CACR,CAED4rC,gBAAgBhB,GACd,IAAI5qC,EAAY,GAOhB,IAJIriH,KAAKmnJ,uBAA2B8F,IAAiBA,EAAc3xD,cAAct7F,KAAKmnJ,uBACjFnnJ,KAAKw0J,yBAAoB5zJ,GADiFyhH,EAAU5uG,KAAKzT,KAAKmnJ,uBAI/HnnJ,KAAKylJ,uBAAwB,CAC/B,IAAIsY,EAAY,GAChB,IAAK,IAAIz7C,KAAYtiH,KAAKylJ,uBACpBwH,EAAc3xD,cAAcgnB,GAAWD,EAAU5uG,KAAK6uG,GACrDy7C,EAAUtqJ,KAAK6uG,GAEtBtiH,KAAKm2J,qBAAqBn2J,KAAKylJ,uBAAuBnlI,QAAO,SAASgiG,GACpE,OAAQy7C,EAAUpyF,SAAS22C,EAC5B,KAC0C,IAAvCtiH,KAAKylJ,uBAAuBtkJ,QAAcnB,KAAKm2J,0BAAqBv1J,EACzE,CAED,OAAOyhH,CACR,CAEDojC,uBACE,OAAOzlJ,KAAKynB,MAAM61I,iBACnB,CAEDnH,qBAAqBmH,GAEnB,OADAt9J,KAAKynB,MAAM61I,kBAAoBA,EACxBt9J,IACR,CAEDmnJ,sBACE,OAAOnnJ,KAAKynB,MAAMmsI,gBACnB,CAEDY,oBAAoBZ,GAElB,OADA5zJ,KAAKynB,MAAMmsI,iBAAmBA,EACvB5zJ,IACR,CAED40I,UAAUuY,GACR,IAAKA,IAAgBp/C,MAAM6mC,YAAa,OAAO7mC,MAAM6mC,YACrD,IAAIjB,EAAS,GACb,IAAK,IAAIlsG,KAAUsmE,MAAM6mC,YAAkBuY,IAAeA,EAAY7xD,cAAc7zD,IAASksG,EAAOlgI,KAAKg0B,GACzG,OAAOksG,CACR,CAED3Z,UAAU2Z,GAGR,GAAIA,EACF,IAAK,IAAIlsG,KAAUksG,EACjB,KAAMlsG,aAAkByxD,GAAqB,MAAM,IAAI7C,YAAY,gEAIvE,OADA0X,MAAMisB,UAAU2Z,GACT3zI,IACR,CAEDuiH,WAAW4qC,GACT,IAAKA,IAAgBp/C,MAAMwU,aAAc,OAAOxU,MAAMwU,aACtD,IAAIE,EAAU,GACd,IAAK,IAAIh7E,KAAUsmE,MAAMwU,aAAmB4qC,IAAeA,EAAY7xD,cAAc7zD,IAASg7E,EAAQhvG,KAAKg0B,GAC3G,OAAOg7E,CACR,CAED0X,WAAW1X,GAGT,GAAIA,EACF,IAAK,IAAIh7E,KAAUg7E,EACjB,KAAMh7E,aAAkByxD,GAAqB,MAAM,IAAI7C,YAAY,iEAIvE,OADA0X,MAAMosB,WAAW1X,GACVziH,IACR,CAEDkuJ,cAAcf,GACZ,IAAI1qC,EAAU,GACd,GAAI1U,MAAMwU,aAAc,CACtB,IAAIw7C,EAAY,GAChB,IAAK,IAAIt2H,KAAUsmE,MAAMwU,cAClB4qC,GAAeA,EAAY7xD,cAAc7zD,GAASg7E,EAAQhvG,KAAKg0B,GAC/Ds2H,EAAUtqJ,KAAKg0B,GAEtBznC,KAAKm6H,WAAWpsB,MAAMwU,aAAajiG,QAAO,SAASmnB,GACjD,OAAQs2H,EAAUpyF,SAASlkC,EAC5B,KACgC,IAA7BznC,KAAKuiH,aAAaphH,QAAcnB,KAAKm6H,gBAAWv5H,EACrD,CACD,OAAO6hH,CACR,CAED+uC,UACE,OAAOxxJ,KAAKynB,MAAM8wH,IACnB,CAEDmZ,QAAQnZ,GAEN,OADAv4I,KAAKynB,MAAM8wH,KAAOA,EACXv4I,IACR,CAED23I,WACE,OAAO33I,KAAKynB,MAAMkwH,QACnB,CAEDyQ,YAAYzQ,GAEV,OADA33I,KAAKynB,MAAMkwH,SAAWA,EACf33I,IACR,CAED09J,cACE,OAAO19J,KAAKynB,MAAM81I,QACnB,CAED3H,YAAY2H,GAEV,OADAv9J,KAAKynB,MAAM81I,SAAWA,EACfv9J,IACR,CAED29J,eACE,OAAO39J,KAAKynB,MAAM+1I,SACnB,CAED3H,aAAa2H,GAEX,OADAx9J,KAAKynB,MAAM+1I,UAAYA,EAChBx9J,IACR,CAEDg+J,mBACE,OAAOh+J,KAAKynB,MAAMw2I,aACnB,CAEDnI,iBAAiBmI,GAEf,OADAj+J,KAAKynB,MAAMw2I,cAAgBA,EACpBj+J,IACR,CAED49J,kBACE,OAAO59J,KAAKynB,MAAMg2I,YACnB,CAED1H,gBAAgB0H,GAEd,OADAz9J,KAAKynB,MAAMg2I,aAAeA,EACnBz9J,IACR,CAEDk+J,qBACE,OAAOl+J,KAAKynB,MAAM02I,eACnB,CAEDnI,mBAAmBmI,GAEjB,OADAn+J,KAAKynB,MAAM02I,gBAAkBA,EACtBn+J,IACR,CAEDo+J,cACE,OAAOp+J,KAAKynB,MAAM42I,QACnB,CAEDpI,YAAYoI,GAEV,OADAr+J,KAAKynB,MAAM42I,SAAWA,EACfr+J,IACR,CAEDyG,OACE,OAAO,IAAIozF,EAAe75F,KAC3B,CAWDoyG,MAAMH,GAEJ,GADA5qF,EAAO4qF,aAAcpY,GACjB75F,OAASiyG,EAAI,OAAOjyG,KAGxB+tG,MAAMqE,MAAMH,GAGZ,MAAMrY,EAAcl1C,EAAQ,OAC5B,GAAI1kD,KAAKujH,aAAetR,EAAGsR,WAQzB,OAPuB3iH,MAAnBZ,KAAKujH,YACPvjH,KAAKg1J,UAAS,IAAIp7D,GAAcoe,OAAO,CAACh4G,aAEpBY,IAAlBqxG,EAAGsR,YACLtR,EAAG+iD,UAAS,IAAIp7D,GAAcoe,OAAO,CAAC/F,KAExCjyG,KAAKujH,WAAWnR,MAAMH,EAAGsR,YAClBvjH,KAIT,GAAIiyG,EAAGwzC,uBAAwB,MACO7kJ,IAAhCZ,KAAKylJ,wBAAsCzlJ,KAAKm2J,qBAAqB,IACzE,IAAK,IAAI7zC,KAAYrQ,EAAGwzC,uBACtBnjC,EAASka,MAAMx8H,MACf65F,EAAeykE,uBAAuBt+J,KAAKylJ,uBAAwBnjC,EAEtE,CAqBD,OAlBIrQ,EAAGk1C,wBACLl1C,EAAGk1C,sBAAsB3qB,MAAMx8H,WACIY,IAA/BZ,KAAKmnJ,sBAAqCnnJ,KAAKw0J,oBAAoBviD,EAAGk1C,uBACrEnnJ,KAAKmnJ,sBAAsB/0C,MAAMH,EAAGk1C,wBAI3CnnJ,KAAKqkI,cAAcr0C,EAASuS,UAAUviG,KAAK6xI,aAAc5/B,EAAG4/B,aAAc,CAACpvC,aAAa,KACxFziG,KAAK+3I,cAAc/nD,EAASuS,UAAUviG,KAAK83I,aAAc7lC,EAAG6lC,eAC5D93I,KAAK0xJ,QAAQ1hE,EAASuS,UAAUviG,KAAKwxJ,UAAWv/C,EAAGu/C,YACnDxxJ,KAAKooJ,YAAYp4D,EAASuS,UAAUviG,KAAK23I,WAAY1lC,EAAG0lC,WAAY,CAACl1C,aAAa,KAClFziG,KAAK41J,YAAY5lE,EAASuS,UAAUviG,KAAK09J,cAAezrD,EAAGyrD,gBAC3D19J,KAAK61J,aAAa7lE,EAASuS,UAAUviG,KAAK29J,eAAgB1rD,EAAG0rD,iBAC7D39J,KAAK81J,iBAAiB9lE,EAASuS,UAAUviG,KAAKg+J,mBAAoB/rD,EAAG+rD,qBACrEh+J,KAAK+1J,gBAAgB/lE,EAASuS,UAAUviG,KAAK49J,kBAAmB3rD,EAAG2rD,oBACnE59J,KAAKg2J,mBAAmBhmE,EAASuS,UAAUviG,KAAKk+J,qBAAsBjsD,EAAGisD,uBACzEl+J,KAAKi2J,YAAYjmE,EAASuS,UAAUviG,KAAKo+J,cAAensD,EAAGmsD,gBAEpDp+J,IACR,CAEDuuB,SAASo0E,EAAS,EAAG47D,GACnB,IAAIrzJ,EAAM,GAIV,GAAIqzJ,EAMF,OALArzJ,GAAOlL,KAAKmyG,UAAY,KACxBjnG,IAAQlL,KAAKy5H,cAAgBz5H,KAAK+3G,WAAWogB,eAAiBn4H,KAAKs5H,wBAA0B,KAC7FpuH,GAAOlL,KAAKy5H,cAAgB,KAC5BvuH,IAAQlL,KAAK2zJ,oBAAsB3zJ,KAAK2zJ,oBAAoBplI,WAAa,IAAM,KAC/ErjB,GAAOlL,KAAK69J,oBAAsB79J,KAAK69J,oBAAoBtvI,WAAa,GACjErjB,EAOT,GAHAA,GAAO6iG,MAAMx/E,SAASo0E,GAAU,KAChCz3F,GAAO8kF,EAAS24C,OAAO,cAAe3oI,KAAK6xI,aAAclvC,GACzDz3F,GAAO8kF,EAAS24C,OAAO,kBAAmB3oI,KAAK69J,oBAAqBl7D,GAChE3iG,KAAKylJ,uBAAwB,CAC/Bv6I,GAAO8kF,EAAS24C,OAAO,qBAAsB,GAAIhmC,GACjD,IAAK,IAAIzhG,EAAI,EAAGA,EAAIlB,KAAKylJ,uBAAuBtkJ,OAAQD,IACtDgK,GAAO8kF,EAAS24C,OAAOznI,EAAI,EAAG,GAAIyhG,EAAS,GAC3Cz3F,GAAOlL,KAAKylJ,uBAAuBvkJ,GAAGqtB,SAASo0E,EAAS,GAAK,IAEhE,CAeD,OAdAz3F,GAAO8kF,EAAS24C,OAAO,cAAe3oI,KAAK83I,aAAcn1C,GACzDz3F,GAAO8kF,EAAS24C,OAAO,kBAAmB3oI,KAAK2zJ,oBAAqBhxD,GAChE3iG,KAAKmnJ,wBACPj8I,GAAO8kF,EAAS24C,OAAO,oBAAqB,GAAIhmC,GAChDz3F,GAAOlL,KAAKmnJ,sBAAsB54H,SAASo0E,EAAS,GAAK,MAE3Dz3F,GAAO8kF,EAAS24C,OAAO,OAAQ3oI,KAAKwxJ,UAAW7uD,GAC/Cz3F,GAAO8kF,EAAS24C,OAAO,YAAa3oI,KAAK23I,WAAYh1C,GACrDz3F,GAAO8kF,EAAS24C,OAAO,YAAa3oI,KAAK09J,cAAe/6D,GACxDz3F,GAAO8kF,EAAS24C,OAAO,aAAc3oI,KAAK29J,eAAgBh7D,GAC1Dz3F,GAAO8kF,EAAS24C,OAAO,iBAAkB3oI,KAAKg+J,mBAAoBr7D,GAClEz3F,GAAO8kF,EAAS24C,OAAO,gBAAiB3oI,KAAK49J,kBAAmBj7D,GAChEz3F,GAAO8kF,EAAS24C,OAAO,oBAAqB3oI,KAAKk+J,qBAAsBv7D,GACvEz3F,GAAO8kF,EAAS24C,OAAO,YAAa3oI,KAAKo+J,cAAez7D,GACjDz3F,EAAI7G,MAAM,EAAG6G,EAAI/J,OAAS,EAClC,CAG4B,8BAACkhH,EAAWC,GACvC,IAAK,IAAIk8C,KAAan8C,EACpB,GAAIm8C,EAAUjlB,oBAAsBj3B,EAASi3B,mBAAqBilB,EAAU/K,uBAAyBnxC,EAASmxC,qBAE5G,YADA+K,EAAUpsD,MAAMkQ,GAIpBD,EAAU5uG,KAAK6uG,EAChB,EAGH9iH,EAAOC,QAAUo6F,mBC7ZjB,MAAM7J,EAAWtrC,EAAQ,OACnB2xC,EAAc3xC,EAAQ,OACtBmzC,EAAoBnzC,EAAQ,OAC5B4xC,EAAsB5xC,EAAQ,OAKpC,MAAMs1C,EAgCJ9vF,YAAYi4F,GAGV,GAAKA,EACA,GAAIA,aAAkBnI,EAAoBmI,EAASA,EAAO2N,aAC1D,IAAsB,iBAAX3N,EACX,MAAM,IAAI9L,EAAY,4DADU8L,EAASn4F,OAAOumC,OAAO,CAAC,EAAG4xD,EAC3D,MAHQA,EAAS,CAAC,EAIvBniG,KAAKmiG,OAASA,EAGdniG,KAAKw/H,eAAer9B,EAAOgP,aACvBhP,EAAO+b,OAAQl+G,KAAK+5I,UAAU53C,EAAO+b,QAChC/b,EAAOs8D,WAAWz+J,KAAK+5I,UAAU,CAAC/tI,IAAKm2F,EAAOs8D,UAAWhvE,SAAU0S,EAAOu8D,eAAgBhvE,SAAUyS,EAAOw8D,eAAgBruE,mBAAoB6R,EAAO7R,qBAC/JtwF,KAAKuqG,iBAAiBpI,EAAOiB,eAC7BpjG,KAAKmiG,OAAOs8D,eAAY79J,EACxBZ,KAAKmiG,OAAOu8D,oBAAiB99J,EAC7BZ,KAAKmiG,OAAOw8D,oBAAiB/9J,EAC7BZ,KAAKmiG,OAAO7R,wBAAqB1vF,EAGjC,IAAK,IAAIE,KAAOkJ,OAAOoH,KAAKpR,KAAKmiG,QAC/B,IAAKnS,EAASqb,cAAcrR,EAAmBuU,iBAAkBztG,GAC/D,MAAM,IAAIu1F,EAAY,6CAA+Cv1F,EAAM,IAGhF,CAED2F,OACE,OAAO,IAAIuzF,EAAmBh6F,KAAK8vG,SACpC,CAEDA,SACE,IAAIuC,EAAOroG,OAAOumC,OAAO,CAAC,EAAGvwC,KAAKmiG,QAGlC,OAFIkQ,EAAK6L,SAAQ7L,EAAK6L,OAAS7L,EAAK6L,OAAOpO,UAC3CuC,EAAKtzC,QAAKn+D,EACHyxG,CACR,CAEDh8F,UACE,OAAOrW,KAAKmiG,OAAOj4E,IACpB,CAEDo0F,QAAQp0F,GAEN,OADAlqB,KAAKmiG,OAAOj4E,KAAOA,EACZlqB,IACR,CAED2uG,cACE,OAAO3uG,KAAKmiG,OAAOzS,QACpB,CAEDmqD,YAAYnqD,GAEV,OADA1vF,KAAKmiG,OAAOzS,SAAWA,EAChB1vF,IACR,CAEDw+G,iBACE,OAAOx+G,KAAKmiG,OAAOgP,WACpB,CAEDquB,eAAeo/B,GAEb,OADA5+J,KAAKmiG,OAAOgP,YAA0C,iBAArBytD,EAAgC/mE,EAAkB7mF,MAAM4tJ,GAAoBA,EACtG5+J,IACR,CAED46I,YACE,OAAO56I,KAAKmiG,OAAO+b,MACpB,CAED67B,UAAU77B,GAKR,OAJIA,GAAYA,aAAkB5nB,IAAsB4nB,EAAS,IAAI5nB,EAAoB4nB,IACzFl+G,KAAKmiG,OAAO+b,OAASA,EACrBl+G,KAAKmiG,OAAOu8D,oBAA4B99J,IAAXs9G,OAAuBt9G,EAAYs9G,EAAOxP,cACvE1uG,KAAKmiG,OAAOw8D,oBAA4B/9J,IAAXs9G,OAAuBt9G,EAAYs9G,EAAOvP,cAChE3uG,IACR,CAED6+J,eACE,OAAO7+J,KAAKmiG,OAAO+b,OAASl+G,KAAKmiG,OAAO+b,OAAO5T,cAAW1pG,CAC3D,CAEDo5I,aAAaykB,GAGX,OAFKz+J,KAAKmiG,OAAO+b,OACZl+G,KAAKmiG,OAAO+b,OAAO4gD,OAAOL,GADNz+J,KAAK+5I,UAAU,IAAIzjD,EAAoBmoE,IAEzDz+J,IACR,CAED++J,oBACE,OAAO/+J,KAAKk+G,OAASA,OAAOxP,mBAAgB9tG,CAC7C,CAEDo+J,kBAAkBN,GAGhB,OAFA1+J,KAAKmiG,OAAOu8D,eAAiBA,EACzB1+J,KAAKmiG,OAAOu8D,gBAAkB1+J,KAAKmiG,OAAOw8D,gBAAgB3+J,KAAKmiG,OAAO+b,OAAO/P,eAAenuG,KAAKmiG,OAAOu8D,eAAgB1+J,KAAKmiG,OAAOw8D,gBACjI3+J,IACR,CAEDi/J,oBACE,OAAOj/J,KAAKk+G,OAASA,OAAOvP,mBAAgB/tG,CAC7C,CAEDs+J,kBAAkBP,GAGhB,OAFA3+J,KAAKmiG,OAAOw8D,eAAiBA,EACzB3+J,KAAKmiG,OAAOu8D,gBAAkB1+J,KAAKmiG,OAAOw8D,gBAAgB3+J,KAAKmiG,OAAO+b,OAAO/P,eAAenuG,KAAKmiG,OAAOu8D,eAAgB1+J,KAAKmiG,OAAOw8D,gBACjI3+J,IACR,CAED4uG,wBACE,OAAO5uG,KAAKmiG,OAAO7R,kBACpB,CAED6uE,sBAAsB7uE,GAEpB,OADAtwF,KAAKmiG,OAAO7R,mBAAqBA,EAC1BtwF,IACR,CAEDy+G,UACE,OAAOz+G,KAAKmiG,OAAO0nD,IACpB,CAEDuV,QAAQvV,GAEN,OADA7pJ,KAAKmiG,OAAO0nD,KAAOA,EACZ7pJ,IACR,CAEDi6I,gBACE,OAAOj6I,KAAKmiG,OAAOk9D,UACpB,CAEDpkB,cAAcokB,GAEZ,OADAr/J,KAAKmiG,OAAOk9D,WAAaA,EAClBr/J,IACR,CAED0mH,aACE,OAAO1mH,KAAKmiG,OAAOukB,UACpB,CAEDkrC,cAAclrC,GAEZ,OADA1mH,KAAKmiG,OAAOukB,WAAaA,EAClB1mH,IACR,CAEDk6I,oBACE,OAAOl6I,KAAKmiG,OAAOq2D,cACpB,CAEDjd,kBAAkBid,GAEhB,OADAx4J,KAAKmiG,OAAOq2D,eAAiBA,EACtBx4J,IACR,CAED6+G,oBACE,OAAO7+G,KAAKmiG,OAAOuO,cACpB,CAED8qC,kBAAkB9qC,GAEhB,OADA1wG,KAAKmiG,OAAOuO,eAAiBA,EACtB1wG,IACR,CAED4+G,qBACE,OAAO5+G,KAAKmiG,OAAO2O,eACpB,CAED2qC,mBAAmB3qC,GAEjB,OADA9wG,KAAKmiG,OAAO2O,gBAAkBA,EACvB9wG,IACR,CAED0/G,mBACE,OAAO1/G,KAAKmiG,OAAOyd,aACpB,CAEDD,iBAAiBC,GAEf,OADA5/G,KAAKmiG,OAAOyd,cAAgBA,EACrB5/G,IACR,CAEDm6I,cACE,OAAOn6I,KAAKmiG,OAAOwnD,QACpB,CAEDjO,YAAYiO,GAEV,OADA3pJ,KAAKmiG,OAAOwnD,SAAWA,EAChB3pJ,IACR,CAEDo6I,iBACE,OAAOp6I,KAAKmiG,OAAOm9D,WACpB,CAEDC,eAAeD,GAEb,OADAt/J,KAAKmiG,OAAOm9D,YAAcA,EACnBt/J,IACR,CAED6uG,mBACE,OAAO7uG,KAAKmiG,OAAOiB,aACpB,CAEDmH,iBAAiBnH,GAGf,OAFApjG,KAAKmiG,OAAOiB,cAAgBA,EACxBpjG,KAAKmiG,OAAO+b,QAAQl+G,KAAKmiG,OAAO+b,OAAO3T,iBAAiBnH,GACrDpjG,IACR,CAEDs6I,QACE,OAAOt6I,KAAKmiG,OAAOpjC,EACpB,CAED+6E,MAAM/6E,GAEJ,OADA/+D,KAAKmiG,OAAOpjC,GAAKA,EACV/+D,IACR,CAEDq6I,cACE,OAAOr6I,KAAKmiG,OAAO2b,QACpB,CAED08B,YAAY18B,GAEV,OADA99G,KAAKmiG,OAAO2b,SAAWA,EAChB99G,IACR,CAED26I,eACE,OAAO36I,KAAKmiG,OAAO4b,SACpB,CAED08B,aAAa18B,GAEX,OADA/9G,KAAKmiG,OAAO4b,UAAYA,EACjB/9G,IACR,CAEDypJ,sBACE,OAAOzpJ,KAAKmiG,OAAOq9D,gBACpB,CAEDC,oBAAoBD,GAElB,OADAx/J,KAAKmiG,OAAOq9D,iBAAmBA,EACxBx/J,IACR,CAED0pJ,yBACE,OAAO1pJ,KAAKmiG,OAAOu9D,mBACpB,CAEDC,uBAAuBD,GAErB,OADA1/J,KAAKmiG,OAAOu9D,oBAAsBA,EAC3B1/J,IACR,EAGHg6F,EAAmBuU,iBAAmB,CAAC,OAAQ,WAAY,cAAe,SAAU,YAAa,iBAAkB,iBAAkB,qBAAsB,OAAQ,aAAc,aAAc,iBAAkB,iBAAkB,kBAAmB,gBAAiB,WAAY,cAAe,gBAAiB,KAAM,WAAY,YAAa,mBAAoB,uBAEtW/uG,EAAOC,QAAUu6F,aCpPjBx6F,EAAOC,QAhDP,MAWsB,qBAACygG,EAAQiW,EAAaC,EAAW+J,EAAa99G,GAAY,CAO9D,iBAAC69F,GAAW,CAQL,wBAACogB,EAAYC,GAAuB,CAUrC,uBAAC94E,GAAW,CASf,oBAACA,GAAW,+BC9CjChoC,EAAQ8mB,WAuCR,SAAqBq5I,GACnB,IAAIC,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAC3B,OAAuC,GAA9BE,EAAWC,GAAuB,EAAKA,CAClD,EA3CAvgK,EAAQwgK,YAiDR,SAAsBL,GACpB,IAAI7wI,EAcA7tB,EAbA2+J,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAEvBlyJ,EAAM,IAAIuyJ,EAVhB,SAAsBN,EAAKG,EAAUC,GACnC,OAAuC,GAA9BD,EAAWC,GAAuB,EAAKA,CAClD,CAQoBG,CAAYP,EAAKG,EAAUC,IAEzCI,EAAU,EAGVrsJ,EAAMisJ,EAAkB,EACxBD,EAAW,EACXA,EAGJ,IAAK7+J,EAAI,EAAGA,EAAI6S,EAAK7S,GAAK,EACxB6tB,EACGsxI,EAAUT,EAAI3rJ,WAAW/S,KAAO,GAChCm/J,EAAUT,EAAI3rJ,WAAW/S,EAAI,KAAO,GACpCm/J,EAAUT,EAAI3rJ,WAAW/S,EAAI,KAAO,EACrCm/J,EAAUT,EAAI3rJ,WAAW/S,EAAI,IAC/ByM,EAAIyyJ,KAAcrxI,GAAO,GAAM,IAC/BphB,EAAIyyJ,KAAcrxI,GAAO,EAAK,IAC9BphB,EAAIyyJ,KAAmB,IAANrxI,EAmBnB,OAhBwB,IAApBixI,IACFjxI,EACGsxI,EAAUT,EAAI3rJ,WAAW/S,KAAO,EAChCm/J,EAAUT,EAAI3rJ,WAAW/S,EAAI,KAAO,EACvCyM,EAAIyyJ,KAAmB,IAANrxI,GAGK,IAApBixI,IACFjxI,EACGsxI,EAAUT,EAAI3rJ,WAAW/S,KAAO,GAChCm/J,EAAUT,EAAI3rJ,WAAW/S,EAAI,KAAO,EACpCm/J,EAAUT,EAAI3rJ,WAAW/S,EAAI,KAAO,EACvCyM,EAAIyyJ,KAAcrxI,GAAO,EAAK,IAC9BphB,EAAIyyJ,KAAmB,IAANrxI,GAGZphB,CACT,EA5FAlO,EAAQ6gK,cAkHR,SAAwBC,GAQtB,IAPA,IAAIxxI,EACAhb,EAAMwsJ,EAAMp/J,OACZq/J,EAAazsJ,EAAM,EACnB3B,EAAQ,GACRquJ,EAAiB,MAGZv/J,EAAI,EAAGw/J,EAAO3sJ,EAAMysJ,EAAYt/J,EAAIw/J,EAAMx/J,GAAKu/J,EACtDruJ,EAAMqB,KAAKktJ,EAAYJ,EAAOr/J,EAAIA,EAAIu/J,EAAkBC,EAAOA,EAAQx/J,EAAIu/J,IAqB7E,OAjBmB,IAAfD,GACFzxI,EAAMwxI,EAAMxsJ,EAAM,GAClB3B,EAAMqB,KACJg5D,EAAO19C,GAAO,GACd09C,EAAQ19C,GAAO,EAAK,IACpB,OAEsB,IAAfyxI,IACTzxI,GAAOwxI,EAAMxsJ,EAAM,IAAM,GAAKwsJ,EAAMxsJ,EAAM,GAC1C3B,EAAMqB,KACJg5D,EAAO19C,GAAO,IACd09C,EAAQ19C,GAAO,EAAK,IACpB09C,EAAQ19C,GAAO,EAAK,IACpB,MAIG3c,EAAMxB,KAAK,GACpB,EA1IA,IALA,IAAI67D,EAAS,GACT4zF,EAAY,GACZH,EAA4B,oBAAftiH,WAA6BA,WAAa58C,MAEvD6M,EAAO,mEACF3M,EAAI,EAAG6S,EAAMlG,EAAK1M,OAAQD,EAAI6S,IAAO7S,EAC5CurE,EAAOvrE,GAAK2M,EAAK3M,GACjBm/J,EAAUxyJ,EAAKoG,WAAW/S,IAAMA,EAQlC,SAAS4+J,EAASF,GAChB,IAAI7rJ,EAAM6rJ,EAAIz+J,OAEd,GAAI4S,EAAM,EAAI,EACZ,MAAM,IAAI7T,MAAM,kDAKlB,IAAI6/J,EAAWH,EAAIthJ,QAAQ,KAO3B,OANkB,IAAdyhJ,IAAiBA,EAAWhsJ,GAMzB,CAACgsJ,EAJcA,IAAahsJ,EAC/B,EACA,EAAKgsJ,EAAW,EAGtB,CAmEA,SAASY,EAAaJ,EAAOv2I,EAAO2F,GAGlC,IAFA,IAAIZ,EARoB9F,EASpBwe,EAAS,GACJvmC,EAAI8oB,EAAO9oB,EAAIyuB,EAAKzuB,GAAK,EAChC6tB,GACIwxI,EAAMr/J,IAAM,GAAM,WAClBq/J,EAAMr/J,EAAI,IAAM,EAAK,QACP,IAAfq/J,EAAMr/J,EAAI,IACbumC,EAAOh0B,KAdFg5D,GADiBxjD,EAeM8F,IAdT,GAAK,IACxB09C,EAAOxjD,GAAO,GAAK,IACnBwjD,EAAOxjD,GAAO,EAAI,IAClBwjD,EAAa,GAANxjD,IAaT,OAAOwe,EAAO72B,KAAK,GACrB,CAlGAyvJ,EAAU,IAAIpsJ,WAAW,IAAM,GAC/BosJ,EAAU,IAAIpsJ,WAAW,IAAM,iCCjB/B,IAAI2sJ,EAAqB,8BAmFrBC,EAAQ,EAERC,EAAW,WACb9gK,KAAK+gK,EAAI,CACP,IAAI/7F,YAAY,CACd,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,QAAY,UAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,aACtC,IAAIA,YAAY,CACd,WAAY,WAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,UAAY,WAAY,SAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,WAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WAC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YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,WAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,WACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,UAAY,WACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,WAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,WACnEA,EAAe,UAAY,WAAaA,EAAe,UAAY,YACnEA,EAAe,WAAY,WAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,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O,UAAUzmO,KAAK+gK,IACnC,IAEA+hE,EAAUnjO,UAAU0nO,QAAU,WAC5B,OAAOrnO,KAAK8lO,WAAWlyN,OAAO5T,KAAKonO,WACrC,EAEAtE,EAAUnjO,UAAU2nO,MAAQ,WAC1B,OAAOjZ,EAAMvoM,OAAO9lB,KAAKqnO,UAAW,OAAO53M,aAC7C,EAEAjwB,EAAOC,QAAUqjO,aChEjBtjO,EAAOC,QAAU,CACf65N,QAAS,CACP3jK,KAAM,EACNmkK,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINN,IAAK,CACHtxL,IAAK,EACL4xL,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,qGCrwBR,IAAIzL,EAAQ5uN,EACR+xB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","sources":["webpack://monero-javascript/./node_modules/ajv/lib/ajv.js","webpack://monero-javascript/./node_modules/ajv/lib/cache.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/async.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/error_classes.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/formats.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/index.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/resolve.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/rules.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/schema_obj.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/ucs2length.js","webpack://monero-javascript/./node_modules/ajv/lib/compile/util.js","webpack://monero-javascript/./node_modules/ajv/lib/data.js","webpack://monero-javascript/./node_modules/ajv/lib/definition_schema.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/_limit.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/_limitItems.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/_limitLength.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/_limitProperties.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/allOf.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/anyOf.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/comment.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/const.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/contains.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/custom.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/dependencies.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/enum.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/format.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/if.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/index.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/items.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/multipleOf.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/not.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/oneOf.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/pattern.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/properties.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/propertyNames.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/ref.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/required.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/uniqueItems.js","webpack://monero-javascript/./node_modules/ajv/lib/dotjs/validate.js","webpack://monero-javascript/./node_modules/ajv/lib/keyword.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/api.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/base/buffer.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/base/index.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/base/node.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/base/reporter.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/constants/der.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/constants/index.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/decoders/der.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/decoders/index.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/encoders/der.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/encoders/index.js","webpack://monero-javascript/./node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack://monero-javascript/./node_modules/asn1.js/node_modules/bn.js/lib/bn.js","webpack://monero-javascript/./node_modules/asn1/lib/ber/errors.js","webpack://monero-javascript/./node_modules/asn1/lib/ber/index.js","webpack://monero-javascript/./node_modules/asn1/lib/ber/reader.js","webpack://monero-javascript/./node_modules/asn1/lib/ber/types.js","webpack://monero-javascript/./node_modules/asn1/lib/ber/writer.js","webpack://monero-javascript/./node_modules/asn1/lib/index.js","webpack://monero-javascript/./node_modules/assert-plus/assert.js","webpack://monero-javascript/./node_modules/assert/build/assert.js","webpack://monero-javascript/./node_modules/assert/build/internal/assert/assertion_error.js","webpack://monero-javascript/./node_modules/assert/build/internal/errors.js","webpack://monero-javascript/./node_modules/assert/build/internal/util/comparisons.js","webpack://monero-javascript/./node_modules/async/dist/async.js","webpack://monero-javascript/./node_modules/aws-sign2/index.js","webpack://monero-javascript/./node_modules/aws4/aws4.js","webpack://monero-javascript/./node_modules/aws4/lru.js","webpack://monero-javascript/./dist/monero_wallet_full.js","webpack://monero-javascript/./dist/monero_wallet_keys.js","webpack://monero-javascript/./index.js","webpack://monero-javascript/./src/main/js/common/Filter.js","webpack://monero-javascript/./src/main/js/common/GenUtils.js","webpack://monero-javascript/./src/main/js/common/HttpClient.js","webpack://monero-javascript/./src/main/js/common/LibraryUtils.js","webpack://monero-javascript/./src/main/js/common/MoneroConnectionManager.js","webpack://monero-javascript/./src/main/js/common/MoneroConnectionManagerListener.js","webpack://monero-javascript/./src/main/js/common/MoneroError.js","webpack://monero-javascript/./src/main/js/common/MoneroRpcConnection.js","webpack://monero-javascript/./src/main/js/common/MoneroRpcError.js","webpack://monero-javascript/./src/main/js/common/MoneroUtils.js","webpack://monero-javascript/./src/main/js/common/MoneroWebWorker.js","webpack://monero-javascript/./src/main/js/common/SslOptions.js","webpack://monero-javascript/./src/main/js/common/TaskLooper.js","webpack://monero-javascript/./src/main/js/common/ThreadPool.js","webpack://monero-javascript/./src/main/js/common/biginteger.js","webpack://monero-javascript/./src/main/js/daemon/MoneroDaemon.js","webpack://monero-javascript/./src/main/js/daemon/MoneroDaemonRpc.js","webpack://monero-javascript/./src/main/js/daemon/model/ConnectionType.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroAltChain.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroBan.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroBlock.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroBlockHeader.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroBlockTemplate.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroConnectionSpan.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroDaemonInfo.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroDaemonListener.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroDaemonSyncInfo.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroDaemonUpdateCheckResult.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroDaemonUpdateDownloadResult.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroFeeEstimate.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroHardForkInfo.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroKeyImage.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroKeyImageSpentStatus.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroMinerTxSum.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroMiningStatus.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroNetworkType.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroOutput.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroOutputHistogramEntry.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroPeer.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroPruneResult.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroSubmitTxResult.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroTx.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroTxPoolStats.js","webpack://monero-javascript/./src/main/js/daemon/model/MoneroVersion.js","webpack://monero-javascript/./src/main/js/wallet/MoneroWallet.js","webpack://monero-javascript/./src/main/js/wallet/MoneroWalletFull.js","webpack://monero-javascript/./src/main/js/wallet/MoneroWalletKeys.js","webpack://monero-javascript/./src/main/js/wallet/MoneroWalletRpc.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroAccount.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroAccountTag.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroAddressBookEntry.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroCheck.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroCheckReserve.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroCheckTx.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroDestination.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroIncomingTransfer.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroIntegratedAddress.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroKeyImageImportResult.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroMessageSignatureResult.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroMessageSignatureType.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroMultisigInfo.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroMultisigInitResult.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroMultisigSignResult.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroOutgoingTransfer.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroOutputQuery.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroOutputWallet.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroSubaddress.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroSyncResult.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroTransfer.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroTransferQuery.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroTxConfig.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroTxPriority.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroTxQuery.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroTxSet.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroTxWallet.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroWalletConfig.js","webpack://monero-javascript/./src/main/js/wallet/model/MoneroWalletListener.js","webpack://monero-javascript/./node_modules/base64-js/index.js","webpack://monero-javascript/./node_modules/bcrypt-pbkdf/index.js","webpack://monero-javascript/./node_modules/bluebird/js/browser/bluebird.js","webpack://monero-javascript/./node_modules/bn.js/lib/bn.js","webpack://monero-javascript/./node_modules/brorand/index.js","webpack://monero-javascript/./node_modules/browserify-aes/aes.js","webpack://monero-javascript/./node_modules/browserify-aes/authCipher.js","webpack://monero-javascript/./node_modules/browserify-aes/browser.js","webpack://monero-javascript/./node_modules/browserify-aes/decrypter.js","webpack://monero-javascript/./node_modules/browserify-aes/encrypter.js","webpack://monero-javascript/./node_modules/browserify-aes/ghash.js","webpack://monero-javascript/./node_modules/browserify-aes/incr32.js","webpack://monero-javascript/./node_modules/browserify-aes/modes/cbc.js","webpack://monero-javascript/./node_modules/browserify-aes/modes/cfb.js","webpack://monero-javascript/./node_modules/browserify-aes/modes/cfb1.js","webpack://monero-javascript/./node_modules/browserify-aes/modes/cfb8.js","webpack://monero-javascript/./node_modules/browserify-aes/modes/ctr.js","webpack://monero-javascript/./node_modules/browserify-aes/modes/ecb.js","webpack://monero-javascript/./node_modules/browserify-aes/modes/index.js","webpack://monero-javascript/./node_modules/browserify-aes/modes/ofb.js","webpack://monero-javascript/./node_modules/browserify-aes/streamCipher.js","webpack://monero-javascript/./node_modules/browserify-cipher/browser.js","webpack://monero-javascript/./node_modules/browserify-des/index.js","webpack://monero-javascript/./node_modules/browserify-des/modes.js","webpack://monero-javascript/./node_modules/browserify-rsa/index.js","webpack://monero-javascript/./node_modules/browserify-sign/algos.js","webpack://monero-javascript/./node_modules/browserify-sign/browser/index.js","webpack://monero-javascript/./node_modules/browserify-sign/browser/sign.js","webpack://monero-javascript/./node_modules/browserify-sign/browser/verify.js","webpack://monero-javascript/./node_modules/browserify-sign/node_modules/safe-buffer/index.js","webpack://monero-javascript/./node_modules/browserify-zlib/lib/binding.js","webpack://monero-javascript/./node_modules/browserify-zlib/lib/index.js","webpack://monero-javascript/./node_modules/buffer-xor/index.js","webpack://monero-javascript/./node_modules/buffer/index.js","webpack://monero-javascript/./node_modules/builtin-status-codes/browser.js","webpack://monero-javascript/./node_modules/call-bind/callBound.js","webpack://monero-javascript/./node_modules/call-bind/index.js","webpack://monero-javascript/./node_modules/caseless/index.js","webpack://monero-javascript/./node_modules/cipher-base/index.js","webpack://monero-javascript/./node_modules/combined-stream/lib/combined_stream.js","webpack://monero-javascript/./node_modules/core-util-is/lib/util.js","webpack://monero-javascript/./node_modules/create-ecdh/browser.js","webpack://monero-javascript/./node_modules/create-ecdh/node_modules/bn.js/lib/bn.js","webpack://monero-javascript/./node_modules/create-hash/browser.js","webpack://monero-javascript/./node_modules/create-hash/md5.js","webpack://monero-javascript/./node_modules/create-hmac/browser.js","webpack://monero-javascript/./node_modules/create-hmac/legacy.js","webpack://monero-javascript/./node_modules/crypto-browserify/index.js","webpack://monero-javascript/./node_modules/crypto-js/aes.js","webpack://monero-javascript/./node_modules/crypto-js/cipher-core.js","webpack://monero-javascript/./node_modules/crypto-js/core.js","webpack://monero-javascript/./node_modules/crypto-js/enc-base64.js","webpack://monero-javascript/./node_modules/crypto-js/enc-base64url.js","webpack://monero-javascript/./node_modules/crypto-js/enc-utf16.js","webpack://monero-javascript/./node_modules/crypto-js/evpkdf.js","webpack://monero-javascript/./node_modules/crypto-js/format-hex.js","webpack://monero-javascript/./node_modules/crypto-js/hmac.js","webpack://monero-javascript/./node_modules/crypto-js/index.js","webpack://monero-javascript/./node_modules/crypto-js/lib-typedarrays.js","webpack://monero-javascript/./node_modules/crypto-js/md5.js","webpack://monero-javascript/./node_modules/crypto-js/mode-cfb.js","webpack://monero-javascript/./node_modules/crypto-js/mode-ctr-gladman.js","webpack://monero-javascript/./node_modules/crypto-js/mode-ctr.js","webpack://monero-javascript/./node_modules/crypto-js/mode-ecb.js","webpack://monero-javascript/./node_modules/crypto-js/mode-ofb.js","webpack://monero-javascript/./node_modules/crypto-js/pad-ansix923.js","webpack://monero-javascript/./node_modules/crypto-js/pad-iso10126.js","webpack://monero-javascript/./node_modules/crypto-js/pad-iso97971.js","webpack://monero-javascript/./node_modules/crypto-js/pad-nopadding.js","webpack://monero-javascript/./node_modules/crypto-js/pad-zeropadding.js","webpack://monero-javascript/./node_modules/crypto-js/pbkdf2.js","webpack://monero-javascript/./node_modules/crypto-js/rabbit-legacy.js","webpack://monero-javascript/./node_modules/crypto-js/rabbit.js","webpack://monero-javascript/./node_modules/crypto-js/rc4.js","webpack://monero-javascript/./node_modules/crypto-js/ripemd160.js","webpack://monero-javascript/./node_modules/crypto-js/sha1.js","webpack://monero-javascript/./node_modules/crypto-js/sha224.js","webpack://monero-javascript/./node_modules/crypto-js/sha256.js","webpack://monero-javascript/./node_modules/crypto-js/sha3.js","webpack://monero-javascript/./node_modules/crypto-js/sha384.js","webpack://monero-javascript/./node_modules/crypto-js/sha512.js","webpack://monero-javascript/./node_modules/crypto-js/tripledes.js","webpack://monero-javascript/./node_modules/crypto-js/x64-core.js","webpack://monero-javascript/./node_modules/define-properties/index.js","webpack://monero-javascript/./node_modules/delayed-stream/lib/delayed_stream.js","webpack://monero-javascript/./node_modules/des.js/lib/des.js","webpack://monero-javascript/./node_modules/des.js/lib/des/cbc.js","webpack://monero-javascript/./node_modules/des.js/lib/des/cipher.js","webpack://monero-javascript/./node_modules/des.js/lib/des/des.js","webpack://monero-javascript/./node_modules/des.js/lib/des/ede.js","webpack://monero-javascript/./node_modules/des.js/lib/des/utils.js","webpack://monero-javascript/./node_modules/diffie-hellman/browser.js","webpack://monero-javascript/./node_modules/diffie-hellman/lib/dh.js","webpack://monero-javascript/./node_modules/diffie-hellman/lib/generatePrime.js","webpack://monero-javascript/./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js","webpack://monero-javascript/./node_modules/ecc-jsbn/index.js","webpack://monero-javascript/./node_modules/ecc-jsbn/lib/ec.js","webpack://monero-javascript/./node_modules/ecc-jsbn/lib/sec.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/curve/base.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/curve/index.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/curve/mont.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/curve/short.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/curves.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/ec/index.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/ec/key.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/ec/signature.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack://monero-javascript/./node_modules/elliptic/lib/elliptic/utils.js","webpack://monero-javascript/./node_modules/elliptic/node_modules/bn.js/lib/bn.js","webpack://monero-javascript/./node_modules/es6-object-assign/index.js","webpack://monero-javascript/./node_modules/events/events.js","webpack://monero-javascript/./node_modules/evp_bytestokey/index.js","webpack://monero-javascript/./node_modules/extend/index.js","webpack://monero-javascript/./node_modules/extsprintf/lib/extsprintf.js","webpack://monero-javascript/./node_modules/fast-deep-equal/index.js","webpack://monero-javascript/./node_modules/fast-json-stable-stringify/index.js","webpack://monero-javascript/./node_modules/for-each/index.js","webpack://monero-javascript/./node_modules/forever-agent/index.js","webpack://monero-javascript/./node_modules/form-data/lib/browser.js","webpack://monero-javascript/./node_modules/function-bind/implementation.js","webpack://monero-javascript/./node_modules/function-bind/index.js","webpack://monero-javascript/./node_modules/get-intrinsic/index.js","webpack://monero-javascript/./node_modules/har-schema/lib/index.js","webpack://monero-javascript/./node_modules/har-validator/lib/error.js","webpack://monero-javascript/./node_modules/har-validator/lib/promise.js","webpack://monero-javascript/./node_modules/has-property-descriptors/index.js","webpack://monero-javascript/./node_modules/has-symbols/index.js","webpack://monero-javascript/./node_modules/has-symbols/shams.js","webpack://monero-javascript/./node_modules/has-tostringtag/shams.js","webpack://monero-javascript/./node_modules/has/src/index.js","webpack://monero-javascript/./node_modules/hash-base/index.js","webpack://monero-javascript/./node_modules/hash-base/node_modules/safe-buffer/index.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/common.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/hmac.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/ripemd.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/sha.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/sha/1.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/sha/224.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/sha/256.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/sha/384.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/sha/512.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/sha/common.js","webpack://monero-javascript/./node_modules/hash.js/lib/hash/utils.js","webpack://monero-javascript/./node_modules/hmac-drbg/lib/hmac-drbg.js","webpack://monero-javascript/./node_modules/html5-fs/src/api.js","webpack://monero-javascript/./node_modules/html5-fs/src/fileSystem.js","webpack://monero-javascript/./node_modules/html5-fs/src/utils.js","webpack://monero-javascript/./node_modules/http-signature/lib/index.js","webpack://monero-javascript/./node_modules/http-signature/lib/parser.js","webpack://monero-javascript/./node_modules/http-signature/lib/signer.js","webpack://monero-javascript/./node_modules/http-signature/lib/utils.js","webpack://monero-javascript/./node_modules/http-signature/lib/verify.js","webpack://monero-javascript/./node_modules/https-browserify/index.js","webpack://monero-javascript/./node_modules/ieee754/index.js","webpack://monero-javascript/./node_modules/inherits/inherits_browser.js","webpack://monero-javascript/./node_modules/is-arguments/index.js","webpack://monero-javascript/./node_modules/is-callable/index.js","webpack://monero-javascript/./node_modules/is-generator-function/index.js","webpack://monero-javascript/./node_modules/is-nan/implementation.js","webpack://monero-javascript/./node_modules/is-nan/index.js","webpack://monero-javascript/./node_modules/is-nan/polyfill.js","webpack://monero-javascript/./node_modules/is-nan/shim.js","webpack://monero-javascript/./node_modules/is-typed-array/index.js","webpack://monero-javascript/./node_modules/is-typedarray/index.js","webpack://monero-javascript/./node_modules/isstream/isstream.js","webpack://monero-javascript/./node_modules/jsbn/index.js","webpack://monero-javascript/./node_modules/json-schema-traverse/index.js","webpack://monero-javascript/./node_modules/json-schema/lib/validate.js","webpack://monero-javascript/./node_modules/json-stringify-safe/stringify.js","webpack://monero-javascript/./node_modules/jsprim/lib/jsprim.js","webpack://monero-javascript/./node_modules/lodash/_Symbol.js","webpack://monero-javascript/./node_modules/lodash/_baseGetTag.js","webpack://monero-javascript/./node_modules/lodash/_freeGlobal.js","webpack://monero-javascript/./node_modules/lodash/_getRawTag.js","webpack://monero-javascript/./node_modules/lodash/_objectToString.js","webpack://monero-javascript/./node_modules/lodash/_root.js","webpack://monero-javascript/./node_modules/lodash/isArray.js","webpack://monero-javascript/./node_modules/lodash/isFunction.js","webpack://monero-javascript/./node_modules/lodash/isObject.js","webpack://monero-javascript/./node_modules/lodash/isObjectLike.js","webpack://monero-javascript/./node_modules/lodash/isString.js","webpack://monero-javascript/./node_modules/lodash/isUndefined.js","webpack://monero-javascript/./node_modules/md5.js/index.js","webpack://monero-javascript/./node_modules/miller-rabin/lib/mr.js","webpack://monero-javascript/./node_modules/miller-rabin/node_modules/bn.js/lib/bn.js","webpack://monero-javascript/./node_modules/mime-db/index.js","webpack://monero-javascript/./node_modules/mime-types/index.js","webpack://monero-javascript/./node_modules/minimalistic-assert/index.js","webpack://monero-javascript/./node_modules/minimalistic-crypto-utils/lib/utils.js","webpack://monero-javascript/./node_modules/net/index.js","webpack://monero-javascript/./node_modules/oauth-sign/index.js","webpack://monero-javascript/./node_modules/object-is/implementation.js","webpack://monero-javascript/./node_modules/object-is/index.js","webpack://monero-javascript/./node_modules/object-is/polyfill.js","webpack://monero-javascript/./node_modules/object-is/shim.js","webpack://monero-javascript/./node_modules/object-keys/implementation.js","webpack://monero-javascript/./node_modules/object-keys/index.js","webpack://monero-javascript/./node_modules/object-keys/isArguments.js","webpack://monero-javascript/./node_modules/os-browserify/browser.js","webpack://monero-javascript/./node_modules/pako/lib/utils/common.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/adler32.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/constants.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/crc32.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/deflate.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/inffast.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/inflate.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/inftrees.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/messages.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/trees.js","webpack://monero-javascript/./node_modules/pako/lib/zlib/zstream.js","webpack://monero-javascript/./node_modules/parse-asn1/asn1.js","webpack://monero-javascript/./node_modules/parse-asn1/certificate.js","webpack://monero-javascript/./node_modules/parse-asn1/fixProc.js","webpack://monero-javascript/./node_modules/parse-asn1/index.js","webpack://monero-javascript/./node_modules/path-browserify/index.js","webpack://monero-javascript/./node_modules/pbkdf2/browser.js","webpack://monero-javascript/./node_modules/pbkdf2/lib/async.js","webpack://monero-javascript/./node_modules/pbkdf2/lib/default-encoding.js","webpack://monero-javascript/./node_modules/pbkdf2/lib/precondition.js","webpack://monero-javascript/./node_modules/pbkdf2/lib/sync-browser.js","webpack://monero-javascript/./node_modules/pbkdf2/lib/to-buffer.js","webpack://monero-javascript/./node_modules/performance-now/lib/performance-now.js","webpack://monero-javascript/./node_modules/process/browser.js","webpack://monero-javascript/./node_modules/promise-throttle/lib/main.js","webpack://monero-javascript/./node_modules/psl/index.js","webpack://monero-javascript/./node_modules/public-encrypt/browser.js","webpack://monero-javascript/./node_modules/public-encrypt/mgf.js","webpack://monero-javascript/./node_modules/public-encrypt/node_modules/bn.js/lib/bn.js","webpack://monero-javascript/./node_modules/public-encrypt/privateDecrypt.js","webpack://monero-javascript/./node_modules/public-encrypt/publicEncrypt.js","webpack://monero-javascript/./node_modules/public-encrypt/withPublic.js","webpack://monero-javascript/./node_modules/public-encrypt/xor.js","webpack://monero-javascript/./node_modules/punycode/punycode.es6.js","webpack://monero-javascript/./node_modules/qs/lib/formats.js","webpack://monero-javascript/./node_modules/qs/lib/index.js","webpack://monero-javascript/./node_modules/qs/lib/parse.js","webpack://monero-javascript/./node_modules/qs/lib/stringify.js","webpack://monero-javascript/./node_modules/qs/lib/utils.js","webpack://monero-javascript/./node_modules/querystring/decode.js","webpack://monero-javascript/./node_modules/querystring/encode.js","webpack://monero-javascript/./node_modules/querystring/index.js","webpack://monero-javascript/./node_modules/randombytes/browser.js","webpack://monero-javascript/./node_modules/randomfill/browser.js","webpack://monero-javascript/./node_modules/readable-stream/errors-browser.js","webpack://monero-javascript/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://monero-javascript/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://monero-javascript/./node_modules/readable-stream/lib/_stream_readable.js","webpack://monero-javascript/./node_modules/readable-stream/lib/_stream_transform.js","webpack://monero-javascript/./node_modules/readable-stream/lib/_stream_writable.js","webpack://monero-javascript/./node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://monero-javascript/./node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://monero-javascript/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://monero-javascript/./node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://monero-javascript/./node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://monero-javascript/./node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://monero-javascript/./node_modules/readable-stream/lib/internal/streams/state.js","webpack://monero-javascript/./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://monero-javascript/./node_modules/readable-stream/readable-browser.js","webpack://monero-javascript/./node_modules/request-promise-core/configure/request2.js","webpack://monero-javascript/./node_modules/request-promise-core/lib/errors.js","webpack://monero-javascript/./node_modules/request-promise-core/lib/plumbing.js","webpack://monero-javascript/./node_modules/request-promise/lib/rp.js","webpack://monero-javascript/./node_modules/request/index.js","webpack://monero-javascript/./node_modules/request/lib/auth.js","webpack://monero-javascript/./node_modules/request/lib/cookies.js","webpack://monero-javascript/./node_modules/request/lib/getProxyFromURI.js","webpack://monero-javascript/./node_modules/request/lib/har.js","webpack://monero-javascript/./node_modules/request/lib/hawk.js","webpack://monero-javascript/./node_modules/request/lib/helpers.js","webpack://monero-javascript/./node_modules/request/lib/multipart.js","webpack://monero-javascript/./node_modules/request/lib/oauth.js","webpack://monero-javascript/./node_modules/request/lib/querystring.js","webpack://monero-javascript/./node_modules/request/lib/redirect.js","webpack://monero-javascript/./node_modules/request/lib/tunnel.js","webpack://monero-javascript/./node_modules/request/request.js","webpack://monero-javascript/./node_modules/ripemd160/index.js","webpack://monero-javascript/./node_modules/safe-buffer/index.js","webpack://monero-javascript/./node_modules/safer-buffer/safer.js","webpack://monero-javascript/./node_modules/sha.js/hash.js","webpack://monero-javascript/./node_modules/sha.js/index.js","webpack://monero-javascript/./node_modules/sha.js/sha.js","webpack://monero-javascript/./node_modules/sha.js/sha1.js","webpack://monero-javascript/./node_modules/sha.js/sha224.js","webpack://monero-javascript/./node_modules/sha.js/sha256.js","webpack://monero-javascript/./node_modules/sha.js/sha384.js","webpack://monero-javascript/./node_modules/sha.js/sha512.js","webpack://monero-javascript/./node_modules/sshpk/lib/algs.js","webpack://monero-javascript/./node_modules/sshpk/lib/certificate.js","webpack://monero-javascript/./node_modules/sshpk/lib/dhe.js","webpack://monero-javascript/./node_modules/sshpk/lib/ed-compat.js","webpack://monero-javascript/./node_modules/sshpk/lib/errors.js","webpack://monero-javascript/./node_modules/sshpk/lib/fingerprint.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/auto.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/dnssec.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/openssh-cert.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/pem.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/pkcs1.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/pkcs8.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/putty.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/rfc4253.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/ssh-private.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/ssh.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/x509-pem.js","webpack://monero-javascript/./node_modules/sshpk/lib/formats/x509.js","webpack://monero-javascript/./node_modules/sshpk/lib/identity.js","webpack://monero-javascript/./node_modules/sshpk/lib/index.js","webpack://monero-javascript/./node_modules/sshpk/lib/key.js","webpack://monero-javascript/./node_modules/sshpk/lib/private-key.js","webpack://monero-javascript/./node_modules/sshpk/lib/signature.js","webpack://monero-javascript/./node_modules/sshpk/lib/ssh-buffer.js","webpack://monero-javascript/./node_modules/sshpk/lib/utils.js","webpack://monero-javascript/./node_modules/stealthy-require/lib/index.js","webpack://monero-javascript/./node_modules/stream-browserify/index.js","webpack://monero-javascript/./node_modules/stream-http/index.js","webpack://monero-javascript/./node_modules/stream-http/lib/capability.js","webpack://monero-javascript/./node_modules/stream-http/lib/request.js","webpack://monero-javascript/./node_modules/stream-http/lib/response.js","webpack://monero-javascript/./node_modules/string_decoder/lib/string_decoder.js","webpack://monero-javascript/./node_modules/string_decoder/node_modules/safe-buffer/index.js","webpack://monero-javascript/./node_modules/tls/index.js","webpack://monero-javascript/./node_modules/tough-cookie/lib/cookie.js","webpack://monero-javascript/./node_modules/tough-cookie/lib/memstore.js","webpack://monero-javascript/./node_modules/tough-cookie/lib/pathMatch.js","webpack://monero-javascript/./node_modules/tough-cookie/lib/permuteDomain.js","webpack://monero-javascript/./node_modules/tough-cookie/lib/pubsuffix-psl.js","webpack://monero-javascript/./node_modules/tough-cookie/lib/store.js","webpack://monero-javascript/./node_modules/tough-cookie/lib/version.js","webpack://monero-javascript/./node_modules/tunnel-agent/index.js","webpack://monero-javascript/./node_modules/tweetnacl/nacl-fast.js","webpack://monero-javascript/./node_modules/uri-js/dist/es5/uri.all.js","webpack://monero-javascript/./node_modules/url/node_modules/punycode/punycode.js","webpack://monero-javascript/./node_modules/url/url.js","webpack://monero-javascript/./node_modules/url/util.js","webpack://monero-javascript/./node_modules/util-deprecate/browser.js","webpack://monero-javascript/./node_modules/util/support/isBufferBrowser.js","webpack://monero-javascript/./node_modules/util/support/types.js","webpack://monero-javascript/./node_modules/util/util.js","webpack://monero-javascript/./node_modules/uuid/lib/bytesToUuid.js","webpack://monero-javascript/./node_modules/uuid/lib/rng-browser.js","webpack://monero-javascript/./node_modules/uuid/v4.js","webpack://monero-javascript/./node_modules/verror/lib/verror.js","webpack://monero-javascript/./node_modules/web-worker/cjs/browser.js","webpack://monero-javascript/./node_modules/which-typed-array/index.js","webpack://monero-javascript/./node_modules/xtend/immutable.js","webpack://monero-javascript/external var \"child_process\"","webpack://monero-javascript/./node_modules/available-typed-arrays/index.js","webpack://monero-javascript/./node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js","webpack://monero-javascript/webpack/bootstrap","webpack://monero-javascript/webpack/runtime/define property getters","webpack://monero-javascript/webpack/runtime/global","webpack://monero-javascript/webpack/runtime/hasOwnProperty shorthand","webpack://monero-javascript/webpack/runtime/make namespace object","webpack://monero-javascript/webpack/runtime/node module decorator","webpack://monero-javascript/webpack/startup"],"sourcesContent":["'use strict';\n\nvar compileSchema = require('./compile')\n , resolve = require('./compile/resolve')\n , Cache = require('./cache')\n , SchemaObject = require('./compile/schema_obj')\n , stableStringify = require('fast-json-stable-stringify')\n , formats = require('./compile/formats')\n , rules = require('./compile/rules')\n , $dataMetaSchema = require('./data')\n , util = require('./compile/util');\n\nmodule.exports = Ajv;\n\nAjv.prototype.validate = validate;\nAjv.prototype.compile = compile;\nAjv.prototype.addSchema = addSchema;\nAjv.prototype.addMetaSchema = addMetaSchema;\nAjv.prototype.validateSchema = validateSchema;\nAjv.prototype.getSchema = getSchema;\nAjv.prototype.removeSchema = removeSchema;\nAjv.prototype.addFormat = addFormat;\nAjv.prototype.errorsText = errorsText;\n\nAjv.prototype._addSchema = _addSchema;\nAjv.prototype._compile = _compile;\n\nAjv.prototype.compileAsync = require('./compile/async');\nvar customKeyword = require('./keyword');\nAjv.prototype.addKeyword = customKeyword.add;\nAjv.prototype.getKeyword = customKeyword.get;\nAjv.prototype.removeKeyword = customKeyword.remove;\nAjv.prototype.validateKeyword = customKeyword.validate;\n\nvar errorClasses = require('./compile/error_classes');\nAjv.ValidationError = errorClasses.Validation;\nAjv.MissingRefError = errorClasses.MissingRef;\nAjv.$dataMetaSchema = $dataMetaSchema;\n\nvar META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema';\n\nvar META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes', 'strictDefaults' ];\nvar META_SUPPORT_DATA = ['/properties'];\n\n/**\n * Creates validator instance.\n * Usage: `Ajv(opts)`\n * @param {Object} opts optional options\n * @return {Object} ajv instance\n */\nfunction Ajv(opts) {\n if (!(this instanceof Ajv)) return new Ajv(opts);\n opts = this._opts = util.copy(opts) || {};\n setLogger(this);\n this._schemas = {};\n this._refs = {};\n this._fragments = {};\n this._formats = formats(opts.format);\n\n this._cache = opts.cache || new Cache;\n this._loadingSchemas = {};\n this._compilations = [];\n this.RULES = rules();\n this._getId = chooseGetId(opts);\n\n opts.loopRequired = opts.loopRequired || Infinity;\n if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true;\n if (opts.serialize === undefined) opts.serialize = stableStringify;\n this._metaOpts = getMetaSchemaOptions(this);\n\n if (opts.formats) addInitialFormats(this);\n if (opts.keywords) addInitialKeywords(this);\n addDefaultMetaSchema(this);\n if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);\n if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}});\n addInitialSchemas(this);\n}\n\n\n\n/**\n * Validate data using schema\n * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize.\n * @this Ajv\n * @param {String|Object} schemaKeyRef key, ref or schema object\n * @param {Any} data to be validated\n * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).\n */\nfunction validate(schemaKeyRef, data) {\n var v;\n if (typeof schemaKeyRef == 'string') {\n v = this.getSchema(schemaKeyRef);\n if (!v) throw new Error('no schema with key or ref \"' + schemaKeyRef + '\"');\n } else {\n var schemaObj = this._addSchema(schemaKeyRef);\n v = schemaObj.validate || this._compile(schemaObj);\n }\n\n var valid = v(data);\n if (v.$async !== true) this.errors = v.errors;\n return valid;\n}\n\n\n/**\n * Create validating function for passed schema.\n * @this Ajv\n * @param {Object} schema schema object\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords.\n * @return {Function} validating function\n */\nfunction compile(schema, _meta) {\n var schemaObj = this._addSchema(schema, undefined, _meta);\n return schemaObj.validate || this._compile(schemaObj);\n}\n\n\n/**\n * Adds schema to the instance.\n * @this Ajv\n * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.\n * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead.\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n * @return {Ajv} this for method chaining\n */\nfunction addSchema(schema, key, _skipValidation, _meta) {\n if (Array.isArray(schema)){\n for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used.\n * @param {Object} options optional options with properties `separator` and `dataVar`.\n * @return {String} human readable string with all errors descriptions\n */\nfunction errorsText(errors, options) {\n errors = errors || this.errors;\n if (!errors) return 'No errors';\n options = options || {};\n var separator = options.separator === undefined ? ', ' : options.separator;\n var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;\n\n var text = '';\n for (var i=0; i%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i;\n// For the source: https://gist.github.com/dperini/729294\n// For test cases: https://mathiasbynens.be/demo/url-regex\n// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.\n// var URL = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!10(?:\\.\\d{1,3}){3})(?!127(?:\\.\\d{1,3}){3})(?!169\\.254(?:\\.\\d{1,3}){2})(?!192\\.168(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-)*[a-z\\u{00a1}-\\u{ffff}0-9]+)(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-)*[a-z\\u{00a1}-\\u{ffff}0-9]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu;\nvar URL = /^(?:(?:http[s\\u017F]?|ftp):\\/\\/)(?:(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+(?::(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?@)?(?:(?!10(?:\\.[0-9]{1,3}){3})(?!127(?:\\.[0-9]{1,3}){3})(?!169\\.254(?:\\.[0-9]{1,3}){2})(?!192\\.168(?:\\.[0-9]{1,3}){2})(?!172\\.(?:1[6-9]|2[0-9]|3[01])(?:\\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)(?:\\.(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)*(?:\\.(?:(?:[a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\\/(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?$/i;\nvar UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;\nvar JSON_POINTER = /^(?:\\/(?:[^~/]|~0|~1)*)*$/;\nvar JSON_POINTER_URI_FRAGMENT = /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;\nvar RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/;\n\n\nmodule.exports = formats;\n\nfunction formats(mode) {\n mode = mode == 'full' ? 'full' : 'fast';\n return util.copy(formats[mode]);\n}\n\n\nformats.fast = {\n // date: http://tools.ietf.org/html/rfc3339#section-5.6\n date: /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/,\n // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n time: /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n 'date-time': /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n uri: /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n 'uri-reference': /^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n 'uri-template': URITEMPLATE,\n url: URL,\n // email (sources from jsen validator):\n // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')\n email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n hostname: HOSTNAME,\n // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses\n ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n regex: regex,\n // uuid: http://tools.ietf.org/html/rfc4122\n uuid: UUID,\n // JSON-pointer: https://tools.ietf.org/html/rfc6901\n // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n 'json-pointer': JSON_POINTER,\n 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n 'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nformats.full = {\n date: date,\n time: time,\n 'date-time': date_time,\n uri: uri,\n 'uri-reference': URIREF,\n 'uri-template': URITEMPLATE,\n url: URL,\n email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n hostname: HOSTNAME,\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n regex: regex,\n uuid: UUID,\n 'json-pointer': JSON_POINTER,\n 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n 'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nfunction isLeapYear(year) {\n // https://tools.ietf.org/html/rfc3339#appendix-C\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\n\nfunction date(str) {\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n var matches = str.match(DATE);\n if (!matches) return false;\n\n var year = +matches[1];\n var month = +matches[2];\n var day = +matches[3];\n\n return month >= 1 && month <= 12 && day >= 1 &&\n day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]);\n}\n\n\nfunction time(str, full) {\n var matches = str.match(TIME);\n if (!matches) return false;\n\n var hour = matches[1];\n var minute = matches[2];\n var second = matches[3];\n var timeZone = matches[5];\n return ((hour <= 23 && minute <= 59 && second <= 59) ||\n (hour == 23 && minute == 59 && second == 60)) &&\n (!full || timeZone);\n}\n\n\nvar DATE_TIME_SEPARATOR = /t|\\s/i;\nfunction date_time(str) {\n // http://tools.ietf.org/html/rfc3339#section-5.6\n var dateTime = str.split(DATE_TIME_SEPARATOR);\n return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true);\n}\n\n\nvar NOT_URI_FRAGMENT = /\\/|:/;\nfunction uri(str) {\n // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n return NOT_URI_FRAGMENT.test(str) && URI.test(str);\n}\n\n\nvar Z_ANCHOR = /[^\\\\]\\\\Z/;\nfunction regex(str) {\n if (Z_ANCHOR.test(str)) return false;\n try {\n new RegExp(str);\n return true;\n } catch(e) {\n return false;\n }\n}\n","'use strict';\n\nvar resolve = require('./resolve')\n , util = require('./util')\n , errorClasses = require('./error_classes')\n , stableStringify = require('fast-json-stable-stringify');\n\nvar validateGenerator = require('../dotjs/validate');\n\n/**\n * Functions below are used inside compiled validations function\n */\n\nvar ucs2length = util.ucs2length;\nvar equal = require('fast-deep-equal');\n\n// this error is thrown by async schemas to return validation errors via exception\nvar ValidationError = errorClasses.Validation;\n\nmodule.exports = compile;\n\n\n/**\n * Compiles schema to validation function\n * @this Ajv\n * @param {Object} schema schema object\n * @param {Object} root object with information about the root schema for this schema\n * @param {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution\n * @param {String} baseId base ID for IDs in the schema\n * @return {Function} validation function\n */\nfunction compile(schema, root, localRefs, baseId) {\n /* jshint validthis: true, evil: true */\n /* eslint no-shadow: 0 */\n var self = this\n , opts = this._opts\n , refVal = [ undefined ]\n , refs = {}\n , patterns = []\n , patternsHash = {}\n , defaults = []\n , defaultsHash = {}\n , customRules = [];\n\n root = root || { schema: schema, refVal: refVal, refs: refs };\n\n var c = checkCompiling.call(this, schema, root, baseId);\n var compilation = this._compilations[c.index];\n if (c.compiling) return (compilation.callValidate = callValidate);\n\n var formats = this._formats;\n var RULES = this.RULES;\n\n try {\n var v = localCompile(schema, root, localRefs, baseId);\n compilation.validate = v;\n var cv = compilation.callValidate;\n if (cv) {\n cv.schema = v.schema;\n cv.errors = null;\n cv.refs = v.refs;\n cv.refVal = v.refVal;\n cv.root = v.root;\n cv.$async = v.$async;\n if (opts.sourceCode) cv.source = v.source;\n }\n return v;\n } finally {\n endCompiling.call(this, schema, root, baseId);\n }\n\n /* @this {*} - custom context, see passContext option */\n function callValidate() {\n /* jshint validthis: true */\n var validate = compilation.validate;\n var result = validate.apply(this, arguments);\n callValidate.errors = validate.errors;\n return result;\n }\n\n function localCompile(_schema, _root, localRefs, baseId) {\n var isRoot = !_root || (_root && _root.schema == _schema);\n if (_root.schema != root.schema)\n return compile.call(self, _schema, _root, localRefs, baseId);\n\n var $async = _schema.$async === true;\n\n var sourceCode = validateGenerator({\n isTop: true,\n schema: _schema,\n isRoot: isRoot,\n baseId: baseId,\n root: _root,\n schemaPath: '',\n errSchemaPath: '#',\n errorPath: '\"\"',\n MissingRefError: errorClasses.MissingRef,\n RULES: RULES,\n validate: validateGenerator,\n util: util,\n resolve: resolve,\n resolveRef: resolveRef,\n usePattern: usePattern,\n useDefault: useDefault,\n useCustomRule: useCustomRule,\n opts: opts,\n formats: formats,\n logger: self.logger,\n self: self\n });\n\n sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode)\n + vars(defaults, defaultCode) + vars(customRules, customRuleCode)\n + sourceCode;\n\n if (opts.processCode) sourceCode = opts.processCode(sourceCode, _schema);\n // console.log('\\n\\n\\n *** \\n', JSON.stringify(sourceCode));\n var validate;\n try {\n var makeValidate = new Function(\n 'self',\n 'RULES',\n 'formats',\n 'root',\n 'refVal',\n 'defaults',\n 'customRules',\n 'equal',\n 'ucs2length',\n 'ValidationError',\n sourceCode\n );\n\n validate = makeValidate(\n self,\n RULES,\n formats,\n root,\n refVal,\n defaults,\n customRules,\n equal,\n ucs2length,\n ValidationError\n );\n\n refVal[0] = validate;\n } catch(e) {\n self.logger.error('Error compiling schema, function code:', sourceCode);\n throw e;\n }\n\n validate.schema = _schema;\n validate.errors = null;\n validate.refs = refs;\n validate.refVal = refVal;\n validate.root = isRoot ? validate : _root;\n if ($async) validate.$async = true;\n if (opts.sourceCode === true) {\n validate.source = {\n code: sourceCode,\n patterns: patterns,\n defaults: defaults\n };\n }\n\n return validate;\n }\n\n function resolveRef(baseId, ref, isRoot) {\n ref = resolve.url(baseId, ref);\n var refIndex = refs[ref];\n var _refVal, refCode;\n if (refIndex !== undefined) {\n _refVal = refVal[refIndex];\n refCode = 'refVal[' + refIndex + ']';\n return resolvedRef(_refVal, refCode);\n }\n if (!isRoot && root.refs) {\n var rootRefId = root.refs[ref];\n if (rootRefId !== undefined) {\n _refVal = root.refVal[rootRefId];\n refCode = addLocalRef(ref, _refVal);\n return resolvedRef(_refVal, refCode);\n }\n }\n\n refCode = addLocalRef(ref);\n var v = resolve.call(self, localCompile, root, ref);\n if (v === undefined) {\n var localSchema = localRefs && localRefs[ref];\n if (localSchema) {\n v = resolve.inlineRef(localSchema, opts.inlineRefs)\n ? localSchema\n : compile.call(self, localSchema, root, localRefs, baseId);\n }\n }\n\n if (v === undefined) {\n removeLocalRef(ref);\n } else {\n replaceLocalRef(ref, v);\n return resolvedRef(v, refCode);\n }\n }\n\n function addLocalRef(ref, v) {\n var refId = refVal.length;\n refVal[refId] = v;\n refs[ref] = refId;\n return 'refVal' + refId;\n }\n\n function removeLocalRef(ref) {\n delete refs[ref];\n }\n\n function replaceLocalRef(ref, v) {\n var refId = refs[ref];\n refVal[refId] = v;\n }\n\n function resolvedRef(refVal, code) {\n return typeof refVal == 'object' || typeof refVal == 'boolean'\n ? { code: code, schema: refVal, inline: true }\n : { code: code, $async: refVal && !!refVal.$async };\n }\n\n function usePattern(regexStr) {\n var index = patternsHash[regexStr];\n if (index === undefined) {\n index = patternsHash[regexStr] = patterns.length;\n patterns[index] = regexStr;\n }\n return 'pattern' + index;\n }\n\n function useDefault(value) {\n switch (typeof value) {\n case 'boolean':\n case 'number':\n return '' + value;\n case 'string':\n return util.toQuotedString(value);\n case 'object':\n if (value === null) return 'null';\n var valueStr = stableStringify(value);\n var index = defaultsHash[valueStr];\n if (index === undefined) {\n index = defaultsHash[valueStr] = defaults.length;\n defaults[index] = value;\n }\n return 'default' + index;\n }\n }\n\n function useCustomRule(rule, schema, parentSchema, it) {\n if (self._opts.validateSchema !== false) {\n var deps = rule.definition.dependencies;\n if (deps && !deps.every(function(keyword) {\n return Object.prototype.hasOwnProperty.call(parentSchema, keyword);\n }))\n throw new Error('parent schema must have all required keywords: ' + deps.join(','));\n\n var validateSchema = rule.definition.validateSchema;\n if (validateSchema) {\n var valid = validateSchema(schema);\n if (!valid) {\n var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);\n if (self._opts.validateSchema == 'log') self.logger.error(message);\n else throw new Error(message);\n }\n }\n }\n\n var compile = rule.definition.compile\n , inline = rule.definition.inline\n , macro = rule.definition.macro;\n\n var validate;\n if (compile) {\n validate = compile.call(self, schema, parentSchema, it);\n } else if (macro) {\n validate = macro.call(self, schema, parentSchema, it);\n if (opts.validateSchema !== false) self.validateSchema(validate, true);\n } else if (inline) {\n validate = inline.call(self, it, rule.keyword, schema, parentSchema);\n } else {\n validate = rule.definition.validate;\n if (!validate) return;\n }\n\n if (validate === undefined)\n throw new Error('custom keyword \"' + rule.keyword + '\"failed to compile');\n\n var index = customRules.length;\n customRules[index] = validate;\n\n return {\n code: 'customRule' + index,\n validate: validate\n };\n }\n}\n\n\n/**\n * Checks if the schema is currently compiled\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n * @return {Object} object with properties \"index\" (compilation index) and \"compiling\" (boolean)\n */\nfunction checkCompiling(schema, root, baseId) {\n /* jshint validthis: true */\n var index = compIndex.call(this, schema, root, baseId);\n if (index >= 0) return { index: index, compiling: true };\n index = this._compilations.length;\n this._compilations[index] = {\n schema: schema,\n root: root,\n baseId: baseId\n };\n return { index: index, compiling: false };\n}\n\n\n/**\n * Removes the schema from the currently compiled list\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n */\nfunction endCompiling(schema, root, baseId) {\n /* jshint validthis: true */\n var i = compIndex.call(this, schema, root, baseId);\n if (i >= 0) this._compilations.splice(i, 1);\n}\n\n\n/**\n * Index of schema compilation in the currently compiled list\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n * @return {Integer} compilation index\n */\nfunction compIndex(schema, root, baseId) {\n /* jshint validthis: true */\n for (var i=0; i= 0xD800 && value <= 0xDBFF && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos);\n if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate\n }\n }\n return length;\n};\n","'use strict';\n\n\nmodule.exports = {\n copy: copy,\n checkDataType: checkDataType,\n checkDataTypes: checkDataTypes,\n coerceToTypes: coerceToTypes,\n toHash: toHash,\n getProperty: getProperty,\n escapeQuotes: escapeQuotes,\n equal: require('fast-deep-equal'),\n ucs2length: require('./ucs2length'),\n varOccurences: varOccurences,\n varReplace: varReplace,\n schemaHasRules: schemaHasRules,\n schemaHasRulesExcept: schemaHasRulesExcept,\n schemaUnknownRules: schemaUnknownRules,\n toQuotedString: toQuotedString,\n getPathExpr: getPathExpr,\n getPath: getPath,\n getData: getData,\n unescapeFragment: unescapeFragment,\n unescapeJsonPointer: unescapeJsonPointer,\n escapeFragment: escapeFragment,\n escapeJsonPointer: escapeJsonPointer\n};\n\n\nfunction copy(o, to) {\n to = to || {};\n for (var key in o) to[key] = o[key];\n return to;\n}\n\n\nfunction checkDataType(dataType, data, strictNumbers, negate) {\n var EQUAL = negate ? ' !== ' : ' === '\n , AND = negate ? ' || ' : ' && '\n , OK = negate ? '!' : ''\n , NOT = negate ? '' : '!';\n switch (dataType) {\n case 'null': return data + EQUAL + 'null';\n case 'array': return OK + 'Array.isArray(' + data + ')';\n case 'object': return '(' + OK + data + AND +\n 'typeof ' + data + EQUAL + '\"object\"' + AND +\n NOT + 'Array.isArray(' + data + '))';\n case 'integer': return '(typeof ' + data + EQUAL + '\"number\"' + AND +\n NOT + '(' + data + ' % 1)' +\n AND + data + EQUAL + data +\n (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n case 'number': return '(typeof ' + data + EQUAL + '\"' + dataType + '\"' +\n (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n default: return 'typeof ' + data + EQUAL + '\"' + dataType + '\"';\n }\n}\n\n\nfunction checkDataTypes(dataTypes, data, strictNumbers) {\n switch (dataTypes.length) {\n case 1: return checkDataType(dataTypes[0], data, strictNumbers, true);\n default:\n var code = '';\n var types = toHash(dataTypes);\n if (types.array && types.object) {\n code = types.null ? '(': '(!' + data + ' || ';\n code += 'typeof ' + data + ' !== \"object\")';\n delete types.null;\n delete types.array;\n delete types.object;\n }\n if (types.number) delete types.integer;\n for (var t in types)\n code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true);\n\n return code;\n }\n}\n\n\nvar COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);\nfunction coerceToTypes(optionCoerceTypes, dataTypes) {\n if (Array.isArray(dataTypes)) {\n var types = [];\n for (var i=0; i= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);\n return paths[lvl - up];\n }\n\n if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);\n data = 'data' + ((lvl - up) || '');\n if (!jsonPointer) return data;\n }\n\n var expr = data;\n var segments = jsonPointer.split('/');\n for (var i=0; i',\n $notOp = $isMax ? '>' : '<',\n $errorKeyword = undefined;\n if (!($isData || typeof $schema == 'number' || $schema === undefined)) {\n throw new Error($keyword + ' must be number');\n }\n if (!($isDataExcl || $schemaExcl === undefined || typeof $schemaExcl == 'number' || typeof $schemaExcl == 'boolean')) {\n throw new Error($exclusiveKeyword + ' must be number or boolean');\n }\n if ($isDataExcl) {\n var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),\n $exclusive = 'exclusive' + $lvl,\n $exclType = 'exclType' + $lvl,\n $exclIsNumber = 'exclIsNumber' + $lvl,\n $opExpr = 'op' + $lvl,\n $opStr = '\\' + ' + $opExpr + ' + \\'';\n out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';\n $schemaValueExcl = 'schemaExcl' + $lvl;\n out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \\'boolean\\' && ' + ($exclType) + ' != \\'undefined\\' && ' + ($exclType) + ' != \\'number\\') { ';\n var $errorKeyword = $exclusiveKeyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_exclusiveLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'' + ($exclusiveKeyword) + ' should be boolean\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($exclType) + ' == \\'number\\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \\'' + ($op) + '\\' : \\'' + ($op) + '=\\'; ';\n if ($schema === undefined) {\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $schemaValue = $schemaValueExcl;\n $isData = $isDataExcl;\n }\n } else {\n var $exclIsNumber = typeof $schemaExcl == 'number',\n $opStr = $op;\n if ($exclIsNumber && $isData) {\n var $opExpr = '\\'' + $opStr + '\\'';\n out += ' if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { ';\n } else {\n if ($exclIsNumber && $schema === undefined) {\n $exclusive = true;\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $schemaValue = $schemaExcl;\n $notOp += '=';\n } else {\n if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);\n if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {\n $exclusive = true;\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $notOp += '=';\n } else {\n $exclusive = false;\n $opStr += '=';\n }\n }\n var $opExpr = '\\'' + $opStr + '\\'';\n out += ' if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { ';\n }\n }\n $errorKeyword = $errorKeyword || $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ' + ($opStr) + ' ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue);\n } else {\n out += '' + ($schemaValue) + '\\'';\n }\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate__limitItems(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxItems' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have ';\n if ($keyword == 'maxItems') {\n out += 'more';\n } else {\n out += 'fewer';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' items\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate__limitLength(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxLength' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n if (it.opts.unicode === false) {\n out += ' ' + ($data) + '.length ';\n } else {\n out += ' ucs2length(' + ($data) + ') ';\n }\n out += ' ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitLength') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be ';\n if ($keyword == 'maxLength') {\n out += 'longer';\n } else {\n out += 'shorter';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' characters\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate__limitProperties(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxProperties' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have ';\n if ($keyword == 'maxProperties') {\n out += 'more';\n } else {\n out += 'fewer';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' properties\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_allOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $currentBaseId = $it.baseId,\n $allSchemasEmpty = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n $allSchemasEmpty = false;\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if ($breakOnError) {\n if ($allSchemasEmpty) {\n out += ' if (true) { ';\n } else {\n out += ' ' + ($closingBraces.slice(0, -1)) + ' ';\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_anyOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $noEmptySchema = $schema.every(function($sch) {\n return (it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all));\n });\n if ($noEmptySchema) {\n var $currentBaseId = $it.baseId;\n out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { ';\n $closingBraces += '}';\n }\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('anyOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match some schema in anyOf\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_comment(it, $keyword, $ruleType) {\n var out = ' ';\n var $schema = it.schema[$keyword];\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $comment = it.util.toQuotedString($schema);\n if (it.opts.$comment === true) {\n out += ' console.log(' + ($comment) + ');';\n } else if (typeof it.opts.$comment == 'function') {\n out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_const(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!$isData) {\n out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';\n }\n out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('const') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be equal to constant\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' }';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_contains(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $idx = 'i' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $currentBaseId = it.baseId,\n $nonEmptySchema = (it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all));\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if ($nonEmptySchema) {\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' if (' + ($nextValid) + ') break; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {';\n } else {\n out += ' if (' + ($data) + '.length == 0) {';\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('contains') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should contain a valid item\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n if ($nonEmptySchema) {\n out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n }\n if (it.opts.allErrors) {\n out += ' } ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_custom(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $rule = this,\n $definition = 'definition' + $lvl,\n $rDef = $rule.definition,\n $closingBraces = '';\n var $compile, $inline, $macro, $ruleValidate, $validateCode;\n if ($isData && $rDef.$data) {\n $validateCode = 'keywordValidate' + $lvl;\n var $validateSchema = $rDef.validateSchema;\n out += ' var ' + ($definition) + ' = RULES.custom[\\'' + ($keyword) + '\\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;';\n } else {\n $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);\n if (!$ruleValidate) return;\n $schemaValue = 'validate.schema' + $schemaPath;\n $validateCode = $ruleValidate.code;\n $compile = $rDef.compile;\n $inline = $rDef.inline;\n $macro = $rDef.macro;\n }\n var $ruleErrs = $validateCode + '.errors',\n $i = 'i' + $lvl,\n $ruleErr = 'ruleErr' + $lvl,\n $asyncKeyword = $rDef.async;\n if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema');\n if (!($inline || $macro)) {\n out += '' + ($ruleErrs) + ' = null;';\n }\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if ($isData && $rDef.$data) {\n $closingBraces += '}';\n out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { ';\n if ($validateSchema) {\n $closingBraces += '}';\n out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { ';\n }\n }\n if ($inline) {\n if ($rDef.statements) {\n out += ' ' + ($ruleValidate.validate) + ' ';\n } else {\n out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; ';\n }\n } else if ($macro) {\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n $it.schema = $ruleValidate.validate;\n $it.schemaPath = '';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var $code = it.validate($it).replace(/validate\\.schema/g, $validateCode);\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($code);\n } else {\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = '';\n out += ' ' + ($validateCode) + '.call( ';\n if (it.opts.passContext) {\n out += 'this';\n } else {\n out += 'self';\n }\n if ($compile || $rDef.schema === false) {\n out += ' , ' + ($data) + ' ';\n } else {\n out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' ';\n }\n out += ' , (dataPath || \\'\\')';\n if (it.errorPath != '\"\"') {\n out += ' + ' + (it.errorPath);\n }\n var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData ) ';\n var def_callRuleValidate = out;\n out = $$outStack.pop();\n if ($rDef.errors === false) {\n out += ' ' + ($valid) + ' = ';\n if ($asyncKeyword) {\n out += 'await ';\n }\n out += '' + (def_callRuleValidate) + '; ';\n } else {\n if ($asyncKeyword) {\n $ruleErrs = 'customErrors' + $lvl;\n out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = await ' + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } ';\n } else {\n out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; ';\n }\n }\n }\n if ($rDef.modifying) {\n out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];';\n }\n out += '' + ($closingBraces);\n if ($rDef.valid) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n } else {\n out += ' if ( ';\n if ($rDef.valid === undefined) {\n out += ' !';\n if ($macro) {\n out += '' + ($nextValid);\n } else {\n out += '' + ($valid);\n }\n } else {\n out += ' ' + (!$rDef.valid) + ' ';\n }\n out += ') { ';\n $errorKeyword = $rule.keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = '';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'custom') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \\'' + ($rule.keyword) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should pass \"' + ($rule.keyword) + '\" keyword validation\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n var def_customError = out;\n out = $$outStack.pop();\n if ($inline) {\n if ($rDef.errors) {\n if ($rDef.errors != 'full') {\n out += ' for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + ' 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n }\n out += ') { ';\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + it.util.getProperty($property);\n $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_enum(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $i = 'i' + $lvl,\n $vSchema = 'schema' + $lvl;\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';';\n }\n out += 'var ' + ($valid) + ';';\n if ($isData) {\n out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n }\n out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('enum') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be equal to one of the allowed values\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' }';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_format(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n if (it.opts.format === false) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n }\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $unknownFormats = it.opts.unknownFormats,\n $allowUnknown = Array.isArray($unknownFormats);\n if ($isData) {\n var $format = 'format' + $lvl,\n $isObject = 'isObject' + $lvl,\n $formatType = 'formatType' + $lvl;\n out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \\'object\\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \\'string\\'; if (' + ($isObject) + ') { ';\n if (it.async) {\n out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; ';\n }\n out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n }\n out += ' (';\n if ($unknownFormats != 'ignore') {\n out += ' (' + ($schemaValue) + ' && !' + ($format) + ' ';\n if ($allowUnknown) {\n out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 ';\n }\n out += ') || ';\n }\n out += ' (' + ($format) + ' && ' + ($formatType) + ' == \\'' + ($ruleType) + '\\' && !(typeof ' + ($format) + ' == \\'function\\' ? ';\n if (it.async) {\n out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) ';\n } else {\n out += ' ' + ($format) + '(' + ($data) + ') ';\n }\n out += ' : ' + ($format) + '.test(' + ($data) + '))))) {';\n } else {\n var $format = it.formats[$schema];\n if (!$format) {\n if ($unknownFormats == 'ignore') {\n it.logger.warn('unknown format \"' + $schema + '\" ignored in schema at path \"' + it.errSchemaPath + '\"');\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n } else {\n throw new Error('unknown format \"' + $schema + '\" is used in schema at path \"' + it.errSchemaPath + '\"');\n }\n }\n var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate;\n var $formatType = $isObject && $format.type || 'string';\n if ($isObject) {\n var $async = $format.async === true;\n $format = $format.validate;\n }\n if ($formatType != $ruleType) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n }\n if ($async) {\n if (!it.async) throw new Error('async format in sync schema');\n var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';\n out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { ';\n } else {\n out += ' if (! ';\n var $formatRef = 'formats' + it.util.getProperty($schema);\n if ($isObject) $formatRef += '.validate';\n if (typeof $format == 'function') {\n out += ' ' + ($formatRef) + '(' + ($data) + ') ';\n } else {\n out += ' ' + ($formatRef) + '.test(' + ($data) + ') ';\n }\n out += ') { ';\n }\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('format') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: ';\n if ($isData) {\n out += '' + ($schemaValue);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match format \"';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + (it.util.escapeQuotes($schema));\n }\n out += '\"\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_if(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $thenSch = it.schema['then'],\n $elseSch = it.schema['else'],\n $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? (typeof $thenSch == 'object' && Object.keys($thenSch).length > 0) || $thenSch === false : it.util.schemaHasRules($thenSch, it.RULES.all)),\n $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? (typeof $elseSch == 'object' && Object.keys($elseSch).length > 0) || $elseSch === false : it.util.schemaHasRules($elseSch, it.RULES.all)),\n $currentBaseId = $it.baseId;\n if ($thenPresent || $elsePresent) {\n var $ifClause;\n $it.createErrors = false;\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n $it.createErrors = true;\n out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n if ($thenPresent) {\n out += ' if (' + ($nextValid) + ') { ';\n $it.schema = it.schema['then'];\n $it.schemaPath = it.schemaPath + '.then';\n $it.errSchemaPath = it.errSchemaPath + '/then';\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n if ($thenPresent && $elsePresent) {\n $ifClause = 'ifClause' + $lvl;\n out += ' var ' + ($ifClause) + ' = \\'then\\'; ';\n } else {\n $ifClause = '\\'then\\'';\n }\n out += ' } ';\n if ($elsePresent) {\n out += ' else { ';\n }\n } else {\n out += ' if (!' + ($nextValid) + ') { ';\n }\n if ($elsePresent) {\n $it.schema = it.schema['else'];\n $it.schemaPath = it.schemaPath + '.else';\n $it.errSchemaPath = it.errSchemaPath + '/else';\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n if ($thenPresent && $elsePresent) {\n $ifClause = 'ifClause' + $lvl;\n out += ' var ' + ($ifClause) + ' = \\'else\\'; ';\n } else {\n $ifClause = '\\'else\\'';\n }\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('if') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match \"\\' + ' + ($ifClause) + ' + \\'\" schema\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n","'use strict';\n\n//all requires must be explicit because browserify won't work with dynamic requires\nmodule.exports = {\n '$ref': require('./ref'),\n allOf: require('./allOf'),\n anyOf: require('./anyOf'),\n '$comment': require('./comment'),\n const: require('./const'),\n contains: require('./contains'),\n dependencies: require('./dependencies'),\n 'enum': require('./enum'),\n format: require('./format'),\n 'if': require('./if'),\n items: require('./items'),\n maximum: require('./_limit'),\n minimum: require('./_limit'),\n maxItems: require('./_limitItems'),\n minItems: require('./_limitItems'),\n maxLength: require('./_limitLength'),\n minLength: require('./_limitLength'),\n maxProperties: require('./_limitProperties'),\n minProperties: require('./_limitProperties'),\n multipleOf: require('./multipleOf'),\n not: require('./not'),\n oneOf: require('./oneOf'),\n pattern: require('./pattern'),\n properties: require('./properties'),\n propertyNames: require('./propertyNames'),\n required: require('./required'),\n uniqueItems: require('./uniqueItems'),\n validate: require('./validate')\n};\n","'use strict';\nmodule.exports = function generate_items(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $idx = 'i' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $currentBaseId = it.baseId;\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if (Array.isArray($schema)) {\n var $additionalItems = it.schema.additionalItems;\n if ($additionalItems === false) {\n out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; ';\n var $currErrSchemaPath = $errSchemaPath;\n $errSchemaPath = it.errSchemaPath + '/additionalItems';\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('additionalItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have more than ' + ($schema.length) + ' items\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n $errSchemaPath = $currErrSchemaPath;\n if ($breakOnError) {\n $closingBraces += '}';\n out += ' else { ';\n }\n }\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { ';\n var $passData = $data + '[' + $i + ']';\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);\n $it.dataPathArr[$dataNxt] = $i;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? (typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0) || $additionalItems === false : it.util.schemaHasRules($additionalItems, it.RULES.all))) {\n $it.schema = $additionalItems;\n $it.schemaPath = it.schemaPath + '.additionalItems';\n $it.errSchemaPath = it.errSchemaPath + '/additionalItems';\n out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' } } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n } else if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' }';\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_multipleOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n out += 'var division' + ($lvl) + ';if (';\n if ($isData) {\n out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \\'number\\' || ';\n }\n out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', ';\n if (it.opts.multipleOfPrecision) {\n out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' ';\n } else {\n out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') ';\n }\n out += ' ) ';\n if ($isData) {\n out += ' ) ';\n }\n out += ' ) { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('multipleOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be multiple of ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue);\n } else {\n out += '' + ($schemaValue) + '\\'';\n }\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_not(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($errs) + ' = errors; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.createErrors = false;\n var $allErrorsOption;\n if ($it.opts.allErrors) {\n $allErrorsOption = $it.opts.allErrors;\n $it.opts.allErrors = false;\n }\n out += ' ' + (it.validate($it)) + ' ';\n $it.createErrors = true;\n if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' if (' + ($nextValid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be valid\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n } else {\n out += ' var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be valid\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if ($breakOnError) {\n out += ' if (false) { ';\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_oneOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $currentBaseId = $it.baseId,\n $prevValid = 'prevValid' + $lvl,\n $passingSchemas = 'passingSchemas' + $lvl;\n out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n } else {\n out += ' var ' + ($nextValid) + ' = true; ';\n }\n if ($i) {\n out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { ';\n $closingBraces += '}';\n }\n out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }';\n }\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('oneOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match exactly one schema in oneOf\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_pattern(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema);\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n }\n out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('pattern') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: ';\n if ($isData) {\n out += '' + ($schemaValue);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match pattern \"';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + (it.util.escapeQuotes($schema));\n }\n out += '\"\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_properties(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $key = 'key' + $lvl,\n $idx = 'idx' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $dataProperties = 'dataProperties' + $lvl;\n var $schemaKeys = Object.keys($schema || {}).filter(notProto),\n $pProperties = it.schema.patternProperties || {},\n $pPropertyKeys = Object.keys($pProperties).filter(notProto),\n $aProperties = it.schema.additionalProperties,\n $someProperties = $schemaKeys.length || $pPropertyKeys.length,\n $noAdditional = $aProperties === false,\n $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,\n $removeAdditional = it.opts.removeAdditional,\n $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional,\n $ownProperties = it.opts.ownProperties,\n $currentBaseId = it.baseId;\n var $required = it.schema.required;\n if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) {\n var $requiredHash = it.util.toHash($required);\n }\n\n function notProto(p) {\n return p !== '__proto__';\n }\n out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;';\n if ($ownProperties) {\n out += ' var ' + ($dataProperties) + ' = undefined;';\n }\n if ($checkAdditional) {\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n if ($someProperties) {\n out += ' var isAdditional' + ($lvl) + ' = !(false ';\n if ($schemaKeys.length) {\n if ($schemaKeys.length > 8) {\n out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') ';\n } else {\n var arr1 = $schemaKeys;\n if (arr1) {\n var $propertyKey, i1 = -1,\n l1 = arr1.length - 1;\n while (i1 < l1) {\n $propertyKey = arr1[i1 += 1];\n out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';\n }\n }\n }\n }\n if ($pPropertyKeys.length) {\n var arr2 = $pPropertyKeys;\n if (arr2) {\n var $pProperty, $i = -1,\n l2 = arr2.length - 1;\n while ($i < l2) {\n $pProperty = arr2[$i += 1];\n out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') ';\n }\n }\n }\n out += ' ); if (isAdditional' + ($lvl) + ') { ';\n }\n if ($removeAdditional == 'all') {\n out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n } else {\n var $currentErrorPath = it.errorPath;\n var $additionalProperty = '\\' + ' + $key + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n }\n if ($noAdditional) {\n if ($removeAdditional) {\n out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n } else {\n out += ' ' + ($nextValid) + ' = false; ';\n var $currErrSchemaPath = $errSchemaPath;\n $errSchemaPath = it.errSchemaPath + '/additionalProperties';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('additionalProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \\'' + ($additionalProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is an invalid additional property';\n } else {\n out += 'should NOT have additional properties';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n $errSchemaPath = $currErrSchemaPath;\n if ($breakOnError) {\n out += ' break; ';\n }\n }\n } else if ($additionalIsSchema) {\n if ($removeAdditional == 'failing') {\n out += ' var ' + ($errs) + ' = errors; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.schema = $aProperties;\n $it.schemaPath = it.schemaPath + '.additionalProperties';\n $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n } else {\n $it.schema = $aProperties;\n $it.schemaPath = it.schemaPath + '.additionalProperties';\n $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n }\n }\n it.errorPath = $currentErrorPath;\n }\n if ($someProperties) {\n out += ' } ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n var $useDefaults = it.opts.useDefaults && !it.compositeRule;\n if ($schemaKeys.length) {\n var arr3 = $schemaKeys;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $sch = $schema[$propertyKey];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n var $prop = it.util.getProperty($propertyKey),\n $passData = $data + $prop,\n $hasDefault = $useDefaults && $sch.default !== undefined;\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + $prop;\n $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);\n $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);\n $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n $code = it.util.varReplace($code, $nextData, $passData);\n var $useData = $passData;\n } else {\n var $useData = $nextData;\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';\n }\n if ($hasDefault) {\n out += ' ' + ($code) + ' ';\n } else {\n if ($requiredHash && $requiredHash[$propertyKey]) {\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { ' + ($nextValid) + ' = false; ';\n var $currentErrorPath = it.errorPath,\n $currErrSchemaPath = $errSchemaPath,\n $missingProperty = it.util.escapeQuotes($propertyKey);\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n $errSchemaPath = it.errSchemaPath + '/required';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n $errSchemaPath = $currErrSchemaPath;\n it.errorPath = $currentErrorPath;\n out += ' } else { ';\n } else {\n if ($breakOnError) {\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { ' + ($nextValid) + ' = true; } else { ';\n } else {\n out += ' if (' + ($useData) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ' ) { ';\n }\n }\n out += ' ' + ($code) + ' } ';\n }\n }\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if ($pPropertyKeys.length) {\n var arr4 = $pPropertyKeys;\n if (arr4) {\n var $pProperty, i4 = -1,\n l4 = arr4.length - 1;\n while (i4 < l4) {\n $pProperty = arr4[i4 += 1];\n var $sch = $pProperties[$pProperty];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n $it.schema = $sch;\n $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);\n $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else ' + ($nextValid) + ' = true; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_propertyNames(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n out += 'var ' + ($errs) + ' = errors;';\n if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n var $key = 'key' + $lvl,\n $idx = 'idx' + $lvl,\n $i = 'i' + $lvl,\n $invalidName = '\\' + ' + $key + ' + \\'',\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $dataProperties = 'dataProperties' + $lvl,\n $ownProperties = it.opts.ownProperties,\n $currentBaseId = it.baseId;\n if ($ownProperties) {\n out += ' var ' + ($dataProperties) + ' = undefined; ';\n }\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n out += ' var startErrs' + ($lvl) + ' = errors; ';\n var $passData = $key;\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + ' 0) || $propertySch === false : it.util.schemaHasRules($propertySch, it.RULES.all)))) {\n $required[$required.length] = $property;\n }\n }\n }\n } else {\n var $required = $schema;\n }\n }\n if ($isData || $required.length) {\n var $currentErrorPath = it.errorPath,\n $loopRequired = $isData || $required.length >= it.opts.loopRequired,\n $ownProperties = it.opts.ownProperties;\n if ($breakOnError) {\n out += ' var missing' + ($lvl) + '; ';\n if ($loopRequired) {\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n }\n var $i = 'i' + $lvl,\n $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n }\n out += ' var ' + ($valid) + ' = true; ';\n if ($isData) {\n out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n }\n out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n }\n out += '; if (!' + ($valid) + ') break; } ';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n } else {\n out += ' if ( ';\n var arr2 = $required;\n if (arr2) {\n var $propertyKey, $i = -1,\n l2 = arr2.length - 1;\n while ($i < l2) {\n $propertyKey = arr2[$i += 1];\n if ($i) {\n out += ' || ';\n }\n var $prop = it.util.getProperty($propertyKey),\n $useData = $data + $prop;\n out += ' ( ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n }\n }\n out += ') { ';\n var $propertyPath = 'missing' + $lvl,\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n }\n } else {\n if ($loopRequired) {\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n }\n var $i = 'i' + $lvl,\n $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n }\n if ($isData) {\n out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { ';\n }\n out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';\n if ($isData) {\n out += ' } ';\n }\n } else {\n var arr3 = $required;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $prop = it.util.getProperty($propertyKey),\n $missingProperty = it.util.escapeQuotes($propertyKey),\n $useData = $data + $prop;\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n }\n }\n }\n }\n it.errorPath = $currentErrorPath;\n } else if ($breakOnError) {\n out += ' if (true) {';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_uniqueItems(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (($schema || $isData) && it.opts.uniqueItems !== false) {\n if ($isData) {\n out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'boolean\\') ' + ($valid) + ' = false; else { ';\n }\n out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { ';\n var $itemType = it.schema.items && it.schema.items.type,\n $typeIsArray = Array.isArray($itemType);\n if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) {\n out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } ';\n } else {\n out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; ';\n var $method = 'checkDataType' + ($typeIsArray ? 's' : '');\n out += ' if (' + (it.util[$method]($itemType, 'item', it.opts.strictNumbers, true)) + ') continue; ';\n if ($typeIsArray) {\n out += ' if (typeof item == \\'string\\') item = \\'\"\\' + item; ';\n }\n out += ' if (typeof itemIndices[item] == \\'number\\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ';\n }\n out += ' } ';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('uniqueItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have duplicate items (items ## \\' + j + \\' and \\' + i + \\' are identical)\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_validate(it, $keyword, $ruleType) {\n var out = '';\n var $async = it.schema.$async === true,\n $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'),\n $id = it.self._getId(it.schema);\n if (it.opts.strictKeywords) {\n var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords);\n if ($unknownKwd) {\n var $keywordsMsg = 'unknown keyword: ' + $unknownKwd;\n if (it.opts.strictKeywords === 'log') it.logger.warn($keywordsMsg);\n else throw new Error($keywordsMsg);\n }\n }\n if (it.isTop) {\n out += ' var validate = ';\n if ($async) {\n it.async = true;\n out += 'async ';\n }\n out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \\'use strict\\'; ';\n if ($id && (it.opts.sourceCode || it.opts.processCode)) {\n out += ' ' + ('/\\*# sourceURL=' + $id + ' */') + ' ';\n }\n }\n if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) {\n var $keyword = 'false schema';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n if (it.schema === false) {\n if (it.isTop) {\n $breakOnError = true;\n } else {\n out += ' var ' + ($valid) + ' = false; ';\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'false schema') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'boolean schema is false\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n } else {\n if (it.isTop) {\n if ($async) {\n out += ' return data; ';\n } else {\n out += ' validate.errors = null; return true; ';\n }\n } else {\n out += ' var ' + ($valid) + ' = true; ';\n }\n }\n if (it.isTop) {\n out += ' }; return validate; ';\n }\n return out;\n }\n if (it.isTop) {\n var $top = it.isTop,\n $lvl = it.level = 0,\n $dataLvl = it.dataLevel = 0,\n $data = 'data';\n it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema));\n it.baseId = it.baseId || it.rootId;\n delete it.isTop;\n it.dataPathArr = [\"\"];\n if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) {\n var $defaultMsg = 'default is ignored in the schema root';\n if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n else throw new Error($defaultMsg);\n }\n out += ' var vErrors = null; ';\n out += ' var errors = 0; ';\n out += ' if (rootData === undefined) rootData = data; ';\n } else {\n var $lvl = it.level,\n $dataLvl = it.dataLevel,\n $data = 'data' + ($dataLvl || '');\n if ($id) it.baseId = it.resolve.url(it.baseId, $id);\n if ($async && !it.async) throw new Error('async schema in sync schema');\n out += ' var errs_' + ($lvl) + ' = errors;';\n }\n var $valid = 'valid' + $lvl,\n $breakOnError = !it.opts.allErrors,\n $closingBraces1 = '',\n $closingBraces2 = '';\n var $errorKeyword;\n var $typeSchema = it.schema.type,\n $typeIsArray = Array.isArray($typeSchema);\n if ($typeSchema && it.opts.nullable && it.schema.nullable === true) {\n if ($typeIsArray) {\n if ($typeSchema.indexOf('null') == -1) $typeSchema = $typeSchema.concat('null');\n } else if ($typeSchema != 'null') {\n $typeSchema = [$typeSchema, 'null'];\n $typeIsArray = true;\n }\n }\n if ($typeIsArray && $typeSchema.length == 1) {\n $typeSchema = $typeSchema[0];\n $typeIsArray = false;\n }\n if (it.schema.$ref && $refKeywords) {\n if (it.opts.extendRefs == 'fail') {\n throw new Error('$ref: validation keywords used in schema at path \"' + it.errSchemaPath + '\" (see option extendRefs)');\n } else if (it.opts.extendRefs !== true) {\n $refKeywords = false;\n it.logger.warn('$ref: keywords ignored in schema at path \"' + it.errSchemaPath + '\"');\n }\n }\n if (it.schema.$comment && it.opts.$comment) {\n out += ' ' + (it.RULES.all.$comment.code(it, '$comment'));\n }\n if ($typeSchema) {\n if (it.opts.coerceTypes) {\n var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema);\n }\n var $rulesGroup = it.RULES.types[$typeSchema];\n if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) {\n var $schemaPath = it.schemaPath + '.type',\n $errSchemaPath = it.errSchemaPath + '/type';\n var $schemaPath = it.schemaPath + '.type',\n $errSchemaPath = it.errSchemaPath + '/type',\n $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType';\n out += ' if (' + (it.util[$method]($typeSchema, $data, it.opts.strictNumbers, true)) + ') { ';\n if ($coerceToTypes) {\n var $dataType = 'dataType' + $lvl,\n $coerced = 'coerced' + $lvl;\n out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; var ' + ($coerced) + ' = undefined; ';\n if (it.opts.coerceTypes == 'array') {\n out += ' if (' + ($dataType) + ' == \\'object\\' && Array.isArray(' + ($data) + ') && ' + ($data) + '.length == 1) { ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; if (' + (it.util.checkDataType(it.schema.type, $data, it.opts.strictNumbers)) + ') ' + ($coerced) + ' = ' + ($data) + '; } ';\n }\n out += ' if (' + ($coerced) + ' !== undefined) ; ';\n var arr1 = $coerceToTypes;\n if (arr1) {\n var $type, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $type = arr1[$i += 1];\n if ($type == 'string') {\n out += ' else if (' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\') ' + ($coerced) + ' = \\'\\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \\'\\'; ';\n } else if ($type == 'number' || $type == 'integer') {\n out += ' else if (' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \\'string\\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' ';\n if ($type == 'integer') {\n out += ' && !(' + ($data) + ' % 1)';\n }\n out += ')) ' + ($coerced) + ' = +' + ($data) + '; ';\n } else if ($type == 'boolean') {\n out += ' else if (' + ($data) + ' === \\'false\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \\'true\\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; ';\n } else if ($type == 'null') {\n out += ' else if (' + ($data) + ' === \\'\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; ';\n } else if (it.opts.coerceTypes == 'array' && $type == 'array') {\n out += ' else if (' + ($dataType) + ' == \\'string\\' || ' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; ';\n }\n }\n }\n out += ' else { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } if (' + ($coerced) + ' !== undefined) { ';\n var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n out += ' ' + ($data) + ' = ' + ($coerced) + '; ';\n if (!$dataLvl) {\n out += 'if (' + ($parentData) + ' !== undefined)';\n }\n out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } ';\n } else {\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n }\n out += ' } ';\n }\n }\n if (it.schema.$ref && !$refKeywords) {\n out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' ';\n if ($breakOnError) {\n out += ' } if (errors === ';\n if ($top) {\n out += '0';\n } else {\n out += 'errs_' + ($lvl);\n }\n out += ') { ';\n $closingBraces2 += '}';\n }\n } else {\n var arr2 = it.RULES;\n if (arr2) {\n var $rulesGroup, i2 = -1,\n l2 = arr2.length - 1;\n while (i2 < l2) {\n $rulesGroup = arr2[i2 += 1];\n if ($shouldUseGroup($rulesGroup)) {\n if ($rulesGroup.type) {\n out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data, it.opts.strictNumbers)) + ') { ';\n }\n if (it.opts.useDefaults) {\n if ($rulesGroup.type == 'object' && it.schema.properties) {\n var $schema = it.schema.properties,\n $schemaKeys = Object.keys($schema);\n var arr3 = $schemaKeys;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $sch = $schema[$propertyKey];\n if ($sch.default !== undefined) {\n var $passData = $data + it.util.getProperty($propertyKey);\n if (it.compositeRule) {\n if (it.opts.strictDefaults) {\n var $defaultMsg = 'default is ignored for: ' + $passData;\n if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n else throw new Error($defaultMsg);\n }\n } else {\n out += ' if (' + ($passData) + ' === undefined ';\n if (it.opts.useDefaults == 'empty') {\n out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \\'\\' ';\n }\n out += ' ) ' + ($passData) + ' = ';\n if (it.opts.useDefaults == 'shared') {\n out += ' ' + (it.useDefault($sch.default)) + ' ';\n } else {\n out += ' ' + (JSON.stringify($sch.default)) + ' ';\n }\n out += '; ';\n }\n }\n }\n }\n } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) {\n var arr4 = it.schema.items;\n if (arr4) {\n var $sch, $i = -1,\n l4 = arr4.length - 1;\n while ($i < l4) {\n $sch = arr4[$i += 1];\n if ($sch.default !== undefined) {\n var $passData = $data + '[' + $i + ']';\n if (it.compositeRule) {\n if (it.opts.strictDefaults) {\n var $defaultMsg = 'default is ignored for: ' + $passData;\n if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n else throw new Error($defaultMsg);\n }\n } else {\n out += ' if (' + ($passData) + ' === undefined ';\n if (it.opts.useDefaults == 'empty') {\n out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \\'\\' ';\n }\n out += ' ) ' + ($passData) + ' = ';\n if (it.opts.useDefaults == 'shared') {\n out += ' ' + (it.useDefault($sch.default)) + ' ';\n } else {\n out += ' ' + (JSON.stringify($sch.default)) + ' ';\n }\n out += '; ';\n }\n }\n }\n }\n }\n }\n var arr5 = $rulesGroup.rules;\n if (arr5) {\n var $rule, i5 = -1,\n l5 = arr5.length - 1;\n while (i5 < l5) {\n $rule = arr5[i5 += 1];\n if ($shouldUseRule($rule)) {\n var $code = $rule.code(it, $rule.keyword, $rulesGroup.type);\n if ($code) {\n out += ' ' + ($code) + ' ';\n if ($breakOnError) {\n $closingBraces1 += '}';\n }\n }\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces1) + ' ';\n $closingBraces1 = '';\n }\n if ($rulesGroup.type) {\n out += ' } ';\n if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) {\n out += ' else { ';\n var $schemaPath = it.schemaPath + '.type',\n $errSchemaPath = it.errSchemaPath + '/type';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n }\n }\n if ($breakOnError) {\n out += ' if (errors === ';\n if ($top) {\n out += '0';\n } else {\n out += 'errs_' + ($lvl);\n }\n out += ') { ';\n $closingBraces2 += '}';\n }\n }\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces2) + ' ';\n }\n if ($top) {\n if ($async) {\n out += ' if (errors === 0) return data; ';\n out += ' else throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; ';\n out += ' return errors === 0; ';\n }\n out += ' }; return validate;';\n } else {\n out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';';\n }\n\n function $shouldUseGroup($rulesGroup) {\n var rules = $rulesGroup.rules;\n for (var i = 0; i < rules.length; i++)\n if ($shouldUseRule(rules[i])) return true;\n }\n\n function $shouldUseRule($rule) {\n return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule));\n }\n\n function $ruleImplementsSomeKeyword($rule) {\n var impl = $rule.implements;\n for (var i = 0; i < impl.length; i++)\n if (it.schema[impl[i]] !== undefined) return true;\n }\n return out;\n}\n","'use strict';\n\nvar IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i;\nvar customRuleCode = require('./dotjs/custom');\nvar definitionSchema = require('./definition_schema');\n\nmodule.exports = {\n add: addKeyword,\n get: getKeyword,\n remove: removeKeyword,\n validate: validateKeyword\n};\n\n\n/**\n * Define custom keyword\n * @this Ajv\n * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords).\n * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`.\n * @return {Ajv} this for method chaining\n */\nfunction addKeyword(keyword, definition) {\n /* jshint validthis: true */\n /* eslint no-shadow: 0 */\n var RULES = this.RULES;\n if (RULES.keywords[keyword])\n throw new Error('Keyword ' + keyword + ' is already defined');\n\n if (!IDENTIFIER.test(keyword))\n throw new Error('Keyword ' + keyword + ' is not a valid identifier');\n\n if (definition) {\n this.validateKeyword(definition, true);\n\n var dataType = definition.type;\n if (Array.isArray(dataType)) {\n for (var i=0; i> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","// Copyright 2011 Mark Cavage All rights reserved.\n\n\nmodule.exports = {\n\n newInvalidAsn1Error: function (msg) {\n var e = new Error();\n e.name = 'InvalidAsn1Error';\n e.message = msg || '';\n return e;\n }\n\n};\n","// Copyright 2011 Mark Cavage All rights reserved.\n\nvar errors = require('./errors');\nvar types = require('./types');\n\nvar Reader = require('./reader');\nvar Writer = require('./writer');\n\n\n// --- Exports\n\nmodule.exports = {\n\n Reader: Reader,\n\n Writer: Writer\n\n};\n\nfor (var t in types) {\n if (types.hasOwnProperty(t))\n module.exports[t] = types[t];\n}\nfor (var e in errors) {\n if (errors.hasOwnProperty(e))\n module.exports[e] = errors[e];\n}\n","// Copyright 2011 Mark Cavage All rights reserved.\n\nvar assert = require('assert');\nvar Buffer = require('safer-buffer').Buffer;\n\nvar ASN1 = require('./types');\nvar errors = require('./errors');\n\n\n// --- Globals\n\nvar newInvalidAsn1Error = errors.newInvalidAsn1Error;\n\n\n\n// --- API\n\nfunction Reader(data) {\n if (!data || !Buffer.isBuffer(data))\n throw new TypeError('data must be a node Buffer');\n\n this._buf = data;\n this._size = data.length;\n\n // These hold the \"current\" state\n this._len = 0;\n this._offset = 0;\n}\n\nObject.defineProperty(Reader.prototype, 'length', {\n enumerable: true,\n get: function () { return (this._len); }\n});\n\nObject.defineProperty(Reader.prototype, 'offset', {\n enumerable: true,\n get: function () { return (this._offset); }\n});\n\nObject.defineProperty(Reader.prototype, 'remain', {\n get: function () { return (this._size - this._offset); }\n});\n\nObject.defineProperty(Reader.prototype, 'buffer', {\n get: function () { return (this._buf.slice(this._offset)); }\n});\n\n\n/**\n * Reads a single byte and advances offset; you can pass in `true` to make this\n * a \"peek\" operation (i.e., get the byte, but don't advance the offset).\n *\n * @param {Boolean} peek true means don't move offset.\n * @return {Number} the next byte, null if not enough data.\n */\nReader.prototype.readByte = function (peek) {\n if (this._size - this._offset < 1)\n return null;\n\n var b = this._buf[this._offset] & 0xff;\n\n if (!peek)\n this._offset += 1;\n\n return b;\n};\n\n\nReader.prototype.peek = function () {\n return this.readByte(true);\n};\n\n\n/**\n * Reads a (potentially) variable length off the BER buffer. This call is\n * not really meant to be called directly, as callers have to manipulate\n * the internal buffer afterwards.\n *\n * As a result of this call, you can call `Reader.length`, until the\n * next thing called that does a readLength.\n *\n * @return {Number} the amount of offset to advance the buffer.\n * @throws {InvalidAsn1Error} on bad ASN.1\n */\nReader.prototype.readLength = function (offset) {\n if (offset === undefined)\n offset = this._offset;\n\n if (offset >= this._size)\n return null;\n\n var lenB = this._buf[offset++] & 0xff;\n if (lenB === null)\n return null;\n\n if ((lenB & 0x80) === 0x80) {\n lenB &= 0x7f;\n\n if (lenB === 0)\n throw newInvalidAsn1Error('Indefinite length not supported');\n\n if (lenB > 4)\n throw newInvalidAsn1Error('encoding too long');\n\n if (this._size - offset < lenB)\n return null;\n\n this._len = 0;\n for (var i = 0; i < lenB; i++)\n this._len = (this._len << 8) + (this._buf[offset++] & 0xff);\n\n } else {\n // Wasn't a variable length\n this._len = lenB;\n }\n\n return offset;\n};\n\n\n/**\n * Parses the next sequence in this BER buffer.\n *\n * To get the length of the sequence, call `Reader.length`.\n *\n * @return {Number} the sequence's tag.\n */\nReader.prototype.readSequence = function (tag) {\n var seq = this.peek();\n if (seq === null)\n return null;\n if (tag !== undefined && tag !== seq)\n throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +\n ': got 0x' + seq.toString(16));\n\n var o = this.readLength(this._offset + 1); // stored in `length`\n if (o === null)\n return null;\n\n this._offset = o;\n return seq;\n};\n\n\nReader.prototype.readInt = function () {\n return this._readTag(ASN1.Integer);\n};\n\n\nReader.prototype.readBoolean = function () {\n return (this._readTag(ASN1.Boolean) === 0 ? false : true);\n};\n\n\nReader.prototype.readEnumeration = function () {\n return this._readTag(ASN1.Enumeration);\n};\n\n\nReader.prototype.readString = function (tag, retbuf) {\n if (!tag)\n tag = ASN1.OctetString;\n\n var b = this.peek();\n if (b === null)\n return null;\n\n if (b !== tag)\n throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +\n ': got 0x' + b.toString(16));\n\n var o = this.readLength(this._offset + 1); // stored in `length`\n\n if (o === null)\n return null;\n\n if (this.length > this._size - o)\n return null;\n\n this._offset = o;\n\n if (this.length === 0)\n return retbuf ? Buffer.alloc(0) : '';\n\n var str = this._buf.slice(this._offset, this._offset + this.length);\n this._offset += this.length;\n\n return retbuf ? str : str.toString('utf8');\n};\n\nReader.prototype.readOID = function (tag) {\n if (!tag)\n tag = ASN1.OID;\n\n var b = this.readString(tag, true);\n if (b === null)\n return null;\n\n var values = [];\n var value = 0;\n\n for (var i = 0; i < b.length; i++) {\n var byte = b[i] & 0xff;\n\n value <<= 7;\n value += byte & 0x7f;\n if ((byte & 0x80) === 0) {\n values.push(value);\n value = 0;\n }\n }\n\n value = values.shift();\n values.unshift(value % 40);\n values.unshift((value / 40) >> 0);\n\n return values.join('.');\n};\n\n\nReader.prototype._readTag = function (tag) {\n assert.ok(tag !== undefined);\n\n var b = this.peek();\n\n if (b === null)\n return null;\n\n if (b !== tag)\n throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +\n ': got 0x' + b.toString(16));\n\n var o = this.readLength(this._offset + 1); // stored in `length`\n if (o === null)\n return null;\n\n if (this.length > 4)\n throw newInvalidAsn1Error('Integer too long: ' + this.length);\n\n if (this.length > this._size - o)\n return null;\n this._offset = o;\n\n var fb = this._buf[this._offset];\n var value = 0;\n\n for (var i = 0; i < this.length; i++) {\n value <<= 8;\n value |= (this._buf[this._offset++] & 0xff);\n }\n\n if ((fb & 0x80) === 0x80 && i !== 4)\n value -= (1 << (i * 8));\n\n return value >> 0;\n};\n\n\n\n// --- Exported API\n\nmodule.exports = Reader;\n","// Copyright 2011 Mark Cavage All rights reserved.\n\n\nmodule.exports = {\n EOC: 0,\n Boolean: 1,\n Integer: 2,\n BitString: 3,\n OctetString: 4,\n Null: 5,\n OID: 6,\n ObjectDescriptor: 7,\n External: 8,\n Real: 9, // float\n Enumeration: 10,\n PDV: 11,\n Utf8String: 12,\n RelativeOID: 13,\n Sequence: 16,\n Set: 17,\n NumericString: 18,\n PrintableString: 19,\n T61String: 20,\n VideotexString: 21,\n IA5String: 22,\n UTCTime: 23,\n GeneralizedTime: 24,\n GraphicString: 25,\n VisibleString: 26,\n GeneralString: 28,\n UniversalString: 29,\n CharacterString: 30,\n BMPString: 31,\n Constructor: 32,\n Context: 128\n};\n","// Copyright 2011 Mark Cavage All rights reserved.\n\nvar assert = require('assert');\nvar Buffer = require('safer-buffer').Buffer;\nvar ASN1 = require('./types');\nvar errors = require('./errors');\n\n\n// --- Globals\n\nvar newInvalidAsn1Error = errors.newInvalidAsn1Error;\n\nvar DEFAULT_OPTS = {\n size: 1024,\n growthFactor: 8\n};\n\n\n// --- Helpers\n\nfunction merge(from, to) {\n assert.ok(from);\n assert.equal(typeof (from), 'object');\n assert.ok(to);\n assert.equal(typeof (to), 'object');\n\n var keys = Object.getOwnPropertyNames(from);\n keys.forEach(function (key) {\n if (to[key])\n return;\n\n var value = Object.getOwnPropertyDescriptor(from, key);\n Object.defineProperty(to, key, value);\n });\n\n return to;\n}\n\n\n\n// --- API\n\nfunction Writer(options) {\n options = merge(DEFAULT_OPTS, options || {});\n\n this._buf = Buffer.alloc(options.size || 1024);\n this._size = this._buf.length;\n this._offset = 0;\n this._options = options;\n\n // A list of offsets in the buffer where we need to insert\n // sequence tag/len pairs.\n this._seq = [];\n}\n\nObject.defineProperty(Writer.prototype, 'buffer', {\n get: function () {\n if (this._seq.length)\n throw newInvalidAsn1Error(this._seq.length + ' unended sequence(s)');\n\n return (this._buf.slice(0, this._offset));\n }\n});\n\nWriter.prototype.writeByte = function (b) {\n if (typeof (b) !== 'number')\n throw new TypeError('argument must be a Number');\n\n this._ensure(1);\n this._buf[this._offset++] = b;\n};\n\n\nWriter.prototype.writeInt = function (i, tag) {\n if (typeof (i) !== 'number')\n throw new TypeError('argument must be a Number');\n if (typeof (tag) !== 'number')\n tag = ASN1.Integer;\n\n var sz = 4;\n\n while ((((i & 0xff800000) === 0) || ((i & 0xff800000) === 0xff800000 >> 0)) &&\n (sz > 1)) {\n sz--;\n i <<= 8;\n }\n\n if (sz > 4)\n throw newInvalidAsn1Error('BER ints cannot be > 0xffffffff');\n\n this._ensure(2 + sz);\n this._buf[this._offset++] = tag;\n this._buf[this._offset++] = sz;\n\n while (sz-- > 0) {\n this._buf[this._offset++] = ((i & 0xff000000) >>> 24);\n i <<= 8;\n }\n\n};\n\n\nWriter.prototype.writeNull = function () {\n this.writeByte(ASN1.Null);\n this.writeByte(0x00);\n};\n\n\nWriter.prototype.writeEnumeration = function (i, tag) {\n if (typeof (i) !== 'number')\n throw new TypeError('argument must be a Number');\n if (typeof (tag) !== 'number')\n tag = ASN1.Enumeration;\n\n return this.writeInt(i, tag);\n};\n\n\nWriter.prototype.writeBoolean = function (b, tag) {\n if (typeof (b) !== 'boolean')\n throw new TypeError('argument must be a Boolean');\n if (typeof (tag) !== 'number')\n tag = ASN1.Boolean;\n\n this._ensure(3);\n this._buf[this._offset++] = tag;\n this._buf[this._offset++] = 0x01;\n this._buf[this._offset++] = b ? 0xff : 0x00;\n};\n\n\nWriter.prototype.writeString = function (s, tag) {\n if (typeof (s) !== 'string')\n throw new TypeError('argument must be a string (was: ' + typeof (s) + ')');\n if (typeof (tag) !== 'number')\n tag = ASN1.OctetString;\n\n var len = Buffer.byteLength(s);\n this.writeByte(tag);\n this.writeLength(len);\n if (len) {\n this._ensure(len);\n this._buf.write(s, this._offset);\n this._offset += len;\n }\n};\n\n\nWriter.prototype.writeBuffer = function (buf, tag) {\n if (typeof (tag) !== 'number')\n throw new TypeError('tag must be a number');\n if (!Buffer.isBuffer(buf))\n throw new TypeError('argument must be a buffer');\n\n this.writeByte(tag);\n this.writeLength(buf.length);\n this._ensure(buf.length);\n buf.copy(this._buf, this._offset, 0, buf.length);\n this._offset += buf.length;\n};\n\n\nWriter.prototype.writeStringArray = function (strings) {\n if ((!strings instanceof Array))\n throw new TypeError('argument must be an Array[String]');\n\n var self = this;\n strings.forEach(function (s) {\n self.writeString(s);\n });\n};\n\n// This is really to solve DER cases, but whatever for now\nWriter.prototype.writeOID = function (s, tag) {\n if (typeof (s) !== 'string')\n throw new TypeError('argument must be a string');\n if (typeof (tag) !== 'number')\n tag = ASN1.OID;\n\n if (!/^([0-9]+\\.){3,}[0-9]+$/.test(s))\n throw new Error('argument is not a valid OID string');\n\n function encodeOctet(bytes, octet) {\n if (octet < 128) {\n bytes.push(octet);\n } else if (octet < 16384) {\n bytes.push((octet >>> 7) | 0x80);\n bytes.push(octet & 0x7F);\n } else if (octet < 2097152) {\n bytes.push((octet >>> 14) | 0x80);\n bytes.push(((octet >>> 7) | 0x80) & 0xFF);\n bytes.push(octet & 0x7F);\n } else if (octet < 268435456) {\n bytes.push((octet >>> 21) | 0x80);\n bytes.push(((octet >>> 14) | 0x80) & 0xFF);\n bytes.push(((octet >>> 7) | 0x80) & 0xFF);\n bytes.push(octet & 0x7F);\n } else {\n bytes.push(((octet >>> 28) | 0x80) & 0xFF);\n bytes.push(((octet >>> 21) | 0x80) & 0xFF);\n bytes.push(((octet >>> 14) | 0x80) & 0xFF);\n bytes.push(((octet >>> 7) | 0x80) & 0xFF);\n bytes.push(octet & 0x7F);\n }\n }\n\n var tmp = s.split('.');\n var bytes = [];\n bytes.push(parseInt(tmp[0], 10) * 40 + parseInt(tmp[1], 10));\n tmp.slice(2).forEach(function (b) {\n encodeOctet(bytes, parseInt(b, 10));\n });\n\n var self = this;\n this._ensure(2 + bytes.length);\n this.writeByte(tag);\n this.writeLength(bytes.length);\n bytes.forEach(function (b) {\n self.writeByte(b);\n });\n};\n\n\nWriter.prototype.writeLength = function (len) {\n if (typeof (len) !== 'number')\n throw new TypeError('argument must be a Number');\n\n this._ensure(4);\n\n if (len <= 0x7f) {\n this._buf[this._offset++] = len;\n } else if (len <= 0xff) {\n this._buf[this._offset++] = 0x81;\n this._buf[this._offset++] = len;\n } else if (len <= 0xffff) {\n this._buf[this._offset++] = 0x82;\n this._buf[this._offset++] = len >> 8;\n this._buf[this._offset++] = len;\n } else if (len <= 0xffffff) {\n this._buf[this._offset++] = 0x83;\n this._buf[this._offset++] = len >> 16;\n this._buf[this._offset++] = len >> 8;\n this._buf[this._offset++] = len;\n } else {\n throw newInvalidAsn1Error('Length too long (> 4 bytes)');\n }\n};\n\nWriter.prototype.startSequence = function (tag) {\n if (typeof (tag) !== 'number')\n tag = ASN1.Sequence | ASN1.Constructor;\n\n this.writeByte(tag);\n this._seq.push(this._offset);\n this._ensure(3);\n this._offset += 3;\n};\n\n\nWriter.prototype.endSequence = function () {\n var seq = this._seq.pop();\n var start = seq + 3;\n var len = this._offset - start;\n\n if (len <= 0x7f) {\n this._shift(start, len, -2);\n this._buf[seq] = len;\n } else if (len <= 0xff) {\n this._shift(start, len, -1);\n this._buf[seq] = 0x81;\n this._buf[seq + 1] = len;\n } else if (len <= 0xffff) {\n this._buf[seq] = 0x82;\n this._buf[seq + 1] = len >> 8;\n this._buf[seq + 2] = len;\n } else if (len <= 0xffffff) {\n this._shift(start, len, 1);\n this._buf[seq] = 0x83;\n this._buf[seq + 1] = len >> 16;\n this._buf[seq + 2] = len >> 8;\n this._buf[seq + 3] = len;\n } else {\n throw newInvalidAsn1Error('Sequence too long');\n }\n};\n\n\nWriter.prototype._shift = function (start, len, shift) {\n assert.ok(start !== undefined);\n assert.ok(len !== undefined);\n assert.ok(shift);\n\n this._buf.copy(this._buf, start + shift, start, start + len);\n this._offset += shift;\n};\n\nWriter.prototype._ensure = function (len) {\n assert.ok(len);\n\n if (this._size - this._offset < len) {\n var sz = this._size * this._options.growthFactor;\n if (sz - this._offset < len)\n sz += len;\n\n var buf = Buffer.alloc(sz);\n\n this._buf.copy(buf, 0, 0, this._offset);\n this._buf = buf;\n this._size = sz;\n }\n};\n\n\n\n// --- Exported API\n\nmodule.exports = Writer;\n","// Copyright 2011 Mark Cavage All rights reserved.\n\n// If you have no idea what ASN.1 or BER is, see this:\n// ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc\n\nvar Ber = require('./ber/index');\n\n\n\n// --- Exported API\n\nmodule.exports = {\n\n Ber: Ber,\n\n BerReader: Ber.Reader,\n\n BerWriter: Ber.Writer\n\n};\n","// Copyright (c) 2012, Mark Cavage. All rights reserved.\n// Copyright 2015 Joyent, Inc.\n\nvar assert = require('assert');\nvar Stream = require('stream').Stream;\nvar util = require('util');\n\n\n///--- Globals\n\n/* JSSTYLED */\nvar UUID_REGEXP = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;\n\n\n///--- Internal\n\nfunction _capitalize(str) {\n return (str.charAt(0).toUpperCase() + str.slice(1));\n}\n\nfunction _toss(name, expected, oper, arg, actual) {\n throw new assert.AssertionError({\n message: util.format('%s (%s) is required', name, expected),\n actual: (actual === undefined) ? typeof (arg) : actual(arg),\n expected: expected,\n operator: oper || '===',\n stackStartFunction: _toss.caller\n });\n}\n\nfunction _getClass(arg) {\n return (Object.prototype.toString.call(arg).slice(8, -1));\n}\n\nfunction noop() {\n // Why even bother with asserts?\n}\n\n\n///--- Exports\n\nvar types = {\n bool: {\n check: function (arg) { return typeof (arg) === 'boolean'; }\n },\n func: {\n check: function (arg) { return typeof (arg) === 'function'; }\n },\n string: {\n check: function (arg) { return typeof (arg) === 'string'; }\n },\n object: {\n check: function (arg) {\n return typeof (arg) === 'object' && arg !== null;\n }\n },\n number: {\n check: function (arg) {\n return typeof (arg) === 'number' && !isNaN(arg);\n }\n },\n finite: {\n check: function (arg) {\n return typeof (arg) === 'number' && !isNaN(arg) && isFinite(arg);\n }\n },\n buffer: {\n check: function (arg) { return Buffer.isBuffer(arg); },\n operator: 'Buffer.isBuffer'\n },\n array: {\n check: function (arg) { return Array.isArray(arg); },\n operator: 'Array.isArray'\n },\n stream: {\n check: function (arg) { return arg instanceof Stream; },\n operator: 'instanceof',\n actual: _getClass\n },\n date: {\n check: function (arg) { return arg instanceof Date; },\n operator: 'instanceof',\n actual: _getClass\n },\n regexp: {\n check: function (arg) { return arg instanceof RegExp; },\n operator: 'instanceof',\n actual: _getClass\n },\n uuid: {\n check: function (arg) {\n return typeof (arg) === 'string' && UUID_REGEXP.test(arg);\n },\n operator: 'isUUID'\n }\n};\n\nfunction _setExports(ndebug) {\n var keys = Object.keys(types);\n var out;\n\n /* re-export standard assert */\n if (process.env.NODE_NDEBUG) {\n out = noop;\n } else {\n out = function (arg, msg) {\n if (!arg) {\n _toss(msg, 'true', arg);\n }\n };\n }\n\n /* standard checks */\n keys.forEach(function (k) {\n if (ndebug) {\n out[k] = noop;\n return;\n }\n var type = types[k];\n out[k] = function (arg, msg) {\n if (!type.check(arg)) {\n _toss(msg, k, type.operator, arg, type.actual);\n }\n };\n });\n\n /* optional checks */\n keys.forEach(function (k) {\n var name = 'optional' + _capitalize(k);\n if (ndebug) {\n out[name] = noop;\n return;\n }\n var type = types[k];\n out[name] = function (arg, msg) {\n if (arg === undefined || arg === null) {\n return;\n }\n if (!type.check(arg)) {\n _toss(msg, k, type.operator, arg, type.actual);\n }\n };\n });\n\n /* arrayOf checks */\n keys.forEach(function (k) {\n var name = 'arrayOf' + _capitalize(k);\n if (ndebug) {\n out[name] = noop;\n return;\n }\n var type = types[k];\n var expected = '[' + k + ']';\n out[name] = function (arg, msg) {\n if (!Array.isArray(arg)) {\n _toss(msg, expected, type.operator, arg, type.actual);\n }\n var i;\n for (i = 0; i < arg.length; i++) {\n if (!type.check(arg[i])) {\n _toss(msg, expected, type.operator, arg, type.actual);\n }\n }\n };\n });\n\n /* optionalArrayOf checks */\n keys.forEach(function (k) {\n var name = 'optionalArrayOf' + _capitalize(k);\n if (ndebug) {\n out[name] = noop;\n return;\n }\n var type = types[k];\n var expected = '[' + k + ']';\n out[name] = function (arg, msg) {\n if (arg === undefined || arg === null) {\n return;\n }\n if (!Array.isArray(arg)) {\n _toss(msg, expected, type.operator, arg, type.actual);\n }\n var i;\n for (i = 0; i < arg.length; i++) {\n if (!type.check(arg[i])) {\n _toss(msg, expected, type.operator, arg, type.actual);\n }\n }\n };\n });\n\n /* re-export built-in assertions */\n Object.keys(assert).forEach(function (k) {\n if (k === 'AssertionError') {\n out[k] = assert[k];\n return;\n }\n if (ndebug) {\n out[k] = noop;\n return;\n }\n out[k] = assert[k];\n });\n\n /* export ourselves (for unit tests _only_) */\n out._setExports = _setExports;\n\n return out;\n}\n\nmodule.exports = _setExports(process.env.NODE_NDEBUG);\n","// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = require('./internal/errors'),\n _require$codes = _require.codes,\n ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\n\nvar AssertionError = require('./internal/assert/assertion_error');\n\nvar _require2 = require('util/'),\n inspect = _require2.inspect;\n\nvar _require$types = require('util/').types,\n isPromise = _require$types.isPromise,\n isRegExp = _require$types.isRegExp;\n\nvar objectAssign = Object.assign ? Object.assign : require('es6-object-assign').assign;\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\n\nfunction lazyLoadComparison() {\n var comparison = require('./internal/util/comparisons');\n\n isDeepEqual = comparison.isDeepEqual;\n isDeepStrictEqual = comparison.isDeepStrictEqual;\n} // Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\n\n\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = [\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", '\\\\b', '', '', \"\\\\u000b\", '\\\\f', '', \"\\\\u000e\", \"\\\\u000f\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001a\", \"\\\\u001b\", \"\\\\u001c\", \"\\\\u001d\", \"\\\\u001e\", \"\\\\u001f\"];\n\nvar escapeFn = function escapeFn(str) {\n return meta[str.charCodeAt(0)];\n};\n\nvar warned = false; // The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {}; // All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n if (obj.message instanceof Error) throw obj.message;\n throw new AssertionError(obj);\n}\n\nfunction fail(actual, expected, message, operator, stackStartFn) {\n var argsLen = arguments.length;\n var internalMessage;\n\n if (argsLen === 0) {\n internalMessage = 'Failed';\n } else if (argsLen === 1) {\n message = actual;\n actual = undefined;\n } else {\n if (warned === false) {\n warned = true;\n var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n }\n\n if (argsLen === 2) operator = '!=';\n }\n\n if (message instanceof Error) throw message;\n var errArgs = {\n actual: actual,\n expected: expected,\n operator: operator === undefined ? 'fail' : operator,\n stackStartFn: stackStartFn || fail\n };\n\n if (message !== undefined) {\n errArgs.message = message;\n }\n\n var err = new AssertionError(errArgs);\n\n if (internalMessage) {\n err.message = internalMessage;\n err.generatedMessage = true;\n }\n\n throw err;\n}\n\nassert.fail = fail; // The AssertionError is defined in internal/error.\n\nassert.AssertionError = AssertionError;\n\nfunction innerOk(fn, argLen, value, message) {\n if (!value) {\n var generatedMessage = false;\n\n if (argLen === 0) {\n generatedMessage = true;\n message = 'No value argument passed to `assert.ok()`';\n } else if (message instanceof Error) {\n throw message;\n }\n\n var err = new AssertionError({\n actual: value,\n expected: true,\n message: message,\n operator: '==',\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n} // Pure assertion tests whether a value is truthy, as determined\n// by !!value.\n\n\nfunction ok() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n innerOk.apply(void 0, [ok, args.length].concat(args));\n}\n\nassert.ok = ok; // The equality assertion tests shallow, coercive equality with ==.\n\n/* eslint-disable no-restricted-properties */\n\nassert.equal = function equal(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual != expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '==',\n stackStartFn: equal\n });\n }\n}; // The non-equality assertion tests for whether two objects are not\n// equal with !=.\n\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual == expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '!=',\n stackStartFn: notEqual\n });\n }\n}; // The equivalence assertion tests a deep equality relation.\n\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepEqual',\n stackStartFn: deepEqual\n });\n }\n}; // The non-equivalence assertion tests for any deep inequality.\n\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepEqual',\n stackStartFn: notDeepEqual\n });\n }\n};\n/* eslint-enable */\n\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepStrictEqual',\n stackStartFn: deepStrictEqual\n });\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\n\nfunction notDeepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepStrictEqual',\n stackStartFn: notDeepStrictEqual\n });\n }\n}\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (!objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'strictEqual',\n stackStartFn: strictEqual\n });\n }\n};\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notStrictEqual',\n stackStartFn: notStrictEqual\n });\n }\n};\n\nvar Comparison = function Comparison(obj, keys, actual) {\n var _this = this;\n\n _classCallCheck(this, Comparison);\n\n keys.forEach(function (key) {\n if (key in obj) {\n if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && obj[key].test(actual[key])) {\n _this[key] = actual[key];\n } else {\n _this[key] = obj[key];\n }\n }\n });\n};\n\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n if (!message) {\n // Create placeholder objects to create a nice output.\n var a = new Comparison(actual, keys);\n var b = new Comparison(expected, keys, actual);\n var err = new AssertionError({\n actual: a,\n expected: b,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.actual = actual;\n err.expected = expected;\n err.operator = fn.name;\n throw err;\n }\n\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: fn.name,\n stackStartFn: fn\n });\n }\n}\n\nfunction expectedException(actual, expected, msg, fn) {\n if (typeof expected !== 'function') {\n if (isRegExp(expected)) return expected.test(actual); // assert.doesNotThrow does not accept objects.\n\n if (arguments.length === 2) {\n throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n } // Handle primitives properly.\n\n\n if (_typeof(actual) !== 'object' || actual === null) {\n var err = new AssertionError({\n actual: actual,\n expected: expected,\n message: msg,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.operator = fn.name;\n throw err;\n }\n\n var keys = Object.keys(expected); // Special handle errors to make sure the name and the message are compared\n // as well.\n\n if (expected instanceof Error) {\n keys.push('name', 'message');\n } else if (keys.length === 0) {\n throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n keys.forEach(function (key) {\n if (typeof actual[key] === 'string' && isRegExp(expected[key]) && expected[key].test(actual[key])) {\n return;\n }\n\n compareExceptionKey(actual, expected, key, msg, keys, fn);\n });\n return true;\n } // Guard instanceof against arrow functions as they don't have a prototype.\n\n\n if (expected.prototype !== undefined && actual instanceof expected) {\n return true;\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction getActual(fn) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n }\n\n try {\n fn();\n } catch (e) {\n return e;\n }\n\n return NO_EXCEPTION_SENTINEL;\n}\n\nfunction checkIsPromise(obj) {\n // Accept native ES6 promises and promises that are implemented in a similar\n // way. Do not accept thenables that use a function as `obj` and that have no\n // `catch` handler.\n // TODO: thenables are checked up until they have the correct methods,\n // but according to documentation, the `then` method should receive\n // the `fulfill` and `reject` arguments as well or it may be never resolved.\n return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\n\nfunction waitForActual(promiseFn) {\n return Promise.resolve().then(function () {\n var resultPromise;\n\n if (typeof promiseFn === 'function') {\n // Return a rejected promise if `promiseFn` throws synchronously.\n resultPromise = promiseFn(); // Fail in case no promise is returned.\n\n if (!checkIsPromise(resultPromise)) {\n throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n }\n } else if (checkIsPromise(promiseFn)) {\n resultPromise = promiseFn;\n } else {\n throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n }\n\n return Promise.resolve().then(function () {\n return resultPromise;\n }).then(function () {\n return NO_EXCEPTION_SENTINEL;\n }).catch(function (e) {\n return e;\n });\n });\n}\n\nfunction expectsError(stackStartFn, actual, error, message) {\n if (typeof error === 'string') {\n if (arguments.length === 4) {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (_typeof(actual) === 'object' && actual !== null) {\n if (actual.message === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n }\n } else if (actual === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n }\n\n message = error;\n error = undefined;\n } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (actual === NO_EXCEPTION_SENTINEL) {\n var details = '';\n\n if (error && error.name) {\n details += \" (\".concat(error.name, \")\");\n }\n\n details += message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n innerFail({\n actual: undefined,\n expected: error,\n operator: stackStartFn.name,\n message: \"Missing expected \".concat(fnType).concat(details),\n stackStartFn: stackStartFn\n });\n }\n\n if (error && !expectedException(actual, error, message, stackStartFn)) {\n throw actual;\n }\n}\n\nfunction expectsNoError(stackStartFn, actual, error, message) {\n if (actual === NO_EXCEPTION_SENTINEL) return;\n\n if (typeof error === 'string') {\n message = error;\n error = undefined;\n }\n\n if (!error || expectedException(actual, error)) {\n var details = message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n innerFail({\n actual: actual,\n expected: error,\n operator: stackStartFn.name,\n message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n stackStartFn: stackStartFn\n });\n }\n\n throw actual;\n}\n\nassert.throws = function throws(promiseFn) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\n\nassert.rejects = function rejects(promiseFn) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return waitForActual(promiseFn).then(function (result) {\n return expectsError.apply(void 0, [rejects, result].concat(args));\n });\n};\n\nassert.doesNotThrow = function doesNotThrow(fn) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\n\nassert.doesNotReject = function doesNotReject(fn) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n\n return waitForActual(fn).then(function (result) {\n return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n });\n};\n\nassert.ifError = function ifError(err) {\n if (err !== null && err !== undefined) {\n var message = 'ifError got unwanted exception: ';\n\n if (_typeof(err) === 'object' && typeof err.message === 'string') {\n if (err.message.length === 0 && err.constructor) {\n message += err.constructor.name;\n } else {\n message += err.message;\n }\n } else {\n message += inspect(err);\n }\n\n var newErr = new AssertionError({\n actual: err,\n expected: null,\n operator: 'ifError',\n message: message,\n stackStartFn: ifError\n }); // Make sure we actually have a stack trace!\n\n var origStack = err.stack;\n\n if (typeof origStack === 'string') {\n // This will remove any duplicated frames from the error frames taken\n // from within `ifError` and add the original error frames to the newly\n // created ones.\n var tmp2 = origStack.split('\\n');\n tmp2.shift(); // Filter all frames existing in err.stack.\n\n var tmp1 = newErr.stack.split('\\n');\n\n for (var i = 0; i < tmp2.length; i++) {\n // Find the first occurrence of the frame.\n var pos = tmp1.indexOf(tmp2[i]);\n\n if (pos !== -1) {\n // Only keep new frames.\n tmp1 = tmp1.slice(0, pos);\n break;\n }\n }\n\n newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n }\n\n throw newErr;\n }\n}; // Expose a strict only variant of assert\n\n\nfunction strict() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n innerOk.apply(void 0, [strict, args.length].concat(args));\n}\n\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;","// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar _require = require('util/'),\n inspect = _require.inspect;\n\nvar _require2 = require('../errors'),\n ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\n\n\nfunction repeat(str, count) {\n count = Math.floor(count);\n if (str.length == 0 || count == 0) return '';\n var maxCount = str.length * count;\n count = Math.floor(Math.log(count) / Math.log(2));\n\n while (count) {\n str += str;\n count--;\n }\n\n str += str.substring(0, maxCount - str.length);\n return str;\n}\n\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n deepStrictEqual: 'Expected values to be strictly deep-equal:',\n strictEqual: 'Expected values to be strictly equal:',\n strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n deepEqual: 'Expected values to be loosely deep-equal:',\n equal: 'Expected values to be loosely equal:',\n notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n notEqual: 'Expected \"actual\" to be loosely unequal to:',\n notIdentical: 'Values identical but not reference-equal:'\n}; // Comparing short primitives should just show === / !== instead of using the\n// diff.\n\nvar kMaxShortLength = 10;\n\nfunction copyError(source) {\n var keys = Object.keys(source);\n var target = Object.create(Object.getPrototypeOf(source));\n keys.forEach(function (key) {\n target[key] = source[key];\n });\n Object.defineProperty(target, 'message', {\n value: source.message\n });\n return target;\n}\n\nfunction inspectValue(val) {\n // The util.inspect default values could be changed. This makes sure the\n // error messages contain the necessary information nevertheless.\n return inspect(val, {\n compact: false,\n customInspect: false,\n depth: 1000,\n maxArrayLength: Infinity,\n // Assert compares only enumerable properties (with a few exceptions).\n showHidden: false,\n // Having a long line as error is better than wrapping the line for\n // comparison for now.\n // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n // have meta information about the inspected properties (i.e., know where\n // in what line the property starts and ends).\n breakLength: Infinity,\n // Assert does not detect proxies currently.\n showProxy: false,\n sorted: true,\n // Inspect getters as we also check them when comparing entries.\n getters: true\n });\n}\n\nfunction createErrDiff(actual, expected, operator) {\n var other = '';\n var res = '';\n var lastPos = 0;\n var end = '';\n var skipped = false;\n var actualInspected = inspectValue(actual);\n var actualLines = actualInspected.split('\\n');\n var expectedLines = inspectValue(expected).split('\\n');\n var i = 0;\n var indicator = ''; // In case both values are objects explicitly mark them as not reference equal\n // for the `strictEqual` operator.\n\n if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n operator = 'strictEqualObject';\n } // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n // equal, check further special handling.\n\n\n if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n var inputLength = actualLines[0].length + expectedLines[0].length; // If the character length of \"actual\" and \"expected\" together is less than\n // kMaxShortLength and if neither is an object and at least one of them is\n // not `zero`, use the strict equal comparison to visualize the output.\n\n if (inputLength <= kMaxShortLength) {\n if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n // -0 === +0\n return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n }\n } else if (operator !== 'strictEqualObject') {\n // If the stderr is a tty and the input length is lower than the current\n // columns per line, add a mismatch indicator below the output. If it is\n // not a tty, use a default value of 80 characters.\n var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n\n if (inputLength < maxLength) {\n while (actualLines[0][i] === expectedLines[0][i]) {\n i++;\n } // Ignore the first characters.\n\n\n if (i > 2) {\n // Add position indicator for the first mismatch in case it is a\n // single line and the input length is less than the column length.\n indicator = \"\\n \".concat(repeat(' ', i), \"^\");\n i = 0;\n }\n }\n }\n } // Remove all ending lines that match (this optimizes the output for\n // readability by reducing the number of total changed lines).\n\n\n var a = actualLines[actualLines.length - 1];\n var b = expectedLines[expectedLines.length - 1];\n\n while (a === b) {\n if (i++ < 2) {\n end = \"\\n \".concat(a).concat(end);\n } else {\n other = a;\n }\n\n actualLines.pop();\n expectedLines.pop();\n if (actualLines.length === 0 || expectedLines.length === 0) break;\n a = actualLines[actualLines.length - 1];\n b = expectedLines[expectedLines.length - 1];\n }\n\n var maxLines = Math.max(actualLines.length, expectedLines.length); // Strict equal with identical objects that are not identical by reference.\n // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n\n if (maxLines === 0) {\n // We have to get the result again. The lines were all removed before.\n var _actualLines = actualInspected.split('\\n'); // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (_actualLines.length > 30) {\n _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (_actualLines.length > 27) {\n _actualLines.pop();\n }\n }\n\n return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n }\n\n if (i > 3) {\n end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n skipped = true;\n }\n\n if (other !== '') {\n end = \"\\n \".concat(other).concat(end);\n other = '';\n }\n\n var printedLines = 0;\n var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n\n for (i = 0; i < maxLines; i++) {\n // Only extra expected lines exist\n var cur = i - lastPos;\n\n if (actualLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(expectedLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(expectedLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the expected line to the cache.\n\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n printedLines++; // Only extra actual lines exist\n } else if (expectedLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n printedLines++; // Lines diverge\n } else {\n var expectedLine = expectedLines[i];\n var actualLine = actualLines[i]; // If the lines diverge, specifically check for lines that only diverge by\n // a trailing comma. In that case it is actually identical and we should\n // mark it as such.\n\n var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine); // If the expected line has a trailing comma but is otherwise identical,\n // add a comma at the end of the actual line. Otherwise the output could\n // look weird as in:\n //\n // [\n // 1 // No comma at the end!\n // + 2\n // ]\n //\n\n if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n divergingLines = false;\n actualLine += ',';\n }\n\n if (divergingLines) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result and cache the expected diverging\n // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n printedLines += 2; // Lines are identical\n } else {\n // Add all cached information to the result before adding other things\n // and reset the cache.\n res += other;\n other = ''; // If the last diverging line is exactly one line above or if it is the\n // very first line, add the line to the result.\n\n if (cur === 1 || i === 0) {\n res += \"\\n \".concat(actualLine);\n printedLines++;\n }\n }\n } // Inspected object to big (Show ~20 rows max)\n\n\n if (printedLines > 20 && i < maxLines - 2) {\n return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n }\n }\n\n return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\n\nvar AssertionError =\n/*#__PURE__*/\nfunction (_Error) {\n _inherits(AssertionError, _Error);\n\n function AssertionError(options) {\n var _this;\n\n _classCallCheck(this, AssertionError);\n\n if (_typeof(options) !== 'object' || options === null) {\n throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n }\n\n var message = options.message,\n operator = options.operator,\n stackStartFn = options.stackStartFn;\n var actual = options.actual,\n expected = options.expected;\n var limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 0;\n\n if (message != null) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, String(message)));\n } else {\n if (process.stderr && process.stderr.isTTY) {\n // Reset on each call to make sure we handle dynamically set environment\n // variables correct.\n if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n blue = \"\\x1B[34m\";\n green = \"\\x1B[32m\";\n white = \"\\x1B[39m\";\n red = \"\\x1B[31m\";\n } else {\n blue = '';\n green = '';\n white = '';\n red = '';\n }\n } // Prevent the error stack from being visible by duplicating the error\n // in a very close way to the original in case both sides are actually\n // instances of Error.\n\n\n if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n actual = copyError(actual);\n expected = copyError(expected);\n }\n\n if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, createErrDiff(actual, expected, operator)));\n } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n // In case the objects are equal but the operator requires unequal, show\n // the first object and say A equals B\n var base = kReadableOperator[operator];\n var res = inspectValue(actual).split('\\n'); // In case \"actual\" is an object, it should not be reference equal.\n\n if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n base = kReadableOperator.notStrictEqualObject;\n } // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (res.length > 30) {\n res[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (res.length > 27) {\n res.pop();\n }\n } // Only print a single input.\n\n\n if (res.length === 1) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \" \").concat(res[0])));\n } else {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\")));\n }\n } else {\n var _res = inspectValue(actual);\n\n var other = '';\n var knownOperators = kReadableOperator[operator];\n\n if (operator === 'notDeepEqual' || operator === 'notEqual') {\n _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n\n if (_res.length > 1024) {\n _res = \"\".concat(_res.slice(0, 1021), \"...\");\n }\n } else {\n other = \"\".concat(inspectValue(expected));\n\n if (_res.length > 512) {\n _res = \"\".concat(_res.slice(0, 509), \"...\");\n }\n\n if (other.length > 512) {\n other = \"\".concat(other.slice(0, 509), \"...\");\n }\n\n if (operator === 'deepEqual' || operator === 'equal') {\n _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n } else {\n other = \" \".concat(operator, \" \").concat(other);\n }\n }\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(_res).concat(other)));\n }\n }\n\n Error.stackTraceLimit = limit;\n _this.generatedMessage = !message;\n Object.defineProperty(_assertThisInitialized(_this), 'name', {\n value: 'AssertionError [ERR_ASSERTION]',\n enumerable: false,\n writable: true,\n configurable: true\n });\n _this.code = 'ERR_ASSERTION';\n _this.actual = actual;\n _this.expected = expected;\n _this.operator = operator;\n\n if (Error.captureStackTrace) {\n // eslint-disable-next-line no-restricted-syntax\n Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n } // Create error message including the error code in the name.\n\n\n _this.stack; // Reset the name.\n\n _this.name = 'AssertionError';\n return _possibleConstructorReturn(_this);\n }\n\n _createClass(AssertionError, [{\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n }\n }, {\n key: inspect.custom,\n value: function value(recurseTimes, ctx) {\n // This limits the `actual` and `expected` property default inspection to\n // the minimum depth. Otherwise those values would be too verbose compared\n // to the actual error message which contains a combined view of these two\n // input values.\n return inspect(this, _objectSpread({}, ctx, {\n customInspect: false,\n depth: 0\n }));\n }\n }]);\n\n return AssertionError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = AssertionError;","// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n\n/* eslint node-core/alphabetize-errors: \"error\" */\n\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n'use strict'; // The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar codes = {}; // Lazy loaded\n\nvar assert;\nvar util;\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inherits(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n var _this;\n\n _classCallCheck(this, NodeError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NodeError).call(this, getMessage(arg1, arg2, arg3)));\n _this.code = code;\n return _this;\n }\n\n return NodeError;\n }(Base);\n\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n if (assert === undefined) assert = require('../assert');\n assert(typeof name === 'string', \"'name' must be a string\"); // determiner: 'must be' or 'must not be'\n\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } // TODO(BridgeAR): Improve the output by showing `null` and similar.\n\n\n msg += \". Received type \".concat(_typeof(actual));\n return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n if (util === undefined) util = require('util/');\n var inspected = util.inspect(value);\n\n if (inspected.length > 128) {\n inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n }\n\n return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n var type;\n\n if (value && value.constructor && value.constructor.name) {\n type = \"instance of \".concat(value.constructor.name);\n } else {\n type = \"type \".concat(_typeof(value));\n }\n\n return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (assert === undefined) assert = require('../assert');\n assert(args.length > 0, 'At least one arg needs to be specified');\n var msg = 'The ';\n var len = args.length;\n args = args.map(function (a) {\n return \"\\\"\".concat(a, \"\\\"\");\n });\n\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n\n default:\n msg += args.slice(0, len - 1).join(', ');\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n\n return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;","// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar regexFlagsSupported = /a/g.flags !== undefined;\n\nvar arrayFromSet = function arrayFromSet(set) {\n var array = [];\n set.forEach(function (value) {\n return array.push(value);\n });\n return array;\n};\n\nvar arrayFromMap = function arrayFromMap(map) {\n var array = [];\n map.forEach(function (value, key) {\n return array.push([key, value]);\n });\n return array;\n};\n\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : require('is-nan');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\n\nvar _require$types = require('util/').types,\n isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n isArrayBufferView = _require$types.isArrayBufferView,\n isDate = _require$types.isDate,\n isMap = _require$types.isMap,\n isRegExp = _require$types.isRegExp,\n isSet = _require$types.isSet,\n isNativeError = _require$types.isNativeError,\n isBoxedPrimitive = _require$types.isBoxedPrimitive,\n isNumberObject = _require$types.isNumberObject,\n isStringObject = _require$types.isStringObject,\n isBooleanObject = _require$types.isBooleanObject,\n isBigIntObject = _require$types.isBigIntObject,\n isSymbolObject = _require$types.isSymbolObject,\n isFloat32Array = _require$types.isFloat32Array,\n isFloat64Array = _require$types.isFloat64Array;\n\nfunction isNonIndex(key) {\n if (key.length === 0 || key.length > 10) return true;\n\n for (var i = 0; i < key.length; i++) {\n var code = key.charCodeAt(i);\n if (code < 48 || code > 57) return true;\n } // The maximum size for an array is 2 ** 32 -1.\n\n\n return key.length === 10 && key >= Math.pow(2, 32);\n}\n\nfunction getOwnNonIndexProperties(value) {\n return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n} // Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n\n if (y < x) {\n return 1;\n }\n\n return 0;\n}\n\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3; // Check if they have the same source and flags\n\nfunction areSimilarRegExps(a, b) {\n return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\n\nfunction areSimilarFloatArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n for (var offset = 0; offset < a.byteLength; offset++) {\n if (a[offset] !== b[offset]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction areSimilarTypedArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\n\nfunction areEqualArrayBuffers(buf1, buf2) {\n return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\n\nfunction isEqualBoxedPrimitive(val1, val2) {\n if (isNumberObject(val1)) {\n return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n }\n\n if (isStringObject(val1)) {\n return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n }\n\n if (isBooleanObject(val1)) {\n return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n }\n\n if (isBigIntObject(val1)) {\n return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n }\n\n return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n} // Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n // All identical values are equivalent, as determined by ===.\n if (val1 === val2) {\n if (val1 !== 0) return true;\n return strict ? objectIs(val1, val2) : true;\n } // Check more closely if val1 and val2 are equal.\n\n\n if (strict) {\n if (_typeof(val1) !== 'object') {\n return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n }\n\n if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n return false;\n }\n\n if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n return false;\n }\n } else {\n if (val1 === null || _typeof(val1) !== 'object') {\n if (val2 === null || _typeof(val2) !== 'object') {\n // eslint-disable-next-line eqeqeq\n return val1 == val2;\n }\n\n return false;\n }\n\n if (val2 === null || _typeof(val2) !== 'object') {\n return false;\n }\n }\n\n var val1Tag = objectToString(val1);\n var val2Tag = objectToString(val2);\n\n if (val1Tag !== val2Tag) {\n return false;\n }\n\n if (Array.isArray(val1)) {\n // Check for sparse arrays and general fast path\n if (val1.length !== val2.length) {\n return false;\n }\n\n var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n } // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n // wan't to early return out of the rest of the checks. However we can check\n // if the second value is one of these values and the first isn't.\n\n\n if (val1Tag === '[object Object]') {\n // return keyCheck(val1, val2, strict, memos, kNoIterator);\n if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n return false;\n }\n }\n\n if (isDate(val1)) {\n if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n return false;\n }\n } else if (isRegExp(val1)) {\n if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n return false;\n }\n } else if (isNativeError(val1) || val1 instanceof Error) {\n // Do not compare the stack as it might differ even though the error itself\n // is otherwise identical.\n if (val1.message !== val2.message || val1.name !== val2.name) {\n return false;\n }\n } else if (isArrayBufferView(val1)) {\n if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n if (!areSimilarFloatArrays(val1, val2)) {\n return false;\n }\n } else if (!areSimilarTypedArrays(val1, val2)) {\n return false;\n } // Buffer.compare returns true, so val1.length === val2.length. If they both\n // only contain numeric keys, we don't need to exam further than checking\n // the symbols.\n\n\n var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n\n var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (_keys.length !== _keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n } else if (isSet(val1)) {\n if (!isSet(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsSet);\n } else if (isMap(val1)) {\n if (!isMap(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsMap);\n } else if (isAnyArrayBuffer(val1)) {\n if (!areEqualArrayBuffers(val1, val2)) {\n return false;\n }\n } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\n\nfunction getEnumerables(val, keys) {\n return keys.filter(function (k) {\n return propertyIsEnumerable(val, k);\n });\n}\n\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n // For all remaining Object pairs, including Array, objects and Maps,\n // equivalence is determined by having:\n // a) The same number of owned enumerable properties\n // b) The same set of keys/indexes (although not necessarily the same order)\n // c) Equivalent values for every corresponding key/index\n // d) For Sets and Maps, equal contents\n // Note: this accounts for both named and indexed properties on Arrays.\n if (arguments.length === 5) {\n aKeys = Object.keys(val1);\n var bKeys = Object.keys(val2); // The pair must have the same number of owned properties.\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n } // Cheap key test\n\n\n var i = 0;\n\n for (; i < aKeys.length; i++) {\n if (!hasOwnProperty(val2, aKeys[i])) {\n return false;\n }\n }\n\n if (strict && arguments.length === 5) {\n var symbolKeysA = objectGetOwnPropertySymbols(val1);\n\n if (symbolKeysA.length !== 0) {\n var count = 0;\n\n for (i = 0; i < symbolKeysA.length; i++) {\n var key = symbolKeysA[i];\n\n if (propertyIsEnumerable(val1, key)) {\n if (!propertyIsEnumerable(val2, key)) {\n return false;\n }\n\n aKeys.push(key);\n count++;\n } else if (propertyIsEnumerable(val2, key)) {\n return false;\n }\n }\n\n var symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n return false;\n }\n } else {\n var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n return false;\n }\n }\n }\n\n if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n return true;\n } // Use memos to handle cycles.\n\n\n if (memos === undefined) {\n memos = {\n val1: new Map(),\n val2: new Map(),\n position: 0\n };\n } else {\n // We prevent up to two map.has(x) calls by directly retrieving the value\n // and checking for undefined. The map can only contain numbers, so it is\n // safe to check for undefined only.\n var val2MemoA = memos.val1.get(val1);\n\n if (val2MemoA !== undefined) {\n var val2MemoB = memos.val2.get(val2);\n\n if (val2MemoB !== undefined) {\n return val2MemoA === val2MemoB;\n }\n }\n\n memos.position++;\n }\n\n memos.val1.set(val1, memos.position);\n memos.val2.set(val2, memos.position);\n var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n memos.val1.delete(val1);\n memos.val2.delete(val2);\n return areEq;\n}\n\nfunction setHasEqualElement(set, val1, strict, memo) {\n // Go looking.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var val2 = setValues[i];\n\n if (innerDeepEqual(val1, val2, strict, memo)) {\n // Remove the matching element to make sure we do not check that again.\n set.delete(val2);\n return true;\n }\n }\n\n return false;\n} // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\n\n\nfunction findLooseMatchingPrimitives(prim) {\n switch (_typeof(prim)) {\n case 'undefined':\n return null;\n\n case 'object':\n // Only pass in null as object!\n return undefined;\n\n case 'symbol':\n return false;\n\n case 'string':\n prim = +prim;\n // Loose equal entries exist only if the string is possible to convert to\n // a regular number and not NaN.\n // Fall through\n\n case 'number':\n if (numberIsNaN(prim)) {\n return false;\n }\n\n }\n\n return true;\n}\n\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) return altValue;\n return b.has(altValue) && !a.has(altValue);\n}\n\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n var altValue = findLooseMatchingPrimitives(prim);\n\n if (altValue != null) {\n return altValue;\n }\n\n var curB = b.get(altValue);\n\n if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n return false;\n }\n\n return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\n\nfunction setEquiv(a, b, strict, memo) {\n // This is a lazily initiated Set of entries which have to be compared\n // pairwise.\n var set = null;\n var aValues = arrayFromSet(a);\n\n for (var i = 0; i < aValues.length; i++) {\n var val = aValues[i]; // Note: Checking for the objects first improves the performance for object\n // heavy sets but it is a minor slow down for primitives. As they are fast\n // to check this improves the worst case scenario instead.\n\n if (_typeof(val) === 'object' && val !== null) {\n if (set === null) {\n set = new Set();\n } // If the specified value doesn't exist in the second set its an not null\n // object (or non strict only: a not matching primitive) we'll need to go\n // hunting for something thats deep-(strict-)equal to it. To make this\n // O(n log n) complexity we have to copy these values in a new set first.\n\n\n set.add(val);\n } else if (!b.has(val)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null values.\n\n if (!setMightHaveLoosePrim(a, b, val)) {\n return false;\n }\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(val);\n }\n }\n\n if (set !== null) {\n var bValues = arrayFromSet(b);\n\n for (var _i = 0; _i < bValues.length; _i++) {\n var _val = bValues[_i]; // We have to check if a primitive value is already\n // matching and only if it's not, go hunting for it.\n\n if (_typeof(_val) === 'object' && _val !== null) {\n if (!setHasEqualElement(set, _val, strict, memo)) return false;\n } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n // To be able to handle cases like:\n // Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n // ... we need to consider *all* matching keys, not just the first we find.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var key2 = setValues[i];\n\n if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n set.delete(key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction mapEquiv(a, b, strict, memo) {\n var set = null;\n var aEntries = arrayFromMap(a);\n\n for (var i = 0; i < aEntries.length; i++) {\n var _aEntries$i = _slicedToArray(aEntries[i], 2),\n key = _aEntries$i[0],\n item1 = _aEntries$i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n } else {\n // By directly retrieving the value we prevent another b.has(key) check in\n // almost all possible cases.\n var item2 = b.get(key);\n\n if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null\n // keys.\n\n if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n }\n }\n }\n\n if (set !== null) {\n var bEntries = arrayFromMap(b);\n\n for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n key = _bEntries$_i[0],\n item = _bEntries$_i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (!mapHasEqualEntry(set, a, key, item, strict, memo)) return false;\n } else if (!strict && (!a.has(key) || !innerDeepEqual(a.get(key), item, false, memo)) && !mapHasEqualEntry(set, a, key, item, false, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n // Sets and maps don't have their entries accessible via normal object\n // properties.\n var i = 0;\n\n if (iterationType === kIsSet) {\n if (!setEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsMap) {\n if (!mapEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsArray) {\n for (; i < a.length; i++) {\n if (hasOwnProperty(a, i)) {\n if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n return false;\n }\n } else if (hasOwnProperty(b, i)) {\n return false;\n } else {\n // Array is sparse.\n var keysA = Object.keys(a);\n\n for (; i < keysA.length; i++) {\n var key = keysA[i];\n\n if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n return false;\n }\n }\n\n if (keysA.length !== Object.keys(b).length) {\n return false;\n }\n\n return true;\n }\n }\n } // The pair must have equivalent values for every corresponding key.\n // Possibly expensive deep test:\n\n\n for (i = 0; i < keys.length; i++) {\n var _key = keys[i];\n\n if (!innerDeepEqual(a[_key], b[_key], strict, memos)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kLoose);\n}\n\nfunction isDeepStrictEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kStrict);\n}\n\nmodule.exports = {\n isDeepEqual: isDeepEqual,\n isDeepStrictEqual: isDeepStrictEqual\n};","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.async = global.async || {})));\n}(this, (function (exports) { 'use strict';\n\nfunction slice(arrayLike, start) {\n start = start|0;\n var newLen = Math.max(arrayLike.length - start, 0);\n var newArr = Array(newLen);\n for(var idx = 0; idx < newLen; idx++) {\n newArr[idx] = arrayLike[start + idx];\n }\n return newArr;\n}\n\n/**\n * Creates a continuation function with some arguments already applied.\n *\n * Useful as a shorthand when combined with other control flow functions. Any\n * arguments passed to the returned function are added to the arguments\n * originally passed to apply.\n *\n * @name apply\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {Function} fn - The function you want to eventually apply all\n * arguments to. Invokes with (arguments...).\n * @param {...*} arguments... - Any number of arguments to automatically apply\n * when the continuation is called.\n * @returns {Function} the partially-applied function\n * @example\n *\n * // using apply\n * async.parallel([\n * async.apply(fs.writeFile, 'testfile1', 'test1'),\n * async.apply(fs.writeFile, 'testfile2', 'test2')\n * ]);\n *\n *\n * // the same process without using apply\n * async.parallel([\n * function(callback) {\n * fs.writeFile('testfile1', 'test1', callback);\n * },\n * function(callback) {\n * fs.writeFile('testfile2', 'test2', callback);\n * }\n * ]);\n *\n * // It's possible to pass any number of additional arguments when calling the\n * // continuation:\n *\n * node> var fn = async.apply(sys.puts, 'one');\n * node> fn('two', 'three');\n * one\n * two\n * three\n */\nvar apply = function(fn/*, ...args*/) {\n var args = slice(arguments, 1);\n return function(/*callArgs*/) {\n var callArgs = slice(arguments);\n return fn.apply(null, args.concat(callArgs));\n };\n};\n\nvar initialParams = function (fn) {\n return function (/*...args, callback*/) {\n var args = slice(arguments);\n var callback = args.pop();\n fn.call(this, args, callback);\n };\n};\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nvar hasSetImmediate = typeof setImmediate === 'function' && setImmediate;\nvar hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function';\n\nfunction fallback(fn) {\n setTimeout(fn, 0);\n}\n\nfunction wrap(defer) {\n return function (fn/*, ...args*/) {\n var args = slice(arguments, 1);\n defer(function () {\n fn.apply(null, args);\n });\n };\n}\n\nvar _defer;\n\nif (hasSetImmediate) {\n _defer = setImmediate;\n} else if (hasNextTick) {\n _defer = process.nextTick;\n} else {\n _defer = fallback;\n}\n\nvar setImmediate$1 = wrap(_defer);\n\n/**\n * Take a sync function and make it async, passing its return value to a\n * callback. This is useful for plugging sync functions into a waterfall,\n * series, or other async functions. Any arguments passed to the generated\n * function will be passed to the wrapped function (except for the final\n * callback argument). Errors thrown will be passed to the callback.\n *\n * If the function passed to `asyncify` returns a Promise, that promises's\n * resolved/rejected state will be used to call the callback, rather than simply\n * the synchronous return value.\n *\n * This also means you can asyncify ES2017 `async` functions.\n *\n * @name asyncify\n * @static\n * @memberOf module:Utils\n * @method\n * @alias wrapSync\n * @category Util\n * @param {Function} func - The synchronous function, or Promise-returning\n * function to convert to an {@link AsyncFunction}.\n * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be\n * invoked with `(args..., callback)`.\n * @example\n *\n * // passing a regular synchronous function\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(JSON.parse),\n * function (data, next) {\n * // data is the result of parsing the text.\n * // If there was a parsing error, it would have been caught.\n * }\n * ], callback);\n *\n * // passing a function returning a promise\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(function (contents) {\n * return db.model.create(contents);\n * }),\n * function (model, next) {\n * // `model` is the instantiated model object.\n * // If there was an error, this function would be skipped.\n * }\n * ], callback);\n *\n * // es2017 example, though `asyncify` is not needed if your JS environment\n * // supports async functions out of the box\n * var q = async.queue(async.asyncify(async function(file) {\n * var intermediateStep = await processFile(file);\n * return await somePromise(intermediateStep)\n * }));\n *\n * q.push(files);\n */\nfunction asyncify(func) {\n return initialParams(function (args, callback) {\n var result;\n try {\n result = func.apply(this, args);\n } catch (e) {\n return callback(e);\n }\n // if result is Promise object\n if (isObject(result) && typeof result.then === 'function') {\n result.then(function(value) {\n invokeCallback(callback, null, value);\n }, function(err) {\n invokeCallback(callback, err.message ? err : new Error(err));\n });\n } else {\n callback(null, result);\n }\n });\n}\n\nfunction invokeCallback(callback, error, value) {\n try {\n callback(error, value);\n } catch (e) {\n setImmediate$1(rethrow, e);\n }\n}\n\nfunction rethrow(error) {\n throw error;\n}\n\nvar supportsSymbol = typeof Symbol === 'function';\n\nfunction isAsync(fn) {\n return supportsSymbol && fn[Symbol.toStringTag] === 'AsyncFunction';\n}\n\nfunction wrapAsync(asyncFn) {\n return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn;\n}\n\nfunction applyEach$1(eachfn) {\n return function(fns/*, ...args*/) {\n var args = slice(arguments, 1);\n var go = initialParams(function(args, callback) {\n var that = this;\n return eachfn(fns, function (fn, cb) {\n wrapAsync(fn).apply(that, args.concat(cb));\n }, callback);\n });\n if (args.length) {\n return go.apply(this, args);\n }\n else {\n return go;\n }\n };\n}\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Built-in value references. */\nvar Symbol$1 = root.Symbol;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag$1),\n tag = value[symToStringTag$1];\n\n try {\n value[symToStringTag$1] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag$1] = tag;\n } else {\n delete value[symToStringTag$1];\n }\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString$1 = objectProto$1.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString$1.call(value);\n}\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]';\nvar undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol$1 ? Symbol$1.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]';\nvar funcTag = '[object Function]';\nvar genTag = '[object GeneratorFunction]';\nvar proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n// A temporary value used to identify if the loop should be broken.\n// See #1064, #1293\nvar breakLoop = {};\n\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nfunction once(fn) {\n return function () {\n if (fn === null) return;\n var callFn = fn;\n fn = null;\n callFn.apply(this, arguments);\n };\n}\n\nvar iteratorSymbol = typeof Symbol === 'function' && Symbol.iterator;\n\nvar getIterator = function (coll) {\n return iteratorSymbol && coll[iteratorSymbol] && coll[iteratorSymbol]();\n};\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/** Used for built-in method references. */\nvar objectProto$3 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$2 = objectProto$3.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto$3.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty$2.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER$1 : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/** `Object#toString` result references. */\nvar argsTag$1 = '[object Arguments]';\nvar arrayTag = '[object Array]';\nvar boolTag = '[object Boolean]';\nvar dateTag = '[object Date]';\nvar errorTag = '[object Error]';\nvar funcTag$1 = '[object Function]';\nvar mapTag = '[object Map]';\nvar numberTag = '[object Number]';\nvar objectTag = '[object Object]';\nvar regexpTag = '[object RegExp]';\nvar setTag = '[object Set]';\nvar stringTag = '[object String]';\nvar weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]';\nvar dataViewTag = '[object DataView]';\nvar float32Tag = '[object Float32Array]';\nvar float64Tag = '[object Float64Array]';\nvar int8Tag = '[object Int8Array]';\nvar int16Tag = '[object Int16Array]';\nvar int32Tag = '[object Int32Array]';\nvar uint8Tag = '[object Uint8Array]';\nvar uint8ClampedTag = '[object Uint8ClampedArray]';\nvar uint16Tag = '[object Uint16Array]';\nvar uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag$1] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag$1] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/** Detect free variable `exports`. */\nvar freeExports$1 = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule$1 = freeExports$1 && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports$1 && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule$1 && freeModule$1.require && freeModule$1.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/** Used for built-in method references. */\nvar objectProto$2 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto$2.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty$1.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto$5 = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$5;\n\n return value === proto;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/** Used for built-in method references. */\nvar objectProto$4 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$3 = objectProto$4.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty$3.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nfunction createArrayIterator(coll) {\n var i = -1;\n var len = coll.length;\n return function next() {\n return ++i < len ? {value: coll[i], key: i} : null;\n }\n}\n\nfunction createES2015Iterator(iterator) {\n var i = -1;\n return function next() {\n var item = iterator.next();\n if (item.done)\n return null;\n i++;\n return {value: item.value, key: i};\n }\n}\n\nfunction createObjectIterator(obj) {\n var okeys = keys(obj);\n var i = -1;\n var len = okeys.length;\n return function next() {\n var key = okeys[++i];\n if (key === '__proto__') {\n return next();\n }\n return i < len ? {value: obj[key], key: key} : null;\n };\n}\n\nfunction iterator(coll) {\n if (isArrayLike(coll)) {\n return createArrayIterator(coll);\n }\n\n var iterator = getIterator(coll);\n return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll);\n}\n\nfunction onlyOnce(fn) {\n return function() {\n if (fn === null) throw new Error(\"Callback was already called.\");\n var callFn = fn;\n fn = null;\n callFn.apply(this, arguments);\n };\n}\n\nfunction _eachOfLimit(limit) {\n return function (obj, iteratee, callback) {\n callback = once(callback || noop);\n if (limit <= 0 || !obj) {\n return callback(null);\n }\n var nextElem = iterator(obj);\n var done = false;\n var running = 0;\n var looping = false;\n\n function iterateeCallback(err, value) {\n running -= 1;\n if (err) {\n done = true;\n callback(err);\n }\n else if (value === breakLoop || (done && running <= 0)) {\n done = true;\n return callback(null);\n }\n else if (!looping) {\n replenish();\n }\n }\n\n function replenish () {\n looping = true;\n while (running < limit && !done) {\n var elem = nextElem();\n if (elem === null) {\n done = true;\n if (running <= 0) {\n callback(null);\n }\n return;\n }\n running += 1;\n iteratee(elem.value, elem.key, onlyOnce(iterateeCallback));\n }\n looping = false;\n }\n\n replenish();\n };\n}\n\n/**\n * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name eachOfLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.eachOf]{@link module:Collections.eachOf}\n * @alias forEachOfLimit\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each\n * item in `coll`. The `key` is the item's key, or index in the case of an\n * array.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n */\nfunction eachOfLimit(coll, limit, iteratee, callback) {\n _eachOfLimit(limit)(coll, wrapAsync(iteratee), callback);\n}\n\nfunction doLimit(fn, limit) {\n return function (iterable, iteratee, callback) {\n return fn(iterable, limit, iteratee, callback);\n };\n}\n\n// eachOf implementation optimized for array-likes\nfunction eachOfArrayLike(coll, iteratee, callback) {\n callback = once(callback || noop);\n var index = 0,\n completed = 0,\n length = coll.length;\n if (length === 0) {\n callback(null);\n }\n\n function iteratorCallback(err, value) {\n if (err) {\n callback(err);\n } else if ((++completed === length) || value === breakLoop) {\n callback(null);\n }\n }\n\n for (; index < length; index++) {\n iteratee(coll[index], index, onlyOnce(iteratorCallback));\n }\n}\n\n// a generic version of eachOf which can handle array, object, and iterator cases.\nvar eachOfGeneric = doLimit(eachOfLimit, Infinity);\n\n/**\n * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument\n * to the iteratee.\n *\n * @name eachOf\n * @static\n * @memberOf module:Collections\n * @method\n * @alias forEachOf\n * @category Collection\n * @see [async.each]{@link module:Collections.each}\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A function to apply to each\n * item in `coll`.\n * The `key` is the item's key, or index in the case of an array.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @example\n *\n * var obj = {dev: \"/dev.json\", test: \"/test.json\", prod: \"/prod.json\"};\n * var configs = {};\n *\n * async.forEachOf(obj, function (value, key, callback) {\n * fs.readFile(__dirname + value, \"utf8\", function (err, data) {\n * if (err) return callback(err);\n * try {\n * configs[key] = JSON.parse(data);\n * } catch (e) {\n * return callback(e);\n * }\n * callback();\n * });\n * }, function (err) {\n * if (err) console.error(err.message);\n * // configs is now a map of JSON data\n * doSomethingWith(configs);\n * });\n */\nvar eachOf = function(coll, iteratee, callback) {\n var eachOfImplementation = isArrayLike(coll) ? eachOfArrayLike : eachOfGeneric;\n eachOfImplementation(coll, wrapAsync(iteratee), callback);\n};\n\nfunction doParallel(fn) {\n return function (obj, iteratee, callback) {\n return fn(eachOf, obj, wrapAsync(iteratee), callback);\n };\n}\n\nfunction _asyncMap(eachfn, arr, iteratee, callback) {\n callback = callback || noop;\n arr = arr || [];\n var results = [];\n var counter = 0;\n var _iteratee = wrapAsync(iteratee);\n\n eachfn(arr, function (value, _, callback) {\n var index = counter++;\n _iteratee(value, function (err, v) {\n results[index] = v;\n callback(err);\n });\n }, function (err) {\n callback(err, results);\n });\n}\n\n/**\n * Produces a new collection of values by mapping each value in `coll` through\n * the `iteratee` function. The `iteratee` is called with an item from `coll`\n * and a callback for when it has finished processing. Each of these callback\n * takes 2 arguments: an `error`, and the transformed item from `coll`. If\n * `iteratee` passes an error to its callback, the main `callback` (for the\n * `map` function) is immediately called with the error.\n *\n * Note, that since this function applies the `iteratee` to each item in\n * parallel, there is no guarantee that the `iteratee` functions will complete\n * in order. However, the results array will be in the same order as the\n * original `coll`.\n *\n * If `map` is passed an Object, the results will be an Array. The results\n * will roughly be in the order of the original Objects' keys (but this can\n * vary across JavaScript engines).\n *\n * @name map\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with the transformed item.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Results is an Array of the\n * transformed items from the `coll`. Invoked with (err, results).\n * @example\n *\n * async.map(['file1','file2','file3'], fs.stat, function(err, results) {\n * // results is now an array of stats for each file\n * });\n */\nvar map = doParallel(_asyncMap);\n\n/**\n * Applies the provided arguments to each function in the array, calling\n * `callback` after all functions have completed. If you only provide the first\n * argument, `fns`, then it will return a function which lets you pass in the\n * arguments as if it were a single function call. If more arguments are\n * provided, `callback` is required while `args` is still optional.\n *\n * @name applyEach\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|Object} fns - A collection of {@link AsyncFunction}s\n * to all call with the same arguments\n * @param {...*} [args] - any number of separate arguments to pass to the\n * function.\n * @param {Function} [callback] - the final argument should be the callback,\n * called when all functions have completed processing.\n * @returns {Function} - If only the first argument, `fns`, is provided, it will\n * return a function which lets you pass in the arguments as if it were a single\n * function call. The signature is `(..args, callback)`. If invoked with any\n * arguments, `callback` is required.\n * @example\n *\n * async.applyEach([enableSearch, updateSchema], 'bucket', callback);\n *\n * // partial application example:\n * async.each(\n * buckets,\n * async.applyEach([enableSearch, updateSchema]),\n * callback\n * );\n */\nvar applyEach = applyEach$1(map);\n\nfunction doParallelLimit(fn) {\n return function (obj, limit, iteratee, callback) {\n return fn(_eachOfLimit(limit), obj, wrapAsync(iteratee), callback);\n };\n}\n\n/**\n * The same as [`map`]{@link module:Collections.map} but runs a maximum of `limit` async operations at a time.\n *\n * @name mapLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.map]{@link module:Collections.map}\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with the transformed item.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Results is an array of the\n * transformed items from the `coll`. Invoked with (err, results).\n */\nvar mapLimit = doParallelLimit(_asyncMap);\n\n/**\n * The same as [`map`]{@link module:Collections.map} but runs only a single async operation at a time.\n *\n * @name mapSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.map]{@link module:Collections.map}\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with the transformed item.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Results is an array of the\n * transformed items from the `coll`. Invoked with (err, results).\n */\nvar mapSeries = doLimit(mapLimit, 1);\n\n/**\n * The same as [`applyEach`]{@link module:ControlFlow.applyEach} but runs only a single async operation at a time.\n *\n * @name applyEachSeries\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.applyEach]{@link module:ControlFlow.applyEach}\n * @category Control Flow\n * @param {Array|Iterable|Object} fns - A collection of {@link AsyncFunction}s to all\n * call with the same arguments\n * @param {...*} [args] - any number of separate arguments to pass to the\n * function.\n * @param {Function} [callback] - the final argument should be the callback,\n * called when all functions have completed processing.\n * @returns {Function} - If only the first argument is provided, it will return\n * a function which lets you pass in the arguments as if it were a single\n * function call.\n */\nvar applyEachSeries = applyEach$1(mapSeries);\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\n/**\n * Determines the best order for running the {@link AsyncFunction}s in `tasks`, based on\n * their requirements. Each function can optionally depend on other functions\n * being completed first, and each function is run as soon as its requirements\n * are satisfied.\n *\n * If any of the {@link AsyncFunction}s pass an error to their callback, the `auto` sequence\n * will stop. Further tasks will not execute (so any other functions depending\n * on it will not run), and the main `callback` is immediately called with the\n * error.\n *\n * {@link AsyncFunction}s also receive an object containing the results of functions which\n * have completed so far as the first argument, if they have dependencies. If a\n * task function has no dependencies, it will only be passed a callback.\n *\n * @name auto\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Object} tasks - An object. Each of its properties is either a\n * function or an array of requirements, with the {@link AsyncFunction} itself the last item\n * in the array. The object's key of a property serves as the name of the task\n * defined by that property, i.e. can be used when specifying requirements for\n * other tasks. The function receives one or two arguments:\n * * a `results` object, containing the results of the previously executed\n * functions, only passed if the task has any dependencies,\n * * a `callback(err, result)` function, which must be called when finished,\n * passing an `error` (which can be `null`) and the result of the function's\n * execution.\n * @param {number} [concurrency=Infinity] - An optional `integer` for\n * determining the maximum number of tasks that can be run in parallel. By\n * default, as many as possible.\n * @param {Function} [callback] - An optional callback which is called when all\n * the tasks have been completed. It receives the `err` argument if any `tasks`\n * pass an error to their callback. Results are always returned; however, if an\n * error occurs, no further `tasks` will be performed, and the results object\n * will only contain partial results. Invoked with (err, results).\n * @returns undefined\n * @example\n *\n * async.auto({\n * // this function will just be passed a callback\n * readData: async.apply(fs.readFile, 'data.txt', 'utf-8'),\n * showData: ['readData', function(results, cb) {\n * // results.readData is the file's contents\n * // ...\n * }]\n * }, callback);\n *\n * async.auto({\n * get_data: function(callback) {\n * console.log('in get_data');\n * // async code to get some data\n * callback(null, 'data', 'converted to array');\n * },\n * make_folder: function(callback) {\n * console.log('in make_folder');\n * // async code to create a directory to store a file in\n * // this is run at the same time as getting the data\n * callback(null, 'folder');\n * },\n * write_file: ['get_data', 'make_folder', function(results, callback) {\n * console.log('in write_file', JSON.stringify(results));\n * // once there is some data and the directory exists,\n * // write the data to a file in the directory\n * callback(null, 'filename');\n * }],\n * email_link: ['write_file', function(results, callback) {\n * console.log('in email_link', JSON.stringify(results));\n * // once the file is written let's email a link to it...\n * // results.write_file contains the filename returned by write_file.\n * callback(null, {'file':results.write_file, 'email':'user@example.com'});\n * }]\n * }, function(err, results) {\n * console.log('err = ', err);\n * console.log('results = ', results);\n * });\n */\nvar auto = function (tasks, concurrency, callback) {\n if (typeof concurrency === 'function') {\n // concurrency is optional, shift the args.\n callback = concurrency;\n concurrency = null;\n }\n callback = once(callback || noop);\n var keys$$1 = keys(tasks);\n var numTasks = keys$$1.length;\n if (!numTasks) {\n return callback(null);\n }\n if (!concurrency) {\n concurrency = numTasks;\n }\n\n var results = {};\n var runningTasks = 0;\n var hasError = false;\n\n var listeners = Object.create(null);\n\n var readyTasks = [];\n\n // for cycle detection:\n var readyToCheck = []; // tasks that have been identified as reachable\n // without the possibility of returning to an ancestor task\n var uncheckedDependencies = {};\n\n baseForOwn(tasks, function (task, key) {\n if (!isArray(task)) {\n // no dependencies\n enqueueTask(key, [task]);\n readyToCheck.push(key);\n return;\n }\n\n var dependencies = task.slice(0, task.length - 1);\n var remainingDependencies = dependencies.length;\n if (remainingDependencies === 0) {\n enqueueTask(key, task);\n readyToCheck.push(key);\n return;\n }\n uncheckedDependencies[key] = remainingDependencies;\n\n arrayEach(dependencies, function (dependencyName) {\n if (!tasks[dependencyName]) {\n throw new Error('async.auto task `' + key +\n '` has a non-existent dependency `' +\n dependencyName + '` in ' +\n dependencies.join(', '));\n }\n addListener(dependencyName, function () {\n remainingDependencies--;\n if (remainingDependencies === 0) {\n enqueueTask(key, task);\n }\n });\n });\n });\n\n checkForDeadlocks();\n processQueue();\n\n function enqueueTask(key, task) {\n readyTasks.push(function () {\n runTask(key, task);\n });\n }\n\n function processQueue() {\n if (readyTasks.length === 0 && runningTasks === 0) {\n return callback(null, results);\n }\n while(readyTasks.length && runningTasks < concurrency) {\n var run = readyTasks.shift();\n run();\n }\n\n }\n\n function addListener(taskName, fn) {\n var taskListeners = listeners[taskName];\n if (!taskListeners) {\n taskListeners = listeners[taskName] = [];\n }\n\n taskListeners.push(fn);\n }\n\n function taskComplete(taskName) {\n var taskListeners = listeners[taskName] || [];\n arrayEach(taskListeners, function (fn) {\n fn();\n });\n processQueue();\n }\n\n\n function runTask(key, task) {\n if (hasError) return;\n\n var taskCallback = onlyOnce(function(err, result) {\n runningTasks--;\n if (arguments.length > 2) {\n result = slice(arguments, 1);\n }\n if (err) {\n var safeResults = {};\n baseForOwn(results, function(val, rkey) {\n safeResults[rkey] = val;\n });\n safeResults[key] = result;\n hasError = true;\n listeners = Object.create(null);\n\n callback(err, safeResults);\n } else {\n results[key] = result;\n taskComplete(key);\n }\n });\n\n runningTasks++;\n var taskFn = wrapAsync(task[task.length - 1]);\n if (task.length > 1) {\n taskFn(results, taskCallback);\n } else {\n taskFn(taskCallback);\n }\n }\n\n function checkForDeadlocks() {\n // Kahn's algorithm\n // https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm\n // http://connalle.blogspot.com/2013/10/topological-sortingkahn-algorithm.html\n var currentTask;\n var counter = 0;\n while (readyToCheck.length) {\n currentTask = readyToCheck.pop();\n counter++;\n arrayEach(getDependents(currentTask), function (dependent) {\n if (--uncheckedDependencies[dependent] === 0) {\n readyToCheck.push(dependent);\n }\n });\n }\n\n if (counter !== numTasks) {\n throw new Error(\n 'async.auto cannot execute tasks due to a recursive dependency'\n );\n }\n }\n\n function getDependents(taskName) {\n var result = [];\n baseForOwn(tasks, function (task, key) {\n if (isArray(task) && baseIndexOf(task, taskName, 0) >= 0) {\n result.push(key);\n }\n });\n return result;\n }\n};\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol$1 ? Symbol$1.prototype : undefined;\nvar symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\nfunction charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\n/**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\nfunction charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff';\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f';\nvar reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f';\nvar rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff';\nvar rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\nvar rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange$1 = '\\\\ud800-\\\\udfff';\nvar rsComboMarksRange$1 = '\\\\u0300-\\\\u036f';\nvar reComboHalfMarksRange$1 = '\\\\ufe20-\\\\ufe2f';\nvar rsComboSymbolsRange$1 = '\\\\u20d0-\\\\u20ff';\nvar rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1;\nvar rsVarRange$1 = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange$1 + ']';\nvar rsCombo = '[' + rsComboRange$1 + ']';\nvar rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]';\nvar rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')';\nvar rsNonAstral = '[^' + rsAstralRange$1 + ']';\nvar rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}';\nvar rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]';\nvar rsZWJ$1 = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?';\nvar rsOptVar = '[' + rsVarRange$1 + ']?';\nvar rsOptJoin = '(?:' + rsZWJ$1 + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*';\nvar rsSeq = rsOptVar + reOptMod + rsOptJoin;\nvar rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\nfunction trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n}\n\nvar FN_ARGS = /^(?:async\\s+)?(function)?\\s*[^\\(]*\\(\\s*([^\\)]*)\\)/m;\nvar FN_ARG_SPLIT = /,/;\nvar FN_ARG = /(=.+)?(\\s*)$/;\nvar STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/mg;\n\nfunction parseParams(func) {\n func = func.toString().replace(STRIP_COMMENTS, '');\n func = func.match(FN_ARGS)[2].replace(' ', '');\n func = func ? func.split(FN_ARG_SPLIT) : [];\n func = func.map(function (arg){\n return trim(arg.replace(FN_ARG, ''));\n });\n return func;\n}\n\n/**\n * A dependency-injected version of the [async.auto]{@link module:ControlFlow.auto} function. Dependent\n * tasks are specified as parameters to the function, after the usual callback\n * parameter, with the parameter names matching the names of the tasks it\n * depends on. This can provide even more readable task graphs which can be\n * easier to maintain.\n *\n * If a final callback is specified, the task results are similarly injected,\n * specified as named parameters after the initial error parameter.\n *\n * The autoInject function is purely syntactic sugar and its semantics are\n * otherwise equivalent to [async.auto]{@link module:ControlFlow.auto}.\n *\n * @name autoInject\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.auto]{@link module:ControlFlow.auto}\n * @category Control Flow\n * @param {Object} tasks - An object, each of whose properties is an {@link AsyncFunction} of\n * the form 'func([dependencies...], callback). The object's key of a property\n * serves as the name of the task defined by that property, i.e. can be used\n * when specifying requirements for other tasks.\n * * The `callback` parameter is a `callback(err, result)` which must be called\n * when finished, passing an `error` (which can be `null`) and the result of\n * the function's execution. The remaining parameters name other tasks on\n * which the task is dependent, and the results from those tasks are the\n * arguments of those parameters.\n * @param {Function} [callback] - An optional callback which is called when all\n * the tasks have been completed. It receives the `err` argument if any `tasks`\n * pass an error to their callback, and a `results` object with any completed\n * task results, similar to `auto`.\n * @example\n *\n * // The example from `auto` can be rewritten as follows:\n * async.autoInject({\n * get_data: function(callback) {\n * // async code to get some data\n * callback(null, 'data', 'converted to array');\n * },\n * make_folder: function(callback) {\n * // async code to create a directory to store a file in\n * // this is run at the same time as getting the data\n * callback(null, 'folder');\n * },\n * write_file: function(get_data, make_folder, callback) {\n * // once there is some data and the directory exists,\n * // write the data to a file in the directory\n * callback(null, 'filename');\n * },\n * email_link: function(write_file, callback) {\n * // once the file is written let's email a link to it...\n * // write_file contains the filename returned by write_file.\n * callback(null, {'file':write_file, 'email':'user@example.com'});\n * }\n * }, function(err, results) {\n * console.log('err = ', err);\n * console.log('email_link = ', results.email_link);\n * });\n *\n * // If you are using a JS minifier that mangles parameter names, `autoInject`\n * // will not work with plain functions, since the parameter names will be\n * // collapsed to a single letter identifier. To work around this, you can\n * // explicitly specify the names of the parameters your task function needs\n * // in an array, similar to Angular.js dependency injection.\n *\n * // This still has an advantage over plain `auto`, since the results a task\n * // depends on are still spread into arguments.\n * async.autoInject({\n * //...\n * write_file: ['get_data', 'make_folder', function(get_data, make_folder, callback) {\n * callback(null, 'filename');\n * }],\n * email_link: ['write_file', function(write_file, callback) {\n * callback(null, {'file':write_file, 'email':'user@example.com'});\n * }]\n * //...\n * }, function(err, results) {\n * console.log('err = ', err);\n * console.log('email_link = ', results.email_link);\n * });\n */\nfunction autoInject(tasks, callback) {\n var newTasks = {};\n\n baseForOwn(tasks, function (taskFn, key) {\n var params;\n var fnIsAsync = isAsync(taskFn);\n var hasNoDeps =\n (!fnIsAsync && taskFn.length === 1) ||\n (fnIsAsync && taskFn.length === 0);\n\n if (isArray(taskFn)) {\n params = taskFn.slice(0, -1);\n taskFn = taskFn[taskFn.length - 1];\n\n newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn);\n } else if (hasNoDeps) {\n // no dependencies, use the function as-is\n newTasks[key] = taskFn;\n } else {\n params = parseParams(taskFn);\n if (taskFn.length === 0 && !fnIsAsync && params.length === 0) {\n throw new Error(\"autoInject task functions require explicit parameters.\");\n }\n\n // remove callback param\n if (!fnIsAsync) params.pop();\n\n newTasks[key] = params.concat(newTask);\n }\n\n function newTask(results, taskCb) {\n var newArgs = arrayMap(params, function (name) {\n return results[name];\n });\n newArgs.push(taskCb);\n wrapAsync(taskFn).apply(null, newArgs);\n }\n });\n\n auto(newTasks, callback);\n}\n\n// Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation\n// used for queues. This implementation assumes that the node provided by the user can be modified\n// to adjust the next and last properties. We implement only the minimal functionality\n// for queue support.\nfunction DLL() {\n this.head = this.tail = null;\n this.length = 0;\n}\n\nfunction setInitial(dll, node) {\n dll.length = 1;\n dll.head = dll.tail = node;\n}\n\nDLL.prototype.removeLink = function(node) {\n if (node.prev) node.prev.next = node.next;\n else this.head = node.next;\n if (node.next) node.next.prev = node.prev;\n else this.tail = node.prev;\n\n node.prev = node.next = null;\n this.length -= 1;\n return node;\n};\n\nDLL.prototype.empty = function () {\n while(this.head) this.shift();\n return this;\n};\n\nDLL.prototype.insertAfter = function(node, newNode) {\n newNode.prev = node;\n newNode.next = node.next;\n if (node.next) node.next.prev = newNode;\n else this.tail = newNode;\n node.next = newNode;\n this.length += 1;\n};\n\nDLL.prototype.insertBefore = function(node, newNode) {\n newNode.prev = node.prev;\n newNode.next = node;\n if (node.prev) node.prev.next = newNode;\n else this.head = newNode;\n node.prev = newNode;\n this.length += 1;\n};\n\nDLL.prototype.unshift = function(node) {\n if (this.head) this.insertBefore(this.head, node);\n else setInitial(this, node);\n};\n\nDLL.prototype.push = function(node) {\n if (this.tail) this.insertAfter(this.tail, node);\n else setInitial(this, node);\n};\n\nDLL.prototype.shift = function() {\n return this.head && this.removeLink(this.head);\n};\n\nDLL.prototype.pop = function() {\n return this.tail && this.removeLink(this.tail);\n};\n\nDLL.prototype.toArray = function () {\n var arr = Array(this.length);\n var curr = this.head;\n for(var idx = 0; idx < this.length; idx++) {\n arr[idx] = curr.data;\n curr = curr.next;\n }\n return arr;\n};\n\nDLL.prototype.remove = function (testFn) {\n var curr = this.head;\n while(!!curr) {\n var next = curr.next;\n if (testFn(curr)) {\n this.removeLink(curr);\n }\n curr = next;\n }\n return this;\n};\n\nfunction queue(worker, concurrency, payload) {\n if (concurrency == null) {\n concurrency = 1;\n }\n else if(concurrency === 0) {\n throw new Error('Concurrency must not be zero');\n }\n\n var _worker = wrapAsync(worker);\n var numRunning = 0;\n var workersList = [];\n\n var processingScheduled = false;\n function _insert(data, insertAtFront, callback) {\n if (callback != null && typeof callback !== 'function') {\n throw new Error('task callback must be a function');\n }\n q.started = true;\n if (!isArray(data)) {\n data = [data];\n }\n if (data.length === 0 && q.idle()) {\n // call drain immediately if there are no tasks\n return setImmediate$1(function() {\n q.drain();\n });\n }\n\n for (var i = 0, l = data.length; i < l; i++) {\n var item = {\n data: data[i],\n callback: callback || noop\n };\n\n if (insertAtFront) {\n q._tasks.unshift(item);\n } else {\n q._tasks.push(item);\n }\n }\n\n if (!processingScheduled) {\n processingScheduled = true;\n setImmediate$1(function() {\n processingScheduled = false;\n q.process();\n });\n }\n }\n\n function _next(tasks) {\n return function(err){\n numRunning -= 1;\n\n for (var i = 0, l = tasks.length; i < l; i++) {\n var task = tasks[i];\n\n var index = baseIndexOf(workersList, task, 0);\n if (index === 0) {\n workersList.shift();\n } else if (index > 0) {\n workersList.splice(index, 1);\n }\n\n task.callback.apply(task, arguments);\n\n if (err != null) {\n q.error(err, task.data);\n }\n }\n\n if (numRunning <= (q.concurrency - q.buffer) ) {\n q.unsaturated();\n }\n\n if (q.idle()) {\n q.drain();\n }\n q.process();\n };\n }\n\n var isProcessing = false;\n var q = {\n _tasks: new DLL(),\n concurrency: concurrency,\n payload: payload,\n saturated: noop,\n unsaturated:noop,\n buffer: concurrency / 4,\n empty: noop,\n drain: noop,\n error: noop,\n started: false,\n paused: false,\n push: function (data, callback) {\n _insert(data, false, callback);\n },\n kill: function () {\n q.drain = noop;\n q._tasks.empty();\n },\n unshift: function (data, callback) {\n _insert(data, true, callback);\n },\n remove: function (testFn) {\n q._tasks.remove(testFn);\n },\n process: function () {\n // Avoid trying to start too many processing operations. This can occur\n // when callbacks resolve synchronously (#1267).\n if (isProcessing) {\n return;\n }\n isProcessing = true;\n while(!q.paused && numRunning < q.concurrency && q._tasks.length){\n var tasks = [], data = [];\n var l = q._tasks.length;\n if (q.payload) l = Math.min(l, q.payload);\n for (var i = 0; i < l; i++) {\n var node = q._tasks.shift();\n tasks.push(node);\n workersList.push(node);\n data.push(node.data);\n }\n\n numRunning += 1;\n\n if (q._tasks.length === 0) {\n q.empty();\n }\n\n if (numRunning === q.concurrency) {\n q.saturated();\n }\n\n var cb = onlyOnce(_next(tasks));\n _worker(data, cb);\n }\n isProcessing = false;\n },\n length: function () {\n return q._tasks.length;\n },\n running: function () {\n return numRunning;\n },\n workersList: function () {\n return workersList;\n },\n idle: function() {\n return q._tasks.length + numRunning === 0;\n },\n pause: function () {\n q.paused = true;\n },\n resume: function () {\n if (q.paused === false) { return; }\n q.paused = false;\n setImmediate$1(q.process);\n }\n };\n return q;\n}\n\n/**\n * A cargo of tasks for the worker function to complete. Cargo inherits all of\n * the same methods and event callbacks as [`queue`]{@link module:ControlFlow.queue}.\n * @typedef {Object} CargoObject\n * @memberOf module:ControlFlow\n * @property {Function} length - A function returning the number of items\n * waiting to be processed. Invoke like `cargo.length()`.\n * @property {number} payload - An `integer` for determining how many tasks\n * should be process per round. This property can be changed after a `cargo` is\n * created to alter the payload on-the-fly.\n * @property {Function} push - Adds `task` to the `queue`. The callback is\n * called once the `worker` has finished processing the task. Instead of a\n * single task, an array of `tasks` can be submitted. The respective callback is\n * used for every task in the list. Invoke like `cargo.push(task, [callback])`.\n * @property {Function} saturated - A callback that is called when the\n * `queue.length()` hits the concurrency and further tasks will be queued.\n * @property {Function} empty - A callback that is called when the last item\n * from the `queue` is given to a `worker`.\n * @property {Function} drain - A callback that is called when the last item\n * from the `queue` has returned from the `worker`.\n * @property {Function} idle - a function returning false if there are items\n * waiting or being processed, or true if not. Invoke like `cargo.idle()`.\n * @property {Function} pause - a function that pauses the processing of tasks\n * until `resume()` is called. Invoke like `cargo.pause()`.\n * @property {Function} resume - a function that resumes the processing of\n * queued tasks when the queue is paused. Invoke like `cargo.resume()`.\n * @property {Function} kill - a function that removes the `drain` callback and\n * empties remaining tasks from the queue forcing it to go idle. Invoke like `cargo.kill()`.\n */\n\n/**\n * Creates a `cargo` object with the specified payload. Tasks added to the\n * cargo will be processed altogether (up to the `payload` limit). If the\n * `worker` is in progress, the task is queued until it becomes available. Once\n * the `worker` has completed some tasks, each callback of those tasks is\n * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966)\n * for how `cargo` and `queue` work.\n *\n * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers\n * at a time, cargo passes an array of tasks to a single worker, repeating\n * when the worker is finished.\n *\n * @name cargo\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.queue]{@link module:ControlFlow.queue}\n * @category Control Flow\n * @param {AsyncFunction} worker - An asynchronous function for processing an array\n * of queued tasks. Invoked with `(tasks, callback)`.\n * @param {number} [payload=Infinity] - An optional `integer` for determining\n * how many tasks should be processed per round; if omitted, the default is\n * unlimited.\n * @returns {module:ControlFlow.CargoObject} A cargo object to manage the tasks. Callbacks can\n * attached as certain properties to listen for specific events during the\n * lifecycle of the cargo and inner queue.\n * @example\n *\n * // create a cargo object with payload 2\n * var cargo = async.cargo(function(tasks, callback) {\n * for (var i=0; i true\n */\nfunction identity(value) {\n return value;\n}\n\nfunction _createTester(check, getResult) {\n return function(eachfn, arr, iteratee, cb) {\n cb = cb || noop;\n var testPassed = false;\n var testResult;\n eachfn(arr, function(value, _, callback) {\n iteratee(value, function(err, result) {\n if (err) {\n callback(err);\n } else if (check(result) && !testResult) {\n testPassed = true;\n testResult = getResult(true, value);\n callback(null, breakLoop);\n } else {\n callback();\n }\n });\n }, function(err) {\n if (err) {\n cb(err);\n } else {\n cb(null, testPassed ? testResult : getResult(false));\n }\n });\n };\n}\n\nfunction _findGetResult(v, x) {\n return x;\n}\n\n/**\n * Returns the first value in `coll` that passes an async truth test. The\n * `iteratee` is applied in parallel, meaning the first iteratee to return\n * `true` will fire the detect `callback` with that result. That means the\n * result might not be the first item in the original `coll` (in terms of order)\n * that passes the test.\n\n * If order within the original `coll` is important, then look at\n * [`detectSeries`]{@link module:Collections.detectSeries}.\n *\n * @name detect\n * @static\n * @memberOf module:Collections\n * @method\n * @alias find\n * @category Collections\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.\n * The iteratee must complete with a boolean value as its result.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the `iteratee` functions have finished.\n * Result will be the first item in the array that passes the truth test\n * (iteratee) or the value `undefined` if none passed. Invoked with\n * (err, result).\n * @example\n *\n * async.detect(['file1','file2','file3'], function(filePath, callback) {\n * fs.access(filePath, function(err) {\n * callback(null, !err)\n * });\n * }, function(err, result) {\n * // result now equals the first file in the list that exists\n * });\n */\nvar detect = doParallel(_createTester(identity, _findGetResult));\n\n/**\n * The same as [`detect`]{@link module:Collections.detect} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name detectLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.detect]{@link module:Collections.detect}\n * @alias findLimit\n * @category Collections\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.\n * The iteratee must complete with a boolean value as its result.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the `iteratee` functions have finished.\n * Result will be the first item in the array that passes the truth test\n * (iteratee) or the value `undefined` if none passed. Invoked with\n * (err, result).\n */\nvar detectLimit = doParallelLimit(_createTester(identity, _findGetResult));\n\n/**\n * The same as [`detect`]{@link module:Collections.detect} but runs only a single async operation at a time.\n *\n * @name detectSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.detect]{@link module:Collections.detect}\n * @alias findSeries\n * @category Collections\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.\n * The iteratee must complete with a boolean value as its result.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the `iteratee` functions have finished.\n * Result will be the first item in the array that passes the truth test\n * (iteratee) or the value `undefined` if none passed. Invoked with\n * (err, result).\n */\nvar detectSeries = doLimit(detectLimit, 1);\n\nfunction consoleFunc(name) {\n return function (fn/*, ...args*/) {\n var args = slice(arguments, 1);\n args.push(function (err/*, ...args*/) {\n var args = slice(arguments, 1);\n if (typeof console === 'object') {\n if (err) {\n if (console.error) {\n console.error(err);\n }\n } else if (console[name]) {\n arrayEach(args, function (x) {\n console[name](x);\n });\n }\n }\n });\n wrapAsync(fn).apply(null, args);\n };\n}\n\n/**\n * Logs the result of an [`async` function]{@link AsyncFunction} to the\n * `console` using `console.dir` to display the properties of the resulting object.\n * Only works in Node.js or in browsers that support `console.dir` and\n * `console.error` (such as FF and Chrome).\n * If multiple arguments are returned from the async function,\n * `console.dir` is called on each argument in order.\n *\n * @name dir\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} function - The function you want to eventually apply\n * all arguments to.\n * @param {...*} arguments... - Any number of arguments to apply to the function.\n * @example\n *\n * // in a module\n * var hello = function(name, callback) {\n * setTimeout(function() {\n * callback(null, {hello: name});\n * }, 1000);\n * };\n *\n * // in the node repl\n * node> async.dir(hello, 'world');\n * {hello: 'world'}\n */\nvar dir = consoleFunc('dir');\n\n/**\n * The post-check version of [`during`]{@link module:ControlFlow.during}. To reflect the difference in\n * the order of operations, the arguments `test` and `fn` are switched.\n *\n * Also a version of [`doWhilst`]{@link module:ControlFlow.doWhilst} with asynchronous `test` function.\n * @name doDuring\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.during]{@link module:ControlFlow.during}\n * @category Control Flow\n * @param {AsyncFunction} fn - An async function which is called each time\n * `test` passes. Invoked with (callback).\n * @param {AsyncFunction} test - asynchronous truth test to perform before each\n * execution of `fn`. Invoked with (...args, callback), where `...args` are the\n * non-error args from the previous callback of `fn`.\n * @param {Function} [callback] - A callback which is called after the test\n * function has failed and repeated execution of `fn` has stopped. `callback`\n * will be passed an error if one occurred, otherwise `null`.\n */\nfunction doDuring(fn, test, callback) {\n callback = onlyOnce(callback || noop);\n var _fn = wrapAsync(fn);\n var _test = wrapAsync(test);\n\n function next(err/*, ...args*/) {\n if (err) return callback(err);\n var args = slice(arguments, 1);\n args.push(check);\n _test.apply(this, args);\n }\n\n function check(err, truth) {\n if (err) return callback(err);\n if (!truth) return callback(null);\n _fn(next);\n }\n\n check(null, true);\n\n}\n\n/**\n * The post-check version of [`whilst`]{@link module:ControlFlow.whilst}. To reflect the difference in\n * the order of operations, the arguments `test` and `iteratee` are switched.\n *\n * `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.\n *\n * @name doWhilst\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.whilst]{@link module:ControlFlow.whilst}\n * @category Control Flow\n * @param {AsyncFunction} iteratee - A function which is called each time `test`\n * passes. Invoked with (callback).\n * @param {Function} test - synchronous truth test to perform after each\n * execution of `iteratee`. Invoked with any non-error callback results of\n * `iteratee`.\n * @param {Function} [callback] - A callback which is called after the test\n * function has failed and repeated execution of `iteratee` has stopped.\n * `callback` will be passed an error and any arguments passed to the final\n * `iteratee`'s callback. Invoked with (err, [results]);\n */\nfunction doWhilst(iteratee, test, callback) {\n callback = onlyOnce(callback || noop);\n var _iteratee = wrapAsync(iteratee);\n var next = function(err/*, ...args*/) {\n if (err) return callback(err);\n var args = slice(arguments, 1);\n if (test.apply(this, args)) return _iteratee(next);\n callback.apply(null, [null].concat(args));\n };\n _iteratee(next);\n}\n\n/**\n * Like ['doWhilst']{@link module:ControlFlow.doWhilst}, except the `test` is inverted. Note the\n * argument ordering differs from `until`.\n *\n * @name doUntil\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.doWhilst]{@link module:ControlFlow.doWhilst}\n * @category Control Flow\n * @param {AsyncFunction} iteratee - An async function which is called each time\n * `test` fails. Invoked with (callback).\n * @param {Function} test - synchronous truth test to perform after each\n * execution of `iteratee`. Invoked with any non-error callback results of\n * `iteratee`.\n * @param {Function} [callback] - A callback which is called after the test\n * function has passed and repeated execution of `iteratee` has stopped. `callback`\n * will be passed an error and any arguments passed to the final `iteratee`'s\n * callback. Invoked with (err, [results]);\n */\nfunction doUntil(iteratee, test, callback) {\n doWhilst(iteratee, function() {\n return !test.apply(this, arguments);\n }, callback);\n}\n\n/**\n * Like [`whilst`]{@link module:ControlFlow.whilst}, except the `test` is an asynchronous function that\n * is passed a callback in the form of `function (err, truth)`. If error is\n * passed to `test` or `fn`, the main callback is immediately called with the\n * value of the error.\n *\n * @name during\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.whilst]{@link module:ControlFlow.whilst}\n * @category Control Flow\n * @param {AsyncFunction} test - asynchronous truth test to perform before each\n * execution of `fn`. Invoked with (callback).\n * @param {AsyncFunction} fn - An async function which is called each time\n * `test` passes. Invoked with (callback).\n * @param {Function} [callback] - A callback which is called after the test\n * function has failed and repeated execution of `fn` has stopped. `callback`\n * will be passed an error, if one occurred, otherwise `null`.\n * @example\n *\n * var count = 0;\n *\n * async.during(\n * function (callback) {\n * return callback(null, count < 5);\n * },\n * function (callback) {\n * count++;\n * setTimeout(callback, 1000);\n * },\n * function (err) {\n * // 5 seconds have passed\n * }\n * );\n */\nfunction during(test, fn, callback) {\n callback = onlyOnce(callback || noop);\n var _fn = wrapAsync(fn);\n var _test = wrapAsync(test);\n\n function next(err) {\n if (err) return callback(err);\n _test(check);\n }\n\n function check(err, truth) {\n if (err) return callback(err);\n if (!truth) return callback(null);\n _fn(next);\n }\n\n _test(check);\n}\n\nfunction _withoutIndex(iteratee) {\n return function (value, index, callback) {\n return iteratee(value, callback);\n };\n}\n\n/**\n * Applies the function `iteratee` to each item in `coll`, in parallel.\n * The `iteratee` is called with an item from the list, and a callback for when\n * it has finished. If the `iteratee` passes an error to its `callback`, the\n * main `callback` (for the `each` function) is immediately called with the\n * error.\n *\n * Note, that since this function applies `iteratee` to each item in parallel,\n * there is no guarantee that the iteratee functions will complete in order.\n *\n * @name each\n * @static\n * @memberOf module:Collections\n * @method\n * @alias forEach\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to\n * each item in `coll`. Invoked with (item, callback).\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOf`.\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @example\n *\n * // assuming openFiles is an array of file names and saveFile is a function\n * // to save the modified contents of that file:\n *\n * async.each(openFiles, saveFile, function(err){\n * // if any of the saves produced an error, err would equal that error\n * });\n *\n * // assuming openFiles is an array of file names\n * async.each(openFiles, function(file, callback) {\n *\n * // Perform operation on file here.\n * console.log('Processing file ' + file);\n *\n * if( file.length > 32 ) {\n * console.log('This file name is too long');\n * callback('File name too long');\n * } else {\n * // Do work to process file here\n * console.log('File processed');\n * callback();\n * }\n * }, function(err) {\n * // if any of the file processing produced an error, err would equal that error\n * if( err ) {\n * // One of the iterations produced an error.\n * // All processing will now stop.\n * console.log('A file failed to process');\n * } else {\n * console.log('All files have been processed successfully');\n * }\n * });\n */\nfunction eachLimit(coll, iteratee, callback) {\n eachOf(coll, _withoutIndex(wrapAsync(iteratee)), callback);\n}\n\n/**\n * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time.\n *\n * @name eachLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.each]{@link module:Collections.each}\n * @alias forEachLimit\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOfLimit`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n */\nfunction eachLimit$1(coll, limit, iteratee, callback) {\n _eachOfLimit(limit)(coll, _withoutIndex(wrapAsync(iteratee)), callback);\n}\n\n/**\n * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time.\n *\n * @name eachSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.each]{@link module:Collections.each}\n * @alias forEachSeries\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each\n * item in `coll`.\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOfSeries`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n */\nvar eachSeries = doLimit(eachLimit$1, 1);\n\n/**\n * Wrap an async function and ensure it calls its callback on a later tick of\n * the event loop. If the function already calls its callback on a next tick,\n * no extra deferral is added. This is useful for preventing stack overflows\n * (`RangeError: Maximum call stack size exceeded`) and generally keeping\n * [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony)\n * contained. ES2017 `async` functions are returned as-is -- they are immune\n * to Zalgo's corrupting influences, as they always resolve on a later tick.\n *\n * @name ensureAsync\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} fn - an async function, one that expects a node-style\n * callback as its last argument.\n * @returns {AsyncFunction} Returns a wrapped function with the exact same call\n * signature as the function passed in.\n * @example\n *\n * function sometimesAsync(arg, callback) {\n * if (cache[arg]) {\n * return callback(null, cache[arg]); // this would be synchronous!!\n * } else {\n * doSomeIO(arg, callback); // this IO would be asynchronous\n * }\n * }\n *\n * // this has a risk of stack overflows if many results are cached in a row\n * async.mapSeries(args, sometimesAsync, done);\n *\n * // this will defer sometimesAsync's callback if necessary,\n * // preventing stack overflows\n * async.mapSeries(args, async.ensureAsync(sometimesAsync), done);\n */\nfunction ensureAsync(fn) {\n if (isAsync(fn)) return fn;\n return initialParams(function (args, callback) {\n var sync = true;\n args.push(function () {\n var innerArgs = arguments;\n if (sync) {\n setImmediate$1(function () {\n callback.apply(null, innerArgs);\n });\n } else {\n callback.apply(null, innerArgs);\n }\n });\n fn.apply(this, args);\n sync = false;\n });\n}\n\nfunction notId(v) {\n return !v;\n}\n\n/**\n * Returns `true` if every element in `coll` satisfies an async test. If any\n * iteratee call returns `false`, the main `callback` is immediately called.\n *\n * @name every\n * @static\n * @memberOf module:Collections\n * @method\n * @alias all\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collection in parallel.\n * The iteratee must complete with a boolean result value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Result will be either `true` or `false`\n * depending on the values of the async tests. Invoked with (err, result).\n * @example\n *\n * async.every(['file1','file2','file3'], function(filePath, callback) {\n * fs.access(filePath, function(err) {\n * callback(null, !err)\n * });\n * }, function(err, result) {\n * // if result is true then every file exists\n * });\n */\nvar every = doParallel(_createTester(notId, notId));\n\n/**\n * The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time.\n *\n * @name everyLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.every]{@link module:Collections.every}\n * @alias allLimit\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collection in parallel.\n * The iteratee must complete with a boolean result value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Result will be either `true` or `false`\n * depending on the values of the async tests. Invoked with (err, result).\n */\nvar everyLimit = doParallelLimit(_createTester(notId, notId));\n\n/**\n * The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time.\n *\n * @name everySeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.every]{@link module:Collections.every}\n * @alias allSeries\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collection in series.\n * The iteratee must complete with a boolean result value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Result will be either `true` or `false`\n * depending on the values of the async tests. Invoked with (err, result).\n */\nvar everySeries = doLimit(everyLimit, 1);\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nfunction filterArray(eachfn, arr, iteratee, callback) {\n var truthValues = new Array(arr.length);\n eachfn(arr, function (x, index, callback) {\n iteratee(x, function (err, v) {\n truthValues[index] = !!v;\n callback(err);\n });\n }, function (err) {\n if (err) return callback(err);\n var results = [];\n for (var i = 0; i < arr.length; i++) {\n if (truthValues[i]) results.push(arr[i]);\n }\n callback(null, results);\n });\n}\n\nfunction filterGeneric(eachfn, coll, iteratee, callback) {\n var results = [];\n eachfn(coll, function (x, index, callback) {\n iteratee(x, function (err, v) {\n if (err) {\n callback(err);\n } else {\n if (v) {\n results.push({index: index, value: x});\n }\n callback();\n }\n });\n }, function (err) {\n if (err) {\n callback(err);\n } else {\n callback(null, arrayMap(results.sort(function (a, b) {\n return a.index - b.index;\n }), baseProperty('value')));\n }\n });\n}\n\nfunction _filter(eachfn, coll, iteratee, callback) {\n var filter = isArrayLike(coll) ? filterArray : filterGeneric;\n filter(eachfn, coll, wrapAsync(iteratee), callback || noop);\n}\n\n/**\n * Returns a new array of all the values in `coll` which pass an async truth\n * test. This operation is performed in parallel, but the results array will be\n * in the same order as the original.\n *\n * @name filter\n * @static\n * @memberOf module:Collections\n * @method\n * @alias select\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {Function} iteratee - A truth test to apply to each item in `coll`.\n * The `iteratee` is passed a `callback(err, truthValue)`, which must be called\n * with a boolean argument once it has completed. Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results).\n * @example\n *\n * async.filter(['file1','file2','file3'], function(filePath, callback) {\n * fs.access(filePath, function(err) {\n * callback(null, !err)\n * });\n * }, function(err, results) {\n * // results now equals an array of the existing files\n * });\n */\nvar filter = doParallel(_filter);\n\n/**\n * The same as [`filter`]{@link module:Collections.filter} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name filterLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.filter]{@link module:Collections.filter}\n * @alias selectLimit\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {Function} iteratee - A truth test to apply to each item in `coll`.\n * The `iteratee` is passed a `callback(err, truthValue)`, which must be called\n * with a boolean argument once it has completed. Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results).\n */\nvar filterLimit = doParallelLimit(_filter);\n\n/**\n * The same as [`filter`]{@link module:Collections.filter} but runs only a single async operation at a time.\n *\n * @name filterSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.filter]{@link module:Collections.filter}\n * @alias selectSeries\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {Function} iteratee - A truth test to apply to each item in `coll`.\n * The `iteratee` is passed a `callback(err, truthValue)`, which must be called\n * with a boolean argument once it has completed. Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results)\n */\nvar filterSeries = doLimit(filterLimit, 1);\n\n/**\n * Calls the asynchronous function `fn` with a callback parameter that allows it\n * to call itself again, in series, indefinitely.\n\n * If an error is passed to the callback then `errback` is called with the\n * error, and execution stops, otherwise it will never be called.\n *\n * @name forever\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {AsyncFunction} fn - an async function to call repeatedly.\n * Invoked with (next).\n * @param {Function} [errback] - when `fn` passes an error to it's callback,\n * this function will be called, and execution stops. Invoked with (err).\n * @example\n *\n * async.forever(\n * function(next) {\n * // next is suitable for passing to things that need a callback(err [, whatever]);\n * // it will result in this function being called again.\n * },\n * function(err) {\n * // if next is called with a value in its first parameter, it will appear\n * // in here as 'err', and execution will stop.\n * }\n * );\n */\nfunction forever(fn, errback) {\n var done = onlyOnce(errback || noop);\n var task = wrapAsync(ensureAsync(fn));\n\n function next(err) {\n if (err) return done(err);\n task(next);\n }\n next();\n}\n\n/**\n * The same as [`groupBy`]{@link module:Collections.groupBy} but runs a maximum of `limit` async operations at a time.\n *\n * @name groupByLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.groupBy]{@link module:Collections.groupBy}\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with a `key` to group the value under.\n * Invoked with (value, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Result is an `Object` whoses\n * properties are arrays of values which returned the corresponding key.\n */\nvar groupByLimit = function(coll, limit, iteratee, callback) {\n callback = callback || noop;\n var _iteratee = wrapAsync(iteratee);\n mapLimit(coll, limit, function(val, callback) {\n _iteratee(val, function(err, key) {\n if (err) return callback(err);\n return callback(null, {key: key, val: val});\n });\n }, function(err, mapResults) {\n var result = {};\n // from MDN, handle object having an `hasOwnProperty` prop\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n for (var i = 0; i < mapResults.length; i++) {\n if (mapResults[i]) {\n var key = mapResults[i].key;\n var val = mapResults[i].val;\n\n if (hasOwnProperty.call(result, key)) {\n result[key].push(val);\n } else {\n result[key] = [val];\n }\n }\n }\n\n return callback(err, result);\n });\n};\n\n/**\n * Returns a new object, where each value corresponds to an array of items, from\n * `coll`, that returned the corresponding key. That is, the keys of the object\n * correspond to the values passed to the `iteratee` callback.\n *\n * Note: Since this function applies the `iteratee` to each item in parallel,\n * there is no guarantee that the `iteratee` functions will complete in order.\n * However, the values for each key in the `result` will be in the same order as\n * the original `coll`. For Objects, the values will roughly be in the order of\n * the original Objects' keys (but this can vary across JavaScript engines).\n *\n * @name groupBy\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with a `key` to group the value under.\n * Invoked with (value, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Result is an `Object` whoses\n * properties are arrays of values which returned the corresponding key.\n * @example\n *\n * async.groupBy(['userId1', 'userId2', 'userId3'], function(userId, callback) {\n * db.findById(userId, function(err, user) {\n * if (err) return callback(err);\n * return callback(null, user.age);\n * });\n * }, function(err, result) {\n * // result is object containing the userIds grouped by age\n * // e.g. { 30: ['userId1', 'userId3'], 42: ['userId2']};\n * });\n */\nvar groupBy = doLimit(groupByLimit, Infinity);\n\n/**\n * The same as [`groupBy`]{@link module:Collections.groupBy} but runs only a single async operation at a time.\n *\n * @name groupBySeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.groupBy]{@link module:Collections.groupBy}\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with a `key` to group the value under.\n * Invoked with (value, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Result is an `Object` whoses\n * properties are arrays of values which returned the corresponding key.\n */\nvar groupBySeries = doLimit(groupByLimit, 1);\n\n/**\n * Logs the result of an `async` function to the `console`. Only works in\n * Node.js or in browsers that support `console.log` and `console.error` (such\n * as FF and Chrome). If multiple arguments are returned from the async\n * function, `console.log` is called on each argument in order.\n *\n * @name log\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} function - The function you want to eventually apply\n * all arguments to.\n * @param {...*} arguments... - Any number of arguments to apply to the function.\n * @example\n *\n * // in a module\n * var hello = function(name, callback) {\n * setTimeout(function() {\n * callback(null, 'hello ' + name);\n * }, 1000);\n * };\n *\n * // in the node repl\n * node> async.log(hello, 'world');\n * 'hello world'\n */\nvar log = consoleFunc('log');\n\n/**\n * The same as [`mapValues`]{@link module:Collections.mapValues} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name mapValuesLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.mapValues]{@link module:Collections.mapValues}\n * @category Collection\n * @param {Object} obj - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - A function to apply to each value and key\n * in `coll`.\n * The iteratee should complete with the transformed value as its result.\n * Invoked with (value, key, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. `result` is a new object consisting\n * of each key from `obj`, with each transformed value on the right-hand side.\n * Invoked with (err, result).\n */\nfunction mapValuesLimit(obj, limit, iteratee, callback) {\n callback = once(callback || noop);\n var newObj = {};\n var _iteratee = wrapAsync(iteratee);\n eachOfLimit(obj, limit, function(val, key, next) {\n _iteratee(val, key, function (err, result) {\n if (err) return next(err);\n newObj[key] = result;\n next();\n });\n }, function (err) {\n callback(err, newObj);\n });\n}\n\n/**\n * A relative of [`map`]{@link module:Collections.map}, designed for use with objects.\n *\n * Produces a new Object by mapping each value of `obj` through the `iteratee`\n * function. The `iteratee` is called each `value` and `key` from `obj` and a\n * callback for when it has finished processing. Each of these callbacks takes\n * two arguments: an `error`, and the transformed item from `obj`. If `iteratee`\n * passes an error to its callback, the main `callback` (for the `mapValues`\n * function) is immediately called with the error.\n *\n * Note, the order of the keys in the result is not guaranteed. The keys will\n * be roughly in the order they complete, (but this is very engine-specific)\n *\n * @name mapValues\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @param {Object} obj - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A function to apply to each value and key\n * in `coll`.\n * The iteratee should complete with the transformed value as its result.\n * Invoked with (value, key, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. `result` is a new object consisting\n * of each key from `obj`, with each transformed value on the right-hand side.\n * Invoked with (err, result).\n * @example\n *\n * async.mapValues({\n * f1: 'file1',\n * f2: 'file2',\n * f3: 'file3'\n * }, function (file, key, callback) {\n * fs.stat(file, callback);\n * }, function(err, result) {\n * // result is now a map of stats for each file, e.g.\n * // {\n * // f1: [stats for file1],\n * // f2: [stats for file2],\n * // f3: [stats for file3]\n * // }\n * });\n */\n\nvar mapValues = doLimit(mapValuesLimit, Infinity);\n\n/**\n * The same as [`mapValues`]{@link module:Collections.mapValues} but runs only a single async operation at a time.\n *\n * @name mapValuesSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.mapValues]{@link module:Collections.mapValues}\n * @category Collection\n * @param {Object} obj - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A function to apply to each value and key\n * in `coll`.\n * The iteratee should complete with the transformed value as its result.\n * Invoked with (value, key, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. `result` is a new object consisting\n * of each key from `obj`, with each transformed value on the right-hand side.\n * Invoked with (err, result).\n */\nvar mapValuesSeries = doLimit(mapValuesLimit, 1);\n\nfunction has(obj, key) {\n return key in obj;\n}\n\n/**\n * Caches the results of an async function. When creating a hash to store\n * function results against, the callback is omitted from the hash and an\n * optional hash function can be used.\n *\n * If no hash function is specified, the first argument is used as a hash key,\n * which may work reasonably if it is a string or a data type that converts to a\n * distinct string. Note that objects and arrays will not behave reasonably.\n * Neither will cases where the other arguments are significant. In such cases,\n * specify your own hash function.\n *\n * The cache of results is exposed as the `memo` property of the function\n * returned by `memoize`.\n *\n * @name memoize\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} fn - The async function to proxy and cache results from.\n * @param {Function} hasher - An optional function for generating a custom hash\n * for storing results. It has all the arguments applied to it apart from the\n * callback, and must be synchronous.\n * @returns {AsyncFunction} a memoized version of `fn`\n * @example\n *\n * var slow_fn = function(name, callback) {\n * // do something\n * callback(null, result);\n * };\n * var fn = async.memoize(slow_fn);\n *\n * // fn can now be used as if it were slow_fn\n * fn('some name', function() {\n * // callback\n * });\n */\nfunction memoize(fn, hasher) {\n var memo = Object.create(null);\n var queues = Object.create(null);\n hasher = hasher || identity;\n var _fn = wrapAsync(fn);\n var memoized = initialParams(function memoized(args, callback) {\n var key = hasher.apply(null, args);\n if (has(memo, key)) {\n setImmediate$1(function() {\n callback.apply(null, memo[key]);\n });\n } else if (has(queues, key)) {\n queues[key].push(callback);\n } else {\n queues[key] = [callback];\n _fn.apply(null, args.concat(function(/*args*/) {\n var args = slice(arguments);\n memo[key] = args;\n var q = queues[key];\n delete queues[key];\n for (var i = 0, l = q.length; i < l; i++) {\n q[i].apply(null, args);\n }\n }));\n }\n });\n memoized.memo = memo;\n memoized.unmemoized = fn;\n return memoized;\n}\n\n/**\n * Calls `callback` on a later loop around the event loop. In Node.js this just\n * calls `process.nextTick`. In the browser it will use `setImmediate` if\n * available, otherwise `setTimeout(callback, 0)`, which means other higher\n * priority events may precede the execution of `callback`.\n *\n * This is used internally for browser-compatibility purposes.\n *\n * @name nextTick\n * @static\n * @memberOf module:Utils\n * @method\n * @see [async.setImmediate]{@link module:Utils.setImmediate}\n * @category Util\n * @param {Function} callback - The function to call on a later loop around\n * the event loop. Invoked with (args...).\n * @param {...*} args... - any number of additional arguments to pass to the\n * callback on the next tick.\n * @example\n *\n * var call_order = [];\n * async.nextTick(function() {\n * call_order.push('two');\n * // call_order now equals ['one','two']\n * });\n * call_order.push('one');\n *\n * async.setImmediate(function (a, b, c) {\n * // a, b, and c equal 1, 2, and 3\n * }, 1, 2, 3);\n */\nvar _defer$1;\n\nif (hasNextTick) {\n _defer$1 = process.nextTick;\n} else if (hasSetImmediate) {\n _defer$1 = setImmediate;\n} else {\n _defer$1 = fallback;\n}\n\nvar nextTick = wrap(_defer$1);\n\nfunction _parallel(eachfn, tasks, callback) {\n callback = callback || noop;\n var results = isArrayLike(tasks) ? [] : {};\n\n eachfn(tasks, function (task, key, callback) {\n wrapAsync(task)(function (err, result) {\n if (arguments.length > 2) {\n result = slice(arguments, 1);\n }\n results[key] = result;\n callback(err);\n });\n }, function (err) {\n callback(err, results);\n });\n}\n\n/**\n * Run the `tasks` collection of functions in parallel, without waiting until\n * the previous function has completed. If any of the functions pass an error to\n * its callback, the main `callback` is immediately called with the value of the\n * error. Once the `tasks` have completed, the results are passed to the final\n * `callback` as an array.\n *\n * **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about\n * parallel execution of code. If your tasks do not use any timers or perform\n * any I/O, they will actually be executed in series. Any synchronous setup\n * sections for each task will happen one after the other. JavaScript remains\n * single-threaded.\n *\n * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the\n * execution of other tasks when a task fails.\n *\n * It is also possible to use an object instead of an array. Each property will\n * be run as a function and the results will be passed to the final `callback`\n * as an object instead of an array. This can be a more readable way of handling\n * results from {@link async.parallel}.\n *\n * @name parallel\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|Object} tasks - A collection of\n * [async functions]{@link AsyncFunction} to run.\n * Each async function can complete with any number of optional `result` values.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed successfully. This function gets a results array\n * (or object) containing all the result arguments passed to the task callbacks.\n * Invoked with (err, results).\n *\n * @example\n * async.parallel([\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'two');\n * }, 100);\n * }\n * ],\n * // optional callback\n * function(err, results) {\n * // the results array will equal ['one','two'] even though\n * // the second function had a shorter timeout.\n * });\n *\n * // an example using an object instead of an array\n * async.parallel({\n * one: function(callback) {\n * setTimeout(function() {\n * callback(null, 1);\n * }, 200);\n * },\n * two: function(callback) {\n * setTimeout(function() {\n * callback(null, 2);\n * }, 100);\n * }\n * }, function(err, results) {\n * // results is now equals to: {one: 1, two: 2}\n * });\n */\nfunction parallelLimit(tasks, callback) {\n _parallel(eachOf, tasks, callback);\n}\n\n/**\n * The same as [`parallel`]{@link module:ControlFlow.parallel} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name parallelLimit\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.parallel]{@link module:ControlFlow.parallel}\n * @category Control Flow\n * @param {Array|Iterable|Object} tasks - A collection of\n * [async functions]{@link AsyncFunction} to run.\n * Each async function can complete with any number of optional `result` values.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed successfully. This function gets a results array\n * (or object) containing all the result arguments passed to the task callbacks.\n * Invoked with (err, results).\n */\nfunction parallelLimit$1(tasks, limit, callback) {\n _parallel(_eachOfLimit(limit), tasks, callback);\n}\n\n/**\n * A queue of tasks for the worker function to complete.\n * @typedef {Object} QueueObject\n * @memberOf module:ControlFlow\n * @property {Function} length - a function returning the number of items\n * waiting to be processed. Invoke with `queue.length()`.\n * @property {boolean} started - a boolean indicating whether or not any\n * items have been pushed and processed by the queue.\n * @property {Function} running - a function returning the number of items\n * currently being processed. Invoke with `queue.running()`.\n * @property {Function} workersList - a function returning the array of items\n * currently being processed. Invoke with `queue.workersList()`.\n * @property {Function} idle - a function returning false if there are items\n * waiting or being processed, or true if not. Invoke with `queue.idle()`.\n * @property {number} concurrency - an integer for determining how many `worker`\n * functions should be run in parallel. This property can be changed after a\n * `queue` is created to alter the concurrency on-the-fly.\n * @property {Function} push - add a new task to the `queue`. Calls `callback`\n * once the `worker` has finished processing the task. Instead of a single task,\n * a `tasks` array can be submitted. The respective callback is used for every\n * task in the list. Invoke with `queue.push(task, [callback])`,\n * @property {Function} unshift - add a new task to the front of the `queue`.\n * Invoke with `queue.unshift(task, [callback])`.\n * @property {Function} remove - remove items from the queue that match a test\n * function. The test function will be passed an object with a `data` property,\n * and a `priority` property, if this is a\n * [priorityQueue]{@link module:ControlFlow.priorityQueue} object.\n * Invoked with `queue.remove(testFn)`, where `testFn` is of the form\n * `function ({data, priority}) {}` and returns a Boolean.\n * @property {Function} saturated - a callback that is called when the number of\n * running workers hits the `concurrency` limit, and further tasks will be\n * queued.\n * @property {Function} unsaturated - a callback that is called when the number\n * of running workers is less than the `concurrency` & `buffer` limits, and\n * further tasks will not be queued.\n * @property {number} buffer - A minimum threshold buffer in order to say that\n * the `queue` is `unsaturated`.\n * @property {Function} empty - a callback that is called when the last item\n * from the `queue` is given to a `worker`.\n * @property {Function} drain - a callback that is called when the last item\n * from the `queue` has returned from the `worker`.\n * @property {Function} error - a callback that is called when a task errors.\n * Has the signature `function(error, task)`.\n * @property {boolean} paused - a boolean for determining whether the queue is\n * in a paused state.\n * @property {Function} pause - a function that pauses the processing of tasks\n * until `resume()` is called. Invoke with `queue.pause()`.\n * @property {Function} resume - a function that resumes the processing of\n * queued tasks when the queue is paused. Invoke with `queue.resume()`.\n * @property {Function} kill - a function that removes the `drain` callback and\n * empties remaining tasks from the queue forcing it to go idle. No more tasks\n * should be pushed to the queue after calling this function. Invoke with `queue.kill()`.\n */\n\n/**\n * Creates a `queue` object with the specified `concurrency`. Tasks added to the\n * `queue` are processed in parallel (up to the `concurrency` limit). If all\n * `worker`s are in progress, the task is queued until one becomes available.\n * Once a `worker` completes a `task`, that `task`'s callback is called.\n *\n * @name queue\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {AsyncFunction} worker - An async function for processing a queued task.\n * If you want to handle errors from an individual task, pass a callback to\n * `q.push()`. Invoked with (task, callback).\n * @param {number} [concurrency=1] - An `integer` for determining how many\n * `worker` functions should be run in parallel. If omitted, the concurrency\n * defaults to `1`. If the concurrency is `0`, an error is thrown.\n * @returns {module:ControlFlow.QueueObject} A queue object to manage the tasks. Callbacks can\n * attached as certain properties to listen for specific events during the\n * lifecycle of the queue.\n * @example\n *\n * // create a queue object with concurrency 2\n * var q = async.queue(function(task, callback) {\n * console.log('hello ' + task.name);\n * callback();\n * }, 2);\n *\n * // assign a callback\n * q.drain = function() {\n * console.log('all items have been processed');\n * };\n *\n * // add some items to the queue\n * q.push({name: 'foo'}, function(err) {\n * console.log('finished processing foo');\n * });\n * q.push({name: 'bar'}, function (err) {\n * console.log('finished processing bar');\n * });\n *\n * // add some items to the queue (batch-wise)\n * q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function(err) {\n * console.log('finished processing item');\n * });\n *\n * // add some items to the front of the queue\n * q.unshift({name: 'bar'}, function (err) {\n * console.log('finished processing bar');\n * });\n */\nvar queue$1 = function (worker, concurrency) {\n var _worker = wrapAsync(worker);\n return queue(function (items, cb) {\n _worker(items[0], cb);\n }, concurrency, 1);\n};\n\n/**\n * The same as [async.queue]{@link module:ControlFlow.queue} only tasks are assigned a priority and\n * completed in ascending priority order.\n *\n * @name priorityQueue\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.queue]{@link module:ControlFlow.queue}\n * @category Control Flow\n * @param {AsyncFunction} worker - An async function for processing a queued task.\n * If you want to handle errors from an individual task, pass a callback to\n * `q.push()`.\n * Invoked with (task, callback).\n * @param {number} concurrency - An `integer` for determining how many `worker`\n * functions should be run in parallel. If omitted, the concurrency defaults to\n * `1`. If the concurrency is `0`, an error is thrown.\n * @returns {module:ControlFlow.QueueObject} A priorityQueue object to manage the tasks. There are two\n * differences between `queue` and `priorityQueue` objects:\n * * `push(task, priority, [callback])` - `priority` should be a number. If an\n * array of `tasks` is given, all tasks will be assigned the same priority.\n * * The `unshift` method was removed.\n */\nvar priorityQueue = function(worker, concurrency) {\n // Start with a normal queue\n var q = queue$1(worker, concurrency);\n\n // Override push to accept second parameter representing priority\n q.push = function(data, priority, callback) {\n if (callback == null) callback = noop;\n if (typeof callback !== 'function') {\n throw new Error('task callback must be a function');\n }\n q.started = true;\n if (!isArray(data)) {\n data = [data];\n }\n if (data.length === 0) {\n // call drain immediately if there are no tasks\n return setImmediate$1(function() {\n q.drain();\n });\n }\n\n priority = priority || 0;\n var nextNode = q._tasks.head;\n while (nextNode && priority >= nextNode.priority) {\n nextNode = nextNode.next;\n }\n\n for (var i = 0, l = data.length; i < l; i++) {\n var item = {\n data: data[i],\n priority: priority,\n callback: callback\n };\n\n if (nextNode) {\n q._tasks.insertBefore(nextNode, item);\n } else {\n q._tasks.push(item);\n }\n }\n setImmediate$1(q.process);\n };\n\n // Remove unshift function\n delete q.unshift;\n\n return q;\n};\n\n/**\n * Runs the `tasks` array of functions in parallel, without waiting until the\n * previous function has completed. Once any of the `tasks` complete or pass an\n * error to its callback, the main `callback` is immediately called. It's\n * equivalent to `Promise.race()`.\n *\n * @name race\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array} tasks - An array containing [async functions]{@link AsyncFunction}\n * to run. Each function can complete with an optional `result` value.\n * @param {Function} callback - A callback to run once any of the functions have\n * completed. This function gets an error or result from the first function that\n * completed. Invoked with (err, result).\n * @returns undefined\n * @example\n *\n * async.race([\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'two');\n * }, 100);\n * }\n * ],\n * // main callback\n * function(err, result) {\n * // the result will be equal to 'two' as it finishes earlier\n * });\n */\nfunction race(tasks, callback) {\n callback = once(callback || noop);\n if (!isArray(tasks)) return callback(new TypeError('First argument to race must be an array of functions'));\n if (!tasks.length) return callback();\n for (var i = 0, l = tasks.length; i < l; i++) {\n wrapAsync(tasks[i])(callback);\n }\n}\n\n/**\n * Same as [`reduce`]{@link module:Collections.reduce}, only operates on `array` in reverse order.\n *\n * @name reduceRight\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.reduce]{@link module:Collections.reduce}\n * @alias foldr\n * @category Collection\n * @param {Array} array - A collection to iterate over.\n * @param {*} memo - The initial state of the reduction.\n * @param {AsyncFunction} iteratee - A function applied to each item in the\n * array to produce the next step in the reduction.\n * The `iteratee` should complete with the next state of the reduction.\n * If the iteratee complete with an error, the reduction is stopped and the\n * main `callback` is immediately called with the error.\n * Invoked with (memo, item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Result is the reduced value. Invoked with\n * (err, result).\n */\nfunction reduceRight (array, memo, iteratee, callback) {\n var reversed = slice(array).reverse();\n reduce(reversed, memo, iteratee, callback);\n}\n\n/**\n * Wraps the async function in another function that always completes with a\n * result object, even when it errors.\n *\n * The result object has either the property `error` or `value`.\n *\n * @name reflect\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} fn - The async function you want to wrap\n * @returns {Function} - A function that always passes null to it's callback as\n * the error. The second argument to the callback will be an `object` with\n * either an `error` or a `value` property.\n * @example\n *\n * async.parallel([\n * async.reflect(function(callback) {\n * // do some stuff ...\n * callback(null, 'one');\n * }),\n * async.reflect(function(callback) {\n * // do some more stuff but error ...\n * callback('bad stuff happened');\n * }),\n * async.reflect(function(callback) {\n * // do some more stuff ...\n * callback(null, 'two');\n * })\n * ],\n * // optional callback\n * function(err, results) {\n * // values\n * // results[0].value = 'one'\n * // results[1].error = 'bad stuff happened'\n * // results[2].value = 'two'\n * });\n */\nfunction reflect(fn) {\n var _fn = wrapAsync(fn);\n return initialParams(function reflectOn(args, reflectCallback) {\n args.push(function callback(error, cbArg) {\n if (error) {\n reflectCallback(null, { error: error });\n } else {\n var value;\n if (arguments.length <= 2) {\n value = cbArg;\n } else {\n value = slice(arguments, 1);\n }\n reflectCallback(null, { value: value });\n }\n });\n\n return _fn.apply(this, args);\n });\n}\n\n/**\n * A helper function that wraps an array or an object of functions with `reflect`.\n *\n * @name reflectAll\n * @static\n * @memberOf module:Utils\n * @method\n * @see [async.reflect]{@link module:Utils.reflect}\n * @category Util\n * @param {Array|Object|Iterable} tasks - The collection of\n * [async functions]{@link AsyncFunction} to wrap in `async.reflect`.\n * @returns {Array} Returns an array of async functions, each wrapped in\n * `async.reflect`\n * @example\n *\n * let tasks = [\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * // do some more stuff but error ...\n * callback(new Error('bad stuff happened'));\n * },\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'two');\n * }, 100);\n * }\n * ];\n *\n * async.parallel(async.reflectAll(tasks),\n * // optional callback\n * function(err, results) {\n * // values\n * // results[0].value = 'one'\n * // results[1].error = Error('bad stuff happened')\n * // results[2].value = 'two'\n * });\n *\n * // an example using an object instead of an array\n * let tasks = {\n * one: function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * two: function(callback) {\n * callback('two');\n * },\n * three: function(callback) {\n * setTimeout(function() {\n * callback(null, 'three');\n * }, 100);\n * }\n * };\n *\n * async.parallel(async.reflectAll(tasks),\n * // optional callback\n * function(err, results) {\n * // values\n * // results.one.value = 'one'\n * // results.two.error = 'two'\n * // results.three.value = 'three'\n * });\n */\nfunction reflectAll(tasks) {\n var results;\n if (isArray(tasks)) {\n results = arrayMap(tasks, reflect);\n } else {\n results = {};\n baseForOwn(tasks, function(task, key) {\n results[key] = reflect.call(this, task);\n });\n }\n return results;\n}\n\nfunction reject$1(eachfn, arr, iteratee, callback) {\n _filter(eachfn, arr, function(value, cb) {\n iteratee(value, function(err, v) {\n cb(err, !v);\n });\n }, callback);\n}\n\n/**\n * The opposite of [`filter`]{@link module:Collections.filter}. Removes values that pass an `async` truth test.\n *\n * @name reject\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.filter]{@link module:Collections.filter}\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {Function} iteratee - An async truth test to apply to each item in\n * `coll`.\n * The should complete with a boolean value as its `result`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results).\n * @example\n *\n * async.reject(['file1','file2','file3'], function(filePath, callback) {\n * fs.access(filePath, function(err) {\n * callback(null, !err)\n * });\n * }, function(err, results) {\n * // results now equals an array of missing files\n * createFiles(results);\n * });\n */\nvar reject = doParallel(reject$1);\n\n/**\n * The same as [`reject`]{@link module:Collections.reject} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name rejectLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.reject]{@link module:Collections.reject}\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {Function} iteratee - An async truth test to apply to each item in\n * `coll`.\n * The should complete with a boolean value as its `result`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results).\n */\nvar rejectLimit = doParallelLimit(reject$1);\n\n/**\n * The same as [`reject`]{@link module:Collections.reject} but runs only a single async operation at a time.\n *\n * @name rejectSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.reject]{@link module:Collections.reject}\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {Function} iteratee - An async truth test to apply to each item in\n * `coll`.\n * The should complete with a boolean value as its `result`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Invoked with (err, results).\n */\nvar rejectSeries = doLimit(rejectLimit, 1);\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant$1(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * Attempts to get a successful response from `task` no more than `times` times\n * before returning an error. If the task is successful, the `callback` will be\n * passed the result of the successful task. If all attempts fail, the callback\n * will be passed the error and result (if any) of the final attempt.\n *\n * @name retry\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @see [async.retryable]{@link module:ControlFlow.retryable}\n * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - Can be either an\n * object with `times` and `interval` or a number.\n * * `times` - The number of attempts to make before giving up. The default\n * is `5`.\n * * `interval` - The time to wait between retries, in milliseconds. The\n * default is `0`. The interval may also be specified as a function of the\n * retry count (see example).\n * * `errorFilter` - An optional synchronous function that is invoked on\n * erroneous result. If it returns `true` the retry attempts will continue;\n * if the function returns `false` the retry flow is aborted with the current\n * attempt's error and result being returned to the final callback.\n * Invoked with (err).\n * * If `opts` is a number, the number specifies the number of times to retry,\n * with the default interval of `0`.\n * @param {AsyncFunction} task - An async function to retry.\n * Invoked with (callback).\n * @param {Function} [callback] - An optional callback which is called when the\n * task has succeeded, or after the final failed attempt. It receives the `err`\n * and `result` arguments of the last attempt at completing the `task`. Invoked\n * with (err, results).\n *\n * @example\n *\n * // The `retry` function can be used as a stand-alone control flow by passing\n * // a callback, as shown below:\n *\n * // try calling apiMethod 3 times\n * async.retry(3, apiMethod, function(err, result) {\n * // do something with the result\n * });\n *\n * // try calling apiMethod 3 times, waiting 200 ms between each retry\n * async.retry({times: 3, interval: 200}, apiMethod, function(err, result) {\n * // do something with the result\n * });\n *\n * // try calling apiMethod 10 times with exponential backoff\n * // (i.e. intervals of 100, 200, 400, 800, 1600, ... milliseconds)\n * async.retry({\n * times: 10,\n * interval: function(retryCount) {\n * return 50 * Math.pow(2, retryCount);\n * }\n * }, apiMethod, function(err, result) {\n * // do something with the result\n * });\n *\n * // try calling apiMethod the default 5 times no delay between each retry\n * async.retry(apiMethod, function(err, result) {\n * // do something with the result\n * });\n *\n * // try calling apiMethod only when error condition satisfies, all other\n * // errors will abort the retry control flow and return to final callback\n * async.retry({\n * errorFilter: function(err) {\n * return err.message === 'Temporary error'; // only retry on a specific error\n * }\n * }, apiMethod, function(err, result) {\n * // do something with the result\n * });\n *\n * // to retry individual methods that are not as reliable within other\n * // control flow functions, use the `retryable` wrapper:\n * async.auto({\n * users: api.getUsers.bind(api),\n * payments: async.retryable(3, api.getPayments.bind(api))\n * }, function(err, results) {\n * // do something with the results\n * });\n *\n */\nfunction retry(opts, task, callback) {\n var DEFAULT_TIMES = 5;\n var DEFAULT_INTERVAL = 0;\n\n var options = {\n times: DEFAULT_TIMES,\n intervalFunc: constant$1(DEFAULT_INTERVAL)\n };\n\n function parseTimes(acc, t) {\n if (typeof t === 'object') {\n acc.times = +t.times || DEFAULT_TIMES;\n\n acc.intervalFunc = typeof t.interval === 'function' ?\n t.interval :\n constant$1(+t.interval || DEFAULT_INTERVAL);\n\n acc.errorFilter = t.errorFilter;\n } else if (typeof t === 'number' || typeof t === 'string') {\n acc.times = +t || DEFAULT_TIMES;\n } else {\n throw new Error(\"Invalid arguments for async.retry\");\n }\n }\n\n if (arguments.length < 3 && typeof opts === 'function') {\n callback = task || noop;\n task = opts;\n } else {\n parseTimes(options, opts);\n callback = callback || noop;\n }\n\n if (typeof task !== 'function') {\n throw new Error(\"Invalid arguments for async.retry\");\n }\n\n var _task = wrapAsync(task);\n\n var attempt = 1;\n function retryAttempt() {\n _task(function(err) {\n if (err && attempt++ < options.times &&\n (typeof options.errorFilter != 'function' ||\n options.errorFilter(err))) {\n setTimeout(retryAttempt, options.intervalFunc(attempt));\n } else {\n callback.apply(null, arguments);\n }\n });\n }\n\n retryAttempt();\n}\n\n/**\n * A close relative of [`retry`]{@link module:ControlFlow.retry}. This method\n * wraps a task and makes it retryable, rather than immediately calling it\n * with retries.\n *\n * @name retryable\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.retry]{@link module:ControlFlow.retry}\n * @category Control Flow\n * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - optional\n * options, exactly the same as from `retry`\n * @param {AsyncFunction} task - the asynchronous function to wrap.\n * This function will be passed any arguments passed to the returned wrapper.\n * Invoked with (...args, callback).\n * @returns {AsyncFunction} The wrapped function, which when invoked, will\n * retry on an error, based on the parameters specified in `opts`.\n * This function will accept the same parameters as `task`.\n * @example\n *\n * async.auto({\n * dep1: async.retryable(3, getFromFlakyService),\n * process: [\"dep1\", async.retryable(3, function (results, cb) {\n * maybeProcessData(results.dep1, cb);\n * })]\n * }, callback);\n */\nvar retryable = function (opts, task) {\n if (!task) {\n task = opts;\n opts = null;\n }\n var _task = wrapAsync(task);\n return initialParams(function (args, callback) {\n function taskFn(cb) {\n _task.apply(null, args.concat(cb));\n }\n\n if (opts) retry(opts, taskFn, callback);\n else retry(taskFn, callback);\n\n });\n};\n\n/**\n * Run the functions in the `tasks` collection in series, each one running once\n * the previous function has completed. If any functions in the series pass an\n * error to its callback, no more functions are run, and `callback` is\n * immediately called with the value of the error. Otherwise, `callback`\n * receives an array of results when `tasks` have completed.\n *\n * It is also possible to use an object instead of an array. Each property will\n * be run as a function, and the results will be passed to the final `callback`\n * as an object instead of an array. This can be a more readable way of handling\n * results from {@link async.series}.\n *\n * **Note** that while many implementations preserve the order of object\n * properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6)\n * explicitly states that\n *\n * > The mechanics and order of enumerating the properties is not specified.\n *\n * So if you rely on the order in which your series of functions are executed,\n * and want this to work on all platforms, consider using an array.\n *\n * @name series\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|Object} tasks - A collection containing\n * [async functions]{@link AsyncFunction} to run in series.\n * Each function can complete with any number of optional `result` values.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed. This function gets a results array (or object)\n * containing all the result arguments passed to the `task` callbacks. Invoked\n * with (err, result).\n * @example\n * async.series([\n * function(callback) {\n * // do some stuff ...\n * callback(null, 'one');\n * },\n * function(callback) {\n * // do some more stuff ...\n * callback(null, 'two');\n * }\n * ],\n * // optional callback\n * function(err, results) {\n * // results is now equal to ['one', 'two']\n * });\n *\n * async.series({\n * one: function(callback) {\n * setTimeout(function() {\n * callback(null, 1);\n * }, 200);\n * },\n * two: function(callback){\n * setTimeout(function() {\n * callback(null, 2);\n * }, 100);\n * }\n * }, function(err, results) {\n * // results is now equal to: {one: 1, two: 2}\n * });\n */\nfunction series(tasks, callback) {\n _parallel(eachOfSeries, tasks, callback);\n}\n\n/**\n * Returns `true` if at least one element in the `coll` satisfies an async test.\n * If any iteratee call returns `true`, the main `callback` is immediately\n * called.\n *\n * @name some\n * @static\n * @memberOf module:Collections\n * @method\n * @alias any\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collections in parallel.\n * The iteratee should complete with a boolean `result` value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the iteratee functions have finished.\n * Result will be either `true` or `false` depending on the values of the async\n * tests. Invoked with (err, result).\n * @example\n *\n * async.some(['file1','file2','file3'], function(filePath, callback) {\n * fs.access(filePath, function(err) {\n * callback(null, !err)\n * });\n * }, function(err, result) {\n * // if result is true then at least one of the files exists\n * });\n */\nvar some = doParallel(_createTester(Boolean, identity));\n\n/**\n * The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time.\n *\n * @name someLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.some]{@link module:Collections.some}\n * @alias anyLimit\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collections in parallel.\n * The iteratee should complete with a boolean `result` value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the iteratee functions have finished.\n * Result will be either `true` or `false` depending on the values of the async\n * tests. Invoked with (err, result).\n */\nvar someLimit = doParallelLimit(_createTester(Boolean, identity));\n\n/**\n * The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time.\n *\n * @name someSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.some]{@link module:Collections.some}\n * @alias anySeries\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n * in the collections in series.\n * The iteratee should complete with a boolean `result` value.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called as soon as any\n * iteratee returns `true`, or after all the iteratee functions have finished.\n * Result will be either `true` or `false` depending on the values of the async\n * tests. Invoked with (err, result).\n */\nvar someSeries = doLimit(someLimit, 1);\n\n/**\n * Sorts a list by the results of running each `coll` value through an async\n * `iteratee`.\n *\n * @name sortBy\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with a value to use as the sort criteria as\n * its `result`.\n * Invoked with (item, callback).\n * @param {Function} callback - A callback which is called after all the\n * `iteratee` functions have finished, or an error occurs. Results is the items\n * from the original `coll` sorted by the values returned by the `iteratee`\n * calls. Invoked with (err, results).\n * @example\n *\n * async.sortBy(['file1','file2','file3'], function(file, callback) {\n * fs.stat(file, function(err, stats) {\n * callback(err, stats.mtime);\n * });\n * }, function(err, results) {\n * // results is now the original array of files sorted by\n * // modified date\n * });\n *\n * // By modifying the callback parameter the\n * // sorting order can be influenced:\n *\n * // ascending order\n * async.sortBy([1,9,3,5], function(x, callback) {\n * callback(null, x);\n * }, function(err,result) {\n * // result callback\n * });\n *\n * // descending order\n * async.sortBy([1,9,3,5], function(x, callback) {\n * callback(null, x*-1); //<- x*-1 instead of x, turns the order around\n * }, function(err,result) {\n * // result callback\n * });\n */\nfunction sortBy (coll, iteratee, callback) {\n var _iteratee = wrapAsync(iteratee);\n map(coll, function (x, callback) {\n _iteratee(x, function (err, criteria) {\n if (err) return callback(err);\n callback(null, {value: x, criteria: criteria});\n });\n }, function (err, results) {\n if (err) return callback(err);\n callback(null, arrayMap(results.sort(comparator), baseProperty('value')));\n });\n\n function comparator(left, right) {\n var a = left.criteria, b = right.criteria;\n return a < b ? -1 : a > b ? 1 : 0;\n }\n}\n\n/**\n * Sets a time limit on an asynchronous function. If the function does not call\n * its callback within the specified milliseconds, it will be called with a\n * timeout error. The code property for the error object will be `'ETIMEDOUT'`.\n *\n * @name timeout\n * @static\n * @memberOf module:Utils\n * @method\n * @category Util\n * @param {AsyncFunction} asyncFn - The async function to limit in time.\n * @param {number} milliseconds - The specified time limit.\n * @param {*} [info] - Any variable you want attached (`string`, `object`, etc)\n * to timeout Error for more information..\n * @returns {AsyncFunction} Returns a wrapped function that can be used with any\n * of the control flow functions.\n * Invoke this function with the same parameters as you would `asyncFunc`.\n * @example\n *\n * function myFunction(foo, callback) {\n * doAsyncTask(foo, function(err, data) {\n * // handle errors\n * if (err) return callback(err);\n *\n * // do some stuff ...\n *\n * // return processed data\n * return callback(null, data);\n * });\n * }\n *\n * var wrapped = async.timeout(myFunction, 1000);\n *\n * // call `wrapped` as you would `myFunction`\n * wrapped({ bar: 'bar' }, function(err, data) {\n * // if `myFunction` takes < 1000 ms to execute, `err`\n * // and `data` will have their expected values\n *\n * // else `err` will be an Error with the code 'ETIMEDOUT'\n * });\n */\nfunction timeout(asyncFn, milliseconds, info) {\n var fn = wrapAsync(asyncFn);\n\n return initialParams(function (args, callback) {\n var timedOut = false;\n var timer;\n\n function timeoutCallback() {\n var name = asyncFn.name || 'anonymous';\n var error = new Error('Callback function \"' + name + '\" timed out.');\n error.code = 'ETIMEDOUT';\n if (info) {\n error.info = info;\n }\n timedOut = true;\n callback(error);\n }\n\n args.push(function () {\n if (!timedOut) {\n callback.apply(null, arguments);\n clearTimeout(timer);\n }\n });\n\n // setup timer and call original function\n timer = setTimeout(timeoutCallback, milliseconds);\n fn.apply(null, args);\n });\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil;\nvar nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\n/**\n * The same as [times]{@link module:ControlFlow.times} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name timesLimit\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.times]{@link module:ControlFlow.times}\n * @category Control Flow\n * @param {number} count - The number of times to run the function.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - The async function to call `n` times.\n * Invoked with the iteration index and a callback: (n, next).\n * @param {Function} callback - see [async.map]{@link module:Collections.map}.\n */\nfunction timeLimit(count, limit, iteratee, callback) {\n var _iteratee = wrapAsync(iteratee);\n mapLimit(baseRange(0, count, 1), limit, _iteratee, callback);\n}\n\n/**\n * Calls the `iteratee` function `n` times, and accumulates results in the same\n * manner you would use with [map]{@link module:Collections.map}.\n *\n * @name times\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.map]{@link module:Collections.map}\n * @category Control Flow\n * @param {number} n - The number of times to run the function.\n * @param {AsyncFunction} iteratee - The async function to call `n` times.\n * Invoked with the iteration index and a callback: (n, next).\n * @param {Function} callback - see {@link module:Collections.map}.\n * @example\n *\n * // Pretend this is some complicated async factory\n * var createUser = function(id, callback) {\n * callback(null, {\n * id: 'user' + id\n * });\n * };\n *\n * // generate 5 users\n * async.times(5, function(n, next) {\n * createUser(n, function(err, user) {\n * next(err, user);\n * });\n * }, function(err, users) {\n * // we should now have 5 users\n * });\n */\nvar times = doLimit(timeLimit, Infinity);\n\n/**\n * The same as [times]{@link module:ControlFlow.times} but runs only a single async operation at a time.\n *\n * @name timesSeries\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.times]{@link module:ControlFlow.times}\n * @category Control Flow\n * @param {number} n - The number of times to run the function.\n * @param {AsyncFunction} iteratee - The async function to call `n` times.\n * Invoked with the iteration index and a callback: (n, next).\n * @param {Function} callback - see {@link module:Collections.map}.\n */\nvar timesSeries = doLimit(timeLimit, 1);\n\n/**\n * A relative of `reduce`. Takes an Object or Array, and iterates over each\n * element in series, each step potentially mutating an `accumulator` value.\n * The type of the accumulator defaults to the type of collection passed in.\n *\n * @name transform\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {*} [accumulator] - The initial state of the transform. If omitted,\n * it will default to an empty Object or Array, depending on the type of `coll`\n * @param {AsyncFunction} iteratee - A function applied to each item in the\n * collection that potentially modifies the accumulator.\n * Invoked with (accumulator, item, key, callback).\n * @param {Function} [callback] - A callback which is called after all the\n * `iteratee` functions have finished. Result is the transformed accumulator.\n * Invoked with (err, result).\n * @example\n *\n * async.transform([1,2,3], function(acc, item, index, callback) {\n * // pointless async:\n * process.nextTick(function() {\n * acc.push(item * 2)\n * callback(null)\n * });\n * }, function(err, result) {\n * // result is now equal to [2, 4, 6]\n * });\n *\n * @example\n *\n * async.transform({a: 1, b: 2, c: 3}, function (obj, val, key, callback) {\n * setImmediate(function () {\n * obj[key] = val * 2;\n * callback();\n * })\n * }, function (err, result) {\n * // result is equal to {a: 2, b: 4, c: 6}\n * })\n */\nfunction transform (coll, accumulator, iteratee, callback) {\n if (arguments.length <= 3) {\n callback = iteratee;\n iteratee = accumulator;\n accumulator = isArray(coll) ? [] : {};\n }\n callback = once(callback || noop);\n var _iteratee = wrapAsync(iteratee);\n\n eachOf(coll, function(v, k, cb) {\n _iteratee(accumulator, v, k, cb);\n }, function(err) {\n callback(err, accumulator);\n });\n}\n\n/**\n * It runs each task in series but stops whenever any of the functions were\n * successful. If one of the tasks were successful, the `callback` will be\n * passed the result of the successful task. If all tasks fail, the callback\n * will be passed the error and result (if any) of the final attempt.\n *\n * @name tryEach\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|Object} tasks - A collection containing functions to\n * run, each function is passed a `callback(err, result)` it must call on\n * completion with an error `err` (which can be `null`) and an optional `result`\n * value.\n * @param {Function} [callback] - An optional callback which is called when one\n * of the tasks has succeeded, or all have failed. It receives the `err` and\n * `result` arguments of the last attempt at completing the `task`. Invoked with\n * (err, results).\n * @example\n * async.tryEach([\n * function getDataFromFirstWebsite(callback) {\n * // Try getting the data from the first website\n * callback(err, data);\n * },\n * function getDataFromSecondWebsite(callback) {\n * // First website failed,\n * // Try getting the data from the backup website\n * callback(err, data);\n * }\n * ],\n * // optional callback\n * function(err, results) {\n * Now do something with the data.\n * });\n *\n */\nfunction tryEach(tasks, callback) {\n var error = null;\n var result;\n callback = callback || noop;\n eachSeries(tasks, function(task, callback) {\n wrapAsync(task)(function (err, res/*, ...args*/) {\n if (arguments.length > 2) {\n result = slice(arguments, 1);\n } else {\n result = res;\n }\n error = err;\n callback(!err);\n });\n }, function () {\n callback(error, result);\n });\n}\n\n/**\n * Undoes a [memoize]{@link module:Utils.memoize}d function, reverting it to the original,\n * unmemoized form. Handy for testing.\n *\n * @name unmemoize\n * @static\n * @memberOf module:Utils\n * @method\n * @see [async.memoize]{@link module:Utils.memoize}\n * @category Util\n * @param {AsyncFunction} fn - the memoized function\n * @returns {AsyncFunction} a function that calls the original unmemoized function\n */\nfunction unmemoize(fn) {\n return function () {\n return (fn.unmemoized || fn).apply(null, arguments);\n };\n}\n\n/**\n * Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when\n * stopped, or an error occurs.\n *\n * @name whilst\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Function} test - synchronous truth test to perform before each\n * execution of `iteratee`. Invoked with ().\n * @param {AsyncFunction} iteratee - An async function which is called each time\n * `test` passes. Invoked with (callback).\n * @param {Function} [callback] - A callback which is called after the test\n * function has failed and repeated execution of `iteratee` has stopped. `callback`\n * will be passed an error and any arguments passed to the final `iteratee`'s\n * callback. Invoked with (err, [results]);\n * @returns undefined\n * @example\n *\n * var count = 0;\n * async.whilst(\n * function() { return count < 5; },\n * function(callback) {\n * count++;\n * setTimeout(function() {\n * callback(null, count);\n * }, 1000);\n * },\n * function (err, n) {\n * // 5 seconds have passed, n = 5\n * }\n * );\n */\nfunction whilst(test, iteratee, callback) {\n callback = onlyOnce(callback || noop);\n var _iteratee = wrapAsync(iteratee);\n if (!test()) return callback(null);\n var next = function(err/*, ...args*/) {\n if (err) return callback(err);\n if (test()) return _iteratee(next);\n var args = slice(arguments, 1);\n callback.apply(null, [null].concat(args));\n };\n _iteratee(next);\n}\n\n/**\n * Repeatedly call `iteratee` until `test` returns `true`. Calls `callback` when\n * stopped, or an error occurs. `callback` will be passed an error and any\n * arguments passed to the final `iteratee`'s callback.\n *\n * The inverse of [whilst]{@link module:ControlFlow.whilst}.\n *\n * @name until\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @see [async.whilst]{@link module:ControlFlow.whilst}\n * @category Control Flow\n * @param {Function} test - synchronous truth test to perform before each\n * execution of `iteratee`. Invoked with ().\n * @param {AsyncFunction} iteratee - An async function which is called each time\n * `test` fails. Invoked with (callback).\n * @param {Function} [callback] - A callback which is called after the test\n * function has passed and repeated execution of `iteratee` has stopped. `callback`\n * will be passed an error and any arguments passed to the final `iteratee`'s\n * callback. Invoked with (err, [results]);\n */\nfunction until(test, iteratee, callback) {\n whilst(function() {\n return !test.apply(this, arguments);\n }, iteratee, callback);\n}\n\n/**\n * Runs the `tasks` array of functions in series, each passing their results to\n * the next in the array. However, if any of the `tasks` pass an error to their\n * own callback, the next function is not executed, and the main `callback` is\n * immediately called with the error.\n *\n * @name waterfall\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array} tasks - An array of [async functions]{@link AsyncFunction}\n * to run.\n * Each function should complete with any number of `result` values.\n * The `result` values will be passed as arguments, in order, to the next task.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed. This will be passed the results of the last task's\n * callback. Invoked with (err, [results]).\n * @returns undefined\n * @example\n *\n * async.waterfall([\n * function(callback) {\n * callback(null, 'one', 'two');\n * },\n * function(arg1, arg2, callback) {\n * // arg1 now equals 'one' and arg2 now equals 'two'\n * callback(null, 'three');\n * },\n * function(arg1, callback) {\n * // arg1 now equals 'three'\n * callback(null, 'done');\n * }\n * ], function (err, result) {\n * // result now equals 'done'\n * });\n *\n * // Or, with named functions:\n * async.waterfall([\n * myFirstFunction,\n * mySecondFunction,\n * myLastFunction,\n * ], function (err, result) {\n * // result now equals 'done'\n * });\n * function myFirstFunction(callback) {\n * callback(null, 'one', 'two');\n * }\n * function mySecondFunction(arg1, arg2, callback) {\n * // arg1 now equals 'one' and arg2 now equals 'two'\n * callback(null, 'three');\n * }\n * function myLastFunction(arg1, callback) {\n * // arg1 now equals 'three'\n * callback(null, 'done');\n * }\n */\nvar waterfall = function(tasks, callback) {\n callback = once(callback || noop);\n if (!isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions'));\n if (!tasks.length) return callback();\n var taskIndex = 0;\n\n function nextTask(args) {\n var task = wrapAsync(tasks[taskIndex++]);\n args.push(onlyOnce(next));\n task.apply(null, args);\n }\n\n function next(err/*, ...args*/) {\n if (err || taskIndex === tasks.length) {\n return callback.apply(null, arguments);\n }\n nextTask(slice(arguments, 1));\n }\n\n nextTask([]);\n};\n\n/**\n * An \"async function\" in the context of Async is an asynchronous function with\n * a variable number of parameters, with the final parameter being a callback.\n * (`function (arg1, arg2, ..., callback) {}`)\n * The final callback is of the form `callback(err, results...)`, which must be\n * called once the function is completed. The callback should be called with a\n * Error as its first argument to signal that an error occurred.\n * Otherwise, if no error occurred, it should be called with `null` as the first\n * argument, and any additional `result` arguments that may apply, to signal\n * successful completion.\n * The callback must be called exactly once, ideally on a later tick of the\n * JavaScript event loop.\n *\n * This type of function is also referred to as a \"Node-style async function\",\n * or a \"continuation passing-style function\" (CPS). Most of the methods of this\n * library are themselves CPS/Node-style async functions, or functions that\n * return CPS/Node-style async functions.\n *\n * Wherever we accept a Node-style async function, we also directly accept an\n * [ES2017 `async` function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function}.\n * In this case, the `async` function will not be passed a final callback\n * argument, and any thrown error will be used as the `err` argument of the\n * implicit callback, and the return value will be used as the `result` value.\n * (i.e. a `rejected` of the returned Promise becomes the `err` callback\n * argument, and a `resolved` value becomes the `result`.)\n *\n * Note, due to JavaScript limitations, we can only detect native `async`\n * functions and not transpilied implementations.\n * Your environment must have `async`/`await` support for this to work.\n * (e.g. Node > v7.6, or a recent version of a modern browser).\n * If you are using `async` functions through a transpiler (e.g. Babel), you\n * must still wrap the function with [asyncify]{@link module:Utils.asyncify},\n * because the `async function` will be compiled to an ordinary function that\n * returns a promise.\n *\n * @typedef {Function} AsyncFunction\n * @static\n */\n\n/**\n * Async is a utility module which provides straight-forward, powerful functions\n * for working with asynchronous JavaScript. Although originally designed for\n * use with [Node.js](http://nodejs.org) and installable via\n * `npm install --save async`, it can also be used directly in the browser.\n * @module async\n * @see AsyncFunction\n */\n\n\n/**\n * A collection of `async` functions for manipulating collections, such as\n * arrays and objects.\n * @module Collections\n */\n\n/**\n * A collection of `async` functions for controlling the flow through a script.\n * @module ControlFlow\n */\n\n/**\n * A collection of `async` utility functions.\n * @module Utils\n */\n\nvar index = {\n apply: apply,\n applyEach: applyEach,\n applyEachSeries: applyEachSeries,\n asyncify: asyncify,\n auto: auto,\n autoInject: autoInject,\n cargo: cargo,\n compose: compose,\n concat: concat,\n concatLimit: concatLimit,\n concatSeries: concatSeries,\n constant: constant,\n detect: detect,\n detectLimit: detectLimit,\n detectSeries: detectSeries,\n dir: dir,\n doDuring: doDuring,\n doUntil: doUntil,\n doWhilst: doWhilst,\n during: during,\n each: eachLimit,\n eachLimit: eachLimit$1,\n eachOf: eachOf,\n eachOfLimit: eachOfLimit,\n eachOfSeries: eachOfSeries,\n eachSeries: eachSeries,\n ensureAsync: ensureAsync,\n every: every,\n everyLimit: everyLimit,\n everySeries: everySeries,\n filter: filter,\n filterLimit: filterLimit,\n filterSeries: filterSeries,\n forever: forever,\n groupBy: groupBy,\n groupByLimit: groupByLimit,\n groupBySeries: groupBySeries,\n log: log,\n map: map,\n mapLimit: mapLimit,\n mapSeries: mapSeries,\n mapValues: mapValues,\n mapValuesLimit: mapValuesLimit,\n mapValuesSeries: mapValuesSeries,\n memoize: memoize,\n nextTick: nextTick,\n parallel: parallelLimit,\n parallelLimit: parallelLimit$1,\n priorityQueue: priorityQueue,\n queue: queue$1,\n race: race,\n reduce: reduce,\n reduceRight: reduceRight,\n reflect: reflect,\n reflectAll: reflectAll,\n reject: reject,\n rejectLimit: rejectLimit,\n rejectSeries: rejectSeries,\n retry: retry,\n retryable: retryable,\n seq: seq,\n series: series,\n setImmediate: setImmediate$1,\n some: some,\n someLimit: someLimit,\n someSeries: someSeries,\n sortBy: sortBy,\n timeout: timeout,\n times: times,\n timesLimit: timeLimit,\n timesSeries: timesSeries,\n transform: transform,\n tryEach: tryEach,\n unmemoize: unmemoize,\n until: until,\n waterfall: waterfall,\n whilst: whilst,\n\n // aliases\n all: every,\n allLimit: everyLimit,\n allSeries: everySeries,\n any: some,\n anyLimit: someLimit,\n anySeries: someSeries,\n find: detect,\n findLimit: detectLimit,\n findSeries: detectSeries,\n forEach: eachLimit,\n forEachSeries: eachSeries,\n forEachLimit: eachLimit$1,\n forEachOf: eachOf,\n forEachOfSeries: eachOfSeries,\n forEachOfLimit: eachOfLimit,\n inject: reduce,\n foldl: reduce,\n foldr: reduceRight,\n select: filter,\n selectLimit: filterLimit,\n selectSeries: filterSeries,\n wrapSync: asyncify\n};\n\nexports['default'] = index;\nexports.apply = apply;\nexports.applyEach = applyEach;\nexports.applyEachSeries = applyEachSeries;\nexports.asyncify = asyncify;\nexports.auto = auto;\nexports.autoInject = autoInject;\nexports.cargo = cargo;\nexports.compose = compose;\nexports.concat = concat;\nexports.concatLimit = concatLimit;\nexports.concatSeries = concatSeries;\nexports.constant = constant;\nexports.detect = detect;\nexports.detectLimit = detectLimit;\nexports.detectSeries = detectSeries;\nexports.dir = dir;\nexports.doDuring = doDuring;\nexports.doUntil = doUntil;\nexports.doWhilst = doWhilst;\nexports.during = during;\nexports.each = eachLimit;\nexports.eachLimit = eachLimit$1;\nexports.eachOf = eachOf;\nexports.eachOfLimit = eachOfLimit;\nexports.eachOfSeries = eachOfSeries;\nexports.eachSeries = eachSeries;\nexports.ensureAsync = ensureAsync;\nexports.every = every;\nexports.everyLimit = everyLimit;\nexports.everySeries = everySeries;\nexports.filter = filter;\nexports.filterLimit = filterLimit;\nexports.filterSeries = filterSeries;\nexports.forever = forever;\nexports.groupBy = groupBy;\nexports.groupByLimit = groupByLimit;\nexports.groupBySeries = groupBySeries;\nexports.log = log;\nexports.map = map;\nexports.mapLimit = mapLimit;\nexports.mapSeries = mapSeries;\nexports.mapValues = mapValues;\nexports.mapValuesLimit = mapValuesLimit;\nexports.mapValuesSeries = mapValuesSeries;\nexports.memoize = memoize;\nexports.nextTick = nextTick;\nexports.parallel = parallelLimit;\nexports.parallelLimit = parallelLimit$1;\nexports.priorityQueue = priorityQueue;\nexports.queue = queue$1;\nexports.race = race;\nexports.reduce = reduce;\nexports.reduceRight = reduceRight;\nexports.reflect = reflect;\nexports.reflectAll = reflectAll;\nexports.reject = reject;\nexports.rejectLimit = rejectLimit;\nexports.rejectSeries = rejectSeries;\nexports.retry = retry;\nexports.retryable = retryable;\nexports.seq = seq;\nexports.series = series;\nexports.setImmediate = setImmediate$1;\nexports.some = some;\nexports.someLimit = someLimit;\nexports.someSeries = someSeries;\nexports.sortBy = sortBy;\nexports.timeout = timeout;\nexports.times = times;\nexports.timesLimit = timeLimit;\nexports.timesSeries = timesSeries;\nexports.transform = transform;\nexports.tryEach = tryEach;\nexports.unmemoize = unmemoize;\nexports.until = until;\nexports.waterfall = waterfall;\nexports.whilst = whilst;\nexports.all = every;\nexports.allLimit = everyLimit;\nexports.allSeries = everySeries;\nexports.any = some;\nexports.anyLimit = someLimit;\nexports.anySeries = someSeries;\nexports.find = detect;\nexports.findLimit = detectLimit;\nexports.findSeries = detectSeries;\nexports.forEach = eachLimit;\nexports.forEachSeries = eachSeries;\nexports.forEachLimit = eachLimit$1;\nexports.forEachOf = eachOf;\nexports.forEachOfSeries = eachOfSeries;\nexports.forEachOfLimit = eachOfLimit;\nexports.inject = reduce;\nexports.foldl = reduce;\nexports.foldr = reduceRight;\nexports.select = filter;\nexports.selectLimit = filterLimit;\nexports.selectSeries = filterSeries;\nexports.wrapSync = asyncify;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","\n/*!\n * Copyright 2010 LearnBoost \n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Module dependencies.\n */\n\nvar crypto = require('crypto')\n , parse = require('url').parse\n ;\n\n/**\n * Valid keys.\n */\n\nvar keys = \n [ 'acl'\n , 'location'\n , 'logging'\n , 'notification'\n , 'partNumber'\n , 'policy'\n , 'requestPayment'\n , 'torrent'\n , 'uploadId'\n , 'uploads'\n , 'versionId'\n , 'versioning'\n , 'versions'\n , 'website'\n ]\n\n/**\n * Return an \"Authorization\" header value with the given `options`\n * in the form of \"AWS :\"\n *\n * @param {Object} options\n * @return {String}\n * @api private\n */\n\nfunction authorization (options) {\n return 'AWS ' + options.key + ':' + sign(options)\n}\n\nmodule.exports = authorization\nmodule.exports.authorization = authorization\n\n/**\n * Simple HMAC-SHA1 Wrapper\n *\n * @param {Object} options\n * @return {String}\n * @api private\n */ \n\nfunction hmacSha1 (options) {\n return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64')\n}\n\nmodule.exports.hmacSha1 = hmacSha1\n\n/**\n * Create a base64 sha1 HMAC for `options`. \n * \n * @param {Object} options\n * @return {String}\n * @api private\n */\n\nfunction sign (options) {\n options.message = stringToSign(options)\n return hmacSha1(options)\n}\nmodule.exports.sign = sign\n\n/**\n * Create a base64 sha1 HMAC for `options`. \n *\n * Specifically to be used with S3 presigned URLs\n * \n * @param {Object} options\n * @return {String}\n * @api private\n */\n\nfunction signQuery (options) {\n options.message = queryStringToSign(options)\n return hmacSha1(options)\n}\nmodule.exports.signQuery= signQuery\n\n/**\n * Return a string for sign() with the given `options`.\n *\n * Spec:\n * \n * \\n\n * \\n\n * \\n\n * \\n\n * [headers\\n]\n * \n *\n * @param {Object} options\n * @return {String}\n * @api private\n */\n\nfunction stringToSign (options) {\n var headers = options.amazonHeaders || ''\n if (headers) headers += '\\n'\n var r = \n [ options.verb\n , options.md5\n , options.contentType\n , options.date ? options.date.toUTCString() : ''\n , headers + options.resource\n ]\n return r.join('\\n')\n}\nmodule.exports.stringToSign = stringToSign\n\n/**\n * Return a string for sign() with the given `options`, but is meant exclusively\n * for S3 presigned URLs\n *\n * Spec:\n * \n * \\n\n * \n *\n * @param {Object} options\n * @return {String}\n * @api private\n */\n\nfunction queryStringToSign (options){\n return 'GET\\n\\n\\n' + options.date + '\\n' + options.resource\n}\nmodule.exports.queryStringToSign = queryStringToSign\n\n/**\n * Perform the following:\n *\n * - ignore non-amazon headers\n * - lowercase fields\n * - sort lexicographically\n * - trim whitespace between \":\"\n * - join with newline\n *\n * @param {Object} headers\n * @return {String}\n * @api private\n */\n\nfunction canonicalizeHeaders (headers) {\n var buf = []\n , fields = Object.keys(headers)\n ;\n for (var i = 0, len = fields.length; i < len; ++i) {\n var field = fields[i]\n , val = headers[field]\n , field = field.toLowerCase()\n ;\n if (0 !== field.indexOf('x-amz')) continue\n buf.push(field + ':' + val)\n }\n return buf.sort().join('\\n')\n}\nmodule.exports.canonicalizeHeaders = canonicalizeHeaders\n\n/**\n * Perform the following:\n *\n * - ignore non sub-resources\n * - sort lexicographically\n *\n * @param {String} resource\n * @return {String}\n * @api private\n */\n\nfunction canonicalizeResource (resource) {\n var url = parse(resource, true)\n , path = url.pathname\n , buf = []\n ;\n\n Object.keys(url.query).forEach(function(key){\n if (!~keys.indexOf(key)) return\n var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key])\n buf.push(key + val)\n })\n\n return path + (buf.length ? '?' + buf.sort().join('&') : '')\n}\nmodule.exports.canonicalizeResource = canonicalizeResource\n","var aws4 = exports,\n url = require('url'),\n querystring = require('querystring'),\n crypto = require('crypto'),\n lru = require('./lru'),\n credentialsCache = lru(1000)\n\n// http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html\n\nfunction hmac(key, string, encoding) {\n return crypto.createHmac('sha256', key).update(string, 'utf8').digest(encoding)\n}\n\nfunction hash(string, encoding) {\n return crypto.createHash('sha256').update(string, 'utf8').digest(encoding)\n}\n\n// This function assumes the string has already been percent encoded\nfunction encodeRfc3986(urlEncodedString) {\n return urlEncodedString.replace(/[!'()*]/g, function(c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\nfunction encodeRfc3986Full(str) {\n return encodeRfc3986(encodeURIComponent(str))\n}\n\n// A bit of a combination of:\n// https://github.com/aws/aws-sdk-java-v2/blob/dc695de6ab49ad03934e1b02e7263abbd2354be0/core/auth/src/main/java/software/amazon/awssdk/auth/signer/internal/AbstractAws4Signer.java#L59\n// https://github.com/aws/aws-sdk-js/blob/18cb7e5b463b46239f9fdd4a65e2ff8c81831e8f/lib/signers/v4.js#L191-L199\n// https://github.com/mhart/aws4fetch/blob/b3aed16b6f17384cf36ea33bcba3c1e9f3bdfefd/src/main.js#L25-L34\nvar HEADERS_TO_IGNORE = {\n 'authorization': true,\n 'connection': true,\n 'x-amzn-trace-id': true,\n 'user-agent': true,\n 'expect': true,\n 'presigned-expires': true,\n 'range': true,\n}\n\n// request: { path | body, [host], [method], [headers], [service], [region] }\n// credentials: { accessKeyId, secretAccessKey, [sessionToken] }\nfunction RequestSigner(request, credentials) {\n\n if (typeof request === 'string') request = url.parse(request)\n\n var headers = request.headers = (request.headers || {}),\n hostParts = (!this.service || !this.region) && this.matchHost(request.hostname || request.host || headers.Host || headers.host)\n\n this.request = request\n this.credentials = credentials || this.defaultCredentials()\n\n this.service = request.service || hostParts[0] || ''\n this.region = request.region || hostParts[1] || 'us-east-1'\n\n // SES uses a different domain from the service name\n if (this.service === 'email') this.service = 'ses'\n\n if (!request.method && request.body)\n request.method = 'POST'\n\n if (!headers.Host && !headers.host) {\n headers.Host = request.hostname || request.host || this.createHost()\n\n // If a port is specified explicitly, use it as is\n if (request.port)\n headers.Host += ':' + request.port\n }\n if (!request.hostname && !request.host)\n request.hostname = headers.Host || headers.host\n\n this.isCodeCommitGit = this.service === 'codecommit' && request.method === 'GIT'\n\n this.extraHeadersToIgnore = request.extraHeadersToIgnore || Object.create(null)\n this.extraHeadersToInclude = request.extraHeadersToInclude || Object.create(null)\n}\n\nRequestSigner.prototype.matchHost = function(host) {\n var match = (host || '').match(/([^\\.]+)\\.(?:([^\\.]*)\\.)?amazonaws\\.com(\\.cn)?$/)\n var hostParts = (match || []).slice(1, 3)\n\n // ES's hostParts are sometimes the other way round, if the value that is expected\n // to be region equals ‘es’ switch them back\n // e.g. search-cluster-name-aaaa00aaaa0aaa0aaaaaaa0aaa.us-east-1.es.amazonaws.com\n if (hostParts[1] === 'es' || hostParts[1] === 'aoss')\n hostParts = hostParts.reverse()\n\n if (hostParts[1] == 's3') {\n hostParts[0] = 's3'\n hostParts[1] = 'us-east-1'\n } else {\n for (var i = 0; i < 2; i++) {\n if (/^s3-/.test(hostParts[i])) {\n hostParts[1] = hostParts[i].slice(3)\n hostParts[0] = 's3'\n break\n }\n }\n }\n\n return hostParts\n}\n\n// http://docs.aws.amazon.com/general/latest/gr/rande.html\nRequestSigner.prototype.isSingleRegion = function() {\n // Special case for S3 and SimpleDB in us-east-1\n if (['s3', 'sdb'].indexOf(this.service) >= 0 && this.region === 'us-east-1') return true\n\n return ['cloudfront', 'ls', 'route53', 'iam', 'importexport', 'sts']\n .indexOf(this.service) >= 0\n}\n\nRequestSigner.prototype.createHost = function() {\n var region = this.isSingleRegion() ? '' : '.' + this.region,\n subdomain = this.service === 'ses' ? 'email' : this.service\n return subdomain + region + '.amazonaws.com'\n}\n\nRequestSigner.prototype.prepareRequest = function() {\n this.parsePath()\n\n var request = this.request, headers = request.headers, query\n\n if (request.signQuery) {\n\n this.parsedPath.query = query = this.parsedPath.query || {}\n\n if (this.credentials.sessionToken)\n query['X-Amz-Security-Token'] = this.credentials.sessionToken\n\n if (this.service === 's3' && !query['X-Amz-Expires'])\n query['X-Amz-Expires'] = 86400\n\n if (query['X-Amz-Date'])\n this.datetime = query['X-Amz-Date']\n else\n query['X-Amz-Date'] = this.getDateTime()\n\n query['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256'\n query['X-Amz-Credential'] = this.credentials.accessKeyId + '/' + this.credentialString()\n query['X-Amz-SignedHeaders'] = this.signedHeaders()\n\n } else {\n\n if (!request.doNotModifyHeaders && !this.isCodeCommitGit) {\n if (request.body && !headers['Content-Type'] && !headers['content-type'])\n headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8'\n\n if (request.body && !headers['Content-Length'] && !headers['content-length'])\n headers['Content-Length'] = Buffer.byteLength(request.body)\n\n if (this.credentials.sessionToken && !headers['X-Amz-Security-Token'] && !headers['x-amz-security-token'])\n headers['X-Amz-Security-Token'] = this.credentials.sessionToken\n\n if (this.service === 's3' && !headers['X-Amz-Content-Sha256'] && !headers['x-amz-content-sha256'])\n headers['X-Amz-Content-Sha256'] = hash(this.request.body || '', 'hex')\n\n if (headers['X-Amz-Date'] || headers['x-amz-date'])\n this.datetime = headers['X-Amz-Date'] || headers['x-amz-date']\n else\n headers['X-Amz-Date'] = this.getDateTime()\n }\n\n delete headers.Authorization\n delete headers.authorization\n }\n}\n\nRequestSigner.prototype.sign = function() {\n if (!this.parsedPath) this.prepareRequest()\n\n if (this.request.signQuery) {\n this.parsedPath.query['X-Amz-Signature'] = this.signature()\n } else {\n this.request.headers.Authorization = this.authHeader()\n }\n\n this.request.path = this.formatPath()\n\n return this.request\n}\n\nRequestSigner.prototype.getDateTime = function() {\n if (!this.datetime) {\n var headers = this.request.headers,\n date = new Date(headers.Date || headers.date || new Date)\n\n this.datetime = date.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '')\n\n // Remove the trailing 'Z' on the timestamp string for CodeCommit git access\n if (this.isCodeCommitGit) this.datetime = this.datetime.slice(0, -1)\n }\n return this.datetime\n}\n\nRequestSigner.prototype.getDate = function() {\n return this.getDateTime().substr(0, 8)\n}\n\nRequestSigner.prototype.authHeader = function() {\n return [\n 'AWS4-HMAC-SHA256 Credential=' + this.credentials.accessKeyId + '/' + this.credentialString(),\n 'SignedHeaders=' + this.signedHeaders(),\n 'Signature=' + this.signature(),\n ].join(', ')\n}\n\nRequestSigner.prototype.signature = function() {\n var date = this.getDate(),\n cacheKey = [this.credentials.secretAccessKey, date, this.region, this.service].join(),\n kDate, kRegion, kService, kCredentials = credentialsCache.get(cacheKey)\n if (!kCredentials) {\n kDate = hmac('AWS4' + this.credentials.secretAccessKey, date)\n kRegion = hmac(kDate, this.region)\n kService = hmac(kRegion, this.service)\n kCredentials = hmac(kService, 'aws4_request')\n credentialsCache.set(cacheKey, kCredentials)\n }\n return hmac(kCredentials, this.stringToSign(), 'hex')\n}\n\nRequestSigner.prototype.stringToSign = function() {\n return [\n 'AWS4-HMAC-SHA256',\n this.getDateTime(),\n this.credentialString(),\n hash(this.canonicalString(), 'hex'),\n ].join('\\n')\n}\n\nRequestSigner.prototype.canonicalString = function() {\n if (!this.parsedPath) this.prepareRequest()\n\n var pathStr = this.parsedPath.path,\n query = this.parsedPath.query,\n headers = this.request.headers,\n queryStr = '',\n normalizePath = this.service !== 's3',\n decodePath = this.service === 's3' || this.request.doNotEncodePath,\n decodeSlashesInPath = this.service === 's3',\n firstValOnly = this.service === 's3',\n bodyHash\n\n if (this.service === 's3' && this.request.signQuery) {\n bodyHash = 'UNSIGNED-PAYLOAD'\n } else if (this.isCodeCommitGit) {\n bodyHash = ''\n } else {\n bodyHash = headers['X-Amz-Content-Sha256'] || headers['x-amz-content-sha256'] ||\n hash(this.request.body || '', 'hex')\n }\n\n if (query) {\n var reducedQuery = Object.keys(query).reduce(function(obj, key) {\n if (!key) return obj\n obj[encodeRfc3986Full(key)] = !Array.isArray(query[key]) ? query[key] :\n (firstValOnly ? query[key][0] : query[key])\n return obj\n }, {})\n var encodedQueryPieces = []\n Object.keys(reducedQuery).sort().forEach(function(key) {\n if (!Array.isArray(reducedQuery[key])) {\n encodedQueryPieces.push(key + '=' + encodeRfc3986Full(reducedQuery[key]))\n } else {\n reducedQuery[key].map(encodeRfc3986Full).sort()\n .forEach(function(val) { encodedQueryPieces.push(key + '=' + val) })\n }\n })\n queryStr = encodedQueryPieces.join('&')\n }\n if (pathStr !== '/') {\n if (normalizePath) pathStr = pathStr.replace(/\\/{2,}/g, '/')\n pathStr = pathStr.split('/').reduce(function(path, piece) {\n if (normalizePath && piece === '..') {\n path.pop()\n } else if (!normalizePath || piece !== '.') {\n if (decodePath) piece = decodeURIComponent(piece.replace(/\\+/g, ' '))\n path.push(encodeRfc3986Full(piece))\n }\n return path\n }, []).join('/')\n if (pathStr[0] !== '/') pathStr = '/' + pathStr\n if (decodeSlashesInPath) pathStr = pathStr.replace(/%2F/g, '/')\n }\n\n return [\n this.request.method || 'GET',\n pathStr,\n queryStr,\n this.canonicalHeaders() + '\\n',\n this.signedHeaders(),\n bodyHash,\n ].join('\\n')\n}\n\nRequestSigner.prototype.canonicalHeaders = function() {\n var headers = this.request.headers\n function trimAll(header) {\n return header.toString().trim().replace(/\\s+/g, ' ')\n }\n return Object.keys(headers)\n .filter(function(key) { return HEADERS_TO_IGNORE[key.toLowerCase()] == null })\n .sort(function(a, b) { return a.toLowerCase() < b.toLowerCase() ? -1 : 1 })\n .map(function(key) { return key.toLowerCase() + ':' + trimAll(headers[key]) })\n .join('\\n')\n}\n\nRequestSigner.prototype.signedHeaders = function() {\n var extraHeadersToInclude = this.extraHeadersToInclude,\n extraHeadersToIgnore = this.extraHeadersToIgnore\n return Object.keys(this.request.headers)\n .map(function(key) { return key.toLowerCase() })\n .filter(function(key) {\n return extraHeadersToInclude[key] ||\n (HEADERS_TO_IGNORE[key] == null && !extraHeadersToIgnore[key])\n })\n .sort()\n .join(';')\n}\n\nRequestSigner.prototype.credentialString = function() {\n return [\n this.getDate(),\n this.region,\n this.service,\n 'aws4_request',\n ].join('/')\n}\n\nRequestSigner.prototype.defaultCredentials = function() {\n var env = process.env\n return {\n accessKeyId: env.AWS_ACCESS_KEY_ID || env.AWS_ACCESS_KEY,\n secretAccessKey: env.AWS_SECRET_ACCESS_KEY || env.AWS_SECRET_KEY,\n sessionToken: env.AWS_SESSION_TOKEN,\n }\n}\n\nRequestSigner.prototype.parsePath = function() {\n var path = this.request.path || '/'\n\n // S3 doesn't always encode characters > 127 correctly and\n // all services don't encode characters > 255 correctly\n // So if there are non-reserved chars (and it's not already all % encoded), just encode them all\n if (/[^0-9A-Za-z;,/?:@&=+$\\-_.!~*'()#%]/.test(path)) {\n path = encodeURI(decodeURI(path))\n }\n\n var queryIx = path.indexOf('?'),\n query = null\n\n if (queryIx >= 0) {\n query = querystring.parse(path.slice(queryIx + 1))\n path = path.slice(0, queryIx)\n }\n\n this.parsedPath = {\n path: path,\n query: query,\n }\n}\n\nRequestSigner.prototype.formatPath = function() {\n var path = this.parsedPath.path,\n query = this.parsedPath.query\n\n if (!query) return path\n\n // Services don't support empty query string keys\n if (query[''] != null) delete query['']\n\n return path + '?' + encodeRfc3986(querystring.stringify(query))\n}\n\naws4.RequestSigner = RequestSigner\n\naws4.sign = function(request, credentials) {\n return new RequestSigner(request, credentials).sign()\n}\n","module.exports = function(size) {\n return new LruCache(size)\n}\n\nfunction LruCache(size) {\n this.capacity = size | 0\n this.map = Object.create(null)\n this.list = new DoublyLinkedList()\n}\n\nLruCache.prototype.get = function(key) {\n var node = this.map[key]\n if (node == null) return undefined\n this.used(node)\n return node.val\n}\n\nLruCache.prototype.set = function(key, val) {\n var node = this.map[key]\n if (node != null) {\n node.val = val\n } else {\n if (!this.capacity) this.prune()\n if (!this.capacity) return false\n node = new DoublyLinkedNode(key, val)\n this.map[key] = node\n this.capacity--\n }\n this.used(node)\n return true\n}\n\nLruCache.prototype.used = function(node) {\n this.list.moveToFront(node)\n}\n\nLruCache.prototype.prune = function() {\n var node = this.list.pop()\n if (node != null) {\n delete this.map[node.key]\n this.capacity++\n }\n}\n\n\nfunction DoublyLinkedList() {\n this.firstNode = null\n this.lastNode = null\n}\n\nDoublyLinkedList.prototype.moveToFront = function(node) {\n if (this.firstNode == node) return\n\n this.remove(node)\n\n if (this.firstNode == null) {\n this.firstNode = node\n this.lastNode = node\n node.prev = null\n node.next = null\n } else {\n node.prev = null\n node.next = this.firstNode\n node.next.prev = node\n this.firstNode = node\n }\n}\n\nDoublyLinkedList.prototype.pop = function() {\n var lastNode = this.lastNode\n if (lastNode != null) {\n this.remove(lastNode)\n }\n return lastNode\n}\n\nDoublyLinkedList.prototype.remove = function(node) {\n if (this.firstNode == node) {\n this.firstNode = node.next\n } else if (node.prev != null) {\n node.prev.next = node.next\n }\n if (this.lastNode == node) {\n this.lastNode = node.prev\n } else if (node.next != null) {\n node.next.prev = node.prev\n }\n}\n\n\nfunction DoublyLinkedNode(key, val) {\n this.key = key\n this.val = val\n this.prev = null\n this.next = null\n}\n","\nvar monero_javascript = (() => {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(monero_javascript) {\n monero_javascript = monero_javascript || {};\n\nvar Module=typeof monero_javascript!=\"undefined\"?monero_javascript:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err(\"exiting due to exception: \"+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}requireNodeFS=(()=>{if(!nodePath){fs=require(\"fs\");nodePath=require(\"path\")}});read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath[\"normalize\"](filename);return fs.readFileSync(filename,binary?undefined:\"utf8\")};readBinary=(filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret});readAsync=((filename,onload,onerror)=>{requireNodeFS();filename=nodePath[\"normalize\"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"unhandledRejection\",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process[\"exitCode\"]=status;throw toThrow}logExceptionOnExit(toThrow);process[\"exit\"](status)});Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText});if(ENVIRONMENT_IS_WORKER){readBinary=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)})}readAsync=((url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=(()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()});xhr.onerror=onerror;xhr.send(null)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];function uleb128Encode(n){if(n<128){return[n]}return[n%128|128,n>>7]}function convertJsFunctionToWasm(func,sig){if(typeof WebAssembly.Function==\"function\"){var typeNames={\"i\":\"i32\",\"j\":\"i64\",\"f\":\"f32\",\"d\":\"f64\"};var type={parameters:[],results:sig[0]==\"v\"?[]:[typeNames[sig[0]]]};for(var i=1;i{tempRet0=value};var getTempRet0=()=>tempRet0;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!=\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){{if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}}what=\"Aborted(\"+what+\")\";err(what);ABORT=true;EXITSTATUS=1;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith(\"file://\")}var wasmBinaryFile;wasmBinaryFile=\"monero_wallet_full.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"vb\"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"yb\"];addOnInit(Module[\"asm\"][\"wb\"]);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiationResult(result){receiveInstance(result[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function js_send_binary_request(uri,username,password,reject_unauthorized_fn_id,method,body,body_length,timeout){const monerojs=require(\"../index\");const HttpClient=monerojs.HttpClient;const LibraryUtils=monerojs.LibraryUtils;const GenUtils=monerojs.GenUtils;return Asyncify.handleSleep(function(wakeUp){LibraryUtils.loadFullModule().then(module=>{let ptr=body;let length=body_length;let view=new Uint8Array(length);for(let i=0;i{let respBin=resp.body;if(!(respBin instanceof Uint8Array)){console.error(\"resp is not uint8array\");console.error(respBin)}let nDataBytes=respBin.length*respBin.BYTES_PER_ELEMENT;let bodyPtr=Module._malloc(nDataBytes);let heap=new Uint8Array(Module.HEAPU8.buffer,bodyPtr,nDataBytes);heap.set(new Uint8Array(respBin.buffer,respBin.byteOffset,nDataBytes));let respContainer={code:resp.statusCode,message:resp.statusText,headers:resp.headers,bodyPtr:bodyPtr,bodyLength:respBin.length};let respStr=JSON.stringify(respContainer);let lengthBytes=Module.lengthBytesUTF8(respStr)+1;let ptr=Module._malloc(lengthBytes);Module.stringToUTF8(respStr,ptr,lengthBytes);wakeUpCalled=true;wakeUp(ptr)}).catch(err=>{if(wakeUpCalled){console.error(\"Error caught in JS after previously calling wakeUp(): \"+err);throw new Error(\"Error caught in JS after previously calling wakeUp(): \"+err)}let str=err.message?err.message:\"\"+err;str=JSON.stringify({error:str});let lengthBytes=Module.lengthBytesUTF8(str)+1;let ptr=Module._malloc(lengthBytes);Module.stringToUTF8(str,ptr,lengthBytes);wakeUpCalled=true;wakeUp(ptr)})}).catch(err=>{throw new Error(\"Could not load full wasm module\")})})}function js_send_json_request(uri,username,password,reject_unauthorized_fn_id,method,body,timeout){const monerojs=require(\"../index\");const HttpClient=monerojs.HttpClient;const LibraryUtils=monerojs.LibraryUtils;const GenUtils=monerojs.GenUtils;return Asyncify.handleSleep(function(wakeUp){let wakeUpCalled=false;HttpClient.request({method:UTF8ToString(method),uri:UTF8ToString(uri),username:UTF8ToString(username),password:UTF8ToString(password),body:UTF8ToString(body),resolveWithFullResponse:true,rejectUnauthorized:LibraryUtils.isRejectUnauthorized(UTF8ToString(reject_unauthorized_fn_id)),requestApi:GenUtils.isFirefox()?\"xhr\":\"fetch\"}).then(resp=>{let respContainer={code:resp.statusCode,message:resp.statusText,body:resp.body,headers:resp.headers};let respStr=JSON.stringify(respContainer);let lengthBytes=Module.lengthBytesUTF8(respStr)+1;let ptr=Module._malloc(lengthBytes);Module.stringToUTF8(respStr,ptr,lengthBytes);wakeUpCalled=true;wakeUp(ptr)}).catch(err=>{if(wakeUpCalled){console.error(\"Error caught in JS after previously calling wakeUp(): \"+err);throw new Error(\"Error caught in JS after previously calling wakeUp(): \"+err)}let str=err.message?err.message:\"\"+err;str=JSON.stringify({error:str});let lengthBytes=Module.lengthBytesUTF8(str)+1;let ptr=Module._malloc(lengthBytes);Module.stringToUTF8(str,ptr,lengthBytes);wakeUpCalled=true;wakeUp(ptr)})})}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func==\"number\"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function handleException(e){if(e instanceof ExitStatus||e==\"unwind\"){return EXITSTATUS}quit_(1,e)}function setWasmTableEntry(idx,func){wasmTable.set(idx,func)}function _BIO_free(){err(\"missing function: BIO_free\");abort(-1)}function _BIO_new_mem_buf(){err(\"missing function: BIO_new_mem_buf\");abort(-1)}function _CONF_modules_unload(){err(\"missing function: CONF_modules_unload\");abort(-1)}function _CRYPTO_free(){err(\"missing function: CRYPTO_free\");abort(-1)}function _ERR_reason_error_string(){err(\"missing function: ERR_reason_error_string\");abort(-1)}function _PEM_read_bio(){err(\"missing function: PEM_read_bio\");abort(-1)}function _PEM_write(){err(\"missing function: PEM_write\");abort(-1)}function __ZN2hw6trezor12register_allEv(){err(\"missing function: _ZN2hw6trezor12register_allEv\");abort(-1)}function __ZN4epee13file_io_utils19load_file_to_stringERKNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERS7_m(){err(\"missing function: _ZN4epee13file_io_utils19load_file_to_stringERKNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERS7_m\");abort(-1)}function __ZN4epee13file_io_utils19save_string_to_fileERKNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEES9_(){err(\"missing function: _ZN4epee13file_io_utils19save_string_to_fileERKNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEES9_\");abort(-1)}function __ZN5boost10filesystem6detail12current_pathEPNS_6system10error_codeE(){err(\"missing function: _ZN5boost10filesystem6detail12current_pathEPNS_6system10error_codeE\");abort(-1)}function __ZN5boost10filesystem6detail16weakly_canonicalERKNS0_4pathEPNS_6system10error_codeE(){err(\"missing function: _ZN5boost10filesystem6detail16weakly_canonicalERKNS0_4pathEPNS_6system10error_codeE\");abort(-1)}function __ZN5boost10filesystem6detail18create_directoriesERKNS0_4pathEPNS_6system10error_codeE(){err(\"missing function: _ZN5boost10filesystem6detail18create_directoriesERKNS0_4pathEPNS_6system10error_codeE\");abort(-1)}function __ZN5boost10filesystem6detail5spaceERKNS0_4pathEPNS_6system10error_codeE(){err(\"missing function: _ZN5boost10filesystem6detail5spaceERKNS0_4pathEPNS_6system10error_codeE\");abort(-1)}function __ZN5boost10filesystem6detail6removeERKNS0_4pathEPNS_6system10error_codeE(){err(\"missing function: _ZN5boost10filesystem6detail6removeERKNS0_4pathEPNS_6system10error_codeE\");abort(-1)}function __ZN5boost10filesystem6detail6statusERKNS0_4pathEPNS_6system10error_codeE(){err(\"missing function: _ZN5boost10filesystem6detail6statusERKNS0_4pathEPNS_6system10error_codeE\");abort(-1)}function __ZN5boost10filesystem6detail9canonicalERKNS0_4pathES4_PNS_6system10error_codeE(){err(\"missing function: _ZN5boost10filesystem6detail9canonicalERKNS0_4pathES4_PNS_6system10error_codeE\");abort(-1)}function __ZN5boost10filesystem6detail9copy_fileERKNS0_4pathES4_jPNS_6system10error_codeE(){err(\"missing function: _ZN5boost10filesystem6detail9copy_fileERKNS0_4pathES4_jPNS_6system10error_codeE\");abort(-1)}function __ZNK5boost10filesystem4path11parent_pathEv(){err(\"missing function: _ZNK5boost10filesystem4path11parent_pathEv\");abort(-1)}function __ZNK5tools6Notify6notifyEPKcS2_z(){err(\"missing function: _ZNK5tools6Notify6notifyEPKcS2_z\");abort(-1)}function ___assert_fail(condition,filename,line,func){abort(\"Assertion failed: \"+UTF8ToString(condition)+\", at: \"+[filename?UTF8ToString(filename):\"unknown filename\",line,func?UTF8ToString(func):\"unknown function\"])}function ___cxa_allocate_exception(size){return _malloc(size+24)+24}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);exception_addRef(info);return info.get_exception_ptr()}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}function ___cxa_free_exception(ptr){return _free(new ExceptionInfo(ptr).ptr)}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_decrement_exception_refcount(ptr){if(!ptr)return;exception_decRef(new ExceptionInfo(ptr))}var exceptionLast=0;function ___cxa_end_catch(){_setThrew(0);var info=exceptionCaught.pop();exception_decRef(info);exceptionLast=0}function ___resumeException(ptr){if(!exceptionLast){exceptionLast=ptr}throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path===\"/\")return\"/\";path=PATH.normalize(path);path=path.replace(/\\/$/,\"\");var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:(l,r)=>{return PATH.normalize(l+\"/\"+r)}};function getRandomDevice(){if(typeof crypto==\"object\"&&typeof crypto[\"getRandomValues\"]==\"function\"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require(\"crypto\");return function(){return crypto_module[\"randomBytes\"](1)[0]}}catch(e){}}return function(){abort(\"randomDevice\")}}var PATH_FS={resolve:function(){var resolvedPath=\"\",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString(\"utf-8\")}else{result=null}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else if(typeof readline==\"function\"){result=readline();if(result!==null){result+=\"\\n\"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,\"/\",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),false);var current=FS.root;var current_path=\"/\";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?mount+\"/\"+path:mount+path}path=path?node.name+\"/\"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{\"r\":0,\"r+\":2,\"w\":577,\"w+\":578,\"a\":1089,\"a+\":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags==\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags},flagsToPermissionString:flag=>{var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get function(){return this.shared.position},set:function(val){this.shared.position=val}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(\"warning: \"+FS.syncFSRequests+\" FS.syncfs operations in flight at once, probably just doing extra work\")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split(\"/\");var d=\"\";for(var i=0;i{if(typeof dev==\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===\"\"){throw new FS.ErrnoError(44)}flags=typeof flags==\"string\"?FS.modeStringToFlags(flags):flags;mode=typeof mode==\"undefined\"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error('Invalid encoding type \"'+opts.encoding+'\"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices:()=>{FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice(\"/dev\",\"random\",random_device);FS.createDevice(\"/dev\",\"urandom\",random_device);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories:()=>{FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount:()=>{var node=FS.createNode(proc_self,\"fd\",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},\"/proc/self/fd\")},createStandardStreams:()=>{if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message=\"FS error\"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"\"})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent==\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent==\"string\"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||\"\",true)}};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(\"cp \"+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return\"EM_FS_\"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out(\"creating db\");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],\"readwrite\");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],\"readonly\")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_fdatasync(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_ftruncate64(fd,length_low,length_high){try{var length=length_high*4294967296+(length_low>>>0);FS.ftruncate(fd,length);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort(\"bad ioctl syscall \"+op)}}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]===\"/\")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret=\"\";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return\"_unknown\"}name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return\"_\"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return function(){null;return body.apply(this,arguments)}}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+\": \"+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function registerType(rawType,registeredInstance,options={}){if(!(\"argPackAdvance\"in registeredInstance)){throw new TypeError(\"registerType registeredInstance requires argPackAdvance\")}var name=registeredInstance.name;if(!rawType){throwBindingError('type \"'+name+'\" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(\"Cannot register type '\"+name+\"' twice\")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(wt){return!!wt},\"toWireType\":function(destructors,o){return o?trueValue:falseValue},\"argPackAdvance\":8,\"readValueFromPointer\":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError(\"Unknown boolean type size: \"+name)}return this[\"fromWireType\"](heap[pointer>>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function simpleReadValueFromPointer(pointer){return this[\"fromWireType\"](HEAPU32[pointer>>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},\"toWireType\":function(destructors,value){return Emval.toHandle(value)},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this[\"fromWireType\"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this[\"fromWireType\"](HEAPF64[pointer>>3])};default:throw new TypeError(\"Unknown float type: \"+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(value){return value},\"toWireType\":function(destructors,value){return value},\"argPackAdvance\":8,\"readValueFromPointer\":floatReadValueFromPointer(name,shift),destructorFunction:null})}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original==\"function\"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module[\"_asyncify_stop_unwind\"]);if(typeof Fibers!=\"undefined\"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module[\"asm\"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module[\"_asyncify_start_rewind\"](Asyncify.currData));if(typeof Browser!=\"undefined\"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module[\"_asyncify_start_unwind\"](Asyncify.currData));if(typeof Browser!=\"undefined\"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module[\"_asyncify_stop_rewind\"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort(\"invalid state: \"+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistant public symbol\")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module[\"dynCall_\"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(\"unknown function pointer with signature \"+signature+\": \"+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+\": \"+unboundTypes.map(getTypeName).join([\", \"]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(\"Cannot call \"+name+\" due to unbound types\",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError(\"Unknown integer type: \"+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes(\"unsigned\");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,\"fromWireType\":fromWireType,\"toWireType\":toWireType,\"argPackAdvance\":8,\"readValueFromPointer\":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":decodeMemoryView,\"argPackAdvance\":8,\"readValueFromPointer\":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name===\"std::string\";registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},\"toWireType\":function(destructors,value){if(!(typeof value==\"string\")){throwBindingError(\"Cannot pass non-string to C++ string type \"+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,\"argPackAdvance\":0,\"fromWireType\":function(){return undefined},\"toWireType\":function(destructors,o){return undefined}})}function __emscripten_date_now(){return Date.now()}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emscripten_get_progname(str,len){stringToUTF8(thisProgram,str,len)}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+\" has unknown type \"+getTypeName(rawType))}return impl}function __emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2)+i],\"parameter \"+i)}return a}function __emval_call(handle,argCount,argTypes,argv){handle=Emval.toValue(handle);var types=__emval_lookupTypes(argCount,argTypes);var args=new Array(argCount);for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function __emval_take_value(type,argv){type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](argv);return Emval.toHandle(v)}function __gmtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();return date.getTime()/1e3|0}function __mmap_js(addr,len,prot,flags,fd,off,allocated,builtin){try{var info=FS.getStream(fd);if(!info)return-8;var res=FS.mmap(info,addr,len,off,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;return ptr}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __msync_js(addr,len,flags,fd){try{SYSCALLS.doMsync(addr,FS.getStream(fd),len,flags,0);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset){try{var stream=FS.getStream(fd);if(stream){if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}FS.munmap(stream)}}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function _tzset_impl(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAP32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return match?match[1]:\"GMT\"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAP32[tzname+4>>2]=summerNamePtr}else{HEAP32[tzname>>2]=summerNamePtr;HEAP32[tzname+4>>2]=winterNamePtr}}function __tzset_js(timezone,daylight,tzname){if(__tzset_js.called)return;__tzset_js.called=true;_tzset_impl(timezone,daylight,tzname)}function _abort(){abort(\"\")}function _emscripten_get_heap_max(){return 2147483648}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=(()=>{var t=process[\"hrtime\"]();return t[0]*1e3+t[1]/1e6})}else _emscripten_get_now=(()=>performance.now());function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=_emscripten_get_heap_max();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var ENV={};function getExecutableName(){return thisProgram||\"./this.program\"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={\"USER\":\"web_user\",\"LOGNAME\":\"web_user\",\"PATH\":\"/\",\"PWD\":\"/\",\"HOME\":\"/home/web_user\",\"LANG\":lang,\"_\":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+\"=\"+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}function _fd_pwrite(fd,iov,iovcnt,offset_low,offset_high,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt,offset_low);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return 61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _llvm_eh_typeid_for(type){return type}function _proc_exit(code){procExit(code)}function _rx_slow_hash(){err(\"missing function: rx_slow_hash\");abort(-1)}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):\"\"};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_1[rule])}var WEEKDAYS=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];var MONTHS=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];function leadingSomething(value,digits,character){var str=typeof value==\"number\"?value.toString():value||\"\";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={\"%a\":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},\"%A\":function(date){return WEEKDAYS[date.tm_wday]},\"%b\":function(date){return MONTHS[date.tm_mon].substring(0,3)},\"%B\":function(date){return MONTHS[date.tm_mon]},\"%C\":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},\"%d\":function(date){return leadingNulls(date.tm_mday,2)},\"%e\":function(date){return leadingSomething(date.tm_mday,2,\" \")},\"%g\":function(date){return getWeekBasedYear(date).toString().substring(2)},\"%G\":function(date){return getWeekBasedYear(date)},\"%H\":function(date){return leadingNulls(date.tm_hour,2)},\"%I\":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},\"%j\":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},\"%m\":function(date){return leadingNulls(date.tm_mon+1,2)},\"%M\":function(date){return leadingNulls(date.tm_min,2)},\"%n\":function(){return\"\\n\"},\"%p\":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return\"AM\"}else{return\"PM\"}},\"%S\":function(date){return leadingNulls(date.tm_sec,2)},\"%t\":function(){return\"\\t\"},\"%u\":function(date){return date.tm_wday||7},\"%U\":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},\"%V\":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},\"%w\":function(date){return date.tm_wday},\"%W\":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},\"%y\":function(date){return(date.tm_year+1900).toString().substring(2)},\"%Y\":function(date){return date.tm_year+1900},\"%z\":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?\"+\":\"-\")+String(\"0000\"+off).slice(-4)},\"%Z\":function(date){return date.tm_zone},\"%%\":function(){return\"%\"}};pattern=pattern.replace(/%%/g,\"\\0\\0\");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\\0\\0/g,\"%\");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _v4_generate_JIT_code(){err(\"missing function: v4_generate_JIT_code\");abort(-1)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();embind_init_charCodes();BindingError=Module[\"BindingError\"]=extendError(Error,\"BindingError\");InternalError=Module[\"InternalError\"]=extendError(Error,\"InternalError\");init_emval();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,\"Character code \"+chr+\" (\"+String.fromCharCode(chr)+\") at offset \"+i+\" not in 0x00-0xFF.\")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}var asmLibraryArg={\"Pa\":_BIO_free,\"Ra\":_BIO_new_mem_buf,\"Ua\":_CONF_modules_unload,\"P\":_CRYPTO_free,\"Xa\":_ERR_reason_error_string,\"Qa\":_PEM_read_bio,\"Va\":_PEM_write,\"Ja\":__ZN2hw6trezor12register_allEv,\"ba\":__ZN4epee13file_io_utils19load_file_to_stringERKNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERS7_m,\"aa\":__ZN4epee13file_io_utils19save_string_to_fileERKNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEES9_,\"Ma\":__ZN5boost10filesystem6detail12current_pathEPNS_6system10error_codeE,\"La\":__ZN5boost10filesystem6detail16weakly_canonicalERKNS0_4pathEPNS_6system10error_codeE,\"Ka\":__ZN5boost10filesystem6detail18create_directoriesERKNS0_4pathEPNS_6system10error_codeE,\"Fa\":__ZN5boost10filesystem6detail5spaceERKNS0_4pathEPNS_6system10error_codeE,\"Ta\":__ZN5boost10filesystem6detail6removeERKNS0_4pathEPNS_6system10error_codeE,\"$\":__ZN5boost10filesystem6detail6statusERKNS0_4pathEPNS_6system10error_codeE,\"Na\":__ZN5boost10filesystem6detail9canonicalERKNS0_4pathES4_PNS_6system10error_codeE,\"Oa\":__ZN5boost10filesystem6detail9copy_fileERKNS0_4pathES4_jPNS_6system10error_codeE,\"Sa\":__ZNK5boost10filesystem4path11parent_pathEv,\"Wa\":__ZNK5tools6Notify6notifyEPKcS2_z,\"e\":___assert_fail,\"c\":___cxa_allocate_exception,\"m\":___cxa_begin_catch,\"V\":___cxa_decrement_exception_refcount,\"o\":___cxa_end_catch,\"b\":___cxa_find_matching_catch_2,\"g\":___cxa_find_matching_catch_3,\"r\":___cxa_free_exception,\"U\":___cxa_increment_exception_refcount,\"ca\":___cxa_rethrow,\"da\":___cxa_rethrow_primary_exception,\"f\":___cxa_throw,\"ea\":___cxa_uncaught_exceptions,\"k\":___resumeException,\"y\":___syscall_fcntl64,\"qa\":___syscall_fdatasync,\"bb\":___syscall_ftruncate64,\"wa\":___syscall_ioctl,\"ma\":___syscall_mkdirat,\"W\":___syscall_openat,\"ha\":___syscall_renameat,\"pa\":___syscall_stat64,\"cb\":__embind_register_bigint,\"ya\":__embind_register_bool,\"xa\":__embind_register_emval,\"Z\":__embind_register_float,\"t\":__embind_register_function,\"z\":__embind_register_integer,\"v\":__embind_register_memory_view,\"Y\":__embind_register_std_string,\"M\":__embind_register_std_wstring,\"za\":__embind_register_void,\"K\":__emscripten_date_now,\"ra\":__emscripten_get_now_is_monotonic,\"ia\":__emscripten_get_progname,\"Da\":__emval_call,\"Ea\":__emval_decref,\"Ca\":__emval_equals,\"_\":__emval_incref,\"Ba\":__emval_take_value,\"sa\":__gmtime_js,\"ta\":__mktime_js,\"ja\":__mmap_js,\"ka\":__msync_js,\"la\":__munmap_js,\"ua\":__tzset_js,\"B\":_abort,\"ga\":_emscripten_get_heap_max,\"J\":_emscripten_get_now,\"fa\":_emscripten_resize_heap,\"na\":_environ_get,\"oa\":_environ_sizes_get,\"Q\":_exit,\"G\":_fd_close,\"$a\":_fd_pwrite,\"X\":_fd_read,\"ab\":_fd_seek,\"L\":_fd_write,\"a\":_getTempRet0,\"R\":invoke_diii,\"S\":invoke_fiii,\"u\":invoke_i,\"i\":invoke_ii,\"d\":invoke_iii,\"p\":invoke_iiii,\"n\":invoke_iiiii,\"T\":invoke_iiiiid,\"E\":invoke_iiiiii,\"x\":invoke_iiiiiii,\"O\":invoke_iiiiiiii,\"Ha\":invoke_iiiiiiiiii,\"I\":invoke_iiiiiiiiiiii,\"Ya\":invoke_iiiiij,\"nb\":invoke_iiiiiji,\"ob\":invoke_iiiiji,\"lb\":invoke_iij,\"_a\":invoke_j,\"qb\":invoke_ji,\"fb\":invoke_jii,\"eb\":invoke_jiii,\"gb\":invoke_jiiii,\"hb\":invoke_jiiiii,\"l\":invoke_v,\"s\":invoke_vi,\"h\":invoke_vii,\"j\":invoke_viii,\"w\":invoke_viiii,\"C\":invoke_viiiii,\"N\":invoke_viiiiii,\"A\":invoke_viiiiiii,\"Ia\":invoke_viiiiiiii,\"F\":invoke_viiiiiiiiii,\"H\":invoke_viiiiiiiiiiiiiii,\"db\":invoke_viiiji,\"kb\":invoke_viiijjjjii,\"jb\":invoke_viij,\"Za\":invoke_viijii,\"rb\":invoke_viijiiii,\"mb\":invoke_viijjd,\"pb\":invoke_viji,\"ib\":invoke_vijiijii,\"sb\":js_send_binary_request,\"tb\":js_send_json_request,\"q\":_llvm_eh_typeid_for,\"va\":_proc_exit,\"Ga\":_rx_slow_hash,\"D\":_setTempRet0,\"ub\":_strftime_l,\"Aa\":_v4_generate_JIT_code};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"wb\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"xb\"]).apply(null,arguments)};var __ZN5boost13serialization16singleton_module8get_lockEv=Module[\"__ZN5boost13serialization16singleton_module8get_lockEv\"]=function(){return(__ZN5boost13serialization16singleton_module8get_lockEv=Module[\"__ZN5boost13serialization16singleton_module8get_lockEv\"]=Module[\"asm\"][\"zb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet210pending_txEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet210pending_txEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet210pending_txEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet210pending_txEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Ab\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11transactionEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11transactionEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11transactionEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11transactionEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Bb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Cb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Db\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote8txin_genEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote8txin_genEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote8txin_genEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote8txin_genEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Eb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote14txin_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote14txin_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote14txin_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote14txin_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Fb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto4hashEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto4hashEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto4hashEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto4hashEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Gb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote18txin_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote18txin_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote18txin_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote18txin_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Hb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15txout_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15txout_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15txout_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15txout_to_scriptEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Ib\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Jb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto10public_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto10public_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto10public_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto10public_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Kb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11txin_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11txin_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11txin_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote11txin_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Lb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Mb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9key_imageEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9key_imageEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9key_imageEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9key_imageEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Nb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Ob\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote6tx_outEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote6tx_outEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote6tx_outEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote6tx_outEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Pb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Qb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_scripthashEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Rb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote12txout_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote12txout_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote12txout_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote12txout_to_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Sb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_tagged_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_tagged_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_tagged_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote19txout_to_tagged_keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Tb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto8view_tagEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto8view_tagEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto8view_tagEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto8view_tagEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Ub\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Vb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Wb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Xb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9signatureEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9signatureEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9signatureEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN6crypto9signatureEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Yb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct10rctSigBaseEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct10rctSigBaseEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct10rctSigBaseEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct10rctSigBaseEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Zb\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"_b\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct3keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct3keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct3keyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct3keyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"$b\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"ac\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9ecdhTupleEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9ecdhTupleEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9ecdhTupleEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9ecdhTupleEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"bc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14rctSigPrunableEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14rctSigPrunableEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14rctSigPrunableEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14rctSigPrunableEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"cc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"dc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct8rangeSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct8rangeSigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct8rangeSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct8rangeSigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"ec\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct7boroSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct7boroSigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct7boroSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct7boroSigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"fc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"gc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct11BulletproofEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct11BulletproofEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct11BulletproofEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct11BulletproofEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"hc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"ic\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct15BulletproofPlusEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct15BulletproofPlusEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct15BulletproofPlusEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct15BulletproofPlusEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"jc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"kc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5mgSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5mgSigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5mgSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5mgSigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"lc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"mc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"nc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5clsagEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5clsagEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5clsagEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5clsagEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"oc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote20tx_destination_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote20tx_destination_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote20tx_destination_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote20tx_destination_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"pc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote22account_public_addressEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote22account_public_addressEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote22account_public_addressEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote22account_public_addressEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"qc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24listImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24listImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24listImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24listImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"rc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"sc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"tc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet220tx_construction_dataEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet220tx_construction_dataEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet220tx_construction_dataEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet220tx_construction_dataEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"uc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"vc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15tx_source_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15tx_source_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15tx_source_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN10cryptonote15tx_source_entryEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"wc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"xc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24pairIyN3rct5ctkeyEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24pairIyN3rct5ctkeyEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24pairIyN3rct5ctkeyEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__24pairIyN3rct5ctkeyEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"yc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5ctkeyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5ctkeyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5ctkeyEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct5ctkeyEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"zc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14multisig_kLRkiEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14multisig_kLRkiEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14multisig_kLRkiEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct14multisig_kLRkiEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Ac\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Bc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9RCTConfigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9RCTConfigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9RCTConfigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct9RCTConfigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Cc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Dc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Ec\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Fc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet212multisig_sigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet212multisig_sigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet212multisig_sigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN5tools7wallet212multisig_sigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Gc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct6rctSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct6rctSigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct6rctSigEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct6rctSigEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Hc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Ic\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Jc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct12multisig_outEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct12multisig_outEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=function(){return(__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct12multisig_outEE16save_object_dataERNS1_14basic_oarchiveEPKv=Module[\"__ZNK5boost7archive6detail11oserializerINS0_24portable_binary_oarchiveEN3rct12multisig_outEE16save_object_dataERNS1_14basic_oarchiveEPKv\"]=Module[\"asm\"][\"Kc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet210pending_txEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet210pending_txEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet210pending_txEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet210pending_txEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Lc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Mc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Nc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Oc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Pc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Qc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Rc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Sc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Tc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Uc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Vc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Wc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Xc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Yc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Zc\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"_c\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"$c\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ad\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"bd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"cd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"dd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ed\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"fd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"gd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"hd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"id\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"jd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"kd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ld\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"md\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"nd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"od\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"pd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"qd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"rd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"sd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"td\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ud\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"vd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"wd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"xd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"yd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"zd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ad\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Bd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24listImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24listImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24listImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24listImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Cd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Dd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ed\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220tx_construction_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220tx_construction_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220tx_construction_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220tx_construction_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Fd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN10cryptonote15tx_source_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Gd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15tx_source_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15tx_source_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15tx_source_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote15tx_source_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Hd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN3rct5ctkeyEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Id\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN3rct5ctkeyEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN3rct5ctkeyEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN3rct5ctkeyEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN3rct5ctkeyEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Jd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5ctkeyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5ctkeyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5ctkeyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct5ctkeyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Kd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14multisig_kLRkiEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14multisig_kLRkiEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14multisig_kLRkiEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct14multisig_kLRkiEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ld\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Md\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9RCTConfigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9RCTConfigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9RCTConfigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct9RCTConfigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Nd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Od\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorImNS4_9allocatorImEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Pd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet212multisig_sigENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Qd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet212multisig_sigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet212multisig_sigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet212multisig_sigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet212multisig_sigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Rd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct6rctSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct6rctSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct6rctSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct6rctSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Sd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Td\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN3rct3keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ud\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct12multisig_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct12multisig_outEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct12multisig_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3rct12multisig_outEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Vd\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"Wd\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Xd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Yd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Zd\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"_d\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"$d\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ae\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"be\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ce\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"de\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ee\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"fe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ge\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"he\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ie\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"je\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ke\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"le\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"me\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ne\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"oe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"pe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"qe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"re\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"se\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"te\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ue\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ve\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"we\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"xe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ye\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ze\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ae\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Be\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ce\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"De\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ee\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Fe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ge\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"He\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ie\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet2EE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Je\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ke\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto4hashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Le\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools9hashchainEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Me\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__25dequeIN6crypto4hashENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ne\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Oe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Pe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11transactionEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Qe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS_7variantIN10cryptonote8txin_genEJNS7_14txin_to_scriptENS7_18txin_to_scripthashENS7_11txin_to_keyEEEENS4_9allocatorISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Re\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote8txin_genEJNS5_14txin_to_scriptENS5_18txin_to_scripthashENS5_11txin_to_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Se\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote8txin_genEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Te\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote14txin_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ue\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18txin_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ve\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote15txout_to_scriptEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"We\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto10public_keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Xe\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto10public_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ye\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote11txin_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ze\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIyNS4_9allocatorIyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"_e\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote6tx_outENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"$e\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote6tx_outEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"af\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENS_7variantIN10cryptonote15txout_to_scriptEJNS5_19txout_to_scripthashENS5_12txout_to_keyENS5_19txout_to_tagged_keyEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"bf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_scripthashEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"cf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote12txout_to_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"df\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote19txout_to_tagged_keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ef\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto8view_tagEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ff\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIhNS4_9allocatorIhEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"gf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN6crypto9signatureENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"hf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9signatureENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"jf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9signatureEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"kf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct10rctSigBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"lf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct9ecdhTupleENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"mf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct9ecdhTupleEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"nf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct14rctSigPrunableEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"of\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct8rangeSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"pf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct8rangeSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"qf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct7boroSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"rf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct3keyEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"sf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct11BulletproofENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"tf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct11BulletproofEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"uf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct15BulletproofPlusENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"vf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct15BulletproofPlusEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"wf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5mgSigENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"xf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5mgSigEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"yf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_IN3rct3keyENS4_9allocatorIS7_EEEENS8_ISA_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"zf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct3keyENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Af\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN3rct5clsagENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Bf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN3rct5clsagEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Cf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote18transaction_prefixEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Df\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto9key_imageEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ef\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote16subaddress_indexEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ff\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Gf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Hf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"If\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Jf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Kf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIyN6crypto4hashEEENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Lf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIyN6crypto4hashEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Mf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote22account_public_addressEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Nf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto9key_imageEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Of\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet228unconfirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Pf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet228unconfirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Qf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN10cryptonote20tx_destination_entryENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Rf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN10cryptonote20tx_destination_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Sf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23setIjNS4_4lessIjEENS4_9allocatorIjEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Tf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_4pairIN6crypto9key_imageENS5_IyNS4_9allocatorIyEEEEEENS9_ISC_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Uf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIN6crypto9key_imageENS4_6vectorIyNS4_9allocatorIyEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Vf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Wf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet215payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Xf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SE_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Yf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Zf\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet226confirmed_transfer_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"_f\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet226confirmed_transfer_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"$f\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSB_INS4_4pairIKS7_SD_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ag\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashEN5tools7wallet215payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"bg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEmNS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_mEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"cg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN5tools7wallet216address_book_rowENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"dg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet216address_book_rowEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"eg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN6crypto5hash8EE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"fg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_setIN6crypto4hashENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"gg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyEN10cryptonote16subaddress_indexENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"hg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN10cryptonote16subaddress_indexEN6crypto10public_keyENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ig\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS5_INS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEENS9_ISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"jg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS9_ISB_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"kg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto4hashENS4_6vectorIN4epee7mlockedIN5tools8scrubbedINS6_9ec_scalarEEEEENS4_9allocatorISF_EEEENS4_4hashIS7_EENS4_8equal_toIS7_EENSG_INS4_4pairIKS7_SI_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"lg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__26vectorIN4epee7mlockedIN5tools8scrubbedIN6crypto9ec_scalarEEEEENS4_9allocatorISD_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"mg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4hashISB_EENS4_8equal_toISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ng\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__218unordered_multimapIN6crypto4hashEN5tools7wallet220pool_payment_detailsENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_SA_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"og\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveEN5tools7wallet220pool_payment_detailsEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"pg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairINS4_3mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESC_NS4_4lessISC_EENSA_INS5_IKSC_SC_EEEEEENS4_6vectorISC_NSA_ISC_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"qg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__23mapINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_NS4_4lessISB_EENS9_INS4_4pairIKSB_SB_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"rg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__24pairIKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEESB_EEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"sg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_15binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9key_imageENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"tg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215unsigned_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215unsigned_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215unsigned_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215unsigned_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"ug\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet220tx_construction_dataENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet220tx_construction_dataENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet220tx_construction_dataENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet220tx_construction_dataENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"vg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairImNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairImNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairImNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__24pairImNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"wg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213signed_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213signed_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213signed_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213signed_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"xg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet210pending_txENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet210pending_txENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet210pending_txENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet210pending_txENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"yg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN6crypto9key_imageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"zg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215multisig_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215multisig_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215multisig_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet215multisig_tx_setEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ag\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet219reserve_proof_entryENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet219reserve_proof_entryENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet219reserve_proof_entryENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet219reserve_proof_entryENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Bg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet219reserve_proof_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet219reserve_proof_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet219reserve_proof_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet219reserve_proof_entryEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Cg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9signatureENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9signatureENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9signatureENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__213unordered_mapIN6crypto10public_keyENS6_9signatureENS4_4hashIS7_EENS4_8equal_toIS7_EENS4_9allocatorINS4_4pairIKS7_S8_EEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Dg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25tupleIJyyNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25tupleIJyyNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25tupleIJyyNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__25tupleIJyyNS4_6vectorIN5tools7wallet216transfer_detailsENS4_9allocatorIS9_EEEEEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Eg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_infoENS4_9allocatorIS8_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Fg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_infoEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Gg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN5tools7wallet213multisig_info2LRENS4_9allocatorIS9_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Hg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN5tools7wallet213multisig_info2LREE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ig\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms9file_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms9file_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms9file_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms9file_dataEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Jg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9chacha_ivEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9chacha_ivEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9chacha_ivEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN6crypto9chacha_ivEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Kg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms13message_storeEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms13message_storeEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms13message_storeEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms13message_storeEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Lg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms17authorized_signerENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms17authorized_signerENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms17authorized_signerENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms17authorized_signerENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Mg\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms17authorized_signerEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms17authorized_signerEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms17authorized_signerEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms17authorized_signerEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Ng\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms7messageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms7messageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms7messageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveENSt3__26vectorIN3mms7messageENS4_9allocatorIS7_EEEEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Og\"]).apply(null,arguments)};var __ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms7messageEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms7messageEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=function(){return(__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms7messageEE16load_object_dataERNS1_14basic_iarchiveEPvj=Module[\"__ZNK5boost7archive6detail11iserializerINS0_24portable_binary_iarchiveEN3mms7messageEE16load_object_dataERNS1_14basic_iarchiveEPvj\"]=Module[\"asm\"][\"Pg\"]).apply(null,arguments)};var ___getTypeName=Module[\"___getTypeName\"]=function(){return(___getTypeName=Module[\"___getTypeName\"]=Module[\"asm\"][\"Qg\"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=function(){return(___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=Module[\"asm\"][\"Rg\"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module[\"_emscripten_builtin_memalign\"]=function(){return(_emscripten_builtin_memalign=Module[\"_emscripten_builtin_memalign\"]=Module[\"asm\"][\"Sg\"]).apply(null,arguments)};var _setThrew=Module[\"_setThrew\"]=function(){return(_setThrew=Module[\"_setThrew\"]=Module[\"asm\"][\"Tg\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"Ug\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"Vg\"]).apply(null,arguments)};var ___cxa_can_catch=Module[\"___cxa_can_catch\"]=function(){return(___cxa_can_catch=Module[\"___cxa_can_catch\"]=Module[\"asm\"][\"Wg\"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module[\"___cxa_is_pointer_type\"]=function(){return(___cxa_is_pointer_type=Module[\"___cxa_is_pointer_type\"]=Module[\"asm\"][\"Xg\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"Yg\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"Zg\"]).apply(null,arguments)};var dynCall_iii=Module[\"dynCall_iii\"]=function(){return(dynCall_iii=Module[\"dynCall_iii\"]=Module[\"asm\"][\"_g\"]).apply(null,arguments)};var dynCall_vii=Module[\"dynCall_vii\"]=function(){return(dynCall_vii=Module[\"dynCall_vii\"]=Module[\"asm\"][\"$g\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"ah\"]).apply(null,arguments)};var dynCall_viiiii=Module[\"dynCall_viiiii\"]=function(){return(dynCall_viiiii=Module[\"dynCall_viiiii\"]=Module[\"asm\"][\"bh\"]).apply(null,arguments)};var dynCall_iij=Module[\"dynCall_iij\"]=function(){return(dynCall_iij=Module[\"dynCall_iij\"]=Module[\"asm\"][\"ch\"]).apply(null,arguments)};var dynCall_iiiiijii=Module[\"dynCall_iiiiijii\"]=function(){return(dynCall_iiiiijii=Module[\"dynCall_iiiiijii\"]=Module[\"asm\"][\"dh\"]).apply(null,arguments)};var dynCall_iiijiii=Module[\"dynCall_iiijiii\"]=function(){return(dynCall_iiijiii=Module[\"dynCall_iiijiii\"]=Module[\"asm\"][\"eh\"]).apply(null,arguments)};var dynCall_iiiijii=Module[\"dynCall_iiiijii\"]=function(){return(dynCall_iiiijii=Module[\"dynCall_iiiijii\"]=Module[\"asm\"][\"fh\"]).apply(null,arguments)};var dynCall_ji=Module[\"dynCall_ji\"]=function(){return(dynCall_ji=Module[\"dynCall_ji\"]=Module[\"asm\"][\"gh\"]).apply(null,arguments)};var dynCall_viii=Module[\"dynCall_viii\"]=function(){return(dynCall_viii=Module[\"dynCall_viii\"]=Module[\"asm\"][\"hh\"]).apply(null,arguments)};var dynCall_iiii=Module[\"dynCall_iiii\"]=function(){return(dynCall_iiii=Module[\"dynCall_iiii\"]=Module[\"asm\"][\"ih\"]).apply(null,arguments)};var dynCall_iiiii=Module[\"dynCall_iiiii\"]=function(){return(dynCall_iiiii=Module[\"dynCall_iiiii\"]=Module[\"asm\"][\"jh\"]).apply(null,arguments)};var dynCall_viijiiii=Module[\"dynCall_viijiiii\"]=function(){return(dynCall_viijiiii=Module[\"dynCall_viijiiii\"]=Module[\"asm\"][\"kh\"]).apply(null,arguments)};var dynCall_viiii=Module[\"dynCall_viiii\"]=function(){return(dynCall_viiii=Module[\"dynCall_viiii\"]=Module[\"asm\"][\"lh\"]).apply(null,arguments)};var dynCall_vij=Module[\"dynCall_vij\"]=function(){return(dynCall_vij=Module[\"dynCall_vij\"]=Module[\"asm\"][\"mh\"]).apply(null,arguments)};var dynCall_jiiii=Module[\"dynCall_jiiii\"]=function(){return(dynCall_jiiii=Module[\"dynCall_jiiii\"]=Module[\"asm\"][\"nh\"]).apply(null,arguments)};var dynCall_viij=Module[\"dynCall_viij\"]=function(){return(dynCall_viij=Module[\"dynCall_viij\"]=Module[\"asm\"][\"oh\"]).apply(null,arguments)};var dynCall_viiji=Module[\"dynCall_viiji\"]=function(){return(dynCall_viiji=Module[\"dynCall_viiji\"]=Module[\"asm\"][\"ph\"]).apply(null,arguments)};var dynCall_jii=Module[\"dynCall_jii\"]=function(){return(dynCall_jii=Module[\"dynCall_jii\"]=Module[\"asm\"][\"qh\"]).apply(null,arguments)};var dynCall_jiii=Module[\"dynCall_jiii\"]=function(){return(dynCall_jiii=Module[\"dynCall_jiii\"]=Module[\"asm\"][\"rh\"]).apply(null,arguments)};var dynCall_viiiiii=Module[\"dynCall_viiiiii\"]=function(){return(dynCall_viiiiii=Module[\"dynCall_viiiiii\"]=Module[\"asm\"][\"sh\"]).apply(null,arguments)};var dynCall_viiiji=Module[\"dynCall_viiiji\"]=function(){return(dynCall_viiiji=Module[\"dynCall_viiiji\"]=Module[\"asm\"][\"th\"]).apply(null,arguments)};var dynCall_vijiiii=Module[\"dynCall_vijiiii\"]=function(){return(dynCall_vijiiii=Module[\"dynCall_vijiiii\"]=Module[\"asm\"][\"uh\"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module[\"dynCall_iiiiiiiii\"]=function(){return(dynCall_iiiiiiiii=Module[\"dynCall_iiiiiiiii\"]=Module[\"asm\"][\"vh\"]).apply(null,arguments)};var dynCall_iiiiii=Module[\"dynCall_iiiiii\"]=function(){return(dynCall_iiiiii=Module[\"dynCall_iiiiii\"]=Module[\"asm\"][\"wh\"]).apply(null,arguments)};var dynCall_vijjjdi=Module[\"dynCall_vijjjdi\"]=function(){return(dynCall_vijjjdi=Module[\"dynCall_vijjjdi\"]=Module[\"asm\"][\"xh\"]).apply(null,arguments)};var dynCall_vijj=Module[\"dynCall_vijj\"]=function(){return(dynCall_vijj=Module[\"dynCall_vijj\"]=Module[\"asm\"][\"yh\"]).apply(null,arguments)};var dynCall_viji=Module[\"dynCall_viji\"]=function(){return(dynCall_viji=Module[\"dynCall_viji\"]=Module[\"asm\"][\"zh\"]).apply(null,arguments)};var dynCall_vijiijjiij=Module[\"dynCall_vijiijjiij\"]=function(){return(dynCall_vijiijjiij=Module[\"dynCall_vijiijjiij\"]=Module[\"asm\"][\"Ah\"]).apply(null,arguments)};var dynCall_vijiiji=Module[\"dynCall_vijiiji\"]=function(){return(dynCall_vijiiji=Module[\"dynCall_vijiiji\"]=Module[\"asm\"][\"Bh\"]).apply(null,arguments)};var dynCall_vijiijii=Module[\"dynCall_vijiijii\"]=function(){return(dynCall_vijiijii=Module[\"dynCall_vijiijii\"]=Module[\"asm\"][\"Ch\"]).apply(null,arguments)};var dynCall_vijii=Module[\"dynCall_vijii\"]=function(){return(dynCall_vijii=Module[\"dynCall_vijii\"]=Module[\"asm\"][\"Dh\"]).apply(null,arguments)};var dynCall_vijij=Module[\"dynCall_vijij\"]=function(){return(dynCall_vijij=Module[\"dynCall_vijij\"]=Module[\"asm\"][\"Eh\"]).apply(null,arguments)};var dynCall_viijii=Module[\"dynCall_viijii\"]=function(){return(dynCall_viijii=Module[\"dynCall_viijii\"]=Module[\"asm\"][\"Fh\"]).apply(null,arguments)};var dynCall_viiiiiiii=Module[\"dynCall_viiiiiiii\"]=function(){return(dynCall_viiiiiiii=Module[\"dynCall_viiiiiiii\"]=Module[\"asm\"][\"Gh\"]).apply(null,arguments)};var dynCall_iiiiiiii=Module[\"dynCall_iiiiiiii\"]=function(){return(dynCall_iiiiiiii=Module[\"dynCall_iiiiiiii\"]=Module[\"asm\"][\"Hh\"]).apply(null,arguments)};var dynCall_iiiiji=Module[\"dynCall_iiiiji\"]=function(){return(dynCall_iiiiji=Module[\"dynCall_iiiiji\"]=Module[\"asm\"][\"Ih\"]).apply(null,arguments)};var dynCall_iiiiiji=Module[\"dynCall_iiiiiji\"]=function(){return(dynCall_iiiiiji=Module[\"dynCall_iiiiiji\"]=Module[\"asm\"][\"Jh\"]).apply(null,arguments)};var dynCall_viijjd=Module[\"dynCall_viijjd\"]=function(){return(dynCall_viijjd=Module[\"dynCall_viijjd\"]=Module[\"asm\"][\"Kh\"]).apply(null,arguments)};var dynCall_viiijjjjii=Module[\"dynCall_viiijjjjii\"]=function(){return(dynCall_viiijjjjii=Module[\"dynCall_viiijjjjii\"]=Module[\"asm\"][\"Lh\"]).apply(null,arguments)};var dynCall_jiiiii=Module[\"dynCall_jiiiii\"]=function(){return(dynCall_jiiiii=Module[\"dynCall_jiiiii\"]=Module[\"asm\"][\"Mh\"]).apply(null,arguments)};var dynCall_iiiiiiiiii=Module[\"dynCall_iiiiiiiiii\"]=function(){return(dynCall_iiiiiiiiii=Module[\"dynCall_iiiiiiiiii\"]=Module[\"asm\"][\"Nh\"]).apply(null,arguments)};var dynCall_iiiiiii=Module[\"dynCall_iiiiiii\"]=function(){return(dynCall_iiiiiii=Module[\"dynCall_iiiiiii\"]=Module[\"asm\"][\"Oh\"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module[\"dynCall_viiiiiiiii\"]=function(){return(dynCall_viiiiiiiii=Module[\"dynCall_viiiiiiiii\"]=Module[\"asm\"][\"Ph\"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module[\"dynCall_viiiiiiiiii\"]=function(){return(dynCall_viiiiiiiiii=Module[\"dynCall_viiiiiiiiii\"]=Module[\"asm\"][\"Qh\"]).apply(null,arguments)};var dynCall_viiiiiii=Module[\"dynCall_viiiiiii\"]=function(){return(dynCall_viiiiiii=Module[\"dynCall_viiiiiii\"]=Module[\"asm\"][\"Rh\"]).apply(null,arguments)};var dynCall_iiiij=Module[\"dynCall_iiiij\"]=function(){return(dynCall_iiiij=Module[\"dynCall_iiiij\"]=Module[\"asm\"][\"Sh\"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiiiiii=Module[\"dynCall_iiiiiiiiiiiiiiii\"]=function(){return(dynCall_iiiiiiiiiiiiiiii=Module[\"dynCall_iiiiiiiiiiiiiiii\"]=Module[\"asm\"][\"Th\"]).apply(null,arguments)};var dynCall_jiji=Module[\"dynCall_jiji\"]=function(){return(dynCall_jiji=Module[\"dynCall_jiji\"]=Module[\"asm\"][\"Uh\"]).apply(null,arguments)};var dynCall_iidiiii=Module[\"dynCall_iidiiii\"]=function(){return(dynCall_iidiiii=Module[\"dynCall_iidiiii\"]=Module[\"asm\"][\"Vh\"]).apply(null,arguments)};var dynCall_j=Module[\"dynCall_j\"]=function(){return(dynCall_j=Module[\"dynCall_j\"]=Module[\"asm\"][\"Wh\"]).apply(null,arguments)};var dynCall_iiiiij=Module[\"dynCall_iiiiij\"]=function(){return(dynCall_iiiiij=Module[\"dynCall_iiiiij\"]=Module[\"asm\"][\"Xh\"]).apply(null,arguments)};var dynCall_iiiiid=Module[\"dynCall_iiiiid\"]=function(){return(dynCall_iiiiid=Module[\"dynCall_iiiiid\"]=Module[\"asm\"][\"Yh\"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module[\"dynCall_iiiiiiiiiii\"]=function(){return(dynCall_iiiiiiiiiii=Module[\"dynCall_iiiiiiiiiii\"]=Module[\"asm\"][\"Zh\"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module[\"dynCall_iiiiiiiiiiiii\"]=function(){return(dynCall_iiiiiiiiiiiii=Module[\"dynCall_iiiiiiiiiiiii\"]=Module[\"asm\"][\"_h\"]).apply(null,arguments)};var dynCall_fiii=Module[\"dynCall_fiii\"]=function(){return(dynCall_fiii=Module[\"dynCall_fiii\"]=Module[\"asm\"][\"$h\"]).apply(null,arguments)};var dynCall_diii=Module[\"dynCall_diii\"]=function(){return(dynCall_diii=Module[\"dynCall_diii\"]=Module[\"asm\"][\"ai\"]).apply(null,arguments)};var dynCall_i=Module[\"dynCall_i\"]=function(){return(dynCall_i=Module[\"dynCall_i\"]=Module[\"asm\"][\"bi\"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module[\"dynCall_iiiiiiiiiiii\"]=function(){return(dynCall_iiiiiiiiiiii=Module[\"dynCall_iiiiiiiiiiii\"]=Module[\"asm\"][\"ci\"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module[\"dynCall_viiiiiiiiiiiiiii\"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module[\"dynCall_viiiiiiiiiiiiiii\"]=Module[\"asm\"][\"di\"]).apply(null,arguments)};var dynCall_iiiiijj=Module[\"dynCall_iiiiijj\"]=function(){return(dynCall_iiiiijj=Module[\"dynCall_iiiiijj\"]=Module[\"asm\"][\"ei\"]).apply(null,arguments)};var dynCall_iiiiiijj=Module[\"dynCall_iiiiiijj\"]=function(){return(dynCall_iiiiiijj=Module[\"dynCall_iiiiiijj\"]=Module[\"asm\"][\"fi\"]).apply(null,arguments)};var _asyncify_start_unwind=Module[\"_asyncify_start_unwind\"]=function(){return(_asyncify_start_unwind=Module[\"_asyncify_start_unwind\"]=Module[\"asm\"][\"gi\"]).apply(null,arguments)};var _asyncify_stop_unwind=Module[\"_asyncify_stop_unwind\"]=function(){return(_asyncify_stop_unwind=Module[\"_asyncify_stop_unwind\"]=Module[\"asm\"][\"hi\"]).apply(null,arguments)};var _asyncify_start_rewind=Module[\"_asyncify_start_rewind\"]=function(){return(_asyncify_start_rewind=Module[\"_asyncify_start_rewind\"]=Module[\"asm\"][\"ii\"]).apply(null,arguments)};var _asyncify_stop_rewind=Module[\"_asyncify_stop_rewind\"]=function(){return(_asyncify_stop_rewind=Module[\"_asyncify_stop_rewind\"]=Module[\"asm\"][\"ji\"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_viiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{dynCall_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return dynCall_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viijiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{dynCall_viijiiii(index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return dynCall_ji(index,a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viji(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viji(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiji(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiji(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiji(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiji(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viijjd(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viijjd(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iij(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iij(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiijjjjii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){var sp=stackSave();try{dynCall_viiijjjjii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viij(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viij(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vijiijii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{dynCall_vijiijii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_jiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return dynCall_jii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_jiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiji(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viiiji(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_j(index){var sp=stackSave();try{return dynCall_j(index)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiij(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiij(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module[\"UTF8ToString\"]=UTF8ToString;Module[\"stringToUTF8\"]=stringToUTF8;Module[\"lengthBytesUTF8\"]=lengthBytesUTF8;Module[\"addFunction\"]=addFunction;Module[\"getTempRet0\"]=getTempRet0;Module[\"intArrayToString\"]=intArrayToString;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){EXITSTATUS=status;procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module[\"onExit\"])Module[\"onExit\"](code);ABORT=true}quit_(code,new ExitStatus(code))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();\n\n\n return monero_javascript.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = monero_javascript;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return monero_javascript; });\nelse if (typeof exports === 'object')\n exports[\"monero_javascript\"] = monero_javascript;\n","\nvar monero_javascript = (() => {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(monero_javascript) {\n monero_javascript = monero_javascript || {};\n\nvar Module=typeof monero_javascript!=\"undefined\"?monero_javascript:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err(\"exiting due to exception: \"+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}requireNodeFS=(()=>{if(!nodePath){fs=require(\"fs\");nodePath=require(\"path\")}});read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath[\"normalize\"](filename);return fs.readFileSync(filename,binary?undefined:\"utf8\")};readBinary=(filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret});readAsync=((filename,onload,onerror)=>{requireNodeFS();filename=nodePath[\"normalize\"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"unhandledRejection\",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process[\"exitCode\"]=status;throw toThrow}logExceptionOnExit(toThrow);process[\"exit\"](status)});Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText});if(ENVIRONMENT_IS_WORKER){readBinary=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)})}readAsync=((url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=(()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()});xhr.onerror=onerror;xhr.send(null)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];function uleb128Encode(n){if(n<128){return[n]}return[n%128|128,n>>7]}function convertJsFunctionToWasm(func,sig){if(typeof WebAssembly.Function==\"function\"){var typeNames={\"i\":\"i32\",\"j\":\"i64\",\"f\":\"f32\",\"d\":\"f64\"};var type={parameters:[],results:sig[0]==\"v\"?[]:[typeNames[sig[0]]]};for(var i=1;i{tempRet0=value};var getTempRet0=()=>tempRet0;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!=\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){{if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}}what=\"Aborted(\"+what+\")\";err(what);ABORT=true;EXITSTATUS=1;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith(\"file://\")}var wasmBinaryFile;wasmBinaryFile=\"monero_wallet_keys.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"Fa\"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"Ia\"];addOnInit(Module[\"asm\"][\"Ga\"]);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiationResult(result){receiveInstance(result[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func==\"number\"){if(callback.arg===undefined){getWasmTableEntry(func)()}else{getWasmTableEntry(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function setWasmTableEntry(idx,func){wasmTable.set(idx,func)}function _CONF_modules_unload(){err(\"missing function: CONF_modules_unload\");abort(-1)}function _ERR_reason_error_string(){err(\"missing function: ERR_reason_error_string\");abort(-1)}function ___assert_fail(condition,filename,line,func){abort(\"Assertion failed: \"+UTF8ToString(condition)+\", at: \"+[filename?UTF8ToString(filename):\"unknown filename\",line,func?UTF8ToString(func):\"unknown function\"])}function ___cxa_allocate_exception(size){return _malloc(size+24)+24}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);exception_addRef(info);return info.get_exception_ptr()}var exceptionLast=0;function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}function ___cxa_free_exception(ptr){return _free(new ExceptionInfo(ptr).ptr)}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){getWasmTableEntry(destructor)(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var info=exceptionCaught.pop();exception_decRef(info);exceptionLast=0}function ___resumeException(ptr){if(!exceptionLast){exceptionLast=ptr}throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path===\"/\")return\"/\";path=PATH.normalize(path);path=path.replace(/\\/$/,\"\");var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:(l,r)=>{return PATH.normalize(l+\"/\"+r)}};function getRandomDevice(){if(typeof crypto==\"object\"&&typeof crypto[\"getRandomValues\"]==\"function\"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require(\"crypto\");return function(){return crypto_module[\"randomBytes\"](1)[0]}}catch(e){}}return function(){abort(\"randomDevice\")}}var PATH_FS={resolve:function(){var resolvedPath=\"\",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString(\"utf-8\")}else{result=null}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else if(typeof readline==\"function\"){result=readline();if(result!==null){result+=\"\\n\"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,\"/\",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),false);var current=FS.root;var current_path=\"/\";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?mount+\"/\"+path:mount+path}path=path?node.name+\"/\"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{\"r\":0,\"r+\":2,\"w\":577,\"w+\":578,\"a\":1089,\"a+\":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags==\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags},flagsToPermissionString:flag=>{var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get function(){return this.shared.position},set:function(val){this.shared.position=val}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(\"warning: \"+FS.syncFSRequests+\" FS.syncfs operations in flight at once, probably just doing extra work\")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split(\"/\");var d=\"\";for(var i=0;i{if(typeof dev==\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===\"\"){throw new FS.ErrnoError(44)}flags=typeof flags==\"string\"?FS.modeStringToFlags(flags):flags;mode=typeof mode==\"undefined\"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error('Invalid encoding type \"'+opts.encoding+'\"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices:()=>{FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice(\"/dev\",\"random\",random_device);FS.createDevice(\"/dev\",\"urandom\",random_device);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories:()=>{FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount:()=>{var node=FS.createNode(proc_self,\"fd\",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},\"/proc/self/fd\")},createStandardStreams:()=>{if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message=\"FS error\"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"\"})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent==\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent==\"string\"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||\"\",true)}};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(\"cp \"+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return\"EM_FS_\"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out(\"creating db\");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],\"readwrite\");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],\"readonly\")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort(\"bad ioctl syscall \"+op)}}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]===\"/\")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret=\"\";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return\"_unknown\"}name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return\"_\"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return function(){null;return body.apply(this,arguments)}}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+\": \"+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function registerType(rawType,registeredInstance,options={}){if(!(\"argPackAdvance\"in registeredInstance)){throw new TypeError(\"registerType registeredInstance requires argPackAdvance\")}var name=registeredInstance.name;if(!rawType){throwBindingError('type \"'+name+'\" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(\"Cannot register type '\"+name+\"' twice\")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(wt){return!!wt},\"toWireType\":function(destructors,o){return o?trueValue:falseValue},\"argPackAdvance\":8,\"readValueFromPointer\":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError(\"Unknown boolean type size: \"+name)}return this[\"fromWireType\"](heap[pointer>>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function simpleReadValueFromPointer(pointer){return this[\"fromWireType\"](HEAPU32[pointer>>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},\"toWireType\":function(destructors,value){return Emval.toHandle(value)},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this[\"fromWireType\"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this[\"fromWireType\"](HEAPF64[pointer>>3])};default:throw new TypeError(\"Unknown float type: \"+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(value){return value},\"toWireType\":function(destructors,value){return value},\"argPackAdvance\":8,\"readValueFromPointer\":floatReadValueFromPointer(name,shift),destructorFunction:null})}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistant public symbol\")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module[\"dynCall_\"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){if(sig.includes(\"j\")){return dynCallLegacy(sig,ptr,args)}return getWasmTableEntry(ptr).apply(null,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes(\"j\")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(\"unknown function pointer with signature \"+signature+\": \"+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+\": \"+unboundTypes.map(getTypeName).join([\", \"]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(\"Cannot call \"+name+\" due to unbound types\",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError(\"Unknown integer type: \"+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes(\"unsigned\");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,\"fromWireType\":fromWireType,\"toWireType\":toWireType,\"argPackAdvance\":8,\"readValueFromPointer\":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":decodeMemoryView,\"argPackAdvance\":8,\"readValueFromPointer\":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name===\"std::string\";registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},\"toWireType\":function(destructors,value){if(!(typeof value==\"string\")){throwBindingError(\"Cannot pass non-string to C++ string type \"+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,\"argPackAdvance\":0,\"fromWireType\":function(){return undefined},\"toWireType\":function(destructors,o){return undefined}})}function __emscripten_date_now(){return Date.now()}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emscripten_get_progname(str,len){stringToUTF8(thisProgram,str,len)}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+\" has unknown type \"+getTypeName(rawType))}return impl}function __emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2)+i],\"parameter \"+i)}return a}function __emval_call(handle,argCount,argTypes,argv){handle=Emval.toValue(handle);var types=__emval_lookupTypes(argCount,argTypes);var args=new Array(argCount);for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function __emval_take_value(type,argv){type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](argv);return Emval.toHandle(v)}function __gmtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();return date.getTime()/1e3|0}function _tzset_impl(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAP32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return match?match[1]:\"GMT\"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAP32[tzname+4>>2]=summerNamePtr}else{HEAP32[tzname>>2]=summerNamePtr;HEAP32[tzname+4>>2]=winterNamePtr}}function __tzset_js(timezone,daylight,tzname){if(__tzset_js.called)return;__tzset_js.called=true;_tzset_impl(timezone,daylight,tzname)}function _abort(){abort(\"\")}function _emscripten_get_heap_max(){return 2147483648}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=(()=>{var t=process[\"hrtime\"]();return t[0]*1e3+t[1]/1e6})}else _emscripten_get_now=(()=>performance.now());function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=_emscripten_get_heap_max();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var ENV={};function getExecutableName(){return thisProgram||\"./this.program\"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={\"USER\":\"web_user\",\"LOGNAME\":\"web_user\",\"PATH\":\"/\",\"PWD\":\"/\",\"HOME\":\"/home/web_user\",\"LANG\":lang,\"_\":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+\"=\"+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return 61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _llvm_eh_typeid_for(type){return type}function _proc_exit(code){procExit(code)}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):\"\"};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_1[rule])}var WEEKDAYS=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];var MONTHS=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];function leadingSomething(value,digits,character){var str=typeof value==\"number\"?value.toString():value||\"\";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={\"%a\":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},\"%A\":function(date){return WEEKDAYS[date.tm_wday]},\"%b\":function(date){return MONTHS[date.tm_mon].substring(0,3)},\"%B\":function(date){return MONTHS[date.tm_mon]},\"%C\":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},\"%d\":function(date){return leadingNulls(date.tm_mday,2)},\"%e\":function(date){return leadingSomething(date.tm_mday,2,\" \")},\"%g\":function(date){return getWeekBasedYear(date).toString().substring(2)},\"%G\":function(date){return getWeekBasedYear(date)},\"%H\":function(date){return leadingNulls(date.tm_hour,2)},\"%I\":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},\"%j\":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},\"%m\":function(date){return leadingNulls(date.tm_mon+1,2)},\"%M\":function(date){return leadingNulls(date.tm_min,2)},\"%n\":function(){return\"\\n\"},\"%p\":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return\"AM\"}else{return\"PM\"}},\"%S\":function(date){return leadingNulls(date.tm_sec,2)},\"%t\":function(){return\"\\t\"},\"%u\":function(date){return date.tm_wday||7},\"%U\":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},\"%V\":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},\"%w\":function(date){return date.tm_wday},\"%W\":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},\"%y\":function(date){return(date.tm_year+1900).toString().substring(2)},\"%Y\":function(date){return date.tm_year+1900},\"%z\":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?\"+\":\"-\")+String(\"0000\"+off).slice(-4)},\"%Z\":function(date){return date.tm_zone},\"%%\":function(){return\"%\"}};pattern=pattern.replace(/%%/g,\"\\0\\0\");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\\0\\0/g,\"%\");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _v4_generate_JIT_code(){err(\"missing function: v4_generate_JIT_code\");abort(-1)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();embind_init_charCodes();BindingError=Module[\"BindingError\"]=extendError(Error,\"BindingError\");InternalError=Module[\"InternalError\"]=extendError(Error,\"InternalError\");init_emval();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,\"Character code \"+chr+\" (\"+String.fromCharCode(chr)+\") at offset \"+i+\" not in 0x00-0xFF.\")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}var asmLibraryArg={\"ya\":_CONF_modules_unload,\"Aa\":_ERR_reason_error_string,\"j\":___assert_fail,\"d\":___cxa_allocate_exception,\"m\":___cxa_begin_catch,\"n\":___cxa_end_catch,\"b\":___cxa_find_matching_catch_2,\"c\":___cxa_find_matching_catch_3,\"w\":___cxa_free_exception,\"O\":___cxa_rethrow,\"e\":___cxa_throw,\"ha\":___cxa_uncaught_exceptions,\"i\":___resumeException,\"N\":___syscall_fcntl64,\"fa\":___syscall_ioctl,\"ma\":___syscall_mkdirat,\"R\":___syscall_openat,\"ka\":___syscall_stat64,\"Z\":__embind_register_bigint,\"va\":__embind_register_bool,\"ua\":__embind_register_emval,\"U\":__embind_register_float,\"s\":__embind_register_function,\"x\":__embind_register_integer,\"u\":__embind_register_memory_view,\"T\":__embind_register_std_string,\"J\":__embind_register_std_wstring,\"wa\":__embind_register_void,\"H\":__emscripten_date_now,\"pa\":__emscripten_get_now_is_monotonic,\"la\":__emscripten_get_progname,\"Da\":__emval_call,\"Ea\":__emval_decref,\"Ca\":__emval_equals,\"V\":__emval_incref,\"za\":__emval_take_value,\"qa\":__gmtime_js,\"ra\":__mktime_js,\"sa\":__tzset_js,\"D\":_abort,\"ja\":_emscripten_get_heap_max,\"ia\":_emscripten_resize_heap,\"na\":_environ_get,\"oa\":_environ_sizes_get,\"S\":_exit,\"I\":_fd_close,\"Q\":_fd_read,\"Y\":_fd_seek,\"P\":_fd_write,\"a\":_getTempRet0,\"K\":invoke_diii,\"L\":invoke_fiii,\"t\":invoke_i,\"f\":invoke_ii,\"g\":invoke_iii,\"p\":invoke_iiii,\"o\":invoke_iiiii,\"ga\":invoke_iiiiid,\"A\":invoke_iiiiii,\"v\":invoke_iiiiiii,\"M\":invoke_iiiiiiii,\"F\":invoke_iiiiiiiiiiii,\"W\":invoke_iiiiij,\"ba\":invoke_ji,\"aa\":invoke_jii,\"$\":invoke_jiii,\"da\":invoke_jiiii,\"l\":invoke_v,\"r\":invoke_vi,\"h\":invoke_vii,\"k\":invoke_viii,\"z\":invoke_viiii,\"G\":invoke_viiiii,\"Ba\":invoke_viiiiii,\"y\":invoke_viiiiiii,\"B\":invoke_viiiiiiiiii,\"E\":invoke_viiiiiiiiiiiiiii,\"_\":invoke_viiiji,\"ca\":invoke_viij,\"X\":invoke_viijii,\"q\":_llvm_eh_typeid_for,\"ta\":_proc_exit,\"C\":_setTempRet0,\"ea\":_strftime_l,\"xa\":_v4_generate_JIT_code};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var __ZN5boost13serialization16singleton_module8get_lockEv=Module[\"__ZN5boost13serialization16singleton_module8get_lockEv\"]=function(){return(__ZN5boost13serialization16singleton_module8get_lockEv=Module[\"__ZN5boost13serialization16singleton_module8get_lockEv\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var ___getTypeName=Module[\"___getTypeName\"]=function(){return(___getTypeName=Module[\"___getTypeName\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=function(){return(___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _setThrew=Module[\"_setThrew\"]=function(){return(_setThrew=Module[\"_setThrew\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var ___cxa_can_catch=Module[\"___cxa_can_catch\"]=function(){return(___cxa_can_catch=Module[\"___cxa_can_catch\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module[\"___cxa_is_pointer_type\"]=function(){return(___cxa_is_pointer_type=Module[\"___cxa_is_pointer_type\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var dynCall_ji=Module[\"dynCall_ji\"]=function(){return(dynCall_ji=Module[\"dynCall_ji\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var dynCall_vijjjdi=Module[\"dynCall_vijjjdi\"]=function(){return(dynCall_vijjjdi=Module[\"dynCall_vijjjdi\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var dynCall_vij=Module[\"dynCall_vij\"]=function(){return(dynCall_vij=Module[\"dynCall_vij\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var dynCall_vijj=Module[\"dynCall_vijj\"]=function(){return(dynCall_vijj=Module[\"dynCall_vijj\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var dynCall_viijii=Module[\"dynCall_viijii\"]=function(){return(dynCall_viijii=Module[\"dynCall_viijii\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var dynCall_jiiii=Module[\"dynCall_jiiii\"]=function(){return(dynCall_jiiii=Module[\"dynCall_jiiii\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var dynCall_viij=Module[\"dynCall_viij\"]=function(){return(dynCall_viij=Module[\"dynCall_viij\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var dynCall_viiji=Module[\"dynCall_viiji\"]=function(){return(dynCall_viiji=Module[\"dynCall_viiji\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var dynCall_jii=Module[\"dynCall_jii\"]=function(){return(dynCall_jii=Module[\"dynCall_jii\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var dynCall_jiii=Module[\"dynCall_jiii\"]=function(){return(dynCall_jiii=Module[\"dynCall_jiii\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var dynCall_viiiji=Module[\"dynCall_viiiji\"]=function(){return(dynCall_viiiji=Module[\"dynCall_viiiji\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var dynCall_vijiiii=Module[\"dynCall_vijiiii\"]=function(){return(dynCall_vijiiii=Module[\"dynCall_vijiiii\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var dynCall_iiiij=Module[\"dynCall_iiiij\"]=function(){return(dynCall_iiiij=Module[\"dynCall_iiiij\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var dynCall_jiji=Module[\"dynCall_jiji\"]=function(){return(dynCall_jiji=Module[\"dynCall_jiji\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var dynCall_iiiiij=Module[\"dynCall_iiiiij\"]=function(){return(dynCall_iiiiij=Module[\"dynCall_iiiiij\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var dynCall_iiiiijj=Module[\"dynCall_iiiiijj\"]=function(){return(dynCall_iiiiijj=Module[\"dynCall_iiiiijj\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var dynCall_iiiiiijj=Module[\"dynCall_iiiiiijj\"]=function(){return(dynCall_iiiiiijj=Module[\"dynCall_iiiiiijj\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viij(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viij(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return dynCall_ji(index,a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return dynCall_jii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_jiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiji(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viiiji(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiij(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiij(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module[\"UTF8ToString\"]=UTF8ToString;Module[\"stringToUTF8\"]=stringToUTF8;Module[\"lengthBytesUTF8\"]=lengthBytesUTF8;Module[\"addFunction\"]=addFunction;Module[\"getTempRet0\"]=getTempRet0;Module[\"intArrayToString\"]=intArrayToString;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){EXITSTATUS=status;procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module[\"onExit\"])Module[\"onExit\"](code);ABORT=true}quit_(code,new ExitStatus(code))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();\n\n\n return monero_javascript.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = monero_javascript;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return monero_javascript; });\nelse if (typeof exports === 'object')\n exports[\"monero_javascript\"] = monero_javascript;\n","'use strict'\n\n/**\n * Export all library models.\n * \n * See the full model specification: http://moneroecosystem.org/monero-java/monero-spec.pdf\n */\nmodule.exports = {};\n\n// export common models\nmodule.exports.GenUtils = require(\"./src/main/js/common/GenUtils\");\nmodule.exports.BigInteger = require(\"./src/main/js/common/biginteger\").BigInteger;\nmodule.exports.Filter = require(\"./src/main/js/common/Filter\");\nmodule.exports.MoneroError = require(\"./src/main/js/common/MoneroError\");\nmodule.exports.HttpClient = require(\"./src/main/js/common/HttpClient\");\nmodule.exports.LibraryUtils = require(\"./src/main/js/common/LibraryUtils\");\nmodule.exports.MoneroRpcConnection = require(\"./src/main/js/common/MoneroRpcConnection\");\nmodule.exports.MoneroRpcError = require(\"./src/main/js/common/MoneroRpcError\");\nmodule.exports.SslOptions = require(\"./src/main/js/common/SslOptions\");\nmodule.exports.TaskLooper = require(\"./src/main/js/common/TaskLooper\");\nmodule.exports.ThreadPool = require(\"./src/main/js/common/ThreadPool\");\n\n// export daemon models\nmodule.exports.ConnectionType = require(\"./src/main/js/daemon/model/ConnectionType\");\nmodule.exports.MoneroAltChain = require(\"./src/main/js/daemon/model/MoneroAltChain\");\nmodule.exports.MoneroBan = require(\"./src/main/js/daemon/model/MoneroBan\");\nmodule.exports.MoneroBlockHeader = require(\"./src/main/js/daemon/model/MoneroBlockHeader\");\nmodule.exports.MoneroBlock = require(\"./src/main/js/daemon/model/MoneroBlock\");\nmodule.exports.MoneroBlockTemplate = require(\"./src/main/js/daemon/model/MoneroBlockTemplate\");\nmodule.exports.MoneroConnectionSpan = require(\"./src/main/js/daemon/model/MoneroConnectionSpan\");\nmodule.exports.MoneroDaemonInfo = require(\"./src/main/js/daemon/model/MoneroDaemonInfo\");\nmodule.exports.MoneroDaemonListener = require(\"./src/main/js/daemon/model/MoneroDaemonListener\");\nmodule.exports.MoneroDaemonSyncInfo = require(\"./src/main/js/daemon/model/MoneroDaemonSyncInfo\");\nmodule.exports.MoneroDaemonUpdateCheckResult = require(\"./src/main/js/daemon/model/MoneroDaemonUpdateCheckResult\");\nmodule.exports.MoneroDaemonUpdateDownloadResult = require(\"./src/main/js/daemon/model/MoneroDaemonUpdateDownloadResult\");\nmodule.exports.MoneroFeeEstimate = require(\"./src/main/js/daemon/model/MoneroFeeEstimate\");\nmodule.exports.MoneroHardForkInfo = require(\"./src/main/js/daemon/model/MoneroHardForkInfo\");\nmodule.exports.MoneroKeyImage = require(\"./src/main/js/daemon/model/MoneroKeyImage\");\nmodule.exports.MoneroKeyImageSpentStatus = require(\"./src/main/js/daemon/model/MoneroKeyImageSpentStatus\");\nmodule.exports.MoneroMinerTxSum = require(\"./src/main/js/daemon/model/MoneroMinerTxSum\");\nmodule.exports.MoneroMiningStatus = require(\"./src/main/js/daemon/model/MoneroMiningStatus\");\nmodule.exports.MoneroNetworkType = require(\"./src/main/js/daemon/model/MoneroNetworkType\");\nmodule.exports.MoneroOutput = require(\"./src/main/js/daemon/model/MoneroOutput\");\nmodule.exports.MoneroOutputHistogramEntry = require(\"./src/main/js/daemon/model/MoneroOutputHistogramEntry\");\nmodule.exports.MoneroPruneResult = require(\"./src/main/js/daemon/model/MoneroPruneResult\");\nmodule.exports.MoneroSubmitTxResult = require(\"./src/main/js/daemon/model/MoneroSubmitTxResult\");\nmodule.exports.MoneroTx = require(\"./src/main/js/daemon/model/MoneroTx\");\nmodule.exports.MoneroTxPoolStats = require(\"./src/main/js/daemon/model/MoneroTxPoolStats\");\nmodule.exports.MoneroVersion = require(\"./src/main/js/daemon/model/MoneroVersion\");\nmodule.exports.MoneroPeer = require(\"./src/main/js/daemon/model/MoneroPeer\");\n\n// export wallet models\nmodule.exports.MoneroAccount = require(\"./src/main/js/wallet/model/MoneroAccount\");\nmodule.exports.MoneroAccountTag = require(\"./src/main/js/wallet/model/MoneroAccountTag\");\nmodule.exports.MoneroAddressBookEntry = require(\"./src/main/js/wallet/model/MoneroAddressBookEntry\");\nmodule.exports.MoneroCheck = require(\"./src/main/js/wallet/model/MoneroCheck\");\nmodule.exports.MoneroCheckReserve = require(\"./src/main/js/wallet/model/MoneroCheckReserve\");\nmodule.exports.MoneroCheckTx = require(\"./src/main/js/wallet/model/MoneroCheckTx\");\nmodule.exports.MoneroDestination = require(\"./src/main/js/wallet/model/MoneroDestination\");\nmodule.exports.MoneroIntegratedAddress = require(\"./src/main/js/wallet/model/MoneroIntegratedAddress\");\nmodule.exports.MoneroKeyImageImportResult = require(\"./src/main/js/wallet/model/MoneroKeyImageImportResult\");\nmodule.exports.MoneroMultisigInfo = require(\"./src/main/js/wallet/model/MoneroMultisigInfo\");\nmodule.exports.MoneroMultisigInitResult = require(\"./src/main/js/wallet/model/MoneroMultisigInitResult\");\nmodule.exports.MoneroMultisigSignResult = require(\"./src/main/js/wallet/model/MoneroMultisigSignResult\");\nmodule.exports.MoneroOutputWallet = require(\"./src/main/js/wallet/model/MoneroOutputWallet\");\nmodule.exports.MoneroOutputQuery = require(\"./src/main/js/wallet/model/MoneroOutputQuery\");\nmodule.exports.MoneroTxPriority = require(\"./src/main/js/wallet/model/MoneroTxPriority\");\nmodule.exports.MoneroTxConfig = require(\"./src/main/js/wallet/model/MoneroTxConfig\");\nmodule.exports.MoneroSubaddress = require(\"./src/main/js/wallet/model/MoneroSubaddress\");\nmodule.exports.MoneroSyncResult = require(\"./src/main/js/wallet/model/MoneroSyncResult\");\nmodule.exports.MoneroTransfer = require(\"./src/main/js/wallet/model/MoneroTransfer\");\nmodule.exports.MoneroIncomingTransfer = require(\"./src/main/js/wallet/model/MoneroIncomingTransfer\");\nmodule.exports.MoneroOutgoingTransfer = require(\"./src/main/js/wallet/model/MoneroOutgoingTransfer\");\nmodule.exports.MoneroTransferQuery = require(\"./src/main/js/wallet/model/MoneroTransferQuery\");\nmodule.exports.MoneroTxSet = require(\"./src/main/js/wallet/model/MoneroTxSet\");\nmodule.exports.MoneroTxWallet = require(\"./src/main/js/wallet/model/MoneroTxWallet\");\nmodule.exports.MoneroTxQuery = require(\"./src/main/js/wallet/model/MoneroTxQuery\");\nmodule.exports.MoneroWalletListener = require(\"./src/main/js/wallet/model/MoneroWalletListener\");\nmodule.exports.MoneroWalletConfig = require(\"./src/main/js/wallet/model/MoneroWalletConfig\");\nmodule.exports.MoneroMessageSignatureType = require(\"./src/main/js/wallet/model/MoneroMessageSignatureType\");\nmodule.exports.MoneroMessageSignatureResult = require(\"./src/main/js/wallet/model/MoneroMessageSignatureResult\");\n\n// export connection manager\nmodule.exports.MoneroConnectionManager = require(\"./src/main/js/common/MoneroConnectionManager\");\nmodule.exports.MoneroConnectionManagerListener = require(\"./src/main/js/common/MoneroConnectionManagerListener\");\n\n// export daemon, wallet, and utils classes\nmodule.exports.MoneroUtils = require(\"./src/main/js/common/MoneroUtils\");\nmodule.exports.MoneroDaemon = require(\"./src/main/js/daemon/MoneroDaemon\");\nmodule.exports.MoneroWallet = require(\"./src/main/js/wallet/MoneroWallet\");\nmodule.exports.MoneroDaemonRpc = require(\"./src/main/js/daemon/MoneroDaemonRpc\");\nmodule.exports.MoneroWalletRpc = require(\"./src/main/js/wallet/MoneroWalletRpc\");\nmodule.exports.MoneroWalletKeys = require(\"./src/main/js/wallet/MoneroWalletKeys\");\nmodule.exports.MoneroWalletFull = require(\"./src/main/js/wallet/MoneroWalletFull\");\n\n// ---------------------------- GLOBAL FUNCTIONS ------------------------------\n\n/**\n *

Get the version of the monero-javascript library.

\n * \n * @return {string} the version of this monero-javascript library\n */\nmodule.exports.getVersion = function() {\n return module.exports.MoneroUtils.getVersion();\n}\n\n/**\n *

Create a client connected to monerod.

\n * \n *

Examples:

\n * \n * \n * let daemon = await monerojs.connectToDaemonRpc(\"http://localhost:38081\", \"superuser\", \"abctesting123\");

\n * \n * let daemon = await monerojs.connectToDaemonRpc({
\n *    uri: \"http://localhost:38081\",
\n *    username: \"superuser\",
\n *    password: \"abctesting123\"
\n * });\n *
\n * \n * @param {string|object|MoneroRpcConnection} uriOrConfig - uri of monerod or JS config object or MoneroRpcConnection\n * @param {string} uriOrConfig.uri - uri of monerod\n * @param {string} uriOrConfig.username - username to authenticate with monerod (optional)\n * @param {string} uriOrConfig.password - password to authenticate with monerod (optional)\n * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {number} uriOrConfig.pollInterval - poll interval to query for updates in ms (default 5000)\n * @param {boolean} uriOrConfig.proxyToWorker - run the daemon client in a web worker if true (default true)\n * @param {string} username - username to authenticate with monerod (optional)\n * @param {string} password - password to authenticate with monerod (optional)\n * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {number} pollInterval - poll interval to query for updates in ms (default 5000)\n * @param {boolean} proxyToWorker - runs the daemon client in a web worker if true (default true)\n * @return {MoneroDaemonRpc} the daemon RPC client\n */\nmodule.exports.connectToDaemonRpc = function() { return module.exports.MoneroDaemonRpc._connectToDaemonRpc(...arguments); }\n\n/**\n *

Create a client connected to monero-wallet-rpc.

\n * \n *

Examples:

\n * \n * \n * let walletRpc = await monerojs.connectToWalletRpc(\"http://localhost:38081\", \"superuser\", \"abctesting123\");

\n * \n * let walletRpc = await monerojs.connectToWalletRpc({
\n *    uri: \"http://localhost:38081\",
\n *    username: \"superuser\",
\n *    password: \"abctesting123\",
\n *    rejectUnauthorized: false // e.g. local development
\n * });

\n * \n * // connect to monero-wallet-rpc running as internal process
\n * let walletRpc = await monerojs.connectToWalletRpc([
\n *    \"/path/to/monero-wallet-rpc\",
\n *    \"--stagenet\",
\n *    \"--daemon-address\", \"http://localhost:38081\",
\n *    \"--daemon-login\", \"superuser:abctesting123\",
\n *    \"--rpc-bind-port\", \"38085\",
\n *    \"--rpc-login\", \"rpc_user:abc123\",
\n *    \"--wallet-dir\", \"/path/to/wallets\", // defaults to monero-wallet-rpc directory
\n *    \"--rpc-access-control-origins\", \"http://localhost:8080\"
\n *   ]);\n * \n *
\n * \n * @param {string|string[]|object|MoneroRpcConnection} uriOrConfig - uri of monero-wallet-rpc or terminal parameters or JS config object or MoneroRpcConnection\n * @param {string} uriOrConfig.uri - uri of monero-wallet-rpc\n * @param {string} uriOrConfig.username - username to authenticate with monero-wallet-rpc (optional)\n * @param {string} uriOrConfig.password - password to authenticate with monero-wallet-rpc (optional)\n * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {string} username - username to authenticate with monero-wallet-rpc (optional)\n * @param {string} password - password to authenticate with monero-wallet-rpc (optional)\n * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @return {MoneroWalletRpc} the wallet RPC client\n */\nmodule.exports.connectToWalletRpc = function() { return module.exports.MoneroWalletRpc._connectToWalletRpc(...arguments); }\n\n/**\n *

Create a Monero wallet using fully client-side WebAssembly bindings to monero-project's wallet2 in C++.

\n * \n *

Example:

\n * \n * \n * let wallet = await monerojs.createWalletFull({
\n *    path: \"./test_wallets/wallet1\", // leave blank for in-memory wallet
\n *    password: \"supersecretpassword\",
\n *    networkType: MoneroNetworkType.STAGENET,
\n *    seed: \"coexist igloo pamphlet lagoon...\",
\n *    restoreHeight: 1543218,
\n *    server: new monerojs.MoneroRpcConnection(\"http://localhost:38081\", \"daemon_user\", \"daemon_password_123\"),
\n * });\n *
\n * \n * @param {object|MoneroWalletConfig} config - MoneroWalletConfig or equivalent config object\n * @param {string} config.path - path of the wallet to create (optional, in-memory wallet if not given)\n * @param {string} config.password - password of the wallet to create\n * @param {string|number} config.networkType - network type of the wallet to create (one of \"mainnet\", \"testnet\", \"stagenet\" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)\n * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)\n * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase\n * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)\n * @param {string} config.privateViewKey - private view key of the wallet to create (optional)\n * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)\n * @param {number} config.restoreHeight - block height to start scanning frsom (defaults to 0 unless generating random wallet)\n * @param {string} config.language - language of the wallet's seed (defaults to \"English\" or auto-detected)\n * @param {number} config.accountLookahead - number of accounts to scan (optional)\n * @param {number} config.subaddressLookahead - number of subaddresses to scan per account (optional)\n * @param {MoneroRpcConnection|object} config.server - MoneroRpcConnection or equivalent JS object providing daemon configuration (optional)\n * @param {string} config.serverUri - uri of the wallet's daemon (optional)\n * @param {string} config.serverUsername - username to authenticate with the daemon (optional)\n * @param {string} config.serverPassword - password to authenticate with the daemon (optional)\n * @param {boolean} config.rejectUnauthorized - reject self-signed server certificates if true (defaults to true)\n * @param {boolean} config.proxyToWorker - proxies wallet operations to a web worker in order to not block the main thread (default true)\n * @param {fs} config.fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)\n * @return {MoneroWalletFull} the created wallet\n */\nmodule.exports.createWalletFull = function() { return module.exports.MoneroWalletFull.createWallet(...arguments); }\n\n/**\n *

Open an existing Monero wallet using fully client-side WebAssembly bindings to monero-project's wallet2 in C++.

\n * \n *

Examples:

\n * \n * \n * let wallet1 = await monerojs.openWalletFull(
\n *    \"./wallets/wallet1\",
\n *    \"supersecretpassword\",
\n *    MoneroNetworkType.STAGENET,
\n *    \"http://localhost:38081\" // daemon uri
\n * );

\n * \n * let wallet2 = await monerojs.openWalletFull({
\n *    path: \"./wallets/wallet2\",
\n *    password: \"supersecretpassword\",
\n *    networkType: MoneroNetworkType.STAGENET,
\n *    serverUri: \"http://localhost:38081\", // daemon configuration
\n *    serverUsername: \"superuser\",
\n *    serverPassword: \"abctesting123\"
\n * });\n *
\n * \n * @param {MoneroWalletConfig|object|string} configOrPath - MoneroWalletConfig or equivalent config object or a path to a wallet to open\n * @param {string} configOrPath.path - path of the wallet to open (optional if 'keysData' provided)\n * @param {string} configOrPath.password - password of the wallet to open\n * @param {string|number} configOrPath.networkType - network type of the wallet to open (one of \"mainnet\", \"testnet\", \"stagenet\" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)\n * @param {Uint8Array} configOrPath.keysData - wallet keys data to open (optional if path provided)\n * @param {Uint8Array} configOrPath.cacheData - wallet cache data to open (optional)\n * @param {MoneroRpcConnection|object} configOrPath.server - MoneroRpcConnection or equivalent JS object configuring the daemon connection (optional)\n * @param {string} configOrPath.serverUri - uri of the wallet's daemon (optional)\n * @param {string} configOrPath.serverUsername - username to authenticate with the daemon (optional)\n * @param {string} configOrPath.serverPassword - password to authenticate with the daemon (optional)\n * @param {boolean} configOrPath.rejectUnauthorized - reject self-signed server certificates if true (defaults to true)\n * @param {boolean} configOrPath.proxyToWorker - proxies wallet operations to a web worker in order to not block the main thread (default true)\n * @param {fs} configOrPath.fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)\n * @param {string} password - password of the wallet to open\n * @param {string|number} networkType - network type of the wallet to open\n * @param {string|MoneroRpcConnection} daemonUriOrConnection - daemon URI or MoneroRpcConnection\n * @param {boolean} proxyToWorker - proxies wallet operations to a web worker in order to not block the main thread (default true)\n * @param {fs} fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)\n * @return {MoneroWalletFull} the opened wallet\n */\nmodule.exports.openWalletFull = function() { return module.exports.MoneroWalletFull.openWallet(...arguments); }\n\n/**\n *

Create a wallet using WebAssembly bindings to monero-project.

\n * \n *

Example:

\n * \n * \n * let wallet = await monerojs.createWalletKeys({
\n *    password: \"abc123\",
\n *    networkType: MoneroNetworkType.STAGENET,
\n *    seed: \"coexist igloo pamphlet lagoon...\"
\n * });\n *
\n * \n * @param {MoneroWalletConfig|object} config - MoneroWalletConfig or equivalent config object\n * @param {string|number} config.networkType - network type of the wallet to create (one of \"mainnet\", \"testnet\", \"stagenet\" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)\n * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)\n * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase\n * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)\n * @param {string} config.privateViewKey - private view key of the wallet to create (optional)\n * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)\n * @param {string} config.language - language of the wallet's seed phrase (defaults to \"English\" or auto-detected)\n * @return {MoneroWalletKeys} the created wallet\n */\nmodule.exports.createWalletKeys = function() { return module.exports.MoneroWalletKeys.createWallet(...arguments); }\n","/**\n * Base filter.\n * \n * @private\n */\nclass Filter {\n \n /**\n * Indicates if the given value meets the criteria of this filter.\n * \n * @param val is the value to test\n * @return true if the value meets the criteria of this filter, false otherwise\n */\n meetsCriteria(val) {\n throw new Error(\"Subclass must implement\");\n }\n \n /**\n * Returns a new array comprised of elements from the given array that meet\n * the filter's criteria.\n * \n * @param filter implements meetsCriteria(elem) to filter the given array\n * @param array is the array to apply the filter to\n * @return the new array of filtered elements\n */\n static apply(filter, array) {\n return array.filter(elem => !filter || filter.meetsCriteria(elem));\n }\n}\n\nmodule.exports = Filter;","const assert = require(\"assert\");\nconst BigInteger = require(\"./biginteger\").BigInteger;\n\n/**\n * MIT License\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/**\n * Collection of general purpose utilities.\n * \n * TODO: could pull in assert and remove these asserts\n * TODO: needs cleanup as ES6+ utility class\n */\nclass GenUtils {\n \n /**\n * Indicates if the given argument is defined.\n * \n * @param arg is the arg to test\n * @returns true if the given arg is defined, false otherwise\n */\n static isDefined(arg) {\n return typeof arg !== 'undefined';\n }\n\n /**\n * Indicates if the given argument is undefined.\n * \n * @param arg is the arg to test\n * @returns true if the given arg is undefined, false otherwise\n */\n static isUndefined(arg) {\n return typeof arg === 'undefined';\n }\n\n /**\n * Indicates if the given arg is initialized.\n * \n * @param arg is the arg to test\n * @returns true if the given arg is initialized, false otherwise\n */\n static isInitialized(arg) {\n return arg !== undefined && arg !== null;\n }\n\n /**\n * Indicates if the given arg is uninitialized.\n * \n * @param arg is the arg to test\n * @returns true if the given arg is uninitialized, false otherwise\n */\n static isUninitialized(arg) {\n if (!arg) return true;\n return false;\n }\n\n /**\n * Indicates if the given argument is a number.\n * \n * @param arg is the argument to test\n * @returns true if the argument is a number, false otherwise\n */\n static isNumber(arg) {\n return !isNaN(parseFloat(arg)) && isFinite(arg);\n }\n\n /**\n * Indicates if the given argument is an integer.\n * \n * @param arg is the argument to test\n * @returns true if the given argument is an integer, false otherwise\n */\n static isInt(arg) {\n return arg === parseInt(Number(arg)) && !isNaN(arg) && !isNaN(parseInt(arg, 10));\n }\n\n /**\n * Indicates if the given argument is an array.\n * \n * @param arg is the argument to test as being an array\n * @returns true if the argument is an array, false otherwise\n */\n static isArray(arg) {\n return arg instanceof Array && Array.isArray(arg);\n }\n\n /**\n * Indicates if the given argument is a string.\n * \n * @param arg is the argument to test as being a string\n * @returns true if the argument is a string, false otherwise\n */\n static isString(arg) {\n return typeof arg === 'string';\n }\n\n /**\n * Determines if the given argument is a boolean.\n * \n * @param arg is the argument to test as being a boolean\n * @returns true if the argument is a boolean, false otherwise\n */\n static isBoolean(arg) {\n return typeof(arg) == typeof(true);\n }\n\n /**\n * Determines if the given argument is a static.\n * \n * @param arg is the argument to test as being a static\n * @returns true if the argument is a static, false otherwise\n */\n static isFunction(arg) {\n return typeof arg === \"static\";\n }\n\n /**\n * Indicates if the given argument is an object and optionally if it has the given constructor name.\n * \n * @param arg is the argument to test\n * @param obj is an object to test arg instanceof obj (optional)\n * @returns true if the given argument is an object and optionally has the given constructor name\n */\n static isObject(arg, obj) {\n if (!arg) return false;\n if (typeof arg !== 'object') return false;\n if (obj && !(arg instanceof obj)) return false;\n return true;\n }\n\n /**\n * Determines if all alphabet characters in the given string are upper case.\n * \n * @param str is the string to test\n * @returns true if the string is upper case, false otherwise\n */\n static isUpperCase(str) {\n return str.toUpperCase() === str;\n }\n\n /**\n * Determines if all alphabet characters in the given string are lower case.\n * \n * @param str is the string to test\n * @param true if the string is lower case, false otherwise\n */\n static isLowerCase(str) {\n return str.toLowerCase() === str;\n }\n\n /**\n * Asserts that the given argument is hex.\n * \n * @param arg is the argument to assert as hex\n * @param msg is the message to throw if the argument is not hex\n */\n static assertHex(str, msg) {\n GenUtils.assertTrue(isHex(str), msg ? msg : \"Argument asserted as hex but is not hex\");\n }\n\n /**\n * Indicates if the given argument is a hexidemal string.\n * \n * Credit: https://github.com/roryrjb/is-hex/blob/master/is-hex.js.\n * \n * @param str is the string to test\n * @returns true if the given string is hexidecimal, false otherwise\n */\n static isHex(arg) {\n if (typeof arg !== 'string') return false;\n if (arg.length === 0) return false;\n return (arg.match(/([0-9]|[a-f])/gim) || []).length === arg.length;\n }\n\n /**\n * Determines if the given string is base32.\n */\n static isBase32(str) {\n if (typeof str !== 'string') return false;\n GenUtils.assertTrue(str.length > 0, \"Cannot determine if empty string is base32\");\n return /^[ABCDEFGHIJKLMNOPQRSTUVWXYZ234567]+$/.test(str);\n }\n\n /**\n * Asserts that the given argument is base58.\n * \n * @param arg is the argument to assert as base58\n * @param msg is the message to throw if the argument is not base58\n */\n static assertBase58(str, msg) {\n GenUtils.assertTrue(isBase58(str), msg ? msg : \"Argument asserted as base58 but is not base58\");\n }\n\n /**\n * Determines if the given string is base58.\n */\n static isBase58(str) {\n if (typeof str !== 'string') return false;\n GenUtils.assertTrue(str.length > 0, \"Cannot determine if empty string is base58\");\n return /^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+$/.test(str);\n }\n\n /**\n * Asserts that the given argument is base64.\n * \n * @param arg is the argument to assert as base64\n * @param msg is the message to throw if the argument is not base64\n */\n static assertBase64(str, msg) {\n GenUtils.assertTrue(isBase64(str), msg ? msg : \"Argument asserted as base64 but is not base64\");\n }\n\n /**\n * Determines if the given string is base64.\n */\n static isBase64(str) {\n if (typeof str !== 'string') return false;\n GenUtils.assertTrue(str.length > 0, \"Cannot determine if empty string is base64\");\n try {\n return btoa(atob(str)) == str;\n } catch (err) {\n return false;\n }\n }\n\n /**\n * Throws an exception with the given message.\n * \n * @param msg defines the message to throw the exception with (optional)\n */\n static fail(msg) {\n throw new Error(msg ? msg : \"Failure (no message)\");\n }\n\n /**\n * Asserts that the given boolean is true. Throws an exception if not a boolean or false.\n * \n * @param bool is the boolean to assert true\n * @param msg is the message to throw if bool is false (optional)\n */\n static assertTrue(bool, msg) {\n if (typeof bool !== 'boolean') throw new Error(\"Argument is not a boolean\");\n if (!bool) throw new Error(msg ? msg : \"Boolean asserted as true but was false\");\n }\n\n /**\n * Asserts that the given boolean is false. Throws an exception if not a boolean or true.\n * \n * @param bool is the boolean to assert false\n * @param msg is the message to throw if bool is true (optional)\n */\n static assertFalse(bool, msg) {\n if (typeof bool !== 'boolean') throw new Error(\"Argument is not a boolean\");\n if (bool) throw new Error(msg ? msg : \"Boolean asserted as false but was true\");\n }\n\n /**\n * Asserts that the given argument is null. Throws an exception if not null.\n * \n * @param arg is the argument to assert null\n * @param msg is the message to throw if arg is not null (optional)\n */\n static assertNull(arg, msg) {\n if (arg !== null) throw new Error(msg ? msg : \"Argument asserted as null but was not null: \" + arg);\n }\n\n /**\n * Asserts that the given argument is not null. Throws an exception if null.\n * \n * @param arg is the argument to assert not null\n * @param msg is the message to throw if arg is null (optional)\n */\n static assertNotNull(arg, msg) {\n if (arg === null) throw new Error(msg ? msg : \"Argument asserted as not null but was null\");\n }\n\n /**\n * Asserts that the given argument is defined. Throws an exception if undefined.\n * \n * @param arg is the argument to assert defined\n * @param msg is the message to throw if arg is undefined (optional)\n */\n static assertDefined(arg, msg) {\n if (GenUtils.isUndefined(arg)) throw new Error(msg ? msg : \"Argument asserted as defined but was undefined\");\n }\n\n /**\n * Asserts that the given argument is undefined. Throws an exception if defined.\n * \n * @param arg is the argument to assert undefined\n * @param msg is the message to throw if arg is defined (optional)\n */\n static assertUndefined(arg, msg) {\n if (GenUtils.isDefined(arg)) throw new Error(msg ? msg : \"Argument asserted as undefined but was defined: \" + arg);\n }\n\n /**\n * Asserts that the given argument is initialized. Throws an exception if not initialized.\n * \n * @param arg is the argument to assert as initialized\n * @param msg is the message to throw if arg is not initialized (optional)\n */\n static assertInitialized(arg, msg) {\n if (GenUtils.isUninitialized(arg)) {\n throw new Error(msg ? msg : \"Argument asserted as initialized but was \" + arg);\n }\n }\n\n /**\n * Asserts that the given argument is uninitialized. Throws an exception if initialized.\n * \n * @param arg is the argument to assert as uninitialized\n * @param msg is the message to throw if arg is initialized (optional)\n */\n static assertUninitialized(arg, msg) {\n if (GenUtils.isInitialized(arg)) throw new Error(msg ? msg : \"Argument asserted as uninitialized but was initialized\");\n }\n\n /**\n * Asserts that the given arguments are equal. Throws an exception if not equal.\n * \n * @param arg1 is an argument to assert as equal\n * @param arg2 is an argument to assert as equal\n * @param msg is the message to throw if the arguments are not equal\n */\n static assertEquals(arg1, arg2, msg) {\n GenUtils.assertTrue(GenUtils.equals(arg1, arg2), msg ? msg : \"Arguments asserted as equal but are not equal: \" + arg1 + \" vs \" + arg2);\n }\n\n /**\n * Asserts that the given arguments are not equal. Throws an exception if equal.\n * \n * @param arg1 is an argument to assert as not equal\n * @param arg2 is an argument to assert as not equal\n * @param msg is the message to throw if the arguments are equal\n */\n static assertNotEquals(arg1, arg2, msg) {\n if (arg1 === arg2) throw new Error(msg ? msg : \"Arguments asserted as not equal but are equal: \" + arg1 + \" vs \" + arg2);\n }\n\n /**\n * Asserts that the given argument is an integer.\n * \n * @param arg is the argument to assert as an integer\n * @param msg is the message to throw if the argument is not an integer\n */\n static assertInt(arg, msg) {\n if (!GenUtils.isInt(arg)) throw new Error(msg ? msg : \"Argument asserted as an integer but is not an integer\");\n }\n\n /**\n * Asserts that the given argument is a number.\n * \n * @param arg is the argument to assert as a number\n * @param msg is the message to throw if the argument is not a number\n */\n static assertNumber(arg, msg) {\n if (!GenUtils.isNumber(arg)) throw new Error(msg ? msg : \"Argument asserted as a number but is not a number\");\n }\n\n /**\n * Asserts that the given argument is a boolean.\n * \n * @param arg is the argument to assert as a boolean\n * @param msg is the message to throw if the argument is not a boolean\n */\n static assertBoolean(arg, msg) {\n if (!GenUtils.isBoolean(arg)) throw new Error(msg ? msg : \"Argument asserted as a boolean but is not a boolean\");\n }\n\n /**\n * Asserts that the given argument is a string.\n * \n * @param arg is the argument to assert as a string\n * @param msg is the message to throw if the argument is not a string\n */\n static assertString(arg, msg) {\n if (!GenUtils.isString(arg)) throw new Error(msg ? msg : \"Argument asserted as a string but is not a string: \" + arg);\n }\n\n /**\n * Asserts that the given argument is an array.\n * \n * @param arg is the argument to assert as an array\n * @param msg is the message to throw if the argument is not an array\n */\n static assertArray(arg, msg) {\n if (!GenUtils.isArray(arg)) throw new Error(msg ? msg : \"Argument asserted as an array but is not an array\");\n }\n\n /**\n * Asserts that the given argument is a static.\n * \n * @param arg is the argument to assert as a static\n * @param msg is the message to throw if the argument is not a static\n */\n static assertFunction(arg, msg) {\n if (!GenUtils.isFunction(arg)) throw new Error(msg ? msg : \"Argument asserted as a static but is not a static\");\n }\n\n /**\n * Asserts that the given argument is an object with the given name.\n * \n * @param arg is the argument to test\n * @param obj is an object to assert arg instanceof obj (optional)\n * @param msg is the message to throw if the argument is not the specified object\n */\n static assertObject(arg, obj, msg) {\n GenUtils.assertInitialized(arg, msg);\n if (obj) {\n if (!isObject(arg, obj)) throw new Error(msg ? msg : \"Argument asserted as object '\" + obj.name + \"' but was not\");\n } else {\n if (!isObject(arg)) throw new Error(msg ? msg : \"Argument asserted as object but was not\");\n }\n }\n\n /**\n * Sets the child's prototype to the parent's prototype.\n * \n * @param child is the child class\n * @param parent is the parent class\n */\n static inheritsFrom(child, parent) {\n child.prototype = Object.create(parent.prototype);\n child.prototype.constructor = child;\n }\n\n /**\n * Invokes functions with arguments.\n * \n * arguments[0] is assumed to be an array of functions to invoke\n * arguments[1...n] are args to invoke the functions with\n */\n static invoke() {\n let fns = arguments[0];\n let args = [];\n for (let i = 1; i < arguments.length; i++) args.push(arguments[i]);\n for (let i = 0; i < fns.length; i++) {\n assertFunction(fns[i], \"Functions[\" + i + \"] is not a static\");\n fns[i].apply(null, args);\n }\n }\n\n /**\n * Returns the power set of the given array.\n * \n * @param arr is the array to get the power set of\n * @returns [][] is the power set of the given array\n */\n static getPowerSet(arr) {\n let fn = function(n, src, got, all) {\n if (n == 0) {\n if (got.length > 0) {\n all[all.length] = got;\n }\n return;\n }\n for (let j = 0; j < src.length; j++) {\n fn(n - 1, src.slice(j + 1), got.concat([ src[j] ]), all);\n }\n return;\n }\n let all = [];\n all.push([]);\n for (let i = 0; i < arr.length; i++) {\n fn(i, arr, [], all);\n }\n all.push(arr);\n return all;\n }\n\n /**\n * Returns the power set of the given array whose elements are the given size.\n * \n * @param arr is the array to get the power set of\n * @param size is the required size of the elements within the power set\n * returns [][] is the power set of the given array whose elements are the given size \n */\n static getPowerSetOfLength(arr, size) {\n assertInitialized(arr);\n assertInitialized(size);\n GenUtils.assertTrue(size >= 1);\n let powerSet = getPowerSet(arr);\n let powerSetOfLength = [];\n for (let i = 0; i < powerSet.length; i++) {\n if (powerSet[i].length === size) {\n powerSetOfLength.push(powerSet[i]);\n }\n }\n return powerSetOfLength;\n }\n\n /**\n * Returns an array of indices of the given size.\n * \n * @param size specifies the size to get indices for\n * @returns array of the given size with indices starting at 0\n */\n static getIndices(size) {\n let indices = [];\n for (let i = 0; i < size; i++) {\n indices.push(i);\n }\n return indices;\n }\n\n /**\n * Returns a new array containing unique elements of the given array.\n * \n * @param arr is the array to return unique elements from\n * @returns a new array with the given array's unique elements\n */\n static toUniqueArray(arr) {\n return arr.filter(function(value, index, self) {\n return self.indexOf(value) === index;\n });\n }\n\n /**\n * Copies the given array.\n * \n * @param arr is the array to copy\n * @returns a copy of the given array\n */\n static copyArray(arr) {\n GenUtils.assertArray(arr);\n let copy = [];\n for (let i = 0; i < arr.length; i++) copy.push(arr[i]);\n return copy;\n }\n \n /**\n * Removes every instance of the given value from the given array.\n * \n * @param arr is the array to remove the value from\n * @param val is the value to remove from the array\n * @returns true if the value is found and removed, false otherwise\n */\n static remove(arr, val) {\n let found = false;\n for (let i = arr.length - 1; i >= 0; i--) {\n if (arr[i] === val) {\n arr.splice(i, 1);\n found = true;\n i--;\n }\n }\n return found;\n }\n\n /**\n * Returns a copy of the given array where each element is lowercase.\n * \n * @param arr is the array to convert to lowercase\n * @returns a copy of the given array where each element is lowercase\n */\n static toLowerCaseArray(arr) {\n let arr2 = [];\n for (let i = 0; i < arr.length; i++) {\n arr2.push(arr[i].toLowerCase());\n }\n return arr2;\n }\n\n /**\n * Listifies the given argument.\n * \n * @param arrOrElem is an array or an element in the array\n * @returns an array which is the given arg if it's an array or an array with the given arg as an element\n */\n static listify(arrOrElem) {\n return GenUtils.isArray(arrOrElem) ? arrOrElem : [arrOrElem];\n }\n\n /**\n * Indicates if the given array contains the given object.\n * \n * @param {object[]} arr - array that may or may not contain the object\n * @param {object} obj - object to check for inclusion in the array\n * @param {boolean} compareByReference - compare strictly by reference, forgoing deep equality check\n * @returns true if the array contains the object, false otherwise\n */\n static arrayContains(arr, obj, compareByReference) {\n GenUtils.assertTrue(GenUtils.isArray(arr));\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] === obj) return true;\n if (!compareByReference && GenUtils.equals(arr[i], obj)) return true;\n }\n return false;\n }\n\n /**\n * Indicates if the given string contains the given substring.\n * \n * @param str is the string to search for a substring\n * @param substring is the substring to searchin within the string\n * @returns true if the substring is within the string, false otherwise\n */\n static strContains(str, substring) {\n return str.indexOf(substring) > -1;\n }\n\n /**\n * Determines if two arrays are equal.\n * \n * @param arr1 is an array to compare\n * @param arr2 is an array to compare\n * @returns true if the arrays are equal, false otherwise\n */\n static arraysEqual(arr1, arr2) {\n if (arr1 === arr2) return true;\n if (arr1 == null && arr2 == null) return true;\n if (arr1 == null || arr2 == null) return false;\n if (typeof arr1 === 'undefined' && typeof arr2 === 'undefined') return true;\n if (typeof arr1 === 'undefined' || typeof arr2 === 'undefined') return false;\n if (!GenUtils.isArray(arr1)) throw new Error(\"First argument is not an array\");\n if (!GenUtils.isArray(arr2)) throw new Error(\"Second argument is not an array\");\n if (arr1.length != arr2.length) return false;\n for (let i = 0; i < arr1.length; ++i) {\n if (!GenUtils.equals(arr1[i], arr2[i])) return false;\n }\n return true;\n }\n\n /**\n * Determines if two arguments are deep equal.\n * \n * @param arg1 is an argument to compare\n * @param arg2 is an argument to compare\n * @returns true if the arguments are deep equals, false otherwise\n */\n static equals(arg1, arg2) {\n if (GenUtils.isArray(arg1) && GenUtils.isArray(arg2)) return GenUtils.arraysEqual(arg1, arg2);\n if (GenUtils.isObject(arg1) && GenUtils.isObject(arg2)) return GenUtils.objectsEqual(arg1, arg2);\n return arg1 === arg2;\n }\n \n /**\n * Determines if two objects are deep equal.\n * \n * Undefined values are considered equal to non-existent keys.\n * \n * @param map1 is a map to compare\n * @param map2 is a map to compare\n * @returns true if the maps have identical keys and values, false otherwise\n */\n static objectsEqual(map1, map2) {\n let keys1 = Object.keys(map1);\n let keys2 = Object.keys(map2);\n \n // compare each key1 to keys2\n for (let key1 of keys1) {\n let found = false;\n for (let key2 of keys2) {\n if (key1 === key2) {\n if (!GenUtils.equals(map1[key1], map2[key2])) return false;\n found = true;\n break;\n }\n }\n if (!found && map1[key1] !== undefined) return false; // allows undefined values to equal non-existent keys\n }\n \n // compare each key2 to keys1\n for (let key2 of keys2) {\n let found = false;\n for (let key1 of keys1) {\n if (key1 === key2) {\n found = true; // no need to re-compare which was done earlier\n break;\n }\n }\n if (!found && map2[key2] !== undefined) return false; // allows undefined values to equal non-existent keys\n }\n return true;\n \n // TODO: support strict option?\n// if (strict) {\n// let keys1 = Object.keys(map1);\n// if (keys1.length !== Object.keys(map2).length) return false;\n// for (let i = 0; i < keys1.length; i++) {\n// let key = Object.keys(map1)[i];\n// if (!GenUtils.equals(map1[key], map2[key])) return false;\n// }\n// }\n }\n \n /**\n * Deletes properties from the object that are undefined.\n * \n * @param obj is the object to delete undefined keys from\n */\n static deleteUndefinedKeys(obj) {\n for (let key of Object.keys(obj)) {\n if (obj[key] === undefined) delete obj[key];\n }\n }\n\n /**\n * Returns combinations of the given array of the given size.\n * \n * @param arr is the array to get combinations from\n * @param combinationSize specifies the size of each combination\n */\n static getCombinations(arr, combinationSize) {\n \n // validate input\n assertInitialized(arr);\n assertInitialized(combinationSize);\n GenUtils.assertTrue(combinationSize >= 1);\n \n // get combinations of array indices of the given size\n let indexCombinations = getPowerSetOfLength(getIndices(arr.length), combinationSize);\n \n // collect combinations from each combination of array indices\n let combinations = [];\n for (let indexCombinationsIdx = 0; indexCombinationsIdx < indexCombinations.length; indexCombinationsIdx++) {\n \n // get combination of array indices\n let indexCombination = indexCombinations[indexCombinationsIdx];\n \n // build combination from array\n let combination = [];\n for (let indexCombinationIdx = 0; indexCombinationIdx < indexCombination.length; indexCombinationIdx++) {\n combination.push(arr[indexCombination[indexCombinationIdx]]);\n }\n \n // add to combinations\n combinations.push(combination);\n }\n \n return combinations;\n }\n\n /**\n * Gets an 'a' element that is downloadable when clicked.\n * \n * @param name is the name of the file to download\n * @param contents are the string contents of the file to download\n * @returns 'a' dom element with downloadable file\n */\n static getDownloadableA(name, contents) {\n let a = window.document.createElement('a');\n a.href = window.URL.createObjectURL(new Blob([contents], {type: 'text/plain'}));\n a.download = name;\n a.target=\"_blank\";\n a.innerHTML = name;\n return a;\n }\n\n /**\n * Returns the given node's outer HTML.\n * \n * @param node is the node to get outer HTML for\n * @returns the outer HTML of the given node\n */\n static getOuterHtml(node) {\n return $('
').append($(node).clone()).html();\n }\n\n /**\n * Copies properties in the given object to a new object.\n * \n * @param obj is object to copy properties for\n * @returns a new object with properties copied from the given object\n */\n static copyProperties(obj) {\n return JSON.parse(JSON.stringify(obj))\n }\n\n /**\n * Deletes all properties in the given object.\n * \n * @param obj is the object to delete properties from\n */\n static deleteProperties(obj) {\n let props = [];\n for (let prop in obj) props.push(prop); // TODO: if (obj.hasOwnProperty(prop)) { ...\n for (i = 0; i < props.length; i++) delete obj[props[i].toString()];\n }\n\n /**\n * Converts a CSV string to a 2-dimensional array of strings.\n * \n * @param csv is the CSV string to convert\n * @returns a 2-dimensional array of strings\n */\n static csvToArr(csv) {\n return $.csv.toArrays(csv);\n }\n\n /**\n * Converts the given array to a CSV string.\n * \n * @param arr is a 2-dimensional array of strings\n * @returns the CSV string\n */\n static arrToCsv(arr) {\n return $.csv.fromObjects(arr, {headers: false});\n }\n\n /**\n * Indicates if the given string contains whitespace.\n * \n * @param str is the string to test\n * @returns true if the string contains whitespace, false otherwise\n */\n static hasWhitespace(str) {\n return /\\s/g.test(str);\n }\n\n /**\n * Indicates if the given character is whitespace.\n * \n * @param char is the character to test\n * @returns true if the given character is whitespace, false otherwise\n */\n static isWhitespace(char) {\n return /\\s/.test(char);\n }\n\n /**\n * Indicates if the given character is a newline.\n * \n * @param char is the character to test\n * @returns true if the given character is a newline, false otherwise\n */\n static isNewline(char) {\n return char === '\\n' || char === '\\r';\n }\n\n /**\n * Counts the number of non-whitespace characters in the given string.\n * \n * @param str is the string to count the number of non-whitespace characters in\n * @returns int is the number of non-whitespace characters in the given string\n */\n static countNonWhitespaceCharacters(str) {\n let count = 0;\n for (let i = 0; i < str.length; i++) {\n if (!isWhitespace(str.charAt(i))) count++;\n }\n return count;\n }\n\n /**\n * Returns tokens separated by whitespace from the given string.\n * \n * @param str is the string to get tokens from\n * @returns string[] are the tokens separated by whitespace within the string\n */\n static getWhitespaceTokens(str) {\n return str.match(/\\S+/g);\n }\n\n /**\n * Returns lines separated by newlines from the given string.\n * \n * @param str is the string to get lines from\n * @param string[] are the lines separated by newlines within the string\n */\n static getLines(str) {\n return str.match(/[^\\r\\n]+/g);\n }\n\n /**\n * Returns the document's first stylesheet which has no href.\n * \n * @returns StyleSheet is the internal stylesheet\n */\n static getInternalStyleSheet() {\n for (let i = 0; i < document.styleSheets.length; i++) {\n let styleSheet = document.styleSheets[i];\n if (!styleSheet.href) return styleSheet;\n }\n return null;\n }\n\n /**\n * Returns the document's internal stylesheet as text.\n * \n * @returns str is the document's internal stylesheet\n */\n static getInternalStyleSheetText() {\n let internalCss = \"\";\n let internalStyleSheet = getInternalStyleSheet();\n if (!internalStyleSheet) return null;\n for (let i = 0; i < internalStyleSheet.cssRules.length; i++) {\n internalCss += internalStyleSheet.cssRules[i].cssText + \"\\n\";\n }\n return internalCss;\n }\n\n /**\n * Manually builds an HTML document string.\n * \n * @param content specifies optional document content\n * content.div is a pre-existing div to stringify and add to the body\n * content.title is the title of the new tab\n * content.dependencyPaths specifies paths to js, css, or img paths\n * content.internalCss is css to embed in the html document\n * content.metas are meta elements with keys/values to include\n * @returns str is the document string\n */\n static buildHtmlDocument(content) {\n let str = \"\";\n str += \"\";\n \n // add metas\n if (content.metas) {\n let metas = listify(content.metas);\n for (let i = 0; i < metas.length; i++) {\n let meta = metas[i];\n let elem = document.createElement(\"meta\");\n for (let prop in meta) {\n if (meta.hasOwnProperty(prop)) {\n elem.setAttribute(prop.toString(), meta[prop.toString()]);\n }\n }\n str += elem.outerHTML;\n }\n }\n \n // add title and internal css\n str += content.title ? \"\" + content.title + \"\" : \"\";\n str += content.internalCss ? \"\" : \"\";\n \n // add dependency paths\n if (content.dependencyPaths) {\n let dependencyPaths = listify(content.dependencyPaths);\n for (let i = 0; i < dependencyPaths.length; i++) {\n let dependencyPath = dependencyPaths[i];\n if (dependencyPath.endsWith(\".js\")) str += \"\";\n else if (dependencyPath.endsWith(\".css\")) str += \"\";\n else if (dependencyPath.endsWith(\".png\") || dependencyPath.endsWith(\".img\")) str += \"\";\n else throw new Error(\"Unrecognized dependency path extension: \" + dependencyPath); \n }\n }\n str += \"\";\n if (content.div) str += $(\"
\").append(content.div.clone()).html(); // add cloned div as string\n str += \"\";\n return str;\n }\n\n /**\n * Opens the given div in a new window.\n * \n * @param content specifies optional window content\n * content.div is a pre-existing div to stringify and add to the body\n * content.title is the title of the new tab\n * content.dependencyPaths specifies paths to js, css, or img paths\n * content.internalCss is css to embed in the html document\n * content.metas are meta elements with keys/values to include\n * @param onLoad(err, window) is invoked with a reference to the window when available\n */\n static newWindow(content, onLoad) {\n let onLoadCalled = false;\n let w = window.open();\n if (!isInitialized(w) || !isInitialized(w.document)) {\n onLoadOnce(new Error(\"Could not get window reference\"));\n return;\n }\n w.opener = null;\n w.document.write(buildHtmlDocument(content));\n w.addEventListener('load', function() {\n onLoadOnce(null, w);\n });\n w.document.close();\n \n // prevents onLoad() from being called multiple times\n function onLoadOnce(err, window) {\n if (onLoadCalled) return;\n onLoadCalled = true;\n if (onLoad) onLoad(err, window);\n }\n }\n\n /**\n * Converts the given image to a base64 encoded data url.\n * \n * @param img is the image to convert\n * @param quality is a number between 0 and 1 specifying the image quality\n */\n static imgToDataUrl(img, quality) {\n let canvas = document.createElement('canvas');\n canvas.height = img.naturalHeight;\n canvas.width = img.naturalWidth;\n let context = canvas.getContext('2d');\n context.drawImage(img, 0, 0);\n return canvas.toDataURL(quality);\n }\n\n /**\n * Determines if the image at the given URL is accessible.\n * \n * @param url is the url to an image\n * @param timeout is the maximum time to wait\n * @param onDone(bool) when the image is determined to be accessible or not\n */\n static isImageAccessible(url, timeout, onDone) {\n \n // track return so it only executes once\n let returned = false;\n \n // attempt to load favicon\n let img = new Image();\n img.onload = onResponse;\n img.onerror = onResponse;\n img.src = url + \"?\" + (+new Date()); // trigger image load with cache buster\n \n // nest failure timeouts to give response a chance when browser is under load\n setTimeout(function() {\n setImmediate(function() {\n setImmediate(function() {\n setImmediate(function() {\n if (!returned) {\n returned = true;\n onDone(false);\n }\n });\n });\n });\n }, timeout);\n \n function onResponse(e) {\n if (returned) return;\n returned = true;\n if (typeof e === 'undefined' || e.type === \"error\") onDone(false);\n else onDone(true);\n }\n }\n\n /**\n * Determines if the given file is a zip file.\n * \n * @param file is a file\n * @returns true if the given file is a zip file, false otherwise\n */\n static isZipFile(file) {\n return file.name.endsWith(\".zip\") || file.type === 'application/zip';\n }\n\n /**\n * Determines if the given file is a json file.\n * \n * @param file is a file\n * @returns true if the given file is a json file, false otherwise\n */\n static isJsonFile(file) {\n return file.name.endsWith(\".json\") || file.type === 'application/json';\n }\n\n /**\n * Determines if the given file is a csv file.\n * \n * @param file is a file\n * @returns true if the given file is a csv file, false otherwise\n */\n static isCsvFile(file) {\n return file.name.endsWith(\".csv\") || file.type === 'text/csv';\n }\n\n /**\n * Determines if the given file is a txt file.\n * \n * @param file is a file\n * @returns true if the given file is a txt file, false otherwise\n */\n static isTxtFile(file) {\n return file.name.endsWith(\".txt\") || file.type === 'text/plain';\n }\n\n /**\n * Fetches the given list of images.\n * \n * Prerequisite: async.js.\n * \n * @param paths are the paths to the images to fetch\n * @param onDone(err, images) is called when done\n */\n static getImages(paths, onDone) {\n \n // listify paths\n if (!GenUtils.isArray(paths)) {\n GenUtils.assertTrue(isString(paths));\n paths = [paths];\n }\n \n // collect functions to fetch images\n let funcs = [];\n for (let i = 0; i < paths.length; i++) {\n funcs.push(loadFunc(paths[i]));\n }\n \n // fetch in parallel\n async.parallel(funcs, onDone);\n \n // callback static to fetch a single image\n function loadFunc(path) {\n return function(onDone) {\n let img = new Image();\n img.onload = function() { onDone(null, img); }\n img.onerror = function() { onDone(new Error(\"Cannot load image: \" + path)); }\n img.src = path;\n }\n }\n }\n \n /**\n * Returns a string indentation of the given length;\n * \n * @param length is the length of the indentation\n * @returns {string} is an indentation string of the given length\n */\n static getIndent(length) {\n let str = \"\";\n for (let i = 0; i < length; i++) str += ' '; // two spaces\n return str;\n }\n \n static initPolyfills() {\n \n // Polyfill Object.assign()\n // Credit: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n if (typeof Object.assign != 'static') {\n // Must be writable: true, enumerable: false, configurable: true\n Object.defineProperty(Object, \"assign\", {\n value: function assign(target, varArgs) { // .length of static is 2\n 'use strict';\n if (target == null) { // TypeError if undefined or null\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n let to = Object(target);\n\n for (let index = 1; index < arguments.length; index++) {\n let nextSource = arguments[index];\n\n if (nextSource != null) { // Skip over if undefined or null\n for (let nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n },\n writable: true,\n configurable: true\n });\n }\n \n /**\n * Polyfill str.replaceAt(idx, replacement).\n */\n String.prototype.replaceAt=function(idx, replacement) {\n return this.substr(0, idx) + replacement + this.substr(idx + replacement.length);\n }\n\n /**\n * Polyfill str.startsWith(searchString, position).\n * \n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith#Polyfill\n */\n String.prototype.startsWith = function(searchString, position) {\n return this.substr(position || 0, searchString.length) === searchString;\n };\n\n /**\n * Polyfill str.endsWith(searchString, position).\n * \n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith#Polyfill\n */\n String.prototype.endsWith = function(searchString, position) {\n if (!(position < this.length)) position = this.length; // works better than >= because it compensates for NaN\n else position |= 0; // round position\n return this.substr(position - searchString.length, searchString.length) === searchString;\n }\n\n /**\n * Removes the given value from the array.\n * \n * @returns true if the value was found and removed, false otherwise\n */\n Array.prototype.removeVal = function(val) {\n var found = false;\n for (var i = 0; i < this.length; i++) {\n if (this[i] == val) { \n found = true;\n this.splice(i, 1);\n i--;\n }\n }\n return found;;\n };\n }\n\n /**\n * Generates a v4 UUID.\n * \n * Source: https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n */\n static getUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n \n /**\n * Indicates if the current environment is a browser.\n * \n * @return {boolean} true if the environment is a browser, false otherwise\n */\n static isBrowser() {\n let isWorker = typeof importScripts === 'function';\n let isBrowserMain = new Function(\"try {return this===window;}catch(e){return false;}\")();\n let isJsDom = isBrowserMain ? new Function(\"try {return window.navigator.userAgent.includes('jsdom');}catch(e){return false;}\")() : false;\n return isWorker || (isBrowserMain && !isJsDom);\n }\n \n /**\n * Indicates if the current environment is a firefox-based browser.\n * \n * @return {boolean} true if the environment is a firefox-based browser, false otherwise\n */\n static isFirefox() {\n return this.isBrowser() && navigator.userAgent.indexOf(\"Firefox\") > 0;\n }\n\n /**\n * Gets the IE version number.\n * \n * Credit: https://stackoverflow.com/questions/19999388/check-if-user-is-using-ie-with-jquery/21712356#21712356\n * \n * @returns the IE version number or null if not IE\n */\n static getIEVersion() {\n let ua = window.navigator.userAgent;\n\n let msie = ua.indexOf('MSIE ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n\n let trident = ua.indexOf('Trident/');\n if (trident > 0) {\n // IE 11 => return version number\n let rv = ua.indexOf('rv:');\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n }\n\n let edge = ua.indexOf('Edge/');\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n }\n\n // other browser\n return null;\n }\n\n /**\n * Gets a parameter value.\n * \n * Credit: https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript\n * \n * @param name is the name of the parameter to get the value of\n * @param url is a URL to get the parameter from, uses the window's current href if not given\n * @returns the parameter's value\n */\n static getParameterByName(name, url) {\n if (!url) url = window.location.href;\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\n let regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"), results = regex.exec(url);\n if (!results) return null;\n if (!results[2]) return '';\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n }\n \n /**\n * Gets a non-cryptographically secure random number within a given range.\n * \n * @param min is the minimum range of the int to generate, inclusive\n * @param max is the maximum range of the int to generate, inclusive\n * \n * Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random\n */\n static getRandomInt(min, max) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n \n /**\n * Gets random ints.\n * \n * @param min is the minimum range of the ints to generate, inclusive\n * @param max is the maximum range of the ints to generate, inclusive\n * @param count is the number of random ints to get\n */\n static getRandomInts(min, max, count) {\n GenUtils.assertTrue(typeof count === \"number\");\n let ints = [];\n for (let i = 0; i < count; i++) ints.push(GenUtils.getRandomInt(min, max));\n return ints;\n }\n \n /**\n * Gets a given number of unique random ints within a range.\n * \n * @param min is the minimum range of the ints to generate, inclusive\n * @param max is the maximum range of the ints to generate, inclusive\n * @param count is the number of unique random ints to get\n */\n static getUniqueRandomInts(min, max, count) {\n let ints = [];\n GenUtils.assertTrue(count >= 0);\n GenUtils.assertTrue(max - min + 1 >= count);\n while (ints.length < count) {\n let randomInt = GenUtils.getRandomInt(min, max);\n if (!ints.includes(randomInt)) ints.push(randomInt);\n }\n return ints;\n }\n \n /**\n * Randomize array element order in-place using Durstenfeld shuffle algorithm.\n * \n * Credit: https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array\n */\n static shuffle(array) {\n for (var i = array.length - 1; i > 0; i--) {\n var j = Math.floor(Math.random() * (i + 1));\n var temp = array[i];\n array[i] = array[j];\n array[j] = temp;\n }\n }\n \n /**\n * Sorts an array by natural ordering.\n * \n * @param the array to sort\n */\n static sort(array) {\n array.sort((a, b) => a === b ? 0 : a > b ? 1 : -1);\n }\n \n /**\n * Sets the given value ensuring a previous value is not overwritten.\n * \n * TODO: remove for portability because function passing not supported in other languages, use reconcile only\n * \n * @param obj is the object to invoke the getter and setter on\n * @param getFn gets the current value\n * @param setFn sets the current value\n * @param val is the value to set iff it does not overwrite a previous value\n * @param config specifies reconciliation configuration\n * config.resolveDefined uses defined value if true or undefined, undefined if false\n * config.resolveTrue uses true over false if true, false over true if false, must be equal if undefined\n * config.resolveMax uses max over min if true, min over max if false, must be equal if undefined\n * @param errMsg is the error message to throw if the values cannot be reconciled (optional)\n */\n static safeSet(obj, getFn, setFn, val, config, errMsg) {\n let curVal = getFn.call(obj);\n let reconciledVal = GenUtils.reconcile(curVal, val, config, errMsg);\n if (curVal !== reconciledVal) setFn.call(obj, reconciledVal);\n }\n \n /**\n * Reconciles two values.\n * \n * TODO: remove custom error message\n * \n * @param val1 is a value to reconcile\n * @param val2 is a value to reconcile\n * @param config specifies reconciliation configuration\n * config.resolveDefined uses defined value if true or undefined, undefined if false\n * config.resolveTrue uses true over false if true, false over true if false, must be equal if undefined\n * config.resolveMax uses max over min if true, min over max if false, must be equal if undefined\n * @param errMsg is the error message to throw if the values cannot be reconciled (optional)\n * @returns the reconciled value if reconcilable, throws error otherwise\n */\n static reconcile(val1, val2, config, errMsg) {\n \n // check for equality\n if (val1 === val2) return val1;\n \n // check for BigInteger equality\n let comparison; // save comparison for later if applicable\n if (val1 instanceof BigInteger && val2 instanceof BigInteger) {\n comparison = val1.compare(val2); \n if (comparison === 0) return val1;\n }\n \n // resolve one value defined\n if (val1 === undefined || val2 === undefined) {\n if (config && config.resolveDefined === false) return undefined; // use undefined\n else return val1 === undefined ? val2 : val1; // use defined value\n }\n \n // resolve different booleans\n if (config && config.resolveTrue !== undefined && typeof val1 === \"boolean\" && typeof val2 === \"boolean\") {\n assert.equal(typeof config.resolveTrue, \"boolean\");\n return config.resolveTrue;\n }\n \n // resolve different numbers\n if (config && config.resolveMax !== undefined) {\n assert.equal(typeof config.resolveMax, \"boolean\");\n \n // resolve js numbers\n if (typeof val1 === \"number\" && typeof val2 === \"number\") {\n return config.resolveMax ? Math.max(val1, val2) : Math.min(val1, val2);\n }\n \n // resolve BigIntegers\n if (val1 instanceof BigInteger && val2 instanceof BigInteger) {\n return config.resolveMax ? (comparison < 0 ? val2 : val1) : (comparison < 0 ? val1 : val2);\n }\n }\n \n // assert deep equality\n assert.deepEqual(val1, val2, errMsg ? errMsg : \"Cannot reconcile values \" + val1 + \" and \" + val2 + \" with config: \" + JSON.stringify(config));\n return val1;\n }\n \n /**\n * Returns a human-friendly key value line.\n * \n * @param key is the key\n * @param value is the value\n * @param indent indents the line\n * @param newline specifies if the string should be terminated with a newline or not\n * @param ignoreUndefined specifies if undefined values should return an empty string\n * @returns {string} is the human-friendly key value line\n */\n static kvLine(key, value, indent = 0, newline = true, ignoreUndefined = true) {\n if (value === undefined && ignoreUndefined) return \"\";\n return GenUtils.getIndent(indent) + key + \": \" + value + (newline ? '\\n' : \"\");\n }\n \n /**\n * Replace big integers (16 or more consecutive digits) with strings in order\n * to preserve numeric precision.\n * \n * @param {string} str is the string to be modified\n * @return {string} the modified string with big numbers converted to strings\n */\n static stringifyBIs(str) {\n return str.replace(/(\"[^\"]*\"\\s*:\\s*)(\\d{16,})/g, '$1\"$2\"');\n }\n \n /**\n * Print the current stack trace. \n * \n * @param {string} msg - optional message to print with the trace\n */\n static printStackTrace(msg) {\n try { throw new Error(msg); }\n catch (err) { console.error(err.stack); }\n }\n \n /**\n * Wait for the duration.\n * \n * @param {number} durationMs - the duration to wait for in milliseconds\n */\n static async waitFor(durationMs) {\n return new Promise(function(resolve) { setTimeout(resolve, durationMs); });\n }\n \n /**\n * Kill the given nodejs child process.\n * \n * @param {process} process - the nodejs child process to kill\n * @param {string|undefined} signal - the kill signal, e.g. SIGTERM, SIGKILL, SIGINT (default)\n * @return {Promise} the exit code from killing the process\n */\n static async killProcess(process, signal) {\n return new Promise((resolve, reject) => {\n process.on(\"exit\", function(code, signal) { resolve(code); });\n process.on(\"error\", function(err) { reject(err); });\n try {\n if (!process.kill(signal ? signal : \"SIGINT\")) resolve(); // resolve immediately if not running\n } catch (err) {\n reject(err);\n }\n });\n }\n\n /**\n * Normalize a URI.\n * \n * @param {string} uri - the URI to normalize\n * @return {string} the normalized URI\n */\n static normalizeUri(uri) {\n if (!uri) throw Error(\"Must provide URI to normalize\");\n uri = uri.replace(/\\/$/, \"\"); // strip trailing slash\n if (!new RegExp(\"^\\\\w+://.+\").test(uri)) uri= \"http://\" + uri; // assume http if protocol not given\n return uri;\n }\n}\n\nmodule.exports = GenUtils;","const GenUtils = require(\"../common/GenUtils\");\nconst LibraryUtils = require(\"./LibraryUtils\");\nconst MoneroUtils = require(\"./MoneroUtils\");\nconst ThreadPool = require(\"./ThreadPool\");\nconst PromiseThrottle = require(\"promise-throttle\");\nconst Request = require(\"request-promise\");\n\n/**\n * Handle HTTP requests with a uniform interface.\n * \n * @hideconstructor\n */\nclass HttpClient {\n \n /**\n *

Make a HTTP request.

\n * \n * @param {object} request - configures the request to make\n * @param {string} request.method - HTTP method (\"GET\", \"PUT\", \"POST\", \"DELETE\", etc)\n * @param {string} request.uri - uri to request\n * @param {string|object|Uint8Array} request.body - request body\n * @param {string} request.username - username to authenticate the request (optional)\n * @param {string} request.password - password to authenticate the request (optional)\n * @param {object} request.headers - headers to add to the request (optional)\n * @param {string} request.requestApi - one of \"fetch\" or \"xhr\" (default \"fetch\")\n * @param {boolean} request.resolveWithFullResponse - return full response if true, else body only (default false)\n * @param {boolean} request.rejectUnauthorized - whether or not to reject self-signed certificates (default true)\n * @param {number} request.timeout - maximum time allowed in milliseconds\n * @param {number} request.proxyToWorker - proxy request to worker thread\n * @returns {object} response - the response object\n * @returns {string|object|Uint8Array} response.body - the response body\n * @returns {number} response.statusCode - the response code\n * @returns {String} response.statusText - the response message\n * @returns {object} response.headers - the response headers\n */\n static async request(request) {\n \n // proxy to worker if configured\n if (request.proxyToWorker) {\n try {\n return await LibraryUtils.invokeWorker(undefined, \"httpRequest\", request);\n } catch (err) {\n if (err.message.length > 0 && err.message.charAt(0) === \"{\") {\n let parsed = JSON.parse(err.message);\n err.message = parsed.statusMessage;\n err.statusCode = parsed.statusCode;\n }\n throw err;\n }\n }\n \n // assign defaults\n request = Object.assign({}, HttpClient._DEFAULT_REQUEST, request);\n \n // validate request\n try { request.host = new URL(request.uri).host; } // hostname:port\n catch (err) { throw new Error(\"Invalid request URL: \" + request.uri); }\n if (request.body && !(typeof request.body === \"string\" || typeof request.body === \"object\")) {\n throw new Error(\"Request body type is not string or object\");\n }\n \n // initialize one task queue per host\n if (!HttpClient._TASK_QUEUES[request.host]) HttpClient._TASK_QUEUES[request.host] = new ThreadPool(1);\n \n // initialize one promise throttle per host\n if (!HttpClient._PROMISE_THROTTLES[request.host]) {\n HttpClient._PROMISE_THROTTLES[request.host] = new PromiseThrottle({\n requestsPerSecond: MoneroUtils.MAX_REQUESTS_PER_SECOND, // TODO: HttpClient should not depend on MoneroUtils for configuration\n promiseImplementation: Promise\n });\n }\n \n // request using fetch or xhr with timeout\n let timeout = request.timeout === undefined ? HttpClient._DEFAULT_TIMEOUT : request.timeout === 0 ? HttpClient.MAX_TIMEOUT : request.timeout;\n let requestPromise = request.requestApi === \"fetch\" ? HttpClient._requestFetch(request) : HttpClient._requestXhr(request);\n let timeoutPromise = new Promise((resolve, reject) => {\n let id = setTimeout(() => {\n clearTimeout(id);\n reject('Request timed out in '+ timeout + ' milliseconds')\n }, timeout);\n });\n return Promise.race([requestPromise, timeoutPromise]);\n }\n \n // ----------------------------- PRIVATE HELPERS ----------------------------\n \n static async _requestFetch(req) {\n \n // build request options\n let opts = {\n method: req.method,\n uri: req.uri,\n body: req.body,\n agent: req.uri.startsWith(\"https\") ? HttpClient._getHttpsAgent() : HttpClient._getHttpAgent(),\n rejectUnauthorized: req.rejectUnauthorized,\n resolveWithFullResponse: req.resolveWithFullResponse,\n requestCert: true // TODO: part of config?\n };\n if (req.username) {\n opts.forever = true;\n opts.auth = {\n user: req.username,\n pass: req.password,\n sendImmediately: false\n }\n }\n if (req.body instanceof Uint8Array) opts.encoding = null;\n \n // queue and throttle request to execute in serial and rate limited\n let host = req.host;\n let resp = await HttpClient._TASK_QUEUES[host].submit(async function() {\n return HttpClient._PROMISE_THROTTLES[host].add(function(opts) { return Request(opts); }.bind(this, opts));\n });\n \n // normalize response\n let normalizedResponse = {};\n if (req.resolveWithFullResponse) {\n normalizedResponse.statusCode = resp.statusCode;\n normalizedResponse.statusText = resp.statusMessage;\n normalizedResponse.headers = resp.headers;\n normalizedResponse.body = resp.body;\n } else {\n normalizedResponse.body = resp;\n }\n return normalizedResponse;\n }\n \n static async _requestXhr(req) {\n if (req.headers) throw new Error(\"Custom headers not implemented in XHR request\"); // TODO\n \n // collect params from request which change on await\n let method = req.method;\n let uri = req.uri;\n let host = req.host;\n let username = req.username;\n let password = req.password;\n let body = req.body;\n let isBinary = body instanceof Uint8Array;\n \n // queue and throttle requests to execute in serial and rate limited per host\n let resp = await HttpClient._TASK_QUEUES[host].submit(async function() {\n return HttpClient._PROMISE_THROTTLES[host].add(function() {\n return new Promise(function(resolve, reject) {\n let digestAuthRequest = new HttpClient.digestAuthRequest(method, uri, username, password);\n digestAuthRequest.request(function(resp) {\n resolve(resp);\n }, function(resp) {\n if (resp.status) resolve(resp);\n else reject(new Error(\"Request failed without response: \" + method + \" \" + uri));\n }, body);\n });\n }.bind(this));\n });\n \n // normalize response\n let normalizedResponse = {};\n normalizedResponse.statusCode = resp.status;\n normalizedResponse.statusText = resp.statusText;\n normalizedResponse.headers = HttpClient._parseXhrResponseHeaders(resp.getAllResponseHeaders());\n normalizedResponse.body = isBinary ? new Uint8Array(resp.response) : resp.response;\n if (normalizedResponse.body instanceof ArrayBuffer) normalizedResponse.body = new Uint8Array(normalizedResponse.body); // handle empty binary request\n return normalizedResponse;\n }\n \n /**\n * Get a singleton instance of an HTTP client to share.\n * \n * @return {http.Agent} a shared agent for network requests among library instances\n */\n static _getHttpAgent() {\n if (!HttpClient.HTTP_AGENT) {\n let http = require('http');\n HttpClient.HTTP_AGENT = new http.Agent({keepAlive: true});\n }\n return HttpClient.HTTP_AGENT;\n }\n \n /**\n * Get a singleton instance of an HTTPS client to share.\n * \n * @return {https.Agent} a shared agent for network requests among library instances\n */\n static _getHttpsAgent() {\n if (!HttpClient.HTTPS_AGENT) {\n let https = require('https');\n HttpClient.HTTPS_AGENT = new https.Agent({keepAlive: true});\n }\n return HttpClient.HTTPS_AGENT;\n }\n \n \n static _parseXhrResponseHeaders(headersStr) {\n let headerMap = {};\n let headers = headersStr.trim().split(/[\\r\\n]+/);\n for (let header of headers) {\n let headerVals = header.split(\": \");\n headerMap[headerVals[0]] = headerVals[1];\n }\n return headerMap;\n }\n}\n\n/**\n * Modification of digest auth request by @inorganik.\n * \n * Dependent on CryptoJS MD5 hashing: http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/md5.js\n * \n * MIT licensed.\n */\nHttpClient.digestAuthRequest = function(method, url, username, password) {\n var self = this;\n\n if (typeof CryptoJS === 'undefined' && typeof require === 'function') {\n var CryptoJS = require('crypto-js');\n }\n\n this.scheme = null; // we just echo the scheme, to allow for 'Digest', 'X-Digest', 'JDigest' etc\n this.nonce = null; // server issued nonce\n this.realm = null; // server issued realm\n this.qop = null; // \"quality of protection\" - '' or 'auth' or 'auth-int'\n this.response = null; // hashed response to server challenge\n this.opaque = null; // hashed response to server challenge\n this.nc = 1; // nonce count - increments with each request used with the same nonce\n this.cnonce = null; // client nonce\n\n // settings\n this.timeout = 60000; // timeout\n this.loggingOn = false; // toggle console logging\n\n // determine if a post, so that request will send data\n this.post = false;\n if (method.toLowerCase() === 'post' || method.toLowerCase() === 'put') {\n this.post = true;\n }\n\n // start here\n // successFn - will be passed JSON data\n // errorFn - will be passed the failed authenticatedRequest\n // data - optional, for POSTS\n this.request = function(successFn, errorFn, data) {\n \n // stringify json\n if (data) {\n try {\n self.data = data instanceof Uint8Array || typeof data === \"string\" ? data : JSON.stringify(data);\n } catch (err) {\n console.error(err);\n throw err;\n }\n }\n self.successFn = successFn;\n self.errorFn = errorFn;\n\n if (!self.nonce) {\n self.makeUnauthenticatedRequest(self.data);\n } else {\n self.makeAuthenticatedRequest();\n }\n }\n this.makeUnauthenticatedRequest = function(data) {\n self.firstRequest = new XMLHttpRequest();\n self.firstRequest.open(method, url, true);\n self.firstRequest.timeout = self.timeout;\n // if we are posting, add appropriate headers\n if (self.post && data) {\n if (typeof data === \"string\") {\n self.firstRequest.setRequestHeader('Content-type', 'text/plain');\n } else {\n self.firstRequest.responseType = \"arraybuffer\";\n }\n }\n\n self.firstRequest.onreadystatechange = function() {\n\n // 2: received headers, 3: loading, 4: done\n if (self.firstRequest.readyState === 2) {\n\n var responseHeaders = self.firstRequest.getAllResponseHeaders();\n responseHeaders = responseHeaders.split('\\n');\n // get authenticate header\n var digestHeaders;\n for(var i = 0; i < responseHeaders.length; i++) {\n if (responseHeaders[i].match(/www-authenticate/i) != null) {\n digestHeaders = responseHeaders[i];\n }\n }\n\n if (digestHeaders != null) {\n // parse auth header and get digest auth keys\n digestHeaders = digestHeaders.slice(digestHeaders.indexOf(':') + 1, -1);\n digestHeaders = digestHeaders.split(',');\n self.scheme = digestHeaders[0].split(/\\s/)[1];\n for (var i = 0; i < digestHeaders.length; i++) {\n var equalIndex = digestHeaders[i].indexOf('='),\n key = digestHeaders[i].substring(0, equalIndex),\n val = digestHeaders[i].substring(equalIndex + 1);\n val = val.replace(/['\"]+/g, '');\n // find realm\n if (key.match(/realm/i) != null) {\n self.realm = val;\n }\n // find nonce\n if (key.match(/nonce/i) != null) {\n self.nonce = val;\n }\n // find opaque\n if (key.match(/opaque/i) != null) {\n self.opaque = val;\n }\n // find QOP\n if (key.match(/qop/i) != null) {\n self.qop = val;\n }\n }\n // client generated keys\n self.cnonce = self.generateCnonce();\n self.nc++;\n // if logging, show headers received:\n self.log('received headers:');\n self.log(' realm: '+self.realm);\n self.log(' nonce: '+self.nonce);\n self.log(' opaque: '+self.opaque);\n self.log(' qop: '+self.qop);\n // now we can make an authenticated request\n self.makeAuthenticatedRequest();\n }\n }\n if (self.firstRequest.readyState === 4) {\n if (self.firstRequest.status === 200) {\n self.log('Authentication not required for '+url);\n if (data instanceof Uint8Array) {\n self.successFn(self.firstRequest);\n } else {\n if (self.firstRequest.responseText !== 'undefined') {\n if (self.firstRequest.responseText.length > 0) {\n // If JSON, parse and return object\n if (self.isJson(self.firstRequest.responseText)) { // TODO: redundant\n self.successFn(self.firstRequest);\n } else {\n self.successFn(self.firstRequest);\n }\n }\n } else {\n self.successFn();\n }\n }\n }\n }\n }\n // send\n if (self.post) {\n // in case digest auth not required\n self.firstRequest.send(self.data);\n } else {\n self.firstRequest.send();\n }\n self.log('Unauthenticated request to '+url);\n\n // handle error\n self.firstRequest.onerror = function() {\n if (self.firstRequest.status !== 401) {\n self.log('Error ('+self.firstRequest.status+') on unauthenticated request to '+url);\n self.errorFn(self.firstRequest);\n }\n }\n }\n this.makeAuthenticatedRequest= function() {\n\n self.response = self.formulateResponse();\n self.authenticatedRequest = new XMLHttpRequest();\n self.authenticatedRequest.open(method, url, true);\n self.authenticatedRequest.timeout = self.timeout;\n var digestAuthHeader = self.scheme+' '+\n 'username=\"'+username+'\", '+\n 'realm=\"'+self.realm+'\", '+\n 'nonce=\"'+self.nonce+'\", '+\n 'uri=\"'+url+'\", '+\n 'response=\"'+self.response+'\", '+\n 'opaque=\"'+self.opaque+'\", '+\n 'qop='+self.qop+', '+\n 'nc='+('00000000' + self.nc).slice(-8)+', '+\n 'cnonce=\"'+self.cnonce+'\"';\n self.authenticatedRequest.setRequestHeader('Authorization', digestAuthHeader);\n self.log('digest auth header response to be sent:');\n self.log(digestAuthHeader);\n // if we are posting, add appropriate headers\n if (self.post && self.data) {\n if (typeof self.data === \"string\") {\n self.authenticatedRequest.setRequestHeader('Content-type', 'text/plain');\n } else {\n self.authenticatedRequest.responseType = \"arraybuffer\"; \n }\n }\n self.authenticatedRequest.onload = function() {\n // success\n if (self.authenticatedRequest.status >= 200 && self.authenticatedRequest.status < 400) {\n // increment nonce count\n self.nc++;\n // return data\n if (self.data instanceof Uint8Array) {\n self.successFn(self.authenticatedRequest);\n } else {\n if (self.authenticatedRequest.responseText !== 'undefined' && self.authenticatedRequest.responseText.length > 0 ) {\n // If JSON, parse and return object\n if (self.isJson(self.authenticatedRequest.responseText)) { // TODO: redundant from not parsing\n self.successFn(self.authenticatedRequest);\n } else {\n self.successFn(self.authenticatedRequest);\n }\n } else {\n self.successFn();\n }\n }\n }\n // failure\n else {\n self.nonce = null;\n self.errorFn(self.authenticatedRequest);\n }\n }\n // handle errors\n self.authenticatedRequest.onerror = function() {\n self.log('Error ('+self.authenticatedRequest.status+') on authenticated request to '+url);\n self.nonce = null;\n self.errorFn(self.authenticatedRequest);\n };\n // send\n if (self.post) {\n self.authenticatedRequest.send(self.data);\n } else {\n self.authenticatedRequest.send();\n }\n self.log('Authenticated request to '+url);\n }\n // hash response based on server challenge\n this.formulateResponse = function() {\n var HA1 = CryptoJS.MD5(username+':'+self.realm+':'+password).toString();\n var HA2 = CryptoJS.MD5(method+':'+url).toString();\n var response = CryptoJS.MD5(HA1+':'+\n self.nonce+':'+\n ('00000000' + self.nc).slice(-8)+':'+\n self.cnonce+':'+\n self.qop+':'+\n HA2).toString();\n return response;\n }\n // generate 16 char client nonce\n this.generateCnonce = function() {\n var characters = 'abcdef0123456789';\n var token = '';\n for (var i = 0; i < 16; i++) {\n var randNum = Math.round(Math.random() * characters.length);\n token += characters.substr(randNum, 1);\n }\n return token;\n }\n this.abort = function() {\n self.log('[digestAuthRequest] Aborted request to '+url);\n if (self.firstRequest != null) {\n if (self.firstRequest.readyState != 4) self.firstRequest.abort();\n }\n if (self.authenticatedRequest != null) {\n if (self.authenticatedRequest.readyState != 4) self.authenticatedRequest.abort();\n }\n }\n this.isJson = function(str) {\n try {\n JSON.parse(str);\n } catch (err) {\n return false;\n }\n return true;\n }\n this.log = function(str) {\n if (self.loggingOn) {\n console.log('[digestAuthRequest] '+str);\n }\n }\n this.version = function() { return '0.8.0' }\n}\n\n// default request config\nHttpClient._DEFAULT_REQUEST = {\n method: \"GET\",\n requestApi: \"fetch\",\n resolveWithFullResponse: false,\n rejectUnauthorized: true\n}\n\n// rate limit requests per host\nHttpClient._PROMISE_THROTTLES = [];\nHttpClient._TASK_QUEUES = [];\nHttpClient._DEFAULT_TIMEOUT = 60000;\nHttpClient.MAX_TIMEOUT = 2147483647; // max 32-bit signed number\n\nmodule.exports = HttpClient;","const assert = require(\"assert\");\nconst GenUtils = require(\"./GenUtils\");\nconst MoneroError = require(\"./MoneroError\");\nconst ThreadPool = require(\"./ThreadPool\");\n\n/**\n * Collection of helper utilities for the library.\n * \n * @hideconstructor\n */\nclass LibraryUtils {\n \n /**\n * Log a message.\n *\n * @param {int} level - log level of the message\n * @param {string} msg - message to log\n */\n static log(level, msg) {\n assert(level === parseInt(level, 10) && level >= 0, \"Log level must be an integer >= 0\");\n if (LibraryUtils.LOG_LEVEL >= level) console.log(msg);\n }\n \n /**\n * Set the library's log level with 0 being least verbose.\n *\n * @param {int} level - the library's log level\n */\n static async setLogLevel(level) {\n assert(level === parseInt(level, 10) && level >= 0, \"Log level must be an integer >= 0\");\n LibraryUtils.LOG_LEVEL = level;\n if (LibraryUtils.WASM_MODULE) LibraryUtils.WASM_MODULE.set_log_level(level);\n if (LibraryUtils.WORKER) await LibraryUtils.invokeWorker(undefined, \"setLogLevel\", [level]);\n }\n \n /**\n * Get the library's log level.\n *\n * @return {int} the library's log level\n */\n static getLogLevel() {\n return LibraryUtils.LOG_LEVEL;\n }\n \n /**\n * Get the total memory used by WebAssembly.\n * \n * @return {int} the total memory used by WebAssembly\n */\n static async getWasmMemoryUsed() {\n let total = 0;\n if (LibraryUtils.WORKER) total += await LibraryUtils.invokeWorker(undefined, \"getWasmMemoryUsed\", []);\n if (LibraryUtils.getWasmModule() && LibraryUtils.getWasmModule().HEAP8) total += LibraryUtils.getWasmModule().HEAP8.length;\n return total;\n }\n \n /**\n * Get the WebAssembly module in the current context (nodejs, browser main thread or worker).\n */\n static getWasmModule() {\n return LibraryUtils.WASM_MODULE;\n }\n \n /**\n * Load the WebAssembly keys module with caching.\n */\n static async loadKeysModule() {\n \n // use cache if suitable, full module supersedes keys module because it is superset\n if (LibraryUtils.WASM_MODULE) return LibraryUtils.WASM_MODULE;\n \n // load module\n delete LibraryUtils.WASM_MODULE;\n LibraryUtils.WASM_MODULE = require(\"../../../../dist/monero_wallet_keys\")();\n return new Promise(function(resolve, reject) {\n LibraryUtils.WASM_MODULE.then(module => {\n LibraryUtils.WASM_MODULE = module\n delete LibraryUtils.WASM_MODULE.then;\n LibraryUtils._initWasmModule(LibraryUtils.WASM_MODULE);\n resolve(LibraryUtils.WASM_MODULE);\n });\n });\n }\n \n /**\n * Load the WebAssembly full module with caching.\n * \n * The full module is a superset of the keys module and overrides it.\n * \n * TODO: this is separate static function from loadKeysModule() because webpack cannot bundle worker using runtime param for conditional import\n */\n static async loadFullModule() {\n \n // use cache if suitable, full module supersedes keys module because it is superset\n if (LibraryUtils.WASM_MODULE && LibraryUtils.FULL_LOADED) return LibraryUtils.WASM_MODULE;\n \n // load module\n delete LibraryUtils.WASM_MODULE;\n LibraryUtils.WASM_MODULE = require(\"../../../../dist/monero_wallet_full\")();\n return new Promise(function(resolve, reject) {\n LibraryUtils.WASM_MODULE.then(module => {\n LibraryUtils.WASM_MODULE = module;\n delete LibraryUtils.WASM_MODULE.then;\n LibraryUtils.FULL_LOADED = true;\n LibraryUtils._initWasmModule(LibraryUtils.WASM_MODULE);\n resolve(LibraryUtils.WASM_MODULE);\n });\n });\n }\n \n /**\n * Register a function by id which informs if unauthorized requests (e.g.\n * self-signed certificates) should be rejected.\n * \n * @param {string} fnId - unique identifier for the function\n * @param {function} fn - function to inform if unauthorized requests should be rejected\n */\n static setRejectUnauthorizedFn(fnId, fn) {\n if (!LibraryUtils.REJECT_UNAUTHORIZED_FNS) LibraryUtils.REJECT_UNAUTHORIZED_FNS = [];\n if (fn === undefined) delete LibraryUtils.REJECT_UNAUTHORIZED_FNS[fnId];\n else LibraryUtils.REJECT_UNAUTHORIZED_FNS[fnId] = fn;\n }\n \n /**\n * Indicate if unauthorized requests should be rejected.\n * \n * @param {string} fnId - uniquely identifies the function\n */\n static isRejectUnauthorized(fnId) {\n if (!LibraryUtils.REJECT_UNAUTHORIZED_FNS[fnId]) throw new Error(\"No function registered with id \" + fnId + \" to inform if unauthorized reqs should be rejected\");\n return LibraryUtils.REJECT_UNAUTHORIZED_FNS[fnId]();\n }\n \n /**\n * Set the path to load the worker. Defaults to \"/monero_web_worker.js\" in the browser\n * and \"./MoneroWebWorker.js\" in node.\n * \n * @param {string} workerDistPath - path to load the worker\n */\n static setWorkerDistPath(workerDistPath) {\n let path = LibraryUtils._prefixWindowsPath(workerDistPath ? workerDistPath : LibraryUtils.WORKER_DIST_PATH_DEFAULT);\n if (path !== LibraryUtils.WORKER_DIST_PATH) delete LibraryUtils.WORKER;\n LibraryUtils.WORKER_DIST_PATH = path;\n }\n\n /**\n * Get a singleton instance of a worker to share.\n * \n * @return {Worker} a worker to share among wallet instances\n */\n static async getWorker() {\n \n // one time initialization\n if (!LibraryUtils.WORKER) {\n if (GenUtils.isBrowser()) LibraryUtils.WORKER = new Worker(LibraryUtils.WORKER_DIST_PATH);\n else { \n const Worker = require(\"web-worker\"); // import web worker if nodejs\n LibraryUtils.WORKER = new Worker(LibraryUtils.WORKER_DIST_PATH);\n }\n LibraryUtils.WORKER_OBJECTS = {}; // store per object running in the worker\n \n // receive worker errors\n LibraryUtils.WORKER.onerror = function(err) {\n console.error(\"Error posting message to MoneroWebWorker.js; is it copied to the app's build directory (e.g. in the root)?\");\n console.log(err);\n };\n \n // receive worker messages\n LibraryUtils.WORKER.onmessage = function(e) {\n \n // lookup object id, callback function, and this arg\n let thisArg = null;\n let callbackFn = LibraryUtils.WORKER_OBJECTS[e.data[0]].callbacks[e.data[1]]; // look up by object id then by function name\n if (callbackFn === undefined) throw new Error(\"No worker callback function defined for key '\" + e.data[1] + \"'\");\n if (callbackFn instanceof Array) { // this arg may be stored with callback function\n thisArg = callbackFn[1];\n callbackFn = callbackFn[0];\n }\n \n // invoke callback function with this arg and arguments\n callbackFn.apply(thisArg, e.data.slice(2));\n }\n }\n return LibraryUtils.WORKER;\n }\n \n /**\n * Terminate monero-javascript's singleton worker.\n */\n static async terminateWorker() {\n if (LibraryUtils.WORKER) {\n LibraryUtils.WORKER.terminate();\n delete LibraryUtils.WORKER;\n LibraryUtils.WORKER = undefined;\n }\n }\n \n /**\n * Invoke a worker function and get the result with error handling.\n * \n * @param {string} objectId identifies the worker object to invoke (default random id)\n * @param {string} fnName is the name of the function to invoke\n * @param {any[]} args are function arguments to invoke with\n * @return {any} resolves with response payload from the worker or an error\n */\n static async invokeWorker(objectId, fnName, args) {\n assert(fnName.length >= 2);\n let worker = await LibraryUtils.getWorker();\n let randomObject = objectId === undefined;\n if (randomObject) objectId = GenUtils.getUUID();\n if (!LibraryUtils.WORKER_OBJECTS[objectId]) LibraryUtils.WORKER_OBJECTS[objectId] = {callbacks: {}};\n return await new Promise(function(resolve, reject) {\n let callbackId = GenUtils.getUUID();\n LibraryUtils.WORKER_OBJECTS[objectId].callbacks[callbackId] = function(resp) { // TODO: this defines function once per callback\n resp ? (resp.error ? reject(LibraryUtils.deserializeError(resp.error)) : resolve(resp.result)) : resolve();\n delete LibraryUtils.WORKER_OBJECTS[objectId].callbacks[callbackId];\n if (randomObject) delete LibraryUtils.WORKER_OBJECTS[objectId];\n };\n worker.postMessage([objectId, fnName, callbackId].concat(args === undefined ? [] : GenUtils.listify(args)));\n });\n }\n\n static serializeError(err) {\n const serializedErr = { name: err.name, message: err.message, stack: err.stack };\n if (err instanceof MoneroError) serializedErr.type = \"MoneroError\";\n return serializedErr;\n }\n\n static deserializeError(serializedErr) {\n const err = serializedErr.type === \"MoneroError\" ? new MoneroError(serializedErr.message) : new Error(serializedErr.message);\n err.name = serializedErr.name;\n err.stack = serializedErr.stack;\n return err;\n }\n \n // ------------------------------ PRIVATE HELPERS ---------------------------\n \n static _initWasmModule(wasmModule) {\n wasmModule.taskQueue = new ThreadPool(1);\n wasmModule.queueTask = async function(asyncFn) { return wasmModule.taskQueue.submit(asyncFn); }\n }\n \n static _prefixWindowsPath(path) {\n if (/^[A-Z]:/.test(path) && path.indexOf(\"file://\") == -1) path = \"file://\" + path; // prepend e.g. C: paths with file://\n return path;\n }\n}\n\nLibraryUtils.LOG_LEVEL = 0;\nLibraryUtils.WORKER_DIST_PATH_DEFAULT = GenUtils.isBrowser() ? \"/monero_web_worker.js\" : function() {\n const path = require(\"path\");\n return LibraryUtils._prefixWindowsPath(path.join(__dirname, \"./MoneroWebWorker.js\"));\n}();\nLibraryUtils.WORKER_DIST_PATH = LibraryUtils.WORKER_DIST_PATH_DEFAULT;\n\nmodule.exports = LibraryUtils;","const GenUtils = require(\"./GenUtils\");\nconst MoneroError = require(\"./MoneroError\");\nconst MoneroRpcConnection = require(\"./MoneroRpcConnection\");\nconst TaskLooper = require(\"./TaskLooper\");\nconst ThreadPool = require(\"./ThreadPool\");\n\n/**\n *

Manages a collection of prioritized connections to daemon or wallet RPC endpoints.

\n *\n *

Example usage:

\n * \n * \n * // imports
\n * const monerojs = require(\"monero-javascript\");
\n * const MoneroRpcConnection = monerojs.MoneroRpcConnection;
\n * const MoneroConnectionManager = monerojs.MoneroConnectionManager;
\n * const MoneroConnectionManagerListener = monerojs.MoneroConnectionManagerListener;

\n * \n * // create connection manager
\n * let connectionManager = new MoneroConnectionManager();

\n * \n * // add managed connections with priorities
\n * connectionManager.addConnection(new MoneroRpcConnection(\"http://localhost:38081\").setPriority(1)); // use localhost as first priority
\n * connectionManager.addConnection(new MoneroRpcConnection(\"http://example.com\")); // default priority is prioritized last

\n * \n * // set current connection
\n * connectionManager.setConnection(new MoneroRpcConnection(\"http://foo.bar\", \"admin\", \"password\")); // connection is added if new

\n * \n * // check connection status
\n * await connectionManager.checkConnection();
\n * console.log(\"Connection manager is connected: \" + connectionManager.isConnected());
\n * console.log(\"Connection is online: \" + connectionManager.getConnection().isOnline());
\n * console.log(\"Connection is authenticated: \" + connectionManager.getConnection().isAuthenticated());

\n * \n * // receive notifications of any changes to current connection
\n * connectionManager.addListener(new class extends MoneroConnectionManagerListener {
\n *    onConnectionChanged(connection) {
\n *      console.log(\"Connection changed to: \" + connection);
\n *    }
\n * });

\n * \n * // check connection status every 10 seconds
\n * await connectionManager.startCheckingConnection(10000);

\n * \n * // automatically switch to best available connection if disconnected
\n * connectionManager.setAutoSwitch(true);

\n * \n * // get best available connection in order of priority then response time
\n * let bestConnection = await connectionManager.getBestAvailableConnection();

\n * \n * // check status of all connections
\n * await connectionManager.checkConnections();

\n * \n * // get connections in order of current connection, online status from last check, priority, and name
\n * let connections = connectionManager.getConnections();

\n * \n * // clear connection manager
\n * connectionManager.clear();\n * \n */\nclass MoneroConnectionManager {\n \n /**\n * Construct a connection manager.\n * \n * @param {boolean} proxyToWorker - configure all connections to proxy to worker (default true)\n */\n constructor(proxyToWorker) {\n this._proxyToWorker = proxyToWorker !== false;\n this._timeoutInMs = MoneroConnectionManager.DEFAULT_TIMEOUT;\n this._connections = [];\n this._listeners = [];\n }\n \n /**\n * Add a listener to receive notifications when the connection changes.\n * \n * @param {MoneroConnectionManagerListener} listener - the listener to add\n * @return {MoneroConnectionManager} this connection manager for chaining\n */\n addListener(listener) {\n this._listeners.push(listener);\n return this;\n }\n \n /**\n * Remove a listener.\n * \n * @param {MoneroConnectionManagerListener} listener - the listener to remove\n * @return {MoneroConnectionManager} this connection manager for chaining\n */\n removeListener(listener) {\n if (!GenUtils.remove(this._listeners, listener)) throw new MoneroError(\"Monero connection manager does not contain listener to remove\");\n return this;\n }\n \n /**\n * Remove all listeners.\n * \n * @return {MoneroConnectionManager} this connection manager for chaining\n */\n removeListeners() {\n this._listeners.splice(0, this._listeners.length);\n return this;\n }\n \n /**\n * Add a connection. The connection may have an elevated priority for this manager to use.\n * \n * @param {MoneroRpcConnection} connection - the connection to add\n * @return {Promise} this connection manager for chaining\n */\n async addConnection(connection) {\n for (let aConnection of this._connections) {\n if (aConnection.getUri() === connection.getUri()) throw new MoneroError(\"Connection URI already exists\");\n }\n if (this._proxyToWorker !== undefined) connection.setProxyToWorker(this._proxyToWorker);\n this._connections.push(connection);\n return this;\n }\n \n /**\n * Remove a connection.\n * \n * @param {string} uri - of the the connection to remove\n * @return {Promise} this connection manager for chaining\n */\n async removeConnection(uri) {\n let connection = this.getConnectionByUri(uri);\n if (!connection) throw new MoneroError(\"No connection exists with URI: \" + uri);\n GenUtils.remove(this._connections, connection);\n if (connection === this._currentConnection) {\n this._currentConnection = undefined;\n this._onConnectionChanged(this._currentConnection);\n }\n return this;\n }\n \n /**\n * Indicates if the connection manager is connected to a node.\n * \n * @return {boolean|undefined} true if the current connection is set, online, and not unauthenticated, undefined if unknown, false otherwise\n */\n isConnected() {\n if (!this._currentConnection) return false;\n return this._currentConnection.isConnected();\n }\n \n /**\n * Get the current connection.\n * \n * @return {MoneroRpcConnection} the current connection or undefined if no connection set\n */\n getConnection() {\n return this._currentConnection;\n }\n \n /**\n * Get a connection by URI.\n * \n * @param {string} uri is the URI of the connection to get\n * @return {MoneroRpcConnection} the connection with the URI or undefined if no connection with the URI exists\n */\n getConnectionByUri(uri) {\n for (let connection of this._connections) if (connection.getUri() === uri) return connection;\n return undefined;\n }\n \n /**\n * Get all connections in order of current connection (if applicable), online status, priority, and name.\n * \n * @return {MoneroRpcConnection[]} the list of sorted connections\n */\n getConnections() {\n let sortedConnections = GenUtils.copyArray(this._connections);\n sortedConnections.sort(this._compareConnections.bind(this));\n return sortedConnections;\n }\n \n /**\n * Get the best available connection in order of priority then response time.\n * \n * @param {MoneroRpcConnection[]} excludedConnections - connections to be excluded from consideration (optional)\n * @return {Promise} the best available connection in order of priority then response time, undefined if no connections available\n */\n async getBestAvailableConnection(excludedConnections) {\n \n // try connections within each ascending priority\n for (let prioritizedConnections of this._getConnectionsInAscendingPriority()) {\n try {\n \n // create promises to check connections\n let that = this;\n let checkPromises = [];\n for (let connection of prioritizedConnections) {\n if (excludedConnections && GenUtils.arrayContains(excludedConnections, connection)) continue;\n checkPromises.push(new Promise(async function(resolve, reject) {\n await connection.checkConnection(that._timeoutInMs);\n if (connection.isConnected()) resolve(connection);\n else reject();\n }));\n }\n \n // use first available connection\n let firstAvailable = await Promise.any(checkPromises);\n if (firstAvailable) return firstAvailable;\n } catch (err) {\n if (!(err instanceof AggregateError)) throw new MoneroError(err);\n }\n }\n return undefined;\n }\n \n /**\n * Set the current connection.\n * Provide a URI to select an existing connection without updating its credentials.\n * Provide a MoneroRpcConnection to add new connection or replace existing connection with the same URI.\n * Notify if current connection changes.\n * Does not check the connection.\n * \n * @param {string|MoneroRpcConnection} uriOrConnection - is the uri of the connection or the connection to make current (default undefined for no current connection)\n * @return {MoneroConnectionManager} this connection manager for chaining\n */\n setConnection(uriOrConnection) {\n \n // handle uri\n if (uriOrConnection && typeof uriOrConnection === \"string\") {\n let connection = this.getConnectionByUri(uriOrConnection);\n return this.setConnection(connection === undefined ? new MoneroRpcConnection(uriOrConnection) : connection);\n }\n \n // handle connection\n let connection = uriOrConnection;\n if (this._currentConnection === connection) return this;\n \n // check if setting undefined connection\n if (!connection) {\n this._currentConnection = undefined;\n this._onConnectionChanged(undefined);\n return this;\n }\n \n // validate connection\n if (!(connection instanceof MoneroRpcConnection)) throw new MoneroError(\"Must provide string or MoneroRpcConnection to set connection\");\n if (!connection.getUri()) throw new MoneroError(\"Connection is missing URI\");\n\n // add or replace connection\n let prevConnection = this.getConnectionByUri(connection.getUri());\n if (prevConnection) GenUtils.remove(this._connections, prevConnection);\n this.addConnection(connection);\n this._currentConnection = connection;\n this._onConnectionChanged(this._currentConnection);\n \n return this;\n }\n \n /**\n * Check the current connection. If disconnected and auto switch enabled, switches to best available connection.\n * \n * @return {Promise} this connection manager for chaining\n */\n async checkConnection() {\n let connectionChanged = false;\n let connection = this.getConnection();\n if (connection && await connection.checkConnection(this._timeoutInMs)) connectionChanged = true;\n if (this._autoSwitch && !this.isConnected()) {\n let bestConnection = await this.getBestAvailableConnection([connection]);\n if (bestConnection) {\n this.setConnection(bestConnection);\n return this;\n }\n }\n if (connectionChanged) await this._onConnectionChanged(connection); \n return this;\n }\n \n /**\n * Check all managed connections.\n * \n * @return {Promise} this connection manager for chaining\n */\n async checkConnections() {\n \n // check all connections\n await Promise.all(this.checkConnectionPromises());\n \n // auto switch to best connection\n if (this._autoSwitch && !this.isConnected()) {\n for (let prioritizedConnections of this._getConnectionsInAscendingPriority()) {\n let bestConnection;\n for (let prioritizedConnection of prioritizedConnections) {\n if (prioritizedConnection.isConnected() && (!bestConnection || prioritizedConnection.getResponseTime() < bestConnection.getResponseTime())) {\n bestConnection = prioritizedConnection;\n }\n }\n if (bestConnection) {\n this.setConnection(bestConnection);\n break;\n }\n }\n }\n return this;\n }\n \n /**\n * Check all managed connections, returning a promise for each connection check.\n * Does not auto switch if disconnected.\n *\n * @return {Promise[]} a promise for each connection in the order of getConnections().\n */\n checkConnectionPromises() {\n let that = this;\n let checkPromises = [];\n let pool = new ThreadPool(this._connections.length);\n for (let connection of this.getConnections()) {\n checkPromises.push(pool.submit(async function() {\n try {\n if (await connection.checkConnection(that._timeoutInMs) && connection === this._currentConnection) await that._onConnectionChanged(connection);\n } catch (err) {\n // ignore error\n }\n }));\n }\n Promise.all(checkPromises);\n return checkPromises;\n }\n \n /**\n * Check the connection and start checking the connection periodically.\n * \n * @param {number} periodMs is the time between checks in milliseconds (default 10000 or 10 seconds)\n * @return {Promise} this connection manager for chaining (after first checking the connection)\n */\n async startCheckingConnection(periodMs) {\n await this.checkConnection();\n if (!periodMs) periodMs = MoneroConnectionManager.DEFAULT_CHECK_CONNECTION_PERIOD;\n if (this._checkLooper) return this;\n let that = this;\n let firstCheck = true;\n this._checkLooper = new TaskLooper(async function() {\n if (firstCheck) {\n firstCheck = false; // skip first check\n return;\n }\n try { await that.checkConnection(); }\n catch (err) { console.error(\"Error checking connection: \" + err); }\n });\n this._checkLooper.start(periodMs);\n return this;\n }\n \n /**\n * Stop checking the connection status periodically.\n * \n * @return {MoneroConnectionManager} this connection manager for chaining\n */\n stopCheckingConnection() {\n if (this._checkLooper) this._checkLooper.stop();\n delete this._checkLooper;\n return this;\n }\n\n /**\n * Automatically switch to best available connection if current connection is disconnected after being checked.\n * \n * @param {boolean} autoSwitch specifies if the connection should switch on disconnect\n * @return {MoneroConnectionManager} this connection manager for chaining\n */\n setAutoSwitch(autoSwitch) {\n this._autoSwitch = autoSwitch;\n return this;\n }\n \n /**\n * Get if auto switch is enabled or disabled.\n * \n * @return {boolean} true if auto switch enabled, false otherwise\n */\n getAutoSwitch() {\n return this._autoSwitch;\n }\n \n /**\n * Set the maximum request time before its connection is considered offline.\n * \n * @param {int} timeoutInMs - the timeout before the connection is considered offline\n * @return {MoneroConnectionManager} this connection manager for chaining\n */\n setTimeout(timeoutInMs) {\n this._timeoutInMs = timeoutInMs;\n return this;\n }\n \n /**\n * Get the request timeout.\n * \n * @return {int} the request timeout before a connection is considered offline\n */\n getTimeout() {\n return this._timeoutInMs;\n }\n \n /**\n * Collect connectable peers of the managed connections.\n *\n * @return {MoneroRpcConnection[]} connectable peers\n */\n async getPeerConnections() {\n throw new MoneroError(\"Not implemented\");\n }\n \n /**\n * Disconnect from the current connection.\n * \n * @return {MoneroConnectionManager} this connection manager for chaining\n */\n disconnect() {\n this.setConnection(undefined);\n return this;\n }\n \n /**\n * Remove all connections.\n * \n * @return {MoneroConnectonManager} this connection manager for chaining\n */\n clear() {\n this._connections.splice(0, this._connections.length);\n if (this._currentConnection) {\n this._currentConnection = undefined;\n this._onConnectionChanged(undefined);\n }\n return this;\n }\n \n /**\n * Reset to default state.\n * \n * @return {MoneroConnectonManager} this connection manager for chaining\n */\n reset() {\n this.removeListeners();\n this.stopCheckingConnection();\n this.clear();\n this._timeoutMs = MoneroConnectionManager.DEFAULT_TIMEOUT;\n this._autoSwitch = false;\n return this;\n }\n\n /**\n * Get all listeners.\n * \n * @return {MoneroConnectionManagerListener[]} all listeners\n */\n getListeners() {\n return this._listeners\n }\n \n // ------------------------------ PRIVATE HELPERS ---------------------------\n \n async _onConnectionChanged(connection) {\n let promises = [];\n for (let listener of this._listeners) promises.push(listener.onConnectionChanged(connection));\n return Promise.all(promises);\n }\n \n _getConnectionsInAscendingPriority() {\n let connectionPriorities = new Map();\n for (let connection of this._connections) {\n if (!connectionPriorities.has(connection.getPriority())) connectionPriorities.set(connection.getPriority(), []);\n connectionPriorities.get(connection.getPriority()).push(connection);\n }\n let ascendingPriorities = new Map([...connectionPriorities].sort((a, b) => parseInt(a[0]) - parseInt(b[0]))); // create map in ascending order\n let ascendingPrioritiesList = [];\n for (let priorityConnections of ascendingPriorities.values()) ascendingPrioritiesList.push(priorityConnections);\n if (connectionPriorities.has(0)) ascendingPrioritiesList.push(ascendingPrioritiesList.splice(0, 1)[0]); // move priority 0 to end\n return ascendingPrioritiesList;\n }\n \n _compareConnections(c1, c2) {\n \n // current connection is first\n if (c1 === this._currentConnection) return -1;\n if (c2 === this._currentConnection) return 1;\n \n // order by availability then priority then by name\n if (c1.isOnline() === c2.isOnline()) {\n if (c1.getPriority() === c2.getPriority()) return c1.getUri().localeCompare(c2.getUri());\n else return c1.getPriority() == 0 ? 1 : c2.getPriority() == 0 ? -1 : c1.getPriority() - c2.getPriority();\n } else {\n if (c1.isOnline()) return -1;\n else if (c2.isOnline()) return 1;\n else if (c1.isOnline() === undefined) return -1;\n else return 1; // c1 is offline\n }\n }\n}\n\nMoneroConnectionManager.DEFAULT_TIMEOUT = 5000;\nMoneroConnectionManager.DEFAULT_CHECK_CONNECTION_PERIOD = 15000;\n\nmodule.exports = MoneroConnectionManager;","/**\n * Default connection manager listener which takes no action on notifications.\n */\nclass MoneroConnectionManagerListener {\n \n /**\n * Notified on connection change events.\n * \n * @param {MoneroRpcConnection} connection - the connection manager's current connection\n */\n async onConnectionChanged(connection) { }\n}\n\nmodule.exports = MoneroConnectionManagerListener;","/**\n * Exception when interacting with a Monero wallet or daemon.\n */\nclass MoneroError extends Error {\n \n /**\n * Constructs the error.\n * \n * @param {string} message is a human-readable message of the error\n * @param {int} code is the error code (optional)\n */\n constructor(message, code) {\n super(message);\n this.code = code;\n }\n \n getCode() {\n return this.code;\n }\n \n toString() {\n if (this.message === undefined && this.getCode() === undefined) return super.message;\n let str = \"\";\n if (this.getCode() !== undefined) str += this.getCode() + \": \";\n str += this.message;\n return str;\n }\n}\n\nmodule.exports = MoneroError;","const GenUtils = require(\"./GenUtils\");\nconst HttpClient = require(\"./HttpClient\");\nconst LibraryUtils = require(\"./LibraryUtils\");\nconst MoneroError = require(\"../common/MoneroError\");\nconst MoneroRpcError = require(\"../common/MoneroRpcError\");\nconst MoneroUtils = require(\"./MoneroUtils\");\n\n/**\n * Maintains a connection and sends requests to a Monero RPC API.\n */\nclass MoneroRpcConnection {\n \n /**\n *

Construct a RPC connection.

\n * \n *

Examples:

\n * \n * \n * let connection1 = new MoneroRpcConnection(\"http://localhost:38081\", \"daemon_user\", \"daemon_password_123\")

\n * \n * let connection2 = new MoneroRpcConnection({
\n *    uri: http://localhost:38081,
\n *    username: \"daemon_user\",
\n *    password: \"daemon_password_123\",
\n *    rejectUnauthorized: false, // accept self-signed certificates e.g. for local development
\n *    proxyToWorker: true // proxy request to worker (default false)
\n * });\n *
\n * \n * @param {string|object|MoneroRpcConnection} uriOrConfigOrConnection - RPC endpoint URI, MoneroRpcConnection, or equivalent JS object\n * @param {string} uriOrConfigOrConnection.uri - URI of the RPC endpoint\n * @param {string} uriOrConfigOrConnection.username - username to authenticate with the RPC endpoint (optional)\n * @param {string} uriOrConfigOrConnection.password - password to authenticate with the RPC endpoint (optional)\n * @param {boolean} uriOrConfigOrConnection.rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {boolean} uriOrConfigOrConnection.proxyToWorker - proxy requests to worker\n * @param {string} username - username to authenticate with the RPC endpoint (optional)\n * @param {string} password - password to authenticate with the RPC endpoint (optional)\n * @param {boolean} rejectUnauthorized - reject self-signed certificates if true (default true)\n */\n constructor(uriOrConfigOrConnection, username, password, rejectUnauthorized, proxyToWorker) {\n \n // validate and normalize config\n if (typeof uriOrConfigOrConnection === \"string\") {\n this._config = {uri: uriOrConfigOrConnection};\n this.setCredentials(username, password);\n if (rejectUnauthorized !== undefined) this._config.rejectUnauthorized = rejectUnauthorized;\n if (proxyToWorker !== undefined) this._config.proxyToWorker = proxyToWorker;\n } else if (typeof uriOrConfigOrConnection === \"object\") {\n if (username !== undefined || password !== undefined || rejectUnauthorized !== undefined || proxyToWorker !== undefined) throw new MoneroError(\"Can provide config object or params but not both\");\n if (uriOrConfigOrConnection instanceof MoneroRpcConnection) this._config = Object.assign({}, uriOrConfigOrConnection.getConfig());\n else this._config = Object.assign({}, uriOrConfigOrConnection);\n this.setCredentials(this._config.username, this._config.password);\n } else if (uriOrConfigOrConnection !== undefined) {\n throw new MoneroError(\"Invalid configuration to MoneroRpcConnection; must be string or MoneroRpcConnection or equivalent JS object\");\n }\n \n // merge default config\n this._config = Object.assign({}, MoneroRpcConnection.DEFAULT_CONFIG, this._config);\n \n // normalize uri\n if (this._config.uri) this._config.uri = GenUtils.normalizeUri(this._config.uri);\n \n // fail with friendly message if using old api\n if (this._config.user || this._config.pass) throw new MoneroError(\"Authentication fields 'user' and 'pass' have been renamed to 'username' and 'password'. Please update to the new api\");\n \n // check for unsupported fields\n for (let key of Object.keys(this._config)) {\n if (!GenUtils.arrayContains(MoneroRpcConnection.SUPPORTED_FIELDS, key)) {\n throw new MoneroError(\"RPC connection includes unsupported field: '\" + key + \"'\");\n }\n }\n }\n \n setCredentials(username, password) {\n if (username === \"\") username = undefined;\n if (password === \"\") password = undefined;\n if (username || password) {\n if (!username) throw new MoneroError(\"username must be defined because password is defined\");\n if (!password) throw new MoneroError(\"password must be defined because username is defined\");\n }\n if (this._config.username === \"\") this._config.username = undefined;\n if (this._config.password === \"\") this._config.password = undefined;\n if (this._config.username !== username || this._config.password !== password) {\n this._isOnline = undefined;\n this._isAuthenticated = undefined;\n }\n this._config.username = username;\n this._config.password = password;\n return this;\n }\n \n getUri() {\n return this._config.uri;\n }\n \n getUsername() {\n return this._config.username ? this._config.username : \"\";\n }\n \n getPassword() {\n return this._config.password ? this._config.password : \"\";\n }\n \n getRejectUnauthorized() {\n return this._config.rejectUnauthorized;\n }\n \n setProxyToWorker(proxyToWorker) {\n this._config.proxyToWorker = proxyToWorker;\n return this;\n }\n \n getProxyToWorker() {\n return this._config.proxyToWorker;\n }\n \n getConfig() {\n return this._config;\n }\n \n getPriority() {\n return this._config.priority; \n }\n \n /**\n * Set the connection's priority relative to other connections. Priority 1 is highest,\n * then priority 2, etc. The default priority of 0 is lowest priority.\n * \n * @param {int} priority - the connection priority (default 0)\n * @return {MoneroRpcConnection} this connection\n */\n setPriority(priority) {\n if (!(priority >= 0)) throw new MoneroError(\"Priority must be >= 0\");\n this._config.priority = priority;\n return this;\n }\n \n setAttribute(key, value) {\n if (!this.attributes) this.attributes = new Map();\n this.attributes.put(key, value);\n return this;\n }\n \n getAttribute(key) {\n return this.attributes.get(key);\n }\n \n /**\n * Check the connection status to update isOnline, isAuthenticated, and response time.\n * \n * @param {int} timeoutInMs - maximum response time before considered offline\n * @return {Promise} true if there is a change in status, false otherwise\n */\n async checkConnection(timeoutInMs) {\n let isOnlineBefore = this._isOnline;\n let isAuthenticatedBefore = this._isAuthenticated;\n let startTime = Date.now();\n try {\n if (this._fakeDisconnected) throw new Error(\"Connection is fake disconnected\");\n await this.sendJsonRequest(\"get_version\", undefined, timeoutInMs);\n this._isOnline = true;\n this._isAuthenticated = true;\n } catch (err) {\n if (err instanceof MoneroRpcError && err.getCode() === 401) {\n this._isOnline = true;\n this._isAuthenticated = false;\n } else {\n this._isOnline = false;\n this._isAuthenticated = undefined;\n this._responseTime = undefined;\n }\n }\n if (this._isOnline) this._responseTime = Date.now() - startTime;\n return isOnlineBefore !== this._isOnline || isAuthenticatedBefore !== this._isAuthenticated;\n }\n \n /**\n * Indicates if the connection is connected according to the last call to checkConnection().

\n * \n * Note: must call checkConnection() manually unless using MoneroConnectionManager.\n * \n * @return {boolean|undefined} true or false to indicate if connected, or undefined if checkConnection() has not been called\n */\n isConnected() {\n return this._isOnline === undefined ? undefined : this._isOnline && this._isAuthenticated !== false;\n }\n\n /**\n * Indicates if the connection is online according to the last call to checkConnection().

\n * \n * Note: must call checkConnection() manually unless using MoneroConnectionManager.\n * \n * @return {boolean|undefined} true or false to indicate if online, or undefined if checkConnection() has not been called\n */\n isOnline() {\n return this._isOnline;\n }\n\n /**\n * Indicates if the connection is authenticated according to the last call to checkConnection().

\n * \n * Note: must call checkConnection() manually unless using MoneroConnectionManager.\n * \n * @return {boolean|undefined} true if authenticated or no authentication, false if not authenticated, or undefined if checkConnection() has not been called\n */\n isAuthenticated() {\n return this._isAuthenticated;\n }\n\n getResponseTime() {\n return this._responseTime;\n }\n \n /**\n * Send a JSON RPC request.\n * \n * @param {string} method - JSON RPC method to invoke\n * @param {object} params - request parameters\n * @param {int} timeoutInMs - request timeout in milliseconds\n * @return {object} is the response map\n */\n async sendJsonRequest(method, params, timeoutInMs) {\n try {\n \n // build request body\n let body = JSON.stringify({ // body is stringified so text/plain is returned so BigIntegers are preserved\n id: \"0\",\n jsonrpc: \"2.0\",\n method: method,\n params: params\n });\n\n // logging\n if (LibraryUtils.getLogLevel() >= 2) LibraryUtils.log(2, \"Sending json request with method '\" + method + \"' and body: \" + body);\n \n // send http request\n let startTime = new Date().getTime();\n let resp = await HttpClient.request({\n method: \"POST\",\n uri: this.getUri() + '/json_rpc',\n username: this.getUsername(),\n password: this.getPassword(),\n body: body,\n timeout: timeoutInMs,\n rejectUnauthorized: this._config.rejectUnauthorized,\n requestApi: GenUtils.isFirefox() ? \"xhr\" : \"fetch\", // firefox issue: https://bugzilla.mozilla.org/show_bug.cgi?id=1491010\n proxyToWorker: this._config.proxyToWorker\n });\n \n // validate response\n MoneroRpcConnection._validateHttpResponse(resp);\n \n // deserialize response\n if (resp.body[0] != '{') throw resp.body;\n resp = JSON.parse(resp.body.replace(/(\"[^\"]*\"\\s*:\\s*)(\\d{16,})/g, '$1\"$2\"')); // replace 16 or more digits with strings and parse\n if (LibraryUtils.getLogLevel() >= 3) {\n let respStr = JSON.stringify(resp);\n LibraryUtils.log(3, \"Received response from method='\" + method + \"', response=\" + respStr.substring(0, Math.min(1000, respStr.length) + \"(\" + (new Date().getTime() - startTime) + \" ms)\"));\n }\n \n // check rpc response for errors\n MoneroRpcConnection._validateRpcResponse(resp, method, params);\n return resp;\n } catch (err) {\n if (err instanceof MoneroRpcError) throw err;\n else throw new MoneroRpcError(err, err.statusCode, method, params);\n }\n }\n \n /**\n * Send a RPC request to the given path and with the given paramters.\n * \n * E.g. \"/get_transactions\" with params\n * \n * @param {string} path - JSON RPC path to invoke\n * @param {object} params - request parameters\n * @param {int} timeoutInMs - request timeout in milliseconds\n * @return {object} is the response map\n */\n async sendPathRequest(path, params, timeoutInMs) {\n try {\n\n // logging\n if (LibraryUtils.getLogLevel() >= 2) LibraryUtils.log(2, \"Sending path request with path '\" + path + \"' and params: \" + JSON.stringify(params));\n \n // send http request\n let startTime = new Date().getTime();\n let resp = await HttpClient.request({\n method: \"POST\",\n uri: this.getUri() + '/' + path,\n username: this.getUsername(),\n password: this.getPassword(),\n body: JSON.stringify(params), // body is stringified so text/plain is returned so BigIntegers are preserved\n timeout: timeoutInMs,\n rejectUnauthorized: this._config.rejectUnauthorized,\n requestApi: GenUtils.isFirefox() ? \"xhr\" : \"fetch\",\n proxyToWorker: this._config.proxyToWorker\n });\n \n // validate response\n MoneroRpcConnection._validateHttpResponse(resp);\n \n // deserialize response\n if (resp.body[0] != '{') throw resp.body;\n resp = JSON.parse(resp.body.replace(/(\"[^\"]*\"\\s*:\\s*)(\\d{16,})/g, '$1\"$2\"')); // replace 16 or more digits with strings and parse\n if (typeof resp === \"string\") resp = JSON.parse(resp); // TODO: some responses returned as strings?\n if (LibraryUtils.getLogLevel() >= 3) {\n let respStr = JSON.stringify(resp);\n LibraryUtils.log(3, \"Received response from path='\" + method + \"', response=\" + respStr.substring(0, Math.min(1000, respStr.length) + \"(\" + (new Date().getTime() - startTime) + \" ms)\"));\n }\n \n // check rpc response for errors\n MoneroRpcConnection._validateRpcResponse(resp, path, params);\n return resp;\n } catch (err) {\n if (err instanceof MoneroRpcError) throw err;\n else throw new MoneroRpcError(err, err.statusCode, path, params);\n }\n }\n \n /**\n * Send a binary RPC request.\n * \n * @param {string} path - path of the binary RPC method to invoke\n * @param {object} params - request parameters\n * @param {int} timeoutInMs - request timeout in milliseconds\n * @return {Uint8Array} the binary response\n */\n async sendBinaryRequest(path, params, timeoutInMs) {\n \n // serialize params\n let paramsBin = await MoneroUtils.jsonToBinary(params);\n \n try {\n\n // logging\n if (LibraryUtils.getLogLevel() >= 2) LibraryUtils.log(2, \"Sending binary request with path '\" + path + \"' and params: \" + JSON.stringify(params));\n \n // send http request\n let resp = await HttpClient.request({\n method: \"POST\",\n uri: this.getUri() + '/' + path,\n username: this.getUsername(),\n password: this.getPassword(),\n body: paramsBin,\n timeout: timeoutInMs,\n rejectUnauthorized: this._config.rejectUnauthorized,\n requestApi: GenUtils.isFirefox() ? \"xhr\" : \"fetch\",\n proxyToWorker: this._config.proxyToWorker\n });\n \n // validate response\n MoneroRpcConnection._validateHttpResponse(resp);\n \n // process response\n resp = resp.body;\n if (!(resp instanceof Uint8Array)) {\n console.error(\"resp is not uint8array\");\n console.error(resp);\n }\n if (resp.error) throw new MoneroRpcError(resp.error.message, resp.error.code, path, params);\n return resp;\n } catch (err) {\n if (err instanceof MoneroRpcError) throw err;\n else throw new MoneroRpcError(err, err.statusCode, path, params);\n }\n }\n\n toJson() {\n return this._config;\n }\n \n toString() {\n return this.getUri() + \" (username=\" + this.getUsername() + \", password=\" + (this.getPassword() ? \"***\" : this.getPassword()) + \", priority=\" + this.getPriority() + \", isOnline=\" + this.isOnline() + \", isAuthenticated=\" + this.isAuthenticated() + \")\";\n }\n \n // ------------------------------ PRIVATE HELPERS --------------------------\n \n static _validateHttpResponse(resp) {\n let code = resp.statusCode;\n if (code < 200 || code > 299) {\n let content = resp.body;\n throw new MoneroRpcError(code + \" \" + resp.statusText + (!content ? \"\" : (\": \" + content)), code, undefined, undefined);\n }\n }\n \n static _validateRpcResponse(resp, method, params) {\n if (!resp.error) return;\n throw new MoneroRpcError(resp.error.message, resp.error.code, method, params);\n }\n \n _setFakeDisconnected(fakeDisconnected) { // used to test connection manager\n this._fakeDisconnected = fakeDisconnected; \n }\n}\n\n/**\n * Default RPC configuration.\n */\nMoneroRpcConnection.DEFAULT_CONFIG = {\n uri: undefined,\n username: undefined,\n password: undefined,\n rejectUnauthorized: true, // reject self-signed certificates if true\n proxyToWorker: false,\n priority: 0\n}\n\nMoneroRpcConnection.SUPPORTED_FIELDS = [\"uri\", \"username\", \"password\", \"rejectUnauthorized\", \"priority\", \"proxyToWorker\"];\n\nmodule.exports = MoneroRpcConnection;","const MoneroError = require(\"./MoneroError\");\n\n/**\n * Error when interacting with Monero RPC.\n */\nclass MoneroRpcError extends MoneroError {\n \n /**\n * Constructs the error.\n * \n * @param {string} rpcDescription is a description of the error from rpc\n * @param {int} rpcCode is the error code from rpc\n * @param {string} rpcMethod is the rpc method invoked\n * @param {object} rpcParams are parameters sent with the rpc request\n */\n constructor(rpcDescription, rpcCode, rpcMethod, rpcParams) {\n super(rpcDescription, rpcCode);\n this.rpcMethod = rpcMethod;\n this.rpcParams = rpcParams;\n }\n \n getRpcMethod() {\n return this.rpcMethod;\n }\n \n getRpcParams() {\n return this.rpcParams;\n }\n \n toString() {\n let str = super.toString();\n if (this.rpcMethod || this.rpcParams) str += \"\\nRequest: '\" + this.rpcMethod + \"' with params: \" + (typeof this.rpcParams === \"object\" ? JSON.stringify(this.rpcParams) : this.rpcParams);\n return str;\n }\n}\n\nmodule.exports = MoneroRpcError;","const assert = require(\"assert\");\nconst BigInteger = require(\"./biginteger\").BigInteger;\nconst GenUtils = require(\"./GenUtils\");\nconst LibraryUtils = require(\"./LibraryUtils\");\nconst MoneroError = require(\"./MoneroError\");\nconst MoneroIntegratedAddress = require(\"../wallet/model/MoneroIntegratedAddress\");\nconst MoneroNetworkType = require(\"../daemon/model/MoneroNetworkType\");\n\n/**\n * Collection of Monero utilities. Runs in a worker thread by default.\n * \n * @hideconstructor\n */\nclass MoneroUtils {\n \n /**\n *

Get the version of the monero-javascript library.

\n * \n * @return {string} the version of this monero-javascript library\n */\n static getVersion() {\n return \"0.8.2\";\n }\n \n /**\n * Enable or disable proxying these utilities to a worker thread.\n * \n * @param {boolean} proxyToWorker - specifies if utilities should be proxied to a worker\n */\n static setProxyToWorker(proxyToWorker) {\n MoneroUtils.PROXY_TO_WORKER = proxyToWorker || false;\n }\n \n /**\n * Validate the given mnemonic, throw an error if invalid.\n *\n * TODO: improve validation, use network type\n * \n * @param {string} mnemonic - mnemonic to validate\n */\n static async validateMnemonic(mnemonic) {\n assert(mnemonic, \"Mnemonic phrase is not initialized\");\n let words = mnemonic.split(\" \");\n if (words.length !== MoneroUtils.NUM_MNEMONIC_WORDS) throw new MoneroError(\"Mnemonic phrase is \" + words.length + \" words but must be \" + MoneroUtils.NUM_MNEMONIC_WORDS);\n }\n \n /**\n * Indicates if a private view key is valid.\n * \n * @param {string} privateViewKey is the private view key to validate\n * @return {Promise} true if the private view key is valid, false otherwise\n */\n static async isValidPrivateViewKey(privateViewKey) {\n try {\n await MoneroUtils.validatePrivateViewKey(privateViewKey);\n return true;\n } catch (e) {\n return false;\n }\n }\n \n /**\n * Indicates if a public view key is valid.\n * \n * @param {string} publicViewKey is the public view key to validate\n * @return {Promise} true if the public view key is valid, false otherwise\n */\n static async isValidPublicViewKey(publicViewKey) {\n try {\n await MoneroUtils.validatePublicViewKey(publicViewKey);\n return true;\n } catch (e) {\n return false;\n }\n }\n \n /**\n * Indicates if a private spend key is valid.\n * \n * @param {string} privateSpendKey is the private spend key to validate\n * @return {Promise} true if the private spend key is valid, false otherwise\n */\n static async isValidPrivateSpendKey(privateSpendKey) {\n try {\n await MoneroUtils.validatePrivateSpendKey(privateSpendKey);\n return true;\n } catch (e) {\n return false;\n }\n }\n \n /**\n * Indicates if a public spend key is valid.\n * \n * @param {string} publicSpendKey is the public spend key to validate\n * @return {Promise} true if the public spend key is valid, false otherwise\n */\n static async isValidPublicSpendKey(publicSpendKey) {\n try {\n await MoneroUtils.validatePublicSpendKey(publicSpendKey);\n return true;\n } catch (e) {\n return false;\n }\n }\n \n /**\n * Validate the given private view key, throw an error if invalid.\n *\n * @param {string} privateViewKey - private view key to validate\n */\n static async validatePrivateViewKey(privateViewKey) {\n if (!MoneroUtils._isHex64(privateViewKey)) throw new MoneroError(\"private view key expected to be 64 hex characters\");\n }\n \n /**\n * Validate the given public view key, throw an error if invalid.\n *\n * @param {string} publicViewKey - public view key to validate\n */\n static async validatePublicViewKey(publicViewKey) {\n if (!MoneroUtils._isHex64(publicViewKey)) throw new MoneroError(\"public view key expected to be 64 hex characters\");\n }\n \n /**\n * Validate the given private spend key, throw an error if invalid.\n *\n * @param {string} privateSpendKey - private spend key to validate\n */\n static async validatePrivateSpendKey(privateSpendKey) {\n if (!MoneroUtils._isHex64(privateSpendKey)) throw new MoneroError(\"private spend key expected to be 64 hex characters\");\n }\n \n /**\n * Validate the given public spend key, throw an error if invalid.\n *\n * @param {string} publicSpendKey - public spend key to validate\n */\n static async validatePublicSpendKey(publicSpendKey) {\n if (!MoneroUtils._isHex64(publicSpendKey)) throw new MoneroError(\"public spend key expected to be 64 hex characters\");\n }\n \n /**\n * Get an integrated address.\n * \n * @param {MoneroNetworkType} networkType - network type of the integrated address\n * @param {string} standardAddress - address to derive the integrated address from\n * @param {string} paymentId - optionally specifies the integrated address's payment id (defaults to random payment id)\n * @return {Promise} the integrated address\n */\n static async getIntegratedAddress(networkType, standardAddress, paymentId) {\n if (MoneroUtils.PROXY_TO_WORKER) return new MoneroIntegratedAddress(await LibraryUtils.invokeWorker(undefined, \"moneroUtilsGetIntegratedAddress\", Array.from(arguments)));\n \n // validate inputs\n MoneroNetworkType.validate(networkType);\n assert(typeof standardAddress === \"string\", \"Address is not string\");\n assert(standardAddress.length > 0, \"Address is empty\");\n assert(GenUtils.isBase58(standardAddress), \"Address is not base 58\");\n \n // load keys module by default\n if (LibraryUtils.getWasmModule() === undefined) await LibraryUtils.loadKeysModule();\n \n // get integrated address in queue\n return LibraryUtils.getWasmModule().queueTask(async function() {\n let integratedAddressJson = LibraryUtils.getWasmModule().get_integrated_address_util(networkType, standardAddress, paymentId ? paymentId : \"\");\n if (integratedAddressJson.charAt(0) !== '{') throw new MoneroError(integratedAddressJson);\n return new MoneroIntegratedAddress(JSON.parse(integratedAddressJson));\n });\n }\n \n /**\n * Determine if the given address is valid.\n * \n * @param {string} address - address\n * @param {MoneroNetworkType} networkType - network type of the address to validate\n * @return {Promise} true if the address is valid, false otherwise\n */\n static async isValidAddress(address, networkType) {\n try {\n await MoneroUtils.validateAddress(address, networkType);\n return true;\n } catch (err) {\n return false;\n }\n }\n \n /**\n * Validate the given address, throw an error if invalid.\n *\n * @param {string} address - address to validate\n * @param {MoneroNetworkType} networkType - network type of the address to validate\n */\n static async validateAddress(address, networkType) {\n if (MoneroUtils.PROXY_TO_WORKER) return LibraryUtils.invokeWorker(undefined, \"moneroUtilsValidateAddress\", Array.from(arguments));\n \n // validate inputs\n assert(typeof address === \"string\", \"Address is not string\");\n assert(address.length > 0, \"Address is empty\");\n assert(GenUtils.isBase58(address), \"Address is not base 58\");\n MoneroNetworkType.validate(networkType);\n \n // load keys module by default\n if (LibraryUtils.getWasmModule() === undefined) await LibraryUtils.loadKeysModule();\n \n // validate address in queue\n return LibraryUtils.getWasmModule().queueTask(async function() {\n let errMsg = LibraryUtils.getWasmModule().validate_address(address, networkType);\n if (errMsg) throw new MoneroError(errMsg);\n });\n }\n \n /**\n * Determine if the given payment id is valid.\n * \n * @param {string} paymentId - payment id to determine if valid\n * @return {Promise} true if the payment id is valid, false otherwise\n */\n static async isValidPaymentId(paymentId) {\n try {\n await MoneroUtils.validatePaymentId(paymentId);\n return true;\n } catch (e) {\n return false;\n }\n }\n \n /**\n * Validate the given payment id, throw an error if invalid.\n * \n * TODO: improve validation\n * \n * @param {string} paymentId - payment id to validate \n */\n static async validatePaymentId(paymentId) {\n assert.equal(typeof paymentId, \"string\");\n assert(paymentId.length === 16 || paymentId.length === 64);\n }\n \n /**\n * Decode tx extra according to https://cryptonote.org/cns/cns005.txt and\n * returns the last tx pub key.\n * \n * TODO: use c++ bridge for this\n * \n * @param [byte[]] txExtra - array of tx extra bytes\n * @return {string} the last pub key as a hexidecimal string\n */\n static async getLastTxPubKey(txExtra) {\n let lastPubKeyIdx;\n for (let i = 0; i < txExtra.length; i++) {\n let tag = txExtra[i];\n if (tag === 0 || tag === 2) {\n i += 1 + txExtra[i + 1]; // advance to next tag\n } else if (tag === 1) {\n lastPubKeyIdx = i + 1;\n i += 1 + 32; // advance to next tag\n } else throw new MoneroError(\"Invalid sub-field tag: \" + tag);\n }\n return Buffer.from(new Uint8Array(txExtra.slice(lastPubKeyIdx, lastPubKeyIdx + 32))).toString(\"hex\");\n }\n \n /**\n * Determines if two payment ids are functionally equal.\n * \n * For example, 03284e41c342f032 and 03284e41c342f032000000000000000000000000000000000000000000000000 are considered equal.\n * \n * @param {string} paymentId1 is a payment id to compare\n * @param {string} paymentId2 is a payment id to compare\n * @return {bool} true if the payment ids are equal, false otherwise\n */\n static paymentIdsEqual(paymentId1, paymentId2) {\n let maxLength = Math.max(paymentId1.length, paymentId2.length);\n for (let i = 0; i < maxLength; i++) {\n if (i < paymentId1.length && i < paymentId2.length && paymentId1[i] !== paymentId2[i]) return false;\n if (i >= paymentId1.length && paymentId2[i] !== '0') return false;\n if (i >= paymentId2.length && paymentId1[i] !== '0') return false;\n }\n return true;\n }\n \n /**\n * Merges a transaction into a list of existing transactions.\n * \n * @param {MoneroTx[]} txs - existing transactions to merge into\n * @param {MoneroTx} tx - transaction to merge into the list\n */\n static mergeTx(txs, tx) {\n for (let aTx of txs) {\n if (aTx.getHash() === tx.getHash()) {\n aTx.merge(tx);\n return;\n }\n }\n txs.push(tx);\n }\n \n /**\n * Convert the given JSON to a binary Uint8Array using Monero's portable storage format.\n * \n * @param {object} json - json to convert to binary\n * @return {Promise} the json converted to portable storage binary\n */\n static async jsonToBinary(json) {\n if (MoneroUtils.PROXY_TO_WORKER) return LibraryUtils.invokeWorker(undefined, \"moneroUtilsJsonToBinary\", Array.from(arguments));\n \n // load keys module by default\n if (LibraryUtils.getWasmModule() === undefined) await LibraryUtils.loadKeysModule();\n \n // use wasm in queue\n return LibraryUtils.getWasmModule().queueTask(async function() {\n \n // serialize json to binary which is stored in c++ heap\n let binMemInfoStr = LibraryUtils.getWasmModule().malloc_binary_from_json(JSON.stringify(json));\n \n // sanitize binary memory address info\n let binMemInfo = JSON.parse(binMemInfoStr);\n binMemInfo.ptr = parseInt(binMemInfo.ptr);\n binMemInfo.length = parseInt(binMemInfo.length);\n \n // read binary data from heap to Uint8Array\n let view = new Uint8Array(binMemInfo.length);\n for (let i = 0; i < binMemInfo.length; i++) {\n view[i] = LibraryUtils.getWasmModule().HEAPU8[binMemInfo.ptr / Uint8Array.BYTES_PER_ELEMENT + i];\n }\n \n // free binary on heap\n LibraryUtils.getWasmModule()._free(binMemInfo.ptr);\n \n // return json from binary data\n return view;\n });\n }\n \n /**\n * Convert the given portable storage binary to JSON.\n * \n * @param {Uint8Array} uint8arr - binary data in Monero's portable storage format\n * @return {Promise} JSON object converted from the binary data\n */\n static async binaryToJson(uint8arr) {\n if (MoneroUtils.PROXY_TO_WORKER) return LibraryUtils.invokeWorker(undefined, \"moneroUtilsBinaryToJson\", Array.from(arguments));\n \n // load keys module by default\n if (LibraryUtils.getWasmModule() === undefined) await LibraryUtils.loadKeysModule();\n \n // use wasm in queue\n return LibraryUtils.getWasmModule().queueTask(async function() {\n \n // allocate space in c++ heap for binary\n let ptr = LibraryUtils.getWasmModule()._malloc(uint8arr.length * uint8arr.BYTES_PER_ELEMENT);\n let heap = new Uint8Array(LibraryUtils.getWasmModule().HEAPU8.buffer, ptr, uint8arr.length * uint8arr.BYTES_PER_ELEMENT);\n if (ptr !== heap.byteOffset) throw new MoneroError(\"Memory ptr !== heap.byteOffset\"); // should be equal\n \n // write binary to heap\n heap.set(new Uint8Array(uint8arr.buffer));\n \n // create object with binary memory address info\n let binMemInfo = { ptr: ptr, length: uint8arr.length };\n \n // convert binary to json str\n const ret_string = LibraryUtils.getWasmModule().binary_to_json(JSON.stringify(binMemInfo));\n \n // free binary on heap\n LibraryUtils.getWasmModule()._free(ptr);\n \n // parse and return json\n return JSON.parse(ret_string);\n });\n }\n \n /**\n * Convert the binary response from daemon RPC block retrieval to JSON.\n * \n * @param {Uint8Array} uint8arr - binary response from daemon RPC when getting blocks\n * @return {Promise} JSON object with the blocks data\n */\n static async binaryBlocksToJson(uint8arr) {\n if (MoneroUtils.PROXY_TO_WORKER) return LibraryUtils.invokeWorker(undefined, \"moneroUtilsBinaryBlocksToJson\", Array.from(arguments));\n \n // load keys module by default\n if (LibraryUtils.getWasmModule() === undefined) await LibraryUtils.loadKeysModule();\n \n // use wasm in queue\n return LibraryUtils.getWasmModule().queueTask(async function() {\n \n // allocate space in c++ heap for binary\n let ptr = LibraryUtils.getWasmModule()._malloc(uint8arr.length * uint8arr.BYTES_PER_ELEMENT);\n let heap = new Uint8Array(LibraryUtils.getWasmModule().HEAPU8.buffer, ptr, uint8arr.length * uint8arr.BYTES_PER_ELEMENT);\n if (ptr !== heap.byteOffset) throw new MoneroError(\"Memory ptr !== heap.byteOffset\"); // should be equal\n \n // write binary to heap\n heap.set(new Uint8Array(uint8arr.buffer));\n \n // create object with binary memory address info\n let binMemInfo = { ptr: ptr, length: uint8arr.length }\n\n // convert binary to json str\n const json_str = LibraryUtils.getWasmModule().binary_blocks_to_json(JSON.stringify(binMemInfo));\n \n // free memory\n LibraryUtils.getWasmModule()._free(ptr);\n \n // parse result to json\n let json = JSON.parse(json_str); // parsing json gives arrays of block and tx strings\n json.blocks = json.blocks.map(blockStr => JSON.parse(blockStr)); // replace block strings with parsed blocks\n json.txs = json.txs.map(txs => txs ? txs.map(tx => JSON.parse(tx.replace(\",\", \"{\") + \"}\")) : []); // modify tx string to proper json and parse // TODO: more efficient way than this json manipulation?\n return json;\n });\n }\n \n /**\n * Convert XMR to atomic units.\n * \n * @param {number|string} amountXmr - amount in XMR to convert to atomic units\n * @return {BigInteger} amount in atomic units\n */\n static xmrToAtomicUnits(amountXmr) {\n if (typeof amountXmr === \"number\") amountXmr = \"\" + amountXmr;\n else if (typeof amountXmr !== \"string\") throw new MoneroError(\"Must provide XMR amount as a string or js number to convert to atomic units\");\n let decimalDivisor = 1;\n let decimalIdx = amountXmr.indexOf('.');\n if (decimalIdx > -1) {\n decimalDivisor = Math.pow(10, amountXmr.length - decimalIdx - 1);\n amountXmr = amountXmr.slice(0, decimalIdx) + amountXmr.slice(decimalIdx + 1);\n }\n return new BigInteger(amountXmr).multiply(new BigInteger(MoneroUtils.AU_PER_XMR)).divide(new BigInteger(decimalDivisor));\n }\n \n /**\n * Convert atomic units to XMR.\n * \n * @param {BigInteger|string} amountAtomicUnits - amount in atomic units to convert to XMR\n * @return {number} amount in XMR \n */\n static atomicUnitsToXmr(amountAtomicUnits) {\n if (typeof amountAtomicUnits === \"string\") amountAtomicUnits = new BigInteger(amountAtomicUnits);\n else if (!(amountAtomicUnits instanceof BigInteger)) throw new MoneroError(\"Must provide atomic units as BigInteger or string to convert to XMR\");\n let quotientAndRemainder = amountAtomicUnits.divRem(new BigInteger(MoneroUtils.AU_PER_XMR));\n return Number(quotientAndRemainder[0].toJSValue() + quotientAndRemainder[1].toJSValue() / MoneroUtils.AU_PER_XMR);\n }\n \n static _isHex64(str) {\n return typeof str === \"string\" && str.length === 64 && GenUtils.isHex(str);\n }\n}\n\nMoneroUtils.PROXY_TO_WORKER = true;\nMoneroUtils.NUM_MNEMONIC_WORDS = 25;\nMoneroUtils.RING_SIZE = 12;\nMoneroUtils.MAX_REQUESTS_PER_SECOND = 50;\nMoneroUtils.AU_PER_XMR = 1000000000000;\n\nmodule.exports = MoneroUtils;","const assert = require(\"assert\");\nconst GenUtils = require(\"./GenUtils\");\nconst HttpClient = require(\"./HttpClient\");\nconst LibraryUtils = require(\"./LibraryUtils\");\nconst MoneroBan = require(\"../daemon/model/MoneroBan\");\nconst MoneroBlock = require(\"../daemon/model/MoneroBlock\");\nconst MoneroDaemonListener = require(\"../daemon/model/MoneroDaemonListener\");\nconst MoneroDaemonRpc = require(\"../daemon/MoneroDaemonRpc\");\nconst MoneroError = require(\"./MoneroError\");\nconst MoneroKeyImage = require(\"../daemon/model/MoneroKeyImage\");\nconst MoneroRpcConnection = require(\"./MoneroRpcConnection\");\nconst MoneroTxConfig = require(\"../wallet/model/MoneroTxConfig\");\nconst MoneroTxSet = require(\"../wallet/model/MoneroTxSet\");\nconst MoneroUtils = require(\"../common/MoneroUtils\");\nconst MoneroWalletConfig = require(\"../wallet/model/MoneroWalletConfig\");\nconst MoneroWalletListener = require(\"../wallet/model/MoneroWalletListener\");\nconst MoneroWalletFull = require(\"../wallet/MoneroWalletFull\");\n\n/**\n * Worker to manage a daemon and wasm wallet off the main thread using messages.\n * \n * Required message format: e.data[0] = object id, e.data[1] = function name, e.data[2+] = function args\n *\n * For browser applications, this file must be browserified and placed in the web app root.\n * \n * @private\n */\nonmessage = async function(e) {\n \n // initialize one time\n await self.initOneTime();\n \n // validate params\n let objectId = e.data[0];\n let fnName = e.data[1];\n let callbackId = e.data[2];\n assert(fnName, \"Must provide function name to worker\");\n assert(callbackId, \"Must provide callback id to worker\");\n if (!self[fnName]) throw new Error(\"Method '\" + fnName + \"' is not registered with worker\");\n e.data.splice(1, 2); // remove function name and callback id to apply function with arguments\n \n // execute worker function and post result to callback\n try {\n postMessage([objectId, callbackId, {result: await self[fnName].apply(null, e.data)}]);\n } catch (e) {\n if (!(e instanceof Error)) e = new Error(e);\n postMessage([objectId, callbackId, {error: LibraryUtils.serializeError(e)}]);\n }\n}\n\nself.initOneTime = async function() {\n if (!self.isInitialized) {\n self.WORKER_OBJECTS = {};\n self.isInitialized = true;\n MoneroUtils.PROXY_TO_WORKER = false;\n }\n}\n\n// --------------------------- STATIC UTILITIES -------------------------------\n\nself.httpRequest = async function(objectId, opts) {\n try {\n return await HttpClient.request(Object.assign(opts, {proxyToWorker: false})); \n } catch (err) {\n throw err.statusCode ? new Error(JSON.stringify({statusCode: err.statusCode, statusMessage: err.message})) : err;\n }\n}\n\nself.setLogLevel = async function(objectId, level) {\n return LibraryUtils.setLogLevel(level);\n}\n\nself.getWasmMemoryUsed = async function(objectId) {\n return LibraryUtils.getWasmModule() && LibraryUtils.getWasmModule().HEAP8 ? LibraryUtils.getWasmModule().HEAP8.length : undefined;\n}\n\n// ----------------------------- MONERO UTILS ---------------------------------\n\nself.moneroUtilsGetIntegratedAddress = async function(objectId, networkType, standardAddress, paymentId) {\n return (await MoneroUtils.getIntegratedAddress(networkType, standardAddress, paymentId)).toJson();\n}\n\nself.moneroUtilsValidateAddress = async function(objectId, address, networkType) {\n return MoneroUtils.validateAddress(address, networkType);\n}\n\nself.moneroUtilsJsonToBinary = async function(objectId, json) {\n return MoneroUtils.jsonToBinary(json);\n}\n\nself.moneroUtilsBinaryToJson = async function(objectId, uint8arr) {\n return MoneroUtils.binaryToJson(uint8arr);\n}\n\nself.moneroUtilsBinaryBlocksToJson = async function(objectId, uint8arr) {\n return MoneroUtils.binaryBlocksToJson(uint8arr);\n}\n\n// ---------------------------- DAEMON METHODS --------------------------------\n\nself.daemonAddListener = async function(daemonId, listenerId) {\n let listener = new class extends MoneroDaemonListener {\n async onBlockHeader(blockHeader) {\n self.postMessage([daemonId, \"onBlockHeader_\" + listenerId, blockHeader.toJson()]);\n }\n }\n if (!self.daemonListeners) self.daemonListeners = {};\n self.daemonListeners[listenerId] = listener;\n await self.WORKER_OBJECTS[daemonId].addListener(listener);\n}\n\nself.daemonRemoveListener = async function(daemonId, listenerId) {\n if (!self.daemonListeners[listenerId]) throw new MoneroError(\"No daemon worker listener registered with id: \" + listenerId);\n await self.WORKER_OBJECTS[daemonId].removeListener(self.daemonListeners[listenerId]);\n delete self.daemonListeners[listenerId];\n}\n\nself.connectDaemonRpc = async function(daemonId, config) {\n self.WORKER_OBJECTS[daemonId] = new MoneroDaemonRpc(config);\n}\n\nself.daemonGetRpcConnection = async function(daemonId) {\n let connection = await self.WORKER_OBJECTS[daemonId].getRpcConnection();\n return connection ? connection.getConfig() : undefined;\n}\n\nself.daemonIsConnected = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].isConnected();\n}\n\nself.daemonGetVersion = async function(daemonId) {\n return (await self.WORKER_OBJECTS[daemonId].getVersion()).toJson();\n}\n\nself.daemonIsTrusted = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].isTrusted();\n}\n\nself.daemonGetHeight = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].getHeight();\n}\n\nself.daemonGetBlockHash = async function(daemonId, height) {\n return self.WORKER_OBJECTS[daemonId].getBlockHash(height);\n}\n\nself.daemonGetBlockTemplate = async function(daemonId, walletAddress, reserveSize) {\n return (await self.WORKER_OBJECTS[daemonId].getBlockTemplate(walletAddress, reserveSize)).toJson();\n}\n\nself.daemonGetLastBlockHeader = async function(daemonId) {\n return (await self.WORKER_OBJECTS[daemonId].getLastBlockHeader()).toJson();\n}\n\nself.daemonGetBlockHeaderByHash = async function(daemonId, hash) {\n return (await self.WORKER_OBJECTS[daemonId].getBlockHeaderByHash(hash)).toJson();\n}\n\nself.daemonGetBlockHeaderByHeight = async function(daemonId, height) {\n return (await self.WORKER_OBJECTS[daemonId].getBlockHeaderByHeight(height)).toJson();\n}\n\nself.daemonGetBlockHeadersByRange = async function(daemonId, startHeight, endHeight) {\n let blockHeadersJson = [];\n for (let blockHeader of await self.WORKER_OBJECTS[daemonId].getBlockHeadersByRange(startHeight, endHeight)) blockHeadersJson.push(blockHeader.toJson());\n return blockHeadersJson;\n}\n\nself.daemonGetBlockByHash = async function(daemonId, blockHash) {\n return (await self.WORKER_OBJECTS[daemonId].getBlockByHash(blockHash)).toJson();\n}\n\nself.daemonGetBlocksByHash = async function(daemonId, blockHashes, startHeight, prune) {\n let blocksJson = [];\n for (let block of await self.WORKER_OBJECTS[daemonId].getBlocksByHash(blockHashes, startHeight, prune)) blocksJson.push(block.toJson());\n return blocksJson;\n}\n\nself.daemonGetBlockByHeight = async function(daemonId, height) {\n return (await self.WORKER_OBJECTS[daemonId].getBlockByHeight(height)).toJson();\n}\n\nself.daemonGetBlocksByHeight = async function(daemonId, heights) {\n let blocksJson = [];\n for (let block of await self.WORKER_OBJECTS[daemonId].getBlocksByHeight(heights)) blocksJson.push(block.toJson());\n return blocksJson;\n}\n\nself.daemonGetBlocksByRange = async function(daemonId, startHeight, endHeight) {\n let blocksJson = [];\n for (let block of await self.WORKER_OBJECTS[daemonId].getBlocksByRange(startHeight, endHeight)) blocksJson.push(block.toJson());\n return blocksJson;\n}\n\nself.daemonGetBlocksByRangeChunked = async function(daemonId, startHeight, endHeight, maxChunkSize) {\n let blocksJson = [];\n for (let block of await self.WORKER_OBJECTS[daemonId].getBlocksByRangeChunked(startHeight, endHeight, maxChunkSize)) blocksJson.push(block.toJson());\n return blocksJson;\n}\n\nself.daemonGetBlockHashes = async function(daemonId, blockHashes, startHeight) {\n throw new Error(\"worker.getBlockHashes not implemented\");\n}\n\n// TODO: factor common code with self.getTxs()\nself.daemonGetTxs = async function(daemonId, txHashes, prune) {\n \n // get txs\n let txs = await self.WORKER_OBJECTS[daemonId].getTxs(txHashes, prune);\n \n // collect unique blocks to preserve model relationships as trees (based on monero_wasm_bridge.cpp::get_txs)\n let blocks = [];\n let unconfirmedBlock = undefined\n let seenBlocks = new Set();\n for (let tx of txs) {\n if (!tx.getBlock()) {\n if (!unconfirmedBlock) unconfirmedBlock = new MoneroBlock().setTxs([]);\n tx.setBlock(unconfirmedBlock);\n unconfirmedBlock.getTxs().push(tx);\n }\n if (!seenBlocks.has(tx.getBlock())) {\n seenBlocks.add(tx.getBlock());\n blocks.push(tx.getBlock());\n }\n }\n \n // serialize blocks to json\n for (let i = 0; i < blocks.length; i++) blocks[i] = blocks[i].toJson();\n return blocks;\n}\n\nself.daemonGetTxHexes = async function(daemonId, txHashes, prune) {\n return self.WORKER_OBJECTS[daemonId].getTxHexes(txHashes, prune);\n}\n\nself.daemonGetMinerTxSum = async function(daemonId, height, numBlocks) {\n return (await self.WORKER_OBJECTS[daemonId].getMinerTxSum(height, numBlocks)).toJson();\n}\n\nself.daemonGetFeeEstimate = async function(daemonId, graceBlocks) {\n return (await self.WORKER_OBJECTS[daemonId].getFeeEstimate(graceBlocks)).toJson();\n}\n\nself.daemonSubmitTxHex = async function(daemonId, txHex, doNotRelay) {\n return (await self.WORKER_OBJECTS[daemonId].submitTxHex(txHex, doNotRelay)).toJson();\n}\n\nself.daemonRelayTxsByHash = async function(daemonId, txHashes) {\n return self.WORKER_OBJECTS[daemonId].relayTxsByHash(txHashes);\n}\n\nself.daemonGetTxPool = async function(daemonId) {\n let txs = await self.WORKER_OBJECTS[daemonId].getTxPool();\n let block = new MoneroBlock().setTxs(txs);\n for (let tx of txs) tx.setBlock(block)\n return block.toJson();\n}\n\nself.daemonGetTxPoolHashes = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].getTxPoolHashes();\n}\n\n//async getTxPoolBacklog() {\n// throw new MoneroError(\"Not implemented\");\n//}\n\nself.daemonGetTxPoolStats = async function(daemonId) {\n return (await self.WORKER_OBJECTS[daemonId].getTxPoolStats()).toJson();\n}\n\nself.daemonFlushTxPool = async function(daemonId, hashes) {\n return self.WORKER_OBJECTS[daemonId].flushTxPool(hashes);\n}\n\nself.daemonGetKeyImageSpentStatuses = async function(daemonId, keyImages) {\n return self.WORKER_OBJECTS[daemonId].getKeyImageSpentStatuses(keyImages);\n}\n\n//\n//async getOutputs(outputs) {\n// throw new MoneroError(\"Not implemented\");\n//}\n\nself.daemonGetOutputHistogram = async function(daemonId, amounts, minCount, maxCount, isUnlocked, recentCutoff) {\n let entriesJson = [];\n for (let entry of await self.WORKER_OBJECTS[daemonId].getOutputHistogram(amounts, minCount, maxCount, isUnlocked, recentCutoff)) {\n entriesJson.push(entry.toJson());\n }\n return entriesJson;\n}\n\n//\n//async getOutputDistribution(amounts, cumulative, startHeight, endHeight) {\n// throw new MoneroError(\"Not implemented\");\n//}\n\nself.daemonGetInfo = async function(daemonId) {\n return (await self.WORKER_OBJECTS[daemonId].getInfo()).toJson();\n}\n\nself.daemonGetSyncInfo = async function(daemonId) {\n return (await self.WORKER_OBJECTS[daemonId].getSyncInfo()).toJson();\n}\n\nself.daemonGetHardForkInfo = async function(daemonId) {\n return (await self.WORKER_OBJECTS[daemonId].getHardForkInfo()).toJson();\n}\n\nself.daemonGetAltChains = async function(daemonId) {\n let altChainsJson = [];\n for (let altChain of await self.WORKER_OBJECTS[daemonId].getAltChains()) altChainsJson.push(altChain.toJson());\n return altChainsJson;\n}\n\nself.daemonGetAltBlockHashes = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].getAltBlockHashes();\n}\n\nself.daemonGetDownloadLimit = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].getDownloadLimit();\n}\n\nself.daemonSetDownloadLimit = async function(daemonId, limit) {\n return self.WORKER_OBJECTS[daemonId].setDownloadLimit(limit);\n}\n\nself.daemonResetDownloadLimit = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].resetDownloadLimit();\n}\n\nself.daemonGetUploadLimit = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].getUploadLimit();\n}\n\nself.daemonSetUploadLimit = async function(daemonId, limit) {\n return self.WORKER_OBJECTS[daemonId].setUploadLimit(limit);\n}\n\nself.daemonResetUploadLimit = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].resetUploadLimit();\n}\n\nself.daemonGetPeers = async function(daemonId) {\n let peersJson = [];\n for (let peer of await self.WORKER_OBJECTS[daemonId].getPeers()) peersJson.push(peer.toJson());\n return peersJson;\n}\n\nself.daemonGetKnownPeers = async function(daemonId) {\n let peersJson = [];\n for (let peer of await self.WORKER_OBJECTS[daemonId].getKnownPeers()) peersJson.push(peer.toJson());\n return peersJson;\n}\n\nself.daemonSetOutgoingPeerLimit = async function(daemonId, limit) {\n return self.WORKER_OBJECTS[daemonId].setOutgoingPeerLimit(limit);\n}\n\nself.daemonSetIncomingPeerLimit = async function(daemonId, limit) {\n return self.WORKER_OBJECTS[daemonId].setIncomingPeerLimit(limit);\n}\n\nself.daemonGetPeerBans = async function(daemonId) {\n let bansJson = [];\n for (let ban of await self.WORKER_OBJECTS[daemonId].getPeerBans()) bansJson.push(ban.toJson());\n return bansJson;\n}\n\nself.daemonSetPeerBans = async function(daemonId, bansJson) {\n let bans = [];\n for (let banJson of bansJson) bans.push(new MoneroBan(banJson));\n return self.WORKER_OBJECTS[daemonId].setPeerBans(bans);\n}\n\nself.daemonStartMining = async function(daemonId, address, numThreads, isBackground, ignoreBattery) {\n return self.WORKER_OBJECTS[daemonId].startMining(address, numThreads, isBackground, ignoreBattery);\n}\n\nself.daemonStopMining = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].stopMining();\n}\n\nself.daemonGetMiningStatus = async function(daemonId) {\n return (await self.WORKER_OBJECTS[daemonId].getMiningStatus()).toJson();\n}\n\nself.daemonPruneBlockchain = async function(daemonId, check) {\n return (await self.WORKER_OBJECTS[daemonId].pruneBlockchain(check)).toJson();\n}\n\n//\n//async submitBlocks(blockBlobs) {\n// throw new MoneroError(\"Not implemented\");\n//}\n//\n//async checkForUpdate() {\n// throw new MoneroError(\"Not implemented\");\n//}\n//\n//async downloadUpdate(path) {\n// throw new MoneroError(\"Not implemented\");\n//}\n\nself.daemonStop = async function(daemonId) {\n return self.WORKER_OBJECTS[daemonId].stop();\n}\n\nself.daemonWaitForNextBlockHeader = async function(daemonId) {\n return (await self.WORKER_OBJECTS[daemonId].waitForNextBlockHeader()).toJson();\n}\n\n//------------------------------ WALLET METHODS -------------------------------\n\nself.openWalletData = async function(walletId, path, password, networkType, keysData, cacheData, daemonUriOrConfig) {\n let daemonConnection = daemonUriOrConfig ? new MoneroRpcConnection(daemonUriOrConfig) : undefined;\n self.WORKER_OBJECTS[walletId] = await MoneroWalletFull.openWallet({path: \"\", password: password, networkType: networkType, keysData: keysData, cacheData: cacheData, server: daemonConnection, proxyToWorker: false});\n self.WORKER_OBJECTS[walletId]._setBrowserMainPath(path);\n}\n\nself._createWallet = async function(walletId, configJson) {\n let config = new MoneroWalletConfig(configJson);\n let path = config.getPath();\n config.setPath(\"\");\n config.setProxyToWorker(false);\n self.WORKER_OBJECTS[walletId] = await MoneroWalletFull.createWallet(config);\n self.WORKER_OBJECTS[walletId]._setBrowserMainPath(path);\n}\n\nself.isViewOnly = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].isViewOnly();\n}\n\nself.getNetworkType = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getNetworkType();\n}\n\n//\n//async getVersion() {\n// throw new Error(\"Not implemented\");\n//}\n\nself.getSeed = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getSeed();\n}\n\nself.getSeedLanguage = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getSeedLanguage();\n}\n\nself.getSeedLanguages = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getSeedLanguages();\n}\n\nself.getPrivateSpendKey = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getPrivateSpendKey();\n}\n\nself.getPrivateViewKey = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getPrivateViewKey();\n}\n\nself.getPublicViewKey = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getPublicViewKey();\n}\n\nself.getPublicSpendKey = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getPublicSpendKey();\n}\n\nself.getAddress = async function(walletId, accountIdx, subaddressIdx) {\n return self.WORKER_OBJECTS[walletId].getAddress(accountIdx, subaddressIdx);\n}\n\nself.getAddressIndex = async function(walletId, address) {\n return (await self.WORKER_OBJECTS[walletId].getAddressIndex(address)).toJson();\n}\n\nself.setSubaddressLabel = async function(walletId, accountIdx, subaddressIdx, label) {\n await self.WORKER_OBJECTS[walletId].setSubaddressLabel(accountIdx, subaddressIdx, label);\n}\n\nself.getIntegratedAddress = async function(walletId, standardAddress, paymentId) {\n return (await self.WORKER_OBJECTS[walletId].getIntegratedAddress(standardAddress, paymentId)).toJson();\n}\n\nself.decodeIntegratedAddress = async function(walletId, integratedAddress) {\n return (await self.WORKER_OBJECTS[walletId].decodeIntegratedAddress(integratedAddress)).toJson();\n}\n\nself.setDaemonConnection = async function(walletId, config) {\n return self.WORKER_OBJECTS[walletId].setDaemonConnection(config ? new MoneroRpcConnection(Object.assign(config, {proxyToWorker: false})) : undefined);\n}\n\nself.getDaemonConnection = async function(walletId) {\n let connection = await self.WORKER_OBJECTS[walletId].getDaemonConnection();\n return connection ? connection.getConfig() : undefined;\n}\n\nself.isConnectedToDaemon = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].isConnectedToDaemon();\n}\n\nself.getRestoreHeight = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getRestoreHeight();\n}\n\nself.setRestoreHeight = async function(walletId, restoreHeight) {\n return self.WORKER_OBJECTS[walletId].setRestoreHeight(restoreHeight);\n}\n\nself.getDaemonHeight = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getDaemonHeight();\n}\n\nself.getDaemonMaxPeerHeight = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getDaemonMaxPeerHeight()\n}\n\nself.getHeightByDate = async function(walletId, year, month, day) {\n return self.WORKER_OBJECTS[walletId].getHeightByDate(year, month, day);\n}\n\nself.isDaemonSynced = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].isDaemonSynced();\n}\n\nself.getHeight = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getHeight();\n}\n\nself.addListener = async function(walletId, listenerId) {\n \n /**\n * Internal listener to bridge notifications to external listeners.\n * \n * TODO: MoneroWalletListener is not defined until scripts imported\n * \n * @private\n */\n class WalletWorkerHelperListener extends MoneroWalletListener {\n \n constructor(walletId, id, worker) {\n super();\n this.walletId = walletId;\n this.id = id;\n this.worker = worker;\n }\n \n getId() {\n return this.id;\n }\n \n onSyncProgress(height, startHeight, endHeight, percentDone, message) {\n this.worker.postMessage([this.walletId, \"onSyncProgress_\" + this.getId(), height, startHeight, endHeight, percentDone, message]);\n }\n\n onNewBlock(height) { \n this.worker.postMessage([this.walletId, \"onNewBlock_\" + this.getId(), height]);\n }\n \n onBalancesChanged(newBalance, newUnlockedBalance) {\n this.worker.postMessage([this.walletId, \"onBalancesChanged_\" + this.getId(), newBalance.toString(), newUnlockedBalance.toString()]);\n }\n\n onOutputReceived(output) {\n let block = output.getTx().getBlock();\n if (block === undefined) block = new MoneroBlock().setTxs([output.getTx()]);\n this.worker.postMessage([this.walletId, \"onOutputReceived_\" + this.getId(), block.toJson()]); // serialize from root block\n }\n \n onOutputSpent(output) {\n let block = output.getTx().getBlock();\n if (block === undefined) block = new MoneroBlock().setTxs([output.getTx()]);\n this.worker.postMessage([this.walletId, \"onOutputSpent_\" + this.getId(), block.toJson()]); // serialize from root block\n }\n }\n \n let listener = new WalletWorkerHelperListener(walletId, listenerId, self);\n if (!self.listeners) self.listeners = [];\n self.listeners.push(listener);\n await self.WORKER_OBJECTS[walletId].addListener(listener);\n}\n\nself.removeListener = async function(walletId, listenerId) {\n for (let i = 0; i < self.listeners.length; i++) {\n if (self.listeners[i].getId() !== listenerId) continue;\n await self.WORKER_OBJECTS[walletId].removeListener(self.listeners[i]);\n self.listeners.splice(i, 1);\n return;\n }\n throw new MoneroError(\"Listener is not registered with wallet\");\n}\n\nself.isSynced = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].isSynced();\n}\n\nself.sync = async function(walletId, startHeight, allowConcurrentCalls) {\n return await self.WORKER_OBJECTS[walletId].sync(undefined, startHeight, allowConcurrentCalls);\n}\n\nself.startSyncing = async function(walletId, syncPeriodInMs) {\n return self.WORKER_OBJECTS[walletId].startSyncing(syncPeriodInMs);\n}\n\nself.stopSyncing = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].stopSyncing();\n}\n\nself.scanTxs = async function(walletId, txHashes) {\n return self.WORKER_OBJECTS[walletId].scanTxs(txHashes);\n}\n\nself.rescanSpent = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].rescanSpent();\n}\n\nself.rescanBlockchain = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].rescanBlockchain();\n}\n\nself.getBalance = async function(walletId, accountIdx, subaddressIdx) {\n return (await self.WORKER_OBJECTS[walletId].getBalance(accountIdx, subaddressIdx)).toString();\n}\n\nself.getUnlockedBalance = async function(walletId, accountIdx, subaddressIdx) {\n return (await self.WORKER_OBJECTS[walletId].getUnlockedBalance(accountIdx, subaddressIdx)).toString();\n}\n\nself.getAccounts = async function(walletId, includeSubaddresses, tag) {\n let accountJsons = [];\n for (let account of await self.WORKER_OBJECTS[walletId].getAccounts(includeSubaddresses, tag)) accountJsons.push(account.toJson());\n return accountJsons;\n}\n\nself.getAccount = async function(walletId, accountIdx, includeSubaddresses) {\n return (await self.WORKER_OBJECTS[walletId].getAccount(accountIdx, includeSubaddresses)).toJson();\n}\n\nself.createAccount = async function(walletId, label) {\n return (await self.WORKER_OBJECTS[walletId].createAccount(label)).toJson();\n}\n\nself.getSubaddresses = async function(walletId, accountIdx, subaddressIndices) {\n let subaddressJsons = [];\n for (let subaddress of await self.WORKER_OBJECTS[walletId].getSubaddresses(accountIdx, subaddressIndices)) subaddressJsons.push(subaddress.toJson());\n return subaddressJsons;\n}\n\nself.createSubaddress = async function(walletId, accountIdx, label) {\n return (await self.WORKER_OBJECTS[walletId].createSubaddress(accountIdx, label)).toJson();\n}\n\n// TODO: easier or more efficient way than serializing from root blocks?\nself.getTxs = async function(walletId, blockJsonQuery) {\n \n // deserialize query which is json string rooted at block\n let query = new MoneroBlock(blockJsonQuery, MoneroBlock.DeserializationType.TX_QUERY).getTxs()[0];\n \n // get txs\n let txs = await self.WORKER_OBJECTS[walletId].getTxs(query);\n \n // collect unique blocks to preserve model relationships as trees (based on monero_wasm_bridge.cpp::get_txs)\n let seenBlocks = new Set();\n let unconfirmedBlock = undefined;\n let blocks = [];\n for (let tx of txs) {\n if (!tx.getBlock()) {\n if (!unconfirmedBlock) unconfirmedBlock = new MoneroBlock().setTxs([]);\n tx.setBlock(unconfirmedBlock);\n unconfirmedBlock.getTxs().push(tx);\n }\n if (!seenBlocks.has(tx.getBlock())) {\n seenBlocks.add(tx.getBlock());\n blocks.push(tx.getBlock());\n }\n }\n \n // serialize blocks to json\n for (let i = 0; i < blocks.length; i++) blocks[i] = blocks[i].toJson();\n return {blocks: blocks};\n}\n\nself.getTransfers = async function(walletId, blockJsonQuery) {\n \n // deserialize query which is json string rooted at block\n let query = new MoneroBlock(blockJsonQuery, MoneroBlock.DeserializationType.TX_QUERY).getTxs()[0].getTransferQuery();\n \n // get transfers\n let transfers = await self.WORKER_OBJECTS[walletId].getTransfers(query);\n \n // collect unique blocks to preserve model relationships as tree\n let unconfirmedBlock = undefined;\n let blocks = [];\n let seenBlocks = new Set();\n for (let transfer of transfers) {\n let tx = transfer.getTx();\n if (!tx.getBlock()) {\n if (!unconfirmedBlock) unconfirmedBlock = new MoneroBlock().setTxs([]);\n tx.setBlock(unconfirmedBlock);\n unconfirmedBlock.getTxs().push(tx);\n }\n if (!seenBlocks.has(tx.getBlock())) {\n seenBlocks.add(tx.getBlock());\n blocks.push(tx.getBlock());\n }\n }\n \n // serialize blocks to json\n for (let i = 0; i < blocks.length; i++) blocks[i] = blocks[i].toJson();\n return blocks;\n}\n\nself.getOutputs = async function(walletId, blockJsonQuery) {\n\n // deserialize query which is json string rooted at block\n let query = new MoneroBlock(blockJsonQuery, MoneroBlock.DeserializationType.TX_QUERY).getTxs()[0].getOutputQuery();\n \n // get outputs\n let outputs = await self.WORKER_OBJECTS[walletId].getOutputs(query);\n \n // collect unique blocks to preserve model relationships as tree\n let unconfirmedBlock = undefined;\n let blocks = [];\n let seenBlocks = new Set();\n for (let output of outputs) {\n let tx = output.getTx();\n if (!tx.getBlock()) {\n if (!unconfirmedBlock) unconfirmedBlock = new MoneroBlock().setTxs([]);\n tx.setBlock(unconfirmedBlock);\n unconfirmedBlock.getTxs().push(tx);\n }\n if (!seenBlocks.has(tx.getBlock())) {\n seenBlocks.add(tx.getBlock());\n blocks.push(tx.getBlock());\n }\n }\n \n // serialize blocks to json\n for (let i = 0; i < blocks.length; i++) blocks[i] = blocks[i].toJson();\n return blocks;\n}\n\nself.exportOutputs = async function(walletId, all) {\n return self.WORKER_OBJECTS[walletId].exportOutputs(all);\n}\n\nself.importOutputs = async function(walletId, outputsHex) {\n return self.WORKER_OBJECTS[walletId].importOutputs(outputsHex);\n}\n\nself.getKeyImages = async function(walletId, all) {\n let keyImagesJson = [];\n for (let keyImage of await self.WORKER_OBJECTS[walletId].exportKeyImages(all)) keyImagesJson.push(keyImage.toJson());\n return keyImagesJson;\n}\n\nself.importKeyImages = async function(walletId, keyImagesJson) {\n let keyImages = [];\n for (let keyImageJson of keyImagesJson) keyImages.push(new MoneroKeyImage(keyImageJson));\n return (await self.WORKER_OBJECTS[walletId].importKeyImages(keyImages)).toJson();\n}\n\n//async getNewKeyImagesFromLastImport() {\n// throw new MoneroError(\"Not implemented\");\n//}\n\nself.freezeOutput = async function(walletId, keyImage) {\n return self.WORKER_OBJECTS[walletId].freezeOutput(keyImage);\n}\n\nself.thawOutput = async function(walletId, keyImage) {\n return self.WORKER_OBJECTS[walletId].thawOutput(keyImage);\n}\n\nself.isOutputFrozen = async function(walletId, keyImage) {\n return self.WORKER_OBJECTS[walletId].isOutputFrozen(keyImage);\n}\n\nself.createTxs = async function(walletId, config) {\n if (typeof config === \"object\") config = new MoneroTxConfig(config);\n let txs = await self.WORKER_OBJECTS[walletId].createTxs(config);\n return txs[0].getTxSet().toJson();\n}\n\nself.sweepOutput = async function(walletId, config) {\n if (typeof config === \"object\") config = new MoneroTxConfig(config);\n let tx = await self.WORKER_OBJECTS[walletId].sweepOutput(config);\n return tx.getTxSet().toJson();\n}\n\nself.sweepUnlocked = async function(walletId, config) {\n if (typeof config === \"object\") config = new MoneroTxConfig(config);\n let txs = await self.WORKER_OBJECTS[walletId].sweepUnlocked(config);\n let txSets = [];\n for (let tx of txs) if (!GenUtils.arrayContains(txSets, tx.getTxSet())) txSets.push(tx.getTxSet());\n let txSetsJson = [];\n for (let txSet of txSets) txSetsJson.push(txSet.toJson());\n return txSetsJson;\n}\n\nself.sweepDust = async function(walletId, relay) {\n let txs = await self.WORKER_OBJECTS[walletId].sweepDust(relay);\n return txs.length === 0 ? {} : txs[0].getTxSet().toJson();\n}\n\nself.relayTxs = async function(walletId, txMetadatas) {\n return self.WORKER_OBJECTS[walletId].relayTxs(txMetadatas);\n}\n\nself.describeTxSet = async function(walletId, txSetJson) {\n return (await self.WORKER_OBJECTS[walletId].describeTxSet(new MoneroTxSet(txSetJson))).toJson();\n}\n\nself.signTxs = async function(walletId, unsignedTxHex) {\n return self.WORKER_OBJECTS[walletId].signTxs(unsignedTxHex);\n}\n\nself.submitTxs = async function(walletId, signedTxHex) {\n return self.WORKER_OBJECTS[walletId].submitTxs(signedTxHex);\n}\n\nself.signMessage = async function(walletId, message, signatureType, accountIdx, subaddressIdx) {\n return self.WORKER_OBJECTS[walletId].signMessage(message, signatureType, accountIdx, subaddressIdx);\n}\n\nself.verifyMessage = async function(walletId, message, address, signature) {\n return (await self.WORKER_OBJECTS[walletId].verifyMessage(message, address, signature)).toJson();\n}\n\nself.getTxKey = async function(walletId, txHash) {\n return self.WORKER_OBJECTS[walletId].getTxKey(txHash);\n}\n\nself.checkTxKey = async function(walletId, txHash, txKey, address) {\n return (await self.WORKER_OBJECTS[walletId].checkTxKey(txHash, txKey, address)).toJson();\n}\n\nself.getTxProof = async function(walletId, txHash, address, message) {\n return self.WORKER_OBJECTS[walletId].getTxProof(txHash, address, message);\n}\n\nself.checkTxProof = async function(walletId, txHash, address, message, signature) {\n return (await self.WORKER_OBJECTS[walletId].checkTxProof(txHash, address, message, signature)).toJson();\n}\n\nself.getSpendProof = async function(walletId, txHash, message) {\n return self.WORKER_OBJECTS[walletId].getSpendProof(txHash, message);\n}\n\nself.checkSpendProof = async function(walletId, txHash, message, signature) {\n return self.WORKER_OBJECTS[walletId].checkSpendProof(txHash, message, signature);\n}\n\nself.getReserveProofWallet = async function(walletId, message) {\n return self.WORKER_OBJECTS[walletId].getReserveProofWallet(message);\n}\n\nself.getReserveProofAccount = async function(walletId, accountIdx, amountStr, message) {\n return self.WORKER_OBJECTS[walletId].getReserveProofAccount(accountIdx, amountStr, message);\n}\n\nself.checkReserveProof = async function(walletId, address, message, signature) {\n return (await self.WORKER_OBJECTS[walletId].checkReserveProof(address, message, signature)).toJson();\n}\n\nself.getTxNotes = async function(walletId, txHashes) {\n return self.WORKER_OBJECTS[walletId].getTxNotes(txHashes);\n}\n\nself.setTxNotes = async function(walletId, txHashes, txNotes) {\n return self.WORKER_OBJECTS[walletId].setTxNotes(txHashes, txNotes);\n}\n\nself.getAddressBookEntries = async function(walletId, entryIndices) {\n let entriesJson = [];\n for (let entry of await self.WORKER_OBJECTS[walletId].getAddressBookEntries(entryIndices)) entriesJson.push(entry.toJson());\n return entriesJson;\n}\n\nself.addAddressBookEntry = async function(walletId, address, description) {\n return self.WORKER_OBJECTS[walletId].addAddressBookEntry(address, description);\n}\n\nself.editAddressBookEntry = async function(walletId, index, setAddress, address, setDescription, description) {\n return self.WORKER_OBJECTS[walletId].editAddressBookEntry(index, setAddress, address, setDescription, description);\n}\n\nself.deleteAddressBookEntry = async function(walletId, index) {\n return self.WORKER_OBJECTS[walletId].deleteAddressBookEntry(index);\n}\n\nself.tagAccounts = async function(walletId, tag, accountIndices) {\n throw new Error(\"Not implemented\");\n}\n\nself.untagAccounts = async function(walletId, accountIndices) {\n throw new Error(\"Not implemented\");\n}\n\nself.getAccountTags = async function(walletId) {\n throw new Error(\"Not implemented\");\n}\n\nself.setAccountTagLabel = async function(walletId, tag, label) {\n throw new Error(\"Not implemented\");\n}\n\nself.getPaymentUri = async function(walletId, configJson) {\n return self.WORKER_OBJECTS[walletId].getPaymentUri(new MoneroTxConfig(configJson));\n}\n\nself.parsePaymentUri = async function(walletId, uri) {\n return (await self.WORKER_OBJECTS[walletId].parsePaymentUri(uri)).toJson();\n}\n\nself.getAttribute = async function(walletId, key) {\n return self.WORKER_OBJECTS[walletId].getAttribute(key);\n}\n\nself.setAttribute = async function(walletId, key, value) {\n return self.WORKER_OBJECTS[walletId].setAttribute(key, value);\n}\n\nself.startMining = async function(walletId, numThreads, backgroundMining, ignoreBattery) {\n return self.WORKER_OBJECTS[walletId].startMining(numThreads, backgroundMining, ignoreBattery);\n}\n\nself.stopMining = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].stopMining();\n}\n\nself.isMultisigImportNeeded = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].isMultisigImportNeeded();\n}\n\nself.isMultisig = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].isMultisig();\n}\n\nself.getMultisigInfo = async function(walletId) {\n return (await self.WORKER_OBJECTS[walletId].getMultisigInfo()).toJson();\n}\n\nself.prepareMultisig = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].prepareMultisig();\n}\n\nself.makeMultisig = async function(walletId, multisigHexes, threshold, password) {\n return await self.WORKER_OBJECTS[walletId].makeMultisig(multisigHexes, threshold, password);\n}\n\nself.exchangeMultisigKeys = async function(walletId, multisigHexes, password) {\n return (await self.WORKER_OBJECTS[walletId].exchangeMultisigKeys(multisigHexes, password)).toJson();\n}\n\nself.exportMultisigHex = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].exportMultisigHex();\n}\n\nself.importMultisigHex = async function(walletId, multisigHexes) {\n return self.WORKER_OBJECTS[walletId].importMultisigHex(multisigHexes);\n}\n\nself.signMultisigTxHex = async function(walletId, multisigTxHex) {\n return (await self.WORKER_OBJECTS[walletId].signMultisigTxHex(multisigTxHex)).toJson();\n}\n\nself.submitMultisigTxHex = async function(walletId, signedMultisigTxHex) {\n return self.WORKER_OBJECTS[walletId].submitMultisigTxHex(signedMultisigTxHex);\n}\n\nself.getData = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].getData();\n}\n\nself.changePassword = async function(walletId, oldPassword, newPassword) {\n return self.WORKER_OBJECTS[walletId].changePassword(oldPassword, newPassword);\n}\n\nself.isClosed = async function(walletId) {\n return self.WORKER_OBJECTS[walletId].isClosed();\n}\n\nself.close = async function(walletId, save) {\n return self.WORKER_OBJECTS[walletId].close(save); // TODO: remove listeners and delete wallet from WORKER_OBJECTS\n}","/**\n * SSL options for remote endpoints.\n */\nclass SslOptions {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n }\n \n getPrivateKeyPath() {\n return this.state.privateKeyPath;\n }\n \n setPrivateKeyPath(privateKeyPath) {\n this.state.privateKeyPath = privateKeyPath;\n return this;\n }\n \n getCertificatePath() {\n return this.state.certificatePath;\n }\n \n setCertificatePath(certificatePath) {\n this.state.certificatePath = certificatePath;\n return this;\n }\n \n getCertificateAuthorityFile() {\n return this.state.certificateAuthorityFile;\n }\n \n setCertificateAuthorityFile(certificateAuthorityFile) {\n this.state.certificateAuthorityFile = certificateAuthorityFile;\n return this;\n }\n \n getAllowedFingerprints() {\n return this.state.allowedFingerprints;\n }\n \n setAllowedFingerprints(allowedFingerprints) {\n this.state.allowedFingerprints = allowedFingerprints;\n return this;\n }\n \n getAllowAnyCert() {\n return this.state.allowAnyCert;\n }\n \n setAllowAnyCert(allowAnyCert) {\n this.state.allowAnyCert = allowAnyCert;\n return this;\n }\n}\n\nmodule.exports = SslOptions;","/**\n * Run a task in a fixed period loop.\n */\nclass TaskLooper {\n \n /**\n * Build the looper with a function to invoke on a fixed period loop.\n * \n * @param {function} task - the task function to invoke\n */\n constructor(task) {\n this._task = task;\n }\n\n /**\n * Get the task function to invoke on a fixed period loop.\n * \n * @return {function} the task function\n */\n getTask() {\n return this._task;\n }\n \n /**\n * Start the task loop.\n * \n * @param {int} periodInMs the loop period in milliseconds\n * @return {TaskLooper} this class for chaining\n */\n start(periodInMs) {\n this._periodInMs = periodInMs;\n if (this._isStarted) return this;\n this._isStarted = true;\n \n // start looping\n this._runLoop();\n return this;\n }\n\n /**\n * Indicates if looping.\n * \n * @return {boolean} true if looping, false otherwise\n */\n isStarted() {\n return this._isStarted;\n }\n \n /**\n * Stop the task loop.\n */\n stop() {\n this._isStarted = false;\n }\n \n /**\n * Set the loop period in milliseconds.\n * \n * @param {int} periodInMs the loop period in milliseconds\n */\n setPeriodInMs(periodInMs) {\n this._periodInMs = periodInMs;\n }\n \n async _runLoop() {\n if (this._isLooping) return;\n this._isLooping = true;\n let that = this;\n while (this._isStarted) {\n let startTime = Date.now();\n await this._task();\n if (this._isStarted) await new Promise(function(resolve) { setTimeout(resolve, that._periodInMs - (Date.now() - startTime)); });\n }\n this._isLooping = false;\n }\n}\n\nmodule.exports = TaskLooper;","const GenUtils = require(\"./GenUtils\");\n\n/**\n * Simple thread pool using the async library.\n */\nclass ThreadPool {\n \n /**\n * Construct the thread pool.\n * \n * @param {int} maxConcurrency - maximum number of threads in the pool (default 1)\n */\n constructor(maxConcurrency) {\n if (maxConcurrency === undefined) maxConcurrency = 1;\n if (maxConcurrency < 1) throw new Error(\"Max concurrency must be greater than or equal to 1\");\n \n // manager concurrency with async queue\n const async = require(\"async\");\n this.taskQueue = async.queue(function(asyncFn, callback) {\n if (asyncFn.then) asyncFn.then(resp => { callback(resp); }).catch(err => { callback(undefined, err); });\n else asyncFn().then(resp => { callback(resp); }).catch(err => { callback(undefined, err); });\n }, maxConcurrency);\n \n // use drain listeners to support await all\n let that = this;\n this.drainListeners = [];\n this.taskQueue.drain = function() {\n for (let listener of that.drainListeners) listener();\n }\n }\n \n /**\n * Submit an asynchronous function to run using the thread pool.\n * \n * @param {function} asyncFn - asynchronous function to run with the thread pool\n * @return {Promise} resolves when the function completes execution\n */\n async submit(asyncFn) {\n let that = this;\n return new Promise(function(resolve, reject) {\n that.taskQueue.push(asyncFn, function(resp, err) {\n if (err !== undefined) reject(err);\n else resolve(resp);\n });\n });\n }\n \n /**\n * Await all functions to complete.\n * \n * @return {Promise} resolves when all functions complete\n */\n async awaitAll() {\n if (this.taskQueue.length === 0) return;\n let that = this;\n return new Promise(function(resolve) {\n that.drainListeners.push(function() {\n GenUtils.remove(that.drainListeners, this);\n resolve();\n })\n });\n }\n}\n\nmodule.exports = ThreadPool;","/*\n\tJavaScript BigInteger library version 0.9.1\n\thttp://silentmatt.com/biginteger/\n\n\tCopyright (c) 2009 Matthew Crumley \n\tCopyright (c) 2010,2011 by John Tobey \n\tLicensed under the MIT license.\n\n\tSupport for arbitrary internal representation base was added by\n\tVitaly Magerya.\n*/\n/*\n\nThis file has been modified by Paul Shapiro:\n\n1. to bring in the function lowVal which was written by Lucas Jones\n2. to expose CONSTRUCT\n\n*/\n/*\n\tFile: biginteger.js\n\n\tExports:\n\n\t\t\n*/\n(function(exports) {\n\"use strict\";\n/*\n\tClass: BigInteger\n\tAn arbitrarily-large integer.\n\n\t objects should be considered immutable. None of the \"built-in\"\n\tmethods modify *this* or their arguments. All properties should be\n\tconsidered private.\n\n\tAll the methods of instances can be called \"statically\". The\n\tstatic versions are convenient if you don't already have a \n\tobject.\n\n\tAs an example, these calls are equivalent.\n\n\t> BigInteger(4).multiply(5); // returns BigInteger(20);\n\t> BigInteger.multiply(4, 5); // returns BigInteger(20);\n\n\t> var a = 42;\n\t> var a = BigInteger.toJSValue(\"0b101010\"); // Not completely useless...\n*/\n\nvar CONSTRUCT = {}; // Unique token to call \"private\" version of constructor\n\n/*\n\tConstructor: BigInteger()\n\tConvert a value to a .\n\n\tAlthough is the constructor for objects, it is\n\tbest not to call it as a constructor. If *n* is a object, it is\n\tsimply returned as-is. Otherwise, is equivalent to \n\twithout a radix argument.\n\n\t> var n0 = BigInteger();\t // Same as \n\t> var n1 = BigInteger(\"123\"); // Create a new with value 123\n\t> var n2 = BigInteger(123); // Create a new with value 123\n\t> var n3 = BigInteger(n2);\t// Return n2, unchanged\n\n\tThe constructor form only takes an array and a sign. *n* must be an\n\tarray of numbers in little-endian order, where each digit is between 0\n\tand BigInteger.base. The second parameter sets the sign: -1 for\n\tnegative, +1 for positive, or 0 for zero. The array is *not copied and\n\tmay be modified*. If the array contains only zeros, the sign parameter\n\tis ignored and is forced to zero.\n\n\t> new BigInteger([5], -1): create a new BigInteger with value -5\n\n\tParameters:\n\n\t\tn - Value to convert to a .\n\n\tReturns:\n\n\t\tA value.\n\n\tSee Also:\n\n\t\t, \n*/\nfunction BigInteger(n, s, token) {\n\tif (token !== CONSTRUCT) {\n\t\tif (n instanceof BigInteger) {\n\t\t\treturn n;\n\t\t}\n\t\telse if (typeof n === \"undefined\") {\n\t\t\treturn ZERO;\n\t\t}\n\t\treturn BigInteger.parse(n);\n\t}\n\n\tn = n || []; // Provide the nullary constructor for subclasses.\n\twhile (n.length && !n[n.length - 1]) {\n\t\t--n.length;\n\t}\n\tthis._d = n;\n\tthis._s = n.length ? (s || 1) : 0;\n}\nBigInteger.CONSTRUCT = CONSTRUCT; // added by PS to actually use the constructor\n\nBigInteger._construct = function(n, s) {\n\treturn new BigInteger(n, s, CONSTRUCT);\n};\n\n// Base-10 speedup hacks in parse, toString, exp10 and log functions\n// require base to be a power of 10. 10^7 is the largest such power\n// that won't cause a precision loss when digits are multiplied.\nvar BigInteger_base = 10000000;\nvar BigInteger_base_log10 = 7;\n\nBigInteger.base = BigInteger_base;\nBigInteger.base_log10 = BigInteger_base_log10;\n\nvar ZERO = new BigInteger([], 0, CONSTRUCT);\n// Constant: ZERO\n// 0.\nBigInteger.ZERO = ZERO;\n\nvar ONE = new BigInteger([1], 1, CONSTRUCT);\n// Constant: ONE\n// 1.\nBigInteger.ONE = ONE;\n\nvar M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);\n// Constant: M_ONE\n// -1.\nBigInteger.M_ONE = M_ONE;\n\n// Constant: _0\n// Shortcut for .\nBigInteger._0 = ZERO;\n\n// Constant: _1\n// Shortcut for .\nBigInteger._1 = ONE;\n\n/*\n\tConstant: small\n\tArray of from 0 to 36.\n\n\tThese are used internally for parsing, but useful when you need a \"small\"\n\t.\n\n\tSee Also:\n\n\t\t, , <_0>, <_1>\n*/\nBigInteger.small = [\n\tZERO,\n\tONE,\n\t/* Assuming BigInteger_base > 36 */\n\tnew BigInteger( [2], 1, CONSTRUCT),\n\tnew BigInteger( [3], 1, CONSTRUCT),\n\tnew BigInteger( [4], 1, CONSTRUCT),\n\tnew BigInteger( [5], 1, CONSTRUCT),\n\tnew BigInteger( [6], 1, CONSTRUCT),\n\tnew BigInteger( [7], 1, CONSTRUCT),\n\tnew BigInteger( [8], 1, CONSTRUCT),\n\tnew BigInteger( [9], 1, CONSTRUCT),\n\tnew BigInteger([10], 1, CONSTRUCT),\n\tnew BigInteger([11], 1, CONSTRUCT),\n\tnew BigInteger([12], 1, CONSTRUCT),\n\tnew BigInteger([13], 1, CONSTRUCT),\n\tnew BigInteger([14], 1, CONSTRUCT),\n\tnew BigInteger([15], 1, CONSTRUCT),\n\tnew BigInteger([16], 1, CONSTRUCT),\n\tnew BigInteger([17], 1, CONSTRUCT),\n\tnew BigInteger([18], 1, CONSTRUCT),\n\tnew BigInteger([19], 1, CONSTRUCT),\n\tnew BigInteger([20], 1, CONSTRUCT),\n\tnew BigInteger([21], 1, CONSTRUCT),\n\tnew BigInteger([22], 1, CONSTRUCT),\n\tnew BigInteger([23], 1, CONSTRUCT),\n\tnew BigInteger([24], 1, CONSTRUCT),\n\tnew BigInteger([25], 1, CONSTRUCT),\n\tnew BigInteger([26], 1, CONSTRUCT),\n\tnew BigInteger([27], 1, CONSTRUCT),\n\tnew BigInteger([28], 1, CONSTRUCT),\n\tnew BigInteger([29], 1, CONSTRUCT),\n\tnew BigInteger([30], 1, CONSTRUCT),\n\tnew BigInteger([31], 1, CONSTRUCT),\n\tnew BigInteger([32], 1, CONSTRUCT),\n\tnew BigInteger([33], 1, CONSTRUCT),\n\tnew BigInteger([34], 1, CONSTRUCT),\n\tnew BigInteger([35], 1, CONSTRUCT),\n\tnew BigInteger([36], 1, CONSTRUCT)\n];\n\n// Used for parsing/radix conversion\nBigInteger.digits = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\");\n\n/*\n\tMethod: toString\n\tConvert a to a string.\n\n\tWhen *base* is greater than 10, letters are upper case.\n\n\tParameters:\n\n\t\tbase - Optional base to represent the number in (default is base 10).\n\t\t\t Must be between 2 and 36 inclusive, or an Error will be thrown.\n\n\tReturns:\n\n\t\tThe string representation of the .\n*/\nBigInteger.prototype.toString = function(base) {\n\tbase = +base || 10;\n\tif (base < 2 || base > 36) {\n\t\tthrow new Error(\"illegal radix \" + base + \".\");\n\t}\n\tif (this._s === 0) {\n\t\treturn \"0\";\n\t}\n\tif (base === 10) {\n\t\tvar str = this._s < 0 ? \"-\" : \"\";\n\t\tstr += this._d[this._d.length - 1].toString();\n\t\tfor (var i = this._d.length - 2; i >= 0; i--) {\n\t\t\tvar group = this._d[i].toString();\n\t\t\twhile (group.length < BigInteger_base_log10) group = '0' + group;\n\t\t\tstr += group;\n\t\t}\n\t\treturn str;\n\t}\n\telse {\n\t\tvar numerals = BigInteger.digits;\n\t\tbase = BigInteger.small[base];\n\t\tvar sign = this._s;\n\n\t\tvar n = this.abs();\n\t\tvar digits = [];\n\t\tvar digit;\n\n\t\twhile (n._s !== 0) {\n\t\t\tvar divmod = n.divRem(base);\n\t\t\tn = divmod[0];\n\t\t\tdigit = divmod[1];\n\t\t\t// TODO: This could be changed to unshift instead of reversing at the end.\n\t\t\t// Benchmark both to compare speeds.\n\t\t\tdigits.push(numerals[digit.valueOf()]);\n\t\t}\n\t\treturn (sign < 0 ? \"-\" : \"\") + digits.reverse().join(\"\");\n\t}\n};\n\n// Verify strings for parsing\nBigInteger.radixRegex = [\n\t/^$/,\n\t/^$/,\n\t/^[01]*$/,\n\t/^[012]*$/,\n\t/^[0-3]*$/,\n\t/^[0-4]*$/,\n\t/^[0-5]*$/,\n\t/^[0-6]*$/,\n\t/^[0-7]*$/,\n\t/^[0-8]*$/,\n\t/^[0-9]*$/,\n\t/^[0-9aA]*$/,\n\t/^[0-9abAB]*$/,\n\t/^[0-9abcABC]*$/,\n\t/^[0-9a-dA-D]*$/,\n\t/^[0-9a-eA-E]*$/,\n\t/^[0-9a-fA-F]*$/,\n\t/^[0-9a-gA-G]*$/,\n\t/^[0-9a-hA-H]*$/,\n\t/^[0-9a-iA-I]*$/,\n\t/^[0-9a-jA-J]*$/,\n\t/^[0-9a-kA-K]*$/,\n\t/^[0-9a-lA-L]*$/,\n\t/^[0-9a-mA-M]*$/,\n\t/^[0-9a-nA-N]*$/,\n\t/^[0-9a-oA-O]*$/,\n\t/^[0-9a-pA-P]*$/,\n\t/^[0-9a-qA-Q]*$/,\n\t/^[0-9a-rA-R]*$/,\n\t/^[0-9a-sA-S]*$/,\n\t/^[0-9a-tA-T]*$/,\n\t/^[0-9a-uA-U]*$/,\n\t/^[0-9a-vA-V]*$/,\n\t/^[0-9a-wA-W]*$/,\n\t/^[0-9a-xA-X]*$/,\n\t/^[0-9a-yA-Y]*$/,\n\t/^[0-9a-zA-Z]*$/\n];\n\n/*\n\tFunction: parse\n\tParse a string into a .\n\n\t*base* is optional but, if provided, must be from 2 to 36 inclusive. If\n\t*base* is not provided, it will be guessed based on the leading characters\n\tof *s* as follows:\n\n\t- \"0x\" or \"0X\": *base* = 16\n\t- \"0c\" or \"0C\": *base* = 8\n\t- \"0b\" or \"0B\": *base* = 2\n\t- else: *base* = 10\n\n\tIf no base is provided, or *base* is 10, the number can be in exponential\n\tform. For example, these are all valid:\n\n\t> BigInteger.parse(\"1e9\");\t\t\t // Same as \"1000000000\"\n\t> BigInteger.parse(\"1.234*10^3\");\t // Same as 1234\n\t> BigInteger.parse(\"56789 * 10 ** -2\"); // Same as 567\n\n\tIf any characters fall outside the range defined by the radix, an exception\n\twill be thrown.\n\n\tParameters:\n\n\t\ts - The string to parse.\n\t\tbase - Optional radix (default is to guess based on *s*).\n\n\tReturns:\n\n\t\ta instance.\n*/\nBigInteger.parse = function(s, base) {\n\t// Expands a number in exponential form to decimal form.\n\t// expandExponential(\"-13.441*10^5\") === \"1344100\";\n\t// expandExponential(\"1.12300e-1\") === \"0.112300\";\n\t// expandExponential(1000000000000000000000000000000) === \"1000000000000000000000000000000\";\n\tfunction expandExponential(str) {\n\t\tstr = str.replace(/\\s*[*xX]\\s*10\\s*(\\^|\\*\\*)\\s*/, \"e\");\n\n\t\treturn str.replace(/^([+\\-])?(\\d+)\\.?(\\d*)[eE]([+\\-]?\\d+)$/, function(x, s, n, f, c) {\n\t\t\tc = +c;\n\t\t\tvar l = c < 0;\n\t\t\tvar i = n.length + c;\n\t\t\tx = (l ? n : f).length;\n\t\t\tc = ((c = Math.abs(c)) >= x ? c - x + l : 0);\n\t\t\tvar z = (new Array(c + 1)).join(\"0\");\n\t\t\tvar r = n + f;\n\t\t\treturn (s || \"\") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? \".\" + r.substr(i) : \"\");\n\t\t});\n\t}\n\n\ts = s.toString();\n\tif (typeof base === \"undefined\" || +base === 10) {\n\t\ts = expandExponential(s);\n\t}\n\n\tvar prefixRE;\n\tif (typeof base === \"undefined\") {\n\t\tprefixRE = '0[xcb]';\n\t}\n\telse if (base == 16) {\n\t\tprefixRE = '0x';\n\t}\n\telse if (base == 8) {\n\t\tprefixRE = '0c';\n\t}\n\telse if (base == 2) {\n\t\tprefixRE = '0b';\n\t}\n\telse {\n\t\tprefixRE = '';\n\t}\n\tvar parts = new RegExp('^([+\\\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\\\.\\\\d*)?$', 'i').exec(s);\n\tif (parts) {\n\t\tvar sign = parts[1] || \"+\";\n\t\tvar baseSection = parts[2] || \"\";\n\t\tvar digits = parts[3] || \"\";\n\n\t\tif (typeof base === \"undefined\") {\n\t\t\t// Guess base\n\t\t\tif (baseSection === \"0x\" || baseSection === \"0X\") { // Hex\n\t\t\t\tbase = 16;\n\t\t\t}\n\t\t\telse if (baseSection === \"0c\" || baseSection === \"0C\") { // Octal\n\t\t\t\tbase = 8;\n\t\t\t}\n\t\t\telse if (baseSection === \"0b\" || baseSection === \"0B\") { // Binary\n\t\t\t\tbase = 2;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbase = 10;\n\t\t\t}\n\t\t}\n\t\telse if (base < 2 || base > 36) {\n\t\t\tthrow new Error(\"Illegal radix \" + base + \".\");\n\t\t}\n\n\t\tbase = +base;\n\n\t\t// Check for digits outside the range\n\t\tif (!(BigInteger.radixRegex[base].test(digits))) {\n\t\t\tthrow new Error(\"Bad digit for radix \" + base);\n\t\t}\n\n\t\t// Strip leading zeros, and convert to array\n\t\tdigits = digits.replace(/^0+/, \"\").split(\"\");\n\t\tif (digits.length === 0) {\n\t\t\treturn ZERO;\n\t\t}\n\n\t\t// Get the sign (we know it's not zero)\n\t\tsign = (sign === \"-\") ? -1 : 1;\n\n\t\t// Optimize 10\n\t\tif (base == 10) {\n\t\t\tvar d = [];\n\t\t\twhile (digits.length >= BigInteger_base_log10) {\n\t\t\t\td.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));\n\t\t\t}\n\t\t\td.push(parseInt(digits.join(''), 10));\n\t\t\treturn new BigInteger(d, sign, CONSTRUCT);\n\t\t}\n\n\t\t// Do the conversion\n\t\tvar d = ZERO;\n\t\tbase = BigInteger.small[base];\n\t\tvar small = BigInteger.small;\n\t\tfor (var i = 0; i < digits.length; i++) {\n\t\t\td = d.multiply(base).add(small[parseInt(digits[i], 36)]);\n\t\t}\n\t\treturn new BigInteger(d._d, sign, CONSTRUCT);\n\t}\n\telse {\n\t\tthrow new Error(\"Invalid BigInteger format: \" + s);\n\t}\n};\n\n/*\n\tFunction: add\n\tAdd two .\n\n\tParameters:\n\n\t\tn - The number to add to *this*. Will be converted to a .\n\n\tReturns:\n\n\t\tThe numbers added together.\n\n\tSee Also:\n\n\t\t, , , \n*/\nBigInteger.prototype.add = function(n) {\n\tif (this._s === 0) {\n\t\treturn BigInteger(n);\n\t}\n\n\tn = BigInteger(n);\n\tif (n._s === 0) {\n\t\treturn this;\n\t}\n\tif (this._s !== n._s) {\n\t\tn = n.negate();\n\t\treturn this.subtract(n);\n\t}\n\n\tvar a = this._d;\n\tvar b = n._d;\n\tvar al = a.length;\n\tvar bl = b.length;\n\tvar sum = new Array(Math.max(al, bl) + 1);\n\tvar size = Math.min(al, bl);\n\tvar carry = 0;\n\tvar digit;\n\n\tfor (var i = 0; i < size; i++) {\n\t\tdigit = a[i] + b[i] + carry;\n\t\tsum[i] = digit % BigInteger_base;\n\t\tcarry = (digit / BigInteger_base) | 0;\n\t}\n\tif (bl > al) {\n\t\ta = b;\n\t\tal = bl;\n\t}\n\tfor (i = size; carry && i < al; i++) {\n\t\tdigit = a[i] + carry;\n\t\tsum[i] = digit % BigInteger_base;\n\t\tcarry = (digit / BigInteger_base) | 0;\n\t}\n\tif (carry) {\n\t\tsum[i] = carry;\n\t}\n\n\tfor ( ; i < al; i++) {\n\t\tsum[i] = a[i];\n\t}\n\n\treturn new BigInteger(sum, this._s, CONSTRUCT);\n};\n\n/*\n\tFunction: negate\n\tGet the additive inverse of a .\n\n\tReturns:\n\n\t\tA with the same magnatude, but with the opposite sign.\n\n\tSee Also:\n\n\t\t\n*/\nBigInteger.prototype.negate = function() {\n\treturn new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);\n};\n\n/*\n\tFunction: abs\n\tGet the absolute value of a .\n\n\tReturns:\n\n\t\tA with the same magnatude, but always positive (or zero).\n\n\tSee Also:\n\n\t\t\n*/\nBigInteger.prototype.abs = function() {\n\treturn (this._s < 0) ? this.negate() : this;\n};\n\n/*\n\tFunction: subtract\n\tSubtract two .\n\n\tParameters:\n\n\t\tn - The number to subtract from *this*. Will be converted to a .\n\n\tReturns:\n\n\t\tThe *n* subtracted from *this*.\n\n\tSee Also:\n\n\t\t, , , \n*/\nBigInteger.prototype.subtract = function(n) {\n\tif (this._s === 0) {\n\t\treturn BigInteger(n).negate();\n\t}\n\n\tn = BigInteger(n);\n\tif (n._s === 0) {\n\t\treturn this;\n\t}\n\tif (this._s !== n._s) {\n\t\tn = n.negate();\n\t\treturn this.add(n);\n\t}\n\n\tvar m = this;\n\t// negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|\n\tif (this._s < 0) {\n\t\tm = new BigInteger(n._d, 1, CONSTRUCT);\n\t\tn = new BigInteger(this._d, 1, CONSTRUCT);\n\t}\n\n\t// Both are positive => a - b\n\tvar sign = m.compareAbs(n);\n\tif (sign === 0) {\n\t\treturn ZERO;\n\t}\n\telse if (sign < 0) {\n\t\t// swap m and n\n\t\tvar t = n;\n\t\tn = m;\n\t\tm = t;\n\t}\n\n\t// a > b\n\tvar a = m._d;\n\tvar b = n._d;\n\tvar al = a.length;\n\tvar bl = b.length;\n\tvar diff = new Array(al); // al >= bl since a > b\n\tvar borrow = 0;\n\tvar i;\n\tvar digit;\n\n\tfor (i = 0; i < bl; i++) {\n\t\tdigit = a[i] - borrow - b[i];\n\t\tif (digit < 0) {\n\t\t\tdigit += BigInteger_base;\n\t\t\tborrow = 1;\n\t\t}\n\t\telse {\n\t\t\tborrow = 0;\n\t\t}\n\t\tdiff[i] = digit;\n\t}\n\tfor (i = bl; i < al; i++) {\n\t\tdigit = a[i] - borrow;\n\t\tif (digit < 0) {\n\t\t\tdigit += BigInteger_base;\n\t\t}\n\t\telse {\n\t\t\tdiff[i++] = digit;\n\t\t\tbreak;\n\t\t}\n\t\tdiff[i] = digit;\n\t}\n\tfor ( ; i < al; i++) {\n\t\tdiff[i] = a[i];\n\t}\n\n\treturn new BigInteger(diff, sign, CONSTRUCT);\n};\n\n(function() {\n\tfunction addOne(n, sign) {\n\t\tvar a = n._d;\n\t\tvar sum = a.slice();\n\t\tvar carry = true;\n\t\tvar i = 0;\n\n\t\twhile (true) {\n\t\t\tvar digit = (a[i] || 0) + 1;\n\t\t\tsum[i] = digit % BigInteger_base;\n\t\t\tif (digit <= BigInteger_base - 1) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t++i;\n\t\t}\n\n\t\treturn new BigInteger(sum, sign, CONSTRUCT);\n\t}\n\n\tfunction subtractOne(n, sign) {\n\t\tvar a = n._d;\n\t\tvar sum = a.slice();\n\t\tvar borrow = true;\n\t\tvar i = 0;\n\n\t\twhile (true) {\n\t\t\tvar digit = (a[i] || 0) - 1;\n\t\t\tif (digit < 0) {\n\t\t\t\tsum[i] = digit + BigInteger_base;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsum[i] = digit;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t++i;\n\t\t}\n\n\t\treturn new BigInteger(sum, sign, CONSTRUCT);\n\t}\n\n\t/*\n\t\tFunction: next\n\t\tGet the next (add one).\n\n\t\tReturns:\n\n\t\t\t*this* + 1.\n\n\t\tSee Also:\n\n\t\t\t, \n\t*/\n\tBigInteger.prototype.next = function() {\n\t\tswitch (this._s) {\n\t\tcase 0:\n\t\t\treturn ONE;\n\t\tcase -1:\n\t\t\treturn subtractOne(this, -1);\n\t\t// case 1:\n\t\tdefault:\n\t\t\treturn addOne(this, 1);\n\t\t}\n\t};\n\n\t/*\n\t\tFunction: prev\n\t\tGet the previous (subtract one).\n\n\t\tReturns:\n\n\t\t\t*this* - 1.\n\n\t\tSee Also:\n\n\t\t\t, \n\t*/\n\tBigInteger.prototype.prev = function() {\n\t\tswitch (this._s) {\n\t\tcase 0:\n\t\t\treturn M_ONE;\n\t\tcase -1:\n\t\t\treturn addOne(this, -1);\n\t\t// case 1:\n\t\tdefault:\n\t\t\treturn subtractOne(this, 1);\n\t\t}\n\t};\n})();\n\n/*\n\tFunction: compareAbs\n\tCompare the absolute value of two .\n\n\tCalling is faster than calling twice, then .\n\n\tParameters:\n\n\t\tn - The number to compare to *this*. Will be converted to a .\n\n\tReturns:\n\n\t\t-1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.\n\n\tSee Also:\n\n\t\t, \n*/\nBigInteger.prototype.compareAbs = function(n) {\n\tif (this === n) {\n\t\treturn 0;\n\t}\n\n\tif (!(n instanceof BigInteger)) {\n\t\tif (!isFinite(n)) {\n\t\t\treturn(isNaN(n) ? n : -1);\n\t\t}\n\t\tn = BigInteger(n);\n\t}\n\n\tif (this._s === 0) {\n\t\treturn (n._s !== 0) ? -1 : 0;\n\t}\n\tif (n._s === 0) {\n\t\treturn 1;\n\t}\n\n\tvar l = this._d.length;\n\tvar nl = n._d.length;\n\tif (l < nl) {\n\t\treturn -1;\n\t}\n\telse if (l > nl) {\n\t\treturn 1;\n\t}\n\n\tvar a = this._d;\n\tvar b = n._d;\n\tfor (var i = l-1; i >= 0; i--) {\n\t\tif (a[i] !== b[i]) {\n\t\t\treturn a[i] < b[i] ? -1 : 1;\n\t\t}\n\t}\n\n\treturn 0;\n};\n\n/*\n\tFunction: compare\n\tCompare two .\n\n\tParameters:\n\n\t\tn - The number to compare to *this*. Will be converted to a .\n\n\tReturns:\n\n\t\t-1, 0, or +1 if *this* is less than, equal to, or greater than *n*.\n\n\tSee Also:\n\n\t\t, , , \n*/\nBigInteger.prototype.compare = function(n) {\n\tif (this === n) {\n\t\treturn 0;\n\t}\n\n\tn = BigInteger(n);\n\n\tif (this._s === 0) {\n\t\treturn -n._s;\n\t}\n\n\tif (this._s === n._s) { // both positive or both negative\n\t\tvar cmp = this.compareAbs(n);\n\t\treturn cmp * this._s;\n\t}\n\telse {\n\t\treturn this._s;\n\t}\n};\n\n/*\n\tFunction: isUnit\n\tReturn true iff *this* is either 1 or -1.\n\n\tReturns:\n\n\t\ttrue if *this* compares equal to or .\n\n\tSee Also:\n\n\t\t, , , , ,\n\t\t, \n*/\nBigInteger.prototype.isUnit = function() {\n\treturn this === ONE ||\n\t\tthis === M_ONE ||\n\t\t(this._d.length === 1 && this._d[0] === 1);\n};\n\n/*\n\tFunction: multiply\n\tMultiply two .\n\n\tParameters:\n\n\t\tn - The number to multiply *this* by. Will be converted to a\n\t\t.\n\n\tReturns:\n\n\t\tThe numbers multiplied together.\n\n\tSee Also:\n\n\t\t, , , \n*/\nBigInteger.prototype.multiply = function(n) {\n\t// TODO: Consider adding Karatsuba multiplication for large numbers\n\tif (this._s === 0) {\n\t\treturn ZERO;\n\t}\n\n\tn = BigInteger(n);\n\tif (n._s === 0) {\n\t\treturn ZERO;\n\t}\n\tif (this.isUnit()) {\n\t\tif (this._s < 0) {\n\t\t\treturn n.negate();\n\t\t}\n\t\treturn n;\n\t}\n\tif (n.isUnit()) {\n\t\tif (n._s < 0) {\n\t\t\treturn this.negate();\n\t\t}\n\t\treturn this;\n\t}\n\tif (this === n) {\n\t\treturn this.square();\n\t}\n\n\tvar r = (this._d.length >= n._d.length);\n\tvar a = (r ? this : n)._d; // a will be longer than b\n\tvar b = (r ? n : this)._d;\n\tvar al = a.length;\n\tvar bl = b.length;\n\n\tvar pl = al + bl;\n\tvar partial = new Array(pl);\n\tvar i;\n\tfor (i = 0; i < pl; i++) {\n\t\tpartial[i] = 0;\n\t}\n\n\tfor (i = 0; i < bl; i++) {\n\t\tvar carry = 0;\n\t\tvar bi = b[i];\n\t\tvar jlimit = al + i;\n\t\tvar digit;\n\t\tfor (var j = i; j < jlimit; j++) {\n\t\t\tdigit = partial[j] + bi * a[j - i] + carry;\n\t\t\tcarry = (digit / BigInteger_base) | 0;\n\t\t\tpartial[j] = (digit % BigInteger_base) | 0;\n\t\t}\n\t\tif (carry) {\n\t\t\tdigit = partial[j] + carry;\n\t\t\tcarry = (digit / BigInteger_base) | 0;\n\t\t\tpartial[j] = digit % BigInteger_base;\n\t\t}\n\t}\n\treturn new BigInteger(partial, this._s * n._s, CONSTRUCT);\n};\n\n// Multiply a BigInteger by a single-digit native number\n// Assumes that this and n are >= 0\n// This is not really intended to be used outside the library itself\nBigInteger.prototype.multiplySingleDigit = function(n) {\n\tif (n === 0 || this._s === 0) {\n\t\treturn ZERO;\n\t}\n\tif (n === 1) {\n\t\treturn this;\n\t}\n\n\tvar digit;\n\tif (this._d.length === 1) {\n\t\tdigit = this._d[0] * n;\n\t\tif (digit >= BigInteger_base) {\n\t\t\treturn new BigInteger([(digit % BigInteger_base)|0,\n\t\t\t\t\t(digit / BigInteger_base)|0], 1, CONSTRUCT);\n\t\t}\n\t\treturn new BigInteger([digit], 1, CONSTRUCT);\n\t}\n\n\tif (n === 2) {\n\t\treturn this.add(this);\n\t}\n\tif (this.isUnit()) {\n\t\treturn new BigInteger([n], 1, CONSTRUCT);\n\t}\n\n\tvar a = this._d;\n\tvar al = a.length;\n\n\tvar pl = al + 1;\n\tvar partial = new Array(pl);\n\tfor (var i = 0; i < pl; i++) {\n\t\tpartial[i] = 0;\n\t}\n\n\tvar carry = 0;\n\tfor (var j = 0; j < al; j++) {\n\t\tdigit = n * a[j] + carry;\n\t\tcarry = (digit / BigInteger_base) | 0;\n\t\tpartial[j] = (digit % BigInteger_base) | 0;\n\t}\n\tif (carry) {\n\t\tpartial[j] = carry;\n\t}\n\n\treturn new BigInteger(partial, 1, CONSTRUCT);\n};\n\n/*\n\tFunction: square\n\tMultiply a by itself.\n\n\tThis is slightly faster than regular multiplication, since it removes the\n\tduplicated multiplcations.\n\n\tReturns:\n\n\t\t> this.multiply(this)\n\n\tSee Also:\n\t\t\n*/\nBigInteger.prototype.square = function() {\n\t// Normally, squaring a 10-digit number would take 100 multiplications.\n\t// Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.\n\t// This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).\n\t// Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org\n\n\tif (this._s === 0) {\n\t\treturn ZERO;\n\t}\n\tif (this.isUnit()) {\n\t\treturn ONE;\n\t}\n\n\tvar digits = this._d;\n\tvar length = digits.length;\n\tvar imult1 = new Array(length + length + 1);\n\tvar product, carry, k;\n\tvar i;\n\n\t// Calculate diagonal\n\tfor (i = 0; i < length; i++) {\n\t\tk = i * 2;\n\t\tproduct = digits[i] * digits[i];\n\t\tcarry = (product / BigInteger_base) | 0;\n\t\timult1[k] = product % BigInteger_base;\n\t\timult1[k + 1] = carry;\n\t}\n\n\t// Calculate repeating part\n\tfor (i = 0; i < length; i++) {\n\t\tcarry = 0;\n\t\tk = i * 2 + 1;\n\t\tfor (var j = i + 1; j < length; j++, k++) {\n\t\t\tproduct = digits[j] * digits[i] * 2 + imult1[k] + carry;\n\t\t\tcarry = (product / BigInteger_base) | 0;\n\t\t\timult1[k] = product % BigInteger_base;\n\t\t}\n\t\tk = length + i;\n\t\tvar digit = carry + imult1[k];\n\t\tcarry = (digit / BigInteger_base) | 0;\n\t\timult1[k] = digit % BigInteger_base;\n\t\timult1[k + 1] += carry;\n\t}\n\n\treturn new BigInteger(imult1, 1, CONSTRUCT);\n};\n\n/*\n\tFunction: quotient\n\tDivide two and truncate towards zero.\n\n\t throws an exception if *n* is zero.\n\n\tParameters:\n\n\t\tn - The number to divide *this* by. Will be converted to a .\n\n\tReturns:\n\n\t\tThe *this* / *n*, truncated to an integer.\n\n\tSee Also:\n\n\t\t, , , , \n*/\nBigInteger.prototype.quotient = function(n) {\n\treturn this.divRem(n)[0];\n};\n\n/*\n\tFunction: divide\n\tDeprecated synonym for .\n*/\nBigInteger.prototype.divide = BigInteger.prototype.quotient;\n\n/*\n\tFunction: remainder\n\tCalculate the remainder of two .\n\n\t throws an exception if *n* is zero.\n\n\tParameters:\n\n\t\tn - The remainder after *this* is divided *this* by *n*. Will be\n\t\t\tconverted to a .\n\n\tReturns:\n\n\t\t*this* % *n*.\n\n\tSee Also:\n\n\t\t, \n*/\nBigInteger.prototype.remainder = function(n) {\n\treturn this.divRem(n)[1];\n};\n\n/*\n\tFunction: divRem\n\tCalculate the integer quotient and remainder of two .\n\n\t throws an exception if *n* is zero.\n\n\tParameters:\n\n\t\tn - The number to divide *this* by. Will be converted to a .\n\n\tReturns:\n\n\t\tA two-element array containing the quotient and the remainder.\n\n\t\t> a.divRem(b)\n\n\t\tis exactly equivalent to\n\n\t\t> [a.quotient(b), a.remainder(b)]\n\n\t\texcept it is faster, because they are calculated at the same time.\n\n\tSee Also:\n\n\t\t, \n*/\nBigInteger.prototype.divRem = function(n) {\n\tn = BigInteger(n);\n\tif (n._s === 0) {\n\t\tthrow new Error(\"Divide by zero\");\n\t}\n\tif (this._s === 0) {\n\t\treturn [ZERO, ZERO];\n\t}\n\tif (n._d.length === 1) {\n\t\treturn this.divRemSmall(n._s * n._d[0]);\n\t}\n\n\t// Test for easy cases -- |n1| <= |n2|\n\tswitch (this.compareAbs(n)) {\n\tcase 0: // n1 == n2\n\t\treturn [this._s === n._s ? ONE : M_ONE, ZERO];\n\tcase -1: // |n1| < |n2|\n\t\treturn [ZERO, this];\n\t}\n\n\tvar sign = this._s * n._s;\n\tvar a = n.abs();\n\tvar b_digits = this._d;\n\tvar b_index = b_digits.length;\n\tvar digits = n._d.length;\n\tvar quot = [];\n\tvar guess;\n\n\tvar part = new BigInteger([], 0, CONSTRUCT);\n\n\twhile (b_index) {\n\t\tpart._d.unshift(b_digits[--b_index]);\n\t\tpart = new BigInteger(part._d, 1, CONSTRUCT);\n\n\t\tif (part.compareAbs(n) < 0) {\n\t\t\tquot.push(0);\n\t\t\tcontinue;\n\t\t}\n\t\tif (part._s === 0) {\n\t\t\tguess = 0;\n\t\t}\n\t\telse {\n\t\t\tvar xlen = part._d.length, ylen = a._d.length;\n\t\t\tvar highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];\n\t\t\tvar highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];\n\t\t\tif (part._d.length > a._d.length) {\n\t\t\t\t// The length of part._d can either match a._d length,\n\t\t\t\t// or exceed it by one.\n\t\t\t\thighx = (highx+1)*BigInteger_base;\n\t\t\t}\n\t\t\tguess = Math.ceil(highx/highy);\n\t\t}\n\t\tdo {\n\t\t\tvar check = a.multiplySingleDigit(guess);\n\t\t\tif (check.compareAbs(part) <= 0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tguess--;\n\t\t} while (guess);\n\n\t\tquot.push(guess);\n\t\tif (!guess) {\n\t\t\tcontinue;\n\t\t}\n\t\tvar diff = part.subtract(check);\n\t\tpart._d = diff._d.slice();\n\t}\n\n\treturn [new BigInteger(quot.reverse(), sign, CONSTRUCT),\n\t\t new BigInteger(part._d, this._s, CONSTRUCT)];\n};\n\n// Throws an exception if n is outside of (-BigInteger.base, -1] or\n// [1, BigInteger.base). It's not necessary to call this, since the\n// other division functions will call it if they are able to.\nBigInteger.prototype.divRemSmall = function(n) {\n\tvar r;\n\tn = +n;\n\tif (n === 0) {\n\t\tthrow new Error(\"Divide by zero\");\n\t}\n\n\tvar n_s = n < 0 ? -1 : 1;\n\tvar sign = this._s * n_s;\n\tn = Math.abs(n);\n\n\tif (n < 1 || n >= BigInteger_base) {\n\t\tthrow new Error(\"Argument out of range\");\n\t}\n\n\tif (this._s === 0) {\n\t\treturn [ZERO, ZERO];\n\t}\n\n\tif (n === 1 || n === -1) {\n\t\treturn [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];\n\t}\n\n\t// 2 <= n < BigInteger_base\n\n\t// divide a single digit by a single digit\n\tif (this._d.length === 1) {\n\t\tvar q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);\n\t\tr = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);\n\t\tif (sign < 0) {\n\t\t\tq = q.negate();\n\t\t}\n\t\tif (this._s < 0) {\n\t\t\tr = r.negate();\n\t\t}\n\t\treturn [q, r];\n\t}\n\n\tvar digits = this._d.slice();\n\tvar quot = new Array(digits.length);\n\tvar part = 0;\n\tvar diff = 0;\n\tvar i = 0;\n\tvar guess;\n\n\twhile (digits.length) {\n\t\tpart = part * BigInteger_base + digits[digits.length - 1];\n\t\tif (part < n) {\n\t\t\tquot[i++] = 0;\n\t\t\tdigits.pop();\n\t\t\tdiff = BigInteger_base * diff + part;\n\t\t\tcontinue;\n\t\t}\n\t\tif (part === 0) {\n\t\t\tguess = 0;\n\t\t}\n\t\telse {\n\t\t\tguess = (part / n) | 0;\n\t\t}\n\n\t\tvar check = n * guess;\n\t\tdiff = part - check;\n\t\tquot[i++] = guess;\n\t\tif (!guess) {\n\t\t\tdigits.pop();\n\t\t\tcontinue;\n\t\t}\n\n\t\tdigits.pop();\n\t\tpart = diff;\n\t}\n\n\tr = new BigInteger([diff], 1, CONSTRUCT);\n\tif (this._s < 0) {\n\t\tr = r.negate();\n\t}\n\treturn [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];\n};\n\n/*\n\tFunction: isEven\n\tReturn true iff *this* is divisible by two.\n\n\tNote that is even.\n\n\tReturns:\n\n\t\ttrue if *this* is even, false otherwise.\n\n\tSee Also:\n\n\t\t\n*/\nBigInteger.prototype.isEven = function() {\n\tvar digits = this._d;\n\treturn this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;\n};\n\n/*\n\tFunction: isOdd\n\tReturn true iff *this* is not divisible by two.\n\n\tReturns:\n\n\t\ttrue if *this* is odd, false otherwise.\n\n\tSee Also:\n\n\t\t\n*/\nBigInteger.prototype.isOdd = function() {\n\treturn !this.isEven();\n};\n\n/*\n\tFunction: sign\n\tGet the sign of a .\n\n\tReturns:\n\n\t\t* -1 if *this* < 0\n\t\t* 0 if *this* == 0\n\t\t* +1 if *this* > 0\n\n\tSee Also:\n\n\t\t, , , , \n*/\nBigInteger.prototype.sign = function() {\n\treturn this._s;\n};\n\n/*\n\tFunction: isPositive\n\tReturn true iff *this* > 0.\n\n\tReturns:\n\n\t\ttrue if *this*.compare() == 1.\n\n\tSee Also:\n\n\t\t, , , , , \n*/\nBigInteger.prototype.isPositive = function() {\n\treturn this._s > 0;\n};\n\n/*\n\tFunction: isNegative\n\tReturn true iff *this* < 0.\n\n\tReturns:\n\n\t\ttrue if *this*.compare() == -1.\n\n\tSee Also:\n\n\t\t, , , , , \n*/\nBigInteger.prototype.isNegative = function() {\n\treturn this._s < 0;\n};\n\n/*\n\tFunction: isZero\n\tReturn true iff *this* == 0.\n\n\tReturns:\n\n\t\ttrue if *this*.compare() == 0.\n\n\tSee Also:\n\n\t\t, , , , \n*/\nBigInteger.prototype.isZero = function() {\n\treturn this._s === 0;\n};\n\n/*\n\tFunction: exp10\n\tMultiply a by a power of 10.\n\n\tThis is equivalent to, but faster than\n\n\t> if (n >= 0) {\n\t>\t return this.multiply(BigInteger(\"1e\" + n));\n\t> }\n\t> else { // n <= 0\n\t>\t return this.quotient(BigInteger(\"1e\" + -n));\n\t> }\n\n\tParameters:\n\n\t\tn - The power of 10 to multiply *this* by. *n* is converted to a\n\t\tjavascipt number and must be no greater than \n\t\t(0x7FFFFFFF), or an exception will be thrown.\n\n\tReturns:\n\n\t\t*this* * (10 ** *n*), truncated to an integer if necessary.\n\n\tSee Also:\n\n\t\t, \n*/\nBigInteger.prototype.exp10 = function(n) {\n\tn = +n;\n\tif (n === 0) {\n\t\treturn this;\n\t}\n\tif (Math.abs(n) > Number(MAX_EXP)) {\n\t\tthrow new Error(\"exponent too large in BigInteger.exp10\");\n\t}\n\t// Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case\n\tif (this._s === 0) {\n\t\treturn ZERO;\n\t}\n\tif (n > 0) {\n\t\tvar k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);\n\n\t\tfor (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {\n\t\t\tk._d.unshift(0);\n\t\t}\n\t\tif (n == 0)\n\t\t\treturn k;\n\t\tk._s = 1;\n\t\tk = k.multiplySingleDigit(Math.pow(10, n));\n\t\treturn (this._s < 0 ? k.negate() : k);\n\t} else if (-n >= this._d.length*BigInteger_base_log10) {\n\t\treturn ZERO;\n\t} else {\n\t\tvar k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);\n\n\t\tfor (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {\n\t\t\tk._d.shift();\n\t\t}\n\t\treturn (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];\n\t}\n};\n\n/*\n\tFunction: pow\n\tRaise a to a power.\n\n\tIn this implementation, 0**0 is 1.\n\n\tParameters:\n\n\t\tn - The exponent to raise *this* by. *n* must be no greater than\n\t\t (0x7FFFFFFF), or an exception will be thrown.\n\n\tReturns:\n\n\t\t*this* raised to the *nth* power.\n\n\tSee Also:\n\n\t\t\n*/\nBigInteger.prototype.pow = function(n) {\n\tif (this.isUnit()) {\n\t\tif (this._s > 0) {\n\t\t\treturn this;\n\t\t}\n\t\telse {\n\t\t\treturn BigInteger(n).isOdd() ? this : this.negate();\n\t\t}\n\t}\n\n\tn = BigInteger(n);\n\tif (n._s === 0) {\n\t\treturn ONE;\n\t}\n\telse if (n._s < 0) {\n\t\tif (this._s === 0) {\n\t\t\tthrow new Error(\"Divide by zero\");\n\t\t}\n\t\telse {\n\t\t\treturn ZERO;\n\t\t}\n\t}\n\tif (this._s === 0) {\n\t\treturn ZERO;\n\t}\n\tif (n.isUnit()) {\n\t\treturn this;\n\t}\n\n\tif (n.compareAbs(MAX_EXP) > 0) {\n\t\tthrow new Error(\"exponent too large in BigInteger.pow\");\n\t}\n\tvar x = this;\n\tvar aux = ONE;\n\tvar two = BigInteger.small[2];\n\n\twhile (n.isPositive()) {\n\t\tif (n.isOdd()) {\n\t\t\taux = aux.multiply(x);\n\t\t\tif (n.isUnit()) {\n\t\t\t\treturn aux;\n\t\t\t}\n\t\t}\n\t\tx = x.square();\n\t\tn = n.quotient(two);\n\t}\n\n\treturn aux;\n};\n\n/*\n\tFunction: modPow\n\tRaise a to a power (mod m).\n\n\tBecause it is reduced by a modulus, is not limited by\n\t like .\n\n\tParameters:\n\n\t\texponent - The exponent to raise *this* by. Must be positive.\n\t\tmodulus - The modulus.\n\n\tReturns:\n\n\t\t*this* ^ *exponent* (mod *modulus*).\n\n\tSee Also:\n\n\t\t, \n*/\nBigInteger.prototype.modPow = function(exponent, modulus) {\n\tvar result = ONE;\n\tvar base = this;\n\n\twhile (exponent.isPositive()) {\n\t\tif (exponent.isOdd()) {\n\t\t\tresult = result.multiply(base).remainder(modulus);\n\t\t}\n\n\t\texponent = exponent.quotient(BigInteger.small[2]);\n\t\tif (exponent.isPositive()) {\n\t\t\tbase = base.square().remainder(modulus);\n\t\t}\n\t}\n\n\treturn result;\n};\n\n/*\n\tFunction: log\n\tGet the natural logarithm of a as a native JavaScript number.\n\n\tThis is equivalent to\n\n\t> Math.log(this.toJSValue())\n\n\tbut handles values outside of the native number range.\n\n\tReturns:\n\n\t\tlog( *this* )\n\n\tSee Also:\n\n\t\t\n*/\nBigInteger.prototype.log = function() {\n\tswitch (this._s) {\n\tcase 0:\t return -Infinity;\n\tcase -1: return NaN;\n\tdefault: // Fall through.\n\t}\n\n\tvar l = this._d.length;\n\n\tif (l*BigInteger_base_log10 < 30) {\n\t\treturn Math.log(this.valueOf());\n\t}\n\n\tvar N = Math.ceil(30/BigInteger_base_log10);\n\tvar firstNdigits = this._d.slice(l - N);\n\treturn Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);\n};\n\n/*\n\tFunction: valueOf\n\tConvert a to a native JavaScript integer.\n\n\tThis is called automatically by JavaScipt to convert a to a\n\tnative value.\n\n\tReturns:\n\n\t\t> parseInt(this.toString(), 10)\n\n\tSee Also:\n\n\t\t, \n*/\nBigInteger.prototype.valueOf = function() {\n\treturn parseInt(this.toString(), 10);\n};\n\n/*\n\tFunction: toJSValue\n\tConvert a to a native JavaScript integer.\n\n\tThis is the same as valueOf, but more explicitly named.\n\n\tReturns:\n\n\t\t> parseInt(this.toString(), 10)\n\n\tSee Also:\n\n\t\t, \n*/\nBigInteger.prototype.toJSValue = function() {\n\treturn parseInt(this.toString(), 10);\n};\n\n/*\n\tFunction: lowVal\n\tAuthor: Lucas Jones\n*/\nBigInteger.prototype.lowVal = function () {\n\treturn this._d[0] || 0;\n};\n\nvar MAX_EXP = BigInteger(0x7FFFFFFF);\n// Constant: MAX_EXP\n// The largest exponent allowed in and (0x7FFFFFFF or 2147483647).\nBigInteger.MAX_EXP = MAX_EXP;\n\n(function() {\n\tfunction makeUnary(fn) {\n\t\treturn function(a) {\n\t\t\treturn fn.call(BigInteger(a));\n\t\t};\n\t}\n\n\tfunction makeBinary(fn) {\n\t\treturn function(a, b) {\n\t\t\treturn fn.call(BigInteger(a), BigInteger(b));\n\t\t};\n\t}\n\n\tfunction makeTrinary(fn) {\n\t\treturn function(a, b, c) {\n\t\t\treturn fn.call(BigInteger(a), BigInteger(b), BigInteger(c));\n\t\t};\n\t}\n\n\t(function() {\n\t\tvar i, fn;\n\t\tvar unary = \"toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log\".split(\",\");\n\t\tvar binary = \"compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs\".split(\",\");\n\t\tvar trinary = [\"modPow\"];\n\n\t\tfor (i = 0; i < unary.length; i++) {\n\t\t\tfn = unary[i];\n\t\t\tBigInteger[fn] = makeUnary(BigInteger.prototype[fn]);\n\t\t}\n\n\t\tfor (i = 0; i < binary.length; i++) {\n\t\t\tfn = binary[i];\n\t\t\tBigInteger[fn] = makeBinary(BigInteger.prototype[fn]);\n\t\t}\n\n\t\tfor (i = 0; i < trinary.length; i++) {\n\t\t\tfn = trinary[i];\n\t\t\tBigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);\n\t\t}\n\n\t\tBigInteger.exp10 = function(x, n) {\n\t\t\treturn BigInteger(x).exp10(n);\n\t\t};\n\t})();\n})();\n\nexports.BigInteger = BigInteger;\n})(typeof exports !== 'undefined' ? exports : this);","const MoneroError = require(\"../common/MoneroError\");\n\n/**\n * Copyright (c) woodser\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/**\n * Monero daemon interface and default implementations.\n * \n * @interface\n */\nclass MoneroDaemon {\n \n /**\n * Register a listener to receive daemon notifications.\n * \n * @param {MoneroDaemonListener} listener - listener to receive daemon notifications\n */\n async addListener(listener) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Unregister a listener to receive daemon notifications.\n * \n * @param {MoneroDaemonListener} listener - listener to unregister\n */\n async removeListener(listener) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get the listeners registered with the daemon.\n * \n * @return {MoneroDaemonListener[]} the registered listeners\n */\n getListeners() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Indicates if the client is connected to the daemon via RPC.\n * \n * @return {boolean} true if the client is connected to the daemon, false otherwise\n */\n async isConnected() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Gets the version of the daemon.\n * \n * @return {MoneroVersion} the version of the daemon\n */\n async getVersion() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Indicates if the daemon is trusted xor untrusted.\n * \n * @return {boolean} true if the daemon is trusted, false otherwise\n */\n async isTrusted() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get the number of blocks in the longest chain known to the node.\n * \n * @return {int} the number of blocks\n */\n async getHeight() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a block's hash by its height.\n * \n * @param {int} height - height of the block hash to get\n * @return {string} the block's hash at the given height\n */\n async getBlockHash(height) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a block template for mining a new block.\n * \n * @param {string} walletAddress - address of the wallet to receive miner transactions if block is successfully mined\n * @param {int} reserveSize - reserve size (optional)\n * @return {MoneroBlockTemplate} is a block template for mining a new block\n */\n async getBlockTemplate(walletAddress, reserveSize) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get the last block's header.\n * \n * @return {MoneroBlockHeader} last block's header\n */\n async getLastBlockHeader() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a block header by its hash.\n * \n * @param {string} blockHash - hash of the block to get the header of\n * @return {MoneroBlockHeader} block's header\n */\n async getBlockHeaderByHash(blockHash) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a block header by its height.\n * \n * @param {int} height - height of the block to get the header of\n * @return {MoneroBlockHeader} block's header\n */\n async getBlockHeaderByHeight(height) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get block headers for the given range.\n * \n * @param {int} startHeight - start height lower bound inclusive (optional)\n * @param {int} endHeight - end height upper bound inclusive (optional)\n * @return {MoneroBlockHeader[]} for the given range\n */\n async getBlockHeadersByRange(startHeight, endHeight) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a block by hash.\n * \n * @param {string} blockHash - hash of the block to get\n * @return {MoneroBlock} with the given hash\n */\n async getBlockByHash(blockHash) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get blocks by hash.\n * \n * @param {string[]} blockHashes - array of hashes; first 10 blocks hashes goes sequential,\n * next goes in pow(2,n) offset, like 2, 4, 8, 16, 32, 64 and so on,\n * and the last one is always genesis block\n * @param {int} startHeight - start height to get blocks by hash\n * @param {boolean} prune - specifies if returned blocks should be pruned (defaults to false) // TODO: test default\n * @return {MoneroBlock[]} retrieved blocks\n */\n async getBlocksByHash(blockHashes, startHeight, prune) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a block by height.\n * \n * @param {int} height - height of the block to get\n * @return {MoneroBlock} with the given height\n */\n async getBlockByHeight(height) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get blocks at the given heights.\n * \n * @param {int[]} heights - heights of the blocks to get\n * @return {MoneroBlock[]} are blocks at the given heights\n */\n async getBlocksByHeight(heights) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get blocks in the given height range.\n * \n * @param {int} startHeight - start height lower bound inclusive (optional)\n * @param {int} endHeight - end height upper bound inclusive (optional)\n * @return {MoneroBlock[]} are blocks in the given height range\n */\n async getBlocksByRange(startHeight, endHeight) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get blocks in the given height range as chunked requests so that each request is\n * not too big.\n * \n * @param {int} startHeight - start height lower bound inclusive (optional)\n * @param {int} endHeight - end height upper bound inclusive (optional)\n * @param {int} maxChunkSize - maximum chunk size in any one request (default 3,000,000 bytes)\n * @return {MoneroBlock[]} blocks in the given height range\n */\n async getBlocksByRangeChunked(startHeight, endHeight, maxChunkSize) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get block hashes as a binary request to the daemon.\n * \n * @param {string[]} blockHashes - specify block hashes to fetch; first 10 blocks hash goes\n * sequential, next goes in pow(2,n) offset, like 2, 4, 8, 16, 32, 64\n * and so on, and the last one is always genesis block\n * @param {int} startHeight - starting height of block hashes to return\n * @return {string[]} requested block hashes \n */\n async getBlockHashes(blockHashes, startHeight) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a transaction by hash.\n * \n * @param {string} txHash - hash of the transaction to get\n * @param {boolean} prune - specifies if the returned tx should be pruned (defaults to false)\n * @return {MoneroTx} transaction with the given hash or undefined if not found\n */\n async getTx(txHash, prune = false) {\n return (await this.getTxs([txHash], prune))[0];\n }\n \n /**\n * Get transactions by hashes.\n * \n * @param {string[]} txHashes - hashes of transactions to get\n * @param {boolean} prune - specifies if the returned txs should be pruned (defaults to false)\n * @return {MoneroTx[]} found transactions with the given hashes\n */\n async getTxs(txHashes, prune = false) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a transaction hex by hash.\n * \n * @param {string} txHash - hash of the transaction to get hex from\n * @param {boolean} prune - specifies if the returned tx hex should be pruned (defaults to false)\n * @return {string} tx hex with the given hash\n */\n async getTxHex(txHash, prune = false) {\n return (await this.getTxHexes([txHash], prune))[0];\n }\n \n /**\n * Get transaction hexes by hashes.\n * \n * @param {string[]} txHashes - hashes of transactions to get hexes from\n * @param {boolean} prune - specifies if the returned tx hexes should be pruned (defaults to false)\n * @return {string[]} tx hexes\n */\n async getTxHexes(txHashes, prune = false) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Gets the total emissions and fees from the genesis block to the current height.\n * \n * @param {int} height - height to start computing the miner sum\n * @param {int} numBlocks - number of blocks to include in the sum\n * @return {MoneroMinerTxSum} encapsulates the total emissions and fees since the genesis block\n */\n async getMinerTxSum(height, numBlocks) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get mining fee estimates per kB.\n * \n * @param {number} graceBlocks TODO\n * @return {MoneroFeeEstimate} mining fee estimates per kB\n */\n async getFeeEstimate(graceBlocks) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Submits a transaction to the daemon's pool.\n * \n * @param {string} txHex - raw transaction hex to submit\n * @param {boolean} doNotRelay specifies if the tx should be relayed (optional)\n * @return {MoneroSubmitTxResult} contains submission results\n */\n async submitTxHex(txHex, doNotRelay) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Relays a transaction by hash.\n * \n * @param {string} txHash - hash of the transaction to relay\n */\n async relayTxByHash(txHash) {\n const assert = require(\"assert\");\n assert.equal(typeof txHash, \"string\", \"Must provide a transaction hash\");\n await this.relayTxsByHash([txHash]);\n }\n \n /**\n * Relays transactions by hash.\n * \n * @param {string[]} txHashes - hashes of the transactinos to relay\n */\n async relayTxsByHash(txHashes) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get valid transactions seen by the node but not yet mined into a block, as well\n * as spent key image information for the tx pool.\n * \n * @return {MoneroTx[]} are transactions in the transaction pool\n */\n async getTxPool() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get hashes of transactions in the transaction pool.\n * \n * @return {string[]} are hashes of transactions in the transaction pool\n */\n async getTxPoolHashes() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get all transaction pool backlog.\n * \n * @return {MoneroTxBacklogEntry[]} backlog entries \n */\n async getTxPoolBacklog() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get transaction pool statistics.\n * \n * @return {MoneroTxPoolStats} contains statistics about the transaction pool\n */\n async getTxPoolStats() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Flush transactions from the tx pool.\n * \n * @param {(string|string[])} hashes - specific transactions to flush (defaults to all)\n */\n async flushTxPool(hashes) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get the spent status of the given key image.\n * \n * @param {string} keyImage - key image hex to get the status of\n * @return {MoneroKeyImageSpentStatus} status of the key image\n */\n async getKeyImageSpentStatus(keyImage) {\n return (await this.getKeyImageSpentStatuses([keyImage]))[0];\n }\n \n /**\n * Get the spent status of each given key image.\n * \n * @param {string[]} keyImages are hex key images to get the statuses of\n * @return {MoneroKeyImageSpentStatus[]} status for each key image\n */\n async getKeyImageSpentStatuses(keyImages) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get outputs identified by a list of output amounts and indices as a binary\n * request.\n * \n * @param {MoneroOutput[]} outputs - identify each output by amount and index\n * @return {MoneroOutput[]} identified outputs\n */\n async getOutputs(outputs) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get a histogram of output amounts. For all amounts (possibly filtered by\n * parameters), gives the number of outputs on the chain for that amount.\n * RingCT outputs counts as 0 amount.\n * \n * @param {BigInteger[]} amounts - amounts of outputs to make the histogram with\n * @param {int} minCount - TODO\n * @param {int} maxCount - TODO\n * @param {boolean} isUnlocked - makes a histogram with outputs with the specified lock state\n * @param {int} recentCutoff - TODO\n * @return {MoneroOutputHistogramEntry[]} are entries meeting the parameters\n */\n async getOutputHistogram(amounts, minCount, maxCount, isUnlocked, recentCutoff) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Creates an output distribution.\n * \n * @param {BigInteger[]} amounts - amounts of outputs to make the distribution with\n * @param {boolean} cumulative - specifies if the results should be cumulative (defaults to TODO)\n * @param {int} startHeight - start height lower bound inclusive (optional)\n * @param {int} endHeight - end height upper bound inclusive (optional)\n * @return {MoneroOutputDistributionEntry[]} are entries meeting the parameters\n */\n async getOutputDistribution(amounts, cumulative, startHeight, endHeight) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get general information about the state of the node and the network.\n * \n * @return {MoneroDaemonInfo} is general information about the node and network\n */\n async getInfo() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get synchronization information.\n * \n * @return {MoneroDaemonSyncInfo} contains sync information\n */\n async getSyncInfo() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Look up information regarding hard fork voting and readiness.\n * \n * @return {MoneroHardForkInfo} contains hard fork information\n */\n async getHardForkInfo() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get alternative chains seen by the node.\n * \n * @return {MoneroAltChain[]} alternative chains\n */\n async getAltChains() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get known block hashes which are not on the main chain.\n * \n * @return {string[]} known block hashes which are not on the main chain\n */\n async getAltBlockHashes() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get the download bandwidth limit.\n * \n * @return {int} download bandwidth limit\n */\n async getDownloadLimit() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Set the download bandwidth limit.\n * \n * @param {int} limit - download limit to set (-1 to reset to default)\n * @return {int} new download limit after setting\n */\n async setDownloadLimit(limit) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Reset the download bandwidth limit.\n * \n * @return {int} download bandwidth limit after resetting\n */\n async resetDownloadLimit() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get the upload bandwidth limit.\n * \n * @return {int} upload bandwidth limit\n */\n async getUploadLimit() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Set the upload bandwidth limit.\n * \n * @param limit - upload limit to set (-1 to reset to default)\n * @return {int} new upload limit after setting\n */\n async setUploadLimit(limit) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Reset the upload bandwidth limit.\n * \n * @return {int} upload bandwidth limit after resetting\n */\n async resetUploadLimit() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get peers with active incoming or outgoing connections to the node.\n * \n * @return {MoneroPeer[]} the daemon's peers\n */\n async getPeers() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get known peers including their last known online status.\n * \n * @return {MoneroPeer[]} the daemon's known peers\n */\n async getKnownPeers() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Limit number of outgoing peers.\n * \n * @param {int} limit - maximum number of outgoing peers\n */\n async setOutgoingPeerLimit(limit) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Limit number of incoming peers.\n * \n * @param {int} limit - maximum number of incoming peers\n */\n async setIncomingPeerLimit(limit) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get peer bans.\n * \n * @return {MoneroBan[]} entries about banned peers\n */\n async getPeerBans() {\n throw new MoneroError(\"Subclass must implement\");\n }\n\n /**\n * Ban a peer node.\n * \n * @param {MoneroBan} ban - contains information about a node to ban\n */\n async setPeerBan(ban) {\n return await this.setPeerBans([ban]);\n }\n \n /**\n * Ban peers nodes.\n * \n * @param {MoneroBan[]} bans - specify which peers to ban\n */\n async setPeerBans(bans) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Start mining.\n * \n * @param {string} address - address given miner rewards if the daemon mines a block\n * @param {integer} numThreads - number of mining threads to run\n * @param {boolean} isBackground - specifies if the miner should run in the background or not\n * @param {boolean} ignoreBattery - specifies if the battery state (e.g. on laptop) should be ignored or not\n */\n async startMining(address, numThreads, isBackground, ignoreBattery) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Stop mining.\n */\n async stopMining() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get the daemon's mining status.\n * \n * @return {MoneroMiningStatus} daemon's mining status\n */\n async getMiningStatus() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Submit a mined block to the network.\n * \n * @param {string} blockBlob - mined block to submit\n */\n async submitBlock(blockBlob) {\n await this.submitBlocks([blockBlob]);\n }\n\n /**\n * Prune the blockchain.\n * \n * @param {boolean} check specifies to check the pruning (default false)\n * @return {MoneroPruneResult} the prune result\n */\n async pruneBlockchain(check) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Submit mined blocks to the network.\n * \n * @param {string[]} blockBlobs - mined blocks to submit\n */\n async submitBlocks(blockBlobs) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Check for update.\n * \n * @return {MoneroDaemonUpdateCheckResult} the result\n */\n async checkForUpdate() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Download an update.\n * \n * @param {string} path - path to download the update (optional)\n * @return {MoneroDaemonUpdateDownloadResult} the result\n */\n async downloadUpdate(path) {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Safely disconnect and shut down the daemon.\n */\n async stop() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n /**\n * Get the header of the next block added to the chain.\n * \n * @return {MoneroBlockHeader} header of the next block added to the chain\n */\n async waitForNextBlockHeader() {\n throw new MoneroError(\"Subclass must implement\");\n }\n \n // ----------------------------- STATIC UTILITIES ---------------------------\n \n /**\n * Parses a network string to an enumerated type.\n * \n * @param {string} network - network string to parse\n * @return {MoneroNetworkType} enumerated network type\n */\n static parseNetworkType(network) {\n const MoneroNetworkType = require(\"./model/MoneroNetworkType\");\n if (network === \"mainnet\") return MoneroNetworkType.MAINNET;\n if (network === \"testnet\") return MoneroNetworkType.TESTNET;\n if (network === \"stagenet\") return MoneroNetworkType.STAGENET;\n throw new MoneroError(\"Invalid network type to parse: \" + network);\n }\n}\n\nmodule.exports = MoneroDaemon;","const assert = require(\"assert\");\nconst BigInteger = require(\"../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../common/GenUtils\");\nconst LibraryUtils = require(\"../common/LibraryUtils\");\nconst TaskLooper = require(\"../common/TaskLooper\");\nconst MoneroAltChain = require(\"./model/MoneroAltChain\");\nconst MoneroBan = require(\"./model/MoneroBan\");\nconst MoneroBlock = require(\"./model/MoneroBlock\");\nconst MoneroBlockHeader = require(\"./model/MoneroBlockHeader\");\nconst MoneroBlockTemplate = require(\"./model/MoneroBlockTemplate\");\nconst MoneroDaemon = require(\"./MoneroDaemon\");\nconst MoneroDaemonInfo = require(\"./model/MoneroDaemonInfo\");\nconst MoneroDaemonListener = require(\"./model/MoneroDaemonListener\");\nconst MoneroDaemonSyncInfo = require(\"./model/MoneroDaemonSyncInfo\");\nconst MoneroError = require(\"../common/MoneroError\");\nconst MoneroFeeEstimate = require(\"./model/MoneroFeeEstimate\");\nconst MoneroHardForkInfo = require(\"./model/MoneroHardForkInfo\");\nconst MoneroKeyImage = require(\"./model/MoneroKeyImage\");\nconst MoneroMinerTxSum = require(\"./model/MoneroMinerTxSum\");\nconst MoneroMiningStatus = require(\"./model/MoneroMiningStatus\");\nconst MoneroNetworkType = require(\"./model/MoneroNetworkType\");\nconst MoneroOutput = require(\"./model/MoneroOutput\");\nconst MoneroOutputHistogramEntry = require(\"./model/MoneroOutputHistogramEntry\");\nconst MoneroPeer = require(\"./model/MoneroPeer\");\nconst MoneroPruneResult = require(\"./model/MoneroPruneResult\");\nconst MoneroRpcConnection = require(\"../common/MoneroRpcConnection\");\nconst MoneroSubmitTxResult = require(\"./model/MoneroSubmitTxResult\");\nconst MoneroTx = require(\"./model/MoneroTx\");\nconst MoneroTxPoolStats = require(\"./model/MoneroTxPoolStats\");\nconst MoneroUtils = require(\"../common/MoneroUtils\");\nconst MoneroVersion = require(\"./model/MoneroVersion\");\n\n/**\n * Copyright (c) woodser\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/**\n * Implements a MoneroDaemon as a client of monerod.\n * \n * @implements {MoneroDaemon}\n * @hideconstructor\n */\nclass MoneroDaemonRpc extends MoneroDaemon {\n \n /**\n *

Construct a daemon RPC client (for internal use).

\n * \n * @param {string|object|MoneroRpcConnection} uriOrConfig - uri of monerod or JS config object or MoneroRpcConnection\n * @param {string} uriOrConfig.uri - uri of monerod\n * @param {string} uriOrConfig.username - username to authenticate with monerod (optional)\n * @param {string} uriOrConfig.password - password to authenticate with monerod (optional)\n * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {number} uriOrConfig.pollInterval - poll interval to query for updates in ms (default 5000)\n * @param {string} username - username to authenticate with monerod (optional)\n * @param {string} password - password to authenticate with monerod (optional)\n * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {number} pollInterval - poll interval to query for updates in ms (default 5000)\n * @param {boolean} proxyToWorker - runs the daemon client in a worker if true (default true)\n */\n constructor(uriOrConfig, username, password, rejectUnauthorized, pollInterval, proxyToWorker) {\n super();\n if (GenUtils.isArray(uriOrConfig)) throw new Error(\"Use monerojs.connectToDaemonRpc(...) to use terminal parameters\");\n this.config = MoneroDaemonRpc._normalizeConfig(uriOrConfig, username, password, rejectUnauthorized, pollInterval, proxyToWorker);\n if (this.config.proxyToWorker) throw new Error(\"Use monerojs.connectToDaemonRpc(...) to proxy to worker\");\n let rpcConfig = Object.assign({}, this.config);\n delete rpcConfig.proxyToWorker;\n delete rpcConfig.pollInterval;\n this.rpc = new MoneroRpcConnection(rpcConfig);\n this.listeners = []; // block listeners\n this.cachedHeaders = {}; // cached headers for fetching blocks in bound chunks\n }\n \n /**\n *

Create a client connected to monerod (for internal use).

\n * \n * @param {string|string[]|object|MoneroRpcConnection} uriOrConfig - uri of monerod or terminal parameters or JS config object or MoneroRpcConnection\n * @param {string} uriOrConfig.uri - uri of monerod\n * @param {string} uriOrConfig.username - username to authenticate with monerod (optional)\n * @param {string} uriOrConfig.password - password to authenticate with monerod (optional)\n * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {number} uriOrConfig.pollInterval - poll interval to query for updates in ms (default 5000)\n * @param {boolean} uriOrConfig.proxyToWorker - run the daemon client in a worker if true (default true)\n * @param {string} username - username to authenticate with monerod (optional)\n * @param {string} password - password to authenticate with monerod (optional)\n * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {number} pollInterval - poll interval to query for updates in ms (default 5000)\n * @param {boolean} proxyToWorker - runs the daemon client in a worker if true (default true)\n * @return {MoneroDaemonRpc} the daemon RPC client\n */\n static async _connectToDaemonRpc(uriOrConfig, username, password, rejectUnauthorized, pollInterval, proxyToWorker) {\n if (GenUtils.isArray(uriOrConfig)) return MoneroDaemonRpc._startMonerodProcess(uriOrConfig, rejectUnauthorized, pollInterval, proxyToWorker); // handle array as terminal command\n let config = MoneroDaemonRpc._normalizeConfig(uriOrConfig, username, password, rejectUnauthorized, pollInterval, proxyToWorker);\n if (config.proxyToWorker) return MoneroDaemonRpcProxy.connect(config);\n else return new MoneroDaemonRpc(config);\n }\n \n static async _startMonerodProcess(cmd, rejectUnauthorized, pollInterval, proxyToWorker) {\n assert(GenUtils.isArray(cmd), \"Must provide string array with command line parameters\");\n \n // start process\n this.process = require('child_process').spawn(cmd[0], cmd.slice(1), {});\n this.process.stdout.setEncoding('utf8');\n this.process.stderr.setEncoding('utf8');\n \n // return promise which resolves after starting monerod\n let uri;\n let that = this;\n let output = \"\";\n return new Promise(function(resolve, reject) {\n \n // handle stdout\n that.process.stdout.on('data', async function(data) {\n let line = data.toString();\n LibraryUtils.log(2, line);\n output += line + '\\n'; // capture output in case of error\n \n // extract uri from e.g. \"I Binding on 127.0.0.1 (IPv4):38085\"\n let uriLineContains = \"Binding on \";\n let uriLineContainsIdx = line.indexOf(uriLineContains);\n if (uriLineContainsIdx >= 0) {\n let host = line.substring(uriLineContainsIdx + uriLineContains.length, line.lastIndexOf(' '));\n let unformattedLine = line.replace(/\\u001b\\[.*?m/g, '').trim(); // remove color formatting\n let port = unformattedLine.substring(unformattedLine.lastIndexOf(':') + 1);\n let sslIdx = cmd.indexOf(\"--rpc-ssl\");\n let sslEnabled = sslIdx >= 0 ? \"enabled\" == cmd[sslIdx + 1].toLowerCase() : false;\n uri = (sslEnabled ? \"https\" : \"http\") + \"://\" + host + \":\" + port;\n }\n \n // read success message\n if (line.indexOf(\"core RPC server started ok\") >= 0) {\n \n // get username and password from params\n let userPassIdx = cmd.indexOf(\"--rpc-login\");\n let userPass = userPassIdx >= 0 ? cmd[userPassIdx + 1] : undefined;\n let username = userPass === undefined ? undefined : userPass.substring(0, userPass.indexOf(':'));\n let password = userPass === undefined ? undefined : userPass.substring(userPass.indexOf(':') + 1);\n \n // create client connected to internal process\n let daemon = await that._connectToDaemonRpc(uri, username, password, rejectUnauthorized, pollInterval, proxyToWorker);\n daemon.process = that.process;\n \n // resolve promise with client connected to internal process \n this.isResolved = true;\n resolve(daemon);\n }\n });\n \n // handle stderr\n that.process.stderr.on('data', function(data) {\n if (LibraryUtils.getLogLevel() >= 2) console.error(data);\n });\n \n // handle exit\n that.process.on(\"exit\", function(code) {\n if (!this.isResolved) reject(new Error(\"monerod process terminated with exit code \" + code + (output ? \":\\n\\n\" + output : \"\")));\n });\n \n // handle error\n that.process.on(\"error\", function(err) {\n if (err.message.indexOf(\"ENOENT\") >= 0) reject(new Error(\"monerod does not exist at path '\" + cmd[0] + \"'\"));\n if (!this.isResolved) reject(err);\n });\n \n // handle uncaught exception\n that.process.on(\"uncaughtException\", function(err, origin) {\n console.error(\"Uncaught exception in monerod process: \" + err.message);\n console.error(origin);\n reject(err);\n });\n });\n }\n \n /**\n * Get the internal process running monerod.\n * \n * @return the process running monerod, undefined if not created from new process\n */\n getProcess() {\n return this.process;\n }\n \n /**\n * Stop the internal process running monerod, if applicable.\n * \n * @param {boolean} force specifies if the process should be destroyed forcibly\n * @return {Promise} the exit code from stopping the process\n */\n async stopProcess(force) {\n if (this.process === undefined) throw new MoneroError(\"MoneroDaemonRpc instance not created from new process\");\n let listenersCopy = GenUtils.copyArray(this.getListeners());\n for (let listener of listenersCopy) await this.removeListener(listener);\n return GenUtils.killProcess(this.process, force ? \"sigkill\" : undefined);\n }\n \n async addListener(listener) {\n assert(listener instanceof MoneroDaemonListener, \"Listener must be instance of MoneroDaemonListener\");\n this.listeners.push(listener);\n this._refreshListening();\n }\n \n async removeListener(listener) {\n assert(listener instanceof MoneroDaemonListener, \"Listener must be instance of MoneroDaemonListener\");\n let idx = this.listeners.indexOf(listener);\n if (idx > -1) this.listeners.splice(idx, 1);\n else throw new MoneroError(\"Listener is not registered with daemon\");\n this._refreshListening();\n }\n \n getListeners() {\n return this.listeners;\n }\n \n /**\n * Get the daemon's RPC connection.\n * \n * @return {MoneroRpcConnection} the daemon's rpc connection\n */\n async getRpcConnection() {\n return this.rpc;\n }\n \n async isConnected() {\n try {\n await this.getVersion();\n return true;\n } catch (e) {\n return false;\n }\n }\n \n async getVersion() {\n let resp = await this.rpc.sendJsonRequest(\"get_version\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return new MoneroVersion(resp.result.version, resp.result.release);\n }\n \n async isTrusted() {\n let resp = await this.rpc.sendPathRequest(\"get_height\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n return !resp.untrusted;\n }\n \n async getHeight() {\n let resp = await this.rpc.sendJsonRequest(\"get_block_count\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return resp.result.count;\n }\n \n async getBlockHash(height) {\n return (await this.rpc.sendJsonRequest(\"on_get_block_hash\", [height])).result; // TODO monero-wallet-rpc: no status returned\n }\n \n async getBlockTemplate(walletAddress, reserveSize) {\n assert(walletAddress && typeof walletAddress === \"string\", \"Must specify wallet address to be mined to\");\n let resp = await this.rpc.sendJsonRequest(\"get_block_template\", {wallet_address: walletAddress, reserve_size: reserveSize});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcBlockTemplate(resp.result);\n }\n \n async getLastBlockHeader() {\n let resp = await this.rpc.sendJsonRequest(\"get_last_block_header\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcBlockHeader(resp.result.block_header);\n }\n \n async getBlockHeaderByHash(blockHash) {\n let resp = await this.rpc.sendJsonRequest(\"get_block_header_by_hash\", {hash: blockHash});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcBlockHeader(resp.result.block_header);\n }\n \n async getBlockHeaderByHeight(height) {\n let resp = await this.rpc.sendJsonRequest(\"get_block_header_by_height\", {height: height});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcBlockHeader(resp.result.block_header);\n }\n \n async getBlockHeadersByRange(startHeight, endHeight) {\n \n // fetch block headers\n let resp = await this.rpc.sendJsonRequest(\"get_block_headers_range\", {\n start_height: startHeight,\n end_height: endHeight\n });\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n \n // build headers\n let headers = [];\n for (let rpcHeader of resp.result.headers) {\n headers.push(MoneroDaemonRpc._convertRpcBlockHeader(rpcHeader));\n }\n return headers;\n }\n \n async getBlockByHash(blockHash) {\n let resp = await this.rpc.sendJsonRequest(\"get_block\", {hash: blockHash});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcBlock(resp.result);\n }\n \n async getBlockByHeight(height) {\n let resp = await this.rpc.sendJsonRequest(\"get_block\", {height: height});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcBlock(resp.result);\n }\n \n async getBlocksByHeight(heights) {\n \n // fetch blocks in binary\n let respBin = await this.rpc.sendBinaryRequest(\"get_blocks_by_height.bin\", {heights: heights});\n \n // convert binary blocks to json\n let rpcBlocks = await MoneroUtils.binaryBlocksToJson(respBin);\n MoneroDaemonRpc._checkResponseStatus(rpcBlocks);\n \n // build blocks with transactions\n assert.equal(rpcBlocks.txs.length, rpcBlocks.blocks.length); \n let blocks = [];\n for (let blockIdx = 0; blockIdx < rpcBlocks.blocks.length; blockIdx++) {\n \n // build block\n let block = MoneroDaemonRpc._convertRpcBlock(rpcBlocks.blocks[blockIdx]);\n block.setHeight(heights[blockIdx]);\n blocks.push(block);\n \n // build transactions\n let txs = [];\n for (let txIdx = 0; txIdx < rpcBlocks.txs[blockIdx].length; txIdx++) {\n let tx = new MoneroTx();\n txs.push(tx);\n tx.setHash(rpcBlocks.blocks[blockIdx].tx_hashes[txIdx]);\n tx.setIsConfirmed(true);\n tx.setInTxPool(false);\n tx.setIsMinerTx(false);\n tx.setRelay(true);\n tx.setIsRelayed(true);\n tx.setIsFailed(false);\n tx.setIsDoubleSpend(false);\n MoneroDaemonRpc._convertRpcTx(rpcBlocks.txs[blockIdx][txIdx], tx);\n }\n \n // merge into one block\n block.setTxs([]);\n for (let tx of txs) {\n if (tx.getBlock()) block.merge(tx.getBlock());\n else block.getTxs().push(tx.setBlock(block));\n }\n }\n \n return blocks;\n }\n \n async getBlocksByRange(startHeight, endHeight) {\n if (startHeight === undefined) startHeight = 0;\n if (endHeight === undefined) endHeight = await this.getHeight() - 1;\n let heights = [];\n for (let height = startHeight; height <= endHeight; height++) heights.push(height);\n return await this.getBlocksByHeight(heights);\n }\n \n async getBlocksByRangeChunked(startHeight, endHeight, maxChunkSize) {\n if (startHeight === undefined) startHeight = 0;\n if (endHeight === undefined) endHeight = await this.getHeight() - 1;\n let lastHeight = startHeight - 1;\n let blocks = [];\n while (lastHeight < endHeight) {\n for (let block of await this._getMaxBlocks(lastHeight + 1, endHeight, maxChunkSize)) {\n blocks.push(block);\n }\n lastHeight = blocks[blocks.length - 1].getHeight();\n }\n return blocks;\n }\n \n async getTxs(txHashes, prune) {\n \n // validate input\n assert(Array.isArray(txHashes) && txHashes.length > 0, \"Must provide an array of transaction hashes\");\n assert(prune === undefined || typeof prune === \"boolean\", \"Prune must be a boolean or undefined\");\n \n // fetch transactions\n let resp = await this.rpc.sendPathRequest(\"get_transactions\", {\n txs_hashes: txHashes,\n decode_as_json: true,\n prune: prune\n });\n try {\n MoneroDaemonRpc._checkResponseStatus(resp);\n } catch (e) {\n if (e.message.indexOf(\"Failed to parse hex representation of transaction hash\") >= 0) throw new MoneroError(\"Invalid transaction hash\");\n throw e;\n }\n \n // build transaction models\n let txs = [];\n if (resp.txs) {\n for (let txIdx = 0; txIdx < resp.txs.length; txIdx++) {\n let tx = new MoneroTx();\n tx.setIsMinerTx(false);\n txs.push(MoneroDaemonRpc._convertRpcTx(resp.txs[txIdx], tx));\n }\n }\n \n return txs;\n }\n \n async getTxHexes(txHashes, prune) {\n let hexes = [];\n for (let tx of await this.getTxs(txHashes, prune)) hexes.push(prune ? tx.getPrunedHex() : tx.getFullHex());\n return hexes;\n }\n \n async getMinerTxSum(height, numBlocks) {\n if (height === undefined) height = 0;\n else assert(height >= 0, \"Height must be an integer >= 0\");\n if (numBlocks === undefined) numBlocks = await this.getHeight();\n else assert(numBlocks >= 0, \"Count must be an integer >= 0\");\n let resp = await this.rpc.sendJsonRequest(\"get_coinbase_tx_sum\", {height: height, count: numBlocks});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n let txSum = new MoneroMinerTxSum();\n txSum.setEmissionSum(new BigInteger(resp.result.emission_amount));\n txSum.setFeeSum(new BigInteger(resp.result.fee_amount));\n return txSum;\n }\n \n async getFeeEstimate(graceBlocks) {\n let resp = await this.rpc.sendJsonRequest(\"get_fee_estimate\", {grace_blocks: graceBlocks});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n let feeEstimate = new MoneroFeeEstimate();\n feeEstimate.setFee(new BigInteger(resp.result.fee));\n let fees = [];\n for (let i = 0; i < resp.result.fees.length; i++) fees.push(new BigInteger(resp.result.fees[i]));\n feeEstimate.setFees(fees);\n feeEstimate.setQuantizationMask(new BigInteger(resp.result.quantization_mask));\n return feeEstimate;\n }\n \n async submitTxHex(txHex, doNotRelay) {\n let resp = await this.rpc.sendPathRequest(\"send_raw_transaction\", {tx_as_hex: txHex, do_not_relay: doNotRelay});\n let result = MoneroDaemonRpc._convertRpcSubmitTxResult(resp);\n \n // set isGood based on status\n try {\n MoneroDaemonRpc._checkResponseStatus(resp); \n result.setIsGood(true);\n } catch(e) {\n result.setIsGood(false);\n }\n return result;\n }\n \n async relayTxsByHash(txHashes) {\n let resp = await this.rpc.sendJsonRequest(\"relay_tx\", {txids: txHashes});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n }\n \n async getTxPool() {\n \n // send rpc request\n let resp = await this.rpc.sendPathRequest(\"get_transaction_pool\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n \n // build txs\n let txs = [];\n if (resp.transactions) {\n for (let rpcTx of resp.transactions) {\n let tx = new MoneroTx();\n txs.push(tx);\n tx.setIsConfirmed(false);\n tx.setIsMinerTx(false);\n tx.setInTxPool(true);\n tx.setNumConfirmations(0);\n MoneroDaemonRpc._convertRpcTx(rpcTx, tx);\n }\n }\n \n return txs;\n }\n \n async getTxPoolHashes() {\n throw new MoneroError(\"Not implemented\");\n }\n \n async getTxPoolBacklog() {\n throw new MoneroError(\"Not implemented\");\n }\n\n async getTxPoolStats() {\n let resp = await this.rpc.sendPathRequest(\"get_transaction_pool_stats\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n return MoneroDaemonRpc._convertRpcTxPoolStats(resp.pool_stats);\n }\n \n async flushTxPool(hashes) {\n if (hashes) hashes = GenUtils.listify(hashes);\n let resp = await this.rpc.sendJsonRequest(\"flush_txpool\", {txids: hashes});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n }\n \n async getKeyImageSpentStatuses(keyImages) {\n if (keyImages === undefined || keyImages.length === 0) throw new MoneroError(\"Must provide key images to check the status of\");\n let resp = await this.rpc.sendPathRequest(\"is_key_image_spent\", {key_images: keyImages});\n MoneroDaemonRpc._checkResponseStatus(resp);\n return resp.spent_status;\n }\n \n async getOutputHistogram(amounts, minCount, maxCount, isUnlocked, recentCutoff) {\n \n // send rpc request\n let resp = await this.rpc.sendJsonRequest(\"get_output_histogram\", {\n amounts: amounts,\n min_count: minCount,\n max_count: maxCount,\n unlocked: isUnlocked,\n recent_cutoff: recentCutoff\n });\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n \n // build histogram entries from response\n let entries = [];\n if (!resp.result.histogram) return entries;\n for (let rpcEntry of resp.result.histogram) {\n entries.push(MoneroDaemonRpc._convertRpcOutputHistogramEntry(rpcEntry));\n }\n return entries;\n }\n \n async getOutputDistribution(amounts, cumulative, startHeight, endHeight) {\n throw new MoneroError(\"Not implemented (response 'distribution' field is binary)\");\n \n// let amountStrs = [];\n// for (let amount of amounts) amountStrs.push(amount.toJSValue());\n// console.log(amountStrs);\n// console.log(cumulative);\n// console.log(startHeight);\n// console.log(endHeight);\n// \n// // send rpc request\n// console.log(\"*********** SENDING REQUEST *************\");\n// if (startHeight === undefined) startHeight = 0;\n// let resp = await this.rpc.sendJsonRequest(\"get_output_distribution\", {\n// amounts: amountStrs,\n// cumulative: cumulative,\n// from_height: startHeight,\n// to_height: endHeight\n// });\n// \n// console.log(\"RESPONSE\");\n// console.log(resp);\n// \n// // build distribution entries from response\n// let entries = [];\n// if (!resp.result.distributions) return entries; \n// for (let rpcEntry of resp.result.distributions) {\n// let entry = MoneroDaemonRpc._convertRpcOutputDistributionEntry(rpcEntry);\n// entries.push(entry);\n// }\n// return entries;\n }\n \n async getInfo() {\n let resp = await this.rpc.sendJsonRequest(\"get_info\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcInfo(resp.result);\n }\n \n async getSyncInfo() {\n let resp = await this.rpc.sendJsonRequest(\"sync_info\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcSyncInfo(resp.result);\n }\n \n async getHardForkInfo() {\n let resp = await this.rpc.sendJsonRequest(\"hard_fork_info\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n return MoneroDaemonRpc._convertRpcHardForkInfo(resp.result);\n }\n \n async getAltChains() {\n \n// // mocked response for test\n// let resp = {\n// status: \"OK\",\n// chains: [\n// {\n// block_hash: \"697cf03c89a9b118f7bdf11b1b3a6a028d7b3617d2d0ed91322c5709acf75625\",\n// difficulty: 14114729638300280,\n// height: 1562062,\n// length: 2\n// }\n// ]\n// }\n \n let resp = await this.rpc.sendJsonRequest(\"get_alternate_chains\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n let chains = [];\n if (!resp.result.chains) return chains;\n for (let rpcChain of resp.result.chains) chains.push(MoneroDaemonRpc._convertRpcAltChain(rpcChain));\n return chains;\n }\n \n async getAltBlockHashes() {\n \n// // mocked response for test\n// let resp = {\n// status: \"OK\",\n// untrusted: false,\n// blks_hashes: [\"9c2277c5470234be8b32382cdf8094a103aba4fcd5e875a6fc159dc2ec00e011\",\"637c0e0f0558e284493f38a5fcca3615db59458d90d3a5eff0a18ff59b83f46f\",\"6f3adc174a2e8082819ebb965c96a095e3e8b63929ad9be2d705ad9c086a6b1c\",\"697cf03c89a9b118f7bdf11b1b3a6a028d7b3617d2d0ed91322c5709acf75625\"]\n// }\n \n let resp = await this.rpc.sendPathRequest(\"get_alt_blocks_hashes\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n if (!resp.blks_hashes) return [];\n return resp.blks_hashes;\n }\n \n async getDownloadLimit() {\n return (await this._getBandwidthLimits())[0];\n }\n \n async setDownloadLimit(limit) {\n if (limit == -1) return await this.resetDownloadLimit();\n if (!(GenUtils.isInt(limit) && limit > 0)) throw new MoneroError(\"Download limit must be an integer greater than 0\");\n return (await this._setBandwidthLimits(limit, 0))[0];\n }\n \n async resetDownloadLimit() {\n return (await this._setBandwidthLimits(-1, 0))[0];\n }\n\n async getUploadLimit() {\n return (await this._getBandwidthLimits())[1];\n }\n \n async setUploadLimit(limit) {\n if (limit == -1) return await this.resetUploadLimit();\n if (!(GenUtils.isInt(limit) && limit > 0)) throw new MoneroError(\"Upload limit must be an integer greater than 0\");\n return (await this._setBandwidthLimits(0, limit))[1];\n }\n \n async resetUploadLimit() {\n return (await this._setBandwidthLimits(0, -1))[1];\n }\n \n async getPeers() {\n let resp = await this.rpc.sendJsonRequest(\"get_connections\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n let peers = [];\n if (!resp.result.connections) return peers;\n for (let rpcConnection of resp.result.connections) {\n peers.push(MoneroDaemonRpc._convertRpcConnection(rpcConnection));\n }\n return peers;\n }\n \n async getKnownPeers() {\n \n // tx config\n let resp = await this.rpc.sendPathRequest(\"get_peer_list\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n \n // build peers\n let peers = [];\n if (resp.gray_list) {\n for (let rpcPeer of resp.gray_list) {\n let peer = MoneroDaemonRpc._convertRpcPeer(rpcPeer);\n peer.setIsOnline(false); // gray list means offline last checked\n peers.push(peer);\n }\n }\n if (resp.white_list) {\n for (let rpcPeer of resp.white_list) {\n let peer = MoneroDaemonRpc._convertRpcPeer(rpcPeer);\n peer.setIsOnline(true); // white list means online last checked\n peers.push(peer);\n }\n }\n return peers;\n }\n \n async setOutgoingPeerLimit(limit) {\n if (!(GenUtils.isInt(limit) && limit >= 0)) throw new MoneroError(\"Outgoing peer limit must be >= 0\");\n let resp = await this.rpc.sendPathRequest(\"out_peers\", {out_peers: limit});\n MoneroDaemonRpc._checkResponseStatus(resp);\n }\n \n async setIncomingPeerLimit(limit) {\n if (!(GenUtils.isInt(limit) && limit >= 0)) throw new MoneroError(\"Incoming peer limit must be >= 0\");\n let resp = await this.rpc.sendPathRequest(\"in_peers\", {in_peers: limit});\n MoneroDaemonRpc._checkResponseStatus(resp);\n }\n \n async getPeerBans() {\n let resp = await this.rpc.sendJsonRequest(\"get_bans\");\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n let bans = [];\n for (let rpcBan of resp.result.bans) {\n let ban = new MoneroBan();\n ban.setHost(rpcBan.host);\n ban.setIp(rpcBan.ip);\n ban.setSeconds(rpcBan.seconds);\n bans.push(ban);\n }\n return bans;\n }\n \n async setPeerBans(bans) {\n let rpcBans = [];\n for (let ban of bans) rpcBans.push(MoneroDaemonRpc._convertToRpcBan(ban));\n let resp = await this.rpc.sendJsonRequest(\"set_bans\", {bans: rpcBans});\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n }\n \n async startMining(address, numThreads, isBackground, ignoreBattery) {\n assert(address, \"Must provide address to mine to\");\n assert(GenUtils.isInt(numThreads) && numThreads > 0, \"Number of threads must be an integer greater than 0\");\n assert(isBackground === undefined || typeof isBackground === \"boolean\");\n assert(ignoreBattery === undefined || typeof ignoreBattery === \"boolean\");\n let resp = await this.rpc.sendPathRequest(\"start_mining\", {\n miner_address: address,\n threads_count: numThreads,\n do_background_mining: isBackground,\n ignore_battery: ignoreBattery,\n });\n MoneroDaemonRpc._checkResponseStatus(resp);\n }\n \n async stopMining() {\n let resp = await this.rpc.sendPathRequest(\"stop_mining\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n }\n \n async getMiningStatus() {\n let resp = await this.rpc.sendPathRequest(\"mining_status\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n return MoneroDaemonRpc._convertRpcMiningStatus(resp);\n }\n \n async submitBlocks(blockBlobs) {\n assert(Array.isArray(blockBlobs) && blockBlobs.length > 0, \"Must provide an array of mined block blobs to submit\");\n let resp = await this.rpc.sendJsonRequest(\"submit_block\", blockBlobs);\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n }\n\n async pruneBlockchain(check) {\n let resp = await this.rpc.sendJsonRequest(\"prune_blockchain\", {check: check}, 0);\n MoneroDaemonRpc._checkResponseStatus(resp.result);\n let result = new MoneroPruneResult();\n result.setIsPruned(resp.result.pruned);\n result.setPruningSeed(resp.result.pruning_seed);\n return result;\n }\n \n async checkForUpdate() {\n let resp = await this.rpc.sendPathRequest(\"update\", {command: \"check\"});\n MoneroDaemonRpc._checkResponseStatus(resp);\n return MoneroDaemonRpc._convertRpcUpdateCheckResult(resp);\n }\n \n async downloadUpdate(path) {\n let resp = await this.rpc.sendPathRequest(\"update\", {command: \"download\", path: path});\n MoneroDaemonRpc._checkResponseStatus(resp);\n return MoneroDaemonRpc._convertRpcUpdateDownloadResult(resp);\n }\n \n async stop() {\n let resp = await this.rpc.sendPathRequest(\"stop_daemon\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n }\n \n async waitForNextBlockHeader() {\n let that = this;\n return new Promise(async function(resolve) {\n await that.addListener(new class extends MoneroDaemonListener {\n async onBlockHeader(header) {\n await that.removeListener(this);\n resolve(header);\n }\n }); \n });\n }\n \n // ----------- ADD JSDOC FOR SUPPORTED DEFAULT IMPLEMENTATIONS --------------\n \n async getTx() { return super.getTx(...arguments); }\n async getTxHex() { return super.getTxHex(...arguments); }\n async getKeyImageSpentStatus() { return super.getKeyImageSpentStatus(...arguments); }\n async setPeerBan() { return super.setPeerBan(...arguments); }\n async submitBlock() { return super.submitBlock(...arguments); }\n \n // ------------------------------- PRIVATE ----------------------------------\n \n _refreshListening() {\n if (this.pollListener == undefined && this.listeners.length) this.pollListener = new DaemonPoller(this);\n if (this.pollListener !== undefined) this.pollListener.setIsPolling(this.listeners.length > 0);\n }\n \n async _getBandwidthLimits() {\n let resp = await this.rpc.sendPathRequest(\"get_limit\");\n MoneroDaemonRpc._checkResponseStatus(resp);\n return [resp.limit_down, resp.limit_up];\n }\n \n async _setBandwidthLimits(downLimit, upLimit) {\n if (downLimit === undefined) downLimit = 0;\n if (upLimit === undefined) upLimit = 0;\n let resp = await this.rpc.sendPathRequest(\"set_limit\", {limit_down: downLimit, limit_up: upLimit});\n MoneroDaemonRpc._checkResponseStatus(resp);\n return [resp.limit_down, resp.limit_up];\n }\n \n /**\n * Get a contiguous chunk of blocks starting from a given height up to a maximum\n * height or amount of block data fetched from the blockchain, whichever comes first.\n * \n * @param {number} startHeight - start height to retrieve blocks (default 0)\n * @param {number} maxHeight - maximum end height to retrieve blocks (default blockchain height)\n * @param {number} maxReqSize - maximum amount of block data to fetch from the blockchain in bytes (default 3,000,000 bytes)\n * @return {MoneroBlock[]} are the resulting chunk of blocks\n */\n async _getMaxBlocks(startHeight, maxHeight, maxReqSize) {\n if (startHeight === undefined) startHeight = 0;\n if (maxHeight === undefined) maxHeight = await this.getHeight() - 1;\n if (maxReqSize === undefined) maxReqSize = MoneroDaemonRpc.MAX_REQ_SIZE;\n \n // determine end height to fetch\n let reqSize = 0;\n let endHeight = startHeight - 1;\n while (reqSize < maxReqSize && endHeight < maxHeight) {\n \n // get header of next block\n let header = await this._getBlockHeaderByHeightCached(endHeight + 1, maxHeight);\n \n // block cannot be bigger than max request size\n assert(header.getSize() <= maxReqSize, \"Block exceeds maximum request size: \" + header.getSize());\n \n // done iterating if fetching block would exceed max request size\n if (reqSize + header.getSize() > maxReqSize) break;\n \n // otherwise block is included\n reqSize += header.getSize();\n endHeight++;\n }\n return endHeight >= startHeight ? await this.getBlocksByRange(startHeight, endHeight) : [];\n }\n \n /**\n * Retrieves a header by height from the cache or fetches and caches a header\n * range if not already in the cache.\n * \n * @param {number} height - height of the header to retrieve from the cache\n * @param {number} maxHeight - maximum height of headers to cache\n */\n async _getBlockHeaderByHeightCached(height, maxHeight) {\n \n // get header from cache\n let cachedHeader = this.cachedHeaders[height];\n if (cachedHeader) return cachedHeader;\n \n // fetch and cache headers if not in cache\n let endHeight = Math.min(maxHeight, height + MoneroDaemonRpc.NUM_HEADERS_PER_REQ - 1); // TODO: could specify end height to cache to optimize small requests (would like to have time profiling in place though)\n let headers = await this.getBlockHeadersByRange(height, endHeight);\n for (let header of headers) {\n this.cachedHeaders[header.getHeight()] = header;\n }\n \n // return the cached header\n return this.cachedHeaders[height];\n }\n \n // --------------------------------- STATIC ---------------------------------\n \n static _normalizeConfig(uriOrConfigOrConnection, username, password, rejectUnauthorized, pollInterval, proxyToWorker) {\n let config;\n if (typeof uriOrConfigOrConnection === \"string\") config = {uri: uriOrConfigOrConnection, username: username, password: password, proxyToWorker: proxyToWorker, rejectUnauthorized: rejectUnauthorized, pollInterval: pollInterval};\n else {\n if (typeof uriOrConfigOrConnection !== \"object\") throw new MoneroError(\"Invalid configuration to create rpc client; must be string, object, or MoneroRpcConnection\");\n if (username || password || rejectUnauthorized || pollInterval || proxyToWorker) throw new MoneroError(\"Can provide config object or params or new MoneroDaemonRpc(...) but not both\");\n if (uriOrConfigOrConnection instanceof MoneroRpcConnection) config = Object.assign({}, uriOrConfigOrConnection.getConfig());\n else config = Object.assign({}, uriOrConfigOrConnection);\n }\n if (config.server) {\n config = Object.assign(config, new MoneroRpcConnection(config.server).getConfig());\n delete config.server;\n }\n if (config.pollInterval === undefined) config.pollInterval = 5000; // TODO: move to config\n if (config.proxyToWorker === undefined) config.proxyToWorker = true;\n return config;\n }\n \n static _checkResponseStatus(resp) {\n if (resp.status !== \"OK\") throw new MoneroError(resp.status);\n }\n \n static _convertRpcBlockHeader(rpcHeader) {\n if (!rpcHeader) return undefined;\n let header = new MoneroBlockHeader();\n for (let key of Object.keys(rpcHeader)) {\n let val = rpcHeader[key];\n if (key === \"block_size\") GenUtils.safeSet(header, header.getSize, header.setSize, val);\n else if (key === \"depth\") GenUtils.safeSet(header, header.getDepth, header.setDepth, val);\n else if (key === \"difficulty\") { } // handled by wide_difficulty\n else if (key === \"cumulative_difficulty\") { } // handled by wide_cumulative_difficulty\n else if (key === \"difficulty_top64\") { } // handled by wide_difficulty\n else if (key === \"cumulative_difficulty_top64\") { } // handled by wide_cumulative_difficulty\n else if (key === \"wide_difficulty\") header.setDifficulty(GenUtils.reconcile(header.getDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));\n else if (key === \"wide_cumulative_difficulty\") header.setCumulativeDifficulty(GenUtils.reconcile(header.getCumulativeDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));\n else if (key === \"hash\") GenUtils.safeSet(header, header.getHash, header.setHash, val);\n else if (key === \"height\") GenUtils.safeSet(header, header.getHeight, header.setHeight, val);\n else if (key === \"major_version\") GenUtils.safeSet(header, header.getMajorVersion, header.setMajorVersion, val);\n else if (key === \"minor_version\") GenUtils.safeSet(header, header.getMinorVersion, header.setMinorVersion, val);\n else if (key === \"nonce\") GenUtils.safeSet(header, header.getNonce, header.setNonce, val);\n else if (key === \"num_txes\") GenUtils.safeSet(header, header.getNumTxs, header.setNumTxs, val);\n else if (key === \"orphan_status\") GenUtils.safeSet(header, header.getOrphanStatus, header.setOrphanStatus, val);\n else if (key === \"prev_hash\" || key === \"prev_id\") GenUtils.safeSet(header, header.getPrevHash, header.setPrevHash, val);\n else if (key === \"reward\") GenUtils.safeSet(header, header.getReward, header.setReward, BigInteger.parse(val));\n else if (key === \"timestamp\") GenUtils.safeSet(header, header.getTimestamp, header.setTimestamp, val);\n else if (key === \"block_weight\") GenUtils.safeSet(header, header.getWeight, header.setWeight, val);\n else if (key === \"long_term_weight\") GenUtils.safeSet(header, header.getLongTermWeight, header.setLongTermWeight, val);\n else if (key === \"pow_hash\") GenUtils.safeSet(header, header.getPowHash, header.setPowHash, val === \"\" ? undefined : val);\n else if (key === \"tx_hashes\") {} // used in block model, not header model\n else if (key === \"miner_tx\") {} // used in block model, not header model\n else if (key === \"miner_tx_hash\") header.setMinerTxHash(val);\n else console.log(\"WARNING: ignoring unexpected block header field: '\" + key + \"': \" + val);\n }\n return header;\n }\n \n static _convertRpcBlock(rpcBlock) {\n \n // build block\n let block = new MoneroBlock(MoneroDaemonRpc._convertRpcBlockHeader(rpcBlock.block_header ? rpcBlock.block_header : rpcBlock));\n block.setHex(rpcBlock.blob);\n block.setTxHashes(rpcBlock.tx_hashes === undefined ? [] : rpcBlock.tx_hashes);\n \n // build miner tx\n let rpcMinerTx = rpcBlock.json ? JSON.parse(rpcBlock.json).miner_tx : rpcBlock.miner_tx; // may need to be parsed from json\n let minerTx = new MoneroTx();\n block.setMinerTx(minerTx);\n minerTx.setIsConfirmed(true);\n minerTx.setIsMinerTx(true);\n MoneroDaemonRpc._convertRpcTx(rpcMinerTx, minerTx);\n \n return block;\n }\n \n /**\n * Transfers RPC tx fields to a given MoneroTx without overwriting previous values.\n * \n * TODO: switch from safe set\n * \n * @param rpcTx - RPC map containing transaction fields\n * @param tx - MoneroTx to populate with values (optional)\n * @returns tx - same tx that was passed in or a new one if none given\n */\n static _convertRpcTx(rpcTx, tx) {\n if (rpcTx === undefined) return undefined;\n if (tx === undefined) tx = new MoneroTx();\n \n// console.log(\"******** BUILDING TX ***********\");\n// console.log(rpcTx);\n// console.log(tx.toString());\n \n // initialize from rpc map\n let header;\n for (let key of Object.keys(rpcTx)) {\n let val = rpcTx[key];\n if (key === \"tx_hash\" || key === \"id_hash\") GenUtils.safeSet(tx, tx.getHash, tx.setHash, val);\n else if (key === \"block_timestamp\") {\n if (!header) header = new MoneroBlockHeader();\n GenUtils.safeSet(header, header.getTimestamp, header.setTimestamp, val);\n }\n else if (key === \"block_height\") {\n if (!header) header = new MoneroBlockHeader();\n GenUtils.safeSet(header, header.getHeight, header.setHeight, val);\n }\n else if (key === \"last_relayed_time\") GenUtils.safeSet(tx, tx.getLastRelayedTimestamp, tx.setLastRelayedTimestamp, val);\n else if (key === \"receive_time\" || key === \"received_timestamp\") GenUtils.safeSet(tx, tx.getReceivedTimestamp, tx.setReceivedTimestamp, val);\n else if (key === \"confirmations\") GenUtils.safeSet(tx, tx.getNumConfirmations, tx.setNumConfirmations, val); \n else if (key === \"in_pool\") {\n GenUtils.safeSet(tx, tx.isConfirmed, tx.setIsConfirmed, !val);\n GenUtils.safeSet(tx, tx.inTxPool, tx.setInTxPool, val);\n }\n else if (key === \"double_spend_seen\") GenUtils.safeSet(tx, tx.isDoubleSpendSeen, tx.setIsDoubleSpend, val);\n else if (key === \"version\") GenUtils.safeSet(tx, tx.getVersion, tx.setVersion, val);\n else if (key === \"extra\") {\n if (typeof val === \"string\") console.log(\"WARNING: extra field as string not being asigned to int[]: \" + key + \": \" + val); // TODO: how to set string to int[]? - or, extra is string which can encode int[]\n else GenUtils.safeSet(tx, tx.getExtra, tx.setExtra, val);\n }\n else if (key === \"vin\") {\n if (val.length !== 1 || !val[0].gen) { // ignore miner input TODO: why?\n tx.setInputs(val.map(rpcVin => MoneroDaemonRpc._convertRpcOutput(rpcVin, tx)));\n }\n }\n else if (key === \"vout\") tx.setOutputs(val.map(rpcOutput => MoneroDaemonRpc._convertRpcOutput(rpcOutput, tx)));\n else if (key === \"rct_signatures\") {\n GenUtils.safeSet(tx, tx.getRctSignatures, tx.setRctSignatures, val);\n if (val.txnFee) GenUtils.safeSet(tx, tx.getFee, tx.setFee, BigInteger.parse(val.txnFee));\n } \n else if (key === \"rctsig_prunable\") GenUtils.safeSet(tx, tx.getRctSigPrunable, tx.setRctSigPrunable, val);\n else if (key === \"unlock_time\") GenUtils.safeSet(tx, tx.getUnlockTime, tx.setUnlockTime, val);\n else if (key === \"as_json\" || key === \"tx_json\") { } // handled last so tx is as initialized as possible\n else if (key === \"as_hex\" || key === \"tx_blob\") GenUtils.safeSet(tx, tx.getFullHex, tx.setFullHex, val ? val : undefined);\n else if (key === \"blob_size\") GenUtils.safeSet(tx, tx.getSize, tx.setSize, val);\n else if (key === \"weight\") GenUtils.safeSet(tx, tx.getWeight, tx.setWeight, val);\n else if (key === \"fee\") GenUtils.safeSet(tx, tx.getFee, tx.setFee, BigInteger.parse(val));\n else if (key === \"relayed\") GenUtils.safeSet(tx, tx.isRelayed, tx.setIsRelayed, val);\n else if (key === \"output_indices\") GenUtils.safeSet(tx, tx.getOutputIndices, tx.setOutputIndices, val);\n else if (key === \"do_not_relay\") GenUtils.safeSet(tx, tx.getRelay, tx.setRelay, !val);\n else if (key === \"kept_by_block\") GenUtils.safeSet(tx, tx.isKeptByBlock, tx.setIsKeptByBlock, val);\n else if (key === \"signatures\") GenUtils.safeSet(tx, tx.getSignatures, tx.setSignatures, val);\n else if (key === \"last_failed_height\") {\n if (val === 0) GenUtils.safeSet(tx, tx.isFailed, tx.setIsFailed, false);\n else {\n GenUtils.safeSet(tx, tx.isFailed, tx.setIsFailed, true);\n GenUtils.safeSet(tx, tx.getLastFailedHeight, tx.setLastFailedHeight, val);\n }\n }\n else if (key === \"last_failed_id_hash\") {\n if (val === MoneroDaemonRpc.DEFAULT_ID) GenUtils.safeSet(tx, tx.isFailed, tx.setIsFailed, false);\n else {\n GenUtils.safeSet(tx, tx.isFailed, tx.setIsFailed, true);\n GenUtils.safeSet(tx, tx.getLastFailedHash, tx.setLastFailedHash, val);\n }\n }\n else if (key === \"max_used_block_height\") GenUtils.safeSet(tx, tx.getMaxUsedBlockHeight, tx.setMaxUsedBlockHeight, val);\n else if (key === \"max_used_block_id_hash\") GenUtils.safeSet(tx, tx.getMaxUsedBlockHash, tx.setMaxUsedBlockHash, val);\n else if (key === \"prunable_hash\") GenUtils.safeSet(tx, tx.getPrunableHash, tx.setPrunableHash, val ? val : undefined);\n else if (key === \"prunable_as_hex\") GenUtils.safeSet(tx, tx.getPrunableHex, tx.setPrunableHex, val ? val : undefined);\n else if (key === \"pruned_as_hex\") GenUtils.safeSet(tx, tx.getPrunedHex, tx.setPrunedHex, val ? val : undefined);\n else console.log(\"WARNING: ignoring unexpected field in rpc tx: \" + key + \": \" + val);\n }\n \n // link block and tx\n if (header) tx.setBlock(new MoneroBlock(header).setTxs([tx]));\n \n // TODO monerod: unconfirmed txs misreport block height and timestamp\n if (tx.getBlock() && tx.getBlock().getHeight() !== undefined && tx.getBlock().getHeight() === tx.getBlock().getTimestamp()) {\n tx.setBlock(undefined);\n tx.setIsConfirmed(false);\n }\n \n // initialize remaining known fields\n if (tx.isConfirmed()) {\n GenUtils.safeSet(tx, tx.isRelayed, tx.setIsRelayed, true);\n GenUtils.safeSet(tx, tx.getRelay, tx.setRelay, true);\n GenUtils.safeSet(tx, tx.isFailed, tx.setIsFailed, false);\n } else {\n tx.setNumConfirmations(0);\n }\n if (tx.isFailed() === undefined) tx.setIsFailed(false);\n if (tx.getOutputIndices() && tx.getOutputs()) {\n assert.equal(tx.getOutputs().length, tx.getOutputIndices().length);\n for (let i = 0; i < tx.getOutputs().length; i++) {\n tx.getOutputs()[i].setIndex(tx.getOutputIndices()[i]); // transfer output indices to outputs\n }\n }\n if (rpcTx.as_json) MoneroDaemonRpc._convertRpcTx(JSON.parse(rpcTx.as_json), tx);\n if (rpcTx.tx_json) MoneroDaemonRpc._convertRpcTx(JSON.parse(rpcTx.tx_json), tx);\n if (!tx.isRelayed()) tx.setLastRelayedTimestamp(undefined); // TODO monerod: returns last_relayed_timestamp despite relayed: false, self inconsistent\n \n // return built transaction\n return tx;\n }\n \n static _convertRpcOutput(rpcOutput, tx) {\n let output = new MoneroOutput();\n output.setTx(tx);\n for (let key of Object.keys(rpcOutput)) {\n let val = rpcOutput[key];\n if (key === \"gen\") throw new MoneroError(\"Output with 'gen' from daemon rpc is miner tx which we ignore (i.e. each miner input is undefined)\");\n else if (key === \"key\") {\n GenUtils.safeSet(output, output.getAmount, output.setAmount, new BigInteger(val.amount));\n GenUtils.safeSet(output, output.getKeyImage, output.setKeyImage, new MoneroKeyImage(val.k_image));\n GenUtils.safeSet(output, output.getRingOutputIndices, output.setRingOutputIndices, val.key_offsets);\n }\n else if (key === \"amount\") GenUtils.safeSet(output, output.getAmount, output.setAmount, BigInteger.parse(val));\n else if (key === \"target\") {\n let pubKey = val.key === undefined ? val.tagged_key.key : val.key; // TODO (monerod): rpc json uses {tagged_key={key=...}}, binary blocks use {key=...}\n GenUtils.safeSet(output, output.getStealthPublicKey, output.setStealthPublicKey, pubKey);\n }\n else console.log(\"WARNING: ignoring unexpected field output: \" + key + \": \" + val);\n }\n return output;\n }\n \n static _convertRpcBlockTemplate(rpcTemplate) {\n let template = new MoneroBlockTemplate();\n for (let key of Object.keys(rpcTemplate)) {\n let val = rpcTemplate[key];\n if (key === \"blockhashing_blob\") template.setBlockTemplateBlob(val);\n else if (key === \"blocktemplate_blob\") template.setBlockHashingBlob(val);\n else if (key === \"difficulty\") template.setDifficulty(BigInteger.parse(val));\n else if (key === \"expected_reward\") template.setExpectedReward(val);\n else if (key === \"difficulty\") { } // handled by wide_difficulty\n else if (key === \"difficulty_top64\") { } // handled by wide_difficulty\n else if (key === \"wide_difficulty\") template.setDifficulty(GenUtils.reconcile(template.getDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));\n else if (key === \"height\") template.setHeight(val);\n else if (key === \"prev_hash\") template.setPrevHash(val);\n else if (key === \"reserved_offset\") template.setReservedOffset(val);\n else if (key === \"status\") {} // handled elsewhere\n else if (key === \"untrusted\") {} // handled elsewhere\n else if (key === \"seed_height\") template.setSeedHeight(val);\n else if (key === \"seed_hash\") template.setSeedHash(val);\n else if (key === \"next_seed_hash\") template.setNextSeedHash(val);\n else console.log(\"WARNING: ignoring unexpected field in block template: \" + key + \": \" + val);\n }\n if (\"\" === template.getNextSeedHash()) template.setNextSeedHash(undefined);\n return template;\n }\n \n static _convertRpcInfo(rpcInfo) {\n if (!rpcInfo) return undefined;\n let info = new MoneroDaemonInfo();\n for (let key of Object.keys(rpcInfo)) {\n let val = rpcInfo[key];\n if (key === \"version\") info.setVersion(val);\n else if (key === \"alt_blocks_count\") info.setNumAltBlocks(val);\n else if (key === \"block_size_limit\") info.setBlockSizeLimit(val);\n else if (key === \"block_size_median\") info.setBlockSizeMedian(val);\n else if (key === \"block_weight_limit\") info.setBlockWeightLimit(val);\n else if (key === \"block_weight_median\") info.setBlockWeightMedian(val);\n else if (key === \"bootstrap_daemon_address\") { if (val) info.setBootstrapDaemonAddress(val); }\n else if (key === \"difficulty\") { } // handled by wide_difficulty\n else if (key === \"cumulative_difficulty\") { } // handled by wide_cumulative_difficulty\n else if (key === \"difficulty_top64\") { } // handled by wide_difficulty\n else if (key === \"cumulative_difficulty_top64\") { } // handled by wide_cumulative_difficulty\n else if (key === \"wide_difficulty\") info.setDifficulty(GenUtils.reconcile(info.getDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));\n else if (key === \"wide_cumulative_difficulty\") info.setCumulativeDifficulty(GenUtils.reconcile(info.getCumulativeDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));\n else if (key === \"free_space\") info.setFreeSpace(BigInteger.parse(val));\n else if (key === \"database_size\") info.setDatabaseSize(val);\n else if (key === \"grey_peerlist_size\") info.setNumOfflinePeers(val);\n else if (key === \"height\") info.setHeight(val);\n else if (key === \"height_without_bootstrap\") info.setHeightWithoutBootstrap(val);\n else if (key === \"incoming_connections_count\") info.setNumIncomingConnections(val);\n else if (key === \"offline\") info.setIsOffline(val);\n else if (key === \"outgoing_connections_count\") info.setNumOutgoingConnections(val);\n else if (key === \"rpc_connections_count\") info.setNumRpcConnections(val);\n else if (key === \"start_time\") info.setStartTimestamp(val);\n else if (key === \"adjusted_time\") info.setAdjustedTimestamp(val);\n else if (key === \"status\") {} // handled elsewhere\n else if (key === \"target\") info.setTarget(val);\n else if (key === \"target_height\") info.setTargetHeight(val);\n else if (key === \"top_block_hash\") info.setTopBlockHash(val);\n else if (key === \"tx_count\") info.setNumTxs(val);\n else if (key === \"tx_pool_size\") info.setNumTxsPool(val);\n else if (key === \"untrusted\") {} // handled elsewhere\n else if (key === \"was_bootstrap_ever_used\") info.setWasBootstrapEverUsed(val);\n else if (key === \"white_peerlist_size\") info.setNumOnlinePeers(val);\n else if (key === \"update_available\") info.setUpdateAvailable(val);\n else if (key === \"nettype\") GenUtils.safeSet(info, info.getNetworkType, info.setNetworkType, MoneroDaemon.parseNetworkType(val));\n else if (key === \"mainnet\") { if (val) GenUtils.safeSet(info, info.getNetworkType, info.setNetworkType, MoneroNetworkType.MAINNET); }\n else if (key === \"testnet\") { if (val) GenUtils.safeSet(info, info.getNetworkType, info.setNetworkType, MoneroNetworkType.TESTNET); }\n else if (key === \"stagenet\") { if (val) GenUtils.safeSet(info, info.getNetworkType, info.setNetworkType, MoneroNetworkType.STAGENET); }\n else if (key === \"credits\") info.setCredits(BigInteger.parse(val));\n else if (key === \"top_block_hash\" || key === \"top_hash\") info.setTopBlockHash(GenUtils.reconcile(info.getTopBlockHash(), \"\" === val ? undefined : val))\n else if (key === \"busy_syncing\") info.setIsBusySyncing(val);\n else if (key === \"synchronized\") info.setIsSynchronized(val);\n else if (key === \"restricted\") info.setIsRestricted(val);\n else console.log(\"WARNING: Ignoring unexpected info field: \" + key + \": \" + val);\n }\n return info;\n }\n \n /**\n * Initializes sync info from RPC sync info.\n * \n * @param rpcSyncInfo - rpc map to initialize the sync info from\n * @return {MoneroDaemonSyncInfo} is sync info initialized from the map\n */\n static _convertRpcSyncInfo(rpcSyncInfo) {\n let syncInfo = new MoneroDaemonSyncInfo();\n for (let key of Object.keys(rpcSyncInfo)) {\n let val = rpcSyncInfo[key];\n if (key === \"height\") syncInfo.setHeight(val);\n else if (key === \"peers\") {\n syncInfo.setPeers([]);\n let rpcConnections = val;\n for (let rpcConnection of rpcConnections) {\n syncInfo.getPeers().push(MoneroDaemonRpc._convertRpcConnection(rpcConnection.info));\n }\n }\n else if (key === \"spans\") {\n syncInfo.setSpans([]);\n let rpcSpans = val;\n for (let rpcSpan of rpcSpans) {\n syncInfo.getSpans().push(MoneroDaemonRpc._convertRpcConnectionSpan(rpcSpan));\n }\n } else if (key === \"status\") {} // handled elsewhere\n else if (key === \"target_height\") syncInfo.setTargetHeight(BigInteger.parse(val));\n else if (key === \"next_needed_pruning_seed\") syncInfo.setNextNeededPruningSeed(val);\n else if (key === \"overview\") { // this returns [] without pruning\n let overview;\n try {\n overview = JSON.parse(val);\n if (overview !== undefined && overview.length > 0) console.error(\"Ignoring non-empty 'overview' field (not implemented): \" + overview); // TODO\n } catch (e) {\n console.error(\"Failed to parse 'overview' field: \" + overview + \": \" + e.message);\n }\n }\n else if (key === \"credits\") syncInfo.setCredits(BigInteger.parse(val));\n else if (key === \"top_hash\") syncInfo.setTopBlockHash(\"\" === val ? undefined : val);\n else if (key === \"untrusted\") {} // handled elsewhere\n else console.log(\"WARNING: ignoring unexpected field in sync info: \" + key + \": \" + val);\n }\n return syncInfo;\n }\n \n static _convertRpcHardForkInfo(rpcHardForkInfo) {\n let info = new MoneroHardForkInfo();\n for (let key of Object.keys(rpcHardForkInfo)) {\n let val = rpcHardForkInfo[key];\n if (key === \"earliest_height\") info.setEarliestHeight(val);\n else if (key === \"enabled\") info.setIsEnabled(val);\n else if (key === \"state\") info.setState(val);\n else if (key === \"status\") {} // handled elsewhere\n else if (key === \"untrusted\") {} // handled elsewhere\n else if (key === \"threshold\") info.setThreshold(val);\n else if (key === \"version\") info.setVersion(val);\n else if (key === \"votes\") info.setNumVotes(val);\n else if (key === \"voting\") info.setVoting(val);\n else if (key === \"window\") info.setWindow(val);\n else if (key === \"credits\") info.setCredits(BigInteger.parse(val));\n else if (key === \"top_hash\") info.setTopBlockHash(\"\" === val ? undefined : val);\n else console.log(\"WARNING: ignoring unexpected field in hard fork info: \" + key + \": \" + val);\n }\n return info;\n }\n \n static _convertRpcConnectionSpan(rpcConnectionSpan) {\n let span = new MoneroConnectionSpan();\n for (let key of Object.keys(rpcConnectionSpan)) {\n let val = rpcConnectionSpan[key];\n if (key === \"connection_id\") span.setConnectionId(val);\n else if (key === \"nblocks\") span.setNumBlocks(val);\n else if (key === \"rate\") span.setRate(val);\n else if (key === \"remote_address\") { if (val !== \"\") span.setRemoteAddress(val); }\n else if (key === \"size\") span.setSize(val);\n else if (key === \"speed\") span.setSpeed(val);\n else if (key === \"start_block_height\") span.setStartHeight(val);\n else console.log(\"WARNING: ignoring unexpected field in daemon connection span: \" + key + \": \" + val);\n }\n return span;\n }\n \n static _convertRpcOutputHistogramEntry(rpcEntry) {\n let entry = new MoneroOutputHistogramEntry();\n for (let key of Object.keys(rpcEntry)) {\n let val = rpcEntry[key];\n if (key === \"amount\") entry.setAmount(BigInteger.parse(val));\n else if (key === \"total_instances\") entry.setNumInstances(val);\n else if (key === \"unlocked_instances\") entry.setNumUnlockedInstances(val);\n else if (key === \"recent_instances\") entry.setNumRecentInstances(val);\n else console.log(\"WARNING: ignoring unexpected field in output histogram: \" + key + \": \" + val);\n }\n return entry;\n }\n \n static _convertRpcSubmitTxResult(rpcResult) {\n assert(rpcResult);\n let result = new MoneroSubmitTxResult();\n for (let key of Object.keys(rpcResult)) {\n let val = rpcResult[key];\n if (key === \"double_spend\") result.setIsDoubleSpend(val);\n else if (key === \"fee_too_low\") result.setIsFeeTooLow(val);\n else if (key === \"invalid_input\") result.setHasInvalidInput(val);\n else if (key === \"invalid_output\") result.setHasInvalidOutput(val);\n else if (key === \"too_few_outputs\") result.setHasTooFewOutputs(val);\n else if (key === \"low_mixin\") result.setIsMixinTooLow(val);\n else if (key === \"not_relayed\") result.setIsRelayed(!val);\n else if (key === \"overspend\") result.setIsOverspend(val);\n else if (key === \"reason\") result.setReason(val === \"\" ? undefined : val);\n else if (key === \"too_big\") result.setIsTooBig(val);\n else if (key === \"sanity_check_failed\") result.setSanityCheckFailed(val);\n else if (key === \"credits\") result.setCredits(BigInteger.parse(val))\n else if (key === \"status\" || key === \"untrusted\") {} // handled elsewhere\n else if (key === \"top_hash\") result.setTopBlockHash(\"\" === val ? undefined : val);\n else if (key === \"tx_extra_too_big\") result.setIsTxExtraTooBig(val);\n else console.log(\"WARNING: ignoring unexpected field in submit tx hex result: \" + key + \": \" + val);\n }\n return result;\n }\n \n static _convertRpcTxPoolStats(rpcStats) {\n assert(rpcStats);\n let stats = new MoneroTxPoolStats();\n for (let key of Object.keys(rpcStats)) {\n let val = rpcStats[key];\n if (key === \"bytes_max\") stats.setBytesMax(val);\n else if (key === \"bytes_med\") stats.setBytesMed(val);\n else if (key === \"bytes_min\") stats.setBytesMin(val);\n else if (key === \"bytes_total\") stats.setBytesTotal(val);\n else if (key === \"histo_98pc\") stats.setHisto98pc(val);\n else if (key === \"num_10m\") stats.setNum10m(val);\n else if (key === \"num_double_spends\") stats.setNumDoubleSpends(val);\n else if (key === \"num_failing\") stats.setNumFailing(val);\n else if (key === \"num_not_relayed\") stats.setNumNotRelayed(val);\n else if (key === \"oldest\") stats.setOldestTimestamp(val);\n else if (key === \"txs_total\") stats.setNumTxs(val);\n else if (key === \"fee_total\") stats.setFeeTotal(BigInteger.parse(val));\n else if (key === \"histo\") {\n stats.setHisto(new Map());\n for (let elem of val) stats.getHisto().set(elem.bytes, elem.txs);\n }\n else console.log(\"WARNING: ignoring unexpected field in tx pool stats: \" + key + \": \" + val);\n }\n\n // uninitialize some stats if not applicable\n if (stats.getHisto98pc() === 0) stats.setHisto98pc(undefined);\n if (stats.getNumTxs() === 0) {\n stats.setBytesMin(undefined);\n stats.setBytesMed(undefined);\n stats.setBytesMax(undefined);\n stats.setHisto98pc(undefined);\n stats.setOldestTimestamp(undefined);\n }\n\n return stats;\n }\n \n static _convertRpcAltChain(rpcChain) {\n assert(rpcChain);\n let chain = new MoneroAltChain();\n for (let key of Object.keys(rpcChain)) {\n let val = rpcChain[key];\n if (key === \"block_hash\") {} // using block_hashes instead\n else if (key === \"difficulty\") { } // handled by wide_difficulty\n else if (key === \"difficulty_top64\") { } // handled by wide_difficulty\n else if (key === \"wide_difficulty\") chain.setDifficulty(GenUtils.reconcile(chain.getDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));\n else if (key === \"height\") chain.setHeight(val);\n else if (key === \"length\") chain.setLength(val);\n else if (key === \"block_hashes\") chain.setBlockHashes(val);\n else if (key === \"main_chain_parent_block\") chain.setMainChainParentBlockHash(val);\n else console.log(\"WARNING: ignoring unexpected field in alternative chain: \" + key + \": \" + val);\n }\n return chain;\n }\n \n static _convertRpcPeer(rpcPeer) {\n assert(rpcPeer);\n let peer = new MoneroPeer();\n for (let key of Object.keys(rpcPeer)) {\n let val = rpcPeer[key];\n if (key === \"host\") peer.setHost(val);\n else if (key === \"id\") peer.setId(\"\" + val); // TODO monero-wallet-rpc: peer id is BigInteger but string in `get_connections`\n else if (key === \"ip\") {} // host used instead which is consistently a string\n else if (key === \"last_seen\") peer.setLastSeenTimestamp(val);\n else if (key === \"port\") peer.setPort(val);\n else if (key === \"rpc_port\") peer.setRpcPort(val);\n else if (key === \"pruning_seed\") peer.setPruningSeed(val);\n else if (key === \"rpc_credits_per_hash\") peer.setRpcCreditsPerHash(BigInteger.parse(val));\n else console.log(\"WARNING: ignoring unexpected field in rpc peer: \" + key + \": \" + val);\n }\n return peer;\n }\n \n static _convertRpcConnection(rpcConnection) {\n let peer = new MoneroPeer();\n peer.setIsOnline(true);\n for (let key of Object.keys(rpcConnection)) {\n let val = rpcConnection[key];\n if (key === \"address\") peer.setAddress(val);\n else if (key === \"avg_download\") peer.setAvgDownload(val);\n else if (key === \"avg_upload\") peer.setAvgUpload(val);\n else if (key === \"connection_id\") peer.setId(val);\n else if (key === \"current_download\") peer.setCurrentDownload(val);\n else if (key === \"current_upload\") peer.setCurrentUpload(val);\n else if (key === \"height\") peer.setHeight(val);\n else if (key === \"host\") peer.setHost(val);\n else if (key === \"ip\") {} // host used instead which is consistently a string\n else if (key === \"incoming\") peer.setIsIncoming(val);\n else if (key === \"live_time\") peer.setLiveTime(val);\n else if (key === \"local_ip\") peer.setIsLocalIp(val);\n else if (key === \"localhost\") peer.setIsLocalHost(val);\n else if (key === \"peer_id\") peer.setId(val);\n else if (key === \"port\") peer.setPort(parseInt(val));\n else if (key === \"rpc_port\") peer.setRpcPort(val);\n else if (key === \"recv_count\") peer.setNumReceives(val);\n else if (key === \"recv_idle_time\") peer.setReceiveIdleTime(val);\n else if (key === \"send_count\") peer.setNumSends(val);\n else if (key === \"send_idle_time\") peer.setSendIdleTime(val);\n else if (key === \"state\") peer.setState(val);\n else if (key === \"support_flags\") peer.setNumSupportFlags(val);\n else if (key === \"pruning_seed\") peer.setPruningSeed(val);\n else if (key === \"rpc_credits_per_hash\") peer.setRpcCreditsPerHash(BigInteger.parse(val));\n else if (key === \"address_type\") peer.setType(val);\n else console.log(\"WARNING: ignoring unexpected field in peer: \" + key + \": \" + val);\n }\n return peer;\n }\n \n static _convertToRpcBan(ban) {\n let rpcBan = {};\n rpcBan.host = ban.getHost();\n rpcBan.ip = ban.getIp();\n rpcBan.ban = ban.isBanned();\n rpcBan.seconds = ban.getSeconds();\n return rpcBan;\n }\n \n static _convertRpcMiningStatus(rpcStatus) {\n let status = new MoneroMiningStatus();\n status.setIsActive(rpcStatus.active);\n status.setSpeed(rpcStatus.speed);\n status.setNumThreads(rpcStatus.threads_count);\n if (rpcStatus.active) {\n status.setAddress(rpcStatus.address);\n status.setIsBackground(rpcStatus.is_background_mining_enabled);\n }\n return status;\n }\n \n static _convertRpcUpdateCheckResult(rpcResult) {\n assert(rpcResult);\n let result = new MoneroDaemonUpdateCheckResult();\n for (let key of Object.keys(rpcResult)) {\n let val = rpcResult[key];\n if (key === \"auto_uri\") result.setAutoUri(val);\n else if (key === \"hash\") result.setHash(val);\n else if (key === \"path\") {} // handled elsewhere\n else if (key === \"status\") {} // handled elsewhere\n else if (key === \"update\") result.setIsUpdateAvailable(val);\n else if (key === \"user_uri\") result.setUserUri(val);\n else if (key === \"version\") result.setVersion(val);\n else if (key === \"untrusted\") {} // handled elsewhere\n else console.log(\"WARNING: ignoring unexpected field in rpc check update result: \" + key + \": \" + val);\n }\n if (result.getAutoUri() === \"\") result.setAutoUri(undefined);\n if (result.getUserUri() === \"\") result.setUserUri(undefined);\n if (result.getVersion() === \"\") result.setVersion(undefined);\n if (result.getHash() === \"\") result.setHash(undefined);\n return result;\n }\n \n static _convertRpcUpdateDownloadResult(rpcResult) {\n let result = new MoneroDaemonUpdateDownloadResult(MoneroDaemonRpc._convertRpcUpdateCheckResult(rpcResult));\n result.setDownloadPath(rpcResult[\"path\"]);\n if (result.getDownloadPath() === \"\") result.setDownloadPath(undefined);\n return result;\n }\n\n /**\n * Converts a '0x' prefixed hexidecimal string to a BigInteger.\n * \n * @param hex is the '0x' prefixed hexidecimal string to convert\n * @return BigInteger is the hexicedimal converted to decimal\n */\n static _prefixedHexToBI(hex) {\n assert(hex.substring(0, 2) === \"0x\");\n return BigInteger.parse(hex, 16);\n }\n}\n\n// static variables\nMoneroDaemonRpc.DEFAULT_ID = \"0000000000000000000000000000000000000000000000000000000000000000\"; // uninitialized tx or block hash from daemon rpc\nMoneroDaemonRpc.MAX_REQ_SIZE = \"3000000\"; // max request size when fetching blocks from daemon\nMoneroDaemonRpc.NUM_HEADERS_PER_REQ = \"750\"; // number of headers to fetch and cache per request\n\n/**\n * Implements a MoneroDaemon by proxying requests to a worker.\n * \n * @private\n */\nclass MoneroDaemonRpcProxy extends MoneroDaemon {\n \n // --------------------------- STATIC UTILITIES -----------------------------\n \n static async connect(config) {\n let daemonId = GenUtils.getUUID();\n config = Object.assign({}, config, {proxyToWorker: false});\n await LibraryUtils.invokeWorker(daemonId, \"connectDaemonRpc\", [config]);\n return new MoneroDaemonRpcProxy(daemonId, await LibraryUtils.getWorker());\n }\n \n // ---------------------------- INSTANCE METHODS ----------------------------\n \n constructor(daemonId, worker) {\n super();\n this.daemonId = daemonId;\n this.worker = worker;\n this.wrappedListeners = [];\n }\n \n async getProcess() {\n return undefined; // proxy does not have access to process\n }\n \n async stopProcess(force) {\n if (this.process === undefined) throw new MoneroError(\"MoneroDaemonRpcProxy instance not created from new process\");\n let listenersCopy = GenUtils.copyArray(this.getListeners());\n for (let listener of listenersCopy) await this.removeListener(listener);\n return GenUtils.killProcess(this.process, force ? \"sigkill\" : undefined);\n }\n \n async addListener(listener) {\n let wrappedListener = new DaemonWorkerListener(listener);\n let listenerId = wrappedListener.getId();\n LibraryUtils.WORKER_OBJECTS[this.daemonId].callbacks[\"onBlockHeader_\" + listenerId] = [wrappedListener.onBlockHeader, wrappedListener];\n this.wrappedListeners.push(wrappedListener);\n return this._invokeWorker(\"daemonAddListener\", [listenerId]);\n }\n \n async removeListener(listener) {\n for (let i = 0; i < this.wrappedListeners.length; i++) {\n if (this.wrappedListeners[i].getListener() === listener) {\n let listenerId = this.wrappedListeners[i].getId();\n await this._invokeWorker(\"daemonRemoveListener\", [listenerId]);\n delete LibraryUtils.WORKER_OBJECTS[this.daemonId].callbacks[\"onBlockHeader_\" + listenerId];\n this.wrappedListeners.splice(i, 1);\n return;\n }\n }\n throw new MoneroError(\"Listener is not registered with daemon\");\n }\n \n getListeners() {\n let listeners = [];\n for (let wrappedListener of this.wrappedListeners) listeners.push(wrappedListener.getListener());\n return listeners;\n }\n \n async getRpcConnection() {\n let config = await this._invokeWorker(\"daemonGetRpcConnection\");\n return new MoneroRpcConnection(config);\n }\n \n async isConnected() {\n return this._invokeWorker(\"daemonIsConnected\");\n }\n \n async getVersion() {\n let versionJson = await this._invokeWorker(\"daemonGetVersion\");\n return new MoneroVersion(versionJson.number, versionJson.isRelease);\n }\n \n async isTrusted() {\n return this._invokeWorker(\"daemonIsTrusted\");\n }\n \n async getHeight() {\n return this._invokeWorker(\"daemonGetHeight\");\n }\n \n async getBlockHash(height) {\n return this._invokeWorker(\"daemonGetBlockHash\", Array.from(arguments));\n }\n \n async getBlockTemplate(walletAddress, reserveSize) {\n return new MoneroBlockTemplate(await this._invokeWorker(\"daemonGetBlockTemplate\", Array.from(arguments)));\n }\n \n async getLastBlockHeader() {\n return new MoneroBlockHeader(await this._invokeWorker(\"daemonGetLastBlockHeader\"));\n }\n \n async getBlockHeaderByHash(blockHash) {\n return new MoneroBlockHeader(await this._invokeWorker(\"daemonGetBlockHeaderByHash\", Array.from(arguments)));\n }\n \n async getBlockHeaderByHeight(height) {\n return new MoneroBlockHeader(await this._invokeWorker(\"daemonGetBlockHeaderByHeight\", Array.from(arguments)));\n }\n \n async getBlockHeadersByRange(startHeight, endHeight) {\n let blockHeadersJson = await this._invokeWorker(\"daemonGetBlockHeadersByRange\", Array.from(arguments));\n let headers = [];\n for (let blockHeaderJson of blockHeadersJson) headers.push(new MoneroBlockHeader(blockHeaderJson));\n return headers;\n }\n \n async getBlockByHash(blockHash) {\n return new MoneroBlock(await this._invokeWorker(\"daemonGetBlockByHash\", Array.from(arguments)));\n }\n \n async getBlocksByHash(blockHashes, startHeight, prune) {\n let blocksJson = await this._invokeWorker(\"daemonGetBlocksByHash\", Array.from(arguments));\n let blocks = [];\n for (let blockJson of blocksJson) blocks.push(new MoneroBlock(blockJson));\n return blocks;\n }\n \n async getBlockByHeight(height) {\n return new MoneroBlock(await this._invokeWorker(\"daemonGetBlockByHeight\", Array.from(arguments)));\n }\n \n async getBlocksByHeight(heights) {\n let blocksJson = await this._invokeWorker(\"daemonGetBlocksByHeight\", Array.from(arguments));\n let blocks = [];\n for (let blockJson of blocksJson) blocks.push(new MoneroBlock(blockJson));\n return blocks;\n }\n \n async getBlocksByRange(startHeight, endHeight) {\n let blocksJson = await this._invokeWorker(\"daemonGetBlocksByRange\", Array.from(arguments));\n let blocks = [];\n for (let blockJson of blocksJson) blocks.push(new MoneroBlock(blockJson));\n return blocks;\n }\n \n async getBlocksByRangeChunked(startHeight, endHeight, maxChunkSize) {\n let blocksJson = await this._invokeWorker(\"daemonGetBlocksByRangeChunked\", Array.from(arguments));\n let blocks = [];\n for (let blockJson of blocksJson) blocks.push(new MoneroBlock(blockJson));\n return blocks;\n }\n \n async getBlockHashes(blockHashes, startHeight) {\n return this._invokeWorker(\"daemonGetBlockHashes\", Array.from(arguments));\n }\n \n async getTxs(txHashes, prune = false) {\n \n // deserialize txs from blocks\n let blocks = [];\n for (let blockJson of await this._invokeWorker(\"daemonGetTxs\", Array.from(arguments))) {\n blocks.push(new MoneroBlock(blockJson));\n }\n \n // collect txs\n let txs = [];\n for (let block of blocks) {\n for (let tx of block.getTxs()) {\n if (!tx.isConfirmed()) tx.setBlock(undefined);\n txs.push(tx);\n }\n }\n return txs;\n }\n \n async getTxHexes(txHashes, prune = false) {\n return this._invokeWorker(\"daemonGetTxHexes\", Array.from(arguments));\n }\n \n async getMinerTxSum(height, numBlocks) {\n return new MoneroMinerTxSum(await this._invokeWorker(\"daemonGetMinerTxSum\", Array.from(arguments)));\n }\n \n async getFeeEstimate(graceBlocks) {\n return new MoneroFeeEstimate(await this._invokeWorker(\"daemonGetFeeEstimate\", Array.from(arguments)));\n }\n \n async submitTxHex(txHex, doNotRelay) {\n return new MoneroSubmitTxResult(await this._invokeWorker(\"daemonSubmitTxHex\", Array.from(arguments)));\n }\n \n async relayTxsByHash(txHashes) {\n return this._invokeWorker(\"daemonRelayTxsByHash\", Array.from(arguments));\n }\n \n async getTxPool() {\n let blockJson = await this._invokeWorker(\"daemonGetTxPool\");\n let txs = new MoneroBlock(blockJson).getTxs();\n for (let tx of txs) tx.setBlock(undefined);\n return txs ? txs : [];\n }\n \n async getTxPoolHashes() {\n return this._invokeWorker(\"daemonGetTxPoolHashes\", Array.from(arguments));\n }\n \n async getTxPoolBacklog() {\n throw new MoneroError(\"Not implemented\");\n }\n \n async getTxPoolStats() {\n return new MoneroTxPoolStats(await this._invokeWorker(\"daemonGetTxPoolStats\"));\n }\n \n async flushTxPool(hashes) {\n return this._invokeWorker(\"daemonFlushTxPool\", Array.from(arguments));\n }\n \n async getKeyImageSpentStatuses(keyImages) {\n return this._invokeWorker(\"daemonGetKeyImageSpentStatuses\", Array.from(arguments));\n }\n \n async getOutputs(outputs) {\n throw new MoneroError(\"Not implemented\");\n }\n \n async getOutputHistogram(amounts, minCount, maxCount, isUnlocked, recentCutoff) {\n let entries = [];\n for (let entryJson of await this._invokeWorker(\"daemonGetOutputHistogram\", [amounts, minCount, maxCount, isUnlocked, recentCutoff])) {\n entries.push(new MoneroOutputHistogramEntry(entryJson));\n }\n return entries;\n }\n \n async getOutputDistribution(amounts, cumulative, startHeight, endHeight) {\n throw new MoneroError(\"Not implemented\");\n }\n \n async getInfo() {\n return new MoneroDaemonInfo(await this._invokeWorker(\"daemonGetInfo\"));\n }\n \n async getSyncInfo() {\n return new MoneroDaemonSyncInfo(await this._invokeWorker(\"daemonGetSyncInfo\"));\n }\n \n async getHardForkInfo() {\n return new MoneroHardForkInfo(await this._invokeWorker(\"daemonGetHardForkInfo\"));\n }\n \n async getAltChains() {\n let altChains = [];\n for (let altChainJson of await this._invokeWorker(\"daemonGetAltChains\")) altChains.push(new MoneroAltChain(altChainJson));\n return altChains;\n }\n \n async getAltBlockHashes() {\n return this._invokeWorker(\"daemonGetAltBlockHashes\");\n }\n \n async getDownloadLimit() {\n return this._invokeWorker(\"daemonGetDownloadLimit\");\n }\n \n async setDownloadLimit(limit) {\n return this._invokeWorker(\"daemonSetDownloadLimit\", Array.from(arguments));\n }\n \n async resetDownloadLimit() {\n return this._invokeWorker(\"daemonResetDownloadLimit\");\n }\n \n async getUploadLimit() {\n return this._invokeWorker(\"daemonGetUploadLimit\");\n }\n \n async setUploadLimit(limit) {\n return this._invokeWorker(\"daemonSetUploadLimit\", Array.from(arguments));\n }\n \n async resetUploadLimit() {\n return this._invokeWorker(\"daemonResetUploadLimit\");\n }\n \n async getPeers() {\n let peers = [];\n for (let peerJson of await this._invokeWorker(\"daemonGetPeers\")) peers.push(new MoneroPeer(peerJson));\n return peers;\n }\n \n async getKnownPeers() {\n let peers = [];\n for (let peerJson of await this._invokeWorker(\"daemonGetKnownPeers\")) peers.push(new MoneroPeer(peerJson));\n return peers;\n }\n \n async setOutgoingPeerLimit(limit) {\n return this._invokeWorker(\"daemonSetIncomingPeerLimit\", Array.from(arguments));\n }\n \n async setIncomingPeerLimit(limit) {\n return this._invokeWorker(\"daemonSetIncomingPeerLimit\", Array.from(arguments));\n }\n \n async getPeerBans() {\n let bans = [];\n for (let banJson of await this._invokeWorker(\"daemonGetPeerBans\")) bans.push(new MoneroBan(banJson));\n return bans;\n }\n\n async setPeerBans(bans) {\n let bansJson = [];\n for (let ban of bans) bansJson.push(ban.toJson());\n return this._invokeWorker(\"daemonSetPeerBans\", [bansJson]);\n }\n \n async startMining(address, numThreads, isBackground, ignoreBattery) {\n return this._invokeWorker(\"daemonStartMining\", Array.from(arguments));\n }\n \n async stopMining() {\n await this._invokeWorker(\"daemonStopMining\")\n }\n \n async getMiningStatus() {\n return new MoneroMiningStatus(await this._invokeWorker(\"daemonGetMiningStatus\"));\n }\n \n async submitBlocks(blockBlobs) {\n throw new MoneroError(\"Not implemented\");\n }\n\n async pruneBlockchain(check) {\n return new MoneroPruneResult(await this._invokeWorker(\"daemonPruneBlockchain\"));\n }\n \n async checkForUpdate() {\n throw new MoneroError(\"Not implemented\");\n }\n \n async downloadUpdate(path) {\n throw new MoneroError(\"Not implemented\");\n }\n \n async stop() {\n while (this.wrappedListeners.length) await this.removeBlockListener(this.wrappedListeners[0].getListener());\n return this._invokeWorker(\"daemonStop\");\n }\n \n async waitForNextBlockHeader() {\n return new MoneroBlockHeader(await this._invokeWorker(\"daemonWaitForNextBlockHeader\"));\n }\n \n // --------------------------- PRIVATE HELPERS ------------------------------\n \n // TODO: duplicated with MoneroWalletFullProxy\n async _invokeWorker(fnName, args) {\n return LibraryUtils.invokeWorker(this.daemonId, fnName, args);\n }\n}\n\n/**\n * Polls a Monero daemon for updates and notifies listeners as they occur.\n * \n * @class\n * @ignore\n */\nclass DaemonPoller {\n \n constructor(daemon) {\n let that = this;\n this._daemon = daemon;\n this._looper = new TaskLooper(async function() { await that.poll(); });\n }\n \n setIsPolling(isPolling) {\n this._isPolling = isPolling;\n if (isPolling) this._looper.start(this._daemon.config.pollInterval);\n else this._looper.stop();\n }\n \n async poll() {\n try {\n \n // get latest block header\n let header = await this._daemon.getLastBlockHeader();\n \n // save first header for comparison\n if (!this._lastHeader) {\n this._lastHeader = await this._daemon.getLastBlockHeader();\n return;\n }\n \n // compare header to last\n if (header.getHash() !== this._lastHeader.getHash()) {\n this._lastHeader = header;\n for (let listener of this._daemon.getListeners()) {\n await listener.onBlockHeader(header); // notify listener\n }\n }\n } catch (err) {\n console.error(\"Failed to background poll daemon header\");\n console.error(err);\n }\n }\n}\n\n/**\n * Internal listener to bridge notifications to external listeners.\n * \n * @private\n */\nclass DaemonWorkerListener {\n \n constructor(listener) {\n this._id = GenUtils.getUUID();\n this._listener = listener;\n }\n \n getId() {\n return this._id;\n }\n \n getListener() {\n return this._listener;\n }\n \n async onBlockHeader(headerJson) {\n return this._listener.onBlockHeader(new MoneroBlockHeader(headerJson));\n }\n}\n\nmodule.exports = MoneroDaemonRpc;","const assert = require(\"assert\");\n\n/**\n * Enumerates connection types.\n * \n * Based on enums.h in monero-project.\n * \n * @hideconstructor\n */\nclass ConnectionType {\n \n /**\n * Asserts that the given connection type is valid.\n */\n static validate(type) {\n assert(type === 0 || type === 1 || type === 2 || type === 3, \"Connection type is invalid: \" + type);\n }\n \n /**\n * Indicates if the given connection type is valid or not.\n */\n static isValid(type) {\n return type === 0 || type === 1 || type === 2 || 3;\n }\n}\n\n/**\n * Invalid connection type (value=0).\n */\nConnectionType.INVALID = 0;\n\n/**\n * IPV4 connection type (value=1).\n */\nConnectionType.IPV4 = 1;\n\n/**\n * IPV6 connection type (value=2).\n */\nConnectionType.IPV6 = 2;\n\n/**\n * TOR connection type (value=3).\n */\nConnectionType.TOR = 3;\n\n/**\n * I2P connection type (value=4).\n */\nConnectionType.I2P = 4;\n\nmodule.exports = ConnectionType;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Models an alternative chain seen by the node.\n */\nclass MoneroAltChain {\n \n constructor(state) {\n state = Object.assign({}, state);\n if (state.difficulty !== undefined && !(state.difficulty instanceof BigInteger)) state.difficulty = BigInteger.parse(state.difficulty);\n this.state = state;\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getDifficulty()) json.difficulty = this.getDifficulty().toString();\n return json;\n }\n \n getBlockHashes(blockHashes) {\n return this.state.blockHashes;\n }\n \n setBlockHashes(blockHashes) {\n this.state.blockHashes = blockHashes;\n return this;\n }\n \n getDifficulty() {\n return this.state.difficulty;\n }\n \n setDifficulty(difficulty) {\n this.state.difficulty = difficulty;\n return this;\n }\n \n getHeight() {\n return this.state.height;\n }\n \n setHeight(height) {\n this.state.height = height;\n return this;\n }\n \n getLength() {\n return this.state.length;\n }\n \n setLength(length) {\n this.state.length = length;\n return this;\n }\n \n getMainChainParentBlockHash() {\n return this.state.mainChainParentBlockHash;\n }\n \n setMainChainParentBlockHash(mainChainParentBlockHash) {\n this.state.mainChainParentBlockHash = mainChainParentBlockHash;\n return this;\n }\n}\n\nmodule.exports = MoneroAltChain;","/**\n * Monero banhammer.\n */\nclass MoneroBan {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n \n getHost() {\n return this.state.host;\n }\n \n setHost(host) {\n this.state.host = host;\n return this;\n }\n \n getIp() {\n return this.state.ip;\n }\n \n setIp(ip) {\n this.state.ip = ip;\n return this;\n }\n \n isBanned() {\n return this.state.isBanned;\n }\n \n setIsBanned(isBanned) {\n this.state.isBanned = isBanned;\n return this;\n }\n \n getSeconds() {\n return this.state.seconds;\n }\n \n setSeconds(seconds) {\n this.state.seconds = seconds;\n return this;\n }\n}\n\nmodule.exports = MoneroBan;","const assert = require(\"assert\");\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroBlockHeader = require(\"./MoneroBlockHeader\");\nconst MoneroTx = require(\"./MoneroTx\");\nconst MoneroTxQuery = require(\"../../wallet/model/MoneroTxQuery\");\nconst MoneroTxWallet = require(\"../../wallet/model/MoneroTxWallet\");\n\n/**\n * Models a Monero block in the blockchain.\n * \n * @extends {MoneroBlockHeader}\n */\nclass MoneroBlock extends MoneroBlockHeader {\n \n /**\n * Construct the model.\n * \n * @param {MoneroBlock|MoneroBlockHeader|object} state is existing state to initialize from (optional)\n * @param {MoneroBlock.DeserializationType} txType informs the tx deserialization type (MoneroTx, MoneroTxWallet, MoneroTxQuery)\n */\n constructor(state, txType) {\n super(state);\n state = this.state;\n \n // deserialize miner tx\n if (state.minerTx && !(state.minerTx instanceof MoneroTx)) state.minerTx = new MoneroTx(state.minerTx).setBlock(this);\n \n // deserialize non-miner txs\n if (state.txs) {\n for (let i = 0; i < state.txs.length; i++) {\n if (txType === MoneroBlock.DeserializationType.TX || txType === undefined) {\n if (!(state.txs[i] instanceof MoneroTx)) state.txs[i] = new MoneroTx(state.txs[i]).setBlock(this);\n } else if (txType === MoneroBlock.DeserializationType.TX_WALLET) {\n if (!(state.txs[i] instanceof MoneroTxWallet)) state.txs[i] = new MoneroTxWallet(state.txs[i]).setBlock(this);\n } else if (txType === MoneroBlock.DeserializationType.TX_QUERY) {\n if (!(state.txs[i] instanceof MoneroTxQuery)) state.txs[i] = new MoneroTxQuery(state.txs[i]).setBlock(this);\n } else {\n throw new Error(\"Unrecognized tx deserialization type: \" + txType);\n }\n }\n }\n }\n \n getHex() {\n return this.state.hex;\n }\n \n setHex(hex) {\n this.state.hex = hex;\n return this;\n }\n \n getMinerTx() {\n return this.state.minerTx;\n }\n \n setMinerTx(minerTx) {\n this.state.minerTx = minerTx;\n return this;\n }\n \n getTxs() {\n return this.state.txs;\n }\n \n setTxs(txs) {\n this.state.txs = txs;\n return this;\n }\n \n getTxHashes() {\n return this.state.txHashes;\n }\n \n setTxHashes(txHashes) {\n this.state.txHashes = txHashes;\n return this;\n }\n \n copy() {\n return new MoneroBlock(this);\n }\n \n toJson() {\n let json = super.toJson();\n if (this.getMinerTx()) json.minerTx = this.getMinerTx().toJson();\n if (this.getTxs()) {\n json.txs = [];\n for (let tx of this.getTxs()) json.txs.push(tx.toJson());\n }\n return json;\n }\n \n merge(block) {\n assert(block instanceof MoneroBlock);\n if (this === block) return this;\n \n // merge header fields\n super.merge(block);\n \n // merge reconcilable block extensions\n this.setHex(GenUtils.reconcile(this.getHex(), block.getHex()));\n this.setTxHashes(GenUtils.reconcile(this.getTxHashes(), block.getTxHashes()));\n \n // merge miner tx\n if (this.getMinerTx() === undefined) this.setMinerTx(block.getMinerTx());\n if (block.getMinerTx() !== undefined) {\n block.getMinerTx().setBlock(this);\n this.getMinerTx().merge(block.getMinerTx());\n }\n \n // merge non-miner txs\n if (block.getTxs() !== undefined) {\n for (let tx of block.getTxs()) {\n tx.setBlock(this);\n MoneroBlock._mergeTx(this.getTxs(), tx);\n }\n }\n\n return this;\n }\n \n toString(indent = 0) {\n let str = super.toString(indent) + \"\\n\";\n str += GenUtils.kvLine(\"Hex\", this.getHex(), indent);\n if (this.getTxs()) {\n str += GenUtils.kvLine(\"Txs\", \"\", indent);\n for (let tx of this.getTxs()) {\n str += tx.toString(indent + 1) + \"\\n\";\n }\n }\n if (this.getMinerTx()) {\n str += GenUtils.kvLine(\"Miner tx\", \"\", indent);\n str += this.getMinerTx().toString(indent + 1) + \"\\n\";\n }\n str += GenUtils.kvLine(\"Txs hashes\", this.getTxHashes(), indent);\n return str[str.length - 1] === \"\\n\" ? str.slice(0, str.length - 1) : str // strip last newline\n }\n \n // private helper to merge txs\n static _mergeTx(txs, tx) {\n for (let aTx of txs) {\n if (aTx.getHash() === tx.getHash()) {\n aTx.merge(tx);\n return;\n }\n }\n txs.push(tx);\n }\n}\n\nMoneroBlock.DeserializationType = {\n TX: 0,\n TX_WALLET: 1,\n TX_QUERY: 2\n}\n\nmodule.exports = MoneroBlock;","const assert = require(\"assert\");\nconst BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\n\n/**\n * Models a Monero block header which contains information about the block.\n * \n * @class\n */\nclass MoneroBlockHeader {\n \n /**\n * Construct the model.\n * \n * @param {MoneroBlockHeader|object} state is existing state to initialize from (optional)\n */\n constructor(state) {\n \n // initialize internal state\n if (!state) state = {};\n else if (state instanceof MoneroBlockHeader) state = state.toJson();\n else if (typeof state === \"object\") state = Object.assign({}, state);\n else throw new MoneroError(\"state must be a MoneroBlockHeader or JavaScript object\");\n this.state = state;\n \n // deserialize BigIntegers\n if (state.difficulty !== undefined && !(state.difficulty instanceof BigInteger)) state.difficulty = BigInteger.parse(state.difficulty);\n if (state.cumulativeDifficulty !== undefined && !(state.cumulativeDifficulty instanceof BigInteger)) state.cumulativeDifficulty = BigInteger.parse(state.cumulativeDifficulty);\n if (state.reward !== undefined && !(state.reward instanceof BigInteger)) state.reward = BigInteger.parse(state.reward);\n }\n \n copy() {\n return new MoneroBlockHeader(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getDifficulty()) json.difficulty = this.getDifficulty().toString();\n if (this.getCumulativeDifficulty()) json.cumulativeDifficulty = this.getCumulativeDifficulty().toString();\n if (this.getReward()) json.reward = this.getReward().toString();\n return json;\n }\n \n getHash() {\n return this.state.hash;\n }\n \n setHash(hash) {\n this.state.hash = hash;\n return this;\n }\n \n /**\n * Return the block's height which is the total number of blocks that have occurred before.\n * \n * @return {number} the block's height\n */\n getHeight() {\n return this.state.height;\n }\n \n /**\n * Set the block's height which is the total number of blocks that have occurred before.\n * \n * @param {number} height is the block's height to set\n * @return {MoneroBlockHeader} a reference to this header for chaining\n */\n setHeight(height) {\n this.state.height = height;\n return this;\n }\n \n getTimestamp() {\n return this.state.timestamp;\n }\n \n setTimestamp(timestamp) {\n this.state.timestamp = timestamp;\n return this;\n }\n \n getSize() {\n return this.state.size;\n }\n \n setSize(size) {\n this.state.size = size;\n return this;\n }\n \n getWeight() {\n return this.state.weight;\n }\n \n setWeight(weight) {\n this.state.weight = weight;\n return this;\n }\n \n getLongTermWeight() {\n return this.state.longTermWeight;\n }\n \n setLongTermWeight(longTermWeight) {\n this.state.longTermWeight = longTermWeight;\n return this;\n }\n \n getDepth() {\n return this.state.depth;\n }\n \n setDepth(depth) {\n this.state.depth = depth;\n return this;\n }\n \n getDifficulty() {\n return this.state.difficulty;\n }\n \n setDifficulty(difficulty) {\n this.state.difficulty = difficulty;\n return this;\n }\n \n getCumulativeDifficulty() {\n return this.state.cumulativeDifficulty;\n }\n \n setCumulativeDifficulty(cumulativeDifficulty) {\n this.state.cumulativeDifficulty = cumulativeDifficulty;\n return this;\n }\n \n getMajorVersion() {\n return this.state.majorVersion;\n }\n \n setMajorVersion(majorVersion) {\n this.state.majorVersion = majorVersion;\n return this;\n }\n \n getMinorVersion() {\n return this.state.minorVersion;\n }\n \n setMinorVersion(minorVersion) {\n this.state.minorVersion = minorVersion;\n return this;\n }\n \n getNonce() {\n return this.state.nonce;\n }\n \n setNonce(nonce) {\n this.state.nonce = nonce;\n return this;\n }\n \n getMinerTxHash() {\n return this.state.minerTxHash;\n }\n \n setMinerTxHash(minerTxHash) {\n this.state.minerTxHash = minerTxHash;\n return this;\n }\n \n getNumTxs() {\n return this.state.numTxs;\n }\n \n setNumTxs(numTxs) {\n this.state.numTxs = numTxs;\n return this;\n }\n \n getOrphanStatus() {\n return this.state.orphanStatus;\n }\n \n setOrphanStatus(orphanStatus) {\n this.state.orphanStatus = orphanStatus;\n return this;\n }\n \n getPrevHash() {\n return this.state.prevHash;\n }\n \n setPrevHash(prevHash) {\n this.state.prevHash = prevHash;\n return this;\n }\n \n getReward() {\n return this.state.reward;\n }\n \n setReward(reward) {\n this.state.reward = reward;\n return this;\n }\n \n getPowHash() {\n return this.state.powHash;\n }\n \n setPowHash(powHash) {\n this.state.powHash = powHash;\n return this;\n }\n \n merge(header) {\n assert(header instanceof MoneroBlockHeader);\n if (this === header) return this;\n this.setHash(GenUtils.reconcile(this.getHash(), header.getHash()));\n this.setHeight(GenUtils.reconcile(this.getHeight(), header.getHeight(), {resolveMax: true})); // height can increase\n this.setTimestamp(GenUtils.reconcile(this.getTimestamp(), header.getTimestamp(), {resolveMax: true})); // block timestamp can increase\n this.setSize(GenUtils.reconcile(this.getSize(), header.getSize()));\n this.setWeight(GenUtils.reconcile(this.getWeight(), header.getWeight()));\n this.setDepth(GenUtils.reconcile(this.getDepth(), header.getDepth()));\n this.setDifficulty(GenUtils.reconcile(this.getDifficulty(), header.getDifficulty()));\n this.setCumulativeDifficulty(GenUtils.reconcile(this.getCumulativeDifficulty(), header.getCumulativeDifficulty()));\n this.setMajorVersion(GenUtils.reconcile(this.getMajorVersion(), header.getMajorVersion()));\n this.setMinorVersion(GenUtils.reconcile(this.getMinorVersion(), header.getMinorVersion()));\n this.setNonce(GenUtils.reconcile(this.getNonce(), header.getNonce()));\n this.setMinerTxHash(GenUtils.reconcile(this.getMinerTxHash(), header.getMinerTxHash()));\n this.setNumTxs(GenUtils.reconcile(this.getNumTxs(), header.getNumTxs()));\n this.setOrphanStatus(GenUtils.reconcile(this.getOrphanStatus(), header.getOrphanStatus()));\n this.setPrevHash(GenUtils.reconcile(this.getPrevHash(), header.getPrevHash()));\n this.setReward(GenUtils.reconcile(this.getReward(), header.getReward()));\n this.setPowHash(GenUtils.reconcile(this.getPowHash(), header.getPowHash()));\n return this;\n }\n \n toString(indent = 0) {\n let str = \"\";\n str += GenUtils.kvLine(\"Hash\", this.getHash(), indent);\n str += GenUtils.kvLine(\"Height\", this.getHeight(), indent);\n str += GenUtils.kvLine(\"Timestamp\", this.getTimestamp(), indent);\n str += GenUtils.kvLine(\"Size\", this.getSize(), indent);\n str += GenUtils.kvLine(\"Weight\", this.getWeight(), indent);\n str += GenUtils.kvLine(\"Depth\", this.getDepth(), indent);\n str += GenUtils.kvLine(\"Difficulty\", this.getDifficulty(), indent);\n str += GenUtils.kvLine(\"Cumulative difficulty\", this.getCumulativeDifficulty(), indent);\n str += GenUtils.kvLine(\"Major version\", this.getMajorVersion(), indent);\n str += GenUtils.kvLine(\"Minor version\", this.getMinorVersion(), indent);\n str += GenUtils.kvLine(\"Nonce\", this.getNonce(), indent);\n str += GenUtils.kvLine(\"Miner tx hash\", this.getMinerTxHash(), indent);\n str += GenUtils.kvLine(\"Num txs\", this.getNumTxs(), indent);\n str += GenUtils.kvLine(\"Orphan status\", this.getOrphanStatus(), indent);\n str += GenUtils.kvLine(\"Prev hash\", this.getPrevHash(), indent);\n str += GenUtils.kvLine(\"Reward\", this.getReward(), indent);\n str += GenUtils.kvLine(\"Pow hash\", this.getPowHash(), indent);\n return str[str.length - 1] === \"\\n\" ? str.slice(0, str.length - 1) : str // strip last newline\n }\n}\n\nmodule.exports = MoneroBlockHeader;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Monero block template to mine.\n */\nclass MoneroBlockTemplate {\n \n constructor(state) {\n state = Object.assign({}, state);\n this.state = state;\n \n // deserialize BigIntegers\n if (state.expectedReward !== undefined && !(state.expectedReward instanceof BigInteger)) state.expectedReward = BigInteger.parse(state.expectedReward);\n if (state.difficulty !== undefined && !(state.difficulty instanceof BigInteger)) state.difficulty = BigInteger.parse(state.difficulty);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getExpectedReward()) json.expectedReward = this.getExpectedReward().toString();\n if (this.getDifficulty()) json.difficulty = this.getDifficulty().toString();\n return json;\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.expectedReward) json.expectedReward = json.expectedReward.toString();\n if (json.difficulty) json.difficulty = json.difficulty.toString();\n return json;\n }\n \n getBlockTemplateBlob() {\n return this.state.blockTemplateBlob;\n }\n \n setBlockTemplateBlob(blockTemplateBlob) {\n this.state.blockTemplateBlob = blockTemplateBlob;\n return this;\n }\n \n getBlockHashingBlob() {\n return this.state.blockHashingBlob;\n }\n \n setBlockHashingBlob(blockHashingBlob) {\n this.state.blockHashingBlob = blockHashingBlob;\n return this;\n }\n \n getDifficulty() {\n return this.state.difficulty;\n }\n \n setDifficulty(difficulty) {\n this.state.difficulty = difficulty;\n return this;\n }\n \n getExpectedReward() {\n return this.state.expectedReward;\n }\n \n setExpectedReward(expectedReward) {\n this.state.expectedReward = expectedReward;\n return this;\n }\n \n getHeight() {\n return this.state.height;\n }\n \n setHeight(height) {\n this.state.height = height;\n return this;\n }\n \n getPrevHash() {\n return this.state.prevId;\n }\n \n setPrevHash(prevId) {\n this.state.prevId = prevId;\n return this;\n }\n \n getReservedOffset() {\n return this.state.reservedOffset;\n }\n \n setReservedOffset(reservedOffset) {\n this.state.reservedOffset = reservedOffset;\n return this;\n }\n \n getSeedHeight() {\n return this.state.height;\n }\n \n setSeedHeight(seedHeight) {\n this.state.seedHeight = seedHeight;\n return this;\n }\n \n getSeedHash() {\n return this.state.seedHash;\n }\n \n setSeedHash(seedHash) {\n this.state.seedHash = seedHash;\n return this;\n }\n \n getNextSeedHash() {\n return this.state.nextSeedHash\n }\n \n setNextSeedHash(nextSeedHash) {\n this.state.nextSeedHash = nextSeedHash;\n return this;\n }\n}\n\nmodule.exports = MoneroBlockTemplate;","/**\n * Monero daemon connection span.\n */\nclass MoneroConnectionSpan {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n \n getConnectionId() {\n return this.state.connectionId;\n }\n\n setConnectionId(connectionId) {\n this.state.connectionId = connectionId;\n return this;\n }\n \n getNumBlocks() {\n return this.state.numBlocks;\n }\n\n setNumBlocks(numBlocks) {\n this.state.numBlocks = numBlocks;\n return this;\n }\n \n getRemoteAddress() {\n return this.state.remoteAddress;\n }\n\n setRemoteAddress(remoteAddress) {\n this.state.remoteAddress = remoteAddress;\n return this;\n }\n \n getRate() {\n return this.state.rate;\n }\n\n setRate(rate) {\n this.state.rate = rate;\n return this;\n }\n \n getSpeed() {\n return this.state.speed;\n }\n\n setSpeed(speed) {\n this.state.speed = speed;\n return this;\n }\n \n getSize() {\n return this.state.size;\n }\n \n setSize(size) {\n this.state.size = size;\n return this;\n }\n \n getStartHeight() {\n return this.state.startHeight;\n }\n \n setStartHeight(startHeight) {\n this.state.startHeight = startHeight;\n return this;\n }\n}\n\nmodule.exports = MoneroConnectionSpan;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Monero daemon info.\n */\nclass MoneroDaemonInfo {\n \n constructor(state) {\n state = Object.assign({}, state);\n this.state = state;\n \n // deserialize BigIntegers\n if (state.difficulty !== undefined && !(state.difficulty instanceof BigInteger)) state.difficulty = BigInteger.parse(state.difficulty);\n if (state.cumulativeDifficulty !== undefined && !(state.cumulativeDifficulty instanceof BigInteger)) state.cumulativeDifficulty = BigInteger.parse(state.cumulativeDifficulty);\n if (state.credits !== undefined && !(state.credits instanceof BigInteger)) state.credits = BigInteger.parse(state.credits);\n }\n \n toJson() {\n let json = Object.assign([], this.state);\n if (json.difficulty) json.difficulty = json.difficulty.toString();\n if (json.cumulativeDifficulty) json.cumulativeDifficulty = json.cumulativeDifficulty.toString();\n if (json.credits) json.credits = json.credits.toString();\n return json;\n }\n \n getVersion() {\n return this.state.version;\n }\n \n setVersion(version) {\n this.state.version = version;\n return this;\n }\n \n getNumAltBlocks() {\n return this.state.numAltBlocks;\n }\n \n setNumAltBlocks(numAltBlocks) {\n this.state.numAltBlocks = numAltBlocks;\n return this;\n }\n \n getBlockSizeLimit() {\n return this.state.blockSizeLimit;\n }\n \n setBlockSizeLimit(blockSizeLimit) {\n this.state.blockSizeLimit = blockSizeLimit;\n return this;\n }\n \n getBlockSizeMedian() {\n return this.state.blockSizeMedian;\n }\n \n setBlockSizeMedian(blockSizeMedian) {\n this.state.blockSizeMedian = blockSizeMedian;\n return this;\n }\n \n getBlockWeightLimit() {\n return this.state.blockWeightLimit;\n }\n \n setBlockWeightLimit(blockWeightLimit) {\n this.state.blockWeightLimit = blockWeightLimit;\n return this;\n }\n \n getBlockWeightMedian() {\n return this.state.blockWeightMedian;\n }\n \n setBlockWeightMedian(blockWeightMedian) {\n this.state.blockWeightMedian = blockWeightMedian;\n return this;\n }\n \n getBootstrapDaemonAddress() {\n return this.state.bootstrapDaemonAddress;\n }\n \n setBootstrapDaemonAddress(bootstrapDaemonAddress) {\n this.state.bootstrapDaemonAddress = bootstrapDaemonAddress;\n return this;\n }\n \n getDifficulty() {\n return this.state.difficulty;\n }\n \n setDifficulty(difficulty) {\n this.state.difficulty = difficulty;\n return this;\n }\n \n getCumulativeDifficulty() {\n return this.state.cumulativeDifficulty;\n }\n \n setCumulativeDifficulty(cumulativeDifficulty) {\n this.state.cumulativeDifficulty = cumulativeDifficulty;\n return this;\n }\n \n getFreeSpace() {\n return this.state.freeSpace;\n }\n \n setFreeSpace(freeSpace) {\n this.state.freeSpace = freeSpace;\n return this;\n }\n \n getNumOfflinePeers() {\n return this.state.numOfflinePeers;\n }\n \n setNumOfflinePeers(numOfflinePeers) {\n this.state.numOfflinePeers = numOfflinePeers;\n return this;\n }\n \n getNumOnlinePeers() {\n return this.state.numOnlinePeers;\n }\n \n setNumOnlinePeers(numOnlinePeers) {\n this.state.numOnlinePeers = numOnlinePeers;\n return this;\n }\n \n getHeight() {\n return this.state.height;\n }\n \n setHeight(height) {\n this.state.height = height;\n return this;\n }\n \n getHeightWithoutBootstrap() {\n return this.state.heightWithoutBootstrap;\n }\n \n setHeightWithoutBootstrap(heightWithoutBootstrap) {\n this.state.heightWithoutBootstrap = heightWithoutBootstrap;\n return this;\n }\n \n getNetworkType() {\n return this.state.networkType;\n }\n\n setNetworkType(networkType) {\n this.state.networkType = networkType;\n return this;\n }\n\n isOffline() {\n return this.state.isOffline;\n }\n \n setIsOffline(isOffline) {\n this.state.isOffline = isOffline;\n return this;\n }\n \n getNumIncomingConnections() {\n return this.state.numIncomingConnections;\n }\n \n setNumIncomingConnections(numIncomingConnections) {\n this.state.numIncomingConnections = numIncomingConnections;\n return this;\n }\n \n getNumOutgoingConnections() {\n return this.state.numOutgoingConnections;\n }\n \n setNumOutgoingConnections(numOutgoingConnections) {\n this.state.numOutgoingConnections = numOutgoingConnections;\n return this;\n }\n \n getNumRpcConnections() {\n return this.state.numRpcConnections;\n }\n \n setNumRpcConnections(numRpcConnections) {\n this.state.numRpcConnections = numRpcConnections;\n return this;\n }\n \n getStartTimestamp() {\n return this.state.startTimestamp;\n }\n \n setStartTimestamp(startTimestamp) {\n this.state.startTimestamp = startTimestamp;\n return this;\n }\n \n getAdjustedTimestamp() {\n return this.state.adjustedTimestamp;\n }\n \n setAdjustedTimestamp(adjustedTimestamp) {\n this.state.adjustedTimestamp = adjustedTimestamp;\n return this;\n }\n \n getTarget() {\n return this.state.target;\n }\n \n setTarget(target) {\n this.state.target = target;\n return this;\n }\n \n getTargetHeight() {\n return this.state.targetHeight;\n }\n \n setTargetHeight(targetHeight) {\n this.state.targetHeight = targetHeight;\n return this;\n }\n \n getTopBlockHash() {\n return this.state.topBlockHash;\n }\n \n setTopBlockHash(topBlockHash) {\n this.state.topBlockHash = topBlockHash;\n return this;\n }\n \n getNumTxs() {\n return this.state.numTxs;\n }\n \n setNumTxs(numTxs) {\n this.state.numTxs = numTxs;\n return this;\n }\n \n getNumTxsPool() {\n return this.state.numTxsPool;\n }\n \n setNumTxsPool(numTxsPool) {\n this.state.numTxsPool = numTxsPool;\n return this;\n }\n \n getWasBootstrapEverUsed() {\n return this.state.wasBootstrapEverUsed;\n }\n \n setWasBootstrapEverUsed(wasBootstrapEverUsed) {\n this.state.wasBootstrapEverUsed = wasBootstrapEverUsed;\n return this;\n }\n \n getDatabaseSize() {\n return this.state.databaseSize;\n }\n \n setDatabaseSize(databaseSize) {\n this.state.databaseSize = databaseSize;\n return this;\n }\n \n getUpdateAvailable() {\n return this.state.updateAvailable;\n }\n \n setUpdateAvailable(updateAvailable) {\n this.state.updateAvailable = updateAvailable;\n return this;\n }\n \n getCredits() {\n return this.state.credits;\n }\n \n setCredits(credits) {\n this.state.credits = credits;\n return this;\n }\n \n isBusySyncing() {\n return this.state.isBusySyncing;\n }\n \n setIsBusySyncing(isBusySyncing) {\n this.state.isBusySyncing = isBusySyncing;\n return this;\n }\n \n isSynchronized() {\n return this.state.isSynchronized;\n }\n \n setIsSynchronized(isSynchronized) {\n this.state.isSynchronized = isSynchronized;\n return this;\n }\n \n isRestricted() {\n return this.state.isRestricted;\n }\n \n setIsRestricted(isRestricted) {\n this.state.isRestricted = isRestricted;\n return this;\n }\n}\n\nmodule.exports = MoneroDaemonInfo;","/**\n * Receives notifications as a daemon is updated.\n */\nclass MoneroDaemonListener {\n \n /**\n * Called when a new block is added to the chain.\n * \n * @param {MoneroBlockHeader} header - the header of the block added to the chain\n */\n async onBlockHeader(header) {\n this.lastHeader = header;\n }\n \n /**\n * Get the last notified block header.\n * \n * @return {MoneroBlockHeader} the last notified block header\n */\n getLastBlockHeader() {\n return this.lastHeader;\n }\n}\n\nmodule.exports = MoneroDaemonListener;\n","const BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst MoneroConnectionSpan = require(\"./MoneroConnectionSpan\");\nconst MoneroPeer = require(\"./MoneroPeer\");\n\n/**\n * Models daemon synchronization information.\n */\nclass MoneroDaemonSyncInfo {\n \n constructor(state) {\n \n // copy state\n state = Object.assign({}, state);\n \n // deserialize if necessary\n if (state.peers) {\n for (let i = 0; i < state.peers.length; i++) {\n if (!(state.peers[i] instanceof MoneroPeer)) {\n state.peers[i] = new MoneroPeer(state.peers[i]);\n }\n }\n }\n if (state.spans) {\n for (let i = 0; i < state.spans.length; i++) {\n if (!(state.spans[i] instanceof MoneroConnectionSpan)) {\n state.spans[i] = new MoneroConnectionSpan(state.spans[i]);\n }\n }\n }\n if (state.credits !== undefined && !(state.credits instanceof BigInteger)) state.credits = BigInteger.parse(state.credits);\n \n // assign internal state\n this.state = state;\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.peers) {\n for (let i = 0; i < json.peers.length; i++) {\n json.peers[i] = json.peers[i].toJson();\n }\n }\n if (json.spans) {\n for (let i = 0; i < json.spans.length; i++) {\n json.spans[i] = json.spans[i].toJson();\n }\n }\n if (json.credits) json.credits = json.credits.toString();\n return json;\n }\n \n getHeight() {\n return this.state.height;\n }\n \n setHeight(height) {\n this.state.height = height;\n return this;\n }\n \n getPeers() {\n return this.state.peers;\n }\n \n setPeers(peers) {\n this.state.peers = peers;\n return this;\n }\n \n getSpans() {\n return this.state.spans;\n }\n \n setSpans(spans) {\n this.state.spans = spans;\n return this;\n }\n \n getTargetHeight() {\n return this.state.targetHeight;\n }\n \n setTargetHeight(targetHeight) {\n this.state.targetHeight = targetHeight;\n return this;\n }\n \n getNextNeededPruningSeed() {\n return this.state.nextNeededPruningSeed;\n }\n \n setNextNeededPruningSeed(nextNeededPruningSeed) {\n this.state.nextNeededPruningSeed = nextNeededPruningSeed;\n return this;\n }\n \n getOverview() {\n return this.state.overview;\n }\n \n setOverview(overview) {\n this.state.overview = overview;\n return this;\n }\n \n getCredits() {\n return this.state.credits;\n }\n \n setCredits(credits) {\n this.state.credits = credits;\n return this;\n }\n \n getTopBlockHash() {\n return this.state.topBlockHash;\n }\n \n setTopBlockHash(topBlockHash) {\n this.state.topBlockHash = topBlockHash;\n return this;\n }\n}\n\nmodule.exports = MoneroDaemonSyncInfo;","/**\n * Models the result of checking for a daemon update.\n */\nclass MoneroDaemonUpdateCheckResult {\n \n /**\n * Deep copy constructor.\n * \n * @param {MoneroDaemonUpdateCheckResult} is an existing result to deep copy from\n */\n constructor(result) {\n this.state = {};\n if (result !== undefined) {\n assert(result instanceof MoneroDaemonUpdateCheckResult);\n this.setIsUpdateAvailable(result.isUpdateAvailable());\n this.setVersion(result.getVersion());\n this.setHash(result.getHash());\n this.setAutoUri(result.getAutoUri());\n this.setUserUri(result.getUserUri());\n }\n }\n \n /**\n * Indicates if an update is available.\n * \n * @return {boolean} true if an update is available, false otherwise\n */\n isUpdateAvailable() {\n return this.state.isUpdateAvailable;\n }\n \n setIsUpdateAvailable(isUpdateAvailable) {\n this.state.isUpdateAvailable = isUpdateAvailable;\n return this;\n }\n \n /**\n * Get the update's version.\n * \n * @return {string} is the update's version\n */\n getVersion() {\n return this.state.version;\n }\n \n setVersion(version) {\n this.state.version = version;\n return this;\n }\n \n /**\n * Get the update's hash.\n * \n * @return {string} is the update's hash\n */\n getHash() {\n return this.state.hash;\n }\n \n setHash(hash) {\n this.state.hash = hash;\n return this;\n }\n \n /**\n * Get the uri to automatically download the update.\n * \n * @return {string} is the uri to automatically download the update\n */\n getAutoUri() {\n return this.state.autoUri;\n }\n \n setAutoUri(autoUri) {\n this.state.autoUri = autoUri;\n return this;\n }\n \n /**\n * Get the uri to manually download the update.\n * \n * @return {string} is the uri to manually download the update\n */\n getUserUri() {\n return this.state.userUri;\n }\n \n setUserUri(userUri) {\n this.state.userUri = userUri;\n return this;\n }\n}\n\nmodule.exports = MoneroDaemonUpdateCheckResult;","const MoneroDaemonUpdateCheckResult = require(\"./MoneroDaemonUpdateCheckResult\");\n\n/**\n * Models the result of downloading an update.\n */\nclass MoneroDaemonUpdateDownloadResult extends MoneroDaemonUpdateCheckResult {\n \n /**\n * Construct a download result.\n * \n * @param {MoneroDaemonUpdateCheckResult} is an existing result to copy from\n */\n constructor(result) {\n super(result);\n }\n \n /**\n * Get the path the update was downloaded to.\n * \n * @return {string} is the path the update was downloaded to\n */\n getDownloadPath() {\n return this.state.downloadPath;\n }\n \n setDownloadPath(downloadPath) {\n this.state.downloadPath = downloadPath;\n return this;\n }\n}\n\nmodule.exports = MoneroDaemonUpdateDownloadResult;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\n\n/**\n * Models a Monero fee estimate.\n */\nclass MoneroFeeEstimate {\n \n /**\n * Construct the model.\n * \n * @param {MoneroFeeEstimate|object} state - MoneroFeeEstimate or JS object\n */\n constructor(state) {\n if (!state) this.state = {};\n else if (state instanceof MoneroFeeEstimate) this.state = state.toJson();\n else if (typeof state === \"object\") this.state = Object.assign({}, state);\n else throw new MoneroError(\"state must be a MoneroFeeEstimate or JavaScript object\");\n \n // deserialize\n if (this.state.fee !== undefined && !(this.state.fee instanceof BigInteger)) this.state.fee = BigInteger.parse(this.state.fee);\n if (this.state.fees !== undefined) {\n for (let i = 0; i < this.state.fees.length; i++) {\n if (!(this.state.fees[i] instanceof BigInteger)) this.state.fees[i] = BigInteger.parse(this.state.fees[i]);\n }\n }\n if (this.state.quantizationMask !== undefined && !(this.state.quantizationMask instanceof BigInteger)) this.state.quantizationMask = BigInteger.parse(this.state.quantizationMask);\n }\n\n getFee() {\n return this.state.fee;\n }\n\n setFee(fee) {\n this.state.fee = fee;\n return this;\n }\n\n getFees() {\n return this.state.fees;\n }\n\n setFees(fees) {\n this.state.fees = fees;\n return this;\n }\n \n getQuantizationMask() {\n return this.state.quantizationMask;\n }\n\n setQuantizationMask(quantizationMask) {\n this.state.quantizationMask = quantizationMask;\n return this;\n }\n \n copy() {\n return new MoneroFeeEstimate(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getFee()) json.fee = this.getFee().toString();\n if (this.getFees()) for (let i = 0; i < this.getFees().length; i++) json.fees[i] = this.getFees()[i].toString();\n if (this.getQuantizationMask()) json.quantizationMask = this.getQuantizationMask().toString();\n return json;\n }\n \n toString(indent = 0) {\n let str = \"\";\n let json = this.toJson();\n str += GenUtils.kvLine(\"Fee\", json.fee, indent);\n str += GenUtils.kvLine(\"Fees\", json.fees, indent);\n str += GenUtils.kvLine(\"Quantization mask\", json.quantizationMask, indent);\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroFeeEstimate;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Monero hard fork info.\n */\nclass MoneroHardForkInfo {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n if (this.state.credits !== undefined && !(this.state.credits instanceof BigInteger)) this.state.credits = BigInteger.parse(this.state.credits);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.credits) json.credits = json.credits.toString();\n return json;\n }\n \n getEarliestHeight() {\n return this.state.earliestHeight;\n }\n\n setEarliestHeight(earliestHeight) {\n this.state.earliestHeight = earliestHeight;\n return this;\n }\n\n isEnabled() {\n return this.state.isEnabled;\n }\n\n setIsEnabled(isEnabled) {\n this.state.isEnabled = isEnabled;\n return this;\n }\n\n getState() {\n return this.state.state;\n }\n\n setState(state) {\n this.state.state = state;\n return this;\n }\n\n getThreshold() {\n return this.state.threshold;\n }\n\n setThreshold(threshold) {\n this.state.threshold = threshold;\n return this;\n }\n\n getVersion() {\n return this.state.version;\n }\n\n setVersion(version) {\n this.state.version = version;\n return this;\n }\n\n getNumVotes() {\n return this.state.numVotes;\n }\n\n setNumVotes(numVotes) {\n this.state.numVotes = numVotes;\n return this;\n }\n\n getWindow() {\n return this.state.window;\n }\n\n setWindow(window) {\n this.state.window = window;\n return this;\n }\n\n getVoting() {\n return this.state.voting;\n }\n\n setVoting(voting) {\n this.state.voting = voting;\n return this;\n }\n \n getCredits() {\n return this.state.credits;\n }\n \n setCredits(credits) {\n this.state.credits = credits;\n return this;\n }\n \n getTopBlockHash() {\n return this.state.topBlockHash;\n }\n \n setTopBlockHash(topBlockHash) {\n this.state.topBlockHash = topBlockHash;\n return this;\n }\n}\n\nmodule.exports = MoneroHardForkInfo;","const assert = require(\"assert\");\nconst GenUtils = require(\"../../common/GenUtils\");\n\n/**\n * Models a Monero key image.\n */\nclass MoneroKeyImage {\n \n /**\n * Construct the model.\n * \n * @param {MoneroKeyImage|object|string} stateOrHex is a MoneroKeyImage, JS object, or hex string to initialize from (optional)\n * @param {string} signature is the key image's signature\n */\n constructor(stateOrHex, signature) {\n if (!stateOrHex) this.state = {};\n else if (stateOrHex instanceof MoneroKeyImage) this.state = stateOrHex.toJson();\n else if (typeof stateOrHex === \"object\") this.state = Object.assign({}, stateOrHex);\n else if (typeof stateOrHex === \"string\") {\n this.state = {};\n this.setHex(stateOrHex);\n this.setSignature(signature);\n } else {\n throw new MoneroError(\"stateOrHex must be a MoneroKeyImage, JavaScript object, or string\");\n }\n }\n\n getHex() {\n return this.state.hex;\n }\n\n setHex(hex) {\n this.state.hex = hex;\n return this;\n }\n\n getSignature() {\n return this.state.signature;\n }\n\n setSignature(signature) {\n this.state.signature = signature;\n return this;\n }\n \n copy() {\n return new MoneroKeyImage(this);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n \n merge(keyImage) {\n assert(keyImage instanceof MoneroKeyImage);\n if (keyImage === this) return this;\n this.setHex(GenUtils.reconcile(this.getHex(), keyImage.getHex()));\n this.setSignature(GenUtils.reconcile(this.getSignature(), keyImage.getSignature()));\n return this;\n }\n \n toString(indent = 0) {\n let str = \"\";\n str += GenUtils.kvLine(\"Hex\", this.getHex(), indent);\n str += GenUtils.kvLine(\"Signature\", this.getSignature(), indent);\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroKeyImage;","/**\n * Enumerate key image spent statuses.\n * \n * @hideconstructor\n */\nclass MoneroKeyImageSpentStatus {}\n\n/**\n * Key image is not spent (value=0).\n */\nMoneroKeyImageSpentStatus.NOT_SPENT = 0;\n\n/**\n * Key image is confirmed (value=1).\n */\nMoneroKeyImageSpentStatus.CONFIRMED = 1;\n\n/**\n * Key image is in the pool (value=2).\n */\nMoneroKeyImageSpentStatus.TX_POOL = 2;\n\nmodule.exports = MoneroKeyImageSpentStatus;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Model for the summation of miner emissions and fees.\n */\nclass MoneroMinerTxSum {\n \n constructor(state) {\n state = Object.assign({}, state);\n this.state = state;\n \n // deserialize BigIntegers\n if (state.emissionSum !== undefined && !(state.emissionSum instanceof BigInteger)) state.emissionSum = BigInteger.parse(state.emissionSum);\n if (state.feeSum !== undefined && !(state.feeSum instanceof BigInteger)) state.feeSum = BigInteger.parse(state.feeSum);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getEmissionSum()) json.emissionSum = this.getEmissionSum().toString();\n if (this.getFeeSum()) json.feeSum = this.getFeeSum().toString();\n return json;\n }\n \n getEmissionSum() {\n return this.state.emissionSum;\n }\n \n setEmissionSum(emissionSum) {\n this.state.emissionSum = emissionSum;\n return this;\n }\n \n getFeeSum() {\n return this.state.feeSum;\n }\n \n setFeeSum(feeSum) {\n this.state.feeSum = feeSum;\n return this;\n }\n}\n\nmodule.exports = MoneroMinerTxSum;","/**\n * Models daemon mining status.\n */\nclass MoneroMiningStatus {\n \n constructor(state) {\n if (!state) state = {};\n else if (state instanceof MoneroMiningStatus) state = state.toJson();\n else if (typeof state === \"object\") state = Object.assign({}, state);\n else throw new MoneroError(\"state must be a MoneroMiningStatus or JavaScript object\");\n this.state = state;\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n \n isActive() {\n return this.state.isActive;\n }\n \n setIsActive(isActive) {\n this.state.isActive = isActive;\n return this;\n }\n \n getAddress() {\n return this.state.address;\n }\n \n setAddress(address) {\n this.state.address = address;\n return this;\n }\n \n getSpeed() {\n return this.state.speed;\n }\n \n setSpeed(speed) {\n this.state.speed = speed;\n return this;\n }\n \n getNumThreads() {\n return this.state.numThreads;\n }\n \n setNumThreads(numThreads) {\n this.state.numThreads = numThreads;\n return this;\n }\n \n isBackground() {\n return this.state.isBackground;\n }\n \n setIsBackground(isBackground) {\n this.state.isBackground = isBackground;\n return this;\n }\n}\n\nmodule.exports = MoneroMiningStatus;","const MoneroError = require(\"../../common/MoneroError\");\n\n/**\n * Defines the Monero network types (mainnet, testnet, and stagenet).\n * \n * @hideconstructor\n */\nclass MoneroNetworkType {\n \n /**\n * Validates the given network type.\n * \n * @param {int} networkType - the network type to validate as a numeric\n */\n static validate(networkType) {\n if (networkType !== 0 && networkType !== 1 && networkType !== 2) throw new MoneroError(\"Network type is invalid: \" + networkType);\n }\n \n /**\n * Indicates if the given network type is valid or not.\n * \n * @param {int} networkType - the network type to validate as a numeric\n * @return {boolean} true if the network type is valid, false otherwise\n */\n static isValid(networkType) {\n return networkType === 0 || networkType === 1 || networkType === 2;\n }\n \n /**\n * Parse the given string as a network type.\n * \n * @param {string} networkTypeStr - \"mainnet\", \"testnet\", or \"stagenet\" (case insensitive)\n * @return {int} the network type as a numeric\n */\n static parse(networkTypeStr) {\n let str = (\"\" + networkTypeStr).toLowerCase();\n switch (str) {\n case \"mainnet\": return MoneroNetworkType.MAINNET;\n case \"testnet\": return MoneroNetworkType.TESTNET;\n case \"stagenet\": return MoneroNetworkType.STAGENET;\n default: throw new MoneroError(\"Invalid network type to parse: '\" + networkTypeStr + \"'\");\n }\n }\n \n /**\n * Get the network type in human-readable form.\n *\n * @return {string} the network type in human-readable form\n */\n static toString(networkType) {\n if (networkType === 0) return \"mainnet\";\n if (networkType === 1) return \"testnet\";\n if (networkType === 2) return \"stagenet\";\n throw new MoneroError(\"Invalid network type: \" + networkType);\n }\n}\n\n/**\n * Mainnet (value=0).\n */\nMoneroNetworkType.MAINNET = 0;\n\n/**\n * Testnet (value=1).\n */\nMoneroNetworkType.TESTNET = 1;\n\n/**\n * Stagnet (value=2).\n */\nMoneroNetworkType.STAGENET = 2;\n\nmodule.exports = MoneroNetworkType;","const assert = require(\"assert\");\nconst BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroKeyImage = require(\"./MoneroKeyImage\");\n\n/**\n * Models a Monero transaction output.\n * \n * @class\n */\nclass MoneroOutput {\n \n /**\n * Construct the model.\n * \n * @param {MoneroOutput|object} state is existing state to initialize from (optional)\n */\n constructor(state) {\n \n // initialize internal state\n if (!state) state = {};\n else if (state instanceof MoneroOutput) state = state.toJson();\n else if (typeof state === \"object\") state = Object.assign({}, state);\n else throw new MoneroError(\"state must be a MoneroOutput or JavaScript object\");\n this.state = state;\n \n // deserialize fields if necessary\n if (state.amount !== undefined && !(state.amount instanceof BigInteger)) state.amount = BigInteger.parse(state.amount);\n if (state.keyImage && !(state.keyImage instanceof MoneroKeyImage)) state.keyImage = new MoneroKeyImage(state.keyImage);\n }\n \n getTx() {\n return this.state.tx;\n }\n \n setTx(tx) {\n this.state.tx = tx;\n return this;\n }\n \n getKeyImage() {\n return this.state.keyImage;\n }\n\n setKeyImage(keyImage) {\n assert(keyImage === undefined || keyImage instanceof MoneroKeyImage);\n this.state.keyImage = keyImage;\n return this;\n }\n \n getAmount() {\n return this.state.amount;\n }\n\n setAmount(amount) {\n this.state.amount = amount;\n return this;\n }\n \n getIndex() {\n return this.state.index;\n }\n \n setIndex(index) {\n this.state.index = index;\n return this;\n }\n \n getRingOutputIndices() {\n return this.state.ringOutputIndices;\n }\n \n setRingOutputIndices(ringOutputIndices) {\n this.state.ringOutputIndices = ringOutputIndices;\n return this;\n }\n \n getStealthPublicKey() {\n return this.state.stealthPublicKey;\n }\n \n setStealthPublicKey(stealthPublicKey) {\n this.state.stealthPublicKey = stealthPublicKey;\n return this;\n }\n \n copy() {\n return new MoneroOutput(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getAmount()) json.amount = this.getAmount() ? this.getAmount().toString() : undefined;\n if (this.getKeyImage()) json.keyImage = this.getKeyImage() ? this.getKeyImage().toJson() : undefined;\n delete json.tx;\n return json;\n }\n \n merge(output) {\n assert(output instanceof MoneroOutput);\n if (this === output) return this;\n \n // merge txs if they're different which comes back to merging outputs\n if (this.getTx() !== output.getTx()) this.getTx().merge(output.getTx());\n \n // otherwise merge output fields\n else {\n if (this.getKeyImage() === undefined) this.setKeyImage(output.getKeyImage());\n else if (output.getKeyImage() !== undefined) this.getKeyImage().merge(output.getKeyImage());\n this.setAmount(GenUtils.reconcile(this.getAmount(), output.getAmount()));\n this.setIndex(GenUtils.reconcile(this.getIndex(), output.getIndex()));\n }\n\n return this;\n }\n \n toString(indent = 0) {\n let str = \"\";\n if (this.getKeyImage()) {\n str += GenUtils.kvLine(\"Key image\", \"\", indent);\n str += this.getKeyImage().toString(indent + 1) + \"\\n\";\n }\n str += GenUtils.kvLine(\"Amount\", this.getAmount(), indent);\n str += GenUtils.kvLine(\"Index\", this.getIndex(), indent);\n str += GenUtils.kvLine(\"Ring output indices\", this.getRingOutputIndices(), indent);\n str += GenUtils.kvLine(\"Stealth public key\", this.getStealthPublicKey(), indent);\n return str === \"\" ? str : str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroOutput;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Entry in a Monero output histogram (see get_output_histogram of Daemon RPC documentation).\n */\nclass MoneroOutputHistogramEntry {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n if (this.state.amount !== undefined && !(this.state.amount instanceof BigInteger)) this.state.amount = BigInteger.parse(this.state.amount);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.amount) json.amount = json.amount.toString();\n return json;\n }\n \n getAmount() {\n return this.state.amount;\n }\n \n setAmount(amount) {\n this.state.amount = amount;\n return this;\n }\n\n getNumInstances() {\n return this.state.numInstances;\n }\n\n setNumInstances(numInstances) {\n this.state.numInstances = numInstances;\n return this;\n }\n\n getNumUnlockedInstances() {\n return this.state.numUnlockedInstances;\n }\n\n setNumUnlockedInstances(numUnlockedInstances) {\n this.state.numUnlockedInstances = numUnlockedInstances;\n return this;\n }\n\n getNumRecentInstances() {\n return this.state.numRecentInstances;\n }\n\n setNumRecentInstances(numRecentInstances) {\n this.state.numRecentInstances = numRecentInstances;\n return this;\n }\n}\n\nmodule.exports = MoneroOutputHistogramEntry;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Models a peer to the daemon.\n */\nclass MoneroPeer {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n if (this.state.rpcCreditsPerHash !== undefined && !(this.state.rpcCreditsPerHash instanceof BigInteger)) this.state.rpcCreditsPerHash = BigInteger.parse(this.state.rpcCreditsPerHash);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.rpcCreditsPerHash) json.rpcCreditsPerHash = json.rpcCreditsPerHash.toString();\n return json;\n }\n \n getId() {\n return this.state.id;\n }\n\n setId(id) {\n this.state.id = id;\n return this;\n }\n\n getAddress() {\n return this.state.address;\n }\n\n setAddress(address) {\n this.state.address = address;\n return this;\n }\n\n getHost() {\n return this.state.host;\n }\n\n setHost(host) {\n this.state.host = host;\n return this;\n }\n\n getPort() {\n return this.state.port;\n }\n\n setPort(port) {\n this.state.port = port;\n return this;\n }\n \n /**\n * Indicates if the peer was online when last checked (aka \"white listed\" as\n * opposed to \"gray listed\").\n * \n * @return {boolean} true if peer was online when last checked, false otherwise\n */\n isOnline() {\n return this.state.isOnline;\n }\n \n setIsOnline(isOnline) {\n this.state.isOnline = isOnline;\n return this;\n }\n \n getLastSeenTimestamp() {\n return this.state.lastSeenTimestamp;\n }\n \n setLastSeenTimestamp(lastSeenTimestamp) {\n this.state.lastSeenTimestamp = lastSeenTimestamp;\n return this;\n }\n \n getPruningSeed() {\n return this.state.pruningSeed;\n }\n \n setPruningSeed(pruningSeed) {\n this.state.pruningSeed = pruningSeed;\n return this;\n }\n \n getRpcPort() {\n return this.state.rpcPort;\n }\n\n setRpcPort(rpcPort) {\n this.state.rpcPort = rpcPort;\n return this;\n }\n \n getRpcCreditsPerHash() {\n return this.state.rpcCreditsPerHash;\n }\n \n setRpcCreditsPerHash(rpcCreditsPerHash) {\n this.state.rpcCreditsPerHash = rpcCreditsPerHash;\n return this;\n }\n \n getId() {\n return this.state.id;\n }\n\n setId(id) {\n this.state.id = id;\n return this;\n }\n\n getAvgDownload() {\n return this.state.avgDownload;\n }\n\n setAvgDownload(avgDownload) {\n this.state.avgDownload = avgDownload;\n return this;\n }\n\n getAvgUpload() {\n return this.state.avgUpload;\n }\n\n setAvgUpload(avgUpload) {\n this.state.avgUpload = avgUpload;\n return this;\n }\n\n getCurrentDownload() {\n return this.state.currentDownload;\n }\n\n setCurrentDownload(currentDownload) {\n this.state.currentDownload = currentDownload;\n return this;\n }\n\n getCurrentUpload() {\n return this.state.currentUpload;\n }\n\n setCurrentUpload(currentUpload) {\n this.state.currentUpload = currentUpload;\n return this;\n }\n\n getHeight() {\n return this.state.height;\n }\n\n setHeight(height) {\n this.state.height = height;\n return this;\n }\n\n isIncoming() {\n return this.state.isIncoming;\n }\n\n setIsIncoming(isIncoming) {\n this.state.isIncoming = isIncoming;\n return this;\n }\n\n getLiveTime() {\n return this.state.liveTime;\n }\n\n setLiveTime(liveTime) {\n this.state.liveTime = liveTime;\n return this;\n }\n\n isLocalIp() {\n return this.state.isLocalIp;\n }\n\n setIsLocalIp(isLocalIp) {\n this.state.isLocalIp = isLocalIp;\n return this;\n }\n\n isLocalHost() {\n return this.state.isLocalHost;\n }\n\n setIsLocalHost(isLocalHost) {\n this.state.isLocalHost = isLocalHost;\n return this;\n }\n\n getNumReceives() {\n return this.state.numReceives;\n }\n\n setNumReceives(numReceives) {\n this.state.numReceives = numReceives;\n return this;\n }\n\n getNumSends() {\n return this.state.numSends;\n }\n\n setNumSends(numSends) {\n this.state.numSends = numSends;\n return this;\n }\n\n getReceiveIdleTime() {\n return this.state.receiveIdleTime;\n }\n\n setReceiveIdleTime(receiveIdleTime) {\n this.state.receiveIdleTime = receiveIdleTime;\n return this;\n }\n\n getSendIdleTime() {\n return this.state.sendIdleTime;\n }\n\n setSendIdleTime(sendIdleTime) {\n this.state.sendIdleTime = sendIdleTime;\n return this;\n }\n\n getState() {\n return this.state.state;\n }\n\n setState(state) {\n this.state.state = state;\n return this;\n }\n\n getNumSupportFlags() {\n return this.state.numSupportFlags;\n }\n\n setNumSupportFlags(numSupportFlags) {\n this.state.numSupportFlags = numSupportFlags;\n return this;\n }\n \n getType() {\n return this.state.type;\n }\n \n setType(type) {\n this.state.type = type;\n return this;\n }\n}\n\nmodule.exports = MoneroPeer;","/**\n * Result of pruning the blockchain.\n */\nclass MoneroPruneResult {\n \n constructor(state) {\n state = Object.assign({}, state);\n this.state = state;\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.isPruned()) json.isPruned = this.isPruned();\n if (this.getPruningSeed()) json.pruningSeed = this.getPruningSeed();\n return json;\n }\n \n isPruned() {\n return this.state.isPruned;\n }\n \n setIsPruned(isPruned) {\n this.state.isPruned = isPruned;\n return this;\n }\n \n getPruningSeed() {\n return this.state.pruningSeed;\n }\n \n setPruningSeed(pruningSeed) {\n this.state.pruningSeed = pruningSeed;\n return this;\n }\n}\n\nmodule.exports = MoneroPruneResult;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Models the result from submitting a tx to a daemon.\n */\nclass MoneroSubmitTxResult {\n \n constructor(state) {\n state = Object.assign({}, state);\n this.state = state;\n \n // deserialize BigIntegers\n if (state.credits !== undefined && !(state.credits instanceof BigInteger)) state.credits = BigInteger.parse(state.credits);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.credits) json.credits = json.credits.toString();\n return json;\n }\n \n isGood() {\n return this.state.isGood;\n }\n \n setIsGood(isGood) {\n this.state.isGood = isGood;\n return this;\n }\n \n isRelayed() {\n return this.state.isRelayed;\n }\n \n setIsRelayed(isRelayed) {\n this.state.isRelayed = isRelayed;\n return this;\n }\n \n isDoubleSpendSeen() {\n return this.state.isDoubleSpendSeen;\n }\n \n setIsDoubleSpend(isDoubleSpendSeen) {\n this.state.isDoubleSpendSeen = isDoubleSpendSeen\n return this;\n }\n \n isFeeTooLow() {\n return this.state.isFeeTooLow;\n }\n \n setIsFeeTooLow(isFeeTooLow) {\n this.state.isFeeTooLow = isFeeTooLow;\n return this;\n }\n \n isMixinTooLow() {\n return this.state.isMixinTooLow;\n }\n \n setIsMixinTooLow(isMixinTooLow) {\n this.state.isMixinTooLow = isMixinTooLow;\n return this;\n }\n \n hasInvalidInput() {\n return this.state.hasInvalidInput;\n }\n \n setHasInvalidInput(hasInvalidInput) {\n this.state.hasInvalidInput = hasInvalidInput;\n return this;\n }\n \n hasInvalidOutput() {\n return this.state.hasInvalidOutput;\n }\n \n setHasInvalidOutput(hasInvalidOutput) {\n this.state.hasInvalidOutput = hasInvalidOutput;\n return this;\n }\n \n hasTooFewOutputs() {\n return this.state.hasTooFewOutputs;\n }\n \n setHasTooFewOutputs(hasTooFewOutputs) {\n this.state.hasTooFewOutputs = hasTooFewOutputs;\n return this;\n }\n \n isOverspend() {\n return this.state.isOverspend;\n }\n \n setIsOverspend(isOverspend) {\n this.state.isOverspend = isOverspend;\n return this;\n }\n \n getReason() {\n return this.state.reason;\n }\n \n setReason(reason) {\n this.state.reason = reason;\n return this;\n }\n \n isTooBig() {\n return this.state.isTooBig;\n }\n \n setIsTooBig(isTooBig) {\n this.state.isTooBig = isTooBig;\n return this;\n }\n \n getSanityCheckFailed() {\n return this.state.sanityCheckFailed;\n }\n \n setSanityCheckFailed(sanityCheckFailed) {\n this.state.sanityCheckFailed = sanityCheckFailed;\n return this;\n }\n \n getCredits() {\n return this.state.credits;\n }\n \n setCredits(credits) {\n this.state.credits = credits;\n return this;\n }\n \n getTopBlockHash() {\n return this.state.topBlockHash;\n }\n \n setTopBlockHash(topBlockHash) {\n this.state.topBlockHash = topBlockHash;\n return this;\n }\n\n isTxExtraTooBig() {\n return this.state.isTxExtraTooBig;\n }\n \n setIsTxExtraTooBig(isTxExtraTooBig) {\n this.state.isTxExtraTooBig = isTxExtraTooBig;\n return this;\n }\n}\n\nmodule.exports = MoneroSubmitTxResult;","const assert = require(\"assert\");\nconst BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroOutput = require(\"./MoneroOutput\");\n\n/**\n * Represents a transaction on the Monero network.\n * \n * @class\n */\nclass MoneroTx {\n \n /**\n * Construct the model.\n * \n * @param {MoneroTx|object} state is existing state to initialize from (optional)\n */\n constructor(state) {\n \n // initialize internal state\n if (!state) state = {};\n else if (state instanceof MoneroTx) state = state.toJson();\n else if (typeof state === \"object\") state = Object.assign({}, state);\n else throw new MoneroError(\"state must be a MoneroTx or JavaScript object\");\n this.state = state;\n \n // deserialize BigIntegers\n if (state.fee !== undefined && !(state.fee instanceof BigInteger)) state.fee = BigInteger.parse(state.fee);\n if (state.unlockTime !== undefined && !(state.unlockTime instanceof BigInteger)) state.unlockTime = BigInteger.parse(state.unlockTime);\n \n // deserialize inputs\n if (state.inputs) {\n for (let i = 0; i < state.inputs.length; i++) {\n if (!(state.inputs[i] instanceof MoneroOutput)) {\n state.inputs[i] = new MoneroOutput(Object.assign(state.inputs[i], {tx: this}));\n }\n }\n }\n \n // deserialize outputs\n if (state.outputs) {\n for (let i = 0; i < state.outputs.length; i++) {\n if (!(state.outputs[i] instanceof MoneroOutput)) {\n state.outputs[i] = new MoneroOutput(Object.assign(state.outputs[i], {tx: this}));\n }\n }\n }\n }\n \n getBlock() {\n return this.state.block;\n }\n \n setBlock(block) {\n this.state.block = block;\n return this;\n }\n \n getHeight() {\n return this.getBlock() === undefined ? undefined : this.getBlock().getHeight();\n }\n \n getHash() {\n return this.state.hash;\n }\n \n setHash(hash) {\n this.state.hash = hash;\n return this;\n }\n \n getVersion() {\n return this.state.version;\n }\n \n setVersion(version) {\n this.state.version = version;\n return this;\n }\n \n isMinerTx() {\n return this.state.isMinerTx;\n }\n \n setIsMinerTx(miner) {\n this.state.isMinerTx = miner;\n return this;\n }\n \n getPaymentId() {\n return this.state.paymentId;\n }\n \n setPaymentId(paymentId) {\n this.state.paymentId = paymentId;\n return this;\n }\n \n getFee() {\n return this.state.fee;\n }\n \n setFee(fee) {\n this.state.fee = fee;\n return this;\n }\n \n getRingSize() {\n return this.state.ringSize;\n }\n \n setRingSize(ringSize) {\n this.state.ringSize = ringSize;\n return this;\n }\n \n getRelay() {\n return this.state.relay;\n }\n \n setRelay(relay) {\n this.state.relay = relay;\n return this;\n }\n \n isRelayed() {\n return this.state.isRelayed;\n }\n \n setIsRelayed(isRelayed) {\n this.state.isRelayed = isRelayed;\n return this;\n }\n \n isConfirmed() {\n return this.state.isConfirmed;\n }\n \n setIsConfirmed(isConfirmed) {\n this.state.isConfirmed = isConfirmed;\n return this;\n }\n \n inTxPool() {\n return this.state.inTxPool;\n }\n \n setInTxPool(inTxPool) {\n this.state.inTxPool = inTxPool;\n return this;\n }\n \n getNumConfirmations() {\n return this.state.numConfirmations;\n }\n \n setNumConfirmations(numConfirmations) {\n this.state.numConfirmations = numConfirmations;\n return this;\n }\n \n /**\n * Get the minimum height or timestamp for the transactions to unlock.\n * \n * @return {BigInteger} the minimum height or timestamp for the transactin to unlock\n */\n getUnlockTime() {\n return this.state.unlockTime;\n }\n \n setUnlockTime(unlockTime) {\n if (unlockTime !== undefined) {\n if (typeof unlockTime === \"number\") unlockTime = \"\" + unlockTime;\n if (!(unlockTime instanceof BigInteger)) {\n try { unlockTime = BigInteger.parse(unlockTime); }\n catch (err) { throw new MoneroError(\"Invalid unlock time: \" + unlockTime); }\n }\n }\n this.state.unlockTime = unlockTime;\n return this;\n }\n \n getLastRelayedTimestamp() {\n return this.state.lastRelayedTimestamp;\n }\n \n setLastRelayedTimestamp(lastRelayedTimestamp) {\n this.state.lastRelayedTimestamp = lastRelayedTimestamp;\n return this;\n }\n \n getReceivedTimestamp() {\n return this.state.receivedTimestamp;\n }\n \n setReceivedTimestamp(receivedTimestamp) {\n this.state.receivedTimestamp = receivedTimestamp;\n return this;\n }\n \n isDoubleSpendSeen() {\n return this.state.isDoubleSpendSeen;\n }\n \n setIsDoubleSpend(isDoubleSpendSeen) {\n this.state.isDoubleSpendSeen = isDoubleSpendSeen;\n return this;\n }\n \n getKey() {\n return this.state.key;\n }\n \n setKey(key) {\n this.state.key = key;\n return this;\n }\n \n /**\n * Get full transaction hex. Full hex = pruned hex + prunable hex.\n * \n * @return {string} is full transaction hex\n */\n getFullHex() {\n return this.state.fullHex;\n }\n \n setFullHex(fullHex) {\n this.state.fullHex = fullHex;\n return this;\n }\n \n /**\n * Get pruned transaction hex. Full hex = pruned hex + prunable hex.\n * \n * @return {string} is pruned transaction hex\n */\n getPrunedHex() {\n return this.state.prunedHex;\n }\n \n setPrunedHex(prunedHex) {\n this.state.prunedHex = prunedHex;\n return this;\n }\n \n /**\n * Get prunable transaction hex which is hex that is removed from a pruned\n * transaction. Full hex = pruned hex + prunable hex.\n * \n * @return {string} is the prunable transaction hex\n */\n getPrunableHex() {\n return this.state.prunableHex;\n }\n \n setPrunableHex(prunableHex) {\n this.state.prunableHex = prunableHex;\n return this;\n }\n \n getPrunableHash() {\n return this.state.prunableHash;\n }\n \n setPrunableHash(prunableHash) {\n this.state.prunableHash = prunableHash;\n return this;\n }\n \n getSize() {\n return this.state.size;\n }\n \n setSize(size) {\n this.state.size = size;\n return this;\n }\n \n getWeight() {\n return this.state.weight;\n }\n \n setWeight(weight) {\n this.state.weight = weight;\n return this;\n }\n \n getInputs() {\n return this.state.inputs;\n }\n \n setInputs(inputs) {\n this.state.inputs = inputs;\n return this;\n }\n \n getOutputs() {\n return this.state.outputs;\n }\n \n setOutputs(outputs) {\n this.state.outputs = outputs;\n return this;\n }\n \n getOutputIndices() {\n return this.state.outputIndices;\n }\n \n setOutputIndices(outputIndices) {\n this.state.outputIndices = outputIndices;\n return this;\n }\n \n getMetadata() {\n return this.state.metadata;\n }\n \n setMetadata(metadata) {\n this.state.metadata = metadata;\n return this;\n }\n \n getExtra() {\n return this.state.extra;\n }\n \n setExtra(extra) {\n this.state.extra = extra;\n return this;\n }\n\n getRctSignatures() {\n return this.state.rctSignatures;\n }\n \n setRctSignatures(rctSignatures) {\n this.state.rctSignatures = rctSignatures;\n return this;\n }\n \n getRctSigPrunable() {\n return this.state.rctSigPrunable;\n }\n \n setRctSigPrunable(rctSigPrunable) {\n this.state.rctSigPrunable = rctSigPrunable;\n return this;\n }\n \n isKeptByBlock() {\n return this.state.isKeptByBlock;\n }\n \n setIsKeptByBlock(isKeptByBlock) {\n this.state.isKeptByBlock = isKeptByBlock;\n return this;\n }\n \n isFailed() {\n return this.state.isFailed;\n }\n \n setIsFailed(isFailed) {\n this.state.isFailed = isFailed;\n return this;\n }\n \n getLastFailedHeight() {\n return this.state.lastFailedHeight;\n }\n \n setLastFailedHeight(lastFailedHeight) {\n this.state.lastFailedHeight = lastFailedHeight;\n return this;\n }\n \n getLastFailedHash() {\n return this.state.lastFailedHash;\n }\n \n setLastFailedHash(lastFailedHash) {\n this.state.lastFailedHash = lastFailedHash;\n return this;\n }\n \n getMaxUsedBlockHeight() {\n return this.state.maxUsedBlockHeight;\n }\n \n setMaxUsedBlockHeight(maxUsedBlockHeight) {\n this.state.maxUsedBlockHeight = maxUsedBlockHeight;\n return this;\n }\n \n getMaxUsedBlockHash() {\n return this.state.maxUsedBlockHash;\n }\n \n setMaxUsedBlockHash(maxUsedBlockHash) {\n this.state.maxUsedBlockHash = maxUsedBlockHash;\n return this;\n }\n \n getSignatures() {\n return this.state.signatures;\n }\n \n setSignatures(signatures) {\n this.state.signatures = signatures;\n return this;\n }\n \n copy() {\n return new MoneroTx(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getFee()) json.fee = this.getFee().toString();\n if (this.getUnlockTime()) json.unlockTime = this.getUnlockTime().toString();\n if (this.getInputs()) {\n json.inputs = [];\n for (let input of this.getInputs()) json.inputs.push(input.toJson());\n }\n if (this.getOutputs()) {\n json.outputs = [];\n for (let output of this.getOutputs()) json.outputs.push(output.toJson());\n }\n if (this.getExtra()) json.extra = this.getExtra().slice();\n delete json.block; // do not serialize parent block\n return json;\n }\n \n /**\n * Updates this transaction by merging the latest information from the given\n * transaction.\n * \n * @param tx is the transaction to update this transaction with\n * @return {MoneroTx} this for method chaining\n */\n merge(tx) {\n assert(tx instanceof MoneroTx);\n if (this === tx) return this;\n \n // merge blocks if they're different\n if (this.getBlock() !== tx.getBlock()) {\n if (this.getBlock() === undefined) {\n this.setBlock(tx.getBlock());\n this.getBlock().getTxs[this.getBlock().getTxs().indexOf(tx)] = this; // update block to point to this tx\n } else if (tx.getBlock() !== undefined) {\n this.getBlock().merge(tx.getBlock()); // comes back to merging txs\n return this;\n }\n }\n \n // otherwise merge tx fields\n this.setHash(GenUtils.reconcile(this.getHash(), tx.getHash()));\n this.setVersion(GenUtils.reconcile(this.getVersion(), tx.getVersion()));\n this.setPaymentId(GenUtils.reconcile(this.getPaymentId(), tx.getPaymentId()));\n this.setFee(GenUtils.reconcile(this.getFee(), tx.getFee()));\n this.setRingSize(GenUtils.reconcile(this.getRingSize(), tx.getRingSize()));\n this.setIsConfirmed(GenUtils.reconcile(this.isConfirmed(), tx.isConfirmed(), {resolveTrue: true})); // tx can become confirmed\n this.setIsMinerTx(GenUtils.reconcile(this.isMinerTx(), tx.isMinerTx()));\n this.setRelay(GenUtils.reconcile(this.getRelay(), tx.getRelay(), {resolveTrue: true})); // tx can become relayed\n this.setIsRelayed(GenUtils.reconcile(this.isRelayed(), tx.isRelayed(), {resolveTrue: true})); // tx can become relayed\n this.setIsDoubleSpend(GenUtils.reconcile(this.isDoubleSpendSeen(), tx.isDoubleSpendSeen(), {resolveTrue: true})); // double spend can become seen\n this.setKey(GenUtils.reconcile(this.getKey(), tx.getKey()));\n this.setFullHex(GenUtils.reconcile(this.getFullHex(), tx.getFullHex()));\n this.setPrunedHex(GenUtils.reconcile(this.getPrunedHex(), tx.getPrunedHex()));\n this.setPrunableHex(GenUtils.reconcile(this.getPrunableHex(), tx.getPrunableHex()));\n this.setPrunableHash(GenUtils.reconcile(this.getPrunableHash(), tx.getPrunableHash()));\n this.setSize(GenUtils.reconcile(this.getSize(), tx.getSize()));\n this.setWeight(GenUtils.reconcile(this.getWeight(), tx.getWeight()));\n this.setOutputIndices(GenUtils.reconcile(this.getOutputIndices(), tx.getOutputIndices()));\n this.setMetadata(GenUtils.reconcile(this.getMetadata(), tx.getMetadata()));\n this.setExtra(GenUtils.reconcile(this.getExtra(), tx.getExtra()));\n this.setRctSignatures(GenUtils.reconcile(this.getRctSignatures(), tx.getRctSignatures()));\n this.setRctSigPrunable(GenUtils.reconcile(this.getRctSigPrunable(), tx.getRctSigPrunable()));\n this.setIsKeptByBlock(GenUtils.reconcile(this.isKeptByBlock(), tx.isKeptByBlock()));\n this.setIsFailed(GenUtils.reconcile(this.isFailed(), tx.isFailed(), {resolveTrue: true}));\n this.setLastFailedHeight(GenUtils.reconcile(this.getLastFailedHeight(), tx.getLastFailedHeight()));\n this.setLastFailedHash(GenUtils.reconcile(this.getLastFailedHash(), tx.getLastFailedHash()));\n this.setMaxUsedBlockHeight(GenUtils.reconcile(this.getMaxUsedBlockHeight(), tx.getMaxUsedBlockHeight()));\n this.setMaxUsedBlockHash(GenUtils.reconcile(this.getMaxUsedBlockHash(), tx.getMaxUsedBlockHash()));\n this.setSignatures(GenUtils.reconcile(this.getSignatures(), tx.getSignatures()));\n this.setUnlockTime(GenUtils.reconcile(this.getUnlockTime(), tx.getUnlockTime()));\n this.setNumConfirmations(GenUtils.reconcile(this.getNumConfirmations(), tx.getNumConfirmations(), {resolveMax: true})); // num confirmations can increase\n \n // merge inputs\n if (tx.getInputs()) {\n for (let merger of tx.getInputs()) {\n let merged = false;\n merger.setTx(this);\n if (!this.getInputs()) this.setInputs([]);\n for (let mergee of this.getInputs()) {\n if (mergee.getKeyImage().getHex() === merger.getKeyImage().getHex()) {\n mergee.merge(merger);\n merged = true;\n break;\n }\n }\n if (!merged) this.getInputs().push(merger);\n }\n }\n \n // merge outputs\n if (tx.getOutputs()) {\n for (let output of tx.getOutputs()) output.setTx(this);\n if (!this.getOutputs()) this.setOutputs(tx.getOutputs());\n else {\n \n // merge outputs if key image or stealth public key present, otherwise append\n for (let merger of tx.getOutputs()) {\n let merged = false;\n merger.setTx(this);\n for (let mergee of this.getOutputs()) {\n if ((merger.getKeyImage() && mergee.getKeyImage().getHex() === merger.getKeyImage().getHex()) ||\n (merger.getStealthPublicKey() && mergee.getStealthPublicKey() === merger.getStealthPublicKey())) {\n mergee.merge(merger);\n merged = true;\n break;\n }\n }\n if (!merged) this.getOutputs().push(merger); // append output\n }\n }\n }\n \n // handle unrelayed -> relayed -> confirmed\n if (this.isConfirmed()) {\n this.setInTxPool(false);\n this.setReceivedTimestamp(undefined);\n this.setLastRelayedTimestamp(undefined);\n } else {\n this.setInTxPool(GenUtils.reconcile(this.inTxPool(), tx.inTxPool(), {resolveTrue: true})); // unrelayed -> tx pool\n this.setReceivedTimestamp(GenUtils.reconcile(this.getReceivedTimestamp(), tx.getReceivedTimestamp(), {resolveMax: false})); // take earliest receive time\n this.setLastRelayedTimestamp(GenUtils.reconcile(this.getLastRelayedTimestamp(), tx.getLastRelayedTimestamp(), {resolveMax: true})); // take latest relay time\n }\n \n return this; // for chaining\n }\n \n toString(indent = 0) {\n let str = \"\";\n str += GenUtils.getIndent(indent) + \"=== TX ===\\n\";\n str += GenUtils.kvLine(\"Tx hash\", this.getHash(), indent);\n str += GenUtils.kvLine(\"Height\", this.getHeight(), indent);\n str += GenUtils.kvLine(\"Version\", this.getVersion(), indent);\n str += GenUtils.kvLine(\"Is miner tx\", this.isMinerTx(), indent);\n str += GenUtils.kvLine(\"Payment ID\", this.getPaymentId(), indent);\n str += GenUtils.kvLine(\"Fee\", this.getFee(), indent);\n str += GenUtils.kvLine(\"Ring size\", this.getRingSize(), indent);\n str += GenUtils.kvLine(\"Relay\", this.getRelay(), indent);\n str += GenUtils.kvLine(\"Is relayed\", this.isRelayed(), indent);\n str += GenUtils.kvLine(\"Is confirmed\", this.isConfirmed(), indent);\n str += GenUtils.kvLine(\"In tx pool\", this.inTxPool(), indent);\n str += GenUtils.kvLine(\"Num confirmations\", this.getNumConfirmations(), indent);\n str += GenUtils.kvLine(\"Unlock time\", this.getUnlockTime(), indent);\n str += GenUtils.kvLine(\"Last relayed time\", this.getLastRelayedTimestamp(), indent);\n str += GenUtils.kvLine(\"Received time\", this.getReceivedTimestamp(), indent);\n str += GenUtils.kvLine(\"Is double spend\", this.isDoubleSpendSeen(), indent);\n str += GenUtils.kvLine(\"Key\", this.getKey(), indent);\n str += GenUtils.kvLine(\"Full hex\", this.getFullHex(), indent);\n str += GenUtils.kvLine(\"Pruned hex\", this.getPrunedHex(), indent);\n str += GenUtils.kvLine(\"Prunable hex\", this.getPrunableHex(), indent);\n str += GenUtils.kvLine(\"Prunable hash\", this.getPrunableHash(), indent);\n str += GenUtils.kvLine(\"Size\", this.getSize(), indent);\n str += GenUtils.kvLine(\"Weight\", this.getWeight(), indent);\n str += GenUtils.kvLine(\"Output indices\", this.getOutputIndices(), indent);\n str += GenUtils.kvLine(\"Metadata\", this.getMetadata(), indent);\n str += GenUtils.kvLine(\"Extra\", this.getExtra(), indent);\n str += GenUtils.kvLine(\"RCT signatures\", this.getRctSignatures(), indent);\n str += GenUtils.kvLine(\"RCT sig prunable\", this.getRctSigPrunable(), indent);\n str += GenUtils.kvLine(\"Kept by block\", this.isKeptByBlock(), indent);\n str += GenUtils.kvLine(\"Is failed\", this.isFailed(), indent);\n str += GenUtils.kvLine(\"Last failed height\", this.getLastFailedHeight(), indent);\n str += GenUtils.kvLine(\"Last failed hash\", this.getLastFailedHash(), indent);\n str += GenUtils.kvLine(\"Max used block height\", this.getMaxUsedBlockHeight(), indent);\n str += GenUtils.kvLine(\"Max used block hash\", this.getMaxUsedBlockHash(), indent);\n str += GenUtils.kvLine(\"Signatures\", this.getSignatures(), indent);\n if (this.getInputs()) {\n str += GenUtils.kvLine(\"Inputs\", \"\", indent);\n for (let i = 0; i < this.getInputs().length; i++) {\n str += GenUtils.kvLine(i + 1, \"\", indent + 1);\n str += this.getInputs()[i].toString(indent + 2);\n str += '\\n'\n }\n }\n if (this.getOutputs()) {\n str += GenUtils.kvLine(\"Outputs\", \"\", indent);\n for (let i = 0; i < this.getOutputs().length; i++) {\n str += GenUtils.kvLine(i + 1, \"\", indent + 1);\n str += this.getOutputs()[i].toString(indent + 2);\n str += '\\n'\n }\n }\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\n// default payment id\nMoneroTx.DEFAULT_PAYMENT_ID = \"0000000000000000\";\n\nmodule.exports = MoneroTx;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Models transaction pool statistics.\n */\nclass MoneroTxPoolStats {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n if (this.state.feeTotal !== undefined && !(this.state.feeTotal instanceof BigInteger)) this.state.feeTotal = BigInteger.parse(this.state.feeTotal);\n if (this.state.histo !== undefined && !(this.state.histo instanceof Map)) this.state.histo = new Map(JSON.parse(this.state.histo));\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.feeTotal) json.feeTotal = json.feeTotal.toString();\n if (json.histo) json.histo = JSON.stringify([...json.histo]); // convert map to array of key-value pairs then stringify\n return json;\n }\n \n getNumTxs() {\n return this.state.numTxs;\n }\n \n setNumTxs(numTxs) {\n this.state.numTxs = numTxs;\n return this;\n }\n \n getNumNotRelayed() {\n return this.state.numNotRelayed;\n }\n \n setNumNotRelayed(numNotRelayed) {\n this.state.numNotRelayed = numNotRelayed;\n return this;\n }\n \n getNumFailing() {\n return this.state.numFailing;\n }\n \n setNumFailing(numFailing) {\n this.state.numFailing = numFailing;\n return this;\n }\n \n getNumDoubleSpends() {\n return this.state.numDoubleSpends;\n }\n \n setNumDoubleSpends(numDoubleSpends) {\n this.state.numDoubleSpends = numDoubleSpends;\n return this;\n }\n \n getNum10m() {\n return this.state.num10m;\n }\n \n setNum10m(num10m) {\n this.state.num10m = num10m;\n return this;\n }\n \n getFeeTotal() {\n return this.state.feeTotal;\n }\n \n setFeeTotal(feeTotal) {\n this.state.feeTotal = feeTotal;\n return this;\n }\n \n getBytesMax() {\n return this.state.bytesMax;\n }\n \n setBytesMax(bytesMax) {\n this.state.bytesMax = bytesMax;\n return this;\n }\n \n getBytesMed() {\n return this.state.bytesMed;\n }\n \n setBytesMed(bytesMed) {\n this.state.bytesMed = bytesMed;\n return this;\n }\n \n getBytesMin() {\n return this.state.bytesMin;\n }\n \n setBytesMin(bytesMin) {\n this.state.bytesMin = bytesMin;\n return this;\n }\n \n getBytesTotal() {\n return this.state.bytesTotal;\n }\n \n setBytesTotal(bytesTotal) {\n this.state.bytesTotal = bytesTotal;\n return this;\n }\n \n // TODO: histo... what?\n getHisto() {\n return this.state.histo;\n }\n \n setHisto(histo) {\n this.state.histo = histo;\n return this;\n }\n \n getHisto98pc() {\n return this.state.histo98pc;\n }\n \n setHisto98pc(histo98pc) {\n this.state.histo98pc = histo98pc;\n return this;\n }\n \n getOldestTimestamp() {\n return this.state.oldestTimestamp;\n }\n \n setOldestTimestamp(oldestTimestamp) {\n this.state.oldestTimestamp = oldestTimestamp;\n return this;\n }\n}\n\nmodule.exports = MoneroTxPoolStats;","/**\n * Models a Monero version.\n */\nclass MoneroVersion {\n \n /**\n * Construct the model.\n * \n * @param number is the version number\n * @param isRelease indicates if this version is a release\n */\n constructor(number, isRelease) {\n this.state = {};\n this.state.number = number;\n this.state.isRelease = isRelease;\n }\n\n getNumber() {\n return this.state.number;\n }\n\n setNumber(number) {\n this.state.number = number;\n return this;\n }\n\n isRelease() {\n return this.state.isRelease;\n }\n\n setIsRelease(isRelease) {\n this.state.isRelease = isRelease;\n return this;\n }\n \n copy() {\n return new MoneroKeyImage(this);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n}\n\nmodule.exports = MoneroVersion;","const assert = require(\"assert\");\nconst MoneroBlock = require(\"../daemon/model/MoneroBlock\");\nconst BigInteger = require(\"../common/biginteger\").BigInteger;\nconst MoneroError = require(\"../common/MoneroError\");\nconst MoneroOutputQuery = require(\"./model/MoneroOutputQuery\");\nconst MoneroTransferQuery = require(\"./model/MoneroTransferQuery\");\nconst MoneroTxConfig = require(\"./model/MoneroTxConfig\");\nconst MoneroTxQuery = require(\"./model/MoneroTxQuery\");\nconst MoneroTxSet = require(\"./model/MoneroTxSet\");\n\n/**\n * Copyright (c) woodser\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/**\n * Monero wallet interface and default implementations.\n * \n * @interface\n */\nclass MoneroWallet {\n \n /**\n * Register a listener to receive wallet notifications.\n * \n * @param {MoneroWalletListener} listener - listener to receive wallet notifications\n */\n async addListener(listener) {\n throw new Error(\"Not supported\");\n }\n \n /**\n * Unregister a listener to receive wallet notifications.\n * \n * @param {MoneroWalletListener} listener - listener to unregister\n */\n async removeListener(listener) {\n throw new Error(\"Not supported\");\n }\n \n /**\n * Get the listeners registered with the wallet.\n * \n * @return {MoneroWalletListener[]} the registered listeners\n */\n getListeners() {\n throw new Error(\"Not supported\");\n }\n \n /**\n * Indicates if the wallet is view-only, meaning it does not have the private\n * spend key and can therefore only observe incoming outputs.\n * \n * @return {bool} true if the wallet is view-only, false otherwise\n */\n async isViewOnly() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Set the wallet's daemon connection.\n * \n * @param {string|MoneroRpcConnection} uriOrConnection - daemon's URI or connection (defaults to offline)\n * @param {string} username - username to authenticate with the daemon (optional)\n * @param {string} password - password to authenticate with the daemon (optional)\n */\n async setDaemonConnection(uriOrConnection, username, password) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the wallet's daemon connection.\n * \n * @return {MoneroRpcConnection} the wallet's daemon connection\n */\n async getDaemonConnection() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Indicates if the wallet is connected to daemon.\n * \n * @return {boolean} true if the wallet is connected to a daemon, false otherwise\n */\n async isConnectedToDaemon() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Gets the version of the wallet.\n * \n * @return {MoneroVersion} the version of the wallet\n */\n async getVersion() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the wallet's path.\n * \n * @return {string} the path the wallet can be opened with\n */\n async getPath() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the wallet's mnemonic phrase or seed.\n * \n * @return {string} the wallet's mnemonic phrase or seed.\n */\n async getSeed() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the language of the wallet's mnemonic phrase or seed.\n * \n * @return {string} the language of the wallet's mnemonic phrase or seed.\n */\n async getSeedLanguage() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the wallet's private view key.\n * \n * @return {string} the wallet's private view key\n */\n async getPrivateViewKey() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the wallet's private spend key.\n * \n * @return {string} the wallet's private spend key\n */\n async getPrivateSpendKey() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the wallet's public view key.\n * \n * @return {string} the wallet's public view key\n */\n async getPublicViewKey() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the wallet's public spend key.\n * \n * @return {string} the wallet's public spend key\n */\n async getPublicSpendKey() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the wallet's primary address.\n * \n * @return {string} the wallet's primary address\n */\n async getPrimaryAddress() {\n return await this.getAddress(0, 0);\n }\n \n /**\n * Get the address of a specific subaddress.\n * \n * @param {int} accountIdx - the account index of the address's subaddress\n * @param {int} subaddressIdx - the subaddress index within the account\n * @return {string} the receive address of the specified subaddress\n */\n async getAddress(accountIdx, subaddressIdx) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the account and subaddress index of the given address.\n * \n * @param {string} address - address to get the account and subaddress index from\n * @return {MoneroSubaddress} the account and subaddress indices\n */\n async getAddressIndex(address) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get an integrated address based on the given standard address and payment\n * ID. Uses the wallet's primary address if an address is not given.\n * Generates a random payment ID if a payment ID is not given.\n * \n * @param {string} standardAddress is the standard address to generate the integrated address from (wallet's primary address if undefined)\n * @param {string} paymentId is the payment ID to generate an integrated address from (randomly generated if undefined)\n * @return {MoneroIntegratedAddress} the integrated address\n */\n async getIntegratedAddress(standardAddress, paymentId) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Decode an integrated address to get its standard address and payment id.\n * \n * @param {string} integratedAddress - integrated address to decode\n * @return {MoneroIntegratedAddress} the decoded integrated address including standard address and payment id\n */\n async decodeIntegratedAddress(integratedAddress) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the block height that the wallet is synced to.\n * \n * @return {int} the block height that the wallet is synced to\n */\n async getHeight() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the blockchain's height.\n * \n * @return {int} the blockchain's height\n */\n async getDaemonHeight() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the blockchain's height by date as a conservative estimate for scanning.\n * \n * @param {int} year - year of the height to get\n * @param {int} month - month of the height to get as a number between 1 and 12\n * @param {int} day - day of the height to get as a number between 1 and 31\n * @return the blockchain's approximate height at the given date\n */\n async getHeightByDate(year, month, day) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Synchronize the wallet with the daemon as a one-time synchronous process.\n * \n * @param {MoneroWalletListener|number} listenerOrStartHeight - listener xor start height (defaults to no sync listener, the last synced block)\n * @param {number} startHeight - startHeight if not given in first arg (defaults to last synced block)\n */\n async sync(listenerOrStartHeight, startHeight) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Start background synchronizing with a maximum period between syncs.\n * \n * @param {int} syncPeriodInMs - maximum period between syncs in milliseconds (default is wallet-specific)\n */\n async startSyncing(syncPeriodInMs) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Stop synchronizing the wallet with the daemon.\n */\n async stopSyncing() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Scan transactions by their hash/id.\n * \n * @param {string[]} txHashes - tx hashes to scan\n */\n async scanTxs(txHashes) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n *

Rescan the blockchain for spent outputs.

\n * \n *

Note: this can only be called with a trusted daemon.

\n * \n *

Example use case: peer multisig hex is import when connected to an untrusted daemon,\n * so the wallet will not rescan spent outputs. Then the wallet connects to a trusted\n * daemon. This method should be manually invoked to rescan outputs.

\n */\n async rescanSpent() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n *

Rescan the blockchain from scratch, losing any information which cannot be recovered from\n * the blockchain itself.

\n * \n *

WARNING: This method discards local wallet data like destination addresses, tx secret keys,\n * tx notes, etc.

\n */\n async rescanBlockchain() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the balance of the wallet, account, or subaddress.\n * \n * @param {int} accountIdx - index of the account to get the balance of (default all accounts)\n * @param {int} subaddressIdx - index of the subaddress to get the balance of (default all subaddresses)\n * @return {BigInteger} the balance of the wallet, account, or subaddress\n */\n async getBalance(accountIdx, subaddressIdx) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the unlocked balance of the wallet, account, or subaddress.\n * \n * @param {int} accountIdx - index of the account to get the unlocked balance of (optional)\n * @param {int} subaddressIdx - index of the subaddress to get the unlocked balance of (optional)\n * @return {BigInteger} the unlocked balance of the wallet, account, or subaddress\n */\n async getUnlockedBalance(accountIdx, subaddressIdx) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get the number of blocks until the next and last funds unlock.\n * \n * @return {int[]} the number of blocks until the next and last funds unlock in elements 0 and 1, respectively, or undefined if no balance\n */\n async getNumBlocksToUnlock() {\n \n // get balances\n let balance = await this.getBalance();\n if (balance.compare(new BigInteger(0)) === 0) return [undefined, undefined]; // skip if no balance\n let unlockedBalance = await this.getUnlockedBalance();\n \n // compute number of blocks until next funds available\n let txs;\n let height;\n let numBlocksToNextUnlock = undefined;\n if (unlockedBalance.compare(new BigInteger(0)) > 0) numBlocksToNextUnlock = 0;\n else {\n txs = await this.getTxs({isLocked: true}); // get locked txs\n height = await this.getHeight(); // get most recent height\n for (let tx of txs) {\n let numBlocksToUnlock = Math.max((tx.isConfirmed() ? tx.getHeight() : height) + 10, tx.getUnlockTime()) - height;\n numBlocksToNextUnlock = numBlocksToNextUnlock === undefined ? numBlocksToUnlock : Math.min(numBlocksToNextUnlock, numBlocksToUnlock);\n }\n }\n \n // compute number of blocks until all funds available\n let numBlocksToLastUnlock = undefined;\n if (balance.compare(unlockedBalance) === 0) {\n if (unlockedBalance.compare(new BigInteger(0)) > 0) numBlocksToLastUnlock = 0;\n } else {\n if (!txs) {\n txs = await this.getTxs({isLocked: true}); // get locked txs\n height = await this.getHeight(); // get most recent height\n }\n for (let tx of txs) {\n let numBlocksToUnlock = Math.max((tx.isConfirmed() ? tx.getHeight() : height) + 10, tx.getUnlockTime()) - height;\n numBlocksToLastUnlock = numBlocksToLastUnlock === undefined ? numBlocksToUnlock : Math.max(numBlocksToLastUnlock, numBlocksToUnlock);\n }\n }\n \n return [numBlocksToNextUnlock, numBlocksToLastUnlock];\n }\n \n /**\n * Get accounts with a given tag.\n * \n * @param {boolean} includeSubaddresses - include subaddresses if true\n * @param {string} tag - tag for filtering accounts, all accounts if undefined\n * @return {MoneroAccount[]} all accounts with the given tag\n */\n async getAccounts(includeSubaddresses, tag) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get an account.\n * \n * @param {int} accountIdx - index of the account to get\n * @param {boolean} includeSubaddresses - include subaddresses if true\n * @return {MoneroAccount} the retrieved account\n */\n async getAccount(accountIdx, includeSubaddresses) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Create a new account with a label for the first subaddress.\n * \n * @param {string} label - label for account's first subaddress (optional)\n * @return {MoneroAccount} the created account\n */\n async createAccount(label) {\n throw new MoneroError(\"Not supported\");\n }\n\n /**\n * Set an account label.\n * \n * @param {number} accountIdx - index of the account to set the label for\n * @param {string} label - the label to set\n */\n async setAccountLabel(accountIdx, label) {\n await this.setSubaddressLabel(accountIdx, 0, label);\n }\n \n /**\n * Get subaddresses in an account.\n * \n * @param {int} accountIdx - account to get subaddresses within\n * @param {int[]} subaddressIndices - indices of subaddresses to get (optional)\n * @return {MoneroSubaddress[]} the retrieved subaddresses\n */\n async getSubaddresses(accountIdx, subaddressIndices) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get a subaddress.\n * \n * @param {int} accountIdx - index of the subaddress's account\n * @param {int} subaddressIdx - index of the subaddress within the account\n * @return {MoneroSubaddress} the retrieved subaddress\n */\n async getSubaddress(accountIdx, subaddressIdx) {\n assert(accountIdx >= 0);\n assert(subaddressIdx >= 0);\n return (await this.getSubaddresses(accountIdx, subaddressIdx))[0];\n }\n \n /**\n * Create a subaddress within an account.\n * \n * @param {int} accountIdx - index of the account to create the subaddress within\n * @param {string} label - the label for the subaddress (optional)\n * @return {MoneroSubaddress} the created subaddress\n */\n async createSubaddress(accountIdx, label) {\n throw new MoneroError(\"Not supported\");\n }\n\n /**\n * Set a subaddress label.\n * \n * @param {number} accountIdx - index of the account to set the label for\n * @param {number} subaddressIdx - index of the subaddress to set the label for\n * @param {string} label - the label to set\n */\n async setSubaddressLabel(accountIdx, subaddressIdx, label) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get a wallet transaction by hash.\n * \n * @param {string} txHash - hash of a transaction to get\n * @return {MoneroTxWallet} the identified transaction or undefined if not found\n */\n async getTx(txHash) {\n let txs = await this.getTxs([txHash]);\n return txs.length === 0 ? undefined : txs[0]; \n }\n \n /**\n *

Get wallet transactions. Wallet transactions contain one or more\n * transfers that are either incoming or outgoing to the wallet.

\n * \n *

Results can be filtered by passing a query object. Transactions must\n * meet every criteria defined in the query in order to be returned. All\n * criteria are optional and no filtering is applied when not defined.

\n * \n * @param {(MoneroTxQuery|string[]|object)} query - configures the query (optional)\n * @param {boolean} query.isConfirmed - get txs that are confirmed or not (optional)\n * @param {boolean} query.inTxPool - get txs that are in the tx pool or not (optional)\n * @param {boolean} query.isRelayed - get txs that are relayed or not (optional)\n * @param {boolean} query.isFailed - get txs that are failed or not (optional)\n * @param {boolean} query.isMinerTx - get miner txs or not (optional)\n * @param {string} query.hash - get a tx with the hash (optional)\n * @param {string[]} query.hashes - get txs with the hashes (optional)\n * @param {string} query.paymentId - get transactions with the payment id (optional)\n * @param {string[]} query.paymentIds - get transactions with the payment ids (optional)\n * @param {boolean} query.hasPaymentId - get transactions with a payment id or not (optional)\n * @param {int} query.minHeight - get txs with height >= the given height (optional)\n * @param {int} query.maxHeight - get txs with height <= the given height (optional)\n * @param {boolean} query.isOutgoing - get txs with an outgoing transfer or not (optional)\n * @param {boolean} query.isIncoming - get txs with an incoming transfer or not (optional)\n * @param {MoneroTransferQuery} query.transferQuery - get txs that have a transfer that meets this query (optional)\n * @param {boolean} query.includeOutputs - specifies that tx outputs should be returned with tx results (optional)\n * @return {MoneroTxWallet[]} wallet transactions per the configuration\n */\n async getTxs(query) {\n throw new MoneroError(\"Not supported\");\n }\n\n /**\n *

Get incoming and outgoing transfers to and from this wallet. An outgoing\n * transfer represents a total amount sent from one or more subaddresses\n * within an account to individual destination addresses, each with their\n * own amount. An incoming transfer represents a total amount received into\n * a subaddress within an account. Transfers belong to transactions which\n * are stored on the blockchain.

\n * \n *

Results can be filtered by passing a query object. Transfers must\n * meet every criteria defined in the query in order to be returned. All\n * criteria are optional and no filtering is applied when not defined.

\n * \n * @param {(MoneroTransferQuery|object)} query - configures the query (optional)\n * @param {boolean} query.isOutgoing - get transfers that are outgoing or not (optional)\n * @param {boolean} query.isIncoming - get transfers that are incoming or not (optional)\n * @param {string} query.address - wallet's address that a transfer either originated from (if outgoing) or is destined for (if incoming) (optional)\n * @param {int} query.accountIndex - get transfers that either originated from (if outgoing) or are destined for (if incoming) a specific account index (optional)\n * @param {int} query.subaddressIndex - get transfers that either originated from (if outgoing) or are destined for (if incoming) a specific subaddress index (optional)\n * @param {int[]} query.subaddressIndices - get transfers that either originated from (if outgoing) or are destined for (if incoming) specific subaddress indices (optional)\n * @param {BigInteger} query.amount - amount being transferred (optional)\n * @param {MoneroDestination[]} query.destinations - individual destinations of an outgoing transfer, which is local wallet data and NOT recoverable from the blockchain (optional)\n * @param {boolean} query.hasDestinations - get transfers that have destinations or not (optional)\n * @param {MoneroTxQuery} query.txQuery - get transfers whose transaction meets this query (optional)\n * @return {MoneroTransfer[]} wallet transfers that meet the query\n */\n async getTransfers(query) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get incoming transfers.\n * \n * @param {(MoneroTransferQuery|object)} query - configures the query (optional)\n * @param {string} query.address - get incoming transfers to a specific address in the wallet (optional)\n * @param {int} query.accountIndex - get incoming transfers to a specific account index (optional)\n * @param {int} query.subaddressIndex - get incoming transfers to a specific subaddress index (optional)\n * @param {int[]} query.subaddressIndices - get transfers destined for specific subaddress indices (optional)\n * @param {BigInteger} query.amount - amount being transferred (optional)\n * @param {MoneroTxQuery} query.txQuery - get transfers whose transaction meets this query (optional)\n * @return {MoneroIncomingTransfer[]} incoming transfers that meet the query\n */\n async getIncomingTransfers(query) {\n query = MoneroWallet._normalizeTransferQuery(query);\n if (query.isIncoming() === false) throw new MoneroError(\"Transfer query contradicts getting incoming transfers\");\n query.setIsIncoming(true);\n return this.getTransfers(query);\n }\n \n /**\n * Get outgoing transfers.\n * \n * @param {(MoneroTransferQuery|object)} query - configures the query (optional)\n * @param {string} query.address - get outgoing transfers from a specific address in the wallet (optional)\n * @param {int} query.accountIndex - get outgoing transfers from a specific account index (optional)\n * @param {int} query.subaddressIndex - get outgoing transfers from a specific subaddress index (optional)\n * @param {int[]} query.subaddressIndices - get outgoing transfers from specific subaddress indices (optional)\n * @param {BigInteger} query.amount - amount being transferred (optional)\n * @param {MoneroDestination[]} query.destinations - individual destinations of an outgoing transfer, which is local wallet data and NOT recoverable from the blockchain (optional)\n * @param {boolean} query.hasDestinations - get transfers that have destinations or not (optional)\n * @param {MoneroTxQuery} query.txQuery - get transfers whose transaction meets this query (optional)\n * @return {MoneroOutgoingTransfer[]} outgoing transfers that meet the query\n */\n async getOutgoingTransfers(query) {\n query = MoneroWallet._normalizeTransferQuery(query);\n if (query.isOutgoing() === false) throw new MoneroError(\"Transfer query contradicts getting outgoing transfers\");\n query.setIsOutgoing(true);\n return this.getTransfers(query);\n }\n \n /**\n *

Get outputs created from previous transactions that belong to the wallet\n * (i.e. that the wallet can spend one time). Outputs are part of\n * transactions which are stored in blocks on the blockchain.

\n * \n *

Results can be filtered by passing a query object. Outputs must\n * meet every criteria defined in the query in order to be returned. All\n * filtering is optional and no filtering is applied when not defined.

\n * \n * @param {(MoneroOutputQuery|object)} query - configures the query (optional)\n * @param {int} query.accountIndex - get outputs associated with a specific account index (optional)\n * @param {int} query.subaddressIndex - get outputs associated with a specific subaddress index (optional)\n * @param {int[]} query.subaddressIndices - get outputs associated with specific subaddress indices (optional)\n * @param {BigInteger} query.amount - get outputs with a specific amount (optional)\n * @param {BigInteger} query.minAmount - get outputs greater than or equal to a minimum amount (optional)\n * @param {BigInteger} query.maxAmount - get outputs less than or equal to a maximum amount (optional)\n * @param {boolean} query.isSpent - get outputs that are spent or not (optional)\n * @param {string|MoneroKeyImage} query.keyImage - get output with a key image or which matches fields defined in a MoneroKeyImage (optional)\n * @param {MoneroTxQuery} query.txQuery - get outputs whose transaction meets this filter (optional)\n * @return {MoneroOutputWallet[]} the queried outputs\n */\n async getOutputs(query) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Export outputs in hex format.\n *\n * @param {boolean} all - export all outputs if true, else export the outputs since the last export\n * @return {string} outputs in hex format\n */\n async exportOutputs(all) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Import outputs in hex format.\n * \n * @param {string} outputsHex - outputs in hex format\n * @return {int} the number of outputs imported\n */\n async importOutputs(outputsHex) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Export signed key images.\n * \n * @param {boolean} all - export all key images if true, else export the key images since the last export\n * @return {MoneroKeyImage[]} the wallet's signed key images\n */\n async exportKeyImages(all) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Import signed key images and verify their spent status.\n * \n * @param {MoneroKeyImage[]} keyImages - images to import and verify (requires hex and signature)\n * @return {MoneroKeyImageImportResult} results of the import\n */\n async importKeyImages(keyImages) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get new key images from the last imported outputs.\n * \n * @return {MoneroKeyImage[]} the key images from the last imported outputs\n */\n async getNewKeyImagesFromLastImport() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Freeze an output.\n * \n * @param {string} keyImage - key image of the output to freeze\n */\n async freezeOutput(keyImage) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Thaw a frozen output.\n * \n * @param {string} keyImage - key image of the output to thaw\n */\n async thawOutput(keyImage) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Check if an output is frozen.\n * \n * @param {string} keyImage - key image of the output to check if frozen\n * @return {boolean} true if the output is frozen, false otherwise\n */\n async isOutputFrozen(keyImage) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Create a transaction to transfer funds from this wallet.\n * \n * @param {MoneroTxConfig|object} config - configures the transaction to create (required)\n * @param {string} config.address - single destination address (required unless `destinations` provided)\n * @param {BigInteger|string} config.amount - single destination amount (required unless `destinations` provided)\n * @param {int} config.accountIndex - source account index to transfer funds from (required)\n * @param {int} config.subaddressIndex - source subaddress index to transfer funds from (optional)\n * @param {int[]} config.subaddressIndices - source subaddress indices to transfer funds from (optional)\n * @param {boolean} config.relay - relay the transaction to peers to commit to the blockchain (default false)\n * @param {MoneroTxPriority} config.priority - transaction priority (default MoneroTxPriority.NORMAL)\n * @param {MoneroDestination[]} config.destinations - addresses and amounts in a multi-destination tx (required unless `address` and `amount` provided)\n * @param {int[]} config.subtractFeeFrom - list of destination indices to split the transaction fee (optional)\n * @param {string} config.paymentId - transaction payment ID (optional)\n * @param {BigInteger|string} config.unlockTime - minimum height or timestamp for the transaction to unlock (default 0)\n * @return {MoneroTxWallet} the created transaction\n */\n async createTx(config) {\n config = MoneroWallet._normalizeCreateTxsConfig(config);\n if (config.getCanSplit() !== undefined) assert.equal(config.getCanSplit(), false, \"Cannot split transactions using createTx(); use createTxs()\");\n config.setCanSplit(false);\n return (await this.createTxs(config))[0];\n }\n \n /**\n * Create one or more transactions to transfer funds from this wallet.\n * \n * @param {MoneroTxConfig|object} config - configures the transactions to create (required)\n * @param {string} config.address - single destination address (required unless `destinations` provided)\n * @param {BigInteger|string} config.amount - single destination amount (required unless `destinations` provided)\n * @param {int} config.accountIndex - source account index to transfer funds from (required)\n * @param {int} config.subaddressIndex - source subaddress index to transfer funds from (optional)\n * @param {int[]} config.subaddressIndices - source subaddress indices to transfer funds from (optional)\n * @param {boolean} config.relay - relay the transactions to peers to commit to the blockchain (default false)\n * @param {MoneroTxPriority} config.priority - transaction priority (default MoneroTxPriority.NORMAL)\n * @param {MoneroDestination[]} config.destinations - addresses and amounts in a multi-destination tx (required unless `address` and `amount` provided)\n * @param {string} config.paymentId - transaction payment ID (optional)\n * @param {BigInteger|string} config.unlockTime - minimum height or timestamp for the transactions to unlock (default 0)\n * @param {boolean} config.canSplit - allow funds to be transferred using multiple transactions (default true)\n * @return {MoneroTxWallet[]} the created transactions\n */\n async createTxs(config) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Sweep an output by key image.\n * \n * @param {MoneroTxConfig} config - configures the transaction to create (required)\n * @param {string} config.address - single destination address (required)\n * @param {string} config.keyImage - key image to sweep (required)\n * @param {boolean} config.relay - relay the transaction to peers to commit to the blockchain (default false)\n * @param {BigInteger|string} config.unlockTime - minimum height or timestamp for the transaction to unlock (default 0)\n * @param {MoneroTxPriority} config.priority - transaction priority (default MoneroTxPriority.NORMAL)\n * @return {MoneroTxWallet} the created transaction\n */\n async sweepOutput(config) {\n throw new MoneroError(\"Not supported\");\n }\n\n /**\n * Sweep all unlocked funds according to the given configuration.\n * \n * @param {MoneroTxConfig|object} config - configures the transactions to create (required)\n * @param {string} config.address - single destination address (required)\n * @param {int} config.accountIndex - source account index to sweep from (optional, defaults to all accounts)\n * @param {int} config.subaddressIndex - source subaddress index to sweep from (optional, defaults to all subaddresses)\n * @param {int[]} config.subaddressIndices - source subaddress indices to sweep from (optional)\n * @param {boolean} config.relay - relay the transactions to peers to commit to the blockchain (default false)\n * @param {MoneroTxPriority} config.priority - transaction priority (default MoneroTxPriority.NORMAL)\n * @param {BigInteger|string} config.unlockTime - minimum height or timestamp for the transactions to unlock (default 0)\n * @param {boolean} config.sweepEachSubaddress - sweep each subaddress individually if true (default false)\n * @return {MoneroTxWallet[]} the created transactions\n */\n async sweepUnlocked(config) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n *

Sweep all unmixable dust outputs back to the wallet to make them easier to spend and mix.

\n * \n *

NOTE: Dust only exists pre RCT, so this method will throw \"no dust to sweep\" on new wallets.

\n * \n * @param {boolean} relay - specifies if the resulting transaction should be relayed (default false)\n * @return {MoneroTxWallet[]} the created transactions\n */\n async sweepDust(relay) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Relay a previously created transaction.\n * \n * @param {(MoneroTxWallet|string)} txOrMetadata - transaction or its metadata to relay\n * @return {string} the hash of the relayed tx\n */\n async relayTx(txOrMetadata) {\n return (await this.relayTxs([txOrMetadata]))[0];\n }\n \n /**\n * Relay previously created transactions.\n * \n * @param {(MoneroTxWallet[]|string[])} txsOrMetadatas - transactions or their metadata to relay\n * @return {string[]} the hashes of the relayed txs\n */\n async relayTxs(txsOrMetadatas) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Describe a tx set from unsigned tx hex.\n * \n * @param {string} unsignedTxHex - unsigned tx hex\n * @return {MoneroTxSet} the tx set containing structured transactions\n */\n async describeUnsignedTxSet(unsignedTxHex) {\n return this.describeTxSet(new MoneroTxSet().setUnsignedTxHex(unsignedTxHex));\n }\n \n /**\n * Describe a tx set from multisig tx hex.\n * \n * @param {string} multisigTxHex - multisig tx hex\n * @return {MoneroTxSet} the tx set containing structured transactions\n */\n async describeMultisigTxSet(multisigTxHex) {\n return this.describeTxSet(new MoneroTxSet().setMultisigTxHex(multisigTxHex));\n }\n \n /**\n * Describe a tx set containing unsigned or multisig tx hex to a new tx set containing structured transactions.\n * \n * @param {MoneroTxSet} txSet - a tx set containing unsigned or multisig tx hex\n * @return {MoneroTxSet} the tx set containing structured transactions\n */\n async describeTxSet(txSet) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Sign unsigned transactions from a view-only wallet.\n * \n * @param {string} unsignedTxHex - unsigned transaction hex from when the transactions were created\n * @return {string} the signed transaction hex\n */\n async signTxs(unsignedTxHex) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Submit signed transactions from a view-only wallet.\n * \n * @param {string} signedTxHex - signed transaction hex from signTxs()\n * @return {string[]} the resulting transaction hashes\n */\n async submitTxs(signedTxHex) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Sign a message.\n * \n * @param {string} message - the message to sign\n * @param {MoneroMessageSignatureType} signatureType - sign with spend key or view key (default spend key)\n * @param {int} accountIdx - the account index of the message signature (default 0)\n * @param {int} subaddressIdx - the subaddress index of the message signature (default 0)\n * @return {string} the signature\n */\n async signMessage(message, signatureType, accountIdx, subaddressIdx) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Verify a signature on a message.\n * \n * @param {string} message - signed message\n * @param {string} address - signing address\n * @param {string} signature - signature\n * @return {MoneroMessageSignatureResult} true if the signature is good, false otherwise\n */\n async verifyMessage(message, address, signature) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get a transaction's secret key from its hash.\n * \n * @param {string} txHash - transaction's hash\n * @return {string} - transaction's secret key\n */\n async getTxKey(txHash) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Check a transaction in the blockchain with its secret key.\n * \n * @param {string} txHash - transaction to check\n * @param {string} txKey - transaction's secret key\n * @param {string} address - destination public address of the transaction\n * @return {MoneroCheckTx} the result of the check\n */\n async checkTxKey(txHash, txKey, address) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get a transaction signature to prove it.\n * \n * @param {string} txHash - transaction to prove\n * @param {string} address - destination public address of the transaction\n * @param {string} message - message to include with the signature to further authenticate the proof (optional)\n * @return {string} the transaction signature\n */\n async getTxProof(txHash, address, message) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Prove a transaction by checking its signature.\n * \n * @param {string} txHash - transaction to prove\n * @param {string} address - destination public address of the transaction\n * @param {string} message - message included with the signature to further authenticate the proof (optional)\n * @param {string} signature - transaction signature to confirm\n * @return {MoneroCheckTx} the result of the check\n */\n async checkTxProof(txHash, address, message, signature) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Generate a signature to prove a spend. Unlike proving a transaction, it does not require the destination public address.\n * \n * @param {string} txHash - transaction to prove\n * @param {string} message - message to include with the signature to further authenticate the proof (optional)\n * @return {string} the transaction signature\n */\n async getSpendProof(txHash, message) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Prove a spend using a signature. Unlike proving a transaction, it does not require the destination public address.\n * \n * @param {string} txHash - transaction to prove\n * @param {string} message - message included with the signature to further authenticate the proof (optional)\n * @param {string} signature - transaction signature to confirm\n * @return {boolean} true if the signature is good, false otherwise\n */\n async checkSpendProof(txHash, message, signature) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Generate a signature to prove the entire balance of the wallet.\n * \n * @param message - message included with the signature to further authenticate the proof (optional)\n * @return the reserve proof signature\n */\n async getReserveProofWallet(message) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Generate a signature to prove an available amount in an account.\n * \n * @param {int} accountIdx - account to prove ownership of the amount\n * @param {BigInteger} amount - minimum amount to prove as available in the account\n * @param {string} message - message to include with the signature to further authenticate the proof (optional)\n * @return {string} the reserve proof signature\n */\n async getReserveProofAccount(accountIdx, amount, message) {\n throw new MoneroError(\"Not supported\");\n }\n\n /**\n * Proves a wallet has a disposable reserve using a signature.\n * \n * @param {string} address - public wallet address\n * @param {string} message - message included with the signature to further authenticate the proof (optional)\n * @param {string} signature - reserve proof signature to check\n * @return {MoneroCheckReserve} the result of checking the signature proof\n */\n async checkReserveProof(address, message, signature) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get a transaction note.\n * \n * @param {string} txHash - transaction to get the note of\n * @return {string} the tx note\n */\n async getTxNote(txHash) {\n return (await this.getTxNotes([txHash]))[0];\n }\n \n /**\n * Get notes for multiple transactions.\n * \n * @param {string[]} txHashes - hashes of the transactions to get notes for\n * @return {string[]} notes for the transactions\n */\n async getTxNotes(txHashes) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Set a note for a specific transaction.\n * \n * @param {string} txHash - hash of the transaction to set a note for\n * @param {string} note - the transaction note\n */\n async setTxNote(txHash, note) {\n await this.setTxNotes([txHash], [note]);\n }\n \n /**\n * Set notes for multiple transactions.\n * \n * @param {string[]} txHashes - transactions to set notes for\n * @param {string[]} notes - notes to set for the transactions\n */\n async setTxNotes(txHashes, notes) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get address book entries.\n * \n * @param {int[]} entryIndices - indices of the entries to get\n * @return {MoneroAddressBookEntry[]} the address book entries\n */\n async getAddressBookEntries(entryIndices) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Add an address book entry.\n * \n * @param {string} address - entry address\n * @param {string} description - entry description (optional)\n * @return {int} the index of the added entry\n */\n async addAddressBookEntry(address, description) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Edit an address book entry.\n * \n * @param {number} index - index of the address book entry to edit\n * @param {boolean} setAddress - specifies if the address should be updated\n * @param {string} address - updated address\n * @param {boolean} setDescription - specifies if the description should be updated\n * @param {string} description - updated description\n */\n async editAddressBookEntry(index, setAddress, address, setDescription, description) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Delete an address book entry.\n * \n * @param {int} entryIdx - index of the entry to delete\n */\n async deleteAddressBookEntry(entryIdx) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Tag accounts.\n * \n * @param {string} tag - tag to apply to the specified accounts\n * @param {int[]} accountIndices - indices of the accounts to tag\n */\n async tagAccounts(tag, accountIndices) {\n throw new MoneroError(\"Not supported\");\n }\n\n /**\n * Untag accounts.\n * \n * @param {int[]} accountIndices - indices of the accounts to untag\n */\n async untagAccounts(accountIndices) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Return all account tags.\n * \n * @return {MoneroAccountTag[]} the wallet's account tags\n */\n async getAccountTags() {\n throw new MoneroError(\"Not supported\");\n }\n\n /**\n * Sets a human-readable description for a tag.\n * \n * @param {string} tag - tag to set a description for\n * @param {string} label - label to set for the tag\n */\n async setAccountTagLabel(tag, label) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Creates a payment URI from a send configuration.\n * \n * @param {MoneroTxConfig} config - specifies configuration for a potential tx\n * @return {string} the payment uri\n */\n async getPaymentUri(config) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Parses a payment URI to a tx config.\n * \n * @param {string} uri - payment uri to parse\n * @return {MoneroTxConfig} the send configuration parsed from the uri\n */\n async parsePaymentUri(uri) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get an attribute.\n * \n * @param {string} key - attribute to get the value of\n * @return {string} the attribute's value\n */\n async getAttribute(key) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Set an arbitrary attribute.\n * \n * @param {string} key - attribute key\n * @param {string} val - attribute value\n */\n async setAttribute(key, val) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Start mining.\n * \n * @param {int} numThreads - number of threads created for mining (optional)\n * @param {boolean} backgroundMining - specifies if mining should occur in the background (optional)\n * @param {boolean} ignoreBattery - specifies if the battery should be ignored for mining (optional)\n */\n async startMining(numThreads, backgroundMining, ignoreBattery) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Stop mining.\n */\n async stopMining() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Indicates if importing multisig data is needed for returning a correct balance.\n * \n * @return {boolean} true if importing multisig data is needed for returning a correct balance, false otherwise\n */\n async isMultisigImportNeeded() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Indicates if this wallet is a multisig wallet.\n * \n * @return {boolean} true if this is a multisig wallet, false otherwise\n */\n async isMultisig() {\n return (await this.getMultisigInfo()).isMultisig();\n }\n \n /**\n * Get multisig info about this wallet.\n * \n * @return {MoneroMultisigInfo} multisig info about this wallet\n */\n async getMultisigInfo() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Get multisig info as hex to share with participants to begin creating a\n * multisig wallet.\n * \n * @return {string} this wallet's multisig hex to share with participants\n */\n async prepareMultisig() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Make this wallet multisig by importing multisig hex from participants.\n * \n * @param {String[]} multisigHexes - multisig hex from each participant\n * @param {int} threshold - number of signatures needed to sign transfers\n * @param {string} password - wallet password\n * @return {string} this wallet's multisig hex to share with participants\n */\n async makeMultisig(multisigHexes, threshold, password) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Exchange multisig hex with participants in a M/N multisig wallet.\n * \n * This process must be repeated with participants exactly N-M times.\n * \n * @param {string[]} multisigHexes are multisig hex from each participant\n * @param {string} password - wallet's password // TODO monero-project: redundant? wallet is created with password\n * @return {MoneroMultisigInitResult} the result which has the multisig's address xor this wallet's multisig hex to share with participants iff not done\n */\n async exchangeMultisigKeys(multisigHexes, password) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Export this wallet's multisig info as hex for other participants.\n * \n * @return {string} this wallet's multisig info as hex for other participants\n */\n async exportMultisigHex() {\n throw new MoneroError(\"Not supported?\");\n }\n \n /**\n * Import multisig info as hex from other participants.\n * \n * @param {string[]} multisigHexes - multisig hex from each participant\n * @return {int} the number of outputs signed with the given multisig hex\n */\n async importMultisigHex(multisigHexes) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Sign multisig transactions from a multisig wallet.\n * \n * @param {string} multisigTxHex - unsigned multisig transactions as hex\n * @return {MoneroMultisigSignResult} the result of signing the multisig transactions\n */\n async signMultisigTxHex(multisigTxHex) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Submit signed multisig transactions from a multisig wallet.\n * \n * @param {string} signedMultisigTxHex - signed multisig hex returned from signMultisigTxHex()\n * @return {string[]} the resulting transaction hashes\n */\n async submitMultisigTxHex(signedMultisigTxHex) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Change the wallet password.\n * \n * @param {string} oldPassword - the wallet's old password\n * @param {string} newPassword - the wallet's new password\n */\n async changePassword(oldPassword, newPassword) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Save the wallet at its current path.\n */\n save() {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Optionally save then close the wallet.\n *\n * @param {boolean} save - specifies if the wallet should be saved before being closed (default false)\n */\n async close(save) {\n throw new MoneroError(\"Not supported\");\n }\n \n /**\n * Indicates if this wallet is closed or not.\n * \n * @return {boolean} true if the wallet is closed, false otherwise\n */\n async isClosed() {\n throw new MoneroError(\"Not supported\");\n }\n \n // -------------------------------- PRIVATE ---------------------------------\n \n static _normalizeTxQuery(query) {\n if (query instanceof MoneroTxQuery) query = query.copy();\n else if (Array.isArray(query)) query = new MoneroTxQuery().setHashes(query);\n else {\n query = Object.assign({}, query);\n query = new MoneroTxQuery(query);\n }\n if (query.getBlock() === undefined) query.setBlock(new MoneroBlock().setTxs([query]));\n if (query.getInputQuery()) query.getInputQuery().setTxQuery(query);\n if (query.getOutputQuery()) query.getOutputQuery().setTxQuery(query);\n return query;\n }\n \n static _normalizeTransferQuery(query) {\n if (query === undefined) query = new MoneroTransferQuery();\n else if (query instanceof MoneroTransferQuery) {\n if (query.getTxQuery() === undefined) query = query.copy();\n else {\n let txQuery = query.getTxQuery().copy();\n if (query.getTxQuery().getTransferQuery() === query) query = txQuery.getTransferQuery();\n else {\n assert.equal(query.getTxQuery().getTransferQuery(), undefined, \"Transfer query's tx query must be circular reference or null\");\n query = query.copy();\n query.setTxQuery(txQuery);\n }\n }\n } else {\n query = Object.assign({}, query);\n query = new MoneroTransferQuery(query);\n }\n if (query.getTxQuery() === undefined) query.setTxQuery(new MoneroTxQuery());\n query.getTxQuery().setTransferQuery(query);\n if (query.getTxQuery().getBlock() === undefined) query.getTxQuery().setBlock(new MoneroBlock().setTxs([query.getTxQuery()]));\n return query;\n }\n \n static _normalizeOutputQuery(query) {\n if (query === undefined) query = new MoneroOutputQuery();\n else if (query instanceof MoneroOutputQuery) {\n if (query.getTxQuery() === undefined) query = query.copy();\n else {\n let txQuery = query.getTxQuery().copy();\n if (query.getTxQuery().getOutputQuery() === query) query = txQuery.getOutputQuery();\n else {\n assert.equal(query.getTxQuery().getOutputQuery(), undefined, \"Output query's tx query must be circular reference or null\");\n query = query.copy();\n query.setTxQuery(txQuery);\n }\n }\n } else {\n query = Object.assign({}, query);\n query = new MoneroOutputQuery(query);\n }\n if (query.getTxQuery() === undefined) query.setTxQuery(new MoneroTxQuery());\n query.getTxQuery().setOutputQuery(query);\n if (query.getTxQuery().getBlock() === undefined) query.getTxQuery().setBlock(new MoneroBlock().setTxs([query.getTxQuery()]));\n return query;\n }\n \n static _normalizeCreateTxsConfig(config) {\n if (config === undefined || !(config instanceof Object)) throw new MoneroError(\"Must provide MoneroTxConfig or equivalent JS object\");\n config = new MoneroTxConfig(config);\n assert(config.getDestinations() && config.getDestinations().length > 0, \"Must provide destinations\");\n assert.equal(config.getSweepEachSubaddress(), undefined);\n assert.equal(config.getBelowAmount(), undefined);\n return config;\n }\n \n static _normalizeSweepOutputConfig(config) {\n if (config === undefined || !(config instanceof Object)) throw new MoneroError(\"Must provide MoneroTxConfig or equivalent JS object\");\n config = new MoneroTxConfig(config);\n assert.equal(config.getSweepEachSubaddress(), undefined);\n assert.equal(config.getBelowAmount(), undefined);\n assert.equal(config.getCanSplit(), undefined, \"Cannot split transactions when sweeping an output\");\n if (!config.getDestinations() || config.getDestinations().length !== 1 || !config.getDestinations()[0].getAddress()) throw new MoneroError(\"Must provide exactly one destination address to sweep output to\");\n if (config.getSubtractFeeFrom() && config.getSubtractFeeFrom().length > 0) throw new MoneroError(\"Sweep transfers do not support subtracting fees from destinations\");\n return config; \n }\n \n static _normalizeSweepUnlockedConfig(config) {\n if (config === undefined || !(config instanceof Object)) throw new MoneroError(\"Must provide MoneroTxConfig or equivalent JS object\");\n config = new MoneroTxConfig(config);\n if (config.getDestinations() === undefined || config.getDestinations().length != 1) throw new MoneroError(\"Must provide exactly one destination to sweep to\");\n if (config.getDestinations()[0].getAddress() === undefined) throw new MoneroError(\"Must provide destination address to sweep to\");\n if (config.getDestinations()[0].getAmount() !== undefined) throw new MoneroError(\"Cannot provide amount in sweep config\");\n if (config.getKeyImage() !== undefined) throw new MoneroError(\"Key image defined; use sweepOutput() to sweep an output by its key image\");\n if (config.getSubaddressIndices() !== undefined && config.getSubaddressIndices().length === 0) config.setSubaddressIndices(undefined);\n if (config.getAccountIndex() === undefined && config.getSubaddressIndices() !== undefined) throw new MoneroError(\"Must provide account index if subaddress indices are provided\");\n return config;\n }\n}\n\nMoneroWallet.DEFAULT_LANGUAGE = \"English\";\n\nmodule.exports = MoneroWallet;","const assert = require(\"assert\");\nconst BigInteger = require(\"../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../common/GenUtils\");\nconst LibraryUtils = require(\"../common/LibraryUtils\");\nconst TaskLooper = require(\"../common/TaskLooper\");\nconst MoneroAccount = require(\"./model/MoneroAccount\");\nconst MoneroAddressBookEntry = require(\"./model/MoneroAddressBookEntry\");\nconst MoneroBlock = require(\"../daemon/model/MoneroBlock\");\nconst MoneroCheckTx = require(\"./model/MoneroCheckTx\");\nconst MoneroCheckReserve = require(\"./model/MoneroCheckReserve\");\nconst MoneroDaemonRpc = require(\"../daemon/MoneroDaemonRpc\");\nconst MoneroError = require(\"../common/MoneroError\");\nconst MoneroIntegratedAddress = require(\"./model/MoneroIntegratedAddress\");\nconst MoneroKeyImage = require(\"../daemon/model/MoneroKeyImage\");\nconst MoneroKeyImageImportResult = require(\"./model/MoneroKeyImageImportResult\");\nconst MoneroMultisigInfo = require(\"./model/MoneroMultisigInfo\");\nconst MoneroMultisigInitResult = require(\"./model/MoneroMultisigInitResult\");\nconst MoneroMultisigSignResult = require(\"./model/MoneroMultisigSignResult\");\nconst MoneroNetworkType = require(\"../daemon/model/MoneroNetworkType\");\nconst MoneroOutputWallet = require(\"./model/MoneroOutputWallet\");\nconst MoneroRpcConnection = require(\"../common/MoneroRpcConnection\");\nconst MoneroSubaddress = require(\"./model/MoneroSubaddress\");\nconst MoneroSyncResult = require(\"./model/MoneroSyncResult\");\nconst MoneroTxConfig = require(\"./model/MoneroTxConfig\");\nconst MoneroTxSet = require(\"./model/MoneroTxSet\");\nconst MoneroTxWallet = require(\"./model/MoneroTxWallet\");\nconst MoneroWallet = require(\"./MoneroWallet\");\nconst MoneroWalletConfig = require(\"./model/MoneroWalletConfig\");\nconst MoneroWalletKeys = require(\"./MoneroWalletKeys\");\nconst MoneroWalletListener = require(\"./model/MoneroWalletListener\");\nconst MoneroMessageSignatureType = require(\"./model/MoneroMessageSignatureType\");\nconst MoneroMessageSignatureResult = require(\"./model/MoneroMessageSignatureResult\");\n\n/**\n * Implements a Monero wallet using fully client-side WebAssembly bindings to monero-project's wallet2 in C++.\n * \n * @extends {MoneroWalletKeys}\n * @implements {MoneroWallet}\n * @hideconstructor\n */\nclass MoneroWalletFull extends MoneroWalletKeys {\n \n // --------------------------- STATIC UTILITIES -----------------------------\n \n /**\n * Check if a wallet exists at a given path.\n * \n * @param {string} path - path of the wallet on the file system\n * @param {fs} - Node.js compatible file system to use (optional, defaults to disk if nodejs)\n * @return {boolean} true if a wallet exists at the given path, false otherwise\n */\n static walletExists(path, fs) {\n assert(path, \"Must provide a path to look for a wallet\");\n if (!fs) fs = MoneroWalletFull._getFs();\n if (!fs) throw new MoneroError(\"Must provide file system to check if wallet exists\");\n let exists = fs.existsSync(path + \".keys\");\n LibraryUtils.log(1, \"Wallet exists at \" + path + \": \" + exists);\n return exists;\n }\n \n /**\n *

Open an existing wallet using WebAssembly bindings to wallet2.h.

\n * \n *

Examples:

\n * \n * \n * let wallet1 = await MoneroWalletFull.openWallet(
\n *    \"./wallets/wallet1\",
\n *    \"supersecretpassword\",
\n *    MoneroNetworkType.STAGENET,
\n *    \"http://localhost:38081\" // daemon uri
\n * );

\n * \n * let wallet2 = await MoneroWalletFull.openWallet({
\n *    path: \"./wallets/wallet2\",
\n *    password: \"supersecretpassword\",
\n *    networkType: MoneroNetworkType.STAGENET,
\n *    serverUri: \"http://localhost:38081\", // daemon configuration
\n *    serverUsername: \"superuser\",
\n *    serverPassword: \"abctesting123\"
\n * });\n *
\n * \n * @param {MoneroWalletConfig|object|string} configOrPath - MoneroWalletConfig or equivalent config object or a path to a wallet to open\n * @param {string} configOrPath.path - path of the wallet to open (optional if 'keysData' provided)\n * @param {string} configOrPath.password - password of the wallet to open\n * @param {string|number} configOrPath.networkType - network type of the wallet to open (one of \"mainnet\", \"testnet\", \"stagenet\" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)\n * @param {Uint8Array} configOrPath.keysData - wallet keys data to open (optional if path provided)\n * @param {Uint8Array} configOrPath.cacheData - wallet cache data to open (optional)\n * @param {MoneroRpcConnection|object} configOrPath.server - MoneroRpcConnection or equivalent JS object configuring the daemon connection (optional)\n * @param {string} configOrPath.serverUri - uri of the wallet's daemon (optional)\n * @param {string} configOrPath.serverUsername - username to authenticate with the daemon (optional)\n * @param {string} configOrPath.serverPassword - password to authenticate with the daemon (optional)\n * @param {boolean} configOrPath.rejectUnauthorized - reject self-signed server certificates if true (default true)\n * @param {boolean} configOrPath.proxyToWorker - proxies wallet operations to a worker in order to not block the main thread (default true)\n * @param {fs} configOrPath.fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)\n * @param {string} password - password of the wallet to open\n * @param {string|number} networkType - network type of the wallet to open\n * @param {string|MoneroRpcConnection} daemonUriOrConnection - daemon URI or MoneroRpcConnection\n * @param {boolean} proxyToWorker - proxies wallet operations to a worker in order to not block the main thread (default true)\n * @param {fs} fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)\n * @return {MoneroWalletFull} the opened wallet\n */\n static async openWallet(configOrPath, password, networkType, daemonUriOrConnection, proxyToWorker, fs) {\n\n // normalize and validate config\n let config;\n if (typeof configOrPath === \"object\") {\n config = configOrPath instanceof MoneroWalletConfig ? configOrPath : new MoneroWalletConfig(configOrPath);\n if (password !== undefined || networkType !== undefined || daemonUriOrConnection !== undefined || proxyToWorker !== undefined || fs !== undefined) throw new MoneroError(\"Can specify config object or params but not both when opening WASM wallet\")\n } else {\n config = new MoneroWalletConfig().setPath(configOrPath).setPassword(password).setNetworkType(networkType).setProxyToWorker(proxyToWorker).setFs(fs);\n if (typeof daemonUriOrConnection === \"object\") config.setServer(daemonUriOrConnection);\n else config.setServerUri(daemonUriOrConnection);\n }\n if (config.getProxyToWorker() === undefined) config.setProxyToWorker(true);\n if (config.getSeed() !== undefined) throw new MoneroError(\"Cannot specify seed when opening wallet\");\n if (config.getSeedOffset() !== undefined) throw new MoneroError(\"Cannot specify seed offset when opening wallet\");\n if (config.getPrimaryAddress() !== undefined) throw new MoneroError(\"Cannot specify primary address when opening wallet\");\n if (config.getPrivateViewKey() !== undefined) throw new MoneroError(\"Cannot specify private view key when opening wallet\");\n if (config.getPrivateSpendKey() !== undefined) throw new MoneroError(\"Cannot specify private spend key when opening wallet\");\n if (config.getRestoreHeight() !== undefined) throw new MoneroError(\"Cannot specify restore height when opening wallet\");\n if (config.getLanguage() !== undefined) throw new MoneroError(\"Cannot specify language when opening wallet\");\n if (config.getSaveCurrent() === true) throw new MoneroError(\"Cannot save current wallet when opening JNI wallet\");\n \n // read wallet data from disk if not provided\n if (!config.getKeysData()) {\n let fs = config.getFs() ? config.getFs() : MoneroWalletFull._getFs();\n if (!fs) throw new MoneroError(\"Must provide file system to read wallet data from\");\n if (!this.walletExists(config.getPath(), fs)) throw new MoneroError(\"Wallet does not exist at path: \" + config.getPath());\n config.setKeysData(fs.readFileSync(config.getPath() + \".keys\"));\n config.setCacheData(fs.existsSync(config.getPath()) ? fs.readFileSync(config.getPath()) : \"\");\n }\n \n // open wallet from data\n return MoneroWalletFull._openWalletData(config.getPath(), config.getPassword(), config.getNetworkType(), config.getKeysData(), config.getCacheData(), config.getServer(), config.getProxyToWorker(), config.getFs());\n }\n \n /**\n *

Create a wallet using WebAssembly bindings to wallet2.h.

\n * \n *

Example:

\n * \n * \n * let wallet = await MoneroWalletFull.createWallet({
\n *    path: \"./test_wallets/wallet1\", // leave blank for in-memory wallet
\n *    password: \"supersecretpassword\",
\n *    networkType: MoneroNetworkType.STAGENET,
\n *    seed: \"coexist igloo pamphlet lagoon...\",
\n *    restoreHeight: 1543218,
\n *    server: new MoneroRpcConnection(\"http://localhost:38081\", \"daemon_user\", \"daemon_password_123\"),
\n * });\n *
\n * \n * @param {object|MoneroWalletConfig} config - MoneroWalletConfig or equivalent config object\n * @param {string} config.path - path of the wallet to create (optional, in-memory wallet if not given)\n * @param {string} config.password - password of the wallet to create\n * @param {string|number} config.networkType - network type of the wallet to create (one of \"mainnet\", \"testnet\", \"stagenet\" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)\n * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)\n * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase\n * @param {boolean} config.isMultisig - restore multisig wallet from seed\n * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)\n * @param {string} config.privateViewKey - private view key of the wallet to create (optional)\n * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)\n * @param {number} config.restoreHeight - block height to start scanning from (defaults to 0 unless generating random wallet)\n * @param {string} config.language - language of the wallet's seed phrase (defaults to \"English\" or auto-detected)\n * @param {number} config.accountLookahead - number of accounts to scan (optional)\n * @param {number} config.subaddressLookahead - number of subaddresses to scan per account (optional)\n * @param {MoneroRpcConnection|object} config.server - MoneroRpcConnection or equivalent JS object providing daemon configuration (optional)\n * @param {string} config.serverUri - uri of the wallet's daemon (optional)\n * @param {string} config.serverUsername - username to authenticate with the daemon (optional)\n * @param {string} config.serverPassword - password to authenticate with the daemon (optional)\n * @param {boolean} config.rejectUnauthorized - reject self-signed server certificates if true (defaults to true)\n * @param {boolean} config.proxyToWorker - proxies wallet operations to a worker in order to not block the main thread (default true)\n * @param {fs} config.fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)\n * @return {MoneroWalletFull} the created wallet\n */\n static async createWallet(config) {\n \n // normalize and validate config\n if (config === undefined) throw new MoneroError(\"Must provide config to create wallet\");\n config = config instanceof MoneroWalletConfig ? config : new MoneroWalletConfig(config);\n if (config.getSeed() !== undefined && (config.getPrimaryAddress() !== undefined || config.getPrivateViewKey() !== undefined || config.getPrivateSpendKey() !== undefined)) {\n throw new MoneroError(\"Wallet may be initialized with a seed or keys but not both\");\n } // TODO: factor this much out to common\n if (config.getNetworkType() === undefined) throw new MoneroError(\"Must provide a networkType: 'mainnet', 'testnet' or 'stagenet'\");\n MoneroNetworkType.validate(config.getNetworkType());\n if (config.getSaveCurrent() === true) throw new MoneroError(\"Cannot save current wallet when creating full WASM wallet\");\n if (config.getPath() === undefined) config.setPath(\"\");\n if (config.getPath() && MoneroWalletFull.walletExists(config.getPath(), config.getFs())) throw new MoneroError(\"Wallet already exists: \" + config.getPath());\n if (config.getPassword() === undefined) config.setPassword(\"\");\n \n // create wallet\n if (config.getSeed() !== undefined) {\n if (config.getLanguage() !== undefined) throw new MoneroError(\"Cannot provide language when creating wallet from seed\");\n return MoneroWalletFull._createWalletFromSeed(config);\n } else if (config.getPrivateSpendKey() !== undefined || config.getPrimaryAddress() !== undefined) {\n if (config.getSeedOffset() !== undefined) throw new MoneroError(\"Cannot provide seedOffset when creating wallet from keys\");\n return MoneroWalletFull._createWalletFromKeys(config);\n } else {\n if (config.getSeedOffset() !== undefined) throw new MoneroError(\"Cannot provide seedOffset when creating random wallet\");\n if (config.getRestoreHeight() !== undefined) throw new MoneroError(\"Cannot provide restoreHeight when creating random wallet\");\n return MoneroWalletFull._createWalletRandom(config);\n }\n }\n \n static async _createWalletFromSeed(config) {\n if (config.getProxyToWorker() === undefined) config.setProxyToWorker(true);\n if (config.getProxyToWorker()) return MoneroWalletFullProxy._createWallet(config);\n \n // validate and normalize params\n let daemonConnection = config.getServer();\n let rejectUnauthorized = daemonConnection ? daemonConnection.getRejectUnauthorized() : true;\n if (config.getRestoreHeight() === undefined) config.setRestoreHeight(0);\n if (config.getSeedOffset() === undefined) config.setSeedOffset(\"\");\n \n // load full wasm module\n let module = await LibraryUtils.loadFullModule();\n \n // create wallet in queue\n let wallet = await module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n \n // register fn informing if unauthorized reqs should be rejected\n let rejectUnauthorizedFnId = GenUtils.getUUID();\n LibraryUtils.setRejectUnauthorizedFn(rejectUnauthorizedFnId, function() { return rejectUnauthorized });\n \n // define callback for wasm\n let callbackFn = async function(cppAddress) {\n if (typeof cppAddress === \"string\") reject(new MoneroError(cppAddress));\n else resolve(new MoneroWalletFull(cppAddress, config.getPath(), config.getPassword(), config.getFs(), config.getRejectUnauthorized(), rejectUnauthorizedFnId));\n };\n \n // create wallet in wasm and invoke callback when done\n module.create_full_wallet(JSON.stringify(config.toJson()), rejectUnauthorizedFnId, callbackFn);\n });\n });\n \n // save wallet\n if (config.getPath()) await wallet.save();\n return wallet;\n }\n \n static async _createWalletFromKeys(config) {\n if (config.getProxyToWorker() === undefined) config.setProxyToWorker(true);\n if (config.getProxyToWorker()) return MoneroWalletFullProxy._createWallet(config);\n \n // validate and normalize params\n MoneroNetworkType.validate(config.getNetworkType());\n if (config.getPrimaryAddress() === undefined) config.setPrimaryAddress(\"\");\n if (config.getPrivateViewKey() === undefined) config.setPrivateViewKey(\"\");\n if (config.getPrivateSpendKey() === undefined) config.setPrivateSpendKey(\"\");\n let daemonConnection = config.getServer();\n let rejectUnauthorized = daemonConnection ? daemonConnection.getRejectUnauthorized() : true;\n if (config.getRestoreHeight() === undefined) config.setRestoreHeight(0);\n if (config.getLanguage() === undefined) config.setLanguage(\"English\");\n \n // load full wasm module\n let module = await LibraryUtils.loadFullModule();\n \n // create wallet in queue\n let wallet = await module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n \n // register fn informing if unauthorized reqs should be rejected\n let rejectUnauthorizedFnId = GenUtils.getUUID();\n LibraryUtils.setRejectUnauthorizedFn(rejectUnauthorizedFnId, function() { return rejectUnauthorized });\n \n // define callback for wasm\n let callbackFn = async function(cppAddress) {\n if (typeof cppAddress === \"string\") reject(new MoneroError(cppAddress));\n else resolve(new MoneroWalletFull(cppAddress, config.getPath(), config.getPassword(), config.getFs(), config.getRejectUnauthorized(), rejectUnauthorizedFnId));\n };\n \n // create wallet in wasm and invoke callback when done\n module.create_full_wallet(JSON.stringify(config.toJson()), rejectUnauthorizedFnId, callbackFn);\n });\n });\n \n // save wallet\n if (config.getPath()) await wallet.save();\n return wallet;\n }\n \n static async _createWalletRandom(config) {\n if (config.getProxyToWorker() === undefined) config.setProxyToWorker(true);\n if (config.getProxyToWorker()) return MoneroWalletFullProxy._createWallet(config);\n \n // validate and normalize params\n if (config.getLanguage() === undefined) config.setLanguage(\"English\");\n let daemonConnection = config.getServer();\n let rejectUnauthorized = daemonConnection ? daemonConnection.getRejectUnauthorized() : true;\n \n // load wasm module\n let module = await LibraryUtils.loadFullModule();\n \n // create wallet in queue\n let wallet = await module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n \n // register fn informing if unauthorized reqs should be rejected\n let rejectUnauthorizedFnId = GenUtils.getUUID();\n LibraryUtils.setRejectUnauthorizedFn(rejectUnauthorizedFnId, function() { return rejectUnauthorized });\n \n // define callback for wasm\n let callbackFn = async function(cppAddress) {\n if (typeof cppAddress === \"string\") reject(new MoneroError(cppAddress));\n else resolve(new MoneroWalletFull(cppAddress, config.getPath(), config.getPassword(), config.getFs(), config.getRejectUnauthorized(), rejectUnauthorizedFnId));\n };\n \n // create wallet in wasm and invoke callback when done\n module.create_full_wallet(JSON.stringify(config.toJson()), rejectUnauthorizedFnId, callbackFn);\n });\n });\n \n // save wallet\n if (config.getPath()) await wallet.save();\n return wallet;\n }\n \n static async getSeedLanguages() {\n let module = await LibraryUtils.loadFullModule();\n return module.queueTask(async function() {\n return JSON.parse(module.get_keys_wallet_seed_languages()).languages;\n });\n }\n \n // --------------------------- INSTANCE METHODS -----------------------------\n \n /**\n * Internal constructor which is given the memory address of a C++ wallet\n * instance.\n * \n * This method should not be called externally but should be called through\n * static wallet creation utilities in this class.\n * \n * @param {int} cppAddress - address of the wallet instance in C++\n * @param {string} path - path of the wallet instance\n * @param {string} password - password of the wallet instance\n * @param {FileSystem} fs - node.js-compatible file system to read/write wallet files\n * @param {boolean} rejectUnauthorized - specifies if unauthorized requests (e.g. self-signed certificates) should be rejected\n * @param {string} rejectUnauthorizedFnId - unique identifier for http_client_wasm to query rejectUnauthorized\n */\n constructor(cppAddress, path, password, fs, rejectUnauthorized, rejectUnauthorizedFnId) {\n super(cppAddress);\n this._path = path;\n this._password = password;\n this._listeners = [];\n this._fs = fs ? fs : (path ? MoneroWalletFull._getFs() : undefined);\n this._isClosed = false;\n this._fullListener = new WalletFullListener(this); // receives notifications from wasm c++\n this._fullListenerHandle = 0; // memory address of the wallet listener in c++\n this._rejectUnauthorized = rejectUnauthorized;\n this._rejectUnauthorizedConfigId = rejectUnauthorizedFnId;\n this._syncPeriodInMs = MoneroWalletFull.DEFAULT_SYNC_PERIOD_IN_MS;\n let that = this;\n LibraryUtils.setRejectUnauthorizedFn(rejectUnauthorizedFnId, function() { return that._rejectUnauthorized }); // register fn informing if unauthorized reqs should be rejected\n }\n \n // ------------ WALLET METHODS SPECIFIC TO WASM IMPLEMENTATION --------------\n \n /**\n * Get the maximum height of the peers the wallet's daemon is connected to.\n *\n * @return {number} the maximum height of the peers the wallet's daemon is connected to\n */\n async getDaemonMaxPeerHeight() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(resp) {\n resolve(resp);\n }\n \n // call wasm and invoke callback when done\n that._module.get_daemon_max_peer_height(that._cppAddress, callbackFn);\n });\n });\n }\n \n /**\n * Indicates if the wallet's daemon is synced with the network.\n * \n * @return {boolean} true if the daemon is synced with the network, false otherwise\n */\n async isDaemonSynced() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(resp) {\n resolve(resp);\n }\n \n // call wasm and invoke callback when done\n that._module.is_daemon_synced(that._cppAddress, callbackFn);\n });\n });\n }\n \n /**\n * Indicates if the wallet is synced with the daemon.\n * \n * @return {boolean} true if the wallet is synced with the daemon, false otherwise\n */\n async isSynced() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(resp) {\n resolve(resp);\n }\n \n // call wasm and invoke callback when done\n that._module.is_synced(that._cppAddress, callbackFn);\n });\n });\n }\n \n /**\n * Get the wallet's network type (mainnet, testnet, or stagenet).\n * \n * @return {MoneroNetworkType} the wallet's network type\n */\n async getNetworkType() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.get_network_type(that._cppAddress);\n });\n }\n \n /**\n * Get the height of the first block that the wallet scans.\n * \n * @return {number} the height of the first block that the wallet scans\n */\n async getRestoreHeight() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.get_restore_height(that._cppAddress);\n });\n }\n \n /**\n * Set the height of the first block that the wallet scans.\n * \n * @param {number} restoreHeight - height of the first block that the wallet scans\n */\n async setRestoreHeight(restoreHeight) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.set_restore_height(that._cppAddress, restoreHeight);\n });\n }\n \n /**\n * Move the wallet from its current path to the given path.\n * \n * @param {string} path - the wallet's destination path\n */\n async moveTo(path) {\n return MoneroWalletFull._moveTo(path, this);\n }\n \n // -------------------------- COMMON WALLET METHODS -------------------------\n \n async addListener(listener) {\n this._assertNotClosed();\n assert(listener instanceof MoneroWalletListener, \"Listener must be instance of MoneroWalletListener\");\n this._listeners.push(listener);\n await this._refreshListening();\n }\n \n async removeListener(listener) {\n this._assertNotClosed();\n let idx = this._listeners.indexOf(listener);\n if (idx > -1) this._listeners.splice(idx, 1);\n else throw new MoneroError(\"Listener is not registered with wallet\");\n await this._refreshListening();\n }\n \n getListeners() {\n this._assertNotClosed();\n return this._listeners;\n }\n \n async setDaemonConnection(uriOrRpcConnection) {\n this._assertNotClosed();\n \n // normalize connection\n let connection = !uriOrRpcConnection ? undefined : uriOrRpcConnection instanceof MoneroRpcConnection ? uriOrRpcConnection : new MoneroRpcConnection(uriOrRpcConnection);\n let uri = connection && connection.getUri() ? connection.getUri() : \"\";\n let username = connection && connection.getUsername() ? connection.getUsername() : \"\";\n let password = connection && connection.getPassword() ? connection.getPassword() : \"\";\n let rejectUnauthorized = connection ? connection.getRejectUnauthorized() : undefined;\n this._rejectUnauthorized = rejectUnauthorized; // persist locally\n \n // set connection in queue\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(resp) { resolve(); }\n \n // call wasm and invoke callback when done\n that._module.set_daemon_connection(that._cppAddress, uri, username, password, callbackFn);\n });\n });\n }\n \n async getDaemonConnection() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let connectionContainerStr = that._module.get_daemon_connection(that._cppAddress);\n if (!connectionContainerStr) resolve();\n else {\n let jsonConnection = JSON.parse(connectionContainerStr);\n resolve(new MoneroRpcConnection(jsonConnection.uri, jsonConnection.username, jsonConnection.password, that._rejectUnauthorized));\n }\n });\n });\n }\n \n async isConnectedToDaemon() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(resp) {\n resolve(resp);\n }\n \n // call wasm and invoke callback when done\n that._module.is_connected_to_daemon(that._cppAddress, callbackFn);\n });\n });\n }\n \n async getVersion() {\n this._assertNotClosed();\n throw new MoneroError(\"Not implemented\");\n }\n \n async getPath() {\n this._assertNotClosed();\n return this._path;\n }\n \n async getIntegratedAddress(standardAddress, paymentId) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try {\n let result = that._module.get_integrated_address(that._cppAddress, standardAddress ? standardAddress : \"\", paymentId ? paymentId : \"\");\n if (result.charAt(0) !== \"{\") throw new MoneroError(result);\n return new MoneroIntegratedAddress(JSON.parse(result));\n } catch (err) {\n if (err.message.includes(\"Invalid payment ID\")) throw new MoneroError(\"Invalid payment ID: \" + paymentId);\n throw new MoneroError(err.message);\n }\n });\n }\n \n async decodeIntegratedAddress(integratedAddress) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try {\n let result = that._module.decode_integrated_address(that._cppAddress, integratedAddress);\n if (result.charAt(0) !== \"{\") throw new MoneroError(result);\n return new MoneroIntegratedAddress(JSON.parse(result));\n } catch (err) {\n throw new MoneroError(err.message);\n }\n });\n }\n \n async getHeight() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(resp) {\n resolve(resp);\n }\n \n // call wasm and invoke callback when done\n that._module.get_height(that._cppAddress, callbackFn);\n });\n });\n }\n \n async getDaemonHeight() {\n this._assertNotClosed();\n if (!(await this.isConnectedToDaemon())) throw new MoneroError(\"Wallet is not connected to daemon\");\n \n // schedule task\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(resp) {\n resolve(resp);\n }\n \n // call wasm and invoke callback when done\n that._module.get_daemon_height(that._cppAddress, callbackFn);\n });\n });\n }\n \n async getHeightByDate(year, month, day) {\n this._assertNotClosed();\n if (!(await this.isConnectedToDaemon())) throw new MoneroError(\"Wallet is not connected to daemon\");\n \n // schedule task\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(resp) {\n if (typeof resp === \"string\") reject(new MoneroError(resp));\n else resolve(resp);\n }\n \n // call wasm and invoke callback when done\n that._module.get_height_by_date(that._cppAddress, year, month, day, callbackFn);\n });\n });\n }\n \n /**\n * Synchronize the wallet with the daemon as a one-time synchronous process.\n * \n * @param {MoneroWalletListener|number} listenerOrStartHeight - listener xor start height (defaults to no sync listener, the last synced block)\n * @param {number} startHeight - startHeight if not given in first arg (defaults to last synced block)\n * @param {bool} allowConcurrentCalls - allow other wallet methods to be processed simultaneously during sync (default false)

WARNING: enabling this option will crash wallet execution if another call makes a simultaneous network request. TODO: possible to sync wasm network requests in http_client_wasm.cpp? \n */\n async sync(listenerOrStartHeight, startHeight, allowConcurrentCalls) {\n this._assertNotClosed();\n if (!(await this.isConnectedToDaemon())) throw new MoneroError(\"Wallet is not connected to daemon\");\n \n // normalize params\n startHeight = listenerOrStartHeight === undefined || listenerOrStartHeight instanceof MoneroWalletListener ? startHeight : listenerOrStartHeight;\n let listener = listenerOrStartHeight instanceof MoneroWalletListener ? listenerOrStartHeight : undefined;\n if (startHeight === undefined) startHeight = Math.max(await this.getHeight(), await this.getRestoreHeight());\n \n // register listener if given\n if (listener) await this.addListener(listener);\n \n // sync wallet\n let err;\n let result;\n try {\n let that = this;\n result = await (allowConcurrentCalls ? syncWasm() : that._module.queueTask(async function() { return syncWasm(); }));\n function syncWasm() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = async function(resp) {\n if (resp.charAt(0) !== \"{\") reject(new MoneroError(resp));\n else {\n let respJson = JSON.parse(resp);\n resolve(new MoneroSyncResult(respJson.numBlocksFetched, respJson.receivedMoney));\n }\n }\n \n // sync wallet in wasm and invoke callback when done\n that._module.sync(that._cppAddress, startHeight, callbackFn);\n });\n }\n } catch (e) {\n err = e;\n }\n \n // unregister listener\n if (listener) await this.removeListener(listener);\n \n // throw error or return\n if (err) throw err;\n return result;\n }\n \n async startSyncing(syncPeriodInMs) {\n this._assertNotClosed();\n if (!(await this.isConnectedToDaemon())) throw new MoneroError(\"Wallet is not connected to daemon\");\n this._syncPeriodInMs = syncPeriodInMs === undefined ? MoneroWalletFull.DEFAULT_SYNC_PERIOD_IN_MS : syncPeriodInMs;\n let that = this;\n if (!this._syncLooper) this._syncLooper = new TaskLooper(async function() { await that._backgroundSync(); })\n this._syncLooper.start(this._syncPeriodInMs);\n }\n \n async stopSyncing() {\n this._assertNotClosed();\n if (this._syncLooper) this._syncLooper.stop();\n this._module.stop_syncing(this._cppAddress); // task is not queued so wallet stops immediately\n }\n \n async scanTxs(txHashes) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function(err) {\n if (err) reject(new MoneroError(msg));\n else resolve();\n } \n that._module.scan_txs(that._cppAddress, JSON.stringify({txHashes: txHashes}), callbackFn);\n });\n });\n }\n \n async rescanSpent() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function() { resolve(); }\n that._module.rescan_spent(that._cppAddress, callbackFn);\n });\n });\n }\n \n async rescanBlockchain() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function() { resolve(); }\n that._module.rescan_blockchain(that._cppAddress, callbackFn);\n });\n });\n }\n \n async getBalance(accountIdx, subaddressIdx) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n \n // get balance encoded in json string\n let balanceStr;\n if (accountIdx === undefined) {\n assert(subaddressIdx === undefined, \"Subaddress index must be undefined if account index is undefined\");\n balanceStr = that._module.get_balance_wallet(that._cppAddress);\n } else if (subaddressIdx === undefined) {\n balanceStr = that._module.get_balance_account(that._cppAddress, accountIdx);\n } else {\n balanceStr = that._module.get_balance_subaddress(that._cppAddress, accountIdx, subaddressIdx);\n }\n \n // parse json string to BigInteger\n return BigInteger.parse(JSON.parse(GenUtils.stringifyBIs(balanceStr)).balance);\n });\n }\n \n async getUnlockedBalance(accountIdx, subaddressIdx) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n \n // get balance encoded in json string\n let unlockedBalanceStr;\n if (accountIdx === undefined) {\n assert(subaddressIdx === undefined, \"Subaddress index must be undefined if account index is undefined\");\n unlockedBalanceStr = that._module.get_unlocked_balance_wallet(that._cppAddress);\n } else if (subaddressIdx === undefined) {\n unlockedBalanceStr = that._module.get_unlocked_balance_account(that._cppAddress, accountIdx);\n } else {\n unlockedBalanceStr = that._module.get_unlocked_balance_subaddress(that._cppAddress, accountIdx, subaddressIdx);\n }\n \n // parse json string to BigInteger\n return BigInteger.parse(JSON.parse(GenUtils.stringifyBIs(unlockedBalanceStr)).unlockedBalance);\n });\n }\n \n async getAccounts(includeSubaddresses, tag) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let accountsStr = that._module.get_accounts(that._cppAddress, includeSubaddresses ? true : false, tag ? tag : \"\");\n let accounts = [];\n for (let accountJson of JSON.parse(GenUtils.stringifyBIs(accountsStr)).accounts) {\n accounts.push(MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson)));\n }\n return accounts;\n });\n }\n \n async getAccount(accountIdx, includeSubaddresses) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let accountStr = that._module.get_account(that._cppAddress, accountIdx, includeSubaddresses ? true : false);\n let accountJson = JSON.parse(GenUtils.stringifyBIs(accountStr));\n return MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson));\n });\n\n }\n \n async createAccount(label) {\n if (label === undefined) label = \"\";\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let accountStr = that._module.create_account(that._cppAddress, label);\n let accountJson = JSON.parse(GenUtils.stringifyBIs(accountStr));\n return MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson));\n });\n }\n \n async getSubaddresses(accountIdx, subaddressIndices) {\n let args = {accountIdx: accountIdx, subaddressIndices: subaddressIndices === undefined ? [] : GenUtils.listify(subaddressIndices)};\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let subaddressesJson = JSON.parse(GenUtils.stringifyBIs(that._module.get_subaddresses(that._cppAddress, JSON.stringify(args)))).subaddresses;\n let subaddresses = [];\n for (let subaddressJson of subaddressesJson) subaddresses.push(MoneroWalletFull._sanitizeSubaddress(new MoneroSubaddress(subaddressJson)));\n return subaddresses;\n });\n }\n \n async createSubaddress(accountIdx, label) {\n if (label === undefined) label = \"\";\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let subaddressStr = that._module.create_subaddress(that._cppAddress, accountIdx, label);\n let subaddressJson = JSON.parse(GenUtils.stringifyBIs(subaddressStr));\n return MoneroWalletFull._sanitizeSubaddress(new MoneroSubaddress(subaddressJson));\n });\n }\n\n async setSubaddressLabel(accountIdx, subaddressIdx, label) {\n if (label === undefined) label = \"\";\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n that._module.set_subaddress_label(that._cppAddress, accountIdx, subaddressIdx, label);\n });\n }\n \n async getTxs(query) {\n this._assertNotClosed();\n \n // copy and normalize query up to block\n query = MoneroWallet._normalizeTxQuery(query);\n \n // schedule task\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(blocksJsonStr) {\n \n // check for error\n if (blocksJsonStr.charAt(0) !== \"{\") {\n reject(new MoneroError(blocksJsonStr));\n return;\n }\n \n // resolve with deserialized txs\n try {\n resolve(MoneroWalletFull._deserializeTxs(query, blocksJsonStr));\n } catch (err) {\n reject(err);\n }\n }\n \n // call wasm and invoke callback when done\n that._module.get_txs(that._cppAddress, JSON.stringify(query.getBlock().toJson()), callbackFn);\n });\n });\n }\n \n async getTransfers(query) {\n this._assertNotClosed();\n \n // copy and normalize query up to block\n query = MoneroWallet._normalizeTransferQuery(query);\n \n // return promise which resolves on callback\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(blocksJsonStr) {\n \n // check for error\n if (blocksJsonStr.charAt(0) !== \"{\") {\n reject(new MoneroError(blocksJsonStr));\n return;\n }\n \n // resolve with deserialized transfers \n try {\n resolve(MoneroWalletFull._deserializeTransfers(query, blocksJsonStr));\n } catch (err) {\n reject(err);\n }\n }\n \n // call wasm and invoke callback when done\n that._module.get_transfers(that._cppAddress, JSON.stringify(query.getTxQuery().getBlock().toJson()), callbackFn);\n });\n });\n }\n \n async getOutputs(query) {\n this._assertNotClosed();\n \n // copy and normalize query up to block\n query = MoneroWallet._normalizeOutputQuery(query);\n \n // return promise which resolves on callback\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(blocksJsonStr) {\n \n // check for error\n if (blocksJsonStr.charAt(0) !== \"{\") {\n reject(new MoneroError(blocksJsonStr));\n return;\n }\n \n // resolve with deserialized outputs\n try {\n resolve(MoneroWalletFull._deserializeOutputs(query, blocksJsonStr));\n } catch (err) {\n reject(err);\n }\n }\n \n // call wasm and invoke callback when done\n that._module.get_outputs(that._cppAddress, JSON.stringify(query.getTxQuery().getBlock().toJson()), callbackFn);\n });\n });\n }\n \n async exportOutputs(all) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.export_outputs(that._cppAddress, all, function(outputsHex) { resolve(outputsHex); });\n });\n });\n }\n \n async importOutputs(outputsHex) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.import_outputs(that._cppAddress, outputsHex, function(numImported) { resolve(numImported); });\n });\n });\n }\n \n async exportKeyImages(all) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callback = function(keyImagesStr) {\n if (keyImagesStr.charAt(0) !== '{') reject(new MoneroError(keyImagesStr)); // json expected, else error\n let keyImages = [];\n for (let keyImageJson of JSON.parse(GenUtils.stringifyBIs(keyImagesStr)).keyImages) keyImages.push(new MoneroKeyImage(keyImageJson));\n resolve(keyImages);\n }\n that._module.export_key_images(that._cppAddress, all, callback);\n });\n });\n }\n \n async importKeyImages(keyImages) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callback = function(keyImageImportResultStr) {\n resolve(new MoneroKeyImageImportResult(JSON.parse(GenUtils.stringifyBIs(keyImageImportResultStr))));\n }\n that._module.import_key_images(that._cppAddress, JSON.stringify({keyImages: keyImages.map(keyImage => keyImage.toJson())}), callback);\n });\n });\n }\n \n async getNewKeyImagesFromLastImport() {\n this._assertNotClosed();\n throw new MoneroError(\"Not implemented\");\n }\n \n async freezeOutput(keyImage) {\n if (!keyImage) throw new MoneroError(\"Must specify key image to freeze\");\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function() { resolve(); }\n that._module.freeze_output(that._cppAddress, keyImage, callbackFn);\n });\n });\n }\n \n async thawOutput(keyImage) {\n if (!keyImage) throw new MoneroError(\"Must specify key image to thaw\");\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function() { resolve(); }\n that._module.thaw_output(that._cppAddress, keyImage, callbackFn);\n });\n });\n }\n \n async isOutputFrozen(keyImage) {\n if (!keyImage) throw new MoneroError(\"Must specify key image to check if frozen\");\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function(result) { resolve(result); }\n that._module.is_output_frozen(that._cppAddress, keyImage, callbackFn);\n });\n });\n }\n \n async createTxs(config) {\n this._assertNotClosed();\n \n // validate, copy, and normalize config\n config = MoneroWallet._normalizeCreateTxsConfig(config);\n if (config.getCanSplit() === undefined) config.setCanSplit(true);\n \n // return promise which resolves on callback\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(txSetJsonStr) {\n if (txSetJsonStr.charAt(0) !== '{') reject(new MoneroError(txSetJsonStr)); // json expected, else error\n else resolve(new MoneroTxSet(JSON.parse(GenUtils.stringifyBIs(txSetJsonStr))).getTxs());\n }\n \n // create txs in wasm and invoke callback when done\n that._module.create_txs(that._cppAddress, JSON.stringify(config.toJson()), callbackFn);\n });\n });\n }\n \n async sweepOutput(config) {\n this._assertNotClosed();\n \n // normalize and validate config\n config = MoneroWallet._normalizeSweepOutputConfig(config);\n \n // return promise which resolves on callback\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(txSetJsonStr) {\n if (txSetJsonStr.charAt(0) !== '{') reject(new MoneroError(txSetJsonStr)); // json expected, else error\n else resolve(new MoneroTxSet(JSON.parse(GenUtils.stringifyBIs(txSetJsonStr))).getTxs()[0]);\n }\n \n // sweep output in wasm and invoke callback when done\n that._module.sweep_output(that._cppAddress, JSON.stringify(config.toJson()), callbackFn);\n });\n });\n }\n\n async sweepUnlocked(config) {\n this._assertNotClosed();\n \n // validate and normalize config\n config = MoneroWallet._normalizeSweepUnlockedConfig(config);\n \n // return promise which resolves on callback\n let that = this;\n return that._module.queueTask(async function() { // TODO: could factor this pattern out, invoked with module params and callback handler\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(txSetsJson) {\n if (txSetsJson.charAt(0) !== '{') reject(new MoneroError(txSetsJson)); // json expected, else error\n else {\n let txSets = [];\n for (let txSetJson of JSON.parse(GenUtils.stringifyBIs(txSetsJson)).txSets) txSets.push(new MoneroTxSet(txSetJson));\n let txs = [];\n for (let txSet of txSets) for (let tx of txSet.getTxs()) txs.push(tx);\n resolve(txs);\n }\n }\n \n // sweep unlocked in wasm and invoke callback when done\n that._module.sweep_unlocked(that._cppAddress, JSON.stringify(config.toJson()), callbackFn);\n });\n });\n }\n \n async sweepDust(relay) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = function(txSetJsonStr) {\n if (txSetJsonStr.charAt(0) !== '{') reject(new MoneroError(txSetJsonStr)); // json expected, else error\n else {\n let txSet = new MoneroTxSet(JSON.parse(GenUtils.stringifyBIs(txSetJsonStr)));\n if (txSet.getTxs() === undefined) txSet.setTxs([]);\n resolve(txSet.getTxs());\n }\n }\n \n // call wasm and invoke callback when done\n that._module.sweep_dust(that._cppAddress, relay, callbackFn);\n });\n });\n }\n \n async relayTxs(txsOrMetadatas) {\n this._assertNotClosed();\n assert(Array.isArray(txsOrMetadatas), \"Must provide an array of txs or their metadata to relay\");\n let txMetadatas = [];\n for (let txOrMetadata of txsOrMetadatas) txMetadatas.push(txOrMetadata instanceof MoneroTxWallet ? txOrMetadata.getMetadata() : txOrMetadata);\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callback = function(txHashesJson) {\n if (txHashesJson.charAt(0) !== \"{\") reject(new MoneroError(txHashesJson));\n else resolve(JSON.parse(txHashesJson).txHashes);\n }\n that._module.relay_txs(that._cppAddress, JSON.stringify({txMetadatas: txMetadatas}), callback);\n });\n });\n }\n \n async describeTxSet(txSet) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n txSet = new MoneroTxSet()\n .setUnsignedTxHex(txSet.getUnsignedTxHex())\n .setSignedTxHex(txSet.getSignedTxHex())\n .setMultisigTxHex(txSet.getMultisigTxHex());\n try { return new MoneroTxSet(JSON.parse(GenUtils.stringifyBIs(that._module.describe_tx_set(that._cppAddress, JSON.stringify(txSet.toJson()))))); }\n catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }\n });\n }\n \n async signTxs(unsignedTxHex) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try { return that._module.sign_txs(that._cppAddress, unsignedTxHex); }\n catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }\n });\n }\n \n async submitTxs(signedTxHex) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function(resp) {\n if (resp.charAt(0) !== \"{\") reject(new MoneroError(resp));\n else resolve(JSON.parse(resp).txHashes);\n }\n that._module.submit_txs(that._cppAddress, signedTxHex, callbackFn);\n });\n });\n }\n \n async signMessage(message, signatureType, accountIdx, subaddressIdx) {\n \n // assign defaults\n signatureType = signatureType || MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY;\n accountIdx = accountIdx || 0;\n subaddressIdx = subaddressIdx || 0;\n \n // queue task to sign message\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try { return that._module.sign_message(that._cppAddress, message, signatureType === MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY ? 0 : 1, accountIdx, subaddressIdx); }\n catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }\n });\n }\n \n async verifyMessage(message, address, signature) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let resultJson;\n try {\n resultJson = JSON.parse(that._module.verify_message(that._cppAddress, message, address, signature));\n } catch (err) {\n resultJson = {isGood: false};\n }\n let result = new MoneroMessageSignatureResult(\n resultJson.isGood,\n !resultJson.isGood ? undefined : resultJson.isOld,\n !resultJson.isGood ? undefined : resultJson.signatureType === \"spend\" ? MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY : MoneroMessageSignatureType.SIGN_WITH_VIEW_KEY,\n !resultJson.isGood ? undefined : resultJson.version);\n return result;\n });\n }\n \n async getTxKey(txHash) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try { return that._module.get_tx_key(that._cppAddress, txHash); }\n catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }\n });\n }\n \n async checkTxKey(txHash, txKey, address) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed(); \n return new Promise(function(resolve, reject) {\n that._module.check_tx_key(that._cppAddress, txHash, txKey, address, function(respJsonStr) {\n if (respJsonStr.charAt(0) !== \"{\") reject(new MoneroError(respJsonStr));\n else resolve(new MoneroCheckTx(JSON.parse(GenUtils.stringifyBIs(respJsonStr))));\n });\n });\n });\n }\n \n async getTxProof(txHash, address, message) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.get_tx_proof(that._cppAddress, txHash || \"\", address || \"\", message || \"\", function(signature) {\n let errorKey = \"error: \";\n if (signature.indexOf(errorKey) === 0) reject(new MoneroError(signature.substring(errorKey.length)));\n else resolve(signature);\n });\n });\n });\n }\n \n async checkTxProof(txHash, address, message, signature) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed(); \n return new Promise(function(resolve, reject) {\n that._module.check_tx_proof(that._cppAddress, txHash || \"\", address || \"\", message || \"\", signature || \"\", function(respJsonStr) {\n if (respJsonStr.charAt(0) !== \"{\") reject(new MoneroError(respJsonStr));\n else resolve(new MoneroCheckTx(JSON.parse(GenUtils.stringifyBIs(respJsonStr))));\n });\n });\n });\n }\n \n async getSpendProof(txHash, message) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.get_spend_proof(that._cppAddress, txHash || \"\", message || \"\", function(signature) {\n let errorKey = \"error: \";\n if (signature.indexOf(errorKey) === 0) reject(new MoneroError(signature.substring(errorKey.length)));\n else resolve(signature);\n });\n });\n });\n }\n \n async checkSpendProof(txHash, message, signature) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed(); \n return new Promise(function(resolve, reject) {\n that._module.check_spend_proof(that._cppAddress, txHash || \"\", message || \"\", signature || \"\", function(resp) {\n typeof resp === \"string\" ? reject(new MoneroError(resp)) : resolve(resp);\n });\n });\n });\n }\n \n async getReserveProofWallet(message) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.get_reserve_proof_wallet(that._cppAddress, message, function(signature) {\n let errorKey = \"error: \";\n if (signature.indexOf(errorKey) === 0) reject(new MoneroError(signature.substring(errorKey.length), -1));\n else resolve(signature);\n });\n });\n });\n }\n \n async getReserveProofAccount(accountIdx, amount, message) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.get_reserve_proof_account(that._cppAddress, accountIdx, amount.toString(), message, function(signature) {\n let errorKey = \"error: \";\n if (signature.indexOf(errorKey) === 0) reject(new MoneroError(signature.substring(errorKey.length), -1));\n else resolve(signature);\n });\n });\n });\n }\n\n async checkReserveProof(address, message, signature) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed(); \n return new Promise(function(resolve, reject) {\n that._module.check_reserve_proof(that._cppAddress, address, message, signature, function(respJsonStr) {\n if (respJsonStr.charAt(0) !== \"{\") reject(new MoneroError(respJsonStr, -1));\n else resolve(new MoneroCheckReserve(JSON.parse(GenUtils.stringifyBIs(respJsonStr))));\n });\n });\n });\n }\n \n async getTxNotes(txHashes) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try { return JSON.parse(that._module.get_tx_notes(that._cppAddress, JSON.stringify({txHashes: txHashes}))).txNotes; }\n catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }\n });\n }\n \n async setTxNotes(txHashes, notes) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try { that._module.set_tx_notes(that._cppAddress, JSON.stringify({txHashes: txHashes, txNotes: notes})); }\n catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }\n });\n }\n \n async getAddressBookEntries(entryIndices) {\n if (!entryIndices) entryIndices = [];\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let entries = [];\n for (let entryJson of JSON.parse(that._module.get_address_book_entries(that._cppAddress, JSON.stringify({entryIndices: entryIndices}))).entries) {\n entries.push(new MoneroAddressBookEntry(entryJson));\n }\n return entries;\n });\n }\n \n async addAddressBookEntry(address, description) {\n if (!address) address = \"\";\n if (!description) description = \"\";\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.add_address_book_entry(that._cppAddress, address, description);\n });\n }\n \n async editAddressBookEntry(index, setAddress, address, setDescription, description) {\n if (!setAddress) setAddress = false;\n if (!address) address = \"\";\n if (!setDescription) setDescription = false;\n if (!description) description = \"\";\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n that._module.edit_address_book_entry(that._cppAddress, index, setAddress, address, setDescription, description);\n });\n }\n \n async deleteAddressBookEntry(entryIdx) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n that._module.delete_address_book_entry(that._cppAddress, entryIdx);\n });\n }\n \n async tagAccounts(tag, accountIndices) {\n if (!tag) tag = \"\";\n if (!accountIndices) accountIndices = [];\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n that._module.tag_accounts(that._cppAddress, JSON.stringify({tag: tag, accountIndices: accountIndices}));\n });\n }\n\n async untagAccounts(accountIndices) {\n if (!accountIndices) accountIndices = [];\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n that._module.tag_accounts(that._cppAddress, JSON.stringify({accountIndices: accountIndices}));\n });\n }\n \n async getAccountTags() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let accountTags = [];\n for (let accountTagJson of JSON.parse(that._module.get_account_tags(that._cppAddress)).accountTags) accountTags.push(new MoneroAccountTag(accountTagJson));\n return accountTags;\n });\n }\n\n async setAccountTagLabel(tag, label) {\n if (!tag) tag = \"\";\n if (!llabel) label = \"\";\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n that._module.set_account_tag_label(that._cppAddress, tag, label);\n });\n }\n \n async getPaymentUri(config) {\n config = MoneroWallet._normalizeCreateTxsConfig(config);\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try {\n return that._module.get_payment_uri(that._cppAddress, JSON.stringify(config.toJson()));\n } catch (err) {\n throw new MoneroError(\"Cannot make URI from supplied parameters\");\n }\n });\n }\n \n async parsePaymentUri(uri) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n try {\n return new MoneroTxConfig(JSON.parse(GenUtils.stringifyBIs(that._module.parse_payment_uri(that._cppAddress, uri))), true); // relax validation for unquoted big integers\n } catch (err) {\n throw new MoneroError(err.message);\n }\n });\n }\n \n async getAttribute(key) {\n this._assertNotClosed();\n assert(typeof key === \"string\", \"Attribute key must be a string\");\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let value = that._module.get_attribute(that._cppAddress, key);\n return value === \"\" ? null : value;\n });\n }\n \n async setAttribute(key, val) {\n this._assertNotClosed();\n assert(typeof key === \"string\", \"Attribute key must be a string\");\n assert(typeof val === \"string\", \"Attribute value must be a string\");\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n that._module.set_attribute(that._cppAddress, key, val);\n });\n }\n \n async startMining(numThreads, backgroundMining, ignoreBattery) {\n this._assertNotClosed();\n let daemon = new MoneroDaemonRpc(Object.assign((await this.getDaemonConnection()).getConfig(), {proxyToWorker: false}));\n await daemon.startMining(await this.getPrimaryAddress(), numThreads, backgroundMining, ignoreBattery);\n }\n \n async stopMining() {\n this._assertNotClosed();\n let daemon = new MoneroDaemonRpc(Object.assign((await this.getDaemonConnection()).getConfig(), {proxyToWorker: false}));\n await daemon.stopMining();\n }\n \n async isMultisigImportNeeded() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.is_multisig_import_needed(that._cppAddress);\n });\n }\n \n async isMultisig() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.is_multisig(that._cppAddress);\n });\n }\n \n async getMultisigInfo() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new MoneroMultisigInfo(JSON.parse(that._module.get_multisig_info(that._cppAddress)));\n });\n }\n \n async prepareMultisig() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.prepare_multisig(that._cppAddress);\n });\n }\n \n async makeMultisig(multisigHexes, threshold, password) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.make_multisig(that._cppAddress, JSON.stringify({multisigHexes: multisigHexes, threshold: threshold, password: password}), (resp) => {\n let errorKey = \"error: \";\n if (resp.indexOf(errorKey) === 0) reject(new MoneroError(resp.substring(errorKey.length)));\n else resolve(resp);\n });\n });\n });\n }\n \n async exchangeMultisigKeys(multisigHexes, password) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.exchange_multisig_keys(that._cppAddress, JSON.stringify({multisigHexes: multisigHexes, password: password}), (resp) => {\n let errorKey = \"error: \";\n if (resp.indexOf(errorKey) === 0) reject(new MoneroError(resp.substring(errorKey.length)));\n else resolve(new MoneroMultisigInitResult(JSON.parse(resp)));\n });\n });\n });\n }\n \n async exportMultisigHex() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.export_multisig_hex(that._cppAddress);\n });\n }\n \n async importMultisigHex(multisigHexes) {\n if (!GenUtils.isArray(multisigHexes)) throw new MoneroError(\"Must provide string[] to importMultisigHex()\")\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function(resp) {\n if (typeof resp === \"string\") reject(new MoneroError(resp));\n else resolve(resp);\n }\n that._module.import_multisig_hex(that._cppAddress, JSON.stringify({multisigHexes: multisigHexes}), callbackFn);\n });\n });\n }\n \n async signMultisigTxHex(multisigTxHex) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = async function(resp) {\n if (resp.charAt(0) !== \"{\") reject(new MoneroError(resp));\n else resolve(new MoneroMultisigSignResult(JSON.parse(resp)));\n }\n that._module.sign_multisig_tx_hex(that._cppAddress, multisigTxHex, callbackFn)\n });\n });\n }\n \n async submitMultisigTxHex(signedMultisigTxHex) {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n let callbackFn = function(resp) { \n if (resp.charAt(0) !== \"{\") reject(new MoneroError(resp));\n else resolve(JSON.parse(resp).txHashes);\n }\n that._module.submit_multisig_tx_hex(that._cppAddress, signedMultisigTxHex, callbackFn);\n });\n });\n }\n \n /**\n * Get the wallet's keys and cache data.\n * \n * @return {DataView[]} is the keys and cache data, respectively\n */\n async getData() {\n this._assertNotClosed();\n \n // queue call to wasm module\n let viewOnly = await this.isViewOnly();\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n \n // store views in array\n let views = [];\n \n // malloc cache buffer and get buffer location in c++ heap\n let cacheBufferLoc = JSON.parse(that._module.get_cache_file_buffer(that._cppAddress));\n \n // read binary data from heap to DataView\n let view = new DataView(new ArrayBuffer(cacheBufferLoc.length));\n for (let i = 0; i < cacheBufferLoc.length; i++) {\n view.setInt8(i, that._module.HEAPU8[cacheBufferLoc.pointer / Uint8Array.BYTES_PER_ELEMENT + i]);\n }\n \n // free binary on heap\n that._module._free(cacheBufferLoc.pointer);\n \n // write cache file\n views.push(Buffer.from(view.buffer));\n \n // malloc keys buffer and get buffer location in c++ heap\n let keysBufferLoc = JSON.parse(that._module.get_keys_file_buffer(that._cppAddress, that._password, viewOnly));\n \n // read binary data from heap to DataView\n view = new DataView(new ArrayBuffer(keysBufferLoc.length));\n for (let i = 0; i < keysBufferLoc.length; i++) {\n view.setInt8(i, that._module.HEAPU8[keysBufferLoc.pointer / Uint8Array.BYTES_PER_ELEMENT + i]);\n }\n \n // free binary on heap\n that._module._free(keysBufferLoc.pointer);\n \n // prepend keys file\n views.unshift(Buffer.from(view.buffer));\n return views;\n });\n }\n \n async changePassword(oldPassword, newPassword) {\n if (oldPassword !== this._password) throw new MoneroError(\"Invalid original password.\"); // wallet2 verify_password loads from disk so verify password here\n if (newPassword === undefined) newPassword = \"\";\n let that = this;\n await that._module.queueTask(async function() {\n that._assertNotClosed();\n return new Promise(function(resolve, reject) {\n that._module.change_wallet_password(that._cppAddress, oldPassword, newPassword, async function(errMsg) {\n if (errMsg) reject(new MoneroError(errMsg));\n else resolve();\n });\n });\n });\n this._password = newPassword;\n if (this._path) await this.save(); // auto save\n }\n \n async save() {\n return MoneroWalletFull._save(this);\n }\n \n async close(save) {\n if (this._isClosed) return; // no effect if closed\n await this._refreshListening();\n await this.stopSyncing();\n await super.close(save);\n delete this._path;\n delete this._password;\n delete this._listeners;\n delete this._fullListener;\n LibraryUtils.setRejectUnauthorizedFn(this._rejectUnauthorizedConfigId, undefined); // unregister fn informing if unauthorized reqs should be rejected\n }\n \n // ----------- ADD JSDOC FOR SUPPORTED DEFAULT IMPLEMENTATIONS --------------\n \n async getNumBlocksToUnlock() { return super.getNumBlocksToUnlock(...arguments); }\n async getTx() { return super.getTx(...arguments); }\n async getIncomingTransfers() { return super.getIncomingTransfers(...arguments); }\n async getOutgoingTransfers() { return super.getOutgoingTransfers(...arguments); }\n async createTx() { return super.createTx(...arguments); }\n async relayTx() { return super.relayTx(...arguments); }\n async getTxNote() { return super.getTxNote(...arguments); }\n async setTxNote() { return super.setTxNote(...arguments); }\n \n // ---------------------------- PRIVATE HELPERS ----------------------------\n \n static _getFs() {\n if (!MoneroWalletFull.FS) MoneroWalletFull.FS = GenUtils.isBrowser() ? undefined : require('fs');\n return MoneroWalletFull.FS;\n }\n \n static async _openWalletData(path, password, networkType, keysData, cacheData, daemonUriOrConnection, proxyToWorker, fs) {\n if (proxyToWorker) return MoneroWalletFullProxy.openWalletData(path, password, networkType, keysData, cacheData, daemonUriOrConnection, fs);\n \n // validate and normalize parameters\n if (networkType === undefined) throw new MoneroError(\"Must provide the wallet's network type\");\n MoneroNetworkType.validate(networkType);\n let daemonConnection = typeof daemonUriOrConnection === \"string\" ? new MoneroRpcConnection(daemonUriOrConnection) : daemonUriOrConnection;\n let daemonUri = daemonConnection && daemonConnection.getUri() ? daemonConnection.getUri() : \"\";\n let daemonUsername = daemonConnection && daemonConnection.getUsername() ? daemonConnection.getUsername() : \"\";\n let daemonPassword = daemonConnection && daemonConnection.getPassword() ? daemonConnection.getPassword() : \"\";\n let rejectUnauthorized = daemonConnection ? daemonConnection.getRejectUnauthorized() : true;\n \n // load wasm module\n let module = await LibraryUtils.loadFullModule();\n \n // open wallet in queue\n return module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n \n // register fn informing if unauthorized reqs should be rejected\n let rejectUnauthorizedFnId = GenUtils.getUUID();\n LibraryUtils.setRejectUnauthorizedFn(rejectUnauthorizedFnId, function() { return rejectUnauthorized });\n \n // define callback for wasm\n let callbackFn = async function(cppAddress) {\n if (typeof cppAddress === \"string\") reject(new MoneroError(cppAddress));\n else resolve(new MoneroWalletFull(cppAddress, path, password, fs, rejectUnauthorized, rejectUnauthorizedFnId));\n };\n \n // create wallet in wasm and invoke callback when done\n module.open_wallet_full(password, networkType, keysData, cacheData, daemonUri, daemonUsername, daemonPassword, rejectUnauthorizedFnId, callbackFn);\n });\n });\n }\n \n async _backgroundSync() {\n let label = this._path ? this._path : (this._browserMainPath ? this._browserMainPath : \"in-memory wallet\"); // label for log\n LibraryUtils.log(1, \"Background synchronizing \" + label);\n try { await this.sync(); }\n catch (err) { if (!this._isClosed) console.error(\"Failed to background synchronize \" + label + \": \" + err.message); }\n }\n \n async _refreshListening() {\n let isEnabled = this._listeners.length > 0;\n let that = this;\n if (that._fullListenerHandle === 0 && !isEnabled || that._fullListenerHandle > 0 && isEnabled) return; // no difference\n return that._module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n that._module.set_listener(\n that._cppAddress,\n that._fullListenerHandle,\n newListenerHandle => {\n if (typeof newListenerHandle === \"string\") reject(new MoneroError(newListenerHandle));\n else {\n that._fullListenerHandle = newListenerHandle;\n resolve();\n }\n },\n isEnabled ? async function(height, startHeight, endHeight, percentDone, message) { await that._fullListener.onSyncProgress(height, startHeight, endHeight, percentDone, message); } : undefined,\n isEnabled ? async function(height) { await that._fullListener.onNewBlock(height); } : undefined,\n isEnabled ? async function(newBalanceStr, newUnlockedBalanceStr) { await that._fullListener.onBalancesChanged(newBalanceStr, newUnlockedBalanceStr); } : undefined,\n isEnabled ? async function(height, txHash, amountStr, accountIdx, subaddressIdx, version, unlockTime, isLocked) { await that._fullListener.onOutputReceived(height, txHash, amountStr, accountIdx, subaddressIdx, version, unlockTime, isLocked); } : undefined,\n isEnabled ? async function(height, txHash, amountStr, accountIdxStr, subaddressIdxStr, version, unlockTime, isLocked) { await that._fullListener.onOutputSpent(height, txHash, amountStr, accountIdxStr, subaddressIdxStr, version, unlockTime, isLocked); } : undefined,\n );\n });\n });\n }\n \n static _sanitizeBlock(block) {\n for (let tx of block.getTxs()) MoneroWalletFull._sanitizeTxWallet(tx);\n return block;\n }\n \n static _sanitizeTxWallet(tx) {\n assert(tx instanceof MoneroTxWallet);\n return tx;\n }\n \n static _sanitizeAccount(account) {\n if (account.getSubaddresses()) {\n for (let subaddress of account.getSubaddresses()) MoneroWalletFull._sanitizeSubaddress(subaddress);\n }\n return account;\n }\n \n static _sanitizeSubaddress(subaddress) {\n if (subaddress.getLabel() === \"\") subaddress.setLabel(undefined);\n return subaddress\n }\n \n static _deserializeBlocks(blocksJsonStr) {\n let blocksJson = JSON.parse(GenUtils.stringifyBIs(blocksJsonStr));\n let deserializedBlocks = {};\n deserializedBlocks.blocks = [];\n if (blocksJson.blocks) for (let blockJson of blocksJson.blocks) deserializedBlocks.blocks.push(MoneroWalletFull._sanitizeBlock(new MoneroBlock(blockJson, MoneroBlock.DeserializationType.TX_WALLET)));\n return deserializedBlocks;\n }\n \n static _deserializeTxs(query, blocksJsonStr) {\n \n // deserialize blocks\n let deserializedBlocks = MoneroWalletFull._deserializeBlocks(blocksJsonStr);\n let blocks = deserializedBlocks.blocks;\n \n // collect txs\n let txs = [];\n for (let block of blocks) {\n MoneroWalletFull._sanitizeBlock(block);\n for (let tx of block.getTxs()) {\n if (block.getHeight() === undefined) tx.setBlock(undefined); // dereference placeholder block for unconfirmed txs\n txs.push(tx);\n }\n }\n \n // re-sort txs which is lost over wasm serialization // TODO: confirm that order is lost\n if (query.getHashes() !== undefined) {\n let txMap = new Map();\n for (let tx of txs) txMap[tx.getHash()] = tx;\n let txsSorted = [];\n for (let txHash of query.getHashes()) if (txMap[txHash] !== undefined) txsSorted.push(txMap[txHash]);\n txs = txsSorted;\n }\n \n return txs;\n }\n \n static _deserializeTransfers(query, blocksJsonStr) {\n \n // deserialize blocks\n let deserializedBlocks = MoneroWalletFull._deserializeBlocks(blocksJsonStr);\n let blocks = deserializedBlocks.blocks;\n \n // collect transfers\n let transfers = [];\n for (let block of blocks) {\n for (let tx of block.getTxs()) {\n if (block.getHeight() === undefined) tx.setBlock(undefined); // dereference placeholder block for unconfirmed txs\n if (tx.getOutgoingTransfer() !== undefined) transfers.push(tx.getOutgoingTransfer());\n if (tx.getIncomingTransfers() !== undefined) {\n for (let transfer of tx.getIncomingTransfers()) transfers.push(transfer);\n }\n }\n }\n \n return transfers;\n }\n \n static _deserializeOutputs(query, blocksJsonStr) {\n \n // deserialize blocks\n let deserializedBlocks = MoneroWalletFull._deserializeBlocks(blocksJsonStr);\n let blocks = deserializedBlocks.blocks;\n \n // collect outputs\n let outputs = [];\n for (let block of blocks) {\n for (let tx of block.getTxs()) {\n for (let output of tx.getOutputs()) outputs.push(output);\n }\n }\n \n return outputs;\n }\n \n /**\n * Set the path of the wallet on the browser main thread if run as a worker.\n * \n * @param {string} browserMainPath - path of the wallet on the browser main thread\n */\n _setBrowserMainPath(browserMainPath) {\n this._browserMainPath = browserMainPath;\n }\n \n static async _moveTo(path, wallet) {\n if (await wallet.isClosed()) throw new MoneroError(\"Wallet is closed\");\n if (!path) throw new MoneroError(\"Must provide path of destination wallet\");\n \n // save and return if same path\n const Path = require(\"path\");\n if (Path.normalize(wallet._path) === Path.normalize(path)) {\n await wallet.save();\n return;\n }\n \n // create destination directory if it doesn't exist\n let walletDir = Path.dirname(path);\n if (!wallet._fs.existsSync(walletDir)) {\n try { wallet._fs.mkdirSync(walletDir); }\n catch (err) { throw new MoneroError(\"Destination path \" + path + \" does not exist and cannot be created: \" + err.message); }\n }\n \n // write wallet files\n let data = await wallet.getData();\n wallet._fs.writeFileSync(path + \".keys\", data[0], \"binary\");\n wallet._fs.writeFileSync(path, data[1], \"binary\");\n wallet._fs.writeFileSync(path + \".address.txt\", await wallet.getPrimaryAddress());\n let oldPath = wallet._path;\n wallet._path = path;\n \n // delete old wallet files\n if (oldPath) {\n wallet._fs.unlinkSync(oldPath + \".address.txt\");\n wallet._fs.unlinkSync(oldPath + \".keys\");\n wallet._fs.unlinkSync(oldPath);\n }\n }\n \n static async _save(wallet) {\n if (await wallet.isClosed()) throw new MoneroError(\"Wallet is closed\");\n \n // path must be set\n let path = await wallet.getPath();\n if (!path) throw new MoneroError(\"Cannot save wallet because path is not set\");\n \n // write wallet files to *.new\n let pathNew = path + \".new\";\n let data = await wallet.getData();\n wallet._fs.writeFileSync(pathNew + \".keys\", data[0], \"binary\");\n wallet._fs.writeFileSync(pathNew, data[1], \"binary\");\n wallet._fs.writeFileSync(pathNew + \".address.txt\", await wallet.getPrimaryAddress());\n \n // replace old wallet files with new\n wallet._fs.renameSync(pathNew + \".keys\", path + \".keys\");\n wallet._fs.renameSync(pathNew, path, path + \".keys\");\n wallet._fs.renameSync(pathNew + \".address.txt\", path + \".address.txt\", path + \".keys\");\n }\n}\n\n/**\n * Implements a MoneroWallet by proxying requests to a worker which runs a full wallet.\n * \n * TODO: sort these methods according to master sort in MoneroWallet.js\n * TODO: probably only allow one listener to worker then propogate to registered listeners for performance\n * TODO: ability to recycle worker for use in another wallet\n * TODO: using LibraryUtils.WORKER_OBJECTS directly breaks encapsulation\n * \n * @private\n */\nclass MoneroWalletFullProxy extends MoneroWallet {\n \n // -------------------------- WALLET STATIC UTILS ---------------------------\n \n static async openWalletData(path, password, networkType, keysData, cacheData, daemonUriOrConnection, fs) {\n let walletId = GenUtils.getUUID();\n if (password === undefined) password = \"\";\n let daemonUriOrConfig = daemonUriOrConnection instanceof MoneroRpcConnection ? daemonUriOrConnection.getConfig() : daemonUriOrConnection;\n await LibraryUtils.invokeWorker(walletId, \"openWalletData\", [path, password, networkType, keysData, cacheData, daemonUriOrConfig]);\n let wallet = new MoneroWalletFullProxy(walletId, await LibraryUtils.getWorker(), path, fs);\n if (path) await wallet.save();\n return wallet;\n }\n \n static async _createWallet(config) {\n if (config.getPath() && MoneroWalletFull.walletExists(config.getPath(), config.getFs())) throw new MoneroError(\"Wallet already exists: \" + path);\n let walletId = GenUtils.getUUID();\n await LibraryUtils.invokeWorker(walletId, \"_createWallet\", [config.toJson()]);\n let wallet = new MoneroWalletFullProxy(walletId, await LibraryUtils.getWorker(), config.getPath(), config.getFs());\n if (config.getPath()) await wallet.save();\n return wallet;\n }\n \n // --------------------------- INSTANCE METHODS ----------------------------\n \n /**\n * Internal constructor which is given a worker to communicate with via messages.\n * \n * This method should not be called externally but should be called through\n * static wallet creation utilities in this class.\n * \n * @param {string} walletId - identifies the wallet with the worker\n * @param {Worker} worker - worker to communicate with via messages\n */\n constructor(walletId, worker, path, fs) {\n super();\n this._walletId = walletId;\n this._worker = worker;\n this._path = path;\n this._fs = fs ? fs : (path ? MoneroWalletFull._getFs() : undefined);\n this._wrappedListeners = [];\n }\n \n async isViewOnly() {\n return this._invokeWorker(\"isViewOnly\");\n }\n \n async getNetworkType() {\n return this._invokeWorker(\"getNetworkType\");\n }\n \n async getVersion() {\n throw new MoneroError(\"Not implemented\");\n }\n \n getPath() {\n return this._path;\n }\n \n async getSeed() {\n return this._invokeWorker(\"getSeed\");\n }\n \n async getSeedLanguage() {\n return this._invokeWorker(\"getSeedLanguage\");\n }\n \n async getSeedLanguages() {\n return this._invokeWorker(\"getSeedLanguages\");\n }\n \n async getPrivateSpendKey() {\n return this._invokeWorker(\"getPrivateSpendKey\");\n }\n \n async getPrivateViewKey() {\n return this._invokeWorker(\"getPrivateViewKey\");\n }\n \n async getPublicViewKey() {\n return this._invokeWorker(\"getPublicViewKey\");\n }\n \n async getPublicSpendKey() {\n return this._invokeWorker(\"getPublicSpendKey\");\n }\n \n async getAddress(accountIdx, subaddressIdx) {\n return this._invokeWorker(\"getAddress\", Array.from(arguments));\n }\n \n async getAddressIndex(address) {\n let subaddressJson = await this._invokeWorker(\"getAddressIndex\", Array.from(arguments));\n return MoneroWalletFull._sanitizeSubaddress(new MoneroSubaddress(subaddressJson));\n }\n\n async setSubaddressLabel(accountIdx, subaddressIdx, label) {\n return this._invokeWorker(\"setSubaddressLabel\", Array.from(arguments));\n }\n \n async getIntegratedAddress(standardAddress, paymentId) {\n return new MoneroIntegratedAddress(await this._invokeWorker(\"getIntegratedAddress\", Array.from(arguments)));\n }\n \n async decodeIntegratedAddress(integratedAddress) {\n return new MoneroIntegratedAddress(await this._invokeWorker(\"decodeIntegratedAddress\", Array.from(arguments)));\n }\n \n async setDaemonConnection(uriOrRpcConnection) {\n if (!uriOrRpcConnection) await this._invokeWorker(\"setDaemonConnection\");\n else {\n let connection = !uriOrRpcConnection ? undefined : uriOrRpcConnection instanceof MoneroRpcConnection ? uriOrRpcConnection : new MoneroRpcConnection(uriOrRpcConnection);\n await this._invokeWorker(\"setDaemonConnection\", connection ? connection.getConfig() : undefined);\n }\n }\n \n async getDaemonConnection() {\n let rpcConfig = await this._invokeWorker(\"getDaemonConnection\");\n return rpcConfig ? new MoneroRpcConnection(rpcConfig) : undefined;\n }\n \n async isConnectedToDaemon() {\n return this._invokeWorker(\"isConnectedToDaemon\");\n }\n \n async getRestoreHeight() {\n return this._invokeWorker(\"getRestoreHeight\");\n }\n \n async setRestoreHeight(restoreHeight) {\n return this._invokeWorker(\"setRestoreHeight\", [restoreHeight]);\n }\n \n async getDaemonHeight() {\n return this._invokeWorker(\"getDaemonHeight\");\n }\n \n async getDaemonMaxPeerHeight() {\n return this._invokeWorker(\"getDaemonMaxPeerHeight\");\n }\n \n async getHeightByDate(year, month, day) {\n return this._invokeWorker(\"getHeightByDate\", [year, month, day]);\n }\n \n async isDaemonSynced() {\n return this._invokeWorker(\"isDaemonSynced\");\n }\n \n async getHeight() {\n return this._invokeWorker(\"getHeight\");\n }\n \n async addListener(listener) {\n let wrappedListener = new WalletWorkerListener(listener);\n let listenerId = wrappedListener.getId();\n LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onSyncProgress_\" + listenerId] = [wrappedListener.onSyncProgress, wrappedListener];\n LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onNewBlock_\" + listenerId] = [wrappedListener.onNewBlock, wrappedListener];\n LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onBalancesChanged_\" + listenerId] = [wrappedListener.onBalancesChanged, wrappedListener];\n LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onOutputReceived_\" + listenerId] = [wrappedListener.onOutputReceived, wrappedListener];\n LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onOutputSpent_\" + listenerId] = [wrappedListener.onOutputSpent, wrappedListener];\n this._wrappedListeners.push(wrappedListener);\n return this._invokeWorker(\"addListener\", [listenerId]);\n }\n \n async removeListener(listener) {\n for (let i = 0; i < this._wrappedListeners.length; i++) {\n if (this._wrappedListeners[i].getListener() === listener) {\n let listenerId = this._wrappedListeners[i].getId();\n await this._invokeWorker(\"removeListener\", [listenerId]);\n delete LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onSyncProgress_\" + listenerId];\n delete LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onNewBlock_\" + listenerId];\n delete LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onBalancesChanged_\" + listenerId];\n delete LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onOutputReceived_\" + listenerId];\n delete LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks[\"onOutputSpent_\" + listenerId];\n this._wrappedListeners.splice(i, 1);\n return;\n }\n }\n throw new MoneroError(\"Listener is not registered with wallet\");\n }\n \n getListeners() {\n let listeners = [];\n for (let wrappedListener of this._wrappedListeners) listeners.push(wrappedListener.getListener());\n return listeners;\n }\n \n async isSynced() {\n return this._invokeWorker(\"isSynced\");\n }\n \n async sync(listenerOrStartHeight, startHeight, allowConcurrentCalls) {\n \n // normalize params\n startHeight = listenerOrStartHeight instanceof MoneroWalletListener ? startHeight : listenerOrStartHeight;\n let listener = listenerOrStartHeight instanceof MoneroWalletListener ? listenerOrStartHeight : undefined;\n if (startHeight === undefined) startHeight = Math.max(await this.getHeight(), await this.getRestoreHeight());\n \n // register listener if given\n if (listener) await this.addListener(listener);\n \n // sync wallet in worker \n let err;\n let result;\n try {\n let resultJson = await this._invokeWorker(\"sync\", [startHeight, allowConcurrentCalls]);\n result = new MoneroSyncResult(resultJson.numBlocksFetched, resultJson.receivedMoney);\n } catch (e) {\n err = e;\n }\n \n // unregister listener\n if (listener) await this.removeListener(listener);\n \n // throw error or return\n if (err) throw err;\n return result;\n }\n \n async startSyncing(syncPeriodInMs) {\n return this._invokeWorker(\"startSyncing\", Array.from(arguments));\n }\n \n async stopSyncing() {\n return this._invokeWorker(\"stopSyncing\");\n }\n \n async scanTxs(txHashes) {\n assert(Array.isArray(txHashes), \"Must provide an array of txs hashes to scan\");\n return this._invokeWorker(\"scanTxs\", [txHashes]);\n }\n \n async rescanSpent() {\n return this._invokeWorker(\"rescanSpent\");\n }\n \n async rescanBlockchain() {\n return this._invokeWorker(\"rescanBlockchain\");\n }\n \n async getBalance(accountIdx, subaddressIdx) {\n return BigInteger.parse(await this._invokeWorker(\"getBalance\", Array.from(arguments)));\n }\n \n async getUnlockedBalance(accountIdx, subaddressIdx) {\n let unlockedBalanceStr = await this._invokeWorker(\"getUnlockedBalance\", Array.from(arguments));\n return BigInteger.parse(unlockedBalanceStr);\n }\n \n async getAccounts(includeSubaddresses, tag) {\n let accounts = [];\n for (let accountJson of (await this._invokeWorker(\"getAccounts\", Array.from(arguments)))) {\n accounts.push(MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson)));\n }\n return accounts;\n }\n \n async getAccount(accountIdx, includeSubaddresses) {\n let accountJson = await this._invokeWorker(\"getAccount\", Array.from(arguments));\n return MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson));\n }\n \n async createAccount(label) {\n let accountJson = await this._invokeWorker(\"createAccount\", Array.from(arguments));\n return MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson));\n }\n \n async getSubaddresses(accountIdx, subaddressIndices) {\n let subaddresses = [];\n for (let subaddressJson of (await this._invokeWorker(\"getSubaddresses\", Array.from(arguments)))) {\n subaddresses.push(MoneroWalletFull._sanitizeSubaddress(new MoneroSubaddress(subaddressJson)));\n }\n return subaddresses;\n }\n \n async createSubaddress(accountIdx, label) {\n let subaddressJson = await this._invokeWorker(\"createSubaddress\", Array.from(arguments));\n return MoneroWalletFull._sanitizeSubaddress(new MoneroSubaddress(subaddressJson));\n }\n \n async getTxs(query) {\n query = MoneroWallet._normalizeTxQuery(query);\n let respJson = await this._invokeWorker(\"getTxs\", [query.getBlock().toJson()]);\n return MoneroWalletFull._deserializeTxs(query, JSON.stringify({blocks: respJson.blocks})); // initialize txs from blocks json string TODO: this stringifies then utility parses, avoid\n }\n \n async getTransfers(query) {\n query = MoneroWallet._normalizeTransferQuery(query);\n let blockJsons = await this._invokeWorker(\"getTransfers\", [query.getTxQuery().getBlock().toJson()]);\n return MoneroWalletFull._deserializeTransfers(query, JSON.stringify({blocks: blockJsons})); // initialize transfers from blocks json string TODO: this stringifies then utility parses, avoid\n }\n \n async getOutputs(query) {\n query = MoneroWallet._normalizeOutputQuery(query);\n let blockJsons = await this._invokeWorker(\"getOutputs\", [query.getTxQuery().getBlock().toJson()]);\n return MoneroWalletFull._deserializeOutputs(query, JSON.stringify({blocks: blockJsons})); // initialize transfers from blocks json string TODO: this stringifies then utility parses, avoid\n }\n \n async exportOutputs(all) {\n return this._invokeWorker(\"exportOutputs\", [all]);\n }\n \n async importOutputs(outputsHex) {\n return this._invokeWorker(\"importOutputs\", [outputsHex]);\n }\n \n async exportKeyImages(all) {\n let keyImages = [];\n for (let keyImageJson of await this._invokeWorker(\"getKeyImages\", [all])) keyImages.push(new MoneroKeyImage(keyImageJson));\n return keyImages;\n }\n \n async importKeyImages(keyImages) {\n let keyImagesJson = [];\n for (let keyImage of keyImages) keyImagesJson.push(keyImage.toJson());\n return new MoneroKeyImageImportResult(await this._invokeWorker(\"importKeyImages\", [keyImagesJson]));\n }\n \n async getNewKeyImagesFromLastImport() {\n throw new MoneroError(\"MoneroWalletFull.getNewKeyImagesFromLastImport() not implemented\");\n }\n \n async freezeOutput(keyImage) {\n return this._invokeWorker(\"freezeOutput\", [keyImage]);\n }\n \n async thawOutput(keyImage) {\n return this._invokeWorker(\"thawOutput\", [keyImage]);\n }\n \n async isOutputFrozen(keyImage) {\n return this._invokeWorker(\"isOutputFrozen\", [keyImage]);\n }\n \n async createTxs(config) {\n config = MoneroWallet._normalizeCreateTxsConfig(config);\n let txSetJson = await this._invokeWorker(\"createTxs\", [config.toJson()]);\n return new MoneroTxSet(txSetJson).getTxs();\n }\n \n async sweepOutput(config) {\n config = MoneroWallet._normalizeSweepOutputConfig(config);\n let txSetJson = await this._invokeWorker(\"sweepOutput\", [config.toJson()]);\n return new MoneroTxSet(txSetJson).getTxs()[0];\n }\n\n async sweepUnlocked(config) {\n config = MoneroWallet._normalizeSweepUnlockedConfig(config);\n let txSetsJson = await this._invokeWorker(\"sweepUnlocked\", [config.toJson()]);\n let txs = [];\n for (let txSetJson of txSetsJson) for (let tx of new MoneroTxSet(txSetJson).getTxs()) txs.push(tx);\n return txs;\n }\n \n async sweepDust(relay) {\n return new MoneroTxSet(await this._invokeWorker(\"sweepDust\", [relay])).getTxs() || [];\n }\n \n async relayTxs(txsOrMetadatas) {\n assert(Array.isArray(txsOrMetadatas), \"Must provide an array of txs or their metadata to relay\");\n let txMetadatas = [];\n for (let txOrMetadata of txsOrMetadatas) txMetadatas.push(txOrMetadata instanceof MoneroTxWallet ? txOrMetadata.getMetadata() : txOrMetadata);\n return this._invokeWorker(\"relayTxs\", [txMetadatas]);\n }\n \n async describeTxSet(txSet) {\n return new MoneroTxSet(await this._invokeWorker(\"describeTxSet\", [txSet.toJson()]));\n }\n \n async signTxs(unsignedTxHex) {\n return this._invokeWorker(\"signTxs\", Array.from(arguments));\n }\n \n async submitTxs(signedTxHex) {\n return this._invokeWorker(\"submitTxs\", Array.from(arguments));\n }\n \n async signMessage(message, signatureType, accountIdx, subaddressIdx) {\n return this._invokeWorker(\"signMessage\", Array.from(arguments));\n }\n \n async verifyMessage(message, address, signature) {\n return new MoneroMessageSignatureResult(await this._invokeWorker(\"verifyMessage\", Array.from(arguments)));\n }\n \n async getTxKey(txHash) {\n return this._invokeWorker(\"getTxKey\", Array.from(arguments));\n }\n \n async checkTxKey(txHash, txKey, address) {\n return new MoneroCheckTx(await this._invokeWorker(\"checkTxKey\", Array.from(arguments)));\n }\n \n async getTxProof(txHash, address, message) {\n return this._invokeWorker(\"getTxProof\", Array.from(arguments));\n }\n \n async checkTxProof(txHash, address, message, signature) {\n return new MoneroCheckTx(await this._invokeWorker(\"checkTxProof\", Array.from(arguments)));\n }\n \n async getSpendProof(txHash, message) {\n return this._invokeWorker(\"getSpendProof\", Array.from(arguments));\n }\n \n async checkSpendProof(txHash, message, signature) {\n return this._invokeWorker(\"checkSpendProof\", Array.from(arguments));\n }\n \n async getReserveProofWallet(message) {\n return this._invokeWorker(\"getReserveProofWallet\", Array.from(arguments));\n }\n \n async getReserveProofAccount(accountIdx, amount, message) {\n try { return await this._invokeWorker(\"getReserveProofAccount\", [accountIdx, amount.toString(), message]); }\n catch (e) { throw new MoneroError(e.message, -1); }\n }\n\n async checkReserveProof(address, message, signature) {\n try { return new MoneroCheckReserve(await this._invokeWorker(\"checkReserveProof\", Array.from(arguments))); }\n catch (e) { throw new MoneroError(e.message, -1); }\n }\n \n async getTxNotes(txHashes) {\n return this._invokeWorker(\"getTxNotes\", Array.from(arguments));\n }\n \n async setTxNotes(txHashes, notes) {\n return this._invokeWorker(\"setTxNotes\", Array.from(arguments));\n }\n \n async getAddressBookEntries(entryIndices) {\n if (!entryIndices) entryIndices = [];\n let entries = [];\n for (let entryJson of await this._invokeWorker(\"getAddressBookEntries\", Array.from(arguments))) {\n entries.push(new MoneroAddressBookEntry(entryJson));\n }\n return entries;\n }\n \n async addAddressBookEntry(address, description) {\n return this._invokeWorker(\"addAddressBookEntry\", Array.from(arguments));\n }\n \n async editAddressBookEntry(index, setAddress, address, setDescription, description) {\n return this._invokeWorker(\"editAddressBookEntry\", Array.from(arguments));\n }\n \n async deleteAddressBookEntry(entryIdx) {\n return this._invokeWorker(\"deleteAddressBookEntry\", Array.from(arguments));\n }\n \n async tagAccounts(tag, accountIndices) {\n return this._invokeWorker(\"tagAccounts\", Array.from(arguments));\n }\n\n async untagAccounts(accountIndices) {\n return this._invokeWorker(\"untagAccounts\", Array.from(arguments));\n }\n \n async getAccountTags() {\n return this._invokeWorker(\"getAccountTags\", Array.from(arguments));\n }\n\n async setAccountTagLabel(tag, label) {\n return this._invokeWorker(\"setAccountTagLabel\", Array.from(arguments));\n }\n \n async getPaymentUri(config) {\n config = MoneroWallet._normalizeCreateTxsConfig(config);\n return this._invokeWorker(\"getPaymentUri\", [config.toJson()]);\n }\n \n async parsePaymentUri(uri) {\n return new MoneroTxConfig(await this._invokeWorker(\"parsePaymentUri\", Array.from(arguments)));\n }\n \n async getAttribute(key) {\n return this._invokeWorker(\"getAttribute\", Array.from(arguments));\n }\n \n async setAttribute(key, val) {\n return this._invokeWorker(\"setAttribute\", Array.from(arguments));\n }\n \n async startMining(numThreads, backgroundMining, ignoreBattery) {\n return this._invokeWorker(\"startMining\", Array.from(arguments));\n }\n \n async stopMining() {\n return this._invokeWorker(\"stopMining\", Array.from(arguments));\n }\n \n async isMultisigImportNeeded() {\n return this._invokeWorker(\"isMultisigImportNeeded\");\n }\n \n async isMultisig() {\n return this._invokeWorker(\"isMultisig\");\n }\n \n async getMultisigInfo() {\n return new MoneroMultisigInfo(await this._invokeWorker(\"getMultisigInfo\"));\n }\n \n async prepareMultisig() {\n return this._invokeWorker(\"prepareMultisig\");\n }\n \n async makeMultisig(multisigHexes, threshold, password) {\n return await this._invokeWorker(\"makeMultisig\", Array.from(arguments));\n }\n \n async exchangeMultisigKeys(multisigHexes, password) {\n return new MoneroMultisigInitResult(await this._invokeWorker(\"exchangeMultisigKeys\", Array.from(arguments)));\n }\n \n async exportMultisigHex() {\n return this._invokeWorker(\"exportMultisigHex\");\n }\n \n async importMultisigHex(multisigHexes) {\n return this._invokeWorker(\"importMultisigHex\", Array.from(arguments));\n }\n \n async signMultisigTxHex(multisigTxHex) {\n return new MoneroMultisigSignResult(await this._invokeWorker(\"signMultisigTxHex\", Array.from(arguments)));\n }\n \n async submitMultisigTxHex(signedMultisigTxHex) {\n return this._invokeWorker(\"submitMultisigTxHex\", Array.from(arguments));\n }\n \n async getData() {\n return this._invokeWorker(\"getData\");\n }\n \n async moveTo(path) {\n return MoneroWalletFull._moveTo(path, this);\n }\n \n async changePassword(oldPassword, newPassword) {\n await this._invokeWorker(\"changePassword\", Array.from(arguments));\n if (this._path) await this.save(); // auto save\n }\n \n async save() {\n return MoneroWalletFull._save(this);\n }\n \n async close(save) {\n if (save) await this.save();\n while (this._wrappedListeners.length) await this.removeListener(this._wrappedListeners[0].getListener());\n await this._invokeWorker(\"close\");\n delete LibraryUtils.WORKER_OBJECTS[this._walletId];\n }\n \n async isClosed() {\n return this._invokeWorker(\"isClosed\");\n }\n \n // --------------------------- PRIVATE HELPERS ------------------------------\n \n async _invokeWorker(fnName, args) {\n return await LibraryUtils.invokeWorker(this._walletId, fnName, args);\n }\n}\n\n// -------------------------------- LISTENING ---------------------------------\n\n/**\n * Receives notifications directly from wasm c++.\n * \n * @private\n */\nclass WalletFullListener {\n \n constructor(wallet) {\n this._wallet = wallet;\n }\n \n async onSyncProgress(height, startHeight, endHeight, percentDone, message) {\n for (let listener of this._wallet.getListeners()) await listener.onSyncProgress(height, startHeight, endHeight, percentDone, message);\n }\n \n async onNewBlock(height) {\n for (let listener of this._wallet.getListeners()) await listener.onNewBlock(height);\n }\n \n async onBalancesChanged(newBalanceStr, newUnlockedBalanceStr) {\n for (let listener of this._wallet.getListeners()) await listener.onBalancesChanged(BigInteger.parse(newBalanceStr), BigInteger.parse(newUnlockedBalanceStr));\n }\n \n async onOutputReceived(height, txHash, amountStr, accountIdx, subaddressIdx, version, unlockTime, isLocked) {\n \n // build received output\n let output = new MoneroOutputWallet();\n output.setAmount(BigInteger.parse(amountStr));\n output.setAccountIndex(accountIdx);\n output.setSubaddressIndex(subaddressIdx);\n let tx = new MoneroTxWallet();\n tx.setHash(txHash);\n tx.setVersion(version);\n tx.setUnlockTime(unlockTime);\n output.setTx(tx);\n tx.setOutputs([output]);\n tx.setIsIncoming(true);\n tx.setIsLocked(isLocked);\n if (height > 0) {\n let block = new MoneroBlock().setHeight(height);\n block.setTxs([tx]);\n tx.setBlock(block);\n tx.setIsConfirmed(true);\n tx.setInTxPool(false);\n tx.setIsFailed(false);\n } else {\n tx.setIsConfirmed(false);\n tx.setInTxPool(true);\n }\n \n // announce output\n for (let listener of this._wallet.getListeners()) await listener.onOutputReceived(tx.getOutputs()[0]);\n }\n \n async onOutputSpent(height, txHash, amountStr, accountIdxStr, subaddressIdxStr, version, unlockTime, isLocked) {\n \n // build spent output\n let output = new MoneroOutputWallet();\n output.setAmount(BigInteger.parse(amountStr));\n if (accountIdxStr) output.setAccountIndex(parseInt(accountIdxStr));\n if (subaddressIdxStr) output.setSubaddressIndex(parseInt(subaddressIdxStr));\n let tx = new MoneroTxWallet();\n tx.setHash(txHash);\n tx.setVersion(version);\n tx.setUnlockTime(unlockTime);\n tx.setIsLocked(isLocked);\n output.setTx(tx);\n tx.setInputs([output]);\n if (height > 0) {\n let block = new MoneroBlock().setHeight(height);\n block.setTxs([tx]);\n tx.setBlock(block);\n tx.setIsConfirmed(true);\n tx.setInTxPool(false);\n tx.setIsFailed(false);\n } else {\n tx.setIsConfirmed(false);\n tx.setInTxPool(true);\n }\n \n // notify wallet listeners\n for (let listener of this._wallet.getListeners()) await listener.onOutputSpent(tx.getInputs()[0]);\n }\n}\n\n/**\n * Internal listener to bridge notifications to external listeners.\n * \n * @private\n */\nclass WalletWorkerListener {\n \n constructor(listener) {\n this._id = GenUtils.getUUID();\n this._listener = listener;\n }\n \n getId() {\n return this._id;\n }\n \n getListener() {\n return this._listener;\n }\n \n onSyncProgress(height, startHeight, endHeight, percentDone, message) {\n this._listener.onSyncProgress(height, startHeight, endHeight, percentDone, message);\n }\n\n async onNewBlock(height) {\n await this._listener.onNewBlock(height);\n }\n \n async onBalancesChanged(newBalanceStr, newUnlockedBalanceStr) {\n await this._listener.onBalancesChanged(BigInteger.parse(newBalanceStr), BigInteger.parse(newUnlockedBalanceStr));\n }\n\n async onOutputReceived(blockJson) {\n let block = new MoneroBlock(blockJson, MoneroBlock.DeserializationType.TX_WALLET);\n await this._listener.onOutputReceived(block.getTxs()[0].getOutputs()[0]);\n }\n \n async onOutputSpent(blockJson) {\n let block = new MoneroBlock(blockJson, MoneroBlock.DeserializationType.TX_WALLET);\n await this._listener.onOutputSpent(block.getTxs()[0].getInputs()[0]);\n }\n}\n\nMoneroWalletFull.DEFAULT_SYNC_PERIOD_IN_MS = 10000; // 10 second sync period by default\n\nmodule.exports = MoneroWalletFull;","const assert = require(\"assert\");\nconst LibraryUtils = require(\"../common/LibraryUtils\");\nconst MoneroError = require(\"../common/MoneroError\");\nconst MoneroNetworkType = require(\"../daemon/model/MoneroNetworkType\");\nconst MoneroSubaddress = require(\"./model/MoneroSubaddress\");\nconst MoneroUtils = require(\"../common/MoneroUtils\");\nconst MoneroVersion = require(\"../daemon/model/MoneroVersion\");\nconst MoneroWallet = require(\"./MoneroWallet\");\nconst MoneroWalletConfig = require(\"./model/MoneroWalletConfig\");\n\n/**\n * Implements a MoneroWallet which only manages keys using WebAssembly.\n * \n * @implements {MoneroWallet}\n * @hideconstructor\n */\nclass MoneroWalletKeys extends MoneroWallet {\n \n // --------------------------- STATIC UTILITIES -----------------------------\n \n /**\n *

Create a wallet using WebAssembly bindings to monero-project.

\n * \n *

Example:

\n * \n * \n * let wallet = await MoneroWalletKeys.createWallet({
\n *    password: \"abc123\",
\n *    networkType: MoneroNetworkType.STAGENET,
\n *    seed: \"coexist igloo pamphlet lagoon...\"
\n * });\n *
\n * \n * @param {MoneroWalletConfig|object} config - MoneroWalletConfig or equivalent config object\n * @param {string|number} config.networkType - network type of the wallet to create (one of \"mainnet\", \"testnet\", \"stagenet\" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)\n * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)\n * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase\n * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)\n * @param {string} config.privateViewKey - private view key of the wallet to create (optional)\n * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)\n * @param {string} config.language - language of the wallet's seed (defaults to \"English\" or auto-detected)\n * @return {MoneroWalletKeys} the created wallet\n */\n static async createWallet(config) {\n \n // normalize and validate config\n if (config === undefined) throw new MoneroError(\"Must provide config to create wallet\");\n config = config instanceof MoneroWalletConfig ? config : new MoneroWalletConfig(config);\n if (config.getSeed() !== undefined && (config.getPrimaryAddress() !== undefined || config.getPrivateViewKey() !== undefined || config.getPrivateSpendKey() !== undefined)) {\n throw new MoneroError(\"Wallet may be initialized with a seed or keys but not both\");\n }\n if (config.getNetworkType() === undefined) throw new MoneroError(\"Must provide a networkType: 'mainnet', 'testnet' or 'stagenet'\");\n if (config.getSaveCurrent() === true) throw new MoneroError(\"Cannot save current wallet when creating keys-only wallet\");\n \n // create wallet\n if (config.getSeed() !== undefined) return MoneroWalletKeys._createWalletFromSeed(config);\n else if (config.getPrivateSpendKey() !== undefined || config.getPrimaryAddress() !== undefined) return MoneroWalletKeys._createWalletFromKeys(config);\n else return MoneroWalletKeys._createWalletRandom(config);\n }\n \n static async _createWalletRandom(config) {\n\n // validate and sanitize params\n config = config.copy();\n if (config.getSeedOffset() !== undefined) throw new MoneroError(\"Cannot provide seedOffset when creating random wallet\");\n if (config.getRestoreHeight() !== undefined) throw new MoneroError(\"Cannot provide restoreHeight when creating random wallet\");\n MoneroNetworkType.validate(config.getNetworkType());\n if (config.getLanguage() === undefined) config.setLanguage(\"English\");\n \n // load wasm module\n let module = await LibraryUtils.loadKeysModule();\n \n // queue call to wasm module\n return module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = async function(cppAddress) {\n if (typeof cppAddress === \"string\") reject(new MoneroError(cppAddress));\n else resolve(new MoneroWalletKeys(cppAddress));\n };\n \n // create wallet in wasm and invoke callback when done\n module.create_keys_wallet_random(JSON.stringify(config.toJson()), callbackFn);\n });\n });\n }\n \n static async _createWalletFromSeed(config) {\n \n // validate and sanitize params\n MoneroNetworkType.validate(config.getNetworkType());\n if (config.getSeed() === undefined) throw Error(\"Must define seed to create wallet from\");\n if (config.getSeedOffset() === undefined) config.setSeedOffset(\"\");\n if (config.getLanguage() !== undefined) throw new MoneroError(\"Cannot provide language when creating wallet from seed\");\n \n // load wasm module\n let module = await LibraryUtils.loadKeysModule();\n \n // queue call to wasm module\n return module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = async function(cppAddress) {\n if (typeof cppAddress === \"string\") reject(new MoneroError(cppAddress));\n else resolve(new MoneroWalletKeys(cppAddress));\n };\n \n // create wallet in wasm and invoke callback when done\n module.create_keys_wallet_from_seed(JSON.stringify(config.toJson()), callbackFn);\n });\n });\n }\n \n static async _createWalletFromKeys(config) {\n \n // validate and sanitize params\n if (config.getSeedOffset() !== undefined) throw new MoneroError(\"Cannot provide seedOffset when creating wallet from keys\");\n MoneroNetworkType.validate(config.getNetworkType());\n if (config.getPrimaryAddress() === undefined) config.setPrimaryAddress(\"\");\n if (config.getPrivateViewKey() === undefined) config.setPrivateViewKey(\"\");\n if (config.getPrivateSpendKey() === undefined) config.setPrivateSpendKey(\"\");\n if (config.getLanguage() === undefined) config.setLanguage(\"English\");\n \n // load wasm module\n let module = await LibraryUtils.loadKeysModule();\n \n // queue call to wasm module\n return module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n \n // define callback for wasm\n let callbackFn = async function(cppAddress) {\n if (typeof cppAddress === \"string\") reject(new MoneroError(cppAddress));\n else resolve(new MoneroWalletKeys(cppAddress));\n };\n \n // create wallet in wasm and invoke callback when done\n module.create_keys_wallet_from_keys(JSON.stringify(config.toJson()), callbackFn);\n });\n });\n }\n \n static async getSeedLanguages() {\n let module = await LibraryUtils.loadKeysModule();\n return module.queueTask(async function() {\n return JSON.parse(module.get_keys_wallet_seed_languages()).languages;\n });\n }\n \n // --------------------------- INSTANCE METHODS -----------------------------\n \n /**\n * Internal constructor which is given the memory address of a C++ wallet\n * instance.\n * \n * This method should not be called externally but should be called through\n * static wallet creation utilities in this class.\n * \n * @param {int} cppAddress - address of the wallet instance in C++\n */\n constructor(cppAddress) {\n super();\n this._cppAddress = cppAddress;\n this._module = LibraryUtils.getWasmModule();\n if (!this._module.create_full_wallet) throw new MoneroError(\"WASM module not loaded - create wallet instance using static utilities\"); // static utilites pre-load wasm module\n }\n \n async addListener(listener) {\n throw new MoneroError(\"MoneroWalletKeys does not support adding listeners\");\n }\n \n async removeListener(listener) {\n throw new MoneroError(\"MoneroWalletKeys does not support removing listeners\");\n }\n \n async isViewOnly() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.is_view_only(that._cppAddress);\n });\n }\n \n async isConnectedToDaemon() {\n return false;\n }\n \n async getVersion() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let versionStr = that._module.get_version(that._cppAddress);\n let versionJson = JSON.parse(versionStr);\n return new MoneroVersion(versionJson.number, versionJson.isRelease);\n });\n }\n \n /**\n * @ignore\n */\n getPath() {\n this._assertNotClosed();\n throw new MoneroError(\"MoneroWalletKeys does not support a persisted path\");\n }\n \n async getSeed() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let resp = that._module.get_seed(that._cppAddress);\n const errorStr = \"error: \";\n if (resp.indexOf(errorStr) === 0) throw new MoneroError(resp.substring(errorStr.length));\n return resp ? resp : undefined;\n });\n }\n \n async getSeedLanguage() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let resp = that._module.get_seed_language(that._cppAddress);\n let errorKey = \"error: \";\n if (resp.indexOf(errorKey) === 0) throw new MoneroError(resp.substring(errorStr.length));\n return resp ? resp : undefined;\n });\n }\n\n async getPrivateSpendKey() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let resp = that._module.get_private_spend_key(that._cppAddress);\n let errorKey = \"error: \";\n if (resp.indexOf(errorKey) === 0) throw new MoneroError(resp.substring(errorStr.length));\n return resp ? resp : undefined;\n });\n }\n \n async getPrivateViewKey() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let resp = that._module.get_private_view_key(that._cppAddress);\n let errorKey = \"error: \";\n if (resp.indexOf(errorKey) === 0) throw new MoneroError(resp.substring(errorStr.length));\n return resp ? resp : undefined;\n });\n }\n \n async getPublicViewKey() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let resp = that._module.get_public_view_key(that._cppAddress);\n let errorKey = \"error: \";\n if (resp.indexOf(errorKey) === 0) throw new MoneroError(resp.substring(errorStr.length));\n return resp ? resp : undefined;\n });\n }\n \n async getPublicSpendKey() {\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let resp = that._module.get_public_spend_key(that._cppAddress);\n let errorKey = \"error: \";\n if (resp.indexOf(errorKey) === 0) throw new MoneroError(resp.substring(errorStr.length));\n return resp ? resp : undefined;\n });\n }\n \n async getAddress(accountIdx, subaddressIdx) {\n this._assertNotClosed();\n assert(typeof accountIdx === \"number\");\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n return that._module.get_address(that._cppAddress, accountIdx, subaddressIdx);\n });\n }\n \n async getAddressIndex(address) {\n this._assertNotClosed();\n let that = this;\n return that._module.queueTask(async function() {\n that._assertNotClosed();\n let resp = that._module.get_address_index(that._cppAddress, address);\n if (resp.charAt(0) !== '{') throw new MoneroError(resp);\n return new MoneroSubaddress(JSON.parse(resp));\n });\n }\n \n getAccounts() {\n this._assertNotClosed();\n throw new MoneroError(\"MoneroWalletKeys does not support getting an enumerable set of accounts; query specific accounts\");\n }\n \n // getIntegratedAddress(paymentId) // TODO\n // decodeIntegratedAddress\n \n async close(save) {\n if (this._isClosed) return; // closing a closed wallet has no effect\n \n // save wallet if requested\n if (save) await this.save();\n \n // queue task to use wasm module\n let that = this;\n return that._module.queueTask(async function() {\n return new Promise(function(resolve, reject) {\n if (that._isClosed) {\n resolve();\n return;\n }\n \n // define callback for wasm\n let callbackFn = async function() {\n delete that._cppAddress;\n that._isClosed = true;\n resolve();\n };\n \n // close wallet in wasm and invoke callback when done\n that._module.close(that._cppAddress, false, callbackFn); // saving handled external to webassembly\n });\n });\n }\n \n async isClosed() {\n return this._isClosed;\n }\n \n // ----------- ADD JSDOC FOR SUPPORTED DEFAULT IMPLEMENTATIONS --------------\n \n async getPrimaryAddress() { return super.getPrimaryAddress(...arguments); }\n async getSubaddress() { return super.getSubaddress(...arguments); }\n \n // ----------------------------- PRIVATE HELPERS ----------------------------\n \n _assertNotClosed() {\n if (this._isClosed) throw new MoneroError(\"Wallet is closed\");\n }\n}\n\nmodule.exports = MoneroWalletKeys;","const assert = require(\"assert\");\nconst BigInteger = require(\"../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../common/GenUtils\");\nconst LibraryUtils = require(\"../common/LibraryUtils\");\nconst TaskLooper = require(\"../common/TaskLooper\");\nconst MoneroAccount = require(\"./model/MoneroAccount\");\nconst MoneroAccountTag = require(\"./model/MoneroAccountTag\");\nconst MoneroAddressBookEntry = require(\"./model/MoneroAddressBookEntry\");\nconst MoneroBlock = require(\"../daemon/model/MoneroBlock\");\nconst MoneroBlockHeader = require(\"../daemon/model/MoneroBlockHeader\");\nconst MoneroCheckReserve = require(\"./model/MoneroCheckReserve\");\nconst MoneroCheckTx = require(\"./model/MoneroCheckTx\");\nconst MoneroDestination = require(\"./model/MoneroDestination\");\nconst MoneroError = require(\"../common/MoneroError\");\nconst MoneroIncomingTransfer = require(\"./model/MoneroIncomingTransfer\");\nconst MoneroIntegratedAddress = require(\"./model/MoneroIntegratedAddress\");\nconst MoneroKeyImage = require(\"../daemon/model/MoneroKeyImage\");\nconst MoneroKeyImageImportResult = require(\"./model/MoneroKeyImageImportResult\");\nconst MoneroMultisigInfo = require(\"./model/MoneroMultisigInfo\");\nconst MoneroMultisigInitResult = require(\"./model/MoneroMultisigInitResult\");\nconst MoneroMultisigSignResult = require(\"./model/MoneroMultisigSignResult\");\nconst MoneroOutgoingTransfer = require(\"./model/MoneroOutgoingTransfer\");\nconst MoneroOutputQuery = require(\"./model/MoneroOutputQuery\");\nconst MoneroOutputWallet = require(\"./model/MoneroOutputWallet\");\nconst MoneroRpcConnection = require(\"../common/MoneroRpcConnection\");\nconst MoneroRpcError = require(\"../common/MoneroRpcError\");\nconst MoneroSubaddress = require(\"./model/MoneroSubaddress\");\nconst MoneroSyncResult = require(\"./model/MoneroSyncResult\");\nconst MoneroTransferQuery = require(\"./model/MoneroTransferQuery\");\nconst MoneroTxConfig = require(\"./model/MoneroTxConfig\");\nconst MoneroTxQuery = require(\"./model/MoneroTxQuery\");\nconst MoneroTxSet = require(\"./model/MoneroTxSet\");\nconst MoneroTxWallet = require(\"./model/MoneroTxWallet\");\nconst MoneroUtils = require(\"../common/MoneroUtils\");\nconst MoneroVersion = require(\"../daemon/model/MoneroVersion\");\nconst MoneroWallet = require(\"./MoneroWallet\");\nconst MoneroWalletConfig = require(\"./model/MoneroWalletConfig\");\nconst MoneroWalletListener = require(\"./model/MoneroWalletListener\");\nconst MoneroMessageSignatureType = require(\"./model/MoneroMessageSignatureType\");\nconst MoneroMessageSignatureResult = require(\"./model/MoneroMessageSignatureResult\");\nconst ThreadPool = require(\"../common/ThreadPool\");\nconst SslOptions = require(\"../common/SslOptions\");\n\n/**\n * Copyright (c) woodser\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/**\n * Implements a MoneroWallet as a client of monero-wallet-rpc.\n * \n * @implements {MoneroWallet}\n * @hideconstructor\n */\nclass MoneroWalletRpc extends MoneroWallet {\n \n /**\n *

Construct a wallet RPC client (for internal use).

\n * \n * @param {string|object|MoneroRpcConnection|string[]} uriOrConfig - uri of monero-wallet-rpc or JS config object or MoneroRpcConnection or command line parameters to run a monero-wallet-rpc process internally\n * @param {string} uriOrConfig.uri - uri of monero-wallet-rpc\n * @param {string} uriOrConfig.username - username to authenticate with monero-wallet-rpc (optional)\n * @param {string} uriOrConfig.password - password to authenticate with monero-wallet-rpc (optional)\n * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {string} username - username to authenticate with monero-wallet-rpc (optional)\n * @param {string} password - password to authenticate with monero-wallet-rpc (optional)\n * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)\n */\n constructor(uriOrConfig, username, password, rejectUnauthorized) {\n super();\n if (GenUtils.isArray(uriOrConfig)) throw new MoneroError(\"Array with command parameters is invalid first parameter, use `await monerojs.connectToWalletRpc(...)`\");\n this.config = MoneroWalletRpc._normalizeConfig(uriOrConfig, username, password, rejectUnauthorized);\n this.rpc = new MoneroRpcConnection(this.config);\n this.addressCache = {}; // avoid unecessary requests for addresses\n this.syncPeriodInMs = MoneroWalletRpc.DEFAULT_SYNC_PERIOD_IN_MS;\n this.listeners = [];\n }\n \n /**\n *

Create a client connected to monero-wallet-rpc (for internal use).

\n * \n * @param {string|string[]|object|MoneroRpcConnection} uriOrConfig - uri of monero-wallet-rpc or terminal parameters or JS config object or MoneroRpcConnection\n * @param {string} uriOrConfig.uri - uri of monero-wallet-rpc\n * @param {string} uriOrConfig.username - username to authenticate with monero-wallet-rpc (optional)\n * @param {string} uriOrConfig.password - password to authenticate with monero-wallet-rpc (optional)\n * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @param {string} username - username to authenticate with monero-wallet-rpc (optional)\n * @param {string} password - password to authenticate with monero-wallet-rpc (optional)\n * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)\n * @return {MoneroWalletRpc} the wallet RPC client\n */\n static async _connectToWalletRpc(uriOrConfig, username, password, rejectUnauthorized) {\n if (GenUtils.isArray(uriOrConfig)) return MoneroWalletRpc._startWalletRpcProcess(uriOrConfig); // handle array as terminal command\n else return new MoneroWalletRpc(...arguments); // otherwise connect to server\n }\n \n static async _startWalletRpcProcess(cmd) {\n assert(GenUtils.isArray(cmd), \"Must provide string array with command line parameters\");\n \n // start process\n this.process = require('child_process').spawn(cmd[0], cmd.slice(1), {});\n this.process.stdout.setEncoding('utf8');\n this.process.stderr.setEncoding('utf8');\n \n // return promise which resolves after starting monero-wallet-rpc\n let uri;\n let that = this;\n let output = \"\";\n return new Promise(function(resolve, reject) {\n \n // handle stdout\n that.process.stdout.on('data', function(data) {\n let line = data.toString();\n LibraryUtils.log(2, line);\n output += line + '\\n'; // capture output in case of error\n \n // extract uri from e.g. \"I Binding on 127.0.0.1 (IPv4):38085\"\n let uriLineContains = \"Binding on \";\n let uriLineContainsIdx = line.indexOf(uriLineContains);\n if (uriLineContainsIdx >= 0) {\n let host = line.substring(uriLineContainsIdx + uriLineContains.length, line.lastIndexOf(' '));\n let unformattedLine = line.replace(/\\u001b\\[.*?m/g, '').trim(); // remove color formatting\n let port = unformattedLine.substring(unformattedLine.lastIndexOf(':') + 1);\n let sslIdx = cmd.indexOf(\"--rpc-ssl\");\n let sslEnabled = sslIdx >= 0 ? \"enabled\" == cmd[sslIdx + 1].toLowerCase() : false;\n uri = (sslEnabled ? \"https\" : \"http\") + \"://\" + host + \":\" + port;\n }\n \n // read success message\n if (line.indexOf(\"Starting wallet RPC server\") >= 0) {\n \n // get username and password from params\n let userPassIdx = cmd.indexOf(\"--rpc-login\");\n let userPass = userPassIdx >= 0 ? cmd[userPassIdx + 1] : undefined;\n let username = userPass === undefined ? undefined : userPass.substring(0, userPass.indexOf(':'));\n let password = userPass === undefined ? undefined : userPass.substring(userPass.indexOf(':') + 1);\n \n // create client connected to internal process\n let wallet = new MoneroWalletRpc(uri, username, password);\n wallet.process = that.process;\n \n // resolve promise with client connected to internal process \n this.isResolved = true;\n resolve(wallet);\n }\n });\n \n // handle stderr\n that.process.stderr.on('data', function(data) {\n if (LibraryUtils.getLogLevel() >= 2) console.error(data);\n });\n \n // handle exit\n that.process.on(\"exit\", function(code) {\n if (!this.isResolved) reject(new MoneroError(\"monero-wallet-rpc process terminated with exit code \" + code + (output ? \":\\n\\n\" + output : \"\")));\n });\n \n // handle error\n that.process.on(\"error\", function(err) {\n if (err.message.indexOf(\"ENOENT\") >= 0) reject(new MoneroError(\"monero-wallet-rpc does not exist at path '\" + cmd[0] + \"'\"));\n if (!this.isResolved) reject(err);\n });\n \n // handle uncaught exception\n that.process.on(\"uncaughtException\", function(err, origin) {\n console.error(\"Uncaught exception in monero-wallet-rpc process: \" + err.message);\n console.error(origin);\n reject(err);\n });\n });\n }\n \n // --------------------------- RPC WALLET METHODS ---------------------------\n \n /**\n * Get the internal process running monero-wallet-rpc.\n * \n * @return the process running monero-wallet-rpc, undefined if not created from new process\n */\n getProcess() {\n return this.process;\n }\n \n /**\n * Stop the internal process running monero-wallet-rpc, if applicable.\n * \n * @param {boolean} force specifies if the process should be destroyed forcibly\n * @return {Promise} the exit code from stopping the process\n */\n async stopProcess(force) {\n if (this.process === undefined) throw new MoneroError(\"MoneroWalletRpc instance not created from new process\");\n let listenersCopy = GenUtils.copyArray(this.getListeners());\n for (let listener of listenersCopy) await this.removeListener(listener);\n return GenUtils.killProcess(this.process, force ? \"sigkill\" : undefined);\n }\n \n /**\n * Get the wallet's RPC connection.\n * \n * @return {MoneroWalletRpc} the wallet's rpc connection\n */\n getRpcConnection() {\n return this.rpc;\n }\n \n /**\n *

Open an existing wallet on the monero-wallet-rpc server.

\n * \n *

Example:

\n * \n * \n * let wallet = new MoneroWalletRpc(\"http://localhost:38084\", \"rpc_user\", \"abc123\");
\n * await wallet.openWallet(\"mywallet1\", \"supersecretpassword\");
\n * await wallet.openWallet({
\n *    path: \"mywallet2\",
\n *    password: \"supersecretpassword\",
\n *    serverUri: \"http://locahost:38081\",
\n *    rejectUnauthorized: false
\n * });
\n *
\n * \n * @param {string|object|MoneroWalletConfig} pathOrConfig - the wallet's name or configuration to open\n * @param {string} pathOrConfig.path - path of the wallet to create (optional, in-memory wallet if not given)\n * @param {string} pathOrConfig.password - password of the wallet to create\n * @param {string} pathOrConfig.serverUri - uri of a daemon to use (optional, monero-wallet-rpc usually started with daemon config)\n * @param {string} pathOrConfig.serverUsername - username to authenticate with the daemon (optional)\n * @param {string} pathOrConfig.serverPassword - password to authenticate with the daemon (optional)\n * @param {boolean} pathOrConfig.rejectUnauthorized - reject self-signed server certificates if true (defaults to true)\n * @param {MoneroRpcConnection|object} pathOrConfig.server - MoneroRpcConnection or equivalent JS object providing daemon configuration (optional)\n * @param {string} password is the wallet's password\n * @return {MoneroWalletRpc} this wallet client\n */\n async openWallet(pathOrConfig, password) {\n \n // normalize and validate config\n let config = new MoneroWalletConfig(typeof pathOrConfig === \"string\" ? {path: pathOrConfig, password: password ? password : \"\"} : pathOrConfig);\n // TODO: ensure other fields are uninitialized?\n \n // open wallet on rpc server\n if (!config.getPath()) throw new MoneroError(\"Must provide name of wallet to open\");\n await this.rpc.sendJsonRequest(\"open_wallet\", {filename: config.getPath(), password: config.getPassword()});\n await this._clear();\n this.path = config.getPath();\n \n // set daemon if provided\n if (config.getServer()) return this.setDaemonConnection(config.getServer());\n return this;\n }\n \n /**\n *

Create and open a wallet on the monero-wallet-rpc server.

\n * \n *

Example:

\n * \n * \n * // construct client to monero-wallet-rpc
\n * let walletRpc = new MoneroWalletRpc(\"http://localhost:38084\", \"rpc_user\", \"abc123\");

\n * \n * // create and open wallet on monero-wallet-rpc
\n * await walletRpc.createWallet({
\n *    path: \"mywallet\",
\n *    password: \"abc123\",
\n *    seed: \"coexist igloo pamphlet lagoon...\",
\n *    restoreHeight: 1543218l
\n * });\n *
\n * \n * @param {object|MoneroWalletConfig} config - MoneroWalletConfig or equivalent JS object\n * @param {string} config.path - path of the wallet to create (optional, in-memory wallet if not given)\n * @param {string} config.password - password of the wallet to create\n * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)\n * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed\n * @param {boolean} config.isMultisig - restore multisig wallet from seed\n * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)\n * @param {string} config.privateViewKey - private view key of the wallet to create (optional)\n * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)\n * @param {number} config.restoreHeight - block height to start scanning from (defaults to 0 unless generating random wallet)\n * @param {string} config.language - language of the wallet's mnemonic phrase or seed (defaults to \"English\" or auto-detected)\n * @param {string} config.serverUri - uri of a daemon to use (optional, monero-wallet-rpc usually started with daemon config)\n * @param {string} config.serverUsername - username to authenticate with the daemon (optional)\n * @param {string} config.serverPassword - password to authenticate with the daemon (optional)\n * @param {boolean} config.rejectUnauthorized - reject self-signed server certificates if true (defaults to true)\n * @param {MoneroRpcConnection|object} config.server - MoneroRpcConnection or equivalent JS object providing daemon configuration (optional)\n * @param {boolean} config.saveCurrent - specifies if the current RPC wallet should be saved before being closed (default true)\n * @return {MoneroWalletRpc} this wallet client\n */\n async createWallet(config) {\n \n // normalize and validate config\n if (config === undefined) throw new MoneroError(\"Must provide config to create wallet\");\n config = new MoneroWalletConfig(config);\n if (config.getSeed() !== undefined && (config.getPrimaryAddress() !== undefined || config.getPrivateViewKey() !== undefined || config.getPrivateSpendKey() !== undefined)) {\n throw new MoneroError(\"Wallet may be initialized with a seed or keys but not both\");\n }\n if (config.getNetworkType() !== undefined) throw new MoneroError(\"Cannot provide networkType when creating RPC wallet because server's network type is already set\");\n if (config.getAccountLookahead() !== undefined || config.getSubaddressLookahead() !== undefined) throw new MoneroError(\"monero-wallet-rpc does not support creating wallets with subaddress lookahead over rpc\");\n if (config.getPassword() === undefined) config.setPassword(\"\");\n\n // create wallet\n if (config.getSeed() !== undefined) await this._createWalletFromSeed(config);\n else if (config.getPrivateSpendKey() !== undefined || config.getPrimaryAddress() !== undefined) await this._createWalletFromKeys(config);\n else await this._createWalletRandom(config);\n \n // set daemon if provided\n if (config.getServer()) return this.setDaemonConnection(config.getServer());\n return this;\n }\n \n /**\n * Create and open a new wallet with a randomly generated seed on the RPC server.\n * \n * @param {MoneroWalletConfig} config - the wallet configuration\n * @return {MoneroWalletRpc} this wallet client\n */\n async _createWalletRandom(config) {\n if (config.getSeedOffset() !== undefined) throw new MoneroError(\"Cannot provide seedOffset when creating random wallet\");\n if (config.getRestoreHeight() !== undefined) throw new MoneroError(\"Cannot provide restoreHeight when creating random wallet\");\n if (config.getSaveCurrent() === false) throw new MoneroError(\"Current wallet is saved automatically when creating random wallet\");\n if (!config.getPath()) throw new MoneroError(\"Name is not initialized\");\n if (!config.getLanguage()) config.setLanguage(MoneroWallet.DEFAULT_LANGUAGE);\n let params = { filename: config.getPath(), password: config.getPassword(), language: config.getLanguage() };\n try {\n await this.rpc.sendJsonRequest(\"create_wallet\", params);\n } catch (err) {\n this._handleCreateWalletError(config.getPath(), err);\n }\n await this._clear();\n this.path = config.getPath();\n return this;\n }\n \n /**\n * Create and open a wallet from an existing seed on the RPC server,\n * closing the currently open wallet if applicable.\n * \n * @param {MoneroWalletConfig} config - the wallet configuration\n * @return {MoneroWalletRpc} this wallet client\n */\n async _createWalletFromSeed(config) {\n try {\n await this.rpc.sendJsonRequest(\"restore_deterministic_wallet\", {\n filename: config.getPath(),\n password: config.getPassword(),\n seed: config.getSeed(),\n seed_offset: config.getSeedOffset(),\n enable_multisig_experimental: config.isMultisig(),\n restore_height: config.getRestoreHeight(),\n language: config.getLanguage(),\n autosave_current: config.getSaveCurrent()\n });\n } catch (err) {\n this._handleCreateWalletError(config.getPath(), err);\n }\n await this._clear();\n this.path = config.getPath();\n return this;\n }\n \n /**\n * Create a wallet on the RPC server from an address, view key, and (optionally) spend key.\n * \n * @param {MoneroWalletConfig} config - the wallet configuration\n * @return {MoneroWalletRpc} this wallet client\n */\n async _createWalletFromKeys(config) {\n if (config.getSeedOffset() !== undefined) throw new MoneroError(\"Cannot provide seedOffset when creating wallet from keys\");\n if (config.getRestoreHeight() === undefined) config.setRestoreHeight(0);\n if (config.getLanguage() === undefined) config.setLanguage(MoneroWallet.DEFAULT_LANGUAGE);\n try {\n await this.rpc.sendJsonRequest(\"generate_from_keys\", {\n filename: config.getPath(),\n password: config.getPassword(),\n address: config.getPrimaryAddress(),\n viewkey: config.getPrivateViewKey(),\n spendkey: config.getPrivateSpendKey(),\n restore_height: config.getRestoreHeight(),\n autosave_current: config.getSaveCurrent()\n });\n } catch (err) {\n this._handleCreateWalletError(config.getPath(), err);\n }\n await this._clear();\n this.path = config.getPath();\n return this;\n }\n \n _handleCreateWalletError(name, err) {\n if (err.message === \"Cannot create wallet. Already exists.\") throw new MoneroRpcError(\"Wallet already exists: \" + name, err.getCode(), err.getRpcMethod(), err.getRpcParams());\n if (err.message === \"Electrum-style word list failed verification\") throw new MoneroRpcError(\"Invalid mnemonic\", err.getCode(), err.getRpcMethod(), err.getRpcParams());\n throw err;\n }\n \n async isViewOnly() {\n try {\n await this.rpc.sendJsonRequest(\"query_key\", {key_type: \"mnemonic\"});\n return false; // key retrieval succeeds if not view only\n } catch (e) {\n if (e.getCode() === -29) return true; // wallet is view only\n if (e.getCode() === -1) return false; // wallet is offline but not view only\n throw e;\n }\n }\n \n /**\n * Set the wallet's daemon connection.\n * \n * @param {string|MoneroRpcConnection} uriOrConnection - the daemon's URI or connection (defaults to offline)\n * @param {boolean} isTrusted - indicates if the daemon in trusted\n * @param {SslOptions} sslOptions - custom SSL configuration\n */\n async setDaemonConnection(uriOrRpcConnection, isTrusted, sslOptions) {\n let connection = !uriOrRpcConnection ? undefined : uriOrRpcConnection instanceof MoneroRpcConnection ? uriOrRpcConnection : new MoneroRpcConnection(uriOrRpcConnection);\n if (!sslOptions) sslOptions = new SslOptions();\n let params = {};\n params.address = connection ? connection.getUri() : \"bad_uri\"; // TODO monero-wallet-rpc: bad daemon uri necessary for offline?\n params.username = connection ? connection.getUsername() : \"\";\n params.password = connection ? connection.getPassword() : \"\";\n params.trusted = isTrusted;\n params.ssl_support = \"autodetect\";\n params.ssl_private_key_path = sslOptions.getPrivateKeyPath();\n params.ssl_certificate_path = sslOptions.getCertificatePath();\n params.ssl_ca_file = sslOptions.getCertificateAuthorityFile();\n params.ssl_allowed_fingerprints = sslOptions.getAllowedFingerprints();\n params.ssl_allow_any_cert = sslOptions.getAllowAnyCert();\n await this.rpc.sendJsonRequest(\"set_daemon\", params);\n this.daemonConnection = connection;\n }\n \n async getDaemonConnection() {\n return this.daemonConnection;\n }\n \n // -------------------------- COMMON WALLET METHODS -------------------------\n \n async addListener(listener) {\n assert(listener instanceof MoneroWalletListener, \"Listener must be instance of MoneroWalletListener\");\n this.listeners.push(listener);\n this._refreshListening();\n }\n \n async removeListener(listener) {\n let idx = this.listeners.indexOf(listener);\n if (idx > -1) this.listeners.splice(idx, 1);\n else throw new MoneroError(\"Listener is not registered with wallet\");\n this._refreshListening();\n }\n \n getListeners() {\n return this.listeners;\n }\n \n async isConnectedToDaemon() {\n try {\n await this.checkReserveProof(await this.getPrimaryAddress(), \"\", \"\"); // TODO (monero-project): provide better way to know if wallet rpc is connected to daemon\n throw new MoneroError(\"check reserve expected to fail\");\n } catch (e) {\n return e.message.indexOf(\"Failed to connect to daemon\") < 0;\n }\n }\n \n async getVersion() {\n let resp = await this.rpc.sendJsonRequest(\"get_version\");\n return new MoneroVersion(resp.result.version, resp.result.release);\n }\n \n async getPath() {\n return this.path;\n }\n \n async getSeed() {\n let resp = await this.rpc.sendJsonRequest(\"query_key\", { key_type: \"mnemonic\" });\n return resp.result.key;\n }\n \n async getSeedLanguage() {\n if (await this.getSeed() === undefined) return undefined;\n throw new MoneroError(\"MoneroWalletRpc.getSeedLanguage() not supported\");\n }\n\n /**\n * Get a list of available languages for the wallet's seed.\n * \n * @return {string[]} the available languages for the wallet's seed.\n */\n async getSeedLanguages() {\n return (await this.rpc.sendJsonRequest(\"get_languages\")).result.languages;\n }\n \n async getPrivateViewKey() {\n let resp = await this.rpc.sendJsonRequest(\"query_key\", { key_type: \"view_key\" });\n return resp.result.key;\n }\n \n async getPrivateSpendKey() {\n let resp = await this.rpc.sendJsonRequest(\"query_key\", { key_type: \"spend_key\" });\n return resp.result.key;\n }\n \n async getAddress(accountIdx, subaddressIdx) {\n let subaddressMap = this.addressCache[accountIdx];\n if (!subaddressMap) {\n await this.getSubaddresses(accountIdx, undefined, true); // cache's all addresses at this account\n return this.getAddress(accountIdx, subaddressIdx); // recursive call uses cache\n }\n let address = subaddressMap[subaddressIdx];\n if (!address) {\n await this.getSubaddresses(accountIdx, undefined, true); // cache's all addresses at this account\n return this.addressCache[accountIdx][subaddressIdx];\n }\n return address;\n }\n \n // TODO: use cache\n async getAddressIndex(address) {\n \n // fetch result and normalize error if address does not belong to the wallet\n let resp;\n try {\n resp = await this.rpc.sendJsonRequest(\"get_address_index\", {address: address});\n } catch (e) {\n if (e.getCode() === -2) throw new MoneroError(e.message);\n throw e;\n }\n \n // convert rpc response\n let subaddress = new MoneroSubaddress(address);\n subaddress.setAccountIndex(resp.result.index.major);\n subaddress.setIndex(resp.result.index.minor);\n return subaddress;\n }\n \n async getIntegratedAddress(standardAddress, paymentId) {\n try {\n let integratedAddressStr = (await this.rpc.sendJsonRequest(\"make_integrated_address\", {standard_address: standardAddress, payment_id: paymentId})).result.integrated_address;\n return await this.decodeIntegratedAddress(integratedAddressStr);\n } catch (e) {\n if (e.message.includes(\"Invalid payment ID\")) throw new MoneroError(\"Invalid payment ID: \" + paymentId);\n throw e;\n }\n }\n \n async decodeIntegratedAddress(integratedAddress) {\n let resp = await this.rpc.sendJsonRequest(\"split_integrated_address\", {integrated_address: integratedAddress});\n return new MoneroIntegratedAddress().setStandardAddress(resp.result.standard_address).setPaymentId(resp.result.payment_id).setIntegratedAddress(integratedAddress);\n }\n \n async getHeight() {\n return (await this.rpc.sendJsonRequest(\"get_height\")).result.height;\n }\n \n async getDaemonHeight() {\n throw new MoneroError(\"monero-wallet-rpc does not support getting the chain height\");\n }\n \n async getHeightByDate(year, month, day) {\n throw new MoneroError(\"monero-wallet-rpc does not support getting a height by date\");\n }\n \n async sync(startHeight, onProgress) {\n assert(onProgress === undefined, \"Monero Wallet RPC does not support reporting sync progress\");\n try {\n let resp = await this.rpc.sendJsonRequest(\"refresh\", {start_height: startHeight}, 0);\n await this._poll();\n return new MoneroSyncResult(resp.result.blocks_fetched, resp.result.received_money);\n } catch (err) {\n if (err.message === \"no connection to daemon\") throw new MoneroError(\"Wallet is not connected to daemon\");\n throw err;\n }\n }\n \n async startSyncing(syncPeriodInMs) {\n \n // convert ms to seconds for rpc parameter\n let syncPeriodInSeconds = Math.round((syncPeriodInMs === undefined ? MoneroWalletRpc.DEFAULT_SYNC_PERIOD_IN_MS : syncPeriodInMs) / 1000);\n \n // send rpc request\n await this.rpc.sendJsonRequest(\"auto_refresh\", {\n enable: true,\n period: syncPeriodInSeconds\n });\n \n // update sync period for poller\n this.syncPeriodInMs = syncPeriodInSeconds * 1000;\n if (this.walletPoller !== undefined) this.walletPoller.setPeriodInMs(syncPeriodInMs);\n \n // poll if listening\n await this._poll();\n }\n \n async stopSyncing() {\n return this.rpc.sendJsonRequest(\"auto_refresh\", { enable: false });\n }\n \n async scanTxs(txHashes) {\n if (!txHashes || !txHashes.length) throw new MoneroError(\"No tx hashes given to scan\");\n await this.rpc.sendJsonRequest(\"scan_tx\", {txids: txHashes});\n await this._poll();\n }\n \n async rescanSpent() {\n await this.rpc.sendJsonRequest(\"rescan_spent\", undefined, 0);\n }\n \n async rescanBlockchain() {\n await this.rpc.sendJsonRequest(\"rescan_blockchain\", undefined, 0);\n }\n \n async getBalance(accountIdx, subaddressIdx) {\n return (await this._getBalances(accountIdx, subaddressIdx))[0];\n }\n \n async getUnlockedBalance(accountIdx, subaddressIdx) {\n return (await this._getBalances(accountIdx, subaddressIdx))[1];\n }\n \n async getAccounts(includeSubaddresses, tag, skipBalances) {\n \n // fetch accounts from rpc\n let resp = await this.rpc.sendJsonRequest(\"get_accounts\", {tag: tag});\n \n // build account objects and fetch subaddresses per account using get_address\n // TODO monero-wallet-rpc: get_address should support all_accounts so not called once per account\n let accounts = [];\n for (let rpcAccount of resp.result.subaddress_accounts) {\n let account = MoneroWalletRpc._convertRpcAccount(rpcAccount);\n if (includeSubaddresses) account.setSubaddresses(await this.getSubaddresses(account.getIndex(), undefined, true));\n accounts.push(account);\n }\n \n // fetch and merge fields from get_balance across all accounts\n if (includeSubaddresses && !skipBalances) {\n \n // these fields are not initialized if subaddress is unused and therefore not returned from `get_balance`\n for (let account of accounts) {\n for (let subaddress of account.getSubaddresses()) {\n subaddress.setBalance(new BigInteger(0));\n subaddress.setUnlockedBalance(new BigInteger(0));\n subaddress.setNumUnspentOutputs(0);\n subaddress.setNumBlocksToUnlock(0);\n }\n }\n \n // fetch and merge info from get_balance\n resp = await this.rpc.sendJsonRequest(\"get_balance\", {all_accounts: true});\n if (resp.result.per_subaddress) {\n for (let rpcSubaddress of resp.result.per_subaddress) {\n let subaddress = MoneroWalletRpc._convertRpcSubaddress(rpcSubaddress);\n \n // merge info\n let account = accounts[subaddress.getAccountIndex()];\n assert.equal(subaddress.getAccountIndex(), account.getIndex(), \"RPC accounts are out of order\"); // would need to switch lookup to loop\n let tgtSubaddress = account.getSubaddresses()[subaddress.getIndex()];\n assert.equal(subaddress.getIndex(), tgtSubaddress.getIndex(), \"RPC subaddresses are out of order\");\n if (subaddress.getBalance() !== undefined) tgtSubaddress.setBalance(subaddress.getBalance());\n if (subaddress.getUnlockedBalance() !== undefined) tgtSubaddress.setUnlockedBalance(subaddress.getUnlockedBalance());\n if (subaddress.getNumUnspentOutputs() !== undefined) tgtSubaddress.setNumUnspentOutputs(subaddress.getNumUnspentOutputs());\n }\n }\n }\n \n // return accounts\n return accounts;\n }\n \n // TODO: getAccountByIndex(), getAccountByTag()\n async getAccount(accountIdx, includeSubaddresses, skipBalances) {\n assert(accountIdx >= 0);\n for (let account of await this.getAccounts()) {\n if (account.getIndex() === accountIdx) {\n if (includeSubaddresses) account.setSubaddresses(await this.getSubaddresses(accountIdx, undefined, skipBalances));\n return account;\n }\n }\n throw new Exception(\"Account with index \" + accountIdx + \" does not exist\");\n }\n\n async createAccount(label) {\n label = label ? label : undefined;\n let resp = await this.rpc.sendJsonRequest(\"create_account\", {label: label});\n return new MoneroAccount(resp.result.account_index, resp.result.address, new BigInteger(0), new BigInteger(0));\n }\n\n async getSubaddresses(accountIdx, subaddressIndices, skipBalances) {\n \n // fetch subaddresses\n let params = {};\n params.account_index = accountIdx;\n if (subaddressIndices) params.address_index = GenUtils.listify(subaddressIndices);\n let resp = await this.rpc.sendJsonRequest(\"get_address\", params);\n \n // initialize subaddresses\n let subaddresses = [];\n for (let rpcSubaddress of resp.result.addresses) {\n let subaddress = MoneroWalletRpc._convertRpcSubaddress(rpcSubaddress);\n subaddress.setAccountIndex(accountIdx);\n subaddresses.push(subaddress);\n }\n \n // fetch and initialize subaddress balances\n if (!skipBalances) {\n \n // these fields are not initialized if subaddress is unused and therefore not returned from `get_balance`\n for (let subaddress of subaddresses) {\n subaddress.setBalance(new BigInteger(0));\n subaddress.setUnlockedBalance(new BigInteger(0));\n subaddress.setNumUnspentOutputs(0);\n subaddress.setNumBlocksToUnlock(0);\n }\n\n // fetch and initialize balances\n resp = await this.rpc.sendJsonRequest(\"get_balance\", params);\n if (resp.result.per_subaddress) {\n for (let rpcSubaddress of resp.result.per_subaddress) {\n let subaddress = MoneroWalletRpc._convertRpcSubaddress(rpcSubaddress);\n \n // transfer info to existing subaddress object\n for (let tgtSubaddress of subaddresses) {\n if (tgtSubaddress.getIndex() !== subaddress.getIndex()) continue; // skip to subaddress with same index\n if (subaddress.getBalance() !== undefined) tgtSubaddress.setBalance(subaddress.getBalance());\n if (subaddress.getUnlockedBalance() !== undefined) tgtSubaddress.setUnlockedBalance(subaddress.getUnlockedBalance());\n if (subaddress.getNumUnspentOutputs() !== undefined) tgtSubaddress.setNumUnspentOutputs(subaddress.getNumUnspentOutputs());\n if (subaddress.getNumBlocksToUnlock() !== undefined) tgtSubaddress.setNumBlocksToUnlock(subaddress.getNumBlocksToUnlock());\n }\n }\n }\n }\n \n // cache addresses\n let subaddressMap = this.addressCache[accountIdx];\n if (!subaddressMap) {\n subaddressMap = {};\n this.addressCache[accountIdx] = subaddressMap;\n }\n for (let subaddress of subaddresses) {\n subaddressMap[subaddress.getIndex()] = subaddress.getAddress();\n }\n \n // return results\n return subaddresses;\n }\n\n async getSubaddress(accountIdx, subaddressIdx, skipBalances) {\n assert(accountIdx >= 0);\n assert(subaddressIdx >= 0);\n return (await this.getSubaddresses(accountIdx, subaddressIdx, skipBalances))[0];\n }\n\n async createSubaddress(accountIdx, label) {\n \n // send request\n let resp = await this.rpc.sendJsonRequest(\"create_address\", {account_index: accountIdx, label: label});\n \n // build subaddress object\n let subaddress = new MoneroSubaddress();\n subaddress.setAccountIndex(accountIdx);\n subaddress.setIndex(resp.result.address_index);\n subaddress.setAddress(resp.result.address);\n subaddress.setLabel(label ? label : undefined);\n subaddress.setBalance(new BigInteger(0));\n subaddress.setUnlockedBalance(new BigInteger(0));\n subaddress.setNumUnspentOutputs(0);\n subaddress.setIsUsed(false);\n subaddress.setNumBlocksToUnlock(0);\n return subaddress;\n }\n\n async setSubaddressLabel(accountIdx, subaddressIdx, label) {\n await this.rpc.sendJsonRequest(\"label_address\", {index: {major: accountIdx, minor: subaddressIdx}, label: label});\n }\n \n async getTxs(query) {\n \n // copy query\n query = MoneroWallet._normalizeTxQuery(query);\n \n // temporarily disable transfer and output queries in order to collect all tx information\n let transferQuery = query.getTransferQuery();\n let inputQuery = query.getInputQuery();\n let outputQuery = query.getOutputQuery();\n query.setTransferQuery(undefined);\n query.setInputQuery(undefined);\n query.setOutputQuery(undefined);\n \n // fetch all transfers that meet tx query\n let transfers = await this._getTransfersAux(new MoneroTransferQuery().setTxQuery(MoneroWalletRpc._decontextualize(query.copy())));\n \n // collect unique txs from transfers while retaining order\n let txs = [];\n let txsSet = new Set();\n for (let transfer of transfers) {\n if (!txsSet.has(transfer.getTx())) {\n txs.push(transfer.getTx());\n txsSet.add(transfer.getTx());\n }\n }\n \n // cache types into maps for merging and lookup\n let txMap = {};\n let blockMap = {};\n for (let tx of txs) {\n MoneroWalletRpc._mergeTx(tx, txMap, blockMap);\n }\n \n // fetch and merge outputs if requested\n if (query.getIncludeOutputs() || outputQuery) {\n \n // fetch outputs\n let outputQueryAux = (outputQuery ? outputQuery.copy() : new MoneroOutputQuery()).setTxQuery(MoneroWalletRpc._decontextualize(query.copy()));\n let outputs = await this._getOutputsAux(outputQueryAux);\n \n // merge output txs one time while retaining order\n let outputTxs = [];\n for (let output of outputs) {\n if (!outputTxs.includes(output.getTx())) {\n MoneroWalletRpc._mergeTx(output.getTx(), txMap, blockMap);\n outputTxs.push(output.getTx());\n }\n }\n }\n \n // restore transfer and output queries\n query.setTransferQuery(transferQuery);\n query.setInputQuery(inputQuery);\n query.setOutputQuery(outputQuery);\n \n // filter txs that don't meet transfer query\n let txsQueried = [];\n for (let tx of txs) {\n if (query.meetsCriteria(tx)) txsQueried.push(tx);\n else if (tx.getBlock() !== undefined) tx.getBlock().getTxs().splice(tx.getBlock().getTxs().indexOf(tx), 1);\n }\n txs = txsQueried;\n \n // special case: re-fetch txs if inconsistency caused by needing to make multiple rpc calls\n for (let tx of txs) {\n if (tx.isConfirmed() && tx.getBlock() === undefined || !tx.isConfirmed() && tx.getBlock() !== undefined) {\n console.error(\"Inconsistency detected building txs from multiple rpc calls, re-fetching txs\");\n return this.getTxs(query);\n }\n }\n \n // order txs if tx hashes given then return\n if (query.getHashes() && query.getHashes().length > 0) {\n let txsById = new Map() // store txs in temporary map for sorting\n for (let tx of txs) txsById.set(tx.getHash(), tx);\n let orderedTxs = [];\n for (let hash of query.getHashes()) if (txsById.get(hash)) orderedTxs.push(txsById.get(hash));\n txs = orderedTxs;\n }\n return txs;\n }\n \n async getTransfers(query) {\n \n // copy and normalize query up to block\n query = MoneroWallet._normalizeTransferQuery(query);\n \n // get transfers directly if query does not require tx context (other transfers, outputs)\n if (!MoneroWalletRpc._isContextual(query)) return this._getTransfersAux(query);\n \n // otherwise get txs with full models to fulfill query\n let transfers = [];\n for (let tx of await this.getTxs(query.getTxQuery())) {\n for (let transfer of tx.filterTransfers(query)) {\n transfers.push(transfer);\n }\n }\n \n return transfers;\n }\n \n async getOutputs(query) {\n \n // copy and normalize query up to block\n query = MoneroWallet._normalizeOutputQuery(query);\n \n // get outputs directly if query does not require tx context (other outputs, transfers)\n if (!MoneroWalletRpc._isContextual(query)) return this._getOutputsAux(query);\n \n // otherwise get txs with full models to fulfill query\n let outputs = [];\n for (let tx of await this.getTxs(query.getTxQuery())) {\n for (let output of tx.filterOutputs(query)) {\n outputs.push(output);\n }\n }\n \n return outputs;\n }\n \n async exportOutputs(all) {\n return (await this.rpc.sendJsonRequest(\"export_outputs\", {all: all})).result.outputs_data_hex;\n }\n \n async importOutputs(outputsHex) {\n let resp = await this.rpc.sendJsonRequest(\"import_outputs\", {outputs_data_hex: outputsHex});\n return resp.result.num_imported;\n }\n \n async exportKeyImages(all) {\n return await this._rpcExportKeyImages(all);\n }\n \n async importKeyImages(keyImages) {\n \n // convert key images to rpc parameter\n let rpcKeyImages = keyImages.map(keyImage => ({key_image: keyImage.getHex(), signature: keyImage.getSignature()}));\n \n // send request\n let resp = await this.rpc.sendJsonRequest(\"import_key_images\", {signed_key_images: rpcKeyImages});\n \n // build and return result\n let importResult = new MoneroKeyImageImportResult();\n importResult.setHeight(resp.result.height);\n importResult.setSpentAmount(new BigInteger(resp.result.spent));\n importResult.setUnspentAmount(new BigInteger(resp.result.unspent));\n return importResult;\n }\n \n async getNewKeyImagesFromLastImport() {\n return await this._rpcExportKeyImages(false);\n }\n \n async freezeOutput(keyImage) {\n return this.rpc.sendJsonRequest(\"freeze\", {key_image: keyImage});\n }\n \n async thawOutput(keyImage) {\n return this.rpc.sendJsonRequest(\"thaw\", {key_image: keyImage});\n }\n \n async isOutputFrozen(keyImage) {\n let resp = await this.rpc.sendJsonRequest(\"frozen\", {key_image: keyImage});\n return resp.result.frozen === true;\n }\n \n async createTxs(config) {\n \n // validate, copy, and normalize config\n config = MoneroWallet._normalizeCreateTxsConfig(config);\n if (config.getCanSplit() === undefined) config.setCanSplit(true);\n if (config.getRelay() === true && await this.isMultisig()) throw new MoneroError(\"Cannot relay multisig transaction until co-signed\");\n\n // determine account and subaddresses to send from\n let accountIdx = config.getAccountIndex();\n if (accountIdx === undefined) throw new MoneroError(\"Must provide the account index to send from\");\n let subaddressIndices = config.getSubaddressIndices() === undefined ? undefined : config.getSubaddressIndices().slice(0); // fetch all or copy given indices\n \n // build config parameters\n let params = {};\n params.destinations = [];\n for (let destination of config.getDestinations()) {\n assert(destination.getAddress(), \"Destination address is not defined\");\n assert(destination.getAmount(), \"Destination amount is not defined\");\n params.destinations.push({ address: destination.getAddress(), amount: destination.getAmount().toString() });\n }\n if (config.getSubtractFeeFrom()) params.subtract_fee_from_outputs = config.getSubtractFeeFrom();\n params.account_index = accountIdx;\n params.subaddr_indices = subaddressIndices;\n params.payment_id = config.getPaymentId();\n if (config.getUnlockTime() !== undefined) params.unlock_time = config.getUnlockTime().toString()\n params.do_not_relay = config.getRelay() !== true;\n assert(config.getPriority() === undefined || config.getPriority() >= 0 && config.getPriority() <= 3);\n params.priority = config.getPriority();\n params.get_tx_hex = true;\n params.get_tx_metadata = true;\n if (config.getCanSplit()) params.get_tx_keys = true; // param to get tx key(s) depends if split\n else params.get_tx_key = true;\n\n // cannot apply subtractFeeFrom with `transfer_split` call\n if (config.getCanSplit() && config.getSubtractFeeFrom() && config.getSubtractFeeFrom().length > 0) {\n throw new MoneroError(\"subtractfeefrom transfers cannot be split over multiple transactions yet\");\n }\n \n // send request\n let result;\n try {\n let resp = await this.rpc.sendJsonRequest(config.getCanSplit() ? \"transfer_split\" : \"transfer\", params);\n result = resp.result;\n } catch (err) {\n if (err.message.indexOf(\"WALLET_RPC_ERROR_CODE_WRONG_ADDRESS\") > -1) throw new MoneroError(\"Invalid destination address\");\n throw err;\n }\n \n // pre-initialize txs iff present. multisig and view-only wallets will have tx set without transactions\n let txs;\n let numTxs = config.getCanSplit() ? (result.fee_list !== undefined ? result.fee_list.length : 0) : (result.fee !== undefined ? 1 : 0);\n if (numTxs > 0) txs = [];\n let copyDestinations = numTxs === 1;\n for (let i = 0; i < numTxs; i++) {\n let tx = new MoneroTxWallet();\n MoneroWalletRpc._initSentTxWallet(config, tx, copyDestinations);\n tx.getOutgoingTransfer().setAccountIndex(accountIdx);\n if (subaddressIndices !== undefined && subaddressIndices.length === 1) tx.getOutgoingTransfer().setSubaddressIndices(subaddressIndices);\n txs.push(tx);\n }\n \n // notify of changes\n if (config.getRelay()) await this._poll();\n \n // initialize tx set from rpc response with pre-initialized txs\n if (config.getCanSplit()) return MoneroWalletRpc._convertRpcSentTxsToTxSet(result, txs, config).getTxs();\n else return MoneroWalletRpc._convertRpcTxToTxSet(result, txs === undefined ? undefined : txs[0], true, config).getTxs();\n }\n \n async sweepOutput(config) {\n \n // normalize and validate config\n config = MoneroWallet._normalizeSweepOutputConfig(config);\n \n // build request parameters\n let params = {};\n params.address = config.getDestinations()[0].getAddress();\n params.account_index = config.getAccountIndex();\n params.subaddr_indices = config.getSubaddressIndices();\n params.key_image = config.getKeyImage();\n if (config.getUnlockTime() !== undefined) params.unlock_time = config.getUnlockTime();\n params.do_not_relay = config.getRelay() !== true;\n assert(config.getPriority() === undefined || config.getPriority() >= 0 && config.getPriority() <= 3);\n params.priority = config.getPriority();\n params.payment_id = config.getPaymentId();\n params.get_tx_key = true;\n params.get_tx_hex = true;\n params.get_tx_metadata = true;\n \n // send request\n let resp = await this.rpc.sendJsonRequest(\"sweep_single\", params);\n let result = resp.result;\n \n // notify of changes\n if (config.getRelay()) await this._poll();\n \n // build and return tx\n let tx = MoneroWalletRpc._initSentTxWallet(config, undefined, true);\n MoneroWalletRpc._convertRpcTxToTxSet(result, tx, true, config);\n tx.getOutgoingTransfer().getDestinations()[0].setAmount(tx.getOutgoingTransfer().getAmount()); // initialize destination amount\n return tx;\n }\n \n async sweepUnlocked(config) {\n \n // validate and normalize config\n config = MoneroWallet._normalizeSweepUnlockedConfig(config);\n \n // determine account and subaddress indices to sweep; default to all with unlocked balance if not specified\n let indices = new Map(); // maps each account index to subaddress indices to sweep\n if (config.getAccountIndex() !== undefined) {\n if (config.getSubaddressIndices() !== undefined) {\n indices.set(config.getAccountIndex(), config.getSubaddressIndices());\n } else {\n let subaddressIndices = [];\n indices.set(config.getAccountIndex(), subaddressIndices);\n for (let subaddress of await this.getSubaddresses(config.getAccountIndex())) {\n if (subaddress.getUnlockedBalance().compare(new BigInteger(0)) > 0) subaddressIndices.push(subaddress.getIndex());\n }\n }\n } else {\n let accounts = await this.getAccounts(true);\n for (let account of accounts) {\n if (account.getUnlockedBalance().compare(new BigInteger(0)) > 0) {\n let subaddressIndices = [];\n indices.set(account.getIndex(), subaddressIndices);\n for (let subaddress of account.getSubaddresses()) {\n if (subaddress.getUnlockedBalance().compare(new BigInteger(0)) > 0) subaddressIndices.push(subaddress.getIndex());\n }\n }\n }\n }\n \n // sweep from each account and collect resulting tx sets\n let txs = [];\n for (let accountIdx of indices.keys()) {\n \n // copy and modify the original config\n let copy = config.copy();\n copy.setAccountIndex(accountIdx);\n copy.setSweepEachSubaddress(false);\n \n // sweep all subaddresses together // TODO monero-project: can this reveal outputs belong to the same wallet?\n if (copy.getSweepEachSubaddress() !== true) {\n copy.setSubaddressIndices(indices.get(accountIdx));\n for (let tx of await this._rpcSweepAccount(copy)) txs.push(tx);\n }\n \n // otherwise sweep each subaddress individually\n else {\n for (let subaddressIdx of indices.get(accountIdx)) {\n copy.setSubaddressIndices([subaddressIdx]);\n for (let tx of await this._rpcSweepAccount(copy)) txs.push(tx);\n }\n }\n }\n \n // notify of changes\n if (config.getRelay()) await this._poll();\n return txs;\n }\n \n async sweepDust(relay) {\n if (relay === undefined) relay = false;\n let resp = await this.rpc.sendJsonRequest(\"sweep_dust\", {do_not_relay: !relay});\n if (relay) await this._poll();\n let result = resp.result;\n let txSet = MoneroWalletRpc._convertRpcSentTxsToTxSet(result);\n if (txSet.getTxs() === undefined) return [];\n for (let tx of txSet.getTxs()) {\n tx.setIsRelayed(!relay);\n tx.setInTxPool(tx.isRelayed());\n }\n return txSet.getTxs();\n }\n \n async relayTxs(txsOrMetadatas) {\n assert(Array.isArray(txsOrMetadatas), \"Must provide an array of txs or their metadata to relay\");\n let txHashes = [];\n for (let txOrMetadata of txsOrMetadatas) {\n let metadata = txOrMetadata instanceof MoneroTxWallet ? txOrMetadata.getMetadata() : txOrMetadata;\n let resp = await this.rpc.sendJsonRequest(\"relay_tx\", { hex: metadata });\n txHashes.push(resp.result.tx_hash);\n }\n await this._poll(); // notify of changes\n return txHashes;\n }\n \n async describeTxSet(txSet) {\n let resp = await this.rpc.sendJsonRequest(\"describe_transfer\", {\n unsigned_txset: txSet.getUnsignedTxHex(),\n multisig_txset: txSet.getMultisigTxHex()\n });\n return MoneroWalletRpc._convertRpcDescribeTransfer(resp.result);\n }\n \n async signTxs(unsignedTxHex) {\n let resp = await this.rpc.sendJsonRequest(\"sign_transfer\", {\n unsigned_txset: unsignedTxHex,\n export_raw: false\n });\n await this._poll();\n return resp.result.signed_txset\n }\n \n async submitTxs(signedTxHex) {\n let resp = await this.rpc.sendJsonRequest(\"submit_transfer\", {\n tx_data_hex: signedTxHex\n });\n await this._poll();\n return resp.result.tx_hash_list;\n }\n \n async signMessage(message, signatureType, accountIdx, subaddressIdx) {\n let resp = await this.rpc.sendJsonRequest(\"sign\", {\n data: message,\n signature_type: signatureType === MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY ? \"spend\" : \"view\",\n account_index: accountIdx,\n address_index: subaddressIdx\n });\n return resp.result.signature;\n }\n \n async verifyMessage(message, address, signature) {\n try {\n let resp = await this.rpc.sendJsonRequest(\"verify\", {data: message, address: address, signature: signature});\n let result = new MoneroMessageSignatureResult(\n resp.result.good,\n !resp.result.good ? undefined : resp.result.old,\n !resp.result.good ? undefined : !resp.result.signature_type ? undefined : resp.result.signature_type === \"view\" ? MoneroMessageSignatureType.SIGN_WITH_VIEW_KEY : MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY,\n !resp.result.good ? undefined : resp.result.version);\n return result;\n } catch (e) {\n if (e.getCode() === -2) return new MoneroMessageSignatureResult(false);\n throw e;\n }\n }\n \n async getTxKey(txHash) {\n try {\n return (await this.rpc.sendJsonRequest(\"get_tx_key\", {txid: txHash})).result.tx_key;\n } catch (e) {\n if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes(\"TX ID has invalid format\")) e = new MoneroRpcError(\"TX hash has invalid format\", e.getCode(), e.getRpcMethod(), e.getRpcParams()); // normalize error message\n throw e;\n }\n }\n \n async checkTxKey(txHash, txKey, address) {\n try {\n \n // send request\n let resp = await this.rpc.sendJsonRequest(\"check_tx_key\", {txid: txHash, tx_key: txKey, address: address});\n \n // interpret result\n let check = new MoneroCheckTx();\n check.setIsGood(true);\n check.setNumConfirmations(resp.result.confirmations);\n check.setInTxPool(resp.result.in_pool);\n check.setReceivedAmount(new BigInteger(resp.result.received));\n return check;\n } catch (e) {\n if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes(\"TX ID has invalid format\")) e = new MoneroRpcError(\"TX hash has invalid format\", e.getCode(), e.getRpcMethod(), e.getRpcParams()); // normalize error message\n throw e;\n }\n }\n \n async getTxProof(txHash, address, message) {\n try {\n let resp = await this.rpc.sendJsonRequest(\"get_tx_proof\", {txid: txHash, address: address, message: message});\n return resp.result.signature;\n } catch (e) {\n if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes(\"TX ID has invalid format\")) e = new MoneroRpcError(\"TX hash has invalid format\", e.getCode(), e.getRpcMethod(), e.getRpcParams()); // normalize error message\n throw e;\n }\n }\n \n async checkTxProof(txHash, address, message, signature) {\n try {\n \n // send request\n let resp = await this.rpc.sendJsonRequest(\"check_tx_proof\", {\n txid: txHash,\n address: address,\n message: message,\n signature: signature\n });\n \n // interpret response\n let isGood = resp.result.good;\n let check = new MoneroCheckTx();\n check.setIsGood(isGood);\n if (isGood) {\n check.setNumConfirmations(resp.result.confirmations);\n check.setInTxPool(resp.result.in_pool);\n check.setReceivedAmount(new BigInteger(resp.result.received));\n }\n return check;\n } catch (e) {\n if (e instanceof MoneroRpcError && e.getCode() === -1 && e.message === \"basic_string\") e = new MoneroRpcError(\"Must provide signature to check tx proof\", -1);\n if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes(\"TX ID has invalid format\")) e = new MoneroRpcError(\"TX hash has invalid format\", e.getCode(), e.getRpcMethod(), e.getRpcParams());\n throw e;\n }\n }\n \n async getSpendProof(txHash, message) {\n try {\n let resp = await this.rpc.sendJsonRequest(\"get_spend_proof\", {txid: txHash, message: message});\n return resp.result.signature;\n } catch (e) {\n if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes(\"TX ID has invalid format\")) e = new MoneroRpcError(\"TX hash has invalid format\", e.getCode(), e.getRpcMethod(), e.getRpcParams()); // normalize error message\n throw e;\n }\n }\n \n async checkSpendProof(txHash, message, signature) {\n try {\n let resp = await this.rpc.sendJsonRequest(\"check_spend_proof\", {\n txid: txHash,\n message: message,\n signature: signature\n });\n return resp.result.good;\n } catch (e) {\n if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes(\"TX ID has invalid format\")) e = new MoneroRpcError(\"TX hash has invalid format\", e.getCode(), e.getRpcMethod(), e.getRpcParams()); // normalize error message\n throw e;\n }\n }\n \n async getReserveProofWallet(message) {\n let resp = await this.rpc.sendJsonRequest(\"get_reserve_proof\", {\n all: true,\n message: message\n });\n return resp.result.signature;\n }\n \n async getReserveProofAccount(accountIdx, amount, message) {\n let resp = await this.rpc.sendJsonRequest(\"get_reserve_proof\", {\n account_index: accountIdx,\n amount: amount.toString(),\n message: message\n });\n return resp.result.signature;\n }\n\n async checkReserveProof(address, message, signature) {\n \n // send request\n let resp = await this.rpc.sendJsonRequest(\"check_reserve_proof\", {\n address: address,\n message: message,\n signature: signature\n });\n \n // interpret results\n let isGood = resp.result.good;\n let check = new MoneroCheckReserve();\n check.setIsGood(isGood);\n if (isGood) {\n check.setUnconfirmedSpentAmount(new BigInteger(resp.result.spent));\n check.setTotalAmount(new BigInteger(resp.result.total));\n }\n return check;\n }\n \n async getTxNotes(txHashes) {\n return (await this.rpc.sendJsonRequest(\"get_tx_notes\", {txids: txHashes})).result.notes;\n }\n \n async setTxNotes(txHashes, notes) {\n await this.rpc.sendJsonRequest(\"set_tx_notes\", {txids: txHashes, notes: notes});\n }\n \n async getAddressBookEntries(entryIndices) {\n let resp = await this.rpc.sendJsonRequest(\"get_address_book\", {entries: entryIndices});\n if (!resp.result.entries) return [];\n let entries = [];\n for (let rpcEntry of resp.result.entries) {\n entries.push(new MoneroAddressBookEntry().setIndex(rpcEntry.index).setAddress(rpcEntry.address).setDescription(rpcEntry.description).setPaymentId(rpcEntry.payment_id));\n }\n return entries;\n }\n \n async addAddressBookEntry(address, description) {\n let resp = await this.rpc.sendJsonRequest(\"add_address_book\", {address: address, description: description});\n return resp.result.index;\n }\n \n async editAddressBookEntry(index, setAddress, address, setDescription, description) {\n let resp = await this.rpc.sendJsonRequest(\"edit_address_book\", {\n index: index,\n set_address: setAddress,\n address: address,\n set_description: setDescription,\n description: description\n });\n }\n \n async deleteAddressBookEntry(entryIdx) {\n await this.rpc.sendJsonRequest(\"delete_address_book\", {index: entryIdx});\n }\n \n async tagAccounts(tag, accountIndices) {\n await this.rpc.sendJsonRequest(\"tag_accounts\", {tag: tag, accounts: accountIndices});\n }\n\n async untagAccounts(accountIndices) {\n await this.rpc.sendJsonRequest(\"untag_accounts\", {accounts: accountIndices});\n }\n\n async getAccountTags() {\n let tags = [];\n let resp = await this.rpc.sendJsonRequest(\"get_account_tags\");\n if (resp.result.account_tags) {\n for (let rpcAccountTag of resp.result.account_tags) {\n tags.push(new MoneroAccountTag(rpcAccountTag.tag ? rpcAccountTag.tag : undefined, rpcAccountTag.label ? rpcAccountTag.label : undefined, rpcAccountTag.accounts));\n }\n }\n return tags;\n }\n\n async setAccountTagLabel(tag, label) {\n await this.rpc.sendJsonRequest(\"set_account_tag_description\", {tag: tag, description: label});\n }\n \n async getPaymentUri(config) {\n config = MoneroWallet._normalizeCreateTxsConfig(config);\n let resp = await this.rpc.sendJsonRequest(\"make_uri\", {\n address: config.getDestinations()[0].getAddress(),\n amount: config.getDestinations()[0].getAmount() ? config.getDestinations()[0].getAmount().toString() : undefined,\n payment_id: config.getPaymentId(),\n recipient_name: config.getRecipientName(),\n tx_description: config.getNote()\n });\n return resp.result.uri;\n }\n \n async parsePaymentUri(uri) {\n assert(uri, \"Must provide URI to parse\");\n let resp = await this.rpc.sendJsonRequest(\"parse_uri\", {uri: uri});\n let config = new MoneroTxConfig({address: resp.result.uri.address, amount: new BigInteger(resp.result.uri.amount)});\n config.setPaymentId(resp.result.uri.payment_id);\n config.setRecipientName(resp.result.uri.recipient_name);\n config.setNote(resp.result.uri.tx_description);\n if (\"\" === config.getDestinations()[0].getAddress()) config.getDestinations()[0].setAddress(undefined);\n if (\"\" === config.getPaymentId()) config.setPaymentId(undefined);\n if (\"\" === config.getRecipientName()) config.setRecipientName(undefined);\n if (\"\" === config.getNote()) config.setNote(undefined);\n return config;\n }\n \n async getAttribute(key) {\n try {\n let resp = await this.rpc.sendJsonRequest(\"get_attribute\", {key: key});\n return resp.result.value === \"\" ? undefined : resp.result.value;\n } catch (e) {\n if (e instanceof MoneroRpcError && e.getCode() === -45) return undefined;\n throw e;\n }\n }\n \n async setAttribute(key, val) {\n await this.rpc.sendJsonRequest(\"set_attribute\", {key: key, value: val});\n }\n \n async startMining(numThreads, backgroundMining, ignoreBattery) {\n await this.rpc.sendJsonRequest(\"start_mining\", {\n threads_count: numThreads,\n do_background_mining: backgroundMining,\n ignore_battery: ignoreBattery\n });\n }\n \n async stopMining() {\n await this.rpc.sendJsonRequest(\"stop_mining\");\n }\n \n async isMultisigImportNeeded() {\n let resp = await this.rpc.sendJsonRequest(\"get_balance\");\n return resp.result.multisig_import_needed === true;\n }\n \n async getMultisigInfo() {\n let resp = await this.rpc.sendJsonRequest(\"is_multisig\");\n let result = resp.result;\n let info = new MoneroMultisigInfo();\n info.setIsMultisig(result.multisig);\n info.setIsReady(result.ready);\n info.setThreshold(result.threshold);\n info.setNumParticipants(result.total);\n return info;\n }\n \n async prepareMultisig() {\n let resp = await this.rpc.sendJsonRequest(\"prepare_multisig\", {enable_multisig_experimental: true});\n this.addressCache = {};\n let result = resp.result;\n return result.multisig_info;\n }\n \n async makeMultisig(multisigHexes, threshold, password) {\n let resp = await this.rpc.sendJsonRequest(\"make_multisig\", {\n multisig_info: multisigHexes,\n threshold: threshold,\n password: password\n });\n this.addressCache = {};\n return resp.result.multisig_info;\n }\n \n async exchangeMultisigKeys(multisigHexes, password) {\n let resp = await this.rpc.sendJsonRequest(\"exchange_multisig_keys\", {multisig_info: multisigHexes, password: password});\n this.addressCache = {};\n let msResult = new MoneroMultisigInitResult();\n msResult.setAddress(resp.result.address);\n msResult.setMultisigHex(resp.result.multisig_info);\n if (msResult.getAddress().length === 0) msResult.setAddress(undefined);\n if (msResult.getMultisigHex().length === 0) msResult.setMultisigHex(undefined);\n return msResult;\n }\n \n async exportMultisigHex() {\n let resp = await this.rpc.sendJsonRequest(\"export_multisig_info\");\n return resp.result.info;\n }\n\n async importMultisigHex(multisigHexes) {\n if (!GenUtils.isArray(multisigHexes)) throw new MoneroError(\"Must provide string[] to importMultisigHex()\")\n let resp = await this.rpc.sendJsonRequest(\"import_multisig_info\", {info: multisigHexes});\n return resp.result.n_outputs;\n }\n\n async signMultisigTxHex(multisigTxHex) {\n let resp = await this.rpc.sendJsonRequest(\"sign_multisig\", {tx_data_hex: multisigTxHex});\n let result = resp.result;\n let signResult = new MoneroMultisigSignResult();\n signResult.setSignedMultisigTxHex(result.tx_data_hex);\n signResult.setTxHashes(result.tx_hash_list);\n return signResult;\n }\n\n async submitMultisigTxHex(signedMultisigTxHex) {\n let resp = await this.rpc.sendJsonRequest(\"submit_multisig\", {tx_data_hex: signedMultisigTxHex});\n return resp.result.tx_hash_list;\n }\n \n async changePassword(oldPassword, newPassword) {\n return this.rpc.sendJsonRequest(\"change_wallet_password\", {old_password: oldPassword || \"\", new_password: newPassword || \"\"});\n }\n \n async save() {\n await this.rpc.sendJsonRequest(\"store\");\n }\n \n async close(save) {\n if (save === undefined) save = false;\n await this._clear();\n await this.rpc.sendJsonRequest(\"close_wallet\", {autosave_current: save});\n }\n \n async isClosed() {\n try {\n await this.getPrimaryAddress();\n } catch (e) {\n return e instanceof MoneroRpcError && e.getCode() === -13 && e.message.indexOf(\"No wallet file\") > -1;\n }\n return false;\n }\n \n /**\n * Save and close the current wallet and stop the RPC server.\n */\n async stop() {\n await this._clear();\n await this.rpc.sendJsonRequest(\"stop_wallet\");\n }\n \n // ----------- ADD JSDOC FOR SUPPORTED DEFAULT IMPLEMENTATIONS --------------\n \n async getNumBlocksToUnlock() { return super.getNumBlocksToUnlock(...arguments); }\n async getTx() { return super.getTx(...arguments); }\n async getIncomingTransfers() { return super.getIncomingTransfers(...arguments); }\n async getOutgoingTransfers() { return super.getOutgoingTransfers(...arguments); }\n async createTx() { return super.createTx(...arguments); }\n async relayTx() { return super.relayTx(...arguments); }\n async getTxNote() { return super.getTxNote(...arguments); }\n async setTxNote() { return super.setTxNote(...arguments); }\n \n // -------------------------------- PRIVATE ---------------------------------\n \n async _clear() {\n this.listeners.splice(0, this.listeners.length);\n this._refreshListening();\n delete this.addressCache;\n this.addressCache = {};\n this.path = undefined;\n }\n \n async _getBalances(accountIdx, subaddressIdx) {\n if (accountIdx === undefined) {\n assert.equal(subaddressIdx, undefined, \"Must provide account index with subaddress index\");\n let balance = new BigInteger(0);\n let unlockedBalance = new BigInteger(0);\n for (let account of await this.getAccounts()) {\n balance = balance.add(account.getBalance());\n unlockedBalance = unlockedBalance.add(account.getUnlockedBalance());\n }\n return [balance, unlockedBalance];\n } else {\n let params = {account_index: accountIdx, address_indices: subaddressIdx === undefined ? undefined : [subaddressIdx]};\n let resp = await this.rpc.sendJsonRequest(\"get_balance\", params);\n if (subaddressIdx === undefined) return [new BigInteger(resp.result.balance), new BigInteger(resp.result.unlocked_balance)];\n else return [new BigInteger(resp.result.per_subaddress[0].balance), new BigInteger(resp.result.per_subaddress[0].unlocked_balance)];\n }\n }\n \n async _getAccountIndices(getSubaddressIndices) {\n let indices = new Map();\n for (let account of await this.getAccounts()) {\n indices.set(account.getIndex(), getSubaddressIndices ? await this._getSubaddressIndices(account.getIndex()) : undefined);\n }\n return indices;\n }\n \n async _getSubaddressIndices(accountIdx) {\n let subaddressIndices = [];\n let resp = await this.rpc.sendJsonRequest(\"get_address\", {account_index: accountIdx});\n for (let address of resp.result.addresses) subaddressIndices.push(address.address_index);\n return subaddressIndices;\n }\n \n async _getTransfersAux(query) {\n \n // build params for get_transfers rpc call\n let txQuery = query.getTxQuery();\n let canBeConfirmed = txQuery.isConfirmed() !== false && txQuery.inTxPool() !== true && txQuery.isFailed() !== true && txQuery.isRelayed() !== false;\n let canBeInTxPool = txQuery.isConfirmed() !== true && txQuery.inTxPool() !== false && txQuery.isFailed() !== true && txQuery.getHeight() === undefined && txQuery.getMaxHeight() === undefined && txQuery.isLocked() !== false;\n let canBeIncoming = query.isIncoming() !== false && query.isOutgoing() !== true && query.hasDestinations() !== true;\n let canBeOutgoing = query.isOutgoing() !== false && query.isIncoming() !== true;\n\n // check if fetching pool txs contradicted by configuration\n if (txQuery.inTxPool() === true && !canBeInTxPool) {\n throw new MoneroError(\"Cannot fetch pool transactions because it contradicts configuration\");\n }\n\n let params = {};\n params.in = canBeIncoming && canBeConfirmed;\n params.out = canBeOutgoing && canBeConfirmed;\n params.pool = canBeIncoming && canBeInTxPool;\n params.pending = canBeOutgoing && canBeInTxPool;\n params.failed = txQuery.isFailed() !== false && txQuery.isConfirmed() !== true && txQuery.inTxPool() != true;\n if (txQuery.getMinHeight() !== undefined) {\n if (txQuery.getMinHeight() > 0) params.min_height = txQuery.getMinHeight() - 1; // TODO monero-project: wallet2::get_payments() min_height is exclusive, so manually offset to match intended range (issues #5751, #5598)\n else params.min_height = txQuery.getMinHeight();\n }\n if (txQuery.getMaxHeight() !== undefined) params.max_height = txQuery.getMaxHeight();\n params.filter_by_height = txQuery.getMinHeight() !== undefined || txQuery.getMaxHeight() !== undefined;\n if (query.getAccountIndex() === undefined) {\n assert(query.getSubaddressIndex() === undefined && query.getSubaddressIndices() === undefined, \"Query specifies a subaddress index but not an account index\");\n params.all_accounts = true;\n } else {\n params.account_index = query.getAccountIndex();\n \n // set subaddress indices param\n let subaddressIndices = new Set();\n if (query.getSubaddressIndex() !== undefined) subaddressIndices.add(query.getSubaddressIndex());\n if (query.getSubaddressIndices() !== undefined) query.getSubaddressIndices().map(subaddressIdx => subaddressIndices.add(subaddressIdx));\n if (subaddressIndices.size) params.subaddr_indices = Array.from(subaddressIndices);\n }\n \n // cache unique txs and blocks\n let txMap = {};\n let blockMap = {};\n \n // build txs using `get_transfers`\n let resp = await this.rpc.sendJsonRequest(\"get_transfers\", params);\n for (let key of Object.keys(resp.result)) {\n for (let rpcTx of resp.result[key]) {\n //if (rpcTx.txid === query.debugTxId) console.log(rpcTx);\n let tx = MoneroWalletRpc._convertRpcTxWithTransfer(rpcTx);\n if (tx.isConfirmed()) assert(tx.getBlock().getTxs().indexOf(tx) > -1);\n \n // replace transfer amount with destination sum\n // TODO monero-wallet-rpc: confirmed tx from/to same account has amount 0 but cached transfers\n if (tx.getOutgoingTransfer() !== undefined && tx.isRelayed() && !tx.isFailed() &&\n tx.getOutgoingTransfer().getDestinations() && tx.getOutgoingAmount().compare(new BigInteger(0)) === 0) {\n let outgoingTransfer = tx.getOutgoingTransfer();\n let transferTotal = new BigInteger(0);\n for (let destination of outgoingTransfer.getDestinations()) transferTotal = transferTotal.add(destination.getAmount());\n tx.getOutgoingTransfer().setAmount(transferTotal);\n }\n \n // merge tx\n MoneroWalletRpc._mergeTx(tx, txMap, blockMap);\n }\n }\n \n // sort txs by block height\n let txs = Object.values(txMap);\n txs.sort(MoneroWalletRpc._compareTxsByHeight);\n \n // filter and return transfers\n let transfers = [];\n for (let tx of txs) {\n \n // tx is not incoming/outgoing unless already set\n if (tx.isIncoming() === undefined) tx.setIsIncoming(false);\n if (tx.isOutgoing() === undefined) tx.setIsOutgoing(false);\n \n // sort incoming transfers\n if (tx.getIncomingTransfers() !== undefined) tx.getIncomingTransfers().sort(MoneroWalletRpc._compareIncomingTransfers);\n \n // collect queried transfers, erase if excluded\n for (let transfer of tx.filterTransfers(query)) {\n transfers.push(transfer);\n }\n \n // remove txs without requested transfer\n if (tx.getBlock() !== undefined && tx.getOutgoingTransfer() === undefined && tx.getIncomingTransfers() === undefined) {\n tx.getBlock().getTxs().splice(tx.getBlock().getTxs().indexOf(tx), 1);\n }\n }\n \n return transfers;\n }\n \n async _getOutputsAux(query) {\n \n // determine account and subaddress indices to be queried\n let indices = new Map();\n if (query.getAccountIndex() !== undefined) {\n let subaddressIndices = new Set();\n if (query.getSubaddressIndex() !== undefined) subaddressIndices.add(query.getSubaddressIndex());\n if (query.getSubaddressIndices() !== undefined) query.getSubaddressIndices().map(subaddressIdx => subaddressIndices.add(subaddressIdx));\n indices.set(query.getAccountIndex(), subaddressIndices.size ? Array.from(subaddressIndices) : undefined); // undefined will fetch from all subaddresses\n } else {\n assert.equal(query.getSubaddressIndex(), undefined, \"Query specifies a subaddress index but not an account index\")\n assert(query.getSubaddressIndices() === undefined || query.getSubaddressIndices().length === 0, \"Query specifies subaddress indices but not an account index\");\n indices = await this._getAccountIndices(); // fetch all account indices without subaddresses\n }\n \n // cache unique txs and blocks\n let txMap = {};\n let blockMap = {};\n \n // collect txs with outputs for each indicated account using `incoming_transfers` rpc call\n let params = {};\n params.transfer_type = query.isSpent() === true ? \"unavailable\" : query.isSpent() === false ? \"available\" : \"all\";\n params.verbose = true;\n for (let accountIdx of indices.keys()) {\n \n // send request\n params.account_index = accountIdx;\n params.subaddr_indices = indices.get(accountIdx);\n let resp = await this.rpc.sendJsonRequest(\"incoming_transfers\", params);\n \n // convert response to txs with outputs and merge\n if (resp.result.transfers === undefined) continue;\n for (let rpcOutput of resp.result.transfers) {\n let tx = MoneroWalletRpc._convertRpcTxWalletWithOutput(rpcOutput);\n MoneroWalletRpc._mergeTx(tx, txMap, blockMap);\n }\n }\n \n // sort txs by block height\n let txs = Object.values(txMap);\n txs.sort(MoneroWalletRpc._compareTxsByHeight);\n \n // collect queried outputs\n let outputs = [];\n for (let tx of txs) {\n \n // sort outputs\n if (tx.getOutputs() !== undefined) tx.getOutputs().sort(MoneroWalletRpc._compareOutputs);\n \n // collect queried outputs, erase if excluded\n for (let output of tx.filterOutputs(query)) outputs.push(output);\n \n // remove excluded txs from block\n if (tx.getOutputs() === undefined && tx.getBlock() !== undefined) {\n tx.getBlock().getTxs().splice(tx.getBlock().getTxs().indexOf(tx), 1);\n }\n }\n return outputs;\n }\n \n /**\n * Common method to get key images.\n * \n * @param all - pecifies to get all xor only new images from last import\n * @return {MoneroKeyImage[]} are the key images\n */\n async _rpcExportKeyImages(all) {\n let resp = await this.rpc.sendJsonRequest(\"export_key_images\", {all: all});\n if (!resp.result.signed_key_images) return [];\n return resp.result.signed_key_images.map(rpcImage => new MoneroKeyImage(rpcImage.key_image, rpcImage.signature));\n }\n \n async _rpcSweepAccount(config) {\n \n // validate config\n if (config === undefined) throw new MoneroError(\"Must provide sweep config\");\n if (config.getAccountIndex() === undefined) throw new MoneroError(\"Must provide an account index to sweep from\");\n if (config.getDestinations() === undefined || config.getDestinations().length != 1) throw new MoneroError(\"Must provide exactly one destination to sweep to\");\n if (config.getDestinations()[0].getAddress() === undefined) throw new MoneroError(\"Must provide destination address to sweep to\");\n if (config.getDestinations()[0].getAmount() !== undefined) throw new MoneroError(\"Cannot specify amount in sweep config\");\n if (config.getKeyImage() !== undefined) throw new MoneroError(\"Key image defined; use sweepOutput() to sweep an output by its key image\");\n if (config.getSubaddressIndices() !== undefined && config.getSubaddressIndices().length === 0) throw new MoneroError(\"Empty list given for subaddresses indices to sweep\");\n if (config.getSweepEachSubaddress()) throw new MoneroError(\"Cannot sweep each subaddress with RPC `sweep_all`\");\n if (config.getSubtractFeeFrom() !== undefined && config.getSubtractFeeFrom().length > 0) throw new MoneroError(\"Sweeping output does not support subtracting fees from destinations\");\n \n // sweep from all subaddresses if not otherwise defined\n if (config.getSubaddressIndices() === undefined) {\n config.setSubaddressIndices([]);\n for (let subaddress of await this.getSubaddresses(config.getAccountIndex())) {\n config.getSubaddressIndices().push(subaddress.getIndex());\n }\n }\n if (config.getSubaddressIndices().length === 0) throw new MoneroError(\"No subaddresses to sweep from\");\n \n // common config params\n let params = {};\n let relay = config.getRelay() === true;\n params.account_index = config.getAccountIndex();\n params.subaddr_indices = config.getSubaddressIndices();\n params.address = config.getDestinations()[0].getAddress();\n assert(config.getPriority() === undefined || config.getPriority() >= 0 && config.getPriority() <= 3);\n params.priority = config.getPriority();\n if (config.getUnlockTime() !== undefined) params.unlock_time = config.getUnlockTime();\n params.payment_id = config.getPaymentId();\n params.do_not_relay = !relay;\n params.below_amount = config.getBelowAmount();\n params.get_tx_keys = true;\n params.get_tx_hex = true;\n params.get_tx_metadata = true;\n \n // invoke wallet rpc `sweep_all`\n let resp = await this.rpc.sendJsonRequest(\"sweep_all\", params);\n let result = resp.result;\n \n // initialize txs from response\n let txSet = MoneroWalletRpc._convertRpcSentTxsToTxSet(result, undefined, config);\n \n // initialize remaining known fields\n for (let tx of txSet.getTxs()) {\n tx.setIsLocked(true);\n tx.setIsConfirmed(false);\n tx.setNumConfirmations(0);\n tx.setRelay(relay);\n tx.setInTxPool(relay);\n tx.setIsRelayed(relay);\n tx.setIsMinerTx(false);\n tx.setIsFailed(false);\n tx.setRingSize(MoneroUtils.RING_SIZE);\n let transfer = tx.getOutgoingTransfer();\n transfer.setAccountIndex(config.getAccountIndex());\n if (config.getSubaddressIndices().length === 1) transfer.setSubaddressIndices(config.getSubaddressIndices());\n let destination = new MoneroDestination(config.getDestinations()[0].getAddress(), new BigInteger(transfer.getAmount()));\n transfer.setDestinations([destination]);\n tx.setOutgoingTransfer(transfer);\n tx.setPaymentId(config.getPaymentId());\n if (tx.getUnlockTime() === undefined) tx.setUnlockTime(config.getUnlockTime() === undefined ? 0 : config.getUnlockTime());\n if (tx.getRelay()) {\n if (tx.getLastRelayedTimestamp() === undefined) tx.setLastRelayedTimestamp(+new Date().getTime()); // TODO (monero-wallet-rpc): provide timestamp on response; unconfirmed timestamps vary\n if (tx.isDoubleSpendSeen() === undefined) tx.setIsDoubleSpend(false);\n }\n }\n return txSet.getTxs();\n }\n \n _refreshListening() {\n if (this.walletPoller == undefined && this.listeners.length) this.walletPoller = new WalletPoller(this);\n if (this.walletPoller !== undefined) this.walletPoller.setIsPolling(this.listeners.length > 0);\n }\n \n /**\n * Poll if listening.\n */\n async _poll() {\n if (this.walletPoller !== undefined && this.walletPoller._isPolling) await this.walletPoller.poll();\n }\n \n // ---------------------------- PRIVATE STATIC ------------------------------\n \n static _normalizeConfig(uriOrConfigOrConnection, username, password, rejectUnauthorized) {\n let config;\n if (typeof uriOrConfigOrConnection === \"string\") config = {uri: uriOrConfigOrConnection, username: username, password: password, rejectUnauthorized: rejectUnauthorized};\n else {\n if (typeof uriOrConfigOrConnection !== \"object\") throw new MoneroError(\"Invalid configuration to create rpc client; must be string, object, or MoneroRpcConnection\");\n if (username || password || rejectUnauthorized) throw new MoneroError(\"Can provide config object or params or new MoneroDaemonRpc(...) but not both\");\n if (uriOrConfigOrConnection instanceof MoneroRpcConnection) config = Object.assign({}, uriOrConfigOrConnection.getConfig());\n else config = Object.assign({}, uriOrConfigOrConnection);\n }\n if (config.server) {\n config = Object.assign(config, new MoneroRpcConnection(config.server).getConfig());\n delete config.server;\n }\n return config;\n }\n \n /**\n * Remove criteria which requires looking up other transfers/outputs to\n * fulfill query.\n * \n * @param {MoneroTxQuery} query - the query to decontextualize\n * @return {MoneroTxQuery} a reference to the query for convenience\n */\n static _decontextualize(query) {\n query.setIsIncoming(undefined);\n query.setIsOutgoing(undefined);\n query.setTransferQuery(undefined);\n query.setInputQuery(undefined);\n query.setOutputQuery(undefined);\n return query;\n }\n \n static _isContextual(query) {\n if (!query) return false;\n if (!query.getTxQuery()) return false;\n if (query.getTxQuery().isIncoming() !== undefined) return true; // requires getting other transfers\n if (query.getTxQuery().isOutgoing() !== undefined) return true;\n if (query instanceof MoneroTransferQuery) {\n if (query.getTxQuery().getOutputQuery() !== undefined) return true; // requires getting other outputs\n } else if (query instanceof MoneroOutputQuery) {\n if (query.getTxQuery().getTransferQuery() !== undefined) return true; // requires getting other transfers\n } else {\n throw new MoneroError(\"query must be tx or transfer query\");\n }\n return false;\n }\n \n static _convertRpcAccount(rpcAccount) {\n let account = new MoneroAccount();\n for (let key of Object.keys(rpcAccount)) {\n let val = rpcAccount[key];\n if (key === \"account_index\") account.setIndex(val);\n else if (key === \"balance\") account.setBalance(new BigInteger(val));\n else if (key === \"unlocked_balance\") account.setUnlockedBalance(new BigInteger(val));\n else if (key === \"base_address\") account.setPrimaryAddress(val);\n else if (key === \"tag\") account.setTag(val);\n else if (key === \"label\") { } // label belongs to first subaddress\n else console.log(\"WARNING: ignoring unexpected account field: \" + key + \": \" + val);\n }\n if (\"\" === account.getTag()) account.setTag(undefined);\n return account;\n }\n \n static _convertRpcSubaddress(rpcSubaddress) {\n let subaddress = new MoneroSubaddress();\n for (let key of Object.keys(rpcSubaddress)) {\n let val = rpcSubaddress[key];\n if (key === \"account_index\") subaddress.setAccountIndex(val);\n else if (key === \"address_index\") subaddress.setIndex(val);\n else if (key === \"address\") subaddress.setAddress(val);\n else if (key === \"balance\") subaddress.setBalance(new BigInteger(val));\n else if (key === \"unlocked_balance\") subaddress.setUnlockedBalance(new BigInteger(val));\n else if (key === \"num_unspent_outputs\") subaddress.setNumUnspentOutputs(val);\n else if (key === \"label\") { if (val) subaddress.setLabel(val); }\n else if (key === \"used\") subaddress.setIsUsed(val);\n else if (key === \"blocks_to_unlock\") subaddress.setNumBlocksToUnlock(val);\n else if (key == \"time_to_unlock\") {} // ignoring\n else console.log(\"WARNING: ignoring unexpected subaddress field: \" + key + \": \" + val);\n }\n return subaddress;\n }\n \n /**\n * Initializes a sent transaction.\n * \n * TODO: remove copyDestinations after >18.2.2 when subtractFeeFrom fully supported\n * \n * @param {MoneroTxConfig} config - send config\n * @param {MoneroTxWallet} tx - existing transaction to initialize (optional)\n * @param {boolean} copyDestinations - copies config destinations if true\n * @return {MoneroTxWallet} is the initialized send tx\n */\n static _initSentTxWallet(config, tx, copyDestinations) {\n if (!tx) tx = new MoneroTxWallet();\n let relay = config.getRelay() === true;\n tx.setIsOutgoing(true);\n tx.setIsConfirmed(false);\n tx.setNumConfirmations(0);\n tx.setInTxPool(relay);\n tx.setRelay(relay);\n tx.setIsRelayed(relay);\n tx.setIsMinerTx(false);\n tx.setIsFailed(false);\n tx.setIsLocked(true);\n tx.setRingSize(MoneroUtils.RING_SIZE);\n let transfer = new MoneroOutgoingTransfer().setTx(tx);\n if (config.getSubaddressIndices() && config.getSubaddressIndices().length === 1) transfer.setSubaddressIndices(config.getSubaddressIndices().slice(0)); // we know src subaddress indices iff config specifies 1\n if (copyDestinations) {\n let destCopies = [];\n for (let dest of config.getDestinations()) destCopies.push(dest.copy());\n transfer.setDestinations(destCopies);\n }\n tx.setOutgoingTransfer(transfer);\n tx.setPaymentId(config.getPaymentId());\n if (tx.getUnlockTime() === undefined) tx.setUnlockTime(config.getUnlockTime() === undefined ? 0 : config.getUnlockTime());\n if (config.getRelay()) {\n if (tx.getLastRelayedTimestamp() === undefined) tx.setLastRelayedTimestamp(+new Date().getTime()); // TODO (monero-wallet-rpc): provide timestamp on response; unconfirmed timestamps vary\n if (tx.isDoubleSpendSeen() === undefined) tx.setIsDoubleSpend(false);\n }\n return tx;\n }\n \n /**\n * Initializes a tx set from a RPC map excluding txs.\n * \n * @param rpcMap - map to initialize the tx set from\n * @return MoneroTxSet - initialized tx set\n * @return the resulting tx set\n */\n static _convertRpcTxSet(rpcMap) {\n let txSet = new MoneroTxSet();\n txSet.setMultisigTxHex(rpcMap.multisig_txset);\n txSet.setUnsignedTxHex(rpcMap.unsigned_txset);\n txSet.setSignedTxHex(rpcMap.signed_txset);\n if (txSet.getMultisigTxHex() !== undefined && txSet.getMultisigTxHex().length === 0) txSet.setMultisigTxHex(undefined);\n if (txSet.getUnsignedTxHex() !== undefined && txSet.getUnsignedTxHex().length === 0) txSet.setUnsignedTxHex(undefined);\n if (txSet.getSignedTxHex() !== undefined && txSet.getSignedTxHex().length === 0) txSet.setSignedTxHex(undefined);\n return txSet;\n }\n \n /**\n * Initializes a MoneroTxSet from a list of rpc txs.\n * \n * @param rpcTxs - rpc txs to initialize the set from\n * @param txs - existing txs to further initialize (optional)\n * @param config - tx config\n * @return the converted tx set\n */\n static _convertRpcSentTxsToTxSet(rpcTxs, txs, config) {\n \n // build shared tx set\n let txSet = MoneroWalletRpc._convertRpcTxSet(rpcTxs);\n \n // get number of txs\n let numTxs = rpcTxs.fee_list ? rpcTxs.fee_list.length : 0;\n \n // done if rpc response contains no txs\n if (numTxs === 0) {\n assert.equal(txs, undefined);\n return txSet;\n }\n \n // pre-initialize txs if none given\n if (txs) txSet.setTxs(txs);\n else {\n txs = [];\n for (let i = 0; i < numTxs; i++) txs.push(new MoneroTxWallet());\n }\n for (let tx of txs) {\n tx.setTxSet(txSet);\n tx.setIsOutgoing(true);\n }\n txSet.setTxs(txs);\n \n // initialize txs from rpc lists\n for (let key of Object.keys(rpcTxs)) {\n let val = rpcTxs[key];\n if (key === \"tx_hash_list\") for (let i = 0; i < val.length; i++) txs[i].setHash(val[i]);\n else if (key === \"tx_key_list\") for (let i = 0; i < val.length; i++) txs[i].setKey(val[i]);\n else if (key === \"tx_blob_list\") for (let i = 0; i < val.length; i++) txs[i].setFullHex(val[i]);\n else if (key === \"tx_metadata_list\") for (let i = 0; i < val.length; i++) txs[i].setMetadata(val[i]);\n else if (key === \"fee_list\") for (let i = 0; i < val.length; i++) txs[i].setFee(new BigInteger(val[i]));\n else if (key === \"weight_list\") for (let i = 0; i < val.length; i++) txs[i].setWeight(val[i]);\n else if (key === \"amount_list\") {\n for (let i = 0; i < val.length; i++) {\n if (txs[i].getOutgoingTransfer() == undefined) txs[i].setOutgoingTransfer(new MoneroOutgoingTransfer().setTx(txs[i]));\n txs[i].getOutgoingTransfer().setAmount(new BigInteger(val[i]));\n }\n }\n else if (key === \"multisig_txset\" || key === \"unsigned_txset\" || key === \"signed_txset\") {} // handled elsewhere\n else if (key === \"spent_key_images_list\") {\n let inputKeyImagesList = val;\n for (let i = 0; i < inputKeyImagesList.length; i++) {\n GenUtils.assertTrue(txs[i].getInputs() === undefined);\n txs[i].setInputs([]);\n for (let inputKeyImage of inputKeyImagesList[i][\"key_images\"]) {\n txs[i].getInputs().push(new MoneroOutputWallet().setKeyImage(new MoneroKeyImage().setHex(inputKeyImage)).setTx(txs[i]));\n }\n }\n }\n else if (key === \"amounts_by_dest_list\") {\n let amountsByDestList = val;\n let destinationIdx = 0;\n for (let txIdx = 0; txIdx < amountsByDestList.length; txIdx++) {\n let amountsByDest = amountsByDestList[txIdx][\"amounts\"];\n if (txs[txIdx].getOutgoingTransfer() === undefined) txs[txIdx].setOutgoingTransfer(new MoneroOutgoingTransfer().setTx(txs[txIdx]));\n txs[txIdx].getOutgoingTransfer().setDestinations([]);\n for (let amount of amountsByDest) {\n if (config.getDestinations().length === 1) txs[txIdx].getOutgoingTransfer().getDestinations().push(new MoneroDestination(config.getDestinations()[0].getAddress(), new BigInteger(amount))); // sweeping can create multiple txs with one address\n else txs[txIdx].getOutgoingTransfer().getDestinations().push(new MoneroDestination(config.getDestinations()[destinationIdx++].getAddress(), new BigInteger(amount)));\n }\n }\n }\n else console.log(\"WARNING: ignoring unexpected transaction field: \" + key + \": \" + val);\n }\n \n return txSet;\n }\n \n /**\n * Converts a rpc tx with a transfer to a tx set with a tx and transfer.\n * \n * @param rpcTx - rpc tx to build from\n * @param tx - existing tx to continue initializing (optional)\n * @param isOutgoing - specifies if the tx is outgoing if true, incoming if false, or decodes from type if undefined\n * @param config - tx config\n * @returns the initialized tx set with a tx\n */\n static _convertRpcTxToTxSet(rpcTx, tx, isOutgoing, config) {\n let txSet = MoneroWalletRpc._convertRpcTxSet(rpcTx);\n txSet.setTxs([MoneroWalletRpc._convertRpcTxWithTransfer(rpcTx, tx, isOutgoing, config).setTxSet(txSet)]);\n return txSet;\n }\n \n /**\n * Builds a MoneroTxWallet from a RPC tx.\n * \n * @param rpcTx - rpc tx to build from\n * @param tx - existing tx to continue initializing (optional)\n * @param isOutgoing - specifies if the tx is outgoing if true, incoming if false, or decodes from type if undefined\n * @param config - tx config\n * @returns {MoneroTxWallet} is the initialized tx\n */\n static _convertRpcTxWithTransfer(rpcTx, tx, isOutgoing, config) { // TODO: change everything to safe set\n \n // initialize tx to return\n if (!tx) tx = new MoneroTxWallet();\n \n // initialize tx state from rpc type\n if (rpcTx.type !== undefined) isOutgoing = MoneroWalletRpc._decodeRpcType(rpcTx.type, tx);\n else assert.equal(typeof isOutgoing, \"boolean\", \"Must indicate if tx is outgoing (true) xor incoming (false) since unknown\");\n \n // TODO: safe set\n // initialize remaining fields TODO: seems this should be part of common function with DaemonRpc._convertRpcTx\n let header;\n let transfer;\n for (let key of Object.keys(rpcTx)) {\n let val = rpcTx[key];\n if (key === \"txid\") tx.setHash(val);\n else if (key === \"tx_hash\") tx.setHash(val);\n else if (key === \"fee\") tx.setFee(new BigInteger(val));\n else if (key === \"note\") { if (val) tx.setNote(val); }\n else if (key === \"tx_key\") tx.setKey(val);\n else if (key === \"type\") { } // type already handled\n else if (key === \"tx_size\") tx.setSize(val);\n else if (key === \"unlock_time\") tx.setUnlockTime(val);\n else if (key === \"weight\") tx.setWeight(val);\n else if (key === \"locked\") tx.setIsLocked(val);\n else if (key === \"tx_blob\") tx.setFullHex(val);\n else if (key === \"tx_metadata\") tx.setMetadata(val);\n else if (key === \"double_spend_seen\") tx.setIsDoubleSpend(val);\n else if (key === \"block_height\" || key === \"height\") {\n if (tx.isConfirmed()) {\n if (!header) header = new MoneroBlockHeader();\n header.setHeight(val);\n }\n }\n else if (key === \"timestamp\") {\n if (tx.isConfirmed()) {\n if (!header) header = new MoneroBlockHeader();\n header.setTimestamp(val);\n } else {\n // timestamp of unconfirmed tx is current request time\n }\n }\n else if (key === \"confirmations\") tx.setNumConfirmations(val);\n else if (key === \"suggested_confirmations_threshold\") {\n if (transfer === undefined) transfer = (isOutgoing ? new MoneroOutgoingTransfer() : new MoneroIncomingTransfer()).setTx(tx);\n if (!isOutgoing) transfer.setNumSuggestedConfirmations(val);\n }\n else if (key === \"amount\") {\n if (transfer === undefined) transfer = (isOutgoing ? new MoneroOutgoingTransfer() : new MoneroIncomingTransfer()).setTx(tx);\n transfer.setAmount(new BigInteger(val));\n }\n else if (key === \"amounts\") {} // ignoring, amounts sum to amount\n else if (key === \"address\") {\n if (!isOutgoing) {\n if (!transfer) transfer = new MoneroIncomingTransfer().setTx(tx);\n transfer.setAddress(val);\n }\n }\n else if (key === \"payment_id\") {\n if (\"\" !== val && MoneroTxWallet.DEFAULT_PAYMENT_ID !== val) tx.setPaymentId(val); // default is undefined\n }\n else if (key === \"subaddr_index\") assert(rpcTx.subaddr_indices); // handled by subaddr_indices\n else if (key === \"subaddr_indices\") {\n if (!transfer) transfer = (isOutgoing ? new MoneroOutgoingTransfer() : new MoneroIncomingTransfer()).setTx(tx);\n let rpcIndices = val;\n transfer.setAccountIndex(rpcIndices[0].major);\n if (isOutgoing) {\n let subaddressIndices = [];\n for (let rpcIndex of rpcIndices) subaddressIndices.push(rpcIndex.minor);\n transfer.setSubaddressIndices(subaddressIndices);\n } else {\n assert.equal(rpcIndices.length, 1);\n transfer.setSubaddressIndex(rpcIndices[0].minor);\n }\n }\n else if (key === \"destinations\" || key == \"recipients\") {\n assert(isOutgoing);\n let destinations = [];\n for (let rpcDestination of val) {\n let destination = new MoneroDestination();\n destinations.push(destination);\n for (let destinationKey of Object.keys(rpcDestination)) {\n if (destinationKey === \"address\") destination.setAddress(rpcDestination[destinationKey]);\n else if (destinationKey === \"amount\") destination.setAmount(new BigInteger(rpcDestination[destinationKey]));\n else throw new MoneroError(\"Unrecognized transaction destination field: \" + destinationKey);\n }\n }\n if (transfer === undefined) transfer = new MoneroOutgoingTransfer({tx: tx});\n transfer.setDestinations(destinations);\n }\n else if (key === \"multisig_txset\" && val !== undefined) {} // handled elsewhere; this method only builds a tx wallet\n else if (key === \"unsigned_txset\" && val !== undefined) {} // handled elsewhere; this method only builds a tx wallet\n else if (key === \"amount_in\") tx.setInputSum(new BigInteger(val));\n else if (key === \"amount_out\") tx.setOutputSum(new BigInteger(val));\n else if (key === \"change_address\") tx.setChangeAddress(val === \"\" ? undefined : val);\n else if (key === \"change_amount\") tx.setChangeAmount(new BigInteger(val));\n else if (key === \"dummy_outputs\") tx.setNumDummyOutputs(val);\n else if (key === \"extra\") tx.setExtraHex(val);\n else if (key === \"ring_size\") tx.setRingSize(val);\n else if (key === \"spent_key_images\") {\n let inputKeyImages = val.key_images;\n GenUtils.assertTrue(tx.getInputs() === undefined);\n tx.setInputs([]);\n for (let inputKeyImage of inputKeyImages) {\n tx.getInputs().push(new MoneroOutputWallet().setKeyImage(new MoneroKeyImage().setHex(inputKeyImage)).setTx(tx));\n }\n }\n else if (key === \"amounts_by_dest\") {\n GenUtils.assertTrue(isOutgoing);\n let amountsByDest = val.amounts;\n assert.equal(config.getDestinations().length, amountsByDest.length);\n if (transfer === undefined) transfer = new MoneroOutgoingTransfer().setTx(tx);\n transfer.setDestinations([]);\n for (let i = 0; i < config.getDestinations().length; i++) {\n transfer.getDestinations().push(new MoneroDestination(config.getDestinations()[i].getAddress(), new BigInteger(amountsByDest[i])));\n }\n }\n else console.log(\"WARNING: ignoring unexpected transaction field with transfer: \" + key + \": \" + val);\n }\n \n // link block and tx\n if (header) tx.setBlock(new MoneroBlock(header).setTxs([tx]));\n \n // initialize final fields\n if (transfer) {\n if (tx.isConfirmed() === undefined) tx.setIsConfirmed(false);\n if (!transfer.getTx().isConfirmed()) tx.setNumConfirmations(0);\n if (isOutgoing) {\n tx.setIsOutgoing(true);\n if (tx.getOutgoingTransfer()) {\n if (transfer.getDestinations()) tx.getOutgoingTransfer().setDestinations(undefined); // overwrite to avoid reconcile error TODO: remove after >18.2.2 when amounts_by_dest supported\n tx.getOutgoingTransfer().merge(transfer);\n }\n else tx.setOutgoingTransfer(transfer);\n } else {\n tx.setIsIncoming(true);\n tx.setIncomingTransfers([transfer]);\n }\n }\n \n // return initialized transaction\n return tx;\n }\n \n static _convertRpcTxWalletWithOutput(rpcOutput) {\n \n // initialize tx\n let tx = new MoneroTxWallet();\n tx.setIsConfirmed(true);\n tx.setIsRelayed(true);\n tx.setIsFailed(false);\n \n // initialize output\n let output = new MoneroOutputWallet({tx: tx});\n for (let key of Object.keys(rpcOutput)) {\n let val = rpcOutput[key];\n if (key === \"amount\") output.setAmount(new BigInteger(val));\n else if (key === \"spent\") output.setIsSpent(val);\n else if (key === \"key_image\") { if (\"\" !== val) output.setKeyImage(new MoneroKeyImage(val)); }\n else if (key === \"global_index\") output.setIndex(val);\n else if (key === \"tx_hash\") tx.setHash(val);\n else if (key === \"unlocked\") tx.setIsLocked(!val);\n else if (key === \"frozen\") output.setIsFrozen(val);\n else if (key === \"pubkey\") output.setStealthPublicKey(val);\n else if (key === \"subaddr_index\") {\n output.setAccountIndex(val.major);\n output.setSubaddressIndex(val.minor);\n }\n else if (key === \"block_height\") tx.setBlock(new MoneroBlock().setHeight(val).setTxs([tx]));\n else console.log(\"WARNING: ignoring unexpected transaction field: \" + key + \": \" + val);\n }\n \n // initialize tx with output\n tx.setOutputs([output]);\n return tx;\n }\n \n static _convertRpcDescribeTransfer(rpcDescribeTransferResult) {\n let txSet = new MoneroTxSet();\n for (let key of Object.keys(rpcDescribeTransferResult)) {\n let val = rpcDescribeTransferResult[key];\n if (key === \"desc\") {\n txSet.setTxs([]);\n for (let txMap of val) {\n let tx = MoneroWalletRpc._convertRpcTxWithTransfer(txMap, undefined, true);\n tx.setTxSet(txSet);\n txSet.getTxs().push(tx);\n }\n }\n else if (key === \"summary\") { } // TODO: support tx set summary fields?\n else console.log(\"WARNING: ignoring unexpected descdribe transfer field: \" + key + \": \" + val);\n }\n return txSet;\n }\n \n /**\n * Decodes a \"type\" from monero-wallet-rpc to initialize type and state\n * fields in the given transaction.\n * \n * TODO: these should be safe set\n * \n * @param rpcType is the type to decode\n * @param tx is the transaction to decode known fields to\n * @return {boolean} true if the rpc type indicates outgoing xor incoming\n */\n static _decodeRpcType(rpcType, tx) {\n let isOutgoing;\n if (rpcType === \"in\") {\n isOutgoing = false;\n tx.setIsConfirmed(true);\n tx.setInTxPool(false);\n tx.setIsRelayed(true);\n tx.setRelay(true);\n tx.setIsFailed(false);\n tx.setIsMinerTx(false);\n } else if (rpcType === \"out\") {\n isOutgoing = true;\n tx.setIsConfirmed(true);\n tx.setInTxPool(false);\n tx.setIsRelayed(true);\n tx.setRelay(true);\n tx.setIsFailed(false);\n tx.setIsMinerTx(false);\n } else if (rpcType === \"pool\") {\n isOutgoing = false;\n tx.setIsConfirmed(false);\n tx.setInTxPool(true);\n tx.setIsRelayed(true);\n tx.setRelay(true);\n tx.setIsFailed(false);\n tx.setIsMinerTx(false); // TODO: but could it be?\n } else if (rpcType === \"pending\") {\n isOutgoing = true;\n tx.setIsConfirmed(false);\n tx.setInTxPool(true);\n tx.setIsRelayed(true);\n tx.setRelay(true);\n tx.setIsFailed(false);\n tx.setIsMinerTx(false);\n } else if (rpcType === \"block\") {\n isOutgoing = false;\n tx.setIsConfirmed(true);\n tx.setInTxPool(false);\n tx.setIsRelayed(true);\n tx.setRelay(true);\n tx.setIsFailed(false);\n tx.setIsMinerTx(true);\n } else if (rpcType === \"failed\") {\n isOutgoing = true;\n tx.setIsConfirmed(false);\n tx.setInTxPool(false);\n tx.setIsRelayed(true);\n tx.setRelay(true);\n tx.setIsFailed(true);\n tx.setIsMinerTx(false);\n } else {\n throw new MoneroError(\"Unrecognized transfer type: \" + rpcType);\n }\n return isOutgoing;\n }\n \n /**\n * Merges a transaction into a unique set of transactions.\n *\n * @param {MoneroTxWallet} tx - the transaction to merge into the existing txs\n * @param {Object} txMap - maps tx hashes to txs\n * @param {Object} blockMap - maps block heights to blocks\n */\n static _mergeTx(tx, txMap, blockMap) {\n assert(tx.getHash() !== undefined);\n \n // merge tx\n let aTx = txMap[tx.getHash()];\n if (aTx === undefined) txMap[tx.getHash()] = tx; // cache new tx\n else aTx.merge(tx); // merge with existing tx\n \n // merge tx's block if confirmed\n if (tx.getHeight() !== undefined) {\n let aBlock = blockMap[tx.getHeight()];\n if (aBlock === undefined) blockMap[tx.getHeight()] = tx.getBlock(); // cache new block\n else aBlock.merge(tx.getBlock()); // merge with existing block\n }\n }\n \n /**\n * Compares two transactions by their height.\n */\n static _compareTxsByHeight(tx1, tx2) {\n if (tx1.getHeight() === undefined && tx2.getHeight() === undefined) return 0; // both unconfirmed\n else if (tx1.getHeight() === undefined) return 1; // tx1 is unconfirmed\n else if (tx2.getHeight() === undefined) return -1; // tx2 is unconfirmed\n let diff = tx1.getHeight() - tx2.getHeight();\n if (diff !== 0) return diff;\n return tx1.getBlock().getTxs().indexOf(tx1) - tx2.getBlock().getTxs().indexOf(tx2); // txs are in the same block so retain their original order\n }\n \n /**\n * Compares two transfers by ascending account and subaddress indices.\n */\n static _compareIncomingTransfers(t1, t2) {\n if (t1.getAccountIndex() < t2.getAccountIndex()) return -1;\n else if (t1.getAccountIndex() === t2.getAccountIndex()) return t1.getSubaddressIndex() - t2.getSubaddressIndex();\n return 1;\n }\n \n /**\n * Compares two outputs by ascending account and subaddress indices.\n */\n static _compareOutputs(o1, o2) {\n \n // compare by height\n let heightComparison = MoneroWalletRpc._compareTxsByHeight(o1.getTx(), o2.getTx());\n if (heightComparison !== 0) return heightComparison;\n \n // compare by account index, subaddress index, output index, then key image hex\n let compare = o1.getAccountIndex() - o2.getAccountIndex();\n if (compare !== 0) return compare;\n compare = o1.getSubaddressIndex() - o2.getSubaddressIndex();\n if (compare !== 0) return compare;\n compare = o1.getIndex() - o2.getIndex();\n if (compare !== 0) return compare;\n return o1.getKeyImage().getHex().localeCompare(o2.getKeyImage().getHex());\n }\n}\n\n/**\n * Polls monero-wallet-rpc to provide listener notifications.\n * \n * @class\n * @ignore\n */\nclass WalletPoller {\n \n constructor(wallet) {\n let that = this;\n this._wallet = wallet;\n this._looper = new TaskLooper(async function() { await that.poll(); });\n this._prevLockedTxs = [];\n this._prevUnconfirmedNotifications = new Set(); // tx hashes of previous notifications\n this._prevConfirmedNotifications = new Set(); // tx hashes of previously confirmed but not yet unlocked notifications\n this._threadPool = new ThreadPool(1); // synchronize polls\n this._numPolling = 0;\n }\n \n setIsPolling(isPolling) {\n this._isPolling = isPolling;\n if (isPolling) this._looper.start(this._wallet.syncPeriodInMs);\n else this._looper.stop();\n }\n \n setPeriodInMs(periodInMs) {\n this._looper.setPeriodInMs(periodInMs);\n }\n \n async poll() {\n\n // skip if next poll is queued\n if (this._numPolling > 1) return;\n this._numPolling++;\n \n // synchronize polls\n let that = this;\n return this._threadPool.submit(async function() {\n try {\n \n // skip if wallet is closed\n if (await that._wallet.isClosed()) {\n that._numPolling--;\n return;\n }\n \n // take initial snapshot\n if (that._prevHeight === undefined) {\n that._prevHeight = await that._wallet.getHeight();\n that._prevLockedTxs = await that._wallet.getTxs(new MoneroTxQuery().setIsLocked(true));\n that._prevBalances = await that._wallet._getBalances();\n that._numPolling--;\n return;\n }\n \n // announce height changes\n let height = await that._wallet.getHeight();\n if (that._prevHeight !== height) {\n for (let i = that._prevHeight; i < height; i++) await that._onNewBlock(i);\n that._prevHeight = height;\n }\n \n // get locked txs for comparison to previous\n let minHeight = Math.max(0, height - 70); // only monitor recent txs\n let lockedTxs = await that._wallet.getTxs(new MoneroTxQuery().setIsLocked(true).setMinHeight(minHeight).setIncludeOutputs(true));\n \n // collect hashes of txs no longer locked\n let noLongerLockedHashes = [];\n for (let prevLockedTx of that._prevLockedTxs) {\n if (that._getTx(lockedTxs, prevLockedTx.getHash()) === undefined) {\n noLongerLockedHashes.push(prevLockedTx.getHash());\n }\n }\n \n // save locked txs for next comparison\n that._prevLockedTxs = lockedTxs;\n \n // fetch txs which are no longer locked\n let unlockedTxs = noLongerLockedHashes.length === 0 ? [] : await that._wallet.getTxs(new MoneroTxQuery().setIsLocked(false).setMinHeight(minHeight).setHashes(noLongerLockedHashes).setIncludeOutputs(true));\n \n // announce new unconfirmed and confirmed outputs\n for (let lockedTx of lockedTxs) {\n let searchSet = lockedTx.isConfirmed() ? that._prevConfirmedNotifications : that._prevUnconfirmedNotifications;\n let unannounced = !searchSet.has(lockedTx.getHash());\n searchSet.add(lockedTx.getHash());\n if (unannounced) await that._notifyOutputs(lockedTx);\n }\n \n // announce new unlocked outputs\n for (let unlockedTx of unlockedTxs) {\n that._prevUnconfirmedNotifications.delete(unlockedTx.getHash());\n that._prevConfirmedNotifications.delete(unlockedTx.getHash());\n await that._notifyOutputs(unlockedTx);\n }\n \n // announce balance changes\n await that._checkForChangedBalances();\n that._numPolling--;\n } catch (err) {\n that._numPolling--;\n console.error(\"Failed to background poll \" + await that._wallet.getPath());\n }\n });\n }\n \n async _onNewBlock(height) {\n for (let listener of this._wallet.getListeners()) await listener.onNewBlock(height);\n }\n \n async _notifyOutputs(tx) {\n \n // notify spent outputs // TODO (monero-project): monero-wallet-rpc does not allow scrape of tx inputs so providing one input with outgoing amount\n if (tx.getOutgoingTransfer() !== undefined) {\n assert(tx.getInputs() === undefined);\n let output = new MoneroOutputWallet()\n .setAmount(tx.getOutgoingTransfer().getAmount().add(tx.getFee()))\n .setAccountIndex(tx.getOutgoingTransfer().getAccountIndex())\n .setSubaddressIndex(tx.getOutgoingTransfer().getSubaddressIndices().length === 1 ? tx.getOutgoingTransfer().getSubaddressIndices()[0] : undefined) // initialize if transfer sourced from single subaddress\n .setTx(tx);\n tx.setInputs([output]);\n for (let listener of this._wallet.getListeners()) await listener.onOutputSpent(output);\n }\n \n // notify received outputs\n if (tx.getIncomingTransfers() !== undefined) {\n if (tx.getOutputs() !== undefined && tx.getOutputs().length > 0) { // TODO (monero-project): outputs only returned for confirmed txs\n for (let output of tx.getOutputs()) {\n for (let listener of this._wallet.getListeners()) await listener.onOutputReceived(output);\n }\n } else { // TODO (monero-project): monero-wallet-rpc does not allow scrape of unconfirmed received outputs so using incoming transfer values\n let outputs = [];\n for (let transfer of tx.getIncomingTransfers()) {\n outputs.push(new MoneroOutputWallet()\n .setAccountIndex(transfer.getAccountIndex())\n .setSubaddressIndex(transfer.getSubaddressIndex())\n .setAmount(transfer.getAmount())\n .setTx(tx));\n }\n tx.setOutputs(outputs);\n for (let listener of this._wallet.getListeners()) {\n for (let output of tx.getOutputs()) await listener.onOutputReceived(output);\n }\n }\n }\n }\n \n _getTx(txs, txHash) {\n for (let tx of txs) if (txHash === tx.getHash()) return tx;\n return undefined;\n }\n \n async _checkForChangedBalances() {\n let balances = await this._wallet._getBalances();\n if (balances[0].compare(this._prevBalances[0]) !== 0 || balances[1].compare(this._prevBalances[1]) !== 0) {\n this._prevBalances = balances;\n for (let listener of await this._wallet.getListeners()) await listener.onBalancesChanged(balances[0], balances[1]);\n return true;\n }\n return false;\n }\n}\n\nMoneroWalletRpc.DEFAULT_SYNC_PERIOD_IN_MS = 20000; // default period between syncs in ms (defined by DEFAULT_AUTO_REFRESH_PERIOD in wallet_rpc_server.cpp)\n\nmodule.exports = MoneroWalletRpc;","const assert = require(\"assert\");\nconst BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst MoneroSubaddress = require(\"./MoneroSubaddress\");\n\n/**\n * Monero account model.\n */\nclass MoneroAccount {\n \n constructor(stateOrIndex, primaryAddress, balance, unlockedBalance, subaddresses) {\n \n // construct from json\n if (typeof stateOrIndex === \"object\") {\n this.state = stateOrIndex;\n \n // deserialize balances\n if (this.state.balance !== undefined && !(this.state.balance instanceof BigInteger)) this.state.balance = BigInteger.parse(this.state.balance);\n if (this.state.unlockedBalance !== undefined && !(this.state.unlockedBalance instanceof BigInteger)) this.state.unlockedBalance = BigInteger.parse(this.state.unlockedBalance);\n \n // deserialize subaddresses\n if (this.state.subaddresses) {\n for (let i = 0; i < this.state.subaddresses.length; i++) {\n if (!(this.state.subaddresses[i] instanceof MoneroSubaddress)) {\n this.state.subaddresses[i] = new MoneroSubaddress(this.state.subaddresses[i]);\n }\n }\n }\n }\n \n // construct from individual params\n else {\n this.state = {};\n this.setIndex(stateOrIndex);\n this.setPrimaryAddress(primaryAddress);\n this.setBalance(balance);\n this.setUnlockedBalance(unlockedBalance);\n this.setSubaddresses(subaddresses);\n }\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.balance) json.balance = json.balance.toString();\n if (json.unlockedBalance) json.unlockedBalance = json.unlockedBalance.toString();\n if (json.subaddresses) {\n for (let i = 0; i < json.subaddresses.length; i++) {\n json.subaddresses[i] = json.subaddresses[i].toJson();\n }\n }\n return json;\n }\n \n getIndex() {\n return this.state.index;\n }\n \n setIndex(index) {\n this.state.index = index;\n return this;\n }\n \n getPrimaryAddress() {\n return this.state.primaryAddress;\n }\n\n setPrimaryAddress(primaryAddress) {\n this.state.primaryAddress = primaryAddress;\n return this;\n }\n \n getBalance() {\n return this.state.balance;\n }\n \n setBalance(balance) {\n this.state.balance = balance;\n return this;\n }\n \n getUnlockedBalance() {\n return this.state.unlockedBalance;\n }\n \n setUnlockedBalance(unlockedBalance) {\n this.state.unlockedBalance = unlockedBalance;\n return this;\n }\n \n getTag() {\n return this.state.tag;\n }\n \n setTag(tag) {\n this.state.tag = tag;\n return this;\n }\n \n getSubaddresses() {\n return this.state.subaddresses;\n }\n \n setSubaddresses(subaddresses) {\n assert(subaddresses === undefined || Array.isArray(subaddresses), \"Given subaddresses must be undefined or an array of subaddresses\");\n this.state.subaddresses = subaddresses;\n if (subaddresses) {\n for (let subaddress of subaddresses) {\n subaddress.setAccountIndex(this.state.index);\n }\n }\n return this;\n }\n \n toString(indent = 0) {\n let str = \"\";\n str += GenUtils.kvLine(\"Index\", this.getIndex(), indent);\n str += GenUtils.kvLine(\"Primary address\", this.getPrimaryAddress(), indent);\n str += GenUtils.kvLine(\"Balance\", this.getBalance(), indent);\n str += GenUtils.kvLine(\"Unlocked balance\", this.getUnlockedBalance(), indent);\n str += GenUtils.kvLine(\"Tag\", this.getTag(), indent);\n if (this.getSubaddresses() != null) {\n sb += GenUtils.kvLine(\"Subaddresses\", \"\", indent)\n for (let i = 0; i < this.getSubaddresses().size(); i++) {\n str += GenUtils.kvLine(i + 1, \"\", indent + 1);\n str += this.getSubaddresses()[i].toString(indent + 2) + \"\\n\";\n }\n }\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroAccount;","/**\n * Represents an account tag.\n */\nclass MoneroAccountTag {\n \n constructor(tag, label, accountIndices) {\n this.tag = tag;\n this.label = label;\n this.accountIndices = accountIndices;\n }\n \n getTag() {\n return this.tag;\n }\n \n setTag(tag) {\n this.tag = tag;\n return this;\n }\n \n getLabel() {\n return this.label;\n }\n \n setLabel(label) {\n this.label = label;\n return this;\n }\n \n getAccountIndices() {\n return this.accountIndices;\n }\n \n setAccountIndices(accountIndices) {\n this.accoutIndices = accountIndices;\n return this;\n }\n}\n\nmodule.exports = MoneroAccountTag;","/**\n * Monero address book entry model\n */\nclass MoneroAddressBookEntry {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n \n getIndex() {\n return this.state.index;\n }\n \n setIndex(index) {\n this.state.index = index;\n return this;\n }\n \n getAddress() {\n return this.state.address;\n }\n \n setAddress(address) {\n this.state.address = address;\n return this;\n }\n \n getDescription() {\n return this.state.description;\n }\n \n setDescription(description) {\n this.state.description = description;\n return this;\n }\n \n getPaymentId() {\n return this.state.paymentId;\n }\n \n setPaymentId(paymentId) {\n this.state.paymentId = paymentId;\n return this;\n }\n}\n\nmodule.exports = MoneroAddressBookEntry;","/**\n * Base class for results from checking a transaction or reserve proof.\n * \n * @class\n */\nclass MoneroCheck {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n }\n\n isGood() {\n return this.state.isGood;\n }\n\n setIsGood(isGood) {\n this.state.isGood = isGood;\n return this;\n }\n}\n\nmodule.exports = MoneroCheck;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst MoneroCheck = require(\"./MoneroCheck\");\n\n/**\n * Results from checking a reserve proof.\n * \n * @extends {MoneroCheck}\n */\nclass MoneroCheckReserve extends MoneroCheck {\n \n constructor(state) {\n super(state);\n if (this.state.totalAmount !== undefined && !(this.state.totalAmount instanceof BigInteger)) this.state.totalAmount = BigInteger.parse(this.state.totalAmount);\n if (this.state.unconfirmedSpentAmount !== undefined && !(this.state.unconfirmedSpentAmount instanceof BigInteger)) this.state.unconfirmedSpentAmount = BigInteger.parse(this.state.unconfirmedSpentAmount);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getTotalAmount()) json.totalAmount = this.getTotalAmount().toString();\n if (this.getUnconfirmedSpentAmount()) json.unconfirmedSpentAmount = this.getUnconfirmedSpentAmount().toString();\n return json;\n }\n \n getTotalAmount() {\n return this.state.totalAmount;\n }\n\n setTotalAmount(totalAmount) {\n this.state.totalAmount = totalAmount;\n return this;\n }\n \n getUnconfirmedSpentAmount() {\n return this.state.unconfirmedSpentAmount;\n }\n\n setUnconfirmedSpentAmount(unconfirmedSpentAmount) {\n this.state.unconfirmedSpentAmount = unconfirmedSpentAmount;\n return this;\n }\n}\n\nmodule.exports = MoneroCheckReserve;","const MoneroCheck = require(\"./MoneroCheck\");\nconst BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Results from checking a transaction key.\n * \n * @extends {MoneroCheck}\n */\nclass MoneroCheckTx extends MoneroCheck {\n \n constructor(state) {\n super(state);\n if (this.state.receivedAmount !== undefined && !(this.state.receivedAmount instanceof BigInteger)) this.state.receivedAmount = BigInteger.parse(this.state.receivedAmount);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getReceivedAmount()) json.receivedAmount = this.getReceivedAmount().toString();\n return json;\n }\n\n inTxPool() {\n return this.state.inTxPool;\n }\n \n setInTxPool(inTxPool) {\n this.state.inTxPool = inTxPool;\n return this;\n }\n \n getNumConfirmations() {\n return this.state.numConfirmations;\n }\n \n setNumConfirmations(numConfirmations) {\n this.state.numConfirmations = numConfirmations;\n return this;\n }\n \n getReceivedAmount() {\n return this.state.receivedAmount;\n }\n \n setReceivedAmount(receivedAmount) {\n this.state.receivedAmount = receivedAmount;\n return this;\n }\n}\n\nmodule.exports = MoneroCheckTx;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroError = require(\"../../common/MoneroError\");\n\n/**\n * Models an outgoing transfer destination.\n */\nclass MoneroDestination {\n \n /**\n * Construct the model.\n * \n * @param {MoneroDestination|object|string} stateOrAddress is a MoneroDestination, JS object, or hex string to initialize from (optional)\n * @param {BigInteger|string} amount - the destination amount\n */\n constructor(stateOrAddress, amount) {\n if (!stateOrAddress) this.state = {};\n else if (stateOrAddress instanceof MoneroDestination) this.state = stateOrAddress.toJson();\n else if (typeof stateOrAddress === \"object\") {\n this.state = Object.assign({}, stateOrAddress);\n if (typeof this.state.amount === \"number\") this.state.amount = BigInteger.parse(this.state.amount);\n } else if (typeof stateOrAddress === \"string\") {\n this.state = {};\n this.setAddress(stateOrAddress);\n }\n else throw new MoneroError(\"stateOrAddress must be a MoneroDestination, JavaScript object, or hex string\");\n if (amount) this.state.amount = amount;\n this.setAmount(this.state.amount);\n }\n \n getAddress() {\n return this.state.address;\n }\n\n setAddress(address) {\n this.state.address = address;\n return this;\n }\n \n getAmount() {\n return this.state.amount;\n }\n\n setAmount(amount) {\n if (amount !== undefined && !(this.state.amount instanceof BigInteger)) {\n if (typeof amount === \"number\") throw new MoneroError(\"Destination amount must be BigInteger or string\");\n try { amount = BigInteger.parse(amount); }\n catch (err) { throw new MoneroError(\"Invalid destination amount: \" + amount); }\n }\n this.state.amount = amount;\n return this;\n }\n\n copy() {\n return new MoneroDestination(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getAmount()) json.amount = this.getAmount().toString();\n return json;\n }\n \n toString(indent = 0) {\n let str = GenUtils.kvLine(\"Address\", this.getAddress(), indent);\n str += GenUtils.kvLine(\"Amount\", this.getAmount() ? this.getAmount().toString() : undefined, indent);\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroDestination;","const assert = require(\"assert\");\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroTransfer = require(\"./MoneroTransfer\");\n\n/**\n * Models an incoming transfer of funds to the wallet.\n * \n * @extends {MoneroTransfer}\n */\nclass MoneroIncomingTransfer extends MoneroTransfer {\n \n /**\n * Construct the model.\n * \n * @param {MoneroTransfer|object} state is existing state to initialize from (optional)\n */\n constructor(state) {\n super(state);\n }\n \n isIncoming() {\n return true;\n }\n \n getSubaddressIndex() {\n return this.state.subaddressIndex;\n }\n \n setSubaddressIndex(subaddressIndex) {\n this.state.subaddressIndex = subaddressIndex;\n return this;\n }\n \n getAddress() {\n return this.state.address;\n }\n\n setAddress(address) {\n this.state.address = address;\n return this;\n }\n \n /**\n * Return how many confirmations till it's not economically worth re-writing the chain.\n * That is, the number of confirmations before the transaction is highly unlikely to be\n * double spent or overwritten and may be considered settled, e.g. for a merchant to trust\n * as finalized.\n * \n * @return {number} is the number of confirmations before it's not worth rewriting the chain\n */\n getNumSuggestedConfirmations() {\n return this.state.numSuggestedConfirmations;\n }\n \n setNumSuggestedConfirmations(numSuggestedConfirmations) {\n this.state.numSuggestedConfirmations = numSuggestedConfirmations;\n return this;\n }\n\n copy() {\n return new MoneroIncomingTransfer(this.toJson());\n }\n \n /**\n * Updates this transaction by merging the latest information from the given\n * transaction.\n * \n * Merging can modify or build references to the transfer given so it\n * should not be re-used or it should be copied before calling this method.\n * \n * @param {MoneroIncomingTransfer} transfer is the transfer to merge into this one\n */\n merge(transfer) {\n super.merge(transfer);\n assert(transfer instanceof MoneroIncomingTransfer);\n if (this === transfer) return this;\n this.setSubaddressIndex(GenUtils.reconcile(this.getSubaddressIndex(), transfer.getSubaddressIndex()));\n this.setAddress(GenUtils.reconcile(this.getAddress(), transfer.getAddress()));\n this.setNumSuggestedConfirmations(GenUtils.reconcile(this.getNumSuggestedConfirmations(), transfer.getNumSuggestedConfirmations(), {resolveMax: false}));\n return this;\n }\n \n toString() {\n return this.toString(0);\n }\n \n toString(indent) {\n let str = super.toString(indent) + \"\\n\";\n str += GenUtils.kvLine(\"Subaddress index\", this.getSubaddressIndex(), indent);\n str += GenUtils.kvLine(\"Address\", this.getAddress(), indent);\n str += GenUtils.kvLine(\"Num suggested confirmations\", this.getNumSuggestedConfirmations(), indent);\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroIncomingTransfer;","/**\n * Monero integrated address model.\n */\nclass MoneroIntegratedAddress {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n\n getStandardAddress() {\n return this.state.standardAddress;\n }\n \n setStandardAddress(standardAddress) {\n this.state.standardAddress = standardAddress;\n return this;\n }\n \n getPaymentId() {\n return this.state.paymentId;\n }\n \n setPaymentId(paymentId) {\n this.state.paymentId = paymentId;\n return this;\n }\n \n getIntegratedAddress() {\n return this.state.integratedAddress;\n }\n \n setIntegratedAddress(integratedAddress) {\n this.state.integratedAddress = integratedAddress;\n return this;\n }\n \n toString() {\n return this.state.integratedAddress;\n }\n}\n\nmodule.exports = MoneroIntegratedAddress;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\n\n/**\n * Models results from importing key images.\n */\nclass MoneroKeyImageImportResult {\n \n constructor(state) {\n state = Object.assign({}, state);\n if (state.spentAmount !== undefined && !(state.spentAmount instanceof BigInteger)) state.spentAmount = BigInteger.parse(state.spentAmount);\n if (state.unspentAmount !== undefined && !(state.unspentAmount instanceof BigInteger)) state.unspentAmount = BigInteger.parse(state.unspentAmount);\n this.state = state;\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getSpentAmount()) json.spentAmount = this.getSpentAmount().toString();\n if (this.getUnspentAmount()) json.unspentAmount = this.getUnspentAmount().toString();\n return json;\n }\n \n getHeight() {\n return this.state.height;\n }\n \n setHeight(height) {\n this.state.height = height;\n return this;\n }\n \n getSpentAmount() {\n return this.state.spentAmount;\n }\n \n setSpentAmount(spentAmount) {\n this.state.spentAmount = spentAmount;\n return this;\n }\n \n getUnspentAmount() {\n return this.state.unspentAmount;\n }\n \n setUnspentAmount(unspentAmount) {\n this.state.unspentAmount = unspentAmount;\n return this;\n }\n}\n\nmodule.exports = MoneroKeyImageImportResult;","/**\n * Message signature verification result.\n * \n * @class\n */\nclass MoneroMessageSignatureResult {\n \n constructor(stateOrIsGood, isOld, signatureType, version) {\n if (typeof stateOrIsGood === \"boolean\") {\n this.state = {};\n this.state.isGood = stateOrIsGood;\n this.state.isOld = isOld;\n this.state.signatureType = signatureType;\n this.state.version = version;\n } else {\n this.state = stateOrIsGood;\n }\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n\n isGood() {\n return this.state.isGood;\n }\n\n setIsGood(isGood) {\n this.state.isGood = isGood;\n return this;\n }\n \n isOld() {\n return this.state.isOld;\n }\n\n setIsOld(isOld) {\n this.state.isOld = isOld;\n return this;\n }\n \n getSignatureType() {\n return this.state.signatureType;\n }\n\n setSignatureType(signatureType) {\n this.state.signatureType = signatureType;\n return this;\n }\n \n getVersion() {\n return this.state.version;\n }\n\n setVersion(version) {\n this.state.version = version;\n return this;\n }\n}\n\nmodule.exports = MoneroMessageSignatureResult;","/**\n * Enumerate message signature types.\n * \n * @hideconstructor\n */\nclass MoneroMessageSignatureType {}\n\n/**\n * Sign with spend key (value=0).\n */\nMoneroMessageSignatureType.SIGN_WITH_SPEND_KEY = 0;\n\n/**\n * Sign with the view key (value=1).\n */\nMoneroMessageSignatureType.SIGN_WITH_VIEW_KEY = 1;\n\nmodule.exports = MoneroMessageSignatureType;","/**\n * Models information about a multisig wallet.\n */\nclass MoneroMultisigInfo {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n \n isMultisig() {\n return this.state.isMultisig;\n }\n \n setIsMultisig(isMultisig) {\n this.state.isMultisig = isMultisig;\n return this;\n }\n \n isReady() {\n return this.state.isReady;\n }\n \n setIsReady(isReady) {\n this.state.isReady = isReady;\n }\n \n getThreshold() {\n return this.state.threshold;\n }\n \n setThreshold(threshold) {\n this.state.threshold = threshold;\n }\n \n getNumParticipants() {\n return this.state.numParticipants;\n }\n \n setNumParticipants(numParticipants) {\n this.state.numParticipants = numParticipants;\n }\n}\n\nmodule.exports = MoneroMultisigInfo;","/**\n * Models the result of initializing a multisig wallet which results in the\n * multisig wallet's address xor another multisig hex to share with\n * participants to create the wallet.\n */\nclass MoneroMultisigInitResult {\n\n constructor(state) {\n this.state = Object.assign({}, state);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n \n getAddress() {\n return this.state.address;\n }\n \n setAddress(address) {\n this.state.address = address;\n return this;\n }\n \n getMultisigHex() {\n return this.state.multisigHex;\n }\n \n setMultisigHex(multisigHex) {\n this.state.multisigHex = multisigHex;\n return this;\n }\n}\n\nmodule.exports = MoneroMultisigInitResult;","/**\n * Models the result of signing multisig tx hex.\n */\nclass MoneroMultisigSignResult {\n \n constructor(state) {\n this.state = Object.assign({}, state);\n }\n \n toJson() {\n return Object.assign({}, this.state);\n }\n \n getSignedMultisigTxHex() {\n return this.state.signedMultisigTxHex;\n }\n\n setSignedMultisigTxHex(signedTxMultisigHex) {\n this.state.signedMultisigTxHex = signedTxMultisigHex;\n }\n\n getTxHashes() {\n return this.state.txHashes;\n }\n\n setTxHashes(txHashes) {\n this.state.txHashes = txHashes;\n }\n}\n\nmodule.exports = MoneroMultisigSignResult;","const assert = require(\"assert\");\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroDestination = require(\"./MoneroDestination\");\nconst MoneroTransfer = require(\"./MoneroTransfer\");\n\n/**\n * Models an outgoing transfer of funds from the wallet.\n * \n * @extends {MoneroTransfer}\n */\nclass MoneroOutgoingTransfer extends MoneroTransfer {\n\n /**\n * Construct the model.\n * \n * @param {MoneroOutgoingTranser|object} state is existing state to initialize from (optional)\n */\n constructor(state) {\n super(state);\n state = this.state;\n \n // deserialize destinations\n if (state.destinations) {\n for (let i = 0; i < state.destinations.length; i++) {\n if (!(state.destinations[i] instanceof MoneroDestination)) state.destinations[i] = new MoneroDestination(state.destinations[i]);\n }\n }\n }\n \n isIncoming() {\n return false;\n }\n \n getSubaddressIndices() {\n return this.state.subaddressIndices;\n }\n\n setSubaddressIndices(subaddressIndices) {\n this.state.subaddressIndices = subaddressIndices;\n return this;\n }\n \n getAddresses() {\n return this.state.addresses;\n }\n\n setAddresses(addresses) {\n this.state.addresses = addresses;\n return this;\n }\n\n getDestinations() {\n return this.state.destinations;\n }\n \n setDestinations(destinations) {\n this.state.destinations = destinations;\n return this;\n }\n \n copy() {\n return new MoneroOutgoingTransfer(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state, super.toJson()); // merge json onto inherited state\n if (this.getDestinations()) {\n json.destinations = [];\n for (let destination of this.getDestinations()) json.destinations.push(destination.toJson());\n }\n delete json.tx; // parent tx is not serialized\n return json;\n }\n \n /**\n * Updates this transaction by merging the latest information from the given\n * transaction.\n * \n * Merging can modify or build references to the transfer given so it\n * should not be re-used or it should be copied before calling this method.\n * \n * @param transfer is the transfer to merge into this one\n */\n merge(transfer) {\n super.merge(transfer);\n assert(transfer instanceof MoneroOutgoingTransfer);\n if (this === transfer) return this;\n this.setSubaddressIndices(GenUtils.reconcile(this.getSubaddressIndices(), transfer.getSubaddressIndices()));\n this.setAddresses(GenUtils.reconcile(this.getAddresses(), transfer.getAddresses()));\n this.setDestinations(GenUtils.reconcile(this.getDestinations(), transfer.getDestinations()));\n return this;\n }\n\n toString(indent = 0) {\n let str = super.toString(indent) + \"\\n\";\n str += GenUtils.kvLine(\"Subaddress indices\", this.getSubaddressIndices(), indent);\n str += GenUtils.kvLine(\"Addresses\", this.getAddresses(), indent);\n if (this.getDestinations()) {\n str += GenUtils.kvLine(\"Destinations\", \"\", indent);\n for (let i = 0; i < this.getDestinations().length; i++) {\n str += GenUtils.kvLine(i + 1, \"\", indent + 1);\n str += this.getDestinations()[i].toString(indent + 2) + \"\\n\";\n }\n }\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroOutgoingTransfer;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst MoneroError = require(\"../../common/MoneroError\");\nconst MoneroOutputWallet = require(\"./MoneroOutputWallet\");\n\n/**\n * Configuration to query wallet outputs.\n * \n * @extends {MoneroOutputWallet}\n */\nclass MoneroOutputQuery extends MoneroOutputWallet {\n \n /**\n *

Construct the output query.

\n * \n *

Example:

\n * \n * \n * // get available outputs in account 0 with a minimum amount
\n * let outputs = await wallet.getOutputs({
\n *    isSpent: false,
\n *    isLocked: false,
\n *    accountIndex: 0,
\n *    minAmount: new BigInteger(\"750000\")
\n * });\n *
\n * \n *

All configuration is optional. All outputs are returned except those that don't meet criteria defined in this query.

\n * \n * @param {object} config - output query configuration (optional)\n * @param {int} config.accountIndex - get outputs in this account index\n * @param {int} config.subaddressIndex - get outputs in this subaddress index\n * @param {int[]} config.subaddressIndices - get outputs in these subaddress indices\n * @param {BigInteger} config.amount - get outputs with this amount\n * @param {BigInteger} config.minAmount - get outputs with amount greater than or equal to this amount\n * @param {BigInteger} config.maxAmount - get outputs with amount less than or equal to this amount\n * @param {boolean} config.isSpent - get spent xor unspent outputs\n * @param {boolean} config.isFrozen - get frozen xor thawed outputs\n * @param {object|MoneroKeyImage} config.keyImage - get outputs with a key image matching fields defined in this key image\n * @param {string} config.keyImage.hex - get outputs with this key image hex\n * @param {string} config.keyImage.signature - get outputs with this key image signature\n * @param {object|MoneroTxQuery} config.txQuery - get outputs whose tx match this tx query\n */\n constructor(config) {\n super(config);\n \n // deserialize if necessary\n const MoneroTxQuery = require(\"./MoneroTxQuery\");\n if (this.state.minAmount !== undefined && !(this.state.minAmount instanceof BigInteger)) this.state.minAmount = BigInteger.parse(this.state.minAmount);\n if (this.state.maxAmount !== undefined && !(this.state.maxAmount instanceof BigInteger)) this.state.maxAmount = BigInteger.parse(this.state.maxAmount);\n if (this.state.txQuery && !(this.state.txQuery instanceof MoneroTxQuery)) this.state.txQuery = new MoneroTxQuery(this.state.txQuery);\n if (this.state.txQuery) this.state.txQuery.setOutputQuery(this);\n if (this.state.isLocked !== undefined) throw new MoneroError(\"isLocked must be part of tx query, not output query\");\n }\n \n copy() {\n return new MoneroOutputQuery(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state, super.toJson());\n if (this.getMinAmount()) json.minAmount = this.getMinAmount().toString();\n if (this.getMaxAmount()) json.maxAmount = this.getMaxAmount().toString();\n delete json.txQuery;\n return json;\n }\n \n getMinAmount() {\n return this.state.minAmount;\n }\n\n setMinAmount(minAmount) {\n this.state.minAmount = minAmount;\n return this;\n }\n\n getMaxAmount() {\n return this.state.maxAmount;\n }\n\n setMaxAmount(maxAmount) {\n this.state.maxAmount = maxAmount;\n return this;\n }\n \n getTxQuery() {\n return this.state.txQuery;\n }\n \n setTxQuery(txQuery) {\n this.state.txQuery = txQuery;\n if (txQuery) txQuery.state.outputQuery = this;\n return this;\n }\n \n getSubaddressIndices() {\n return this.state.subaddressIndices;\n }\n \n setSubaddressIndices(subaddressIndices) {\n this.state.subaddressIndices = subaddressIndices;\n return this;\n }\n \n meetsCriteria(output, queryParent) {\n if (!(output instanceof MoneroOutputWallet)) throw new Error(\"Output not given to MoneroOutputQuery.meetsCriteria(output)\");\n if (queryParent === undefined) queryParent = true;\n \n // filter on output\n if (this.getAccountIndex() !== undefined && this.getAccountIndex() !== output.getAccountIndex()) return false;\n if (this.getSubaddressIndex() !== undefined && this.getSubaddressIndex() !== output.getSubaddressIndex()) return false;\n if (this.getAmount() !== undefined && this.getAmount().compare(output.getAmount()) !== 0) return false;\n if (this.isSpent() !== undefined && this.isSpent() !== output.isSpent()) return false;\n if (this.isFrozen() !== undefined && this.isFrozen() !== output.isFrozen()) return false;\n \n // filter on output's key image\n if (this.getKeyImage() !== undefined) {\n if (output.getKeyImage() === undefined) return false;\n if (this.getKeyImage().getHex() !== undefined && this.getKeyImage().getHex() !== output.getKeyImage().getHex()) return false;\n if (this.getKeyImage().getSignature() !== undefined && this.getKeyImage().getSignature() !== output.getKeyImage().getSignature()) return false;\n }\n \n // filter on extensions\n if (this.getSubaddressIndices() !== undefined && !this.getSubaddressIndices().includes(output.getSubaddressIndex())) return false;\n \n // filter with tx query\n if (this.getTxQuery() && !this.getTxQuery().meetsCriteria(output.getTx(), false)) return false;\n \n // filter on remaining fields\n if (this.getMinAmount() !== undefined && (output.getAmount() === undefined || output.getAmount().compare(this.getMinAmount()) < 0)) return false;\n if (this.getMaxAmount() !== undefined && (output.getAmount() === undefined || output.getAmount().compare(this.getMaxAmount()) > 0)) return false;\n \n // output meets query\n return true;\n }\n}\n\nMoneroOutputQuery._EMPTY_OUTPUT = new MoneroOutputWallet();\n\nmodule.exports = MoneroOutputQuery;","const assert = require(\"assert\");\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroOutput = require(\"../../daemon/model/MoneroOutput\");\n\n/**\n * Models a Monero output with wallet extensions.\n * \n * @class\n * @extends {MoneroOutput}\n */\nclass MoneroOutputWallet extends MoneroOutput {\n \n /**\n * Construct the model.\n * \n * @param {MoneroOutputWallet|object} state is existing state to initialize from (optional)\n */\n constructor(state) {\n super(state);\n }\n \n getAccountIndex() {\n return this.state.accountIndex;\n }\n\n setAccountIndex(accountIndex) {\n this.state.accountIndex = accountIndex;\n return this;\n }\n\n getSubaddressIndex() {\n return this.state.subaddressIndex;\n }\n\n setSubaddressIndex(subaddressIndex) {\n this.state.subaddressIndex = subaddressIndex;\n return this;\n }\n \n isSpent() {\n return this.state.isSpent;\n }\n\n setIsSpent(isSpent) {\n this.state.isSpent = isSpent;\n return this;\n }\n \n /**\n * Indicates if this output has been deemed 'malicious' and will therefore\n * not be spent by the wallet.\n * \n * @return Boolean is whether or not this output is frozen\n */\n isFrozen() {\n return this.state.isFrozen;\n }\n\n setIsFrozen(isFrozen) {\n this.state.isFrozen = isFrozen;\n return this;\n }\n \n isLocked() {\n if (this.getTx() === undefined) return undefined;\n return this.getTx().isLocked();\n }\n \n copy() {\n return new MoneroOutputWallet(this.toJson());\n }\n \n toJson() {\n let json = Object.assign({}, this.state, super.toJson());\n delete json.tx;\n return json;\n }\n \n /**\n * Updates this output by merging the latest information from the given\n * output.\n * \n * Merging can modify or build references to the output given so it\n * should not be re-used or it should be copied before calling this method.\n * \n * @param output is the output to merge into this one\n */\n merge(output) {\n assert(output instanceof MoneroOutputWallet);\n if (this === output) return;\n super.merge(output);\n this.setAccountIndex(GenUtils.reconcile(this.getAccountIndex(), output.getAccountIndex()));\n this.setSubaddressIndex(GenUtils.reconcile(this.getSubaddressIndex(), output.getSubaddressIndex()));\n this.setIsSpent(GenUtils.reconcile(this.isSpent(), output.isSpent(), {resolveTrue: true})); // output can become spent\n this.setIsFrozen(GenUtils.reconcile(this.isFrozen(), output.isFrozen()));\n return this;\n }\n \n toString(indent) {\n let str = super.toString(indent) + \"\\n\"\n str += GenUtils.kvLine(\"Account index\", this.getAccountIndex(), indent);\n str += GenUtils.kvLine(\"Subaddress index\", this.getSubaddressIndex(), indent);\n str += GenUtils.kvLine(\"Is spent\", this.isSpent(), indent);\n str += GenUtils.kvLine(\"Is frozen\", this.isFrozen(), indent);\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroOutputWallet;","const BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\nconst assert = require(\"assert\");\n\n/**\n * Monero subaddress model.\n */\nclass MoneroSubaddress {\n \n constructor(stateOrAddress, accountIndex, index) {\n if (stateOrAddress === undefined || typeof stateOrAddress === \"string\") {\n this.state = {};\n this.setAddress(stateOrAddress);\n this.setAccountIndex(accountIndex);\n this.setIndex(index);\n } else {\n this.state = stateOrAddress;\n assert(accountIndex === undefined && index === undefined, \"Can construct MoneroSubaddress with object or params but not both\");\n if (this.state.balance !== undefined && !(this.state.balance instanceof BigInteger)) this.state.balance = BigInteger.parse(this.state.balance);\n if (this.state.unlockedBalance !== undefined && !(this.state.unlockedBalance instanceof BigInteger)) this.state.unlockedBalance = BigInteger.parse(this.state.unlockedBalance);\n }\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (json.balance) json.balance = json.balance.toString();\n if (json.unlockedBalance) json.unlockedBalance = json.unlockedBalance.toString();\n return json;\n }\n \n getAccountIndex() {\n return this.state.accountIndex;\n }\n\n setAccountIndex(accountIndex) {\n this.state.accountIndex = accountIndex;\n return this;\n }\n\n getIndex() {\n return this.state.index;\n }\n\n setIndex(index) {\n this.state.index = index;\n return this;\n }\n \n getAddress() {\n return this.state.address;\n }\n\n setAddress(address) {\n this.state.address = address;\n return this;\n }\n\n getLabel() {\n return this.state.label;\n }\n\n setLabel(label) {\n this.state.label = label;\n return this;\n }\n\n getBalance() {\n return this.state.balance;\n }\n\n setBalance(balance) {\n this.state.balance = balance;\n return this;\n }\n\n getUnlockedBalance() {\n return this.state.unlockedBalance;\n }\n\n setUnlockedBalance(unlockedBalance) {\n this.state.unlockedBalance = unlockedBalance;\n return this;\n }\n\n getNumUnspentOutputs() {\n return this.state.numUnspentOutputs;\n }\n\n setNumUnspentOutputs(numUnspentOutputs) {\n this.state.numUnspentOutputs = numUnspentOutputs;\n return this;\n }\n\n isUsed() {\n return this.state.isUsed;\n }\n\n setIsUsed(isUsed) {\n this.state.isUsed = isUsed;\n return this;\n }\n\n getNumBlocksToUnlock() {\n return this.state.numBlocksToUnlock;\n }\n\n setNumBlocksToUnlock(numBlocksToUnlock) {\n this.state.numBlocksToUnlock = numBlocksToUnlock;\n return this;\n }\n \n toString(indent) {\n let str = \"\";\n str += GenUtils.kvLine(\"Account index\", this.getAccountIndex(), indent);\n str += GenUtils.kvLine(\"Subaddress index\", this.getIndex(), indent);\n str += GenUtils.kvLine(\"Address\", this.getAddress(), indent);\n str += GenUtils.kvLine(\"Label\", this.getLabel(), indent);\n str += GenUtils.kvLine(\"Balance\", this.getBalance(), indent);\n str += GenUtils.kvLine(\"Unlocked balance\", this.getUnlockedBalance(), indent);\n str += GenUtils.kvLine(\"Num unspent outputs\", this.getNumUnspentOutputs(), indent);\n str += GenUtils.kvLine(\"Is used\", this.isUsed(), indent);\n str += GenUtils.kvLine(\"Num blocks to unlock\", this.getNumBlocksToUnlock(), indent);\n return str.slice(0, str.length - 1); // strip last newline\n }\n}\n\nmodule.exports = MoneroSubaddress;","/**\n * Result from syncing a Monero wallet.\n */\nclass MoneroSyncResult {\n \n constructor(numBlocksFetched, receivedMoney) {\n this.setNumBlocksFetched(numBlocksFetched);\n this.setReceivedMoney(receivedMoney);\n }\n \n getNumBlocksFetched() {\n return this.numBlocksFetched;\n }\n \n setNumBlocksFetched(numBlocksFetched) {\n this.numBlocksFetched = numBlocksFetched;\n return this;\n }\n \n getReceivedMoney() {\n return this.receivedMoney;\n }\n \n setReceivedMoney(receivedMoney) {\n this.receivedMoney = receivedMoney;\n return this;\n }\n}\n\nmodule.exports = MoneroSyncResult;","const assert = require(\"assert\");\nconst BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\n\n/**\n * Models a base transfer of funds to or from the wallet.\n * \n * @class\n */\nclass MoneroTransfer {\n \n /**\n * Construct the model.\n * \n * @param {MoneroTransfer|object} state is existing state to initialize from (optional)\n */\n constructor(state) {\n \n // initialize internal state\n if (!state) state = {};\n else if (state instanceof MoneroTransfer) state = state.toJson();\n else if (typeof state === \"object\") state = Object.assign({}, state);\n else throw new MoneroError(\"state must be a MoneroTransfer or JavaScript object\");\n this.state = state;\n \n // deserialize fields if necessary\n if (state.amount !== undefined && !(state.amount instanceof BigInteger)) state.amount = BigInteger.parse(state.amount);\n \n // validate state\n this._validate();\n }\n \n copy() {\n return new MoneroTransfer(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state);\n if (this.getAmount()) json.amount = this.getAmount().toString()\n delete json.tx; // parent tx is not serialized\n return json;\n }\n \n getTx() {\n return this.state.tx;\n }\n \n setTx(tx) {\n this.state.tx = tx;\n return this;\n }\n \n isOutgoing() {\n let isIncoming = this.isIncoming();\n assert(typeof isIncoming === \"boolean\");\n return !isIncoming;\n }\n \n isIncoming() {\n throw new Error(\"Subclass must implement\");\n }\n\n getAccountIndex() {\n return this.state.accountIndex;\n }\n\n setAccountIndex(accountIndex) {\n this.state.accountIndex = accountIndex;\n this._validate();\n return this;\n }\n\n getAmount() {\n return this.state.amount;\n }\n\n setAmount(amount) {\n this.state.amount = amount;\n return this;\n }\n \n /**\n * Updates this transaction by merging the latest information from the given\n * transaction.\n * \n * Merging can modify or build references to the transfer given so it\n * should not be re-used or it should be copied before calling this method.\n * \n * @param transfer is the transfer to merge into this one\n * @return {MoneroTransfer} the merged transfer\n */\n merge(transfer) {\n assert(transfer instanceof MoneroTransfer);\n if (this === transfer) return this;\n \n // merge transactions if they're different which comes back to merging transfers\n if (this.getTx() !== transfer.getTx()) {\n this.getTx().merge(transfer.getTx());\n return this;\n }\n \n // otherwise merge transfer fields\n this.setAccountIndex(GenUtils.reconcile(this.getAccountIndex(), transfer.getAccountIndex()));\n \n // TODO monero-project: failed tx in pool (after testUpdateLockedDifferentAccounts()) causes non-originating saved wallets to return duplicate incoming transfers but one has amount of 0\n if (this.getAmount() !== undefined && transfer.getAmount() !== undefined && this.getAmount().compare(transfer.getAmount()) !== 0 && (this.getAmount().compare(BigInteger.parse(\"0\")) === 0 || transfer.getAmount().compare(BigInteger.parse(\"0\")) === 0)) {\n console.warn(\"monero-project returning transfers with 0 amount/numSuggestedConfirmations\");\n } else {\n this.setAmount(GenUtils.reconcile(this.getAmount(), transfer.getAmount()));\n }\n \n return this;\n }\n \n toString(indent = 0) {\n let str = \"\";\n str += GenUtils.kvLine(\"Is incoming\", this.isIncoming(), indent);\n str += GenUtils.kvLine(\"Account index\", this.getAccountIndex(), indent);\n str += GenUtils.kvLine(\"Amount\", this.getAmount() ? this.getAmount().toString() : undefined, indent);\n return str === \"\" ? str : str.slice(0, str.length - 1); // strip last newline\n }\n \n _validate() {\n if (this.getAccountIndex() !== undefined && this.getAccountIndex() < 0) throw new MoneroError(\"Account index must be >= 0\");\n }\n}\n\nmodule.exports = MoneroTransfer;","const MoneroIncomingTransfer = require(\"./MoneroIncomingTransfer\");\nconst MoneroOutgoingTransfer = require(\"./MoneroOutgoingTransfer\");\nconst MoneroTransfer = require(\"./MoneroTransfer\");\nconst MoneroError = require(\"../../common/MoneroError\")\n\n/**\n * Configuration to query wallet transfers.\n * \n * @extends {MoneroTransfer}\n */\nclass MoneroTransferQuery extends MoneroTransfer {\n \n /**\n *

Construct the transfer query.

\n * \n *

Example:

\n * \n * \n * // get incoming transfers to account 0, subaddress 1
\n * let transfers = await wallet.getTransfers({
\n *    accountIndex: 0,
\n *    subaddressIndex: 0
\n * });\n *
\n * \n *

All configuration is optional. All transfers are returned except those that don't meet criteria defined in this query.

\n * \n * @param {object} config - transfer query configuration (optional)\n * @param {BigInteger} config.amount - get transfers with this amount\n * @param {int} config.accountIndex - get transfers to/from this account index\n * @param {int} config.subaddressIndex - get transfers to/from this subaddress index\n * @param {int[]} config.subaddressIndices - get transfers to/from these subaddress indices\n * @param {string} config.address - get transfers to/from this wallet address\n * @param {string[]} config.addresses - get transfers to/from these wallet addresses\n * @param {boolean} config.isIncoming - get transfers which are incoming if true\n * @param {boolean} config.isOutgoing - get transfers which are outgoing if true\n * @param {boolean} config.hasDestinations - get transfers with known destinations if true (destinations are only stored locally with the wallet)\n * @param {object|MoneroTxQuery} config.txQuery - get transfers whose tx match this tx query\n */\n constructor(config) {\n super(config);\n \n // deserialize if necessary\n const MoneroTxQuery = require(\"./MoneroTxQuery\");\n if (this.state.txQuery && !(this.state.txQuery instanceof MoneroTxQuery)) this.state.txQuery = new MoneroTxQuery(this.state.txQuery);\n if (this.state.txQuery) this.state.txQuery.setTransferQuery(this);\n \n // alias isOutgoing to isIncoming\n if (this.state.isOutgoing !== undefined) this.state.isIncoming = !this.state.isOutgoing;\n \n // validate state\n this._validate();\n }\n \n copy() {\n return new MoneroTransferQuery(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state, super.toJson());\n delete json.txQuery;\n return json;\n }\n \n getTxQuery() {\n return this.state.txQuery;\n }\n \n setTxQuery(txQuery) {\n this.state.txQuery = txQuery;\n if (txQuery) txQuery.state.transferQuery = this;\n return this;\n }\n \n isIncoming() {\n return this.state.isIncoming;\n }\n\n setIsIncoming(isIncoming) {\n this.state.isIncoming = isIncoming;\n return this;\n }\n \n isOutgoing() {\n return this.state.isIncoming === undefined ? undefined : !this.state.isIncoming;\n }\n \n setIsOutgoing(isOutgoing) {\n this.state.isIncoming = isOutgoing === undefined ? undefined : !isOutgoing;\n return this;\n }\n \n getAddress() {\n return this.state.address;\n }\n\n setAddress(address) {\n this.state.address = address;\n return this;\n }\n \n getAddresses() {\n return this.state.addresses;\n }\n\n setAddresses(addresses) {\n this.state.addresses = addresses;\n return this;\n }\n \n getSubaddressIndex() {\n return this.state.subaddressIndex;\n }\n \n setSubaddressIndex(subaddressIndex) {\n this.state.subaddressIndex = subaddressIndex;\n this._validate();\n return this;\n }\n \n getSubaddressIndices() {\n return this.state.subaddressIndices;\n }\n \n setSubaddressIndices(subaddressIndices) {\n this.state.subaddressIndices = subaddressIndices;\n this._validate();\n return this;\n }\n \n getDestinations() {\n return this.state.destinations;\n }\n \n setDestinations(destinations) {\n this.state.destinations = destinations;\n return this;\n }\n \n hasDestinations() {\n return this.state.hasDestinations;\n }\n \n setHasDestinations(hasDestinations) {\n this.state.hasDestinations = hasDestinations;\n return this;\n }\n \n /**\n * Convenience method to query outputs by the locked state of their tx.\n * \n * @param isLocked specifies if the output's tx must be locked or unlocked (optional)\n * @return {MoneroOutputQuery} this query for chaining\n */\n setIsLocked(isLocked) {\n if (this.state.txQuery === undefined) this.state.txQuery = new MoneroTxQuery();\n this.state.txQuery.setIsLocked(isLocked);\n return this;\n }\n \n meetsCriteria(transfer, queryParent) {\n if (!(transfer instanceof MoneroTransfer)) throw new Error(\"Transfer not given to MoneroTransferQuery.meetsCriteria(transfer)\");\n if (queryParent === undefined) queryParent = true;\n \n // filter on common fields\n if (this.isIncoming() !== undefined && this.isIncoming() !== transfer.isIncoming()) return false;\n if (this.isOutgoing() !== undefined && this.isOutgoing() !== transfer.isOutgoing()) return false;\n if (this.getAmount() !== undefined && this.getAmount().compare(transfer.getAmount()) !== 0) return false;\n if (this.getAccountIndex() !== undefined && this.getAccountIndex() !== transfer.getAccountIndex()) return false;\n \n // filter on incoming fields\n if (transfer instanceof MoneroIncomingTransfer) {\n if (this.hasDestinations()) return false;\n if (this.getAddress() !== undefined && this.getAddress() !== transfer.getAddress()) return false;\n if (this.getAddresses() !== undefined && !this.getAddresses().includes(transfer.getAddress())) return false;\n if (this.getSubaddressIndex() !== undefined && this.getSubaddressIndex() !== transfer.getSubaddressIndex()) return false;\n if (this.getSubaddressIndices() !== undefined && !this.getSubaddressIndices().includes(transfer.getSubaddressIndex())) return false;\n }\n\n // filter on outgoing fields\n else if (transfer instanceof MoneroOutgoingTransfer) {\n \n // filter on addresses which must have overlap\n if (this.getAddress() !== undefined && (transfer.getAddresses() === undefined || !transfer.getAddresses().includes(this.getAddress()))) return false; // TODO: will filter all transfers that don't contain addresses (outgoing txs might not have this field initialized)\n if (this.getAddresses() !== undefined) {\n if (!transfer.getAddresses()) return false;\n if (!this.getAddresses().some(address => transfer.getAddresses().includes(address))) return false;\n }\n \n // filter on subaddress indices\n if (this.getSubaddressIndex() !== undefined && (transfer.getSubaddressIndices() === undefined || !transfer.getSubaddressIndices().includes(this.getSubaddressIndex()))) return false;\n if (this.getSubaddressIndices() !== undefined) {\n if (!transfer.getSubaddressIndices()) return false;\n if (!this.getSubaddressIndices().some(subaddressIdx => transfer.getSubaddressIndices().includes(subaddressIdx))) return false;\n }\n \n // filter on having destinations\n if (this.hasDestinations() !== undefined) {\n if (this.hasDestinations() && transfer.getDestinations() === undefined) return false;\n if (!this.hasDestinations() && transfer.getDestinations() !== undefined) return false;\n }\n \n // filter on destinations TODO: start with test for this\n// if (this.getDestionations() !== undefined && this.getDestionations() !== transfer.getDestionations()) return false;\n }\n \n // otherwise invalid type\n else throw new Error(\"Transfer must be MoneroIncomingTransfer or MoneroOutgoingTransfer\");\n \n // filter with tx filter\n if (queryParent && this.getTxQuery() !== undefined && !this.getTxQuery().meetsCriteria(transfer.getTx())) return false; \n return true;\n }\n \n _validate() {\n if (this.getSubaddressIndex() !== undefined && this.getSubaddressIndex() < 0) throw new MoneroError(\"Subaddress index must be >= 0\");\n if (this.getSubaddressIndices() !== undefined) for (let subaddressIdx of this.getSubaddressIndices()) if (subaddressIdx < 0) throw new MoneroError(\"Subaddress indices must be >= 0\");\n }\n}\n\nmodule.exports = MoneroTransferQuery;","const assert = require(\"assert\");\nconst BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroDestination = require(\"./MoneroDestination\");\nconst MoneroError = require(\"../../common/MoneroError\");\n\n/**\n * Configures a transaction to send, sweep, or create a payment URI.\n */\nclass MoneroTxConfig {\n \n /**\n *

Generic request to transfer funds from a wallet.

\n * \n *

Examples:

\n * \n * \n * let config1 = new MoneroTxConfig({
\n *    accountIndex: 0,
\n *    address: \"59aZULsUF3YN...\",
\n *    amount: new BigInteger(\"500000\"),
\n *    priority: MoneroTxPriority.NORMAL,
\n *    relay: true
\n * });

\n *
\n * \n * @param {MoneroTxConfig|object} config - configures the transaction to create (optional)\n * @param {string} config.address - single destination address\n * @param {BigInteger} config.amount - single destination amount\n * @param {int} config.accountIndex - source account index to transfer funds from\n * @param {int} config.subaddressIndex - source subaddress index to transfer funds from\n * @param {int[]} config.subaddressIndices - source subaddress indices to transfer funds from\n * @param {boolean} config.relay - relay the transaction to peers to commit to the blockchain\n * @param {MoneroTxPriority} config.priority - transaction priority (default MoneroTxPriority.NORMAL)\n * @param {MoneroDestination[]} config.destinations - addresses and amounts in a multi-destination tx\n * @param {int[]} config.subtractFeeFrom - list of destination indices to split the transaction fee\n * @param {string} config.paymentId - transaction payment ID\n * @param {BigInteger} config.unlockTime - minimum height or timestamp for the transaction to unlock (default 0)\n * @param {string} config.note - transaction note saved locally with the wallet\n * @param {string} config.recipientName - recipient name saved locally with the wallet\n * @param {boolean} config.canSplit - allow funds to be transferred using multiple transactions\n * @param {BigInteger} config.belowAmount - for sweep requests, include outputs below this amount when sweeping wallet, account, subaddress, or all unlocked funds \n * @param {boolean} config.sweepEachSubaddress - for sweep requests, sweep each subaddress individually instead of together if true\n * @param {string} config.keyImage - key image to sweep (ignored except in sweepOutput() requests)\n */\n constructor(config, relaxValidation) { // relax validation for internal use to process json from rpc or cpp\n if (arguments.length > 2) throw new MoneroError(\"MoneroTxConfig can be constructed with only two parameters but was given \" + arguments.length)\n \n // initialize internal state\n if (!config) this.state = {};\n else if (config instanceof MoneroTxConfig) this.state = config.toJson();\n else if (typeof config === \"object\") {\n this.state = Object.assign({}, config);\n if (relaxValidation) {\n if (typeof this.state.amount === \"number\") this.state.amount = BigInteger.parse(this.state.amount);\n if (typeof this.state.unlockTime === \"number\") this.state.unlockTime = BigInteger.parse(this.state.unlockTime);\n if (typeof this.state.belowAmount === \"number\") this.state.belowAmount = BigInteger.parse(this.state.belowAmount);\n }\n\n // check for unsupported fields\n for (let key of Object.keys(config)) {\n if (!GenUtils.arrayContains(MoneroTxConfig.SUPPORTED_FIELDS, key)) {\n throw new MoneroError(\"Unsupported field in MoneroTxConfig: '\" + key + \"'\");\n }\n }\n }\n else throw new MoneroError(\"Invalid argument given to MoneroTxConfig: \" + typeof config);\n\n // deserialize BigIntegers\n if (this.state.fee !== undefined && !(this.state.fee instanceof BigInteger)) this.state.fee = BigInteger.parse(this.state.fee);\n if (this.state.unlockTime !== undefined && !(this.state.unlockTime instanceof BigInteger)) this.state.unlockTime = BigInteger.parse(this.state.unlockTime);\n if (this.state.belowAmount !== undefined && !(this.state.belowAmount instanceof BigInteger)) this.state.belowAmount = BigInteger.parse(this.state.belowAmount);\n \n // deserialize destinations\n if (this.state.destinations) {\n assert(this.state.address === undefined && this.state.amount === undefined, \"Tx configuration may specify destinations or an address/amount but not both\");\n this.setDestinations(this.state.destinations.map(destination => destination instanceof MoneroDestination ? destination : new MoneroDestination(destination)));\n }\n \n // alias 'address' and 'amount' to single destination to support e.g. createTx({address: \"...\"})\n if (this.state.address || this.state.amount) {\n assert(!this.state.destinations, \"Tx configuration may specify destinations or an address/amount but not both\");\n this.setAddress(this.state.address);\n this.setAmount(this.state.amount);\n delete this.state.address;\n delete this.state.amount;\n }\n \n // alias 'subaddressIndex' to subaddress indices\n if (this.state.subaddressIndex !== undefined) {\n this.setSubaddressIndices([this.state.subaddressIndex]);\n delete this.state.subaddressIndex;\n }\n }\n \n copy() {\n return new MoneroTxConfig(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state); // copy state\n if (this.getDestinations()) {\n json.destinations = [];\n for (let destination of this.getDestinations()) json.destinations.push(destination.toJson());\n }\n if (this.getFee()) json.fee = this.getFee().toString();\n if (this.getUnlockTime()) json.unlockTime = this.getUnlockTime().toString();\n if (this.getBelowAmount()) json.belowAmount = this.getBelowAmount().toString();\n return json;\n }\n \n /**\n * Set the address of a single-destination configuration.\n * \n * @param {string} address - the address to set for the single destination\n * @return {MoneroTxConfig} this configuration for chaining\n */\n setAddress(address) {\n if (this.state.destinations !== undefined && this.state.destinations.length > 1) throw new MoneroError(\"Cannot set address because MoneroTxConfig already has multiple destinations\");\n if (this.state.destinations === undefined || this.state.destinations.length === 0) this.addDestination(new MoneroDestination(address));\n else this.state.destinations[0].setAddress(address);\n return this;\n }\n \n /**\n * Get the address of a single-destination configuration.\n * \n * @return {string} the address of the single destination\n */\n getAddress() {\n if (this.state.destinations === undefined || this.state.destinations.length !== 1) throw new MoneroError(\"Cannot get address because MoneroTxConfig does not have exactly one destination\");\n return this.state.destinations[0].getAddress();\n }\n \n /**\n * Set the amount of a single-destination configuration.\n * \n * @param {BigInteger|string} amount - the amount to set for the single destination\n * @return {MoneroTxConfig} this configuration for chaining\n */\n setAmount(amount) {\n if (amount !== undefined && !(this.state.amount instanceof BigInteger)) {\n if (typeof amount === \"number\") throw new MoneroError(\"Destination amount must be BigInteger or string\");\n try { amount = BigInteger.parse(amount); }\n catch (err) { throw new MoneroError(\"Invalid destination amount: \" + amount); }\n }\n if (this.state.destinations !== undefined && this.state.destinations.length > 1) throw new MoneroError(\"Cannot set amount because MoneroTxConfig already has multiple destinations\");\n if (this.state.destinations === undefined || this.state.destinations.length === 0) this.addDestination(new MoneroDestination(undefined, amount));\n else this.state.destinations[0].setAmount(amount);\n return this;\n }\n \n /**\n * Get the amount of a single-destination configuration.\n * \n * @return {BigInteger} the amount of the single destination\n */\n getAmount() {\n if (this.state.destinations === undefined || this.state.destinations.length !== 1) throw new MoneroError(\"Cannot get amount because MoneroTxConfig does not have exactly one destination\");\n return this.state.destinations[0].getAmount();\n }\n \n addDestination(destinationOrAddress, amount) {\n if (typeof destinationOrAddress === \"string\") return this.addDestination(new MoneroDestination(destinationOrAddress, amount));\n assert(destinationOrAddress instanceof MoneroDestination);\n if (this.state.destinations === undefined) this.state.destinations = [];\n this.state.destinations.push(destinationOrAddress);\n return this;\n }\n \n getDestinations() {\n return this.state.destinations;\n }\n \n setDestinations(destinations) {\n if (arguments.length > 1) destinations = Array.from(arguments);\n this.state.destinations = destinations;\n return this;\n }\n \n setDestination(destination) {\n return this.setDestinations(destination ? [destination] : destination);\n }\n\n getSubtractFeeFrom() {\n return this.state.subtractFeeFrom;\n }\n\n setSubtractFeeFrom(destinationIndices) {\n if (arguments.length > 1) destinationIndices = Array.from(arguments);\n this.state.subtractFeeFrom = destinationIndices;\n return this;\n }\n \n getPaymentId() {\n return this.state.paymentId;\n }\n \n setPaymentId(paymentId) {\n this.state.paymentId = paymentId;\n return this;\n }\n \n getPriority() {\n return this.state.priority;\n }\n \n setPriority(priority) {\n this.state.priority = priority;\n return this;\n }\n \n getFee() {\n return this.state.fee;\n }\n \n setFee(fee) {\n this.state.fee = fee;\n return this;\n }\n \n getAccountIndex() {\n return this.state.accountIndex;\n }\n \n setAccountIndex(accountIndex) {\n this.state.accountIndex = accountIndex;\n return this;\n }\n \n setSubaddressIndex(subaddressIndex) {\n this.setSubaddressIndices([subaddressIndex]);\n return this;\n }\n \n getSubaddressIndices() {\n return this.state.subaddressIndices;\n }\n \n setSubaddressIndices(subaddressIndices) {\n if (arguments.length > 1) subaddressIndices = Array.from(arguments);\n this.state.subaddressIndices = subaddressIndices;\n return this;\n }\n \n getUnlockTime() {\n return this.state.unlockTime;\n }\n \n setUnlockTime(unlockTime) {\n if (unlockTime !== undefined) {\n if (typeof unlockTime === \"number\") unlockTime = \"\" + unlockTime;\n if (!(unlockTime instanceof BigInteger)) {\n try { unlockTime = BigInteger.parse(unlockTime); }\n catch (err) { throw new MoneroError(\"Invalid unlock time: \" + unlockTime); }\n }\n }\n this.state.unlockTime = unlockTime;\n return this;\n }\n \n getRelay() {\n return this.state.relay;\n }\n \n setRelay(relay) {\n this.state.relay = relay;\n return this;\n }\n \n getCanSplit() {\n return this.state.canSplit;\n }\n \n setCanSplit(canSplit) {\n this.state.canSplit = canSplit;\n return this;\n }\n \n getNote() {\n return this.state.note;\n }\n \n setNote(note) {\n this.state.note = note;\n return this;\n }\n \n getRecipientName() {\n return this.state.recipientName;\n }\n \n setRecipientName(recipientName) {\n this.state.recipientName = recipientName;\n return this;\n }\n \n // --------------------------- SPECIFIC TO SWEEP ----------------------------\n \n getBelowAmount() {\n return this.state.belowAmount;\n }\n \n setBelowAmount(belowAmount) {\n this.state.belowAmount = belowAmount;\n return this;\n }\n \n getSweepEachSubaddress() {\n return this.state.sweepEachSubaddress;\n }\n \n setSweepEachSubaddress(sweepEachSubaddress) {\n this.state.sweepEachSubaddress = sweepEachSubaddress;\n return this;\n }\n \n /**\n * Get the key image hex of the output to sweep.\n * \n * return {string} is the key image hex of the output to sweep\n */\n getKeyImage() {\n return this.state.keyImage;\n }\n \n /**\n * Set the key image hex of the output to sweep.\n * \n * @param {string} keyImage is the key image hex of the output to sweep\n */\n setKeyImage(keyImage) {\n this.state.keyImage = keyImage;\n return this;\n }\n}\n\nMoneroTxConfig.SUPPORTED_FIELDS = [\"address\", \"amount\", \"accountIndex\", \"subaddressIndex\", \"subaddressIndices\", \"relay\", \"priority\", \"destinations\", \"subtractFeeFrom\", \"paymentId\", \"unlockTime\", \"note\", \"recipientName\", \"canSplit\", \"belowAmount\", \"sweepEachSubaddress\", \"keyImage\"];\n\nmodule.exports = MoneroTxConfig","/**\n * Enumerates send priorities.\n * \n * @hideconstructor\n */\nclass MoneroTxPriority {}\n\n/**\n * Default priority (i.e. normal) (value=0).\n */\nMoneroTxPriority.DEFAULT = 0;\n\n/**\n * Unimportant priority (value=1).\n */\nMoneroTxPriority.UNIMPORTANT = 1;\n\n/**\n * Normal priority (value=2).\n */\nMoneroTxPriority.NORMAL = 2;\n\n/**\n * Elevated priority (value=3).\n */\nMoneroTxPriority.ELEVATED = 3;\n\nmodule.exports = MoneroTxPriority;","const assert = require(\"assert\");\nconst MoneroOutputQuery = require(\"./MoneroOutputQuery\");\nconst MoneroTransferQuery = require(\"./MoneroTransferQuery\");\nconst MoneroTxWallet = require(\"./MoneroTxWallet\");\n\n/**\n *

Configuration to query transactions.

\n * \n * @class\n * @extends {MoneroTxWallet}\n */\nclass MoneroTxQuery extends MoneroTxWallet {\n \n /**\n *

Construct the transaction query.

\n * \n *

Example:

\n * \n * \n * // get transactions with unlocked incoming transfers to account 0
\n * let txs = await wallet.getTxs({
\n *    isLocked: false,
\n *    transferQuery: {
\n *      isIncoming: true,
\n *      accountIndex: 0
\n *    }
\n * });\n *
\n * \n *

All configuration is optional. All transactions are returned except those that don't meet criteria defined in this query.

\n * \n * @param {object} config - tx query configuration\n * @param {string} config.hash - get a tx with this hash\n * @param {string[]} config.txHashes - get txs with these hashes\n * @param {int} config.height - get txs with this height\n * @param {int} config.minHeight - get txs with height greater than or equal to this height\n * @param {int} config.maxHeight - get txs with height less than or equal to this height\n * @param {boolean} config.isConfirmed - get confirmed or unconfirmed txs\n * @param {boolean} config.inTxPool - get txs in or out of the tx pool\n * @param {boolean} config.relay - get txs with the same relay status\n * @param {boolean} config.isRelayed - get relayed or non-relayed txs\n * @param {boolean} config.isFailed - get failed or non-failed txs\n * @param {boolean} config.isMinerTx - get miner or non-miner txs\n * @param {boolean} config.isLocked - get locked or unlocked txs\n * @param {boolean} config.isIncoming - get txs with or without incoming transfers\n * @param {boolean} config.isOutgoing - get txs with or without outgoing transfers\n * @param {string} config.paymentId - get txs with this payment ID\n * @param {string} config.paymentIds - get txs with a payment ID among these payment IDs\n * @param {boolean} config.hasPaymentId - get txs with or without payment IDs\n * @param {object|MoneroTransferQuery} config.transferQuery - get txs with transfers matching this transfer query\n * @param {object|MoneroOutputQuery} config.inputQuery - get txs with inputs matching this input query\n * @param {object|MoneroOutputQuery} config.outputQuery - get txs with outputs matching this output query\n */\n constructor(config) {\n super(config);\n \n // deserialize if necessary\n if (this.state.transferQuery && !(this.state.transferQuery instanceof MoneroTransferQuery)) this.state.transferQuery = new MoneroTransferQuery(this.state.transferQuery);\n if (this.state.inputQuery && !(this.state.inputQuery instanceof MoneroOutputQuery)) this.state.inputQuery = new MoneroOutputQuery(this.state.inputQuery);\n if (this.state.outputQuery && !(this.state.outputQuery instanceof MoneroOutputQuery)) this.state.outputQuery = new MoneroOutputQuery(this.state.outputQuery);\n \n // link cycles\n if (this.state.transferQuery) this.state.transferQuery.setTxQuery(this);\n if (this.state.inputQuery) this.state.inputQuery.setTxQuery(this);\n if (this.state.outputQuery) this.state.outputQuery.setTxQuery(this);\n \n // alias 'hash' to hashes\n if (this.state.hash) {\n this.setHashes([this.state.hash]);\n delete this.state.hash;\n }\n }\n \n copy() {\n return new MoneroTxQuery(this);\n }\n \n toJson() {\n let json = Object.assign({}, this.state, super.toJson()); // merge json onto inherited state\n if (this.getTransferQuery()) json.transferQuery = this.getTransferQuery().toJson();\n if (this.getInputQuery()) json.inputQuery = this.getInputQuery().toJson();\n if (this.getOutputQuery()) json.outputQuery = this.getOutputQuery().toJson();\n delete json.block; // do not serialize parent block\n return json;\n }\n \n isIncoming() {\n return this.state.isIncoming;\n }\n \n setIsIncoming(isIncoming) {\n this.state.isIncoming = isIncoming;\n return this;\n }\n \n isOutgoing() {\n return this.state.isOutgoing;\n }\n \n setIsOutgoing(isOutgoing) {\n this.state.isOutgoing = isOutgoing;\n return this;\n }\n\n getHashes() {\n return this.state.hashes;\n }\n\n setHashes(hashes) {\n this.state.hashes = hashes;\n return this;\n }\n \n setHash(hash) {\n if (hash === undefined) return this.setHashes(undefined);\n assert(typeof hash === \"string\");\n return this.setHashes([hash]);\n }\n \n hasPaymentId() {\n return this.state.hasPaymentId;\n }\n \n setHasPaymentId() {\n this.state.hasPaymentId = hasPaymentId;\n return this;\n }\n \n getPaymentIds() {\n return this.state.paymentIds;\n }\n\n setPaymentIds(paymentIds) {\n this.state.paymentIds = paymentIds;\n return this;\n }\n \n setPaymentId(paymentId) {\n if (paymentId === undefined) return this.setPaymentIds(undefined);\n assert(typeof paymentId === \"string\");\n return this.setPaymentIds([paymentId]);\n }\n \n getHeight() {\n return this.state.height;\n }\n \n setHeight(height) {\n this.state.height = height;\n return this;\n }\n \n getMinHeight() {\n return this.state.minHeight;\n }\n\n setMinHeight(minHeight) {\n this.state.minHeight = minHeight;\n return this;\n }\n\n getMaxHeight() {\n return this.state.maxHeight;\n }\n\n setMaxHeight(maxHeight) {\n this.state.maxHeight = maxHeight;\n return this;\n }\n \n getIncludeOutputs() {\n return this.state.includeOutputs;\n }\n\n setIncludeOutputs(includeOutputs) {\n this.state.includeOutputs = includeOutputs;\n return this;\n }\n \n getTransferQuery() {\n return this.state.transferQuery;\n }\n \n setTransferQuery(transferQuery) {\n this.state.transferQuery = transferQuery;\n if (transferQuery) transferQuery.state.txQuery = this;\n return this;\n }\n \n getInputQuery() {\n return this.state.inputQuery;\n }\n \n setInputQuery(inputQuery) {\n this.state.inputQuery = inputQuery;\n if (inputQuery) inputQuery.state.txQuery = this;\n return this;\n }\n \n getOutputQuery() {\n return this.state.outputQuery;\n }\n \n setOutputQuery(outputQuery) {\n this.state.outputQuery = outputQuery;\n if (outputQuery) outputQuery.state.txQuery = this;\n return this;\n }\n \n meetsCriteria(tx, queryChildren) {\n if (!(tx instanceof MoneroTxWallet)) throw new Error(\"Tx not given to MoneroTxQuery.meetsCriteria(tx)\");\n if (queryChildren === undefined) queryChildren = true;\n \n // filter on tx\n if (this.getHash() !== undefined && this.getHash() !== tx.getHash()) return false;\n if (this.getPaymentId() !== undefined && this.getPaymentId() !== tx.getPaymentId()) return false;\n if (this.isConfirmed() !== undefined && this.isConfirmed() !== tx.isConfirmed()) return false;\n if (this.inTxPool() !== undefined && this.inTxPool() !== tx.inTxPool()) return false;\n if (this.getRelay() !== undefined && this.getRelay() !== tx.getRelay()) return false;\n if (this.isRelayed() !== undefined && this.isRelayed() !== tx.isRelayed()) return false;\n if (this.isFailed() !== undefined && this.isFailed() !== tx.isFailed()) return false;\n if (this.isMinerTx() !== undefined && this.isMinerTx() !== tx.isMinerTx()) return false;\n if (this.isLocked() !== undefined && this.isLocked() !== tx.isLocked()) return false;\n \n // filter on having a payment id\n if (this.hasPaymentId() !== undefined) {\n if (this.hasPaymentId() && tx.getPaymentId() === undefined) return false;\n if (!this.hasPaymentId() && tx.getPaymentId() !== undefined) return false;\n }\n \n // filter on incoming\n if (this.isIncoming() !== undefined) {\n if (this.isIncoming() && !tx.isIncoming()) return false;\n if (!this.isIncoming() && tx.isIncoming()) return false;\n }\n \n // filter on outgoing\n if (this.isOutgoing() !== undefined) {\n if (this.isOutgoing() && !tx.isOutgoing()) return false;\n if (!this.isOutgoing() && tx.isOutgoing()) return false;\n }\n \n // filter on remaining fields\n let txHeight = tx.getBlock() === undefined ? undefined : tx.getBlock().getHeight();\n if (this.getHashes() !== undefined && !this.getHashes().includes(tx.getHash())) return false;\n if (this.getPaymentIds() !== undefined && !this.getPaymentIds().includes(tx.getPaymentId())) return false;\n if (this.getHeight() !== undefined && (txHeight === undefined || txHeight !== this.getHeight())) return false;\n if (this.getMinHeight() !== undefined && txHeight !== undefined && txHeight < this.getMinHeight()) return false; // do not filter unconfirmed\n if (this.getMaxHeight() !== undefined && (txHeight === undefined || txHeight > this.getMaxHeight())) return false;\n // TODO: filtering not complete\n \n // done if not querying transfers or outputs\n if (!queryChildren) return true;\n \n // at least one transfer must meet transfer filter if defined\n if (this.getTransferQuery()) {\n let matchFound = false;\n if (tx.getOutgoingTransfer() && this.getTransferQuery().meetsCriteria(tx.getOutgoingTransfer(), false)) matchFound = true;\n else if (tx.getIncomingTransfers()) {\n for (let incomingTransfer of tx.getIncomingTransfers()) {\n if (this.getTransferQuery().meetsCriteria(incomingTransfer, false)) {\n matchFound = true;\n break;\n }\n }\n }\n if (!matchFound) return false;\n }\n \n // at least one input must meet input query if defined\n if (this.getInputQuery() !== undefined) {\n if (tx.getInputs() === undefined || tx.getInputs().length === 0) return false;\n let matchFound = false;\n for (let input of tx.getInputs()) {\n if (this.getInputQuery().meetsCriteria(input, false)) {\n matchFound = true;\n break;\n }\n }\n if (!matchFound) return false;\n }\n \n // at least one output must meet output query if defined\n if (this.getOutputQuery() !== undefined) {\n if (tx.getOutputs() === undefined || tx.getOutputs().length === 0) return false;\n let matchFound = false;\n for (let output of tx.getOutputs()) {\n if (this.getOutputQuery().meetsCriteria(output, false)) {\n matchFound = true;\n break;\n }\n }\n if (!matchFound) return false;\n }\n \n return true; // transaction meets filter criteria\n }\n}\n\nmodule.exports = MoneroTxQuery;","const assert = require(\"assert\");\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroTxWallet = require(\"./MoneroTxWallet\");\nconst MoneroUtils = require(\"../../common/MoneroUtils\");\n\n/**\n * Groups transactions who share common hex data which is needed in order to\n * sign and submit the transactions.\n * \n * For example, multisig transactions created from createTxs() share a common\n * hex string which is needed in order to sign and submit the multisig\n * transactions.\n */\nclass MoneroTxSet {\n \n constructor(state) {\n \n // initialize internal state\n if (!state) state = {};\n else if (typeof state === \"object\") state = Object.assign({}, state);\n else throw new MoneroError(\"state must be JavaScript object\");\n this.state = state;\n \n // deserialize txs\n if (state.txs) {\n for (let i = 0; i < state.txs.length; i++) {\n if (!(state.txs[i] instanceof MoneroTxWallet)) state.txs[i] = new MoneroTxWallet(state.txs[i]);\n state.txs[i].setTxSet(this);\n }\n }\n }\n \n toJson() {\n let json = Object.assign({}, this.state); // copy state\n if (this.getTxs()) {\n json.txs = [];\n for (let tx of this.getTxs()) json.txs.push(tx.toJson());\n }\n return json;\n }\n\n getTxs() {\n return this.state.txs;\n }\n\n setTxs(txs) {\n this.state.txs = txs;\n return this;\n }\n \n getMultisigTxHex() {\n return this.state.multisigTxHex;\n }\n \n setMultisigTxHex(multisigTxHex) {\n this.state.multisigTxHex = multisigTxHex;\n return this;\n }\n \n getUnsignedTxHex() {\n return this.state.unsignedTxHex;\n }\n \n setUnsignedTxHex(unsignedTxHex) {\n this.state.unsignedTxHex = unsignedTxHex;\n return this;\n }\n \n getSignedTxHex() {\n return this.state.signedTxHex;\n }\n \n setSignedTxHex(signedTxHex) {\n this.state.signedTxHex = signedTxHex;\n return this;\n }\n \n merge(txSet) {\n assert(txSet instanceof MoneroTxSet);\n if (this === txSet) return this;\n \n // merge sets\n this.setMultisigTxHex(GenUtils.reconcile(this.getMultisigTxHex(), txSet.getMultisigTxHex()));\n this.setUnsignedTxHex(GenUtils.reconcile(this.getUnsignedTxHex(), txSet.getUnsignedTxHex()));\n this.setSignedTxHex(GenUtils.reconcile(this.getSignedTxHex(), txSet.getSignedTxHex()));\n \n // merge txs\n if (txSet.getTxs() !== undefined) {\n for (let tx of txSet.getTxs()) {\n tx.setTxSet(this);\n MoneroUtils.mergeTx(this.getTxs(), tx);\n }\n }\n\n return this;\n }\n \n toString(indent = 0) {\n let str = \"\";\n str += GenUtils.kvLine(\"Multisig tx hex: \", this.getMultisigTxHex(), indent);\n str += GenUtils.kvLine(\"Unsigned tx hex: \", this.getUnsignedTxHex(), indent);\n str += GenUtils.kvLine(\"Signed tx hex: \", this.getSignedTxHex(), indent);\n if (this.getTxs() !== undefined) {\n str += GenUtils.kvLine(\"Txs\", \"\", indent);\n for (let tx of this.getTxs()) {\n str += tx.toString(indent + 1) + \"\\n\";\n }\n }\n return str;\n }\n}\n\nmodule.exports = MoneroTxSet;","const assert = require(\"assert\");\nconst BigInteger = require(\"../../common/biginteger\").BigInteger;\nconst GenUtils = require(\"../../common/GenUtils\");\nconst MoneroIncomingTransfer = require(\"./MoneroIncomingTransfer\");\nconst MoneroOutgoingTransfer = require(\"./MoneroOutgoingTransfer\");\nconst MoneroOutputWallet = require(\"./MoneroOutputWallet\");\nconst MoneroTx = require(\"../../daemon/model/MoneroTx\");\n\n/**\n * Models a Monero transaction with wallet extensions.\n * \n * @class\n * @extends {MoneroTx}\n */\nclass MoneroTxWallet extends MoneroTx {\n \n /**\n * Construct the model.\n * \n * @param {MoneroTxWallet|object} state is existing state to initialize from (optional)\n */\n constructor(state) {\n super(state);\n if (state instanceof MoneroTxWallet && state.getTxSet()) this.setTxSet(state.getTxSet()); // preserve reference to tx set\n state = this.state;\n \n // deserialize incoming transfers\n if (state.incomingTransfers) {\n for (let i = 0; i < state.incomingTransfers.length; i++) {\n if (!(state.incomingTransfers[i] instanceof MoneroIncomingTransfer)) {\n state.incomingTransfers[i] = new MoneroIncomingTransfer(Object.assign(state.incomingTransfers[i], {tx: this}));\n }\n }\n }\n \n // deserialize outgoing transfer\n if (state.outgoingTransfer && !(state.outgoingTransfer instanceof MoneroOutgoingTransfer)) {\n this.setOutgoingTransfer(new MoneroOutgoingTransfer(Object.assign(state.outgoingTransfer, {tx: this})));\n }\n \n // deserialize inputs\n if (state.inputs) {\n for (let i = 0; i < state.inputs.length; i++) {\n if (!(state.inputs[i] instanceof MoneroOutputWallet)) {\n state.inputs[i] = new MoneroOutputWallet(Object.assign(state.inputs[i].toJson(), {tx: this}));\n }\n }\n }\n \n // deserialize outputs\n if (state.outputs) {\n for (let i = 0; i < state.outputs.length; i++) {\n if (!(state.outputs[i] instanceof MoneroOutputWallet)) {\n state.outputs[i] = new MoneroOutputWallet(Object.assign(state.outputs[i].toJson(), {tx: this}));\n }\n }\n }\n \n // deserialize BigIntegers\n if (state.inputSum !== undefined && !(state.inputSum instanceof BigInteger)) state.inputSum = BigInteger.parse(state.inputSum);\n if (state.outputSum !== undefined && !(state.outputSum instanceof BigInteger)) state.outputSum = BigInteger.parse(state.outputSum);\n if (state.changeAmount !== undefined && !(state.changeAmount instanceof BigInteger)) state.changeAmount = BigInteger.parse(state.changeAmount);\n }\n \n toJson() {\n let json = Object.assign({}, this.state, super.toJson()); // merge json onto inherited state\n if (this.getIncomingTransfers()) {\n json.incomingTransfers = [];\n for (let incomingTransfer of this.getIncomingTransfers()) json.incomingTransfers.push(incomingTransfer.toJson());\n }\n if (this.getOutgoingTransfer()) json.outgoingTransfer = this.getOutgoingTransfer().toJson();\n if (this.getInputSum()) json.inputSum = this.getInputSum().toString();\n if (this.getOutputSum()) json.outputSum = this.getOutputSum().toString();\n if (this.getChangeAmount()) json.changeAmount = this.getChangeAmount().toString();\n delete json.block; // do not serialize parent block\n delete json.txSet; // do not serialize parent tx set\n return json;\n }\n \n getTxSet() {\n return this.state.txSet;\n }\n \n setTxSet(txSet) {\n this.state.txSet = txSet;\n return this;\n }\n \n isIncoming() {\n return this.state.isIncoming;\n }\n \n setIsIncoming(isIncoming) {\n this.state.isIncoming = isIncoming;\n return this;\n }\n \n isOutgoing() {\n return this.state.isOutgoing;\n }\n \n setIsOutgoing(isOutgoing) {\n this.state.isOutgoing = isOutgoing;\n return this;\n }\n \n getIncomingAmount() {\n if (this.getIncomingTransfers() === undefined) return undefined;\n let incomingAmt = BigInteger.parse(\"0\");\n for (let transfer of this.getIncomingTransfers()) incomingAmt = incomingAmt.add(transfer.getAmount());\n return incomingAmt;\n }\n \n getOutgoingAmount() {\n return this.getOutgoingTransfer() ? this.getOutgoingTransfer().getAmount() : undefined;\n }\n \n getTransfers(transferQuery) {\n let transfers = [];\n if (this.getOutgoingTransfer() && (!transferQuery || transferQuery.meetsCriteria(this.getOutgoingTransfer()))) transfers.push(this.getOutgoingTransfer());\n if (this.getIncomingTransfers()) {\n for (let transfer of this.getIncomingTransfers()) {\n if (!transferQuery || transferQuery.meetsCriteria(transfer)) transfers.push(transfer);\n }\n }\n return transfers;\n }\n \n filterTransfers(transferQuery) {\n let transfers = [];\n \n // collect outgoing transfer or erase if filtered\n if (this.getOutgoingTransfer() && (!transferQuery || transferQuery.meetsCriteria(this.getOutgoingTransfer()))) transfers.push(this.getOutgoingTransfer());\n else this.setOutgoingTransfer(undefined);\n \n // collect incoming transfers or erase if filtered\n if (this.getIncomingTransfers()) {\n let toRemoves = [];\n for (let transfer of this.getIncomingTransfers()) {\n if (transferQuery.meetsCriteria(transfer)) transfers.push(transfer);\n else toRemoves.push(transfer);\n }\n this.setIncomingTransfers(this.getIncomingTransfers().filter(function(transfer) {\n return !toRemoves.includes(transfer);\n }));\n if (this.getIncomingTransfers().length === 0) this.setIncomingTransfers(undefined);\n }\n \n return transfers;\n }\n \n getIncomingTransfers() {\n return this.state.incomingTransfers;\n }\n \n setIncomingTransfers(incomingTransfers) {\n this.state.incomingTransfers = incomingTransfers;\n return this;\n }\n \n getOutgoingTransfer() {\n return this.state.outgoingTransfer;\n }\n \n setOutgoingTransfer(outgoingTransfer) {\n this.state.outgoingTransfer = outgoingTransfer;\n return this;\n }\n \n getInputs(outputQuery) {\n if (!outputQuery || !super.getInputs()) return super.getInputs();\n let inputs = [];\n for (let output of super.getInputs()) if (!outputQuery || outputQuery.meetsCriteria(output)) inputs.push(output);\n return inputs;\n }\n \n setInputs(inputs) {\n \n // validate that all inputs are wallet inputs\n if (inputs) {\n for (let output of inputs) {\n if (!(output instanceof MoneroOutputWallet)) throw new MoneroError(\"Wallet transaction inputs must be of type MoneroOutputWallet\");\n }\n }\n super.setInputs(inputs);\n return this;\n }\n \n getOutputs(outputQuery) {\n if (!outputQuery || !super.getOutputs()) return super.getOutputs();\n let outputs = [];\n for (let output of super.getOutputs()) if (!outputQuery || outputQuery.meetsCriteria(output)) outputs.push(output);\n return outputs;\n }\n \n setOutputs(outputs) {\n \n // validate that all outputs are wallet outputs\n if (outputs) {\n for (let output of outputs) {\n if (!(output instanceof MoneroOutputWallet)) throw new MoneroError(\"Wallet transaction outputs must be of type MoneroOutputWallet\");\n }\n }\n super.setOutputs(outputs);\n return this;\n }\n \n filterOutputs(outputQuery) {\n let outputs = [];\n if (super.getOutputs()) {\n let toRemoves = [];\n for (let output of super.getOutputs()) {\n if (!outputQuery || outputQuery.meetsCriteria(output)) outputs.push(output);\n else toRemoves.push(output);\n }\n this.setOutputs(super.getOutputs().filter(function(output) {\n return !toRemoves.includes(output);\n }));\n if (this.getOutputs().length === 0) this.setOutputs(undefined);\n }\n return outputs;\n }\n \n getNote() {\n return this.state.note;\n }\n \n setNote(note) {\n this.state.note = note;\n return this;\n }\n \n isLocked() {\n return this.state.isLocked;\n }\n \n setIsLocked(isLocked) {\n this.state.isLocked = isLocked;\n return this;\n }\n \n getInputSum() {\n return this.state.inputSum;\n }\n \n setInputSum(inputSum) {\n this.state.inputSum = inputSum;\n return this;\n }\n \n getOutputSum() {\n return this.state.outputSum;\n }\n \n setOutputSum(outputSum) {\n this.state.outputSum = outputSum;\n return this;\n }\n \n getChangeAddress() {\n return this.state.changeAddress;\n }\n \n setChangeAddress(changeAddress) {\n this.state.changeAddress = changeAddress;\n return this;\n }\n \n getChangeAmount() {\n return this.state.changeAmount;\n }\n \n setChangeAmount(changeAmount) {\n this.state.changeAmount = changeAmount;\n return this;\n }\n \n getNumDummyOutputs() {\n return this.state.numDummyOutputs;\n }\n \n setNumDummyOutputs(numDummyOutputs) {\n this.state.numDummyOutputs = numDummyOutputs;\n return this;\n }\n \n getExtraHex() {\n return this.state.extraHex;\n }\n \n setExtraHex(extraHex) {\n this.state.extraHex = extraHex;\n return this;\n }\n \n copy() {\n return new MoneroTxWallet(this);\n }\n \n /**\n * Updates this transaction by merging the latest information from the given\n * transaction.\n * \n * Merging can modify or build references to the transaction given so it\n * should not be re-used or it should be copied before calling this method.\n * \n * @param tx is the transaction to merge into this transaction\n */\n merge(tx) {\n assert(tx instanceof MoneroTxWallet);\n if (this === tx) return this;\n \n // merge base classes\n super.merge(tx);\n \n // merge tx set if they're different which comes back to merging txs\n const MoneroTxSet = require(\"./MoneroTxSet\");\n if (this.getTxSet() !== tx.getTxSet()) {\n if (this.getTxSet() == undefined) {\n this.setTxSet(new MoneroTxSet().setTxs([this]));\n }\n if (tx.getTxSet() === undefined) {\n tx.setTxSet(new MoneroTxSet().setTxs([tx]));\n }\n this.getTxSet().merge(tx.getTxSet());\n return this;\n }\n \n // merge incoming transfers\n if (tx.getIncomingTransfers()) {\n if (this.getIncomingTransfers() === undefined) this.setIncomingTransfers([]);\n for (let transfer of tx.getIncomingTransfers()) {\n transfer.setTx(this);\n MoneroTxWallet._mergeIncomingTransfer(this.getIncomingTransfers(), transfer);\n }\n }\n \n // merge outgoing transfer\n if (tx.getOutgoingTransfer()) {\n tx.getOutgoingTransfer().setTx(this);\n if (this.getOutgoingTransfer() === undefined) this.setOutgoingTransfer(tx.getOutgoingTransfer());\n else this.getOutgoingTransfer().merge(tx.getOutgoingTransfer());\n }\n \n // merge simple extensions\n this.setIsIncoming(GenUtils.reconcile(this.isIncoming(), tx.isIncoming(), {resolveTrue: true})); // outputs seen on confirmation\n this.setIsOutgoing(GenUtils.reconcile(this.isOutgoing(), tx.isOutgoing()));\n this.setNote(GenUtils.reconcile(this.getNote(), tx.getNote()));\n this.setIsLocked(GenUtils.reconcile(this.isLocked(), tx.isLocked(), {resolveTrue: false})); // tx can become unlocked\n this.setInputSum(GenUtils.reconcile(this.getInputSum(), tx.getInputSum()));\n this.setOutputSum(GenUtils.reconcile(this.getOutputSum(), tx.getOutputSum()));\n this.setChangeAddress(GenUtils.reconcile(this.getChangeAddress(), tx.getChangeAddress()));\n this.setChangeAmount(GenUtils.reconcile(this.getChangeAmount(), tx.getChangeAmount()));\n this.setNumDummyOutputs(GenUtils.reconcile(this.getNumDummyOutputs(), tx.getNumDummyOutputs()));\n this.setExtraHex(GenUtils.reconcile(this.getExtraHex(), tx.getExtraHex()));\n \n return this; // for chaining\n }\n \n toString(indent = 0, oneLine) {\n let str = \"\";\n \n // represent tx with one line string\n // TODO: proper csv export\n if (oneLine) {\n str += this.getHash() + \", \";\n str += (this.isConfirmed() ? this.getBlock().getTimestamp() : this.getReceivedTimestamp()) + \", \";\n str += this.isConfirmed() + \", \";\n str += (this.getOutgoingAmount() ? this.getOutgoingAmount().toString() : \"\") + \", \";\n str += this.getIncomingAmount() ? this.getIncomingAmount().toString() : \"\";\n return str;\n }\n \n // otherwise stringify all fields\n str += super.toString(indent) + \"\\n\";\n str += GenUtils.kvLine(\"Is incoming\", this.isIncoming(), indent);\n str += GenUtils.kvLine(\"Incoming amount\", this.getIncomingAmount(), indent);\n if (this.getIncomingTransfers()) {\n str += GenUtils.kvLine(\"Incoming transfers\", \"\", indent);\n for (let i = 0; i < this.getIncomingTransfers().length; i++) {\n str += GenUtils.kvLine(i + 1, \"\", indent + 1);\n str += this.getIncomingTransfers()[i].toString(indent + 2) + \"\\n\";\n }\n }\n str += GenUtils.kvLine(\"Is outgoing\", this.isOutgoing(), indent);\n str += GenUtils.kvLine(\"Outgoing amount\", this.getOutgoingAmount(), indent);\n if (this.getOutgoingTransfer()) {\n str += GenUtils.kvLine(\"Outgoing transfer\", \"\", indent);\n str += this.getOutgoingTransfer().toString(indent + 1) + \"\\n\";\n }\n str += GenUtils.kvLine(\"Note\", this.getNote(), indent);\n str += GenUtils.kvLine(\"Is locked\", this.isLocked(), indent);\n str += GenUtils.kvLine(\"Input sum\", this.getInputSum(), indent);\n str += GenUtils.kvLine(\"Output sum\", this.getOutputSum(), indent);\n str += GenUtils.kvLine(\"Change address\", this.getChangeAddress(), indent);\n str += GenUtils.kvLine(\"Change amount\", this.getChangeAmount(), indent);\n str += GenUtils.kvLine(\"Num dummy outputs\", this.getNumDummyOutputs(), indent);\n str += GenUtils.kvLine(\"Extra hex\", this.getExtraHex(), indent);\n return str.slice(0, str.length - 1); // strip last newline\n }\n \n // private helper to merge transfers\n static _mergeIncomingTransfer(transfers, transfer) {\n for (let aTransfer of transfers) {\n if (aTransfer.getAccountIndex() === transfer.getAccountIndex() && aTransfer.getSubaddressIndex() === transfer.getSubaddressIndex()) {\n aTransfer.merge(transfer);\n return;\n }\n }\n transfers.push(transfer);\n }\n}\n\nmodule.exports = MoneroTxWallet;","const GenUtils = require(\"../../common/GenUtils\");\nconst MoneroError = require(\"../../common/MoneroError\");\nconst MoneroNetworkType = require(\"../../daemon/model/MoneroNetworkType\");\nconst MoneroRpcConnection = require(\"../../common/MoneroRpcConnection\");\n\n/**\n * Configuration to create a Monero wallet.\n */\nclass MoneroWalletConfig {\n \n /**\n * Construct a configuration to open or create a wallet.\n * \n * @param {object|MoneroWalletConfig} config - MoneroWalletConfig or equivalent config object\n * @param {string} config.path - path of the wallet to open or create\n * @param {string} config.password - password of the wallet to open\n * @param {string|number} config.networkType - network type of the wallet to open (one of \"mainnet\", \"testnet\", \"stagenet\" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)\n * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)\n * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase\n * @param {boolean} config.isMultisig - restore multisig wallet from seed\n * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)\n * @param {string} config.privateViewKey - private view key of the wallet to create (optional)\n * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)\n * @param {number} config.restoreHeight - block height to start scanning from (defaults to 0 unless generating random wallet)\n * @param {string} config.language - language of the wallet's seed phrase (defaults to \"English\" or auto-detected)\n * @param {number} config.accountLookahead - number of accounts to scan (optional)\n * @param {number} config.subaddressLookahead - number of subaddresses to scan per account (optional)\n * @param {MoneroRpcConnection|object} config.server - MoneroRpcConnection or equivalent JS object configuring the server connection (optional)\n * @param {string} config.serverUri - uri of the wallet's server (optional)\n * @param {string} config.serverUsername - username of the wallet's server (optional)\n * @param {string} config.serverPassword - password of the wallet's server (optional)\n * @param {boolean} config.rejectUnauthorized - reject self-signed server certificates if true (default true)\n * @param {Uint8Array} config.keysData - wallet keys data to open (optional)\n * @param {Uint8Array} config.cacheData - wallet cache data to open (optional)\n * @param {boolean} config.proxyToWorker - proxies wallet operations to a worker in order to not block the main thread (default true)\n * @param {fs} config.fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)\n * @param {boolean} config.saveCurrent - specifies if the current RPC wallet should be saved before being closed\n * @param {number} config.accountLookahead - number of accounts to scan (optional)\n * @param {number} config.subaddressLookahead - number of subaddresses to scan per account (optional)\n */\n constructor(config) {\n \n // initialize internal config\n if (!config) config = {};\n else if (config instanceof MoneroWalletConfig) config = config.toJson();\n else if (typeof config === \"object\") config = Object.assign({}, config);\n else throw new MoneroError(\"config must be a MoneroWalletConfig or JavaScript object\");\n this.config = config;\n \n // normalize config\n this.setNetworkType(config.networkType);\n if (config.server) this.setServer(config.server);\n else if (config.serverUri) this.setServer({uri: config.serverUri, username: config.serverUsername, password: config.serverPassword, rejectUnauthorized: config.rejectUnauthorized});\n this.setProxyToWorker(config.proxyToWorker);\n this.config.serverUri = undefined;\n this.config.serverUsername = undefined;\n this.config.serverPassword = undefined;\n this.config.rejectUnauthorized = undefined;\n \n // check for unsupported fields\n for (let key of Object.keys(this.config)) {\n if (!GenUtils.arrayContains(MoneroWalletConfig.SUPPORTED_FIELDS, key)) {\n throw new MoneroError(\"Unsupported field in MoneroWalletConfig: '\" + key + \"'\");\n }\n }\n }\n\n copy() {\n return new MoneroWalletConfig(this.toJson());\n }\n \n toJson() {\n let json = Object.assign({}, this.config);\n if (json.server) json.server = json.server.toJson();\n json.fs = undefined; // remove filesystem\n return json;\n }\n \n getPath() {\n return this.config.path;\n }\n \n setPath(path) {\n this.config.path = path;\n return this;\n }\n \n getPassword() {\n return this.config.password;\n }\n \n setPassword(password) {\n this.config.password = password;\n return this;\n }\n \n getNetworkType() {\n return this.config.networkType;\n }\n \n setNetworkType(networkTypeOrStr) {\n this.config.networkType = typeof networkTypeOrStr === \"string\" ? MoneroNetworkType.parse(networkTypeOrStr) : networkTypeOrStr;\n return this;\n }\n \n getServer() {\n return this.config.server;\n }\n \n setServer(server) {\n if (server && !(server instanceof MoneroRpcConnection)) server = new MoneroRpcConnection(server);\n this.config.server = server;\n this.config.serverUsername = server === undefined ? undefined : server.getUsername();\n this.config.serverPassword = server === undefined ? undefined : server.getPassword();\n return this;\n }\n \n getServerUri() {\n return this.config.server ? this.config.server.getUri() : undefined;\n }\n \n setServerUri(serverUri) {\n if (!this.config.server) this.setServer(new MoneroRpcConnection(serverUri));\n else this.config.server.setUri(serverUri);\n return this;\n }\n \n getServerUsername() {\n return this.server ? server.getUsername() : undefined;\n }\n \n setServerUsername(serverUsername) {\n this.config.serverUsername = serverUsername;\n if (this.config.serverUsername && this.config.serverPassword) this.config.server.setCredentials(this.config.serverUsername, this.config.serverPassword);\n return this;\n }\n \n getServerPassword() {\n return this.server ? server.getPassword() : undefined;\n }\n \n setServerPassword(serverPassword) {\n this.config.serverPassword = serverPassword;\n if (this.config.serverUsername && this.config.serverPassword) this.config.server.setCredentials(this.config.serverUsername, this.config.serverPassword);\n return this;\n }\n \n getRejectUnauthorized() {\n return this.config.rejectUnauthorized;\n }\n \n setRejectUnauthorized(rejectUnauthorized) {\n this.config.rejectUnauthorized = rejectUnauthorized;\n return this;\n }\n \n getSeed() {\n return this.config.seed;\n }\n \n setSeed(seed) {\n this.config.seed = seed;\n return this;\n }\n \n getSeedOffset() {\n return this.config.seedOffset;\n }\n \n setSeedOffset(seedOffset) {\n this.config.seedOffset = seedOffset;\n return this;\n }\n\n isMultisig() {\n return this.config.isMultisig;\n }\n \n setIsMultisig(isMultisig) {\n this.config.isMultisig = isMultisig;\n return this;\n }\n \n getPrimaryAddress() {\n return this.config.primaryAddress;\n }\n \n setPrimaryAddress(primaryAddress) {\n this.config.primaryAddress = primaryAddress;\n return this;\n }\n \n getPrivateViewKey() {\n return this.config.privateViewKey;\n }\n \n setPrivateViewKey(privateViewKey) {\n this.config.privateViewKey = privateViewKey;\n return this;\n }\n \n getPrivateSpendKey() {\n return this.config.privateSpendKey;\n }\n \n setPrivateSpendKey(privateSpendKey) {\n this.config.privateSpendKey = privateSpendKey;\n return this;\n }\n \n getRestoreHeight() {\n return this.config.restoreHeight;\n }\n \n setRestoreHeight(restoreHeight) {\n this.config.restoreHeight = restoreHeight;\n return this;\n }\n \n getLanguage() {\n return this.config.language;\n }\n \n setLanguage(language) {\n this.config.language = language;\n return this;\n }\n \n getSaveCurrent() {\n return this.config.saveCurrent;\n }\n \n setSaveCurrent(saveCurrent) {\n this.config.saveCurrent = saveCurrent;\n return this;\n }\n \n getProxyToWorker() {\n return this.config.proxyToWorker;\n }\n \n setProxyToWorker(proxyToWorker) {\n this.config.proxyToWorker = proxyToWorker;\n if (this.config.server) this.config.server.setProxyToWorker(proxyToWorker);\n return this;\n }\n \n getFs() {\n return this.config.fs;\n }\n \n setFs(fs) {\n this.config.fs = fs;\n return this;\n }\n \n getKeysData() {\n return this.config.keysData;\n }\n \n setKeysData(keysData) {\n this.config.keysData = keysData;\n return this;\n }\n \n getCacheData() {\n return this.config.cacheData;\n }\n \n setCacheData(cacheData) {\n this.config.cacheData = cacheData;\n return this;\n }\n \n getAccountLookahead() {\n return this.config.accountLookahead;\n }\n \n setAccountLookahead(accountLookahead) {\n this.config.accountLookahead = accountLookahead;\n return this;\n }\n \n getSubaddressLookahead() {\n return this.config.subaddressLookahead;\n }\n \n setSubaddressLookahead(subaddressLookahead) {\n this.config.subaddressLookahead = subaddressLookahead;\n return this;\n }\n}\n\nMoneroWalletConfig.SUPPORTED_FIELDS = [\"path\", \"password\", \"networkType\", \"server\", \"serverUri\", \"serverUsername\", \"serverPassword\", \"rejectUnauthorized\", \"seed\", \"seedOffset\", \"isMultisig\", \"primaryAddress\", \"privateViewKey\", \"privateSpendKey\", \"restoreHeight\", \"language\", \"saveCurrent\", \"proxyToWorker\", \"fs\", \"keysData\", \"cacheData\", \"accountLookahead\", \"subaddressLookahead\"];\n\nmodule.exports = MoneroWalletConfig;","/**\n * Default wallet listener which takes no action on notifications.\n */\nclass MoneroWalletListener {\n \n /**\n * Invoked as the wallet is synchronized.\n * \n * @param {number} height - height of the synced block \n * @param {number} startHeight - starting height of the sync request\n * @param {number} endHeight - ending height of the sync request\n * @param {number} percentDone - sync progress as a percentage\n * @param {string} message - human-readable description of the current progress\n */\n async onSyncProgress(height, startHeight, endHeight, percentDone, message) { }\n\n /**\n * Invoked when a new block is added to the chain.\n * \n * @param {int} height - the height of the new block (i.e. the number of blocks before it).\n */\n async onNewBlock(height) { }\n \n /**\n * Invoked when the wallet's balances change.\n * \n * @param {BigInteger} newBalance - new wallet balance\n * @param {BigInteger} newUnlockedBalance - new unlocked wallet balance\n */\n async onBalancesChanged(newBalance, newUnlockedBalance) { }\n\n /**\n * Invoked 3 times per received output: once when unconfirmed, once when confirmed, and\n * once when unlocked.\n * \n * The notified output includes basic fields only, so the output or its transaction should be fetched to get all available fields.\n * \n * @param {MoneroOutputWallet} output - the received output\n */\n async onOutputReceived(output) { }\n \n /**\n * Invoked twice per spent output: once when confirmed and once when unlocked.\n * \n * The notified output includes basic fields only, so the output or its transaction should be fetched to get all available fields.\n * \n * @param {MoneroOutputWallet} output - the spent output\n */\n async onOutputSpent(output) { }\n}\n\nmodule.exports = MoneroWalletListener;","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","'use strict';\n\nvar crypto_hash_sha512 = require('tweetnacl').lowlevel.crypto_hash;\n\n/*\n * This file is a 1:1 port from the OpenBSD blowfish.c and bcrypt_pbkdf.c. As a\n * result, it retains the original copyright and license. The two files are\n * under slightly different (but compatible) licenses, and are here combined in\n * one file.\n *\n * Credit for the actual porting work goes to:\n * Devi Mandiri \n */\n\n/*\n * The Blowfish portions are under the following license:\n *\n * Blowfish block cipher for OpenBSD\n * Copyright 1997 Niels Provos \n * All rights reserved.\n *\n * Implementation advice by David Mazieres .\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. The name of the author may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\n * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/*\n * The bcrypt_pbkdf portions are under the following license:\n *\n * Copyright (c) 2013 Ted Unangst \n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\n/*\n * Performance improvements (Javascript-specific):\n *\n * Copyright 2016, Joyent Inc\n * Author: Alex Wilson \n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\n// Ported from OpenBSD bcrypt_pbkdf.c v1.9\n\nvar BLF_J = 0;\n\nvar Blowfish = function() {\n this.S = [\n new Uint32Array([\n 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,\n 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99,\n 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,\n 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e,\n 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,\n 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,\n 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef,\n 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e,\n 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,\n 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,\n 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce,\n 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,\n 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e,\n 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677,\n 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,\n 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032,\n 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88,\n 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,\n 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e,\n 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,\n 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,\n 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98,\n 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88,\n 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,\n 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,\n 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d,\n 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,\n 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7,\n 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba,\n 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,\n 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f,\n 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09,\n 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,\n 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb,\n 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,\n 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,\n 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab,\n 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82,\n 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,\n 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,\n 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0,\n 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,\n 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790,\n 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8,\n 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,\n 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0,\n 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7,\n 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,\n 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad,\n 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,\n 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,\n 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9,\n 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477,\n 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,\n 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,\n 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af,\n 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,\n 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5,\n 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41,\n 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,\n 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400,\n 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915,\n 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,\n 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a]),\n new Uint32Array([\n 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,\n 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,\n 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,\n 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e,\n 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,\n 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,\n 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e,\n 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,\n 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,\n 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8,\n 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,\n 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,\n 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701,\n 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,\n 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,\n 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,\n 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,\n 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,\n 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e,\n 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,\n 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,\n 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2,\n 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,\n 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,\n 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b,\n 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,\n 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,\n 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3,\n 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,\n 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,\n 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,\n 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,\n 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,\n 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28,\n 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,\n 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,\n 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510,\n 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,\n 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,\n 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e,\n 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,\n 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,\n 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8,\n 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,\n 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,\n 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,\n 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,\n 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,\n 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0,\n 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,\n 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,\n 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250,\n 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,\n 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,\n 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00,\n 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,\n 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,\n 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e,\n 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,\n 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,\n 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,\n 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,\n 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,\n 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7]),\n new Uint32Array([\n 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,\n 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,\n 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,\n 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,\n 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45,\n 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,\n 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,\n 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb,\n 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,\n 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,\n 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42,\n 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,\n 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,\n 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb,\n 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,\n 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,\n 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,\n 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,\n 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,\n 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc,\n 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,\n 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,\n 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b,\n 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,\n 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,\n 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728,\n 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,\n 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,\n 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37,\n 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,\n 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,\n 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,\n 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,\n 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,\n 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d,\n 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,\n 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,\n 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9,\n 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,\n 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,\n 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d,\n 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,\n 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,\n 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61,\n 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,\n 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,\n 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,\n 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,\n 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,\n 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633,\n 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,\n 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,\n 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52,\n 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,\n 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,\n 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62,\n 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,\n 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,\n 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24,\n 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,\n 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,\n 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,\n 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,\n 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0]),\n new Uint32Array([\n 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b,\n 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe,\n 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,\n 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4,\n 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8,\n 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,\n 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304,\n 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,\n 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,\n 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6,\n 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9,\n 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,\n 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,\n 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51,\n 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,\n 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c,\n 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b,\n 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,\n 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c,\n 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd,\n 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,\n 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319,\n 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,\n 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,\n 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991,\n 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32,\n 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,\n 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,\n 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae,\n 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,\n 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5,\n 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47,\n 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,\n 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d,\n 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84,\n 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,\n 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8,\n 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,\n 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,\n 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7,\n 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38,\n 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,\n 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,\n 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525,\n 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,\n 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442,\n 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964,\n 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,\n 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8,\n 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d,\n 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,\n 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299,\n 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,\n 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,\n 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614,\n 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a,\n 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,\n 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,\n 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0,\n 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,\n 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e,\n 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9,\n 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,\n 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6])\n ];\n this.P = new Uint32Array([\n 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,\n 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,\n 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,\n 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,\n 0x9216d5d9, 0x8979fb1b]);\n};\n\nfunction F(S, x8, i) {\n return (((S[0][x8[i+3]] +\n S[1][x8[i+2]]) ^\n S[2][x8[i+1]]) +\n S[3][x8[i]]);\n};\n\nBlowfish.prototype.encipher = function(x, x8) {\n if (x8 === undefined) {\n x8 = new Uint8Array(x.buffer);\n if (x.byteOffset !== 0)\n x8 = x8.subarray(x.byteOffset);\n }\n x[0] ^= this.P[0];\n for (var i = 1; i < 16; i += 2) {\n x[1] ^= F(this.S, x8, 0) ^ this.P[i];\n x[0] ^= F(this.S, x8, 4) ^ this.P[i+1];\n }\n var t = x[0];\n x[0] = x[1] ^ this.P[17];\n x[1] = t;\n};\n\nBlowfish.prototype.decipher = function(x) {\n var x8 = new Uint8Array(x.buffer);\n if (x.byteOffset !== 0)\n x8 = x8.subarray(x.byteOffset);\n x[0] ^= this.P[17];\n for (var i = 16; i > 0; i -= 2) {\n x[1] ^= F(this.S, x8, 0) ^ this.P[i];\n x[0] ^= F(this.S, x8, 4) ^ this.P[i-1];\n }\n var t = x[0];\n x[0] = x[1] ^ this.P[0];\n x[1] = t;\n};\n\nfunction stream2word(data, databytes){\n var i, temp = 0;\n for (i = 0; i < 4; i++, BLF_J++) {\n if (BLF_J >= databytes) BLF_J = 0;\n temp = (temp << 8) | data[BLF_J];\n }\n return temp;\n};\n\nBlowfish.prototype.expand0state = function(key, keybytes) {\n var d = new Uint32Array(2), i, k;\n var d8 = new Uint8Array(d.buffer);\n\n for (i = 0, BLF_J = 0; i < 18; i++) {\n this.P[i] ^= stream2word(key, keybytes);\n }\n BLF_J = 0;\n\n for (i = 0; i < 18; i += 2) {\n this.encipher(d, d8);\n this.P[i] = d[0];\n this.P[i+1] = d[1];\n }\n\n for (i = 0; i < 4; i++) {\n for (k = 0; k < 256; k += 2) {\n this.encipher(d, d8);\n this.S[i][k] = d[0];\n this.S[i][k+1] = d[1];\n }\n }\n};\n\nBlowfish.prototype.expandstate = function(data, databytes, key, keybytes) {\n var d = new Uint32Array(2), i, k;\n\n for (i = 0, BLF_J = 0; i < 18; i++) {\n this.P[i] ^= stream2word(key, keybytes);\n }\n\n for (i = 0, BLF_J = 0; i < 18; i += 2) {\n d[0] ^= stream2word(data, databytes);\n d[1] ^= stream2word(data, databytes);\n this.encipher(d);\n this.P[i] = d[0];\n this.P[i+1] = d[1];\n }\n\n for (i = 0; i < 4; i++) {\n for (k = 0; k < 256; k += 2) {\n d[0] ^= stream2word(data, databytes);\n d[1] ^= stream2word(data, databytes);\n this.encipher(d);\n this.S[i][k] = d[0];\n this.S[i][k+1] = d[1];\n }\n }\n BLF_J = 0;\n};\n\nBlowfish.prototype.enc = function(data, blocks) {\n for (var i = 0; i < blocks; i++) {\n this.encipher(data.subarray(i*2));\n }\n};\n\nBlowfish.prototype.dec = function(data, blocks) {\n for (var i = 0; i < blocks; i++) {\n this.decipher(data.subarray(i*2));\n }\n};\n\nvar BCRYPT_BLOCKS = 8,\n BCRYPT_HASHSIZE = 32;\n\nfunction bcrypt_hash(sha2pass, sha2salt, out) {\n var state = new Blowfish(),\n cdata = new Uint32Array(BCRYPT_BLOCKS), i,\n ciphertext = new Uint8Array([79,120,121,99,104,114,111,109,97,116,105,\n 99,66,108,111,119,102,105,115,104,83,119,97,116,68,121,110,97,109,\n 105,116,101]); //\"OxychromaticBlowfishSwatDynamite\"\n\n state.expandstate(sha2salt, 64, sha2pass, 64);\n for (i = 0; i < 64; i++) {\n state.expand0state(sha2salt, 64);\n state.expand0state(sha2pass, 64);\n }\n\n for (i = 0; i < BCRYPT_BLOCKS; i++)\n cdata[i] = stream2word(ciphertext, ciphertext.byteLength);\n for (i = 0; i < 64; i++)\n state.enc(cdata, cdata.byteLength / 8);\n\n for (i = 0; i < BCRYPT_BLOCKS; i++) {\n out[4*i+3] = cdata[i] >>> 24;\n out[4*i+2] = cdata[i] >>> 16;\n out[4*i+1] = cdata[i] >>> 8;\n out[4*i+0] = cdata[i];\n }\n};\n\nfunction bcrypt_pbkdf(pass, passlen, salt, saltlen, key, keylen, rounds) {\n var sha2pass = new Uint8Array(64),\n sha2salt = new Uint8Array(64),\n out = new Uint8Array(BCRYPT_HASHSIZE),\n tmpout = new Uint8Array(BCRYPT_HASHSIZE),\n countsalt = new Uint8Array(saltlen+4),\n i, j, amt, stride, dest, count,\n origkeylen = keylen;\n\n if (rounds < 1)\n return -1;\n if (passlen === 0 || saltlen === 0 || keylen === 0 ||\n keylen > (out.byteLength * out.byteLength) || saltlen > (1<<20))\n return -1;\n\n stride = Math.floor((keylen + out.byteLength - 1) / out.byteLength);\n amt = Math.floor((keylen + stride - 1) / stride);\n\n for (i = 0; i < saltlen; i++)\n countsalt[i] = salt[i];\n\n crypto_hash_sha512(sha2pass, pass, passlen);\n\n for (count = 1; keylen > 0; count++) {\n countsalt[saltlen+0] = count >>> 24;\n countsalt[saltlen+1] = count >>> 16;\n countsalt[saltlen+2] = count >>> 8;\n countsalt[saltlen+3] = count;\n\n crypto_hash_sha512(sha2salt, countsalt, saltlen + 4);\n bcrypt_hash(sha2pass, sha2salt, tmpout);\n for (i = out.byteLength; i--;)\n out[i] = tmpout[i];\n\n for (i = 1; i < rounds; i++) {\n crypto_hash_sha512(sha2salt, tmpout, tmpout.byteLength);\n bcrypt_hash(sha2pass, sha2salt, tmpout);\n for (j = 0; j < out.byteLength; j++)\n out[j] ^= tmpout[j];\n }\n\n amt = Math.min(amt, keylen);\n for (i = 0; i < amt; i++) {\n dest = i * stride + (count - 1);\n if (dest >= origkeylen)\n break;\n key[dest] = out[i];\n }\n keylen -= i;\n }\n\n return 0;\n};\n\nmodule.exports = {\n BLOCKS: BCRYPT_BLOCKS,\n HASHSIZE: BCRYPT_HASHSIZE,\n hash: bcrypt_hash,\n pbkdf: bcrypt_pbkdf\n};\n","/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.7.2\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o 0) {\n _drainQueueStep(queue);\n }\n}\n\nfunction _drainQueueStep(queue) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n}\n\nAsync.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n _drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context,\n enableAsyncHooks, disableAsyncHooks) {\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar es5 = _dereq_(\"./es5\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nvar deferUnhandledRejectionCheck;\n(function() {\n var promises = [];\n\n function unhandledRejectionCheck() {\n for (var i = 0; i < promises.length; ++i) {\n promises[i]._notifyUnhandledRejection();\n }\n unhandledRejectionClear();\n }\n\n function unhandledRejectionClear() {\n promises.length = 0;\n }\n\n deferUnhandledRejectionCheck = function(promise) {\n promises.push(promise);\n setTimeout(unhandledRejectionCheck, 1);\n };\n\n es5.defineProperty(Promise, \"_unhandledRejectionCheck\", {\n value: unhandledRejectionCheck\n });\n es5.defineProperty(Promise, \"_unhandledRejectionClear\", {\n value: unhandledRejectionClear\n });\n})();\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n deferUnhandledRejectionCheck(this);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var context = Promise._getContext();\n possiblyUnhandledRejection = util.contextBind(context, fn);\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var context = Promise._getContext();\n unhandledRejectionHandled = util.contextBind(context, fn);\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\n\nvar legacyHandlers = {\n unhandledrejection: {\n before: function() {\n var ret = util.global.onunhandledrejection;\n util.global.onunhandledrejection = null;\n return ret;\n },\n after: function(fn) {\n util.global.onunhandledrejection = fn;\n }\n },\n rejectionhandled: {\n before: function() {\n var ret = util.global.onrejectionhandled;\n util.global.onrejectionhandled = null;\n return ret;\n },\n after: function(fn) {\n util.global.onrejectionhandled = fn;\n }\n }\n};\n\nvar fireDomEvent = (function() {\n var dispatch = function(legacy, e) {\n if (legacy) {\n var fn;\n try {\n fn = legacy.before();\n return !util.global.dispatchEvent(e);\n } finally {\n legacy.after(fn);\n }\n } else {\n return !util.global.dispatchEvent(e);\n }\n };\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var eventData = {\n detail: event,\n cancelable: true\n };\n var domEvent = new CustomEvent(name, eventData);\n es5.defineProperty(\n domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(\n domEvent, \"reason\", {value: event.reason});\n\n return dispatch(legacyHandlers[name], domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var domEvent = new Event(name, {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(domEvent, \"reason\", {value: event.reason});\n return dispatch(legacyHandlers[name], domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name, false, true,\n event);\n return dispatch(legacyHandlers[name], domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n if (\"asyncHooks\" in opts && util.nodeSupportsAsyncResource) {\n var prev = config.asyncHooks;\n var cur = !!opts.asyncHooks;\n if (prev !== cur) {\n config.asyncHooks = cur;\n if (cur) {\n enableAsyncHooks();\n } else {\n disableAsyncHooks();\n }\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._dereferenceTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction longStackTracesDereferenceTrace() {\n this._trace = undefined;\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = (firstLineError.stack || \"\").split(\"\\n\");\n var lastStackLines = (lastLineError.stack || \"\").split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false,\n asyncHooks: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n asyncHooks: function() {\n return config.asyncHooks;\n },\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var context = Promise._getContext();\n holder.fn = util.contextBind(context, holder.fn);\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var context = Promise._getContext();\n this._callback = util.contextBind(context, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n if (util.isArray(promises)) {\n for (var i = 0; i < promises.length; ++i) {\n var maybePromise = promises[i];\n if (maybePromise instanceof Promise) {\n maybePromise.suppressUnhandledRejections();\n }\n }\n }\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\nutil.setReflectHandler(reflectHandler);\n\nvar getDomain = function() {\n var domain = process.domain;\n if (domain === undefined) {\n return null;\n }\n return domain;\n};\nvar getContextDefault = function() {\n return null;\n};\nvar getContextDomain = function() {\n return {\n domain: getDomain(),\n async: null\n };\n};\nvar AsyncResource = util.isNode && util.nodeSupportsAsyncResource ?\n _dereq_(\"async_hooks\").AsyncResource : null;\nvar getContextAsyncHooks = function() {\n return {\n domain: getDomain(),\n async: new AsyncResource(\"Bluebird::Promise\")\n };\n};\nvar getContext = util.isNode ? getContextDomain : getContextDefault;\nutil.notEnumerableProp(Promise, \"_getContext\", getContext);\nvar enableAsyncHooks = function() {\n getContext = getContextAsyncHooks;\n util.notEnumerableProp(Promise, \"_getContext\", getContextAsyncHooks);\n};\nvar disableAsyncHooks = function() {\n getContext = getContextDomain;\n util.notEnumerableProp(Promise, \"_getContext\", getContextDomain);\n};\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\n\nvar debug = _dereq_(\"./debuggability\")(Promise, Context,\n enableAsyncHooks, disableAsyncHooks);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n\n if (typeof fn !== \"function\") {\n throw new TypeError(\"The last argument to .catch() \" +\n \"must be a function, got \" + util.toString(fn));\n }\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var context = getContext();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: util.contextBind(context, handler),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise,\n receiver, context);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n var bitField = this._bitField;\n this._bitField = bitField |\n (((bitField & 536870912) >> 2) ^\n 134217728);\n};\n\nPromise.prototype._setNoAsyncGuarantee = function() {\n this._bitField = (this._bitField | 536870912) &\n (~134217728);\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n context\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 = util.contextBind(context, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 = util.contextBind(context, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n util.contextBind(context, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n util.contextBind(context, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(maybePromise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n this._dereferenceTrace();\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.toStringTag) {\n es5.defineProperty(Promise.prototype, Symbol.toStringTag, {\n get: function () {\n return \"Object\";\n }\n });\n}\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async);\nPromise.Promise = Promise;\nPromise.version = \"3.7.2\";\n_dereq_('./call_get.js')(Promise);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./any.js')(Promise);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./filter.js')(Promise, INTERNAL);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36,\"async_hooks\":undefined}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n values.suppressUnhandledRejections();\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var context = Promise._getContext();\n this._fn = util.contextBind(context, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined &&\n this._eachValues !== null &&\n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n for (var j = i; j < length; ++j) {\n var maybePromise = values[j];\n if (maybePromise instanceof Promise) {\n maybePromise.suppressUnhandledRejections();\n }\n }\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n\n if ((i & 127) === 0) {\n value._setNoAsyncGuarantee();\n }\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova)) &&\n (\"classList\" in document.documentElement)) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.allSettled = function (promises) {\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n function ic() {\n return typeof receiver.foo;\n }\n ic();\n ic();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj instanceof Error ||\n (obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if (classString(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nvar reflectHandler;\nfunction contextBind(ctx, cb) {\n if (ctx === null ||\n typeof cb !== \"function\" ||\n cb === reflectHandler) {\n return cb;\n }\n\n if (ctx.domain !== null) {\n cb = ctx.domain.bind(cb);\n }\n\n var async = ctx.async;\n if (async !== null) {\n var old = cb;\n cb = function() {\n var args = (new Array(2)).concat([].slice.call(arguments));;\n args[0] = old;\n args[1] = this;\n return async.runInAsyncScope.apply(async, args);\n };\n }\n return cb;\n}\n\nvar ret = {\n setReflectHandler: function(fn) {\n reflectHandler = fn;\n },\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n contextBind: contextBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version;\n if (process.versions && process.versions.node) {\n version = process.versions.node.split(\".\").map(Number);\n } else if (process.version) {\n version = process.version.split(\".\").map(Number);\n }\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\nret.nodeSupportsAsyncResource = ret.isNode && (function() {\n var supportsAsync = false;\n try {\n var res = _dereq_(\"async_hooks\").AsyncResource;\n supportsAsync = typeof res.prototype.runInAsyncScope === \"function\";\n } catch (e) {\n supportsAsync = false;\n }\n return supportsAsync;\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13,\"async_hooks\":undefined}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","module.exports = require('./browser/algorithms.json')\n","var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict';\n/* eslint camelcase: \"off\" */\n\nvar assert = require('assert');\n\nvar Zstream = require('pako/lib/zlib/zstream');\nvar zlib_deflate = require('pako/lib/zlib/deflate.js');\nvar zlib_inflate = require('pako/lib/zlib/inflate.js');\nvar constants = require('pako/lib/zlib/constants');\n\nfor (var key in constants) {\n exports[key] = constants[key];\n}\n\n// zlib modes\nexports.NONE = 0;\nexports.DEFLATE = 1;\nexports.INFLATE = 2;\nexports.GZIP = 3;\nexports.GUNZIP = 4;\nexports.DEFLATERAW = 5;\nexports.INFLATERAW = 6;\nexports.UNZIP = 7;\n\nvar GZIP_HEADER_ID1 = 0x1f;\nvar GZIP_HEADER_ID2 = 0x8b;\n\n/**\n * Emulate Node's zlib C++ layer for use by the JS layer in index.js\n */\nfunction Zlib(mode) {\n if (typeof mode !== 'number' || mode < exports.DEFLATE || mode > exports.UNZIP) {\n throw new TypeError('Bad argument');\n }\n\n this.dictionary = null;\n this.err = 0;\n this.flush = 0;\n this.init_done = false;\n this.level = 0;\n this.memLevel = 0;\n this.mode = mode;\n this.strategy = 0;\n this.windowBits = 0;\n this.write_in_progress = false;\n this.pending_close = false;\n this.gzip_id_bytes_read = 0;\n}\n\nZlib.prototype.close = function () {\n if (this.write_in_progress) {\n this.pending_close = true;\n return;\n }\n\n this.pending_close = false;\n\n assert(this.init_done, 'close before init');\n assert(this.mode <= exports.UNZIP);\n\n if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) {\n zlib_deflate.deflateEnd(this.strm);\n } else if (this.mode === exports.INFLATE || this.mode === exports.GUNZIP || this.mode === exports.INFLATERAW || this.mode === exports.UNZIP) {\n zlib_inflate.inflateEnd(this.strm);\n }\n\n this.mode = exports.NONE;\n\n this.dictionary = null;\n};\n\nZlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) {\n return this._write(true, flush, input, in_off, in_len, out, out_off, out_len);\n};\n\nZlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) {\n return this._write(false, flush, input, in_off, in_len, out, out_off, out_len);\n};\n\nZlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) {\n assert.equal(arguments.length, 8);\n\n assert(this.init_done, 'write before init');\n assert(this.mode !== exports.NONE, 'already finalized');\n assert.equal(false, this.write_in_progress, 'write already in progress');\n assert.equal(false, this.pending_close, 'close is pending');\n\n this.write_in_progress = true;\n\n assert.equal(false, flush === undefined, 'must provide flush value');\n\n this.write_in_progress = true;\n\n if (flush !== exports.Z_NO_FLUSH && flush !== exports.Z_PARTIAL_FLUSH && flush !== exports.Z_SYNC_FLUSH && flush !== exports.Z_FULL_FLUSH && flush !== exports.Z_FINISH && flush !== exports.Z_BLOCK) {\n throw new Error('Invalid flush value');\n }\n\n if (input == null) {\n input = Buffer.alloc(0);\n in_len = 0;\n in_off = 0;\n }\n\n this.strm.avail_in = in_len;\n this.strm.input = input;\n this.strm.next_in = in_off;\n this.strm.avail_out = out_len;\n this.strm.output = out;\n this.strm.next_out = out_off;\n this.flush = flush;\n\n if (!async) {\n // sync version\n this._process();\n\n if (this._checkError()) {\n return this._afterSync();\n }\n return;\n }\n\n // async version\n var self = this;\n process.nextTick(function () {\n self._process();\n self._after();\n });\n\n return this;\n};\n\nZlib.prototype._afterSync = function () {\n var avail_out = this.strm.avail_out;\n var avail_in = this.strm.avail_in;\n\n this.write_in_progress = false;\n\n return [avail_in, avail_out];\n};\n\nZlib.prototype._process = function () {\n var next_expected_header_byte = null;\n\n // If the avail_out is left at 0, then it means that it ran out\n // of room. If there was avail_out left over, then it means\n // that all of the input was consumed.\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.GZIP:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflate(this.strm, this.flush);\n break;\n case exports.UNZIP:\n if (this.strm.avail_in > 0) {\n next_expected_header_byte = this.strm.next_in;\n }\n\n switch (this.gzip_id_bytes_read) {\n case 0:\n if (next_expected_header_byte === null) {\n break;\n }\n\n if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) {\n this.gzip_id_bytes_read = 1;\n next_expected_header_byte++;\n\n if (this.strm.avail_in === 1) {\n // The only available byte was already read.\n break;\n }\n } else {\n this.mode = exports.INFLATE;\n break;\n }\n\n // fallthrough\n case 1:\n if (next_expected_header_byte === null) {\n break;\n }\n\n if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) {\n this.gzip_id_bytes_read = 2;\n this.mode = exports.GUNZIP;\n } else {\n // There is no actual difference between INFLATE and INFLATERAW\n // (after initialization).\n this.mode = exports.INFLATE;\n }\n\n break;\n default:\n throw new Error('invalid number of gzip magic number bytes read');\n }\n\n // fallthrough\n case exports.INFLATE:\n case exports.GUNZIP:\n case exports.INFLATERAW:\n this.err = zlib_inflate.inflate(this.strm, this.flush\n\n // If data was encoded with dictionary\n );if (this.err === exports.Z_NEED_DICT && this.dictionary) {\n // Load it\n this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary);\n if (this.err === exports.Z_OK) {\n // And try to decode again\n this.err = zlib_inflate.inflate(this.strm, this.flush);\n } else if (this.err === exports.Z_DATA_ERROR) {\n // Both inflateSetDictionary() and inflate() return Z_DATA_ERROR.\n // Make it possible for After() to tell a bad dictionary from bad\n // input.\n this.err = exports.Z_NEED_DICT;\n }\n }\n while (this.strm.avail_in > 0 && this.mode === exports.GUNZIP && this.err === exports.Z_STREAM_END && this.strm.next_in[0] !== 0x00) {\n // Bytes remain in input buffer. Perhaps this is another compressed\n // member in the same archive, or just trailing garbage.\n // Trailing zero bytes are okay, though, since they are frequently\n // used for padding.\n\n this.reset();\n this.err = zlib_inflate.inflate(this.strm, this.flush);\n }\n break;\n default:\n throw new Error('Unknown mode ' + this.mode);\n }\n};\n\nZlib.prototype._checkError = function () {\n // Acceptable error states depend on the type of zlib stream.\n switch (this.err) {\n case exports.Z_OK:\n case exports.Z_BUF_ERROR:\n if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) {\n this._error('unexpected end of file');\n return false;\n }\n break;\n case exports.Z_STREAM_END:\n // normal statuses, not fatal\n break;\n case exports.Z_NEED_DICT:\n if (this.dictionary == null) {\n this._error('Missing dictionary');\n } else {\n this._error('Bad dictionary');\n }\n return false;\n default:\n // something else.\n this._error('Zlib error');\n return false;\n }\n\n return true;\n};\n\nZlib.prototype._after = function () {\n if (!this._checkError()) {\n return;\n }\n\n var avail_out = this.strm.avail_out;\n var avail_in = this.strm.avail_in;\n\n this.write_in_progress = false;\n\n // call the write() cb\n this.callback(avail_in, avail_out);\n\n if (this.pending_close) {\n this.close();\n }\n};\n\nZlib.prototype._error = function (message) {\n if (this.strm.msg) {\n message = this.strm.msg;\n }\n this.onerror(message, this.err\n\n // no hope of rescue.\n );this.write_in_progress = false;\n if (this.pending_close) {\n this.close();\n }\n};\n\nZlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) {\n assert(arguments.length === 4 || arguments.length === 5, 'init(windowBits, level, memLevel, strategy, [dictionary])');\n\n assert(windowBits >= 8 && windowBits <= 15, 'invalid windowBits');\n assert(level >= -1 && level <= 9, 'invalid compression level');\n\n assert(memLevel >= 1 && memLevel <= 9, 'invalid memlevel');\n\n assert(strategy === exports.Z_FILTERED || strategy === exports.Z_HUFFMAN_ONLY || strategy === exports.Z_RLE || strategy === exports.Z_FIXED || strategy === exports.Z_DEFAULT_STRATEGY, 'invalid strategy');\n\n this._init(level, windowBits, memLevel, strategy, dictionary);\n this._setDictionary();\n};\n\nZlib.prototype.params = function () {\n throw new Error('deflateParams Not supported');\n};\n\nZlib.prototype.reset = function () {\n this._reset();\n this._setDictionary();\n};\n\nZlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) {\n this.level = level;\n this.windowBits = windowBits;\n this.memLevel = memLevel;\n this.strategy = strategy;\n\n this.flush = exports.Z_NO_FLUSH;\n\n this.err = exports.Z_OK;\n\n if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) {\n this.windowBits += 16;\n }\n\n if (this.mode === exports.UNZIP) {\n this.windowBits += 32;\n }\n\n if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) {\n this.windowBits = -1 * this.windowBits;\n }\n\n this.strm = new Zstream();\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.GZIP:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflateInit2(this.strm, this.level, exports.Z_DEFLATED, this.windowBits, this.memLevel, this.strategy);\n break;\n case exports.INFLATE:\n case exports.GUNZIP:\n case exports.INFLATERAW:\n case exports.UNZIP:\n this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits);\n break;\n default:\n throw new Error('Unknown mode ' + this.mode);\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Init error');\n }\n\n this.dictionary = dictionary;\n\n this.write_in_progress = false;\n this.init_done = true;\n};\n\nZlib.prototype._setDictionary = function () {\n if (this.dictionary == null) {\n return;\n }\n\n this.err = exports.Z_OK;\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary);\n break;\n default:\n break;\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Failed to set dictionary');\n }\n};\n\nZlib.prototype._reset = function () {\n this.err = exports.Z_OK;\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.DEFLATERAW:\n case exports.GZIP:\n this.err = zlib_deflate.deflateReset(this.strm);\n break;\n case exports.INFLATE:\n case exports.INFLATERAW:\n case exports.GUNZIP:\n this.err = zlib_inflate.inflateReset(this.strm);\n break;\n default:\n break;\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Failed to reset stream');\n }\n};\n\nexports.Zlib = Zlib;","'use strict';\n\nvar Buffer = require('buffer').Buffer;\nvar Transform = require('stream').Transform;\nvar binding = require('./binding');\nvar util = require('util');\nvar assert = require('assert').ok;\nvar kMaxLength = require('buffer').kMaxLength;\nvar kRangeErrorMessage = 'Cannot create final Buffer. It would be larger ' + 'than 0x' + kMaxLength.toString(16) + ' bytes';\n\n// zlib doesn't provide these, so kludge them in following the same\n// const naming scheme zlib uses.\nbinding.Z_MIN_WINDOWBITS = 8;\nbinding.Z_MAX_WINDOWBITS = 15;\nbinding.Z_DEFAULT_WINDOWBITS = 15;\n\n// fewer than 64 bytes per chunk is stupid.\n// technically it could work with as few as 8, but even 64 bytes\n// is absurdly low. Usually a MB or more is best.\nbinding.Z_MIN_CHUNK = 64;\nbinding.Z_MAX_CHUNK = Infinity;\nbinding.Z_DEFAULT_CHUNK = 16 * 1024;\n\nbinding.Z_MIN_MEMLEVEL = 1;\nbinding.Z_MAX_MEMLEVEL = 9;\nbinding.Z_DEFAULT_MEMLEVEL = 8;\n\nbinding.Z_MIN_LEVEL = -1;\nbinding.Z_MAX_LEVEL = 9;\nbinding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION;\n\n// expose all the zlib constants\nvar bkeys = Object.keys(binding);\nfor (var bk = 0; bk < bkeys.length; bk++) {\n var bkey = bkeys[bk];\n if (bkey.match(/^Z/)) {\n Object.defineProperty(exports, bkey, {\n enumerable: true, value: binding[bkey], writable: false\n });\n }\n}\n\n// translation table for return codes.\nvar codes = {\n Z_OK: binding.Z_OK,\n Z_STREAM_END: binding.Z_STREAM_END,\n Z_NEED_DICT: binding.Z_NEED_DICT,\n Z_ERRNO: binding.Z_ERRNO,\n Z_STREAM_ERROR: binding.Z_STREAM_ERROR,\n Z_DATA_ERROR: binding.Z_DATA_ERROR,\n Z_MEM_ERROR: binding.Z_MEM_ERROR,\n Z_BUF_ERROR: binding.Z_BUF_ERROR,\n Z_VERSION_ERROR: binding.Z_VERSION_ERROR\n};\n\nvar ckeys = Object.keys(codes);\nfor (var ck = 0; ck < ckeys.length; ck++) {\n var ckey = ckeys[ck];\n codes[codes[ckey]] = ckey;\n}\n\nObject.defineProperty(exports, 'codes', {\n enumerable: true, value: Object.freeze(codes), writable: false\n});\n\nexports.Deflate = Deflate;\nexports.Inflate = Inflate;\nexports.Gzip = Gzip;\nexports.Gunzip = Gunzip;\nexports.DeflateRaw = DeflateRaw;\nexports.InflateRaw = InflateRaw;\nexports.Unzip = Unzip;\n\nexports.createDeflate = function (o) {\n return new Deflate(o);\n};\n\nexports.createInflate = function (o) {\n return new Inflate(o);\n};\n\nexports.createDeflateRaw = function (o) {\n return new DeflateRaw(o);\n};\n\nexports.createInflateRaw = function (o) {\n return new InflateRaw(o);\n};\n\nexports.createGzip = function (o) {\n return new Gzip(o);\n};\n\nexports.createGunzip = function (o) {\n return new Gunzip(o);\n};\n\nexports.createUnzip = function (o) {\n return new Unzip(o);\n};\n\n// Convenience methods.\n// compress/decompress a string or buffer in one step.\nexports.deflate = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Deflate(opts), buffer, callback);\n};\n\nexports.deflateSync = function (buffer, opts) {\n return zlibBufferSync(new Deflate(opts), buffer);\n};\n\nexports.gzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Gzip(opts), buffer, callback);\n};\n\nexports.gzipSync = function (buffer, opts) {\n return zlibBufferSync(new Gzip(opts), buffer);\n};\n\nexports.deflateRaw = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new DeflateRaw(opts), buffer, callback);\n};\n\nexports.deflateRawSync = function (buffer, opts) {\n return zlibBufferSync(new DeflateRaw(opts), buffer);\n};\n\nexports.unzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Unzip(opts), buffer, callback);\n};\n\nexports.unzipSync = function (buffer, opts) {\n return zlibBufferSync(new Unzip(opts), buffer);\n};\n\nexports.inflate = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Inflate(opts), buffer, callback);\n};\n\nexports.inflateSync = function (buffer, opts) {\n return zlibBufferSync(new Inflate(opts), buffer);\n};\n\nexports.gunzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Gunzip(opts), buffer, callback);\n};\n\nexports.gunzipSync = function (buffer, opts) {\n return zlibBufferSync(new Gunzip(opts), buffer);\n};\n\nexports.inflateRaw = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new InflateRaw(opts), buffer, callback);\n};\n\nexports.inflateRawSync = function (buffer, opts) {\n return zlibBufferSync(new InflateRaw(opts), buffer);\n};\n\nfunction zlibBuffer(engine, buffer, callback) {\n var buffers = [];\n var nread = 0;\n\n engine.on('error', onError);\n engine.on('end', onEnd);\n\n engine.end(buffer);\n flow();\n\n function flow() {\n var chunk;\n while (null !== (chunk = engine.read())) {\n buffers.push(chunk);\n nread += chunk.length;\n }\n engine.once('readable', flow);\n }\n\n function onError(err) {\n engine.removeListener('end', onEnd);\n engine.removeListener('readable', flow);\n callback(err);\n }\n\n function onEnd() {\n var buf;\n var err = null;\n\n if (nread >= kMaxLength) {\n err = new RangeError(kRangeErrorMessage);\n } else {\n buf = Buffer.concat(buffers, nread);\n }\n\n buffers = [];\n engine.close();\n callback(err, buf);\n }\n}\n\nfunction zlibBufferSync(engine, buffer) {\n if (typeof buffer === 'string') buffer = Buffer.from(buffer);\n\n if (!Buffer.isBuffer(buffer)) throw new TypeError('Not a string or buffer');\n\n var flushFlag = engine._finishFlushFlag;\n\n return engine._processChunk(buffer, flushFlag);\n}\n\n// generic zlib\n// minimal 2-byte header\nfunction Deflate(opts) {\n if (!(this instanceof Deflate)) return new Deflate(opts);\n Zlib.call(this, opts, binding.DEFLATE);\n}\n\nfunction Inflate(opts) {\n if (!(this instanceof Inflate)) return new Inflate(opts);\n Zlib.call(this, opts, binding.INFLATE);\n}\n\n// gzip - bigger header, same deflate compression\nfunction Gzip(opts) {\n if (!(this instanceof Gzip)) return new Gzip(opts);\n Zlib.call(this, opts, binding.GZIP);\n}\n\nfunction Gunzip(opts) {\n if (!(this instanceof Gunzip)) return new Gunzip(opts);\n Zlib.call(this, opts, binding.GUNZIP);\n}\n\n// raw - no header\nfunction DeflateRaw(opts) {\n if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts);\n Zlib.call(this, opts, binding.DEFLATERAW);\n}\n\nfunction InflateRaw(opts) {\n if (!(this instanceof InflateRaw)) return new InflateRaw(opts);\n Zlib.call(this, opts, binding.INFLATERAW);\n}\n\n// auto-detect header.\nfunction Unzip(opts) {\n if (!(this instanceof Unzip)) return new Unzip(opts);\n Zlib.call(this, opts, binding.UNZIP);\n}\n\nfunction isValidFlushFlag(flag) {\n return flag === binding.Z_NO_FLUSH || flag === binding.Z_PARTIAL_FLUSH || flag === binding.Z_SYNC_FLUSH || flag === binding.Z_FULL_FLUSH || flag === binding.Z_FINISH || flag === binding.Z_BLOCK;\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\n\nfunction Zlib(opts, mode) {\n var _this = this;\n\n this._opts = opts = opts || {};\n this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK;\n\n Transform.call(this, opts);\n\n if (opts.flush && !isValidFlushFlag(opts.flush)) {\n throw new Error('Invalid flush flag: ' + opts.flush);\n }\n if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) {\n throw new Error('Invalid flush flag: ' + opts.finishFlush);\n }\n\n this._flushFlag = opts.flush || binding.Z_NO_FLUSH;\n this._finishFlushFlag = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : binding.Z_FINISH;\n\n if (opts.chunkSize) {\n if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) {\n throw new Error('Invalid chunk size: ' + opts.chunkSize);\n }\n }\n\n if (opts.windowBits) {\n if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) {\n throw new Error('Invalid windowBits: ' + opts.windowBits);\n }\n }\n\n if (opts.level) {\n if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) {\n throw new Error('Invalid compression level: ' + opts.level);\n }\n }\n\n if (opts.memLevel) {\n if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) {\n throw new Error('Invalid memLevel: ' + opts.memLevel);\n }\n }\n\n if (opts.strategy) {\n if (opts.strategy != exports.Z_FILTERED && opts.strategy != exports.Z_HUFFMAN_ONLY && opts.strategy != exports.Z_RLE && opts.strategy != exports.Z_FIXED && opts.strategy != exports.Z_DEFAULT_STRATEGY) {\n throw new Error('Invalid strategy: ' + opts.strategy);\n }\n }\n\n if (opts.dictionary) {\n if (!Buffer.isBuffer(opts.dictionary)) {\n throw new Error('Invalid dictionary: it should be a Buffer instance');\n }\n }\n\n this._handle = new binding.Zlib(mode);\n\n var self = this;\n this._hadError = false;\n this._handle.onerror = function (message, errno) {\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n _close(self);\n self._hadError = true;\n\n var error = new Error(message);\n error.errno = errno;\n error.code = exports.codes[errno];\n self.emit('error', error);\n };\n\n var level = exports.Z_DEFAULT_COMPRESSION;\n if (typeof opts.level === 'number') level = opts.level;\n\n var strategy = exports.Z_DEFAULT_STRATEGY;\n if (typeof opts.strategy === 'number') strategy = opts.strategy;\n\n this._handle.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, level, opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, strategy, opts.dictionary);\n\n this._buffer = Buffer.allocUnsafe(this._chunkSize);\n this._offset = 0;\n this._level = level;\n this._strategy = strategy;\n\n this.once('end', this.close);\n\n Object.defineProperty(this, '_closed', {\n get: function () {\n return !_this._handle;\n },\n configurable: true,\n enumerable: true\n });\n}\n\nutil.inherits(Zlib, Transform);\n\nZlib.prototype.params = function (level, strategy, callback) {\n if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) {\n throw new RangeError('Invalid compression level: ' + level);\n }\n if (strategy != exports.Z_FILTERED && strategy != exports.Z_HUFFMAN_ONLY && strategy != exports.Z_RLE && strategy != exports.Z_FIXED && strategy != exports.Z_DEFAULT_STRATEGY) {\n throw new TypeError('Invalid strategy: ' + strategy);\n }\n\n if (this._level !== level || this._strategy !== strategy) {\n var self = this;\n this.flush(binding.Z_SYNC_FLUSH, function () {\n assert(self._handle, 'zlib binding closed');\n self._handle.params(level, strategy);\n if (!self._hadError) {\n self._level = level;\n self._strategy = strategy;\n if (callback) callback();\n }\n });\n } else {\n process.nextTick(callback);\n }\n};\n\nZlib.prototype.reset = function () {\n assert(this._handle, 'zlib binding closed');\n return this._handle.reset();\n};\n\n// This is the _flush function called by the transform class,\n// internally, when the last chunk has been written.\nZlib.prototype._flush = function (callback) {\n this._transform(Buffer.alloc(0), '', callback);\n};\n\nZlib.prototype.flush = function (kind, callback) {\n var _this2 = this;\n\n var ws = this._writableState;\n\n if (typeof kind === 'function' || kind === undefined && !callback) {\n callback = kind;\n kind = binding.Z_FULL_FLUSH;\n }\n\n if (ws.ended) {\n if (callback) process.nextTick(callback);\n } else if (ws.ending) {\n if (callback) this.once('end', callback);\n } else if (ws.needDrain) {\n if (callback) {\n this.once('drain', function () {\n return _this2.flush(kind, callback);\n });\n }\n } else {\n this._flushFlag = kind;\n this.write(Buffer.alloc(0), '', callback);\n }\n};\n\nZlib.prototype.close = function (callback) {\n _close(this, callback);\n process.nextTick(emitCloseNT, this);\n};\n\nfunction _close(engine, callback) {\n if (callback) process.nextTick(callback);\n\n // Caller may invoke .close after a zlib error (which will null _handle).\n if (!engine._handle) return;\n\n engine._handle.close();\n engine._handle = null;\n}\n\nfunction emitCloseNT(self) {\n self.emit('close');\n}\n\nZlib.prototype._transform = function (chunk, encoding, cb) {\n var flushFlag;\n var ws = this._writableState;\n var ending = ws.ending || ws.ended;\n var last = ending && (!chunk || ws.length === chunk.length);\n\n if (chunk !== null && !Buffer.isBuffer(chunk)) return cb(new Error('invalid input'));\n\n if (!this._handle) return cb(new Error('zlib binding closed'));\n\n // If it's the last chunk, or a final flush, we use the Z_FINISH flush flag\n // (or whatever flag was provided using opts.finishFlush).\n // If it's explicitly flushing at some other time, then we use\n // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression\n // goodness.\n if (last) flushFlag = this._finishFlushFlag;else {\n flushFlag = this._flushFlag;\n // once we've flushed the last of the queue, stop flushing and\n // go back to the normal behavior.\n if (chunk.length >= ws.length) {\n this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH;\n }\n }\n\n this._processChunk(chunk, flushFlag, cb);\n};\n\nZlib.prototype._processChunk = function (chunk, flushFlag, cb) {\n var availInBefore = chunk && chunk.length;\n var availOutBefore = this._chunkSize - this._offset;\n var inOff = 0;\n\n var self = this;\n\n var async = typeof cb === 'function';\n\n if (!async) {\n var buffers = [];\n var nread = 0;\n\n var error;\n this.on('error', function (er) {\n error = er;\n });\n\n assert(this._handle, 'zlib binding closed');\n do {\n var res = this._handle.writeSync(flushFlag, chunk, // in\n inOff, // in_off\n availInBefore, // in_len\n this._buffer, // out\n this._offset, //out_off\n availOutBefore); // out_len\n } while (!this._hadError && callback(res[0], res[1]));\n\n if (this._hadError) {\n throw error;\n }\n\n if (nread >= kMaxLength) {\n _close(this);\n throw new RangeError(kRangeErrorMessage);\n }\n\n var buf = Buffer.concat(buffers, nread);\n _close(this);\n\n return buf;\n }\n\n assert(this._handle, 'zlib binding closed');\n var req = this._handle.write(flushFlag, chunk, // in\n inOff, // in_off\n availInBefore, // in_len\n this._buffer, // out\n this._offset, //out_off\n availOutBefore); // out_len\n\n req.buffer = chunk;\n req.callback = callback;\n\n function callback(availInAfter, availOutAfter) {\n // When the callback is used in an async write, the callback's\n // context is the `req` object that was created. The req object\n // is === this._handle, and that's why it's important to null\n // out the values after they are done being used. `this._handle`\n // can stay in memory longer than the callback and buffer are needed.\n if (this) {\n this.buffer = null;\n this.callback = null;\n }\n\n if (self._hadError) return;\n\n var have = availOutBefore - availOutAfter;\n assert(have >= 0, 'have should not go down');\n\n if (have > 0) {\n var out = self._buffer.slice(self._offset, self._offset + have);\n self._offset += have;\n // serve some output to the consumer.\n if (async) {\n self.push(out);\n } else {\n buffers.push(out);\n nread += out.length;\n }\n }\n\n // exhausted the output buffer, or used all the input create a new one.\n if (availOutAfter === 0 || self._offset >= self._chunkSize) {\n availOutBefore = self._chunkSize;\n self._offset = 0;\n self._buffer = Buffer.allocUnsafe(self._chunkSize);\n }\n\n if (availOutAfter === 0) {\n // Not actually done. Need to reprocess.\n // Also, update the availInBefore to the availInAfter value,\n // so that if we have to hit it a third (fourth, etc.) time,\n // it'll have the correct byte counts.\n inOff += availInBefore - availInAfter;\n availInBefore = availInAfter;\n\n if (!async) return true;\n\n var newReq = self._handle.write(flushFlag, chunk, inOff, availInBefore, self._buffer, self._offset, self._chunkSize);\n newReq.callback = callback; // this same function\n newReq.buffer = chunk;\n return;\n }\n\n if (!async) return false;\n\n // finished with the chunk.\n cb();\n }\n};\n\nutil.inherits(Deflate, Zlib);\nutil.inherits(Inflate, Zlib);\nutil.inherits(Gzip, Zlib);\nutil.inherits(Gunzip, Zlib);\nutil.inherits(DeflateRaw, Zlib);\nutil.inherits(InflateRaw, Zlib);\nutil.inherits(Unzip, Zlib);","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","function Caseless (dict) {\n this.dict = dict || {}\n}\nCaseless.prototype.set = function (name, value, clobber) {\n if (typeof name === 'object') {\n for (var i in name) {\n this.set(i, name[i], value)\n }\n } else {\n if (typeof clobber === 'undefined') clobber = true\n var has = this.has(name)\n\n if (!clobber && has) this.dict[has] = this.dict[has] + ',' + value\n else this.dict[has || name] = value\n return has\n }\n}\nCaseless.prototype.has = function (name) {\n var keys = Object.keys(this.dict)\n , name = name.toLowerCase()\n ;\n for (var i=0;i 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe=true) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe=true) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar supportsDescriptors = origDefineProperty && hasPropertyDescriptors;\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value; // eslint-disable-line no-param-reassign\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","var Stream = require('stream').Stream;\nvar util = require('util');\n\nmodule.exports = DelayedStream;\nfunction DelayedStream() {\n this.source = null;\n this.dataSize = 0;\n this.maxDataSize = 1024 * 1024;\n this.pauseStream = true;\n\n this._maxDataSizeExceeded = false;\n this._released = false;\n this._bufferedEvents = [];\n}\nutil.inherits(DelayedStream, Stream);\n\nDelayedStream.create = function(source, options) {\n var delayedStream = new this();\n\n options = options || {};\n for (var option in options) {\n delayedStream[option] = options[option];\n }\n\n delayedStream.source = source;\n\n var realEmit = source.emit;\n source.emit = function() {\n delayedStream._handleEmit(arguments);\n return realEmit.apply(source, arguments);\n };\n\n source.on('error', function() {});\n if (delayedStream.pauseStream) {\n source.pause();\n }\n\n return delayedStream;\n};\n\nObject.defineProperty(DelayedStream.prototype, 'readable', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this.source.readable;\n }\n});\n\nDelayedStream.prototype.setEncoding = function() {\n return this.source.setEncoding.apply(this.source, arguments);\n};\n\nDelayedStream.prototype.resume = function() {\n if (!this._released) {\n this.release();\n }\n\n this.source.resume();\n};\n\nDelayedStream.prototype.pause = function() {\n this.source.pause();\n};\n\nDelayedStream.prototype.release = function() {\n this._released = true;\n\n this._bufferedEvents.forEach(function(args) {\n this.emit.apply(this, args);\n }.bind(this));\n this._bufferedEvents = [];\n};\n\nDelayedStream.prototype.pipe = function() {\n var r = Stream.prototype.pipe.apply(this, arguments);\n this.resume();\n return r;\n};\n\nDelayedStream.prototype._handleEmit = function(args) {\n if (this._released) {\n this.emit.apply(this, args);\n return;\n }\n\n if (args[0] === 'data') {\n this.dataSize += args[1].length;\n this._checkIfMaxDataSizeExceeded();\n }\n\n this._bufferedEvents.push(args);\n};\n\nDelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {\n if (this._maxDataSizeExceeded) {\n return;\n }\n\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n this._maxDataSizeExceeded = true;\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'\n this.emit('error', new Error(message));\n};\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var crypto = require(\"crypto\");\nvar BigInteger = require(\"jsbn\").BigInteger;\nvar ECPointFp = require(\"./lib/ec.js\").ECPointFp;\nvar Buffer = require(\"safer-buffer\").Buffer;\nexports.ECCurves = require(\"./lib/sec.js\");\n\n// zero prepad\nfunction unstupid(hex,len)\n{\n\treturn (hex.length >= len) ? hex : unstupid(\"0\"+hex,len);\n}\n\nexports.ECKey = function(curve, key, isPublic)\n{\n var priv;\n\tvar c = curve();\n\tvar n = c.getN();\n var bytes = Math.floor(n.bitLength()/8);\n\n if(key)\n {\n if(isPublic)\n {\n var curve = c.getCurve();\n// var x = key.slice(1,bytes+1); // skip the 04 for uncompressed format\n// var y = key.slice(bytes+1);\n// this.P = new ECPointFp(curve,\n// curve.fromBigInteger(new BigInteger(x.toString(\"hex\"), 16)),\n// curve.fromBigInteger(new BigInteger(y.toString(\"hex\"), 16))); \n this.P = curve.decodePointHex(key.toString(\"hex\"));\n }else{\n if(key.length != bytes) return false;\n priv = new BigInteger(key.toString(\"hex\"), 16); \n }\n }else{\n var n1 = n.subtract(BigInteger.ONE);\n var r = new BigInteger(crypto.randomBytes(n.bitLength()));\n priv = r.mod(n1).add(BigInteger.ONE);\n this.P = c.getG().multiply(priv);\n }\n if(this.P)\n {\n// var pubhex = unstupid(this.P.getX().toBigInteger().toString(16),bytes*2)+unstupid(this.P.getY().toBigInteger().toString(16),bytes*2);\n// this.PublicKey = Buffer.from(\"04\"+pubhex,\"hex\");\n this.PublicKey = Buffer.from(c.getCurve().encodeCompressedPointHex(this.P),\"hex\");\n }\n if(priv)\n {\n this.PrivateKey = Buffer.from(unstupid(priv.toString(16),bytes*2),\"hex\");\n this.deriveSharedSecret = function(key)\n {\n if(!key || !key.P) return false;\n var S = key.P.multiply(priv);\n return Buffer.from(unstupid(S.getX().toBigInteger().toString(16),bytes*2),\"hex\");\n } \n }\n}\n\n","// Basic Javascript Elliptic Curve implementation\n// Ported loosely from BouncyCastle's Java EC code\n// Only Fp curves implemented for now\n\n// Requires jsbn.js and jsbn2.js\nvar BigInteger = require('jsbn').BigInteger\nvar Barrett = BigInteger.prototype.Barrett\n\n// ----------------\n// ECFieldElementFp\n\n// constructor\nfunction ECFieldElementFp(q,x) {\n this.x = x;\n // TODO if(x.compareTo(q) >= 0) error\n this.q = q;\n}\n\nfunction feFpEquals(other) {\n if(other == this) return true;\n return (this.q.equals(other.q) && this.x.equals(other.x));\n}\n\nfunction feFpToBigInteger() {\n return this.x;\n}\n\nfunction feFpNegate() {\n return new ECFieldElementFp(this.q, this.x.negate().mod(this.q));\n}\n\nfunction feFpAdd(b) {\n return new ECFieldElementFp(this.q, this.x.add(b.toBigInteger()).mod(this.q));\n}\n\nfunction feFpSubtract(b) {\n return new ECFieldElementFp(this.q, this.x.subtract(b.toBigInteger()).mod(this.q));\n}\n\nfunction feFpMultiply(b) {\n return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger()).mod(this.q));\n}\n\nfunction feFpSquare() {\n return new ECFieldElementFp(this.q, this.x.square().mod(this.q));\n}\n\nfunction feFpDivide(b) {\n return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger().modInverse(this.q)).mod(this.q));\n}\n\nECFieldElementFp.prototype.equals = feFpEquals;\nECFieldElementFp.prototype.toBigInteger = feFpToBigInteger;\nECFieldElementFp.prototype.negate = feFpNegate;\nECFieldElementFp.prototype.add = feFpAdd;\nECFieldElementFp.prototype.subtract = feFpSubtract;\nECFieldElementFp.prototype.multiply = feFpMultiply;\nECFieldElementFp.prototype.square = feFpSquare;\nECFieldElementFp.prototype.divide = feFpDivide;\n\n// ----------------\n// ECPointFp\n\n// constructor\nfunction ECPointFp(curve,x,y,z) {\n this.curve = curve;\n this.x = x;\n this.y = y;\n // Projective coordinates: either zinv == null or z * zinv == 1\n // z and zinv are just BigIntegers, not fieldElements\n if(z == null) {\n this.z = BigInteger.ONE;\n }\n else {\n this.z = z;\n }\n this.zinv = null;\n //TODO: compression flag\n}\n\nfunction pointFpGetX() {\n if(this.zinv == null) {\n this.zinv = this.z.modInverse(this.curve.q);\n }\n var r = this.x.toBigInteger().multiply(this.zinv);\n this.curve.reduce(r);\n return this.curve.fromBigInteger(r);\n}\n\nfunction pointFpGetY() {\n if(this.zinv == null) {\n this.zinv = this.z.modInverse(this.curve.q);\n }\n var r = this.y.toBigInteger().multiply(this.zinv);\n this.curve.reduce(r);\n return this.curve.fromBigInteger(r);\n}\n\nfunction pointFpEquals(other) {\n if(other == this) return true;\n if(this.isInfinity()) return other.isInfinity();\n if(other.isInfinity()) return this.isInfinity();\n var u, v;\n // u = Y2 * Z1 - Y1 * Z2\n u = other.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(other.z)).mod(this.curve.q);\n if(!u.equals(BigInteger.ZERO)) return false;\n // v = X2 * Z1 - X1 * Z2\n v = other.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(other.z)).mod(this.curve.q);\n return v.equals(BigInteger.ZERO);\n}\n\nfunction pointFpIsInfinity() {\n if((this.x == null) && (this.y == null)) return true;\n return this.z.equals(BigInteger.ZERO) && !this.y.toBigInteger().equals(BigInteger.ZERO);\n}\n\nfunction pointFpNegate() {\n return new ECPointFp(this.curve, this.x, this.y.negate(), this.z);\n}\n\nfunction pointFpAdd(b) {\n if(this.isInfinity()) return b;\n if(b.isInfinity()) return this;\n\n // u = Y2 * Z1 - Y1 * Z2\n var u = b.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(b.z)).mod(this.curve.q);\n // v = X2 * Z1 - X1 * Z2\n var v = b.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(b.z)).mod(this.curve.q);\n\n if(BigInteger.ZERO.equals(v)) {\n if(BigInteger.ZERO.equals(u)) {\n return this.twice(); // this == b, so double\n }\n\treturn this.curve.getInfinity(); // this = -b, so infinity\n }\n\n var THREE = new BigInteger(\"3\");\n var x1 = this.x.toBigInteger();\n var y1 = this.y.toBigInteger();\n var x2 = b.x.toBigInteger();\n var y2 = b.y.toBigInteger();\n\n var v2 = v.square();\n var v3 = v2.multiply(v);\n var x1v2 = x1.multiply(v2);\n var zu2 = u.square().multiply(this.z);\n\n // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)\n var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.q);\n // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3\n var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.q);\n // z3 = v^3 * z1 * z2\n var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.q);\n\n return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3);\n}\n\nfunction pointFpTwice() {\n if(this.isInfinity()) return this;\n if(this.y.toBigInteger().signum() == 0) return this.curve.getInfinity();\n\n // TODO: optimized handling of constants\n var THREE = new BigInteger(\"3\");\n var x1 = this.x.toBigInteger();\n var y1 = this.y.toBigInteger();\n\n var y1z1 = y1.multiply(this.z);\n var y1sqz1 = y1z1.multiply(y1).mod(this.curve.q);\n var a = this.curve.a.toBigInteger();\n\n // w = 3 * x1^2 + a * z1^2\n var w = x1.square().multiply(THREE);\n if(!BigInteger.ZERO.equals(a)) {\n w = w.add(this.z.square().multiply(a));\n }\n w = w.mod(this.curve.q);\n //this.curve.reduce(w);\n // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)\n var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.q);\n // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3\n var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.square().multiply(w)).mod(this.curve.q);\n // z3 = 8 * (y1 * z1)^3\n var z3 = y1z1.square().multiply(y1z1).shiftLeft(3).mod(this.curve.q);\n\n return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3);\n}\n\n// Simple NAF (Non-Adjacent Form) multiplication algorithm\n// TODO: modularize the multiplication algorithm\nfunction pointFpMultiply(k) {\n if(this.isInfinity()) return this;\n if(k.signum() == 0) return this.curve.getInfinity();\n\n var e = k;\n var h = e.multiply(new BigInteger(\"3\"));\n\n var neg = this.negate();\n var R = this;\n\n var i;\n for(i = h.bitLength() - 2; i > 0; --i) {\n\tR = R.twice();\n\n\tvar hBit = h.testBit(i);\n\tvar eBit = e.testBit(i);\n\n\tif (hBit != eBit) {\n\t R = R.add(hBit ? this : neg);\n\t}\n }\n\n return R;\n}\n\n// Compute this*j + x*k (simultaneous multiplication)\nfunction pointFpMultiplyTwo(j,x,k) {\n var i;\n if(j.bitLength() > k.bitLength())\n i = j.bitLength() - 1;\n else\n i = k.bitLength() - 1;\n\n var R = this.curve.getInfinity();\n var both = this.add(x);\n while(i >= 0) {\n R = R.twice();\n if(j.testBit(i)) {\n if(k.testBit(i)) {\n R = R.add(both);\n }\n else {\n R = R.add(this);\n }\n }\n else {\n if(k.testBit(i)) {\n R = R.add(x);\n }\n }\n --i;\n }\n\n return R;\n}\n\nECPointFp.prototype.getX = pointFpGetX;\nECPointFp.prototype.getY = pointFpGetY;\nECPointFp.prototype.equals = pointFpEquals;\nECPointFp.prototype.isInfinity = pointFpIsInfinity;\nECPointFp.prototype.negate = pointFpNegate;\nECPointFp.prototype.add = pointFpAdd;\nECPointFp.prototype.twice = pointFpTwice;\nECPointFp.prototype.multiply = pointFpMultiply;\nECPointFp.prototype.multiplyTwo = pointFpMultiplyTwo;\n\n// ----------------\n// ECCurveFp\n\n// constructor\nfunction ECCurveFp(q,a,b) {\n this.q = q;\n this.a = this.fromBigInteger(a);\n this.b = this.fromBigInteger(b);\n this.infinity = new ECPointFp(this, null, null);\n this.reducer = new Barrett(this.q);\n}\n\nfunction curveFpGetQ() {\n return this.q;\n}\n\nfunction curveFpGetA() {\n return this.a;\n}\n\nfunction curveFpGetB() {\n return this.b;\n}\n\nfunction curveFpEquals(other) {\n if(other == this) return true;\n return(this.q.equals(other.q) && this.a.equals(other.a) && this.b.equals(other.b));\n}\n\nfunction curveFpGetInfinity() {\n return this.infinity;\n}\n\nfunction curveFpFromBigInteger(x) {\n return new ECFieldElementFp(this.q, x);\n}\n\nfunction curveReduce(x) {\n this.reducer.reduce(x);\n}\n\n// for now, work with hex strings because they're easier in JS\nfunction curveFpDecodePointHex(s) {\n switch(parseInt(s.substr(0,2), 16)) { // first byte\n case 0:\n\treturn this.infinity;\n case 2:\n case 3:\n\t// point compression not supported yet\n\treturn null;\n case 4:\n case 6:\n case 7:\n\tvar len = (s.length - 2) / 2;\n\tvar xHex = s.substr(2, len);\n\tvar yHex = s.substr(len+2, len);\n\n\treturn new ECPointFp(this,\n\t\t\t this.fromBigInteger(new BigInteger(xHex, 16)),\n\t\t\t this.fromBigInteger(new BigInteger(yHex, 16)));\n\n default: // unsupported\n\treturn null;\n }\n}\n\nfunction curveFpEncodePointHex(p) {\n\tif (p.isInfinity()) return \"00\";\n\tvar xHex = p.getX().toBigInteger().toString(16);\n\tvar yHex = p.getY().toBigInteger().toString(16);\n\tvar oLen = this.getQ().toString(16).length;\n\tif ((oLen % 2) != 0) oLen++;\n\twhile (xHex.length < oLen) {\n\t\txHex = \"0\" + xHex;\n\t}\n\twhile (yHex.length < oLen) {\n\t\tyHex = \"0\" + yHex;\n\t}\n\treturn \"04\" + xHex + yHex;\n}\n\nECCurveFp.prototype.getQ = curveFpGetQ;\nECCurveFp.prototype.getA = curveFpGetA;\nECCurveFp.prototype.getB = curveFpGetB;\nECCurveFp.prototype.equals = curveFpEquals;\nECCurveFp.prototype.getInfinity = curveFpGetInfinity;\nECCurveFp.prototype.fromBigInteger = curveFpFromBigInteger;\nECCurveFp.prototype.reduce = curveReduce;\n//ECCurveFp.prototype.decodePointHex = curveFpDecodePointHex;\nECCurveFp.prototype.encodePointHex = curveFpEncodePointHex;\n\n// from: https://github.com/kaielvin/jsbn-ec-point-compression\nECCurveFp.prototype.decodePointHex = function(s)\n{\n\tvar yIsEven;\n switch(parseInt(s.substr(0,2), 16)) { // first byte\n case 0:\n\treturn this.infinity;\n case 2:\n\tyIsEven = false;\n case 3:\n\tif(yIsEven == undefined) yIsEven = true;\n\tvar len = s.length - 2;\n\tvar xHex = s.substr(2, len);\n\tvar x = this.fromBigInteger(new BigInteger(xHex,16));\n\tvar alpha = x.multiply(x.square().add(this.getA())).add(this.getB());\n\tvar beta = alpha.sqrt();\n\n if (beta == null) throw \"Invalid point compression\";\n\n var betaValue = beta.toBigInteger();\n if (betaValue.testBit(0) != yIsEven)\n {\n // Use the other root\n beta = this.fromBigInteger(this.getQ().subtract(betaValue));\n }\n return new ECPointFp(this,x,beta);\n case 4:\n case 6:\n case 7:\n\tvar len = (s.length - 2) / 2;\n\tvar xHex = s.substr(2, len);\n\tvar yHex = s.substr(len+2, len);\n\n\treturn new ECPointFp(this,\n\t\t\t this.fromBigInteger(new BigInteger(xHex, 16)),\n\t\t\t this.fromBigInteger(new BigInteger(yHex, 16)));\n\n default: // unsupported\n\treturn null;\n }\n}\nECCurveFp.prototype.encodeCompressedPointHex = function(p)\n{\n\tif (p.isInfinity()) return \"00\";\n\tvar xHex = p.getX().toBigInteger().toString(16);\n\tvar oLen = this.getQ().toString(16).length;\n\tif ((oLen % 2) != 0) oLen++;\n\twhile (xHex.length < oLen)\n\t\txHex = \"0\" + xHex;\n\tvar yPrefix;\n\tif(p.getY().toBigInteger().isEven()) yPrefix = \"02\";\n\telse yPrefix = \"03\";\n\n\treturn yPrefix + xHex;\n}\n\n\nECFieldElementFp.prototype.getR = function()\n{\n\tif(this.r != undefined) return this.r;\n\n this.r = null;\n var bitLength = this.q.bitLength();\n if (bitLength > 128)\n {\n var firstWord = this.q.shiftRight(bitLength - 64);\n if (firstWord.intValue() == -1)\n {\n this.r = BigInteger.ONE.shiftLeft(bitLength).subtract(this.q);\n }\n }\n return this.r;\n}\nECFieldElementFp.prototype.modMult = function(x1,x2)\n{\n return this.modReduce(x1.multiply(x2));\n}\nECFieldElementFp.prototype.modReduce = function(x)\n{\n if (this.getR() != null)\n {\n var qLen = q.bitLength();\n while (x.bitLength() > (qLen + 1))\n {\n var u = x.shiftRight(qLen);\n var v = x.subtract(u.shiftLeft(qLen));\n if (!this.getR().equals(BigInteger.ONE))\n {\n u = u.multiply(this.getR());\n }\n x = u.add(v); \n }\n while (x.compareTo(q) >= 0)\n {\n x = x.subtract(q);\n }\n }\n else\n {\n x = x.mod(q);\n }\n return x;\n}\nECFieldElementFp.prototype.sqrt = function()\n{\n if (!this.q.testBit(0)) throw \"unsupported\";\n\n // p mod 4 == 3\n if (this.q.testBit(1))\n {\n \tvar z = new ECFieldElementFp(this.q,this.x.modPow(this.q.shiftRight(2).add(BigInteger.ONE),this.q));\n \treturn z.square().equals(this) ? z : null;\n }\n\n // p mod 4 == 1\n var qMinusOne = this.q.subtract(BigInteger.ONE);\n\n var legendreExponent = qMinusOne.shiftRight(1);\n if (!(this.x.modPow(legendreExponent, this.q).equals(BigInteger.ONE)))\n {\n return null;\n }\n\n var u = qMinusOne.shiftRight(2);\n var k = u.shiftLeft(1).add(BigInteger.ONE);\n\n var Q = this.x;\n var fourQ = modDouble(modDouble(Q));\n\n var U, V;\n do\n {\n var P;\n do\n {\n P = new BigInteger(this.q.bitLength(), new SecureRandom());\n }\n while (P.compareTo(this.q) >= 0\n || !(P.multiply(P).subtract(fourQ).modPow(legendreExponent, this.q).equals(qMinusOne)));\n\n var result = this.lucasSequence(P, Q, k);\n U = result[0];\n V = result[1];\n\n if (this.modMult(V, V).equals(fourQ))\n {\n // Integer division by 2, mod q\n if (V.testBit(0))\n {\n V = V.add(q);\n }\n\n V = V.shiftRight(1);\n\n return new ECFieldElementFp(q,V);\n }\n }\n while (U.equals(BigInteger.ONE) || U.equals(qMinusOne));\n\n return null;\n}\nECFieldElementFp.prototype.lucasSequence = function(P,Q,k)\n{\n var n = k.bitLength();\n var s = k.getLowestSetBit();\n\n var Uh = BigInteger.ONE;\n var Vl = BigInteger.TWO;\n var Vh = P;\n var Ql = BigInteger.ONE;\n var Qh = BigInteger.ONE;\n\n for (var j = n - 1; j >= s + 1; --j)\n {\n Ql = this.modMult(Ql, Qh);\n\n if (k.testBit(j))\n {\n Qh = this.modMult(Ql, Q);\n Uh = this.modMult(Uh, Vh);\n Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql)));\n Vh = this.modReduce(Vh.multiply(Vh).subtract(Qh.shiftLeft(1)));\n }\n else\n {\n Qh = Ql;\n Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql));\n Vh = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql)));\n Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1)));\n }\n }\n\n Ql = this.modMult(Ql, Qh);\n Qh = this.modMult(Ql, Q);\n Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql));\n Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql)));\n Ql = this.modMult(Ql, Qh);\n\n for (var j = 1; j <= s; ++j)\n {\n Uh = this.modMult(Uh, Vl);\n Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1)));\n Ql = this.modMult(Ql, Ql);\n }\n\n return [ Uh, Vl ];\n}\n\nvar exports = {\n ECCurveFp: ECCurveFp,\n ECPointFp: ECPointFp,\n ECFieldElementFp: ECFieldElementFp\n}\n\nmodule.exports = exports\n","// Named EC curves\n\n// Requires ec.js, jsbn.js, and jsbn2.js\nvar BigInteger = require('jsbn').BigInteger\nvar ECCurveFp = require('./ec.js').ECCurveFp\n\n\n// ----------------\n// X9ECParameters\n\n// constructor\nfunction X9ECParameters(curve,g,n,h) {\n this.curve = curve;\n this.g = g;\n this.n = n;\n this.h = h;\n}\n\nfunction x9getCurve() {\n return this.curve;\n}\n\nfunction x9getG() {\n return this.g;\n}\n\nfunction x9getN() {\n return this.n;\n}\n\nfunction x9getH() {\n return this.h;\n}\n\nX9ECParameters.prototype.getCurve = x9getCurve;\nX9ECParameters.prototype.getG = x9getG;\nX9ECParameters.prototype.getN = x9getN;\nX9ECParameters.prototype.getH = x9getH;\n\n// ----------------\n// SECNamedCurves\n\nfunction fromHex(s) { return new BigInteger(s, 16); }\n\nfunction secp128r1() {\n // p = 2^128 - 2^97 - 1\n var p = fromHex(\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF\");\n var a = fromHex(\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC\");\n var b = fromHex(\"E87579C11079F43DD824993C2CEE5ED3\");\n //byte[] S = Hex.decode(\"000E0D4D696E6768756151750CC03A4473D03679\");\n var n = fromHex(\"FFFFFFFE0000000075A30D1B9038A115\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"161FF7528B899B2D0C28607CA52C5B86\"\n\t\t+ \"CF5AC8395BAFEB13C02DA292DDED7A83\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp160k1() {\n // p = 2^160 - 2^32 - 2^14 - 2^12 - 2^9 - 2^8 - 2^7 - 2^3 - 2^2 - 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73\");\n var a = BigInteger.ZERO;\n var b = fromHex(\"7\");\n //byte[] S = null;\n var n = fromHex(\"0100000000000000000001B8FA16DFAB9ACA16B6B3\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"3B4C382CE37AA192A4019E763036F4F5DD4D7EBB\"\n + \"938CF935318FDCED6BC28286531733C3F03C4FEE\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp160r1() {\n // p = 2^160 - 2^31 - 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF\");\n var a = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC\");\n var b = fromHex(\"1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45\");\n //byte[] S = Hex.decode(\"1053CDE42C14D696E67687561517533BF3F83345\");\n var n = fromHex(\"0100000000000000000001F4C8F927AED3CA752257\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n\t\t+ \"4A96B5688EF573284664698968C38BB913CBFC82\"\n\t\t+ \"23A628553168947D59DCC912042351377AC5FB32\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp192k1() {\n // p = 2^192 - 2^32 - 2^12 - 2^8 - 2^7 - 2^6 - 2^3 - 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37\");\n var a = BigInteger.ZERO;\n var b = fromHex(\"3\");\n //byte[] S = null;\n var n = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D\"\n + \"9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp192r1() {\n // p = 2^192 - 2^64 - 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF\");\n var a = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC\");\n var b = fromHex(\"64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1\");\n //byte[] S = Hex.decode(\"3045AE6FC8422F64ED579528D38120EAE12196D5\");\n var n = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012\"\n + \"07192B95FFC8DA78631011ED6B24CDD573F977A11E794811\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp224r1() {\n // p = 2^224 - 2^96 + 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001\");\n var a = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE\");\n var b = fromHex(\"B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4\");\n //byte[] S = Hex.decode(\"BD71344799D5C7FCDC45B59FA3B9AB8F6A948BC5\");\n var n = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21\"\n + \"BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp256r1() {\n // p = 2^224 (2^32 - 1) + 2^192 + 2^96 - 1\n var p = fromHex(\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF\");\n var a = fromHex(\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC\");\n var b = fromHex(\"5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B\");\n //byte[] S = Hex.decode(\"C49D360886E704936A6678E1139D26B7819F7E90\");\n var n = fromHex(\"FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296\"\n\t\t+ \"4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5\");\n return new X9ECParameters(curve, G, n, h);\n}\n\n// TODO: make this into a proper hashtable\nfunction getSECCurveByName(name) {\n if(name == \"secp128r1\") return secp128r1();\n if(name == \"secp160k1\") return secp160k1();\n if(name == \"secp160r1\") return secp160r1();\n if(name == \"secp192k1\") return secp192k1();\n if(name == \"secp192r1\") return secp192r1();\n if(name == \"secp224r1\") return secp224r1();\n if(name == \"secp256r1\") return secp256r1();\n return null;\n}\n\nmodule.exports = {\n \"secp128r1\":secp128r1,\n \"secp160k1\":secp160k1,\n \"secp160r1\":secp160r1,\n \"secp192k1\":secp192k1,\n \"secp192r1\":secp192r1,\n \"secp224r1\":secp224r1,\n \"secp256r1\":secp256r1\n}\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","/**\n * Code refactored from Mozilla Developer Network:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n */\n\n'use strict';\n\nfunction assign(target, firstSource) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n}\n\nfunction polyfill() {\n if (!Object.assign) {\n Object.defineProperty(Object, 'assign', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: assign\n });\n }\n}\n\nmodule.exports = {\n assign: assign,\n polyfill: polyfill\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","/*\n * extsprintf.js: extended POSIX-style sprintf\n */\n\nvar mod_assert = require('assert');\nvar mod_util = require('util');\n\n/*\n * Public interface\n */\nexports.sprintf = jsSprintf;\nexports.printf = jsPrintf;\nexports.fprintf = jsFprintf;\n\n/*\n * Stripped down version of s[n]printf(3c). We make a best effort to throw an\n * exception when given a format string we don't understand, rather than\n * ignoring it, so that we won't break existing programs if/when we go implement\n * the rest of this.\n *\n * This implementation currently supports specifying\n *\t- field alignment ('-' flag),\n * \t- zero-pad ('0' flag)\n *\t- always show numeric sign ('+' flag),\n *\t- field width\n *\t- conversions for strings, decimal integers, and floats (numbers).\n *\t- argument size specifiers. These are all accepted but ignored, since\n *\t Javascript has no notion of the physical size of an argument.\n *\n * Everything else is currently unsupported, most notably precision, unsigned\n * numbers, non-decimal numbers, and characters.\n */\nfunction jsSprintf(fmt)\n{\n\tvar regex = [\n\t '([^%]*)',\t\t\t\t/* normal text */\n\t '%',\t\t\t\t/* start of format */\n\t '([\\'\\\\-+ #0]*?)',\t\t\t/* flags (optional) */\n\t '([1-9]\\\\d*)?',\t\t\t/* width (optional) */\n\t '(\\\\.([1-9]\\\\d*))?',\t\t/* precision (optional) */\n\t '[lhjztL]*?',\t\t\t/* length mods (ignored) */\n\t '([diouxXfFeEgGaAcCsSp%jr])'\t/* conversion */\n\t].join('');\n\n\tvar re = new RegExp(regex);\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\tvar flags, width, precision, conversion;\n\tvar left, pad, sign, arg, match;\n\tvar ret = '';\n\tvar argn = 1;\n\n\tmod_assert.equal('string', typeof (fmt));\n\n\twhile ((match = re.exec(fmt)) !== null) {\n\t\tret += match[1];\n\t\tfmt = fmt.substring(match[0].length);\n\n\t\tflags = match[2] || '';\n\t\twidth = match[3] || 0;\n\t\tprecision = match[4] || '';\n\t\tconversion = match[6];\n\t\tleft = false;\n\t\tsign = false;\n\t\tpad = ' ';\n\n\t\tif (conversion == '%') {\n\t\t\tret += '%';\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (args.length === 0)\n\t\t\tthrow (new Error('too few args to sprintf'));\n\n\t\targ = args.shift();\n\t\targn++;\n\n\t\tif (flags.match(/[\\' #]/))\n\t\t\tthrow (new Error(\n\t\t\t 'unsupported flags: ' + flags));\n\n\t\tif (precision.length > 0)\n\t\t\tthrow (new Error(\n\t\t\t 'non-zero precision not supported'));\n\n\t\tif (flags.match(/-/))\n\t\t\tleft = true;\n\n\t\tif (flags.match(/0/))\n\t\t\tpad = '0';\n\n\t\tif (flags.match(/\\+/))\n\t\t\tsign = true;\n\n\t\tswitch (conversion) {\n\t\tcase 's':\n\t\t\tif (arg === undefined || arg === null)\n\t\t\t\tthrow (new Error('argument ' + argn +\n\t\t\t\t ': attempted to print undefined or null ' +\n\t\t\t\t 'as a string'));\n\t\t\tret += doPad(pad, width, left, arg.toString());\n\t\t\tbreak;\n\n\t\tcase 'd':\n\t\t\targ = Math.floor(arg);\n\t\t\t/*jsl:fallthru*/\n\t\tcase 'f':\n\t\t\tsign = sign && arg > 0 ? '+' : '';\n\t\t\tret += sign + doPad(pad, width, left,\n\t\t\t arg.toString());\n\t\t\tbreak;\n\n\t\tcase 'x':\n\t\t\tret += doPad(pad, width, left, arg.toString(16));\n\t\t\tbreak;\n\n\t\tcase 'j': /* non-standard */\n\t\t\tif (width === 0)\n\t\t\t\twidth = 10;\n\t\t\tret += mod_util.inspect(arg, false, width);\n\t\t\tbreak;\n\n\t\tcase 'r': /* non-standard */\n\t\t\tret += dumpException(arg);\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow (new Error('unsupported conversion: ' +\n\t\t\t conversion));\n\t\t}\n\t}\n\n\tret += fmt;\n\treturn (ret);\n}\n\nfunction jsPrintf() {\n\tvar args = Array.prototype.slice.call(arguments);\n\targs.unshift(process.stdout);\n\tjsFprintf.apply(null, args);\n}\n\nfunction jsFprintf(stream) {\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\treturn (stream.write(jsSprintf.apply(this, args)));\n}\n\nfunction doPad(chr, width, left, str)\n{\n\tvar ret = str;\n\n\twhile (ret.length < width) {\n\t\tif (left)\n\t\t\tret += chr;\n\t\telse\n\t\t\tret = chr + ret;\n\t}\n\n\treturn (ret);\n}\n\n/*\n * This function dumps long stack traces for exceptions having a cause() method.\n * See node-verror for an example.\n */\nfunction dumpException(ex)\n{\n\tvar ret;\n\n\tif (!(ex instanceof Error))\n\t\tthrow (new Error(jsSprintf('invalid type for %%r: %j', ex)));\n\n\t/* Note that V8 prepends \"ex.stack\" with ex.toString(). */\n\tret = 'EXCEPTION: ' + ex.constructor.name + ': ' + ex.stack;\n\n\tif (ex.cause && typeof (ex.cause) === 'function') {\n\t\tvar cex = ex.cause();\n\t\tif (cex) {\n\t\t\tret += '\\nCaused by: ' + dumpException(cex);\n\t\t}\n\t}\n\n\treturn (ret);\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nmodule.exports = function (data, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (node) {\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n if (node === undefined) return;\n if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n if (typeof node !== 'object') return JSON.stringify(node);\n\n var i, out;\n if (Array.isArray(node)) {\n out = '[';\n for (i = 0; i < node.length; i++) {\n if (i) out += ',';\n out += stringify(node[i]) || 'null';\n }\n return out + ']';\n }\n\n if (node === null) return 'null';\n\n if (seen.indexOf(node) !== -1) {\n if (cycles) return JSON.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n\n var seenIndex = seen.push(node) - 1;\n var keys = Object.keys(node).sort(cmp && cmp(node));\n out = '';\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node[key]);\n\n if (!value) continue;\n if (out) out += ',';\n out += JSON.stringify(key) + ':' + value;\n }\n seen.splice(seenIndex, 1);\n return '{' + out + '}';\n })(data);\n};\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","module.exports = ForeverAgent\nForeverAgent.SSL = ForeverAgentSSL\n\nvar util = require('util')\n , Agent = require('http').Agent\n , net = require('net')\n , tls = require('tls')\n , AgentSSL = require('https').Agent\n \nfunction getConnectionName(host, port) { \n var name = ''\n if (typeof host === 'string') {\n name = host + ':' + port\n } else {\n // For node.js v012.0 and iojs-v1.5.1, host is an object. And any existing localAddress is part of the connection name.\n name = host.host + ':' + host.port + ':' + (host.localAddress ? (host.localAddress + ':') : ':')\n }\n return name\n} \n\nfunction ForeverAgent(options) {\n var self = this\n self.options = options || {}\n self.requests = {}\n self.sockets = {}\n self.freeSockets = {}\n self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets\n self.minSockets = self.options.minSockets || ForeverAgent.defaultMinSockets\n self.on('free', function(socket, host, port) {\n var name = getConnectionName(host, port)\n\n if (self.requests[name] && self.requests[name].length) {\n self.requests[name].shift().onSocket(socket)\n } else if (self.sockets[name].length < self.minSockets) {\n if (!self.freeSockets[name]) self.freeSockets[name] = []\n self.freeSockets[name].push(socket)\n \n // if an error happens while we don't use the socket anyway, meh, throw the socket away\n var onIdleError = function() {\n socket.destroy()\n }\n socket._onIdleError = onIdleError\n socket.on('error', onIdleError)\n } else {\n // If there are no pending requests just destroy the\n // socket and it will get removed from the pool. This\n // gets us out of timeout issues and allows us to\n // default to Connection:keep-alive.\n socket.destroy()\n }\n })\n\n}\nutil.inherits(ForeverAgent, Agent)\n\nForeverAgent.defaultMinSockets = 5\n\n\nForeverAgent.prototype.createConnection = net.createConnection\nForeverAgent.prototype.addRequestNoreuse = Agent.prototype.addRequest\nForeverAgent.prototype.addRequest = function(req, host, port) {\n var name = getConnectionName(host, port)\n \n if (typeof host !== 'string') {\n var options = host\n port = options.port\n host = options.host\n }\n\n if (this.freeSockets[name] && this.freeSockets[name].length > 0 && !req.useChunkedEncodingByDefault) {\n var idleSocket = this.freeSockets[name].pop()\n idleSocket.removeListener('error', idleSocket._onIdleError)\n delete idleSocket._onIdleError\n req._reusedSocket = true\n req.onSocket(idleSocket)\n } else {\n this.addRequestNoreuse(req, host, port)\n }\n}\n\nForeverAgent.prototype.removeSocket = function(s, name, host, port) {\n if (this.sockets[name]) {\n var index = this.sockets[name].indexOf(s)\n if (index !== -1) {\n this.sockets[name].splice(index, 1)\n }\n } else if (this.sockets[name] && this.sockets[name].length === 0) {\n // don't leak\n delete this.sockets[name]\n delete this.requests[name]\n }\n \n if (this.freeSockets[name]) {\n var index = this.freeSockets[name].indexOf(s)\n if (index !== -1) {\n this.freeSockets[name].splice(index, 1)\n if (this.freeSockets[name].length === 0) {\n delete this.freeSockets[name]\n }\n }\n }\n\n if (this.requests[name] && this.requests[name].length) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(name, host, port).emit('free')\n }\n}\n\nfunction ForeverAgentSSL (options) {\n ForeverAgent.call(this, options)\n}\nutil.inherits(ForeverAgentSSL, ForeverAgent)\n\nForeverAgentSSL.prototype.createConnection = createConnectionSSL\nForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest\n\nfunction createConnectionSSL (port, host, options) {\n if (typeof port === 'object') {\n options = port;\n } else if (typeof host === 'object') {\n options = host;\n } else if (typeof options === 'object') {\n options = options;\n } else {\n options = {};\n }\n\n if (typeof port === 'number') {\n options.port = port;\n }\n\n if (typeof host === 'string') {\n options.host = host;\n }\n\n return tls.connect(options);\n}\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/g, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict'\n\nmodule.exports = {\n afterRequest: require('./afterRequest.json'),\n beforeRequest: require('./beforeRequest.json'),\n browser: require('./browser.json'),\n cache: require('./cache.json'),\n content: require('./content.json'),\n cookie: require('./cookie.json'),\n creator: require('./creator.json'),\n entry: require('./entry.json'),\n har: require('./har.json'),\n header: require('./header.json'),\n log: require('./log.json'),\n page: require('./page.json'),\n pageTimings: require('./pageTimings.json'),\n postData: require('./postData.json'),\n query: require('./query.json'),\n request: require('./request.json'),\n response: require('./response.json'),\n timings: require('./timings.json')\n}\n","function HARError (errors) {\n var message = 'validation failed'\n\n this.name = 'HARError'\n this.message = message\n this.errors = errors\n\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor)\n } else {\n this.stack = (new Error(message)).stack\n }\n}\n\nHARError.prototype = Error.prototype\n\nmodule.exports = HARError\n","var Ajv = require('ajv')\nvar HARError = require('./error')\nvar schemas = require('har-schema')\n\nvar ajv\n\nfunction createAjvInstance () {\n var ajv = new Ajv({\n allErrors: true\n })\n ajv.addMetaSchema(require('ajv/lib/refs/json-schema-draft-06.json'))\n ajv.addSchema(schemas)\n\n return ajv\n}\n\nfunction validate (name, data) {\n data = data || {}\n\n // validator config\n ajv = ajv || createAjvInstance()\n\n var validate = ajv.getSchema(name + '.json')\n\n return new Promise(function (resolve, reject) {\n var valid = validate(data)\n\n !valid ? reject(new HARError(validate.errors)) : resolve(data)\n })\n}\n\nexports.afterRequest = function (data) {\n return validate('afterRequest', data)\n}\n\nexports.beforeRequest = function (data) {\n return validate('beforeRequest', data)\n}\n\nexports.browser = function (data) {\n return validate('browser', data)\n}\n\nexports.cache = function (data) {\n return validate('cache', data)\n}\n\nexports.content = function (data) {\n return validate('content', data)\n}\n\nexports.cookie = function (data) {\n return validate('cookie', data)\n}\n\nexports.creator = function (data) {\n return validate('creator', data)\n}\n\nexports.entry = function (data) {\n return validate('entry', data)\n}\n\nexports.har = function (data) {\n return validate('har', data)\n}\n\nexports.header = function (data) {\n return validate('header', data)\n}\n\nexports.log = function (data) {\n return validate('log', data)\n}\n\nexports.page = function (data) {\n return validate('page', data)\n}\n\nexports.pageTimings = function (data) {\n return validate('pageTimings', data)\n}\n\nexports.postData = function (data) {\n return validate('postData', data)\n}\n\nexports.query = function (data) {\n return validate('query', data)\n}\n\nexports.request = function (data) {\n return validate('request', data)\n}\n\nexports.response = function (data) {\n return validate('response', data)\n}\n\nexports.timings = function (data) {\n return validate('timings', data)\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar utils = require('./utils')\n , pathm = require('path')\n , fs = require('./fileSystem');\n\nvar wrapSuccess = utils.wrapSuccess\n , wrapFail = utils.wrapFail;\n\nexports.getFsInstance = fs.getInstance;\n\nexports.appendFile = function(path, data, callback) {\n fs.writeFile(path, data, callback, true);\n};\n\n\nexports.writeFile = function(path, data, callback) {\n fs.writeFile(path, data, callback, false);\n};\n\n\nexports.readFile = function(path, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {\n encoding: 'utf8'\n };\n }\n\n var success = wrapSuccess(callback)\n , fail = wrapFail(callback);\n\n fs.getFile(path, function(err, fileEntry) {\n fileEntry.file(function(file) {\n var reader = new FileReader();\n\n reader.onloadend = function(evt) {\n success(evt.target.result);\n };\n\n reader.onerror = function(err) {\n fail(err);\n };\n\n if (opts.encoding === 'utf8') {\n reader.readAsText(file);\n } else {\n reader.readAsDataURL(file);\n }\n }, fail);\n });\n};\n\n\nexports.unlink = function(path, callback) {\n var success = wrapSuccess(callback)\n , fail = wrapFail(callback);\n\n fs.getFile(path, function(err, file) {\n if (err) {\n fail(err);\n } else {\n file.remove(success, fail);\n }\n });\n};\n\n\nexports.readdir = function(path, callback) {\n var success = wrapSuccess(callback)\n , fail = wrapFail(callback);\n\n fs.getDirectory(path, function(err, dirEntry) {\n if (err) {\n fail(err);\n } else {\n var directoryReader = dirEntry.createReader();\n directoryReader.readEntries(success, fail);\n }\n });\n};\n\n\nexports.mkdir = function(path, callback) {\n var newFolderName = pathm.basename(path)\n , basePath = pathm.dirname(path)\n , success = utils.wrapSuccess(callback)\n , fail = utils.wrapFail(callback)\n , opts = {\n create: true,\n exclusive: true\n };\n\n if (basePath === '.') {\n fs.getDirectory(newFolderName, opts, callback);\n } else {\n fs.getDirectory(basePath, function (err, dir) {\n if (err) {\n callback(err, null);\n } else {\n dir.getDirectory(newFolderName, opts, success, fail);\n }\n });\n }\n};\n\n\n/**\n * Remove a directory.\n * The FileSystem API expects directories to be empty but returns a\n * non-informative error on Android and possibly iOS so we check here\n * to ensure users know why directory deletes might fail.\n * @param {String} path\n * @param {Function} callback\n */\nexports.rmdir = function(path, callback) {\n var success = wrapSuccess(callback)\n , fail = wrapFail(callback);\n\n this.readdir(path, function(err, list) {\n if (err) {\n fail(err);\n } else if (list && list.length > 0) {\n fail('ENOTEMPTY: Directory must be empty');\n } else {\n fs.getDirectory(path, function(err, dirEntry) {\n if (err) {\n fail(err);\n } else {\n dirEntry.remove(success, fail);\n }\n });\n }\n });\n};\n\n\nexports.exists = function(path, callback) {\n var fail = wrapFail(callback);\n\n fs.getFile(path, {\n // Don't create the file, just look for it\n create: false\n }, function(err) {\n // See https://www.chromestatus.com/features/6687420359639040.\n if (err &&\n ((window.FileError && err.code === 1) ||\n (err.name === 'NotFoundError'))) { // NOT FOUND\n // If the file isn't found we don't want an error, pass false!\n callback(false);\n } else if (err) {\n // An actual error occured, pass it along\n fail(err);\n } else {\n callback(true);\n }\n });\n};\n\n\nexports.stat = function(path, callback) {\n var success = wrapSuccess(callback)\n , fail = wrapFail(callback)\n , fn = fs.getFile;\n\n // TODO: Perhaps check for folder AND file instead, use whichever exists\n if (utils.isDirectory(path)) {\n fn = fs.getDirectory;\n }\n\n fn(path, function(err, res) {\n if (err) {\n fail(err);\n } else {\n res.getMetadata(success, fail);\n }\n });\n};\n\n\n/**\n * Initialise the file system component for use.\n * @param {Number} [quota]\n * @param {Function} callback\n */\nexports.init = function(bytes, callback) {\n fs.init(bytes, function(err) {\n if (err) {\n callback(err, null);\n } else {\n fs.getInstance(function(err /*, instance */) {\n callback(err, null);\n });\n }\n });\n};\n","'use strict';\n\nvar utils = require('./utils')\n , pathm = require('path');\n\nvar DEFAULT_QUOTA = (10 * 1024 * 1024); // 10MB\n\nvar fileSystem = null;\n\n/**\n * Get a FileSystem instance.\n * @param {Function} callback\n */\nexports.getInstance = function(callback) {\n if (fileSystem) {\n callback(null, fileSystem);\n } else {\n init(null, callback);\n }\n};\n\n\n/**\n * Initialises access to browser File System\n * @param {Number} bytes\n * @param {Function} callback\n */\nvar init = exports.init = function(bytes, callback) {\n requestQuota(bytes, function(err, grantedBytes) {\n if (err) {\n return callback(err, null);\n } else {\n requestFileSystem(grantedBytes, function(instance) {\n fileSystem = instance;\n callback(null, grantedBytes);\n }, function(err) {\n callback(err, null);\n });\n }\n });\n};\n\n\n/**\n * Write data to a file optionally appending it.\n * @param {String} path\n * @param {Mixed} data\n * @param {Function} callback\n * @param {Boolean} append\n */\nexports.writeFile = function(path, data, callback, append) {\n var fail = utils.wrapFail(callback)\n , success = utils.wrapSuccess(callback);\n\n this.getFile(path, {\n create: true,\n exclusive: false\n }, function(err, file) {\n if (err) {\n return callback(err, null);\n } else {\n file.createWriter(function(writer) {\n writer.onwrite = function(/*evt*/) {\n success(file.toURL());\n };\n\n writer.onerror = function(evt) {\n fail(evt.target.error);\n };\n\n if (append === true) {\n writer.seek(writer.length);\n }\n\n if (utils.isMobile()) {\n writer.write(data);\n } else {\n writer.write(new Blob([data]));\n }\n }, fail);\n }\n });\n};\n\n\n/**\n * Get a directory specified by path.\n * By default if the dir does not exist it is not created.\n * @param {String} path\n * @param {Object} [opts]\n * @param {Function} callback\n */\nexports.getDirectory = function(path, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {\n create: false\n };\n }\n\n var success = utils.wrapSuccess(callback)\n , fail = utils.wrapFail(callback);\n\n fileSystem.root.getDirectory(path, opts, success, fail);\n};\n\n\n/**\n * Get a file at a specified path.\n * By default if the file does not exist it is not created.\n * @param {String} path\n * @param {Object} [opts]\n * @param {Function} callback\n */\nexports.getFile = function(path, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {\n create: false\n };\n }\n\n var fileName = pathm.basename(path)\n , basePath = pathm.dirname(path)\n , success = utils.wrapSuccess(callback)\n , fail = utils.wrapFail(callback);\n\n function doGet (dirRef) {\n dirRef.getFile(fileName, opts, success, fail);\n }\n\n if (basePath === '.') {\n // File is in root directory\n doGet(fileSystem.root);\n } else {\n // Need to get container directory ref for the requested file\n this.getDirectory(basePath, opts, function (err, dir) {\n if (err) {\n callback(err, null);\n } else {\n doGet(dir);\n }\n });\n }\n};\n\n\n/**\n * Request access to the file system.\n * This is called only after quota is granted.\n * @param {Number} bytes\n * @param {Function} success\n * @param {Function} fail\n */\nfunction requestFileSystem(bytes, success, fail) {\n // These are in order of preference due to some being deprecated\n if (window.navigator.webkitRequestFileSystem) {\n window.navigator.webkitRequestFileSystem(bytes, success, fail);\n } else if (window.requestFileSystem) {\n window.requestFileSystem(\n window.LocalFileSystem.PERSISTENT,\n bytes,\n success,\n fail\n );\n } else if (window.webkitRequestFileSystem) {\n window.webkitRequestFileSystem(\n window.PERSISTENT,\n bytes,\n success,\n fail\n );\n } else {\n fail('NO_SUPPORT');\n }\n}\n\n\n/**\n * Request a quota from the FileSystem.\n * @param {Number} bytes\n * @param {Function} callback\n */\nfunction requestQuota(quota, callback) {\n // Allow user overide the default quota\n quota = quota || DEFAULT_QUOTA;\n\n function success(bytes) {\n callback(null, bytes);\n }\n\n function fail(err) {\n callback(err, null);\n }\n\n // These are in order of preference due to some being deprecated\n if (navigator.webkitPersistentStorage &&\n navigator.webkitPersistentStorage.requestQuota) {\n navigator.webkitPersistentStorage.requestQuota(quota, success, fail);\n } else if (window.webkitStorageInfo &&\n window.webkitStorageInfo.requestQuota) {\n window.webkitStorageInfo.requestQuota(\n window.PERSISTENT,\n quota,\n success,\n fail\n );\n } else if (window.requestFileSystem) {\n // PhoneGap apps should request a 0 quota\n if (utils.isPhoneGap() === true) {\n quota = 0;\n }\n\n success(quota);\n } else {\n fail('NO_SUPPORT');\n }\n}\n","'use strict';\n\n/**\n * Detect is the device a mobile device.\n * @return {Boolean}\n */\nexports.isMobile = function() {\n var ua = window.navigator.userAgent;\n return (ua.match(/Android|iPad|iPhone|iPod|Windows Phone/) !== null);\n};\n\n\n/**\n * Determine if this is a PhoneGap application.\n * @return {Boolean}\n */\nexports.isPhoneGap = function() {\n // TODO: Improve this...\n var proto = window.location.protocol;\n return (this.isMobile() && proto.indexOf('file') !== -1);\n};\n\n\n/**\n * Determine if FileSystem is supported.\n * @return {Boolean}\n */\nexports.supportsFileSystem = function() {\n if (this.isPhoneGap() === true) {\n return true;\n }\n\n // TODO: Test this works, Opera (WebKit) and Chrome\n return window.navigator.userAgent.match(/Chrome|Opera/);\n};\n\n\n/**\n * Wrap a callback for use as a success callback.\n * @param {Function} callback\n * @return {Function}\n */\nexports.wrapSuccess = function(callback) {\n return function() {\n var args = [null].concat(Array.prototype.slice.call(arguments));\n\n callback.apply(callback, args);\n };\n};\n\n\n/**\n * Wrap a callback for use as a failure callback.\n * @param {Function} callback\n * @return {Function}\n */\nexports.wrapFail = function(callback) {\n return function() {\n var args = Array.prototype.slice.call(arguments)\n , e = args[0];\n\n callback.apply(callback, [e, null]);\n };\n};\n\n\n/**\n * Check is provided path a directory.\n * @param {String} path\n * @return {Boolean}\n */\nexports.isDirectory = function(path) {\n return (path.lastIndexOf('/') === (path.length - 1));\n};\n","// Copyright 2015 Joyent, Inc.\n\nvar parser = require('./parser');\nvar signer = require('./signer');\nvar verify = require('./verify');\nvar utils = require('./utils');\n\n\n\n///--- API\n\nmodule.exports = {\n\n parse: parser.parseRequest,\n parseRequest: parser.parseRequest,\n\n sign: signer.signRequest,\n signRequest: signer.signRequest,\n createSigner: signer.createSigner,\n isSigner: signer.isSigner,\n\n sshKeyToPEM: utils.sshKeyToPEM,\n sshKeyFingerprint: utils.fingerprint,\n pemToRsaSSHKey: utils.pemToRsaSSHKey,\n\n verify: verify.verifySignature,\n verifySignature: verify.verifySignature,\n verifyHMAC: verify.verifyHMAC\n};\n","// Copyright 2012 Joyent, Inc. All rights reserved.\n\nvar assert = require('assert-plus');\nvar util = require('util');\nvar utils = require('./utils');\n\n\n\n///--- Globals\n\nvar HASH_ALGOS = utils.HASH_ALGOS;\nvar PK_ALGOS = utils.PK_ALGOS;\nvar HttpSignatureError = utils.HttpSignatureError;\nvar InvalidAlgorithmError = utils.InvalidAlgorithmError;\nvar validateAlgorithm = utils.validateAlgorithm;\n\nvar State = {\n New: 0,\n Params: 1\n};\n\nvar ParamsState = {\n Name: 0,\n Quote: 1,\n Value: 2,\n Comma: 3\n};\n\n\n///--- Specific Errors\n\n\nfunction ExpiredRequestError(message) {\n HttpSignatureError.call(this, message, ExpiredRequestError);\n}\nutil.inherits(ExpiredRequestError, HttpSignatureError);\n\n\nfunction InvalidHeaderError(message) {\n HttpSignatureError.call(this, message, InvalidHeaderError);\n}\nutil.inherits(InvalidHeaderError, HttpSignatureError);\n\n\nfunction InvalidParamsError(message) {\n HttpSignatureError.call(this, message, InvalidParamsError);\n}\nutil.inherits(InvalidParamsError, HttpSignatureError);\n\n\nfunction MissingHeaderError(message) {\n HttpSignatureError.call(this, message, MissingHeaderError);\n}\nutil.inherits(MissingHeaderError, HttpSignatureError);\n\nfunction StrictParsingError(message) {\n HttpSignatureError.call(this, message, StrictParsingError);\n}\nutil.inherits(StrictParsingError, HttpSignatureError);\n\n///--- Exported API\n\nmodule.exports = {\n\n /**\n * Parses the 'Authorization' header out of an http.ServerRequest object.\n *\n * Note that this API will fully validate the Authorization header, and throw\n * on any error. It will not however check the signature, or the keyId format\n * as those are specific to your environment. You can use the options object\n * to pass in extra constraints.\n *\n * As a response object you can expect this:\n *\n * {\n * \"scheme\": \"Signature\",\n * \"params\": {\n * \"keyId\": \"foo\",\n * \"algorithm\": \"rsa-sha256\",\n * \"headers\": [\n * \"date\" or \"x-date\",\n * \"digest\"\n * ],\n * \"signature\": \"base64\"\n * },\n * \"signingString\": \"ready to be passed to crypto.verify()\"\n * }\n *\n * @param {Object} request an http.ServerRequest.\n * @param {Object} options an optional options object with:\n * - clockSkew: allowed clock skew in seconds (default 300).\n * - headers: required header names (def: date or x-date)\n * - algorithms: algorithms to support (default: all).\n * - strict: should enforce latest spec parsing\n * (default: false).\n * @return {Object} parsed out object (see above).\n * @throws {TypeError} on invalid input.\n * @throws {InvalidHeaderError} on an invalid Authorization header error.\n * @throws {InvalidParamsError} if the params in the scheme are invalid.\n * @throws {MissingHeaderError} if the params indicate a header not present,\n * either in the request headers from the params,\n * or not in the params from a required header\n * in options.\n * @throws {StrictParsingError} if old attributes are used in strict parsing\n * mode.\n * @throws {ExpiredRequestError} if the value of date or x-date exceeds skew.\n */\n parseRequest: function parseRequest(request, options) {\n assert.object(request, 'request');\n assert.object(request.headers, 'request.headers');\n if (options === undefined) {\n options = {};\n }\n if (options.headers === undefined) {\n options.headers = [request.headers['x-date'] ? 'x-date' : 'date'];\n }\n assert.object(options, 'options');\n assert.arrayOfString(options.headers, 'options.headers');\n assert.optionalFinite(options.clockSkew, 'options.clockSkew');\n\n var authzHeaderName = options.authorizationHeaderName || 'authorization';\n\n if (!request.headers[authzHeaderName]) {\n throw new MissingHeaderError('no ' + authzHeaderName + ' header ' +\n 'present in the request');\n }\n\n options.clockSkew = options.clockSkew || 300;\n\n\n var i = 0;\n var state = State.New;\n var substate = ParamsState.Name;\n var tmpName = '';\n var tmpValue = '';\n\n var parsed = {\n scheme: '',\n params: {},\n signingString: ''\n };\n\n var authz = request.headers[authzHeaderName];\n for (i = 0; i < authz.length; i++) {\n var c = authz.charAt(i);\n\n switch (Number(state)) {\n\n case State.New:\n if (c !== ' ') parsed.scheme += c;\n else state = State.Params;\n break;\n\n case State.Params:\n switch (Number(substate)) {\n\n case ParamsState.Name:\n var code = c.charCodeAt(0);\n // restricted name of A-Z / a-z\n if ((code >= 0x41 && code <= 0x5a) || // A-Z\n (code >= 0x61 && code <= 0x7a)) { // a-z\n tmpName += c;\n } else if (c === '=') {\n if (tmpName.length === 0)\n throw new InvalidHeaderError('bad param format');\n substate = ParamsState.Quote;\n } else {\n throw new InvalidHeaderError('bad param format');\n }\n break;\n\n case ParamsState.Quote:\n if (c === '\"') {\n tmpValue = '';\n substate = ParamsState.Value;\n } else {\n throw new InvalidHeaderError('bad param format');\n }\n break;\n\n case ParamsState.Value:\n if (c === '\"') {\n parsed.params[tmpName] = tmpValue;\n substate = ParamsState.Comma;\n } else {\n tmpValue += c;\n }\n break;\n\n case ParamsState.Comma:\n if (c === ',') {\n tmpName = '';\n substate = ParamsState.Name;\n } else {\n throw new InvalidHeaderError('bad param format');\n }\n break;\n\n default:\n throw new Error('Invalid substate');\n }\n break;\n\n default:\n throw new Error('Invalid substate');\n }\n\n }\n\n if (!parsed.params.headers || parsed.params.headers === '') {\n if (request.headers['x-date']) {\n parsed.params.headers = ['x-date'];\n } else {\n parsed.params.headers = ['date'];\n }\n } else {\n parsed.params.headers = parsed.params.headers.split(' ');\n }\n\n // Minimally validate the parsed object\n if (!parsed.scheme || parsed.scheme !== 'Signature')\n throw new InvalidHeaderError('scheme was not \"Signature\"');\n\n if (!parsed.params.keyId)\n throw new InvalidHeaderError('keyId was not specified');\n\n if (!parsed.params.algorithm)\n throw new InvalidHeaderError('algorithm was not specified');\n\n if (!parsed.params.signature)\n throw new InvalidHeaderError('signature was not specified');\n\n // Check the algorithm against the official list\n parsed.params.algorithm = parsed.params.algorithm.toLowerCase();\n try {\n validateAlgorithm(parsed.params.algorithm);\n } catch (e) {\n if (e instanceof InvalidAlgorithmError)\n throw (new InvalidParamsError(parsed.params.algorithm + ' is not ' +\n 'supported'));\n else\n throw (e);\n }\n\n // Build the signingString\n for (i = 0; i < parsed.params.headers.length; i++) {\n var h = parsed.params.headers[i].toLowerCase();\n parsed.params.headers[i] = h;\n\n if (h === 'request-line') {\n if (!options.strict) {\n /*\n * We allow headers from the older spec drafts if strict parsing isn't\n * specified in options.\n */\n parsed.signingString +=\n request.method + ' ' + request.url + ' HTTP/' + request.httpVersion;\n } else {\n /* Strict parsing doesn't allow older draft headers. */\n throw (new StrictParsingError('request-line is not a valid header ' +\n 'with strict parsing enabled.'));\n }\n } else if (h === '(request-target)') {\n parsed.signingString +=\n '(request-target): ' + request.method.toLowerCase() + ' ' +\n request.url;\n } else {\n var value = request.headers[h];\n if (value === undefined)\n throw new MissingHeaderError(h + ' was not in the request');\n parsed.signingString += h + ': ' + value;\n }\n\n if ((i + 1) < parsed.params.headers.length)\n parsed.signingString += '\\n';\n }\n\n // Check against the constraints\n var date;\n if (request.headers.date || request.headers['x-date']) {\n if (request.headers['x-date']) {\n date = new Date(request.headers['x-date']);\n } else {\n date = new Date(request.headers.date);\n }\n var now = new Date();\n var skew = Math.abs(now.getTime() - date.getTime());\n\n if (skew > options.clockSkew * 1000) {\n throw new ExpiredRequestError('clock skew of ' +\n (skew / 1000) +\n 's was greater than ' +\n options.clockSkew + 's');\n }\n }\n\n options.headers.forEach(function (hdr) {\n // Remember that we already checked any headers in the params\n // were in the request, so if this passes we're good.\n if (parsed.params.headers.indexOf(hdr.toLowerCase()) < 0)\n throw new MissingHeaderError(hdr + ' was not a signed header');\n });\n\n if (options.algorithms) {\n if (options.algorithms.indexOf(parsed.params.algorithm) === -1)\n throw new InvalidParamsError(parsed.params.algorithm +\n ' is not a supported algorithm');\n }\n\n parsed.algorithm = parsed.params.algorithm.toUpperCase();\n parsed.keyId = parsed.params.keyId;\n return parsed;\n }\n\n};\n","// Copyright 2012 Joyent, Inc. All rights reserved.\n\nvar assert = require('assert-plus');\nvar crypto = require('crypto');\nvar http = require('http');\nvar util = require('util');\nvar sshpk = require('sshpk');\nvar jsprim = require('jsprim');\nvar utils = require('./utils');\n\nvar sprintf = require('util').format;\n\nvar HASH_ALGOS = utils.HASH_ALGOS;\nvar PK_ALGOS = utils.PK_ALGOS;\nvar InvalidAlgorithmError = utils.InvalidAlgorithmError;\nvar HttpSignatureError = utils.HttpSignatureError;\nvar validateAlgorithm = utils.validateAlgorithm;\n\n///--- Globals\n\nvar AUTHZ_FMT =\n 'Signature keyId=\"%s\",algorithm=\"%s\",headers=\"%s\",signature=\"%s\"';\n\n///--- Specific Errors\n\nfunction MissingHeaderError(message) {\n HttpSignatureError.call(this, message, MissingHeaderError);\n}\nutil.inherits(MissingHeaderError, HttpSignatureError);\n\nfunction StrictParsingError(message) {\n HttpSignatureError.call(this, message, StrictParsingError);\n}\nutil.inherits(StrictParsingError, HttpSignatureError);\n\n/* See createSigner() */\nfunction RequestSigner(options) {\n assert.object(options, 'options');\n\n var alg = [];\n if (options.algorithm !== undefined) {\n assert.string(options.algorithm, 'options.algorithm');\n alg = validateAlgorithm(options.algorithm);\n }\n this.rs_alg = alg;\n\n /*\n * RequestSigners come in two varieties: ones with an rs_signFunc, and ones\n * with an rs_signer.\n *\n * rs_signFunc-based RequestSigners have to build up their entire signing\n * string within the rs_lines array and give it to rs_signFunc as a single\n * concat'd blob. rs_signer-based RequestSigners can add a line at a time to\n * their signing state by using rs_signer.update(), thus only needing to\n * buffer the hash function state and one line at a time.\n */\n if (options.sign !== undefined) {\n assert.func(options.sign, 'options.sign');\n this.rs_signFunc = options.sign;\n\n } else if (alg[0] === 'hmac' && options.key !== undefined) {\n assert.string(options.keyId, 'options.keyId');\n this.rs_keyId = options.keyId;\n\n if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key))\n throw (new TypeError('options.key for HMAC must be a string or Buffer'));\n\n /*\n * Make an rs_signer for HMACs, not a rs_signFunc -- HMACs digest their\n * data in chunks rather than requiring it all to be given in one go\n * at the end, so they are more similar to signers than signFuncs.\n */\n this.rs_signer = crypto.createHmac(alg[1].toUpperCase(), options.key);\n this.rs_signer.sign = function () {\n var digest = this.digest('base64');\n return ({\n hashAlgorithm: alg[1],\n toString: function () { return (digest); }\n });\n };\n\n } else if (options.key !== undefined) {\n var key = options.key;\n if (typeof (key) === 'string' || Buffer.isBuffer(key))\n key = sshpk.parsePrivateKey(key);\n\n assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]),\n 'options.key must be a sshpk.PrivateKey');\n this.rs_key = key;\n\n assert.string(options.keyId, 'options.keyId');\n this.rs_keyId = options.keyId;\n\n if (!PK_ALGOS[key.type]) {\n throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' +\n 'keys are not supported'));\n }\n\n if (alg[0] !== undefined && key.type !== alg[0]) {\n throw (new InvalidAlgorithmError('options.key must be a ' +\n alg[0].toUpperCase() + ' key, was given a ' +\n key.type.toUpperCase() + ' key instead'));\n }\n\n this.rs_signer = key.createSign(alg[1]);\n\n } else {\n throw (new TypeError('options.sign (func) or options.key is required'));\n }\n\n this.rs_headers = [];\n this.rs_lines = [];\n}\n\n/**\n * Adds a header to be signed, with its value, into this signer.\n *\n * @param {String} header\n * @param {String} value\n * @return {String} value written\n */\nRequestSigner.prototype.writeHeader = function (header, value) {\n assert.string(header, 'header');\n header = header.toLowerCase();\n assert.string(value, 'value');\n\n this.rs_headers.push(header);\n\n if (this.rs_signFunc) {\n this.rs_lines.push(header + ': ' + value);\n\n } else {\n var line = header + ': ' + value;\n if (this.rs_headers.length > 0)\n line = '\\n' + line;\n this.rs_signer.update(line);\n }\n\n return (value);\n};\n\n/**\n * Adds a default Date header, returning its value.\n *\n * @return {String}\n */\nRequestSigner.prototype.writeDateHeader = function () {\n return (this.writeHeader('date', jsprim.rfc1123(new Date())));\n};\n\n/**\n * Adds the request target line to be signed.\n *\n * @param {String} method, HTTP method (e.g. 'get', 'post', 'put')\n * @param {String} path\n */\nRequestSigner.prototype.writeTarget = function (method, path) {\n assert.string(method, 'method');\n assert.string(path, 'path');\n method = method.toLowerCase();\n this.writeHeader('(request-target)', method + ' ' + path);\n};\n\n/**\n * Calculate the value for the Authorization header on this request\n * asynchronously.\n *\n * @param {Func} callback (err, authz)\n */\nRequestSigner.prototype.sign = function (cb) {\n assert.func(cb, 'callback');\n\n if (this.rs_headers.length < 1)\n throw (new Error('At least one header must be signed'));\n\n var alg, authz;\n if (this.rs_signFunc) {\n var data = this.rs_lines.join('\\n');\n var self = this;\n this.rs_signFunc(data, function (err, sig) {\n if (err) {\n cb(err);\n return;\n }\n try {\n assert.object(sig, 'signature');\n assert.string(sig.keyId, 'signature.keyId');\n assert.string(sig.algorithm, 'signature.algorithm');\n assert.string(sig.signature, 'signature.signature');\n alg = validateAlgorithm(sig.algorithm);\n\n authz = sprintf(AUTHZ_FMT,\n sig.keyId,\n sig.algorithm,\n self.rs_headers.join(' '),\n sig.signature);\n } catch (e) {\n cb(e);\n return;\n }\n cb(null, authz);\n });\n\n } else {\n try {\n var sigObj = this.rs_signer.sign();\n } catch (e) {\n cb(e);\n return;\n }\n alg = (this.rs_alg[0] || this.rs_key.type) + '-' + sigObj.hashAlgorithm;\n var signature = sigObj.toString();\n authz = sprintf(AUTHZ_FMT,\n this.rs_keyId,\n alg,\n this.rs_headers.join(' '),\n signature);\n cb(null, authz);\n }\n};\n\n///--- Exported API\n\nmodule.exports = {\n /**\n * Identifies whether a given object is a request signer or not.\n *\n * @param {Object} object, the object to identify\n * @returns {Boolean}\n */\n isSigner: function (obj) {\n if (typeof (obj) === 'object' && obj instanceof RequestSigner)\n return (true);\n return (false);\n },\n\n /**\n * Creates a request signer, used to asynchronously build a signature\n * for a request (does not have to be an http.ClientRequest).\n *\n * @param {Object} options, either:\n * - {String} keyId\n * - {String|Buffer} key\n * - {String} algorithm (optional, required for HMAC)\n * or:\n * - {Func} sign (data, cb)\n * @return {RequestSigner}\n */\n createSigner: function createSigner(options) {\n return (new RequestSigner(options));\n },\n\n /**\n * Adds an 'Authorization' header to an http.ClientRequest object.\n *\n * Note that this API will add a Date header if it's not already set. Any\n * other headers in the options.headers array MUST be present, or this\n * will throw.\n *\n * You shouldn't need to check the return type; it's just there if you want\n * to be pedantic.\n *\n * The optional flag indicates whether parsing should use strict enforcement\n * of the version draft-cavage-http-signatures-04 of the spec or beyond.\n * The default is to be loose and support\n * older versions for compatibility.\n *\n * @param {Object} request an instance of http.ClientRequest.\n * @param {Object} options signing parameters object:\n * - {String} keyId required.\n * - {String} key required (either a PEM or HMAC key).\n * - {Array} headers optional; defaults to ['date'].\n * - {String} algorithm optional (unless key is HMAC);\n * default is the same as the sshpk default\n * signing algorithm for the type of key given\n * - {String} httpVersion optional; defaults to '1.1'.\n * - {Boolean} strict optional; defaults to 'false'.\n * @return {Boolean} true if Authorization (and optionally Date) were added.\n * @throws {TypeError} on bad parameter types (input).\n * @throws {InvalidAlgorithmError} if algorithm was bad or incompatible with\n * the given key.\n * @throws {sshpk.KeyParseError} if key was bad.\n * @throws {MissingHeaderError} if a header to be signed was specified but\n * was not present.\n */\n signRequest: function signRequest(request, options) {\n assert.object(request, 'request');\n assert.object(options, 'options');\n assert.optionalString(options.algorithm, 'options.algorithm');\n assert.string(options.keyId, 'options.keyId');\n assert.optionalArrayOfString(options.headers, 'options.headers');\n assert.optionalString(options.httpVersion, 'options.httpVersion');\n\n if (!request.getHeader('Date'))\n request.setHeader('Date', jsprim.rfc1123(new Date()));\n if (!options.headers)\n options.headers = ['date'];\n if (!options.httpVersion)\n options.httpVersion = '1.1';\n\n var alg = [];\n if (options.algorithm) {\n options.algorithm = options.algorithm.toLowerCase();\n alg = validateAlgorithm(options.algorithm);\n }\n\n var i;\n var stringToSign = '';\n for (i = 0; i < options.headers.length; i++) {\n if (typeof (options.headers[i]) !== 'string')\n throw new TypeError('options.headers must be an array of Strings');\n\n var h = options.headers[i].toLowerCase();\n\n if (h === 'request-line') {\n if (!options.strict) {\n /**\n * We allow headers from the older spec drafts if strict parsing isn't\n * specified in options.\n */\n stringToSign +=\n request.method + ' ' + request.path + ' HTTP/' +\n options.httpVersion;\n } else {\n /* Strict parsing doesn't allow older draft headers. */\n throw (new StrictParsingError('request-line is not a valid header ' +\n 'with strict parsing enabled.'));\n }\n } else if (h === '(request-target)') {\n stringToSign +=\n '(request-target): ' + request.method.toLowerCase() + ' ' +\n request.path;\n } else {\n var value = request.getHeader(h);\n if (value === undefined || value === '') {\n throw new MissingHeaderError(h + ' was not in the request');\n }\n stringToSign += h + ': ' + value;\n }\n\n if ((i + 1) < options.headers.length)\n stringToSign += '\\n';\n }\n\n /* This is just for unit tests. */\n if (request.hasOwnProperty('_stringToSign')) {\n request._stringToSign = stringToSign;\n }\n\n var signature;\n if (alg[0] === 'hmac') {\n if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key))\n throw (new TypeError('options.key must be a string or Buffer'));\n\n var hmac = crypto.createHmac(alg[1].toUpperCase(), options.key);\n hmac.update(stringToSign);\n signature = hmac.digest('base64');\n\n } else {\n var key = options.key;\n if (typeof (key) === 'string' || Buffer.isBuffer(key))\n key = sshpk.parsePrivateKey(options.key);\n\n assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]),\n 'options.key must be a sshpk.PrivateKey');\n\n if (!PK_ALGOS[key.type]) {\n throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' +\n 'keys are not supported'));\n }\n\n if (alg[0] !== undefined && key.type !== alg[0]) {\n throw (new InvalidAlgorithmError('options.key must be a ' +\n alg[0].toUpperCase() + ' key, was given a ' +\n key.type.toUpperCase() + ' key instead'));\n }\n\n var signer = key.createSign(alg[1]);\n signer.update(stringToSign);\n var sigObj = signer.sign();\n if (!HASH_ALGOS[sigObj.hashAlgorithm]) {\n throw (new InvalidAlgorithmError(sigObj.hashAlgorithm.toUpperCase() +\n ' is not a supported hash algorithm'));\n }\n options.algorithm = key.type + '-' + sigObj.hashAlgorithm;\n signature = sigObj.toString();\n assert.notStrictEqual(signature, '', 'empty signature produced');\n }\n\n var authzHeaderName = options.authorizationHeaderName || 'Authorization';\n\n request.setHeader(authzHeaderName, sprintf(AUTHZ_FMT,\n options.keyId,\n options.algorithm,\n options.headers.join(' '),\n signature));\n\n return true;\n }\n\n};\n","// Copyright 2012 Joyent, Inc. All rights reserved.\n\nvar assert = require('assert-plus');\nvar sshpk = require('sshpk');\nvar util = require('util');\n\nvar HASH_ALGOS = {\n 'sha1': true,\n 'sha256': true,\n 'sha512': true\n};\n\nvar PK_ALGOS = {\n 'rsa': true,\n 'dsa': true,\n 'ecdsa': true\n};\n\nfunction HttpSignatureError(message, caller) {\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, caller || HttpSignatureError);\n\n this.message = message;\n this.name = caller.name;\n}\nutil.inherits(HttpSignatureError, Error);\n\nfunction InvalidAlgorithmError(message) {\n HttpSignatureError.call(this, message, InvalidAlgorithmError);\n}\nutil.inherits(InvalidAlgorithmError, HttpSignatureError);\n\nfunction validateAlgorithm(algorithm) {\n var alg = algorithm.toLowerCase().split('-');\n\n if (alg.length !== 2) {\n throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' is not a ' +\n 'valid algorithm'));\n }\n\n if (alg[0] !== 'hmac' && !PK_ALGOS[alg[0]]) {\n throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' type keys ' +\n 'are not supported'));\n }\n\n if (!HASH_ALGOS[alg[1]]) {\n throw (new InvalidAlgorithmError(alg[1].toUpperCase() + ' is not a ' +\n 'supported hash algorithm'));\n }\n\n return (alg);\n}\n\n///--- API\n\nmodule.exports = {\n\n HASH_ALGOS: HASH_ALGOS,\n PK_ALGOS: PK_ALGOS,\n\n HttpSignatureError: HttpSignatureError,\n InvalidAlgorithmError: InvalidAlgorithmError,\n\n validateAlgorithm: validateAlgorithm,\n\n /**\n * Converts an OpenSSH public key (rsa only) to a PKCS#8 PEM file.\n *\n * The intent of this module is to interoperate with OpenSSL only,\n * specifically the node crypto module's `verify` method.\n *\n * @param {String} key an OpenSSH public key.\n * @return {String} PEM encoded form of the RSA public key.\n * @throws {TypeError} on bad input.\n * @throws {Error} on invalid ssh key formatted data.\n */\n sshKeyToPEM: function sshKeyToPEM(key) {\n assert.string(key, 'ssh_key');\n\n var k = sshpk.parseKey(key, 'ssh');\n return (k.toString('pem'));\n },\n\n\n /**\n * Generates an OpenSSH fingerprint from an ssh public key.\n *\n * @param {String} key an OpenSSH public key.\n * @return {String} key fingerprint.\n * @throws {TypeError} on bad input.\n * @throws {Error} if what you passed doesn't look like an ssh public key.\n */\n fingerprint: function fingerprint(key) {\n assert.string(key, 'ssh_key');\n\n var k = sshpk.parseKey(key, 'ssh');\n return (k.fingerprint('md5').toString('hex'));\n },\n\n /**\n * Converts a PKGCS#8 PEM file to an OpenSSH public key (rsa)\n *\n * The reverse of the above function.\n */\n pemToRsaSSHKey: function pemToRsaSSHKey(pem, comment) {\n assert.equal('string', typeof (pem), 'typeof pem');\n\n var k = sshpk.parseKey(pem, 'pem');\n k.comment = comment;\n return (k.toString('ssh'));\n }\n};\n","// Copyright 2015 Joyent, Inc.\n\nvar assert = require('assert-plus');\nvar crypto = require('crypto');\nvar sshpk = require('sshpk');\nvar utils = require('./utils');\n\nvar HASH_ALGOS = utils.HASH_ALGOS;\nvar PK_ALGOS = utils.PK_ALGOS;\nvar InvalidAlgorithmError = utils.InvalidAlgorithmError;\nvar HttpSignatureError = utils.HttpSignatureError;\nvar validateAlgorithm = utils.validateAlgorithm;\n\n///--- Exported API\n\nmodule.exports = {\n /**\n * Verify RSA/DSA signature against public key. You are expected to pass in\n * an object that was returned from `parse()`.\n *\n * @param {Object} parsedSignature the object you got from `parse`.\n * @param {String} pubkey RSA/DSA private key PEM.\n * @return {Boolean} true if valid, false otherwise.\n * @throws {TypeError} if you pass in bad arguments.\n * @throws {InvalidAlgorithmError}\n */\n verifySignature: function verifySignature(parsedSignature, pubkey) {\n assert.object(parsedSignature, 'parsedSignature');\n if (typeof (pubkey) === 'string' || Buffer.isBuffer(pubkey))\n pubkey = sshpk.parseKey(pubkey);\n assert.ok(sshpk.Key.isKey(pubkey, [1, 1]), 'pubkey must be a sshpk.Key');\n\n var alg = validateAlgorithm(parsedSignature.algorithm);\n if (alg[0] === 'hmac' || alg[0] !== pubkey.type)\n return (false);\n\n var v = pubkey.createVerify(alg[1]);\n v.update(parsedSignature.signingString);\n return (v.verify(parsedSignature.params.signature, 'base64'));\n },\n\n /**\n * Verify HMAC against shared secret. You are expected to pass in an object\n * that was returned from `parse()`.\n *\n * @param {Object} parsedSignature the object you got from `parse`.\n * @param {String} secret HMAC shared secret.\n * @return {Boolean} true if valid, false otherwise.\n * @throws {TypeError} if you pass in bad arguments.\n * @throws {InvalidAlgorithmError}\n */\n verifyHMAC: function verifyHMAC(parsedSignature, secret) {\n assert.object(parsedSignature, 'parsedHMAC');\n assert.string(secret, 'secret');\n\n var alg = validateAlgorithm(parsedSignature.algorithm);\n if (alg[0] !== 'hmac')\n return (false);\n\n var hashAlg = alg[1].toUpperCase();\n\n var hmac = crypto.createHmac(hashAlg, secret);\n hmac.update(parsedSignature.signingString);\n\n /*\n * Now double-hash to avoid leaking timing information - there's\n * no easy constant-time compare in JS, so we use this approach\n * instead. See for more info:\n * https://www.isecpartners.com/blog/2011/february/double-hmac-\n * verification.aspx\n */\n var h1 = crypto.createHmac(hashAlg, secret);\n h1.update(hmac.digest());\n h1 = h1.digest();\n var h2 = crypto.createHmac(hashAlg, secret);\n h2.update(new Buffer(parsedSignature.params.signature, 'base64'));\n h2 = h2.digest();\n\n /* Node 0.8 returns strings from .digest(). */\n if (typeof (h1) === 'string')\n return (h1 === h2);\n /* And node 0.10 lacks the .equals() method on Buffers. */\n if (Buffer.isBuffer(h1) && !h1.equals)\n return (h1.toString('binary') === h2.toString('binary'));\n\n return (h1.equals(h2));\n }\n};\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n/* globals document: false */\nvar documentDotAll = typeof document === 'object' && typeof document.all === 'undefined' && document.all !== undefined ? document.all : {};\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (value === documentDotAll) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (typeof value === 'function' && !value.prototype) { return true; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (value === documentDotAll) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (typeof value === 'function' && !value.prototype) { return true; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\treturn strClass === fnClass || strClass === genClass;\n\t};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n","'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n","module.exports = isTypedArray\nisTypedArray.strict = isStrictTypedArray\nisTypedArray.loose = isLooseTypedArray\n\nvar toString = Object.prototype.toString\nvar names = {\n '[object Int8Array]': true\n , '[object Int16Array]': true\n , '[object Int32Array]': true\n , '[object Uint8Array]': true\n , '[object Uint8ClampedArray]': true\n , '[object Uint16Array]': true\n , '[object Uint32Array]': true\n , '[object Float32Array]': true\n , '[object Float64Array]': true\n}\n\nfunction isTypedArray(arr) {\n return (\n isStrictTypedArray(arr)\n || isLooseTypedArray(arr)\n )\n}\n\nfunction isStrictTypedArray(arr) {\n return (\n arr instanceof Int8Array\n || arr instanceof Int16Array\n || arr instanceof Int32Array\n || arr instanceof Uint8Array\n || arr instanceof Uint8ClampedArray\n || arr instanceof Uint16Array\n || arr instanceof Uint32Array\n || arr instanceof Float32Array\n || arr instanceof Float64Array\n )\n}\n\nfunction isLooseTypedArray(arr) {\n return names[toString.call(arr)]\n}\n","var stream = require('stream')\n\n\nfunction isStream (obj) {\n return obj instanceof stream.Stream\n}\n\n\nfunction isReadable (obj) {\n return isStream(obj) && typeof obj._read == 'function' && typeof obj._readableState == 'object'\n}\n\n\nfunction isWritable (obj) {\n return isStream(obj) && typeof obj._write == 'function' && typeof obj._writableState == 'object'\n}\n\n\nfunction isDuplex (obj) {\n return isReadable(obj) && isWritable(obj)\n}\n\n\nmodule.exports = isStream\nmodule.exports.isReadable = isReadable\nmodule.exports.isWritable = isWritable\nmodule.exports.isDuplex = isDuplex\n","(function(){\n\n // Copyright (c) 2005 Tom Wu\n // All Rights Reserved.\n // See \"LICENSE\" for details.\n\n // Basic JavaScript BN library - subset useful for RSA encryption.\n\n // Bits per digit\n var dbits;\n\n // JavaScript engine analysis\n var canary = 0xdeadbeefcafe;\n var j_lm = ((canary&0xffffff)==0xefcafe);\n\n // (public) Constructor\n function BigInteger(a,b,c) {\n if(a != null)\n if(\"number\" == typeof a) this.fromNumber(a,b,c);\n else if(b == null && \"string\" != typeof a) this.fromString(a,256);\n else this.fromString(a,b);\n }\n\n // return new, unset BigInteger\n function nbi() { return new BigInteger(null); }\n\n // am: Compute w_j += (x*this_i), propagate carries,\n // c is initial carry, returns final carry.\n // c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n // We need to select the fastest one that works in this environment.\n\n // am1: use a single mult and divide to get the high bits,\n // max digit bits should be 26 because\n // max internal value = 2*dvalue^2-2*dvalue (< 2^53)\n function am1(i,x,w,j,c,n) {\n while(--n >= 0) {\n var v = x*this[i++]+w[j]+c;\n c = Math.floor(v/0x4000000);\n w[j++] = v&0x3ffffff;\n }\n return c;\n }\n // am2 avoids a big mult-and-extract completely.\n // Max digit bits should be <= 30 because we do bitwise ops\n // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n function am2(i,x,w,j,c,n) {\n var xl = x&0x7fff, xh = x>>15;\n while(--n >= 0) {\n var l = this[i]&0x7fff;\n var h = this[i++]>>15;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);\n c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n w[j++] = l&0x3fffffff;\n }\n return c;\n }\n // Alternately, set max digit bits to 28 since some\n // browsers slow down when dealing with 32-bit numbers.\n function am3(i,x,w,j,c,n) {\n var xl = x&0x3fff, xh = x>>14;\n while(--n >= 0) {\n var l = this[i]&0x3fff;\n var h = this[i++]>>14;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x3fff)<<14)+w[j]+c;\n c = (l>>28)+(m>>14)+xh*h;\n w[j++] = l&0xfffffff;\n }\n return c;\n }\n var inBrowser = typeof navigator !== \"undefined\";\n if(inBrowser && j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = am2;\n dbits = 30;\n }\n else if(inBrowser && j_lm && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = am1;\n dbits = 26;\n }\n else { // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n }\n\n BigInteger.prototype.DB = dbits;\n BigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i];\n r.t = this.t;\n r.s = this.s;\n }\n\n // (protected) set from integer value x, -DV <= x < DV\n function bnpFromInt(x) {\n this.t = 1;\n this.s = (x<0)?-1:0;\n if(x > 0) this[0] = x;\n else if(x < -1) this[0] = x+this.DV;\n else this.t = 0;\n }\n\n // return bigint initialized to value\n function nbv(i) { var r = nbi(); r.fromInt(i); return r; }\n\n // (protected) set from string and radix\n function bnpFromString(s,b) {\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 256) k = 8; // byte array\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else { this.fromRadix(s,b); return; }\n this.t = 0;\n this.s = 0;\n var i = s.length, mi = false, sh = 0;\n while(--i >= 0) {\n var x = (k==8)?s[i]&0xff:intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\") mi = true;\n continue;\n }\n mi = false;\n if(sh == 0)\n this[this.t++] = x;\n else if(sh+k > this.DB) {\n this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh));\n }\n else\n this[this.t-1] |= x<= this.DB) sh -= this.DB;\n }\n if(k == 8 && (s[0]&0x80) != 0) {\n this.s = -1;\n if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t;\n }\n\n // (public) return string representation in given radix\n function bnToString(b) {\n if(this.s < 0) return \"-\"+this.negate().toString(b);\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else return this.toRadix(b);\n var km = (1< 0) {\n if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }\n while(i >= 0) {\n if(p < k) {\n d = (this[i]&((1<>(p+=this.DB-k);\n }\n else {\n d = (this[i]>>(p-=k))&km;\n if(p <= 0) { p += this.DB; --i; }\n }\n if(d > 0) m = true;\n if(m) r += int2char(d);\n }\n }\n return m?r:\"0\";\n }\n\n // (public) -this\n function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }\n\n // (public) |this|\n function bnAbs() { return (this.s<0)?this.negate():this; }\n\n // (public) return + if this > a, - if this < a, 0 if equal\n function bnCompareTo(a) {\n var r = this.s-a.s;\n if(r != 0) return r;\n var i = this.t;\n r = i-a.t;\n if(r != 0) return (this.s<0)?-r:r;\n while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;\n return 0;\n }\n\n // returns bit length of the integer x\n function nbits(x) {\n var r = 1, t;\n if((t=x>>>16) != 0) { x = t; r += 16; }\n if((t=x>>8) != 0) { x = t; r += 8; }\n if((t=x>>4) != 0) { x = t; r += 4; }\n if((t=x>>2) != 0) { x = t; r += 2; }\n if((t=x>>1) != 0) { x = t; r += 1; }\n return r;\n }\n\n // (public) return the number of bits in \"this\"\n function bnBitLength() {\n if(this.t <= 0) return 0;\n return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));\n }\n\n // (protected) r = this << n*DB\n function bnpDLShiftTo(n,r) {\n var i;\n for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];\n for(i = n-1; i >= 0; --i) r[i] = 0;\n r.t = this.t+n;\n r.s = this.s;\n }\n\n // (protected) r = this >> n*DB\n function bnpDRShiftTo(n,r) {\n for(var i = n; i < this.t; ++i) r[i-n] = this[i];\n r.t = Math.max(this.t-n,0);\n r.s = this.s;\n }\n\n // (protected) r = this << n\n function bnpLShiftTo(n,r) {\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<= 0; --i) {\n r[i+ds+1] = (this[i]>>cbs)|c;\n c = (this[i]&bm)<= 0; --i) r[i] = 0;\n r[ds] = c;\n r.t = this.t+ds+1;\n r.s = this.s;\n r.clamp();\n }\n\n // (protected) r = this >> n\n function bnpRShiftTo(n,r) {\n r.s = this.s;\n var ds = Math.floor(n/this.DB);\n if(ds >= this.t) { r.t = 0; return; }\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<>bs;\n for(var i = ds+1; i < this.t; ++i) {\n r[i-ds-1] |= (this[i]&bm)<>bs;\n }\n if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB;\n }\n if(a.t < this.t) {\n c -= a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c -= a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c<0)?-1:0;\n if(c < -1) r[i++] = this.DV+c;\n else if(c > 0) r[i++] = c;\n r.t = i;\n r.clamp();\n }\n\n // (protected) r = this * a, r != this,a (HAC 14.12)\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyTo(a,r) {\n var x = this.abs(), y = a.abs();\n var i = x.t;\n r.t = i+y.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);\n r.s = 0;\n r.clamp();\n if(this.s != a.s) BigInteger.ZERO.subTo(r,r);\n }\n\n // (protected) r = this^2, r != this (HAC 14.16)\n function bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2*x.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < x.t-1; ++i) {\n var c = x.am(i,x[i],r,2*i,0,1);\n if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n r[i+x.t] -= x.DV;\n r[i+x.t+1] = 1;\n }\n }\n if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);\n r.s = 0;\n r.clamp();\n }\n\n // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n // r != q, this != m. q or r may be null.\n function bnpDivRemTo(m,q,r) {\n var pm = m.abs();\n if(pm.t <= 0) return;\n var pt = this.abs();\n if(pt.t < pm.t) {\n if(q != null) q.fromInt(0);\n if(r != null) this.copyTo(r);\n return;\n }\n if(r == null) r = nbi();\n var y = nbi(), ts = this.s, ms = m.s;\n var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus\n if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }\n else { pm.copyTo(y); pt.copyTo(r); }\n var ys = y.t;\n var y0 = y[ys-1];\n if(y0 == 0) return;\n var yt = y0*(1<1)?y[ys-2]>>this.F2:0);\n var d1 = this.FV/yt, d2 = (1<= 0) {\n r[r.t++] = 1;\n r.subTo(t,r);\n }\n BigInteger.ONE.dlShiftTo(ys,t);\n t.subTo(y,y); // \"negative\" y so we can replace sub with am later\n while(y.t < ys) y[y.t++] = 0;\n while(--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);\n if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out\n y.dlShiftTo(j,t);\n r.subTo(t,r);\n while(r[i] < --qd) r.subTo(t,r);\n }\n }\n if(q != null) {\n r.drShiftTo(ys,q);\n if(ts != ms) BigInteger.ZERO.subTo(q,q);\n }\n r.t = ys;\n r.clamp();\n if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder\n if(ts < 0) BigInteger.ZERO.subTo(r,r);\n }\n\n // (public) this mod a\n function bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a,null,r);\n if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);\n return r;\n }\n\n // Modular reduction using \"classic\" algorithm\n function Classic(m) { this.m = m; }\n function cConvert(x) {\n if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n else return x;\n }\n function cRevert(x) { return x; }\n function cReduce(x) { x.divRemTo(this.m,null,x); }\n function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n Classic.prototype.convert = cConvert;\n Classic.prototype.revert = cRevert;\n Classic.prototype.reduce = cReduce;\n Classic.prototype.mulTo = cMulTo;\n Classic.prototype.sqrTo = cSqrTo;\n\n // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n // justification:\n // xy == 1 (mod m)\n // xy = 1+km\n // xy(2-xy) = (1+km)(1-km)\n // x[y(2-xy)] = 1-k^2m^2\n // x[y(2-xy)] == 1 (mod m^2)\n // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n // JS multiply \"overflows\" differently from C/C++, so care is needed here.\n function bnpInvDigit() {\n if(this.t < 1) return 0;\n var x = this[0];\n if((x&1) == 0) return 0;\n var y = x&3; // y == 1/x mod 2^2\n y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4\n y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8\n y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y>0)?this.DV-y:-y;\n }\n\n // Montgomery reduction\n function Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp&0x7fff;\n this.mph = this.mp>>15;\n this.um = (1<<(m.DB-15))-1;\n this.mt2 = 2*m.t;\n }\n\n // xR mod m\n function montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t,r);\n r.divRemTo(this.m,null,r);\n if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);\n return r;\n }\n\n // x/R mod m\n function montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n }\n\n // x = x/R mod m (HAC 14.32)\n function montReduce(x) {\n while(x.t <= this.mt2) // pad x so am has enough room later\n x[x.t++] = 0;\n for(var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i]&0x7fff;\n var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i+this.m.t;\n x[j] += this.m.am(0,u0,x,i,0,this.m.t);\n // propagate carry\n while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }\n }\n x.clamp();\n x.drShiftTo(this.m.t,x);\n if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n }\n\n // r = \"x^2/R mod m\"; x != r\n function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n // r = \"xy/R mod m\"; x,y != r\n function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\n Montgomery.prototype.convert = montConvert;\n Montgomery.prototype.revert = montRevert;\n Montgomery.prototype.reduce = montReduce;\n Montgomery.prototype.mulTo = montMulTo;\n Montgomery.prototype.sqrTo = montSqrTo;\n\n // (protected) true iff this is even\n function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }\n\n // (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\n function bnpExp(e,z) {\n if(e > 0xffffffff || e < 1) return BigInteger.ONE;\n var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\n g.copyTo(r);\n while(--i >= 0) {\n z.sqrTo(r,r2);\n if((e&(1< 0) z.mulTo(r2,g,r);\n else { var t = r; r = r2; r2 = t; }\n }\n return z.revert(r);\n }\n\n // (public) this^e % m, 0 <= e < 2^32\n function bnModPowInt(e,m) {\n var z;\n if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n return this.exp(e,z);\n }\n\n // protected\n BigInteger.prototype.copyTo = bnpCopyTo;\n BigInteger.prototype.fromInt = bnpFromInt;\n BigInteger.prototype.fromString = bnpFromString;\n BigInteger.prototype.clamp = bnpClamp;\n BigInteger.prototype.dlShiftTo = bnpDLShiftTo;\n BigInteger.prototype.drShiftTo = bnpDRShiftTo;\n BigInteger.prototype.lShiftTo = bnpLShiftTo;\n BigInteger.prototype.rShiftTo = bnpRShiftTo;\n BigInteger.prototype.subTo = bnpSubTo;\n BigInteger.prototype.multiplyTo = bnpMultiplyTo;\n BigInteger.prototype.squareTo = bnpSquareTo;\n BigInteger.prototype.divRemTo = bnpDivRemTo;\n BigInteger.prototype.invDigit = bnpInvDigit;\n BigInteger.prototype.isEven = bnpIsEven;\n BigInteger.prototype.exp = bnpExp;\n\n // public\n BigInteger.prototype.toString = bnToString;\n BigInteger.prototype.negate = bnNegate;\n BigInteger.prototype.abs = bnAbs;\n BigInteger.prototype.compareTo = bnCompareTo;\n BigInteger.prototype.bitLength = bnBitLength;\n BigInteger.prototype.mod = bnMod;\n BigInteger.prototype.modPowInt = bnModPowInt;\n\n // \"constants\"\n BigInteger.ZERO = nbv(0);\n BigInteger.ONE = nbv(1);\n\n // Copyright (c) 2005-2009 Tom Wu\n // All Rights Reserved.\n // See \"LICENSE\" for details.\n\n // Extended JavaScript BN functions, required for RSA private ops.\n\n // Version 1.1: new BigInteger(\"0\", 10) returns \"proper\" zero\n // Version 1.2: square() API, isProbablePrime fix\n\n // (public)\n function bnClone() { var r = nbi(); this.copyTo(r); return r; }\n\n // (public) return value as integer\n function bnIntValue() {\n if(this.s < 0) {\n if(this.t == 1) return this[0]-this.DV;\n else if(this.t == 0) return -1;\n }\n else if(this.t == 1) return this[0];\n else if(this.t == 0) return 0;\n // assumes 16 < DB < 32\n return ((this[1]&((1<<(32-this.DB))-1))<>24; }\n\n // (public) return value as short (assumes DB>=16)\n function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; }\n\n // (protected) return x s.t. r^x < DV\n function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }\n\n // (public) 0 if this == 0, 1 if this > 0\n function bnSigNum() {\n if(this.s < 0) return -1;\n else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;\n else return 1;\n }\n\n // (protected) convert to radix string\n function bnpToRadix(b) {\n if(b == null) b = 10;\n if(this.signum() == 0 || b < 2 || b > 36) return \"0\";\n var cs = this.chunkSize(b);\n var a = Math.pow(b,cs);\n var d = nbv(a), y = nbi(), z = nbi(), r = \"\";\n this.divRemTo(d,y,z);\n while(y.signum() > 0) {\n r = (a+z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d,y,z);\n }\n return z.intValue().toString(b) + r;\n }\n\n // (protected) convert from radix string\n function bnpFromRadix(s,b) {\n this.fromInt(0);\n if(b == null) b = 10;\n var cs = this.chunkSize(b);\n var d = Math.pow(b,cs), mi = false, j = 0, w = 0;\n for(var i = 0; i < s.length; ++i) {\n var x = intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\" && this.signum() == 0) mi = true;\n continue;\n }\n w = b*w+x;\n if(++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w,0);\n j = 0;\n w = 0;\n }\n }\n if(j > 0) {\n this.dMultiply(Math.pow(b,j));\n this.dAddOffset(w,0);\n }\n if(mi) BigInteger.ZERO.subTo(this,this);\n }\n\n // (protected) alternate constructor\n function bnpFromNumber(a,b,c) {\n if(\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if(a < 2) this.fromInt(1);\n else {\n this.fromNumber(a,c);\n if(!this.testBit(a-1))\t// force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);\n if(this.isEven()) this.dAddOffset(1,0); // force odd\n while(!this.isProbablePrime(b)) {\n this.dAddOffset(2,0);\n if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);\n }\n }\n }\n else {\n // new BigInteger(int,RNG)\n var x = new Array(), t = a&7;\n x.length = (a>>3)+1;\n b.nextBytes(x);\n if(t > 0) x[0] &= ((1< 0) {\n if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p)\n r[k++] = d|(this.s<<(this.DB-p));\n while(i >= 0) {\n if(p < 8) {\n d = (this[i]&((1<>(p+=this.DB-8);\n }\n else {\n d = (this[i]>>(p-=8))&0xff;\n if(p <= 0) { p += this.DB; --i; }\n }\n if((d&0x80) != 0) d |= -256;\n if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;\n if(k > 0 || d != this.s) r[k++] = d;\n }\n }\n return r;\n }\n\n function bnEquals(a) { return(this.compareTo(a)==0); }\n function bnMin(a) { return(this.compareTo(a)<0)?this:a; }\n function bnMax(a) { return(this.compareTo(a)>0)?this:a; }\n\n // (protected) r = this op a (bitwise)\n function bnpBitwiseTo(a,op,r) {\n var i, f, m = Math.min(a.t,this.t);\n for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]);\n if(a.t < this.t) {\n f = a.s&this.DM;\n for(i = m; i < this.t; ++i) r[i] = op(this[i],f);\n r.t = this.t;\n }\n else {\n f = this.s&this.DM;\n for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);\n r.t = a.t;\n }\n r.s = op(this.s,a.s);\n r.clamp();\n }\n\n // (public) this & a\n function op_and(x,y) { return x&y; }\n function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }\n\n // (public) this | a\n function op_or(x,y) { return x|y; }\n function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }\n\n // (public) this ^ a\n function op_xor(x,y) { return x^y; }\n function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }\n\n // (public) this & ~a\n function op_andnot(x,y) { return x&~y; }\n function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }\n\n // (public) ~this\n function bnNot() {\n var r = nbi();\n for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i];\n r.t = this.t;\n r.s = ~this.s;\n return r;\n }\n\n // (public) this << n\n function bnShiftLeft(n) {\n var r = nbi();\n if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);\n return r;\n }\n\n // (public) this >> n\n function bnShiftRight(n) {\n var r = nbi();\n if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);\n return r;\n }\n\n // return index of lowest 1-bit in x, x < 2^31\n function lbit(x) {\n if(x == 0) return -1;\n var r = 0;\n if((x&0xffff) == 0) { x >>= 16; r += 16; }\n if((x&0xff) == 0) { x >>= 8; r += 8; }\n if((x&0xf) == 0) { x >>= 4; r += 4; }\n if((x&3) == 0) { x >>= 2; r += 2; }\n if((x&1) == 0) ++r;\n return r;\n }\n\n // (public) returns index of lowest 1-bit (or -1 if none)\n function bnGetLowestSetBit() {\n for(var i = 0; i < this.t; ++i)\n if(this[i] != 0) return i*this.DB+lbit(this[i]);\n if(this.s < 0) return this.t*this.DB;\n return -1;\n }\n\n // return number of 1 bits in x\n function cbit(x) {\n var r = 0;\n while(x != 0) { x &= x-1; ++r; }\n return r;\n }\n\n // (public) return number of set bits\n function bnBitCount() {\n var r = 0, x = this.s&this.DM;\n for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x);\n return r;\n }\n\n // (public) true iff nth bit is set\n function bnTestBit(n) {\n var j = Math.floor(n/this.DB);\n if(j >= this.t) return(this.s!=0);\n return((this[j]&(1<<(n%this.DB)))!=0);\n }\n\n // (protected) this op (1<>= this.DB;\n }\n if(a.t < this.t) {\n c += a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c += a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = (c<0)?-1:0;\n if(c > 0) r[i++] = c;\n else if(c < -1) r[i++] = this.DV+c;\n r.t = i;\n r.clamp();\n }\n\n // (public) this + a\n function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }\n\n // (public) this - a\n function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }\n\n // (public) this * a\n function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }\n\n // (public) this^2\n function bnSquare() { var r = nbi(); this.squareTo(r); return r; }\n\n // (public) this / a\n function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }\n\n // (public) this % a\n function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }\n\n // (public) [this/a,this%a]\n function bnDivideAndRemainder(a) {\n var q = nbi(), r = nbi();\n this.divRemTo(a,q,r);\n return new Array(q,r);\n }\n\n // (protected) this *= n, this >= 0, 1 < n < DV\n function bnpDMultiply(n) {\n this[this.t] = this.am(0,n-1,this,0,0,this.t);\n ++this.t;\n this.clamp();\n }\n\n // (protected) this += n << w words, this >= 0\n function bnpDAddOffset(n,w) {\n if(n == 0) return;\n while(this.t <= w) this[this.t++] = 0;\n this[w] += n;\n while(this[w] >= this.DV) {\n this[w] -= this.DV;\n if(++w >= this.t) this[this.t++] = 0;\n ++this[w];\n }\n }\n\n // A \"null\" reducer\n function NullExp() {}\n function nNop(x) { return x; }\n function nMulTo(x,y,r) { x.multiplyTo(y,r); }\n function nSqrTo(x,r) { x.squareTo(r); }\n\n NullExp.prototype.convert = nNop;\n NullExp.prototype.revert = nNop;\n NullExp.prototype.mulTo = nMulTo;\n NullExp.prototype.sqrTo = nSqrTo;\n\n // (public) this^e\n function bnPow(e) { return this.exp(e,new NullExp()); }\n\n // (protected) r = lower n words of \"this * a\", a.t <= n\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyLowerTo(a,n,r) {\n var i = Math.min(this.t+a.t,n);\n r.s = 0; // assumes a,this >= 0\n r.t = i;\n while(i > 0) r[--i] = 0;\n var j;\n for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t);\n for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i);\n r.clamp();\n }\n\n // (protected) r = \"this * a\" without lower n words, n > 0\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyUpperTo(a,n,r) {\n --n;\n var i = r.t = this.t+a.t-n;\n r.s = 0; // assumes a,this >= 0\n while(--i >= 0) r[i] = 0;\n for(i = Math.max(n-this.t,0); i < a.t; ++i)\n r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n);\n r.clamp();\n r.drShiftTo(1,r);\n }\n\n // Barrett modular reduction\n function Barrett(m) {\n // setup Barrett\n this.r2 = nbi();\n this.q3 = nbi();\n BigInteger.ONE.dlShiftTo(2*m.t,this.r2);\n this.mu = this.r2.divide(m);\n this.m = m;\n }\n\n function barrettConvert(x) {\n if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);\n else if(x.compareTo(this.m) < 0) return x;\n else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }\n }\n\n function barrettRevert(x) { return x; }\n\n // x = x mod m (HAC 14.42)\n function barrettReduce(x) {\n x.drShiftTo(this.m.t-1,this.r2);\n if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }\n this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);\n this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);\n while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);\n x.subTo(this.r2,x);\n while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n }\n\n // r = x^2 mod m; x != r\n function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n // r = x*y mod m; x,y != r\n function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\n Barrett.prototype.convert = barrettConvert;\n Barrett.prototype.revert = barrettRevert;\n Barrett.prototype.reduce = barrettReduce;\n Barrett.prototype.mulTo = barrettMulTo;\n Barrett.prototype.sqrTo = barrettSqrTo;\n\n // (public) this^e % m (HAC 14.85)\n function bnModPow(e,m) {\n var i = e.bitLength(), k, r = nbv(1), z;\n if(i <= 0) return r;\n else if(i < 18) k = 1;\n else if(i < 48) k = 3;\n else if(i < 144) k = 4;\n else if(i < 768) k = 5;\n else k = 6;\n if(i < 8)\n z = new Classic(m);\n else if(m.isEven())\n z = new Barrett(m);\n else\n z = new Montgomery(m);\n\n // precomputation\n var g = new Array(), n = 3, k1 = k-1, km = (1< 1) {\n var g2 = nbi();\n z.sqrTo(g[1],g2);\n while(n <= km) {\n g[n] = nbi();\n z.mulTo(g2,g[n-2],g[n]);\n n += 2;\n }\n }\n\n var j = e.t-1, w, is1 = true, r2 = nbi(), t;\n i = nbits(e[j])-1;\n while(j >= 0) {\n if(i >= k1) w = (e[j]>>(i-k1))&km;\n else {\n w = (e[j]&((1<<(i+1))-1))<<(k1-i);\n if(j > 0) w |= e[j-1]>>(this.DB+i-k1);\n }\n\n n = k;\n while((w&1) == 0) { w >>= 1; --n; }\n if((i -= n) < 0) { i += this.DB; --j; }\n if(is1) {\t// ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }\n if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }\n z.mulTo(r2,g[w],r);\n }\n\n while(j >= 0 && (e[j]&(1< 0) {\n x.rShiftTo(g,x);\n y.rShiftTo(g,y);\n }\n while(x.signum() > 0) {\n if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);\n if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);\n if(x.compareTo(y) >= 0) {\n x.subTo(y,x);\n x.rShiftTo(1,x);\n }\n else {\n y.subTo(x,y);\n y.rShiftTo(1,y);\n }\n }\n if(g > 0) y.lShiftTo(g,y);\n return y;\n }\n\n // (protected) this % n, n < 2^26\n function bnpModInt(n) {\n if(n <= 0) return 0;\n var d = this.DV%n, r = (this.s<0)?n-1:0;\n if(this.t > 0)\n if(d == 0) r = this[0]%n;\n else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n;\n return r;\n }\n\n // (public) 1/this % m (HAC 14.61)\n function bnModInverse(m) {\n var ac = m.isEven();\n if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;\n var u = m.clone(), v = this.clone();\n var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\n while(u.signum() != 0) {\n while(u.isEven()) {\n u.rShiftTo(1,u);\n if(ac) {\n if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }\n a.rShiftTo(1,a);\n }\n else if(!b.isEven()) b.subTo(m,b);\n b.rShiftTo(1,b);\n }\n while(v.isEven()) {\n v.rShiftTo(1,v);\n if(ac) {\n if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }\n c.rShiftTo(1,c);\n }\n else if(!d.isEven()) d.subTo(m,d);\n d.rShiftTo(1,d);\n }\n if(u.compareTo(v) >= 0) {\n u.subTo(v,u);\n if(ac) a.subTo(c,a);\n b.subTo(d,b);\n }\n else {\n v.subTo(u,v);\n if(ac) c.subTo(a,c);\n d.subTo(b,d);\n }\n }\n if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;\n if(d.compareTo(m) >= 0) return d.subtract(m);\n if(d.signum() < 0) d.addTo(m,d); else return d;\n if(d.signum() < 0) return d.add(m); else return d;\n }\n\n var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];\n var lplim = (1<<26)/lowprimes[lowprimes.length-1];\n\n // (public) test primality with certainty >= 1-.5^t\n function bnIsProbablePrime(t) {\n var i, x = this.abs();\n if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) {\n for(i = 0; i < lowprimes.length; ++i)\n if(x[0] == lowprimes[i]) return true;\n return false;\n }\n if(x.isEven()) return false;\n i = 1;\n while(i < lowprimes.length) {\n var m = lowprimes[i], j = i+1;\n while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];\n m = x.modInt(m);\n while(i < j) if(m%lowprimes[i++] == 0) return false;\n }\n return x.millerRabin(t);\n }\n\n // (protected) true if probably prime (HAC 4.24, Miller-Rabin)\n function bnpMillerRabin(t) {\n var n1 = this.subtract(BigInteger.ONE);\n var k = n1.getLowestSetBit();\n if(k <= 0) return false;\n var r = n1.shiftRight(k);\n t = (t+1)>>1;\n if(t > lowprimes.length) t = lowprimes.length;\n var a = nbi();\n for(var i = 0; i < t; ++i) {\n //Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);\n var y = a.modPow(r,this);\n if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while(j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2,this);\n if(y.compareTo(BigInteger.ONE) == 0) return false;\n }\n if(y.compareTo(n1) != 0) return false;\n }\n }\n return true;\n }\n\n // protected\n BigInteger.prototype.chunkSize = bnpChunkSize;\n BigInteger.prototype.toRadix = bnpToRadix;\n BigInteger.prototype.fromRadix = bnpFromRadix;\n BigInteger.prototype.fromNumber = bnpFromNumber;\n BigInteger.prototype.bitwiseTo = bnpBitwiseTo;\n BigInteger.prototype.changeBit = bnpChangeBit;\n BigInteger.prototype.addTo = bnpAddTo;\n BigInteger.prototype.dMultiply = bnpDMultiply;\n BigInteger.prototype.dAddOffset = bnpDAddOffset;\n BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\n BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\n BigInteger.prototype.modInt = bnpModInt;\n BigInteger.prototype.millerRabin = bnpMillerRabin;\n\n // public\n BigInteger.prototype.clone = bnClone;\n BigInteger.prototype.intValue = bnIntValue;\n BigInteger.prototype.byteValue = bnByteValue;\n BigInteger.prototype.shortValue = bnShortValue;\n BigInteger.prototype.signum = bnSigNum;\n BigInteger.prototype.toByteArray = bnToByteArray;\n BigInteger.prototype.equals = bnEquals;\n BigInteger.prototype.min = bnMin;\n BigInteger.prototype.max = bnMax;\n BigInteger.prototype.and = bnAnd;\n BigInteger.prototype.or = bnOr;\n BigInteger.prototype.xor = bnXor;\n BigInteger.prototype.andNot = bnAndNot;\n BigInteger.prototype.not = bnNot;\n BigInteger.prototype.shiftLeft = bnShiftLeft;\n BigInteger.prototype.shiftRight = bnShiftRight;\n BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\n BigInteger.prototype.bitCount = bnBitCount;\n BigInteger.prototype.testBit = bnTestBit;\n BigInteger.prototype.setBit = bnSetBit;\n BigInteger.prototype.clearBit = bnClearBit;\n BigInteger.prototype.flipBit = bnFlipBit;\n BigInteger.prototype.add = bnAdd;\n BigInteger.prototype.subtract = bnSubtract;\n BigInteger.prototype.multiply = bnMultiply;\n BigInteger.prototype.divide = bnDivide;\n BigInteger.prototype.remainder = bnRemainder;\n BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\n BigInteger.prototype.modPow = bnModPow;\n BigInteger.prototype.modInverse = bnModInverse;\n BigInteger.prototype.pow = bnPow;\n BigInteger.prototype.gcd = bnGCD;\n BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n\n // JSBN-specific extension\n BigInteger.prototype.square = bnSquare;\n\n // Expose the Barrett function\n BigInteger.prototype.Barrett = Barrett\n\n // BigInteger interfaces not implemented in jsbn:\n\n // BigInteger(int signum, byte[] magnitude)\n // double doubleValue()\n // float floatValue()\n // int hashCode()\n // long longValue()\n // static BigInteger valueOf(long val)\n\n\t// Random number generator - requires a PRNG backend, e.g. prng4.js\n\n\t// For best results, put code like\n\t// \n\t// in your main HTML document.\n\n\tvar rng_state;\n\tvar rng_pool;\n\tvar rng_pptr;\n\n\t// Mix in a 32-bit integer into the pool\n\tfunction rng_seed_int(x) {\n\t rng_pool[rng_pptr++] ^= x & 255;\n\t rng_pool[rng_pptr++] ^= (x >> 8) & 255;\n\t rng_pool[rng_pptr++] ^= (x >> 16) & 255;\n\t rng_pool[rng_pptr++] ^= (x >> 24) & 255;\n\t if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;\n\t}\n\n\t// Mix in the current time (w/milliseconds) into the pool\n\tfunction rng_seed_time() {\n\t rng_seed_int(new Date().getTime());\n\t}\n\n\t// Initialize the pool with junk if needed.\n\tif(rng_pool == null) {\n\t rng_pool = new Array();\n\t rng_pptr = 0;\n\t var t;\n\t if(typeof window !== \"undefined\" && window.crypto) {\n\t\tif (window.crypto.getRandomValues) {\n\t\t // Use webcrypto if available\n\t\t var ua = new Uint8Array(32);\n\t\t window.crypto.getRandomValues(ua);\n\t\t for(t = 0; t < 32; ++t)\n\t\t\trng_pool[rng_pptr++] = ua[t];\n\t\t}\n\t\telse if(navigator.appName == \"Netscape\" && navigator.appVersion < \"5\") {\n\t\t // Extract entropy (256 bits) from NS4 RNG if available\n\t\t var z = window.crypto.random(32);\n\t\t for(t = 0; t < z.length; ++t)\n\t\t\trng_pool[rng_pptr++] = z.charCodeAt(t) & 255;\n\t\t}\n\t }\n\t while(rng_pptr < rng_psize) { // extract some randomness from Math.random()\n\t\tt = Math.floor(65536 * Math.random());\n\t\trng_pool[rng_pptr++] = t >>> 8;\n\t\trng_pool[rng_pptr++] = t & 255;\n\t }\n\t rng_pptr = 0;\n\t rng_seed_time();\n\t //rng_seed_int(window.screenX);\n\t //rng_seed_int(window.screenY);\n\t}\n\n\tfunction rng_get_byte() {\n\t if(rng_state == null) {\n\t\trng_seed_time();\n\t\trng_state = prng_newstate();\n\t\trng_state.init(rng_pool);\n\t\tfor(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)\n\t\t rng_pool[rng_pptr] = 0;\n\t\trng_pptr = 0;\n\t\t//rng_pool = null;\n\t }\n\t // TODO: allow reseeding after first request\n\t return rng_state.next();\n\t}\n\n\tfunction rng_get_bytes(ba) {\n\t var i;\n\t for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();\n\t}\n\n\tfunction SecureRandom() {}\n\n\tSecureRandom.prototype.nextBytes = rng_get_bytes;\n\n\t// prng4.js - uses Arcfour as a PRNG\n\n\tfunction Arcfour() {\n\t this.i = 0;\n\t this.j = 0;\n\t this.S = new Array();\n\t}\n\n\t// Initialize arcfour context from key, an array of ints, each from [0..255]\n\tfunction ARC4init(key) {\n\t var i, j, t;\n\t for(i = 0; i < 256; ++i)\n\t\tthis.S[i] = i;\n\t j = 0;\n\t for(i = 0; i < 256; ++i) {\n\t\tj = (j + this.S[i] + key[i % key.length]) & 255;\n\t\tt = this.S[i];\n\t\tthis.S[i] = this.S[j];\n\t\tthis.S[j] = t;\n\t }\n\t this.i = 0;\n\t this.j = 0;\n\t}\n\n\tfunction ARC4next() {\n\t var t;\n\t this.i = (this.i + 1) & 255;\n\t this.j = (this.j + this.S[this.i]) & 255;\n\t t = this.S[this.i];\n\t this.S[this.i] = this.S[this.j];\n\t this.S[this.j] = t;\n\t return this.S[(t + this.S[this.i]) & 255];\n\t}\n\n\tArcfour.prototype.init = ARC4init;\n\tArcfour.prototype.next = ARC4next;\n\n\t// Plug in your RNG constructor here\n\tfunction prng_newstate() {\n\t return new Arcfour();\n\t}\n\n\t// Pool size must be a multiple of 4 and greater than 32.\n\t// An array of bytes the size of the pool will be passed to init()\n\tvar rng_psize = 256;\n\n BigInteger.SecureRandom = SecureRandom;\n BigInteger.BigInteger = BigInteger;\n if (typeof exports !== 'undefined') {\n exports = module.exports = BigInteger;\n } else {\n this.BigInteger = BigInteger;\n this.SecureRandom = SecureRandom;\n }\n\n}).call(this);\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i schema.maxItems){\r\n\t\t\t\t\t\taddError(\"There must be a maximum of \" + schema.maxItems + \" in the array\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else if(schema.properties || schema.additionalProperties){\r\n\t\t\t\t\terrors.concat(checkObj(value, schema.properties, path, schema.additionalProperties));\r\n\t\t\t\t}\r\n\t\t\t\tif(schema.pattern && typeof value == 'string' && !value.match(schema.pattern)){\r\n\t\t\t\t\taddError(\"does not match the regex pattern \" + schema.pattern);\r\n\t\t\t\t}\r\n\t\t\t\tif(schema.maxLength && typeof value == 'string' && value.length > schema.maxLength){\r\n\t\t\t\t\taddError(\"may only be \" + schema.maxLength + \" characters long\");\r\n\t\t\t\t}\r\n\t\t\t\tif(schema.minLength && typeof value == 'string' && value.length < schema.minLength){\r\n\t\t\t\t\taddError(\"must be at least \" + schema.minLength + \" characters long\");\r\n\t\t\t\t}\r\n\t\t\t\tif(typeof schema.minimum !== 'undefined' && typeof value == typeof schema.minimum &&\r\n\t\t\t\t\t\tschema.minimum > value){\r\n\t\t\t\t\taddError(\"must have a minimum value of \" + schema.minimum);\r\n\t\t\t\t}\r\n\t\t\t\tif(typeof schema.maximum !== 'undefined' && typeof value == typeof schema.maximum &&\r\n\t\t\t\t\t\tschema.maximum < value){\r\n\t\t\t\t\taddError(\"must have a maximum value of \" + schema.maximum);\r\n\t\t\t\t}\r\n\t\t\t\tif(schema['enum']){\r\n\t\t\t\t\tvar enumer = schema['enum'];\r\n\t\t\t\t\tl = enumer.length;\r\n\t\t\t\t\tvar found;\r\n\t\t\t\t\tfor(var j = 0; j < l; j++){\r\n\t\t\t\t\t\tif(enumer[j]===value){\r\n\t\t\t\t\t\t\tfound=1;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(!found){\r\n\t\t\t\t\t\taddError(\"does not have a value in the enumeration \" + enumer.join(\", \"));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(typeof schema.maxDecimal == 'number' &&\r\n\t\t\t\t\t(value.toString().match(new RegExp(\"\\\\.[0-9]{\" + (schema.maxDecimal + 1) + \",}\")))){\r\n\t\t\t\t\taddError(\"may only have \" + schema.maxDecimal + \" digits of decimal places\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\t// validate an object against a schema\r\n\tfunction checkObj(instance,objTypeDef,path,additionalProp){\r\n\r\n\t\tif(typeof objTypeDef =='object'){\r\n\t\t\tif(typeof instance != 'object' || instance instanceof Array){\r\n\t\t\t\terrors.push({property:path,message:\"an object is required\"});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tfor(var i in objTypeDef){ \r\n\t\t\t\tif(objTypeDef.hasOwnProperty(i) && i != '__proto__' && i != 'constructor'){\r\n\t\t\t\t\tvar value = instance.hasOwnProperty(i) ? instance[i] : undefined;\r\n\t\t\t\t\t// skip _not_ specified properties\r\n\t\t\t\t\tif (value === undefined && options.existingOnly) continue;\r\n\t\t\t\t\tvar propDef = objTypeDef[i];\r\n\t\t\t\t\t// set default\r\n\t\t\t\t\tif(value === undefined && propDef[\"default\"]){\r\n\t\t\t\t\t\tvalue = instance[i] = propDef[\"default\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(options.coerce && i in instance){\r\n\t\t\t\t\t\tvalue = instance[i] = options.coerce(value, propDef);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcheckProp(value,propDef,path,i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor(i in instance){\r\n\t\t\tif(instance.hasOwnProperty(i) && !(i.charAt(0) == '_' && i.charAt(1) == '_') && objTypeDef && !objTypeDef[i] && additionalProp===false){\r\n\t\t\t\tif (options.filter) {\r\n\t\t\t\t\tdelete instance[i];\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\terrors.push({property:path,message:\"The property \" + i +\r\n\t\t\t\t\t\t\" is not defined in the schema and the schema does not allow additional properties\"});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar requires = objTypeDef && objTypeDef[i] && objTypeDef[i].requires;\r\n\t\t\tif(requires && !(requires in instance)){\r\n\t\t\t\terrors.push({property:path,message:\"the presence of the property \" + i + \" requires that \" + requires + \" also be present\"});\r\n\t\t\t}\r\n\t\t\tvalue = instance[i];\r\n\t\t\tif(additionalProp && (!(objTypeDef && typeof objTypeDef == 'object') || !(i in objTypeDef))){\r\n\t\t\t\tif(options.coerce){\r\n\t\t\t\t\tvalue = instance[i] = options.coerce(value, additionalProp);\r\n\t\t\t\t}\r\n\t\t\t\tcheckProp(value,additionalProp,path,i);\r\n\t\t\t}\r\n\t\t\tif(!_changing && value && value.$schema){\r\n\t\t\t\terrors = errors.concat(checkProp(value,value.$schema,path,i));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn errors;\r\n\t}\r\n\tif(schema){\r\n\t\tcheckProp(instance,schema,'',_changing || '');\r\n\t}\r\n\tif(!_changing && instance && instance.$schema){\r\n\t\tcheckProp(instance,instance.$schema,'','');\r\n\t}\r\n\treturn {valid:!errors.length,errors:errors};\r\n};\r\nexports.mustBeValid = function(result){\r\n\t//\tsummary:\r\n\t//\t\tThis checks to ensure that the result is valid and will throw an appropriate error message if it is not\r\n\t// result: the result returned from checkPropertyChange or validate\r\n\tif(!result.valid){\r\n\t\tthrow new TypeError(result.errors.map(function(error){return \"for property \" + error.property + ': ' + error.message;}).join(\", \\n\"));\r\n\t}\r\n}\r\n\r\nreturn exports;\r\n}));\r\n","exports = module.exports = stringify\nexports.getSerialize = serializer\n\nfunction stringify(obj, replacer, spaces, cycleReplacer) {\n return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces)\n}\n\nfunction serializer(replacer, cycleReplacer) {\n var stack = [], keys = []\n\n if (cycleReplacer == null) cycleReplacer = function(key, value) {\n if (stack[0] === value) return \"[Circular ~]\"\n return \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\"\n }\n\n return function(key, value) {\n if (stack.length > 0) {\n var thisPos = stack.indexOf(this)\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this)\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)\n if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value)\n }\n else stack.push(value)\n\n return replacer == null ? value : replacer.call(this, key, value)\n }\n}\n","/*\n * lib/jsprim.js: utilities for primitive JavaScript types\n */\n\nvar mod_assert = require('assert-plus');\nvar mod_util = require('util');\n\nvar mod_extsprintf = require('extsprintf');\nvar mod_verror = require('verror');\nvar mod_jsonschema = require('json-schema');\n\n/*\n * Public interface\n */\nexports.deepCopy = deepCopy;\nexports.deepEqual = deepEqual;\nexports.isEmpty = isEmpty;\nexports.hasKey = hasKey;\nexports.forEachKey = forEachKey;\nexports.pluck = pluck;\nexports.flattenObject = flattenObject;\nexports.flattenIter = flattenIter;\nexports.validateJsonObject = validateJsonObjectJS;\nexports.validateJsonObjectJS = validateJsonObjectJS;\nexports.randElt = randElt;\nexports.extraProperties = extraProperties;\nexports.mergeObjects = mergeObjects;\n\nexports.startsWith = startsWith;\nexports.endsWith = endsWith;\n\nexports.parseInteger = parseInteger;\n\nexports.iso8601 = iso8601;\nexports.rfc1123 = rfc1123;\nexports.parseDateTime = parseDateTime;\n\nexports.hrtimediff = hrtimeDiff;\nexports.hrtimeDiff = hrtimeDiff;\nexports.hrtimeAccum = hrtimeAccum;\nexports.hrtimeAdd = hrtimeAdd;\nexports.hrtimeNanosec = hrtimeNanosec;\nexports.hrtimeMicrosec = hrtimeMicrosec;\nexports.hrtimeMillisec = hrtimeMillisec;\n\n\n/*\n * Deep copy an acyclic *basic* Javascript object. This only handles basic\n * scalars (strings, numbers, booleans) and arbitrarily deep arrays and objects\n * containing these. This does *not* handle instances of other classes.\n */\nfunction deepCopy(obj)\n{\n\tvar ret, key;\n\tvar marker = '__deepCopy';\n\n\tif (obj && obj[marker])\n\t\tthrow (new Error('attempted deep copy of cyclic object'));\n\n\tif (obj && obj.constructor == Object) {\n\t\tret = {};\n\t\tobj[marker] = true;\n\n\t\tfor (key in obj) {\n\t\t\tif (key == marker)\n\t\t\t\tcontinue;\n\n\t\t\tret[key] = deepCopy(obj[key]);\n\t\t}\n\n\t\tdelete (obj[marker]);\n\t\treturn (ret);\n\t}\n\n\tif (obj && obj.constructor == Array) {\n\t\tret = [];\n\t\tobj[marker] = true;\n\n\t\tfor (key = 0; key < obj.length; key++)\n\t\t\tret.push(deepCopy(obj[key]));\n\n\t\tdelete (obj[marker]);\n\t\treturn (ret);\n\t}\n\n\t/*\n\t * It must be a primitive type -- just return it.\n\t */\n\treturn (obj);\n}\n\nfunction deepEqual(obj1, obj2)\n{\n\tif (typeof (obj1) != typeof (obj2))\n\t\treturn (false);\n\n\tif (obj1 === null || obj2 === null || typeof (obj1) != 'object')\n\t\treturn (obj1 === obj2);\n\n\tif (obj1.constructor != obj2.constructor)\n\t\treturn (false);\n\n\tvar k;\n\tfor (k in obj1) {\n\t\tif (!obj2.hasOwnProperty(k))\n\t\t\treturn (false);\n\n\t\tif (!deepEqual(obj1[k], obj2[k]))\n\t\t\treturn (false);\n\t}\n\n\tfor (k in obj2) {\n\t\tif (!obj1.hasOwnProperty(k))\n\t\t\treturn (false);\n\t}\n\n\treturn (true);\n}\n\nfunction isEmpty(obj)\n{\n\tvar key;\n\tfor (key in obj)\n\t\treturn (false);\n\treturn (true);\n}\n\nfunction hasKey(obj, key)\n{\n\tmod_assert.equal(typeof (key), 'string');\n\treturn (Object.prototype.hasOwnProperty.call(obj, key));\n}\n\nfunction forEachKey(obj, callback)\n{\n\tfor (var key in obj) {\n\t\tif (hasKey(obj, key)) {\n\t\t\tcallback(key, obj[key]);\n\t\t}\n\t}\n}\n\nfunction pluck(obj, key)\n{\n\tmod_assert.equal(typeof (key), 'string');\n\treturn (pluckv(obj, key));\n}\n\nfunction pluckv(obj, key)\n{\n\tif (obj === null || typeof (obj) !== 'object')\n\t\treturn (undefined);\n\n\tif (obj.hasOwnProperty(key))\n\t\treturn (obj[key]);\n\n\tvar i = key.indexOf('.');\n\tif (i == -1)\n\t\treturn (undefined);\n\n\tvar key1 = key.substr(0, i);\n\tif (!obj.hasOwnProperty(key1))\n\t\treturn (undefined);\n\n\treturn (pluckv(obj[key1], key.substr(i + 1)));\n}\n\n/*\n * Invoke callback(row) for each entry in the array that would be returned by\n * flattenObject(data, depth). This is just like flattenObject(data,\n * depth).forEach(callback), except that the intermediate array is never\n * created.\n */\nfunction flattenIter(data, depth, callback)\n{\n\tdoFlattenIter(data, depth, [], callback);\n}\n\nfunction doFlattenIter(data, depth, accum, callback)\n{\n\tvar each;\n\tvar key;\n\n\tif (depth === 0) {\n\t\teach = accum.slice(0);\n\t\teach.push(data);\n\t\tcallback(each);\n\t\treturn;\n\t}\n\n\tmod_assert.ok(data !== null);\n\tmod_assert.equal(typeof (data), 'object');\n\tmod_assert.equal(typeof (depth), 'number');\n\tmod_assert.ok(depth >= 0);\n\n\tfor (key in data) {\n\t\teach = accum.slice(0);\n\t\teach.push(key);\n\t\tdoFlattenIter(data[key], depth - 1, each, callback);\n\t}\n}\n\nfunction flattenObject(data, depth)\n{\n\tif (depth === 0)\n\t\treturn ([ data ]);\n\n\tmod_assert.ok(data !== null);\n\tmod_assert.equal(typeof (data), 'object');\n\tmod_assert.equal(typeof (depth), 'number');\n\tmod_assert.ok(depth >= 0);\n\n\tvar rv = [];\n\tvar key;\n\n\tfor (key in data) {\n\t\tflattenObject(data[key], depth - 1).forEach(function (p) {\n\t\t\trv.push([ key ].concat(p));\n\t\t});\n\t}\n\n\treturn (rv);\n}\n\nfunction startsWith(str, prefix)\n{\n\treturn (str.substr(0, prefix.length) == prefix);\n}\n\nfunction endsWith(str, suffix)\n{\n\treturn (str.substr(\n\t str.length - suffix.length, suffix.length) == suffix);\n}\n\nfunction iso8601(d)\n{\n\tif (typeof (d) == 'number')\n\t\td = new Date(d);\n\tmod_assert.ok(d.constructor === Date);\n\treturn (mod_extsprintf.sprintf('%4d-%02d-%02dT%02d:%02d:%02d.%03dZ',\n\t d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate(),\n\t d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(),\n\t d.getUTCMilliseconds()));\n}\n\nvar RFC1123_MONTHS = [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nvar RFC1123_DAYS = [\n 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\nfunction rfc1123(date) {\n\treturn (mod_extsprintf.sprintf('%s, %02d %s %04d %02d:%02d:%02d GMT',\n\t RFC1123_DAYS[date.getUTCDay()], date.getUTCDate(),\n\t RFC1123_MONTHS[date.getUTCMonth()], date.getUTCFullYear(),\n\t date.getUTCHours(), date.getUTCMinutes(),\n\t date.getUTCSeconds()));\n}\n\n/*\n * Parses a date expressed as a string, as either a number of milliseconds since\n * the epoch or any string format that Date accepts, giving preference to the\n * former where these two sets overlap (e.g., small numbers).\n */\nfunction parseDateTime(str)\n{\n\t/*\n\t * This is irritatingly implicit, but significantly more concise than\n\t * alternatives. The \"+str\" will convert a string containing only a\n\t * number directly to a Number, or NaN for other strings. Thus, if the\n\t * conversion succeeds, we use it (this is the milliseconds-since-epoch\n\t * case). Otherwise, we pass the string directly to the Date\n\t * constructor to parse.\n\t */\n\tvar numeric = +str;\n\tif (!isNaN(numeric)) {\n\t\treturn (new Date(numeric));\n\t} else {\n\t\treturn (new Date(str));\n\t}\n}\n\n\n/*\n * Number.*_SAFE_INTEGER isn't present before node v0.12, so we hardcode\n * the ES6 definitions here, while allowing for them to someday be higher.\n */\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\nvar MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\n\n\n/*\n * Default options for parseInteger().\n */\nvar PI_DEFAULTS = {\n\tbase: 10,\n\tallowSign: true,\n\tallowPrefix: false,\n\tallowTrailing: false,\n\tallowImprecise: false,\n\ttrimWhitespace: false,\n\tleadingZeroIsOctal: false\n};\n\nvar CP_0 = 0x30;\nvar CP_9 = 0x39;\n\nvar CP_A = 0x41;\nvar CP_B = 0x42;\nvar CP_O = 0x4f;\nvar CP_T = 0x54;\nvar CP_X = 0x58;\nvar CP_Z = 0x5a;\n\nvar CP_a = 0x61;\nvar CP_b = 0x62;\nvar CP_o = 0x6f;\nvar CP_t = 0x74;\nvar CP_x = 0x78;\nvar CP_z = 0x7a;\n\nvar PI_CONV_DEC = 0x30;\nvar PI_CONV_UC = 0x37;\nvar PI_CONV_LC = 0x57;\n\n\n/*\n * A stricter version of parseInt() that provides options for changing what\n * is an acceptable string (for example, disallowing trailing characters).\n */\nfunction parseInteger(str, uopts)\n{\n\tmod_assert.string(str, 'str');\n\tmod_assert.optionalObject(uopts, 'options');\n\n\tvar baseOverride = false;\n\tvar options = PI_DEFAULTS;\n\n\tif (uopts) {\n\t\tbaseOverride = hasKey(uopts, 'base');\n\t\toptions = mergeObjects(options, uopts);\n\t\tmod_assert.number(options.base, 'options.base');\n\t\tmod_assert.ok(options.base >= 2, 'options.base >= 2');\n\t\tmod_assert.ok(options.base <= 36, 'options.base <= 36');\n\t\tmod_assert.bool(options.allowSign, 'options.allowSign');\n\t\tmod_assert.bool(options.allowPrefix, 'options.allowPrefix');\n\t\tmod_assert.bool(options.allowTrailing,\n\t\t 'options.allowTrailing');\n\t\tmod_assert.bool(options.allowImprecise,\n\t\t 'options.allowImprecise');\n\t\tmod_assert.bool(options.trimWhitespace,\n\t\t 'options.trimWhitespace');\n\t\tmod_assert.bool(options.leadingZeroIsOctal,\n\t\t 'options.leadingZeroIsOctal');\n\n\t\tif (options.leadingZeroIsOctal) {\n\t\t\tmod_assert.ok(!baseOverride,\n\t\t\t '\"base\" and \"leadingZeroIsOctal\" are ' +\n\t\t\t 'mutually exclusive');\n\t\t}\n\t}\n\n\tvar c;\n\tvar pbase = -1;\n\tvar base = options.base;\n\tvar start;\n\tvar mult = 1;\n\tvar value = 0;\n\tvar idx = 0;\n\tvar len = str.length;\n\n\t/* Trim any whitespace on the left side. */\n\tif (options.trimWhitespace) {\n\t\twhile (idx < len && isSpace(str.charCodeAt(idx))) {\n\t\t\t++idx;\n\t\t}\n\t}\n\n\t/* Check the number for a leading sign. */\n\tif (options.allowSign) {\n\t\tif (str[idx] === '-') {\n\t\t\tidx += 1;\n\t\t\tmult = -1;\n\t\t} else if (str[idx] === '+') {\n\t\t\tidx += 1;\n\t\t}\n\t}\n\n\t/* Parse the base-indicating prefix if there is one. */\n\tif (str[idx] === '0') {\n\t\tif (options.allowPrefix) {\n\t\t\tpbase = prefixToBase(str.charCodeAt(idx + 1));\n\t\t\tif (pbase !== -1 && (!baseOverride || pbase === base)) {\n\t\t\t\tbase = pbase;\n\t\t\t\tidx += 2;\n\t\t\t}\n\t\t}\n\n\t\tif (pbase === -1 && options.leadingZeroIsOctal) {\n\t\t\tbase = 8;\n\t\t}\n\t}\n\n\t/* Parse the actual digits. */\n\tfor (start = idx; idx < len; ++idx) {\n\t\tc = translateDigit(str.charCodeAt(idx));\n\t\tif (c !== -1 && c < base) {\n\t\t\tvalue *= base;\n\t\t\tvalue += c;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* If we didn't parse any digits, we have an invalid number. */\n\tif (start === idx) {\n\t\treturn (new Error('invalid number: ' + JSON.stringify(str)));\n\t}\n\n\t/* Trim any whitespace on the right side. */\n\tif (options.trimWhitespace) {\n\t\twhile (idx < len && isSpace(str.charCodeAt(idx))) {\n\t\t\t++idx;\n\t\t}\n\t}\n\n\t/* Check for trailing characters. */\n\tif (idx < len && !options.allowTrailing) {\n\t\treturn (new Error('trailing characters after number: ' +\n\t\t JSON.stringify(str.slice(idx))));\n\t}\n\n\t/* If our value is 0, we return now, to avoid returning -0. */\n\tif (value === 0) {\n\t\treturn (0);\n\t}\n\n\t/* Calculate our final value. */\n\tvar result = value * mult;\n\n\t/*\n\t * If the string represents a value that cannot be precisely represented\n\t * by JavaScript, then we want to check that:\n\t *\n\t * - We never increased the value past MAX_SAFE_INTEGER\n\t * - We don't make the result negative and below MIN_SAFE_INTEGER\n\t *\n\t * Because we only ever increment the value during parsing, there's no\n\t * chance of moving past MAX_SAFE_INTEGER and then dropping below it\n\t * again, losing precision in the process. This means that we only need\n\t * to do our checks here, at the end.\n\t */\n\tif (!options.allowImprecise &&\n\t (value > MAX_SAFE_INTEGER || result < MIN_SAFE_INTEGER)) {\n\t\treturn (new Error('number is outside of the supported range: ' +\n\t\t JSON.stringify(str.slice(start, idx))));\n\t}\n\n\treturn (result);\n}\n\n\n/*\n * Interpret a character code as a base-36 digit.\n */\nfunction translateDigit(d)\n{\n\tif (d >= CP_0 && d <= CP_9) {\n\t\t/* '0' to '9' -> 0 to 9 */\n\t\treturn (d - PI_CONV_DEC);\n\t} else if (d >= CP_A && d <= CP_Z) {\n\t\t/* 'A' - 'Z' -> 10 to 35 */\n\t\treturn (d - PI_CONV_UC);\n\t} else if (d >= CP_a && d <= CP_z) {\n\t\t/* 'a' - 'z' -> 10 to 35 */\n\t\treturn (d - PI_CONV_LC);\n\t} else {\n\t\t/* Invalid character code */\n\t\treturn (-1);\n\t}\n}\n\n\n/*\n * Test if a value matches the ECMAScript definition of trimmable whitespace.\n */\nfunction isSpace(c)\n{\n\treturn (c === 0x20) ||\n\t (c >= 0x0009 && c <= 0x000d) ||\n\t (c === 0x00a0) ||\n\t (c === 0x1680) ||\n\t (c === 0x180e) ||\n\t (c >= 0x2000 && c <= 0x200a) ||\n\t (c === 0x2028) ||\n\t (c === 0x2029) ||\n\t (c === 0x202f) ||\n\t (c === 0x205f) ||\n\t (c === 0x3000) ||\n\t (c === 0xfeff);\n}\n\n\n/*\n * Determine which base a character indicates (e.g., 'x' indicates hex).\n */\nfunction prefixToBase(c)\n{\n\tif (c === CP_b || c === CP_B) {\n\t\t/* 0b/0B (binary) */\n\t\treturn (2);\n\t} else if (c === CP_o || c === CP_O) {\n\t\t/* 0o/0O (octal) */\n\t\treturn (8);\n\t} else if (c === CP_t || c === CP_T) {\n\t\t/* 0t/0T (decimal) */\n\t\treturn (10);\n\t} else if (c === CP_x || c === CP_X) {\n\t\t/* 0x/0X (hexadecimal) */\n\t\treturn (16);\n\t} else {\n\t\t/* Not a meaningful character */\n\t\treturn (-1);\n\t}\n}\n\n\nfunction validateJsonObjectJS(schema, input)\n{\n\tvar report = mod_jsonschema.validate(input, schema);\n\n\tif (report.errors.length === 0)\n\t\treturn (null);\n\n\t/* Currently, we only do anything useful with the first error. */\n\tvar error = report.errors[0];\n\n\t/* The failed property is given by a URI with an irrelevant prefix. */\n\tvar propname = error['property'];\n\tvar reason = error['message'].toLowerCase();\n\tvar i, j;\n\n\t/*\n\t * There's at least one case where the property error message is\n\t * confusing at best. We work around this here.\n\t */\n\tif ((i = reason.indexOf('the property ')) != -1 &&\n\t (j = reason.indexOf(' is not defined in the schema and the ' +\n\t 'schema does not allow additional properties')) != -1) {\n\t\ti += 'the property '.length;\n\t\tif (propname === '')\n\t\t\tpropname = reason.substr(i, j - i);\n\t\telse\n\t\t\tpropname = propname + '.' + reason.substr(i, j - i);\n\n\t\treason = 'unsupported property';\n\t}\n\n\tvar rv = new mod_verror.VError('property \"%s\": %s', propname, reason);\n\trv.jsv_details = error;\n\treturn (rv);\n}\n\nfunction randElt(arr)\n{\n\tmod_assert.ok(Array.isArray(arr) && arr.length > 0,\n\t 'randElt argument must be a non-empty array');\n\n\treturn (arr[Math.floor(Math.random() * arr.length)]);\n}\n\nfunction assertHrtime(a)\n{\n\tmod_assert.ok(a[0] >= 0 && a[1] >= 0,\n\t 'negative numbers not allowed in hrtimes');\n\tmod_assert.ok(a[1] < 1e9, 'nanoseconds column overflow');\n}\n\n/*\n * Compute the time elapsed between hrtime readings A and B, where A is later\n * than B. hrtime readings come from Node's process.hrtime(). There is no\n * defined way to represent negative deltas, so it's illegal to diff B from A\n * where the time denoted by B is later than the time denoted by A. If this\n * becomes valuable, we can define a representation and extend the\n * implementation to support it.\n */\nfunction hrtimeDiff(a, b)\n{\n\tassertHrtime(a);\n\tassertHrtime(b);\n\tmod_assert.ok(a[0] > b[0] || (a[0] == b[0] && a[1] >= b[1]),\n\t 'negative differences not allowed');\n\n\tvar rv = [ a[0] - b[0], 0 ];\n\n\tif (a[1] >= b[1]) {\n\t\trv[1] = a[1] - b[1];\n\t} else {\n\t\trv[0]--;\n\t\trv[1] = 1e9 - (b[1] - a[1]);\n\t}\n\n\treturn (rv);\n}\n\n/*\n * Convert a hrtime reading from the array format returned by Node's\n * process.hrtime() into a scalar number of nanoseconds.\n */\nfunction hrtimeNanosec(a)\n{\n\tassertHrtime(a);\n\n\treturn (Math.floor(a[0] * 1e9 + a[1]));\n}\n\n/*\n * Convert a hrtime reading from the array format returned by Node's\n * process.hrtime() into a scalar number of microseconds.\n */\nfunction hrtimeMicrosec(a)\n{\n\tassertHrtime(a);\n\n\treturn (Math.floor(a[0] * 1e6 + a[1] / 1e3));\n}\n\n/*\n * Convert a hrtime reading from the array format returned by Node's\n * process.hrtime() into a scalar number of milliseconds.\n */\nfunction hrtimeMillisec(a)\n{\n\tassertHrtime(a);\n\n\treturn (Math.floor(a[0] * 1e3 + a[1] / 1e6));\n}\n\n/*\n * Add two hrtime readings A and B, overwriting A with the result of the\n * addition. This function is useful for accumulating several hrtime intervals\n * into a counter. Returns A.\n */\nfunction hrtimeAccum(a, b)\n{\n\tassertHrtime(a);\n\tassertHrtime(b);\n\n\t/*\n\t * Accumulate the nanosecond component.\n\t */\n\ta[1] += b[1];\n\tif (a[1] >= 1e9) {\n\t\t/*\n\t\t * The nanosecond component overflowed, so carry to the seconds\n\t\t * field.\n\t\t */\n\t\ta[0]++;\n\t\ta[1] -= 1e9;\n\t}\n\n\t/*\n\t * Accumulate the seconds component.\n\t */\n\ta[0] += b[0];\n\n\treturn (a);\n}\n\n/*\n * Add two hrtime readings A and B, returning the result as a new hrtime array.\n * Does not modify either input argument.\n */\nfunction hrtimeAdd(a, b)\n{\n\tassertHrtime(a);\n\n\tvar rv = [ a[0], a[1] ];\n\n\treturn (hrtimeAccum(rv, b));\n}\n\n\n/*\n * Check an object for unexpected properties. Accepts the object to check, and\n * an array of allowed property names (strings). Returns an array of key names\n * that were found on the object, but did not appear in the list of allowed\n * properties. If no properties were found, the returned array will be of\n * zero length.\n */\nfunction extraProperties(obj, allowed)\n{\n\tmod_assert.ok(typeof (obj) === 'object' && obj !== null,\n\t 'obj argument must be a non-null object');\n\tmod_assert.ok(Array.isArray(allowed),\n\t 'allowed argument must be an array of strings');\n\tfor (var i = 0; i < allowed.length; i++) {\n\t\tmod_assert.ok(typeof (allowed[i]) === 'string',\n\t\t 'allowed argument must be an array of strings');\n\t}\n\n\treturn (Object.keys(obj).filter(function (key) {\n\t\treturn (allowed.indexOf(key) === -1);\n\t}));\n}\n\n/*\n * Given three sets of properties \"provided\" (may be undefined), \"overrides\"\n * (required), and \"defaults\" (may be undefined), construct an object containing\n * the union of these sets with \"overrides\" overriding \"provided\", and\n * \"provided\" overriding \"defaults\". None of the input objects are modified.\n */\nfunction mergeObjects(provided, overrides, defaults)\n{\n\tvar rv, k;\n\n\trv = {};\n\tif (defaults) {\n\t\tfor (k in defaults)\n\t\t\trv[k] = defaults[k];\n\t}\n\n\tif (provided) {\n\t\tfor (k in provided)\n\t\t\trv[k] = provided[k];\n\t}\n\n\tif (overrides) {\n\t\tfor (k in overrides)\n\t\t\trv[k] = overrides[k];\n\t}\n\n\treturn (rv);\n}\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n","/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && db[match[1].toLowerCase()]\n\n if (mime && mime.charset) {\n return mime.charset\n }\n\n // default text/* to utf-8\n if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n return 'UTF-8'\n }\n\n return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n // TODO: should this even be in this module?\n if (!str || typeof str !== 'string') {\n return false\n }\n\n var mime = str.indexOf('/') === -1\n ? exports.lookup(str)\n : str\n\n if (!mime) {\n return false\n }\n\n // TODO: use content-type or other module\n if (mime.indexOf('charset') === -1) {\n var charset = exports.charset(mime)\n if (charset) mime += '; charset=' + charset.toLowerCase()\n }\n\n return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n // get extensions\n var exts = match && exports.extensions[match[1].toLowerCase()]\n\n if (!exts || !exts.length) {\n return false\n }\n\n return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n if (!path || typeof path !== 'string') {\n return false\n }\n\n // get the extension (\"ext\" or \".ext\" or full path)\n var extension = extname('x.' + path)\n .toLowerCase()\n .substr(1)\n\n if (!extension) {\n return false\n }\n\n return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n // source preference (least -> most)\n var preference = ['nginx', 'apache', undefined, 'iana']\n\n Object.keys(db).forEach(function forEachMimeType (type) {\n var mime = db[type]\n var exts = mime.extensions\n\n if (!exts || !exts.length) {\n return\n }\n\n // mime -> extensions\n extensions[type] = exts\n\n // extension -> mime\n for (var i = 0; i < exts.length; i++) {\n var extension = exts[i]\n\n if (types[extension]) {\n var from = preference.indexOf(db[types[extension]].source)\n var to = preference.indexOf(mime.source)\n\n if (types[extension] !== 'application/octet-stream' &&\n (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n // skip the remapping\n continue\n }\n }\n\n // set the extension -> mime\n types[extension] = type\n }\n })\n}\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","/*\nCopyright 2013 Sleepless Software Inc. All rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to\ndeal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or\nsell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE. \n*/\n\n// yes, I know this seems stupid, but I have my reasons.\n\nvar net = require(\"net\")\nfor(k in net)\n\tglobal[k] = net[k]\n\n","var crypto = require('crypto')\n\nfunction sha (key, body, algorithm) {\n return crypto.createHmac(algorithm, key).update(body).digest('base64')\n}\n\nfunction rsa (key, body) {\n return crypto.createSign('RSA-SHA1').update(body).sign(key, 'base64')\n}\n\nfunction rfc3986 (str) {\n return encodeURIComponent(str)\n .replace(/!/g,'%21')\n .replace(/\\*/g,'%2A')\n .replace(/\\(/g,'%28')\n .replace(/\\)/g,'%29')\n .replace(/'/g,'%27')\n}\n\n// Maps object to bi-dimensional array\n// Converts { foo: 'A', bar: [ 'b', 'B' ]} to\n// [ ['foo', 'A'], ['bar', 'b'], ['bar', 'B'] ]\nfunction map (obj) {\n var key, val, arr = []\n for (key in obj) {\n val = obj[key]\n if (Array.isArray(val))\n for (var i = 0; i < val.length; i++)\n arr.push([key, val[i]])\n else if (typeof val === 'object')\n for (var prop in val)\n arr.push([key + '[' + prop + ']', val[prop]])\n else\n arr.push([key, val])\n }\n return arr\n}\n\n// Compare function for sort\nfunction compare (a, b) {\n return a > b ? 1 : a < b ? -1 : 0\n}\n\nfunction generateBase (httpMethod, base_uri, params) {\n // adapted from https://dev.twitter.com/docs/auth/oauth and \n // https://dev.twitter.com/docs/auth/creating-signature\n\n // Parameter normalization\n // http://tools.ietf.org/html/rfc5849#section-3.4.1.3.2\n var normalized = map(params)\n // 1. First, the name and value of each parameter are encoded\n .map(function (p) {\n return [ rfc3986(p[0]), rfc3986(p[1] || '') ]\n })\n // 2. The parameters are sorted by name, using ascending byte value\n // ordering. If two or more parameters share the same name, they\n // are sorted by their value.\n .sort(function (a, b) {\n return compare(a[0], b[0]) || compare(a[1], b[1])\n })\n // 3. The name of each parameter is concatenated to its corresponding\n // value using an \"=\" character (ASCII code 61) as a separator, even\n // if the value is empty.\n .map(function (p) { return p.join('=') })\n // 4. The sorted name/value pairs are concatenated together into a\n // single string by using an \"&\" character (ASCII code 38) as\n // separator.\n .join('&')\n\n var base = [\n rfc3986(httpMethod ? httpMethod.toUpperCase() : 'GET'),\n rfc3986(base_uri),\n rfc3986(normalized)\n ].join('&')\n\n return base\n}\n\nfunction hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret) {\n var base = generateBase(httpMethod, base_uri, params)\n var key = [\n consumer_secret || '',\n token_secret || ''\n ].map(rfc3986).join('&')\n\n return sha(key, base, 'sha1')\n}\n\nfunction hmacsign256 (httpMethod, base_uri, params, consumer_secret, token_secret) {\n var base = generateBase(httpMethod, base_uri, params)\n var key = [\n consumer_secret || '',\n token_secret || ''\n ].map(rfc3986).join('&')\n\n return sha(key, base, 'sha256')\n}\n\nfunction rsasign (httpMethod, base_uri, params, private_key, token_secret) {\n var base = generateBase(httpMethod, base_uri, params)\n var key = private_key || ''\n\n return rsa(key, base)\n}\n\nfunction plaintext (consumer_secret, token_secret) {\n var key = [\n consumer_secret || '',\n token_secret || ''\n ].map(rfc3986).join('&')\n\n return key\n}\n\nfunction sign (signMethod, httpMethod, base_uri, params, consumer_secret, token_secret) {\n var method\n var skipArgs = 1\n\n switch (signMethod) {\n case 'RSA-SHA1':\n method = rsasign\n break\n case 'HMAC-SHA1':\n method = hmacsign\n break\n case 'HMAC-SHA256':\n method = hmacsign256\n break\n case 'PLAINTEXT':\n method = plaintext\n skipArgs = 4\n break\n default:\n throw new Error('Signature method not supported: ' + signMethod)\n }\n\n return method.apply(null, [].slice.call(arguments, skipArgs))\n}\n\nexports.hmacsign = hmacsign\nexports.hmacsign256 = hmacsign256\nexports.rsasign = rsasign\nexports.plaintext = plaintext\nexports.sign = sign\nexports.rfc3986 = rfc3986\nexports.generateBase = generateBase","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","exports.endianness = function () { return 'LE' };\n\nexports.hostname = function () {\n if (typeof location !== 'undefined') {\n return location.hostname\n }\n else return '';\n};\n\nexports.loadavg = function () { return [] };\n\nexports.uptime = function () { return 0 };\n\nexports.freemem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.totalmem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.cpus = function () { return [] };\n\nexports.type = function () { return 'Browser' };\n\nexports.release = function () {\n if (typeof navigator !== 'undefined') {\n return navigator.appVersion;\n }\n return '';\n};\n\nexports.networkInterfaces\n= exports.getNetworkInterfaces\n= function () { return {} };\n\nexports.arch = function () { return 'javascript' };\n\nexports.platform = function () { return 'browser' };\n\nexports.tmpdir = exports.tmpDir = function () {\n return '/tmp';\n};\n\nexports.EOL = '\\n';\n\nexports.homedir = function () {\n\treturn '/'\n};\n","'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar trees = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar inflate_fast = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n","// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/* exported PromiseThrottle */\n\n'use strict';\n\n/**\n * @constructor\n * @param {Object} options A set op options to pass to the throttle function\n * @param {number} requestsPerSecond The amount of requests per second\n * the library will limit to\n */\nfunction PromiseThrottle(options) {\n this.requestsPerSecond = options.requestsPerSecond;\n this.promiseImplementation = options.promiseImplementation || Promise;\n this.lastStartTime = 0;\n this.queued = [];\n}\n\n/**\n * Adds a promise\n * @param {Function} promise A function returning the promise to be added\n * @param {Object} options A set of options.\n * @param {number} options.signal An AbortSignal object that can be used to abort the returned promise\n * @param {number} options.weight A \"weight\" of each operation resolving by array of promises\n * @return {Promise} A promise\n */\nPromiseThrottle.prototype.add = function(promise, options) {\n var self = this;\n var opt = options || {};\n return new self.promiseImplementation(function(resolve, reject) {\n self.queued.push({\n resolve: resolve,\n reject: reject,\n promise: promise,\n weight: opt.weight || 1,\n signal: opt.signal\n });\n\n self.dequeue();\n });\n};\n\n/**\n * Adds all the promises passed as parameters\n * @param {Function} promises An array of functions that return a promise\n * @param {Object} options A set of options.\n * @param {number} options.signal An AbortSignal object that can be used to abort the returned promise\n * @param {number} options.weight A \"weight\" of each operation resolving by array of promises\n * @return {Promise} A promise that succeeds when all the promises passed as options do\n */\nPromiseThrottle.prototype.addAll = function(promises, options) {\n var addedPromises = promises.map(function(promise) {\n return this.add(promise, options);\n }.bind(this));\n\n return Promise.all(addedPromises);\n};\n\n/**\n * Dequeues a promise\n * @return {void}\n */\nPromiseThrottle.prototype.dequeue = function() {\n if (this.queued.length > 0) {\n var now = new Date(),\n weight = this.queued[0].weight,\n inc = (1000 / this.requestsPerSecond) * weight,\n elapsed = now - this.lastStartTime;\n\n if (elapsed >= inc) {\n this._execute();\n } else {\n // we have reached the limit, schedule a dequeue operation\n setTimeout(function() {\n this.dequeue();\n }.bind(this), inc - elapsed);\n }\n }\n};\n\n/**\n * Executes the promise\n * @private\n * @return {void}\n */\nPromiseThrottle.prototype._execute = function() {\n this.lastStartTime = new Date();\n var candidate = this.queued.shift();\n var aborted = candidate.signal && candidate.signal.aborted;\n if (aborted) {\n candidate.reject(new DOMException('', 'AbortError'));\n } else {\n candidate.promise().then(function(r) {\n candidate.resolve(r);\n }).catch(function(r) {\n candidate.reject(r);\n });\n }\n};\n\nmodule.exports = PromiseThrottle;\n","/*eslint no-var:0, prefer-arrow-callback: 0, object-shorthand: 0 */\n'use strict';\n\n\nvar Punycode = require('punycode');\n\n\nvar internals = {};\n\n\n//\n// Read rules from file.\n//\ninternals.rules = require('./data/rules.json').map(function (rule) {\n\n return {\n rule: rule,\n suffix: rule.replace(/^(\\*\\.|\\!)/, ''),\n punySuffix: -1,\n wildcard: rule.charAt(0) === '*',\n exception: rule.charAt(0) === '!'\n };\n});\n\n\n//\n// Check is given string ends with `suffix`.\n//\ninternals.endsWith = function (str, suffix) {\n\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n};\n\n\n//\n// Find rule for a given domain.\n//\ninternals.findRule = function (domain) {\n\n var punyDomain = Punycode.toASCII(domain);\n return internals.rules.reduce(function (memo, rule) {\n\n if (rule.punySuffix === -1){\n rule.punySuffix = Punycode.toASCII(rule.suffix);\n }\n if (!internals.endsWith(punyDomain, '.' + rule.punySuffix) && punyDomain !== rule.punySuffix) {\n return memo;\n }\n // This has been commented out as it never seems to run. This is because\n // sub tlds always appear after their parents and we never find a shorter\n // match.\n //if (memo) {\n // var memoSuffix = Punycode.toASCII(memo.suffix);\n // if (memoSuffix.length >= punySuffix.length) {\n // return memo;\n // }\n //}\n return rule;\n }, null);\n};\n\n\n//\n// Error codes and messages.\n//\nexports.errorCodes = {\n DOMAIN_TOO_SHORT: 'Domain name too short.',\n DOMAIN_TOO_LONG: 'Domain name too long. It should be no more than 255 chars.',\n LABEL_STARTS_WITH_DASH: 'Domain name label can not start with a dash.',\n LABEL_ENDS_WITH_DASH: 'Domain name label can not end with a dash.',\n LABEL_TOO_LONG: 'Domain name label should be at most 63 chars long.',\n LABEL_TOO_SHORT: 'Domain name label should be at least 1 character long.',\n LABEL_INVALID_CHARS: 'Domain name label can only contain alphanumeric characters or dashes.'\n};\n\n\n//\n// Validate domain name and throw if not valid.\n//\n// From wikipedia:\n//\n// Hostnames are composed of series of labels concatenated with dots, as are all\n// domain names. Each label must be between 1 and 63 characters long, and the\n// entire hostname (including the delimiting dots) has a maximum of 255 chars.\n//\n// Allowed chars:\n//\n// * `a-z`\n// * `0-9`\n// * `-` but not as a starting or ending character\n// * `.` as a separator for the textual portions of a domain name\n//\n// * http://en.wikipedia.org/wiki/Domain_name\n// * http://en.wikipedia.org/wiki/Hostname\n//\ninternals.validate = function (input) {\n\n // Before we can validate we need to take care of IDNs with unicode chars.\n var ascii = Punycode.toASCII(input);\n\n if (ascii.length < 1) {\n return 'DOMAIN_TOO_SHORT';\n }\n if (ascii.length > 255) {\n return 'DOMAIN_TOO_LONG';\n }\n\n // Check each part's length and allowed chars.\n var labels = ascii.split('.');\n var label;\n\n for (var i = 0; i < labels.length; ++i) {\n label = labels[i];\n if (!label.length) {\n return 'LABEL_TOO_SHORT';\n }\n if (label.length > 63) {\n return 'LABEL_TOO_LONG';\n }\n if (label.charAt(0) === '-') {\n return 'LABEL_STARTS_WITH_DASH';\n }\n if (label.charAt(label.length - 1) === '-') {\n return 'LABEL_ENDS_WITH_DASH';\n }\n if (!/^[a-z0-9\\-]+$/.test(label)) {\n return 'LABEL_INVALID_CHARS';\n }\n }\n};\n\n\n//\n// Public API\n//\n\n\n//\n// Parse domain.\n//\nexports.parse = function (input) {\n\n if (typeof input !== 'string') {\n throw new TypeError('Domain name must be a string.');\n }\n\n // Force domain to lowercase.\n var domain = input.slice(0).toLowerCase();\n\n // Handle FQDN.\n // TODO: Simply remove trailing dot?\n if (domain.charAt(domain.length - 1) === '.') {\n domain = domain.slice(0, domain.length - 1);\n }\n\n // Validate and sanitise input.\n var error = internals.validate(domain);\n if (error) {\n return {\n input: input,\n error: {\n message: exports.errorCodes[error],\n code: error\n }\n };\n }\n\n var parsed = {\n input: input,\n tld: null,\n sld: null,\n domain: null,\n subdomain: null,\n listed: false\n };\n\n var domainParts = domain.split('.');\n\n // Non-Internet TLD\n if (domainParts[domainParts.length - 1] === 'local') {\n return parsed;\n }\n\n var handlePunycode = function () {\n\n if (!/xn--/.test(domain)) {\n return parsed;\n }\n if (parsed.domain) {\n parsed.domain = Punycode.toASCII(parsed.domain);\n }\n if (parsed.subdomain) {\n parsed.subdomain = Punycode.toASCII(parsed.subdomain);\n }\n return parsed;\n };\n\n var rule = internals.findRule(domain);\n\n // Unlisted tld.\n if (!rule) {\n if (domainParts.length < 2) {\n return parsed;\n }\n parsed.tld = domainParts.pop();\n parsed.sld = domainParts.pop();\n parsed.domain = [parsed.sld, parsed.tld].join('.');\n if (domainParts.length) {\n parsed.subdomain = domainParts.pop();\n }\n return handlePunycode();\n }\n\n // At this point we know the public suffix is listed.\n parsed.listed = true;\n\n var tldParts = rule.suffix.split('.');\n var privateParts = domainParts.slice(0, domainParts.length - tldParts.length);\n\n if (rule.exception) {\n privateParts.push(tldParts.shift());\n }\n\n parsed.tld = tldParts.join('.');\n\n if (!privateParts.length) {\n return handlePunycode();\n }\n\n if (rule.wildcard) {\n tldParts.unshift(privateParts.pop());\n parsed.tld = tldParts.join('.');\n }\n\n if (!privateParts.length) {\n return handlePunycode();\n }\n\n parsed.sld = privateParts.pop();\n parsed.domain = [parsed.sld, parsed.tld].join('.');\n\n if (privateParts.length) {\n parsed.subdomain = privateParts.join('.');\n }\n\n return handlePunycode();\n};\n\n\n//\n// Get domain.\n//\nexports.get = function (domain) {\n\n if (!domain) {\n return null;\n }\n return exports.parse(domain).domain || null;\n};\n\n\n//\n// Check whether domain belongs to a known public suffix.\n//\nexports.isValid = function (domain) {\n\n var parsed = exports.parse(domain);\n return Boolean(parsed.domain && parsed.listed);\n};\n","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nmodule.exports = {\n 'default': 'RFC3986',\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n parameterLimit: 1000,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n\n for (var i = 0; i < parts.length; ++i) {\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder);\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder);\n val = options.decoder(part.slice(pos + 1), defaults.decoder);\n }\n if (has.call(obj, key)) {\n obj[key] = [].concat(obj[key]).concat(val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options) {\n var leaf = val;\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys\n // that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while ((segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options);\n};\n\nmodule.exports = function (str, opts) {\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n options.ignoreQueryPrefix = options.ignoreQueryPrefix === true;\n options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;\n options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;\n options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;\n options.parseArrays = options.parseArrays !== false;\n options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;\n options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;\n options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;\n options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;\n options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;\n options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options);\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaults = {\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix;\n }\n\n obj = '';\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n if (isArray(obj)) {\n pushToArray(values, stringify(\n obj[key],\n generateArrayPrefix(prefix, key),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n } else {\n pushToArray(values, stringify(\n obj[key],\n prefix + (allowDots ? '.' + key : '[' + key + ']'),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n }\n\n return values;\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.encoder !== null && typeof options.encoder !== 'undefined' && typeof options.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;\n var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;\n var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;\n var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder;\n var sort = typeof options.sort === 'function' ? options.sort : null;\n var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;\n var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate;\n var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly;\n if (typeof options.format === 'undefined') {\n options.format = formats['default'];\n } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n var formatter = formats.formatters[options.format];\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (options.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = options.arrayFormat;\n } else if ('indices' in options) {\n arrayFormat = options.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (sort) {\n objKeys.sort(sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encode ? encoder : null,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n\n var joined = keys.join(delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n var obj;\n\n while (queue.length) {\n var item = queue.pop();\n obj = item.obj[item.prop];\n\n if (Array.isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n\n return obj;\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (Array.isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (Array.isArray(target) && !Array.isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (Array.isArray(target) && Array.isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n } catch (e) {\n return str;\n }\n};\n\nvar encode = function encode(str) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = typeof str === 'string' ? str : String(str);\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n return compactQueue(queue);\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n merge: merge\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nvar core = require('../'),\n isArray = require('lodash/isArray'),\n isFunction = require('lodash/isFunction'),\n isObjectLike = require('lodash/isObjectLike');\n\n\nmodule.exports = function (options) {\n\n var errorText = 'Please verify options'; // For better minification because this string is repeating\n\n if (!isObjectLike(options)) {\n throw new TypeError(errorText);\n }\n\n if (!isFunction(options.request)) {\n throw new TypeError(errorText + '.request');\n }\n\n if (!isArray(options.expose) || options.expose.length === 0) {\n throw new TypeError(errorText + '.expose');\n }\n\n\n var plumbing = core({\n PromiseImpl: options.PromiseImpl,\n constructorMixin: options.constructorMixin\n });\n\n\n // Intercepting Request's init method\n\n var originalInit = options.request.Request.prototype.init;\n\n options.request.Request.prototype.init = function RP$initInterceptor(requestOptions) {\n\n // Init may be called again - currently in case of redirects\n if (isObjectLike(requestOptions) && !this._callback && !this._rp_promise) {\n\n plumbing.init.call(this, requestOptions);\n\n }\n\n return originalInit.apply(this, arguments);\n\n };\n\n\n // Exposing the Promise capabilities\n\n var thenExposed = false;\n for ( var i = 0; i < options.expose.length; i+=1 ) {\n\n var method = options.expose[i];\n\n plumbing[ method === 'promise' ? 'exposePromise' : 'exposePromiseMethod' ](\n options.request.Request.prototype,\n null,\n '_rp_promise',\n method\n );\n\n if (method === 'then') {\n thenExposed = true;\n }\n\n }\n\n if (!thenExposed) {\n throw new Error('Please expose \"then\"');\n }\n\n};\n","'use strict';\n\n\nfunction RequestError(cause, options, response) {\n\n this.name = 'RequestError';\n this.message = String(cause);\n this.cause = cause;\n this.error = cause; // legacy attribute\n this.options = options;\n this.response = response;\n\n if (Error.captureStackTrace) { // required for non-V8 environments\n Error.captureStackTrace(this);\n }\n\n}\nRequestError.prototype = Object.create(Error.prototype);\nRequestError.prototype.constructor = RequestError;\n\n\nfunction StatusCodeError(statusCode, body, options, response) {\n\n this.name = 'StatusCodeError';\n this.statusCode = statusCode;\n this.message = statusCode + ' - ' + (JSON && JSON.stringify ? JSON.stringify(body) : body);\n this.error = body; // legacy attribute\n this.options = options;\n this.response = response;\n\n if (Error.captureStackTrace) { // required for non-V8 environments\n Error.captureStackTrace(this);\n }\n\n}\nStatusCodeError.prototype = Object.create(Error.prototype);\nStatusCodeError.prototype.constructor = StatusCodeError;\n\n\nfunction TransformError(cause, options, response) {\n\n this.name = 'TransformError';\n this.message = String(cause);\n this.cause = cause;\n this.error = cause; // legacy attribute\n this.options = options;\n this.response = response;\n\n if (Error.captureStackTrace) { // required for non-V8 environments\n Error.captureStackTrace(this);\n }\n\n}\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\n\n\nmodule.exports = {\n RequestError: RequestError,\n StatusCodeError: StatusCodeError,\n TransformError: TransformError\n};\n","'use strict';\n\nvar errors = require('./errors.js'),\n isFunction = require('lodash/isFunction'),\n isObjectLike = require('lodash/isObjectLike'),\n isString = require('lodash/isString'),\n isUndefined = require('lodash/isUndefined');\n\n\nmodule.exports = function (options) {\n\n var errorText = 'Please verify options'; // For better minification because this string is repeating\n\n if (!isObjectLike(options)) {\n throw new TypeError(errorText);\n }\n\n if (!isFunction(options.PromiseImpl)) {\n throw new TypeError(errorText + '.PromiseImpl');\n }\n\n if (!isUndefined(options.constructorMixin) && !isFunction(options.constructorMixin)) {\n throw new TypeError(errorText + '.PromiseImpl');\n }\n\n var PromiseImpl = options.PromiseImpl;\n var constructorMixin = options.constructorMixin;\n\n\n var plumbing = {};\n\n plumbing.init = function (requestOptions) {\n\n var self = this;\n\n self._rp_promise = new PromiseImpl(function (resolve, reject) {\n self._rp_resolve = resolve;\n self._rp_reject = reject;\n if (constructorMixin) {\n constructorMixin.apply(self, arguments); // Using arguments since specific Promise libraries may pass additional parameters\n }\n });\n\n self._rp_callbackOrig = requestOptions.callback;\n requestOptions.callback = self.callback = function RP$callback(err, response, body) {\n plumbing.callback.call(self, err, response, body);\n };\n\n if (isString(requestOptions.method)) {\n requestOptions.method = requestOptions.method.toUpperCase();\n }\n\n requestOptions.transform = requestOptions.transform || plumbing.defaultTransformations[requestOptions.method];\n\n self._rp_options = requestOptions;\n self._rp_options.simple = requestOptions.simple !== false;\n self._rp_options.resolveWithFullResponse = requestOptions.resolveWithFullResponse === true;\n self._rp_options.transform2xxOnly = requestOptions.transform2xxOnly === true;\n\n };\n\n plumbing.defaultTransformations = {\n HEAD: function (body, response, resolveWithFullResponse) {\n return resolveWithFullResponse ? response : response.headers;\n }\n };\n\n plumbing.callback = function (err, response, body) {\n\n var self = this;\n\n var origCallbackThrewException = false, thrownException = null;\n\n if (isFunction(self._rp_callbackOrig)) {\n try {\n self._rp_callbackOrig.apply(self, arguments); // TODO: Apply to self mimics behavior of request@2. Is that also right for request@next?\n } catch (e) {\n origCallbackThrewException = true;\n thrownException = e;\n }\n }\n\n var is2xx = !err && /^2/.test('' + response.statusCode);\n\n if (err) {\n\n self._rp_reject(new errors.RequestError(err, self._rp_options, response));\n\n } else if (self._rp_options.simple && !is2xx) {\n\n if (isFunction(self._rp_options.transform) && self._rp_options.transform2xxOnly === false) {\n\n (new PromiseImpl(function (resolve) {\n resolve(self._rp_options.transform(body, response, self._rp_options.resolveWithFullResponse)); // transform may return a Promise\n }))\n .then(function (transformedResponse) {\n self._rp_reject(new errors.StatusCodeError(response.statusCode, body, self._rp_options, transformedResponse));\n })\n .catch(function (transformErr) {\n self._rp_reject(new errors.TransformError(transformErr, self._rp_options, response));\n });\n\n } else {\n self._rp_reject(new errors.StatusCodeError(response.statusCode, body, self._rp_options, response));\n }\n\n } else {\n\n if (isFunction(self._rp_options.transform) && (is2xx || self._rp_options.transform2xxOnly === false)) {\n\n (new PromiseImpl(function (resolve) {\n resolve(self._rp_options.transform(body, response, self._rp_options.resolveWithFullResponse)); // transform may return a Promise\n }))\n .then(function (transformedResponse) {\n self._rp_resolve(transformedResponse);\n })\n .catch(function (transformErr) {\n self._rp_reject(new errors.TransformError(transformErr, self._rp_options, response));\n });\n\n } else if (self._rp_options.resolveWithFullResponse) {\n self._rp_resolve(response);\n } else {\n self._rp_resolve(body);\n }\n\n }\n\n if (origCallbackThrewException) {\n throw thrownException;\n }\n\n };\n\n plumbing.exposePromiseMethod = function (exposeTo, bindTo, promisePropertyKey, methodToExpose, exposeAs) {\n\n exposeAs = exposeAs || methodToExpose;\n\n if (exposeAs in exposeTo) {\n throw new Error('Unable to expose method \"' + exposeAs + '\"');\n }\n\n exposeTo[exposeAs] = function RP$exposed() {\n var self = bindTo || this;\n return self[promisePropertyKey][methodToExpose].apply(self[promisePropertyKey], arguments);\n };\n\n };\n\n plumbing.exposePromise = function (exposeTo, bindTo, promisePropertyKey, exposeAs) {\n\n exposeAs = exposeAs || 'promise';\n\n if (exposeAs in exposeTo) {\n throw new Error('Unable to expose method \"' + exposeAs + '\"');\n }\n\n exposeTo[exposeAs] = function RP$promise() {\n var self = bindTo || this;\n return self[promisePropertyKey];\n };\n\n };\n\n return plumbing;\n\n};\n","'use strict';\n\nvar Bluebird = require('bluebird').getNewLibraryCopy(),\n configure = require('request-promise-core/configure/request2'),\n stealthyRequire = require('stealthy-require');\n\ntry {\n\n // Load Request freshly - so that users can require an unaltered request instance!\n var request = stealthyRequire(require.cache, function () {\n return require('request');\n },\n function () {\n require('tough-cookie');\n }, module);\n\n} catch (err) {\n /* istanbul ignore next */\n var EOL = require('os').EOL;\n /* istanbul ignore next */\n console.error(EOL + '###' + EOL + '### The \"request\" library is not installed automatically anymore.' + EOL + '### But is a dependency of \"request-promise\".' + EOL + '### Please install it with:' + EOL + '### npm install request --save' + EOL + '###' + EOL);\n /* istanbul ignore next */\n throw err;\n}\n\nBluebird.config({cancellation: true});\n\nconfigure({\n request: request,\n PromiseImpl: Bluebird,\n expose: [\n 'then',\n 'catch',\n 'finally',\n 'cancel',\n 'promise'\n // Would you like to expose more Bluebird methods? Try e.g. `rp(...).promise().tap(...)` first. `.promise()` returns the full-fledged Bluebird promise.\n ],\n constructorMixin: function (resolve, reject, onCancel) {\n var self = this;\n onCancel(function () {\n self.abort();\n });\n }\n});\n\nrequest.bindCLS = function RP$bindCLS() {\n throw new Error('CLS support was dropped. To get it back read: https://github.com/request/request-promise/wiki/Getting-Back-Support-for-Continuation-Local-Storage');\n};\n\n\nmodule.exports = request;\n","// Copyright 2010-2012 Mikeal Rogers\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n'use strict'\n\nvar extend = require('extend')\nvar cookies = require('./lib/cookies')\nvar helpers = require('./lib/helpers')\n\nvar paramsHaveRequestBody = helpers.paramsHaveRequestBody\n\n// organize params for patch, post, put, head, del\nfunction initParams (uri, options, callback) {\n if (typeof options === 'function') {\n callback = options\n }\n\n var params = {}\n if (options !== null && typeof options === 'object') {\n extend(params, options, {uri: uri})\n } else if (typeof uri === 'string') {\n extend(params, {uri: uri})\n } else {\n extend(params, uri)\n }\n\n params.callback = callback || params.callback\n return params\n}\n\nfunction request (uri, options, callback) {\n if (typeof uri === 'undefined') {\n throw new Error('undefined is not a valid uri or options object.')\n }\n\n var params = initParams(uri, options, callback)\n\n if (params.method === 'HEAD' && paramsHaveRequestBody(params)) {\n throw new Error('HTTP HEAD requests MUST NOT include a request body.')\n }\n\n return new request.Request(params)\n}\n\nfunction verbFunc (verb) {\n var method = verb.toUpperCase()\n return function (uri, options, callback) {\n var params = initParams(uri, options, callback)\n params.method = method\n return request(params, params.callback)\n }\n}\n\n// define like this to please codeintel/intellisense IDEs\nrequest.get = verbFunc('get')\nrequest.head = verbFunc('head')\nrequest.options = verbFunc('options')\nrequest.post = verbFunc('post')\nrequest.put = verbFunc('put')\nrequest.patch = verbFunc('patch')\nrequest.del = verbFunc('delete')\nrequest['delete'] = verbFunc('delete')\n\nrequest.jar = function (store) {\n return cookies.jar(store)\n}\n\nrequest.cookie = function (str) {\n return cookies.parse(str)\n}\n\nfunction wrapRequestMethod (method, options, requester, verb) {\n return function (uri, opts, callback) {\n var params = initParams(uri, opts, callback)\n\n var target = {}\n extend(true, target, options, params)\n\n target.pool = params.pool || options.pool\n\n if (verb) {\n target.method = verb.toUpperCase()\n }\n\n if (typeof requester === 'function') {\n method = requester\n }\n\n return method(target, target.callback)\n }\n}\n\nrequest.defaults = function (options, requester) {\n var self = this\n\n options = options || {}\n\n if (typeof options === 'function') {\n requester = options\n options = {}\n }\n\n var defaults = wrapRequestMethod(self, options, requester)\n\n var verbs = ['get', 'head', 'post', 'put', 'patch', 'del', 'delete']\n verbs.forEach(function (verb) {\n defaults[verb] = wrapRequestMethod(self[verb], options, requester, verb)\n })\n\n defaults.cookie = wrapRequestMethod(self.cookie, options, requester)\n defaults.jar = self.jar\n defaults.defaults = self.defaults\n return defaults\n}\n\nrequest.forever = function (agentOptions, optionsArg) {\n var options = {}\n if (optionsArg) {\n extend(options, optionsArg)\n }\n if (agentOptions) {\n options.agentOptions = agentOptions\n }\n\n options.forever = true\n return request.defaults(options)\n}\n\n// Exports\n\nmodule.exports = request\nrequest.Request = require('./request')\nrequest.initParams = initParams\n\n// Backwards compatibility for request.debug\nObject.defineProperty(request, 'debug', {\n enumerable: true,\n get: function () {\n return request.Request.debug\n },\n set: function (debug) {\n request.Request.debug = debug\n }\n})\n","'use strict'\n\nvar caseless = require('caseless')\nvar uuid = require('uuid/v4')\nvar helpers = require('./helpers')\n\nvar md5 = helpers.md5\nvar toBase64 = helpers.toBase64\n\nfunction Auth (request) {\n // define all public properties here\n this.request = request\n this.hasAuth = false\n this.sentAuth = false\n this.bearerToken = null\n this.user = null\n this.pass = null\n}\n\nAuth.prototype.basic = function (user, pass, sendImmediately) {\n var self = this\n if (typeof user !== 'string' || (pass !== undefined && typeof pass !== 'string')) {\n self.request.emit('error', new Error('auth() received invalid user or password'))\n }\n self.user = user\n self.pass = pass\n self.hasAuth = true\n var header = user + ':' + (pass || '')\n if (sendImmediately || typeof sendImmediately === 'undefined') {\n var authHeader = 'Basic ' + toBase64(header)\n self.sentAuth = true\n return authHeader\n }\n}\n\nAuth.prototype.bearer = function (bearer, sendImmediately) {\n var self = this\n self.bearerToken = bearer\n self.hasAuth = true\n if (sendImmediately || typeof sendImmediately === 'undefined') {\n if (typeof bearer === 'function') {\n bearer = bearer()\n }\n var authHeader = 'Bearer ' + (bearer || '')\n self.sentAuth = true\n return authHeader\n }\n}\n\nAuth.prototype.digest = function (method, path, authHeader) {\n // TODO: More complete implementation of RFC 2617.\n // - handle challenge.domain\n // - support qop=\"auth-int\" only\n // - handle Authentication-Info (not necessarily?)\n // - check challenge.stale (not necessarily?)\n // - increase nc (not necessarily?)\n // For reference:\n // http://tools.ietf.org/html/rfc2617#section-3\n // https://github.com/bagder/curl/blob/master/lib/http_digest.c\n\n var self = this\n\n var challenge = {}\n var re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi\n while (true) {\n var match = re.exec(authHeader)\n if (!match) {\n break\n }\n challenge[match[1]] = match[2] || match[3]\n }\n\n /**\n * RFC 2617: handle both MD5 and MD5-sess algorithms.\n *\n * If the algorithm directive's value is \"MD5\" or unspecified, then HA1 is\n * HA1=MD5(username:realm:password)\n * If the algorithm directive's value is \"MD5-sess\", then HA1 is\n * HA1=MD5(MD5(username:realm:password):nonce:cnonce)\n */\n var ha1Compute = function (algorithm, user, realm, pass, nonce, cnonce) {\n var ha1 = md5(user + ':' + realm + ':' + pass)\n if (algorithm && algorithm.toLowerCase() === 'md5-sess') {\n return md5(ha1 + ':' + nonce + ':' + cnonce)\n } else {\n return ha1\n }\n }\n\n var qop = /(^|,)\\s*auth\\s*($|,)/.test(challenge.qop) && 'auth'\n var nc = qop && '00000001'\n var cnonce = qop && uuid().replace(/-/g, '')\n var ha1 = ha1Compute(challenge.algorithm, self.user, challenge.realm, self.pass, challenge.nonce, cnonce)\n var ha2 = md5(method + ':' + path)\n var digestResponse = qop\n ? md5(ha1 + ':' + challenge.nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2)\n : md5(ha1 + ':' + challenge.nonce + ':' + ha2)\n var authValues = {\n username: self.user,\n realm: challenge.realm,\n nonce: challenge.nonce,\n uri: path,\n qop: qop,\n response: digestResponse,\n nc: nc,\n cnonce: cnonce,\n algorithm: challenge.algorithm,\n opaque: challenge.opaque\n }\n\n authHeader = []\n for (var k in authValues) {\n if (authValues[k]) {\n if (k === 'qop' || k === 'nc' || k === 'algorithm') {\n authHeader.push(k + '=' + authValues[k])\n } else {\n authHeader.push(k + '=\"' + authValues[k] + '\"')\n }\n }\n }\n authHeader = 'Digest ' + authHeader.join(', ')\n self.sentAuth = true\n return authHeader\n}\n\nAuth.prototype.onRequest = function (user, pass, sendImmediately, bearer) {\n var self = this\n var request = self.request\n\n var authHeader\n if (bearer === undefined && user === undefined) {\n self.request.emit('error', new Error('no auth mechanism defined'))\n } else if (bearer !== undefined) {\n authHeader = self.bearer(bearer, sendImmediately)\n } else {\n authHeader = self.basic(user, pass, sendImmediately)\n }\n if (authHeader) {\n request.setHeader('authorization', authHeader)\n }\n}\n\nAuth.prototype.onResponse = function (response) {\n var self = this\n var request = self.request\n\n if (!self.hasAuth || self.sentAuth) { return null }\n\n var c = caseless(response.headers)\n\n var authHeader = c.get('www-authenticate')\n var authVerb = authHeader && authHeader.split(' ')[0].toLowerCase()\n request.debug('reauth', authVerb)\n\n switch (authVerb) {\n case 'basic':\n return self.basic(self.user, self.pass, true)\n\n case 'bearer':\n return self.bearer(self.bearerToken, true)\n\n case 'digest':\n return self.digest(request.method, request.path, authHeader)\n }\n}\n\nexports.Auth = Auth\n","'use strict'\n\nvar tough = require('tough-cookie')\n\nvar Cookie = tough.Cookie\nvar CookieJar = tough.CookieJar\n\nexports.parse = function (str) {\n if (str && str.uri) {\n str = str.uri\n }\n if (typeof str !== 'string') {\n throw new Error('The cookie function only accepts STRING as param')\n }\n return Cookie.parse(str, {loose: true})\n}\n\n// Adapt the sometimes-Async api of tough.CookieJar to our requirements\nfunction RequestJar (store) {\n var self = this\n self._jar = new CookieJar(store, {looseMode: true})\n}\nRequestJar.prototype.setCookie = function (cookieOrStr, uri, options) {\n var self = this\n return self._jar.setCookieSync(cookieOrStr, uri, options || {})\n}\nRequestJar.prototype.getCookieString = function (uri) {\n var self = this\n return self._jar.getCookieStringSync(uri)\n}\nRequestJar.prototype.getCookies = function (uri) {\n var self = this\n return self._jar.getCookiesSync(uri)\n}\n\nexports.jar = function (store) {\n return new RequestJar(store)\n}\n","'use strict'\n\nfunction formatHostname (hostname) {\n // canonicalize the hostname, so that 'oogle.com' won't match 'google.com'\n return hostname.replace(/^\\.*/, '.').toLowerCase()\n}\n\nfunction parseNoProxyZone (zone) {\n zone = zone.trim().toLowerCase()\n\n var zoneParts = zone.split(':', 2)\n var zoneHost = formatHostname(zoneParts[0])\n var zonePort = zoneParts[1]\n var hasPort = zone.indexOf(':') > -1\n\n return {hostname: zoneHost, port: zonePort, hasPort: hasPort}\n}\n\nfunction uriInNoProxy (uri, noProxy) {\n var port = uri.port || (uri.protocol === 'https:' ? '443' : '80')\n var hostname = formatHostname(uri.hostname)\n var noProxyList = noProxy.split(',')\n\n // iterate through the noProxyList until it finds a match.\n return noProxyList.map(parseNoProxyZone).some(function (noProxyZone) {\n var isMatchedAt = hostname.indexOf(noProxyZone.hostname)\n var hostnameMatched = (\n isMatchedAt > -1 &&\n (isMatchedAt === hostname.length - noProxyZone.hostname.length)\n )\n\n if (noProxyZone.hasPort) {\n return (port === noProxyZone.port) && hostnameMatched\n }\n\n return hostnameMatched\n })\n}\n\nfunction getProxyFromURI (uri) {\n // Decide the proper request proxy to use based on the request URI object and the\n // environmental variables (NO_PROXY, HTTP_PROXY, etc.)\n // respect NO_PROXY environment variables (see: https://lynx.invisible-island.net/lynx2.8.7/breakout/lynx_help/keystrokes/environments.html)\n\n var noProxy = process.env.NO_PROXY || process.env.no_proxy || ''\n\n // if the noProxy is a wildcard then return null\n\n if (noProxy === '*') {\n return null\n }\n\n // if the noProxy is not empty and the uri is found return null\n\n if (noProxy !== '' && uriInNoProxy(uri, noProxy)) {\n return null\n }\n\n // Check for HTTP or HTTPS Proxy in environment Else default to null\n\n if (uri.protocol === 'http:') {\n return process.env.HTTP_PROXY ||\n process.env.http_proxy || null\n }\n\n if (uri.protocol === 'https:') {\n return process.env.HTTPS_PROXY ||\n process.env.https_proxy ||\n process.env.HTTP_PROXY ||\n process.env.http_proxy || null\n }\n\n // if none of that works, return null\n // (What uri protocol are you using then?)\n\n return null\n}\n\nmodule.exports = getProxyFromURI\n","'use strict'\n\nvar fs = require('fs')\nvar qs = require('querystring')\nvar validate = require('har-validator')\nvar extend = require('extend')\n\nfunction Har (request) {\n this.request = request\n}\n\nHar.prototype.reducer = function (obj, pair) {\n // new property ?\n if (obj[pair.name] === undefined) {\n obj[pair.name] = pair.value\n return obj\n }\n\n // existing? convert to array\n var arr = [\n obj[pair.name],\n pair.value\n ]\n\n obj[pair.name] = arr\n\n return obj\n}\n\nHar.prototype.prep = function (data) {\n // construct utility properties\n data.queryObj = {}\n data.headersObj = {}\n data.postData.jsonObj = false\n data.postData.paramsObj = false\n\n // construct query objects\n if (data.queryString && data.queryString.length) {\n data.queryObj = data.queryString.reduce(this.reducer, {})\n }\n\n // construct headers objects\n if (data.headers && data.headers.length) {\n // loweCase header keys\n data.headersObj = data.headers.reduceRight(function (headers, header) {\n headers[header.name] = header.value\n return headers\n }, {})\n }\n\n // construct Cookie header\n if (data.cookies && data.cookies.length) {\n var cookies = data.cookies.map(function (cookie) {\n return cookie.name + '=' + cookie.value\n })\n\n if (cookies.length) {\n data.headersObj.cookie = cookies.join('; ')\n }\n }\n\n // prep body\n function some (arr) {\n return arr.some(function (type) {\n return data.postData.mimeType.indexOf(type) === 0\n })\n }\n\n if (some([\n 'multipart/mixed',\n 'multipart/related',\n 'multipart/form-data',\n 'multipart/alternative'])) {\n // reset values\n data.postData.mimeType = 'multipart/form-data'\n } else if (some([\n 'application/x-www-form-urlencoded'])) {\n if (!data.postData.params) {\n data.postData.text = ''\n } else {\n data.postData.paramsObj = data.postData.params.reduce(this.reducer, {})\n\n // always overwrite\n data.postData.text = qs.stringify(data.postData.paramsObj)\n }\n } else if (some([\n 'text/json',\n 'text/x-json',\n 'application/json',\n 'application/x-json'])) {\n data.postData.mimeType = 'application/json'\n\n if (data.postData.text) {\n try {\n data.postData.jsonObj = JSON.parse(data.postData.text)\n } catch (e) {\n this.request.debug(e)\n\n // force back to text/plain\n data.postData.mimeType = 'text/plain'\n }\n }\n }\n\n return data\n}\n\nHar.prototype.options = function (options) {\n // skip if no har property defined\n if (!options.har) {\n return options\n }\n\n var har = {}\n extend(har, options.har)\n\n // only process the first entry\n if (har.log && har.log.entries) {\n har = har.log.entries[0]\n }\n\n // add optional properties to make validation successful\n har.url = har.url || options.url || options.uri || options.baseUrl || '/'\n har.httpVersion = har.httpVersion || 'HTTP/1.1'\n har.queryString = har.queryString || []\n har.headers = har.headers || []\n har.cookies = har.cookies || []\n har.postData = har.postData || {}\n har.postData.mimeType = har.postData.mimeType || 'application/octet-stream'\n\n har.bodySize = 0\n har.headersSize = 0\n har.postData.size = 0\n\n if (!validate.request(har)) {\n return options\n }\n\n // clean up and get some utility properties\n var req = this.prep(har)\n\n // construct new options\n if (req.url) {\n options.url = req.url\n }\n\n if (req.method) {\n options.method = req.method\n }\n\n if (Object.keys(req.queryObj).length) {\n options.qs = req.queryObj\n }\n\n if (Object.keys(req.headersObj).length) {\n options.headers = req.headersObj\n }\n\n function test (type) {\n return req.postData.mimeType.indexOf(type) === 0\n }\n if (test('application/x-www-form-urlencoded')) {\n options.form = req.postData.paramsObj\n } else if (test('application/json')) {\n if (req.postData.jsonObj) {\n options.body = req.postData.jsonObj\n options.json = true\n }\n } else if (test('multipart/form-data')) {\n options.formData = {}\n\n req.postData.params.forEach(function (param) {\n var attachment = {}\n\n if (!param.fileName && !param.contentType) {\n options.formData[param.name] = param.value\n return\n }\n\n // attempt to read from disk!\n if (param.fileName && !param.value) {\n attachment.value = fs.createReadStream(param.fileName)\n } else if (param.value) {\n attachment.value = param.value\n }\n\n if (param.fileName) {\n attachment.options = {\n filename: param.fileName,\n contentType: param.contentType ? param.contentType : null\n }\n }\n\n options.formData[param.name] = attachment\n })\n } else {\n if (req.postData.text) {\n options.body = req.postData.text\n }\n }\n\n return options\n}\n\nexports.Har = Har\n","'use strict'\n\nvar crypto = require('crypto')\n\nfunction randomString (size) {\n var bits = (size + 1) * 6\n var buffer = crypto.randomBytes(Math.ceil(bits / 8))\n var string = buffer.toString('base64').replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '')\n return string.slice(0, size)\n}\n\nfunction calculatePayloadHash (payload, algorithm, contentType) {\n var hash = crypto.createHash(algorithm)\n hash.update('hawk.1.payload\\n')\n hash.update((contentType ? contentType.split(';')[0].trim().toLowerCase() : '') + '\\n')\n hash.update(payload || '')\n hash.update('\\n')\n return hash.digest('base64')\n}\n\nexports.calculateMac = function (credentials, opts) {\n var normalized = 'hawk.1.header\\n' +\n opts.ts + '\\n' +\n opts.nonce + '\\n' +\n (opts.method || '').toUpperCase() + '\\n' +\n opts.resource + '\\n' +\n opts.host.toLowerCase() + '\\n' +\n opts.port + '\\n' +\n (opts.hash || '') + '\\n'\n\n if (opts.ext) {\n normalized = normalized + opts.ext.replace('\\\\', '\\\\\\\\').replace('\\n', '\\\\n')\n }\n\n normalized = normalized + '\\n'\n\n if (opts.app) {\n normalized = normalized + opts.app + '\\n' + (opts.dlg || '') + '\\n'\n }\n\n var hmac = crypto.createHmac(credentials.algorithm, credentials.key).update(normalized)\n var digest = hmac.digest('base64')\n return digest\n}\n\nexports.header = function (uri, method, opts) {\n var timestamp = opts.timestamp || Math.floor((Date.now() + (opts.localtimeOffsetMsec || 0)) / 1000)\n var credentials = opts.credentials\n if (!credentials || !credentials.id || !credentials.key || !credentials.algorithm) {\n return ''\n }\n\n if (['sha1', 'sha256'].indexOf(credentials.algorithm) === -1) {\n return ''\n }\n\n var artifacts = {\n ts: timestamp,\n nonce: opts.nonce || randomString(6),\n method: method,\n resource: uri.pathname + (uri.search || ''),\n host: uri.hostname,\n port: uri.port || (uri.protocol === 'http:' ? 80 : 443),\n hash: opts.hash,\n ext: opts.ext,\n app: opts.app,\n dlg: opts.dlg\n }\n\n if (!artifacts.hash && (opts.payload || opts.payload === '')) {\n artifacts.hash = calculatePayloadHash(opts.payload, credentials.algorithm, opts.contentType)\n }\n\n var mac = exports.calculateMac(credentials, artifacts)\n\n var hasExt = artifacts.ext !== null && artifacts.ext !== undefined && artifacts.ext !== ''\n var header = 'Hawk id=\"' + credentials.id +\n '\", ts=\"' + artifacts.ts +\n '\", nonce=\"' + artifacts.nonce +\n (artifacts.hash ? '\", hash=\"' + artifacts.hash : '') +\n (hasExt ? '\", ext=\"' + artifacts.ext.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"') : '') +\n '\", mac=\"' + mac + '\"'\n\n if (artifacts.app) {\n header = header + ', app=\"' + artifacts.app + (artifacts.dlg ? '\", dlg=\"' + artifacts.dlg : '') + '\"'\n }\n\n return header\n}\n","'use strict'\n\nvar jsonSafeStringify = require('json-stringify-safe')\nvar crypto = require('crypto')\nvar Buffer = require('safe-buffer').Buffer\n\nvar defer = typeof setImmediate === 'undefined'\n ? process.nextTick\n : setImmediate\n\nfunction paramsHaveRequestBody (params) {\n return (\n params.body ||\n params.requestBodyStream ||\n (params.json && typeof params.json !== 'boolean') ||\n params.multipart\n )\n}\n\nfunction safeStringify (obj, replacer) {\n var ret\n try {\n ret = JSON.stringify(obj, replacer)\n } catch (e) {\n ret = jsonSafeStringify(obj, replacer)\n }\n return ret\n}\n\nfunction md5 (str) {\n return crypto.createHash('md5').update(str).digest('hex')\n}\n\nfunction isReadStream (rs) {\n return rs.readable && rs.path && rs.mode\n}\n\nfunction toBase64 (str) {\n return Buffer.from(str || '', 'utf8').toString('base64')\n}\n\nfunction copy (obj) {\n var o = {}\n Object.keys(obj).forEach(function (i) {\n o[i] = obj[i]\n })\n return o\n}\n\nfunction version () {\n var numbers = process.version.replace('v', '').split('.')\n return {\n major: parseInt(numbers[0], 10),\n minor: parseInt(numbers[1], 10),\n patch: parseInt(numbers[2], 10)\n }\n}\n\nexports.paramsHaveRequestBody = paramsHaveRequestBody\nexports.safeStringify = safeStringify\nexports.md5 = md5\nexports.isReadStream = isReadStream\nexports.toBase64 = toBase64\nexports.copy = copy\nexports.version = version\nexports.defer = defer\n","'use strict'\n\nvar uuid = require('uuid/v4')\nvar CombinedStream = require('combined-stream')\nvar isstream = require('isstream')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction Multipart (request) {\n this.request = request\n this.boundary = uuid()\n this.chunked = false\n this.body = null\n}\n\nMultipart.prototype.isChunked = function (options) {\n var self = this\n var chunked = false\n var parts = options.data || options\n\n if (!parts.forEach) {\n self.request.emit('error', new Error('Argument error, options.multipart.'))\n }\n\n if (options.chunked !== undefined) {\n chunked = options.chunked\n }\n\n if (self.request.getHeader('transfer-encoding') === 'chunked') {\n chunked = true\n }\n\n if (!chunked) {\n parts.forEach(function (part) {\n if (typeof part.body === 'undefined') {\n self.request.emit('error', new Error('Body attribute missing in multipart.'))\n }\n if (isstream(part.body)) {\n chunked = true\n }\n })\n }\n\n return chunked\n}\n\nMultipart.prototype.setHeaders = function (chunked) {\n var self = this\n\n if (chunked && !self.request.hasHeader('transfer-encoding')) {\n self.request.setHeader('transfer-encoding', 'chunked')\n }\n\n var header = self.request.getHeader('content-type')\n\n if (!header || header.indexOf('multipart') === -1) {\n self.request.setHeader('content-type', 'multipart/related; boundary=' + self.boundary)\n } else {\n if (header.indexOf('boundary') !== -1) {\n self.boundary = header.replace(/.*boundary=([^\\s;]+).*/, '$1')\n } else {\n self.request.setHeader('content-type', header + '; boundary=' + self.boundary)\n }\n }\n}\n\nMultipart.prototype.build = function (parts, chunked) {\n var self = this\n var body = chunked ? new CombinedStream() : []\n\n function add (part) {\n if (typeof part === 'number') {\n part = part.toString()\n }\n return chunked ? body.append(part) : body.push(Buffer.from(part))\n }\n\n if (self.request.preambleCRLF) {\n add('\\r\\n')\n }\n\n parts.forEach(function (part) {\n var preamble = '--' + self.boundary + '\\r\\n'\n Object.keys(part).forEach(function (key) {\n if (key === 'body') { return }\n preamble += key + ': ' + part[key] + '\\r\\n'\n })\n preamble += '\\r\\n'\n add(preamble)\n add(part.body)\n add('\\r\\n')\n })\n add('--' + self.boundary + '--')\n\n if (self.request.postambleCRLF) {\n add('\\r\\n')\n }\n\n return body\n}\n\nMultipart.prototype.onRequest = function (options) {\n var self = this\n\n var chunked = self.isChunked(options)\n var parts = options.data || options\n\n self.setHeaders(chunked)\n self.chunked = chunked\n self.body = self.build(parts, chunked)\n}\n\nexports.Multipart = Multipart\n","'use strict'\n\nvar url = require('url')\nvar qs = require('qs')\nvar caseless = require('caseless')\nvar uuid = require('uuid/v4')\nvar oauth = require('oauth-sign')\nvar crypto = require('crypto')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction OAuth (request) {\n this.request = request\n this.params = null\n}\n\nOAuth.prototype.buildParams = function (_oauth, uri, method, query, form, qsLib) {\n var oa = {}\n for (var i in _oauth) {\n oa['oauth_' + i] = _oauth[i]\n }\n if (!oa.oauth_version) {\n oa.oauth_version = '1.0'\n }\n if (!oa.oauth_timestamp) {\n oa.oauth_timestamp = Math.floor(Date.now() / 1000).toString()\n }\n if (!oa.oauth_nonce) {\n oa.oauth_nonce = uuid().replace(/-/g, '')\n }\n if (!oa.oauth_signature_method) {\n oa.oauth_signature_method = 'HMAC-SHA1'\n }\n\n var consumer_secret_or_private_key = oa.oauth_consumer_secret || oa.oauth_private_key // eslint-disable-line camelcase\n delete oa.oauth_consumer_secret\n delete oa.oauth_private_key\n\n var token_secret = oa.oauth_token_secret // eslint-disable-line camelcase\n delete oa.oauth_token_secret\n\n var realm = oa.oauth_realm\n delete oa.oauth_realm\n delete oa.oauth_transport_method\n\n var baseurl = uri.protocol + '//' + uri.host + uri.pathname\n var params = qsLib.parse([].concat(query, form, qsLib.stringify(oa)).join('&'))\n\n oa.oauth_signature = oauth.sign(\n oa.oauth_signature_method,\n method,\n baseurl,\n params,\n consumer_secret_or_private_key, // eslint-disable-line camelcase\n token_secret // eslint-disable-line camelcase\n )\n\n if (realm) {\n oa.realm = realm\n }\n\n return oa\n}\n\nOAuth.prototype.buildBodyHash = function (_oauth, body) {\n if (['HMAC-SHA1', 'RSA-SHA1'].indexOf(_oauth.signature_method || 'HMAC-SHA1') < 0) {\n this.request.emit('error', new Error('oauth: ' + _oauth.signature_method +\n ' signature_method not supported with body_hash signing.'))\n }\n\n var shasum = crypto.createHash('sha1')\n shasum.update(body || '')\n var sha1 = shasum.digest('hex')\n\n return Buffer.from(sha1, 'hex').toString('base64')\n}\n\nOAuth.prototype.concatParams = function (oa, sep, wrap) {\n wrap = wrap || ''\n\n var params = Object.keys(oa).filter(function (i) {\n return i !== 'realm' && i !== 'oauth_signature'\n }).sort()\n\n if (oa.realm) {\n params.splice(0, 0, 'realm')\n }\n params.push('oauth_signature')\n\n return params.map(function (i) {\n return i + '=' + wrap + oauth.rfc3986(oa[i]) + wrap\n }).join(sep)\n}\n\nOAuth.prototype.onRequest = function (_oauth) {\n var self = this\n self.params = _oauth\n\n var uri = self.request.uri || {}\n var method = self.request.method || ''\n var headers = caseless(self.request.headers)\n var body = self.request.body || ''\n var qsLib = self.request.qsLib || qs\n\n var form\n var query\n var contentType = headers.get('content-type') || ''\n var formContentType = 'application/x-www-form-urlencoded'\n var transport = _oauth.transport_method || 'header'\n\n if (contentType.slice(0, formContentType.length) === formContentType) {\n contentType = formContentType\n form = body\n }\n if (uri.query) {\n query = uri.query\n }\n if (transport === 'body' && (method !== 'POST' || contentType !== formContentType)) {\n self.request.emit('error', new Error('oauth: transport_method of body requires POST ' +\n 'and content-type ' + formContentType))\n }\n\n if (!form && typeof _oauth.body_hash === 'boolean') {\n _oauth.body_hash = self.buildBodyHash(_oauth, self.request.body.toString())\n }\n\n var oa = self.buildParams(_oauth, uri, method, query, form, qsLib)\n\n switch (transport) {\n case 'header':\n self.request.setHeader('Authorization', 'OAuth ' + self.concatParams(oa, ',', '\"'))\n break\n\n case 'query':\n var href = self.request.uri.href += (query ? '&' : '?') + self.concatParams(oa, '&')\n self.request.uri = url.parse(href)\n self.request.path = self.request.uri.path\n break\n\n case 'body':\n self.request.body = (form ? form + '&' : '') + self.concatParams(oa, '&')\n break\n\n default:\n self.request.emit('error', new Error('oauth: transport_method invalid'))\n }\n}\n\nexports.OAuth = OAuth\n","'use strict'\n\nvar qs = require('qs')\nvar querystring = require('querystring')\n\nfunction Querystring (request) {\n this.request = request\n this.lib = null\n this.useQuerystring = null\n this.parseOptions = null\n this.stringifyOptions = null\n}\n\nQuerystring.prototype.init = function (options) {\n if (this.lib) { return }\n\n this.useQuerystring = options.useQuerystring\n this.lib = (this.useQuerystring ? querystring : qs)\n\n this.parseOptions = options.qsParseOptions || {}\n this.stringifyOptions = options.qsStringifyOptions || {}\n}\n\nQuerystring.prototype.stringify = function (obj) {\n return (this.useQuerystring)\n ? this.rfc3986(this.lib.stringify(obj,\n this.stringifyOptions.sep || null,\n this.stringifyOptions.eq || null,\n this.stringifyOptions))\n : this.lib.stringify(obj, this.stringifyOptions)\n}\n\nQuerystring.prototype.parse = function (str) {\n return (this.useQuerystring)\n ? this.lib.parse(str,\n this.parseOptions.sep || null,\n this.parseOptions.eq || null,\n this.parseOptions)\n : this.lib.parse(str, this.parseOptions)\n}\n\nQuerystring.prototype.rfc3986 = function (str) {\n return str.replace(/[!'()*]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\nQuerystring.prototype.unescape = querystring.unescape\n\nexports.Querystring = Querystring\n","'use strict'\n\nvar url = require('url')\nvar isUrl = /^https?:/\n\nfunction Redirect (request) {\n this.request = request\n this.followRedirect = true\n this.followRedirects = true\n this.followAllRedirects = false\n this.followOriginalHttpMethod = false\n this.allowRedirect = function () { return true }\n this.maxRedirects = 10\n this.redirects = []\n this.redirectsFollowed = 0\n this.removeRefererHeader = false\n}\n\nRedirect.prototype.onRequest = function (options) {\n var self = this\n\n if (options.maxRedirects !== undefined) {\n self.maxRedirects = options.maxRedirects\n }\n if (typeof options.followRedirect === 'function') {\n self.allowRedirect = options.followRedirect\n }\n if (options.followRedirect !== undefined) {\n self.followRedirects = !!options.followRedirect\n }\n if (options.followAllRedirects !== undefined) {\n self.followAllRedirects = options.followAllRedirects\n }\n if (self.followRedirects || self.followAllRedirects) {\n self.redirects = self.redirects || []\n }\n if (options.removeRefererHeader !== undefined) {\n self.removeRefererHeader = options.removeRefererHeader\n }\n if (options.followOriginalHttpMethod !== undefined) {\n self.followOriginalHttpMethod = options.followOriginalHttpMethod\n }\n}\n\nRedirect.prototype.redirectTo = function (response) {\n var self = this\n var request = self.request\n\n var redirectTo = null\n if (response.statusCode >= 300 && response.statusCode < 400 && response.caseless.has('location')) {\n var location = response.caseless.get('location')\n request.debug('redirect', location)\n\n if (self.followAllRedirects) {\n redirectTo = location\n } else if (self.followRedirects) {\n switch (request.method) {\n case 'PATCH':\n case 'PUT':\n case 'POST':\n case 'DELETE':\n // Do not follow redirects\n break\n default:\n redirectTo = location\n break\n }\n }\n } else if (response.statusCode === 401) {\n var authHeader = request._auth.onResponse(response)\n if (authHeader) {\n request.setHeader('authorization', authHeader)\n redirectTo = request.uri\n }\n }\n return redirectTo\n}\n\nRedirect.prototype.onResponse = function (response) {\n var self = this\n var request = self.request\n\n var redirectTo = self.redirectTo(response)\n if (!redirectTo || !self.allowRedirect.call(request, response)) {\n return false\n }\n\n request.debug('redirect to', redirectTo)\n\n // ignore any potential response body. it cannot possibly be useful\n // to us at this point.\n // response.resume should be defined, but check anyway before calling. Workaround for browserify.\n if (response.resume) {\n response.resume()\n }\n\n if (self.redirectsFollowed >= self.maxRedirects) {\n request.emit('error', new Error('Exceeded maxRedirects. Probably stuck in a redirect loop ' + request.uri.href))\n return false\n }\n self.redirectsFollowed += 1\n\n if (!isUrl.test(redirectTo)) {\n redirectTo = url.resolve(request.uri.href, redirectTo)\n }\n\n var uriPrev = request.uri\n request.uri = url.parse(redirectTo)\n\n // handle the case where we change protocol from https to http or vice versa\n if (request.uri.protocol !== uriPrev.protocol) {\n delete request.agent\n }\n\n self.redirects.push({ statusCode: response.statusCode, redirectUri: redirectTo })\n\n if (self.followAllRedirects && request.method !== 'HEAD' &&\n response.statusCode !== 401 && response.statusCode !== 307) {\n request.method = self.followOriginalHttpMethod ? request.method : 'GET'\n }\n // request.method = 'GET' // Force all redirects to use GET || commented out fixes #215\n delete request.src\n delete request.req\n delete request._started\n if (response.statusCode !== 401 && response.statusCode !== 307) {\n // Remove parameters from the previous response, unless this is the second request\n // for a server that requires digest authentication.\n delete request.body\n delete request._form\n if (request.headers) {\n request.removeHeader('host')\n request.removeHeader('content-type')\n request.removeHeader('content-length')\n if (request.uri.hostname !== request.originalHost.split(':')[0]) {\n // Remove authorization if changing hostnames (but not if just\n // changing ports or protocols). This matches the behavior of curl:\n // https://github.com/bagder/curl/blob/6beb0eee/lib/http.c#L710\n request.removeHeader('authorization')\n }\n }\n }\n\n if (!self.removeRefererHeader) {\n request.setHeader('referer', uriPrev.href)\n }\n\n request.emit('redirect')\n\n request.init()\n\n return true\n}\n\nexports.Redirect = Redirect\n","'use strict'\n\nvar url = require('url')\nvar tunnel = require('tunnel-agent')\n\nvar defaultProxyHeaderWhiteList = [\n 'accept',\n 'accept-charset',\n 'accept-encoding',\n 'accept-language',\n 'accept-ranges',\n 'cache-control',\n 'content-encoding',\n 'content-language',\n 'content-location',\n 'content-md5',\n 'content-range',\n 'content-type',\n 'connection',\n 'date',\n 'expect',\n 'max-forwards',\n 'pragma',\n 'referer',\n 'te',\n 'user-agent',\n 'via'\n]\n\nvar defaultProxyHeaderExclusiveList = [\n 'proxy-authorization'\n]\n\nfunction constructProxyHost (uriObject) {\n var port = uriObject.port\n var protocol = uriObject.protocol\n var proxyHost = uriObject.hostname + ':'\n\n if (port) {\n proxyHost += port\n } else if (protocol === 'https:') {\n proxyHost += '443'\n } else {\n proxyHost += '80'\n }\n\n return proxyHost\n}\n\nfunction constructProxyHeaderWhiteList (headers, proxyHeaderWhiteList) {\n var whiteList = proxyHeaderWhiteList\n .reduce(function (set, header) {\n set[header.toLowerCase()] = true\n return set\n }, {})\n\n return Object.keys(headers)\n .filter(function (header) {\n return whiteList[header.toLowerCase()]\n })\n .reduce(function (set, header) {\n set[header] = headers[header]\n return set\n }, {})\n}\n\nfunction constructTunnelOptions (request, proxyHeaders) {\n var proxy = request.proxy\n\n var tunnelOptions = {\n proxy: {\n host: proxy.hostname,\n port: +proxy.port,\n proxyAuth: proxy.auth,\n headers: proxyHeaders\n },\n headers: request.headers,\n ca: request.ca,\n cert: request.cert,\n key: request.key,\n passphrase: request.passphrase,\n pfx: request.pfx,\n ciphers: request.ciphers,\n rejectUnauthorized: request.rejectUnauthorized,\n secureOptions: request.secureOptions,\n secureProtocol: request.secureProtocol\n }\n\n return tunnelOptions\n}\n\nfunction constructTunnelFnName (uri, proxy) {\n var uriProtocol = (uri.protocol === 'https:' ? 'https' : 'http')\n var proxyProtocol = (proxy.protocol === 'https:' ? 'Https' : 'Http')\n return [uriProtocol, proxyProtocol].join('Over')\n}\n\nfunction getTunnelFn (request) {\n var uri = request.uri\n var proxy = request.proxy\n var tunnelFnName = constructTunnelFnName(uri, proxy)\n return tunnel[tunnelFnName]\n}\n\nfunction Tunnel (request) {\n this.request = request\n this.proxyHeaderWhiteList = defaultProxyHeaderWhiteList\n this.proxyHeaderExclusiveList = []\n if (typeof request.tunnel !== 'undefined') {\n this.tunnelOverride = request.tunnel\n }\n}\n\nTunnel.prototype.isEnabled = function () {\n var self = this\n var request = self.request\n // Tunnel HTTPS by default. Allow the user to override this setting.\n\n // If self.tunnelOverride is set (the user specified a value), use it.\n if (typeof self.tunnelOverride !== 'undefined') {\n return self.tunnelOverride\n }\n\n // If the destination is HTTPS, tunnel.\n if (request.uri.protocol === 'https:') {\n return true\n }\n\n // Otherwise, do not use tunnel.\n return false\n}\n\nTunnel.prototype.setup = function (options) {\n var self = this\n var request = self.request\n\n options = options || {}\n\n if (typeof request.proxy === 'string') {\n request.proxy = url.parse(request.proxy)\n }\n\n if (!request.proxy || !request.tunnel) {\n return false\n }\n\n // Setup Proxy Header Exclusive List and White List\n if (options.proxyHeaderWhiteList) {\n self.proxyHeaderWhiteList = options.proxyHeaderWhiteList\n }\n if (options.proxyHeaderExclusiveList) {\n self.proxyHeaderExclusiveList = options.proxyHeaderExclusiveList\n }\n\n var proxyHeaderExclusiveList = self.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList)\n var proxyHeaderWhiteList = self.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList)\n\n // Setup Proxy Headers and Proxy Headers Host\n // Only send the Proxy White Listed Header names\n var proxyHeaders = constructProxyHeaderWhiteList(request.headers, proxyHeaderWhiteList)\n proxyHeaders.host = constructProxyHost(request.uri)\n\n proxyHeaderExclusiveList.forEach(request.removeHeader, request)\n\n // Set Agent from Tunnel Data\n var tunnelFn = getTunnelFn(request)\n var tunnelOptions = constructTunnelOptions(request, proxyHeaders)\n request.agent = tunnelFn(tunnelOptions)\n\n return true\n}\n\nTunnel.defaultProxyHeaderWhiteList = defaultProxyHeaderWhiteList\nTunnel.defaultProxyHeaderExclusiveList = defaultProxyHeaderExclusiveList\nexports.Tunnel = Tunnel\n","'use strict'\n\nvar http = require('http')\nvar https = require('https')\nvar url = require('url')\nvar util = require('util')\nvar stream = require('stream')\nvar zlib = require('zlib')\nvar aws2 = require('aws-sign2')\nvar aws4 = require('aws4')\nvar httpSignature = require('http-signature')\nvar mime = require('mime-types')\nvar caseless = require('caseless')\nvar ForeverAgent = require('forever-agent')\nvar FormData = require('form-data')\nvar extend = require('extend')\nvar isstream = require('isstream')\nvar isTypedArray = require('is-typedarray').strict\nvar helpers = require('./lib/helpers')\nvar cookies = require('./lib/cookies')\nvar getProxyFromURI = require('./lib/getProxyFromURI')\nvar Querystring = require('./lib/querystring').Querystring\nvar Har = require('./lib/har').Har\nvar Auth = require('./lib/auth').Auth\nvar OAuth = require('./lib/oauth').OAuth\nvar hawk = require('./lib/hawk')\nvar Multipart = require('./lib/multipart').Multipart\nvar Redirect = require('./lib/redirect').Redirect\nvar Tunnel = require('./lib/tunnel').Tunnel\nvar now = require('performance-now')\nvar Buffer = require('safe-buffer').Buffer\n\nvar safeStringify = helpers.safeStringify\nvar isReadStream = helpers.isReadStream\nvar toBase64 = helpers.toBase64\nvar defer = helpers.defer\nvar copy = helpers.copy\nvar version = helpers.version\nvar globalCookieJar = cookies.jar()\n\nvar globalPool = {}\n\nfunction filterForNonReserved (reserved, options) {\n // Filter out properties that are not reserved.\n // Reserved values are passed in at call site.\n\n var object = {}\n for (var i in options) {\n var notReserved = (reserved.indexOf(i) === -1)\n if (notReserved) {\n object[i] = options[i]\n }\n }\n return object\n}\n\nfunction filterOutReservedFunctions (reserved, options) {\n // Filter out properties that are functions and are reserved.\n // Reserved values are passed in at call site.\n\n var object = {}\n for (var i in options) {\n var isReserved = !(reserved.indexOf(i) === -1)\n var isFunction = (typeof options[i] === 'function')\n if (!(isReserved && isFunction)) {\n object[i] = options[i]\n }\n }\n return object\n}\n\n// Return a simpler request object to allow serialization\nfunction requestToJSON () {\n var self = this\n return {\n uri: self.uri,\n method: self.method,\n headers: self.headers\n }\n}\n\n// Return a simpler response object to allow serialization\nfunction responseToJSON () {\n var self = this\n return {\n statusCode: self.statusCode,\n body: self.body,\n headers: self.headers,\n request: requestToJSON.call(self.request)\n }\n}\n\nfunction Request (options) {\n // if given the method property in options, set property explicitMethod to true\n\n // extend the Request instance with any non-reserved properties\n // remove any reserved functions from the options object\n // set Request instance to be readable and writable\n // call init\n\n var self = this\n\n // start with HAR, then override with additional options\n if (options.har) {\n self._har = new Har(self)\n options = self._har.options(options)\n }\n\n stream.Stream.call(self)\n var reserved = Object.keys(Request.prototype)\n var nonReserved = filterForNonReserved(reserved, options)\n\n extend(self, nonReserved)\n options = filterOutReservedFunctions(reserved, options)\n\n self.readable = true\n self.writable = true\n if (options.method) {\n self.explicitMethod = true\n }\n self._qs = new Querystring(self)\n self._auth = new Auth(self)\n self._oauth = new OAuth(self)\n self._multipart = new Multipart(self)\n self._redirect = new Redirect(self)\n self._tunnel = new Tunnel(self)\n self.init(options)\n}\n\nutil.inherits(Request, stream.Stream)\n\n// Debugging\nRequest.debug = process.env.NODE_DEBUG && /\\brequest\\b/.test(process.env.NODE_DEBUG)\nfunction debug () {\n if (Request.debug) {\n console.error('REQUEST %s', util.format.apply(util, arguments))\n }\n}\nRequest.prototype.debug = debug\n\nRequest.prototype.init = function (options) {\n // init() contains all the code to setup the request object.\n // the actual outgoing request is not started until start() is called\n // this function is called from both the constructor and on redirect.\n var self = this\n if (!options) {\n options = {}\n }\n self.headers = self.headers ? copy(self.headers) : {}\n\n // Delete headers with value undefined since they break\n // ClientRequest.OutgoingMessage.setHeader in node 0.12\n for (var headerName in self.headers) {\n if (typeof self.headers[headerName] === 'undefined') {\n delete self.headers[headerName]\n }\n }\n\n caseless.httpify(self, self.headers)\n\n if (!self.method) {\n self.method = options.method || 'GET'\n }\n if (!self.localAddress) {\n self.localAddress = options.localAddress\n }\n\n self._qs.init(options)\n\n debug(options)\n if (!self.pool && self.pool !== false) {\n self.pool = globalPool\n }\n self.dests = self.dests || []\n self.__isRequestRequest = true\n\n // Protect against double callback\n if (!self._callback && self.callback) {\n self._callback = self.callback\n self.callback = function () {\n if (self._callbackCalled) {\n return // Print a warning maybe?\n }\n self._callbackCalled = true\n self._callback.apply(self, arguments)\n }\n self.on('error', self.callback.bind())\n self.on('complete', self.callback.bind(self, null))\n }\n\n // People use this property instead all the time, so support it\n if (!self.uri && self.url) {\n self.uri = self.url\n delete self.url\n }\n\n // If there's a baseUrl, then use it as the base URL (i.e. uri must be\n // specified as a relative path and is appended to baseUrl).\n if (self.baseUrl) {\n if (typeof self.baseUrl !== 'string') {\n return self.emit('error', new Error('options.baseUrl must be a string'))\n }\n\n if (typeof self.uri !== 'string') {\n return self.emit('error', new Error('options.uri must be a string when using options.baseUrl'))\n }\n\n if (self.uri.indexOf('//') === 0 || self.uri.indexOf('://') !== -1) {\n return self.emit('error', new Error('options.uri must be a path when using options.baseUrl'))\n }\n\n // Handle all cases to make sure that there's only one slash between\n // baseUrl and uri.\n var baseUrlEndsWithSlash = self.baseUrl.lastIndexOf('/') === self.baseUrl.length - 1\n var uriStartsWithSlash = self.uri.indexOf('/') === 0\n\n if (baseUrlEndsWithSlash && uriStartsWithSlash) {\n self.uri = self.baseUrl + self.uri.slice(1)\n } else if (baseUrlEndsWithSlash || uriStartsWithSlash) {\n self.uri = self.baseUrl + self.uri\n } else if (self.uri === '') {\n self.uri = self.baseUrl\n } else {\n self.uri = self.baseUrl + '/' + self.uri\n }\n delete self.baseUrl\n }\n\n // A URI is needed by this point, emit error if we haven't been able to get one\n if (!self.uri) {\n return self.emit('error', new Error('options.uri is a required argument'))\n }\n\n // If a string URI/URL was given, parse it into a URL object\n if (typeof self.uri === 'string') {\n self.uri = url.parse(self.uri)\n }\n\n // Some URL objects are not from a URL parsed string and need href added\n if (!self.uri.href) {\n self.uri.href = url.format(self.uri)\n }\n\n // DEPRECATED: Warning for users of the old Unix Sockets URL Scheme\n if (self.uri.protocol === 'unix:') {\n return self.emit('error', new Error('`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`'))\n }\n\n // Support Unix Sockets\n if (self.uri.host === 'unix') {\n self.enableUnixSocket()\n }\n\n if (self.strictSSL === false) {\n self.rejectUnauthorized = false\n }\n\n if (!self.uri.pathname) { self.uri.pathname = '/' }\n\n if (!(self.uri.host || (self.uri.hostname && self.uri.port)) && !self.uri.isUnix) {\n // Invalid URI: it may generate lot of bad errors, like 'TypeError: Cannot call method `indexOf` of undefined' in CookieJar\n // Detect and reject it as soon as possible\n var faultyUri = url.format(self.uri)\n var message = 'Invalid URI \"' + faultyUri + '\"'\n if (Object.keys(options).length === 0) {\n // No option ? This can be the sign of a redirect\n // As this is a case where the user cannot do anything (they didn't call request directly with this URL)\n // they should be warned that it can be caused by a redirection (can save some hair)\n message += '. This can be caused by a crappy redirection.'\n }\n // This error was fatal\n self.abort()\n return self.emit('error', new Error(message))\n }\n\n if (!self.hasOwnProperty('proxy')) {\n self.proxy = getProxyFromURI(self.uri)\n }\n\n self.tunnel = self._tunnel.isEnabled()\n if (self.proxy) {\n self._tunnel.setup(options)\n }\n\n self._redirect.onRequest(options)\n\n self.setHost = false\n if (!self.hasHeader('host')) {\n var hostHeaderName = self.originalHostHeaderName || 'host'\n self.setHeader(hostHeaderName, self.uri.host)\n // Drop :port suffix from Host header if known protocol.\n if (self.uri.port) {\n if ((self.uri.port === '80' && self.uri.protocol === 'http:') ||\n (self.uri.port === '443' && self.uri.protocol === 'https:')) {\n self.setHeader(hostHeaderName, self.uri.hostname)\n }\n }\n self.setHost = true\n }\n\n self.jar(self._jar || options.jar)\n\n if (!self.uri.port) {\n if (self.uri.protocol === 'http:') { self.uri.port = 80 } else if (self.uri.protocol === 'https:') { self.uri.port = 443 }\n }\n\n if (self.proxy && !self.tunnel) {\n self.port = self.proxy.port\n self.host = self.proxy.hostname\n } else {\n self.port = self.uri.port\n self.host = self.uri.hostname\n }\n\n if (options.form) {\n self.form(options.form)\n }\n\n if (options.formData) {\n var formData = options.formData\n var requestForm = self.form()\n var appendFormValue = function (key, value) {\n if (value && value.hasOwnProperty('value') && value.hasOwnProperty('options')) {\n requestForm.append(key, value.value, value.options)\n } else {\n requestForm.append(key, value)\n }\n }\n for (var formKey in formData) {\n if (formData.hasOwnProperty(formKey)) {\n var formValue = formData[formKey]\n if (formValue instanceof Array) {\n for (var j = 0; j < formValue.length; j++) {\n appendFormValue(formKey, formValue[j])\n }\n } else {\n appendFormValue(formKey, formValue)\n }\n }\n }\n }\n\n if (options.qs) {\n self.qs(options.qs)\n }\n\n if (self.uri.path) {\n self.path = self.uri.path\n } else {\n self.path = self.uri.pathname + (self.uri.search || '')\n }\n\n if (self.path.length === 0) {\n self.path = '/'\n }\n\n // Auth must happen last in case signing is dependent on other headers\n if (options.aws) {\n self.aws(options.aws)\n }\n\n if (options.hawk) {\n self.hawk(options.hawk)\n }\n\n if (options.httpSignature) {\n self.httpSignature(options.httpSignature)\n }\n\n if (options.auth) {\n if (Object.prototype.hasOwnProperty.call(options.auth, 'username')) {\n options.auth.user = options.auth.username\n }\n if (Object.prototype.hasOwnProperty.call(options.auth, 'password')) {\n options.auth.pass = options.auth.password\n }\n\n self.auth(\n options.auth.user,\n options.auth.pass,\n options.auth.sendImmediately,\n options.auth.bearer\n )\n }\n\n if (self.gzip && !self.hasHeader('accept-encoding')) {\n self.setHeader('accept-encoding', 'gzip, deflate')\n }\n\n if (self.uri.auth && !self.hasHeader('authorization')) {\n var uriAuthPieces = self.uri.auth.split(':').map(function (item) { return self._qs.unescape(item) })\n self.auth(uriAuthPieces[0], uriAuthPieces.slice(1).join(':'), true)\n }\n\n if (!self.tunnel && self.proxy && self.proxy.auth && !self.hasHeader('proxy-authorization')) {\n var proxyAuthPieces = self.proxy.auth.split(':').map(function (item) { return self._qs.unescape(item) })\n var authHeader = 'Basic ' + toBase64(proxyAuthPieces.join(':'))\n self.setHeader('proxy-authorization', authHeader)\n }\n\n if (self.proxy && !self.tunnel) {\n self.path = (self.uri.protocol + '//' + self.uri.host + self.path)\n }\n\n if (options.json) {\n self.json(options.json)\n }\n if (options.multipart) {\n self.multipart(options.multipart)\n }\n\n if (options.time) {\n self.timing = true\n\n // NOTE: elapsedTime is deprecated in favor of .timings\n self.elapsedTime = self.elapsedTime || 0\n }\n\n function setContentLength () {\n if (isTypedArray(self.body)) {\n self.body = Buffer.from(self.body)\n }\n\n if (!self.hasHeader('content-length')) {\n var length\n if (typeof self.body === 'string') {\n length = Buffer.byteLength(self.body)\n } else if (Array.isArray(self.body)) {\n length = self.body.reduce(function (a, b) { return a + b.length }, 0)\n } else {\n length = self.body.length\n }\n\n if (length) {\n self.setHeader('content-length', length)\n } else {\n self.emit('error', new Error('Argument error, options.body.'))\n }\n }\n }\n if (self.body && !isstream(self.body)) {\n setContentLength()\n }\n\n if (options.oauth) {\n self.oauth(options.oauth)\n } else if (self._oauth.params && self.hasHeader('authorization')) {\n self.oauth(self._oauth.params)\n }\n\n var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol\n var defaultModules = {'http:': http, 'https:': https}\n var httpModules = self.httpModules || {}\n\n self.httpModule = httpModules[protocol] || defaultModules[protocol]\n\n if (!self.httpModule) {\n return self.emit('error', new Error('Invalid protocol: ' + protocol))\n }\n\n if (options.ca) {\n self.ca = options.ca\n }\n\n if (!self.agent) {\n if (options.agentOptions) {\n self.agentOptions = options.agentOptions\n }\n\n if (options.agentClass) {\n self.agentClass = options.agentClass\n } else if (options.forever) {\n var v = version()\n // use ForeverAgent in node 0.10- only\n if (v.major === 0 && v.minor <= 10) {\n self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL\n } else {\n self.agentClass = self.httpModule.Agent\n self.agentOptions = self.agentOptions || {}\n self.agentOptions.keepAlive = true\n }\n } else {\n self.agentClass = self.httpModule.Agent\n }\n }\n\n if (self.pool === false) {\n self.agent = false\n } else {\n self.agent = self.agent || self.getNewAgent()\n }\n\n self.on('pipe', function (src) {\n if (self.ntick && self._started) {\n self.emit('error', new Error('You cannot pipe to this stream after the outbound request has started.'))\n }\n self.src = src\n if (isReadStream(src)) {\n if (!self.hasHeader('content-type')) {\n self.setHeader('content-type', mime.lookup(src.path))\n }\n } else {\n if (src.headers) {\n for (var i in src.headers) {\n if (!self.hasHeader(i)) {\n self.setHeader(i, src.headers[i])\n }\n }\n }\n if (self._json && !self.hasHeader('content-type')) {\n self.setHeader('content-type', 'application/json')\n }\n if (src.method && !self.explicitMethod) {\n self.method = src.method\n }\n }\n\n // self.on('pipe', function () {\n // console.error('You have already piped to this stream. Pipeing twice is likely to break the request.')\n // })\n })\n\n defer(function () {\n if (self._aborted) {\n return\n }\n\n var end = function () {\n if (self._form) {\n if (!self._auth.hasAuth) {\n self._form.pipe(self)\n } else if (self._auth.hasAuth && self._auth.sentAuth) {\n self._form.pipe(self)\n }\n }\n if (self._multipart && self._multipart.chunked) {\n self._multipart.body.pipe(self)\n }\n if (self.body) {\n if (isstream(self.body)) {\n self.body.pipe(self)\n } else {\n setContentLength()\n if (Array.isArray(self.body)) {\n self.body.forEach(function (part) {\n self.write(part)\n })\n } else {\n self.write(self.body)\n }\n self.end()\n }\n } else if (self.requestBodyStream) {\n console.warn('options.requestBodyStream is deprecated, please pass the request object to stream.pipe.')\n self.requestBodyStream.pipe(self)\n } else if (!self.src) {\n if (self._auth.hasAuth && !self._auth.sentAuth) {\n self.end()\n return\n }\n if (self.method !== 'GET' && typeof self.method !== 'undefined') {\n self.setHeader('content-length', 0)\n }\n self.end()\n }\n }\n\n if (self._form && !self.hasHeader('content-length')) {\n // Before ending the request, we had to compute the length of the whole form, asyncly\n self.setHeader(self._form.getHeaders(), true)\n self._form.getLength(function (err, length) {\n if (!err && !isNaN(length)) {\n self.setHeader('content-length', length)\n }\n end()\n })\n } else {\n end()\n }\n\n self.ntick = true\n })\n}\n\nRequest.prototype.getNewAgent = function () {\n var self = this\n var Agent = self.agentClass\n var options = {}\n if (self.agentOptions) {\n for (var i in self.agentOptions) {\n options[i] = self.agentOptions[i]\n }\n }\n if (self.ca) {\n options.ca = self.ca\n }\n if (self.ciphers) {\n options.ciphers = self.ciphers\n }\n if (self.secureProtocol) {\n options.secureProtocol = self.secureProtocol\n }\n if (self.secureOptions) {\n options.secureOptions = self.secureOptions\n }\n if (typeof self.rejectUnauthorized !== 'undefined') {\n options.rejectUnauthorized = self.rejectUnauthorized\n }\n\n if (self.cert && self.key) {\n options.key = self.key\n options.cert = self.cert\n }\n\n if (self.pfx) {\n options.pfx = self.pfx\n }\n\n if (self.passphrase) {\n options.passphrase = self.passphrase\n }\n\n var poolKey = ''\n\n // different types of agents are in different pools\n if (Agent !== self.httpModule.Agent) {\n poolKey += Agent.name\n }\n\n // ca option is only relevant if proxy or destination are https\n var proxy = self.proxy\n if (typeof proxy === 'string') {\n proxy = url.parse(proxy)\n }\n var isHttps = (proxy && proxy.protocol === 'https:') || this.uri.protocol === 'https:'\n\n if (isHttps) {\n if (options.ca) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.ca\n }\n\n if (typeof options.rejectUnauthorized !== 'undefined') {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.rejectUnauthorized\n }\n\n if (options.cert) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.cert.toString('ascii') + options.key.toString('ascii')\n }\n\n if (options.pfx) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.pfx.toString('ascii')\n }\n\n if (options.ciphers) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.ciphers\n }\n\n if (options.secureProtocol) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.secureProtocol\n }\n\n if (options.secureOptions) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.secureOptions\n }\n }\n\n if (self.pool === globalPool && !poolKey && Object.keys(options).length === 0 && self.httpModule.globalAgent) {\n // not doing anything special. Use the globalAgent\n return self.httpModule.globalAgent\n }\n\n // we're using a stored agent. Make sure it's protocol-specific\n poolKey = self.uri.protocol + poolKey\n\n // generate a new agent for this setting if none yet exists\n if (!self.pool[poolKey]) {\n self.pool[poolKey] = new Agent(options)\n // properly set maxSockets on new agents\n if (self.pool.maxSockets) {\n self.pool[poolKey].maxSockets = self.pool.maxSockets\n }\n }\n\n return self.pool[poolKey]\n}\n\nRequest.prototype.start = function () {\n // start() is called once we are ready to send the outgoing HTTP request.\n // this is usually called on the first write(), end() or on nextTick()\n var self = this\n\n if (self.timing) {\n // All timings will be relative to this request's startTime. In order to do this,\n // we need to capture the wall-clock start time (via Date), immediately followed\n // by the high-resolution timer (via now()). While these two won't be set\n // at the _exact_ same time, they should be close enough to be able to calculate\n // high-resolution, monotonically non-decreasing timestamps relative to startTime.\n var startTime = new Date().getTime()\n var startTimeNow = now()\n }\n\n if (self._aborted) {\n return\n }\n\n self._started = true\n self.method = self.method || 'GET'\n self.href = self.uri.href\n\n if (self.src && self.src.stat && self.src.stat.size && !self.hasHeader('content-length')) {\n self.setHeader('content-length', self.src.stat.size)\n }\n if (self._aws) {\n self.aws(self._aws, true)\n }\n\n // We have a method named auth, which is completely different from the http.request\n // auth option. If we don't remove it, we're gonna have a bad time.\n var reqOptions = copy(self)\n delete reqOptions.auth\n\n debug('make request', self.uri.href)\n\n // node v6.8.0 now supports a `timeout` value in `http.request()`, but we\n // should delete it for now since we handle timeouts manually for better\n // consistency with node versions before v6.8.0\n delete reqOptions.timeout\n\n try {\n self.req = self.httpModule.request(reqOptions)\n } catch (err) {\n self.emit('error', err)\n return\n }\n\n if (self.timing) {\n self.startTime = startTime\n self.startTimeNow = startTimeNow\n\n // Timing values will all be relative to startTime (by comparing to startTimeNow\n // so we have an accurate clock)\n self.timings = {}\n }\n\n var timeout\n if (self.timeout && !self.timeoutTimer) {\n if (self.timeout < 0) {\n timeout = 0\n } else if (typeof self.timeout === 'number' && isFinite(self.timeout)) {\n timeout = self.timeout\n }\n }\n\n self.req.on('response', self.onRequestResponse.bind(self))\n self.req.on('error', self.onRequestError.bind(self))\n self.req.on('drain', function () {\n self.emit('drain')\n })\n\n self.req.on('socket', function (socket) {\n // `._connecting` was the old property which was made public in node v6.1.0\n var isConnecting = socket._connecting || socket.connecting\n if (self.timing) {\n self.timings.socket = now() - self.startTimeNow\n\n if (isConnecting) {\n var onLookupTiming = function () {\n self.timings.lookup = now() - self.startTimeNow\n }\n\n var onConnectTiming = function () {\n self.timings.connect = now() - self.startTimeNow\n }\n\n socket.once('lookup', onLookupTiming)\n socket.once('connect', onConnectTiming)\n\n // clean up timing event listeners if needed on error\n self.req.once('error', function () {\n socket.removeListener('lookup', onLookupTiming)\n socket.removeListener('connect', onConnectTiming)\n })\n }\n }\n\n var setReqTimeout = function () {\n // This timeout sets the amount of time to wait *between* bytes sent\n // from the server once connected.\n //\n // In particular, it's useful for erroring if the server fails to send\n // data halfway through streaming a response.\n self.req.setTimeout(timeout, function () {\n if (self.req) {\n self.abort()\n var e = new Error('ESOCKETTIMEDOUT')\n e.code = 'ESOCKETTIMEDOUT'\n e.connect = false\n self.emit('error', e)\n }\n })\n }\n if (timeout !== undefined) {\n // Only start the connection timer if we're actually connecting a new\n // socket, otherwise if we're already connected (because this is a\n // keep-alive connection) do not bother. This is important since we won't\n // get a 'connect' event for an already connected socket.\n if (isConnecting) {\n var onReqSockConnect = function () {\n socket.removeListener('connect', onReqSockConnect)\n self.clearTimeout()\n setReqTimeout()\n }\n\n socket.on('connect', onReqSockConnect)\n\n self.req.on('error', function (err) { // eslint-disable-line handle-callback-err\n socket.removeListener('connect', onReqSockConnect)\n })\n\n // Set a timeout in memory - this block will throw if the server takes more\n // than `timeout` to write the HTTP status and headers (corresponding to\n // the on('response') event on the client). NB: this measures wall-clock\n // time, not the time between bytes sent by the server.\n self.timeoutTimer = setTimeout(function () {\n socket.removeListener('connect', onReqSockConnect)\n self.abort()\n var e = new Error('ETIMEDOUT')\n e.code = 'ETIMEDOUT'\n e.connect = true\n self.emit('error', e)\n }, timeout)\n } else {\n // We're already connected\n setReqTimeout()\n }\n }\n self.emit('socket', socket)\n })\n\n self.emit('request', self.req)\n}\n\nRequest.prototype.onRequestError = function (error) {\n var self = this\n if (self._aborted) {\n return\n }\n if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET' &&\n self.agent.addRequestNoreuse) {\n self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) }\n self.start()\n self.req.end()\n return\n }\n self.clearTimeout()\n self.emit('error', error)\n}\n\nRequest.prototype.onRequestResponse = function (response) {\n var self = this\n\n if (self.timing) {\n self.timings.response = now() - self.startTimeNow\n }\n\n debug('onRequestResponse', self.uri.href, response.statusCode, response.headers)\n response.on('end', function () {\n if (self.timing) {\n self.timings.end = now() - self.startTimeNow\n response.timingStart = self.startTime\n\n // fill in the blanks for any periods that didn't trigger, such as\n // no lookup or connect due to keep alive\n if (!self.timings.socket) {\n self.timings.socket = 0\n }\n if (!self.timings.lookup) {\n self.timings.lookup = self.timings.socket\n }\n if (!self.timings.connect) {\n self.timings.connect = self.timings.lookup\n }\n if (!self.timings.response) {\n self.timings.response = self.timings.connect\n }\n\n debug('elapsed time', self.timings.end)\n\n // elapsedTime includes all redirects\n self.elapsedTime += Math.round(self.timings.end)\n\n // NOTE: elapsedTime is deprecated in favor of .timings\n response.elapsedTime = self.elapsedTime\n\n // timings is just for the final fetch\n response.timings = self.timings\n\n // pre-calculate phase timings as well\n response.timingPhases = {\n wait: self.timings.socket,\n dns: self.timings.lookup - self.timings.socket,\n tcp: self.timings.connect - self.timings.lookup,\n firstByte: self.timings.response - self.timings.connect,\n download: self.timings.end - self.timings.response,\n total: self.timings.end\n }\n }\n debug('response end', self.uri.href, response.statusCode, response.headers)\n })\n\n if (self._aborted) {\n debug('aborted', self.uri.href)\n response.resume()\n return\n }\n\n self.response = response\n response.request = self\n response.toJSON = responseToJSON\n\n // XXX This is different on 0.10, because SSL is strict by default\n if (self.httpModule === https &&\n self.strictSSL && (!response.hasOwnProperty('socket') ||\n !response.socket.authorized)) {\n debug('strict ssl error', self.uri.href)\n var sslErr = response.hasOwnProperty('socket') ? response.socket.authorizationError : self.uri.href + ' does not support SSL'\n self.emit('error', new Error('SSL Error: ' + sslErr))\n return\n }\n\n // Save the original host before any redirect (if it changes, we need to\n // remove any authorization headers). Also remember the case of the header\n // name because lots of broken servers expect Host instead of host and we\n // want the caller to be able to specify this.\n self.originalHost = self.getHeader('host')\n if (!self.originalHostHeaderName) {\n self.originalHostHeaderName = self.hasHeader('host')\n }\n if (self.setHost) {\n self.removeHeader('host')\n }\n self.clearTimeout()\n\n var targetCookieJar = (self._jar && self._jar.setCookie) ? self._jar : globalCookieJar\n var addCookie = function (cookie) {\n // set the cookie if it's domain in the href's domain.\n try {\n targetCookieJar.setCookie(cookie, self.uri.href, {ignoreError: true})\n } catch (e) {\n self.emit('error', e)\n }\n }\n\n response.caseless = caseless(response.headers)\n\n if (response.caseless.has('set-cookie') && (!self._disableCookies)) {\n var headerName = response.caseless.has('set-cookie')\n if (Array.isArray(response.headers[headerName])) {\n response.headers[headerName].forEach(addCookie)\n } else {\n addCookie(response.headers[headerName])\n }\n }\n\n if (self._redirect.onResponse(response)) {\n return // Ignore the rest of the response\n } else {\n // Be a good stream and emit end when the response is finished.\n // Hack to emit end on close because of a core bug that never fires end\n response.on('close', function () {\n if (!self._ended) {\n self.response.emit('end')\n }\n })\n\n response.once('end', function () {\n self._ended = true\n })\n\n var noBody = function (code) {\n return (\n self.method === 'HEAD' ||\n // Informational\n (code >= 100 && code < 200) ||\n // No Content\n code === 204 ||\n // Not Modified\n code === 304\n )\n }\n\n var responseContent\n if (self.gzip && !noBody(response.statusCode)) {\n var contentEncoding = response.headers['content-encoding'] || 'identity'\n contentEncoding = contentEncoding.trim().toLowerCase()\n\n // Be more lenient with decoding compressed responses, since (very rarely)\n // servers send slightly invalid gzip responses that are still accepted\n // by common browsers.\n // Always using Z_SYNC_FLUSH is what cURL does.\n var zlibOptions = {\n flush: zlib.Z_SYNC_FLUSH,\n finishFlush: zlib.Z_SYNC_FLUSH\n }\n\n if (contentEncoding === 'gzip') {\n responseContent = zlib.createGunzip(zlibOptions)\n response.pipe(responseContent)\n } else if (contentEncoding === 'deflate') {\n responseContent = zlib.createInflate(zlibOptions)\n response.pipe(responseContent)\n } else {\n // Since previous versions didn't check for Content-Encoding header,\n // ignore any invalid values to preserve backwards-compatibility\n if (contentEncoding !== 'identity') {\n debug('ignoring unrecognized Content-Encoding ' + contentEncoding)\n }\n responseContent = response\n }\n } else {\n responseContent = response\n }\n\n if (self.encoding) {\n if (self.dests.length !== 0) {\n console.error('Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.')\n } else {\n responseContent.setEncoding(self.encoding)\n }\n }\n\n if (self._paused) {\n responseContent.pause()\n }\n\n self.responseContent = responseContent\n\n self.emit('response', response)\n\n self.dests.forEach(function (dest) {\n self.pipeDest(dest)\n })\n\n responseContent.on('data', function (chunk) {\n if (self.timing && !self.responseStarted) {\n self.responseStartTime = (new Date()).getTime()\n\n // NOTE: responseStartTime is deprecated in favor of .timings\n response.responseStartTime = self.responseStartTime\n }\n self._destdata = true\n self.emit('data', chunk)\n })\n responseContent.once('end', function (chunk) {\n self.emit('end', chunk)\n })\n responseContent.on('error', function (error) {\n self.emit('error', error)\n })\n responseContent.on('close', function () { self.emit('close') })\n\n if (self.callback) {\n self.readResponseBody(response)\n } else { // if no callback\n self.on('end', function () {\n if (self._aborted) {\n debug('aborted', self.uri.href)\n return\n }\n self.emit('complete', response)\n })\n }\n }\n debug('finish init function', self.uri.href)\n}\n\nRequest.prototype.readResponseBody = function (response) {\n var self = this\n debug(\"reading response's body\")\n var buffers = []\n var bufferLength = 0\n var strings = []\n\n self.on('data', function (chunk) {\n if (!Buffer.isBuffer(chunk)) {\n strings.push(chunk)\n } else if (chunk.length) {\n bufferLength += chunk.length\n buffers.push(chunk)\n }\n })\n self.on('end', function () {\n debug('end event', self.uri.href)\n if (self._aborted) {\n debug('aborted', self.uri.href)\n // `buffer` is defined in the parent scope and used in a closure it exists for the life of the request.\n // This can lead to leaky behavior if the user retains a reference to the request object.\n buffers = []\n bufferLength = 0\n return\n }\n\n if (bufferLength) {\n debug('has body', self.uri.href, bufferLength)\n response.body = Buffer.concat(buffers, bufferLength)\n if (self.encoding !== null) {\n response.body = response.body.toString(self.encoding)\n }\n // `buffer` is defined in the parent scope and used in a closure it exists for the life of the Request.\n // This can lead to leaky behavior if the user retains a reference to the request object.\n buffers = []\n bufferLength = 0\n } else if (strings.length) {\n // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation.\n // Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse().\n if (self.encoding === 'utf8' && strings[0].length > 0 && strings[0][0] === '\\uFEFF') {\n strings[0] = strings[0].substring(1)\n }\n response.body = strings.join('')\n }\n\n if (self._json) {\n try {\n response.body = JSON.parse(response.body, self._jsonReviver)\n } catch (e) {\n debug('invalid JSON received', self.uri.href)\n }\n }\n debug('emitting complete', self.uri.href)\n if (typeof response.body === 'undefined' && !self._json) {\n response.body = self.encoding === null ? Buffer.alloc(0) : ''\n }\n self.emit('complete', response, response.body)\n })\n}\n\nRequest.prototype.abort = function () {\n var self = this\n self._aborted = true\n\n if (self.req) {\n self.req.abort()\n } else if (self.response) {\n self.response.destroy()\n }\n\n self.clearTimeout()\n self.emit('abort')\n}\n\nRequest.prototype.pipeDest = function (dest) {\n var self = this\n var response = self.response\n // Called after the response is received\n if (dest.headers && !dest.headersSent) {\n if (response.caseless.has('content-type')) {\n var ctname = response.caseless.has('content-type')\n if (dest.setHeader) {\n dest.setHeader(ctname, response.headers[ctname])\n } else {\n dest.headers[ctname] = response.headers[ctname]\n }\n }\n\n if (response.caseless.has('content-length')) {\n var clname = response.caseless.has('content-length')\n if (dest.setHeader) {\n dest.setHeader(clname, response.headers[clname])\n } else {\n dest.headers[clname] = response.headers[clname]\n }\n }\n }\n if (dest.setHeader && !dest.headersSent) {\n for (var i in response.headers) {\n // If the response content is being decoded, the Content-Encoding header\n // of the response doesn't represent the piped content, so don't pass it.\n if (!self.gzip || i !== 'content-encoding') {\n dest.setHeader(i, response.headers[i])\n }\n }\n dest.statusCode = response.statusCode\n }\n if (self.pipefilter) {\n self.pipefilter(response, dest)\n }\n}\n\nRequest.prototype.qs = function (q, clobber) {\n var self = this\n var base\n if (!clobber && self.uri.query) {\n base = self._qs.parse(self.uri.query)\n } else {\n base = {}\n }\n\n for (var i in q) {\n base[i] = q[i]\n }\n\n var qs = self._qs.stringify(base)\n\n if (qs === '') {\n return self\n }\n\n self.uri = url.parse(self.uri.href.split('?')[0] + '?' + qs)\n self.url = self.uri\n self.path = self.uri.path\n\n if (self.uri.host === 'unix') {\n self.enableUnixSocket()\n }\n\n return self\n}\nRequest.prototype.form = function (form) {\n var self = this\n if (form) {\n if (!/^application\\/x-www-form-urlencoded\\b/.test(self.getHeader('content-type'))) {\n self.setHeader('content-type', 'application/x-www-form-urlencoded')\n }\n self.body = (typeof form === 'string')\n ? self._qs.rfc3986(form.toString('utf8'))\n : self._qs.stringify(form).toString('utf8')\n return self\n }\n // create form-data object\n self._form = new FormData()\n self._form.on('error', function (err) {\n err.message = 'form-data: ' + err.message\n self.emit('error', err)\n self.abort()\n })\n return self._form\n}\nRequest.prototype.multipart = function (multipart) {\n var self = this\n\n self._multipart.onRequest(multipart)\n\n if (!self._multipart.chunked) {\n self.body = self._multipart.body\n }\n\n return self\n}\nRequest.prototype.json = function (val) {\n var self = this\n\n if (!self.hasHeader('accept')) {\n self.setHeader('accept', 'application/json')\n }\n\n if (typeof self.jsonReplacer === 'function') {\n self._jsonReplacer = self.jsonReplacer\n }\n\n self._json = true\n if (typeof val === 'boolean') {\n if (self.body !== undefined) {\n if (!/^application\\/x-www-form-urlencoded\\b/.test(self.getHeader('content-type'))) {\n self.body = safeStringify(self.body, self._jsonReplacer)\n } else {\n self.body = self._qs.rfc3986(self.body)\n }\n if (!self.hasHeader('content-type')) {\n self.setHeader('content-type', 'application/json')\n }\n }\n } else {\n self.body = safeStringify(val, self._jsonReplacer)\n if (!self.hasHeader('content-type')) {\n self.setHeader('content-type', 'application/json')\n }\n }\n\n if (typeof self.jsonReviver === 'function') {\n self._jsonReviver = self.jsonReviver\n }\n\n return self\n}\nRequest.prototype.getHeader = function (name, headers) {\n var self = this\n var result, re, match\n if (!headers) {\n headers = self.headers\n }\n Object.keys(headers).forEach(function (key) {\n if (key.length !== name.length) {\n return\n }\n re = new RegExp(name, 'i')\n match = key.match(re)\n if (match) {\n result = headers[key]\n }\n })\n return result\n}\nRequest.prototype.enableUnixSocket = function () {\n // Get the socket & request paths from the URL\n var unixParts = this.uri.path.split(':')\n var host = unixParts[0]\n var path = unixParts[1]\n // Apply unix properties to request\n this.socketPath = host\n this.uri.pathname = path\n this.uri.path = path\n this.uri.host = host\n this.uri.hostname = host\n this.uri.isUnix = true\n}\n\nRequest.prototype.auth = function (user, pass, sendImmediately, bearer) {\n var self = this\n\n self._auth.onRequest(user, pass, sendImmediately, bearer)\n\n return self\n}\nRequest.prototype.aws = function (opts, now) {\n var self = this\n\n if (!now) {\n self._aws = opts\n return self\n }\n\n if (opts.sign_version === 4 || opts.sign_version === '4') {\n // use aws4\n var options = {\n host: self.uri.host,\n path: self.uri.path,\n method: self.method,\n headers: self.headers,\n body: self.body\n }\n if (opts.service) {\n options.service = opts.service\n }\n var signRes = aws4.sign(options, {\n accessKeyId: opts.key,\n secretAccessKey: opts.secret,\n sessionToken: opts.session\n })\n self.setHeader('authorization', signRes.headers.Authorization)\n self.setHeader('x-amz-date', signRes.headers['X-Amz-Date'])\n if (signRes.headers['X-Amz-Security-Token']) {\n self.setHeader('x-amz-security-token', signRes.headers['X-Amz-Security-Token'])\n }\n } else {\n // default: use aws-sign2\n var date = new Date()\n self.setHeader('date', date.toUTCString())\n var auth = {\n key: opts.key,\n secret: opts.secret,\n verb: self.method.toUpperCase(),\n date: date,\n contentType: self.getHeader('content-type') || '',\n md5: self.getHeader('content-md5') || '',\n amazonHeaders: aws2.canonicalizeHeaders(self.headers)\n }\n var path = self.uri.path\n if (opts.bucket && path) {\n auth.resource = '/' + opts.bucket + path\n } else if (opts.bucket && !path) {\n auth.resource = '/' + opts.bucket\n } else if (!opts.bucket && path) {\n auth.resource = path\n } else if (!opts.bucket && !path) {\n auth.resource = '/'\n }\n auth.resource = aws2.canonicalizeResource(auth.resource)\n self.setHeader('authorization', aws2.authorization(auth))\n }\n\n return self\n}\nRequest.prototype.httpSignature = function (opts) {\n var self = this\n httpSignature.signRequest({\n getHeader: function (header) {\n return self.getHeader(header, self.headers)\n },\n setHeader: function (header, value) {\n self.setHeader(header, value)\n },\n method: self.method,\n path: self.path\n }, opts)\n debug('httpSignature authorization', self.getHeader('authorization'))\n\n return self\n}\nRequest.prototype.hawk = function (opts) {\n var self = this\n self.setHeader('Authorization', hawk.header(self.uri, self.method, opts))\n}\nRequest.prototype.oauth = function (_oauth) {\n var self = this\n\n self._oauth.onRequest(_oauth)\n\n return self\n}\n\nRequest.prototype.jar = function (jar) {\n var self = this\n var cookies\n\n if (self._redirect.redirectsFollowed === 0) {\n self.originalCookieHeader = self.getHeader('cookie')\n }\n\n if (!jar) {\n // disable cookies\n cookies = false\n self._disableCookies = true\n } else {\n var targetCookieJar = jar.getCookieString ? jar : globalCookieJar\n var urihref = self.uri.href\n // fetch cookie in the Specified host\n if (targetCookieJar) {\n cookies = targetCookieJar.getCookieString(urihref)\n }\n }\n\n // if need cookie and cookie is not empty\n if (cookies && cookies.length) {\n if (self.originalCookieHeader) {\n // Don't overwrite existing Cookie header\n self.setHeader('cookie', self.originalCookieHeader + '; ' + cookies)\n } else {\n self.setHeader('cookie', cookies)\n }\n }\n self._jar = jar\n return self\n}\n\n// Stream API\nRequest.prototype.pipe = function (dest, opts) {\n var self = this\n\n if (self.response) {\n if (self._destdata) {\n self.emit('error', new Error('You cannot pipe after data has been emitted from the response.'))\n } else if (self._ended) {\n self.emit('error', new Error('You cannot pipe after the response has been ended.'))\n } else {\n stream.Stream.prototype.pipe.call(self, dest, opts)\n self.pipeDest(dest)\n return dest\n }\n } else {\n self.dests.push(dest)\n stream.Stream.prototype.pipe.call(self, dest, opts)\n return dest\n }\n}\nRequest.prototype.write = function () {\n var self = this\n if (self._aborted) { return }\n\n if (!self._started) {\n self.start()\n }\n if (self.req) {\n return self.req.write.apply(self.req, arguments)\n }\n}\nRequest.prototype.end = function (chunk) {\n var self = this\n if (self._aborted) { return }\n\n if (chunk) {\n self.write(chunk)\n }\n if (!self._started) {\n self.start()\n }\n if (self.req) {\n self.req.end()\n }\n}\nRequest.prototype.pause = function () {\n var self = this\n if (!self.responseContent) {\n self._paused = true\n } else {\n self.responseContent.pause.apply(self.responseContent, arguments)\n }\n}\nRequest.prototype.resume = function () {\n var self = this\n if (!self.responseContent) {\n self._paused = false\n } else {\n self.responseContent.resume.apply(self.responseContent, arguments)\n }\n}\nRequest.prototype.destroy = function () {\n var self = this\n this.clearTimeout()\n if (!self._ended) {\n self.end()\n } else if (self.response) {\n self.response.destroy()\n }\n}\n\nRequest.prototype.clearTimeout = function () {\n if (this.timeoutTimer) {\n clearTimeout(this.timeoutTimer)\n this.timeoutTimer = null\n }\n}\n\nRequest.defaultProxyHeaderWhiteList =\n Tunnel.defaultProxyHeaderWhiteList.slice()\n\nRequest.defaultProxyHeaderExclusiveList =\n Tunnel.defaultProxyHeaderExclusiveList.slice()\n\n// Exports\n\nRequest.prototype.toJSON = requestToJSON\nmodule.exports = Request\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","// Copyright 2015 Joyent, Inc.\n\nvar Buffer = require('safer-buffer').Buffer;\n\nvar algInfo = {\n\t'dsa': {\n\t\tparts: ['p', 'q', 'g', 'y'],\n\t\tsizePart: 'p'\n\t},\n\t'rsa': {\n\t\tparts: ['e', 'n'],\n\t\tsizePart: 'n'\n\t},\n\t'ecdsa': {\n\t\tparts: ['curve', 'Q'],\n\t\tsizePart: 'Q'\n\t},\n\t'ed25519': {\n\t\tparts: ['A'],\n\t\tsizePart: 'A'\n\t}\n};\nalgInfo['curve25519'] = algInfo['ed25519'];\n\nvar algPrivInfo = {\n\t'dsa': {\n\t\tparts: ['p', 'q', 'g', 'y', 'x']\n\t},\n\t'rsa': {\n\t\tparts: ['n', 'e', 'd', 'iqmp', 'p', 'q']\n\t},\n\t'ecdsa': {\n\t\tparts: ['curve', 'Q', 'd']\n\t},\n\t'ed25519': {\n\t\tparts: ['A', 'k']\n\t}\n};\nalgPrivInfo['curve25519'] = algPrivInfo['ed25519'];\n\nvar hashAlgs = {\n\t'md5': true,\n\t'sha1': true,\n\t'sha256': true,\n\t'sha384': true,\n\t'sha512': true\n};\n\n/*\n * Taken from\n * http://csrc.nist.gov/groups/ST/toolkit/documents/dss/NISTReCur.pdf\n */\nvar curves = {\n\t'nistp256': {\n\t\tsize: 256,\n\t\tpkcs8oid: '1.2.840.10045.3.1.7',\n\t\tp: Buffer.from(('00' +\n\t\t 'ffffffff 00000001 00000000 00000000' +\n\t\t '00000000 ffffffff ffffffff ffffffff').\n\t\t replace(/ /g, ''), 'hex'),\n\t\ta: Buffer.from(('00' +\n\t\t 'FFFFFFFF 00000001 00000000 00000000' +\n\t\t '00000000 FFFFFFFF FFFFFFFF FFFFFFFC').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tb: Buffer.from((\n\t\t '5ac635d8 aa3a93e7 b3ebbd55 769886bc' +\n\t\t '651d06b0 cc53b0f6 3bce3c3e 27d2604b').\n\t\t replace(/ /g, ''), 'hex'),\n\t\ts: Buffer.from(('00' +\n\t\t 'c49d3608 86e70493 6a6678e1 139d26b7' +\n\t\t '819f7e90').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tn: Buffer.from(('00' +\n\t\t 'ffffffff 00000000 ffffffff ffffffff' +\n\t\t 'bce6faad a7179e84 f3b9cac2 fc632551').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tG: Buffer.from(('04' +\n\t\t '6b17d1f2 e12c4247 f8bce6e5 63a440f2' +\n\t\t '77037d81 2deb33a0 f4a13945 d898c296' +\n\t\t '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16' +\n\t\t '2bce3357 6b315ece cbb64068 37bf51f5').\n\t\t replace(/ /g, ''), 'hex')\n\t},\n\t'nistp384': {\n\t\tsize: 384,\n\t\tpkcs8oid: '1.3.132.0.34',\n\t\tp: Buffer.from(('00' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff ffffffff fffffffe' +\n\t\t 'ffffffff 00000000 00000000 ffffffff').\n\t\t replace(/ /g, ''), 'hex'),\n\t\ta: Buffer.from(('00' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE' +\n\t\t 'FFFFFFFF 00000000 00000000 FFFFFFFC').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tb: Buffer.from((\n\t\t 'b3312fa7 e23ee7e4 988e056b e3f82d19' +\n\t\t '181d9c6e fe814112 0314088f 5013875a' +\n\t\t 'c656398d 8a2ed19d 2a85c8ed d3ec2aef').\n\t\t replace(/ /g, ''), 'hex'),\n\t\ts: Buffer.from(('00' +\n\t\t 'a335926a a319a27a 1d00896a 6773a482' +\n\t\t '7acdac73').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tn: Buffer.from(('00' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff c7634d81 f4372ddf' +\n\t\t '581a0db2 48b0a77a ecec196a ccc52973').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tG: Buffer.from(('04' +\n\t\t 'aa87ca22 be8b0537 8eb1c71e f320ad74' +\n\t\t '6e1d3b62 8ba79b98 59f741e0 82542a38' +\n\t\t '5502f25d bf55296c 3a545e38 72760ab7' +\n\t\t '3617de4a 96262c6f 5d9e98bf 9292dc29' +\n\t\t 'f8f41dbd 289a147c e9da3113 b5f0b8c0' +\n\t\t '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f').\n\t\t replace(/ /g, ''), 'hex')\n\t},\n\t'nistp521': {\n\t\tsize: 521,\n\t\tpkcs8oid: '1.3.132.0.35',\n\t\tp: Buffer.from((\n\t\t '01ffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffff').replace(/ /g, ''), 'hex'),\n\t\ta: Buffer.from(('01FF' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFC').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tb: Buffer.from(('51' +\n\t\t '953eb961 8e1c9a1f 929a21a0 b68540ee' +\n\t\t 'a2da725b 99b315f3 b8b48991 8ef109e1' +\n\t\t '56193951 ec7e937b 1652c0bd 3bb1bf07' +\n\t\t '3573df88 3d2c34f1 ef451fd4 6b503f00').\n\t\t replace(/ /g, ''), 'hex'),\n\t\ts: Buffer.from(('00' +\n\t\t 'd09e8800 291cb853 96cc6717 393284aa' +\n\t\t 'a0da64ba').replace(/ /g, ''), 'hex'),\n\t\tn: Buffer.from(('01ff' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff ffffffff fffffffa' +\n\t\t '51868783 bf2f966b 7fcc0148 f709a5d0' +\n\t\t '3bb5c9b8 899c47ae bb6fb71e 91386409').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tG: Buffer.from(('04' +\n\t\t '00c6 858e06b7 0404e9cd 9e3ecb66 2395b442' +\n\t\t '9c648139 053fb521 f828af60 6b4d3dba' +\n\t\t 'a14b5e77 efe75928 fe1dc127 a2ffa8de' +\n\t\t '3348b3c1 856a429b f97e7e31 c2e5bd66' +\n\t\t '0118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9' +\n\t\t '98f54449 579b4468 17afbd17 273e662c' +\n\t\t '97ee7299 5ef42640 c550b901 3fad0761' +\n\t\t '353c7086 a272c240 88be9476 9fd16650').\n\t\t replace(/ /g, ''), 'hex')\n\t}\n};\n\nmodule.exports = {\n\tinfo: algInfo,\n\tprivInfo: algPrivInfo,\n\thashAlgs: hashAlgs,\n\tcurves: curves\n};\n","// Copyright 2016 Joyent, Inc.\n\nmodule.exports = Certificate;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar errs = require('./errors');\nvar util = require('util');\nvar utils = require('./utils');\nvar Key = require('./key');\nvar PrivateKey = require('./private-key');\nvar Identity = require('./identity');\n\nvar formats = {};\nformats['openssh'] = require('./formats/openssh-cert');\nformats['x509'] = require('./formats/x509');\nformats['pem'] = require('./formats/x509-pem');\n\nvar CertificateParseError = errs.CertificateParseError;\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\n\nfunction Certificate(opts) {\n\tassert.object(opts, 'options');\n\tassert.arrayOfObject(opts.subjects, 'options.subjects');\n\tutils.assertCompatible(opts.subjects[0], Identity, [1, 0],\n\t 'options.subjects');\n\tutils.assertCompatible(opts.subjectKey, Key, [1, 0],\n\t 'options.subjectKey');\n\tutils.assertCompatible(opts.issuer, Identity, [1, 0], 'options.issuer');\n\tif (opts.issuerKey !== undefined) {\n\t\tutils.assertCompatible(opts.issuerKey, Key, [1, 0],\n\t\t 'options.issuerKey');\n\t}\n\tassert.object(opts.signatures, 'options.signatures');\n\tassert.buffer(opts.serial, 'options.serial');\n\tassert.date(opts.validFrom, 'options.validFrom');\n\tassert.date(opts.validUntil, 'optons.validUntil');\n\n\tassert.optionalArrayOfString(opts.purposes, 'options.purposes');\n\n\tthis._hashCache = {};\n\n\tthis.subjects = opts.subjects;\n\tthis.issuer = opts.issuer;\n\tthis.subjectKey = opts.subjectKey;\n\tthis.issuerKey = opts.issuerKey;\n\tthis.signatures = opts.signatures;\n\tthis.serial = opts.serial;\n\tthis.validFrom = opts.validFrom;\n\tthis.validUntil = opts.validUntil;\n\tthis.purposes = opts.purposes;\n}\n\nCertificate.formats = formats;\n\nCertificate.prototype.toBuffer = function (format, options) {\n\tif (format === undefined)\n\t\tformat = 'x509';\n\tassert.string(format, 'format');\n\tassert.object(formats[format], 'formats[format]');\n\tassert.optionalObject(options, 'options');\n\n\treturn (formats[format].write(this, options));\n};\n\nCertificate.prototype.toString = function (format, options) {\n\tif (format === undefined)\n\t\tformat = 'pem';\n\treturn (this.toBuffer(format, options).toString());\n};\n\nCertificate.prototype.fingerprint = function (algo) {\n\tif (algo === undefined)\n\t\talgo = 'sha256';\n\tassert.string(algo, 'algorithm');\n\tvar opts = {\n\t\ttype: 'certificate',\n\t\thash: this.hash(algo),\n\t\talgorithm: algo\n\t};\n\treturn (new Fingerprint(opts));\n};\n\nCertificate.prototype.hash = function (algo) {\n\tassert.string(algo, 'algorithm');\n\talgo = algo.toLowerCase();\n\tif (algs.hashAlgs[algo] === undefined)\n\t\tthrow (new InvalidAlgorithmError(algo));\n\n\tif (this._hashCache[algo])\n\t\treturn (this._hashCache[algo]);\n\n\tvar hash = crypto.createHash(algo).\n\t update(this.toBuffer('x509')).digest();\n\tthis._hashCache[algo] = hash;\n\treturn (hash);\n};\n\nCertificate.prototype.isExpired = function (when) {\n\tif (when === undefined)\n\t\twhen = new Date();\n\treturn (!((when.getTime() >= this.validFrom.getTime()) &&\n\t\t(when.getTime() < this.validUntil.getTime())));\n};\n\nCertificate.prototype.isSignedBy = function (issuerCert) {\n\tutils.assertCompatible(issuerCert, Certificate, [1, 0], 'issuer');\n\n\tif (!this.issuer.equals(issuerCert.subjects[0]))\n\t\treturn (false);\n\tif (this.issuer.purposes && this.issuer.purposes.length > 0 &&\n\t this.issuer.purposes.indexOf('ca') === -1) {\n\t\treturn (false);\n\t}\n\n\treturn (this.isSignedByKey(issuerCert.subjectKey));\n};\n\nCertificate.prototype.getExtension = function (keyOrOid) {\n\tassert.string(keyOrOid, 'keyOrOid');\n\tvar ext = this.getExtensions().filter(function (maybeExt) {\n\t\tif (maybeExt.format === 'x509')\n\t\t\treturn (maybeExt.oid === keyOrOid);\n\t\tif (maybeExt.format === 'openssh')\n\t\t\treturn (maybeExt.name === keyOrOid);\n\t\treturn (false);\n\t})[0];\n\treturn (ext);\n};\n\nCertificate.prototype.getExtensions = function () {\n\tvar exts = [];\n\tvar x509 = this.signatures.x509;\n\tif (x509 && x509.extras && x509.extras.exts) {\n\t\tx509.extras.exts.forEach(function (ext) {\n\t\t\text.format = 'x509';\n\t\t\texts.push(ext);\n\t\t});\n\t}\n\tvar openssh = this.signatures.openssh;\n\tif (openssh && openssh.exts) {\n\t\topenssh.exts.forEach(function (ext) {\n\t\t\text.format = 'openssh';\n\t\t\texts.push(ext);\n\t\t});\n\t}\n\treturn (exts);\n};\n\nCertificate.prototype.isSignedByKey = function (issuerKey) {\n\tutils.assertCompatible(issuerKey, Key, [1, 2], 'issuerKey');\n\n\tif (this.issuerKey !== undefined) {\n\t\treturn (this.issuerKey.\n\t\t fingerprint('sha512').matches(issuerKey));\n\t}\n\n\tvar fmt = Object.keys(this.signatures)[0];\n\tvar valid = formats[fmt].verify(this, issuerKey);\n\tif (valid)\n\t\tthis.issuerKey = issuerKey;\n\treturn (valid);\n};\n\nCertificate.prototype.signWith = function (key) {\n\tutils.assertCompatible(key, PrivateKey, [1, 2], 'key');\n\tvar fmts = Object.keys(formats);\n\tvar didOne = false;\n\tfor (var i = 0; i < fmts.length; ++i) {\n\t\tif (fmts[i] !== 'pem') {\n\t\t\tvar ret = formats[fmts[i]].sign(this, key);\n\t\t\tif (ret === true)\n\t\t\t\tdidOne = true;\n\t\t}\n\t}\n\tif (!didOne) {\n\t\tthrow (new Error('Failed to sign the certificate for any ' +\n\t\t 'available certificate formats'));\n\t}\n};\n\nCertificate.createSelfSigned = function (subjectOrSubjects, key, options) {\n\tvar subjects;\n\tif (Array.isArray(subjectOrSubjects))\n\t\tsubjects = subjectOrSubjects;\n\telse\n\t\tsubjects = [subjectOrSubjects];\n\n\tassert.arrayOfObject(subjects);\n\tsubjects.forEach(function (subject) {\n\t\tutils.assertCompatible(subject, Identity, [1, 0], 'subject');\n\t});\n\n\tutils.assertCompatible(key, PrivateKey, [1, 2], 'private key');\n\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalObject(options.validFrom, 'options.validFrom');\n\tassert.optionalObject(options.validUntil, 'options.validUntil');\n\tvar validFrom = options.validFrom;\n\tvar validUntil = options.validUntil;\n\tif (validFrom === undefined)\n\t\tvalidFrom = new Date();\n\tif (validUntil === undefined) {\n\t\tassert.optionalNumber(options.lifetime, 'options.lifetime');\n\t\tvar lifetime = options.lifetime;\n\t\tif (lifetime === undefined)\n\t\t\tlifetime = 10*365*24*3600;\n\t\tvalidUntil = new Date();\n\t\tvalidUntil.setTime(validUntil.getTime() + lifetime*1000);\n\t}\n\tassert.optionalBuffer(options.serial, 'options.serial');\n\tvar serial = options.serial;\n\tif (serial === undefined)\n\t\tserial = Buffer.from('0000000000000001', 'hex');\n\n\tvar purposes = options.purposes;\n\tif (purposes === undefined)\n\t\tpurposes = [];\n\n\tif (purposes.indexOf('signature') === -1)\n\t\tpurposes.push('signature');\n\n\t/* Self-signed certs are always CAs. */\n\tif (purposes.indexOf('ca') === -1)\n\t\tpurposes.push('ca');\n\tif (purposes.indexOf('crl') === -1)\n\t\tpurposes.push('crl');\n\n\t/*\n\t * If we weren't explicitly given any other purposes, do the sensible\n\t * thing and add some basic ones depending on the subject type.\n\t */\n\tif (purposes.length <= 3) {\n\t\tvar hostSubjects = subjects.filter(function (subject) {\n\t\t\treturn (subject.type === 'host');\n\t\t});\n\t\tvar userSubjects = subjects.filter(function (subject) {\n\t\t\treturn (subject.type === 'user');\n\t\t});\n\t\tif (hostSubjects.length > 0) {\n\t\t\tif (purposes.indexOf('serverAuth') === -1)\n\t\t\t\tpurposes.push('serverAuth');\n\t\t}\n\t\tif (userSubjects.length > 0) {\n\t\t\tif (purposes.indexOf('clientAuth') === -1)\n\t\t\t\tpurposes.push('clientAuth');\n\t\t}\n\t\tif (userSubjects.length > 0 || hostSubjects.length > 0) {\n\t\t\tif (purposes.indexOf('keyAgreement') === -1)\n\t\t\t\tpurposes.push('keyAgreement');\n\t\t\tif (key.type === 'rsa' &&\n\t\t\t purposes.indexOf('encryption') === -1)\n\t\t\t\tpurposes.push('encryption');\n\t\t}\n\t}\n\n\tvar cert = new Certificate({\n\t\tsubjects: subjects,\n\t\tissuer: subjects[0],\n\t\tsubjectKey: key.toPublic(),\n\t\tissuerKey: key.toPublic(),\n\t\tsignatures: {},\n\t\tserial: serial,\n\t\tvalidFrom: validFrom,\n\t\tvalidUntil: validUntil,\n\t\tpurposes: purposes\n\t});\n\tcert.signWith(key);\n\n\treturn (cert);\n};\n\nCertificate.create =\n function (subjectOrSubjects, key, issuer, issuerKey, options) {\n\tvar subjects;\n\tif (Array.isArray(subjectOrSubjects))\n\t\tsubjects = subjectOrSubjects;\n\telse\n\t\tsubjects = [subjectOrSubjects];\n\n\tassert.arrayOfObject(subjects);\n\tsubjects.forEach(function (subject) {\n\t\tutils.assertCompatible(subject, Identity, [1, 0], 'subject');\n\t});\n\n\tutils.assertCompatible(key, Key, [1, 0], 'key');\n\tif (PrivateKey.isPrivateKey(key))\n\t\tkey = key.toPublic();\n\tutils.assertCompatible(issuer, Identity, [1, 0], 'issuer');\n\tutils.assertCompatible(issuerKey, PrivateKey, [1, 2], 'issuer key');\n\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalObject(options.validFrom, 'options.validFrom');\n\tassert.optionalObject(options.validUntil, 'options.validUntil');\n\tvar validFrom = options.validFrom;\n\tvar validUntil = options.validUntil;\n\tif (validFrom === undefined)\n\t\tvalidFrom = new Date();\n\tif (validUntil === undefined) {\n\t\tassert.optionalNumber(options.lifetime, 'options.lifetime');\n\t\tvar lifetime = options.lifetime;\n\t\tif (lifetime === undefined)\n\t\t\tlifetime = 10*365*24*3600;\n\t\tvalidUntil = new Date();\n\t\tvalidUntil.setTime(validUntil.getTime() + lifetime*1000);\n\t}\n\tassert.optionalBuffer(options.serial, 'options.serial');\n\tvar serial = options.serial;\n\tif (serial === undefined)\n\t\tserial = Buffer.from('0000000000000001', 'hex');\n\n\tvar purposes = options.purposes;\n\tif (purposes === undefined)\n\t\tpurposes = [];\n\n\tif (purposes.indexOf('signature') === -1)\n\t\tpurposes.push('signature');\n\n\tif (options.ca === true) {\n\t\tif (purposes.indexOf('ca') === -1)\n\t\t\tpurposes.push('ca');\n\t\tif (purposes.indexOf('crl') === -1)\n\t\t\tpurposes.push('crl');\n\t}\n\n\tvar hostSubjects = subjects.filter(function (subject) {\n\t\treturn (subject.type === 'host');\n\t});\n\tvar userSubjects = subjects.filter(function (subject) {\n\t\treturn (subject.type === 'user');\n\t});\n\tif (hostSubjects.length > 0) {\n\t\tif (purposes.indexOf('serverAuth') === -1)\n\t\t\tpurposes.push('serverAuth');\n\t}\n\tif (userSubjects.length > 0) {\n\t\tif (purposes.indexOf('clientAuth') === -1)\n\t\t\tpurposes.push('clientAuth');\n\t}\n\tif (userSubjects.length > 0 || hostSubjects.length > 0) {\n\t\tif (purposes.indexOf('keyAgreement') === -1)\n\t\t\tpurposes.push('keyAgreement');\n\t\tif (key.type === 'rsa' &&\n\t\t purposes.indexOf('encryption') === -1)\n\t\t\tpurposes.push('encryption');\n\t}\n\n\tvar cert = new Certificate({\n\t\tsubjects: subjects,\n\t\tissuer: issuer,\n\t\tsubjectKey: key,\n\t\tissuerKey: issuerKey.toPublic(),\n\t\tsignatures: {},\n\t\tserial: serial,\n\t\tvalidFrom: validFrom,\n\t\tvalidUntil: validUntil,\n\t\tpurposes: purposes\n\t});\n\tcert.signWith(issuerKey);\n\n\treturn (cert);\n};\n\nCertificate.parse = function (data, format, options) {\n\tif (typeof (data) !== 'string')\n\t\tassert.buffer(data, 'data');\n\tif (format === undefined)\n\t\tformat = 'auto';\n\tassert.string(format, 'format');\n\tif (typeof (options) === 'string')\n\t\toptions = { filename: options };\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalString(options.filename, 'options.filename');\n\tif (options.filename === undefined)\n\t\toptions.filename = '(unnamed)';\n\n\tassert.object(formats[format], 'formats[format]');\n\n\ttry {\n\t\tvar k = formats[format].read(data, options);\n\t\treturn (k);\n\t} catch (e) {\n\t\tthrow (new CertificateParseError(options.filename, format, e));\n\t}\n};\n\nCertificate.isCertificate = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Certificate, ver));\n};\n\n/*\n * API versions for Certificate:\n * [1,0] -- initial ver\n * [1,1] -- openssh format now unpacks extensions\n */\nCertificate.prototype._sshpkApiVersion = [1, 1];\n\nCertificate._oldVersionDetect = function (obj) {\n\treturn ([1, 0]);\n};\n","// Copyright 2017 Joyent, Inc.\n\nmodule.exports = {\n\tDiffieHellman: DiffieHellman,\n\tgenerateECDSA: generateECDSA,\n\tgenerateED25519: generateED25519\n};\n\nvar assert = require('assert-plus');\nvar crypto = require('crypto');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar utils = require('./utils');\nvar nacl = require('tweetnacl');\n\nvar Key = require('./key');\nvar PrivateKey = require('./private-key');\n\nvar CRYPTO_HAVE_ECDH = (crypto.createECDH !== undefined);\n\nvar ecdh = require('ecc-jsbn');\nvar ec = require('ecc-jsbn/lib/ec');\nvar jsbn = require('jsbn').BigInteger;\n\nfunction DiffieHellman(key) {\n\tutils.assertCompatible(key, Key, [1, 4], 'key');\n\tthis._isPriv = PrivateKey.isPrivateKey(key, [1, 3]);\n\tthis._algo = key.type;\n\tthis._curve = key.curve;\n\tthis._key = key;\n\tif (key.type === 'dsa') {\n\t\tif (!CRYPTO_HAVE_ECDH) {\n\t\t\tthrow (new Error('Due to bugs in the node 0.10 ' +\n\t\t\t 'crypto API, node 0.12.x or later is required ' +\n\t\t\t 'to use DH'));\n\t\t}\n\t\tthis._dh = crypto.createDiffieHellman(\n\t\t key.part.p.data, undefined,\n\t\t key.part.g.data, undefined);\n\t\tthis._p = key.part.p;\n\t\tthis._g = key.part.g;\n\t\tif (this._isPriv)\n\t\t\tthis._dh.setPrivateKey(key.part.x.data);\n\t\tthis._dh.setPublicKey(key.part.y.data);\n\n\t} else if (key.type === 'ecdsa') {\n\t\tif (!CRYPTO_HAVE_ECDH) {\n\t\t\tthis._ecParams = new X9ECParameters(this._curve);\n\n\t\t\tif (this._isPriv) {\n\t\t\t\tthis._priv = new ECPrivate(\n\t\t\t\t this._ecParams, key.part.d.data);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tvar curve = {\n\t\t\t'nistp256': 'prime256v1',\n\t\t\t'nistp384': 'secp384r1',\n\t\t\t'nistp521': 'secp521r1'\n\t\t}[key.curve];\n\t\tthis._dh = crypto.createECDH(curve);\n\t\tif (typeof (this._dh) !== 'object' ||\n\t\t typeof (this._dh.setPrivateKey) !== 'function') {\n\t\t\tCRYPTO_HAVE_ECDH = false;\n\t\t\tDiffieHellman.call(this, key);\n\t\t\treturn;\n\t\t}\n\t\tif (this._isPriv)\n\t\t\tthis._dh.setPrivateKey(key.part.d.data);\n\t\tthis._dh.setPublicKey(key.part.Q.data);\n\n\t} else if (key.type === 'curve25519') {\n\t\tif (this._isPriv) {\n\t\t\tutils.assertCompatible(key, PrivateKey, [1, 5], 'key');\n\t\t\tthis._priv = key.part.k.data;\n\t\t}\n\n\t} else {\n\t\tthrow (new Error('DH not supported for ' + key.type + ' keys'));\n\t}\n}\n\nDiffieHellman.prototype.getPublicKey = function () {\n\tif (this._isPriv)\n\t\treturn (this._key.toPublic());\n\treturn (this._key);\n};\n\nDiffieHellman.prototype.getPrivateKey = function () {\n\tif (this._isPriv)\n\t\treturn (this._key);\n\telse\n\t\treturn (undefined);\n};\nDiffieHellman.prototype.getKey = DiffieHellman.prototype.getPrivateKey;\n\nDiffieHellman.prototype._keyCheck = function (pk, isPub) {\n\tassert.object(pk, 'key');\n\tif (!isPub)\n\t\tutils.assertCompatible(pk, PrivateKey, [1, 3], 'key');\n\tutils.assertCompatible(pk, Key, [1, 4], 'key');\n\n\tif (pk.type !== this._algo) {\n\t\tthrow (new Error('A ' + pk.type + ' key cannot be used in ' +\n\t\t this._algo + ' Diffie-Hellman'));\n\t}\n\n\tif (pk.curve !== this._curve) {\n\t\tthrow (new Error('A key from the ' + pk.curve + ' curve ' +\n\t\t 'cannot be used with a ' + this._curve +\n\t\t ' Diffie-Hellman'));\n\t}\n\n\tif (pk.type === 'dsa') {\n\t\tassert.deepEqual(pk.part.p, this._p,\n\t\t 'DSA key prime does not match');\n\t\tassert.deepEqual(pk.part.g, this._g,\n\t\t 'DSA key generator does not match');\n\t}\n};\n\nDiffieHellman.prototype.setKey = function (pk) {\n\tthis._keyCheck(pk);\n\n\tif (pk.type === 'dsa') {\n\t\tthis._dh.setPrivateKey(pk.part.x.data);\n\t\tthis._dh.setPublicKey(pk.part.y.data);\n\n\t} else if (pk.type === 'ecdsa') {\n\t\tif (CRYPTO_HAVE_ECDH) {\n\t\t\tthis._dh.setPrivateKey(pk.part.d.data);\n\t\t\tthis._dh.setPublicKey(pk.part.Q.data);\n\t\t} else {\n\t\t\tthis._priv = new ECPrivate(\n\t\t\t this._ecParams, pk.part.d.data);\n\t\t}\n\n\t} else if (pk.type === 'curve25519') {\n\t\tvar k = pk.part.k;\n\t\tif (!pk.part.k)\n\t\t\tk = pk.part.r;\n\t\tthis._priv = k.data;\n\t\tif (this._priv[0] === 0x00)\n\t\t\tthis._priv = this._priv.slice(1);\n\t\tthis._priv = this._priv.slice(0, 32);\n\t}\n\tthis._key = pk;\n\tthis._isPriv = true;\n};\nDiffieHellman.prototype.setPrivateKey = DiffieHellman.prototype.setKey;\n\nDiffieHellman.prototype.computeSecret = function (otherpk) {\n\tthis._keyCheck(otherpk, true);\n\tif (!this._isPriv)\n\t\tthrow (new Error('DH exchange has not been initialized with ' +\n\t\t 'a private key yet'));\n\n\tvar pub;\n\tif (this._algo === 'dsa') {\n\t\treturn (this._dh.computeSecret(\n\t\t otherpk.part.y.data));\n\n\t} else if (this._algo === 'ecdsa') {\n\t\tif (CRYPTO_HAVE_ECDH) {\n\t\t\treturn (this._dh.computeSecret(\n\t\t\t otherpk.part.Q.data));\n\t\t} else {\n\t\t\tpub = new ECPublic(\n\t\t\t this._ecParams, otherpk.part.Q.data);\n\t\t\treturn (this._priv.deriveSharedSecret(pub));\n\t\t}\n\n\t} else if (this._algo === 'curve25519') {\n\t\tpub = otherpk.part.A.data;\n\t\twhile (pub[0] === 0x00 && pub.length > 32)\n\t\t\tpub = pub.slice(1);\n\t\tvar priv = this._priv;\n\t\tassert.strictEqual(pub.length, 32);\n\t\tassert.strictEqual(priv.length, 32);\n\n\t\tvar secret = nacl.box.before(new Uint8Array(pub),\n\t\t new Uint8Array(priv));\n\n\t\treturn (Buffer.from(secret));\n\t}\n\n\tthrow (new Error('Invalid algorithm: ' + this._algo));\n};\n\nDiffieHellman.prototype.generateKey = function () {\n\tvar parts = [];\n\tvar priv, pub;\n\tif (this._algo === 'dsa') {\n\t\tthis._dh.generateKeys();\n\n\t\tparts.push({name: 'p', data: this._p.data});\n\t\tparts.push({name: 'q', data: this._key.part.q.data});\n\t\tparts.push({name: 'g', data: this._g.data});\n\t\tparts.push({name: 'y', data: this._dh.getPublicKey()});\n\t\tparts.push({name: 'x', data: this._dh.getPrivateKey()});\n\t\tthis._key = new PrivateKey({\n\t\t\ttype: 'dsa',\n\t\t\tparts: parts\n\t\t});\n\t\tthis._isPriv = true;\n\t\treturn (this._key);\n\n\t} else if (this._algo === 'ecdsa') {\n\t\tif (CRYPTO_HAVE_ECDH) {\n\t\t\tthis._dh.generateKeys();\n\n\t\t\tparts.push({name: 'curve',\n\t\t\t data: Buffer.from(this._curve)});\n\t\t\tparts.push({name: 'Q', data: this._dh.getPublicKey()});\n\t\t\tparts.push({name: 'd', data: this._dh.getPrivateKey()});\n\t\t\tthis._key = new PrivateKey({\n\t\t\t\ttype: 'ecdsa',\n\t\t\t\tcurve: this._curve,\n\t\t\t\tparts: parts\n\t\t\t});\n\t\t\tthis._isPriv = true;\n\t\t\treturn (this._key);\n\n\t\t} else {\n\t\t\tvar n = this._ecParams.getN();\n\t\t\tvar r = new jsbn(crypto.randomBytes(n.bitLength()));\n\t\t\tvar n1 = n.subtract(jsbn.ONE);\n\t\t\tpriv = r.mod(n1).add(jsbn.ONE);\n\t\t\tpub = this._ecParams.getG().multiply(priv);\n\n\t\t\tpriv = Buffer.from(priv.toByteArray());\n\t\t\tpub = Buffer.from(this._ecParams.getCurve().\n\t\t\t encodePointHex(pub), 'hex');\n\n\t\t\tthis._priv = new ECPrivate(this._ecParams, priv);\n\n\t\t\tparts.push({name: 'curve',\n\t\t\t data: Buffer.from(this._curve)});\n\t\t\tparts.push({name: 'Q', data: pub});\n\t\t\tparts.push({name: 'd', data: priv});\n\n\t\t\tthis._key = new PrivateKey({\n\t\t\t\ttype: 'ecdsa',\n\t\t\t\tcurve: this._curve,\n\t\t\t\tparts: parts\n\t\t\t});\n\t\t\tthis._isPriv = true;\n\t\t\treturn (this._key);\n\t\t}\n\n\t} else if (this._algo === 'curve25519') {\n\t\tvar pair = nacl.box.keyPair();\n\t\tpriv = Buffer.from(pair.secretKey);\n\t\tpub = Buffer.from(pair.publicKey);\n\t\tpriv = Buffer.concat([priv, pub]);\n\t\tassert.strictEqual(priv.length, 64);\n\t\tassert.strictEqual(pub.length, 32);\n\n\t\tparts.push({name: 'A', data: pub});\n\t\tparts.push({name: 'k', data: priv});\n\t\tthis._key = new PrivateKey({\n\t\t\ttype: 'curve25519',\n\t\t\tparts: parts\n\t\t});\n\t\tthis._isPriv = true;\n\t\treturn (this._key);\n\t}\n\n\tthrow (new Error('Invalid algorithm: ' + this._algo));\n};\nDiffieHellman.prototype.generateKeys = DiffieHellman.prototype.generateKey;\n\n/* These are helpers for using ecc-jsbn (for node 0.10 compatibility). */\n\nfunction X9ECParameters(name) {\n\tvar params = algs.curves[name];\n\tassert.object(params);\n\n\tvar p = new jsbn(params.p);\n\tvar a = new jsbn(params.a);\n\tvar b = new jsbn(params.b);\n\tvar n = new jsbn(params.n);\n\tvar h = jsbn.ONE;\n\tvar curve = new ec.ECCurveFp(p, a, b);\n\tvar G = curve.decodePointHex(params.G.toString('hex'));\n\n\tthis.curve = curve;\n\tthis.g = G;\n\tthis.n = n;\n\tthis.h = h;\n}\nX9ECParameters.prototype.getCurve = function () { return (this.curve); };\nX9ECParameters.prototype.getG = function () { return (this.g); };\nX9ECParameters.prototype.getN = function () { return (this.n); };\nX9ECParameters.prototype.getH = function () { return (this.h); };\n\nfunction ECPublic(params, buffer) {\n\tthis._params = params;\n\tif (buffer[0] === 0x00)\n\t\tbuffer = buffer.slice(1);\n\tthis._pub = params.getCurve().decodePointHex(buffer.toString('hex'));\n}\n\nfunction ECPrivate(params, buffer) {\n\tthis._params = params;\n\tthis._priv = new jsbn(utils.mpNormalize(buffer));\n}\nECPrivate.prototype.deriveSharedSecret = function (pubKey) {\n\tassert.ok(pubKey instanceof ECPublic);\n\tvar S = pubKey._pub.multiply(this._priv);\n\treturn (Buffer.from(S.getX().toBigInteger().toByteArray()));\n};\n\nfunction generateED25519() {\n\tvar pair = nacl.sign.keyPair();\n\tvar priv = Buffer.from(pair.secretKey);\n\tvar pub = Buffer.from(pair.publicKey);\n\tassert.strictEqual(priv.length, 64);\n\tassert.strictEqual(pub.length, 32);\n\n\tvar parts = [];\n\tparts.push({name: 'A', data: pub});\n\tparts.push({name: 'k', data: priv.slice(0, 32)});\n\tvar key = new PrivateKey({\n\t\ttype: 'ed25519',\n\t\tparts: parts\n\t});\n\treturn (key);\n}\n\n/* Generates a new ECDSA private key on a given curve. */\nfunction generateECDSA(curve) {\n\tvar parts = [];\n\tvar key;\n\n\tif (CRYPTO_HAVE_ECDH) {\n\t\t/*\n\t\t * Node crypto doesn't expose key generation directly, but the\n\t\t * ECDH instances can generate keys. It turns out this just\n\t\t * calls into the OpenSSL generic key generator, and we can\n\t\t * read its output happily without doing an actual DH. So we\n\t\t * use that here.\n\t\t */\n\t\tvar osCurve = {\n\t\t\t'nistp256': 'prime256v1',\n\t\t\t'nistp384': 'secp384r1',\n\t\t\t'nistp521': 'secp521r1'\n\t\t}[curve];\n\n\t\tvar dh = crypto.createECDH(osCurve);\n\t\tdh.generateKeys();\n\n\t\tparts.push({name: 'curve',\n\t\t data: Buffer.from(curve)});\n\t\tparts.push({name: 'Q', data: dh.getPublicKey()});\n\t\tparts.push({name: 'd', data: dh.getPrivateKey()});\n\n\t\tkey = new PrivateKey({\n\t\t\ttype: 'ecdsa',\n\t\t\tcurve: curve,\n\t\t\tparts: parts\n\t\t});\n\t\treturn (key);\n\t} else {\n\n\t\tvar ecParams = new X9ECParameters(curve);\n\n\t\t/* This algorithm taken from FIPS PUB 186-4 (section B.4.1) */\n\t\tvar n = ecParams.getN();\n\t\t/*\n\t\t * The crypto.randomBytes() function can only give us whole\n\t\t * bytes, so taking a nod from X9.62, we round up.\n\t\t */\n\t\tvar cByteLen = Math.ceil((n.bitLength() + 64) / 8);\n\t\tvar c = new jsbn(crypto.randomBytes(cByteLen));\n\n\t\tvar n1 = n.subtract(jsbn.ONE);\n\t\tvar priv = c.mod(n1).add(jsbn.ONE);\n\t\tvar pub = ecParams.getG().multiply(priv);\n\n\t\tpriv = Buffer.from(priv.toByteArray());\n\t\tpub = Buffer.from(ecParams.getCurve().\n\t\t encodePointHex(pub), 'hex');\n\n\t\tparts.push({name: 'curve', data: Buffer.from(curve)});\n\t\tparts.push({name: 'Q', data: pub});\n\t\tparts.push({name: 'd', data: priv});\n\n\t\tkey = new PrivateKey({\n\t\t\ttype: 'ecdsa',\n\t\t\tcurve: curve,\n\t\t\tparts: parts\n\t\t});\n\t\treturn (key);\n\t}\n}\n","// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tVerifier: Verifier,\n\tSigner: Signer\n};\n\nvar nacl = require('tweetnacl');\nvar stream = require('stream');\nvar util = require('util');\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar Signature = require('./signature');\n\nfunction Verifier(key, hashAlgo) {\n\tif (hashAlgo.toLowerCase() !== 'sha512')\n\t\tthrow (new Error('ED25519 only supports the use of ' +\n\t\t 'SHA-512 hashes'));\n\n\tthis.key = key;\n\tthis.chunks = [];\n\n\tstream.Writable.call(this, {});\n}\nutil.inherits(Verifier, stream.Writable);\n\nVerifier.prototype._write = function (chunk, enc, cb) {\n\tthis.chunks.push(chunk);\n\tcb();\n};\n\nVerifier.prototype.update = function (chunk) {\n\tif (typeof (chunk) === 'string')\n\t\tchunk = Buffer.from(chunk, 'binary');\n\tthis.chunks.push(chunk);\n};\n\nVerifier.prototype.verify = function (signature, fmt) {\n\tvar sig;\n\tif (Signature.isSignature(signature, [2, 0])) {\n\t\tif (signature.type !== 'ed25519')\n\t\t\treturn (false);\n\t\tsig = signature.toBuffer('raw');\n\n\t} else if (typeof (signature) === 'string') {\n\t\tsig = Buffer.from(signature, 'base64');\n\n\t} else if (Signature.isSignature(signature, [1, 0])) {\n\t\tthrow (new Error('signature was created by too old ' +\n\t\t 'a version of sshpk and cannot be verified'));\n\t}\n\n\tassert.buffer(sig);\n\treturn (nacl.sign.detached.verify(\n\t new Uint8Array(Buffer.concat(this.chunks)),\n\t new Uint8Array(sig),\n\t new Uint8Array(this.key.part.A.data)));\n};\n\nfunction Signer(key, hashAlgo) {\n\tif (hashAlgo.toLowerCase() !== 'sha512')\n\t\tthrow (new Error('ED25519 only supports the use of ' +\n\t\t 'SHA-512 hashes'));\n\n\tthis.key = key;\n\tthis.chunks = [];\n\n\tstream.Writable.call(this, {});\n}\nutil.inherits(Signer, stream.Writable);\n\nSigner.prototype._write = function (chunk, enc, cb) {\n\tthis.chunks.push(chunk);\n\tcb();\n};\n\nSigner.prototype.update = function (chunk) {\n\tif (typeof (chunk) === 'string')\n\t\tchunk = Buffer.from(chunk, 'binary');\n\tthis.chunks.push(chunk);\n};\n\nSigner.prototype.sign = function () {\n\tvar sig = nacl.sign.detached(\n\t new Uint8Array(Buffer.concat(this.chunks)),\n\t new Uint8Array(Buffer.concat([\n\t\tthis.key.part.k.data, this.key.part.A.data])));\n\tvar sigBuf = Buffer.from(sig);\n\tvar sigObj = Signature.parse(sigBuf, 'ed25519', 'raw');\n\tsigObj.hashAlgorithm = 'sha512';\n\treturn (sigObj);\n};\n","// Copyright 2015 Joyent, Inc.\n\nvar assert = require('assert-plus');\nvar util = require('util');\n\nfunction FingerprintFormatError(fp, format) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, FingerprintFormatError);\n\tthis.name = 'FingerprintFormatError';\n\tthis.fingerprint = fp;\n\tthis.format = format;\n\tthis.message = 'Fingerprint format is not supported, or is invalid: ';\n\tif (fp !== undefined)\n\t\tthis.message += ' fingerprint = ' + fp;\n\tif (format !== undefined)\n\t\tthis.message += ' format = ' + format;\n}\nutil.inherits(FingerprintFormatError, Error);\n\nfunction InvalidAlgorithmError(alg) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, InvalidAlgorithmError);\n\tthis.name = 'InvalidAlgorithmError';\n\tthis.algorithm = alg;\n\tthis.message = 'Algorithm \"' + alg + '\" is not supported';\n}\nutil.inherits(InvalidAlgorithmError, Error);\n\nfunction KeyParseError(name, format, innerErr) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, KeyParseError);\n\tthis.name = 'KeyParseError';\n\tthis.format = format;\n\tthis.keyName = name;\n\tthis.innerErr = innerErr;\n\tthis.message = 'Failed to parse ' + name + ' as a valid ' + format +\n\t ' format key: ' + innerErr.message;\n}\nutil.inherits(KeyParseError, Error);\n\nfunction SignatureParseError(type, format, innerErr) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, SignatureParseError);\n\tthis.name = 'SignatureParseError';\n\tthis.type = type;\n\tthis.format = format;\n\tthis.innerErr = innerErr;\n\tthis.message = 'Failed to parse the given data as a ' + type +\n\t ' signature in ' + format + ' format: ' + innerErr.message;\n}\nutil.inherits(SignatureParseError, Error);\n\nfunction CertificateParseError(name, format, innerErr) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, CertificateParseError);\n\tthis.name = 'CertificateParseError';\n\tthis.format = format;\n\tthis.certName = name;\n\tthis.innerErr = innerErr;\n\tthis.message = 'Failed to parse ' + name + ' as a valid ' + format +\n\t ' format certificate: ' + innerErr.message;\n}\nutil.inherits(CertificateParseError, Error);\n\nfunction KeyEncryptedError(name, format) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, KeyEncryptedError);\n\tthis.name = 'KeyEncryptedError';\n\tthis.format = format;\n\tthis.keyName = name;\n\tthis.message = 'The ' + format + ' format key ' + name + ' is ' +\n\t 'encrypted (password-protected), and no passphrase was ' +\n\t 'provided in `options`';\n}\nutil.inherits(KeyEncryptedError, Error);\n\nmodule.exports = {\n\tFingerprintFormatError: FingerprintFormatError,\n\tInvalidAlgorithmError: InvalidAlgorithmError,\n\tKeyParseError: KeyParseError,\n\tSignatureParseError: SignatureParseError,\n\tKeyEncryptedError: KeyEncryptedError,\n\tCertificateParseError: CertificateParseError\n};\n","// Copyright 2018 Joyent, Inc.\n\nmodule.exports = Fingerprint;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar errs = require('./errors');\nvar Key = require('./key');\nvar PrivateKey = require('./private-key');\nvar Certificate = require('./certificate');\nvar utils = require('./utils');\n\nvar FingerprintFormatError = errs.FingerprintFormatError;\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\n\nfunction Fingerprint(opts) {\n\tassert.object(opts, 'options');\n\tassert.string(opts.type, 'options.type');\n\tassert.buffer(opts.hash, 'options.hash');\n\tassert.string(opts.algorithm, 'options.algorithm');\n\n\tthis.algorithm = opts.algorithm.toLowerCase();\n\tif (algs.hashAlgs[this.algorithm] !== true)\n\t\tthrow (new InvalidAlgorithmError(this.algorithm));\n\n\tthis.hash = opts.hash;\n\tthis.type = opts.type;\n\tthis.hashType = opts.hashType;\n}\n\nFingerprint.prototype.toString = function (format) {\n\tif (format === undefined) {\n\t\tif (this.algorithm === 'md5' || this.hashType === 'spki')\n\t\t\tformat = 'hex';\n\t\telse\n\t\t\tformat = 'base64';\n\t}\n\tassert.string(format);\n\n\tswitch (format) {\n\tcase 'hex':\n\t\tif (this.hashType === 'spki')\n\t\t\treturn (this.hash.toString('hex'));\n\t\treturn (addColons(this.hash.toString('hex')));\n\tcase 'base64':\n\t\tif (this.hashType === 'spki')\n\t\t\treturn (this.hash.toString('base64'));\n\t\treturn (sshBase64Format(this.algorithm,\n\t\t this.hash.toString('base64')));\n\tdefault:\n\t\tthrow (new FingerprintFormatError(undefined, format));\n\t}\n};\n\nFingerprint.prototype.matches = function (other) {\n\tassert.object(other, 'key or certificate');\n\tif (this.type === 'key' && this.hashType !== 'ssh') {\n\t\tutils.assertCompatible(other, Key, [1, 7], 'key with spki');\n\t\tif (PrivateKey.isPrivateKey(other)) {\n\t\t\tutils.assertCompatible(other, PrivateKey, [1, 6],\n\t\t\t 'privatekey with spki support');\n\t\t}\n\t} else if (this.type === 'key') {\n\t\tutils.assertCompatible(other, Key, [1, 0], 'key');\n\t} else {\n\t\tutils.assertCompatible(other, Certificate, [1, 0],\n\t\t 'certificate');\n\t}\n\n\tvar theirHash = other.hash(this.algorithm, this.hashType);\n\tvar theirHash2 = crypto.createHash(this.algorithm).\n\t update(theirHash).digest('base64');\n\n\tif (this.hash2 === undefined)\n\t\tthis.hash2 = crypto.createHash(this.algorithm).\n\t\t update(this.hash).digest('base64');\n\n\treturn (this.hash2 === theirHash2);\n};\n\n/*JSSTYLED*/\nvar base64RE = /^[A-Za-z0-9+\\/=]+$/;\n/*JSSTYLED*/\nvar hexRE = /^[a-fA-F0-9]+$/;\n\nFingerprint.parse = function (fp, options) {\n\tassert.string(fp, 'fingerprint');\n\n\tvar alg, hash, enAlgs;\n\tif (Array.isArray(options)) {\n\t\tenAlgs = options;\n\t\toptions = {};\n\t}\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tif (options.enAlgs !== undefined)\n\t\tenAlgs = options.enAlgs;\n\tif (options.algorithms !== undefined)\n\t\tenAlgs = options.algorithms;\n\tassert.optionalArrayOfString(enAlgs, 'algorithms');\n\n\tvar hashType = 'ssh';\n\tif (options.hashType !== undefined)\n\t\thashType = options.hashType;\n\tassert.string(hashType, 'options.hashType');\n\n\tvar parts = fp.split(':');\n\tif (parts.length == 2) {\n\t\talg = parts[0].toLowerCase();\n\t\tif (!base64RE.test(parts[1]))\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\ttry {\n\t\t\thash = Buffer.from(parts[1], 'base64');\n\t\t} catch (e) {\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t}\n\t} else if (parts.length > 2) {\n\t\talg = 'md5';\n\t\tif (parts[0].toLowerCase() === 'md5')\n\t\t\tparts = parts.slice(1);\n\t\tparts = parts.map(function (p) {\n\t\t\twhile (p.length < 2)\n\t\t\t\tp = '0' + p;\n\t\t\tif (p.length > 2)\n\t\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t\treturn (p);\n\t\t});\n\t\tparts = parts.join('');\n\t\tif (!hexRE.test(parts) || parts.length % 2 !== 0)\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\ttry {\n\t\t\thash = Buffer.from(parts, 'hex');\n\t\t} catch (e) {\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t}\n\t} else {\n\t\tif (hexRE.test(fp)) {\n\t\t\thash = Buffer.from(fp, 'hex');\n\t\t} else if (base64RE.test(fp)) {\n\t\t\thash = Buffer.from(fp, 'base64');\n\t\t} else {\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t}\n\n\t\tswitch (hash.length) {\n\t\tcase 32:\n\t\t\talg = 'sha256';\n\t\t\tbreak;\n\t\tcase 16:\n\t\t\talg = 'md5';\n\t\t\tbreak;\n\t\tcase 20:\n\t\t\talg = 'sha1';\n\t\t\tbreak;\n\t\tcase 64:\n\t\t\talg = 'sha512';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t}\n\n\t\t/* Plain hex/base64: guess it's probably SPKI unless told. */\n\t\tif (options.hashType === undefined)\n\t\t\thashType = 'spki';\n\t}\n\n\tif (alg === undefined)\n\t\tthrow (new FingerprintFormatError(fp));\n\n\tif (algs.hashAlgs[alg] === undefined)\n\t\tthrow (new InvalidAlgorithmError(alg));\n\n\tif (enAlgs !== undefined) {\n\t\tenAlgs = enAlgs.map(function (a) { return a.toLowerCase(); });\n\t\tif (enAlgs.indexOf(alg) === -1)\n\t\t\tthrow (new InvalidAlgorithmError(alg));\n\t}\n\n\treturn (new Fingerprint({\n\t\talgorithm: alg,\n\t\thash: hash,\n\t\ttype: options.type || 'key',\n\t\thashType: hashType\n\t}));\n};\n\nfunction addColons(s) {\n\t/*JSSTYLED*/\n\treturn (s.replace(/(.{2})(?=.)/g, '$1:'));\n}\n\nfunction base64Strip(s) {\n\t/*JSSTYLED*/\n\treturn (s.replace(/=*$/, ''));\n}\n\nfunction sshBase64Format(alg, h) {\n\treturn (alg.toUpperCase() + ':' + base64Strip(h));\n}\n\nFingerprint.isFingerprint = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Fingerprint, ver));\n};\n\n/*\n * API versions for Fingerprint:\n * [1,0] -- initial ver\n * [1,1] -- first tagged ver\n * [1,2] -- hashType and spki support\n */\nFingerprint.prototype._sshpkApiVersion = [1, 2];\n\nFingerprint._oldVersionDetect = function (obj) {\n\tassert.func(obj.toString);\n\tassert.func(obj.matches);\n\treturn ([1, 0]);\n};\n","// Copyright 2018 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\n\nvar pem = require('./pem');\nvar ssh = require('./ssh');\nvar rfc4253 = require('./rfc4253');\nvar dnssec = require('./dnssec');\nvar putty = require('./putty');\n\nvar DNSSEC_PRIVKEY_HEADER_PREFIX = 'Private-key-format: v1';\n\nfunction read(buf, options) {\n\tif (typeof (buf) === 'string') {\n\t\tif (buf.trim().match(/^[-]+[ ]*BEGIN/))\n\t\t\treturn (pem.read(buf, options));\n\t\tif (buf.match(/^\\s*ssh-[a-z]/))\n\t\t\treturn (ssh.read(buf, options));\n\t\tif (buf.match(/^\\s*ecdsa-/))\n\t\t\treturn (ssh.read(buf, options));\n\t\tif (buf.match(/^putty-user-key-file-2:/i))\n\t\t\treturn (putty.read(buf, options));\n\t\tif (findDNSSECHeader(buf))\n\t\t\treturn (dnssec.read(buf, options));\n\t\tbuf = Buffer.from(buf, 'binary');\n\t} else {\n\t\tassert.buffer(buf);\n\t\tif (findPEMHeader(buf))\n\t\t\treturn (pem.read(buf, options));\n\t\tif (findSSHHeader(buf))\n\t\t\treturn (ssh.read(buf, options));\n\t\tif (findPuTTYHeader(buf))\n\t\t\treturn (putty.read(buf, options));\n\t\tif (findDNSSECHeader(buf))\n\t\t\treturn (dnssec.read(buf, options));\n\t}\n\tif (buf.readUInt32BE(0) < buf.length)\n\t\treturn (rfc4253.read(buf, options));\n\tthrow (new Error('Failed to auto-detect format of key'));\n}\n\nfunction findPuTTYHeader(buf) {\n\tvar offset = 0;\n\twhile (offset < buf.length &&\n\t (buf[offset] === 32 || buf[offset] === 10 || buf[offset] === 9))\n\t\t++offset;\n\tif (offset + 22 <= buf.length &&\n\t buf.slice(offset, offset + 22).toString('ascii').toLowerCase() ===\n\t 'putty-user-key-file-2:')\n\t\treturn (true);\n\treturn (false);\n}\n\nfunction findSSHHeader(buf) {\n\tvar offset = 0;\n\twhile (offset < buf.length &&\n\t (buf[offset] === 32 || buf[offset] === 10 || buf[offset] === 9))\n\t\t++offset;\n\tif (offset + 4 <= buf.length &&\n\t buf.slice(offset, offset + 4).toString('ascii') === 'ssh-')\n\t\treturn (true);\n\tif (offset + 6 <= buf.length &&\n\t buf.slice(offset, offset + 6).toString('ascii') === 'ecdsa-')\n\t\treturn (true);\n\treturn (false);\n}\n\nfunction findPEMHeader(buf) {\n\tvar offset = 0;\n\twhile (offset < buf.length &&\n\t (buf[offset] === 32 || buf[offset] === 10))\n\t\t++offset;\n\tif (buf[offset] !== 45)\n\t\treturn (false);\n\twhile (offset < buf.length &&\n\t (buf[offset] === 45))\n\t\t++offset;\n\twhile (offset < buf.length &&\n\t (buf[offset] === 32))\n\t\t++offset;\n\tif (offset + 5 > buf.length ||\n\t buf.slice(offset, offset + 5).toString('ascii') !== 'BEGIN')\n\t\treturn (false);\n\treturn (true);\n}\n\nfunction findDNSSECHeader(buf) {\n\t// private case first\n\tif (buf.length <= DNSSEC_PRIVKEY_HEADER_PREFIX.length)\n\t\treturn (false);\n\tvar headerCheck = buf.slice(0, DNSSEC_PRIVKEY_HEADER_PREFIX.length);\n\tif (headerCheck.toString('ascii') === DNSSEC_PRIVKEY_HEADER_PREFIX)\n\t\treturn (true);\n\n\t// public-key RFC3110 ?\n\t// 'domain.com. IN KEY ...' or 'domain.com. IN DNSKEY ...'\n\t// skip any comment-lines\n\tif (typeof (buf) !== 'string') {\n\t\tbuf = buf.toString('ascii');\n\t}\n\tvar lines = buf.split('\\n');\n\tvar line = 0;\n\t/* JSSTYLED */\n\twhile (lines[line].match(/^\\;/))\n\t\tline++;\n\tif (lines[line].toString('ascii').match(/\\. IN KEY /))\n\t\treturn (true);\n\tif (lines[line].toString('ascii').match(/\\. IN DNSKEY /))\n\t\treturn (true);\n\treturn (false);\n}\n\nfunction write(key, options) {\n\tthrow (new Error('\"auto\" format cannot be used for writing'));\n}\n","// Copyright 2017 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar utils = require('../utils');\nvar SSHBuffer = require('../ssh-buffer');\nvar Dhe = require('../dhe');\n\nvar supportedAlgos = {\n\t'rsa-sha1' : 5,\n\t'rsa-sha256' : 8,\n\t'rsa-sha512' : 10,\n\t'ecdsa-p256-sha256' : 13,\n\t'ecdsa-p384-sha384' : 14\n\t/*\n\t * ed25519 is hypothetically supported with id 15\n\t * but the common tools available don't appear to be\n\t * capable of generating/using ed25519 keys\n\t */\n};\n\nvar supportedAlgosById = {};\nObject.keys(supportedAlgos).forEach(function (k) {\n\tsupportedAlgosById[supportedAlgos[k]] = k.toUpperCase();\n});\n\nfunction read(buf, options) {\n\tif (typeof (buf) !== 'string') {\n\t\tassert.buffer(buf, 'buf');\n\t\tbuf = buf.toString('ascii');\n\t}\n\tvar lines = buf.split('\\n');\n\tif (lines[0].match(/^Private-key-format\\: v1/)) {\n\t\tvar algElems = lines[1].split(' ');\n\t\tvar algoNum = parseInt(algElems[1], 10);\n\t\tvar algoName = algElems[2];\n\t\tif (!supportedAlgosById[algoNum])\n\t\t\tthrow (new Error('Unsupported algorithm: ' + algoName));\n\t\treturn (readDNSSECPrivateKey(algoNum, lines.slice(2)));\n\t}\n\n\t// skip any comment-lines\n\tvar line = 0;\n\t/* JSSTYLED */\n\twhile (lines[line].match(/^\\;/))\n\t\tline++;\n\t// we should now have *one single* line left with our KEY on it.\n\tif ((lines[line].match(/\\. IN KEY /) ||\n\t lines[line].match(/\\. IN DNSKEY /)) && lines[line+1].length === 0) {\n\t\treturn (readRFC3110(lines[line]));\n\t}\n\tthrow (new Error('Cannot parse dnssec key'));\n}\n\nfunction readRFC3110(keyString) {\n\tvar elems = keyString.split(' ');\n\t//unused var flags = parseInt(elems[3], 10);\n\t//unused var protocol = parseInt(elems[4], 10);\n\tvar algorithm = parseInt(elems[5], 10);\n\tif (!supportedAlgosById[algorithm])\n\t\tthrow (new Error('Unsupported algorithm: ' + algorithm));\n\tvar base64key = elems.slice(6, elems.length).join();\n\tvar keyBuffer = Buffer.from(base64key, 'base64');\n\tif (supportedAlgosById[algorithm].match(/^RSA-/)) {\n\t\t// join the rest of the body into a single base64-blob\n\t\tvar publicExponentLen = keyBuffer.readUInt8(0);\n\t\tif (publicExponentLen != 3 && publicExponentLen != 1)\n\t\t\tthrow (new Error('Cannot parse dnssec key: ' +\n\t\t\t 'unsupported exponent length'));\n\n\t\tvar publicExponent = keyBuffer.slice(1, publicExponentLen+1);\n\t\tpublicExponent = utils.mpNormalize(publicExponent);\n\t\tvar modulus = keyBuffer.slice(1+publicExponentLen);\n\t\tmodulus = utils.mpNormalize(modulus);\n\t\t// now, make the key\n\t\tvar rsaKey = {\n\t\t\ttype: 'rsa',\n\t\t\tparts: []\n\t\t};\n\t\trsaKey.parts.push({ name: 'e', data: publicExponent});\n\t\trsaKey.parts.push({ name: 'n', data: modulus});\n\t\treturn (new Key(rsaKey));\n\t}\n\tif (supportedAlgosById[algorithm] === 'ECDSA-P384-SHA384' ||\n\t supportedAlgosById[algorithm] === 'ECDSA-P256-SHA256') {\n\t\tvar curve = 'nistp384';\n\t\tvar size = 384;\n\t\tif (supportedAlgosById[algorithm].match(/^ECDSA-P256-SHA256/)) {\n\t\t\tcurve = 'nistp256';\n\t\t\tsize = 256;\n\t\t}\n\n\t\tvar ecdsaKey = {\n\t\t\ttype: 'ecdsa',\n\t\t\tcurve: curve,\n\t\t\tsize: size,\n\t\t\tparts: [\n\t\t\t\t{name: 'curve', data: Buffer.from(curve) },\n\t\t\t\t{name: 'Q', data: utils.ecNormalize(keyBuffer) }\n\t\t\t]\n\t\t};\n\t\treturn (new Key(ecdsaKey));\n\t}\n\tthrow (new Error('Unsupported algorithm: ' +\n\t supportedAlgosById[algorithm]));\n}\n\nfunction elementToBuf(e) {\n\treturn (Buffer.from(e.split(' ')[1], 'base64'));\n}\n\nfunction readDNSSECRSAPrivateKey(elements) {\n\tvar rsaParams = {};\n\telements.forEach(function (element) {\n\t\tif (element.split(' ')[0] === 'Modulus:')\n\t\t\trsaParams['n'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'PublicExponent:')\n\t\t\trsaParams['e'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'PrivateExponent:')\n\t\t\trsaParams['d'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Prime1:')\n\t\t\trsaParams['p'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Prime2:')\n\t\t\trsaParams['q'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Exponent1:')\n\t\t\trsaParams['dmodp'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Exponent2:')\n\t\t\trsaParams['dmodq'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Coefficient:')\n\t\t\trsaParams['iqmp'] = elementToBuf(element);\n\t});\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tparts: [\n\t\t\t{ name: 'e', data: utils.mpNormalize(rsaParams['e'])},\n\t\t\t{ name: 'n', data: utils.mpNormalize(rsaParams['n'])},\n\t\t\t{ name: 'd', data: utils.mpNormalize(rsaParams['d'])},\n\t\t\t{ name: 'p', data: utils.mpNormalize(rsaParams['p'])},\n\t\t\t{ name: 'q', data: utils.mpNormalize(rsaParams['q'])},\n\t\t\t{ name: 'dmodp',\n\t\t\t data: utils.mpNormalize(rsaParams['dmodp'])},\n\t\t\t{ name: 'dmodq',\n\t\t\t data: utils.mpNormalize(rsaParams['dmodq'])},\n\t\t\t{ name: 'iqmp',\n\t\t\t data: utils.mpNormalize(rsaParams['iqmp'])}\n\t\t]\n\t};\n\treturn (new PrivateKey(key));\n}\n\nfunction readDNSSECPrivateKey(alg, elements) {\n\tif (supportedAlgosById[alg].match(/^RSA-/)) {\n\t\treturn (readDNSSECRSAPrivateKey(elements));\n\t}\n\tif (supportedAlgosById[alg] === 'ECDSA-P384-SHA384' ||\n\t supportedAlgosById[alg] === 'ECDSA-P256-SHA256') {\n\t\tvar d = Buffer.from(elements[0].split(' ')[1], 'base64');\n\t\tvar curve = 'nistp384';\n\t\tvar size = 384;\n\t\tif (supportedAlgosById[alg] === 'ECDSA-P256-SHA256') {\n\t\t\tcurve = 'nistp256';\n\t\t\tsize = 256;\n\t\t}\n\t\t// DNSSEC generates the public-key on the fly (go calculate it)\n\t\tvar publicKey = utils.publicFromPrivateECDSA(curve, d);\n\t\tvar Q = publicKey.part['Q'].data;\n\t\tvar ecdsaKey = {\n\t\t\ttype: 'ecdsa',\n\t\t\tcurve: curve,\n\t\t\tsize: size,\n\t\t\tparts: [\n\t\t\t\t{name: 'curve', data: Buffer.from(curve) },\n\t\t\t\t{name: 'd', data: d },\n\t\t\t\t{name: 'Q', data: Q }\n\t\t\t]\n\t\t};\n\t\treturn (new PrivateKey(ecdsaKey));\n\t}\n\tthrow (new Error('Unsupported algorithm: ' + supportedAlgosById[alg]));\n}\n\nfunction dnssecTimestamp(date) {\n\tvar year = date.getFullYear() + ''; //stringify\n\tvar month = (date.getMonth() + 1);\n\tvar timestampStr = year + month + date.getUTCDate();\n\ttimestampStr += '' + date.getUTCHours() + date.getUTCMinutes();\n\ttimestampStr += date.getUTCSeconds();\n\treturn (timestampStr);\n}\n\nfunction rsaAlgFromOptions(opts) {\n\tif (!opts || !opts.hashAlgo || opts.hashAlgo === 'sha1')\n\t\treturn ('5 (RSASHA1)');\n\telse if (opts.hashAlgo === 'sha256')\n\t\treturn ('8 (RSASHA256)');\n\telse if (opts.hashAlgo === 'sha512')\n\t\treturn ('10 (RSASHA512)');\n\telse\n\t\tthrow (new Error('Unknown or unsupported hash: ' +\n\t\t opts.hashAlgo));\n}\n\nfunction writeRSA(key, options) {\n\t// if we're missing parts, add them.\n\tif (!key.part.dmodp || !key.part.dmodq) {\n\t\tutils.addRSAMissing(key);\n\t}\n\n\tvar out = '';\n\tout += 'Private-key-format: v1.3\\n';\n\tout += 'Algorithm: ' + rsaAlgFromOptions(options) + '\\n';\n\tvar n = utils.mpDenormalize(key.part['n'].data);\n\tout += 'Modulus: ' + n.toString('base64') + '\\n';\n\tvar e = utils.mpDenormalize(key.part['e'].data);\n\tout += 'PublicExponent: ' + e.toString('base64') + '\\n';\n\tvar d = utils.mpDenormalize(key.part['d'].data);\n\tout += 'PrivateExponent: ' + d.toString('base64') + '\\n';\n\tvar p = utils.mpDenormalize(key.part['p'].data);\n\tout += 'Prime1: ' + p.toString('base64') + '\\n';\n\tvar q = utils.mpDenormalize(key.part['q'].data);\n\tout += 'Prime2: ' + q.toString('base64') + '\\n';\n\tvar dmodp = utils.mpDenormalize(key.part['dmodp'].data);\n\tout += 'Exponent1: ' + dmodp.toString('base64') + '\\n';\n\tvar dmodq = utils.mpDenormalize(key.part['dmodq'].data);\n\tout += 'Exponent2: ' + dmodq.toString('base64') + '\\n';\n\tvar iqmp = utils.mpDenormalize(key.part['iqmp'].data);\n\tout += 'Coefficient: ' + iqmp.toString('base64') + '\\n';\n\t// Assume that we're valid as-of now\n\tvar timestamp = new Date();\n\tout += 'Created: ' + dnssecTimestamp(timestamp) + '\\n';\n\tout += 'Publish: ' + dnssecTimestamp(timestamp) + '\\n';\n\tout += 'Activate: ' + dnssecTimestamp(timestamp) + '\\n';\n\treturn (Buffer.from(out, 'ascii'));\n}\n\nfunction writeECDSA(key, options) {\n\tvar out = '';\n\tout += 'Private-key-format: v1.3\\n';\n\n\tif (key.curve === 'nistp256') {\n\t\tout += 'Algorithm: 13 (ECDSAP256SHA256)\\n';\n\t} else if (key.curve === 'nistp384') {\n\t\tout += 'Algorithm: 14 (ECDSAP384SHA384)\\n';\n\t} else {\n\t\tthrow (new Error('Unsupported curve'));\n\t}\n\tvar base64Key = key.part['d'].data.toString('base64');\n\tout += 'PrivateKey: ' + base64Key + '\\n';\n\n\t// Assume that we're valid as-of now\n\tvar timestamp = new Date();\n\tout += 'Created: ' + dnssecTimestamp(timestamp) + '\\n';\n\tout += 'Publish: ' + dnssecTimestamp(timestamp) + '\\n';\n\tout += 'Activate: ' + dnssecTimestamp(timestamp) + '\\n';\n\n\treturn (Buffer.from(out, 'ascii'));\n}\n\nfunction write(key, options) {\n\tif (PrivateKey.isPrivateKey(key)) {\n\t\tif (key.type === 'rsa') {\n\t\t\treturn (writeRSA(key, options));\n\t\t} else if (key.type === 'ecdsa') {\n\t\t\treturn (writeECDSA(key, options));\n\t\t} else {\n\t\t\tthrow (new Error('Unsupported algorithm: ' + key.type));\n\t\t}\n\t} else if (Key.isKey(key)) {\n\t\t/*\n\t\t * RFC3110 requires a keyname, and a keytype, which we\n\t\t * don't really have a mechanism for specifying such\n\t\t * additional metadata.\n\t\t */\n\t\tthrow (new Error('Format \"dnssec\" only supports ' +\n\t\t 'writing private keys'));\n\t} else {\n\t\tthrow (new Error('key is not a Key or PrivateKey'));\n\t}\n}\n","// Copyright 2017 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\tverify: verify,\n\tsign: sign,\n\tsignAsync: signAsync,\n\twrite: write,\n\n\t/* Internal private API */\n\tfromBuffer: fromBuffer,\n\ttoBuffer: toBuffer\n};\n\nvar assert = require('assert-plus');\nvar SSHBuffer = require('../ssh-buffer');\nvar crypto = require('crypto');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar Identity = require('../identity');\nvar rfc4253 = require('./rfc4253');\nvar Signature = require('../signature');\nvar utils = require('../utils');\nvar Certificate = require('../certificate');\n\nfunction verify(cert, key) {\n\t/*\n\t * We always give an issuerKey, so if our verify() is being called then\n\t * there was no signature. Return false.\n\t */\n\treturn (false);\n}\n\nvar TYPES = {\n\t'user': 1,\n\t'host': 2\n};\nObject.keys(TYPES).forEach(function (k) { TYPES[TYPES[k]] = k; });\n\nvar ECDSA_ALGO = /^ecdsa-sha2-([^@-]+)-cert-v01@openssh.com$/;\n\nfunction read(buf, options) {\n\tif (Buffer.isBuffer(buf))\n\t\tbuf = buf.toString('ascii');\n\tvar parts = buf.trim().split(/[ \\t\\n]+/g);\n\tif (parts.length < 2 || parts.length > 3)\n\t\tthrow (new Error('Not a valid SSH certificate line'));\n\n\tvar algo = parts[0];\n\tvar data = parts[1];\n\n\tdata = Buffer.from(data, 'base64');\n\treturn (fromBuffer(data, algo));\n}\n\nfunction fromBuffer(data, algo, partial) {\n\tvar sshbuf = new SSHBuffer({ buffer: data });\n\tvar innerAlgo = sshbuf.readString();\n\tif (algo !== undefined && innerAlgo !== algo)\n\t\tthrow (new Error('SSH certificate algorithm mismatch'));\n\tif (algo === undefined)\n\t\talgo = innerAlgo;\n\n\tvar cert = {};\n\tcert.signatures = {};\n\tcert.signatures.openssh = {};\n\n\tcert.signatures.openssh.nonce = sshbuf.readBuffer();\n\n\tvar key = {};\n\tvar parts = (key.parts = []);\n\tkey.type = getAlg(algo);\n\n\tvar partCount = algs.info[key.type].parts.length;\n\twhile (parts.length < partCount)\n\t\tparts.push(sshbuf.readPart());\n\tassert.ok(parts.length >= 1, 'key must have at least one part');\n\n\tvar algInfo = algs.info[key.type];\n\tif (key.type === 'ecdsa') {\n\t\tvar res = ECDSA_ALGO.exec(algo);\n\t\tassert.ok(res !== null);\n\t\tassert.strictEqual(res[1], parts[0].data.toString());\n\t}\n\n\tfor (var i = 0; i < algInfo.parts.length; ++i) {\n\t\tparts[i].name = algInfo.parts[i];\n\t\tif (parts[i].name !== 'curve' &&\n\t\t algInfo.normalize !== false) {\n\t\t\tvar p = parts[i];\n\t\t\tp.data = utils.mpNormalize(p.data);\n\t\t}\n\t}\n\n\tcert.subjectKey = new Key(key);\n\n\tcert.serial = sshbuf.readInt64();\n\n\tvar type = TYPES[sshbuf.readInt()];\n\tassert.string(type, 'valid cert type');\n\n\tcert.signatures.openssh.keyId = sshbuf.readString();\n\n\tvar principals = [];\n\tvar pbuf = sshbuf.readBuffer();\n\tvar psshbuf = new SSHBuffer({ buffer: pbuf });\n\twhile (!psshbuf.atEnd())\n\t\tprincipals.push(psshbuf.readString());\n\tif (principals.length === 0)\n\t\tprincipals = ['*'];\n\n\tcert.subjects = principals.map(function (pr) {\n\t\tif (type === 'user')\n\t\t\treturn (Identity.forUser(pr));\n\t\telse if (type === 'host')\n\t\t\treturn (Identity.forHost(pr));\n\t\tthrow (new Error('Unknown identity type ' + type));\n\t});\n\n\tcert.validFrom = int64ToDate(sshbuf.readInt64());\n\tcert.validUntil = int64ToDate(sshbuf.readInt64());\n\n\tvar exts = [];\n\tvar extbuf = new SSHBuffer({ buffer: sshbuf.readBuffer() });\n\tvar ext;\n\twhile (!extbuf.atEnd()) {\n\t\text = { critical: true };\n\t\text.name = extbuf.readString();\n\t\text.data = extbuf.readBuffer();\n\t\texts.push(ext);\n\t}\n\textbuf = new SSHBuffer({ buffer: sshbuf.readBuffer() });\n\twhile (!extbuf.atEnd()) {\n\t\text = { critical: false };\n\t\text.name = extbuf.readString();\n\t\text.data = extbuf.readBuffer();\n\t\texts.push(ext);\n\t}\n\tcert.signatures.openssh.exts = exts;\n\n\t/* reserved */\n\tsshbuf.readBuffer();\n\n\tvar signingKeyBuf = sshbuf.readBuffer();\n\tcert.issuerKey = rfc4253.read(signingKeyBuf);\n\n\t/*\n\t * OpenSSH certs don't give the identity of the issuer, just their\n\t * public key. So, we use an Identity that matches anything. The\n\t * isSignedBy() function will later tell you if the key matches.\n\t */\n\tcert.issuer = Identity.forHost('**');\n\n\tvar sigBuf = sshbuf.readBuffer();\n\tcert.signatures.openssh.signature =\n\t Signature.parse(sigBuf, cert.issuerKey.type, 'ssh');\n\n\tif (partial !== undefined) {\n\t\tpartial.remainder = sshbuf.remainder();\n\t\tpartial.consumed = sshbuf._offset;\n\t}\n\n\treturn (new Certificate(cert));\n}\n\nfunction int64ToDate(buf) {\n\tvar i = buf.readUInt32BE(0) * 4294967296;\n\ti += buf.readUInt32BE(4);\n\tvar d = new Date();\n\td.setTime(i * 1000);\n\td.sourceInt64 = buf;\n\treturn (d);\n}\n\nfunction dateToInt64(date) {\n\tif (date.sourceInt64 !== undefined)\n\t\treturn (date.sourceInt64);\n\tvar i = Math.round(date.getTime() / 1000);\n\tvar upper = Math.floor(i / 4294967296);\n\tvar lower = Math.floor(i % 4294967296);\n\tvar buf = Buffer.alloc(8);\n\tbuf.writeUInt32BE(upper, 0);\n\tbuf.writeUInt32BE(lower, 4);\n\treturn (buf);\n}\n\nfunction sign(cert, key) {\n\tif (cert.signatures.openssh === undefined)\n\t\tcert.signatures.openssh = {};\n\ttry {\n\t\tvar blob = toBuffer(cert, true);\n\t} catch (e) {\n\t\tdelete (cert.signatures.openssh);\n\t\treturn (false);\n\t}\n\tvar sig = cert.signatures.openssh;\n\tvar hashAlgo = undefined;\n\tif (key.type === 'rsa' || key.type === 'dsa')\n\t\thashAlgo = 'sha1';\n\tvar signer = key.createSign(hashAlgo);\n\tsigner.write(blob);\n\tsig.signature = signer.sign();\n\treturn (true);\n}\n\nfunction signAsync(cert, signer, done) {\n\tif (cert.signatures.openssh === undefined)\n\t\tcert.signatures.openssh = {};\n\ttry {\n\t\tvar blob = toBuffer(cert, true);\n\t} catch (e) {\n\t\tdelete (cert.signatures.openssh);\n\t\tdone(e);\n\t\treturn;\n\t}\n\tvar sig = cert.signatures.openssh;\n\n\tsigner(blob, function (err, signature) {\n\t\tif (err) {\n\t\t\tdone(err);\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\t/*\n\t\t\t * This will throw if the signature isn't of a\n\t\t\t * type/algo that can be used for SSH.\n\t\t\t */\n\t\t\tsignature.toBuffer('ssh');\n\t\t} catch (e) {\n\t\t\tdone(e);\n\t\t\treturn;\n\t\t}\n\t\tsig.signature = signature;\n\t\tdone();\n\t});\n}\n\nfunction write(cert, options) {\n\tif (options === undefined)\n\t\toptions = {};\n\n\tvar blob = toBuffer(cert);\n\tvar out = getCertType(cert.subjectKey) + ' ' + blob.toString('base64');\n\tif (options.comment)\n\t\tout = out + ' ' + options.comment;\n\treturn (out);\n}\n\n\nfunction toBuffer(cert, noSig) {\n\tassert.object(cert.signatures.openssh, 'signature for openssh format');\n\tvar sig = cert.signatures.openssh;\n\n\tif (sig.nonce === undefined)\n\t\tsig.nonce = crypto.randomBytes(16);\n\tvar buf = new SSHBuffer({});\n\tbuf.writeString(getCertType(cert.subjectKey));\n\tbuf.writeBuffer(sig.nonce);\n\n\tvar key = cert.subjectKey;\n\tvar algInfo = algs.info[key.type];\n\talgInfo.parts.forEach(function (part) {\n\t\tbuf.writePart(key.part[part]);\n\t});\n\n\tbuf.writeInt64(cert.serial);\n\n\tvar type = cert.subjects[0].type;\n\tassert.notStrictEqual(type, 'unknown');\n\tcert.subjects.forEach(function (id) {\n\t\tassert.strictEqual(id.type, type);\n\t});\n\ttype = TYPES[type];\n\tbuf.writeInt(type);\n\n\tif (sig.keyId === undefined) {\n\t\tsig.keyId = cert.subjects[0].type + '_' +\n\t\t (cert.subjects[0].uid || cert.subjects[0].hostname);\n\t}\n\tbuf.writeString(sig.keyId);\n\n\tvar sub = new SSHBuffer({});\n\tcert.subjects.forEach(function (id) {\n\t\tif (type === TYPES.host)\n\t\t\tsub.writeString(id.hostname);\n\t\telse if (type === TYPES.user)\n\t\t\tsub.writeString(id.uid);\n\t});\n\tbuf.writeBuffer(sub.toBuffer());\n\n\tbuf.writeInt64(dateToInt64(cert.validFrom));\n\tbuf.writeInt64(dateToInt64(cert.validUntil));\n\n\tvar exts = sig.exts;\n\tif (exts === undefined)\n\t\texts = [];\n\n\tvar extbuf = new SSHBuffer({});\n\texts.forEach(function (ext) {\n\t\tif (ext.critical !== true)\n\t\t\treturn;\n\t\textbuf.writeString(ext.name);\n\t\textbuf.writeBuffer(ext.data);\n\t});\n\tbuf.writeBuffer(extbuf.toBuffer());\n\n\textbuf = new SSHBuffer({});\n\texts.forEach(function (ext) {\n\t\tif (ext.critical === true)\n\t\t\treturn;\n\t\textbuf.writeString(ext.name);\n\t\textbuf.writeBuffer(ext.data);\n\t});\n\tbuf.writeBuffer(extbuf.toBuffer());\n\n\t/* reserved */\n\tbuf.writeBuffer(Buffer.alloc(0));\n\n\tsub = rfc4253.write(cert.issuerKey);\n\tbuf.writeBuffer(sub);\n\n\tif (!noSig)\n\t\tbuf.writeBuffer(sig.signature.toBuffer('ssh'));\n\n\treturn (buf.toBuffer());\n}\n\nfunction getAlg(certType) {\n\tif (certType === 'ssh-rsa-cert-v01@openssh.com')\n\t\treturn ('rsa');\n\tif (certType === 'ssh-dss-cert-v01@openssh.com')\n\t\treturn ('dsa');\n\tif (certType.match(ECDSA_ALGO))\n\t\treturn ('ecdsa');\n\tif (certType === 'ssh-ed25519-cert-v01@openssh.com')\n\t\treturn ('ed25519');\n\tthrow (new Error('Unsupported cert type ' + certType));\n}\n\nfunction getCertType(key) {\n\tif (key.type === 'rsa')\n\t\treturn ('ssh-rsa-cert-v01@openssh.com');\n\tif (key.type === 'dsa')\n\t\treturn ('ssh-dss-cert-v01@openssh.com');\n\tif (key.type === 'ecdsa')\n\t\treturn ('ecdsa-sha2-' + key.curve + '-cert-v01@openssh.com');\n\tif (key.type === 'ed25519')\n\t\treturn ('ssh-ed25519-cert-v01@openssh.com');\n\tthrow (new Error('Unsupported key type ' + key.type));\n}\n","// Copyright 2018 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar crypto = require('crypto');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\n\nvar pkcs1 = require('./pkcs1');\nvar pkcs8 = require('./pkcs8');\nvar sshpriv = require('./ssh-private');\nvar rfc4253 = require('./rfc4253');\n\nvar errors = require('../errors');\n\nvar OID_PBES2 = '1.2.840.113549.1.5.13';\nvar OID_PBKDF2 = '1.2.840.113549.1.5.12';\n\nvar OID_TO_CIPHER = {\n\t'1.2.840.113549.3.7': '3des-cbc',\n\t'2.16.840.1.101.3.4.1.2': 'aes128-cbc',\n\t'2.16.840.1.101.3.4.1.42': 'aes256-cbc'\n};\nvar CIPHER_TO_OID = {};\nObject.keys(OID_TO_CIPHER).forEach(function (k) {\n\tCIPHER_TO_OID[OID_TO_CIPHER[k]] = k;\n});\n\nvar OID_TO_HASH = {\n\t'1.2.840.113549.2.7': 'sha1',\n\t'1.2.840.113549.2.9': 'sha256',\n\t'1.2.840.113549.2.11': 'sha512'\n};\nvar HASH_TO_OID = {};\nObject.keys(OID_TO_HASH).forEach(function (k) {\n\tHASH_TO_OID[OID_TO_HASH[k]] = k;\n});\n\n/*\n * For reading we support both PKCS#1 and PKCS#8. If we find a private key,\n * we just take the public component of it and use that.\n */\nfunction read(buf, options, forceType) {\n\tvar input = buf;\n\tif (typeof (buf) !== 'string') {\n\t\tassert.buffer(buf, 'buf');\n\t\tbuf = buf.toString('ascii');\n\t}\n\n\tvar lines = buf.trim().split(/[\\r\\n]+/g);\n\n\tvar m;\n\tvar si = -1;\n\twhile (!m && si < lines.length) {\n\t\tm = lines[++si].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*BEGIN ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/);\n\t}\n\tassert.ok(m, 'invalid PEM header');\n\n\tvar m2;\n\tvar ei = lines.length;\n\twhile (!m2 && ei > 0) {\n\t\tm2 = lines[--ei].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*END ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/);\n\t}\n\tassert.ok(m2, 'invalid PEM footer');\n\n\t/* Begin and end banners must match key type */\n\tassert.equal(m[2], m2[2]);\n\tvar type = m[2].toLowerCase();\n\n\tvar alg;\n\tif (m[1]) {\n\t\t/* They also must match algorithms, if given */\n\t\tassert.equal(m[1], m2[1], 'PEM header and footer mismatch');\n\t\talg = m[1].trim();\n\t}\n\n\tlines = lines.slice(si, ei + 1);\n\n\tvar headers = {};\n\twhile (true) {\n\t\tlines = lines.slice(1);\n\t\tm = lines[0].match(/*JSSTYLED*/\n\t\t /^([A-Za-z0-9-]+): (.+)$/);\n\t\tif (!m)\n\t\t\tbreak;\n\t\theaders[m[1].toLowerCase()] = m[2];\n\t}\n\n\t/* Chop off the first and last lines */\n\tlines = lines.slice(0, -1).join('');\n\tbuf = Buffer.from(lines, 'base64');\n\n\tvar cipher, key, iv;\n\tif (headers['proc-type']) {\n\t\tvar parts = headers['proc-type'].split(',');\n\t\tif (parts[0] === '4' && parts[1] === 'ENCRYPTED') {\n\t\t\tif (typeof (options.passphrase) === 'string') {\n\t\t\t\toptions.passphrase = Buffer.from(\n\t\t\t\t options.passphrase, 'utf-8');\n\t\t\t}\n\t\t\tif (!Buffer.isBuffer(options.passphrase)) {\n\t\t\t\tthrow (new errors.KeyEncryptedError(\n\t\t\t\t options.filename, 'PEM'));\n\t\t\t} else {\n\t\t\t\tparts = headers['dek-info'].split(',');\n\t\t\t\tassert.ok(parts.length === 2);\n\t\t\t\tcipher = parts[0].toLowerCase();\n\t\t\t\tiv = Buffer.from(parts[1], 'hex');\n\t\t\t\tkey = utils.opensslKeyDeriv(cipher, iv,\n\t\t\t\t options.passphrase, 1).key;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (alg && alg.toLowerCase() === 'encrypted') {\n\t\tvar eder = new asn1.BerReader(buf);\n\t\tvar pbesEnd;\n\t\teder.readSequence();\n\n\t\teder.readSequence();\n\t\tpbesEnd = eder.offset + eder.length;\n\n\t\tvar method = eder.readOID();\n\t\tif (method !== OID_PBES2) {\n\t\t\tthrow (new Error('Unsupported PEM/PKCS8 encryption ' +\n\t\t\t 'scheme: ' + method));\n\t\t}\n\n\t\teder.readSequence();\t/* PBES2-params */\n\n\t\teder.readSequence();\t/* keyDerivationFunc */\n\t\tvar kdfEnd = eder.offset + eder.length;\n\t\tvar kdfOid = eder.readOID();\n\t\tif (kdfOid !== OID_PBKDF2)\n\t\t\tthrow (new Error('Unsupported PBES2 KDF: ' + kdfOid));\n\t\teder.readSequence();\n\t\tvar salt = eder.readString(asn1.Ber.OctetString, true);\n\t\tvar iterations = eder.readInt();\n\t\tvar hashAlg = 'sha1';\n\t\tif (eder.offset < kdfEnd) {\n\t\t\teder.readSequence();\n\t\t\tvar hashAlgOid = eder.readOID();\n\t\t\thashAlg = OID_TO_HASH[hashAlgOid];\n\t\t\tif (hashAlg === undefined) {\n\t\t\t\tthrow (new Error('Unsupported PBKDF2 hash: ' +\n\t\t\t\t hashAlgOid));\n\t\t\t}\n\t\t}\n\t\teder._offset = kdfEnd;\n\n\t\teder.readSequence();\t/* encryptionScheme */\n\t\tvar cipherOid = eder.readOID();\n\t\tcipher = OID_TO_CIPHER[cipherOid];\n\t\tif (cipher === undefined) {\n\t\t\tthrow (new Error('Unsupported PBES2 cipher: ' +\n\t\t\t cipherOid));\n\t\t}\n\t\tiv = eder.readString(asn1.Ber.OctetString, true);\n\n\t\teder._offset = pbesEnd;\n\t\tbuf = eder.readString(asn1.Ber.OctetString, true);\n\n\t\tif (typeof (options.passphrase) === 'string') {\n\t\t\toptions.passphrase = Buffer.from(\n\t\t\t options.passphrase, 'utf-8');\n\t\t}\n\t\tif (!Buffer.isBuffer(options.passphrase)) {\n\t\t\tthrow (new errors.KeyEncryptedError(\n\t\t\t options.filename, 'PEM'));\n\t\t}\n\n\t\tvar cinfo = utils.opensshCipherInfo(cipher);\n\n\t\tcipher = cinfo.opensslName;\n\t\tkey = utils.pbkdf2(hashAlg, salt, iterations, cinfo.keySize,\n\t\t options.passphrase);\n\t\talg = undefined;\n\t}\n\n\tif (cipher && key && iv) {\n\t\tvar cipherStream = crypto.createDecipheriv(cipher, key, iv);\n\t\tvar chunk, chunks = [];\n\t\tcipherStream.once('error', function (e) {\n\t\t\tif (e.toString().indexOf('bad decrypt') !== -1) {\n\t\t\t\tthrow (new Error('Incorrect passphrase ' +\n\t\t\t\t 'supplied, could not decrypt key'));\n\t\t\t}\n\t\t\tthrow (e);\n\t\t});\n\t\tcipherStream.write(buf);\n\t\tcipherStream.end();\n\t\twhile ((chunk = cipherStream.read()) !== null)\n\t\t\tchunks.push(chunk);\n\t\tbuf = Buffer.concat(chunks);\n\t}\n\n\t/* The new OpenSSH internal format abuses PEM headers */\n\tif (alg && alg.toLowerCase() === 'openssh')\n\t\treturn (sshpriv.readSSHPrivate(type, buf, options));\n\tif (alg && alg.toLowerCase() === 'ssh2')\n\t\treturn (rfc4253.readType(type, buf, options));\n\n\tvar der = new asn1.BerReader(buf);\n\tder.originalInput = input;\n\n\t/*\n\t * All of the PEM file types start with a sequence tag, so chop it\n\t * off here\n\t */\n\tder.readSequence();\n\n\t/* PKCS#1 type keys name an algorithm in the banner explicitly */\n\tif (alg) {\n\t\tif (forceType)\n\t\t\tassert.strictEqual(forceType, 'pkcs1');\n\t\treturn (pkcs1.readPkcs1(alg, type, der));\n\t} else {\n\t\tif (forceType)\n\t\t\tassert.strictEqual(forceType, 'pkcs8');\n\t\treturn (pkcs8.readPkcs8(alg, type, der));\n\t}\n}\n\nfunction write(key, options, type) {\n\tassert.object(key);\n\n\tvar alg = {\n\t 'ecdsa': 'EC',\n\t 'rsa': 'RSA',\n\t 'dsa': 'DSA',\n\t 'ed25519': 'EdDSA'\n\t}[key.type];\n\tvar header;\n\n\tvar der = new asn1.BerWriter();\n\n\tif (PrivateKey.isPrivateKey(key)) {\n\t\tif (type && type === 'pkcs8') {\n\t\t\theader = 'PRIVATE KEY';\n\t\t\tpkcs8.writePkcs8(der, key);\n\t\t} else {\n\t\t\tif (type)\n\t\t\t\tassert.strictEqual(type, 'pkcs1');\n\t\t\theader = alg + ' PRIVATE KEY';\n\t\t\tpkcs1.writePkcs1(der, key);\n\t\t}\n\n\t} else if (Key.isKey(key)) {\n\t\tif (type && type === 'pkcs1') {\n\t\t\theader = alg + ' PUBLIC KEY';\n\t\t\tpkcs1.writePkcs1(der, key);\n\t\t} else {\n\t\t\tif (type)\n\t\t\t\tassert.strictEqual(type, 'pkcs8');\n\t\t\theader = 'PUBLIC KEY';\n\t\t\tpkcs8.writePkcs8(der, key);\n\t\t}\n\n\t} else {\n\t\tthrow (new Error('key is not a Key or PrivateKey'));\n\t}\n\n\tvar tmp = der.buffer.toString('base64');\n\tvar len = tmp.length + (tmp.length / 64) +\n\t 18 + 16 + header.length*2 + 10;\n\tvar buf = Buffer.alloc(len);\n\tvar o = 0;\n\to += buf.write('-----BEGIN ' + header + '-----\\n', o);\n\tfor (var i = 0; i < tmp.length; ) {\n\t\tvar limit = i + 64;\n\t\tif (limit > tmp.length)\n\t\t\tlimit = tmp.length;\n\t\to += buf.write(tmp.slice(i, limit), o);\n\t\tbuf[o++] = 10;\n\t\ti = limit;\n\t}\n\to += buf.write('-----END ' + header + '-----\\n', o);\n\n\treturn (buf.slice(0, o));\n}\n","// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\treadPkcs1: readPkcs1,\n\twrite: write,\n\twritePkcs1: writePkcs1\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\n\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\n\nvar pkcs8 = require('./pkcs8');\nvar readECDSACurve = pkcs8.readECDSACurve;\n\nfunction read(buf, options) {\n\treturn (pem.read(buf, options, 'pkcs1'));\n}\n\nfunction write(key, options) {\n\treturn (pem.write(key, options, 'pkcs1'));\n}\n\n/* Helper to read in a single mpint */\nfunction readMPInt(der, nm) {\n\tassert.strictEqual(der.peek(), asn1.Ber.Integer,\n\t nm + ' is not an Integer');\n\treturn (utils.mpNormalize(der.readString(asn1.Ber.Integer, true)));\n}\n\nfunction readPkcs1(alg, type, der) {\n\tswitch (alg) {\n\tcase 'RSA':\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs1RSAPublic(der));\n\t\telse if (type === 'private')\n\t\t\treturn (readPkcs1RSAPrivate(der));\n\t\tthrow (new Error('Unknown key type: ' + type));\n\tcase 'DSA':\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs1DSAPublic(der));\n\t\telse if (type === 'private')\n\t\t\treturn (readPkcs1DSAPrivate(der));\n\t\tthrow (new Error('Unknown key type: ' + type));\n\tcase 'EC':\n\tcase 'ECDSA':\n\t\tif (type === 'private')\n\t\t\treturn (readPkcs1ECDSAPrivate(der));\n\t\telse if (type === 'public')\n\t\t\treturn (readPkcs1ECDSAPublic(der));\n\t\tthrow (new Error('Unknown key type: ' + type));\n\tcase 'EDDSA':\n\tcase 'EdDSA':\n\t\tif (type === 'private')\n\t\t\treturn (readPkcs1EdDSAPrivate(der));\n\t\tthrow (new Error(type + ' keys not supported with EdDSA'));\n\tdefault:\n\t\tthrow (new Error('Unknown key algo: ' + alg));\n\t}\n}\n\nfunction readPkcs1RSAPublic(der) {\n\t// modulus and exponent\n\tvar n = readMPInt(der, 'modulus');\n\tvar e = readMPInt(der, 'exponent');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tparts: [\n\t\t\t{ name: 'e', data: e },\n\t\t\t{ name: 'n', data: n }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs1RSAPrivate(der) {\n\tvar version = readMPInt(der, 'version');\n\tassert.strictEqual(version[0], 0);\n\n\t// modulus then public exponent\n\tvar n = readMPInt(der, 'modulus');\n\tvar e = readMPInt(der, 'public exponent');\n\tvar d = readMPInt(der, 'private exponent');\n\tvar p = readMPInt(der, 'prime1');\n\tvar q = readMPInt(der, 'prime2');\n\tvar dmodp = readMPInt(der, 'exponent1');\n\tvar dmodq = readMPInt(der, 'exponent2');\n\tvar iqmp = readMPInt(der, 'iqmp');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tparts: [\n\t\t\t{ name: 'n', data: n },\n\t\t\t{ name: 'e', data: e },\n\t\t\t{ name: 'd', data: d },\n\t\t\t{ name: 'iqmp', data: iqmp },\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'dmodp', data: dmodp },\n\t\t\t{ name: 'dmodq', data: dmodq }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs1DSAPrivate(der) {\n\tvar version = readMPInt(der, 'version');\n\tassert.strictEqual(version.readUInt8(0), 0);\n\n\tvar p = readMPInt(der, 'p');\n\tvar q = readMPInt(der, 'q');\n\tvar g = readMPInt(der, 'g');\n\tvar y = readMPInt(der, 'y');\n\tvar x = readMPInt(der, 'x');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'dsa',\n\t\tparts: [\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'g', data: g },\n\t\t\t{ name: 'y', data: y },\n\t\t\t{ name: 'x', data: x }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs1EdDSAPrivate(der) {\n\tvar version = readMPInt(der, 'version');\n\tassert.strictEqual(version.readUInt8(0), 1);\n\n\t// private key\n\tvar k = der.readString(asn1.Ber.OctetString, true);\n\n\tder.readSequence(0xa0);\n\tvar oid = der.readOID();\n\tassert.strictEqual(oid, '1.3.101.112', 'the ed25519 curve identifier');\n\n\tder.readSequence(0xa1);\n\tvar A = utils.readBitString(der);\n\n\tvar key = {\n\t\ttype: 'ed25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) },\n\t\t\t{ name: 'k', data: k }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs1DSAPublic(der) {\n\tvar y = readMPInt(der, 'y');\n\tvar p = readMPInt(der, 'p');\n\tvar q = readMPInt(der, 'q');\n\tvar g = readMPInt(der, 'g');\n\n\tvar key = {\n\t\ttype: 'dsa',\n\t\tparts: [\n\t\t\t{ name: 'y', data: y },\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'g', data: g }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs1ECDSAPublic(der) {\n\tder.readSequence();\n\n\tvar oid = der.readOID();\n\tassert.strictEqual(oid, '1.2.840.10045.2.1', 'must be ecPublicKey');\n\n\tvar curveOid = der.readOID();\n\n\tvar curve;\n\tvar curves = Object.keys(algs.curves);\n\tfor (var j = 0; j < curves.length; ++j) {\n\t\tvar c = curves[j];\n\t\tvar cd = algs.curves[c];\n\t\tif (cd.pkcs8oid === curveOid) {\n\t\t\tcurve = c;\n\t\t\tbreak;\n\t\t}\n\t}\n\tassert.string(curve, 'a known ECDSA named curve');\n\n\tvar Q = der.readString(asn1.Ber.BitString, true);\n\tQ = utils.ecNormalize(Q);\n\n\tvar key = {\n\t\ttype: 'ecdsa',\n\t\tparts: [\n\t\t\t{ name: 'curve', data: Buffer.from(curve) },\n\t\t\t{ name: 'Q', data: Q }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs1ECDSAPrivate(der) {\n\tvar version = readMPInt(der, 'version');\n\tassert.strictEqual(version.readUInt8(0), 1);\n\n\t// private key\n\tvar d = der.readString(asn1.Ber.OctetString, true);\n\n\tder.readSequence(0xa0);\n\tvar curve = readECDSACurve(der);\n\tassert.string(curve, 'a known elliptic curve');\n\n\tder.readSequence(0xa1);\n\tvar Q = der.readString(asn1.Ber.BitString, true);\n\tQ = utils.ecNormalize(Q);\n\n\tvar key = {\n\t\ttype: 'ecdsa',\n\t\tparts: [\n\t\t\t{ name: 'curve', data: Buffer.from(curve) },\n\t\t\t{ name: 'Q', data: Q },\n\t\t\t{ name: 'd', data: d }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction writePkcs1(der, key) {\n\tder.startSequence();\n\n\tswitch (key.type) {\n\tcase 'rsa':\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs1RSAPrivate(der, key);\n\t\telse\n\t\t\twritePkcs1RSAPublic(der, key);\n\t\tbreak;\n\tcase 'dsa':\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs1DSAPrivate(der, key);\n\t\telse\n\t\t\twritePkcs1DSAPublic(der, key);\n\t\tbreak;\n\tcase 'ecdsa':\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs1ECDSAPrivate(der, key);\n\t\telse\n\t\t\twritePkcs1ECDSAPublic(der, key);\n\t\tbreak;\n\tcase 'ed25519':\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs1EdDSAPrivate(der, key);\n\t\telse\n\t\t\twritePkcs1EdDSAPublic(der, key);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error('Unknown key algo: ' + key.type));\n\t}\n\n\tder.endSequence();\n}\n\nfunction writePkcs1RSAPublic(der, key) {\n\tder.writeBuffer(key.part.n.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.e.data, asn1.Ber.Integer);\n}\n\nfunction writePkcs1RSAPrivate(der, key) {\n\tvar ver = Buffer.from([0]);\n\tder.writeBuffer(ver, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.n.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.e.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.d.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tif (!key.part.dmodp || !key.part.dmodq)\n\t\tutils.addRSAMissing(key);\n\tder.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer);\n}\n\nfunction writePkcs1DSAPrivate(der, key) {\n\tvar ver = Buffer.from([0]);\n\tder.writeBuffer(ver, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.g.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.y.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.x.data, asn1.Ber.Integer);\n}\n\nfunction writePkcs1DSAPublic(der, key) {\n\tder.writeBuffer(key.part.y.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.g.data, asn1.Ber.Integer);\n}\n\nfunction writePkcs1ECDSAPublic(der, key) {\n\tder.startSequence();\n\n\tder.writeOID('1.2.840.10045.2.1'); /* ecPublicKey */\n\tvar curve = key.part.curve.data.toString();\n\tvar curveOid = algs.curves[curve].pkcs8oid;\n\tassert.string(curveOid, 'a known ECDSA named curve');\n\tder.writeOID(curveOid);\n\n\tder.endSequence();\n\n\tvar Q = utils.ecNormalize(key.part.Q.data, true);\n\tder.writeBuffer(Q, asn1.Ber.BitString);\n}\n\nfunction writePkcs1ECDSAPrivate(der, key) {\n\tvar ver = Buffer.from([1]);\n\tder.writeBuffer(ver, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.d.data, asn1.Ber.OctetString);\n\n\tder.startSequence(0xa0);\n\tvar curve = key.part.curve.data.toString();\n\tvar curveOid = algs.curves[curve].pkcs8oid;\n\tassert.string(curveOid, 'a known ECDSA named curve');\n\tder.writeOID(curveOid);\n\tder.endSequence();\n\n\tder.startSequence(0xa1);\n\tvar Q = utils.ecNormalize(key.part.Q.data, true);\n\tder.writeBuffer(Q, asn1.Ber.BitString);\n\tder.endSequence();\n}\n\nfunction writePkcs1EdDSAPrivate(der, key) {\n\tvar ver = Buffer.from([1]);\n\tder.writeBuffer(ver, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.k.data, asn1.Ber.OctetString);\n\n\tder.startSequence(0xa0);\n\tder.writeOID('1.3.101.112');\n\tder.endSequence();\n\n\tder.startSequence(0xa1);\n\tutils.writeBitString(der, key.part.A.data);\n\tder.endSequence();\n}\n\nfunction writePkcs1EdDSAPublic(der, key) {\n\tthrow (new Error('Public keys are not supported for EdDSA PKCS#1'));\n}\n","// Copyright 2018 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\treadPkcs8: readPkcs8,\n\twrite: write,\n\twritePkcs8: writePkcs8,\n\tpkcs8ToBuffer: pkcs8ToBuffer,\n\n\treadECDSACurve: readECDSACurve,\n\twriteECDSACurve: writeECDSACurve\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\n\nfunction read(buf, options) {\n\treturn (pem.read(buf, options, 'pkcs8'));\n}\n\nfunction write(key, options) {\n\treturn (pem.write(key, options, 'pkcs8'));\n}\n\n/* Helper to read in a single mpint */\nfunction readMPInt(der, nm) {\n\tassert.strictEqual(der.peek(), asn1.Ber.Integer,\n\t nm + ' is not an Integer');\n\treturn (utils.mpNormalize(der.readString(asn1.Ber.Integer, true)));\n}\n\nfunction readPkcs8(alg, type, der) {\n\t/* Private keys in pkcs#8 format have a weird extra int */\n\tif (der.peek() === asn1.Ber.Integer) {\n\t\tassert.strictEqual(type, 'private',\n\t\t 'unexpected Integer at start of public key');\n\t\tder.readString(asn1.Ber.Integer, true);\n\t}\n\n\tder.readSequence();\n\tvar next = der.offset + der.length;\n\n\tvar oid = der.readOID();\n\tswitch (oid) {\n\tcase '1.2.840.113549.1.1.1':\n\t\tder._offset = next;\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs8RSAPublic(der));\n\t\telse\n\t\t\treturn (readPkcs8RSAPrivate(der));\n\tcase '1.2.840.10040.4.1':\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs8DSAPublic(der));\n\t\telse\n\t\t\treturn (readPkcs8DSAPrivate(der));\n\tcase '1.2.840.10045.2.1':\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs8ECDSAPublic(der));\n\t\telse\n\t\t\treturn (readPkcs8ECDSAPrivate(der));\n\tcase '1.3.101.112':\n\t\tif (type === 'public') {\n\t\t\treturn (readPkcs8EdDSAPublic(der));\n\t\t} else {\n\t\t\treturn (readPkcs8EdDSAPrivate(der));\n\t\t}\n\tcase '1.3.101.110':\n\t\tif (type === 'public') {\n\t\t\treturn (readPkcs8X25519Public(der));\n\t\t} else {\n\t\t\treturn (readPkcs8X25519Private(der));\n\t\t}\n\tdefault:\n\t\tthrow (new Error('Unknown key type OID ' + oid));\n\t}\n}\n\nfunction readPkcs8RSAPublic(der) {\n\t// bit string sequence\n\tder.readSequence(asn1.Ber.BitString);\n\tder.readByte();\n\tder.readSequence();\n\n\t// modulus\n\tvar n = readMPInt(der, 'modulus');\n\tvar e = readMPInt(der, 'exponent');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tsource: der.originalInput,\n\t\tparts: [\n\t\t\t{ name: 'e', data: e },\n\t\t\t{ name: 'n', data: n }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8RSAPrivate(der) {\n\tder.readSequence(asn1.Ber.OctetString);\n\tder.readSequence();\n\n\tvar ver = readMPInt(der, 'version');\n\tassert.equal(ver[0], 0x0, 'unknown RSA private key version');\n\n\t// modulus then public exponent\n\tvar n = readMPInt(der, 'modulus');\n\tvar e = readMPInt(der, 'public exponent');\n\tvar d = readMPInt(der, 'private exponent');\n\tvar p = readMPInt(der, 'prime1');\n\tvar q = readMPInt(der, 'prime2');\n\tvar dmodp = readMPInt(der, 'exponent1');\n\tvar dmodq = readMPInt(der, 'exponent2');\n\tvar iqmp = readMPInt(der, 'iqmp');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tparts: [\n\t\t\t{ name: 'n', data: n },\n\t\t\t{ name: 'e', data: e },\n\t\t\t{ name: 'd', data: d },\n\t\t\t{ name: 'iqmp', data: iqmp },\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'dmodp', data: dmodp },\n\t\t\t{ name: 'dmodq', data: dmodq }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs8DSAPublic(der) {\n\tder.readSequence();\n\n\tvar p = readMPInt(der, 'p');\n\tvar q = readMPInt(der, 'q');\n\tvar g = readMPInt(der, 'g');\n\n\t// bit string sequence\n\tder.readSequence(asn1.Ber.BitString);\n\tder.readByte();\n\n\tvar y = readMPInt(der, 'y');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'dsa',\n\t\tparts: [\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'g', data: g },\n\t\t\t{ name: 'y', data: y }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8DSAPrivate(der) {\n\tder.readSequence();\n\n\tvar p = readMPInt(der, 'p');\n\tvar q = readMPInt(der, 'q');\n\tvar g = readMPInt(der, 'g');\n\n\tder.readSequence(asn1.Ber.OctetString);\n\tvar x = readMPInt(der, 'x');\n\n\t/* The pkcs#8 format does not include the public key */\n\tvar y = utils.calculateDSAPublic(g, p, x);\n\n\tvar key = {\n\t\ttype: 'dsa',\n\t\tparts: [\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'g', data: g },\n\t\t\t{ name: 'y', data: y },\n\t\t\t{ name: 'x', data: x }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readECDSACurve(der) {\n\tvar curveName, curveNames;\n\tvar j, c, cd;\n\n\tif (der.peek() === asn1.Ber.OID) {\n\t\tvar oid = der.readOID();\n\n\t\tcurveNames = Object.keys(algs.curves);\n\t\tfor (j = 0; j < curveNames.length; ++j) {\n\t\t\tc = curveNames[j];\n\t\t\tcd = algs.curves[c];\n\t\t\tif (cd.pkcs8oid === oid) {\n\t\t\t\tcurveName = c;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// ECParameters sequence\n\t\tder.readSequence();\n\t\tvar version = der.readString(asn1.Ber.Integer, true);\n\t\tassert.strictEqual(version[0], 1, 'ECDSA key not version 1');\n\n\t\tvar curve = {};\n\n\t\t// FieldID sequence\n\t\tder.readSequence();\n\t\tvar fieldTypeOid = der.readOID();\n\t\tassert.strictEqual(fieldTypeOid, '1.2.840.10045.1.1',\n\t\t 'ECDSA key is not from a prime-field');\n\t\tvar p = curve.p = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.Integer, true));\n\t\t/*\n\t\t * p always starts with a 1 bit, so count the zeros to get its\n\t\t * real size.\n\t\t */\n\t\tcurve.size = p.length * 8 - utils.countZeros(p);\n\n\t\t// Curve sequence\n\t\tder.readSequence();\n\t\tcurve.a = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.OctetString, true));\n\t\tcurve.b = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.OctetString, true));\n\t\tif (der.peek() === asn1.Ber.BitString)\n\t\t\tcurve.s = der.readString(asn1.Ber.BitString, true);\n\n\t\t// Combined Gx and Gy\n\t\tcurve.G = der.readString(asn1.Ber.OctetString, true);\n\t\tassert.strictEqual(curve.G[0], 0x4,\n\t\t 'uncompressed G is required');\n\n\t\tcurve.n = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.Integer, true));\n\t\tcurve.h = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.Integer, true));\n\t\tassert.strictEqual(curve.h[0], 0x1, 'a cofactor=1 curve is ' +\n\t\t 'required');\n\n\t\tcurveNames = Object.keys(algs.curves);\n\t\tvar ks = Object.keys(curve);\n\t\tfor (j = 0; j < curveNames.length; ++j) {\n\t\t\tc = curveNames[j];\n\t\t\tcd = algs.curves[c];\n\t\t\tvar equal = true;\n\t\t\tfor (var i = 0; i < ks.length; ++i) {\n\t\t\t\tvar k = ks[i];\n\t\t\t\tif (cd[k] === undefined)\n\t\t\t\t\tcontinue;\n\t\t\t\tif (typeof (cd[k]) === 'object' &&\n\t\t\t\t cd[k].equals !== undefined) {\n\t\t\t\t\tif (!cd[k].equals(curve[k])) {\n\t\t\t\t\t\tequal = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else if (Buffer.isBuffer(cd[k])) {\n\t\t\t\t\tif (cd[k].toString('binary')\n\t\t\t\t\t !== curve[k].toString('binary')) {\n\t\t\t\t\t\tequal = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (cd[k] !== curve[k]) {\n\t\t\t\t\t\tequal = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (equal) {\n\t\t\t\tcurveName = c;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn (curveName);\n}\n\nfunction readPkcs8ECDSAPrivate(der) {\n\tvar curveName = readECDSACurve(der);\n\tassert.string(curveName, 'a known elliptic curve');\n\n\tder.readSequence(asn1.Ber.OctetString);\n\tder.readSequence();\n\n\tvar version = readMPInt(der, 'version');\n\tassert.equal(version[0], 1, 'unknown version of ECDSA key');\n\n\tvar d = der.readString(asn1.Ber.OctetString, true);\n\tvar Q;\n\n\tif (der.peek() == 0xa0) {\n\t\tder.readSequence(0xa0);\n\t\tder._offset += der.length;\n\t}\n\tif (der.peek() == 0xa1) {\n\t\tder.readSequence(0xa1);\n\t\tQ = der.readString(asn1.Ber.BitString, true);\n\t\tQ = utils.ecNormalize(Q);\n\t}\n\n\tif (Q === undefined) {\n\t\tvar pub = utils.publicFromPrivateECDSA(curveName, d);\n\t\tQ = pub.part.Q.data;\n\t}\n\n\tvar key = {\n\t\ttype: 'ecdsa',\n\t\tparts: [\n\t\t\t{ name: 'curve', data: Buffer.from(curveName) },\n\t\t\t{ name: 'Q', data: Q },\n\t\t\t{ name: 'd', data: d }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs8ECDSAPublic(der) {\n\tvar curveName = readECDSACurve(der);\n\tassert.string(curveName, 'a known elliptic curve');\n\n\tvar Q = der.readString(asn1.Ber.BitString, true);\n\tQ = utils.ecNormalize(Q);\n\n\tvar key = {\n\t\ttype: 'ecdsa',\n\t\tparts: [\n\t\t\t{ name: 'curve', data: Buffer.from(curveName) },\n\t\t\t{ name: 'Q', data: Q }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8EdDSAPublic(der) {\n\tif (der.peek() === 0x00)\n\t\tder.readByte();\n\n\tvar A = utils.readBitString(der);\n\n\tvar key = {\n\t\ttype: 'ed25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8X25519Public(der) {\n\tvar A = utils.readBitString(der);\n\n\tvar key = {\n\t\ttype: 'curve25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8EdDSAPrivate(der) {\n\tif (der.peek() === 0x00)\n\t\tder.readByte();\n\n\tder.readSequence(asn1.Ber.OctetString);\n\tvar k = der.readString(asn1.Ber.OctetString, true);\n\tk = utils.zeroPadToLength(k, 32);\n\n\tvar A;\n\tif (der.peek() === asn1.Ber.BitString) {\n\t\tA = utils.readBitString(der);\n\t\tA = utils.zeroPadToLength(A, 32);\n\t} else {\n\t\tA = utils.calculateED25519Public(k);\n\t}\n\n\tvar key = {\n\t\ttype: 'ed25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) },\n\t\t\t{ name: 'k', data: utils.zeroPadToLength(k, 32) }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs8X25519Private(der) {\n\tif (der.peek() === 0x00)\n\t\tder.readByte();\n\n\tder.readSequence(asn1.Ber.OctetString);\n\tvar k = der.readString(asn1.Ber.OctetString, true);\n\tk = utils.zeroPadToLength(k, 32);\n\n\tvar A = utils.calculateX25519Public(k);\n\n\tvar key = {\n\t\ttype: 'curve25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) },\n\t\t\t{ name: 'k', data: utils.zeroPadToLength(k, 32) }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction pkcs8ToBuffer(key) {\n\tvar der = new asn1.BerWriter();\n\twritePkcs8(der, key);\n\treturn (der.buffer);\n}\n\nfunction writePkcs8(der, key) {\n\tder.startSequence();\n\n\tif (PrivateKey.isPrivateKey(key)) {\n\t\tvar sillyInt = Buffer.from([0]);\n\t\tder.writeBuffer(sillyInt, asn1.Ber.Integer);\n\t}\n\n\tder.startSequence();\n\tswitch (key.type) {\n\tcase 'rsa':\n\t\tder.writeOID('1.2.840.113549.1.1.1');\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs8RSAPrivate(key, der);\n\t\telse\n\t\t\twritePkcs8RSAPublic(key, der);\n\t\tbreak;\n\tcase 'dsa':\n\t\tder.writeOID('1.2.840.10040.4.1');\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs8DSAPrivate(key, der);\n\t\telse\n\t\t\twritePkcs8DSAPublic(key, der);\n\t\tbreak;\n\tcase 'ecdsa':\n\t\tder.writeOID('1.2.840.10045.2.1');\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs8ECDSAPrivate(key, der);\n\t\telse\n\t\t\twritePkcs8ECDSAPublic(key, der);\n\t\tbreak;\n\tcase 'ed25519':\n\t\tder.writeOID('1.3.101.112');\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\tthrow (new Error('Ed25519 private keys in pkcs8 ' +\n\t\t\t 'format are not supported'));\n\t\twritePkcs8EdDSAPublic(key, der);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error('Unsupported key type: ' + key.type));\n\t}\n\n\tder.endSequence();\n}\n\nfunction writePkcs8RSAPrivate(key, der) {\n\tder.writeNull();\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.OctetString);\n\tder.startSequence();\n\n\tvar version = Buffer.from([0]);\n\tder.writeBuffer(version, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.n.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.e.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.d.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tif (!key.part.dmodp || !key.part.dmodq)\n\t\tutils.addRSAMissing(key);\n\tder.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer);\n\n\tder.endSequence();\n\tder.endSequence();\n}\n\nfunction writePkcs8RSAPublic(key, der) {\n\tder.writeNull();\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.BitString);\n\tder.writeByte(0x00);\n\n\tder.startSequence();\n\tder.writeBuffer(key.part.n.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.e.data, asn1.Ber.Integer);\n\tder.endSequence();\n\n\tder.endSequence();\n}\n\nfunction writePkcs8DSAPrivate(key, der) {\n\tder.startSequence();\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.g.data, asn1.Ber.Integer);\n\tder.endSequence();\n\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.OctetString);\n\tder.writeBuffer(key.part.x.data, asn1.Ber.Integer);\n\tder.endSequence();\n}\n\nfunction writePkcs8DSAPublic(key, der) {\n\tder.startSequence();\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.g.data, asn1.Ber.Integer);\n\tder.endSequence();\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.BitString);\n\tder.writeByte(0x00);\n\tder.writeBuffer(key.part.y.data, asn1.Ber.Integer);\n\tder.endSequence();\n}\n\nfunction writeECDSACurve(key, der) {\n\tvar curve = algs.curves[key.curve];\n\tif (curve.pkcs8oid) {\n\t\t/* This one has a name in pkcs#8, so just write the oid */\n\t\tder.writeOID(curve.pkcs8oid);\n\n\t} else {\n\t\t// ECParameters sequence\n\t\tder.startSequence();\n\n\t\tvar version = Buffer.from([1]);\n\t\tder.writeBuffer(version, asn1.Ber.Integer);\n\n\t\t// FieldID sequence\n\t\tder.startSequence();\n\t\tder.writeOID('1.2.840.10045.1.1'); // prime-field\n\t\tder.writeBuffer(curve.p, asn1.Ber.Integer);\n\t\tder.endSequence();\n\n\t\t// Curve sequence\n\t\tder.startSequence();\n\t\tvar a = curve.p;\n\t\tif (a[0] === 0x0)\n\t\t\ta = a.slice(1);\n\t\tder.writeBuffer(a, asn1.Ber.OctetString);\n\t\tder.writeBuffer(curve.b, asn1.Ber.OctetString);\n\t\tder.writeBuffer(curve.s, asn1.Ber.BitString);\n\t\tder.endSequence();\n\n\t\tder.writeBuffer(curve.G, asn1.Ber.OctetString);\n\t\tder.writeBuffer(curve.n, asn1.Ber.Integer);\n\t\tvar h = curve.h;\n\t\tif (!h) {\n\t\t\th = Buffer.from([1]);\n\t\t}\n\t\tder.writeBuffer(h, asn1.Ber.Integer);\n\n\t\t// ECParameters\n\t\tder.endSequence();\n\t}\n}\n\nfunction writePkcs8ECDSAPublic(key, der) {\n\twriteECDSACurve(key, der);\n\tder.endSequence();\n\n\tvar Q = utils.ecNormalize(key.part.Q.data, true);\n\tder.writeBuffer(Q, asn1.Ber.BitString);\n}\n\nfunction writePkcs8ECDSAPrivate(key, der) {\n\twriteECDSACurve(key, der);\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.OctetString);\n\tder.startSequence();\n\n\tvar version = Buffer.from([1]);\n\tder.writeBuffer(version, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.d.data, asn1.Ber.OctetString);\n\n\tder.startSequence(0xa1);\n\tvar Q = utils.ecNormalize(key.part.Q.data, true);\n\tder.writeBuffer(Q, asn1.Ber.BitString);\n\tder.endSequence();\n\n\tder.endSequence();\n\tder.endSequence();\n}\n\nfunction writePkcs8EdDSAPublic(key, der) {\n\tder.endSequence();\n\n\tutils.writeBitString(der, key.part.A.data);\n}\n\nfunction writePkcs8EdDSAPrivate(key, der) {\n\tder.endSequence();\n\n\tvar k = utils.mpNormalize(key.part.k.data, true);\n\tder.startSequence(asn1.Ber.OctetString);\n\tder.writeBuffer(k, asn1.Ber.OctetString);\n\tder.endSequence();\n}\n","// Copyright 2018 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar rfc4253 = require('./rfc4253');\nvar Key = require('../key');\nvar SSHBuffer = require('../ssh-buffer');\nvar crypto = require('crypto');\nvar PrivateKey = require('../private-key');\n\nvar errors = require('../errors');\n\n// https://tartarus.org/~simon/putty-prerel-snapshots/htmldoc/AppendixC.html\nfunction read(buf, options) {\n\tvar lines = buf.toString('ascii').split(/[\\r\\n]+/);\n\tvar found = false;\n\tvar parts;\n\tvar si = 0;\n\tvar formatVersion;\n\twhile (si < lines.length) {\n\t\tparts = splitHeader(lines[si++]);\n\t\tif (parts) {\n\t\t\tformatVersion = {\n\t\t\t\t'putty-user-key-file-2': 2,\n\t\t\t\t'putty-user-key-file-3': 3\n\t\t\t}[parts[0].toLowerCase()];\n\t\t\tif (formatVersion) {\n\t\t\t\tfound = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (!found) {\n\t\tthrow (new Error('No PuTTY format first line found'));\n\t}\n\tvar alg = parts[1];\n\n\tparts = splitHeader(lines[si++]);\n\tassert.equal(parts[0].toLowerCase(), 'encryption');\n\tvar encryption = parts[1];\n\n\tparts = splitHeader(lines[si++]);\n\tassert.equal(parts[0].toLowerCase(), 'comment');\n\tvar comment = parts[1];\n\n\tparts = splitHeader(lines[si++]);\n\tassert.equal(parts[0].toLowerCase(), 'public-lines');\n\tvar publicLines = parseInt(parts[1], 10);\n\tif (!isFinite(publicLines) || publicLines < 0 ||\n\t publicLines > lines.length) {\n\t\tthrow (new Error('Invalid public-lines count'));\n\t}\n\n\tvar publicBuf = Buffer.from(\n\t lines.slice(si, si + publicLines).join(''), 'base64');\n\tvar keyType = rfc4253.algToKeyType(alg);\n\tvar key = rfc4253.read(publicBuf);\n\tif (key.type !== keyType) {\n\t\tthrow (new Error('Outer key algorithm mismatch'));\n\t}\n\n\tsi += publicLines;\n\tif (lines[si]) {\n\t\tparts = splitHeader(lines[si++]);\n\t\tassert.equal(parts[0].toLowerCase(), 'private-lines');\n\t\tvar privateLines = parseInt(parts[1], 10);\n\t\tif (!isFinite(privateLines) || privateLines < 0 ||\n\t\t privateLines > lines.length) {\n\t\t\tthrow (new Error('Invalid private-lines count'));\n\t\t}\n\n\t\tvar privateBuf = Buffer.from(\n\t\t\tlines.slice(si, si + privateLines).join(''), 'base64');\n\n\t\tif (encryption !== 'none' && formatVersion === 3) {\n\t\t\tthrow new Error('Encrypted keys arenot supported for' +\n\t\t\t' PuTTY format version 3');\n\t\t}\n\n\t\tif (encryption === 'aes256-cbc') {\n\t\t\tif (!options.passphrase) {\n\t\t\t\tthrow (new errors.KeyEncryptedError(\n\t\t\t\t\toptions.filename, 'PEM'));\n\t\t\t}\n\n\t\t\tvar iv = Buffer.alloc(16, 0);\n\t\t\tvar decipher = crypto.createDecipheriv(\n\t\t\t\t'aes-256-cbc',\n\t\t\t\tderivePPK2EncryptionKey(options.passphrase),\n\t\t\t\tiv);\n\t\t\tdecipher.setAutoPadding(false);\n\t\t\tprivateBuf = Buffer.concat([\n\t\t\t\tdecipher.update(privateBuf), decipher.final()]);\n\t\t}\n\n\t\tkey = new PrivateKey(key);\n\t\tif (key.type !== keyType) {\n\t\t\tthrow (new Error('Outer key algorithm mismatch'));\n\t\t}\n\n\t\tvar sshbuf = new SSHBuffer({buffer: privateBuf});\n\t\tvar privateKeyParts;\n\t\tif (alg === 'ssh-dss') {\n\t\t\tprivateKeyParts = [ {\n\t\t\t\tname: 'x',\n\t\t\t\tdata: sshbuf.readBuffer()\n\t\t\t}];\n\t\t} else if (alg === 'ssh-rsa') {\n\t\t\tprivateKeyParts = [\n\t\t\t\t{ name: 'd', data: sshbuf.readBuffer() },\n\t\t\t\t{ name: 'p', data: sshbuf.readBuffer() },\n\t\t\t\t{ name: 'q', data: sshbuf.readBuffer() },\n\t\t\t\t{ name: 'iqmp', data: sshbuf.readBuffer() }\n\t\t\t];\n\t\t} else if (alg.match(/^ecdsa-sha2-nistp/)) {\n\t\t\tprivateKeyParts = [ {\n\t\t\t\tname: 'd', data: sshbuf.readBuffer()\n\t\t\t} ];\n\t\t} else if (alg === 'ssh-ed25519') {\n\t\t\tprivateKeyParts = [ {\n\t\t\t\tname: 'k', data: sshbuf.readBuffer()\n\t\t\t} ];\n\t\t} else {\n\t\t\tthrow new Error('Unsupported PPK key type: ' + alg);\n\t\t}\n\n\t\tkey = new PrivateKey({\n\t\t\ttype: key.type,\n\t\t\tparts: key.parts.concat(privateKeyParts)\n\t\t});\n\t}\n\n\tkey.comment = comment;\n\treturn (key);\n}\n\nfunction derivePPK2EncryptionKey(passphrase) {\n\tvar hash1 = crypto.createHash('sha1').update(Buffer.concat([\n\t\tBuffer.from([0, 0, 0, 0]),\n\t\tBuffer.from(passphrase)\n\t])).digest();\n\tvar hash2 = crypto.createHash('sha1').update(Buffer.concat([\n\t\tBuffer.from([0, 0, 0, 1]),\n\t\tBuffer.from(passphrase)\n\t])).digest();\n\treturn (Buffer.concat([hash1, hash2]).slice(0, 32));\n}\n\nfunction splitHeader(line) {\n\tvar idx = line.indexOf(':');\n\tif (idx === -1)\n\t\treturn (null);\n\tvar header = line.slice(0, idx);\n\t++idx;\n\twhile (line[idx] === ' ')\n\t\t++idx;\n\tvar rest = line.slice(idx);\n\treturn ([header, rest]);\n}\n\nfunction write(key, options) {\n\tassert.object(key);\n\tif (!Key.isKey(key))\n\t\tthrow (new Error('Must be a public key'));\n\n\tvar alg = rfc4253.keyTypeToAlg(key);\n\tvar buf = rfc4253.write(key);\n\tvar comment = key.comment || '';\n\n\tvar b64 = buf.toString('base64');\n\tvar lines = wrap(b64, 64);\n\n\tlines.unshift('Public-Lines: ' + lines.length);\n\tlines.unshift('Comment: ' + comment);\n\tlines.unshift('Encryption: none');\n\tlines.unshift('PuTTY-User-Key-File-2: ' + alg);\n\n\treturn (Buffer.from(lines.join('\\n') + '\\n'));\n}\n\nfunction wrap(txt, len) {\n\tvar lines = [];\n\tvar pos = 0;\n\twhile (pos < txt.length) {\n\t\tlines.push(txt.slice(pos, pos + 64));\n\t\tpos += 64;\n\t}\n\treturn (lines);\n}\n","// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tread: read.bind(undefined, false, undefined),\n\treadType: read.bind(undefined, false),\n\twrite: write,\n\t/* semi-private api, used by sshpk-agent */\n\treadPartial: read.bind(undefined, true),\n\n\t/* shared with ssh format */\n\treadInternal: read,\n\tkeyTypeToAlg: keyTypeToAlg,\n\talgToKeyType: algToKeyType\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar SSHBuffer = require('../ssh-buffer');\n\nfunction algToKeyType(alg) {\n\tassert.string(alg);\n\tif (alg === 'ssh-dss')\n\t\treturn ('dsa');\n\telse if (alg === 'ssh-rsa')\n\t\treturn ('rsa');\n\telse if (alg === 'ssh-ed25519')\n\t\treturn ('ed25519');\n\telse if (alg === 'ssh-curve25519')\n\t\treturn ('curve25519');\n\telse if (alg.match(/^ecdsa-sha2-/))\n\t\treturn ('ecdsa');\n\telse\n\t\tthrow (new Error('Unknown algorithm ' + alg));\n}\n\nfunction keyTypeToAlg(key) {\n\tassert.object(key);\n\tif (key.type === 'dsa')\n\t\treturn ('ssh-dss');\n\telse if (key.type === 'rsa')\n\t\treturn ('ssh-rsa');\n\telse if (key.type === 'ed25519')\n\t\treturn ('ssh-ed25519');\n\telse if (key.type === 'curve25519')\n\t\treturn ('ssh-curve25519');\n\telse if (key.type === 'ecdsa')\n\t\treturn ('ecdsa-sha2-' + key.part.curve.data.toString());\n\telse\n\t\tthrow (new Error('Unknown key type ' + key.type));\n}\n\nfunction read(partial, type, buf, options) {\n\tif (typeof (buf) === 'string')\n\t\tbuf = Buffer.from(buf);\n\tassert.buffer(buf, 'buf');\n\n\tvar key = {};\n\n\tvar parts = key.parts = [];\n\tvar sshbuf = new SSHBuffer({buffer: buf});\n\n\tvar alg = sshbuf.readString();\n\tassert.ok(!sshbuf.atEnd(), 'key must have at least one part');\n\n\tkey.type = algToKeyType(alg);\n\n\tvar partCount = algs.info[key.type].parts.length;\n\tif (type && type === 'private')\n\t\tpartCount = algs.privInfo[key.type].parts.length;\n\n\twhile (!sshbuf.atEnd() && parts.length < partCount)\n\t\tparts.push(sshbuf.readPart());\n\twhile (!partial && !sshbuf.atEnd())\n\t\tparts.push(sshbuf.readPart());\n\n\tassert.ok(parts.length >= 1,\n\t 'key must have at least one part');\n\tassert.ok(partial || sshbuf.atEnd(),\n\t 'leftover bytes at end of key');\n\n\tvar Constructor = Key;\n\tvar algInfo = algs.info[key.type];\n\tif (type === 'private' || algInfo.parts.length !== parts.length) {\n\t\talgInfo = algs.privInfo[key.type];\n\t\tConstructor = PrivateKey;\n\t}\n\tassert.strictEqual(algInfo.parts.length, parts.length);\n\n\tif (key.type === 'ecdsa') {\n\t\tvar res = /^ecdsa-sha2-(.+)$/.exec(alg);\n\t\tassert.ok(res !== null);\n\t\tassert.strictEqual(res[1], parts[0].data.toString());\n\t}\n\n\tvar normalized = true;\n\tfor (var i = 0; i < algInfo.parts.length; ++i) {\n\t\tvar p = parts[i];\n\t\tp.name = algInfo.parts[i];\n\t\t/*\n\t\t * OpenSSH stores ed25519 \"private\" keys as seed + public key\n\t\t * concat'd together (k followed by A). We want to keep them\n\t\t * separate for other formats that don't do this.\n\t\t */\n\t\tif (key.type === 'ed25519' && p.name === 'k')\n\t\t\tp.data = p.data.slice(0, 32);\n\n\t\tif (p.name !== 'curve' && algInfo.normalize !== false) {\n\t\t\tvar nd;\n\t\t\tif (key.type === 'ed25519') {\n\t\t\t\tnd = utils.zeroPadToLength(p.data, 32);\n\t\t\t} else {\n\t\t\t\tnd = utils.mpNormalize(p.data);\n\t\t\t}\n\t\t\tif (nd.toString('binary') !==\n\t\t\t p.data.toString('binary')) {\n\t\t\t\tp.data = nd;\n\t\t\t\tnormalized = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (normalized)\n\t\tkey._rfc4253Cache = sshbuf.toBuffer();\n\n\tif (partial && typeof (partial) === 'object') {\n\t\tpartial.remainder = sshbuf.remainder();\n\t\tpartial.consumed = sshbuf._offset;\n\t}\n\n\treturn (new Constructor(key));\n}\n\nfunction write(key, options) {\n\tassert.object(key);\n\n\tvar alg = keyTypeToAlg(key);\n\tvar i;\n\n\tvar algInfo = algs.info[key.type];\n\tif (PrivateKey.isPrivateKey(key))\n\t\talgInfo = algs.privInfo[key.type];\n\tvar parts = algInfo.parts;\n\n\tvar buf = new SSHBuffer({});\n\n\tbuf.writeString(alg);\n\n\tfor (i = 0; i < parts.length; ++i) {\n\t\tvar data = key.part[parts[i]].data;\n\t\tif (algInfo.normalize !== false) {\n\t\t\tif (key.type === 'ed25519')\n\t\t\t\tdata = utils.zeroPadToLength(data, 32);\n\t\t\telse\n\t\t\t\tdata = utils.mpNormalize(data);\n\t\t}\n\t\tif (key.type === 'ed25519' && parts[i] === 'k')\n\t\t\tdata = Buffer.concat([data, key.part.A.data]);\n\t\tbuf.writeBuffer(data);\n\t}\n\n\treturn (buf.toBuffer());\n}\n","// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\treadSSHPrivate: readSSHPrivate,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar crypto = require('crypto');\n\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\nvar rfc4253 = require('./rfc4253');\nvar SSHBuffer = require('../ssh-buffer');\nvar errors = require('../errors');\n\nvar bcrypt;\n\nfunction read(buf, options) {\n\treturn (pem.read(buf, options));\n}\n\nvar MAGIC = 'openssh-key-v1';\n\nfunction readSSHPrivate(type, buf, options) {\n\tbuf = new SSHBuffer({buffer: buf});\n\n\tvar magic = buf.readCString();\n\tassert.strictEqual(magic, MAGIC, 'bad magic string');\n\n\tvar cipher = buf.readString();\n\tvar kdf = buf.readString();\n\tvar kdfOpts = buf.readBuffer();\n\n\tvar nkeys = buf.readInt();\n\tif (nkeys !== 1) {\n\t\tthrow (new Error('OpenSSH-format key file contains ' +\n\t\t 'multiple keys: this is unsupported.'));\n\t}\n\n\tvar pubKey = buf.readBuffer();\n\n\tif (type === 'public') {\n\t\tassert.ok(buf.atEnd(), 'excess bytes left after key');\n\t\treturn (rfc4253.read(pubKey));\n\t}\n\n\tvar privKeyBlob = buf.readBuffer();\n\tassert.ok(buf.atEnd(), 'excess bytes left after key');\n\n\tvar kdfOptsBuf = new SSHBuffer({ buffer: kdfOpts });\n\tswitch (kdf) {\n\tcase 'none':\n\t\tif (cipher !== 'none') {\n\t\t\tthrow (new Error('OpenSSH-format key uses KDF \"none\" ' +\n\t\t\t 'but specifies a cipher other than \"none\"'));\n\t\t}\n\t\tbreak;\n\tcase 'bcrypt':\n\t\tvar salt = kdfOptsBuf.readBuffer();\n\t\tvar rounds = kdfOptsBuf.readInt();\n\t\tvar cinf = utils.opensshCipherInfo(cipher);\n\t\tif (bcrypt === undefined) {\n\t\t\tbcrypt = require('bcrypt-pbkdf');\n\t\t}\n\n\t\tif (typeof (options.passphrase) === 'string') {\n\t\t\toptions.passphrase = Buffer.from(options.passphrase,\n\t\t\t 'utf-8');\n\t\t}\n\t\tif (!Buffer.isBuffer(options.passphrase)) {\n\t\t\tthrow (new errors.KeyEncryptedError(\n\t\t\t options.filename, 'OpenSSH'));\n\t\t}\n\n\t\tvar pass = new Uint8Array(options.passphrase);\n\t\tvar salti = new Uint8Array(salt);\n\t\t/* Use the pbkdf to derive both the key and the IV. */\n\t\tvar out = new Uint8Array(cinf.keySize + cinf.blockSize);\n\t\tvar res = bcrypt.pbkdf(pass, pass.length, salti, salti.length,\n\t\t out, out.length, rounds);\n\t\tif (res !== 0) {\n\t\t\tthrow (new Error('bcrypt_pbkdf function returned ' +\n\t\t\t 'failure, parameters invalid'));\n\t\t}\n\t\tout = Buffer.from(out);\n\t\tvar ckey = out.slice(0, cinf.keySize);\n\t\tvar iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize);\n\t\tvar cipherStream = crypto.createDecipheriv(cinf.opensslName,\n\t\t ckey, iv);\n\t\tcipherStream.setAutoPadding(false);\n\t\tvar chunk, chunks = [];\n\t\tcipherStream.once('error', function (e) {\n\t\t\tif (e.toString().indexOf('bad decrypt') !== -1) {\n\t\t\t\tthrow (new Error('Incorrect passphrase ' +\n\t\t\t\t 'supplied, could not decrypt key'));\n\t\t\t}\n\t\t\tthrow (e);\n\t\t});\n\t\tcipherStream.write(privKeyBlob);\n\t\tcipherStream.end();\n\t\twhile ((chunk = cipherStream.read()) !== null)\n\t\t\tchunks.push(chunk);\n\t\tprivKeyBlob = Buffer.concat(chunks);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error(\n\t\t 'OpenSSH-format key uses unknown KDF \"' + kdf + '\"'));\n\t}\n\n\tbuf = new SSHBuffer({buffer: privKeyBlob});\n\n\tvar checkInt1 = buf.readInt();\n\tvar checkInt2 = buf.readInt();\n\tif (checkInt1 !== checkInt2) {\n\t\tthrow (new Error('Incorrect passphrase supplied, could not ' +\n\t\t 'decrypt key'));\n\t}\n\n\tvar ret = {};\n\tvar key = rfc4253.readInternal(ret, 'private', buf.remainder());\n\n\tbuf.skip(ret.consumed);\n\n\tvar comment = buf.readString();\n\tkey.comment = comment;\n\n\treturn (key);\n}\n\nfunction write(key, options) {\n\tvar pubKey;\n\tif (PrivateKey.isPrivateKey(key))\n\t\tpubKey = key.toPublic();\n\telse\n\t\tpubKey = key;\n\n\tvar cipher = 'none';\n\tvar kdf = 'none';\n\tvar kdfopts = Buffer.alloc(0);\n\tvar cinf = { blockSize: 8 };\n\tvar passphrase;\n\tif (options !== undefined) {\n\t\tpassphrase = options.passphrase;\n\t\tif (typeof (passphrase) === 'string')\n\t\t\tpassphrase = Buffer.from(passphrase, 'utf-8');\n\t\tif (passphrase !== undefined) {\n\t\t\tassert.buffer(passphrase, 'options.passphrase');\n\t\t\tassert.optionalString(options.cipher, 'options.cipher');\n\t\t\tcipher = options.cipher;\n\t\t\tif (cipher === undefined)\n\t\t\t\tcipher = 'aes128-ctr';\n\t\t\tcinf = utils.opensshCipherInfo(cipher);\n\t\t\tkdf = 'bcrypt';\n\t\t}\n\t}\n\n\tvar privBuf;\n\tif (PrivateKey.isPrivateKey(key)) {\n\t\tprivBuf = new SSHBuffer({});\n\t\tvar checkInt = crypto.randomBytes(4).readUInt32BE(0);\n\t\tprivBuf.writeInt(checkInt);\n\t\tprivBuf.writeInt(checkInt);\n\t\tprivBuf.write(key.toBuffer('rfc4253'));\n\t\tprivBuf.writeString(key.comment || '');\n\n\t\tvar n = 1;\n\t\twhile (privBuf._offset % cinf.blockSize !== 0)\n\t\t\tprivBuf.writeChar(n++);\n\t\tprivBuf = privBuf.toBuffer();\n\t}\n\n\tswitch (kdf) {\n\tcase 'none':\n\t\tbreak;\n\tcase 'bcrypt':\n\t\tvar salt = crypto.randomBytes(16);\n\t\tvar rounds = 16;\n\t\tvar kdfssh = new SSHBuffer({});\n\t\tkdfssh.writeBuffer(salt);\n\t\tkdfssh.writeInt(rounds);\n\t\tkdfopts = kdfssh.toBuffer();\n\n\t\tif (bcrypt === undefined) {\n\t\t\tbcrypt = require('bcrypt-pbkdf');\n\t\t}\n\t\tvar pass = new Uint8Array(passphrase);\n\t\tvar salti = new Uint8Array(salt);\n\t\t/* Use the pbkdf to derive both the key and the IV. */\n\t\tvar out = new Uint8Array(cinf.keySize + cinf.blockSize);\n\t\tvar res = bcrypt.pbkdf(pass, pass.length, salti, salti.length,\n\t\t out, out.length, rounds);\n\t\tif (res !== 0) {\n\t\t\tthrow (new Error('bcrypt_pbkdf function returned ' +\n\t\t\t 'failure, parameters invalid'));\n\t\t}\n\t\tout = Buffer.from(out);\n\t\tvar ckey = out.slice(0, cinf.keySize);\n\t\tvar iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize);\n\n\t\tvar cipherStream = crypto.createCipheriv(cinf.opensslName,\n\t\t ckey, iv);\n\t\tcipherStream.setAutoPadding(false);\n\t\tvar chunk, chunks = [];\n\t\tcipherStream.once('error', function (e) {\n\t\t\tthrow (e);\n\t\t});\n\t\tcipherStream.write(privBuf);\n\t\tcipherStream.end();\n\t\twhile ((chunk = cipherStream.read()) !== null)\n\t\t\tchunks.push(chunk);\n\t\tprivBuf = Buffer.concat(chunks);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error('Unsupported kdf ' + kdf));\n\t}\n\n\tvar buf = new SSHBuffer({});\n\n\tbuf.writeCString(MAGIC);\n\tbuf.writeString(cipher);\t/* cipher */\n\tbuf.writeString(kdf);\t\t/* kdf */\n\tbuf.writeBuffer(kdfopts);\t/* kdfoptions */\n\n\tbuf.writeInt(1);\t\t/* nkeys */\n\tbuf.writeBuffer(pubKey.toBuffer('rfc4253'));\n\n\tif (privBuf)\n\t\tbuf.writeBuffer(privBuf);\n\n\tbuf = buf.toBuffer();\n\n\tvar header;\n\tif (PrivateKey.isPrivateKey(key))\n\t\theader = 'OPENSSH PRIVATE KEY';\n\telse\n\t\theader = 'OPENSSH PUBLIC KEY';\n\n\tvar tmp = buf.toString('base64');\n\tvar len = tmp.length + (tmp.length / 70) +\n\t 18 + 16 + header.length*2 + 10;\n\tbuf = Buffer.alloc(len);\n\tvar o = 0;\n\to += buf.write('-----BEGIN ' + header + '-----\\n', o);\n\tfor (var i = 0; i < tmp.length; ) {\n\t\tvar limit = i + 70;\n\t\tif (limit > tmp.length)\n\t\t\tlimit = tmp.length;\n\t\to += buf.write(tmp.slice(i, limit), o);\n\t\tbuf[o++] = 10;\n\t\ti = limit;\n\t}\n\to += buf.write('-----END ' + header + '-----\\n', o);\n\n\treturn (buf.slice(0, o));\n}\n","// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar rfc4253 = require('./rfc4253');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\n\nvar sshpriv = require('./ssh-private');\n\n/*JSSTYLED*/\nvar SSHKEY_RE = /^([a-z0-9-]+)[ \\t]+([a-zA-Z0-9+\\/]+[=]*)([ \\t]+([^ \\t][^\\n]*[\\n]*)?)?$/;\n/*JSSTYLED*/\nvar SSHKEY_RE2 = /^([a-z0-9-]+)[ \\t\\n]+([a-zA-Z0-9+\\/][a-zA-Z0-9+\\/ \\t\\n=]*)([^a-zA-Z0-9+\\/ \\t\\n=].*)?$/;\n\nfunction read(buf, options) {\n\tif (typeof (buf) !== 'string') {\n\t\tassert.buffer(buf, 'buf');\n\t\tbuf = buf.toString('ascii');\n\t}\n\n\tvar trimmed = buf.trim().replace(/[\\\\\\r]/g, '');\n\tvar m = trimmed.match(SSHKEY_RE);\n\tif (!m)\n\t\tm = trimmed.match(SSHKEY_RE2);\n\tassert.ok(m, 'key must match regex');\n\n\tvar type = rfc4253.algToKeyType(m[1]);\n\tvar kbuf = Buffer.from(m[2], 'base64');\n\n\t/*\n\t * This is a bit tricky. If we managed to parse the key and locate the\n\t * key comment with the regex, then do a non-partial read and assert\n\t * that we have consumed all bytes. If we couldn't locate the key\n\t * comment, though, there may be whitespace shenanigans going on that\n\t * have conjoined the comment to the rest of the key. We do a partial\n\t * read in this case to try to make the best out of a sorry situation.\n\t */\n\tvar key;\n\tvar ret = {};\n\tif (m[4]) {\n\t\ttry {\n\t\t\tkey = rfc4253.read(kbuf);\n\n\t\t} catch (e) {\n\t\t\tm = trimmed.match(SSHKEY_RE2);\n\t\t\tassert.ok(m, 'key must match regex');\n\t\t\tkbuf = Buffer.from(m[2], 'base64');\n\t\t\tkey = rfc4253.readInternal(ret, 'public', kbuf);\n\t\t}\n\t} else {\n\t\tkey = rfc4253.readInternal(ret, 'public', kbuf);\n\t}\n\n\tassert.strictEqual(type, key.type);\n\n\tif (m[4] && m[4].length > 0) {\n\t\tkey.comment = m[4];\n\n\t} else if (ret.consumed) {\n\t\t/*\n\t\t * Now the magic: trying to recover the key comment when it's\n\t\t * gotten conjoined to the key or otherwise shenanigan'd.\n\t\t *\n\t\t * Work out how much base64 we used, then drop all non-base64\n\t\t * chars from the beginning up to this point in the the string.\n\t\t * Then offset in this and try to make up for missing = chars.\n\t\t */\n\t\tvar data = m[2] + (m[3] ? m[3] : '');\n\t\tvar realOffset = Math.ceil(ret.consumed / 3) * 4;\n\t\tdata = data.slice(0, realOffset - 2). /*JSSTYLED*/\n\t\t replace(/[^a-zA-Z0-9+\\/=]/g, '') +\n\t\t data.slice(realOffset - 2);\n\n\t\tvar padding = ret.consumed % 3;\n\t\tif (padding > 0 &&\n\t\t data.slice(realOffset - 1, realOffset) !== '=')\n\t\t\trealOffset--;\n\t\twhile (data.slice(realOffset, realOffset + 1) === '=')\n\t\t\trealOffset++;\n\n\t\t/* Finally, grab what we think is the comment & clean it up. */\n\t\tvar trailer = data.slice(realOffset);\n\t\ttrailer = trailer.replace(/[\\r\\n]/g, ' ').\n\t\t replace(/^\\s+/, '');\n\t\tif (trailer.match(/^[a-zA-Z0-9]/))\n\t\t\tkey.comment = trailer;\n\t}\n\n\treturn (key);\n}\n\nfunction write(key, options) {\n\tassert.object(key);\n\tif (!Key.isKey(key))\n\t\tthrow (new Error('Must be a public key'));\n\n\tvar parts = [];\n\tvar alg = rfc4253.keyTypeToAlg(key);\n\tparts.push(alg);\n\n\tvar buf = rfc4253.write(key);\n\tparts.push(buf.toString('base64'));\n\n\tif (key.comment)\n\t\tparts.push(key.comment);\n\n\treturn (Buffer.from(parts.join(' ')));\n}\n","// Copyright 2016 Joyent, Inc.\n\nvar x509 = require('./x509');\n\nmodule.exports = {\n\tread: read,\n\tverify: x509.verify,\n\tsign: x509.sign,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\nvar Identity = require('../identity');\nvar Signature = require('../signature');\nvar Certificate = require('../certificate');\n\nfunction read(buf, options) {\n\tif (typeof (buf) !== 'string') {\n\t\tassert.buffer(buf, 'buf');\n\t\tbuf = buf.toString('ascii');\n\t}\n\n\tvar lines = buf.trim().split(/[\\r\\n]+/g);\n\n\tvar m;\n\tvar si = -1;\n\twhile (!m && si < lines.length) {\n\t\tm = lines[++si].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*BEGIN CERTIFICATE[ ]*[-]+/);\n\t}\n\tassert.ok(m, 'invalid PEM header');\n\n\tvar m2;\n\tvar ei = lines.length;\n\twhile (!m2 && ei > 0) {\n\t\tm2 = lines[--ei].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*END CERTIFICATE[ ]*[-]+/);\n\t}\n\tassert.ok(m2, 'invalid PEM footer');\n\n\tlines = lines.slice(si, ei + 1);\n\n\tvar headers = {};\n\twhile (true) {\n\t\tlines = lines.slice(1);\n\t\tm = lines[0].match(/*JSSTYLED*/\n\t\t /^([A-Za-z0-9-]+): (.+)$/);\n\t\tif (!m)\n\t\t\tbreak;\n\t\theaders[m[1].toLowerCase()] = m[2];\n\t}\n\n\t/* Chop off the first and last lines */\n\tlines = lines.slice(0, -1).join('');\n\tbuf = Buffer.from(lines, 'base64');\n\n\treturn (x509.read(buf, options));\n}\n\nfunction write(cert, options) {\n\tvar dbuf = x509.write(cert, options);\n\n\tvar header = 'CERTIFICATE';\n\tvar tmp = dbuf.toString('base64');\n\tvar len = tmp.length + (tmp.length / 64) +\n\t 18 + 16 + header.length*2 + 10;\n\tvar buf = Buffer.alloc(len);\n\tvar o = 0;\n\to += buf.write('-----BEGIN ' + header + '-----\\n', o);\n\tfor (var i = 0; i < tmp.length; ) {\n\t\tvar limit = i + 64;\n\t\tif (limit > tmp.length)\n\t\t\tlimit = tmp.length;\n\t\to += buf.write(tmp.slice(i, limit), o);\n\t\tbuf[o++] = 10;\n\t\ti = limit;\n\t}\n\to += buf.write('-----END ' + header + '-----\\n', o);\n\n\treturn (buf.slice(0, o));\n}\n","// Copyright 2017 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\tverify: verify,\n\tsign: sign,\n\tsignAsync: signAsync,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\nvar Identity = require('../identity');\nvar Signature = require('../signature');\nvar Certificate = require('../certificate');\nvar pkcs8 = require('./pkcs8');\n\n/*\n * This file is based on RFC5280 (X.509).\n */\n\n/* Helper to read in a single mpint */\nfunction readMPInt(der, nm) {\n\tassert.strictEqual(der.peek(), asn1.Ber.Integer,\n\t nm + ' is not an Integer');\n\treturn (utils.mpNormalize(der.readString(asn1.Ber.Integer, true)));\n}\n\nfunction verify(cert, key) {\n\tvar sig = cert.signatures.x509;\n\tassert.object(sig, 'x509 signature');\n\n\tvar algParts = sig.algo.split('-');\n\tif (algParts[0] !== key.type)\n\t\treturn (false);\n\n\tvar blob = sig.cache;\n\tif (blob === undefined) {\n\t\tvar der = new asn1.BerWriter();\n\t\twriteTBSCert(cert, der);\n\t\tblob = der.buffer;\n\t}\n\n\tvar verifier = key.createVerify(algParts[1]);\n\tverifier.write(blob);\n\treturn (verifier.verify(sig.signature));\n}\n\nfunction Local(i) {\n\treturn (asn1.Ber.Context | asn1.Ber.Constructor | i);\n}\n\nfunction Context(i) {\n\treturn (asn1.Ber.Context | i);\n}\n\nvar SIGN_ALGS = {\n\t'rsa-md5': '1.2.840.113549.1.1.4',\n\t'rsa-sha1': '1.2.840.113549.1.1.5',\n\t'rsa-sha256': '1.2.840.113549.1.1.11',\n\t'rsa-sha384': '1.2.840.113549.1.1.12',\n\t'rsa-sha512': '1.2.840.113549.1.1.13',\n\t'dsa-sha1': '1.2.840.10040.4.3',\n\t'dsa-sha256': '2.16.840.1.101.3.4.3.2',\n\t'ecdsa-sha1': '1.2.840.10045.4.1',\n\t'ecdsa-sha256': '1.2.840.10045.4.3.2',\n\t'ecdsa-sha384': '1.2.840.10045.4.3.3',\n\t'ecdsa-sha512': '1.2.840.10045.4.3.4',\n\t'ed25519-sha512': '1.3.101.112'\n};\nObject.keys(SIGN_ALGS).forEach(function (k) {\n\tSIGN_ALGS[SIGN_ALGS[k]] = k;\n});\nSIGN_ALGS['1.3.14.3.2.3'] = 'rsa-md5';\nSIGN_ALGS['1.3.14.3.2.29'] = 'rsa-sha1';\n\nvar EXTS = {\n\t'issuerKeyId': '2.5.29.35',\n\t'altName': '2.5.29.17',\n\t'basicConstraints': '2.5.29.19',\n\t'keyUsage': '2.5.29.15',\n\t'extKeyUsage': '2.5.29.37'\n};\n\nfunction read(buf, options) {\n\tif (typeof (buf) === 'string') {\n\t\tbuf = Buffer.from(buf, 'binary');\n\t}\n\tassert.buffer(buf, 'buf');\n\n\tvar der = new asn1.BerReader(buf);\n\n\tder.readSequence();\n\tif (Math.abs(der.length - der.remain) > 1) {\n\t\tthrow (new Error('DER sequence does not contain whole byte ' +\n\t\t 'stream'));\n\t}\n\n\tvar tbsStart = der.offset;\n\tder.readSequence();\n\tvar sigOffset = der.offset + der.length;\n\tvar tbsEnd = sigOffset;\n\n\tif (der.peek() === Local(0)) {\n\t\tder.readSequence(Local(0));\n\t\tvar version = der.readInt();\n\t\tassert.ok(version <= 3,\n\t\t 'only x.509 versions up to v3 supported');\n\t}\n\n\tvar cert = {};\n\tcert.signatures = {};\n\tvar sig = (cert.signatures.x509 = {});\n\tsig.extras = {};\n\n\tcert.serial = readMPInt(der, 'serial');\n\n\tder.readSequence();\n\tvar after = der.offset + der.length;\n\tvar certAlgOid = der.readOID();\n\tvar certAlg = SIGN_ALGS[certAlgOid];\n\tif (certAlg === undefined)\n\t\tthrow (new Error('unknown signature algorithm ' + certAlgOid));\n\n\tder._offset = after;\n\tcert.issuer = Identity.parseAsn1(der);\n\n\tder.readSequence();\n\tcert.validFrom = readDate(der);\n\tcert.validUntil = readDate(der);\n\n\tcert.subjects = [Identity.parseAsn1(der)];\n\n\tder.readSequence();\n\tafter = der.offset + der.length;\n\tcert.subjectKey = pkcs8.readPkcs8(undefined, 'public', der);\n\tder._offset = after;\n\n\t/* issuerUniqueID */\n\tif (der.peek() === Local(1)) {\n\t\tder.readSequence(Local(1));\n\t\tsig.extras.issuerUniqueID =\n\t\t buf.slice(der.offset, der.offset + der.length);\n\t\tder._offset += der.length;\n\t}\n\n\t/* subjectUniqueID */\n\tif (der.peek() === Local(2)) {\n\t\tder.readSequence(Local(2));\n\t\tsig.extras.subjectUniqueID =\n\t\t buf.slice(der.offset, der.offset + der.length);\n\t\tder._offset += der.length;\n\t}\n\n\t/* extensions */\n\tif (der.peek() === Local(3)) {\n\t\tder.readSequence(Local(3));\n\t\tvar extEnd = der.offset + der.length;\n\t\tder.readSequence();\n\n\t\twhile (der.offset < extEnd)\n\t\t\treadExtension(cert, buf, der);\n\n\t\tassert.strictEqual(der.offset, extEnd);\n\t}\n\n\tassert.strictEqual(der.offset, sigOffset);\n\n\tder.readSequence();\n\tafter = der.offset + der.length;\n\tvar sigAlgOid = der.readOID();\n\tvar sigAlg = SIGN_ALGS[sigAlgOid];\n\tif (sigAlg === undefined)\n\t\tthrow (new Error('unknown signature algorithm ' + sigAlgOid));\n\tder._offset = after;\n\n\tvar sigData = der.readString(asn1.Ber.BitString, true);\n\tif (sigData[0] === 0)\n\t\tsigData = sigData.slice(1);\n\tvar algParts = sigAlg.split('-');\n\n\tsig.signature = Signature.parse(sigData, algParts[0], 'asn1');\n\tsig.signature.hashAlgorithm = algParts[1];\n\tsig.algo = sigAlg;\n\tsig.cache = buf.slice(tbsStart, tbsEnd);\n\n\treturn (new Certificate(cert));\n}\n\nfunction readDate(der) {\n\tif (der.peek() === asn1.Ber.UTCTime) {\n\t\treturn (utcTimeToDate(der.readString(asn1.Ber.UTCTime)));\n\t} else if (der.peek() === asn1.Ber.GeneralizedTime) {\n\t\treturn (gTimeToDate(der.readString(asn1.Ber.GeneralizedTime)));\n\t} else {\n\t\tthrow (new Error('Unsupported date format'));\n\t}\n}\n\nfunction writeDate(der, date) {\n\tif (date.getUTCFullYear() >= 2050 || date.getUTCFullYear() < 1950) {\n\t\tder.writeString(dateToGTime(date), asn1.Ber.GeneralizedTime);\n\t} else {\n\t\tder.writeString(dateToUTCTime(date), asn1.Ber.UTCTime);\n\t}\n}\n\n/* RFC5280, section 4.2.1.6 (GeneralName type) */\nvar ALTNAME = {\n\tOtherName: Local(0),\n\tRFC822Name: Context(1),\n\tDNSName: Context(2),\n\tX400Address: Local(3),\n\tDirectoryName: Local(4),\n\tEDIPartyName: Local(5),\n\tURI: Context(6),\n\tIPAddress: Context(7),\n\tOID: Context(8)\n};\n\n/* RFC5280, section 4.2.1.12 (KeyPurposeId) */\nvar EXTPURPOSE = {\n\t'serverAuth': '1.3.6.1.5.5.7.3.1',\n\t'clientAuth': '1.3.6.1.5.5.7.3.2',\n\t'codeSigning': '1.3.6.1.5.5.7.3.3',\n\n\t/* See https://github.com/joyent/oid-docs/blob/master/root.md */\n\t'joyentDocker': '1.3.6.1.4.1.38678.1.4.1',\n\t'joyentCmon': '1.3.6.1.4.1.38678.1.4.2'\n};\nvar EXTPURPOSE_REV = {};\nObject.keys(EXTPURPOSE).forEach(function (k) {\n\tEXTPURPOSE_REV[EXTPURPOSE[k]] = k;\n});\n\nvar KEYUSEBITS = [\n\t'signature', 'identity', 'keyEncryption',\n\t'encryption', 'keyAgreement', 'ca', 'crl'\n];\n\nfunction readExtension(cert, buf, der) {\n\tder.readSequence();\n\tvar after = der.offset + der.length;\n\tvar extId = der.readOID();\n\tvar id;\n\tvar sig = cert.signatures.x509;\n\tif (!sig.extras.exts)\n\t\tsig.extras.exts = [];\n\n\tvar critical;\n\tif (der.peek() === asn1.Ber.Boolean)\n\t\tcritical = der.readBoolean();\n\n\tswitch (extId) {\n\tcase (EXTS.basicConstraints):\n\t\tder.readSequence(asn1.Ber.OctetString);\n\t\tder.readSequence();\n\t\tvar bcEnd = der.offset + der.length;\n\t\tvar ca = false;\n\t\tif (der.peek() === asn1.Ber.Boolean)\n\t\t\tca = der.readBoolean();\n\t\tif (cert.purposes === undefined)\n\t\t\tcert.purposes = [];\n\t\tif (ca === true)\n\t\t\tcert.purposes.push('ca');\n\t\tvar bc = { oid: extId, critical: critical };\n\t\tif (der.offset < bcEnd && der.peek() === asn1.Ber.Integer)\n\t\t\tbc.pathLen = der.readInt();\n\t\tsig.extras.exts.push(bc);\n\t\tbreak;\n\tcase (EXTS.extKeyUsage):\n\t\tder.readSequence(asn1.Ber.OctetString);\n\t\tder.readSequence();\n\t\tif (cert.purposes === undefined)\n\t\t\tcert.purposes = [];\n\t\tvar ekEnd = der.offset + der.length;\n\t\twhile (der.offset < ekEnd) {\n\t\t\tvar oid = der.readOID();\n\t\t\tcert.purposes.push(EXTPURPOSE_REV[oid] || oid);\n\t\t}\n\t\t/*\n\t\t * This is a bit of a hack: in the case where we have a cert\n\t\t * that's only allowed to do serverAuth or clientAuth (and not\n\t\t * the other), we want to make sure all our Subjects are of\n\t\t * the right type. But we already parsed our Subjects and\n\t\t * decided if they were hosts or users earlier (since it appears\n\t\t * first in the cert).\n\t\t *\n\t\t * So we go through and mutate them into the right kind here if\n\t\t * it doesn't match. This might not be hugely beneficial, as it\n\t\t * seems that single-purpose certs are not often seen in the\n\t\t * wild.\n\t\t */\n\t\tif (cert.purposes.indexOf('serverAuth') !== -1 &&\n\t\t cert.purposes.indexOf('clientAuth') === -1) {\n\t\t\tcert.subjects.forEach(function (ide) {\n\t\t\t\tif (ide.type !== 'host') {\n\t\t\t\t\tide.type = 'host';\n\t\t\t\t\tide.hostname = ide.uid ||\n\t\t\t\t\t ide.email ||\n\t\t\t\t\t ide.components[0].value;\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (cert.purposes.indexOf('clientAuth') !== -1 &&\n\t\t cert.purposes.indexOf('serverAuth') === -1) {\n\t\t\tcert.subjects.forEach(function (ide) {\n\t\t\t\tif (ide.type !== 'user') {\n\t\t\t\t\tide.type = 'user';\n\t\t\t\t\tide.uid = ide.hostname ||\n\t\t\t\t\t ide.email ||\n\t\t\t\t\t ide.components[0].value;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tsig.extras.exts.push({ oid: extId, critical: critical });\n\t\tbreak;\n\tcase (EXTS.keyUsage):\n\t\tder.readSequence(asn1.Ber.OctetString);\n\t\tvar bits = der.readString(asn1.Ber.BitString, true);\n\t\tvar setBits = readBitField(bits, KEYUSEBITS);\n\t\tsetBits.forEach(function (bit) {\n\t\t\tif (cert.purposes === undefined)\n\t\t\t\tcert.purposes = [];\n\t\t\tif (cert.purposes.indexOf(bit) === -1)\n\t\t\t\tcert.purposes.push(bit);\n\t\t});\n\t\tsig.extras.exts.push({ oid: extId, critical: critical,\n\t\t bits: bits });\n\t\tbreak;\n\tcase (EXTS.altName):\n\t\tder.readSequence(asn1.Ber.OctetString);\n\t\tder.readSequence();\n\t\tvar aeEnd = der.offset + der.length;\n\t\twhile (der.offset < aeEnd) {\n\t\t\tswitch (der.peek()) {\n\t\t\tcase ALTNAME.OtherName:\n\t\t\tcase ALTNAME.EDIPartyName:\n\t\t\t\tder.readSequence();\n\t\t\t\tder._offset += der.length;\n\t\t\t\tbreak;\n\t\t\tcase ALTNAME.OID:\n\t\t\t\tder.readOID(ALTNAME.OID);\n\t\t\t\tbreak;\n\t\t\tcase ALTNAME.RFC822Name:\n\t\t\t\t/* RFC822 specifies email addresses */\n\t\t\t\tvar email = der.readString(ALTNAME.RFC822Name);\n\t\t\t\tid = Identity.forEmail(email);\n\t\t\t\tif (!cert.subjects[0].equals(id))\n\t\t\t\t\tcert.subjects.push(id);\n\t\t\t\tbreak;\n\t\t\tcase ALTNAME.DirectoryName:\n\t\t\t\tder.readSequence(ALTNAME.DirectoryName);\n\t\t\t\tid = Identity.parseAsn1(der);\n\t\t\t\tif (!cert.subjects[0].equals(id))\n\t\t\t\t\tcert.subjects.push(id);\n\t\t\t\tbreak;\n\t\t\tcase ALTNAME.DNSName:\n\t\t\t\tvar host = der.readString(\n\t\t\t\t ALTNAME.DNSName);\n\t\t\t\tid = Identity.forHost(host);\n\t\t\t\tif (!cert.subjects[0].equals(id))\n\t\t\t\t\tcert.subjects.push(id);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tder.readString(der.peek());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tsig.extras.exts.push({ oid: extId, critical: critical });\n\t\tbreak;\n\tdefault:\n\t\tsig.extras.exts.push({\n\t\t\toid: extId,\n\t\t\tcritical: critical,\n\t\t\tdata: der.readString(asn1.Ber.OctetString, true)\n\t\t});\n\t\tbreak;\n\t}\n\n\tder._offset = after;\n}\n\nvar UTCTIME_RE =\n /^([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/;\nfunction utcTimeToDate(t) {\n\tvar m = t.match(UTCTIME_RE);\n\tassert.ok(m, 'timestamps must be in UTC');\n\tvar d = new Date();\n\n\tvar thisYear = d.getUTCFullYear();\n\tvar century = Math.floor(thisYear / 100) * 100;\n\n\tvar year = parseInt(m[1], 10);\n\tif (thisYear % 100 < 50 && year >= 60)\n\t\tyear += (century - 1);\n\telse\n\t\tyear += century;\n\td.setUTCFullYear(year, parseInt(m[2], 10) - 1, parseInt(m[3], 10));\n\td.setUTCHours(parseInt(m[4], 10), parseInt(m[5], 10));\n\tif (m[6] && m[6].length > 0)\n\t\td.setUTCSeconds(parseInt(m[6], 10));\n\treturn (d);\n}\n\nvar GTIME_RE =\n /^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/;\nfunction gTimeToDate(t) {\n\tvar m = t.match(GTIME_RE);\n\tassert.ok(m);\n\tvar d = new Date();\n\n\td.setUTCFullYear(parseInt(m[1], 10), parseInt(m[2], 10) - 1,\n\t parseInt(m[3], 10));\n\td.setUTCHours(parseInt(m[4], 10), parseInt(m[5], 10));\n\tif (m[6] && m[6].length > 0)\n\t\td.setUTCSeconds(parseInt(m[6], 10));\n\treturn (d);\n}\n\nfunction zeroPad(n, m) {\n\tif (m === undefined)\n\t\tm = 2;\n\tvar s = '' + n;\n\twhile (s.length < m)\n\t\ts = '0' + s;\n\treturn (s);\n}\n\nfunction dateToUTCTime(d) {\n\tvar s = '';\n\ts += zeroPad(d.getUTCFullYear() % 100);\n\ts += zeroPad(d.getUTCMonth() + 1);\n\ts += zeroPad(d.getUTCDate());\n\ts += zeroPad(d.getUTCHours());\n\ts += zeroPad(d.getUTCMinutes());\n\ts += zeroPad(d.getUTCSeconds());\n\ts += 'Z';\n\treturn (s);\n}\n\nfunction dateToGTime(d) {\n\tvar s = '';\n\ts += zeroPad(d.getUTCFullYear(), 4);\n\ts += zeroPad(d.getUTCMonth() + 1);\n\ts += zeroPad(d.getUTCDate());\n\ts += zeroPad(d.getUTCHours());\n\ts += zeroPad(d.getUTCMinutes());\n\ts += zeroPad(d.getUTCSeconds());\n\ts += 'Z';\n\treturn (s);\n}\n\nfunction sign(cert, key) {\n\tif (cert.signatures.x509 === undefined)\n\t\tcert.signatures.x509 = {};\n\tvar sig = cert.signatures.x509;\n\n\tsig.algo = key.type + '-' + key.defaultHashAlgorithm();\n\tif (SIGN_ALGS[sig.algo] === undefined)\n\t\treturn (false);\n\n\tvar der = new asn1.BerWriter();\n\twriteTBSCert(cert, der);\n\tvar blob = der.buffer;\n\tsig.cache = blob;\n\n\tvar signer = key.createSign();\n\tsigner.write(blob);\n\tcert.signatures.x509.signature = signer.sign();\n\n\treturn (true);\n}\n\nfunction signAsync(cert, signer, done) {\n\tif (cert.signatures.x509 === undefined)\n\t\tcert.signatures.x509 = {};\n\tvar sig = cert.signatures.x509;\n\n\tvar der = new asn1.BerWriter();\n\twriteTBSCert(cert, der);\n\tvar blob = der.buffer;\n\tsig.cache = blob;\n\n\tsigner(blob, function (err, signature) {\n\t\tif (err) {\n\t\t\tdone(err);\n\t\t\treturn;\n\t\t}\n\t\tsig.algo = signature.type + '-' + signature.hashAlgorithm;\n\t\tif (SIGN_ALGS[sig.algo] === undefined) {\n\t\t\tdone(new Error('Invalid signing algorithm \"' +\n\t\t\t sig.algo + '\"'));\n\t\t\treturn;\n\t\t}\n\t\tsig.signature = signature;\n\t\tdone();\n\t});\n}\n\nfunction write(cert, options) {\n\tvar sig = cert.signatures.x509;\n\tassert.object(sig, 'x509 signature');\n\n\tvar der = new asn1.BerWriter();\n\tder.startSequence();\n\tif (sig.cache) {\n\t\tder._ensure(sig.cache.length);\n\t\tsig.cache.copy(der._buf, der._offset);\n\t\tder._offset += sig.cache.length;\n\t} else {\n\t\twriteTBSCert(cert, der);\n\t}\n\n\tder.startSequence();\n\tder.writeOID(SIGN_ALGS[sig.algo]);\n\tif (sig.algo.match(/^rsa-/))\n\t\tder.writeNull();\n\tder.endSequence();\n\n\tvar sigData = sig.signature.toBuffer('asn1');\n\tvar data = Buffer.alloc(sigData.length + 1);\n\tdata[0] = 0;\n\tsigData.copy(data, 1);\n\tder.writeBuffer(data, asn1.Ber.BitString);\n\tder.endSequence();\n\n\treturn (der.buffer);\n}\n\nfunction writeTBSCert(cert, der) {\n\tvar sig = cert.signatures.x509;\n\tassert.object(sig, 'x509 signature');\n\n\tder.startSequence();\n\n\tder.startSequence(Local(0));\n\tder.writeInt(2);\n\tder.endSequence();\n\n\tder.writeBuffer(utils.mpNormalize(cert.serial), asn1.Ber.Integer);\n\n\tder.startSequence();\n\tder.writeOID(SIGN_ALGS[sig.algo]);\n\tif (sig.algo.match(/^rsa-/))\n\t\tder.writeNull();\n\tder.endSequence();\n\n\tcert.issuer.toAsn1(der);\n\n\tder.startSequence();\n\twriteDate(der, cert.validFrom);\n\twriteDate(der, cert.validUntil);\n\tder.endSequence();\n\n\tvar subject = cert.subjects[0];\n\tvar altNames = cert.subjects.slice(1);\n\tsubject.toAsn1(der);\n\n\tpkcs8.writePkcs8(der, cert.subjectKey);\n\n\tif (sig.extras && sig.extras.issuerUniqueID) {\n\t\tder.writeBuffer(sig.extras.issuerUniqueID, Local(1));\n\t}\n\n\tif (sig.extras && sig.extras.subjectUniqueID) {\n\t\tder.writeBuffer(sig.extras.subjectUniqueID, Local(2));\n\t}\n\n\tif (altNames.length > 0 || subject.type === 'host' ||\n\t (cert.purposes !== undefined && cert.purposes.length > 0) ||\n\t (sig.extras && sig.extras.exts)) {\n\t\tder.startSequence(Local(3));\n\t\tder.startSequence();\n\n\t\tvar exts = [];\n\t\tif (cert.purposes !== undefined && cert.purposes.length > 0) {\n\t\t\texts.push({\n\t\t\t\toid: EXTS.basicConstraints,\n\t\t\t\tcritical: true\n\t\t\t});\n\t\t\texts.push({\n\t\t\t\toid: EXTS.keyUsage,\n\t\t\t\tcritical: true\n\t\t\t});\n\t\t\texts.push({\n\t\t\t\toid: EXTS.extKeyUsage,\n\t\t\t\tcritical: true\n\t\t\t});\n\t\t}\n\t\texts.push({ oid: EXTS.altName });\n\t\tif (sig.extras && sig.extras.exts)\n\t\t\texts = sig.extras.exts;\n\n\t\tfor (var i = 0; i < exts.length; ++i) {\n\t\t\tder.startSequence();\n\t\t\tder.writeOID(exts[i].oid);\n\n\t\t\tif (exts[i].critical !== undefined)\n\t\t\t\tder.writeBoolean(exts[i].critical);\n\n\t\t\tif (exts[i].oid === EXTS.altName) {\n\t\t\t\tder.startSequence(asn1.Ber.OctetString);\n\t\t\t\tder.startSequence();\n\t\t\t\tif (subject.type === 'host') {\n\t\t\t\t\tder.writeString(subject.hostname,\n\t\t\t\t\t Context(2));\n\t\t\t\t}\n\t\t\t\tfor (var j = 0; j < altNames.length; ++j) {\n\t\t\t\t\tif (altNames[j].type === 'host') {\n\t\t\t\t\t\tder.writeString(\n\t\t\t\t\t\t altNames[j].hostname,\n\t\t\t\t\t\t ALTNAME.DNSName);\n\t\t\t\t\t} else if (altNames[j].type ===\n\t\t\t\t\t 'email') {\n\t\t\t\t\t\tder.writeString(\n\t\t\t\t\t\t altNames[j].email,\n\t\t\t\t\t\t ALTNAME.RFC822Name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * Encode anything else as a\n\t\t\t\t\t\t * DN style name for now.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tder.startSequence(\n\t\t\t\t\t\t ALTNAME.DirectoryName);\n\t\t\t\t\t\taltNames[j].toAsn1(der);\n\t\t\t\t\t\tder.endSequence();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tder.endSequence();\n\t\t\t\tder.endSequence();\n\t\t\t} else if (exts[i].oid === EXTS.basicConstraints) {\n\t\t\t\tder.startSequence(asn1.Ber.OctetString);\n\t\t\t\tder.startSequence();\n\t\t\t\tvar ca = (cert.purposes.indexOf('ca') !== -1);\n\t\t\t\tvar pathLen = exts[i].pathLen;\n\t\t\t\tder.writeBoolean(ca);\n\t\t\t\tif (pathLen !== undefined)\n\t\t\t\t\tder.writeInt(pathLen);\n\t\t\t\tder.endSequence();\n\t\t\t\tder.endSequence();\n\t\t\t} else if (exts[i].oid === EXTS.extKeyUsage) {\n\t\t\t\tder.startSequence(asn1.Ber.OctetString);\n\t\t\t\tder.startSequence();\n\t\t\t\tcert.purposes.forEach(function (purpose) {\n\t\t\t\t\tif (purpose === 'ca')\n\t\t\t\t\t\treturn;\n\t\t\t\t\tif (KEYUSEBITS.indexOf(purpose) !== -1)\n\t\t\t\t\t\treturn;\n\t\t\t\t\tvar oid = purpose;\n\t\t\t\t\tif (EXTPURPOSE[purpose] !== undefined)\n\t\t\t\t\t\toid = EXTPURPOSE[purpose];\n\t\t\t\t\tder.writeOID(oid);\n\t\t\t\t});\n\t\t\t\tder.endSequence();\n\t\t\t\tder.endSequence();\n\t\t\t} else if (exts[i].oid === EXTS.keyUsage) {\n\t\t\t\tder.startSequence(asn1.Ber.OctetString);\n\t\t\t\t/*\n\t\t\t\t * If we parsed this certificate from a byte\n\t\t\t\t * stream (i.e. we didn't generate it in sshpk)\n\t\t\t\t * then we'll have a \".bits\" property on the\n\t\t\t\t * ext with the original raw byte contents.\n\t\t\t\t *\n\t\t\t\t * If we have this, use it here instead of\n\t\t\t\t * regenerating it. This guarantees we output\n\t\t\t\t * the same data we parsed, so signatures still\n\t\t\t\t * validate.\n\t\t\t\t */\n\t\t\t\tif (exts[i].bits !== undefined) {\n\t\t\t\t\tder.writeBuffer(exts[i].bits,\n\t\t\t\t\t asn1.Ber.BitString);\n\t\t\t\t} else {\n\t\t\t\t\tvar bits = writeBitField(cert.purposes,\n\t\t\t\t\t KEYUSEBITS);\n\t\t\t\t\tder.writeBuffer(bits,\n\t\t\t\t\t asn1.Ber.BitString);\n\t\t\t\t}\n\t\t\t\tder.endSequence();\n\t\t\t} else {\n\t\t\t\tder.writeBuffer(exts[i].data,\n\t\t\t\t asn1.Ber.OctetString);\n\t\t\t}\n\n\t\t\tder.endSequence();\n\t\t}\n\n\t\tder.endSequence();\n\t\tder.endSequence();\n\t}\n\n\tder.endSequence();\n}\n\n/*\n * Reads an ASN.1 BER bitfield out of the Buffer produced by doing\n * `BerReader#readString(asn1.Ber.BitString)`. That function gives us the raw\n * contents of the BitString tag, which is a count of unused bits followed by\n * the bits as a right-padded byte string.\n *\n * `bits` is the Buffer, `bitIndex` should contain an array of string names\n * for the bits in the string, ordered starting with bit #0 in the ASN.1 spec.\n *\n * Returns an array of Strings, the names of the bits that were set to 1.\n */\nfunction readBitField(bits, bitIndex) {\n\tvar bitLen = 8 * (bits.length - 1) - bits[0];\n\tvar setBits = {};\n\tfor (var i = 0; i < bitLen; ++i) {\n\t\tvar byteN = 1 + Math.floor(i / 8);\n\t\tvar bit = 7 - (i % 8);\n\t\tvar mask = 1 << bit;\n\t\tvar bitVal = ((bits[byteN] & mask) !== 0);\n\t\tvar name = bitIndex[i];\n\t\tif (bitVal && typeof (name) === 'string') {\n\t\t\tsetBits[name] = true;\n\t\t}\n\t}\n\treturn (Object.keys(setBits));\n}\n\n/*\n * `setBits` is an array of strings, containing the names for each bit that\n * sould be set to 1. `bitIndex` is same as in `readBitField()`.\n *\n * Returns a Buffer, ready to be written out with `BerWriter#writeString()`.\n */\nfunction writeBitField(setBits, bitIndex) {\n\tvar bitLen = bitIndex.length;\n\tvar blen = Math.ceil(bitLen / 8);\n\tvar unused = blen * 8 - bitLen;\n\tvar bits = Buffer.alloc(1 + blen); // zero-filled\n\tbits[0] = unused;\n\tfor (var i = 0; i < bitLen; ++i) {\n\t\tvar byteN = 1 + Math.floor(i / 8);\n\t\tvar bit = 7 - (i % 8);\n\t\tvar mask = 1 << bit;\n\t\tvar name = bitIndex[i];\n\t\tif (name === undefined)\n\t\t\tcontinue;\n\t\tvar bitVal = (setBits.indexOf(name) !== -1);\n\t\tif (bitVal) {\n\t\t\tbits[byteN] |= mask;\n\t\t}\n\t}\n\treturn (bits);\n}\n","// Copyright 2017 Joyent, Inc.\n\nmodule.exports = Identity;\n\nvar assert = require('assert-plus');\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar errs = require('./errors');\nvar util = require('util');\nvar utils = require('./utils');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\n\n/*JSSTYLED*/\nvar DNS_NAME_RE = /^([*]|[a-z0-9][a-z0-9\\-]{0,62})(?:\\.([*]|[a-z0-9][a-z0-9\\-]{0,62}))*$/i;\n\nvar oids = {};\noids.cn = '2.5.4.3';\noids.o = '2.5.4.10';\noids.ou = '2.5.4.11';\noids.l = '2.5.4.7';\noids.s = '2.5.4.8';\noids.c = '2.5.4.6';\noids.sn = '2.5.4.4';\noids.postalCode = '2.5.4.17';\noids.serialNumber = '2.5.4.5';\noids.street = '2.5.4.9';\noids.x500UniqueIdentifier = '2.5.4.45';\noids.role = '2.5.4.72';\noids.telephoneNumber = '2.5.4.20';\noids.description = '2.5.4.13';\noids.dc = '0.9.2342.19200300.100.1.25';\noids.uid = '0.9.2342.19200300.100.1.1';\noids.mail = '0.9.2342.19200300.100.1.3';\noids.title = '2.5.4.12';\noids.gn = '2.5.4.42';\noids.initials = '2.5.4.43';\noids.pseudonym = '2.5.4.65';\noids.emailAddress = '1.2.840.113549.1.9.1';\n\nvar unoids = {};\nObject.keys(oids).forEach(function (k) {\n\tunoids[oids[k]] = k;\n});\n\nfunction Identity(opts) {\n\tvar self = this;\n\tassert.object(opts, 'options');\n\tassert.arrayOfObject(opts.components, 'options.components');\n\tthis.components = opts.components;\n\tthis.componentLookup = {};\n\tthis.components.forEach(function (c) {\n\t\tif (c.name && !c.oid)\n\t\t\tc.oid = oids[c.name];\n\t\tif (c.oid && !c.name)\n\t\t\tc.name = unoids[c.oid];\n\t\tif (self.componentLookup[c.name] === undefined)\n\t\t\tself.componentLookup[c.name] = [];\n\t\tself.componentLookup[c.name].push(c);\n\t});\n\tif (this.componentLookup.cn && this.componentLookup.cn.length > 0) {\n\t\tthis.cn = this.componentLookup.cn[0].value;\n\t}\n\tassert.optionalString(opts.type, 'options.type');\n\tif (opts.type === undefined) {\n\t\tif (this.components.length === 1 &&\n\t\t this.componentLookup.cn &&\n\t\t this.componentLookup.cn.length === 1 &&\n\t\t this.componentLookup.cn[0].value.match(DNS_NAME_RE)) {\n\t\t\tthis.type = 'host';\n\t\t\tthis.hostname = this.componentLookup.cn[0].value;\n\n\t\t} else if (this.componentLookup.dc &&\n\t\t this.components.length === this.componentLookup.dc.length) {\n\t\t\tthis.type = 'host';\n\t\t\tthis.hostname = this.componentLookup.dc.map(\n\t\t\t function (c) {\n\t\t\t\treturn (c.value);\n\t\t\t}).join('.');\n\n\t\t} else if (this.componentLookup.uid &&\n\t\t this.components.length ===\n\t\t this.componentLookup.uid.length) {\n\t\t\tthis.type = 'user';\n\t\t\tthis.uid = this.componentLookup.uid[0].value;\n\n\t\t} else if (this.componentLookup.cn &&\n\t\t this.componentLookup.cn.length === 1 &&\n\t\t this.componentLookup.cn[0].value.match(DNS_NAME_RE)) {\n\t\t\tthis.type = 'host';\n\t\t\tthis.hostname = this.componentLookup.cn[0].value;\n\n\t\t} else if (this.componentLookup.uid &&\n\t\t this.componentLookup.uid.length === 1) {\n\t\t\tthis.type = 'user';\n\t\t\tthis.uid = this.componentLookup.uid[0].value;\n\n\t\t} else if (this.componentLookup.mail &&\n\t\t this.componentLookup.mail.length === 1) {\n\t\t\tthis.type = 'email';\n\t\t\tthis.email = this.componentLookup.mail[0].value;\n\n\t\t} else if (this.componentLookup.cn &&\n\t\t this.componentLookup.cn.length === 1) {\n\t\t\tthis.type = 'user';\n\t\t\tthis.uid = this.componentLookup.cn[0].value;\n\n\t\t} else {\n\t\t\tthis.type = 'unknown';\n\t\t}\n\t} else {\n\t\tthis.type = opts.type;\n\t\tif (this.type === 'host')\n\t\t\tthis.hostname = opts.hostname;\n\t\telse if (this.type === 'user')\n\t\t\tthis.uid = opts.uid;\n\t\telse if (this.type === 'email')\n\t\t\tthis.email = opts.email;\n\t\telse\n\t\t\tthrow (new Error('Unknown type ' + this.type));\n\t}\n}\n\nIdentity.prototype.toString = function () {\n\treturn (this.components.map(function (c) {\n\t\tvar n = c.name.toUpperCase();\n\t\t/*JSSTYLED*/\n\t\tn = n.replace(/=/g, '\\\\=');\n\t\tvar v = c.value;\n\t\t/*JSSTYLED*/\n\t\tv = v.replace(/,/g, '\\\\,');\n\t\treturn (n + '=' + v);\n\t}).join(', '));\n};\n\nIdentity.prototype.get = function (name, asArray) {\n\tassert.string(name, 'name');\n\tvar arr = this.componentLookup[name];\n\tif (arr === undefined || arr.length === 0)\n\t\treturn (undefined);\n\tif (!asArray && arr.length > 1)\n\t\tthrow (new Error('Multiple values for attribute ' + name));\n\tif (!asArray)\n\t\treturn (arr[0].value);\n\treturn (arr.map(function (c) {\n\t\treturn (c.value);\n\t}));\n};\n\nIdentity.prototype.toArray = function (idx) {\n\treturn (this.components.map(function (c) {\n\t\treturn ({\n\t\t\tname: c.name,\n\t\t\tvalue: c.value\n\t\t});\n\t}));\n};\n\n/*\n * These are from X.680 -- PrintableString allowed chars are in section 37.4\n * table 8. Spec for IA5Strings is \"1,6 + SPACE + DEL\" where 1 refers to\n * ISO IR #001 (standard ASCII control characters) and 6 refers to ISO IR #006\n * (the basic ASCII character set).\n */\n/* JSSTYLED */\nvar NOT_PRINTABLE = /[^a-zA-Z0-9 '(),+.\\/:=?-]/;\n/* JSSTYLED */\nvar NOT_IA5 = /[^\\x00-\\x7f]/;\n\nIdentity.prototype.toAsn1 = function (der, tag) {\n\tder.startSequence(tag);\n\tthis.components.forEach(function (c) {\n\t\tder.startSequence(asn1.Ber.Constructor | asn1.Ber.Set);\n\t\tder.startSequence();\n\t\tder.writeOID(c.oid);\n\t\t/*\n\t\t * If we fit in a PrintableString, use that. Otherwise use an\n\t\t * IA5String or UTF8String.\n\t\t *\n\t\t * If this identity was parsed from a DN, use the ASN.1 types\n\t\t * from the original representation (otherwise this might not\n\t\t * be a full match for the original in some validators).\n\t\t */\n\t\tif (c.asn1type === asn1.Ber.Utf8String ||\n\t\t c.value.match(NOT_IA5)) {\n\t\t\tvar v = Buffer.from(c.value, 'utf8');\n\t\t\tder.writeBuffer(v, asn1.Ber.Utf8String);\n\n\t\t} else if (c.asn1type === asn1.Ber.IA5String ||\n\t\t c.value.match(NOT_PRINTABLE)) {\n\t\t\tder.writeString(c.value, asn1.Ber.IA5String);\n\n\t\t} else {\n\t\t\tvar type = asn1.Ber.PrintableString;\n\t\t\tif (c.asn1type !== undefined)\n\t\t\t\ttype = c.asn1type;\n\t\t\tder.writeString(c.value, type);\n\t\t}\n\t\tder.endSequence();\n\t\tder.endSequence();\n\t});\n\tder.endSequence();\n};\n\nfunction globMatch(a, b) {\n\tif (a === '**' || b === '**')\n\t\treturn (true);\n\tvar aParts = a.split('.');\n\tvar bParts = b.split('.');\n\tif (aParts.length !== bParts.length)\n\t\treturn (false);\n\tfor (var i = 0; i < aParts.length; ++i) {\n\t\tif (aParts[i] === '*' || bParts[i] === '*')\n\t\t\tcontinue;\n\t\tif (aParts[i] !== bParts[i])\n\t\t\treturn (false);\n\t}\n\treturn (true);\n}\n\nIdentity.prototype.equals = function (other) {\n\tif (!Identity.isIdentity(other, [1, 0]))\n\t\treturn (false);\n\tif (other.components.length !== this.components.length)\n\t\treturn (false);\n\tfor (var i = 0; i < this.components.length; ++i) {\n\t\tif (this.components[i].oid !== other.components[i].oid)\n\t\t\treturn (false);\n\t\tif (!globMatch(this.components[i].value,\n\t\t other.components[i].value)) {\n\t\t\treturn (false);\n\t\t}\n\t}\n\treturn (true);\n};\n\nIdentity.forHost = function (hostname) {\n\tassert.string(hostname, 'hostname');\n\treturn (new Identity({\n\t\ttype: 'host',\n\t\thostname: hostname,\n\t\tcomponents: [ { name: 'cn', value: hostname } ]\n\t}));\n};\n\nIdentity.forUser = function (uid) {\n\tassert.string(uid, 'uid');\n\treturn (new Identity({\n\t\ttype: 'user',\n\t\tuid: uid,\n\t\tcomponents: [ { name: 'uid', value: uid } ]\n\t}));\n};\n\nIdentity.forEmail = function (email) {\n\tassert.string(email, 'email');\n\treturn (new Identity({\n\t\ttype: 'email',\n\t\temail: email,\n\t\tcomponents: [ { name: 'mail', value: email } ]\n\t}));\n};\n\nIdentity.parseDN = function (dn) {\n\tassert.string(dn, 'dn');\n\tvar parts = [''];\n\tvar idx = 0;\n\tvar rem = dn;\n\twhile (rem.length > 0) {\n\t\tvar m;\n\t\t/*JSSTYLED*/\n\t\tif ((m = /^,/.exec(rem)) !== null) {\n\t\t\tparts[++idx] = '';\n\t\t\trem = rem.slice(m[0].length);\n\t\t/*JSSTYLED*/\n\t\t} else if ((m = /^\\\\,/.exec(rem)) !== null) {\n\t\t\tparts[idx] += ',';\n\t\t\trem = rem.slice(m[0].length);\n\t\t/*JSSTYLED*/\n\t\t} else if ((m = /^\\\\./.exec(rem)) !== null) {\n\t\t\tparts[idx] += m[0];\n\t\t\trem = rem.slice(m[0].length);\n\t\t/*JSSTYLED*/\n\t\t} else if ((m = /^[^\\\\,]+/.exec(rem)) !== null) {\n\t\t\tparts[idx] += m[0];\n\t\t\trem = rem.slice(m[0].length);\n\t\t} else {\n\t\t\tthrow (new Error('Failed to parse DN'));\n\t\t}\n\t}\n\tvar cmps = parts.map(function (c) {\n\t\tc = c.trim();\n\t\tvar eqPos = c.indexOf('=');\n\t\twhile (eqPos > 0 && c.charAt(eqPos - 1) === '\\\\')\n\t\t\teqPos = c.indexOf('=', eqPos + 1);\n\t\tif (eqPos === -1) {\n\t\t\tthrow (new Error('Failed to parse DN'));\n\t\t}\n\t\t/*JSSTYLED*/\n\t\tvar name = c.slice(0, eqPos).toLowerCase().replace(/\\\\=/g, '=');\n\t\tvar value = c.slice(eqPos + 1);\n\t\treturn ({ name: name, value: value });\n\t});\n\treturn (new Identity({ components: cmps }));\n};\n\nIdentity.fromArray = function (components) {\n\tassert.arrayOfObject(components, 'components');\n\tcomponents.forEach(function (cmp) {\n\t\tassert.object(cmp, 'component');\n\t\tassert.string(cmp.name, 'component.name');\n\t\tif (!Buffer.isBuffer(cmp.value) &&\n\t\t !(typeof (cmp.value) === 'string')) {\n\t\t\tthrow (new Error('Invalid component value'));\n\t\t}\n\t});\n\treturn (new Identity({ components: components }));\n};\n\nIdentity.parseAsn1 = function (der, top) {\n\tvar components = [];\n\tder.readSequence(top);\n\tvar end = der.offset + der.length;\n\twhile (der.offset < end) {\n\t\tder.readSequence(asn1.Ber.Constructor | asn1.Ber.Set);\n\t\tvar after = der.offset + der.length;\n\t\tder.readSequence();\n\t\tvar oid = der.readOID();\n\t\tvar type = der.peek();\n\t\tvar value;\n\t\tswitch (type) {\n\t\tcase asn1.Ber.PrintableString:\n\t\tcase asn1.Ber.IA5String:\n\t\tcase asn1.Ber.OctetString:\n\t\tcase asn1.Ber.T61String:\n\t\t\tvalue = der.readString(type);\n\t\t\tbreak;\n\t\tcase asn1.Ber.Utf8String:\n\t\t\tvalue = der.readString(type, true);\n\t\t\tvalue = value.toString('utf8');\n\t\t\tbreak;\n\t\tcase asn1.Ber.CharacterString:\n\t\tcase asn1.Ber.BMPString:\n\t\t\tvalue = der.readString(type, true);\n\t\t\tvalue = value.toString('utf16le');\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow (new Error('Unknown asn1 type ' + type));\n\t\t}\n\t\tcomponents.push({ oid: oid, asn1type: type, value: value });\n\t\tder._offset = after;\n\t}\n\tder._offset = end;\n\treturn (new Identity({\n\t\tcomponents: components\n\t}));\n};\n\nIdentity.isIdentity = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Identity, ver));\n};\n\n/*\n * API versions for Identity:\n * [1,0] -- initial ver\n */\nIdentity.prototype._sshpkApiVersion = [1, 0];\n\nIdentity._oldVersionDetect = function (obj) {\n\treturn ([1, 0]);\n};\n","// Copyright 2015 Joyent, Inc.\n\nvar Key = require('./key');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar PrivateKey = require('./private-key');\nvar Certificate = require('./certificate');\nvar Identity = require('./identity');\nvar errs = require('./errors');\n\nmodule.exports = {\n\t/* top-level classes */\n\tKey: Key,\n\tparseKey: Key.parse,\n\tFingerprint: Fingerprint,\n\tparseFingerprint: Fingerprint.parse,\n\tSignature: Signature,\n\tparseSignature: Signature.parse,\n\tPrivateKey: PrivateKey,\n\tparsePrivateKey: PrivateKey.parse,\n\tgeneratePrivateKey: PrivateKey.generate,\n\tCertificate: Certificate,\n\tparseCertificate: Certificate.parse,\n\tcreateSelfSignedCertificate: Certificate.createSelfSigned,\n\tcreateCertificate: Certificate.create,\n\tIdentity: Identity,\n\tidentityFromDN: Identity.parseDN,\n\tidentityForHost: Identity.forHost,\n\tidentityForUser: Identity.forUser,\n\tidentityForEmail: Identity.forEmail,\n\tidentityFromArray: Identity.fromArray,\n\n\t/* errors */\n\tFingerprintFormatError: errs.FingerprintFormatError,\n\tInvalidAlgorithmError: errs.InvalidAlgorithmError,\n\tKeyParseError: errs.KeyParseError,\n\tSignatureParseError: errs.SignatureParseError,\n\tKeyEncryptedError: errs.KeyEncryptedError,\n\tCertificateParseError: errs.CertificateParseError\n};\n","// Copyright 2018 Joyent, Inc.\n\nmodule.exports = Key;\n\nvar assert = require('assert-plus');\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar DiffieHellman = require('./dhe').DiffieHellman;\nvar errs = require('./errors');\nvar utils = require('./utils');\nvar PrivateKey = require('./private-key');\nvar edCompat;\n\ntry {\n\tedCompat = require('./ed-compat');\n} catch (e) {\n\t/* Just continue through, and bail out if we try to use it. */\n}\n\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\nvar KeyParseError = errs.KeyParseError;\n\nvar formats = {};\nformats['auto'] = require('./formats/auto');\nformats['pem'] = require('./formats/pem');\nformats['pkcs1'] = require('./formats/pkcs1');\nformats['pkcs8'] = require('./formats/pkcs8');\nformats['rfc4253'] = require('./formats/rfc4253');\nformats['ssh'] = require('./formats/ssh');\nformats['ssh-private'] = require('./formats/ssh-private');\nformats['openssh'] = formats['ssh-private'];\nformats['dnssec'] = require('./formats/dnssec');\nformats['putty'] = require('./formats/putty');\nformats['ppk'] = formats['putty'];\n\nfunction Key(opts) {\n\tassert.object(opts, 'options');\n\tassert.arrayOfObject(opts.parts, 'options.parts');\n\tassert.string(opts.type, 'options.type');\n\tassert.optionalString(opts.comment, 'options.comment');\n\n\tvar algInfo = algs.info[opts.type];\n\tif (typeof (algInfo) !== 'object')\n\t\tthrow (new InvalidAlgorithmError(opts.type));\n\n\tvar partLookup = {};\n\tfor (var i = 0; i < opts.parts.length; ++i) {\n\t\tvar part = opts.parts[i];\n\t\tpartLookup[part.name] = part;\n\t}\n\n\tthis.type = opts.type;\n\tthis.parts = opts.parts;\n\tthis.part = partLookup;\n\tthis.comment = undefined;\n\tthis.source = opts.source;\n\n\t/* for speeding up hashing/fingerprint operations */\n\tthis._rfc4253Cache = opts._rfc4253Cache;\n\tthis._hashCache = {};\n\n\tvar sz;\n\tthis.curve = undefined;\n\tif (this.type === 'ecdsa') {\n\t\tvar curve = this.part.curve.data.toString();\n\t\tthis.curve = curve;\n\t\tsz = algs.curves[curve].size;\n\t} else if (this.type === 'ed25519' || this.type === 'curve25519') {\n\t\tsz = 256;\n\t\tthis.curve = 'curve25519';\n\t} else {\n\t\tvar szPart = this.part[algInfo.sizePart];\n\t\tsz = szPart.data.length;\n\t\tsz = sz * 8 - utils.countZeros(szPart.data);\n\t}\n\tthis.size = sz;\n}\n\nKey.formats = formats;\n\nKey.prototype.toBuffer = function (format, options) {\n\tif (format === undefined)\n\t\tformat = 'ssh';\n\tassert.string(format, 'format');\n\tassert.object(formats[format], 'formats[format]');\n\tassert.optionalObject(options, 'options');\n\n\tif (format === 'rfc4253') {\n\t\tif (this._rfc4253Cache === undefined)\n\t\t\tthis._rfc4253Cache = formats['rfc4253'].write(this);\n\t\treturn (this._rfc4253Cache);\n\t}\n\n\treturn (formats[format].write(this, options));\n};\n\nKey.prototype.toString = function (format, options) {\n\treturn (this.toBuffer(format, options).toString());\n};\n\nKey.prototype.hash = function (algo, type) {\n\tassert.string(algo, 'algorithm');\n\tassert.optionalString(type, 'type');\n\tif (type === undefined)\n\t\ttype = 'ssh';\n\talgo = algo.toLowerCase();\n\tif (algs.hashAlgs[algo] === undefined)\n\t\tthrow (new InvalidAlgorithmError(algo));\n\n\tvar cacheKey = algo + '||' + type;\n\tif (this._hashCache[cacheKey])\n\t\treturn (this._hashCache[cacheKey]);\n\n\tvar buf;\n\tif (type === 'ssh') {\n\t\tbuf = this.toBuffer('rfc4253');\n\t} else if (type === 'spki') {\n\t\tbuf = formats.pkcs8.pkcs8ToBuffer(this);\n\t} else {\n\t\tthrow (new Error('Hash type ' + type + ' not supported'));\n\t}\n\tvar hash = crypto.createHash(algo).update(buf).digest();\n\tthis._hashCache[cacheKey] = hash;\n\treturn (hash);\n};\n\nKey.prototype.fingerprint = function (algo, type) {\n\tif (algo === undefined)\n\t\talgo = 'sha256';\n\tif (type === undefined)\n\t\ttype = 'ssh';\n\tassert.string(algo, 'algorithm');\n\tassert.string(type, 'type');\n\tvar opts = {\n\t\ttype: 'key',\n\t\thash: this.hash(algo, type),\n\t\talgorithm: algo,\n\t\thashType: type\n\t};\n\treturn (new Fingerprint(opts));\n};\n\nKey.prototype.defaultHashAlgorithm = function () {\n\tvar hashAlgo = 'sha1';\n\tif (this.type === 'rsa')\n\t\thashAlgo = 'sha256';\n\tif (this.type === 'dsa' && this.size > 1024)\n\t\thashAlgo = 'sha256';\n\tif (this.type === 'ed25519')\n\t\thashAlgo = 'sha512';\n\tif (this.type === 'ecdsa') {\n\t\tif (this.size <= 256)\n\t\t\thashAlgo = 'sha256';\n\t\telse if (this.size <= 384)\n\t\t\thashAlgo = 'sha384';\n\t\telse\n\t\t\thashAlgo = 'sha512';\n\t}\n\treturn (hashAlgo);\n};\n\nKey.prototype.createVerify = function (hashAlgo) {\n\tif (hashAlgo === undefined)\n\t\thashAlgo = this.defaultHashAlgorithm();\n\tassert.string(hashAlgo, 'hash algorithm');\n\n\t/* ED25519 is not supported by OpenSSL, use a javascript impl. */\n\tif (this.type === 'ed25519' && edCompat !== undefined)\n\t\treturn (new edCompat.Verifier(this, hashAlgo));\n\tif (this.type === 'curve25519')\n\t\tthrow (new Error('Curve25519 keys are not suitable for ' +\n\t\t 'signing or verification'));\n\n\tvar v, nm, err;\n\ttry {\n\t\tnm = hashAlgo.toUpperCase();\n\t\tv = crypto.createVerify(nm);\n\t} catch (e) {\n\t\terr = e;\n\t}\n\tif (v === undefined || (err instanceof Error &&\n\t err.message.match(/Unknown message digest/))) {\n\t\tnm = 'RSA-';\n\t\tnm += hashAlgo.toUpperCase();\n\t\tv = crypto.createVerify(nm);\n\t}\n\tassert.ok(v, 'failed to create verifier');\n\tvar oldVerify = v.verify.bind(v);\n\tvar key = this.toBuffer('pkcs8');\n\tvar curve = this.curve;\n\tvar self = this;\n\tv.verify = function (signature, fmt) {\n\t\tif (Signature.isSignature(signature, [2, 0])) {\n\t\t\tif (signature.type !== self.type)\n\t\t\t\treturn (false);\n\t\t\tif (signature.hashAlgorithm &&\n\t\t\t signature.hashAlgorithm !== hashAlgo)\n\t\t\t\treturn (false);\n\t\t\tif (signature.curve && self.type === 'ecdsa' &&\n\t\t\t signature.curve !== curve)\n\t\t\t\treturn (false);\n\t\t\treturn (oldVerify(key, signature.toBuffer('asn1')));\n\n\t\t} else if (typeof (signature) === 'string' ||\n\t\t Buffer.isBuffer(signature)) {\n\t\t\treturn (oldVerify(key, signature, fmt));\n\n\t\t/*\n\t\t * Avoid doing this on valid arguments, walking the prototype\n\t\t * chain can be quite slow.\n\t\t */\n\t\t} else if (Signature.isSignature(signature, [1, 0])) {\n\t\t\tthrow (new Error('signature was created by too old ' +\n\t\t\t 'a version of sshpk and cannot be verified'));\n\n\t\t} else {\n\t\t\tthrow (new TypeError('signature must be a string, ' +\n\t\t\t 'Buffer, or Signature object'));\n\t\t}\n\t};\n\treturn (v);\n};\n\nKey.prototype.createDiffieHellman = function () {\n\tif (this.type === 'rsa')\n\t\tthrow (new Error('RSA keys do not support Diffie-Hellman'));\n\n\treturn (new DiffieHellman(this));\n};\nKey.prototype.createDH = Key.prototype.createDiffieHellman;\n\nKey.parse = function (data, format, options) {\n\tif (typeof (data) !== 'string')\n\t\tassert.buffer(data, 'data');\n\tif (format === undefined)\n\t\tformat = 'auto';\n\tassert.string(format, 'format');\n\tif (typeof (options) === 'string')\n\t\toptions = { filename: options };\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalString(options.filename, 'options.filename');\n\tif (options.filename === undefined)\n\t\toptions.filename = '(unnamed)';\n\n\tassert.object(formats[format], 'formats[format]');\n\n\ttry {\n\t\tvar k = formats[format].read(data, options);\n\t\tif (k instanceof PrivateKey)\n\t\t\tk = k.toPublic();\n\t\tif (!k.comment)\n\t\t\tk.comment = options.filename;\n\t\treturn (k);\n\t} catch (e) {\n\t\tif (e.name === 'KeyEncryptedError')\n\t\t\tthrow (e);\n\t\tthrow (new KeyParseError(options.filename, format, e));\n\t}\n};\n\nKey.isKey = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Key, ver));\n};\n\n/*\n * API versions for Key:\n * [1,0] -- initial ver, may take Signature for createVerify or may not\n * [1,1] -- added pkcs1, pkcs8 formats\n * [1,2] -- added auto, ssh-private, openssh formats\n * [1,3] -- added defaultHashAlgorithm\n * [1,4] -- added ed support, createDH\n * [1,5] -- first explicitly tagged version\n * [1,6] -- changed ed25519 part names\n * [1,7] -- spki hash types\n */\nKey.prototype._sshpkApiVersion = [1, 7];\n\nKey._oldVersionDetect = function (obj) {\n\tassert.func(obj.toBuffer);\n\tassert.func(obj.fingerprint);\n\tif (obj.createDH)\n\t\treturn ([1, 4]);\n\tif (obj.defaultHashAlgorithm)\n\t\treturn ([1, 3]);\n\tif (obj.formats['auto'])\n\t\treturn ([1, 2]);\n\tif (obj.formats['pkcs1'])\n\t\treturn ([1, 1]);\n\treturn ([1, 0]);\n};\n","// Copyright 2017 Joyent, Inc.\n\nmodule.exports = PrivateKey;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar errs = require('./errors');\nvar util = require('util');\nvar utils = require('./utils');\nvar dhe = require('./dhe');\nvar generateECDSA = dhe.generateECDSA;\nvar generateED25519 = dhe.generateED25519;\nvar edCompat = require('./ed-compat');\nvar nacl = require('tweetnacl');\n\nvar Key = require('./key');\n\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\nvar KeyParseError = errs.KeyParseError;\nvar KeyEncryptedError = errs.KeyEncryptedError;\n\nvar formats = {};\nformats['auto'] = require('./formats/auto');\nformats['pem'] = require('./formats/pem');\nformats['pkcs1'] = require('./formats/pkcs1');\nformats['pkcs8'] = require('./formats/pkcs8');\nformats['rfc4253'] = require('./formats/rfc4253');\nformats['ssh-private'] = require('./formats/ssh-private');\nformats['openssh'] = formats['ssh-private'];\nformats['ssh'] = formats['ssh-private'];\nformats['dnssec'] = require('./formats/dnssec');\nformats['putty'] = require('./formats/putty');\n\nfunction PrivateKey(opts) {\n\tassert.object(opts, 'options');\n\tKey.call(this, opts);\n\n\tthis._pubCache = undefined;\n}\nutil.inherits(PrivateKey, Key);\n\nPrivateKey.formats = formats;\n\nPrivateKey.prototype.toBuffer = function (format, options) {\n\tif (format === undefined)\n\t\tformat = 'pkcs1';\n\tassert.string(format, 'format');\n\tassert.object(formats[format], 'formats[format]');\n\tassert.optionalObject(options, 'options');\n\n\treturn (formats[format].write(this, options));\n};\n\nPrivateKey.prototype.hash = function (algo, type) {\n\treturn (this.toPublic().hash(algo, type));\n};\n\nPrivateKey.prototype.fingerprint = function (algo, type) {\n\treturn (this.toPublic().fingerprint(algo, type));\n};\n\nPrivateKey.prototype.toPublic = function () {\n\tif (this._pubCache)\n\t\treturn (this._pubCache);\n\n\tvar algInfo = algs.info[this.type];\n\tvar pubParts = [];\n\tfor (var i = 0; i < algInfo.parts.length; ++i) {\n\t\tvar p = algInfo.parts[i];\n\t\tpubParts.push(this.part[p]);\n\t}\n\n\tthis._pubCache = new Key({\n\t\ttype: this.type,\n\t\tsource: this,\n\t\tparts: pubParts\n\t});\n\tif (this.comment)\n\t\tthis._pubCache.comment = this.comment;\n\treturn (this._pubCache);\n};\n\nPrivateKey.prototype.derive = function (newType) {\n\tassert.string(newType, 'type');\n\tvar priv, pub, pair;\n\n\tif (this.type === 'ed25519' && newType === 'curve25519') {\n\t\tpriv = this.part.k.data;\n\t\tif (priv[0] === 0x00)\n\t\t\tpriv = priv.slice(1);\n\n\t\tpair = nacl.box.keyPair.fromSecretKey(new Uint8Array(priv));\n\t\tpub = Buffer.from(pair.publicKey);\n\n\t\treturn (new PrivateKey({\n\t\t\ttype: 'curve25519',\n\t\t\tparts: [\n\t\t\t\t{ name: 'A', data: utils.mpNormalize(pub) },\n\t\t\t\t{ name: 'k', data: utils.mpNormalize(priv) }\n\t\t\t]\n\t\t}));\n\t} else if (this.type === 'curve25519' && newType === 'ed25519') {\n\t\tpriv = this.part.k.data;\n\t\tif (priv[0] === 0x00)\n\t\t\tpriv = priv.slice(1);\n\n\t\tpair = nacl.sign.keyPair.fromSeed(new Uint8Array(priv));\n\t\tpub = Buffer.from(pair.publicKey);\n\n\t\treturn (new PrivateKey({\n\t\t\ttype: 'ed25519',\n\t\t\tparts: [\n\t\t\t\t{ name: 'A', data: utils.mpNormalize(pub) },\n\t\t\t\t{ name: 'k', data: utils.mpNormalize(priv) }\n\t\t\t]\n\t\t}));\n\t}\n\tthrow (new Error('Key derivation not supported from ' + this.type +\n\t ' to ' + newType));\n};\n\nPrivateKey.prototype.createVerify = function (hashAlgo) {\n\treturn (this.toPublic().createVerify(hashAlgo));\n};\n\nPrivateKey.prototype.createSign = function (hashAlgo) {\n\tif (hashAlgo === undefined)\n\t\thashAlgo = this.defaultHashAlgorithm();\n\tassert.string(hashAlgo, 'hash algorithm');\n\n\t/* ED25519 is not supported by OpenSSL, use a javascript impl. */\n\tif (this.type === 'ed25519' && edCompat !== undefined)\n\t\treturn (new edCompat.Signer(this, hashAlgo));\n\tif (this.type === 'curve25519')\n\t\tthrow (new Error('Curve25519 keys are not suitable for ' +\n\t\t 'signing or verification'));\n\n\tvar v, nm, err;\n\ttry {\n\t\tnm = hashAlgo.toUpperCase();\n\t\tv = crypto.createSign(nm);\n\t} catch (e) {\n\t\terr = e;\n\t}\n\tif (v === undefined || (err instanceof Error &&\n\t err.message.match(/Unknown message digest/))) {\n\t\tnm = 'RSA-';\n\t\tnm += hashAlgo.toUpperCase();\n\t\tv = crypto.createSign(nm);\n\t}\n\tassert.ok(v, 'failed to create verifier');\n\tvar oldSign = v.sign.bind(v);\n\tvar key = this.toBuffer('pkcs1');\n\tvar type = this.type;\n\tvar curve = this.curve;\n\tv.sign = function () {\n\t\tvar sig = oldSign(key);\n\t\tif (typeof (sig) === 'string')\n\t\t\tsig = Buffer.from(sig, 'binary');\n\t\tsig = Signature.parse(sig, type, 'asn1');\n\t\tsig.hashAlgorithm = hashAlgo;\n\t\tsig.curve = curve;\n\t\treturn (sig);\n\t};\n\treturn (v);\n};\n\nPrivateKey.parse = function (data, format, options) {\n\tif (typeof (data) !== 'string')\n\t\tassert.buffer(data, 'data');\n\tif (format === undefined)\n\t\tformat = 'auto';\n\tassert.string(format, 'format');\n\tif (typeof (options) === 'string')\n\t\toptions = { filename: options };\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalString(options.filename, 'options.filename');\n\tif (options.filename === undefined)\n\t\toptions.filename = '(unnamed)';\n\n\tassert.object(formats[format], 'formats[format]');\n\n\ttry {\n\t\tvar k = formats[format].read(data, options);\n\t\tassert.ok(k instanceof PrivateKey, 'key is not a private key');\n\t\tif (!k.comment)\n\t\t\tk.comment = options.filename;\n\t\treturn (k);\n\t} catch (e) {\n\t\tif (e.name === 'KeyEncryptedError')\n\t\t\tthrow (e);\n\t\tthrow (new KeyParseError(options.filename, format, e));\n\t}\n};\n\nPrivateKey.isPrivateKey = function (obj, ver) {\n\treturn (utils.isCompatible(obj, PrivateKey, ver));\n};\n\nPrivateKey.generate = function (type, options) {\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.object(options, 'options');\n\n\tswitch (type) {\n\tcase 'ecdsa':\n\t\tif (options.curve === undefined)\n\t\t\toptions.curve = 'nistp256';\n\t\tassert.string(options.curve, 'options.curve');\n\t\treturn (generateECDSA(options.curve));\n\tcase 'ed25519':\n\t\treturn (generateED25519());\n\tdefault:\n\t\tthrow (new Error('Key generation not supported with key ' +\n\t\t 'type \"' + type + '\"'));\n\t}\n};\n\n/*\n * API versions for PrivateKey:\n * [1,0] -- initial ver\n * [1,1] -- added auto, pkcs[18], openssh/ssh-private formats\n * [1,2] -- added defaultHashAlgorithm\n * [1,3] -- added derive, ed, createDH\n * [1,4] -- first tagged version\n * [1,5] -- changed ed25519 part names and format\n * [1,6] -- type arguments for hash() and fingerprint()\n */\nPrivateKey.prototype._sshpkApiVersion = [1, 6];\n\nPrivateKey._oldVersionDetect = function (obj) {\n\tassert.func(obj.toPublic);\n\tassert.func(obj.createSign);\n\tif (obj.derive)\n\t\treturn ([1, 3]);\n\tif (obj.defaultHashAlgorithm)\n\t\treturn ([1, 2]);\n\tif (obj.formats['auto'])\n\t\treturn ([1, 1]);\n\treturn ([1, 0]);\n};\n","// Copyright 2015 Joyent, Inc.\n\nmodule.exports = Signature;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar errs = require('./errors');\nvar utils = require('./utils');\nvar asn1 = require('asn1');\nvar SSHBuffer = require('./ssh-buffer');\n\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\nvar SignatureParseError = errs.SignatureParseError;\n\nfunction Signature(opts) {\n\tassert.object(opts, 'options');\n\tassert.arrayOfObject(opts.parts, 'options.parts');\n\tassert.string(opts.type, 'options.type');\n\n\tvar partLookup = {};\n\tfor (var i = 0; i < opts.parts.length; ++i) {\n\t\tvar part = opts.parts[i];\n\t\tpartLookup[part.name] = part;\n\t}\n\n\tthis.type = opts.type;\n\tthis.hashAlgorithm = opts.hashAlgo;\n\tthis.curve = opts.curve;\n\tthis.parts = opts.parts;\n\tthis.part = partLookup;\n}\n\nSignature.prototype.toBuffer = function (format) {\n\tif (format === undefined)\n\t\tformat = 'asn1';\n\tassert.string(format, 'format');\n\n\tvar buf;\n\tvar stype = 'ssh-' + this.type;\n\n\tswitch (this.type) {\n\tcase 'rsa':\n\t\tswitch (this.hashAlgorithm) {\n\t\tcase 'sha256':\n\t\t\tstype = 'rsa-sha2-256';\n\t\t\tbreak;\n\t\tcase 'sha512':\n\t\t\tstype = 'rsa-sha2-512';\n\t\t\tbreak;\n\t\tcase 'sha1':\n\t\tcase undefined:\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow (new Error('SSH signature ' +\n\t\t\t 'format does not support hash ' +\n\t\t\t 'algorithm ' + this.hashAlgorithm));\n\t\t}\n\t\tif (format === 'ssh') {\n\t\t\tbuf = new SSHBuffer({});\n\t\t\tbuf.writeString(stype);\n\t\t\tbuf.writePart(this.part.sig);\n\t\t\treturn (buf.toBuffer());\n\t\t} else {\n\t\t\treturn (this.part.sig.data);\n\t\t}\n\t\tbreak;\n\n\tcase 'ed25519':\n\t\tif (format === 'ssh') {\n\t\t\tbuf = new SSHBuffer({});\n\t\t\tbuf.writeString(stype);\n\t\t\tbuf.writePart(this.part.sig);\n\t\t\treturn (buf.toBuffer());\n\t\t} else {\n\t\t\treturn (this.part.sig.data);\n\t\t}\n\t\tbreak;\n\n\tcase 'dsa':\n\tcase 'ecdsa':\n\t\tvar r, s;\n\t\tif (format === 'asn1') {\n\t\t\tvar der = new asn1.BerWriter();\n\t\t\tder.startSequence();\n\t\t\tr = utils.mpNormalize(this.part.r.data);\n\t\t\ts = utils.mpNormalize(this.part.s.data);\n\t\t\tder.writeBuffer(r, asn1.Ber.Integer);\n\t\t\tder.writeBuffer(s, asn1.Ber.Integer);\n\t\t\tder.endSequence();\n\t\t\treturn (der.buffer);\n\t\t} else if (format === 'ssh' && this.type === 'dsa') {\n\t\t\tbuf = new SSHBuffer({});\n\t\t\tbuf.writeString('ssh-dss');\n\t\t\tr = this.part.r.data;\n\t\t\tif (r.length > 20 && r[0] === 0x00)\n\t\t\t\tr = r.slice(1);\n\t\t\ts = this.part.s.data;\n\t\t\tif (s.length > 20 && s[0] === 0x00)\n\t\t\t\ts = s.slice(1);\n\t\t\tif ((this.hashAlgorithm &&\n\t\t\t this.hashAlgorithm !== 'sha1') ||\n\t\t\t r.length + s.length !== 40) {\n\t\t\t\tthrow (new Error('OpenSSH only supports ' +\n\t\t\t\t 'DSA signatures with SHA1 hash'));\n\t\t\t}\n\t\t\tbuf.writeBuffer(Buffer.concat([r, s]));\n\t\t\treturn (buf.toBuffer());\n\t\t} else if (format === 'ssh' && this.type === 'ecdsa') {\n\t\t\tvar inner = new SSHBuffer({});\n\t\t\tr = this.part.r.data;\n\t\t\tinner.writeBuffer(r);\n\t\t\tinner.writePart(this.part.s);\n\n\t\t\tbuf = new SSHBuffer({});\n\t\t\t/* XXX: find a more proper way to do this? */\n\t\t\tvar curve;\n\t\t\tif (r[0] === 0x00)\n\t\t\t\tr = r.slice(1);\n\t\t\tvar sz = r.length * 8;\n\t\t\tif (sz === 256)\n\t\t\t\tcurve = 'nistp256';\n\t\t\telse if (sz === 384)\n\t\t\t\tcurve = 'nistp384';\n\t\t\telse if (sz === 528)\n\t\t\t\tcurve = 'nistp521';\n\t\t\tbuf.writeString('ecdsa-sha2-' + curve);\n\t\t\tbuf.writeBuffer(inner.toBuffer());\n\t\t\treturn (buf.toBuffer());\n\t\t}\n\t\tthrow (new Error('Invalid signature format'));\n\tdefault:\n\t\tthrow (new Error('Invalid signature data'));\n\t}\n};\n\nSignature.prototype.toString = function (format) {\n\tassert.optionalString(format, 'format');\n\treturn (this.toBuffer(format).toString('base64'));\n};\n\nSignature.parse = function (data, type, format) {\n\tif (typeof (data) === 'string')\n\t\tdata = Buffer.from(data, 'base64');\n\tassert.buffer(data, 'data');\n\tassert.string(format, 'format');\n\tassert.string(type, 'type');\n\n\tvar opts = {};\n\topts.type = type.toLowerCase();\n\topts.parts = [];\n\n\ttry {\n\t\tassert.ok(data.length > 0, 'signature must not be empty');\n\t\tswitch (opts.type) {\n\t\tcase 'rsa':\n\t\t\treturn (parseOneNum(data, type, format, opts));\n\t\tcase 'ed25519':\n\t\t\treturn (parseOneNum(data, type, format, opts));\n\n\t\tcase 'dsa':\n\t\tcase 'ecdsa':\n\t\t\tif (format === 'asn1')\n\t\t\t\treturn (parseDSAasn1(data, type, format, opts));\n\t\t\telse if (opts.type === 'dsa')\n\t\t\t\treturn (parseDSA(data, type, format, opts));\n\t\t\telse\n\t\t\t\treturn (parseECDSA(data, type, format, opts));\n\n\t\tdefault:\n\t\t\tthrow (new InvalidAlgorithmError(type));\n\t\t}\n\n\t} catch (e) {\n\t\tif (e instanceof InvalidAlgorithmError)\n\t\t\tthrow (e);\n\t\tthrow (new SignatureParseError(type, format, e));\n\t}\n};\n\nfunction parseOneNum(data, type, format, opts) {\n\tif (format === 'ssh') {\n\t\ttry {\n\t\t\tvar buf = new SSHBuffer({buffer: data});\n\t\t\tvar head = buf.readString();\n\t\t} catch (e) {\n\t\t\t/* fall through */\n\t\t}\n\t\tif (buf !== undefined) {\n\t\t\tvar msg = 'SSH signature does not match expected ' +\n\t\t\t 'type (expected ' + type + ', got ' + head + ')';\n\t\t\tswitch (head) {\n\t\t\tcase 'ssh-rsa':\n\t\t\t\tassert.strictEqual(type, 'rsa', msg);\n\t\t\t\topts.hashAlgo = 'sha1';\n\t\t\t\tbreak;\n\t\t\tcase 'rsa-sha2-256':\n\t\t\t\tassert.strictEqual(type, 'rsa', msg);\n\t\t\t\topts.hashAlgo = 'sha256';\n\t\t\t\tbreak;\n\t\t\tcase 'rsa-sha2-512':\n\t\t\t\tassert.strictEqual(type, 'rsa', msg);\n\t\t\t\topts.hashAlgo = 'sha512';\n\t\t\t\tbreak;\n\t\t\tcase 'ssh-ed25519':\n\t\t\t\tassert.strictEqual(type, 'ed25519', msg);\n\t\t\t\topts.hashAlgo = 'sha512';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow (new Error('Unknown SSH signature ' +\n\t\t\t\t 'type: ' + head));\n\t\t\t}\n\t\t\tvar sig = buf.readPart();\n\t\t\tassert.ok(buf.atEnd(), 'extra trailing bytes');\n\t\t\tsig.name = 'sig';\n\t\t\topts.parts.push(sig);\n\t\t\treturn (new Signature(opts));\n\t\t}\n\t}\n\topts.parts.push({name: 'sig', data: data});\n\treturn (new Signature(opts));\n}\n\nfunction parseDSAasn1(data, type, format, opts) {\n\tvar der = new asn1.BerReader(data);\n\tder.readSequence();\n\tvar r = der.readString(asn1.Ber.Integer, true);\n\tvar s = der.readString(asn1.Ber.Integer, true);\n\n\topts.parts.push({name: 'r', data: utils.mpNormalize(r)});\n\topts.parts.push({name: 's', data: utils.mpNormalize(s)});\n\n\treturn (new Signature(opts));\n}\n\nfunction parseDSA(data, type, format, opts) {\n\tif (data.length != 40) {\n\t\tvar buf = new SSHBuffer({buffer: data});\n\t\tvar d = buf.readBuffer();\n\t\tif (d.toString('ascii') === 'ssh-dss')\n\t\t\td = buf.readBuffer();\n\t\tassert.ok(buf.atEnd(), 'extra trailing bytes');\n\t\tassert.strictEqual(d.length, 40, 'invalid inner length');\n\t\tdata = d;\n\t}\n\topts.parts.push({name: 'r', data: data.slice(0, 20)});\n\topts.parts.push({name: 's', data: data.slice(20, 40)});\n\treturn (new Signature(opts));\n}\n\nfunction parseECDSA(data, type, format, opts) {\n\tvar buf = new SSHBuffer({buffer: data});\n\n\tvar r, s;\n\tvar inner = buf.readBuffer();\n\tvar stype = inner.toString('ascii');\n\tif (stype.slice(0, 6) === 'ecdsa-') {\n\t\tvar parts = stype.split('-');\n\t\tassert.strictEqual(parts[0], 'ecdsa');\n\t\tassert.strictEqual(parts[1], 'sha2');\n\t\topts.curve = parts[2];\n\t\tswitch (opts.curve) {\n\t\tcase 'nistp256':\n\t\t\topts.hashAlgo = 'sha256';\n\t\t\tbreak;\n\t\tcase 'nistp384':\n\t\t\topts.hashAlgo = 'sha384';\n\t\t\tbreak;\n\t\tcase 'nistp521':\n\t\t\topts.hashAlgo = 'sha512';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow (new Error('Unsupported ECDSA curve: ' +\n\t\t\t opts.curve));\n\t\t}\n\t\tinner = buf.readBuffer();\n\t\tassert.ok(buf.atEnd(), 'extra trailing bytes on outer');\n\t\tbuf = new SSHBuffer({buffer: inner});\n\t\tr = buf.readPart();\n\t} else {\n\t\tr = {data: inner};\n\t}\n\n\ts = buf.readPart();\n\tassert.ok(buf.atEnd(), 'extra trailing bytes');\n\n\tr.name = 'r';\n\ts.name = 's';\n\n\topts.parts.push(r);\n\topts.parts.push(s);\n\treturn (new Signature(opts));\n}\n\nSignature.isSignature = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Signature, ver));\n};\n\n/*\n * API versions for Signature:\n * [1,0] -- initial ver\n * [2,0] -- support for rsa in full ssh format, compat with sshpk-agent\n * hashAlgorithm property\n * [2,1] -- first tagged version\n */\nSignature.prototype._sshpkApiVersion = [2, 1];\n\nSignature._oldVersionDetect = function (obj) {\n\tassert.func(obj.toBuffer);\n\tif (obj.hasOwnProperty('hashAlgorithm'))\n\t\treturn ([2, 0]);\n\treturn ([1, 0]);\n};\n","// Copyright 2015 Joyent, Inc.\n\nmodule.exports = SSHBuffer;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\n\nfunction SSHBuffer(opts) {\n\tassert.object(opts, 'options');\n\tif (opts.buffer !== undefined)\n\t\tassert.buffer(opts.buffer, 'options.buffer');\n\n\tthis._size = opts.buffer ? opts.buffer.length : 1024;\n\tthis._buffer = opts.buffer || Buffer.alloc(this._size);\n\tthis._offset = 0;\n}\n\nSSHBuffer.prototype.toBuffer = function () {\n\treturn (this._buffer.slice(0, this._offset));\n};\n\nSSHBuffer.prototype.atEnd = function () {\n\treturn (this._offset >= this._buffer.length);\n};\n\nSSHBuffer.prototype.remainder = function () {\n\treturn (this._buffer.slice(this._offset));\n};\n\nSSHBuffer.prototype.skip = function (n) {\n\tthis._offset += n;\n};\n\nSSHBuffer.prototype.expand = function () {\n\tthis._size *= 2;\n\tvar buf = Buffer.alloc(this._size);\n\tthis._buffer.copy(buf, 0);\n\tthis._buffer = buf;\n};\n\nSSHBuffer.prototype.readPart = function () {\n\treturn ({data: this.readBuffer()});\n};\n\nSSHBuffer.prototype.readBuffer = function () {\n\tvar len = this._buffer.readUInt32BE(this._offset);\n\tthis._offset += 4;\n\tassert.ok(this._offset + len <= this._buffer.length,\n\t 'length out of bounds at +0x' + this._offset.toString(16) +\n\t ' (data truncated?)');\n\tvar buf = this._buffer.slice(this._offset, this._offset + len);\n\tthis._offset += len;\n\treturn (buf);\n};\n\nSSHBuffer.prototype.readString = function () {\n\treturn (this.readBuffer().toString());\n};\n\nSSHBuffer.prototype.readCString = function () {\n\tvar offset = this._offset;\n\twhile (offset < this._buffer.length &&\n\t this._buffer[offset] !== 0x00)\n\t\toffset++;\n\tassert.ok(offset < this._buffer.length, 'c string does not terminate');\n\tvar str = this._buffer.slice(this._offset, offset).toString();\n\tthis._offset = offset + 1;\n\treturn (str);\n};\n\nSSHBuffer.prototype.readInt = function () {\n\tvar v = this._buffer.readUInt32BE(this._offset);\n\tthis._offset += 4;\n\treturn (v);\n};\n\nSSHBuffer.prototype.readInt64 = function () {\n\tassert.ok(this._offset + 8 < this._buffer.length,\n\t 'buffer not long enough to read Int64');\n\tvar v = this._buffer.slice(this._offset, this._offset + 8);\n\tthis._offset += 8;\n\treturn (v);\n};\n\nSSHBuffer.prototype.readChar = function () {\n\tvar v = this._buffer[this._offset++];\n\treturn (v);\n};\n\nSSHBuffer.prototype.writeBuffer = function (buf) {\n\twhile (this._offset + 4 + buf.length > this._size)\n\t\tthis.expand();\n\tthis._buffer.writeUInt32BE(buf.length, this._offset);\n\tthis._offset += 4;\n\tbuf.copy(this._buffer, this._offset);\n\tthis._offset += buf.length;\n};\n\nSSHBuffer.prototype.writeString = function (str) {\n\tthis.writeBuffer(Buffer.from(str, 'utf8'));\n};\n\nSSHBuffer.prototype.writeCString = function (str) {\n\twhile (this._offset + 1 + str.length > this._size)\n\t\tthis.expand();\n\tthis._buffer.write(str, this._offset);\n\tthis._offset += str.length;\n\tthis._buffer[this._offset++] = 0;\n};\n\nSSHBuffer.prototype.writeInt = function (v) {\n\twhile (this._offset + 4 > this._size)\n\t\tthis.expand();\n\tthis._buffer.writeUInt32BE(v, this._offset);\n\tthis._offset += 4;\n};\n\nSSHBuffer.prototype.writeInt64 = function (v) {\n\tassert.buffer(v, 'value');\n\tif (v.length > 8) {\n\t\tvar lead = v.slice(0, v.length - 8);\n\t\tfor (var i = 0; i < lead.length; ++i) {\n\t\t\tassert.strictEqual(lead[i], 0,\n\t\t\t 'must fit in 64 bits of precision');\n\t\t}\n\t\tv = v.slice(v.length - 8, v.length);\n\t}\n\twhile (this._offset + 8 > this._size)\n\t\tthis.expand();\n\tv.copy(this._buffer, this._offset);\n\tthis._offset += 8;\n};\n\nSSHBuffer.prototype.writeChar = function (v) {\n\twhile (this._offset + 1 > this._size)\n\t\tthis.expand();\n\tthis._buffer[this._offset++] = v;\n};\n\nSSHBuffer.prototype.writePart = function (p) {\n\tthis.writeBuffer(p.data);\n};\n\nSSHBuffer.prototype.write = function (buf) {\n\twhile (this._offset + buf.length > this._size)\n\t\tthis.expand();\n\tbuf.copy(this._buffer, this._offset);\n\tthis._offset += buf.length;\n};\n","// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tbufferSplit: bufferSplit,\n\taddRSAMissing: addRSAMissing,\n\tcalculateDSAPublic: calculateDSAPublic,\n\tcalculateED25519Public: calculateED25519Public,\n\tcalculateX25519Public: calculateX25519Public,\n\tmpNormalize: mpNormalize,\n\tmpDenormalize: mpDenormalize,\n\tecNormalize: ecNormalize,\n\tcountZeros: countZeros,\n\tassertCompatible: assertCompatible,\n\tisCompatible: isCompatible,\n\topensslKeyDeriv: opensslKeyDeriv,\n\topensshCipherInfo: opensshCipherInfo,\n\tpublicFromPrivateECDSA: publicFromPrivateECDSA,\n\tzeroPadToLength: zeroPadToLength,\n\twriteBitString: writeBitString,\n\treadBitString: readBitString,\n\tpbkdf2: pbkdf2\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar PrivateKey = require('./private-key');\nvar Key = require('./key');\nvar crypto = require('crypto');\nvar algs = require('./algs');\nvar asn1 = require('asn1');\n\nvar ec = require('ecc-jsbn/lib/ec');\nvar jsbn = require('jsbn').BigInteger;\nvar nacl = require('tweetnacl');\n\nvar MAX_CLASS_DEPTH = 3;\n\nfunction isCompatible(obj, klass, needVer) {\n\tif (obj === null || typeof (obj) !== 'object')\n\t\treturn (false);\n\tif (needVer === undefined)\n\t\tneedVer = klass.prototype._sshpkApiVersion;\n\tif (obj instanceof klass &&\n\t klass.prototype._sshpkApiVersion[0] == needVer[0])\n\t\treturn (true);\n\tvar proto = Object.getPrototypeOf(obj);\n\tvar depth = 0;\n\twhile (proto.constructor.name !== klass.name) {\n\t\tproto = Object.getPrototypeOf(proto);\n\t\tif (!proto || ++depth > MAX_CLASS_DEPTH)\n\t\t\treturn (false);\n\t}\n\tif (proto.constructor.name !== klass.name)\n\t\treturn (false);\n\tvar ver = proto._sshpkApiVersion;\n\tif (ver === undefined)\n\t\tver = klass._oldVersionDetect(obj);\n\tif (ver[0] != needVer[0] || ver[1] < needVer[1])\n\t\treturn (false);\n\treturn (true);\n}\n\nfunction assertCompatible(obj, klass, needVer, name) {\n\tif (name === undefined)\n\t\tname = 'object';\n\tassert.ok(obj, name + ' must not be null');\n\tassert.object(obj, name + ' must be an object');\n\tif (needVer === undefined)\n\t\tneedVer = klass.prototype._sshpkApiVersion;\n\tif (obj instanceof klass &&\n\t klass.prototype._sshpkApiVersion[0] == needVer[0])\n\t\treturn;\n\tvar proto = Object.getPrototypeOf(obj);\n\tvar depth = 0;\n\twhile (proto.constructor.name !== klass.name) {\n\t\tproto = Object.getPrototypeOf(proto);\n\t\tassert.ok(proto && ++depth <= MAX_CLASS_DEPTH,\n\t\t name + ' must be a ' + klass.name + ' instance');\n\t}\n\tassert.strictEqual(proto.constructor.name, klass.name,\n\t name + ' must be a ' + klass.name + ' instance');\n\tvar ver = proto._sshpkApiVersion;\n\tif (ver === undefined)\n\t\tver = klass._oldVersionDetect(obj);\n\tassert.ok(ver[0] == needVer[0] && ver[1] >= needVer[1],\n\t name + ' must be compatible with ' + klass.name + ' klass ' +\n\t 'version ' + needVer[0] + '.' + needVer[1]);\n}\n\nvar CIPHER_LEN = {\n\t'des-ede3-cbc': { key: 24, iv: 8 },\n\t'aes-128-cbc': { key: 16, iv: 16 },\n\t'aes-256-cbc': { key: 32, iv: 16 }\n};\nvar PKCS5_SALT_LEN = 8;\n\nfunction opensslKeyDeriv(cipher, salt, passphrase, count) {\n\tassert.buffer(salt, 'salt');\n\tassert.buffer(passphrase, 'passphrase');\n\tassert.number(count, 'iteration count');\n\n\tvar clen = CIPHER_LEN[cipher];\n\tassert.object(clen, 'supported cipher');\n\n\tsalt = salt.slice(0, PKCS5_SALT_LEN);\n\n\tvar D, D_prev, bufs;\n\tvar material = Buffer.alloc(0);\n\twhile (material.length < clen.key + clen.iv) {\n\t\tbufs = [];\n\t\tif (D_prev)\n\t\t\tbufs.push(D_prev);\n\t\tbufs.push(passphrase);\n\t\tbufs.push(salt);\n\t\tD = Buffer.concat(bufs);\n\t\tfor (var j = 0; j < count; ++j)\n\t\t\tD = crypto.createHash('md5').update(D).digest();\n\t\tmaterial = Buffer.concat([material, D]);\n\t\tD_prev = D;\n\t}\n\n\treturn ({\n\t key: material.slice(0, clen.key),\n\t iv: material.slice(clen.key, clen.key + clen.iv)\n\t});\n}\n\n/* See: RFC2898 */\nfunction pbkdf2(hashAlg, salt, iterations, size, passphrase) {\n\tvar hkey = Buffer.alloc(salt.length + 4);\n\tsalt.copy(hkey);\n\n\tvar gen = 0, ts = [];\n\tvar i = 1;\n\twhile (gen < size) {\n\t\tvar t = T(i++);\n\t\tgen += t.length;\n\t\tts.push(t);\n\t}\n\treturn (Buffer.concat(ts).slice(0, size));\n\n\tfunction T(I) {\n\t\thkey.writeUInt32BE(I, hkey.length - 4);\n\n\t\tvar hmac = crypto.createHmac(hashAlg, passphrase);\n\t\thmac.update(hkey);\n\n\t\tvar Ti = hmac.digest();\n\t\tvar Uc = Ti;\n\t\tvar c = 1;\n\t\twhile (c++ < iterations) {\n\t\t\thmac = crypto.createHmac(hashAlg, passphrase);\n\t\t\thmac.update(Uc);\n\t\t\tUc = hmac.digest();\n\t\t\tfor (var x = 0; x < Ti.length; ++x)\n\t\t\t\tTi[x] ^= Uc[x];\n\t\t}\n\t\treturn (Ti);\n\t}\n}\n\n/* Count leading zero bits on a buffer */\nfunction countZeros(buf) {\n\tvar o = 0, obit = 8;\n\twhile (o < buf.length) {\n\t\tvar mask = (1 << obit);\n\t\tif ((buf[o] & mask) === mask)\n\t\t\tbreak;\n\t\tobit--;\n\t\tif (obit < 0) {\n\t\t\to++;\n\t\t\tobit = 8;\n\t\t}\n\t}\n\treturn (o*8 + (8 - obit) - 1);\n}\n\nfunction bufferSplit(buf, chr) {\n\tassert.buffer(buf);\n\tassert.string(chr);\n\n\tvar parts = [];\n\tvar lastPart = 0;\n\tvar matches = 0;\n\tfor (var i = 0; i < buf.length; ++i) {\n\t\tif (buf[i] === chr.charCodeAt(matches))\n\t\t\t++matches;\n\t\telse if (buf[i] === chr.charCodeAt(0))\n\t\t\tmatches = 1;\n\t\telse\n\t\t\tmatches = 0;\n\n\t\tif (matches >= chr.length) {\n\t\t\tvar newPart = i + 1;\n\t\t\tparts.push(buf.slice(lastPart, newPart - matches));\n\t\t\tlastPart = newPart;\n\t\t\tmatches = 0;\n\t\t}\n\t}\n\tif (lastPart <= buf.length)\n\t\tparts.push(buf.slice(lastPart, buf.length));\n\n\treturn (parts);\n}\n\nfunction ecNormalize(buf, addZero) {\n\tassert.buffer(buf);\n\tif (buf[0] === 0x00 && buf[1] === 0x04) {\n\t\tif (addZero)\n\t\t\treturn (buf);\n\t\treturn (buf.slice(1));\n\t} else if (buf[0] === 0x04) {\n\t\tif (!addZero)\n\t\t\treturn (buf);\n\t} else {\n\t\twhile (buf[0] === 0x00)\n\t\t\tbuf = buf.slice(1);\n\t\tif (buf[0] === 0x02 || buf[0] === 0x03)\n\t\t\tthrow (new Error('Compressed elliptic curve points ' +\n\t\t\t 'are not supported'));\n\t\tif (buf[0] !== 0x04)\n\t\t\tthrow (new Error('Not a valid elliptic curve point'));\n\t\tif (!addZero)\n\t\t\treturn (buf);\n\t}\n\tvar b = Buffer.alloc(buf.length + 1);\n\tb[0] = 0x0;\n\tbuf.copy(b, 1);\n\treturn (b);\n}\n\nfunction readBitString(der, tag) {\n\tif (tag === undefined)\n\t\ttag = asn1.Ber.BitString;\n\tvar buf = der.readString(tag, true);\n\tassert.strictEqual(buf[0], 0x00, 'bit strings with unused bits are ' +\n\t 'not supported (0x' + buf[0].toString(16) + ')');\n\treturn (buf.slice(1));\n}\n\nfunction writeBitString(der, buf, tag) {\n\tif (tag === undefined)\n\t\ttag = asn1.Ber.BitString;\n\tvar b = Buffer.alloc(buf.length + 1);\n\tb[0] = 0x00;\n\tbuf.copy(b, 1);\n\tder.writeBuffer(b, tag);\n}\n\nfunction mpNormalize(buf) {\n\tassert.buffer(buf);\n\twhile (buf.length > 1 && buf[0] === 0x00 && (buf[1] & 0x80) === 0x00)\n\t\tbuf = buf.slice(1);\n\tif ((buf[0] & 0x80) === 0x80) {\n\t\tvar b = Buffer.alloc(buf.length + 1);\n\t\tb[0] = 0x00;\n\t\tbuf.copy(b, 1);\n\t\tbuf = b;\n\t}\n\treturn (buf);\n}\n\nfunction mpDenormalize(buf) {\n\tassert.buffer(buf);\n\twhile (buf.length > 1 && buf[0] === 0x00)\n\t\tbuf = buf.slice(1);\n\treturn (buf);\n}\n\nfunction zeroPadToLength(buf, len) {\n\tassert.buffer(buf);\n\tassert.number(len);\n\twhile (buf.length > len) {\n\t\tassert.equal(buf[0], 0x00);\n\t\tbuf = buf.slice(1);\n\t}\n\twhile (buf.length < len) {\n\t\tvar b = Buffer.alloc(buf.length + 1);\n\t\tb[0] = 0x00;\n\t\tbuf.copy(b, 1);\n\t\tbuf = b;\n\t}\n\treturn (buf);\n}\n\nfunction bigintToMpBuf(bigint) {\n\tvar buf = Buffer.from(bigint.toByteArray());\n\tbuf = mpNormalize(buf);\n\treturn (buf);\n}\n\nfunction calculateDSAPublic(g, p, x) {\n\tassert.buffer(g);\n\tassert.buffer(p);\n\tassert.buffer(x);\n\tg = new jsbn(g);\n\tp = new jsbn(p);\n\tx = new jsbn(x);\n\tvar y = g.modPow(x, p);\n\tvar ybuf = bigintToMpBuf(y);\n\treturn (ybuf);\n}\n\nfunction calculateED25519Public(k) {\n\tassert.buffer(k);\n\n\tvar kp = nacl.sign.keyPair.fromSeed(new Uint8Array(k));\n\treturn (Buffer.from(kp.publicKey));\n}\n\nfunction calculateX25519Public(k) {\n\tassert.buffer(k);\n\n\tvar kp = nacl.box.keyPair.fromSeed(new Uint8Array(k));\n\treturn (Buffer.from(kp.publicKey));\n}\n\nfunction addRSAMissing(key) {\n\tassert.object(key);\n\tassertCompatible(key, PrivateKey, [1, 1]);\n\n\tvar d = new jsbn(key.part.d.data);\n\tvar buf;\n\n\tif (!key.part.dmodp) {\n\t\tvar p = new jsbn(key.part.p.data);\n\t\tvar dmodp = d.mod(p.subtract(1));\n\n\t\tbuf = bigintToMpBuf(dmodp);\n\t\tkey.part.dmodp = {name: 'dmodp', data: buf};\n\t\tkey.parts.push(key.part.dmodp);\n\t}\n\tif (!key.part.dmodq) {\n\t\tvar q = new jsbn(key.part.q.data);\n\t\tvar dmodq = d.mod(q.subtract(1));\n\n\t\tbuf = bigintToMpBuf(dmodq);\n\t\tkey.part.dmodq = {name: 'dmodq', data: buf};\n\t\tkey.parts.push(key.part.dmodq);\n\t}\n}\n\nfunction publicFromPrivateECDSA(curveName, priv) {\n\tassert.string(curveName, 'curveName');\n\tassert.buffer(priv);\n\tvar params = algs.curves[curveName];\n\tvar p = new jsbn(params.p);\n\tvar a = new jsbn(params.a);\n\tvar b = new jsbn(params.b);\n\tvar curve = new ec.ECCurveFp(p, a, b);\n\tvar G = curve.decodePointHex(params.G.toString('hex'));\n\n\tvar d = new jsbn(mpNormalize(priv));\n\tvar pub = G.multiply(d);\n\tpub = Buffer.from(curve.encodePointHex(pub), 'hex');\n\n\tvar parts = [];\n\tparts.push({name: 'curve', data: Buffer.from(curveName)});\n\tparts.push({name: 'Q', data: pub});\n\n\tvar key = new Key({type: 'ecdsa', curve: curve, parts: parts});\n\treturn (key);\n}\n\nfunction opensshCipherInfo(cipher) {\n\tvar inf = {};\n\tswitch (cipher) {\n\tcase '3des-cbc':\n\t\tinf.keySize = 24;\n\t\tinf.blockSize = 8;\n\t\tinf.opensslName = 'des-ede3-cbc';\n\t\tbreak;\n\tcase 'blowfish-cbc':\n\t\tinf.keySize = 16;\n\t\tinf.blockSize = 8;\n\t\tinf.opensslName = 'bf-cbc';\n\t\tbreak;\n\tcase 'aes128-cbc':\n\tcase 'aes128-ctr':\n\tcase 'aes128-gcm@openssh.com':\n\t\tinf.keySize = 16;\n\t\tinf.blockSize = 16;\n\t\tinf.opensslName = 'aes-128-' + cipher.slice(7, 10);\n\t\tbreak;\n\tcase 'aes192-cbc':\n\tcase 'aes192-ctr':\n\tcase 'aes192-gcm@openssh.com':\n\t\tinf.keySize = 24;\n\t\tinf.blockSize = 16;\n\t\tinf.opensslName = 'aes-192-' + cipher.slice(7, 10);\n\t\tbreak;\n\tcase 'aes256-cbc':\n\tcase 'aes256-ctr':\n\tcase 'aes256-gcm@openssh.com':\n\t\tinf.keySize = 32;\n\t\tinf.blockSize = 16;\n\t\tinf.opensslName = 'aes-256-' + cipher.slice(7, 10);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error(\n\t\t 'Unsupported openssl cipher \"' + cipher + '\"'));\n\t}\n\treturn (inf);\n}\n","'use strict';\n\nvar isNative = /\\.node$/;\n\nfunction forEach(obj, callback) {\n for ( var key in obj ) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) {\n continue;\n }\n callback(key);\n }\n}\n\nfunction assign(target, source) {\n forEach(source, function (key) {\n target[key] = source[key];\n });\n return target;\n}\n\nfunction clearCache(requireCache) {\n forEach(requireCache, function (resolvedPath) {\n if (!isNative.test(resolvedPath)) {\n delete requireCache[resolvedPath];\n }\n });\n}\n\nmodule.exports = function (requireCache, callback, callbackForModulesToKeep, module) {\n\n var originalCache = assign({}, requireCache);\n clearCache(requireCache);\n\n if (callbackForModulesToKeep) {\n\n var originalModuleChildren = module.children ? module.children.slice() : false; // Creates a shallow copy of module.children\n\n callbackForModulesToKeep();\n\n // Lists the cache entries made by callbackForModulesToKeep()\n var modulesToKeep = [];\n forEach(requireCache, function (key) {\n modulesToKeep.push(key);\n });\n\n // Discards the modules required in callbackForModulesToKeep()\n clearCache(requireCache);\n\n if (module.children) { // Only true for node.js\n module.children = originalModuleChildren; // Removes last references to modules required in callbackForModulesToKeep() -> No memory leak\n }\n\n // Takes the cache entries of the original cache in case the modules where required before\n for ( var i = 0; i < modulesToKeep.length; i+=1 ) {\n if (originalCache[modulesToKeep[i]]) {\n requireCache[modulesToKeep[i]] = originalCache[modulesToKeep[i]];\n }\n }\n\n }\n\n var freshModule = callback();\n\n var stealthCache = callbackForModulesToKeep ? assign({}, requireCache) : false;\n\n clearCache(requireCache);\n\n if (callbackForModulesToKeep) {\n // In case modules to keep were required inside the stealthy require for the first time, copy them to the restored cache\n for ( var k = 0; k < modulesToKeep.length; k+=1 ) {\n if (stealthCache[modulesToKeep[k]]) {\n requireCache[modulesToKeep[k]] = stealthCache[modulesToKeep[k]];\n }\n }\n }\n\n assign(requireCache, originalCache);\n\n return freshModule;\n\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || checkTypeSupport('arraybuffer')\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && checkTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + Buffer.from(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\tself._socketTimeout = null\n\tself._socketTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tif ('timeout' in opts && opts.timeout !== 0) {\n\t\tself.setTimeout(opts.timeout)\n\t}\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n body = new Blob(self._body, {\n type: (headersObj['content-type'] || {}).value || ''\n });\n }\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._resetTimers(false)\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself._resetTimers(true)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself._resetTimers(true)\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tself._resetTimers(false)\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress(self._resetTimers.bind(self))\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._resetTimers.bind(self))\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype._resetTimers = function (done) {\n\tvar self = this\n\n\tglobal.clearTimeout(self._socketTimer)\n\tself._socketTimer = null\n\n\tif (done) {\n\t\tglobal.clearTimeout(self._fetchTimer)\n\t\tself._fetchTimer = null\n\t} else if (self._socketTimeout) {\n\t\tself._socketTimer = global.setTimeout(function () {\n\t\t\tself.emit('timeout')\n\t\t}, self._socketTimeout)\n\t}\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function (err) {\n\tvar self = this\n\tself._destroyed = true\n\tself._resetTimers(true)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n\n\tif (err)\n\t\tself.emit('error', err)\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.setTimeout = function (timeout, cb) {\n\tvar self = this\n\n\tif (cb)\n\t\tself.once('timeout', cb)\n\n\tself._socketTimeout = timeout\n\tself._resetTimers(false)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, resetTimers) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\tresetTimers(false)\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(Buffer.from(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tresetTimers(result.done)\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(Buffer.from(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tresetTimers(true)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function (resetTimers) {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text':\n\t\t\tresponse = xhr.responseText\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = Buffer.alloc(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tresetTimers(true)\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tresetTimers(true)\n\t\tself.push(null)\n\t}\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","var bind = Function.prototype.bind,\n slice = Array.prototype.slice,\n toString = Object.prototype.toString;\n\nexports.bind = function (func, that) {\n\tvar args = slice.call(arguments, 2);\n\n\tif (bind) {\n\t\targs.unshift(that);\n\n\t\treturn bind.apply(func, args);\n\t}\n\n\treturn function () {\n\t\treturn func.apply(that, args.concat(slice.call(arguments)));\n\t};\n}\n\nexports.slice = function (object, begin, end) {\n\treturn slice.call(object, begin, end);\n};\n\nexports.toString = function (object) {\n\treturn toString.call(object);\n};\n\n\nexports.isNull = nativeTypeChecker('Null');\nexports.isDate = nativeTypeChecker('Date');\nexports.isMath = nativeTypeChecker('Math');\nexports.isJSON = nativeTypeChecker('JSON');\nexports.isError = nativeTypeChecker('Error');\nexports.isArray = Array.isArray || nativeTypeChecker('Array');\nexports.isObject = nativeTypeChecker('Object');\nexports.isRegExp = nativeTypeChecker('RegExp');\nexports.isNumber = nativeTypeChecker('Number');\nexports.isString = nativeTypeChecker('String');\nexports.isBoolean = nativeTypeChecker('Boolean');\nexports.isFunction = nativeTypeChecker('Function');\nexports.isArguments = nativeTypeChecker('Arguments');\nexports.isUndefined = nativeTypeChecker('Undefined');\n\nfunction nativeTypeChecker (type) {\n\ttype = '[object ' + type + ']';\n\n\treturn function (object) {return toString.call(object) === type;};\n}\n\n\nexports.isValid = function (object) {\n\treturn !exports.isInvalid(object);\n}\n\nexports.isInvalid = function (object) {\n\treturn exports.isNull(object) || exports.isUndefined(object);\n}\n\n\nexports.isImmutable = function (object) {\n\treturn !exports.isMutable(object);\n};\n\nexports.isMutable = function (object) {\n\treturn object &&\n\t\t!exports.isNumber(object) &&\n\t\t!exports.isString(object) &&\n\t\t!exports.isBoolean(object);\n};\n\n\nexports.isEnumerable = function (object) {\n\tif (!object) return false;\n\n\tif (exports.isNumber(object)) return exports.isInteger(object);\n\n\tif (exports.isInteger(object.length)) return object.length >= 0;\n\n\treturn exports.isEnumerableObject(object);\n};\n\nexports.isEnumerableObject = function (object) {\n\tfor (var _ in object) return true;\n\n\treturn false;\n};\n\nexports.isEmpty = function (object) {\n\treturn exports.isObject(object) ?\n\t\t!exports.isEnumerableObject(object) :\n\t\t!exports.isEnumerable(object);\n}\n\n\nexports.isFiniteNumber = function (number) {\n\treturn exports.isNumber(number) && isFinite(number);\n};\n\nexports.isInteger = function (number) {\n\treturn exports.isFiniteNumber(number) && Math.floor(number) === number;\n};\n\nexports.isVague = function (object) {\n\treturn object && typeof object === 'object';\n};\n\nexports.isList = function (list) {\n\treturn (\n\t\texports.isVague(list) &&\n\t\texports.isInteger(list.length) && list.length >= 0);\n};\n\n\nexports.isNaN = isNaN;\n\n\nexports.nativeTypeOf = function (object) {\n\tvar nativeType = object.toString(object);\n\n\treturn nativeType.substring(8, nativeType.length - 1);\n};\n\nexports.typeOf = function (object) {\n\treturn exports.isObject(object) ?\n\t\tobject.constructor.name || 'Object' :\n\t\texports.nativeTypeOf(object);\n};\n\n\nexports.safeApply = function (func, args, that) {\n\treturn exports.isFunction(func) ?\n\t\tfunc.apply(that || this, args) :\n\t\tundefined;\n};\n\n\nexports.enumerate = function (object, iterator, that, _ignoreForEach) {\n\tif (!object) return object;\n\n\tthat = that || this;\n\n\tif (!_ignoreForEach && exports.isFunction(object.forEach))\n\t\treturn object.forEach(iterator, that);\n\n\tvar key = 0, end = object.length;\n\n\tif (exports.isString(object)) {\n\t\tfor (; key < end; key += 1) iterator.call(that, object.charAt(key), key, object);\n\n\t} if (exports.isList(object)) {\n\t\tfor (; key < end; key += 1) iterator.call(that, object[key], key, object);\n\n\t} else if (exports.isInteger(object)) {\n\t\tif (object < 0) {\n\t\t\tend = 0;\n\t\t\tkey = object;\n\n\t\t} else end = object;\n\n\t\tfor (; key < end; key += 1) iterator.call(that, key, Math.abs(key), object);\n\n\t} else exports.enumerateObject(object, iterator, that);\n\n\treturn object;\n};\n\nexports.enumerateObject = function (object, iterator, that) {\n\tvar key;\n\n\tfor (key in object) iterator.call(that, object[key], key, object);\n\n\treturn object;\n}\n\n\nexports.assignAll = function (target, giver, filter, that, _method) {\n\tif (!exports.isMutable(target)) return target;\n\n\t_method = _method === 'enumerate' ? _method : 'enumerateObject';\n\n\texports[_method](giver, function (value, key) {\n\t\tif (!exports.safeApply(filter, arguments, that || target)) {\n\t\t\ttarget[key] = value;\n\t\t}\n\t});\n\n\treturn target;\n};\n\nexports.assignList = function (target, giver, filter, that) {\n\treturn exports.assignAll(target, giver, filter, that, 'enumerate');\n};\n\nexports.assign = function (target, giver, filter, that) {\n\treturn exports.assignAll(target, giver, function (_, key) {\n\t\tif (!giver.hasOwnProperty(key)) return true;\n\n\t\treturn exports.safeApply(filter, arguments, that || this);\n\t}, that);\n};\n\n\nexports.toArray = function (object, begin, end) {\n\tif (exports.isArray()) return exports.isInteger(begin) ?\n\t\texports.slice(object, begin, end) :\n\t\tobject;\n\n\tif (exports.isArguments(object) || exports.isString(object))\n\t\treturn exports.slice(object, begin, end);\n\n\tif (!exports.isList(object)) return undefined;\n\n\tif (!exports.isInteger(end)) end = object.length;\n\n\tbegin = begin || 0;\n\n\treturn exports.assignList([], object, function (_, i) {\n\t\treturn begin > i || i >= end;\n\t});\n};\n","/*!\n * Copyright (c) 2015, Salesforce.com, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of Salesforce.com nor the names of its contributors may\n * be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n'use strict';\nvar net = require('net');\nvar urlParse = require('url').parse;\nvar util = require('util');\nvar pubsuffix = require('./pubsuffix-psl');\nvar Store = require('./store').Store;\nvar MemoryCookieStore = require('./memstore').MemoryCookieStore;\nvar pathMatch = require('./pathMatch').pathMatch;\nvar VERSION = require('./version');\n\nvar punycode;\ntry {\n punycode = require('punycode');\n} catch(e) {\n console.warn(\"tough-cookie: can't load punycode; won't use punycode for domain normalization\");\n}\n\n// From RFC6265 S4.1.1\n// note that it excludes \\x3B \";\"\nvar COOKIE_OCTETS = /^[\\x21\\x23-\\x2B\\x2D-\\x3A\\x3C-\\x5B\\x5D-\\x7E]+$/;\n\nvar CONTROL_CHARS = /[\\x00-\\x1F]/;\n\n// From Chromium // '\\r', '\\n' and '\\0' should be treated as a terminator in\n// the \"relaxed\" mode, see:\n// https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60\nvar TERMINATORS = ['\\n', '\\r', '\\0'];\n\n// RFC6265 S4.1.1 defines path value as 'any CHAR except CTLs or \";\"'\n// Note ';' is \\x3B\nvar PATH_VALUE = /[\\x20-\\x3A\\x3C-\\x7E]+/;\n\n// date-time parsing constants (RFC6265 S5.1.1)\n\nvar DATE_DELIM = /[\\x09\\x20-\\x2F\\x3B-\\x40\\x5B-\\x60\\x7B-\\x7E]/;\n\nvar MONTH_TO_NUM = {\n jan:0, feb:1, mar:2, apr:3, may:4, jun:5,\n jul:6, aug:7, sep:8, oct:9, nov:10, dec:11\n};\nvar NUM_TO_MONTH = [\n 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'\n];\nvar NUM_TO_DAY = [\n 'Sun','Mon','Tue','Wed','Thu','Fri','Sat'\n];\n\nvar MAX_TIME = 2147483647000; // 31-bit max\nvar MIN_TIME = 0; // 31-bit min\n\n/*\n * Parses a Natural number (i.e., non-negative integer) with either the\n * *DIGIT ( non-digit *OCTET )\n * or\n * *DIGIT\n * grammar (RFC6265 S5.1.1).\n *\n * The \"trailingOK\" boolean controls if the grammar accepts a\n * \"( non-digit *OCTET )\" trailer.\n */\nfunction parseDigits(token, minDigits, maxDigits, trailingOK) {\n var count = 0;\n while (count < token.length) {\n var c = token.charCodeAt(count);\n // \"non-digit = %x00-2F / %x3A-FF\"\n if (c <= 0x2F || c >= 0x3A) {\n break;\n }\n count++;\n }\n\n // constrain to a minimum and maximum number of digits.\n if (count < minDigits || count > maxDigits) {\n return null;\n }\n\n if (!trailingOK && count != token.length) {\n return null;\n }\n\n return parseInt(token.substr(0,count), 10);\n}\n\nfunction parseTime(token) {\n var parts = token.split(':');\n var result = [0,0,0];\n\n /* RF6256 S5.1.1:\n * time = hms-time ( non-digit *OCTET )\n * hms-time = time-field \":\" time-field \":\" time-field\n * time-field = 1*2DIGIT\n */\n\n if (parts.length !== 3) {\n return null;\n }\n\n for (var i = 0; i < 3; i++) {\n // \"time-field\" must be strictly \"1*2DIGIT\", HOWEVER, \"hms-time\" can be\n // followed by \"( non-digit *OCTET )\" so therefore the last time-field can\n // have a trailer\n var trailingOK = (i == 2);\n var num = parseDigits(parts[i], 1, 2, trailingOK);\n if (num === null) {\n return null;\n }\n result[i] = num;\n }\n\n return result;\n}\n\nfunction parseMonth(token) {\n token = String(token).substr(0,3).toLowerCase();\n var num = MONTH_TO_NUM[token];\n return num >= 0 ? num : null;\n}\n\n/*\n * RFC6265 S5.1.1 date parser (see RFC for full grammar)\n */\nfunction parseDate(str) {\n if (!str) {\n return;\n }\n\n /* RFC6265 S5.1.1:\n * 2. Process each date-token sequentially in the order the date-tokens\n * appear in the cookie-date\n */\n var tokens = str.split(DATE_DELIM);\n if (!tokens) {\n return;\n }\n\n var hour = null;\n var minute = null;\n var second = null;\n var dayOfMonth = null;\n var month = null;\n var year = null;\n\n for (var i=0; i= 70 && year <= 99) {\n year += 1900;\n } else if (year >= 0 && year <= 69) {\n year += 2000;\n }\n }\n }\n }\n\n /* RFC 6265 S5.1.1\n * \"5. Abort these steps and fail to parse the cookie-date if:\n * * at least one of the found-day-of-month, found-month, found-\n * year, or found-time flags is not set,\n * * the day-of-month-value is less than 1 or greater than 31,\n * * the year-value is less than 1601,\n * * the hour-value is greater than 23,\n * * the minute-value is greater than 59, or\n * * the second-value is greater than 59.\n * (Note that leap seconds cannot be represented in this syntax.)\"\n *\n * So, in order as above:\n */\n if (\n dayOfMonth === null || month === null || year === null || second === null ||\n dayOfMonth < 1 || dayOfMonth > 31 ||\n year < 1601 ||\n hour > 23 ||\n minute > 59 ||\n second > 59\n ) {\n return;\n }\n\n return new Date(Date.UTC(year, month, dayOfMonth, hour, minute, second));\n}\n\nfunction formatDate(date) {\n var d = date.getUTCDate(); d = d >= 10 ? d : '0'+d;\n var h = date.getUTCHours(); h = h >= 10 ? h : '0'+h;\n var m = date.getUTCMinutes(); m = m >= 10 ? m : '0'+m;\n var s = date.getUTCSeconds(); s = s >= 10 ? s : '0'+s;\n return NUM_TO_DAY[date.getUTCDay()] + ', ' +\n d+' '+ NUM_TO_MONTH[date.getUTCMonth()] +' '+ date.getUTCFullYear() +' '+\n h+':'+m+':'+s+' GMT';\n}\n\n// S5.1.2 Canonicalized Host Names\nfunction canonicalDomain(str) {\n if (str == null) {\n return null;\n }\n str = str.trim().replace(/^\\./,''); // S4.1.2.3 & S5.2.3: ignore leading .\n\n // convert to IDN if any non-ASCII characters\n if (punycode && /[^\\u0001-\\u007f]/.test(str)) {\n str = punycode.toASCII(str);\n }\n\n return str.toLowerCase();\n}\n\n// S5.1.3 Domain Matching\nfunction domainMatch(str, domStr, canonicalize) {\n if (str == null || domStr == null) {\n return null;\n }\n if (canonicalize !== false) {\n str = canonicalDomain(str);\n domStr = canonicalDomain(domStr);\n }\n\n /*\n * \"The domain string and the string are identical. (Note that both the\n * domain string and the string will have been canonicalized to lower case at\n * this point)\"\n */\n if (str == domStr) {\n return true;\n }\n\n /* \"All of the following [three] conditions hold:\" (order adjusted from the RFC) */\n\n /* \"* The string is a host name (i.e., not an IP address).\" */\n if (net.isIP(str)) {\n return false;\n }\n\n /* \"* The domain string is a suffix of the string\" */\n var idx = str.indexOf(domStr);\n if (idx <= 0) {\n return false; // it's a non-match (-1) or prefix (0)\n }\n\n // e.g \"a.b.c\".indexOf(\"b.c\") === 2\n // 5 === 3+2\n if (str.length !== domStr.length + idx) { // it's not a suffix\n return false;\n }\n\n /* \"* The last character of the string that is not included in the domain\n * string is a %x2E (\".\") character.\" */\n if (str.substr(idx-1,1) !== '.') {\n return false;\n }\n\n return true;\n}\n\n\n// RFC6265 S5.1.4 Paths and Path-Match\n\n/*\n * \"The user agent MUST use an algorithm equivalent to the following algorithm\n * to compute the default-path of a cookie:\"\n *\n * Assumption: the path (and not query part or absolute uri) is passed in.\n */\nfunction defaultPath(path) {\n // \"2. If the uri-path is empty or if the first character of the uri-path is not\n // a %x2F (\"/\") character, output %x2F (\"/\") and skip the remaining steps.\n if (!path || path.substr(0,1) !== \"/\") {\n return \"/\";\n }\n\n // \"3. If the uri-path contains no more than one %x2F (\"/\") character, output\n // %x2F (\"/\") and skip the remaining step.\"\n if (path === \"/\") {\n return path;\n }\n\n var rightSlash = path.lastIndexOf(\"/\");\n if (rightSlash === 0) {\n return \"/\";\n }\n\n // \"4. Output the characters of the uri-path from the first character up to,\n // but not including, the right-most %x2F (\"/\").\"\n return path.slice(0, rightSlash);\n}\n\nfunction trimTerminator(str) {\n for (var t = 0; t < TERMINATORS.length; t++) {\n var terminatorIdx = str.indexOf(TERMINATORS[t]);\n if (terminatorIdx !== -1) {\n str = str.substr(0,terminatorIdx);\n }\n }\n\n return str;\n}\n\nfunction parseCookiePair(cookiePair, looseMode) {\n cookiePair = trimTerminator(cookiePair);\n\n var firstEq = cookiePair.indexOf('=');\n if (looseMode) {\n if (firstEq === 0) { // '=' is immediately at start\n cookiePair = cookiePair.substr(1);\n firstEq = cookiePair.indexOf('='); // might still need to split on '='\n }\n } else { // non-loose mode\n if (firstEq <= 0) { // no '=' or is at start\n return; // needs to have non-empty \"cookie-name\"\n }\n }\n\n var cookieName, cookieValue;\n if (firstEq <= 0) {\n cookieName = \"\";\n cookieValue = cookiePair.trim();\n } else {\n cookieName = cookiePair.substr(0, firstEq).trim();\n cookieValue = cookiePair.substr(firstEq+1).trim();\n }\n\n if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) {\n return;\n }\n\n var c = new Cookie();\n c.key = cookieName;\n c.value = cookieValue;\n return c;\n}\n\nfunction parse(str, options) {\n if (!options || typeof options !== 'object') {\n options = {};\n }\n str = str.trim();\n\n // We use a regex to parse the \"name-value-pair\" part of S5.2\n var firstSemi = str.indexOf(';'); // S5.2 step 1\n var cookiePair = (firstSemi === -1) ? str : str.substr(0, firstSemi);\n var c = parseCookiePair(cookiePair, !!options.loose);\n if (!c) {\n return;\n }\n\n if (firstSemi === -1) {\n return c;\n }\n\n // S5.2.3 \"unparsed-attributes consist of the remainder of the set-cookie-string\n // (including the %x3B (\";\") in question).\" plus later on in the same section\n // \"discard the first \";\" and trim\".\n var unparsed = str.slice(firstSemi + 1).trim();\n\n // \"If the unparsed-attributes string is empty, skip the rest of these\n // steps.\"\n if (unparsed.length === 0) {\n return c;\n }\n\n /*\n * S5.2 says that when looping over the items \"[p]rocess the attribute-name\n * and attribute-value according to the requirements in the following\n * subsections\" for every item. Plus, for many of the individual attributes\n * in S5.3 it says to use the \"attribute-value of the last attribute in the\n * cookie-attribute-list\". Therefore, in this implementation, we overwrite\n * the previous value.\n */\n var cookie_avs = unparsed.split(';');\n while (cookie_avs.length) {\n var av = cookie_avs.shift().trim();\n if (av.length === 0) { // happens if \";;\" appears\n continue;\n }\n var av_sep = av.indexOf('=');\n var av_key, av_value;\n\n if (av_sep === -1) {\n av_key = av;\n av_value = null;\n } else {\n av_key = av.substr(0,av_sep);\n av_value = av.substr(av_sep+1);\n }\n\n av_key = av_key.trim().toLowerCase();\n\n if (av_value) {\n av_value = av_value.trim();\n }\n\n switch(av_key) {\n case 'expires': // S5.2.1\n if (av_value) {\n var exp = parseDate(av_value);\n // \"If the attribute-value failed to parse as a cookie date, ignore the\n // cookie-av.\"\n if (exp) {\n // over and underflow not realistically a concern: V8's getTime() seems to\n // store something larger than a 32-bit time_t (even with 32-bit node)\n c.expires = exp;\n }\n }\n break;\n\n case 'max-age': // S5.2.2\n if (av_value) {\n // \"If the first character of the attribute-value is not a DIGIT or a \"-\"\n // character ...[or]... If the remainder of attribute-value contains a\n // non-DIGIT character, ignore the cookie-av.\"\n if (/^-?[0-9]+$/.test(av_value)) {\n var delta = parseInt(av_value, 10);\n // \"If delta-seconds is less than or equal to zero (0), let expiry-time\n // be the earliest representable date and time.\"\n c.setMaxAge(delta);\n }\n }\n break;\n\n case 'domain': // S5.2.3\n // \"If the attribute-value is empty, the behavior is undefined. However,\n // the user agent SHOULD ignore the cookie-av entirely.\"\n if (av_value) {\n // S5.2.3 \"Let cookie-domain be the attribute-value without the leading %x2E\n // (\".\") character.\"\n var domain = av_value.trim().replace(/^\\./, '');\n if (domain) {\n // \"Convert the cookie-domain to lower case.\"\n c.domain = domain.toLowerCase();\n }\n }\n break;\n\n case 'path': // S5.2.4\n /*\n * \"If the attribute-value is empty or if the first character of the\n * attribute-value is not %x2F (\"/\"):\n * Let cookie-path be the default-path.\n * Otherwise:\n * Let cookie-path be the attribute-value.\"\n *\n * We'll represent the default-path as null since it depends on the\n * context of the parsing.\n */\n c.path = av_value && av_value[0] === \"/\" ? av_value : null;\n break;\n\n case 'secure': // S5.2.5\n /*\n * \"If the attribute-name case-insensitively matches the string \"Secure\",\n * the user agent MUST append an attribute to the cookie-attribute-list\n * with an attribute-name of Secure and an empty attribute-value.\"\n */\n c.secure = true;\n break;\n\n case 'httponly': // S5.2.6 -- effectively the same as 'secure'\n c.httpOnly = true;\n break;\n\n default:\n c.extensions = c.extensions || [];\n c.extensions.push(av);\n break;\n }\n }\n\n return c;\n}\n\n// avoid the V8 deoptimization monster!\nfunction jsonParse(str) {\n var obj;\n try {\n obj = JSON.parse(str);\n } catch (e) {\n return e;\n }\n return obj;\n}\n\nfunction fromJSON(str) {\n if (!str) {\n return null;\n }\n\n var obj;\n if (typeof str === 'string') {\n obj = jsonParse(str);\n if (obj instanceof Error) {\n return null;\n }\n } else {\n // assume it's an Object\n obj = str;\n }\n\n var c = new Cookie();\n for (var i=0; i 1) {\n var lindex = path.lastIndexOf('/');\n if (lindex === 0) {\n break;\n }\n path = path.substr(0,lindex);\n permutations.push(path);\n }\n permutations.push('/');\n return permutations;\n}\n\nfunction getCookieContext(url) {\n if (url instanceof Object) {\n return url;\n }\n // NOTE: decodeURI will throw on malformed URIs (see GH-32).\n // Therefore, we will just skip decoding for such URIs.\n try {\n url = decodeURI(url);\n }\n catch(err) {\n // Silently swallow error\n }\n\n return urlParse(url);\n}\n\nfunction Cookie(options) {\n options = options || {};\n\n Object.keys(options).forEach(function(prop) {\n if (Cookie.prototype.hasOwnProperty(prop) &&\n Cookie.prototype[prop] !== options[prop] &&\n prop.substr(0,1) !== '_')\n {\n this[prop] = options[prop];\n }\n }, this);\n\n this.creation = this.creation || new Date();\n\n // used to break creation ties in cookieCompare():\n Object.defineProperty(this, 'creationIndex', {\n configurable: false,\n enumerable: false, // important for assert.deepEqual checks\n writable: true,\n value: ++Cookie.cookiesCreated\n });\n}\n\nCookie.cookiesCreated = 0; // incremented each time a cookie is created\n\nCookie.parse = parse;\nCookie.fromJSON = fromJSON;\n\nCookie.prototype.key = \"\";\nCookie.prototype.value = \"\";\n\n// the order in which the RFC has them:\nCookie.prototype.expires = \"Infinity\"; // coerces to literal Infinity\nCookie.prototype.maxAge = null; // takes precedence over expires for TTL\nCookie.prototype.domain = null;\nCookie.prototype.path = null;\nCookie.prototype.secure = false;\nCookie.prototype.httpOnly = false;\nCookie.prototype.extensions = null;\n\n// set by the CookieJar:\nCookie.prototype.hostOnly = null; // boolean when set\nCookie.prototype.pathIsDefault = null; // boolean when set\nCookie.prototype.creation = null; // Date when set; defaulted by Cookie.parse\nCookie.prototype.lastAccessed = null; // Date when set\nObject.defineProperty(Cookie.prototype, 'creationIndex', {\n configurable: true,\n enumerable: false,\n writable: true,\n value: 0\n});\n\nCookie.serializableProperties = Object.keys(Cookie.prototype)\n .filter(function(prop) {\n return !(\n Cookie.prototype[prop] instanceof Function ||\n prop === 'creationIndex' ||\n prop.substr(0,1) === '_'\n );\n });\n\nCookie.prototype.inspect = function inspect() {\n var now = Date.now();\n return 'Cookie=\"'+this.toString() +\n '; hostOnly='+(this.hostOnly != null ? this.hostOnly : '?') +\n '; aAge='+(this.lastAccessed ? (now-this.lastAccessed.getTime())+'ms' : '?') +\n '; cAge='+(this.creation ? (now-this.creation.getTime())+'ms' : '?') +\n '\"';\n};\n\n// Use the new custom inspection symbol to add the custom inspect function if\n// available.\nif (util.inspect.custom) {\n Cookie.prototype[util.inspect.custom] = Cookie.prototype.inspect;\n}\n\nCookie.prototype.toJSON = function() {\n var obj = {};\n\n var props = Cookie.serializableProperties;\n for (var i=0; i= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push({host: options.host, port: options.port, request: req})\n return\n }\n\n // If we are under maxSockets create a new one.\n self.createConnection({host: options.host, port: options.port, request: req})\n}\n\nTunnelingAgent.prototype.createConnection = function createConnection(pending) {\n var self = this\n\n self.createSocket(pending, function(socket) {\n socket.on('free', onFree)\n socket.on('close', onCloseOrRemove)\n socket.on('agentRemove', onCloseOrRemove)\n pending.request.onSocket(socket)\n\n function onFree() {\n self.emit('free', socket, pending.host, pending.port)\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket)\n socket.removeListener('free', onFree)\n socket.removeListener('close', onCloseOrRemove)\n socket.removeListener('agentRemove', onCloseOrRemove)\n }\n })\n}\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this\n var placeholder = {}\n self.sockets.push(placeholder)\n\n var connectOptions = mergeOptions({}, self.proxyOptions,\n { method: 'CONNECT'\n , path: options.host + ':' + options.port\n , agent: false\n }\n )\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {}\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n Buffer.from(connectOptions.proxyAuth).toString('base64')\n }\n\n debug('making CONNECT request')\n var connectReq = self.request(connectOptions)\n connectReq.useChunkedEncodingByDefault = false // for v0.6\n connectReq.once('response', onResponse) // for v0.6\n connectReq.once('upgrade', onUpgrade) // for v0.6\n connectReq.once('connect', onConnect) // for v0.7 or later\n connectReq.once('error', onError)\n connectReq.end()\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head)\n })\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners()\n socket.removeAllListeners()\n\n if (res.statusCode === 200) {\n assert.equal(head.length, 0)\n debug('tunneling connection has established')\n self.sockets[self.sockets.indexOf(placeholder)] = socket\n cb(socket)\n } else {\n debug('tunneling socket could not be established, statusCode=%d', res.statusCode)\n var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode)\n error.code = 'ECONNRESET'\n options.request.emit('error', error)\n self.removeSocket(placeholder)\n }\n }\n\n function onError(cause) {\n connectReq.removeAllListeners()\n\n debug('tunneling socket could not be established, cause=%s\\n', cause.message, cause.stack)\n var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message)\n error.code = 'ECONNRESET'\n options.request.emit('error', error)\n self.removeSocket(placeholder)\n }\n}\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) return\n\n this.sockets.splice(pos, 1)\n\n var pending = this.requests.shift()\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createConnection(pending)\n }\n}\n\nfunction createSecureSocket(options, cb) {\n var self = this\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, mergeOptions({}, self.options,\n { servername: options.host\n , socket: socket\n }\n ))\n self.sockets[self.sockets.indexOf(socket)] = secureSocket\n cb(secureSocket)\n })\n}\n\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i]\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides)\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j]\n if (overrides[k] !== undefined) {\n target[k] = overrides[k]\n }\n }\n }\n }\n return target\n}\n\n\nvar debug\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments)\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0]\n } else {\n args.unshift('TUNNEL:')\n }\n console.error.apply(console, args)\n }\n} else {\n debug = function() {}\n}\nexports.debug = debug // for test\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n mlen = -1;\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n var t, i;\n for (i = 0; i < arguments.length; i++) {\n if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]')\n throw new TypeError('unexpected type ' + t + ', use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\n// TODO: Completely remove this in v0.15.\nif (!nacl.util) {\n nacl.util = {};\n nacl.util.decodeUTF8 = nacl.util.encodeUTF8 = nacl.util.encodeBase64 = nacl.util.decodeBase64 = function() {\n throw new Error('nacl.util moved into separate package: https://github.com/dchest/tweetnacl-util-js');\n };\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return false;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n if (arguments.length !== 2)\n throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?');\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","/** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.URI = global.URI || {})));\n}(this, (function (exports) { 'use strict';\n\nfunction merge() {\n for (var _len = arguments.length, sets = Array(_len), _key = 0; _key < _len; _key++) {\n sets[_key] = arguments[_key];\n }\n\n if (sets.length > 1) {\n sets[0] = sets[0].slice(0, -1);\n var xl = sets.length - 1;\n for (var x = 1; x < xl; ++x) {\n sets[x] = sets[x].slice(1, -1);\n }\n sets[xl] = sets[xl].slice(1);\n return sets.join('');\n } else {\n return sets[0];\n }\n}\nfunction subexp(str) {\n return \"(?:\" + str + \")\";\n}\nfunction typeOf(o) {\n return o === undefined ? \"undefined\" : o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase();\n}\nfunction toUpperCase(str) {\n return str.toUpperCase();\n}\nfunction toArray(obj) {\n return obj !== undefined && obj !== null ? obj instanceof Array ? obj : typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj) : [];\n}\nfunction assign(target, source) {\n var obj = target;\n if (source) {\n for (var key in source) {\n obj[key] = source[key];\n }\n }\n return obj;\n}\n\nfunction buildExps(isIRI) {\n var ALPHA$$ = \"[A-Za-z]\",\n CR$ = \"[\\\\x0D]\",\n DIGIT$$ = \"[0-9]\",\n DQUOTE$$ = \"[\\\\x22]\",\n HEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"),\n //case-insensitive\n LF$$ = \"[\\\\x0A]\",\n SP$$ = \"[\\\\x20]\",\n PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)),\n //expanded\n GEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n SUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n UCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\",\n //subset, excludes bidi control characters\n IPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\",\n //subset\n UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n USERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n DEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n DEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$),\n //relaxed parsing rules\n IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n H16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n LS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n IPV6ADDRESS1$ = subexp(subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$),\n // 6( h16 \":\" ) ls32\n IPV6ADDRESS2$ = subexp(\"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$),\n // \"::\" 5( h16 \":\" ) ls32\n IPV6ADDRESS3$ = subexp(subexp(H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$),\n //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$),\n //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$),\n //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$),\n //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$),\n //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$),\n //[ *5( h16 \":\" ) h16 ] \"::\" h16\n IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\"),\n //[ *6( h16 \":\" ) h16 ] \"::\"\n IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n ZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"),\n //RFC 6874\n IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$),\n //RFC 6874\n IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$),\n //RFC 6874, with relaxed parsing rules\n IPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n IP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"),\n //RFC 6874\n REG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n HOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n PORT$ = subexp(DIGIT$$ + \"*\"),\n AUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n PCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n SEGMENT$ = subexp(PCHAR$ + \"*\"),\n SEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n PATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n PATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"),\n //simplified\n PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$),\n //simplified\n PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$),\n //simplified\n PATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n PATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n QUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n FRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n HIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n RELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n RELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n URI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n ABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n GENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n RELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n ABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n SAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n AUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\";\n return {\n NOT_SCHEME: new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n NOT_USERINFO: new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n NOT_HOST: new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n NOT_PATH: new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n NOT_PATH_NOSCHEME: new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n NOT_QUERY: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n NOT_FRAGMENT: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n ESCAPE: new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n UNRESERVED: new RegExp(UNRESERVED$$, \"g\"),\n OTHER_CHARS: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n PCT_ENCODED: new RegExp(PCT_ENCODED$, \"g\"),\n IPV4ADDRESS: new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n IPV6ADDRESS: new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n };\n}\nvar URI_PROTOCOL = buildExps(false);\n\nvar IRI_PROTOCOL = buildExps(true);\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n/** Highest positive signed 32-bit float value */\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nvar regexPunycode = /^xn--/;\nvar regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nvar regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nvar errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error$1(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tvar result = [];\n\tvar length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tvar parts = string.split('@');\n\tvar result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tvar labels = string.split('.');\n\tvar encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tvar output = [];\n\tvar counter = 0;\n\tvar length = string.length;\n\twhile (counter < length) {\n\t\tvar value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tvar extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t// Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nvar ucs2encode = function ucs2encode(array) {\n\treturn String.fromCodePoint.apply(String, toConsumableArray(array));\n};\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nvar basicToDigit = function basicToDigit(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nvar digitToBasic = function digitToBasic(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nvar adapt = function adapt(delta, numPoints, firstTime) {\n\tvar k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nvar decode = function decode(input) {\n\t// Don't use UCS-2.\n\tvar output = [];\n\tvar inputLength = input.length;\n\tvar i = 0;\n\tvar n = initialN;\n\tvar bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tvar basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (var j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror$1('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (var index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tvar oldi = i;\n\t\tfor (var w = 1, k = base;; /* no condition */k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror$1('invalid-input');\n\t\t\t}\n\n\t\t\tvar digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror$1('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tvar t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror$1('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\t\t}\n\n\t\tvar out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror$1('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\t}\n\n\treturn String.fromCodePoint.apply(String, output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nvar encode = function encode(input) {\n\tvar output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tvar inputLength = input.length;\n\n\t// Initialize the state.\n\tvar n = initialN;\n\tvar delta = 0;\n\tvar bias = initialBias;\n\n\t// Handle the basic code points.\n\tvar _iteratorNormalCompletion = true;\n\tvar _didIteratorError = false;\n\tvar _iteratorError = undefined;\n\n\ttry {\n\t\tfor (var _iterator = input[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\tvar _currentValue2 = _step.value;\n\n\t\t\tif (_currentValue2 < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(_currentValue2));\n\t\t\t}\n\t\t}\n\t} catch (err) {\n\t\t_didIteratorError = true;\n\t\t_iteratorError = err;\n\t} finally {\n\t\ttry {\n\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t_iterator.return();\n\t\t\t}\n\t\t} finally {\n\t\t\tif (_didIteratorError) {\n\t\t\t\tthrow _iteratorError;\n\t\t\t}\n\t\t}\n\t}\n\n\tvar basicLength = output.length;\n\tvar handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tvar m = maxInt;\n\t\tvar _iteratorNormalCompletion2 = true;\n\t\tvar _didIteratorError2 = false;\n\t\tvar _iteratorError2 = undefined;\n\n\t\ttry {\n\t\t\tfor (var _iterator2 = input[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n\t\t\t\tvar currentValue = _step2.value;\n\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow.\n\t\t} catch (err) {\n\t\t\t_didIteratorError2 = true;\n\t\t\t_iteratorError2 = err;\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tif (!_iteratorNormalCompletion2 && _iterator2.return) {\n\t\t\t\t\t_iterator2.return();\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tif (_didIteratorError2) {\n\t\t\t\t\tthrow _iteratorError2;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror$1('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tvar _iteratorNormalCompletion3 = true;\n\t\tvar _didIteratorError3 = false;\n\t\tvar _iteratorError3 = undefined;\n\n\t\ttry {\n\t\t\tfor (var _iterator3 = input[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n\t\t\t\tvar _currentValue = _step3.value;\n\n\t\t\t\tif (_currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror$1('overflow');\n\t\t\t\t}\n\t\t\t\tif (_currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\t\tvar q = delta;\n\t\t\t\t\tfor (var k = base;; /* no condition */k += base) {\n\t\t\t\t\t\tvar t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar qMinusT = q - t;\n\t\t\t\t\t\tvar baseMinusT = base - t;\n\t\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) {\n\t\t\t_didIteratorError3 = true;\n\t\t\t_iteratorError3 = err;\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tif (!_iteratorNormalCompletion3 && _iterator3.return) {\n\t\t\t\t\t_iterator3.return();\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tif (_didIteratorError3) {\n\t\t\t\t\tthrow _iteratorError3;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nvar toUnicode = function toUnicode(input) {\n\treturn mapDomain(input, function (string) {\n\t\treturn regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nvar toASCII = function toASCII(input) {\n\treturn mapDomain(input, function (string) {\n\t\treturn regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nvar punycode = {\n\t/**\n * A string representing the current Punycode.js version number.\n * @memberOf punycode\n * @type String\n */\n\t'version': '2.1.0',\n\t/**\n * An object of methods to convert from JavaScript's internal character\n * representation (UCS-2) to Unicode code points, and back.\n * @see \n * @memberOf punycode\n * @type Object\n */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\n/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author Gary Court\n * @see http://github.com/garycourt/uri-js\n */\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\nvar SCHEMES = {};\nfunction pctEncChar(chr) {\n var c = chr.charCodeAt(0);\n var e = void 0;\n if (c < 16) e = \"%0\" + c.toString(16).toUpperCase();else if (c < 128) e = \"%\" + c.toString(16).toUpperCase();else if (c < 2048) e = \"%\" + (c >> 6 | 192).toString(16).toUpperCase() + \"%\" + (c & 63 | 128).toString(16).toUpperCase();else e = \"%\" + (c >> 12 | 224).toString(16).toUpperCase() + \"%\" + (c >> 6 & 63 | 128).toString(16).toUpperCase() + \"%\" + (c & 63 | 128).toString(16).toUpperCase();\n return e;\n}\nfunction pctDecChars(str) {\n var newStr = \"\";\n var i = 0;\n var il = str.length;\n while (i < il) {\n var c = parseInt(str.substr(i + 1, 2), 16);\n if (c < 128) {\n newStr += String.fromCharCode(c);\n i += 3;\n } else if (c >= 194 && c < 224) {\n if (il - i >= 6) {\n var c2 = parseInt(str.substr(i + 4, 2), 16);\n newStr += String.fromCharCode((c & 31) << 6 | c2 & 63);\n } else {\n newStr += str.substr(i, 6);\n }\n i += 6;\n } else if (c >= 224) {\n if (il - i >= 9) {\n var _c = parseInt(str.substr(i + 4, 2), 16);\n var c3 = parseInt(str.substr(i + 7, 2), 16);\n newStr += String.fromCharCode((c & 15) << 12 | (_c & 63) << 6 | c3 & 63);\n } else {\n newStr += str.substr(i, 9);\n }\n i += 9;\n } else {\n newStr += str.substr(i, 3);\n i += 3;\n }\n }\n return newStr;\n}\nfunction _normalizeComponentEncoding(components, protocol) {\n function decodeUnreserved(str) {\n var decStr = pctDecChars(str);\n return !decStr.match(protocol.UNRESERVED) ? str : decStr;\n }\n if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n if (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n if (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n return components;\n}\n\nfunction _stripLeadingZeros(str) {\n return str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\nfunction _normalizeIPv4(host, protocol) {\n var matches = host.match(protocol.IPV4ADDRESS) || [];\n\n var _matches = slicedToArray(matches, 2),\n address = _matches[1];\n\n if (address) {\n return address.split(\".\").map(_stripLeadingZeros).join(\".\");\n } else {\n return host;\n }\n}\nfunction _normalizeIPv6(host, protocol) {\n var matches = host.match(protocol.IPV6ADDRESS) || [];\n\n var _matches2 = slicedToArray(matches, 3),\n address = _matches2[1],\n zone = _matches2[2];\n\n if (address) {\n var _address$toLowerCase$ = address.toLowerCase().split('::').reverse(),\n _address$toLowerCase$2 = slicedToArray(_address$toLowerCase$, 2),\n last = _address$toLowerCase$2[0],\n first = _address$toLowerCase$2[1];\n\n var firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n var lastFields = last.split(\":\").map(_stripLeadingZeros);\n var isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n var fieldCount = isLastFieldIPv4Address ? 7 : 8;\n var lastFieldsStart = lastFields.length - fieldCount;\n var fields = Array(fieldCount);\n for (var x = 0; x < fieldCount; ++x) {\n fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n }\n if (isLastFieldIPv4Address) {\n fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n }\n var allZeroFields = fields.reduce(function (acc, field, index) {\n if (!field || field === \"0\") {\n var lastLongest = acc[acc.length - 1];\n if (lastLongest && lastLongest.index + lastLongest.length === index) {\n lastLongest.length++;\n } else {\n acc.push({ index: index, length: 1 });\n }\n }\n return acc;\n }, []);\n var longestZeroFields = allZeroFields.sort(function (a, b) {\n return b.length - a.length;\n })[0];\n var newHost = void 0;\n if (longestZeroFields && longestZeroFields.length > 1) {\n var newFirst = fields.slice(0, longestZeroFields.index);\n var newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n newHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n } else {\n newHost = fields.join(\":\");\n }\n if (zone) {\n newHost += \"%\" + zone;\n }\n return newHost;\n } else {\n return host;\n }\n}\nvar URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nvar NO_MATCH_IS_UNDEFINED = \"\".match(/(){0}/)[1] === undefined;\nfunction parse(uriString) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var components = {};\n var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL;\n if (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n var matches = uriString.match(URI_PARSE);\n if (matches) {\n if (NO_MATCH_IS_UNDEFINED) {\n //store each component\n components.scheme = matches[1];\n components.userinfo = matches[3];\n components.host = matches[4];\n components.port = parseInt(matches[5], 10);\n components.path = matches[6] || \"\";\n components.query = matches[7];\n components.fragment = matches[8];\n //fix port number\n if (isNaN(components.port)) {\n components.port = matches[5];\n }\n } else {\n //IE FIX for improper RegExp matching\n //store each component\n components.scheme = matches[1] || undefined;\n components.userinfo = uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined;\n components.host = uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined;\n components.port = parseInt(matches[5], 10);\n components.path = matches[6] || \"\";\n components.query = uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined;\n components.fragment = uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined;\n //fix port number\n if (isNaN(components.port)) {\n components.port = uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined;\n }\n }\n if (components.host) {\n //normalize IP hosts\n components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n }\n //determine reference type\n if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n components.reference = \"same-document\";\n } else if (components.scheme === undefined) {\n components.reference = \"relative\";\n } else if (components.fragment === undefined) {\n components.reference = \"absolute\";\n } else {\n components.reference = \"uri\";\n }\n //check for reference errors\n if (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n components.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n }\n //find scheme handler\n var schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n //check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n //if host component is a domain name\n if (components.host && (options.domainHost || schemeHandler && schemeHandler.domainHost)) {\n //convert Unicode IDN -> ASCII IDN\n try {\n components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n } catch (e) {\n components.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n }\n }\n //convert IRI -> URI\n _normalizeComponentEncoding(components, URI_PROTOCOL);\n } else {\n //normalize encodings\n _normalizeComponentEncoding(components, protocol);\n }\n //perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(components, options);\n }\n } else {\n components.error = components.error || \"URI can not be parsed.\";\n }\n return components;\n}\n\nfunction _recomposeAuthority(components, options) {\n var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL;\n var uriTokens = [];\n if (components.userinfo !== undefined) {\n uriTokens.push(components.userinfo);\n uriTokens.push(\"@\");\n }\n if (components.host !== undefined) {\n //normalize IP hosts, add brackets and escape zone separator for IPv6\n uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, function (_, $1, $2) {\n return \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\";\n }));\n }\n if (typeof components.port === \"number\" || typeof components.port === \"string\") {\n uriTokens.push(\":\");\n uriTokens.push(String(components.port));\n }\n return uriTokens.length ? uriTokens.join(\"\") : undefined;\n}\n\nvar RDS1 = /^\\.\\.?\\//;\nvar RDS2 = /^\\/\\.(\\/|$)/;\nvar RDS3 = /^\\/\\.\\.(\\/|$)/;\nvar RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\nfunction removeDotSegments(input) {\n var output = [];\n while (input.length) {\n if (input.match(RDS1)) {\n input = input.replace(RDS1, \"\");\n } else if (input.match(RDS2)) {\n input = input.replace(RDS2, \"/\");\n } else if (input.match(RDS3)) {\n input = input.replace(RDS3, \"/\");\n output.pop();\n } else if (input === \".\" || input === \"..\") {\n input = \"\";\n } else {\n var im = input.match(RDS5);\n if (im) {\n var s = im[0];\n input = input.slice(s.length);\n output.push(s);\n } else {\n throw new Error(\"Unexpected dot segment condition\");\n }\n }\n }\n return output.join(\"\");\n}\n\nfunction serialize(components) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var protocol = options.iri ? IRI_PROTOCOL : URI_PROTOCOL;\n var uriTokens = [];\n //find scheme handler\n var schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n //perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n if (components.host) {\n //if host component is an IPv6 address\n if (protocol.IPV6ADDRESS.test(components.host)) {}\n //TODO: normalize IPv6 address as per RFC 5952\n\n //if host component is a domain name\n else if (options.domainHost || schemeHandler && schemeHandler.domainHost) {\n //convert IDN via punycode\n try {\n components.host = !options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host);\n } catch (e) {\n components.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n }\n }\n }\n //normalize encoding\n _normalizeComponentEncoding(components, protocol);\n if (options.reference !== \"suffix\" && components.scheme) {\n uriTokens.push(components.scheme);\n uriTokens.push(\":\");\n }\n var authority = _recomposeAuthority(components, options);\n if (authority !== undefined) {\n if (options.reference !== \"suffix\") {\n uriTokens.push(\"//\");\n }\n uriTokens.push(authority);\n if (components.path && components.path.charAt(0) !== \"/\") {\n uriTokens.push(\"/\");\n }\n }\n if (components.path !== undefined) {\n var s = components.path;\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s);\n }\n if (authority === undefined) {\n s = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n }\n uriTokens.push(s);\n }\n if (components.query !== undefined) {\n uriTokens.push(\"?\");\n uriTokens.push(components.query);\n }\n if (components.fragment !== undefined) {\n uriTokens.push(\"#\");\n uriTokens.push(components.fragment);\n }\n return uriTokens.join(\"\"); //merge tokens into a string\n}\n\nfunction resolveComponents(base, relative) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var skipNormalization = arguments[3];\n\n var target = {};\n if (!skipNormalization) {\n base = parse(serialize(base, options), options); //normalize base components\n relative = parse(serialize(relative, options), options); //normalize relative components\n }\n options = options || {};\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme;\n //target.authority = relative.authority;\n target.userinfo = relative.userinfo;\n target.host = relative.host;\n target.port = relative.port;\n target.path = removeDotSegments(relative.path || \"\");\n target.query = relative.query;\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n //target.authority = relative.authority;\n target.userinfo = relative.userinfo;\n target.host = relative.host;\n target.port = relative.port;\n target.path = removeDotSegments(relative.path || \"\");\n target.query = relative.query;\n } else {\n if (!relative.path) {\n target.path = base.path;\n if (relative.query !== undefined) {\n target.query = relative.query;\n } else {\n target.query = base.query;\n }\n } else {\n if (relative.path.charAt(0) === \"/\") {\n target.path = removeDotSegments(relative.path);\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = \"/\" + relative.path;\n } else if (!base.path) {\n target.path = relative.path;\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n }\n target.path = removeDotSegments(target.path);\n }\n target.query = relative.query;\n }\n //target.authority = base.authority;\n target.userinfo = base.userinfo;\n target.host = base.host;\n target.port = base.port;\n }\n target.scheme = base.scheme;\n }\n target.fragment = relative.fragment;\n return target;\n}\n\nfunction resolve(baseURI, relativeURI, options) {\n var schemelessOptions = assign({ scheme: 'null' }, options);\n return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n}\n\nfunction normalize(uri, options) {\n if (typeof uri === \"string\") {\n uri = serialize(parse(uri, options), options);\n } else if (typeOf(uri) === \"object\") {\n uri = parse(serialize(uri, options), options);\n }\n return uri;\n}\n\nfunction equal(uriA, uriB, options) {\n if (typeof uriA === \"string\") {\n uriA = serialize(parse(uriA, options), options);\n } else if (typeOf(uriA) === \"object\") {\n uriA = serialize(uriA, options);\n }\n if (typeof uriB === \"string\") {\n uriB = serialize(parse(uriB, options), options);\n } else if (typeOf(uriB) === \"object\") {\n uriB = serialize(uriB, options);\n }\n return uriA === uriB;\n}\n\nfunction escapeComponent(str, options) {\n return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE, pctEncChar);\n}\n\nfunction unescapeComponent(str, options) {\n return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED, pctDecChars);\n}\n\nvar handler = {\n scheme: \"http\",\n domainHost: true,\n parse: function parse(components, options) {\n //report missing host\n if (!components.host) {\n components.error = components.error || \"HTTP URIs must have a host.\";\n }\n return components;\n },\n serialize: function serialize(components, options) {\n var secure = String(components.scheme).toLowerCase() === \"https\";\n //normalize the default port\n if (components.port === (secure ? 443 : 80) || components.port === \"\") {\n components.port = undefined;\n }\n //normalize the empty path\n if (!components.path) {\n components.path = \"/\";\n }\n //NOTE: We do not parse query strings for HTTP URIs\n //as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n //and not the HTTP spec.\n return components;\n }\n};\n\nvar handler$1 = {\n scheme: \"https\",\n domainHost: handler.domainHost,\n parse: handler.parse,\n serialize: handler.serialize\n};\n\nfunction isSecure(wsComponents) {\n return typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === \"wss\";\n}\n//RFC 6455\nvar handler$2 = {\n scheme: \"ws\",\n domainHost: true,\n parse: function parse(components, options) {\n var wsComponents = components;\n //indicate if the secure flag is set\n wsComponents.secure = isSecure(wsComponents);\n //construct resouce name\n wsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '');\n wsComponents.path = undefined;\n wsComponents.query = undefined;\n return wsComponents;\n },\n serialize: function serialize(wsComponents, options) {\n //normalize the default port\n if (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === \"\") {\n wsComponents.port = undefined;\n }\n //ensure scheme matches secure flag\n if (typeof wsComponents.secure === 'boolean') {\n wsComponents.scheme = wsComponents.secure ? 'wss' : 'ws';\n wsComponents.secure = undefined;\n }\n //reconstruct path from resource name\n if (wsComponents.resourceName) {\n var _wsComponents$resourc = wsComponents.resourceName.split('?'),\n _wsComponents$resourc2 = slicedToArray(_wsComponents$resourc, 2),\n path = _wsComponents$resourc2[0],\n query = _wsComponents$resourc2[1];\n\n wsComponents.path = path && path !== '/' ? path : undefined;\n wsComponents.query = query;\n wsComponents.resourceName = undefined;\n }\n //forbid fragment component\n wsComponents.fragment = undefined;\n return wsComponents;\n }\n};\n\nvar handler$3 = {\n scheme: \"wss\",\n domainHost: handler$2.domainHost,\n parse: handler$2.parse,\n serialize: handler$2.serialize\n};\n\nvar O = {};\nvar isIRI = true;\n//RFC 3986\nvar UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nvar HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nvar PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nvar ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nvar QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nvar VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nvar SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nvar UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nvar PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nvar NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nvar NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nvar NOT_HFVALUE = NOT_HFNAME;\nfunction decodeUnreserved(str) {\n var decStr = pctDecChars(str);\n return !decStr.match(UNRESERVED) ? str : decStr;\n}\nvar handler$4 = {\n scheme: \"mailto\",\n parse: function parse$$1(components, options) {\n var mailtoComponents = components;\n var to = mailtoComponents.to = mailtoComponents.path ? mailtoComponents.path.split(\",\") : [];\n mailtoComponents.path = undefined;\n if (mailtoComponents.query) {\n var unknownHeaders = false;\n var headers = {};\n var hfields = mailtoComponents.query.split(\"&\");\n for (var x = 0, xl = hfields.length; x < xl; ++x) {\n var hfield = hfields[x].split(\"=\");\n switch (hfield[0]) {\n case \"to\":\n var toAddrs = hfield[1].split(\",\");\n for (var _x = 0, _xl = toAddrs.length; _x < _xl; ++_x) {\n to.push(toAddrs[_x]);\n }\n break;\n case \"subject\":\n mailtoComponents.subject = unescapeComponent(hfield[1], options);\n break;\n case \"body\":\n mailtoComponents.body = unescapeComponent(hfield[1], options);\n break;\n default:\n unknownHeaders = true;\n headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n break;\n }\n }\n if (unknownHeaders) mailtoComponents.headers = headers;\n }\n mailtoComponents.query = undefined;\n for (var _x2 = 0, _xl2 = to.length; _x2 < _xl2; ++_x2) {\n var addr = to[_x2].split(\"@\");\n addr[0] = unescapeComponent(addr[0]);\n if (!options.unicodeSupport) {\n //convert Unicode IDN -> ASCII IDN\n try {\n addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n } catch (e) {\n mailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n }\n } else {\n addr[1] = unescapeComponent(addr[1], options).toLowerCase();\n }\n to[_x2] = addr.join(\"@\");\n }\n return mailtoComponents;\n },\n serialize: function serialize$$1(mailtoComponents, options) {\n var components = mailtoComponents;\n var to = toArray(mailtoComponents.to);\n if (to) {\n for (var x = 0, xl = to.length; x < xl; ++x) {\n var toAddr = String(to[x]);\n var atIdx = toAddr.lastIndexOf(\"@\");\n var localPart = toAddr.slice(0, atIdx).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n var domain = toAddr.slice(atIdx + 1);\n //convert IDN via punycode\n try {\n domain = !options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain);\n } catch (e) {\n components.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n }\n to[x] = localPart + \"@\" + domain;\n }\n components.path = to.join(\",\");\n }\n var headers = mailtoComponents.headers = mailtoComponents.headers || {};\n if (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n if (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n var fields = [];\n for (var name in headers) {\n if (headers[name] !== O[name]) {\n fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + \"=\" + headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar));\n }\n }\n if (fields.length) {\n components.query = fields.join(\"&\");\n }\n return components;\n }\n};\n\nvar URN_PARSE = /^([^\\:]+)\\:(.*)/;\n//RFC 2141\nvar handler$5 = {\n scheme: \"urn\",\n parse: function parse$$1(components, options) {\n var matches = components.path && components.path.match(URN_PARSE);\n var urnComponents = components;\n if (matches) {\n var scheme = options.scheme || urnComponents.scheme || \"urn\";\n var nid = matches[1].toLowerCase();\n var nss = matches[2];\n var urnScheme = scheme + \":\" + (options.nid || nid);\n var schemeHandler = SCHEMES[urnScheme];\n urnComponents.nid = nid;\n urnComponents.nss = nss;\n urnComponents.path = undefined;\n if (schemeHandler) {\n urnComponents = schemeHandler.parse(urnComponents, options);\n }\n } else {\n urnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n }\n return urnComponents;\n },\n serialize: function serialize$$1(urnComponents, options) {\n var scheme = options.scheme || urnComponents.scheme || \"urn\";\n var nid = urnComponents.nid;\n var urnScheme = scheme + \":\" + (options.nid || nid);\n var schemeHandler = SCHEMES[urnScheme];\n if (schemeHandler) {\n urnComponents = schemeHandler.serialize(urnComponents, options);\n }\n var uriComponents = urnComponents;\n var nss = urnComponents.nss;\n uriComponents.path = (nid || options.nid) + \":\" + nss;\n return uriComponents;\n }\n};\n\nvar UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\n//RFC 4122\nvar handler$6 = {\n scheme: \"urn:uuid\",\n parse: function parse(urnComponents, options) {\n var uuidComponents = urnComponents;\n uuidComponents.uuid = uuidComponents.nss;\n uuidComponents.nss = undefined;\n if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n uuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n }\n return uuidComponents;\n },\n serialize: function serialize(uuidComponents, options) {\n var urnComponents = uuidComponents;\n //normalize UUID\n urnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n return urnComponents;\n }\n};\n\nSCHEMES[handler.scheme] = handler;\nSCHEMES[handler$1.scheme] = handler$1;\nSCHEMES[handler$2.scheme] = handler$2;\nSCHEMES[handler$3.scheme] = handler$3;\nSCHEMES[handler$4.scheme] = handler$4;\nSCHEMES[handler$5.scheme] = handler$5;\nSCHEMES[handler$6.scheme] = handler$6;\n\nexports.SCHEMES = SCHEMES;\nexports.pctEncChar = pctEncChar;\nexports.pctDecChars = pctDecChars;\nexports.parse = parse;\nexports.removeDotSegments = removeDotSegments;\nexports.serialize = serialize;\nexports.resolveComponents = resolveComponents;\nexports.resolve = resolve;\nexports.normalize = normalize;\nexports.equal = equal;\nexports.escapeComponent = escapeComponent;\nexports.unescapeComponent = unescapeComponent;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=uri.all.js.map\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]]\n ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","/*\n * verror.js: richer JavaScript errors\n */\n\nvar mod_assertplus = require('assert-plus');\nvar mod_util = require('util');\n\nvar mod_extsprintf = require('extsprintf');\nvar mod_isError = require('core-util-is').isError;\nvar sprintf = mod_extsprintf.sprintf;\n\n/*\n * Public interface\n */\n\n/* So you can 'var VError = require('verror')' */\nmodule.exports = VError;\n/* For compatibility */\nVError.VError = VError;\n/* Other exported classes */\nVError.SError = SError;\nVError.WError = WError;\nVError.MultiError = MultiError;\n\n/*\n * Common function used to parse constructor arguments for VError, WError, and\n * SError. Named arguments to this function:\n *\n * strict\t\tforce strict interpretation of sprintf arguments, even\n * \t\t\tif the options in \"argv\" don't say so\n *\n * argv\t\terror's constructor arguments, which are to be\n * \t\t\tinterpreted as described in README.md. For quick\n * \t\t\treference, \"argv\" has one of the following forms:\n *\n * [ sprintf_args... ] (argv[0] is a string)\n * [ cause, sprintf_args... ] (argv[0] is an Error)\n * [ options, sprintf_args... ] (argv[0] is an object)\n *\n * This function normalizes these forms, producing an object with the following\n * properties:\n *\n * options equivalent to \"options\" in third form. This will never\n * \t\t\tbe a direct reference to what the caller passed in\n * \t\t\t(i.e., it may be a shallow copy), so it can be freely\n * \t\t\tmodified.\n *\n * shortmessage result of sprintf(sprintf_args), taking options.strict\n * \t\t\tinto account as described in README.md.\n */\nfunction parseConstructorArguments(args)\n{\n\tvar argv, options, sprintf_args, shortmessage, k;\n\n\tmod_assertplus.object(args, 'args');\n\tmod_assertplus.bool(args.strict, 'args.strict');\n\tmod_assertplus.array(args.argv, 'args.argv');\n\targv = args.argv;\n\n\t/*\n\t * First, figure out which form of invocation we've been given.\n\t */\n\tif (argv.length === 0) {\n\t\toptions = {};\n\t\tsprintf_args = [];\n\t} else if (mod_isError(argv[0])) {\n\t\toptions = { 'cause': argv[0] };\n\t\tsprintf_args = argv.slice(1);\n\t} else if (typeof (argv[0]) === 'object') {\n\t\toptions = {};\n\t\tfor (k in argv[0]) {\n\t\t\toptions[k] = argv[0][k];\n\t\t}\n\t\tsprintf_args = argv.slice(1);\n\t} else {\n\t\tmod_assertplus.string(argv[0],\n\t\t 'first argument to VError, SError, or WError ' +\n\t\t 'constructor must be a string, object, or Error');\n\t\toptions = {};\n\t\tsprintf_args = argv;\n\t}\n\n\t/*\n\t * Now construct the error's message.\n\t *\n\t * extsprintf (which we invoke here with our caller's arguments in order\n\t * to construct this Error's message) is strict in its interpretation of\n\t * values to be processed by the \"%s\" specifier. The value passed to\n\t * extsprintf must actually be a string or something convertible to a\n\t * String using .toString(). Passing other values (notably \"null\" and\n\t * \"undefined\") is considered a programmer error. The assumption is\n\t * that if you actually want to print the string \"null\" or \"undefined\",\n\t * then that's easy to do that when you're calling extsprintf; on the\n\t * other hand, if you did NOT want that (i.e., there's actually a bug\n\t * where the program assumes some variable is non-null and tries to\n\t * print it, which might happen when constructing a packet or file in\n\t * some specific format), then it's better to stop immediately than\n\t * produce bogus output.\n\t *\n\t * However, sometimes the bug is only in the code calling VError, and a\n\t * programmer might prefer to have the error message contain \"null\" or\n\t * \"undefined\" rather than have the bug in the error path crash the\n\t * program (making the first bug harder to identify). For that reason,\n\t * by default VError converts \"null\" or \"undefined\" arguments to their\n\t * string representations and passes those to extsprintf. Programmers\n\t * desiring the strict behavior can use the SError class or pass the\n\t * \"strict\" option to the VError constructor.\n\t */\n\tmod_assertplus.object(options);\n\tif (!options.strict && !args.strict) {\n\t\tsprintf_args = sprintf_args.map(function (a) {\n\t\t\treturn (a === null ? 'null' :\n\t\t\t a === undefined ? 'undefined' : a);\n\t\t});\n\t}\n\n\tif (sprintf_args.length === 0) {\n\t\tshortmessage = '';\n\t} else {\n\t\tshortmessage = sprintf.apply(null, sprintf_args);\n\t}\n\n\treturn ({\n\t 'options': options,\n\t 'shortmessage': shortmessage\n\t});\n}\n\n/*\n * See README.md for reference documentation.\n */\nfunction VError()\n{\n\tvar args, obj, parsed, cause, ctor, message, k;\n\n\targs = Array.prototype.slice.call(arguments, 0);\n\n\t/*\n\t * This is a regrettable pattern, but JavaScript's built-in Error class\n\t * is defined to work this way, so we allow the constructor to be called\n\t * without \"new\".\n\t */\n\tif (!(this instanceof VError)) {\n\t\tobj = Object.create(VError.prototype);\n\t\tVError.apply(obj, arguments);\n\t\treturn (obj);\n\t}\n\n\t/*\n\t * For convenience and backwards compatibility, we support several\n\t * different calling forms. Normalize them here.\n\t */\n\tparsed = parseConstructorArguments({\n\t 'argv': args,\n\t 'strict': false\n\t});\n\n\t/*\n\t * If we've been given a name, apply it now.\n\t */\n\tif (parsed.options.name) {\n\t\tmod_assertplus.string(parsed.options.name,\n\t\t 'error\\'s \"name\" must be a string');\n\t\tthis.name = parsed.options.name;\n\t}\n\n\t/*\n\t * For debugging, we keep track of the original short message (attached\n\t * this Error particularly) separately from the complete message (which\n\t * includes the messages of our cause chain).\n\t */\n\tthis.jse_shortmsg = parsed.shortmessage;\n\tmessage = parsed.shortmessage;\n\n\t/*\n\t * If we've been given a cause, record a reference to it and update our\n\t * message appropriately.\n\t */\n\tcause = parsed.options.cause;\n\tif (cause) {\n\t\tmod_assertplus.ok(mod_isError(cause), 'cause is not an Error');\n\t\tthis.jse_cause = cause;\n\n\t\tif (!parsed.options.skipCauseMessage) {\n\t\t\tmessage += ': ' + cause.message;\n\t\t}\n\t}\n\n\t/*\n\t * If we've been given an object with properties, shallow-copy that\n\t * here. We don't want to use a deep copy in case there are non-plain\n\t * objects here, but we don't want to use the original object in case\n\t * the caller modifies it later.\n\t */\n\tthis.jse_info = {};\n\tif (parsed.options.info) {\n\t\tfor (k in parsed.options.info) {\n\t\t\tthis.jse_info[k] = parsed.options.info[k];\n\t\t}\n\t}\n\n\tthis.message = message;\n\tError.call(this, message);\n\n\tif (Error.captureStackTrace) {\n\t\tctor = parsed.options.constructorOpt || this.constructor;\n\t\tError.captureStackTrace(this, ctor);\n\t}\n\n\treturn (this);\n}\n\nmod_util.inherits(VError, Error);\nVError.prototype.name = 'VError';\n\nVError.prototype.toString = function ve_toString()\n{\n\tvar str = (this.hasOwnProperty('name') && this.name ||\n\t\tthis.constructor.name || this.constructor.prototype.name);\n\tif (this.message)\n\t\tstr += ': ' + this.message;\n\n\treturn (str);\n};\n\n/*\n * This method is provided for compatibility. New callers should use\n * VError.cause() instead. That method also uses the saner `null` return value\n * when there is no cause.\n */\nVError.prototype.cause = function ve_cause()\n{\n\tvar cause = VError.cause(this);\n\treturn (cause === null ? undefined : cause);\n};\n\n/*\n * Static methods\n *\n * These class-level methods are provided so that callers can use them on\n * instances of Errors that are not VErrors. New interfaces should be provided\n * only using static methods to eliminate the class of programming mistake where\n * people fail to check whether the Error object has the corresponding methods.\n */\n\nVError.cause = function (err)\n{\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\treturn (mod_isError(err.jse_cause) ? err.jse_cause : null);\n};\n\nVError.info = function (err)\n{\n\tvar rv, cause, k;\n\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\tcause = VError.cause(err);\n\tif (cause !== null) {\n\t\trv = VError.info(cause);\n\t} else {\n\t\trv = {};\n\t}\n\n\tif (typeof (err.jse_info) == 'object' && err.jse_info !== null) {\n\t\tfor (k in err.jse_info) {\n\t\t\trv[k] = err.jse_info[k];\n\t\t}\n\t}\n\n\treturn (rv);\n};\n\nVError.findCauseByName = function (err, name)\n{\n\tvar cause;\n\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\tmod_assertplus.string(name, 'name');\n\tmod_assertplus.ok(name.length > 0, 'name cannot be empty');\n\n\tfor (cause = err; cause !== null; cause = VError.cause(cause)) {\n\t\tmod_assertplus.ok(mod_isError(cause));\n\t\tif (cause.name == name) {\n\t\t\treturn (cause);\n\t\t}\n\t}\n\n\treturn (null);\n};\n\nVError.hasCauseWithName = function (err, name)\n{\n\treturn (VError.findCauseByName(err, name) !== null);\n};\n\nVError.fullStack = function (err)\n{\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\n\tvar cause = VError.cause(err);\n\n\tif (cause) {\n\t\treturn (err.stack + '\\ncaused by: ' + VError.fullStack(cause));\n\t}\n\n\treturn (err.stack);\n};\n\nVError.errorFromList = function (errors)\n{\n\tmod_assertplus.arrayOfObject(errors, 'errors');\n\n\tif (errors.length === 0) {\n\t\treturn (null);\n\t}\n\n\terrors.forEach(function (e) {\n\t\tmod_assertplus.ok(mod_isError(e));\n\t});\n\n\tif (errors.length == 1) {\n\t\treturn (errors[0]);\n\t}\n\n\treturn (new MultiError(errors));\n};\n\nVError.errorForEach = function (err, func)\n{\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\tmod_assertplus.func(func, 'func');\n\n\tif (err instanceof MultiError) {\n\t\terr.errors().forEach(function iterError(e) { func(e); });\n\t} else {\n\t\tfunc(err);\n\t}\n};\n\n\n/*\n * SError is like VError, but stricter about types. You cannot pass \"null\" or\n * \"undefined\" as string arguments to the formatter.\n */\nfunction SError()\n{\n\tvar args, obj, parsed, options;\n\n\targs = Array.prototype.slice.call(arguments, 0);\n\tif (!(this instanceof SError)) {\n\t\tobj = Object.create(SError.prototype);\n\t\tSError.apply(obj, arguments);\n\t\treturn (obj);\n\t}\n\n\tparsed = parseConstructorArguments({\n\t 'argv': args,\n\t 'strict': true\n\t});\n\n\toptions = parsed.options;\n\tVError.call(this, options, '%s', parsed.shortmessage);\n\n\treturn (this);\n}\n\n/*\n * We don't bother setting SError.prototype.name because once constructed,\n * SErrors are just like VErrors.\n */\nmod_util.inherits(SError, VError);\n\n\n/*\n * Represents a collection of errors for the purpose of consumers that generally\n * only deal with one error. Callers can extract the individual errors\n * contained in this object, but may also just treat it as a normal single\n * error, in which case a summary message will be printed.\n */\nfunction MultiError(errors)\n{\n\tmod_assertplus.array(errors, 'list of errors');\n\tmod_assertplus.ok(errors.length > 0, 'must be at least one error');\n\tthis.ase_errors = errors;\n\n\tVError.call(this, {\n\t 'cause': errors[0]\n\t}, 'first of %d error%s', errors.length, errors.length == 1 ? '' : 's');\n}\n\nmod_util.inherits(MultiError, VError);\nMultiError.prototype.name = 'MultiError';\n\nMultiError.prototype.errors = function me_errors()\n{\n\treturn (this.ase_errors.slice(0));\n};\n\n\n/*\n * See README.md for reference details.\n */\nfunction WError()\n{\n\tvar args, obj, parsed, options;\n\n\targs = Array.prototype.slice.call(arguments, 0);\n\tif (!(this instanceof WError)) {\n\t\tobj = Object.create(WError.prototype);\n\t\tWError.apply(obj, args);\n\t\treturn (obj);\n\t}\n\n\tparsed = parseConstructorArguments({\n\t 'argv': args,\n\t 'strict': false\n\t});\n\n\toptions = parsed.options;\n\toptions['skipCauseMessage'] = true;\n\tVError.call(this, options, '%s', parsed.shortmessage);\n\n\treturn (this);\n}\n\nmod_util.inherits(WError, VError);\nWError.prototype.name = 'WError';\n\nWError.prototype.toString = function we_toString()\n{\n\tvar str = (this.hasOwnProperty('name') && this.name ||\n\t\tthis.constructor.name || this.constructor.prototype.name);\n\tif (this.message)\n\t\tstr += ': ' + this.message;\n\tif (this.jse_cause && this.jse_cause.message)\n\t\tstr += '; caused by ' + this.jse_cause.toString();\n\n\treturn (str);\n};\n\n/*\n * For purely historical reasons, WError's cause() function allows you to set\n * the cause.\n */\nWError.prototype.cause = function we_cause(c)\n{\n\tif (mod_isError(c))\n\t\tthis.jse_cause = c;\n\n\treturn (this.jse_cause);\n};\n","/**\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nmodule.exports = Worker;","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tif (typeof g[typedArray] === 'function') {\n\t\t\tvar arr = new g[typedArray]();\n\t\t\tif (Symbol.toStringTag in arr) {\n\t\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t\t}\n\t\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t\t}\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar foundName = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!foundName) {\n\t\t\ttry {\n\t\t\t\tvar name = getter.call(value);\n\t\t\t\tif (name === typedArray) {\n\t\t\t\t\tfoundName = name;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\t});\n\treturn foundName;\n};\n\nvar isTypedArray = require('is-typed-array');\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!isTypedArray(value)) { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) { return $slice($toString(value), 8, -1); }\n\treturn tryTypedArrays(value);\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","module.exports = child_process;","'use strict';\n\nvar possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\nmodule.exports = function availableTypedArrays() {\n\tvar out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the module cache\n__webpack_require__.c = __webpack_module_cache__;\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// module cache are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nvar __webpack_exports__ = __webpack_require__(74755);\n"],"names":["compileSchema","resolve","Cache","SchemaObject","stableStringify","formats","rules","$dataMetaSchema","util","module","exports","Ajv","prototype","validate","schemaKeyRef","data","v","this","getSchema","Error","schemaObj","_addSchema","_compile","valid","$async","errors","compile","schema","_meta","undefined","addSchema","key","_skipValidation","Array","isArray","i","length","id","_getId","checkUnique","normalizeId","_schemas","addMetaSchema","skipValidation","validateSchema","throwOrLogError","$schema","_opts","defaultMeta","self","meta","META_SCHEMA_ID","logger","warn","message","errorsText","error","keyRef","_getSchemaObj","ref","res","call","root","baseId","_fragments","fragment","_getSchemaFragment","removeSchema","RegExp","_removeAllSchemas","_refs","_cache","clear","del","cacheKey","serialize","addFormat","name","format","_formats","options","separator","dataVar","text","e","dataPath","slice","shouldAddSchema","cached","get","addUsedSchema","recursiveMeta","willValidate","localRefs","ids","put","compiling","callValidate","currentOpts","_metaOpts","refs","refVal","_validate","result","apply","arguments","compileAsync","customKeyword","addKeyword","add","getKeyword","removeKeyword","remove","validateKeyword","errorClasses","ValidationError","Validation","MissingRefError","MissingRef","META_IGNORE_OPTIONS","META_SUPPORT_DATA","opts","copy","log","noop","console","setLogger","cache","_loadingSchemas","_compilations","RULES","schemaId","_get$IdOrId","_get$Id","chooseGetId","loopRequired","Infinity","errorDataPath","_errorDataPathProperty","metaOpts","getMetaSchemaOptions","addInitialFormats","keywords","keyword","addInitialKeywords","$dataSchema","$data","$id","metaSchema","addDefaultMetaSchema","nullable","type","optsSchemas","schemas","addInitialSchemas","regex","test","value","callback","loadSchema","p","loadMetaSchemaOf","then","_compileAsync","sch","$ref","Promise","missingSchema","added","missingRef","schemaPromise","removePromise","loadMissingSchema","url","fullPath","errorSubclass","Subclass","Object","create","constructor","ajv","validation","DATE","DAYS","TIME","HOSTNAME","URI","URITEMPLATE","URL","UUID","JSON_POINTER","JSON_POINTER_URI_FRAGMENT","RELATIVE_JSON_POINTER","mode","date","str","matches","match","year","month","day","isLeapYear","time","full","hour","minute","second","timeZone","fast","uri","email","hostname","ipv4","ipv6","uuid","dateTime","split","DATE_TIME_SEPARATOR","NOT_URI_FRAGMENT","Z_ANCHOR","validateGenerator","ucs2length","equal","checkCompiling","index","compIndex","endCompiling","splice","c","patternCode","patterns","toQuotedString","defaultCode","refValCode","customRuleCode","vars","arr","statement","code","patternsHash","defaults","defaultsHash","customRules","compilation","localCompile","cv","sourceCode","source","_schema","_root","isRoot","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","processCode","Function","makeValidate","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","refId","replaceLocalRef","removeLocalRef","inline","regexStr","valueStr","rule","parentSchema","it","deps","definition","dependencies","every","hasOwnProperty","join","macro","traverse","resolveSchema","parse","refPath","_getFullPath","getFullPath","keys","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","baseIds","fullPaths","allKeys","jsonPtr","rootSchema","parentJsonPtr","parentKeyword","keyIndex","escapeFragment","PREVENT_SCOPE_CHANGE","toHash","parts","part","unescapeFragment","SIMPLE_INLINED","limit","checkNoRef","countKeys","item","count","normalize","TRAILING_SLASH_HASH","replace","ruleModules","ALL","all","types","forEach","group","map","implKeywords","k","push","implements","$comment","concat","custom","obj","len","pos","charCodeAt","checkDataType","dataType","strictNumbers","negate","EQUAL","AND","OK","NOT","o","to","checkDataTypes","dataTypes","t","array","object","null","number","integer","coerceToTypes","optionCoerceTypes","COERCE_TO_TYPES","getProperty","escapeQuotes","varOccurences","varReplace","expr","schemaHasRules","schemaHasRulesExcept","exceptKeyword","schemaUnknownRules","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","getPath","prop","escapeJsonPointer","getData","lvl","paths","up","jsonPointer","segments","segment","unescapeJsonPointer","decodeURIComponent","encodeURIComponent","hash","IDENTIFIER","SINGLE_QUOTE","a","b","KEYWORDS","keywordsJsonPointers","JSON","stringify","j","anyOf","definitions","simpleTypes","statements","not","required","properties","items","modifying","async","const","$keyword","$ruleType","$schemaValue","out","$lvl","level","$dataLvl","dataLevel","$schemaPath","$errSchemaPath","$breakOnError","allErrors","$isData","dataPathArr","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$notOp","$errorKeyword","$$outStack","$schemaValueExcl","$exclusive","$exclType","$exclIsNumber","$opStr","$opExpr","createErrors","messages","verbose","__err","pop","compositeRule","Math","unicode","$it","$closingBraces","$nextValid","$currentBaseId","$allSchemasEmpty","arr1","$sch","$i","l1","strictKeywords","$valid","$errs","$noEmptySchema","$wasComposite","$idx","$dataNxt","$nextData","$nonEmptySchema","$passData","$code","$compile","$inline","$macro","$ruleValidate","$validateCode","$rule","$definition","$rDef","$validateSchema","$ruleErrs","$ruleErr","$asyncKeyword","passContext","$parentData","$parentDataProperty","def_callRuleValidate","def_customError","$schemaDeps","$propertyDeps","$ownProperties","ownProperties","$property","$deps","$currentErrorPath","$propertyKey","$useData","$prop","$propertyPath","$missingProperty","arr2","i2","l2","$vSchema","$unknownFormats","unknownFormats","$allowUnknown","$format","$isObject","$formatType","indexOf","$formatRef","$thenSch","$elseSch","$thenPresent","$elsePresent","$ifClause","allOf","contains","maximum","minimum","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","oneOf","pattern","propertyNames","uniqueItems","$additionalItems","additionalItems","$currErrSchemaPath","multipleOfPrecision","$allErrorsOption","$prevValid","$passingSchemas","$key","$dataProperties","$schemaKeys","filter","notProto","$pProperties","patternProperties","$pPropertyKeys","$aProperties","additionalProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","$requiredHash","i1","$pProperty","$additionalProperty","$useDefaults","useDefaults","arr3","i3","l3","$hasDefault","default","arr4","i4","l4","$invalidName","$refCode","$refVal","$message","missingRefs","__callValidate","$propertySch","$loopRequired","$itemType","$typeIsArray","$method","$refKeywords","$unknownKwd","$keywordsMsg","$top","rootId","strictDefaults","$defaultMsg","$closingBraces1","$closingBraces2","$typeSchema","extendRefs","coerceTypes","$coerceToTypes","$rulesGroup","$shouldUseGroup","$dataType","$coerced","$type","arr5","i5","l5","$shouldUseRule","impl","$ruleImplementsSomeKeyword","definitionSchema","_addRule","ruleGroup","rg","throwError","_validateKeyword","asn1","bignum","define","base","constants","decoders","encoders","inherits","Entity","body","_createNamed","Base","Generated","entity","_initNamed","_getDecoder","enc","decode","_getEncoder","encode","reporter","Reporter","Buffer","DecoderBuffer","isBuffer","offset","EncoderBuffer","isEncoderBuffer","byteLength","isDecoderBuffer","save","restore","isEmpty","readUInt8","skip","raw","fail","bytes","_reporterState","alloc","write","Node","assert","tags","methods","parent","state","_baseState","children","tag","args","reverseArgs","choice","optional","any","use","useDecoder","explicit","implicit","_wrap","stateProps","clone","cstate","method","_init","child","_useArgs","arg","def","val","num","newKey","_decode","input","wrapResult","prevObj","present","prevKey","enterKey","_peekTag","isError","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","start","track","path","_getUse","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","_use","some","node","_createEncoderBuffer","_encode","_encodeValue","_skipDefault","content","primitive","_encodeChoice","_encodePrimitive","cls","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool","_isNumstr","_isPrintstr","ReporterError","msg","rethrow","pathLen","prev","now","err","inherited","elem","stack","partial","captureStackTrace","reverse","tagClass","tagClassByName","tagByName","_reverse","der","DERDecoder","tree","DERNode","derDecodeTag","buf","oct","tagStr","derDecodeLen","buffer","decodedTag","_skipUntilEnd","decoder","possibleEnd","unused","String","fromCharCode","readUInt16BE","numstr","toString","printstr","values","relative","identifiers","ident","subident","first","tmp","mon","min","sec","Date","UTC","pem","PEMDecoder","lines","label","toUpperCase","re","end","base64","from","DEREncoder","two","encodedTag","encodeTag","header","lenOctets","writeUInt16BE","size","objid","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","numArray","toArray","sign","unshift","dataBuffer","defaultBuffer","PEMEncoder","ctor","superCtor","super_","TempCtor","BN","endian","isBN","negative","words","red","wordSize","window","parseHex4Bits","string","parseHexByte","lowerBound","r","parseBase","mul","max","left","right","cmp","_initNumber","_initArray","_parseHex","_parseBase","ceil","w","off","strip","limbLen","limbPow","total","mod","word","imuln","_iaddn","pow","dest","_expand","_normSign","inspect","zeros","groupSizes","groupBases","smallMulTo","lo","carry","ncarry","rword","maxJ","padding","groupSize","groupBase","isZero","modn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","ArrayType","reqLength","littleEndian","q","andln","iushrn","clz32","_countBits","_zeroBits","bitLength","hi","zeroBits","toTwos","width","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","sub","comb10MulTo","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","x","y","mulTo","hncarry","bigMulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","s","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","ie","ro","io","rx","guessLen13b","n","m","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","bits","carryMask","newCarry","ishln","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","shift","_wordDiv","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","acc","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","_strip","output","outLen","next","mod3","one","nOne","lpow","z","inv","wnd","current","currentLen","mont","u","newInvalidAsn1Error","Reader","Writer","ASN1","TypeError","_buf","_size","_len","_offset","defineProperty","enumerable","readByte","peek","readLength","lenB","readSequence","seq","readInt","_readTag","Integer","readBoolean","Boolean","readEnumeration","Enumeration","readString","retbuf","OctetString","readOID","OID","byte","ok","fb","EOC","BitString","Null","ObjectDescriptor","External","Real","PDV","Utf8String","RelativeOID","Sequence","Set","NumericString","PrintableString","T61String","VideotexString","IA5String","UTCTime","GeneralizedTime","GraphicString","VisibleString","GeneralString","UniversalString","CharacterString","BMPString","Constructor","Context","DEFAULT_OPTS","growthFactor","getOwnPropertyNames","getOwnPropertyDescriptor","_options","_seq","writeByte","_ensure","writeInt","sz","writeNull","writeEnumeration","writeBoolean","writeString","writeLength","writeBuffer","writeStringArray","strings","writeOID","parseInt","octet","encodeOctet","startSequence","endSequence","_shift","Ber","BerReader","BerWriter","Stream","UUID_REGEXP","_capitalize","charAt","_toss","expected","oper","actual","AssertionError","operator","stackStartFunction","caller","_getClass","bool","check","func","isNaN","finite","isFinite","stream","regexp","_setExports","ndebug","process","env","NODE_NDEBUG","_typeof","Symbol","iterator","isDeepEqual","isDeepStrictEqual","_require$codes","codes","ERR_AMBIGUOUS_ARGUMENT","ERR_INVALID_ARG_TYPE","ERR_INVALID_ARG_VALUE","ERR_INVALID_RETURN_VALUE","ERR_MISSING_ARGS","_require$types","isPromise","isRegExp","objectAssign","assign","objectIs","is","lazyLoadComparison","comparison","Map","warned","NO_EXCEPTION_SENTINEL","innerFail","innerOk","fn","argLen","generatedMessage","stackStartFn","_key","internalMessage","argsLen","emitWarning","bind","errArgs","notEqual","deepEqual","notDeepEqual","deepStrictEqual","notDeepStrictEqual","strictEqual","notStrictEqual","Comparison","_this","instance","_classCallCheck","compareExceptionKey","expectedException","isPrototypeOf","getActual","checkIsPromise","catch","waitForActual","promiseFn","resultPromise","expectsError","details","fnType","expectsNoError","strict","_len6","_key6","throws","_len2","_key2","rejects","_len3","_key3","doesNotThrow","_len4","_key4","doesNotReject","_len5","_key5","ifError","newErr","origStack","tmp2","tmp1","_defineProperty","configurable","writable","_defineProperties","target","props","descriptor","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_wrapNativeSuper","Class","has","set","Wrapper","_construct","_getPrototypeOf","_setPrototypeOf","isNativeReflectConstruct","Reflect","construct","sham","Proxy","Parent","setPrototypeOf","__proto__","getPrototypeOf","endsWith","search","this_len","substring","blue","green","white","kReadableOperator","strictEqualObject","notStrictEqualObject","notIdentical","copyError","inspectValue","compact","customInspect","depth","maxArrayLength","showHidden","breakLength","showProxy","sorted","getters","_Error","stackTraceLimit","stderr","isTTY","getColorDepth","other","lastPos","skipped","actualInspected","actualLines","expectedLines","indicator","inputLength","columns","floor","maxCount","repeat","maxLines","_actualLines","printedLines","skippedMsg","cur","expectedLine","actualLine","divergingLines","createErrDiff","_res","knownOperators","protoProps","subClass","superClass","_inherits","recurseTimes","ownKeys","getOwnPropertySymbols","sym","_objectSpread","createErrorType","NodeError","_Base","arg1","arg2","arg3","getMessage","thing","determiner","substr","reason","inspected","RangeError","_slicedToArray","_arrayWithHoles","_arr","_n","_d","_e","_s","_i","done","_iterableToArrayLimit","_nonIterableRest","regexFlagsSupported","flags","arrayFromSet","arrayFromMap","objectGetOwnPropertySymbols","numberIsNaN","Number","uncurryThis","f","propertyIsEnumerable","objectToString","isAnyArrayBuffer","isArrayBufferView","isDate","isMap","isSet","isNativeError","isBoxedPrimitive","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isFloat32Array","isFloat64Array","isNonIndex","getOwnNonIndexProperties","compare","innerDeepEqual","val1","val2","memos","buf1","buf2","val1Tag","keys1","keys2","keyCheck","getTime","Uint8Array","byteOffset","areSimilarTypedArrays","areSimilarFloatArrays","_keys","_keys2","valueOf","BigInt","isEqualBoxedPrimitive","getEnumerables","iterationType","aKeys","bKeys","symbolKeysA","symbolKeysB","_symbolKeysB","position","val2MemoA","val2MemoB","areEq","objEquiv","delete","setHasEqualElement","memo","setValues","findLooseMatchingPrimitives","prim","setMightHaveLoosePrim","altValue","mapMightHaveLoosePrim","curB","mapHasEqualEntry","key1","item1","key2","aValues","bValues","_val","setEquiv","aEntries","_aEntries$i","item2","bEntries","_i2","_bEntries$_i","mapEquiv","keysA","arrayLike","newLen","newArr","idx","callArgs","initialParams","isObject","hasSetImmediate","setImmediate","hasNextTick","nextTick","fallback","setTimeout","wrap","defer","setImmediate$1","asyncify","invokeCallback","supportsSymbol","isAsync","toStringTag","wrapAsync","asyncFn","applyEach$1","eachfn","fns","go","that","cb","freeGlobal","freeSelf","Symbol$1","objectProto","nativeObjectToString","symToStringTag$1","nativeObjectToString$1","symToStringTag","baseGetTag","isOwn","unmasked","getRawTag","isLength","isArrayLike","isFunction","breakLoop","once","callFn","iteratorSymbol","isObjectLike","baseIsArguments","objectProto$3","hasOwnProperty$2","isArguments","freeExports","nodeType","freeModule","reIsUint","isIndex","typedArrayTags","freeExports$1","freeModule$1","freeProcess","nodeUtil","require","binding","nodeIsTypedArray","isTypedArray","hasOwnProperty$1","arrayLikeKeys","isArr","isArg","isBuff","isType","skipIndexes","iteratee","baseTimes","objectProto$5","nativeKeys","overArg","hasOwnProperty$3","baseKeys","Ctor","coll","createArrayIterator","getIterator","createES2015Iterator","okeys","createObjectIterator","onlyOnce","_eachOfLimit","nextElem","running","looping","iterateeCallback","replenish","eachOfLimit","doLimit","iterable","eachOfArrayLike","completed","iteratorCallback","eachOfGeneric","eachOf","doParallel","_asyncMap","results","counter","_iteratee","applyEach","doParallelLimit","mapLimit","mapSeries","applyEachSeries","arrayEach","fromRight","baseFor","keysFunc","baseForOwn","baseIsNaN","baseIndexOf","fromIndex","strictIndexOf","predicate","baseFindIndex","auto","tasks","concurrency","numTasks","runningTasks","hasError","listeners","readyTasks","readyToCheck","uncheckedDependencies","enqueueTask","task","taskCallback","safeResults","rkey","taskComplete","taskFn","runTask","processQueue","run","taskName","getDependents","remainingDependencies","dependencyName","taskListeners","dependent","checkForDeadlocks","arrayMap","symbolProto","symbolToString","baseToString","isSymbol","castSlice","baseSlice","reHasUnicode","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsModifier","rsOptVar","rsSeq","rsSymbol","reUnicode","stringToArray","hasUnicode","unicodeToArray","asciiToArray","reTrim","trim","chars","guard","strSymbols","chrSymbols","charsStartIndex","charsEndIndex","FN_ARGS","FN_ARG_SPLIT","FN_ARG","STRIP_COMMENTS","autoInject","newTasks","params","fnIsAsync","hasNoDeps","newTask","parseParams","taskCb","newArgs","DLL","head","tail","setInitial","dll","queue","worker","payload","_worker","numRunning","workersList","processingScheduled","_insert","insertAtFront","started","idle","drain","_tasks","_next","unsaturated","isProcessing","saturated","empty","paused","kill","testFn","pause","resume","cargo","removeLink","insertAfter","newNode","insertBefore","curr","eachOfSeries","reduce","_functions","newargs","nextargs","compose","_concat","concatLimit","mapResults","concatSeries","constant","identity","_createTester","getResult","testResult","testPassed","_findGetResult","detect","detectLimit","detectSeries","consoleFunc","dir","doDuring","_fn","_test","truth","doWhilst","doUntil","during","_withoutIndex","eachLimit","eachLimit$1","eachSeries","ensureAsync","sync","innerArgs","notId","everyLimit","everySeries","baseProperty","filterArray","truthValues","filterGeneric","sort","_filter","filterLimit","filterSeries","forever","errback","groupByLimit","groupBy","groupBySeries","mapValuesLimit","newObj","mapValues","mapValuesSeries","memoize","hasher","queues","memoized","unmemoized","_parallel","parallelLimit","parallelLimit$1","queue$1","priorityQueue","priority","nextNode","race","reduceRight","reflect","reflectCallback","cbArg","reflectAll","reject$1","reject","rejectLimit","rejectSeries","constant$1","retry","DEFAULT_TIMES","DEFAULT_INTERVAL","times","intervalFunc","parseTimes","interval","errorFilter","_task","attempt","retryAttempt","retryable","series","someLimit","someSeries","sortBy","comparator","criteria","timeout","milliseconds","info","timer","timedOut","clearTimeout","nativeCeil","nativeMax","timeLimit","step","baseRange","timesSeries","accumulator","tryEach","unmemoize","whilst","until","waterfall","taskIndex","nextTask","each","parallel","timesLimit","allLimit","allSeries","anyLimit","anySeries","find","findLimit","findSeries","forEachSeries","forEachLimit","forEachOf","forEachOfSeries","forEachOfLimit","inject","foldl","foldr","select","selectLimit","selectSeries","wrapSync","factory","crypto","authorization","hmacSha1","createHmac","secret","update","digest","stringToSign","headers","amazonHeaders","verb","md5","contentType","toUTCString","resource","queryStringToSign","signQuery","canonicalizeHeaders","fields","field","toLowerCase","canonicalizeResource","pathname","query","aws4","querystring","credentialsCache","lru","hmac","encoding","createHash","encodeRfc3986","urlEncodedString","encodeRfc3986Full","HEADERS_TO_IGNORE","RequestSigner","request","credentials","hostParts","service","region","matchHost","host","Host","defaultCredentials","createHost","port","isCodeCommitGit","extraHeadersToIgnore","extraHeadersToInclude","isSingleRegion","prepareRequest","parsePath","parsedPath","sessionToken","datetime","getDateTime","accessKeyId","credentialString","signedHeaders","doNotModifyHeaders","Authorization","signature","authHeader","formatPath","toISOString","getDate","kDate","kRegion","kService","secretAccessKey","kCredentials","canonicalString","bodyHash","pathStr","queryStr","normalizePath","decodePath","doNotEncodePath","decodeSlashesInPath","firstValOnly","reducedQuery","encodedQueryPieces","piece","canonicalHeaders","AWS_ACCESS_KEY_ID","AWS_ACCESS_KEY","AWS_SECRET_ACCESS_KEY","AWS_SECRET_KEY","AWS_SESSION_TOKEN","encodeURI","decodeURI","queryIx","LruCache","capacity","list","DoublyLinkedList","firstNode","lastNode","DoublyLinkedNode","used","prune","moveToFront","_scriptDir","monero_javascript","document","currentScript","src","readyPromiseResolve","readyPromiseReject","Module","read_","readAsync","readBinary","fs","nodePath","requireNodeFS","moduleOverrides","arguments_","thisProgram","quit_","status","toThrow","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","importScripts","ENVIRONMENT_IS_NODE","versions","scriptDirectory","__dirname","filename","binary","readFileSync","onload","onerror","readFile","keepRuntimeAlive","ExitStatus","location","href","lastIndexOf","xhr","XMLHttpRequest","open","send","responseText","responseType","response","uleb128Encode","functionsInTableMap","wasmBinary","freeTableIndexes","tempRet0","setTempRet0","getTempRet0","wasmMemory","noExitRuntime","WebAssembly","abort","EXITSTATUS","ABORT","condition","UTF8Decoder","TextDecoder","UTF8ArrayToString","heapOrArray","maxBytesToRead","endIdx","endPtr","subarray","u0","u1","u2","ch","UTF8ToString","ptr","HEAPU8","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","stringToUTF8","outPtr","lengthBytesUTF8","HEAP8","HEAP16","HEAPU16","HEAP32","HEAPU32","HEAPF32","HEAPF64","UTF16Decoder","UTF16ToString","maxIdx","codeUnit","stringToUTF16","startPtr","numCharsToWrite","lengthBytesUTF16","UTF32ToString","utf32","stringToUTF32","lengthBytesUTF32","allocateUTF8","_malloc","updateGlobalBufferAndViews","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Float32Array","Float64Array","wasmTable","__ATPRERUN__","__ATINIT__","__ATPOSTRUN__","wasmBinaryFile","tempDouble","tempI64","runDependencies","runDependencyWatcher","dependenciesFulfilled","addRunDependency","removeRunDependency","clearInterval","what","RuntimeError","isDataURI","startsWith","isFileURI","getBinary","file","callRuntimeCallbacks","callbacks","dynCall_v","dynCall_vi","setWasmTableEntry","locateFile","exceptionCaught","exception_addRef","add_ref","uncaughtExceptionCount","ExceptionInfo","excPtr","set_type","get_type","set_destructor","destructor","get_destructor","set_refcount","refcount","set_caught","caught","get_caught","set_rethrown","rethrown","get_rethrown","init","set_adjusted_ptr","release_ref","adjustedPtr","get_adjusted_ptr","get_exception_ptr","___cxa_is_pointer_type","adjusted","___cxa_free_exception","_free","exception_decRef","dynCall_ii","exceptionLast","___cxa_rethrow","PATH","isAbs","splitPath","exec","normalizeArray","allowAboveRoot","last","isAbsolute","trailingSlash","dirname","basename","lastSlash","join2","PATH_FS","resolvedPath","resolvedAbsolute","FS","cwd","fromParts","toParts","samePartsLength","outputParts","TTY","ttys","shutdown","register","dev","ops","registerDevice","stream_ops","tty","rdev","ErrnoError","seekable","close","flush","read","get_char","bytesRead","timestamp","put_char","default_tty_ops","readSync","stdin","fd","includes","prompt","readline","intArrayFromString","default_tty1_ops","MEMFS","ops_table","mount","createNode","isBlkdev","isFIFO","getattr","node_ops","setattr","lookup","mknod","rename","unlink","rmdir","readdir","symlink","llseek","allocate","mmap","msync","link","readlink","chrdev","chrdev_stream_ops","isDir","contents","isFile","usedBytes","isLink","isChrdev","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","oldContents","resizeFileStorage","newSize","attr","ino","nlink","uid","gid","atime","mtime","ctime","blksize","blocks","genericErrors","old_node","new_dir","new_name","new_node","lookupNode","entries","newname","oldpath","canOwn","whence","address","prot","allocated","alignment","alignMemory","_emscripten_builtin_memalign","fill","zeroMemory","mmapAlloc","mmapFlags","mounts","devices","streams","nextInode","nameTable","initialized","ignorePermissions","filesystems","syncFSRequests","lookupPath","follow_mount","recurse_count","current_path","islast","isMountpoint","mounted","follow","mountpoint","hashName","parentid","hashAddNode","name_next","hashRemoveNode","errCode","mayLookup","nodeName","FSNode","destroyNode","isSocket","flagModes","modeStringToFlags","flagsToPermissionString","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","errno","mayOpen","MAX_OPEN_FDS","nextfd","fd_start","fd_end","getStream","createStream","FSStream","shared","isRead","isWrite","isAppend","function","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","syncfs","populate","doCallback","errored","pseudo","mountRoot","unmount","mkdir","mkdirTree","dirs","d","mkdev","newpath","old_path","new_path","old_dir","old_dirname","new_dirname","old_name","stat","dontFollow","lstat","chmod","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","utime","created","ungotten","readFiles","isClosed","getdents","seeking","bytesWritten","munmap","ioctl","cmd","writeFile","actualNumBytes","ArrayBuffer","isView","chdir","createDefaultDirectories","createDefaultDevices","random_device","randomBuffer","getRandomValues","crypto_module","getRandomDevice","createDevice","createSpecialDirectories","proc_self","createStandardStreams","ensureErrnoError","setErrno","staticInit","quit","getMode","canRead","canWrite","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createPath","createFile","createDataFile","forceLoadFile","isDevice","isFolder","createLazyFile","LazyUint8Array","lengthKnown","chunks","chunkOffset","chunkSize","chunkNum","getter","setDataGetter","cacheLength","datalength","getResponseHeader","hasByteServing","usesGzip","lazyArray","setRequestHeader","overrideMimeType","doXHR","_length","_chunkSize","defineProperties","createPreloadedFile","dontCreateFile","preFinish","fullname","processData","byteArray","finish","Browser","handledByPreloadPlugin","noRunDep","dep","arrayBuffer","event","asyncLoad","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_NAME","DB_VERSION","DB_STORE_NAME","saveFilesToDB","openRequest","onupgradeneeded","createObjectStore","onsuccess","transaction","files","objectStore","putRequest","loadFilesFromDB","db","getRequest","SYSCALLS","DEFAULT_POLLMASK","calculateAt","dirfd","allowEmpty","dirstream","doStat","doMsync","addr","varargs","getStr","getStreamFromFD","getShiftFromSize","embind_charCodes","readLatin1String","awaitingDependencies","registeredTypes","typeDependencies","extendError","baseErrorType","errorName","errorClass","makeLegalFunctionName","BindingError","throwBindingError","InternalError","throwInternalError","registerType","rawType","registeredInstance","ignoreDuplicateRegistrations","emval_free_list","emval_handle_array","__emval_decref","handle","Emval","simpleReadValueFromPointer","pointer","floatReadValueFromPointer","runDestructors","destructors","runAndAbortIfError","Asyncify","State","Normal","Unwinding","Rewinding","Disabled","StackSize","currData","handleSleepReturnValue","exportCallStack","callStackNameToId","callStackIdToName","callStackId","asyncPromiseHandlers","sleepCallbacks","getCallStackId","funcName","instrumentWasmExports","original","maybeStopUnwind","Fibers","trampoline","whenDone","allocateData","setDataHeader","setDataRewindFunc","stackSize","bottomOfCallStack","rewindId","getDataRewindFunc","doRewind","handleSleep","startAsync","reachedCallback","reachedAfterCallback","mainLoop","asyncWasmReturnValue","handled","synchronous","handleException","callUserCallback","handleAsync","wakeUp","dynCall","sig","dynCallLegacy","_emscripten_get_now","UnboundTypeError","getTypeName","___getTypeName","rv","integerReadValueFromPointer","signed","requireRegisteredType","humanName","emscripten_realloc_buffer","grow","performance","ENV","getEnvStrings","navigator","languages","doWritev","iov","iovcnt","__isLeapYear","__MONTH_DAYS_LEAP","__MONTH_DAYS_REGULAR","stringy","dontAddNull","u8array","numBytesWritten","embind_init_charCodes","calledRun","asmLibraryArg","line","_setThrew","thrown","thrownType","typeArray","caughtType","adjusted_ptr_addr","___cxa_can_catch","___errno_location","length_low","length_high","op","argp","olddirfd","newdirfd","primitiveType","minRange","maxRange","trueValue","falseValue","wt","destructorFunction","argCount","rawArgTypesAddr","rawInvoker","argTypes","firstElement","heap32VectorToArray","rawFunction","argCache","fp","embind__requireFunction","numArguments","overloadTable","proto","methodName","prevFunc","ensureOverloadTable","exposePublicSymbol","unboundTypes","seen","visit","throwUnboundTypeError","myTypes","dependentTypes","getTypeConverters","onComplete","typeConverters","myTypeConverters","invokerArgsArray","replacePublicSymbol","classType","cppInvokerFunc","cppTargetFunc","isClassMethodFunc","needsDestructorStack","returns","expectedArgCount","argsWired","invokerFuncArgs","thisWired","onDone","param","craftInvokerFunction","unregisteredTypes","registered","dt","whenDependentTypesAreResolved","fromWireType","bitshift","isUnsignedType","dataTypeIndex","TA","decodeMemoryView","stdStringIsUTF8","decodeStartPtr","currentBytePtr","stringSegment","valueIsOfTypeString","Uint8ClampedArray","charCode","charSize","decodeString","encodeString","getHeap","lengthBytesUTF","HEAP","isVoid","argv","__emval_lookupTypes","tmPtr","getUTCDay","yday","dst","guessedOffset","getTimezoneOffset","getFullYear","summerOffset","winterOffset","dstOffset","nonDstOffset","trueOffset","setTime","getDay","getSeconds","getMinutes","getHours","getMonth","builtin","__tzset_js","timezone","daylight","tzname","called","currentYear","winter","summer","stdTimezoneOffset","extractZone","toTimeString","winterName","summerName","winterNamePtr","summerNamePtr","_tzset_impl","requestedSize","oldSize","maxHeapSize","cutDown","overGrownHeapSize","__environ","environ_buf","bufSize","writeAsciiToMemory","penviron_count","penviron_buf_size","procExit","exit","offset_low","offset_high","pnum","doReadv","newOffset","DOUBLE_LIMIT","sp","stackSave","dynCall_diii","stackRestore","dynCall_fiii","dynCall_i","dynCall_iii","dynCall_iiii","dynCall_iiiii","dynCall_iiiiid","dynCall_iiiiii","dynCall_iiiiiii","dynCall_iiiiiiii","dynCall_iiiiiiiiii","a10","a11","dynCall_iiiiiiiiiiii","dynCall_iiiiij","dynCall_iiiiiji","dynCall_iiiiji","dynCall_iij","dynCall_j","dynCall_ji","dynCall_jii","dynCall_jiii","dynCall_jiiii","dynCall_jiiiii","dynCall_vii","dynCall_viii","dynCall_viiii","dynCall_viiiii","dynCall_viiiiii","dynCall_viiiiiii","dynCall_viiiiiiii","dynCall_viiiiiiiiii","a12","a13","a14","a15","dynCall_viiiiiiiiiiiiiii","dynCall_viiiji","dynCall_viiijjjjii","dynCall_viij","dynCall_viijii","dynCall_viijiiii","dynCall_viijjd","dynCall_viji","dynCall_vijiijii","username","password","reject_unauthorized_fn_id","body_length","monerojs","HttpClient","LibraryUtils","GenUtils","loadFullModule","view","BYTES_PER_ELEMENT","wakeUpCalled","resolveWithFullResponse","rejectUnauthorized","isRejectUnauthorized","requestApi","isFirefox","resp","respBin","nDataBytes","bodyPtr","respContainer","statusCode","statusText","bodyLength","respStr","lengthBytes","maxsize","tm","tm_zone","tm_sec","tm_min","tm_hour","tm_mday","tm_mon","tm_year","tm_wday","tm_yday","tm_isdst","tm_gmtoff","EXPANSION_RULES_1","WEEKDAYS","MONTHS","leadingSomething","digits","character","leadingNulls","compareByDay","date1","date2","sgn","getFirstWeekStartDate","janFourth","getWeekBasedYear","thisDate","days","newDate","leap","currentMonth","daysInCurrentMonth","setDate","setMonth","setFullYear","__addDays","janFourthThisYear","janFourthNextYear","firstWeekStartThisYear","firstWeekStartNextYear","EXPANSION_RULES_2","twelveHour","sum","__arraySum","jan1","dec31","ahead","writeArrayToMemory","_strftime","receiveInstance","receiveInstantiationResult","instantiateArrayBuffer","receiver","fetch","getBinaryPromise","instantiate","instantiateStreaming","createWasm","doRun","postRun","preRun","WeakMap","funcPtr","updateTableMap","getEmptyTableSlot","wrapped","typeNames","parameters","typeSection","sigRet","sigParam","typeCodes","Instance","convertJsFunctionToWasm","chr","runCaller","ready","getWasmTableEntry","BigInteger","Filter","MoneroError","MoneroRpcConnection","MoneroRpcError","SslOptions","TaskLooper","ThreadPool","ConnectionType","MoneroAltChain","MoneroBan","MoneroBlockHeader","MoneroBlock","MoneroBlockTemplate","MoneroConnectionSpan","MoneroDaemonInfo","MoneroDaemonListener","MoneroDaemonSyncInfo","MoneroDaemonUpdateCheckResult","MoneroDaemonUpdateDownloadResult","MoneroFeeEstimate","MoneroHardForkInfo","MoneroKeyImage","MoneroKeyImageSpentStatus","MoneroMinerTxSum","MoneroMiningStatus","MoneroNetworkType","MoneroOutput","MoneroOutputHistogramEntry","MoneroPruneResult","MoneroSubmitTxResult","MoneroTx","MoneroTxPoolStats","MoneroVersion","MoneroPeer","MoneroAccount","MoneroAccountTag","MoneroAddressBookEntry","MoneroCheck","MoneroCheckReserve","MoneroCheckTx","MoneroDestination","MoneroIntegratedAddress","MoneroKeyImageImportResult","MoneroMultisigInfo","MoneroMultisigInitResult","MoneroMultisigSignResult","MoneroOutputWallet","MoneroOutputQuery","MoneroTxPriority","MoneroTxConfig","MoneroSubaddress","MoneroSyncResult","MoneroTransfer","MoneroIncomingTransfer","MoneroOutgoingTransfer","MoneroTransferQuery","MoneroTxSet","MoneroTxWallet","MoneroTxQuery","MoneroWalletListener","MoneroWalletConfig","MoneroMessageSignatureType","MoneroMessageSignatureResult","MoneroConnectionManager","MoneroConnectionManagerListener","MoneroUtils","MoneroDaemon","MoneroWallet","MoneroDaemonRpc","MoneroWalletRpc","MoneroWalletKeys","MoneroWalletFull","getVersion","connectToDaemonRpc","_connectToDaemonRpc","connectToWalletRpc","_connectToWalletRpc","createWalletFull","createWallet","openWalletFull","openWallet","createWalletKeys","meetsCriteria","parseFloat","assertTrue","isHex","isBase58","isBase64","btoa","atob","isUndefined","isDefined","isUninitialized","isInitialized","equals","isInt","isBoolean","isString","assertInitialized","assertFunction","got","powerSet","getPowerSet","powerSetOfLength","indices","assertArray","found","arrOrElem","compareByReference","arraysEqual","objectsEqual","map1","map2","combinationSize","indexCombinations","getPowerSetOfLength","getIndices","combinations","indexCombinationsIdx","indexCombination","combination","indexCombinationIdx","createElement","createObjectURL","Blob","download","innerHTML","$","append","html","csv","toArrays","fromObjects","char","isWhitespace","styleSheets","styleSheet","internalCss","internalStyleSheet","getInternalStyleSheet","cssRules","cssText","metas","listify","setAttribute","outerHTML","title","dependencyPaths","dependencyPath","onLoad","onLoadCalled","onLoadOnce","opener","buildHtmlDocument","addEventListener","img","quality","canvas","height","naturalHeight","naturalWidth","getContext","drawImage","toDataURL","returned","Image","onResponse","funcs","loadFunc","varArgs","nextSource","nextKey","replaceAt","replacement","searchString","removeVal","random","isWorker","isBrowserMain","isJsDom","isBrowser","userAgent","ua","msie","edge","ints","getRandomInt","randomInt","temp","getFn","setFn","config","errMsg","curVal","reconciledVal","reconcile","resolveDefined","resolveTrue","resolveMax","indent","newline","ignoreUndefined","getIndent","durationMs","signal","on","PromiseThrottle","Request","proxyToWorker","invokeWorker","parsed","statusMessage","_DEFAULT_REQUEST","_TASK_QUEUES","_PROMISE_THROTTLES","requestsPerSecond","MAX_REQUESTS_PER_SECOND","promiseImplementation","_DEFAULT_TIMEOUT","MAX_TIMEOUT","requestPromise","_requestFetch","_requestXhr","timeoutPromise","req","agent","_getHttpsAgent","_getHttpAgent","requestCert","auth","user","pass","sendImmediately","submit","normalizedResponse","isBinary","digestAuthRequest","_parseXhrResponseHeaders","getAllResponseHeaders","HTTP_AGENT","http","Agent","keepAlive","HTTPS_AGENT","https","headersStr","headerMap","headerVals","CryptoJS","scheme","nonce","realm","qop","opaque","nc","cnonce","loggingOn","post","successFn","errorFn","makeAuthenticatedRequest","makeUnauthenticatedRequest","firstRequest","onreadystatechange","readyState","digestHeaders","responseHeaders","equalIndex","generateCnonce","isJson","formulateResponse","authenticatedRequest","digestAuthHeader","HA1","MD5","HA2","characters","token","randNum","version","LOG_LEVEL","WASM_MODULE","set_log_level","WORKER","getWasmModule","_initWasmModule","FULL_LOADED","fnId","REJECT_UNAUTHORIZED_FNS","workerDistPath","_prefixWindowsPath","WORKER_DIST_PATH_DEFAULT","WORKER_DIST_PATH","Worker","WORKER_OBJECTS","onmessage","thisArg","callbackFn","terminate","objectId","fnName","getWorker","randomObject","getUUID","callbackId","deserializeError","postMessage","serializedErr","wasmModule","taskQueue","queueTask","_proxyToWorker","_timeoutInMs","DEFAULT_TIMEOUT","_connections","_listeners","addListener","listener","removeListener","removeListeners","connection","aConnection","getUri","setProxyToWorker","getConnectionByUri","_currentConnection","_onConnectionChanged","isConnected","getConnection","getConnections","sortedConnections","copyArray","_compareConnections","excludedConnections","prioritizedConnections","_getConnectionsInAscendingPriority","checkPromises","arrayContains","checkConnection","firstAvailable","AggregateError","setConnection","uriOrConnection","prevConnection","addConnection","connectionChanged","_autoSwitch","bestConnection","getBestAvailableConnection","checkConnectionPromises","prioritizedConnection","getResponseTime","pool","periodMs","DEFAULT_CHECK_CONNECTION_PERIOD","_checkLooper","firstCheck","stopCheckingConnection","stop","setAutoSwitch","autoSwitch","getAutoSwitch","timeoutInMs","getTimeout","disconnect","reset","_timeoutMs","getListeners","promises","onConnectionChanged","connectionPriorities","getPriority","ascendingPriorities","ascendingPrioritiesList","priorityConnections","c1","c2","isOnline","localeCompare","super","getCode","uriOrConfigOrConnection","_config","setCredentials","getConfig","DEFAULT_CONFIG","normalizeUri","SUPPORTED_FIELDS","_isOnline","_isAuthenticated","getUsername","getPassword","getRejectUnauthorized","getProxyToWorker","setPriority","attributes","getAttribute","isOnlineBefore","isAuthenticatedBefore","startTime","_fakeDisconnected","sendJsonRequest","_responseTime","isAuthenticated","jsonrpc","getLogLevel","_validateHttpResponse","_validateRpcResponse","paramsBin","jsonToBinary","toJson","_setFakeDisconnected","fakeDisconnected","rpcDescription","rpcCode","rpcMethod","rpcParams","getRpcMethod","getRpcParams","PROXY_TO_WORKER","mnemonic","NUM_MNEMONIC_WORDS","privateViewKey","validatePrivateViewKey","publicViewKey","validatePublicViewKey","privateSpendKey","validatePrivateSpendKey","publicSpendKey","validatePublicSpendKey","_isHex64","networkType","standardAddress","paymentId","loadKeysModule","integratedAddressJson","get_integrated_address_util","validateAddress","validate_address","validatePaymentId","txExtra","lastPubKeyIdx","paymentId1","paymentId2","txs","tx","aTx","getHash","merge","json","binMemInfoStr","malloc_binary_from_json","binMemInfo","uint8arr","ret_string","binary_to_json","json_str","binary_blocks_to_json","blockStr","amountXmr","decimalDivisor","decimalIdx","multiply","AU_PER_XMR","divide","amountAtomicUnits","quotientAndRemainder","divRem","toJSValue","RING_SIZE","initOneTime","serializeError","httpRequest","setLogLevel","getWasmMemoryUsed","moneroUtilsGetIntegratedAddress","getIntegratedAddress","moneroUtilsValidateAddress","moneroUtilsJsonToBinary","moneroUtilsBinaryToJson","binaryToJson","moneroUtilsBinaryBlocksToJson","binaryBlocksToJson","daemonAddListener","daemonId","listenerId","blockHeader","daemonListeners","daemonRemoveListener","connectDaemonRpc","daemonGetRpcConnection","getRpcConnection","daemonIsConnected","daemonGetVersion","daemonIsTrusted","isTrusted","daemonGetHeight","getHeight","daemonGetBlockHash","getBlockHash","daemonGetBlockTemplate","walletAddress","reserveSize","getBlockTemplate","daemonGetLastBlockHeader","getLastBlockHeader","daemonGetBlockHeaderByHash","getBlockHeaderByHash","daemonGetBlockHeaderByHeight","getBlockHeaderByHeight","daemonGetBlockHeadersByRange","startHeight","endHeight","blockHeadersJson","getBlockHeadersByRange","daemonGetBlockByHash","blockHash","getBlockByHash","daemonGetBlocksByHash","blockHashes","blocksJson","block","getBlocksByHash","daemonGetBlockByHeight","getBlockByHeight","daemonGetBlocksByHeight","heights","getBlocksByHeight","daemonGetBlocksByRange","getBlocksByRange","daemonGetBlocksByRangeChunked","maxChunkSize","getBlocksByRangeChunked","daemonGetBlockHashes","daemonGetTxs","txHashes","unconfirmedBlock","getTxs","seenBlocks","getBlock","setTxs","setBlock","daemonGetTxHexes","getTxHexes","daemonGetMinerTxSum","numBlocks","getMinerTxSum","daemonGetFeeEstimate","graceBlocks","getFeeEstimate","daemonSubmitTxHex","txHex","doNotRelay","submitTxHex","daemonRelayTxsByHash","relayTxsByHash","daemonGetTxPool","getTxPool","daemonGetTxPoolHashes","getTxPoolHashes","daemonGetTxPoolStats","getTxPoolStats","daemonFlushTxPool","hashes","flushTxPool","daemonGetKeyImageSpentStatuses","keyImages","getKeyImageSpentStatuses","daemonGetOutputHistogram","amounts","minCount","isUnlocked","recentCutoff","entriesJson","entry","getOutputHistogram","daemonGetInfo","getInfo","daemonGetSyncInfo","getSyncInfo","daemonGetHardForkInfo","getHardForkInfo","daemonGetAltChains","altChainsJson","altChain","getAltChains","daemonGetAltBlockHashes","getAltBlockHashes","daemonGetDownloadLimit","getDownloadLimit","daemonSetDownloadLimit","setDownloadLimit","daemonResetDownloadLimit","resetDownloadLimit","daemonGetUploadLimit","getUploadLimit","daemonSetUploadLimit","setUploadLimit","daemonResetUploadLimit","resetUploadLimit","daemonGetPeers","peersJson","peer","getPeers","daemonGetKnownPeers","getKnownPeers","daemonSetOutgoingPeerLimit","setOutgoingPeerLimit","daemonSetIncomingPeerLimit","setIncomingPeerLimit","daemonGetPeerBans","bansJson","ban","getPeerBans","daemonSetPeerBans","bans","banJson","setPeerBans","daemonStartMining","numThreads","isBackground","ignoreBattery","startMining","daemonStopMining","stopMining","daemonGetMiningStatus","getMiningStatus","daemonPruneBlockchain","pruneBlockchain","daemonStop","daemonWaitForNextBlockHeader","waitForNextBlockHeader","openWalletData","walletId","keysData","cacheData","daemonUriOrConfig","daemonConnection","server","_setBrowserMainPath","_createWallet","configJson","setPath","isViewOnly","getNetworkType","getSeed","getSeedLanguage","getSeedLanguages","getPrivateSpendKey","getPrivateViewKey","getPublicViewKey","getPublicSpendKey","getAddress","accountIdx","subaddressIdx","getAddressIndex","setSubaddressLabel","decodeIntegratedAddress","integratedAddress","setDaemonConnection","getDaemonConnection","isConnectedToDaemon","getRestoreHeight","setRestoreHeight","restoreHeight","getDaemonHeight","getDaemonMaxPeerHeight","getHeightByDate","isDaemonSynced","getId","onSyncProgress","percentDone","onNewBlock","onBalancesChanged","newBalance","newUnlockedBalance","onOutputReceived","getTx","onOutputSpent","isSynced","allowConcurrentCalls","startSyncing","syncPeriodInMs","stopSyncing","scanTxs","rescanSpent","rescanBlockchain","getBalance","getUnlockedBalance","getAccounts","includeSubaddresses","accountJsons","account","getAccount","createAccount","getSubaddresses","subaddressIndices","subaddressJsons","subaddress","createSubaddress","blockJsonQuery","DeserializationType","TX_QUERY","getTransfers","getTransferQuery","transfers","transfer","getOutputs","getOutputQuery","outputs","exportOutputs","importOutputs","outputsHex","getKeyImages","keyImagesJson","keyImage","exportKeyImages","importKeyImages","keyImageJson","freezeOutput","thawOutput","isOutputFrozen","createTxs","getTxSet","sweepOutput","sweepUnlocked","txSets","txSetsJson","txSet","sweepDust","relay","relayTxs","txMetadatas","describeTxSet","txSetJson","signTxs","unsignedTxHex","submitTxs","signedTxHex","signMessage","signatureType","verifyMessage","getTxKey","txHash","checkTxKey","txKey","getTxProof","checkTxProof","getSpendProof","checkSpendProof","getReserveProofWallet","getReserveProofAccount","amountStr","checkReserveProof","getTxNotes","setTxNotes","txNotes","getAddressBookEntries","entryIndices","addAddressBookEntry","description","editAddressBookEntry","setAddress","setDescription","deleteAddressBookEntry","tagAccounts","accountIndices","untagAccounts","getAccountTags","setAccountTagLabel","getPaymentUri","parsePaymentUri","backgroundMining","isMultisigImportNeeded","isMultisig","getMultisigInfo","prepareMultisig","makeMultisig","multisigHexes","threshold","exchangeMultisigKeys","exportMultisigHex","importMultisigHex","signMultisigTxHex","multisigTxHex","submitMultisigTxHex","signedMultisigTxHex","changePassword","oldPassword","newPassword","getPrivateKeyPath","privateKeyPath","setPrivateKeyPath","getCertificatePath","certificatePath","setCertificatePath","getCertificateAuthorityFile","certificateAuthorityFile","setCertificateAuthorityFile","getAllowedFingerprints","allowedFingerprints","setAllowedFingerprints","getAllowAnyCert","allowAnyCert","setAllowAnyCert","getTask","periodInMs","_periodInMs","_isStarted","_runLoop","isStarted","setPeriodInMs","_isLooping","maxConcurrency","drainListeners","CONSTRUCT","ZERO","BigInteger_base","base_log10","ONE","M_ONE","_0","_1","small","numerals","digit","radixRegex","baseSection","subtract","al","bl","compareAbs","borrow","addOne","subtractOne","nl","isUnit","square","pl","bi","jlimit","multiplySingleDigit","product","imult1","quotient","remainder","divRemSmall","guess","b_digits","b_index","quot","xlen","ylen","highx","highy","n_s","isPositive","isNegative","exp10","MAX_EXP","aux","modPow","exponent","modulus","NaN","firstNdigits","lowVal","makeUnary","makeBinary","makeTrinary","unary","trinary","cumulative","blockBlob","submitBlocks","blockBlobs","network","MAINNET","TESTNET","STAGENET","uriOrConfig","pollInterval","_normalizeConfig","rpcConfig","rpc","cachedHeaders","_startMonerodProcess","MoneroDaemonRpcProxy","connect","stdout","setEncoding","uriLineContains","uriLineContainsIdx","unformattedLine","sslIdx","sslEnabled","userPassIdx","userPass","daemon","isResolved","origin","getProcess","force","listenersCopy","killProcess","_refreshListening","_checkResponseStatus","release","sendPathRequest","untrusted","wallet_address","reserve_size","_convertRpcBlockTemplate","_convertRpcBlockHeader","block_header","start_height","end_height","rpcHeader","_convertRpcBlock","sendBinaryRequest","rpcBlocks","blockIdx","setHeight","txIdx","setHash","tx_hashes","setIsConfirmed","setInTxPool","setIsMinerTx","setRelay","setIsRelayed","setIsFailed","setIsDoubleSpend","_convertRpcTx","lastHeight","_getMaxBlocks","txs_hashes","decode_as_json","hexes","getPrunedHex","getFullHex","txSum","setEmissionSum","emission_amount","setFeeSum","fee_amount","grace_blocks","feeEstimate","setFee","fee","fees","setFees","setQuantizationMask","quantization_mask","tx_as_hex","do_not_relay","_convertRpcSubmitTxResult","setIsGood","txids","transactions","rpcTx","setNumConfirmations","_convertRpcTxPoolStats","pool_stats","key_images","spent_status","min_count","max_count","unlocked","recent_cutoff","histogram","rpcEntry","_convertRpcOutputHistogramEntry","_convertRpcInfo","_convertRpcSyncInfo","_convertRpcHardForkInfo","chains","rpcChain","_convertRpcAltChain","blks_hashes","_getBandwidthLimits","_setBandwidthLimits","peers","connections","rpcConnection","_convertRpcConnection","gray_list","rpcPeer","_convertRpcPeer","setIsOnline","white_list","out_peers","in_peers","rpcBan","setHost","setIp","ip","setSeconds","seconds","rpcBans","_convertToRpcBan","miner_address","threads_count","do_background_mining","ignore_battery","_convertRpcMiningStatus","setIsPruned","pruned","setPruningSeed","pruning_seed","command","_convertRpcUpdateCheckResult","_convertRpcUpdateDownloadResult","getTxHex","getKeyImageSpentStatus","setPeerBan","submitBlock","pollListener","DaemonPoller","setIsPolling","limit_down","limit_up","downLimit","upLimit","maxHeight","maxReqSize","MAX_REQ_SIZE","reqSize","_getBlockHeaderByHeightCached","getSize","cachedHeader","NUM_HEADERS_PER_REQ","safeSet","setSize","getDepth","setDepth","setDifficulty","getDifficulty","_prefixedHexToBI","setCumulativeDifficulty","getCumulativeDifficulty","getMajorVersion","setMajorVersion","getMinorVersion","setMinorVersion","getNonce","setNonce","getNumTxs","setNumTxs","getOrphanStatus","setOrphanStatus","getPrevHash","setPrevHash","getReward","setReward","getTimestamp","setTimestamp","getWeight","setWeight","getLongTermWeight","setLongTermWeight","getPowHash","setPowHash","setMinerTxHash","rpcBlock","setHex","blob","setTxHashes","rpcMinerTx","miner_tx","minerTx","setMinerTx","getLastRelayedTimestamp","setLastRelayedTimestamp","getReceivedTimestamp","setReceivedTimestamp","getNumConfirmations","isConfirmed","inTxPool","isDoubleSpendSeen","setVersion","getExtra","setExtra","gen","setInputs","rpcVin","_convertRpcOutput","setOutputs","rpcOutput","getRctSignatures","setRctSignatures","txnFee","getFee","getRctSigPrunable","setRctSigPrunable","getUnlockTime","setUnlockTime","setFullHex","isRelayed","getOutputIndices","setOutputIndices","getRelay","isKeptByBlock","setIsKeptByBlock","getSignatures","setSignatures","isFailed","getLastFailedHeight","setLastFailedHeight","DEFAULT_ID","getLastFailedHash","setLastFailedHash","getMaxUsedBlockHeight","setMaxUsedBlockHeight","getMaxUsedBlockHash","setMaxUsedBlockHash","getPrunableHash","setPrunableHash","getPrunableHex","setPrunableHex","setPrunedHex","setIndex","as_json","tx_json","setTx","getAmount","setAmount","amount","getKeyImage","setKeyImage","k_image","getRingOutputIndices","setRingOutputIndices","key_offsets","pubKey","tagged_key","getStealthPublicKey","setStealthPublicKey","rpcTemplate","template","setBlockTemplateBlob","setBlockHashingBlob","setExpectedReward","setReservedOffset","setSeedHeight","setSeedHash","setNextSeedHash","getNextSeedHash","rpcInfo","setNumAltBlocks","setBlockSizeLimit","setBlockSizeMedian","setBlockWeightLimit","setBlockWeightMedian","setBootstrapDaemonAddress","setFreeSpace","setDatabaseSize","setNumOfflinePeers","setHeightWithoutBootstrap","setNumIncomingConnections","setIsOffline","setNumOutgoingConnections","setNumRpcConnections","setStartTimestamp","setAdjustedTimestamp","setTarget","setTargetHeight","setTopBlockHash","setNumTxsPool","setWasBootstrapEverUsed","setNumOnlinePeers","setUpdateAvailable","setNetworkType","parseNetworkType","setCredits","getTopBlockHash","setIsBusySyncing","setIsSynchronized","setIsRestricted","rpcSyncInfo","syncInfo","setPeers","rpcConnections","setSpans","rpcSpans","rpcSpan","getSpans","_convertRpcConnectionSpan","setNextNeededPruningSeed","overview","rpcHardForkInfo","setEarliestHeight","setIsEnabled","setState","setThreshold","setNumVotes","setVoting","setWindow","rpcConnectionSpan","span","setConnectionId","setNumBlocks","setRate","setRemoteAddress","setSpeed","setStartHeight","setNumInstances","setNumUnlockedInstances","setNumRecentInstances","rpcResult","setIsFeeTooLow","setHasInvalidInput","setHasInvalidOutput","setHasTooFewOutputs","setIsMixinTooLow","setIsOverspend","setReason","setIsTooBig","setSanityCheckFailed","setIsTxExtraTooBig","rpcStats","stats","setBytesMax","setBytesMed","setBytesMin","setBytesTotal","setHisto98pc","setNum10m","setNumDoubleSpends","setNumFailing","setNumNotRelayed","setOldestTimestamp","setFeeTotal","setHisto","getHisto","getHisto98pc","chain","setLength","setBlockHashes","setMainChainParentBlockHash","setId","setLastSeenTimestamp","setPort","setRpcPort","setRpcCreditsPerHash","setAvgDownload","setAvgUpload","setCurrentDownload","setCurrentUpload","setIsIncoming","setLiveTime","setIsLocalIp","setIsLocalHost","setNumReceives","setReceiveIdleTime","setNumSends","setSendIdleTime","setNumSupportFlags","setType","getHost","getIp","isBanned","rpcStatus","setIsActive","active","speed","setNumThreads","setIsBackground","is_background_mining_enabled","setAutoUri","setIsUpdateAvailable","setUserUri","getAutoUri","getUserUri","setDownloadPath","getDownloadPath","hex","wrappedListeners","wrappedListener","DaemonWorkerListener","onBlockHeader","_invokeWorker","getListener","versionJson","isRelease","blockHeaderJson","blockJson","entryJson","altChains","altChainJson","peerJson","removeBlockListener","_daemon","_looper","poll","isPolling","_isPolling","_lastHeader","_id","_listener","headerJson","INVALID","IPV4","IPV6","TOR","I2P","difficulty","getBlockHashes","getLength","getMainChainParentBlockHash","mainChainParentBlockHash","setIsBanned","txType","TX","TX_WALLET","getHex","getMinerTx","getTxHashes","_mergeTx","kvLine","cumulativeDifficulty","reward","weight","longTermWeight","majorVersion","minorVersion","getMinerTxHash","minerTxHash","numTxs","orphanStatus","prevHash","powHash","expectedReward","getExpectedReward","getBlockTemplateBlob","blockTemplateBlob","getBlockHashingBlob","blockHashingBlob","prevId","getReservedOffset","reservedOffset","getSeedHeight","seedHeight","getSeedHash","seedHash","nextSeedHash","getConnectionId","connectionId","getNumBlocks","getRemoteAddress","remoteAddress","getRate","rate","getSpeed","getStartHeight","credits","getNumAltBlocks","numAltBlocks","getBlockSizeLimit","blockSizeLimit","getBlockSizeMedian","blockSizeMedian","getBlockWeightLimit","blockWeightLimit","getBlockWeightMedian","blockWeightMedian","getBootstrapDaemonAddress","bootstrapDaemonAddress","getFreeSpace","freeSpace","getNumOfflinePeers","numOfflinePeers","getNumOnlinePeers","numOnlinePeers","getHeightWithoutBootstrap","heightWithoutBootstrap","isOffline","getNumIncomingConnections","numIncomingConnections","getNumOutgoingConnections","numOutgoingConnections","getNumRpcConnections","numRpcConnections","getStartTimestamp","startTimestamp","getAdjustedTimestamp","adjustedTimestamp","getTarget","getTargetHeight","targetHeight","topBlockHash","getNumTxsPool","numTxsPool","getWasBootstrapEverUsed","wasBootstrapEverUsed","getDatabaseSize","databaseSize","getUpdateAvailable","updateAvailable","getCredits","isBusySyncing","isSynchronized","isRestricted","lastHeader","spans","getNextNeededPruningSeed","nextNeededPruningSeed","getOverview","setOverview","isUpdateAvailable","autoUri","userUri","downloadPath","quantizationMask","getFees","getQuantizationMask","getEarliestHeight","earliestHeight","isEnabled","getState","getThreshold","getNumVotes","numVotes","getWindow","getVoting","voting","stateOrHex","setSignature","getSignature","NOT_SPENT","CONFIRMED","TX_POOL","emissionSum","feeSum","getEmissionSum","getFeeSum","isActive","getNumThreads","networkTypeStr","getIndex","ringOutputIndices","stealthPublicKey","getNumInstances","numInstances","getNumUnlockedInstances","numUnlockedInstances","getNumRecentInstances","numRecentInstances","rpcCreditsPerHash","getPort","getLastSeenTimestamp","lastSeenTimestamp","getPruningSeed","pruningSeed","getRpcPort","rpcPort","getRpcCreditsPerHash","getAvgDownload","avgDownload","getAvgUpload","avgUpload","getCurrentDownload","currentDownload","getCurrentUpload","currentUpload","isIncoming","getLiveTime","liveTime","isLocalIp","isLocalHost","getNumReceives","numReceives","getNumSends","numSends","getReceiveIdleTime","receiveIdleTime","getSendIdleTime","sendIdleTime","getNumSupportFlags","numSupportFlags","getType","isPruned","isGood","isFeeTooLow","isMixinTooLow","hasInvalidInput","hasInvalidOutput","hasTooFewOutputs","isOverspend","getReason","isTooBig","getSanityCheckFailed","sanityCheckFailed","isTxExtraTooBig","unlockTime","inputs","isMinerTx","miner","getPaymentId","setPaymentId","getRingSize","ringSize","setRingSize","numConfirmations","lastRelayedTimestamp","receivedTimestamp","getKey","setKey","fullHex","prunedHex","prunableHex","prunableHash","getInputs","outputIndices","getMetadata","metadata","setMetadata","extra","rctSignatures","rctSigPrunable","lastFailedHeight","lastFailedHash","maxUsedBlockHeight","maxUsedBlockHash","signatures","merger","merged","mergee","DEFAULT_PAYMENT_ID","feeTotal","histo","getNumNotRelayed","numNotRelayed","getNumFailing","numFailing","getNumDoubleSpends","numDoubleSpends","getNum10m","num10m","getFeeTotal","getBytesMax","bytesMax","getBytesMed","bytesMed","getBytesMin","bytesMin","getBytesTotal","bytesTotal","histo98pc","getOldestTimestamp","oldestTimestamp","getNumber","setNumber","setIsRelease","listenerOrStartHeight","balance","numBlocksToNextUnlock","numBlocksToLastUnlock","unlockedBalance","isLocked","numBlocksToUnlock","_normalizeTransferQuery","isOutgoing","setIsOutgoing","_normalizeCreateTxsConfig","getCanSplit","setCanSplit","txOrMetadata","txsOrMetadatas","setUnsignedTxHex","setMultisigTxHex","note","notes","entryIdx","setHashes","getInputQuery","setTxQuery","getTxQuery","txQuery","setTransferQuery","setOutputQuery","getDestinations","getSweepEachSubaddress","getBelowAmount","getSubtractFeeFrom","getSubaddressIndices","setSubaddressIndices","getAccountIndex","DEFAULT_LANGUAGE","_getFs","existsSync","configOrPath","daemonUriOrConnection","setPassword","setFs","setServer","setServerUri","getSeedOffset","getPrimaryAddress","getLanguage","getSaveCurrent","getKeysData","getFs","walletExists","setKeysData","setCacheData","_openWalletData","getCacheData","getServer","_createWalletFromSeed","_createWalletFromKeys","_createWalletRandom","MoneroWalletFullProxy","setSeedOffset","wallet","rejectUnauthorizedFnId","setRejectUnauthorizedFn","create_full_wallet","cppAddress","setPrimaryAddress","setPrivateViewKey","setPrivateSpendKey","setLanguage","get_keys_wallet_seed_languages","_path","_password","_fs","_isClosed","_fullListener","WalletFullListener","_fullListenerHandle","_rejectUnauthorized","_rejectUnauthorizedConfigId","_syncPeriodInMs","DEFAULT_SYNC_PERIOD_IN_MS","_module","_assertNotClosed","get_daemon_max_peer_height","_cppAddress","is_daemon_synced","is_synced","get_network_type","get_restore_height","set_restore_height","_moveTo","uriOrRpcConnection","set_daemon_connection","connectionContainerStr","get_daemon_connection","jsonConnection","is_connected_to_daemon","get_integrated_address","decode_integrated_address","get_height","get_daemon_height","get_height_by_date","syncWasm","respJson","numBlocksFetched","receivedMoney","_syncLooper","_backgroundSync","stop_syncing","scan_txs","rescan_spent","rescan_blockchain","balanceStr","get_balance_wallet","get_balance_account","get_balance_subaddress","stringifyBIs","unlockedBalanceStr","get_unlocked_balance_wallet","get_unlocked_balance_account","get_unlocked_balance_subaddress","accountsStr","get_accounts","accounts","accountJson","_sanitizeAccount","accountStr","get_account","create_account","subaddressesJson","get_subaddresses","subaddresses","subaddressJson","_sanitizeSubaddress","subaddressStr","create_subaddress","set_subaddress_label","_normalizeTxQuery","get_txs","blocksJsonStr","_deserializeTxs","get_transfers","_deserializeTransfers","_normalizeOutputQuery","get_outputs","_deserializeOutputs","export_outputs","import_outputs","numImported","export_key_images","keyImagesStr","import_key_images","keyImageImportResultStr","freeze_output","thaw_output","is_output_frozen","create_txs","txSetJsonStr","_normalizeSweepOutputConfig","sweep_output","_normalizeSweepUnlockedConfig","sweep_unlocked","sweep_dust","relay_txs","txHashesJson","getUnsignedTxHex","setSignedTxHex","getSignedTxHex","getMultisigTxHex","describe_tx_set","get_exception_message","sign_txs","submit_txs","SIGN_WITH_SPEND_KEY","sign_message","resultJson","verify_message","isOld","SIGN_WITH_VIEW_KEY","get_tx_key","check_tx_key","respJsonStr","get_tx_proof","errorKey","check_tx_proof","get_spend_proof","check_spend_proof","get_reserve_proof_wallet","get_reserve_proof_account","check_reserve_proof","get_tx_notes","set_tx_notes","get_address_book_entries","add_address_book_entry","edit_address_book_entry","delete_address_book_entry","tag_accounts","accountTags","accountTagJson","get_account_tags","llabel","set_account_tag_label","get_payment_uri","parse_payment_uri","get_attribute","set_attribute","is_multisig_import_needed","is_multisig","get_multisig_info","prepare_multisig","make_multisig","exchange_multisig_keys","export_multisig_hex","import_multisig_hex","sign_multisig_tx_hex","submit_multisig_tx_hex","viewOnly","views","cacheBufferLoc","get_cache_file_buffer","DataView","setInt8","keysBufferLoc","get_keys_file_buffer","change_wallet_password","_save","getNumBlocksToUnlock","getIncomingTransfers","getOutgoingTransfers","createTx","relayTx","getTxNote","setTxNote","daemonUri","daemonUsername","daemonPassword","open_wallet_full","_browserMainPath","set_listener","newListenerHandle","newBalanceStr","newUnlockedBalanceStr","accountIdxStr","subaddressIdxStr","_sanitizeTxWallet","getLabel","setLabel","deserializedBlocks","_sanitizeBlock","_deserializeBlocks","getHashes","txMap","txsSorted","getOutgoingTransfer","browserMainPath","Path","walletDir","mkdirSync","writeFileSync","oldPath","unlinkSync","pathNew","renameSync","_walletId","_wrappedListeners","WalletWorkerListener","blockJsons","_wallet","setAccountIndex","setSubaddressIndex","setIsLocked","create_keys_wallet_random","create_keys_wallet_from_seed","create_keys_wallet_from_keys","is_view_only","versionStr","get_version","get_seed","errorStr","get_seed_language","get_private_spend_key","get_private_view_key","get_public_view_key","get_public_spend_key","get_address","get_address_index","getSubaddress","addressCache","_startWalletRpcProcess","pathOrConfig","_clear","getAccountLookahead","getSubaddressLookahead","language","_handleCreateWalletError","seed","seed_offset","enable_multisig_experimental","restore_height","autosave_current","viewkey","spendkey","key_type","sslOptions","trusted","ssl_support","ssl_private_key_path","ssl_certificate_path","ssl_ca_file","ssl_allowed_fingerprints","ssl_allow_any_cert","subaddressMap","integratedAddressStr","standard_address","payment_id","integrated_address","setStandardAddress","setIntegratedAddress","onProgress","_poll","blocks_fetched","received_money","syncPeriodInSeconds","enable","period","walletPoller","_getBalances","skipBalances","rpcAccount","subaddress_accounts","_convertRpcAccount","setSubaddresses","setBalance","setUnlockedBalance","setNumUnspentOutputs","setNumBlocksToUnlock","all_accounts","per_subaddress","rpcSubaddress","_convertRpcSubaddress","tgtSubaddress","getNumUnspentOutputs","Exception","account_index","address_index","addresses","setIsUsed","transferQuery","inputQuery","outputQuery","setInputQuery","_getTransfersAux","_decontextualize","txsSet","blockMap","getIncludeOutputs","outputQueryAux","_getOutputsAux","outputTxs","txsQueried","txsById","orderedTxs","_isContextual","filterTransfers","filterOutputs","outputs_data_hex","num_imported","_rpcExportKeyImages","rpcKeyImages","key_image","signed_key_images","importResult","setSpentAmount","spent","setUnspentAmount","unspent","frozen","destination","destinations","subtract_fee_from_outputs","subaddr_indices","unlock_time","get_tx_hex","get_tx_metadata","get_tx_keys","fee_list","copyDestinations","_initSentTxWallet","_convertRpcSentTxsToTxSet","_convertRpcTxToTxSet","setSweepEachSubaddress","_rpcSweepAccount","tx_hash","unsigned_txset","multisig_txset","_convertRpcDescribeTransfer","export_raw","signed_txset","tx_data_hex","tx_hash_list","signature_type","good","old","txid","tx_key","confirmations","in_pool","setReceivedAmount","received","setUnconfirmedSpentAmount","setTotalAmount","set_address","set_description","account_tags","rpcAccountTag","recipient_name","getRecipientName","tx_description","getNote","setRecipientName","setNote","multisig_import_needed","setIsMultisig","multisig","setIsReady","setNumParticipants","multisig_info","msResult","setMultisigHex","getMultisigHex","n_outputs","signResult","setSignedMultisigTxHex","old_password","new_password","address_indices","unlocked_balance","_getSubaddressIndices","canBeConfirmed","canBeInTxPool","getMaxHeight","canBeIncoming","hasDestinations","canBeOutgoing","in","pending","failed","getMinHeight","min_height","max_height","filter_by_height","getSubaddressIndex","_convertRpcTxWithTransfer","getOutgoingAmount","outgoingTransfer","transferTotal","_compareTxsByHeight","_compareIncomingTransfers","_getAccountIndices","transfer_type","isSpent","_convertRpcTxWalletWithOutput","_compareOutputs","rpcImage","below_amount","setDestinations","setOutgoingTransfer","WalletPoller","setTag","getTag","destCopies","rpcMap","rpcTxs","_convertRpcTxSet","setTxSet","inputKeyImagesList","inputKeyImage","amountsByDestList","destinationIdx","amountsByDest","_decodeRpcType","setNumSuggestedConfirmations","rpcIndices","rpcIndex","rpcDestination","destinationKey","setInputSum","setOutputSum","setChangeAddress","setChangeAmount","setNumDummyOutputs","setExtraHex","inputKeyImages","setIncomingTransfers","setIsSpent","setIsFrozen","rpcDescribeTransferResult","rpcType","aBlock","tx1","tx2","t1","t2","o1","o2","heightComparison","_prevLockedTxs","_prevUnconfirmedNotifications","_prevConfirmedNotifications","_threadPool","_numPolling","_prevHeight","_prevBalances","_onNewBlock","minHeight","lockedTxs","setMinHeight","setIncludeOutputs","noLongerLockedHashes","prevLockedTx","_getTx","unlockedTxs","lockedTx","searchSet","unannounced","_notifyOutputs","unlockedTx","_checkForChangedBalances","balances","stateOrIndex","primaryAddress","sb","getAccountIndices","setAccountIndices","accoutIndices","getDescription","totalAmount","unconfirmedSpentAmount","getTotalAmount","getUnconfirmedSpentAmount","receivedAmount","getReceivedAmount","stateOrAddress","subaddressIndex","getNumSuggestedConfirmations","numSuggestedConfirmations","getStandardAddress","spentAmount","unspentAmount","getSpentAmount","getUnspentAmount","stateOrIsGood","setIsOld","getSignatureType","setSignatureType","isReady","getNumParticipants","numParticipants","multisigHex","getSignedMultisigTxHex","signedTxMultisigHex","getAddresses","setAddresses","minAmount","maxAmount","getMinAmount","getMaxAmount","setMinAmount","setMaxAmount","queryParent","isFrozen","_EMPTY_OUTPUT","accountIndex","numUnspentOutputs","isUsed","setNumBlocksFetched","setReceivedMoney","getNumBlocksFetched","getReceivedMoney","setHasDestinations","relaxValidation","belowAmount","addDestination","destinationOrAddress","setDestination","subtractFeeFrom","setSubtractFeeFrom","destinationIndices","canSplit","recipientName","setBelowAmount","sweepEachSubaddress","DEFAULT","UNIMPORTANT","NORMAL","ELEVATED","hasPaymentId","setHasPaymentId","getPaymentIds","paymentIds","setPaymentIds","setMaxHeight","includeOutputs","queryChildren","txHeight","matchFound","incomingTransfer","mergeTx","incomingTransfers","inputSum","outputSum","changeAmount","getInputSum","getOutputSum","getChangeAmount","getIncomingAmount","incomingAmt","toRemoves","getChangeAddress","changeAddress","getNumDummyOutputs","numDummyOutputs","getExtraHex","extraHex","_mergeIncomingTransfer","oneLine","aTransfer","serverUri","serverUsername","serverPassword","networkTypeOrStr","getServerUri","setUri","getServerUsername","setServerUsername","getServerPassword","setServerPassword","setRejectUnauthorized","setSeed","seedOffset","saveCurrent","setSaveCurrent","accountLookahead","setAccountLookahead","subaddressLookahead","setSubaddressLookahead","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","maxChunkLength","len2","encodeChunk","crypto_hash_sha512","BLF_J","Blowfish","S","P","F","x8","stream2word","databytes","bcrypt_hash","sha2pass","sha2salt","cdata","ciphertext","expandstate","expand0state","encipher","decipher","keybytes","d8","dec","BLOCKS","HASHSIZE","pbkdf","passlen","salt","saltlen","keylen","rounds","amt","stride","tmpout","countsalt","origkeylen","_dereq_","SomePromiseArray","_SomePromiseArray","promise","setHowMany","setUnwrap","firstLineError","schedule","Queue","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","drainQueues","_drainQueues","_schedule","_drainQueue","_drainQueueStep","_settlePromises","setScheduler","hasCustomScheduler","haveItemsQueued","fatalError","isNode","throwLater","invokeLater","_queueTick","invoke","settlePromises","_pushOne","_reset","INTERNAL","tryConvertToPromise","debug","calledBind","rejectThis","_reject","targetRejected","context","promiseRejectionQueued","bindingPromise","_then","bindingResolved","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","bluebird","noConflict","cr","callerCache","getterCache","canEvaluate","classString","ensureMethod","namedGetter","indexedGetter","isIdentifier","propertyName","maybeGetter","getGetter","PromiseArray","apiRejection","tryCatch","errorObj","_async","cancel","cancellation","_warn","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","NEXT_FILTER","getKeys","instances","boundTo","predicateLoop","matchesPredicate","longStackTraces","contextStack","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","trace","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","enableAsyncHooks","disableAsyncHooks","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","deferUnhandledRejectionCheck","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","warnings","wForgottenReturn","unhandledRejectionCheck","_notifyUnhandledRejection","unhandledRejectionClear","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","onPossiblyUnhandledRejection","_getContext","contextBind","onUnhandledRejectionHandled","disableLongStackTraces","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","legacyHandlers","unhandledrejection","before","global","onunhandledrejection","after","rejectionhandled","onrejectionhandled","fireDomEvent","dispatch","legacy","dispatchEvent","CustomEvent","domEvent","detail","cancelable","Event","createEvent","initCustomEvent","fireGlobalEvent","emit","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","branchesRemainingToCancel","warningsOption","_clearCancellationData","_execute","monitoring","_fireEvent","nodeSupportsAsyncResource","asyncHooks","handler","isFulfilled","ignoreSelf","_parent","attachExtraTrace","__stackCleaned__","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","isTraceLine","isInternalFrame","shouldIgnore","stackFramesAsArray","isSoft","localHandler","localEventFired","formatNonError","maxChars","snip","parseLineInfoRegex","parseLineInfo","fileName","_promisesCreated","uncycle","nodes","stackToIndex","cycleEdgeNode","currentChildLength","stacks","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","ignoreUntil","hasStackAfterThrow","color","checkForgottenReturns","returnValue","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","deprecated","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","catchReturn","_value","PromiseReduce","PromiseAll","promiseAllThis","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","OperationalError","cause","errorTypes","RejectionError","isES5","getDescriptor","names","propertyIsWritable","ObjectKeys","desc","PromiseMap","catchFilter","PassThroughHandlerContext","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","Proxyable","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","spread","MappingPromiseArray","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","_init$","_values","preservedValues","_totalResolved","_resolve","booleans","_resolveFromSyncValue","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","setReflectHandler","getDomain","domain","getContextDomain","AsyncResource","getContextAsyncHooks","APPLY","createContext","nodebackForPromise","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","deferReject","fillTypes","didFulfill","didReject","_setIsFinal","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_setNoAsyncGuarantee","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","proxyable","shouldBind","_setFollowee","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","_settlePromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","toFastProperties","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","toResolutionValue","getActualLength","shouldCopyValues","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","promisifiableMethods","promisifiedKey","promisify","copyDescriptors","isClass","Es6Map","mapToEntries","extractEntry","PropertiesPromiseArray","_isMap","castValue","entriesToMap","keyOffset","_capacity","_front","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","srcIndex","dstIndex","arrayMove","ReductionPromiseArray","initialValue","_each","_initialValue","_currentCancellable","_eachValues","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","toggleScheduled","div2","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","ProcessNextTick","isRecentNode","nativePromise","standalone","cordova","documentElement","classList","toggle","observe","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","allSettled","CANCELLATION","_howMany","_unwrap","_initialized","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","__isCancelled","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","HandleWrapper","afterValue","delay","ms","successClear","failureClear","handleWrapper","afterTimeout","NULL","dispose","resources","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_data","_context","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","doDispose","_unsetDisposable","using","spreadArgs","disposer","reflectedResources","inspections","_disposer","tryCatchTarget","globalObject","tryCatcher","isPrimitive","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","rident","safeToString","ArrayFrom","itResult","hasEnvVariables","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","defaultValue","Child","T","appendee","maybeError","FakeConstructor","ic","foo","filledRange","prefix","ignore","runInAsyncScope","supportsAsync","move","_move","for","modrn","allocUnsafe","_toArrayLikeLE","_toArrayLikeBE","isNegNum","Rand","rand","generate","_rand","getBytes","getByte","msCrypto","randomBytes","asUInt32Array","readUInt32BE","scrubVec","cryptBlock","M","keySchedule","SUB_MIX","SBOX","nRounds","t0","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s1","s2","s3","ksRow","RCON","G","INV_SBOX","INV_SUB_MIX","xi","sx","x4","AES","blockSize","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","writeUInt32BE","decryptBlock","m1","scrub","aes","Transform","GHASH","incr32","StreamCipher","iv","decrypt","_cipher","ck","_ghash","_finID","ghash","toPad","ivBits","writeUIntBE","calcIv","_prev","_secCache","_decrypt","_alen","_mode","_authTag","_called","_update","chunk","rump","encrypt","_final","final","xorTest","getAuthTag","setAuthTag","setAAD","ciphers","deciphers","modes","createCipher","Cipher","createCipheriv","Cipheriv","createDecipher","Decipher","createDecipheriv","Decipheriv","listCiphers","getCiphers","AuthCipher","MODES","ebtk","Splitter","_last","_autopadding","suite","padded","unpad","setAutoPadding","setTo","autoPadding","PADDING","padBuff","writeUInt8","ZEROES","fromArray","_multiply","lsbVi","Vi","Zi","abl","pad","encryptStart","encryptByte","byteParam","shiftIn","modeModules","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","DES","aesModes","desModes","keyLen","ivLen","CipherBase","des","EDE","modeName","_des","des3","getr","priv","prime1","prime2","crt","blinds","blinder","publicExponent","unblinder","blind","blinded","qinv","coefficient","exponent1","m2","exponent2","verify","algorithms","Sign","algorithm","Writable","_hashType","_hash","_tag","_signType","Verify","createSign","createVerify","_write","EC","parseKeys","curves","algo","hlen","hbits","bits2int","bits2octets","obits","makeKey","kv","makeR","hashType","signType","curve","curveId","keyFromPrivate","privateKey","toDER","ecSign","priv_key","H","dsaSign","checkValue","pub","pubkey","subjectPrivateKey","ecVerify","pub_key","unpacked","montp","dsaVerify","padNum","copyProps","SafeBuffer","encodingOrOffset","allocUnsafeSlow","SlowBuffer","Zstream","zlib_deflate","zlib_inflate","Zlib","DEFLATE","UNZIP","dictionary","init_done","memLevel","strategy","windowBits","write_in_progress","pending_close","gzip_id_bytes_read","NONE","INFLATE","GZIP","GUNZIP","DEFLATERAW","INFLATERAW","deflateEnd","strm","inflateEnd","in_off","in_len","out_off","out_len","writeSync","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_FINISH","Z_BLOCK","avail_in","next_in","avail_out","next_out","_process","_checkError","_afterSync","_after","next_expected_header_byte","deflate","inflate","Z_NEED_DICT","inflateSetDictionary","Z_OK","Z_DATA_ERROR","Z_STREAM_END","Z_BUF_ERROR","_error","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","_setDictionary","deflateInit2","Z_DEFLATED","inflateInit2","deflateSetDictionary","deflateReset","inflateReset","kMaxLength","kRangeErrorMessage","Z_MIN_WINDOWBITS","Z_MAX_WINDOWBITS","Z_DEFAULT_WINDOWBITS","Z_MIN_CHUNK","Z_MAX_CHUNK","Z_DEFAULT_CHUNK","Z_MIN_MEMLEVEL","Z_MAX_MEMLEVEL","Z_DEFAULT_MEMLEVEL","Z_MIN_LEVEL","Z_MAX_LEVEL","Z_DEFAULT_LEVEL","Z_DEFAULT_COMPRESSION","bkeys","bk","bkey","Z_ERRNO","Z_STREAM_ERROR","Z_MEM_ERROR","Z_VERSION_ERROR","ckeys","ckey","zlibBuffer","engine","buffers","nread","flow","onEnd","zlibBufferSync","flushFlag","_finishFlushFlag","_processChunk","Deflate","Inflate","Gzip","Gunzip","DeflateRaw","InflateRaw","Unzip","isValidFlushFlag","finishFlush","_flushFlag","_handle","_hadError","_close","_buffer","_level","_strategy","emitCloseNT","createDeflate","createInflate","createDeflateRaw","createInflateRaw","createGzip","createGunzip","createUnzip","deflateSync","gzip","gzipSync","deflateRaw","deflateRawSync","unzip","unzipSync","inflateSync","gunzip","gunzipSync","inflateRaw","inflateRawSync","_flush","_transform","kind","_this2","_writableState","ended","ending","needDrain","availInBefore","availOutBefore","inOff","er","availInAfter","availOutAfter","have","newReq","ieee754","customInspectSymbol","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","isEncoding","fromString","arrayView","isInstance","fromArrayBuffer","fromArrayLike","fromArrayView","SharedArrayBuffer","checked","fromObject","toPrimitive","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","foundIndex","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","units","utf16leToBytes","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","typedArraySupport","poolSize","_isBuffer","swap16","swap32","swap64","toLocaleString","thisStart","thisEnd","thisCopy","targetCopy","hexSliceLookupTable","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","readUintLE","readUIntLE","readUintBE","readUIntBE","readUint8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUint8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","E","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_BUFFER_OUT_OF_BOUNDS","isInteger","INVALID_BASE64_RE","leadSurrogate","base64clean","alphabet","table","i16","BufferBigIntNotDefined","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","$apply","$call","$reflectApply","$gOPD","$defineProperty","$max","originalFunction","applyBind","Caseless","dict","clobber","httpify","setHeader","hasHeader","getHeader","removeHeader","StringDecoder","hashMode","_finalOrDigest","__final","_decoder","_encoding","inputEnc","outputEnc","outData","_toString","fin","DelayedStream","CombinedStream","readable","dataSize","maxDataSize","pauseStreams","_released","_streams","_currentStream","_insideLoop","_pendingNext","combinedStream","option","isStreamLike","newStream","pauseStream","_checkDataSize","_handleErrors","pipe","_getNext","_realGetNext","_pipeNext","_emitError","destroy","_updateDataSize","elliptic","ECDH","aliases","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","ec","formatReturnValue","bn","p256","secp256r1","secp192r1","p384","p521","generateKeys","genKeyPair","getPublicKey","computeSecret","inenc","keyFromPublic","getPublic","getPrivate","getX","getPrivateKey","setPublicKey","_importPublic","setPrivateKey","_priv","_importPrivate","RIPEMD160","sha","Hash","alg","Legacy","ZEROS","Hmac","blocksize","_alg","ipad","_ipad","opad","_opad","rng","pseudoRandomBytes","prng","algos","algoKeys","pbkdf2","pbkdf2Sync","dh","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","randomFillSync","createCredentials","BlockCipher","lib","C_algo","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","extend","_doReset","_keyPriorReset","sigBytes","invKsRow","_doCryptBlock","_createHelper","C_lib","WordArray","BufferedBlockAlgorithm","C_enc","Base64","EvpKDF","C_mode","BlockCipherMode","Pkcs7","CipherParams","OpenSSLFormatter","SerializableCipher","OpenSSLKdf","PasswordBasedCipher","Utf8","cfg","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","dataUpdate","_append","finalize","_doFinalize","ivSize","selectCipherStrategy","cipher","Encryptor","Decryptor","_iv","xorBlock","_prevBlock","processBlock","thisBlock","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","modeCreator","_minBufferSize","__creator","_doProcessBlock","finalProcessedBlocks","cipherParams","mixIn","formatter","OpenSSL","openSSLStr","ciphertextWords","encryptor","cipherCfg","_parse","kdf","execute","compute","derivedParams","globalThis","cryptoSecureRandomInt","subtype","overrides","$super","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","nBytes","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","escape","utf8Str","unescape","_nDataBytes","doFlush","processedWords","dataWords","dataSigBytes","nBlocksReady","nWordsReady","nBytesReady","Hasher","messageUpdate","_createHmacHelper","HMAC","_map","base64Chars","triplet","paddingChar","base64Str","base64StrLength","reverseMap","_reverseMap","paddingIndex","bitsCombined","parseLoop","Base64url","urlSafe","_safe_map","swapEndian","Utf16","Utf16BE","utf16Chars","utf16Str","utf16StrLength","Utf16LE","iterations","derivedKey","derivedKeyWords","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","superInit","subInit","typedArray","typedArrayByteLength","offset_i","M_offset_i","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","HmacMD5","generateKeystreamAndEncrypt","keystream","CTRGladman","incWord","_counter","incCounter","_keystream","AnsiX923","lastBytePos","Ansix923","Iso10126","Iso97971","ZeroPadding","NoPadding","SHA1","PBKDF2","blockIndex","blockIndexWords","blockWords","blockWordsLength","intermediate","intermediateWords","C_","RabbitLegacy","K","X","_X","_C","_b","nextState","IV","IV_0","IV_1","i0","gx","ga","gb","gh","gl","Rabbit","RC4","keySigBytes","_S","keyByteIndex","keyByte","_j","generateKeystreamWord","keystreamWord","RC4Drop","drop","_zl","_zr","_sl","_sr","_hl","_hr","cl","dl","el","ar","br","dr","hl","hr","zl","zr","sl","sr","f1","f2","f3","f4","f5","rotl","HmacRIPEMD160","W","HmacSHA1","SHA256","SHA224","HmacSHA224","isPrime","sqrtN","factor","getFractionalBits","nPrime","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","HmacSHA256","X64Word","x64","Word","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","outputLength","_state","nBlockSizeLanes","M2i","M2i1","lane","high","low","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","HmacSHA3","C_x64","X64WordArray","SHA512","SHA384","HmacSHA384","X64Word_create","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","bh","eh","fh","fl","hh","Wil","Wih","Wi","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","t1l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1h","t2l","toX32","HmacSHA512","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","_lBlock","_rBlock","exchangeLR","exchangeRL","lBlock","rBlock","TripleDES","key3","_des1","_des2","_des3","X32WordArray","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","hasSymbols","toStr","origDefineProperty","hasPropertyDescriptors","supportsDescriptors","predicates","_maxDataSizeExceeded","_bufferedEvents","delayedStream","realEmit","_handleEmit","_checkIfMaxDataSizeExceeded","utils","CBCState","_cbcInit","_cbcState","inp","outOff","superProto","bufferOff","_updateDecrypt","_updateEncrypt","_flushBuffer","inputOff","outputOff","_finalEncrypt","_finalDecrypt","_pad","_unpad","DESState","_desState","deriveKeys","shiftTable","kL","kR","pc1","r28shl","pc2","_encrypt","lStart","rStart","keyL","keyR","expand","substitute","rip","EDEState","k1","k2","k3","_edeState","inL","inR","outL","outR","pc2table","sTable","permuteTable","padSplit","generatePrime","DH","ENCODINGS","genc","millerRabin","TWENTYFOUR","ELEVEN","TEN","THREE","SEVEN","_pub","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","rem","simpleSieve","fermatTest","checkPrime","__gen","_gen","getPrime","getGenerator","findPrime","TWO","FIVE","FOUR","_getPrimes","n2","unstupid","ECCurves","ECKey","isPublic","getN","getCurve","decodePointHex","n1","getG","PublicKey","encodeCompressedPointHex","PrivateKey","deriveSharedSecret","toBigInteger","Barrett","ECFieldElementFp","ECPointFp","zinv","ECCurveFp","fromBigInteger","infinity","reducer","modInverse","getY","isInfinity","twice","getInfinity","y1","v2","v3","x1v2","zu2","x3","shiftLeft","y3","z3","signum","y1z1","y1sqz1","R","hBit","testBit","multiplyTwo","both","getQ","getA","getB","encodePointHex","xHex","yHex","oLen","yIsEven","beta","betaValue","getR","shiftRight","intValue","modMult","modReduce","qLen","compareTo","qMinusOne","legendreExponent","U","V","Q","fourQ","modDouble","SecureRandom","lucasSequence","getLowestSetBit","Uh","Vl","Vh","Ql","Qh","X9ECParameters","fromHex","getH","eddsa","getNAF","getJSF","BaseCurve","conf","zero","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","precomputed","point","_fixedNafMul","doubles","_getDoubles","naf","I","nafW","repr","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","jsf","ja","jb","decodePoint","pointFromX","encodeCompressed","precompute","power","_getBeta","_hasDoubles","dbl","EdwardsCurve","twisted","mOneA","dd","oneC","Point","zOne","_mulA","_mulC","rhs","lhs","y2","pointFromY","fromJSON","_extDbl","nx","ny","nt","nz","_projDbl","_extAdd","_projAdd","mulAdd","jmulAdd","zi","eqXToP","xc","short","edwards","MontCurve","a24","aa","bb","diffAdd","da","jumlAdd","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","isRed","inf","JPoint","lambda","betas","_getEndoRoots","lambdas","basis","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","len1","_endoSplit","v1","p1","p2","q1","q2","ax","_endoWnafMulAdd","npoints","ncoeffs","pre","endoMul","obj2point","ys1","dyinv","_precompute","zinv2","ay","pz2","z2","h2","h3","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","pz3","zs","PresetCurve","defineCurve","sha256","sha384","sha512","HmacDRBG","KeyPair","Signature","nh","keyPair","fromPrivate","fromPublic","drbg","pers","persEnc","entropy","hmacStrength","entropyEnc","ns2","_truncateToN","truncOnly","ns1","iter","kp","kpX","recoveryParam","canonical","sinv","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Qprime","privEnc","pubEnc","derive","_importDER","Position","place","initial","octetLen","rmPadding","constructLength","octets","LN2","slen","backHalf","parseBytes","EDDSA","pointClass","encodingLength","keyFromSecret","hashInt","messagePrefix","Rencoded","encodePoint","s_","pubBytes","makeSignature","SG","intFromLE","fromSecret","lastIx","normed","xIsOdd","encodeInt","decodeInt","isPoint","cachedProperty","_secret","_pubBytes","privBytes","getSecret","_R","_Rencoded","_Sencoded","Sencoded","toBytes","toHex","minAssert","minUtils","zero2","m8","d1","d2","m14","m24","computer","firstSource","keysArray","nextIndex","polyfill","ReflectOwnKeys","ReflectApply","NumberIsNaN","EventEmitter","emitter","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","prepend","events","existing","newListener","onceWrapper","fired","wrapFn","_onceWrap","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","wrapListener","removeEventListener","setMaxListeners","getMaxListeners","doError","prependListener","prependOnceListener","originalListener","spliceOne","removeAllListeners","rawListeners","eventNames","keyStart","ivStart","hasOwn","gOPD","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","newValue","copyIsArray","deep","mod_assert","mod_util","jsSprintf","fmt","precision","conversion","argn","doPad","dumpException","jsFprintf","ex","cex","sprintf","printf","fprintf","cycles","aobj","bobj","seenIndex","isCallable","forEachArray","forEachString","forEachObject","ForeverAgent","SSL","ForeverAgentSSL","net","tls","AgentSSL","getConnectionName","localAddress","requests","sockets","freeSockets","maxSockets","defaultMaxSockets","minSockets","defaultMinSockets","socket","onSocket","onIdleError","_onIdleError","createConnection","addRequestNoreuse","addRequest","useChunkedEncodingByDefault","idleSocket","_reusedSocket","removeSocket","createSocket","FormData","ERROR_MESSAGE","funcType","bound","binder","boundLength","boundArgs","Empty","implementation","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","getProto","needsEval","TypedArray","INTRINSICS","Atomics","eval","EvalError","FinalizationRegistry","URIError","WeakRef","WeakSet","doEval","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","stringToPath","quote","subString","getBaseIntrinsic","alias","intrinsicName","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","afterRequest","beforeRequest","browser","cookie","creator","har","page","pageTimings","postData","timings","HARError","createAjvInstance","hasArrayLengthDefineBug","origSymbol","hasSymbolSham","symObj","syms","HashBase","_block","_blockSize","_blockOffset","_finalized","throwIfNotStringOrBuffer","_digest","common","ripemd","sha1","sha224","ripemd160","BlockHash","pendingTotal","outSize","padLength","_delta8","_delta32","join32","inner","outer","rotl32","sum32","sum32_3","sum32_4","Kh","Ah","Bh","Ch","Dh","Eh","rh","sh","toHex32","split32","shaCommon","sum32_5","ft_1","sha1_K","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","T1","T2","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","ch64_hi","xh","xl","yh","yl","zh","ch64_lo","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","rotr32","p32","isSurrogatePair","htonl","zero8","predResist","minEntropy","_reseed","reseedInterval","nonceEnc","_hmac","kmac","reseed","addEnc","pathm","wrapSuccess","wrapFail","getFsInstance","getInstance","appendFile","getFile","fileEntry","reader","FileReader","onloadend","evt","readAsText","readAsDataURL","getDirectory","dirEntry","createReader","readEntries","newFolderName","basePath","exclusive","FileError","isDirectory","fileSystem","quota","webkitPersistentStorage","requestQuota","webkitStorageInfo","PERSISTENT","requestFileSystem","isPhoneGap","grantedBytes","webkitRequestFileSystem","LocalFileSystem","createWriter","writer","onwrite","toURL","seek","isMobile","doGet","dirRef","protocol","supportsFileSystem","parser","signer","parseRequest","signRequest","createSigner","isSigner","sshKeyToPEM","sshKeyFingerprint","fingerprint","pemToRsaSSHKey","verifySignature","verifyHMAC","HttpSignatureError","HASH_ALGOS","PK_ALGOS","InvalidAlgorithmError","validateAlgorithm","ExpiredRequestError","InvalidHeaderError","InvalidParamsError","MissingHeaderError","StrictParsingError","arrayOfString","optionalFinite","clockSkew","authzHeaderName","authorizationHeaderName","substate","tmpName","tmpValue","signingString","authz","keyId","httpVersion","skew","hdr","sshpk","jsprim","AUTHZ_FMT","rs_alg","rs_signFunc","rs_keyId","rs_signer","hashAlgorithm","parsePrivateKey","isPrivateKey","rs_key","rs_headers","rs_lines","writeHeader","writeDateHeader","rfc1123","writeTarget","sigObj","optionalString","optionalArrayOfString","_stringToSign","parseKey","comment","parsedSignature","Key","isKey","hashAlg","h1","validateParams","isLE","mLen","eLen","eMax","eBias","nBits","rt","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","callee","supportsStandardArguments","badArrayLike","isCallableMarker","fnToStr","reflectApply","constructorRegex","isES6ClassFn","fnStr","documentDotAll","tryFunctionObject","strClass","GeneratorFunction","isFnRegex","generatorFunc","getGeneratorFunc","getPolyfill","shim","availableTypedArrays","typedArrays","$slice","toStrTags","anyTrue","tryTypedArrays","isStrictTypedArray","loose","isLooseTypedArray","isStream","isReadable","_read","_readableState","isWritable","isDuplex","dbits","fromNumber","nbi","inBrowser","appName","am","DB","DM","DV","FV","F1","F2","rr","vv","BI_RC","int2char","intAt","nbv","fromInt","nbits","Classic","Montgomery","mp","invDigit","mpl","mph","um","mt2","op_and","op_or","op_xor","op_andnot","lbit","cbit","NullExp","nNop","q3","dlShiftTo","mu","convert","revert","divRemTo","multiplyTo","sqrTo","squareTo","subTo","copyTo","drShiftTo","fromRadix","lShiftTo","bs","cbs","bm","ds","rShiftTo","pm","pt","ts","nsh","ys","y0","yt","qd","exp","toRadix","km","modPowInt","multiplyUpperTo","multiplyLowerTo","dAddOffset","rng_state","rng_pool","rng_pptr","lowprimes","lplim","rng_seed_time","rng_psize","cs","dMultiply","bitwiseTo","isProbablePrime","nextBytes","changeBit","addTo","modInt","byteValue","shortValue","andNot","bitCount","setBit","clearBit","flipBit","divideAndRemainder","g2","is1","ac","appVersion","rng_get_byte","Arcfour","ba","_traverse","arrayKeywords","propsKeywords","skipKeywords","enum","exclusiveMaximum","exclusiveMinimum","primitiveConstructors","changing","checkPropertyChange","property","_changing","checkProp","addError","checkType","unionErrors","priorErrors","theseErrors","readonly","disallow","itemsIsArray","propDef","coerce","objTypeDef","additionalProp","existingOnly","requires","checkObj","enumer","maxDecimal","mustBeValid","serializer","replacer","cycleReplacer","thisPos","spaces","getSerialize","mod_extsprintf","mod_verror","mod_jsonschema","hasKey","pluckv","doFlattenIter","deepCopy","marker","obj1","obj2","forEachKey","pluck","flattenObject","flattenIter","validateJsonObject","validateJsonObjectJS","randElt","extraProperties","allowed","mergeObjects","parseInteger","uopts","optionalObject","baseOverride","PI_DEFAULTS","allowSign","allowPrefix","allowTrailing","allowImprecise","trimWhitespace","leadingZeroIsOctal","pbase","mult","isSpace","prefixToBase","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","iso8601","getUTCMilliseconds","RFC1123_DAYS","RFC1123_MONTHS","parseDateTime","numeric","hrtimediff","hrtimeDiff","hrtimeAccum","hrtimeAdd","assertHrtime","hrtimeNanosec","hrtimeMicrosec","hrtimeMillisec","report","propname","VError","jsv_details","provided","ARRAY16","_a","_c","fnF","fnG","fnH","fnI","brorand","MillerRabin","_randbelow","min_bytes","_randrange","rone","rn1","getDivisor","extensions","preference","extname","EXTRACT_TYPE_REGEXP","TEXT_TYPE_REGEXP","charset","mime","charsets","extension","exts","rfc3986","generateBase","httpMethod","base_uri","normalized","hmacsign","consumer_secret","token_secret","hmacsign256","rsasign","private_key","plaintext","signMethod","skipArgs","keysShim","isArgs","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","keysWorksWithArguments","TYPED_OK","_has","sources","shrinkBuf","fnTyped","arraySet","src_offs","dest_offs","flattenChunks","fnUntyped","setTyped","Buf8","Buf16","Buf32","adler","Z_TREES","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_BINARY","Z_TEXT","Z_UNKNOWN","crcTable","makeTable","crc","configuration_table","trees","adler32","crc32","MAX_MATCH","MIN_LOOKAHEAD","HCRC_STATE","BUSY_STATE","FINISH_STATE","errorCode","rank","flush_pending","pending_buf","pending_out","total_out","flush_block_only","_tr_flush_block","block_start","strstart","put_byte","putShortMSB","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","w_size","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","more","_w_size","window_size","hash_size","total_in","insert","ins_h","hash_shift","hash_mask","deflate_fast","hash_head","bflush","match_length","_tr_tally","max_lazy_match","MIN_MATCH","last_lit","deflate_slow","max_insert","prev_match","match_available","Config","good_length","max_lazy","nice_length","max_chain","DeflateState","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","HEAP_SIZE","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","MAX_BITS","heap_len","heap_max","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","deflateResetKeep","data_type","_tr_init","max_block_size","max_start","deflateInit","deflateSetHeader","old_flush","beg","hcrc","os","bstate","deflate_huff","deflate_rle","_tr_align","_tr_stored_block","avail","tmpDict","dictLength","deflateInfo","_in","_out","dmax","wsize","whave","wnext","s_window","hold","lcode","dcode","lmask","dmask","here","dist","from_source","lencode","distcode","lenbits","distbits","top","dolen","dodist","sane","inflate_fast","inflate_table","TYPE","BAD","zswap32","InflateState","havedict","wbits","ncode","nlen","ndist","work","lendyn","distdyn","back","was","inflateResetKeep","inflateReset2","lenfix","distfix","virgin","fixedtables","updatewindow","inflateInit","here_bits","here_op","here_val","last_bits","last_op","last_val","hbuf","order","inf_leave","xflags","extra_len","inflateGetHeader","inflateInfo","lbase","lext","dbase","dext","lens_index","table_index","incr","huff","base_index","MAXBITS","offs","extra_index","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","D_CODES","_dist_code","_length_code","base_length","static_l_desc","static_d_desc","static_bl_desc","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","put_short","send_bits","send_code","bi_reverse","gen_codes","next_code","init_block","LITERALS","END_BLOCK","bi_windup","smaller","_n2","_m2","pqdownheap","compress_block","ltree","dtree","lc","lx","build_tree","stree","xbits","overflow","gen_bitlen","scan_tree","curlen","prevlen","nextlen","REP_3_6","REPZ_3_10","REPZ_11_138","send_tree","static_init_done","stored_len","copy_block","LENGTH_CODES","L_CODES","tr_static_init","opt_lenb","static_lenb","max_blindex","black_mask","detect_data_type","BL_CODES","build_bl_tree","lcodes","dcodes","blcodes","send_all_trees","STATIC_TREES","bi_flush","certificate","RSAPrivateKey","int","RSAPublicKey","AlgorithmIdentifier","bitstr","null_","PrivateKeyInfo","octstr","EncryptedPrivateKeyInfo","EncryptedPrivateKey","DSAPrivateKey","DSAparam","ECPrivateKey","ECParameters","namedCurve","asn","Time","utcTime","utctime","generalTime","gentime","AttributeTypeValue","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","TBSCertificate","X509Certificate","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherText","cipherKey","match2","aesid","fixProc","compat","passphrase","ndata","stripped","tbsCertificate","subjectPublicKeyInfo","subjectPublicKey","kde","kdeparams","iters","assertPath","normalizeStringPosix","lastSegmentLength","dots","lastSlashIndex","posix","trailingSeparator","joined","fromStart","fromEnd","fromLen","toStart","toLen","lastCommonSep","fromCode","_makeLong","hasRoot","matchedSlash","extIdx","firstNonSlashEnd","startDot","startPart","preDotState","pathObject","sep","_format","delimiter","win32","ZERO_BUF","checkParameters","defaultEncoding","subtle","toBrowser","checks","getNextTick","queueMicrotask","browserPbkdf2","importKey","deriveBits","resolvePromise","prom","checkNative","MAX_ALLOC","sizes","rmd160","saltLen","getDigest","ipad1","ipad2","DK","block1","destPos","hLen","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","uptime","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","umask","lastStartTime","queued","opt","dequeue","addAll","addedPromises","inc","elapsed","candidate","aborted","DOMException","Punycode","internals","punySuffix","wildcard","exception","findRule","punyDomain","toASCII","errorCodes","DOMAIN_TOO_SHORT","DOMAIN_TOO_LONG","LABEL_STARTS_WITH_DASH","LABEL_ENDS_WITH_DASH","LABEL_TOO_LONG","LABEL_TOO_SHORT","LABEL_INVALID_CHARS","ascii","labels","tld","sld","subdomain","listed","domainParts","handlePunycode","tldParts","privateParts","isValid","i2ops","mgf","withPublic","zBuffer","iHash","maskedSeed","maskedDb","dif","oaep","ps","pkcs1","publicKey","paddedMsg","hLen2","dblen","nonZero","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","mapDomain","encoded","ucs2decode","ucs2encode","fromCodePoint","digitToBasic","adapt","numPoints","firstTime","baseMinusTMin","bias","basic","oldi","baseMinusT","currentValue","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","toUnicode","percentTwenties","formatters","RFC1738","RFC3986","allowDots","allowPrototypes","arrayLimit","parameterLimit","plainObjects","strictNullHandling","givenKey","leaf","parseArrays","cleanRoot","parseObject","ignoreQueryPrefix","tempObj","cleanStr","bracketEqualsPos","parseValues","arrayPrefixGenerators","brackets","pushToArray","valueOrArray","toISO","encodeValuesOnly","serializeDate","skipNulls","generateArrayPrefix","objKeys","arrayFormat","addQueryPrefix","hexTable","arrayToObject","compacted","compactQueue","mergeTarget","targetItem","qs","maxKeys","kstr","vstr","stringifyPrimitive","ks","MAX_BYTES","generated","oldBrowser","safeBuffer","randombytes","kBufferMaxLength","kMaxUint32","assertOffset","actualFill","ourBuf","uint","objectKeys","Duplex","Readable","allowHalfOpen","onend","onEndNT","highWaterMark","getBuffer","destroyed","PassThrough","ReadableState","EElistenerCount","OurUint8Array","debugUtil","debuglog","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","needReadable","emittedReadable","readableListening","resumeScheduled","emitClose","autoDestroy","awaitDrain","readingMore","_destroy","readableAddChunk","addToFront","skipChunkCheck","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","_undestroy","undestroy","isPaused","MAX_HWM","howMuchToRead","computeNewHighWaterMark","maybeReadMore_","updateReadableListening","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","finished","xs","nOrig","doRead","pipeOpts","endFn","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","ondata","cleanedUp","pipeOnDrain","dests","ev","asyncIterator","_fromList","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","prefinish","err2","CorkedRequest","corkReq","pendingcb","onCorkedFinish","corkedRequestsFree","WritableState","realHasInstance","internalUtil","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","noDecode","decodeStrings","writing","corked","bufferProcessing","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","rState","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","lastPromise","wrapForNext","_Object$create","enumerableOnly","symbols","hasStrings","_getString","_getBuffer","nb","getOwnPropertyDescriptors","emitErrorAndCloseNT","emitErrorNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","eos","onlegacyfinish","writableEnded","readableEnded","onrequest","isRequest","destroyer","closed","popCallback","destroys","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","pipeline","core","errorText","expose","plumbing","PromiseImpl","constructorMixin","originalInit","requestOptions","_rp_promise","thenExposed","RequestError","StatusCodeError","TransformError","_rp_resolve","_rp_reject","_rp_callbackOrig","defaultTransformations","_rp_options","simple","transform2xxOnly","HEAD","origCallbackThrewException","thrownException","is2xx","transformedResponse","transformErr","exposeTo","bindTo","promisePropertyKey","methodToExpose","exposeAs","Bluebird","configure","stealthyRequire","EOL","bindCLS","cookies","paramsHaveRequestBody","initParams","verbFunc","wrapRequestMethod","requester","patch","jar","store","agentOptions","optionsArg","caseless","helpers","toBase64","Auth","hasAuth","sentAuth","bearerToken","bearer","challenge","ha1","ha1Compute","ha2","digestResponse","authValues","onRequest","authVerb","tough","Cookie","CookieJar","RequestJar","_jar","looseMode","setCookie","cookieOrStr","setCookieSync","getCookieString","getCookieStringSync","getCookies","getCookiesSync","formatHostname","parseNoProxyZone","zone","zoneParts","hasPort","noProxy","NO_PROXY","no_proxy","noProxyZone","isMatchedAt","hostnameMatched","uriInNoProxy","HTTP_PROXY","http_proxy","HTTPS_PROXY","https_proxy","Har","pair","prep","queryObj","headersObj","jsonObj","paramsObj","queryString","mimeType","baseUrl","bodySize","headersSize","form","formData","attachment","createReadStream","calculateMac","app","dlg","localtimeOffsetMsec","artifacts","mac","hasExt","jsonSafeStringify","requestBodyStream","multipart","safeStringify","isReadStream","numbers","isstream","Multipart","boundary","chunked","isChunked","setHeaders","build","preambleCRLF","preamble","postambleCRLF","oauth","OAuth","buildParams","_oauth","qsLib","oa","oauth_version","oauth_timestamp","oauth_nonce","oauth_signature_method","consumer_secret_or_private_key","oauth_consumer_secret","oauth_private_key","oauth_token_secret","oauth_realm","oauth_transport_method","baseurl","oauth_signature","buildBodyHash","signature_method","shasum","concatParams","formContentType","transport","transport_method","body_hash","Querystring","useQuerystring","parseOptions","stringifyOptions","qsParseOptions","qsStringifyOptions","isUrl","Redirect","followRedirect","followRedirects","followAllRedirects","followOriginalHttpMethod","allowRedirect","maxRedirects","redirects","redirectsFollowed","removeRefererHeader","redirectTo","_auth","uriPrev","redirectUri","_started","_form","originalHost","tunnel","defaultProxyHeaderWhiteList","defaultProxyHeaderExclusiveList","Tunnel","proxyHeaderWhiteList","proxyHeaderExclusiveList","tunnelOverride","setup","proxy","uriObject","proxyHeaders","whiteList","constructProxyHeaderWhiteList","tunnelFn","tunnelFnName","getTunnelFn","tunnelOptions","proxyAuth","ca","cert","pfx","secureOptions","secureProtocol","constructTunnelOptions","zlib","aws2","httpSignature","getProxyFromURI","hawk","globalCookieJar","globalPool","requestToJSON","responseToJSON","_har","reserved","nonReserved","filterForNonReserved","isReserved","filterOutReservedFunctions","explicitMethod","_qs","_multipart","_redirect","_tunnel","NODE_DEBUG","headerName","__isRequestRequest","_callbackCalled","baseUrlEndsWithSlash","uriStartsWithSlash","enableUnixSocket","strictSSL","isUnix","hostHeaderName","originalHostHeaderName","requestForm","appendFormValue","formKey","formValue","aws","uriAuthPieces","proxyAuthPieces","setContentLength","timing","elapsedTime","defaultModules","httpModules","httpModule","agentClass","getNewAgent","ntick","_json","_aborted","getHeaders","poolKey","globalAgent","startTimeNow","_aws","reqOptions","timeoutTimer","onRequestResponse","onRequestError","isConnecting","_connecting","connecting","onLookupTiming","onConnectTiming","setReqTimeout","onReqSockConnect","timingStart","timingPhases","wait","dns","tcp","authorized","targetCookieJar","addCookie","ignoreError","_disableCookies","responseContent","_ended","contentEncoding","zlibOptions","_paused","pipeDest","responseStarted","responseStartTime","_destdata","readResponseBody","sslErr","authorizationError","bufferLength","_jsonReviver","headersSent","ctname","clname","pipefilter","jsonReplacer","_jsonReplacer","jsonReviver","unixParts","socketPath","sign_version","signRes","session","bucket","originalCookieHeader","urihref","fn1","fn2","fn3","fn4","fn5","tl","tr","safer","Safer","kStringMaxLength","MAX_LENGTH","MAX_STRING_LENGTH","finalSize","_finalSize","assigned","lowBits","highBits","Algorithm","Sha","_w","rotl30","ft","Sha1","rotl5","Sha256","Sha224","_f","_g","_h","sigma1","Sha384","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","writeInt64BE","Sha512","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","t2h","algInfo","sizePart","algPrivInfo","pkcs8oid","privInfo","hashAlgs","Certificate","algs","Fingerprint","errs","Identity","CertificateParseError","arrayOfObject","subjects","assertCompatible","subjectKey","issuer","issuerKey","serial","validFrom","validUntil","purposes","_hashCache","isExpired","when","isSignedBy","issuerCert","isSignedByKey","getExtension","keyOrOid","getExtensions","maybeExt","oid","x509","extras","openssh","signWith","fmts","didOne","createSelfSigned","subjectOrSubjects","subject","optionalNumber","lifetime","optionalBuffer","hostSubjects","userSubjects","toPublic","isCertificate","ver","isCompatible","_sshpkApiVersion","_oldVersionDetect","generateECDSA","CRYPTO_HAVE_ECDH","osCurve","ecParams","cByteLen","jsbn","generateED25519","nacl","secretKey","_isPriv","_algo","_curve","_p","_ecParams","ECPrivate","ECPublic","_params","mpNormalize","_keyCheck","pk","isPub","otherpk","box","generateKey","Verifier","Signer","hashAlgo","isSignature","detached","sigBuf","FingerprintFormatError","KeyParseError","innerErr","keyName","SignatureParseError","certName","KeyEncryptedError","theirHash","theirHash2","hash2","base64RE","hexRE","enAlgs","isFingerprint","ssh","putty","findDNSSECHeader","dnssec","findPEMHeader","findSSHHeader","findPuTTYHeader","rfc4253","DNSSEC_PRIVKEY_HEADER_PREFIX","algElems","algoNum","algoName","supportedAlgosById","elements","rsaParams","element","elementToBuf","publicFromPrivateECDSA","ecdsaKey","keyString","base64key","keyBuffer","publicExponentLen","rsaKey","ecNormalize","dmodp","dmodq","addRSAMissing","rsaAlgFromOptions","mpDenormalize","dnssecTimestamp","supportedAlgos","timestampStr","fromBuffer","signAsync","getCertType","SSHBuffer","TYPES","ECDSA_ALGO","sshbuf","innerAlgo","readBuffer","certType","getAlg","partCount","readPart","readInt64","principals","pbuf","psshbuf","atEnd","pr","forUser","forHost","int64ToDate","extbuf","critical","signingKeyBuf","consumed","sourceInt64","dateToInt64","upper","lower","noSig","writePart","writeInt64","forceType","si","ei","opensslKeyDeriv","pbesEnd","eder","kdfEnd","kdfOid","hashAlgOid","OID_TO_HASH","cipherOid","OID_TO_CIPHER","cinfo","opensshCipherInfo","opensslName","cipherStream","sshpriv","readSSHPrivate","readType","originalInput","readPkcs1","pkcs8","readPkcs8","writePkcs8","writePkcs1","CIPHER_TO_OID","HASH_TO_OID","readMPInt","iqmp","readECDSACurve","curveOid","readBitString","zeroPadToLength","writePkcs1RSAPrivate","writePkcs1RSAPublic","writePkcs1DSAPrivate","writePkcs1DSAPublic","writePkcs1ECDSAPrivate","writePkcs1ECDSAPublic","writeBitString","writePkcs1EdDSAPrivate","writePkcs1EdDSAPublic","nm","calculateDSAPublic","curveName","calculateED25519Public","calculateX25519Public","pkcs8ToBuffer","writeECDSACurve","curveNames","cd","fieldTypeOid","countZeros","sillyInt","writePkcs8RSAPrivate","writePkcs8RSAPublic","writePkcs8DSAPrivate","writePkcs8DSAPublic","writePkcs8ECDSAPrivate","writePkcs8ECDSAPublic","writePkcs8EdDSAPublic","formatVersion","splitHeader","encryption","publicLines","hash1","publicBuf","keyType","algToKeyType","privateLines","privateBuf","privateKeyParts","keyTypeToAlg","txt","readPartial","readInternal","nd","_rfc4253Cache","magic","readCString","MAGIC","kdfOpts","privKeyBlob","kdfOptsBuf","cinf","bcrypt","salti","privBuf","kdfopts","writeChar","kdfssh","writeCString","trimmed","SSHKEY_RE","SSHKEY_RE2","kbuf","realOffset","trailer","remain","tbsStart","sigOffset","tbsEnd","Local","certAlgOid","SIGN_ALGS","parseAsn1","readDate","issuerUniqueID","subjectUniqueID","extEnd","readExtension","sigAlgOid","sigAlg","sigData","algParts","writeTBSCert","verifier","defaultHashAlgorithm","EXTS","UTCTIME_RE","thisYear","century","setUTCFullYear","setUTCHours","setUTCSeconds","GTIME_RE","writeDate","zeroPad","dateToUTCTime","ALTNAME","OtherName","RFC822Name","DNSName","X400Address","DirectoryName","EDIPartyName","IPAddress","EXTPURPOSE","EXTPURPOSE_REV","KEYUSEBITS","extId","bcEnd","bc","ekEnd","ide","components","setBits","bitIndex","bitLen","bitVal","readBitField","aeEnd","forEmail","toAsn1","altNames","purpose","writeBitField","blen","byteN","DNS_NAME_RE","oids","unoids","componentLookup","cn","dc","mail","NOT_PRINTABLE","NOT_IA5","globMatch","aParts","bParts","asn1type","isIdentity","parseDN","dn","eqPos","parseFingerprint","parseSignature","generatePrivateKey","parseCertificate","createSelfSignedCertificate","createCertificate","identityFromDN","identityForHost","identityForUser","identityForEmail","identityFromArray","edCompat","partLookup","szPart","oldVerify","createDH","dhe","_pubCache","pubParts","newType","fromSecretKey","fromSeed","oldSign","stype","readChar","lead","bufferSplit","lastPart","newPart","bigintToMpBuf","addZero","obit","klass","needVer","D_prev","bufs","clen","CIPHER_LEN","material","hkey","Ti","Uc","bigint","isNative","clearCache","requireCache","callbackForModulesToKeep","originalCache","originalModuleChildren","modulesToKeep","freshModule","stealthCache","EE","_isStdio","didOnEnd","cleanup","ClientRequest","statusCodes","defaultProtocol","IncomingMessage","STATUS_CODES","METHODS","getXHR","XDomainRequest","checkTypeSupport","ReadableStream","writableStream","WritableStream","abortController","AbortController","arraybuffer","msstream","mozchunkedarraybuffer","capability","rStates","readyStates","preferBinary","_body","_headers","useFetch","decideMode","_fetchTimer","_socketTimeout","_socketTimer","_onFinish","lowerName","unsafeHeaders","_destroyed","headersList","controller","_fetchAbortController","requestTimeout","withCredentials","_fetchResponse","_resetTimers","_connect","_xhr","ontimeout","_response","LOADING","DONE","_onXHRProgress","onprogress","statusValid","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","resetTimers","rawHeaders","trailers","rawTrailers","_resumeFetch","pipeTo","getReader","_pos","responseURL","_charset","charsetMatch","newData","MSStreamReader","readAsArrayBuffer","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","utf8CheckExtraBytes","utf8CheckIncomplete","nativeTypeChecker","begin","isNull","isMath","isJSON","isInvalid","isImmutable","isMutable","isEnumerableObject","isFiniteNumber","isVague","isList","nativeTypeOf","nativeType","typeOf","safeApply","enumerate","_ignoreForEach","enumerateObject","assignAll","giver","_method","assignList","punycode","urlParse","pubsuffix","Store","MemoryCookieStore","pathMatch","VERSION","COOKIE_OCTETS","CONTROL_CHARS","TERMINATORS","PATH_VALUE","DATE_DELIM","MONTH_TO_NUM","jan","feb","mar","apr","may","jun","jul","aug","nov","NUM_TO_MONTH","NUM_TO_DAY","MAX_TIME","parseDigits","minDigits","maxDigits","trailingOK","parseTime","parseMonth","parseDate","tokens","dayOfMonth","formatDate","canonicalDomain","domainMatch","domStr","canonicalize","isIP","defaultPath","rightSlash","firstSemi","cookiePair","cookieName","cookieValue","firstEq","terminatorIdx","trimTerminator","parseCookiePair","unparsed","cookie_avs","av","av_key","av_value","av_sep","expires","setMaxAge","secure","httpOnly","jsonParse","serializableProperties","cookieCompare","aPathLen","creation","creationIndex","getCookieContext","cookiesCreated","rejectPublicSuffixes","enableLooseMode","maxAge","hostOnly","pathIsDefault","lastAccessed","cdomain","getPublicSuffix","setExpires","age","cookieString","TTL","expiryTime","relativeTo","expiryDate","millisec","isPersistent","canonicalizedDomain","CAN_BE_SYNC","syncWrap","syncErr","syncResult","updateCookie","oldCookie","newCookie","putCookie","findCookie","expireCheck","expire","allPaths","matchingCookie","removeCookie","findCookies","getSetCookieStrings","serialized","storeType","getAllCookies","serializeSync","_importCookies","putNext","deserialize","strOrObj","deserializeSync","_importCookiesSync","newStore","removeAllCookies","completedCount","removeErrors","removeCookieCb","removeErr","_cloneSync","cloneSync","permuteDomain","permutePath","permutations","lindex","pathMatcher","domainIndex","cookiePath","pathIndex","curPath","domains","curDomain","removeCookies","reqPath","pubSuf","psl","TunnelingAgent","proxyOptions","createSecureSocket","secureSocket","mergeOptions","servername","httpOverHttp","httpsOverHttp","defaultPort","httpOverHttps","httpsOverHttps","onFree","onCloseOrRemove","placeholder","connectOptions","connectReq","onConnect","upgrade","gf","_9","gf0","gf1","_121665","D2","Y","ts64","vn","yi","crypto_verify_16","crypto_verify_32","crypto_core_salsa20","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x5","x6","x7","x9","x10","x11","x12","x13","x14","x15","core_salsa20","crypto_core_hsalsa20","core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","mpos","crypto_stream_salsa20","crypto_stream","sn","crypto_stream_xor","poly1305","t4","t5","t6","t7","leftover","crypto_onetimeauth","outpos","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","car25519","sel25519","pack25519","neq25519","par25519","unpack25519","Z","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b10","b11","b12","b13","b14","b15","inv25519","crypto_scalarmult","x32","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","d0","d3","d4","d5","d6","d7","d9","hibit","h0","h4","h5","h6","h7","h8","h9","r0","r1","r3","r4","r5","r6","r7","r8","r9","macpos","want","crypto_box_afternm","crypto_box_open_afternm","crypto_hashblocks_hl","th","wh","wl","crypto_hash","cswap","pack","ty","scalarmult","scalarbase","crypto_sign_keypair","sk","seeded","L","modL","crypto_sign","sm","smlen","crypto_sign_open","chk","den","den2","den4","den6","pow2523","unpackneg","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","checkLengths","checkArrayTypes","lowlevel","crypto_box","crypto_box_open","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_secretbox_BOXZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","decodeUTF8","encodeUTF8","encodeBase64","decodeBase64","secretbox","keyLength","nonceLength","overheadLength","scalarMult","scalarLength","groupElementLength","checkBoxLengths","publicKeyLength","secretKeyLength","sharedKeyLength","signedMsg","mlen","seedLength","signatureLength","hashLength","setPRNG","sets","subexp","buildExps","isIRI","ALPHA$$","DIGIT$$","HEXDIG$$","PCT_ENCODED$","SUB_DELIMS$$","RESERVED$$","IPRIVATE$$","UNRESERVED$$","SCHEME$","USERINFO$","DEC_OCTET_RELAXED$","IPV4ADDRESS$","H16$","LS32$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","IPV6ADDRESS$","ZONEID$","IPV6ADDRZ_RELAXED$","IPVFUTURE$","IP_LITERAL$","REG_NAME$","HOST$","PORT$","AUTHORITY$","PCHAR$","SEGMENT$","SEGMENT_NZ$","SEGMENT_NZ_NC$","PATH_ABEMPTY$","PATH_ABSOLUTE$","PATH_NOSCHEME$","PATH_ROOTLESS$","PATH_EMPTY$","QUERY$","FRAGMENT$","HIER_PART$","URI$","RELATIVE_PART$","RELATIVE$","NOT_SCHEME","NOT_USERINFO","NOT_HOST","NOT_PATH","NOT_PATH_NOSCHEME","NOT_QUERY","NOT_FRAGMENT","ESCAPE","UNRESERVED","OTHER_CHARS","PCT_ENCODED","IPV4ADDRESS","IPV6ADDRESS","URI_PROTOCOL","IRI_PROTOCOL","slicedToArray","sliceIterator","error$1","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_currentValue2","return","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","_currentValue","SCHEMES","pctEncChar","pctDecChars","newStr","il","c3","_normalizeComponentEncoding","decodeUnreserved","decStr","userinfo","_stripLeadingZeros","_normalizeIPv4","_normalizeIPv6","_matches2","_address$toLowerCase$","_address$toLowerCase$2","firstFields","lastFields","isLastFieldIPv4Address","fieldCount","lastFieldsStart","longestZeroFields","lastLongest","newHost","newFirst","newLast","URI_PARSE","NO_MATCH_IS_UNDEFINED","uriString","iri","reference","schemeHandler","unicodeSupport","domainHost","_recomposeAuthority","uriTokens","$1","$2","RDS1","RDS2","RDS3","RDS5","removeDotSegments","authority","absolutePath","resolveComponents","tolerant","unescapeComponent","handler$1","isSecure","wsComponents","handler$2","resourceName","_wsComponents$resourc","_wsComponents$resourc2","handler$3","O","VCHAR$$","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","handler$4","mailtoComponents","unknownHeaders","hfields","hfield","toAddrs","_x","_xl","_x2","_xl2","setInterval","toAddr","atIdx","localPart","URN_PARSE","handler$5","urnComponents","nid","nss","urnScheme","uriComponents","handler$6","uuidComponents","baseURI","relativeURI","schemelessOptions","uriA","uriB","escapeComponent","Url","slashes","resolveObject","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","rest","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","ae","esc","qm","rel","tkeys","tk","tkey","rkeys","rk","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","hasTrailingSlash","localStorage","isArgumentsObject","isGeneratorFunction","whichTypedArray","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","isArrayBuffer","working","isDataViewToString","isDataView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isBigInt64Array","isBigUint64Array","isWeakMap","isWeakSet","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","descriptors","formatRegExp","objects","noDeprecation","throwDeprecation","traceDeprecation","debugs","debugEnvRegex","debugEnv","stylize","stylizeNoColor","colors","_extend","stylizeWithColor","formatValue","styleType","style","styles","formatPrimitive","visibleKeys","arrayToHash","formatError","braces","formatProperty","formatArray","reduceToSingleString","pid","months","kCustomPromisifiedSymbol","callbackifyOnRejected","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","byteToHex","bth","rnds8","rnds","bytesToUuid","ii","mod_assertplus","mod_isError","parseConstructorArguments","sprintf_args","jse_shortmsg","shortmessage","jse_cause","skipCauseMessage","jse_info","constructorOpt","SError","MultiError","ase_errors","WError","findCauseByName","hasCauseWithName","fullStack","errorFromList","errorForEach","foundName","child_process","possibleNames","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","nmd"],"sourceRoot":""} \ No newline at end of file

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�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%0Ar|QR_ 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 Kw7(u@d|fe= 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